Name: series-workflowp6fjj Phase: Succeeded StartedAt: 2026-07-12 08:38:34 +0000 UTC FinishedAt: 2026-07-12 12:58:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp6fjj[0] Phase: Succeeded StartedAt: 2026-07-12 08:38:34 +0000 UTC FinishedAt: 2026-07-12 08:55:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp6fjj[0].run-triage Phase: Succeeded StartedAt: 2026-07-12 08:38:34 +0000 UTC FinishedAt: 2026-07-12 08:55:36 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IPV6_SEG6_LWTUNNEL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IPV6_SEG6_LWTUNNEL" ], "series_id": "d9361371-0204-496e-b2d2-71ee96506940" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "seg6_table_lookup", "seg6_input_route", "seg6_output_dst_lookup", "seg6_build_state", "seg6_fill_encap_info", "seg6_encap_nlsize", "seg6_encap_cmp" ], "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+CgkJCTx0ZD4yMDI2LzA3LzEyIDA4OjU0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQVjZfU0VHNl9MV1RVTk5FTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3NlZzZfdGFibGVfbG9va3VwJiMzNDssCiAgICAmIzM0O3NlZzZfaW5wdXRfcm91dGUmIzM0OywKICAgICYjMzQ7c2VnNl9vdXRwdXRfZHN0X2xvb2t1cCYjMzQ7LAogICAgJiMzNDtzZWc2X2J1aWxkX3N0YXRlJiMzNDssCiAgICAmIzM0O3NlZzZfZmlsbF9lbmNhcF9pbmZvJiMzNDssCiAgICAmIzM0O3NlZzZfZW5jYXBfbmxzaXplJiMzNDssCiAgICAmIzM0O3NlZzZfZW5jYXBfY21wJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBuZXcgTmV0bGluayBhdHRyaWJ1dGUgYFNFRzZfSVBUVU5ORUxfVEFCTEVgIHRvIHNwZWNpZnkgYSBGSUIgdGFibGUgZm9yIHBvc3QtZW5jYXAgU0lEIGxvb2t1cCBpbiBTUnY2IHR1bm5lbHMuIEl0IG1vZGlmaWVzIHRoZSBTUnY2IGVuY2Fwc3VsYXRpb24gbG9naWMgaW4gYG5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuY2AgdG8gcGVyZm9ybSByb3V0ZSBsb29rdXBzIGluIHRoZSBzcGVjaWZpZWQgdGFibGUgZHVyaW5nIGJvdGggaW5wdXQgYW5kIG91dHB1dCBwYXRocy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBuZXR3b3JraW5nIGxvZ2ljLCBzcGVjaWZpY2FsbHkgdGhlIElQdjYgU2VnbWVudCBSb3V0aW5nIHN1YnN5c3RlbSwgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDg6NTQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBiZDBmNDdhODhiMGQ1MDk0YjlmZDQzMWNhMDRjMjFlOGY2NmM3ZjAxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBKdWwgMTIgMDg6NTQ6MTQgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L3NlZzZfaXB0dW5uZWwuaCBiL2luY2x1ZGUvdWFwaS9saW51eC9zZWc2X2lwdHVubmVsLmhcbmluZGV4IDQ4NTg4OWIxOTkwMGVhLi5lMTk2NGIzYTRiYjBhZiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC9zZWc2X2lwdHVubmVsLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvdWFwaS9saW51eC9zZWc2X2lwdHVubmVsLmhcbkBAIC0yMSw2ICYjNDM7MjEsNyBAQCBlbnVtIHtcbiBcdFNFRzZfSVBUVU5ORUxfVU5TUEVDLFxuIFx0U0VHNl9JUFRVTk5FTF9TUkgsXG4gXHRTRUc2X0lQVFVOTkVMX1NSQyxcdC8qIHN0cnVjdCBpbjZfYWRkciAqL1xuJiM0MztcdFNFRzZfSVBUVU5ORUxfVEFCTEUsXHQvKiBfX3UzMiBGSUIgdGFibGUgZm9yIHBvc3QtZW5jYXAgU0lEIGxvb2t1cCAqL1xuIFx0X19TRUc2X0lQVFVOTkVMX01BWCxcbiB9O1xuICNkZWZpbmUgU0VHNl9JUFRVTk5FTF9NQVggKF9fU0VHNl9JUFRVTk5FTF9NQVggLSAxKVxuZGlmZiAtLWdpdCBhL25ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYyBiL25ldC9pcHY2L3NlZzZfaXB0dW5uZWwuY1xuaW5kZXggNGM0NWMwYTc3ZDc1ZDAuLjYxYzZhMjdiZjIwMmRkIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmNcbkBAIC01MSw2ICYjNDM7NTEsNyBAQCBzdHJ1Y3Qgc2VnNl9sd3Qge1xuIFx0c3RydWN0IGRzdF9jYWNoZSBjYWNoZV9pbnB1dDtcbiBcdHN0cnVjdCBkc3RfY2FjaGUgY2FjaGVfb3V0cHV0O1xuIFx0c3RydWN0IGluNl9hZGRyIHR1bnNyYztcbiYjNDM7XHR1MzIgdGFibGU7XG4gXHRzdHJ1Y3Qgc2VnNl9pcHR1bm5lbF9lbmNhcCB0dW5pbmZvW107XG4gfTtcbiBcbkBAIC02OCw2ICYjNDM7NjksNyBAQCBzZWc2X2VuY2FwX2x3dHVubmVsKHN0cnVjdCBsd3R1bm5lbF9zdGF0ZSAqbHd0KVxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBzZWc2X2lwdHVubmVsX3BvbGljeVtTRUc2X0lQVFVOTkVMX01BWCAmIzQzOyAxXSA9IHtcbiBcdFtTRUc2X0lQVFVOTkVMX1NSSF1cdD0geyAudHlwZSA9IE5MQV9CSU5BUlkgfSxcbiBcdFtTRUc2X0lQVFVOTkVMX1NSQ11cdD0gTkxBX1BPTElDWV9FWEFDVF9MRU4oc2l6ZW9mKHN0cnVjdCBpbjZfYWRkcikpLFxuJiM0MztcdFtTRUc2X0lQVFVOTkVMX1RBQkxFXVx0PSB7IC50eXBlID0gTkxBX1UzMiB9LFxuIH07XG4gXG4gc3RhdGljIGludCBubGFfcHV0X3NyaChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgYXR0cnR5cGUsXG5AQCAtNDc5LDYgJiM0Mzs0ODEsNzMgQEAgaW50IHNlZzZfZG9fc3JoX2lubGluZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaXB2Nl9zcl9oZHIgKm9zcmgpXG4gfVxuIEVYUE9SVF9TWU1CT0xfR1BMKHNlZzZfZG9fc3JoX2lubGluZSk7XG4gXG4mIzQzOy8qIGxvb2sgdXAgYSByb3V0ZSBpbiBhIHNwZWNpZmljIEZJQiB0YWJsZS5cbiYjNDM7ICogUmV0dXJucyBhIHJlZmNvdW50ZWQgZHN0LCBvciBOVUxMIGlmIHRoZSB0YWJsZSBkb2VzIG5vdCBleGlzdC5cbiYjNDM7ICovXG4mIzQzO3N0YXRpYyBzdHJ1Y3QgZHN0X2VudHJ5ICpzZWc2X3RhYmxlX2xvb2t1cChzdHJ1Y3QgbmV0ICpuZXQsXG4mIzQzO1x0XHRcdFx0XHQgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuJiM0MztcdFx0XHRcdFx0ICAgc3RydWN0IGZsb3dpNiAqZmw2LCB1MzIgdGJsX2lkKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGZpYjZfdGFibGUgKnRhYmxlO1xuJiM0MztcdHN0cnVjdCBydDZfaW5mbyAqcnQ7XG4mIzQzO1xuJiM0MztcdHRhYmxlID0gZmliNl9nZXRfdGFibGUobmV0LCB0YmxfaWQpO1xuJiM0MztcdGlmICghdGFibGUpXG4mIzQzO1x0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XG4mIzQzO1x0cnQgPSBpcDZfcG9sX3JvdXRlKG5ldCwgdGFibGUsIDAsIGZsNiwgc2tiLCBSVDZfTE9PS1VQX0ZfSEFTX1NBRERSKTtcbiYjNDM7XHRyZXR1cm4gXHUwMDI2cnQtXHUwMDNlZHN0O1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCBzZWc2X2luaXRfZmxvd2k2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBpcHY2aGRyICpoZHIsXG4mIzQzO1x0XHRcdCAgICAgc3RydWN0IGZsb3dpNiAqZmw2KVxuJiM0Mzt7XG4mIzQzO1x0bWVtc2V0KGZsNiwgMCwgc2l6ZW9mKCpmbDYpKTtcbiYjNDM7XG4mIzQzO1x0Zmw2LVx1MDAzZWRhZGRyID0gaGRyLVx1MDAzZWRhZGRyO1xuJiM0MztcdGZsNi1cdTAwM2VzYWRkciA9IGhkci1cdTAwM2VzYWRkcjtcbiYjNDM7XHRmbDYtXHUwMDNlZmxvd2xhYmVsID0gaXA2X2Zsb3dpbmZvKGhkcik7XG4mIzQzO1x0Zmw2LVx1MDAzZWZsb3dpNl9tYXJrID0gc2tiLVx1MDAzZW1hcms7XG4mIzQzO1x0Zmw2LVx1MDAzZWZsb3dpNl9wcm90byA9IGhkci1cdTAwM2VuZXh0aGRyO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MzsvKiBsb29rIHVwIHRoZSByb3V0ZSBmb3IgdGhlIGZpcnN0IFNJRCBvbiB0aGUgaW5wdXQgcGF0aCBhbmQgc2V0IGl0IG9uIHRoZSBza2IuXG4mIzQzOyAqIFJldHVybnMgdGhlIHJlZmNvdW50ZWQgZHN0LCBvciBOVUxMIGlmIGEgcmVmZXJlbmNlIGNvdWxkIG5vdCBiZSBzYWZlbHkgdGFrZW4uXG4mIzQzOyAqL1xuJiM0MztzdGF0aWMgc3RydWN0IGRzdF9lbnRyeSAqc2VnNl9pbnB1dF9yb3V0ZShzdHJ1Y3QgbmV0ICpuZXQsXG4mIzQzO1x0XHRcdFx0XHQgIHN0cnVjdCBza19idWZmICpza2IsXG4mIzQzO1x0XHRcdFx0XHQgIHN0cnVjdCBzZWc2X2x3dCAqc2x3dClcbiYjNDM7e1xuJiM0MztcdHUzMiB0YWJsZSA9IHNsd3QtXHUwMDNldGFibGU7XG4mIzQzO1xuJiM0MztcdGlmICh0YWJsZSkge1xuJiM0MztcdFx0c3RydWN0IGlwdjZoZHIgKmhkciA9IGlwdjZfaGRyKHNrYik7XG4mIzQzO1x0XHRzdHJ1Y3QgZHN0X2VudHJ5ICpkc3Q7XG4mIzQzO1x0XHRzdHJ1Y3QgZmxvd2k2IGZsNjtcbiYjNDM7XG4mIzQzO1x0XHRzZWc2X2luaXRfZmxvd2k2KHNrYiwgaGRyLCBcdTAwMjZmbDYpO1xuJiM0MztcdFx0Zmw2LmZsb3dpNl9paWYgPSBza2ItXHUwMDNlZGV2LVx1MDAzZWlmaW5kZXg7XG4mIzQzO1xuJiM0MztcdFx0ZHN0ID0gc2VnNl90YWJsZV9sb29rdXAobmV0LCBza2IsIFx1MDAyNmZsNiwgdGFibGUpO1xuJiM0MztcdFx0aWYgKCFkc3QpIHtcbiYjNDM7XHRcdFx0ZHN0ID0gXHUwMDI2bmV0LVx1MDAzZWlwdjYuaXA2X2Jsa19ob2xlX2VudHJ5LVx1MDAzZWRzdDtcbiYjNDM7XHRcdFx0ZHN0X2hvbGQoZHN0KTtcbiYjNDM7XHRcdH1cbiYjNDM7XG4mIzQzO1x0XHRza2JfZHN0X2Ryb3Aoc2tiKTtcbiYjNDM7XHRcdHNrYl9kc3Rfc2V0KHNrYiwgZHN0KTtcbiYjNDM7XHR9IGVsc2Uge1xuJiM0MztcdFx0aXA2X3JvdXRlX2lucHV0KHNrYik7XG4mIzQzO1xuJiM0MztcdFx0LyogaXA2X3JvdXRlX2lucHV0KCkgc2V0cyBhIE5PUkVGIGRzdDsgZm9yY2UgYSByZWZjb3VudCBvbiBpdFxuJiM0MztcdFx0ICogYmVmb3JlIGNhY2hpbmcgb3IgZnVydGhlciB1c2UuXG4mIzQzO1x0XHQgKi9cbiYjNDM7XHRcdHNrYl9kc3RfZm9yY2Uoc2tiKTtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHJldHVybiBza2JfZHN0KHNrYik7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGludCBzZWc2X2lucHV0X2ZpbmlzaChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpzayxcbiBcdFx0XHQgICAgIHN0cnVjdCBza19idWZmICpza2IpXG4ge1xuQEAgLTUxMywxNSAmIzQzOzU4Miw5IEBAIHN0YXRpYyBpbnQgc2VnNl9pbnB1dF9jb3JlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrLFxuIFx0XHRnb3RvIGRyb3A7XG4gXHR9XG4gXG4tXHRpZiAoIWRzdCkge1xuLVx0XHRpcDZfcm91dGVfaW5wdXQoc2tiKTtcbi1cbi1cdFx0LyogaXA2X3JvdXRlX2lucHV0KCkgc2V0cyBhIE5PUkVGIGRzdDsgZm9yY2UgYSByZWZjb3VudCBvbiBpdFxuLVx0XHQgKiBiZWZvcmUgY2FjaGluZyBvciBmdXJ0aGVyIHVzZS5cbi1cdFx0ICovXG4tXHRcdHNrYl9kc3RfZm9yY2Uoc2tiKTtcbi1cdFx0ZHN0ID0gc2tiX2RzdChza2IpO1xuLVx0XHRpZiAodW5saWtlbHkoIWRzdCkpIHtcbiYjNDM7XHRpZiAodW5saWtlbHkoIWRzdCkpIHtcbiYjNDM7XHRcdGRzdCA9IHNlZzZfaW5wdXRfcm91dGUobmV0LCBza2IsIHNsd3QpO1xuJiM0MztcdFx0aWYgKCFkc3QpIHtcbiBcdFx0XHRlcnIgPSAtRU5FVFVOUkVBQ0g7XG4gXHRcdFx0Z290byBkcm9wO1xuIFx0XHR9XG5AQCAtNTc4LDYgJiM0Mzs2NDEsMjkgQEAgc3RhdGljIGludCBzZWc2X2lucHV0KHN0cnVjdCBza19idWZmICpza2IpXG4gXHRyZXR1cm4gc2VnNl9pbnB1dF9jb3JlKGRldl9uZXQoc2tiLVx1MDAzZWRldiksIE5VTEwsIHNrYik7XG4gfVxuIFxuJiM0MzsvKiBsb29rIHVwIHRoZSByb3V0ZSBmb3IgdGhlIGZpcnN0IFNJRCBvbiB0aGUgb3V0cHV0IHBhdGguIEFsd2F5cyByZXR1cm5zIGFcbiYjNDM7ICogcmVmY291bnRlZCBkc3QuXG4mIzQzOyAqL1xuJiM0MztzdGF0aWMgc3RydWN0IGRzdF9lbnRyeSAqc2VnNl9vdXRwdXRfZHN0X2xvb2t1cChzdHJ1Y3QgbmV0ICpuZXQsXG4mIzQzO1x0XHRcdFx0XHRcdHN0cnVjdCBza19idWZmICpza2IsXG4mIzQzO1x0XHRcdFx0XHRcdHN0cnVjdCBmbG93aTYgKmZsNixcbiYjNDM7XHRcdFx0XHRcdFx0c3RydWN0IHNlZzZfbHd0ICpzbHd0KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGRzdF9lbnRyeSAqZHN0O1xuJiM0MztcbiYjNDM7XHRpZiAoc2x3dC1cdTAwM2V0YWJsZSkge1xuJiM0MztcdFx0ZHN0ID0gc2VnNl90YWJsZV9sb29rdXAobmV0LCBza2IsIGZsNiwgc2x3dC1cdTAwM2V0YWJsZSk7XG4mIzQzO1x0XHRpZiAoIWRzdCkge1xuJiM0MztcdFx0XHRkc3QgPSBcdTAwMjZuZXQtXHUwMDNlaXB2Ni5pcDZfYmxrX2hvbGVfZW50cnktXHUwMDNlZHN0O1xuJiM0MztcdFx0XHRkc3RfaG9sZChkc3QpO1xuJiM0MztcdFx0fVxuJiM0MztcdH0gZWxzZSB7XG4mIzQzO1x0XHRkc3QgPSBpcDZfcm91dGVfb3V0cHV0KG5ldCwgTlVMTCwgZmw2KTtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHJldHVybiBkc3Q7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGludCBzZWc2X291dHB1dF9jb3JlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrLFxuIFx0XHRcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIHtcbkBAIC02MDAsMTQgJiM0Mzs2ODYsOSBAQCBzdGF0aWMgaW50IHNlZzZfb3V0cHV0X2NvcmUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29jayAqc2ssXG4gXHRcdHN0cnVjdCBpcHY2aGRyICpoZHIgPSBpcHY2X2hkcihza2IpO1xuIFx0XHRzdHJ1Y3QgZmxvd2k2IGZsNjtcbiBcbi1cdFx0bWVtc2V0KFx1MDAyNmZsNiwgMCwgc2l6ZW9mKGZsNikpO1xuLVx0XHRmbDYuZGFkZHIgPSBoZHItXHUwMDNlZGFkZHI7XG4tXHRcdGZsNi5zYWRkciA9IGhkci1cdTAwM2VzYWRkcjtcbi1cdFx0Zmw2LmZsb3dsYWJlbCA9IGlwNl9mbG93aW5mbyhoZHIpO1xuLVx0XHRmbDYuZmxvd2k2X21hcmsgPSBza2ItXHUwMDNlbWFyaztcbi1cdFx0Zmw2LmZsb3dpNl9wcm90byA9IGhkci1cdTAwM2VuZXh0aGRyO1xuJiM0MztcdFx0c2VnNl9pbml0X2Zsb3dpNihza2IsIGhkciwgXHUwMDI2Zmw2KTtcbiBcbi1cdFx0ZHN0ID0gaXA2X3JvdXRlX291dHB1dChuZXQsIE5VTEwsIFx1MDAyNmZsNik7XG4mIzQzO1x0XHRkc3QgPSBzZWc2X291dHB1dF9kc3RfbG9va3VwKG5ldCwgc2tiLCBcdTAwMjZmbDYsIHNsd3QpO1xuIFx0XHRpZiAoZHN0LVx1MDAzZWVycm9yKSB7XG4gXHRcdFx0ZXJyID0gZHN0LVx1MDAzZWVycm9yO1xuIFx0XHRcdGdvdG8gZHJvcDtcbkBAIC03NTIsNiAmIzQzOzgzMywxNSBAQCBzdGF0aWMgaW50IHNlZzZfYnVpbGRfc3RhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmxhdHRyICpubGEsXG4gXHRcdH1cbiBcdH1cbiBcbiYjNDM7XHRpZiAodGJbU0VHNl9JUFRVTk5FTF9UQUJMRV0pIHtcbiYjNDM7XHRcdHNsd3QtXHUwMDNldGFibGUgPSBubGFfZ2V0X3UzMih0YltTRUc2X0lQVFVOTkVMX1RBQkxFXSk7XG4mIzQzO1x0XHRpZiAoIXNsd3QtXHUwMDNldGFibGUpIHtcbiYjNDM7XHRcdFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLCBcJiMzNDtpbnZhbGlkIGxvb2t1cCB0YWJsZVwmIzM0Oyk7XG4mIzQzO1x0XHRcdGVyciA9IC1FSU5WQUw7XG4mIzQzO1x0XHRcdGdvdG8gZXJyX2Rlc3Ryb3lfb3V0cHV0O1xuJiM0MztcdFx0fVxuJiM0MztcdH1cbiYjNDM7XG4gXHRuZXd0cy1cdTAwM2V0eXBlID0gTFdUVU5ORUxfRU5DQVBfU0VHNjtcbiBcdG5ld3RzLVx1MDAzZWZsYWdzIHw9IExXVFVOTkVMX1NUQVRFX0lOUFVUX1JFRElSRUNUO1xuIFxuQEAgLTc5NSw2ICYjNDM7ODg1LDEwIEBAIHN0YXRpYyBpbnQgc2VnNl9maWxsX2VuY2FwX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdCAgICBubGFfcHV0X2luNl9hZGRyKHNrYiwgU0VHNl9JUFRVTk5FTF9TUkMsIFx1MDAyNnNsd3QtXHUwMDNldHVuc3JjKSlcbiBcdFx0cmV0dXJuIC1FTVNHU0laRTtcbiBcbiYjNDM7XHRpZiAoc2x3dC1cdTAwM2V0YWJsZSBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgbmxhX3B1dF91MzIoc2tiLCBTRUc2X0lQVFVOTkVMX1RBQkxFLCBzbHd0LVx1MDAzZXRhYmxlKSlcbiYjNDM7XHRcdHJldHVybiAtRU1TR1NJWkU7XG4mIzQzO1xuIFx0cmV0dXJuIDA7XG4gfVxuIFxuQEAgLTgwOSw2ICYjNDM7OTAzLDkgQEAgc3RhdGljIGludCBzZWc2X2VuY2FwX25sc2l6ZShzdHJ1Y3QgbHd0dW5uZWxfc3RhdGUgKmx3dHN0YXRlKVxuIFx0aWYgKCFpcHY2X2FkZHJfYW55KFx1MDAyNnNsd3QtXHUwMDNldHVuc3JjKSlcbiBcdFx0bmxzaXplICYjNDM7PSBubGFfdG90YWxfc2l6ZShzaXplb2Yoc2x3dC1cdTAwM2V0dW5zcmMpKTtcbiBcbiYjNDM7XHRpZiAoc2x3dC1cdTAwM2V0YWJsZSlcbiYjNDM7XHRcdG5sc2l6ZSAmIzQzOz0gbmxhX3RvdGFsX3NpemUoc2l6ZW9mKHUzMikpO1xuJiM0MztcbiBcdHJldHVybiBubHNpemU7XG4gfVxuIFxuQEAgLTgyNiw2ICYjNDM7OTIzLDkgQEAgc3RhdGljIGludCBzZWc2X2VuY2FwX2NtcChzdHJ1Y3QgbHd0dW5uZWxfc3RhdGUgKmEsIHN0cnVjdCBsd3R1bm5lbF9zdGF0ZSAqYilcbiBcdGlmICghaXB2Nl9hZGRyX2VxdWFsKFx1MDAyNmFfc2x3dC1cdTAwM2V0dW5zcmMsIFx1MDAyNmJfc2x3dC1cdTAwM2V0dW5zcmMpKVxuIFx0XHRyZXR1cm4gMTtcbiBcbiYjNDM7XHRpZiAoYV9zbHd0LVx1MDAzZXRhYmxlICE9IGJfc2x3dC1cdTAwM2V0YWJsZSlcbiYjNDM7XHRcdHJldHVybiAxO1xuJiM0MztcbiBcdHJldHVybiBtZW1jbXAoYV9oZHIsIGJfaGRyLCBsZW4pO1xuIH1cbiBcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvTWFrZWZpbGUgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvTWFrZWZpbGVcbmluZGV4IDcwOGQ5NjBhZTA3ZDViLi41ZGYwYzk0YWIwNjAxOCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9NYWtlZmlsZVxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L01ha2VmaWxlXG5AQCAtODUsNiAmIzQzOzg1LDcgQEAgVEVTVF9QUk9HUyA6PSBcXFxuIFx0cnh0aW1lc3RhbXAuc2ggXFxcbiBcdHNjdHBfdnJmLnNoIFxcXG4gXHRza2ZfbmV0X29mZi5zaCBcXFxuJiM0MztcdHNydjZfZW5jYXBfbG9va3VwX2wzdnBuX3Rlc3Quc2ggXFxcbiBcdHNydjZfZW5kX2R0NDZfbDN2cG5fdGVzdC5zaCBcXFxuIFx0c3J2Nl9lbmRfZHQ0X2wzdnBuX3Rlc3Quc2ggXFxcbiBcdHNydjZfZW5kX2R0Nl9sM3Zwbl90ZXN0LnNoIFxcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L3NydjZfZW5jYXBfbG9va3VwX2wzdnBuX3Rlc3Quc2ggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvc3J2Nl9lbmNhcF9sb29rdXBfbDN2cG5fdGVzdC5zaFxubmV3IGZpbGUgbW9kZSAxMDA3NTVcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi5kNjI0OTMwM2I3ZWFhMVxuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L3NydjZfZW5jYXBfbG9va3VwX2wzdnBuX3Rlc3Quc2hcbkBAIC0wLDAgJiM0MzsxLDEwMjcgQEBcbiYjNDM7IyEvYmluL2Jhc2hcbiYjNDM7IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuJiM0MzsjXG4mIzQzOyMgYXV0aG9yOiBBbmRyZWEgTWF5ZXIgXHUwMDNjYW5kcmVhLm1heWVyQHVuaXJvbWEyLml0XHUwMDNlXG4mIzQzO1xuJiM0MzsjIFRoaXMgdGVzdCBldmFsdWF0ZXMgdGhlIFNSdjYgZW5jYXAgXCYjMzQ7bG9va3VwXCYjMzQ7IGF0dHJpYnV0ZS4gQWZ0ZXIgZW5jYXBzdWxhdGlvblxuJiM0MzsjIHRoZSByb3V0ZXIgbG9va3MgdXAgdGhlIHJvdXRlIGZvciB0aGUgZmlyc3QgU0lELCB0aGF0IGlzIHRoZSBvdXRlciBJUHY2XG4mIzQzOyMgZGVzdGluYXRpb24gb2YgdGhlIGVuY2Fwc3VsYXRlZCBwYWNrZXQuIFRoZSBhdHRyaWJ1dGUgc2VsZWN0cyB0aGUgRklCIHRhYmxlXG4mIzQzOyMgdXNlZCBmb3IgdGhpcyBwb3N0LWVuY2FwIFNJRCByb3V0ZSBsb29rdXAuXG4mIzQzOyNcbiYjNDM7IyBUd28gcm91dGVycyAocnQtMSwgcnQtMikgcHJvdmlkZSBMMyBWUE4gc2VydmljZXMgb3ZlciBhbiBJUHY2IHVuZGVybGF5XG4mIzQzOyMgKGZkMDA6Oi82NCkuIEVhY2ggcm91dGVyIHVzZXMgYSBzZXBhcmF0ZSBWUkYgcGVyIHRlbmFudCwgd2l0aCBkZWZhdWx0XG4mIzQzOyMgYmxhY2tob2xlIHJvdXRlcyAoSVB2NCBhbmQgSVB2NikgdG8gcHJldmVudCB0cmFmZmljIGZyb20gbGVha2luZyBvdXQgb2ZcbiYjNDM7IyB0aGUgVlJGLiBUZW5hbnQgdHJhZmZpYyBpcyBlbmNhcHN1bGF0ZWQsIHRoZW4gZGVjYXBzdWxhdGVkIHdpdGggYW5cbiYjNDM7IyBFbmQuRFQ0Ni4gRWFjaCByb3V0ZXIgcHJveGllcyBib3RoIE5EUCBhbmQgQVJQLlxuJiM0MzsjXG4mIzQzOyMgVGhlIHJvdXRlcyB0aGF0IG1hdGNoIHRoZSBmaXJzdCBTSURzIGFyZSBpbnN0YWxsZWQgaW4gYSBkZWRpY2F0ZWQgdW5kZXJsYXlcbiYjNDM7IyB0YWJsZSAoNTAwKSByYXRoZXIgdGhhbiB0aGUgbWFpbiB0YWJsZSAoMjU0KS4gVGhlIGVuY2FwIHJvdXRlcyB1c2VcbiYjNDM7IyBcJiMzNDtsb29rdXAgNTAwXCYjMzQ7IHRvIHNlbGVjdCB0aGlzIHRhYmxlIGZvciB0aGUgcG9zdC1lbmNhcCBTSUQgcm91dGUgbG9va3VwLlxuJiM0MzsjXG4mIzQzOyMgV2l0aG91dCB0aGUgXCYjMzQ7bG9va3VwXCYjMzQ7IGF0dHJpYnV0ZSwgdGhlIHJvdXRlIGZvciB0aGUgZmlyc3QgU0lEIGNhbm5vdCBiZSBmb3VuZDpcbiYjNDM7IyAgLSBvbiB0aGUgaW5wdXQgcGF0aCAoZm9yd2FyZGVkIHRyYWZmaWMpLCB0aGUgbG9va3VwIHN0YXlzIGluIHRoZSBWUkZcbiYjNDM7IyAgICBhbmQgaGl0cyB0aGUgYmxhY2tob2xlO1xuJiM0MzsjICAtIG9uIHRoZSBvdXRwdXQgcGF0aCAobG9jYWxseSBvcmlnaW5hdGVkIHRyYWZmaWMpLCB0aGUgbG9va3VwIGZhbGxzXG4mIzQzOyMgICAgdGhyb3VnaCB0byB0aGUgbWFpbiB0YWJsZSwgd2l0aCBubyByb3V0ZSB0byB0aGUgZmlyc3QgU0lELlxuJiM0MzsjXG4mIzQzOyNcbiYjNDM7IyBMZWdlbmQgKHNwZWNpZmljIHBlci10ZW5hbnQgYWRkcmVzc2VzIGFyZSBpbiB0aGUgaW5zdGFudGlhdGlvbiB0YWJsZXMgYmVsb3cpOlxuJiM0MzsjICAgWCAgICAgICAgICA9IHRlbmFudCBpZCBhbmQgVlJGIHRhYmxlIGlkOyB0d28gdGVuYW50czogMTAwIGFuZCAyMDBcbiYjNDM7IyAgICAgICAgICAgICAgICAoXCYjMzQ7dFhcJiMzNDsgbWVhbnMgdGVuYW50IFgsIGUuZy4gdDEwMCwgdDIwMClcbiYjNDM7IyAgIGEsIGIgICAgICAgPSB0aGUgdHdvIGhvc3QgaWRzIG9mIHRoZSB0ZW5hbnRcbiYjNDM7IyAgIEhBLCBIQiAgICAgPSBhZGRyZXNzZXMgb2YgaG9zdCBhLCBob3N0IGJcbiYjNDM7IyAgIFJMTzEsIFJMTzIgPSBybG8tWCByb3V0ZXIgbG9vcGJhY2sgYWRkcmVzcyBvbiBydC0xLCBydC0yICh0ZW5hbnQgZ2F0ZXdheVxuJiM0MzsjICAgICAgICAgICAgICAgIGZvciB0aGUgb3V0cHV0IHBhdGgsIGR1YWwtc3RhY2spXG4mIzQzOyMgICB2cmYtWCAgICAgID0gcGVyLXRlbmFudCBWUkYgb24gZWFjaCByb3V0ZXIgKHRhYmxlIFgpXG4mIzQzOyNcbiYjNDM7IyBDb25zdGFudHMgKHNhbWUgZm9yIGV2ZXJ5IHRlbmFudCk6XG4mIzQzOyMgICB1bmRlcmxheSAgID0gdGFibGUgNTAwOyBwb3N0LWVuY2FwIFNJRCByb3V0ZSBsb29rdXAgKHZpYSBcJiMzNDtsb29rdXAgNTAwXCYjMzQ7KVxuJiM0MzsjICAgbG9jYWxzaWQgICA9IHRhYmxlIDkwOyBob2xkcyB0aGUgZGVjYXAgU0lEcyAoRW5kLkRUNDYpXG4mIzQzOyMgICBmZDAwOjovNjQgID0gdW5kZXJsYXkgbGluayBiZXR3ZWVuIHJ0LTEgYW5kIHJ0LTJcbiYjNDM7IyAgIHZldGgtdFggICAgPSBjYWZlOjoyNTQvMTAuMC4wLjI1NCAodGVuYW50IGdhdGV3YXkgb24gdmV0aCwgYm90aCByb3V0ZXJzKVxuJiM0MzsjXG4mIzQzOyNcbiYjNDM7IyAmIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tJiM0MztcbiYjNDM7IyB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgfFxuJiM0MzsjIHwgICBocy10WC1hIG5ldG5zICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIGhzLXRYLWIgbmV0bnMgICB8XG4mIzQzOyMgfCAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHxcbiYjNDM7IyB8ICAmIzQzOy0tLS0tLS0tLS0tLS0mIzQzOyAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgJiM0MzstLS0tLS0tLS0tLS0tJiM0MzsgIHxcbiYjNDM7IyB8ICB8ICAgIHZldGgwICAgIHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHwgICAgdmV0aDAgICAgfCAgfFxuJiM0MzsjIHwgIHwgICAgIEhBICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgfCAgICAgSEIgICAgICB8ICB8XG4mIzQzOyMgfCAgJiM0MzstLS0tLS0tLS0tLS0tJiM0MzsgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICYjNDM7LS0tLS0tLS0tLS0tLSYjNDM7ICB8XG4mIzQzOyMgfCAgICAgICAgLiAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgLiAgICAgICAgIHxcbiYjNDM7IyAmIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tJiM0MztcbiYjNDM7IyAgICAgICAgICAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuXG4mIzQzOyMgICAgICAgICAgLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLlxuJiM0MzsjICYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOyAgICYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzO1xuJiM0MzsjIHwgICAgICAgIC4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIC4gICAgICAgICB8XG4mIzQzOyMgfCAmIzQzOy0tLS0tLS0tLS0tLS0tLSYjNDM7ICAgICAgICAgICAgICAgICB8ICAgfCAgICAgICAgICAgICAgICAgJiM0MzstLS0tLS0tLS0tLS0tLS0mIzQzOyB8XG4mIzQzOyMgfCB8ICAgdmV0aC10WCAgICAgfCAgICYjNDM7LS0tLS0tLS0tLSYjNDM7ICB8ICAgfCAgJiM0MzstLS0tLS0tLS0tJiM0MzsgICB8ICAgdmV0aC10WCAgICAgfCB8XG4mIzQzOyMgfCB8ICA6OjI1NC8uMjU0ICAgfCAgIHwgbG9jYWxzaWQgfCAgfCAgIHwgIHwgbG9jYWxzaWQgfCAgIHwgIDo6MjU0Ly4yNTQgICB8IHxcbiYjNDM7IyB8ICYjNDM7LS0tLS0tLSYjNDM7LS0tLS0tLSYjNDM7ICAgJiM0MzstLS0tLS0tLS0tJiM0MzsgIHwgICB8ICAmIzQzOy0tLS0tLS0tLS0mIzQzOyAgICYjNDM7LS0tLS0tLSYjNDM7LS0tLS0tLSYjNDM7IHxcbiYjNDM7IyB8ICAgICAgICAgfCAgICAgICAgICAgJiM0MzstLS0tLS0tLS0tJiM0MzsgIHwgICB8ICAmIzQzOy0tLS0tLS0tLS0mIzQzOyAgICAgICAgICAgfCAgICAgICAgIHxcbiYjNDM7IyB8ICAgICYjNDM7LS0tLSYjNDM7LS0tLSYjNDM7ICAgICAgfCB1bmRlcmxheSB8ICB8ICAgfCAgfCB1bmRlcmxheSB8ICAgICAgJiM0MzstLS0tJiM0MzstLS0tJiM0MzsgICAgfFxuJiM0MzsjIHwgICAgfCB2cmYtWCAgIHwgICAgICAmIzQzOy0tLS0tLS0tLS0mIzQzOyAgfCAgIHwgICYjNDM7LS0tLS0tLS0tLSYjNDM7ICAgICAgfCB2cmYtWCAgIHwgICAgfFxuJiM0MzsjIHwgICAgJiM0MzstLS0tJiM0MzstLS0tJiM0MzsgICAgICAgICAgICAgICAgICAgIHwgICB8ICAgICAgICAgICAgICAgICAgICAmIzQzOy0tLS0mIzQzOy0tLS0mIzQzOyAgICB8XG4mIzQzOyMgfCAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHxcbiYjNDM7IyB8ICAgJiM0MzstLS0tLSYjNDM7LS0tLSYjNDM7ICAgICYjNDM7LS0tLS0tLS0tLS0tJiM0MzsgIHwgICB8ICAmIzQzOy0tLS0tLS0tLS0tLSYjNDM7ICAgICYjNDM7LS0tLSYjNDM7LS0tLS0mIzQzOyAgIHxcbiYjNDM7IyB8ICAgfCAgcmxvLVggICB8ICAgIHwgICB2ZXRoMCAgICB8ICB8ICAgfCAgfCAgIHZldGgwICAgIHwgICAgfCAgcmxvLVggICB8ICAgfFxuJiM0MzsjIHwgICB8ICAgUkxPMSAgIHwgICAgfCBmZDAwOjoxLzY0IHwuLnwuLi58Li58IGZkMDA6OjIvNjQgfCAgICB8ICAgUkxPMiAgIHwgICB8XG4mIzQzOyMgfCAgICYjNDM7LS0tLS0tLS0tLSYjNDM7ICAgICYjNDM7LS0tLS0tLS0tLS0tJiM0MzsgIHwgICB8ICAmIzQzOy0tLS0tLS0tLS0tLSYjNDM7ICAgICYjNDM7LS0tLS0tLS0tLSYjNDM7ICAgfFxuJiM0MzsjIHwgICAgICAgICAgICAgIHJ0LTEgbmV0bnMgICAgICAgICAgIHwgICB8ICAgICAgICAgIHJ0LTIgbmV0bnMgICAgICAgICAgICAgICB8XG4mIzQzOyMgJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7ICAgJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7XG4mIzQzOyNcbiYjNDM7I1xuJiM0MzsjIFBlci10ZW5hbnQgaW5zdGFudGlhdGlvbjpcbiYjNDM7IyAmIzQzOy0tLS0tJiM0MzstLS0tLS0mIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzO1xuJiM0MzsjIHwgIFggIHwgYSwgYiB8IEhBICAgICAgICAgICAgICAgIHwgSEIgICAgICAgICAgICAgICAgfFxuJiM0MzsjICYjNDM7LS0tLS0mIzQzOy0tLS0tLSYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7XG4mIzQzOyMgfCAxMDAgfCAxLCAyIHwgY2FmZTo6MSwgMTAuMC4wLjEgfCBjYWZlOjoyLCAxMC4wLjAuMiB8XG4mIzQzOyMgfCAyMDAgfCAzLCA0IHwgY2FmZTo6MywgMTAuMC4wLjMgfCBjYWZlOjo0LCAxMC4wLjAuNCB8XG4mIzQzOyMgJiM0MzstLS0tLSYjNDM7LS0tLS0tJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tJiM0MztcbiYjNDM7I1xuJiM0MzsjIFJvdXRlciBsb29wYmFjayAocmxvLVgpIGFkZHJlc3NlcywgcGVyIHRlbmFudDpcbiYjNDM7IyAmIzQzOy0tLS0tJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzO1xuJiM0MzsjIHwgIFggIHwgUkxPMSAocnQtMSkgICAgICAgICAgIHwgUkxPMiAocnQtMikgICAgICAgICAgIHxcbiYjNDM7IyAmIzQzOy0tLS0tJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzO1xuJiM0MzsjIHwgMTAwIHwgY2FmZTo6MTAxLCAxMC4wLjAuMTAxIHwgY2FmZTo6MTAyLCAxMC4wLjAuMTAyIHxcbiYjNDM7IyB8IDIwMCB8IGNhZmU6OjIwMSwgMTAuMC4wLjIwMSB8IGNhZmU6OjIwMiwgMTAuMC4wLjIwMiB8XG4mIzQzOyMgJiM0MzstLS0tLSYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJiM0MztcbiYjNDM7I1xuJiM0MzsjXG4mIzQzOyMgTmV0d29yayBjb25maWd1cmF0aW9uXG4mIzQzOyMgPT09PT09PT09PT09PT09PT09PT09XG4mIzQzOyNcbiYjNDM7IyBydC0xOiBsb2NhbHNpZCB0YWJsZSAodGFibGUgOTApXG4mIzQzOyMgJiM0MzstLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzO1xuJiM0MzsjIHwgdGVuYW50IHwgU0lEICAgICAgICAgICAgICAgIHwgQWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuJiM0MzsjICYjNDM7LS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJiM0MztcbiYjNDM7IyB8ICAxMDAgICB8IGZjMDA6MjoxOjEwMDo6MGQ0NiB8IGFwcGx5IFNSdjYgRW5kLkRUNDYgdnJmdGFibGUgMTAwIHxcbiYjNDM7IyB8ICAyMDAgICB8IGZjMDA6MjoxOjIwMDo6MGQ0NiB8IGFwcGx5IFNSdjYgRW5kLkRUNDYgdnJmdGFibGUgMjAwIHxcbiYjNDM7IyAmIzQzOy0tLS0tLS0tJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7XG4mIzQzOyNcbiYjNDM7IyBydC0xOiB1bmRlcmxheSB0YWJsZSAodGFibGUgNTAwKSAtIHBvc3QtZW5jYXAgU0lEIHJvdXRlIGxvb2t1cFxuJiM0MzsjICYjNDM7LS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJiM0MztcbiYjNDM7IyB8IHRlbmFudCB8IFNJRCAgICAgICAgICAgICAgICB8IEFjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgIHxcbiYjNDM7IyAmIzQzOy0tLS0tLS0tJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7XG4mIzQzOyMgfCAgMTAwICAgfCBmYzAwOjE6MjoxMDA6OjBkNDYgfCBmb3J3YXJkIHZpYSBmZDAwOjoyIGRldiB2ZXRoMCB8XG4mIzQzOyMgfCAgMjAwICAgfCBmYzAwOjE6MjoyMDA6OjBkNDYgfCBmb3J3YXJkIHZpYSBmZDAwOjoyIGRldiB2ZXRoMCB8XG4mIzQzOyMgJiM0MzstLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzO1xuJiM0MzsjXG4mIzQzOyMgcnQtMTogVlJGIHRhYmxlcyAocGVyIHRlbmFudDogdnJmLVggPSB0YWJsZSBYKVxuJiM0MzsjICYjNDM7LS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJiM0MztcbiYjNDM7IyB8IHRlbmFudCB8IGRzdCAgICAgICAgfCBlbmNhcCBhY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiYjNDM7IyAmIzQzOy0tLS0tLS0tJiM0MzstLS0tLS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7XG4mIzQzOyMgfCAxMDAgICAgfCBjYWZlOjoyICAgIHwgZW5jYXAgc2VncyBmYzAwOjE6MjoxMDA6OjBkNDYgbG9va3VwIDUwMCB8XG4mIzQzOyMgfCAgICAgICAgfCAxMC4wLjAuMiAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4mIzQzOyMgfCAgICAgICAgfCBjYWZlOjoxMDIgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4mIzQzOyMgfCAgICAgICAgfCAxMC4wLjAuMTAyIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4mIzQzOyMgfCAyMDAgICAgfCBjYWZlOjo0ICAgIHwgZW5jYXAgc2VncyBmYzAwOjE6MjoyMDA6OjBkNDYgbG9va3VwIDUwMCB8XG4mIzQzOyMgfCAgICAgICAgfCAxMC4wLjAuNCAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4mIzQzOyMgfCAgICAgICAgfCBjYWZlOjoyMDIgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4mIzQzOyMgfCAgICAgICAgfCAxMC4wLjAuMjAyIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4mIzQzOyMgJiM0MzstLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0tJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzO1xuJiM0MzsjXG4mIzQzOyNcbiYjNDM7IyBydC0yOiBsb2NhbHNpZCB0YWJsZSAodGFibGUgOTApXG4mIzQzOyMgJiM0MzstLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzO1xuJiM0MzsjIHwgdGVuYW50IHwgU0lEICAgICAgICAgICAgICAgIHwgQWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuJiM0MzsjICYjNDM7LS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJiM0MztcbiYjNDM7IyB8ICAxMDAgICB8IGZjMDA6MToyOjEwMDo6MGQ0NiB8IGFwcGx5IFNSdjYgRW5kLkRUNDYgdnJmdGFibGUgMTAwIHxcbiYjNDM7IyB8ICAyMDAgICB8IGZjMDA6MToyOjIwMDo6MGQ0NiB8IGFwcGx5IFNSdjYgRW5kLkRUNDYgdnJmdGFibGUgMjAwIHxcbiYjNDM7IyAmIzQzOy0tLS0tLS0tJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7XG4mIzQzOyNcbiYjNDM7IyBydC0yOiB1bmRlcmxheSB0YWJsZSAodGFibGUgNTAwKSAtIHBvc3QtZW5jYXAgU0lEIHJvdXRlIGxvb2t1cFxuJiM0MzsjICYjNDM7LS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJiM0MztcbiYjNDM7IyB8IHRlbmFudCB8IFNJRCAgICAgICAgICAgICAgICB8IEFjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgIHxcbiYjNDM7IyAmIzQzOy0tLS0tLS0tJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7XG4mIzQzOyMgfCAgMTAwICAgfCBmYzAwOjI6MToxMDA6OjBkNDYgfCBmb3J3YXJkIHZpYSBmZDAwOjoxIGRldiB2ZXRoMCB8XG4mIzQzOyMgfCAgMjAwICAgfCBmYzAwOjI6MToyMDA6OjBkNDYgfCBmb3J3YXJkIHZpYSBmZDAwOjoxIGRldiB2ZXRoMCB8XG4mIzQzOyMgJiM0MzstLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzO1xuJiM0MzsjXG4mIzQzOyMgcnQtMjogVlJGIHRhYmxlcyAocGVyIHRlbmFudDogdnJmLVggPSB0YWJsZSBYKVxuJiM0MzsjICYjNDM7LS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJiM0MztcbiYjNDM7IyB8IHRlbmFudCB8IGRzdCAgICAgICAgfCBlbmNhcCBhY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiYjNDM7IyAmIzQzOy0tLS0tLS0tJiM0MzstLS0tLS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7XG4mIzQzOyMgfCAxMDAgICAgfCBjYWZlOjoxICAgIHwgZW5jYXAgc2VncyBmYzAwOjI6MToxMDA6OjBkNDYgbG9va3VwIDUwMCB8XG4mIzQzOyMgfCAgICAgICAgfCAxMC4wLjAuMSAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4mIzQzOyMgfCAgICAgICAgfCBjYWZlOjoxMDEgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4mIzQzOyMgfCAgICAgICAgfCAxMC4wLjAuMTAxIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4mIzQzOyMgfCAyMDAgICAgfCBjYWZlOjozICAgIHwgZW5jYXAgc2VncyBmYzAwOjI6MToyMDA6OjBkNDYgbG9va3VwIDUwMCB8XG4mIzQzOyMgfCAgICAgICAgfCAxMC4wLjAuMyAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4mIzQzOyMgfCAgICAgICAgfCBjYWZlOjoyMDEgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4mIzQzOyMgfCAgICAgICAgfCAxMC4wLjAuMjAxIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4mIzQzOyMgJiM0MzstLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0tJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzO1xuJiM0MzsjIFdpdGhpbiBhIHRlbmFudCwgYSBzaW5nbGUgU0lEIHJlYWNoZXMgdGhlIGFkamFjZW50IHJvdXRlciAoaXRzIGxvb3BiYWNrKVxuJiM0MzsjIGFuZCB0aGUgcmVtb3RlIGhvc3QgY29ubmVjdGVkIHRvIGl0LCBpbiBib3RoIElQdjQgYW5kIElQdjYuXG4mIzQzOyNcbiYjNDM7IyBGb3IgYm90aCBydC0xIGFuZCBydC0yLCBlYWNoIFZSRiBhbHNvIGhhcyB0aGUgY29ubmVjdGVkIGhvc3QgcHJlZml4IChjYWZlOjovNjRcbiYjNDM7IyBvciAxMC4wLjAuMC8yNCkgYW5kIGEgZGVmYXVsdCBibGFja2hvbGUgKElQdjQgYW5kIElQdjYpLlxuJiM0MzsjXG4mIzQzOyNcbiYjNDM7IyBMb2NhbGx5IG9yaWdpbmF0ZWQgdHJhZmZpYyAob3V0cHV0IHBhdGgpXG4mIzQzOyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuJiM0MzsjXG4mIzQzOyMgVGhlIGNvbmZpZ3VyYXRpb24gYWJvdmUgY292ZXJzIGZvcndhcmRlZCB0cmFmZmljLCB3aGVyZSBwYWNrZXRzIGFycml2ZSBmcm9tXG4mIzQzOyMgYSBob3N0IGFuZCBhcmUgZW5jYXBzdWxhdGVkIGJ5IHRoZSByb3V0ZXIuIFRvIGFsc28gdGVzdCByb3V0ZXItb3JpZ2luYXRlZFxuJiM0MzsjIHRyYWZmaWMsIGVhY2ggcm91dGVyIHBpbmdzIHRoZSBvdGhlciByb3V0ZXImIzM5O3MgbG9vcGJhY2sgYWRkcmVzcyB0aHJvdWdoXG4mIzQzOyMgdGhlIFZQTi5cbiYjNDM7I1xuJiM0MzsjIEV4YW1wbGUgKHRlbmFudCAxMDApLCBydC0xIHBpbmdzIGNhZmU6OjEwMiAocnQtMiYjMzk7cyBsb29wYmFjayk6XG4mIzQzOyMgICAxLiBydC0xIGxvb2tzIHVwIGNhZmU6OjEwMiBpbiB2cmYtMTAwIGFuZCBlbmNhcHN1bGF0ZXMgaXQgKFNJRFxuJiM0MzsjICAgICAgZmMwMDoxOjI6MTAwOjowZDQ2KSwgdGhlbiBcJiMzNDtsb29rdXAgNTAwXCYjMzQ7IGZpbmRzIHRoZSByb3V0ZSBmb3IgdGhlIFNJRCBpbiB0aGVcbiYjNDM7IyAgICAgIHVuZGVybGF5IHRhYmxlIChuZXh0IGhvcCBmZDAwOjoyKSBhbmQgZm9yd2FyZHMgaXQ7XG4mIzQzOyMgICAyLiBydC0yIGRlY2Fwc3VsYXRlcyBpdCAobG9jYWxzaWQsIEVuZC5EVDQ2KSBhbmQgZGVsaXZlcnMgaXQgbG9jYWxseVxuJiM0MzsjICAgICAgKGNhZmU6OjEwMiBpcyBvbiB0aGUgcmxvLTEwMCBpbnRlcmZhY2UpO1xuJiM0MzsjICAgMy4gcnQtMiByZXBsaWVzIHdpdGggZGVzdGluYXRpb24gY2FmZTo6MTAxIChydC0xJiMzOTtzIGxvb3BiYWNrKS4gcnQtMiBsb29rcyB1cFxuJiM0MzsjICAgICAgY2FmZTo6MTAxIGluIHZyZi0xMDAgYW5kIGVuY2Fwc3VsYXRlcyBpdCBiYWNrIHRvIHJ0LTEgKGFnYWluIHZpYSBcJiMzNDtsb29rdXBcbiYjNDM7IyAgICAgIDUwMFwmIzM0OykuIHJ0LTEgZGVjYXBzdWxhdGVzIGl0IGFuZCBkZWxpdmVycyBpdC5cbiYjNDM7XG4mIzQzOyMgc2hlbGxjaGVjayBzb3VyY2U9bGliLnNoXG4mIzQzO3NvdXJjZSBsaWIuc2hcbiYjNDM7XG4mIzQzO3JlYWRvbmx5IExPQ0FMU0lEX1RBQkxFX0lEPTkwXG4mIzQzO3JlYWRvbmx5IFVOREVSTEFZX1RBQkxFX0lEPTUwMFxuJiM0MztyZWFkb25seSBJUHY2X1JUX05FVFdPUks9ZmQwMFxuJiM0MztyZWFkb25seSBJUHY2X0hTX05FVFdPUks9Y2FmZVxuJiM0MztyZWFkb25seSBJUHY0X0hTX05FVFdPUks9MTAuMC4wXG4mIzQzO3JlYWRvbmx5IFZQTl9MT0NBVE9SX1NFUlZJQ0U9ZmMwMFxuJiM0MztyZWFkb25seSBEVDQ2X0ZVTkM9MGQ0NlxuJiM0MztyZWFkb25seSBEVU1NWV9ERVZOQU1FPWR1bTBcbiYjNDM7cmVhZG9ubHkgSVB2Nl9URVNUU19BRERSPTIwMDE6ZGI4OjoxXG4mIzQzO3JlYWRvbmx5IFRFU1RTX1RBQkxFX0lEPTU0MzIxXG4mIzQzO1BJTkdfVElNRU9VVF9TRUM9NFxuJiM0MztcbiYjNDM7U0VUVVBfRVJSPTFcbiYjNDM7XG4mIzQzO3JldD0ke2tzZnRfc2tpcH1cbiYjNDM7bnN1Y2Nlc3M9MFxuJiM0MztuZmFpbD0wXG4mIzQzO1xuJiM0MztQQVVTRV9PTl9GQUlMPSR7UEFVU0VfT05fRkFJTDo9bm99XG4mIzQzO1xuJiM0Mztsb2dfdGVzdCgpXG4mIzQzO3tcbiYjNDM7XHRsb2NhbCByYz1cJiMzNDskMVwmIzM0O1xuJiM0MztcdGxvY2FsIGV4cGVjdGVkPVwmIzM0OyQyXCYjMzQ7XG4mIzQzO1x0bG9jYWwgbXNnPVwmIzM0OyQzXCYjMzQ7XG4mIzQzO1xuJiM0MztcdGlmIFsgXCYjMzQ7JHtyY31cJiMzNDsgLWVxIFwmIzM0OyR7ZXhwZWN0ZWR9XCYjMzQ7IF07IHRoZW5cbiYjNDM7XHRcdG5zdWNjZXNzPSQoKG5zdWNjZXNzJiM0MzsxKSlcbiYjNDM7XHRcdHByaW50ZiBcJiMzNDtcXG4gICAgVEVTVDogJS02MHMgIFsgT0sgXVxcblwmIzM0OyBcJiMzNDske21zZ31cJiMzNDtcbiYjNDM7XHRlbHNlXG4mIzQzO1x0XHRyZXQ9MVxuJiM0MztcdFx0bmZhaWw9JCgobmZhaWwmIzQzOzEpKVxuJiM0MztcdFx0cHJpbnRmIFwmIzM0O1xcbiAgICBURVNUOiAlLTYwcyAgW0ZBSUxdXFxuXCYjMzQ7IFwmIzM0OyR7bXNnfVwmIzM0O1xuJiM0MztcdFx0aWYgWyBcJiMzNDske1BBVVNFX09OX0ZBSUx9XCYjMzQ7ID0gXCYjMzQ7eWVzXCYjMzQ7IF07IHRoZW5cbiYjNDM7XHRcdFx0ZWNob1xuJiM0MztcdFx0XHRlY2hvIFwmIzM0O2hpdCBlbnRlciB0byBjb250aW51ZSwgJiMzOTtxJiMzOTsgdG8gcXVpdFwmIzM0O1xuJiM0MztcdFx0XHRyZWFkIC1yIGFcbiYjNDM7XHRcdFx0WyBcJiMzNDskYVwmIzM0OyA9IFwmIzM0O3FcJiMzNDsgXSBcdTAwMjZcdTAwMjYgZXhpdCAxXG4mIzQzO1x0XHRmaVxuJiM0MztcdGZpXG4mIzQzO31cbiYjNDM7XG4mIzQzO3ByaW50X2xvZ190ZXN0X3Jlc3VsdHMoKVxuJiM0Mzt7XG4mIzQzO1x0cHJpbnRmIFwmIzM0O1xcblRlc3RzIHBhc3NlZDogJTNkXFxuXCYjMzQ7IFwmIzM0OyR7bnN1Y2Nlc3N9XCYjMzQ7XG4mIzQzO1x0cHJpbnRmIFwmIzM0O1Rlc3RzIGZhaWxlZDogJTNkXFxuXCYjMzQ7ICAgXCYjMzQ7JHtuZmFpbH1cJiMzNDtcbiYjNDM7XG4mIzQzO1x0IyB3aGVuIGEgdGVzdCBmYWlscywgdGhlIHZhbHVlIG9mICYjMzk7cmV0JiMzOTsgaXMgc2V0IHRvIDEgKGVycm9yIGNvZGUpLlxuJiM0MztcdCMgQ29udmVyc2VseSwgd2hlbiBhbGwgdGVzdHMgYXJlIHBhc3NlZCBzdWNjZXNzZnVsbHksIHRoZSAmIzM5O3JldCYjMzk7IHZhbHVlXG4mIzQzO1x0IyBpcyBzZXQgdG8gMCAoc3VjY2VzcyBjb2RlKS5cbiYjNDM7XHRpZiBbIFwmIzM0OyR7cmV0fVwmIzM0OyAtbmUgMSBdOyB0aGVuXG4mIzQzO1x0XHRyZXQ9MFxuJiM0MztcdGZpXG4mIzQzO31cbiYjNDM7XG4mIzQzO2xvZ19zZWN0aW9uKClcbiYjNDM7e1xuJiM0MztcdGVjaG9cbiYjNDM7XHRlY2hvIFwmIzM0OyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjXCYjMzQ7XG4mIzQzO1x0ZWNobyBcJiMzNDtURVNUIFNFQ1RJT046ICQqXCYjMzQ7XG4mIzQzO1x0ZWNobyBcJiMzNDsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI1wmIzM0O1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztnZXRfcnRuYW1lKClcbiYjNDM7e1xuJiM0MztcdGxvY2FsIHJ0aWQ9XCYjMzQ7JDFcJiMzNDtcbiYjNDM7XG4mIzQzO1x0ZWNobyBcJiMzNDtydF8ke3J0aWR9XCYjMzQ7XG4mIzQzO31cbiYjNDM7XG4mIzQzO2dldF9ydF9uc25hbWUoKVxuJiM0Mzt7XG4mIzQzO1x0bG9jYWwgcnRpZD1cJiMzNDskMVwmIzM0O1xuJiM0MztcdGxvY2FsIHZhcm5hbWVcbiYjNDM7XG4mIzQzO1x0dmFybmFtZT1cJiMzNDskKGdldF9ydG5hbWUgXCYjMzQ7JHtydGlkfVwmIzM0OylcJiMzNDtcbiYjNDM7XHRlY2hvIFwmIzM0OyR7IXZhcm5hbWV9XCYjMzQ7XG4mIzQzO31cbiYjNDM7XG4mIzQzO2dldF9oc25hbWUoKVxuJiM0Mzt7XG4mIzQzO1x0bG9jYWwgdGlkPVwmIzM0OyQxXCYjMzQ7XG4mIzQzO1x0bG9jYWwgaHNpZD1cJiMzNDskMlwmIzM0O1xuJiM0MztcbiYjNDM7XHRlY2hvIFwmIzM0O2hzX3Qke3RpZH1fJHtoc2lkfVwmIzM0O1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztnZXRfaHNfbnNuYW1lKClcbiYjNDM7e1xuJiM0MztcdGxvY2FsIHRpZD1cJiMzNDskMVwmIzM0O1xuJiM0MztcdGxvY2FsIGhzaWQ9XCYjMzQ7JDJcJiMzNDtcbiYjNDM7XHRsb2NhbCB2YXJuYW1lXG4mIzQzO1xuJiM0MztcdHZhcm5hbWU9XCYjMzQ7JChnZXRfaHNuYW1lIFwmIzM0OyR7dGlkfVwmIzM0OyBcJiMzNDske2hzaWR9XCYjMzQ7KVwmIzM0O1xuJiM0MztcdGVjaG8gXCYjMzQ7JHshdmFybmFtZX1cJiMzNDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7Y2xlYW51cCgpXG4mIzQzO3tcbiYjNDM7XHRpcCBsaW5rIGRlbCB2ZXRoLXJ0LTEgMlx1MDAzZS9kZXYvbnVsbCB8fCB0cnVlXG4mIzQzO1x0aXAgbGluayBkZWwgdmV0aC1ydC0yIDJcdTAwM2UvZGV2L251bGwgfHwgdHJ1ZVxuJiM0MztcbiYjNDM7XHRjbGVhbnVwX2FsbF9uc1xuJiM0MztcbiYjNDM7XHQjIGNoZWNrIHdoZXRoZXIgdGhlIHNldHVwIHBoYXNlIHdhcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5IG9yIG5vdC4gSW5cbiYjNDM7XHQjIGNhc2Ugb2YgYW4gZXJyb3IgZHVyaW5nIHRoZSBzZXR1cCBwaGFzZSBvZiB0aGUgdGVzdGluZyBlbnZpcm9ubWVudCxcbiYjNDM7XHQjIHRoZSBzZWxmdGVzdCBpcyBjb25zaWRlcmVkIGFzIFwmIzM0O3NraXBwZWRcJiMzNDsuXG4mIzQzO1x0aWYgWyBcJiMzNDske1NFVFVQX0VSUn1cJiMzNDsgLW5lIDAgXTsgdGhlblxuJiM0MztcdFx0ZWNobyBcJiMzNDtTS0lQOiBTZXR0aW5nIHVwIHRoZSB0ZXN0aW5nIGVudmlyb25tZW50IGZhaWxlZFwmIzM0O1xuJiM0MztcdFx0ZXhpdCBcJiMzNDske2tzZnRfc2tpcH1cJiMzNDtcbiYjNDM7XHRmaVxuJiM0MztcbiYjNDM7XHRleGl0IFwmIzM0OyR7cmV0fVwmIzM0O1xuJiM0Mzt9XG4mIzQzO1xuJiM0MzsjIEhvc3QgaWQgb2YgdGhlIHJvdXRlciBsb29wYmFjayAocmxvKSBmb3IgYSAocm91dGVyLCB0ZW5hbnQpIHBhaXIuXG4mIzQzOyMgRS5nLiBydC0xL3RlbmFudCAxMDAgLVx1MDAzZSAxMDEsIHJ0LTIvdGVuYW50IDIwMCAtXHUwMDNlIDIwMi5cbiYjNDM7Z2V0X3Jsb19ob3N0aWQoKVxuJiM0Mzt7XG4mIzQzO1x0bG9jYWwgcnRpZD1cJiMzNDskMVwmIzM0O1xuJiM0MztcdGxvY2FsIHRpZD1cJiMzNDskMlwmIzM0O1xuJiM0MztcbiYjNDM7XHRlY2hvIFwmIzM0OyQoKHRpZCAmIzQzOyBydGlkKSlcJiMzNDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7YnVpbGRfdnBuX3NpZCgpXG4mIzQzO3tcbiYjNDM7XHRsb2NhbCBydHNyYz1cJiMzNDskMVwmIzM0O1xuJiM0MztcdGxvY2FsIHJ0ZHN0PVwmIzM0OyQyXCYjMzQ7XG4mIzQzO1x0bG9jYWwgdGlkPVwmIzM0OyQzXCYjMzQ7XG4mIzQzO1xuJiM0MztcdGVjaG8gXCYjMzQ7JHtWUE5fTE9DQVRPUl9TRVJWSUNFfToke3J0c3JjfToke3J0ZHN0fToke3RpZH06OiR7RFQ0Nl9GVU5DfVwmIzM0O1xuJiM0Mzt9XG4mIzQzO1xuJiM0MzsjIEluc3RhbGwgYSBkdWFsLXN0YWNrIChJUHY2IGFuZCBJUHY0KSBlbmNhcCByb3V0ZSBpbiBhIFZSRiBvbiB0aGUgZ2l2ZW5cbiYjNDM7IyByb3V0ZXIuXG4mIzQzOyMgYXJnczpcbiYjNDM7IyAgJDEgLSByb3V0ZXIgaWRcbiYjNDM7IyAgJDIgLSBob3N0IHBhcnQgb2YgdGhlIElQdjYgZGVzdGluYXRpb25cbiYjNDM7IyAgJDMgLSBob3N0IHBhcnQgb2YgdGhlIElQdjQgZGVzdGluYXRpb25cbiYjNDM7IyAgJDQgLSBTUnY2IFNJRCB1c2VkIGFzIHRoZSBlbmNhcCBkZXN0aW5hdGlvblxuJiM0MzsjICAkNSAtIHRlbmFudCBpZFxuJiM0MzsjICAkNiAtIGlmIFwmIzM0O3RydWVcJiMzNDssIGFkZCB0aGUgXCYjMzQ7bG9va3VwXCYjMzQ7IGF0dHJpYnV0ZSB0byB0aGUgZW5jYXAgcm91dGVcbiYjNDM7X19zZXRfZW5jYXBfcm91dGUoKVxuJiM0Mzt7XG4mIzQzO1x0bG9jYWwgcnQ9XCYjMzQ7JDFcJiMzNDtcbiYjNDM7XHRsb2NhbCBkc3Q2PVwmIzM0OyQyXCYjMzQ7XG4mIzQzO1x0bG9jYWwgZHN0ND1cJiMzNDskM1wmIzM0O1xuJiM0MztcdGxvY2FsIHNpZD1cJiMzNDskNFwmIzM0O1xuJiM0MztcdGxvY2FsIHRpZD1cJiMzNDskNVwmIzM0O1xuJiM0MztcdGxvY2FsIHVzZV9sb29rdXA9XCYjMzQ7JDZcJiMzNDtcbiYjNDM7XHRsb2NhbCBsb29rdXA9JiMzOTsmIzM5O1xuJiM0MztcdGxvY2FsIHJ0bmFtZVxuJiM0MztcbiYjNDM7XHRydG5hbWU9XCYjMzQ7JChnZXRfcnRfbnNuYW1lIFwmIzM0OyR7cnR9XCYjMzQ7KVwmIzM0O1xuJiM0MztcbiYjNDM7XHRpZiBbIFwmIzM0OyR7dXNlX2xvb2t1cH1cJiMzNDsgPSBcJiMzNDt0cnVlXCYjMzQ7IF07IHRoZW5cbiYjNDM7XHRcdGxvb2t1cD1cJiMzNDtsb29rdXAgJHtVTkRFUkxBWV9UQUJMRV9JRH1cJiMzNDtcbiYjNDM7XHRmaVxuJiM0MztcbiYjNDM7XHQjIHNoZWxsY2hlY2sgZGlzYWJsZT1TQzIwODZcbiYjNDM7XHRpcCAtbmV0bnMgXCYjMzQ7JHtydG5hbWV9XCYjMzQ7IC02IHJvdXRlIHJlcGxhY2UgXFxcbiYjNDM7XHRcdFwmIzM0OyR7SVB2Nl9IU19ORVRXT1JLfTo6JHtkc3Q2fS8xMjhcJiMzNDsgdnJmIFwmIzM0O3ZyZi0ke3RpZH1cJiMzNDsgXFxcbiYjNDM7XHRcdGVuY2FwIHNlZzYgbW9kZSBlbmNhcCBzZWdzIFwmIzM0OyR7c2lkfVwmIzM0OyAke2xvb2t1cH0gZGV2IHZldGgwXG4mIzQzO1xuJiM0MztcdCMgc2hlbGxjaGVjayBkaXNhYmxlPVNDMjA4NlxuJiM0MztcdGlwIC1uZXRucyBcJiMzNDske3J0bmFtZX1cJiMzNDsgLTQgcm91dGUgcmVwbGFjZSBcXFxuJiM0MztcdFx0XCYjMzQ7JHtJUHY0X0hTX05FVFdPUkt9LiR7ZHN0NH0vMzJcJiMzNDsgdnJmIFwmIzM0O3ZyZi0ke3RpZH1cJiMzNDsgXFxcbiYjNDM7XHRcdGVuY2FwIHNlZzYgbW9kZSBlbmNhcCBzZWdzIFwmIzM0OyR7c2lkfVwmIzM0OyAke2xvb2t1cH0gZGV2IHZldGgwXG4mIzQzO31cbiYjNDM7XG4mIzQzOyMgSW5zdGFsbCB0aGUgZHVhbC1zdGFjayBlbmNhcCByb3V0ZSBmb3IgYSB0ZW5hbnQgaG9zdCBvbiBydCwgd2l0aCB0aGVcbiYjNDM7IyBcJiMzNDtsb29rdXBcJiMzNDsgYXR0cmlidXRlIHNvIHRoZSBmaXJzdCBTSUQgaXMgbG9va2VkIHVwIGluIHRoZSB1bmRlcmxheSB0YWJsZS5cbiYjNDM7IyBhcmdzOlxuJiM0MzsjICAkMSAtIHJvdXRlciBpZCB3aGVyZSB0aGUgZW5jYXAgcm91dGUgaXMgaW5zdGFsbGVkXG4mIzQzOyMgICQyIC0gaG9zdCBkZXN0aW5hdGlvbiBpZCAoaG9zdCBwYXJ0IG9mIGNhZmU6Olx1MDAzY2lkXHUwMDNlLzEyOCBhbmQgMTAuMC4wLlx1MDAzY2lkXHUwMDNlLzMyKVxuJiM0MzsjICAkMyAtIFNSdjYgU0lEIHVzZWQgYXMgdGhlIGVuY2FwIGRlc3RpbmF0aW9uXG4mIzQzOyMgICQ0IC0gdGVuYW50IGlkXG4mIzQzO3NldF9ob3N0X2VuY2FwX3JvdXRlKClcbiYjNDM7e1xuJiM0MztcdGxvY2FsIHJ0PVwmIzM0OyQxXCYjMzQ7XG4mIzQzO1x0bG9jYWwgaHNkc3Q9XCYjMzQ7JDJcJiMzNDtcbiYjNDM7XHRsb2NhbCBzaWQ9XCYjMzQ7JDNcJiMzNDtcbiYjNDM7XHRsb2NhbCB0aWQ9XCYjMzQ7JDRcJiMzNDtcbiYjNDM7XG4mIzQzO1x0X19zZXRfZW5jYXBfcm91dGUgXCYjMzQ7JHtydH1cJiMzNDsgXCYjMzQ7JHtoc2RzdH1cJiMzNDsgXCYjMzQ7JHtoc2RzdH1cJiMzNDsgXCYjMzQ7JHtzaWR9XCYjMzQ7IFwmIzM0OyR7dGlkfVwmIzM0OyB0cnVlXG4mIzQzO31cbiYjNDM7XG4mIzQzO3NldF9ob3N0X2VuY2FwX3JvdXRlX25vbG9va3VwKClcbiYjNDM7e1xuJiM0MztcdGxvY2FsIHJ0PVwmIzM0OyQxXCYjMzQ7XG4mIzQzO1x0bG9jYWwgaHNkc3Q9XCYjMzQ7JDJcJiMzNDtcbiYjNDM7XHRsb2NhbCBzaWQ9XCYjMzQ7JDNcJiMzNDtcbiYjNDM7XHRsb2NhbCB0aWQ9XCYjMzQ7JDRcJiMzNDtcbiYjNDM7XG4mIzQzO1x0X19zZXRfZW5jYXBfcm91dGUgXCYjMzQ7JHtydH1cJiMzNDsgXCYjMzQ7JHtoc2RzdH1cJiMzNDsgXCYjMzQ7JHtoc2RzdH1cJiMzNDsgXCYjMzQ7JHtzaWR9XCYjMzQ7IFwmIzM0OyR7dGlkfVwmIzM0OyBmYWxzZVxuJiM0Mzt9XG4mIzQzO1xuJiM0MzsjIEluc3RhbGwgdGhlIGR1YWwtc3RhY2sgZW5jYXAgcm91dGUgb24gcnRzcmMgdG93YXJkIHJ0ZHN0JiMzOTtzIHJsbyBsb29wYmFja1xuJiM0MzsjIChSTE8xIG9yIFJMTzIsIHNlZSBoZWFkZXIpLCB3aXRoIHRoZSBcJiMzNDtsb29rdXBcJiMzNDsgYXR0cmlidXRlIHNvIHRoZSBmaXJzdFxuJiM0MzsjIFNJRCBpcyBsb29rZWQgdXAgaW4gdGhlIHVuZGVybGF5IHRhYmxlLlxuJiM0MzsjIGFyZ3M6XG4mIzQzOyMgICQxIC0gcm91dGVyIGlkIHdoZXJlIHRoZSBlbmNhcCByb3V0ZSBpcyBpbnN0YWxsZWRcbiYjNDM7IyAgJDIgLSByb3V0ZXIgaWQgd2hvc2UgbG9vcGJhY2sgYWRkcmVzcyBpcyB0aGUgcm91dGUgZGVzdGluYXRpb25cbiYjNDM7IyAgJDMgLSBTUnY2IFNJRCB1c2VkIGFzIHRoZSBlbmNhcCBkZXN0aW5hdGlvblxuJiM0MzsjICAkNCAtIHRlbmFudCBpZFxuJiM0MztzZXRfZ3dfZW5jYXBfcm91dGUoKVxuJiM0Mzt7XG4mIzQzO1x0bG9jYWwgcnRzcmM9XCYjMzQ7JDFcJiMzNDtcbiYjNDM7XHRsb2NhbCBydGRzdD1cJiMzNDskMlwmIzM0O1xuJiM0MztcdGxvY2FsIHNpZD1cJiMzNDskM1wmIzM0O1xuJiM0MztcdGxvY2FsIHRpZD1cJiMzNDskNFwmIzM0O1xuJiM0MztcdGxvY2FsIGRzdFxuJiM0MztcbiYjNDM7XHRkc3Q9XCYjMzQ7JChnZXRfcmxvX2hvc3RpZCBcJiMzNDske3J0ZHN0fVwmIzM0OyBcJiMzNDske3RpZH1cJiMzNDspXCYjMzQ7XG4mIzQzO1xuJiM0MztcdF9fc2V0X2VuY2FwX3JvdXRlIFwmIzM0OyR7cnRzcmN9XCYjMzQ7IFwmIzM0OyR7ZHN0fVwmIzM0OyBcJiMzNDske2RzdH1cJiMzNDsgXCYjMzQ7JHtzaWR9XCYjMzQ7IFwmIzM0OyR7dGlkfVwmIzM0OyB0cnVlXG4mIzQzO31cbiYjNDM7XG4mIzQzO3NldF9nd19lbmNhcF9yb3V0ZV9ub2xvb2t1cCgpXG4mIzQzO3tcbiYjNDM7XHRsb2NhbCBydHNyYz1cJiMzNDskMVwmIzM0O1xuJiM0MztcdGxvY2FsIHJ0ZHN0PVwmIzM0OyQyXCYjMzQ7XG4mIzQzO1x0bG9jYWwgc2lkPVwmIzM0OyQzXCYjMzQ7XG4mIzQzO1x0bG9jYWwgdGlkPVwmIzM0OyQ0XCYjMzQ7XG4mIzQzO1x0bG9jYWwgZHN0XG4mIzQzO1xuJiM0MztcdGRzdD1cJiMzNDskKGdldF9ybG9faG9zdGlkIFwmIzM0OyR7cnRkc3R9XCYjMzQ7IFwmIzM0OyR7dGlkfVwmIzM0OylcJiMzNDtcbiYjNDM7XG4mIzQzO1x0X19zZXRfZW5jYXBfcm91dGUgXCYjMzQ7JHtydHNyY31cJiMzNDsgXCYjMzQ7JHtkc3R9XCYjMzQ7IFwmIzM0OyR7ZHN0fVwmIzM0OyBcJiMzNDske3NpZH1cJiMzNDsgXCYjMzQ7JHt0aWR9XCYjMzQ7IGZhbHNlXG4mIzQzO31cbiYjNDM7XG4mIzQzOyMgU2V0dXAgdGhlIGJhc2ljIG5ldHdvcmtpbmcgZm9yIGEgcm91dGVyXG4mIzQzO3NldHVwX3J0X25ldHdvcmtpbmcoKVxuJiM0Mzt7XG4mIzQzO1x0bG9jYWwgaWQ9XCYjMzQ7JDFcJiMzNDtcbiYjNDM7XHRsb2NhbCBuc25hbWVcbiYjNDM7XG4mIzQzO1x0bnNuYW1lPVwmIzM0OyQoZ2V0X3J0X25zbmFtZSBcJiMzNDske2lkfVwmIzM0OylcJiMzNDtcbiYjNDM7XG4mIzQzO1x0aXAgbGluayBzZXQgXCYjMzQ7dmV0aC1ydC0ke2lkfVwmIzM0OyBuZXRucyBcJiMzNDske25zbmFtZX1cJiMzNDtcbiYjNDM7XHRpcCAtbmV0bnMgXCYjMzQ7JHtuc25hbWV9XCYjMzQ7IGxpbmsgc2V0IFwmIzM0O3ZldGgtcnQtJHtpZH1cJiMzNDsgbmFtZSB2ZXRoMFxuJiM0MztcbiYjNDM7XHRpcCBuZXRucyBleGVjIFwmIzM0OyR7bnNuYW1lfVwmIzM0OyBzeXNjdGwgLXdxIG5ldC5pcHY2LmNvbmYuYWxsLmFjY2VwdF9kYWQ9MFxuJiM0MztcdGlwIG5ldG5zIGV4ZWMgXCYjMzQ7JHtuc25hbWV9XCYjMzQ7IHN5c2N0bCAtd3EgbmV0LmlwdjYuY29uZi5kZWZhdWx0LmFjY2VwdF9kYWQ9MFxuJiM0MztcbiYjNDM7XHRpcCAtbmV0bnMgXCYjMzQ7JHtuc25hbWV9XCYjMzQ7IGFkZHIgYWRkIFwmIzM0OyR7SVB2Nl9SVF9ORVRXT1JLfTo6JHtpZH0vNjRcJiMzNDsgZGV2IHZldGgwIG5vZGFkXG4mIzQzO1x0aXAgLW5ldG5zIFwmIzM0OyR7bnNuYW1lfVwmIzM0OyBsaW5rIHNldCB2ZXRoMCB1cFxuJiM0MztcbiYjNDM7XHRpcCBuZXRucyBleGVjIFwmIzM0OyR7bnNuYW1lfVwmIzM0OyBzeXNjdGwgLXdxIG5ldC5pcHY0LmlwX2ZvcndhcmQ9MVxuJiM0MztcdGlwIG5ldG5zIGV4ZWMgXCYjMzQ7JHtuc25hbWV9XCYjMzQ7IHN5c2N0bCAtd3EgbmV0LmlwdjYuY29uZi5hbGwuZm9yd2FyZGluZz0xXG4mIzQzO31cbiYjNDM7XG4mIzQzOyMgU2V0dXAgYSBob3N0IG5hbWVzcGFjZSBhbmQgYXR0YWNoIGl0IHRvIGl0cyBnYXRld2F5XG4mIzQzO3NldHVwX2hzKClcbiYjNDM7e1xuJiM0MztcdGxvY2FsIGhpZD1cJiMzNDskMVwmIzM0O1xuJiM0MztcdGxvY2FsIHJpZD1cJiMzNDskMlwmIzM0O1xuJiM0MztcdGxvY2FsIHRpZD1cJiMzNDskM1wmIzM0O1xuJiM0MztcdGxvY2FsIHJ0dmV0aD1cJiMzNDt2ZXRoLXQke3RpZH1cJiMzNDtcbiYjNDM7XHRsb2NhbCBoc25hbWVcbiYjNDM7XHRsb2NhbCBydG5hbWVcbiYjNDM7XG4mIzQzO1x0aHNuYW1lPVwmIzM0OyQoZ2V0X2hzX25zbmFtZSBcJiMzNDske3RpZH1cJiMzNDsgXCYjMzQ7JHtoaWR9XCYjMzQ7KVwmIzM0O1xuJiM0MztcdHJ0bmFtZT1cJiMzNDskKGdldF9ydF9uc25hbWUgXCYjMzQ7JHtyaWR9XCYjMzQ7KVwmIzM0O1xuJiM0MztcbiYjNDM7XHRpcCBuZXRucyBleGVjIFwmIzM0OyR7aHNuYW1lfVwmIzM0OyBzeXNjdGwgLXdxIG5ldC5pcHY2LmNvbmYuYWxsLmFjY2VwdF9kYWQ9MFxuJiM0MztcdGlwIG5ldG5zIGV4ZWMgXCYjMzQ7JHtoc25hbWV9XCYjMzQ7IHN5c2N0bCAtd3EgbmV0LmlwdjYuY29uZi5kZWZhdWx0LmFjY2VwdF9kYWQ9MFxuJiM0MztcbiYjNDM7XHRpcCAtbmV0bnMgXCYjMzQ7JHtoc25hbWV9XCYjMzQ7IGxpbmsgYWRkIHZldGgwIHR5cGUgdmV0aCBwZWVyIG5hbWUgXCYjMzQ7JHtydHZldGh9XCYjMzQ7XG4mIzQzO1x0aXAgLW5ldG5zIFwmIzM0OyR7aHNuYW1lfVwmIzM0OyBsaW5rIHNldCBcJiMzNDske3J0dmV0aH1cJiMzNDsgbmV0bnMgXCYjMzQ7JHtydG5hbWV9XCYjMzQ7XG4mIzQzO1xuJiM0MztcdGlwIC1uZXRucyBcJiMzNDske2hzbmFtZX1cJiMzNDsgYWRkciBhZGQgXFxcbiYjNDM7XHRcdFwmIzM0OyR7SVB2Nl9IU19ORVRXT1JLfTo6JHtoaWR9LzY0XCYjMzQ7IGRldiB2ZXRoMCBub2RhZFxuJiM0MztcdGlwIC1uZXRucyBcJiMzNDske2hzbmFtZX1cJiMzNDsgYWRkciBhZGQgXFxcbiYjNDM7XHRcdFwmIzM0OyR7SVB2NF9IU19ORVRXT1JLfS4ke2hpZH0vMjRcJiMzNDsgZGV2IHZldGgwXG4mIzQzO1xuJiM0MztcdGlwIC1uZXRucyBcJiMzNDske2hzbmFtZX1cJiMzNDsgbGluayBzZXQgdmV0aDAgdXBcbiYjNDM7fVxuJiM0MztcbiYjNDM7IyBTZXR1cCB0aGUgcGVyLXRlbmFudCBWUkYgb24gYSByb3V0ZXIgKGdhdGV3YXksIGxvb3BiYWNrLCBibGFja2hvbGUpXG4mIzQzO3NldHVwX3J0KClcbiYjNDM7e1xuJiM0MztcdGxvY2FsIHJpZD1cJiMzNDskMVwmIzM0O1xuJiM0MztcdGxvY2FsIHRpZD1cJiMzNDskMlwmIzM0O1xuJiM0MztcdGxvY2FsIHJ0dmV0aD1cJiMzNDt2ZXRoLXQke3RpZH1cJiMzNDtcbiYjNDM7XHRsb2NhbCBybG9fZGV2PVwmIzM0O3Jsby0ke3RpZH1cJiMzNDtcbiYjNDM7XHRsb2NhbCBydG5hbWVcbiYjNDM7XHRsb2NhbCBnd19hZGRyX3Y2XG4mIzQzO1x0bG9jYWwgZ3dfYWRkcl92NFxuJiM0MztcbiYjNDM7XHRydG5hbWU9XCYjMzQ7JChnZXRfcnRfbnNuYW1lIFwmIzM0OyR7cmlkfVwmIzM0OylcJiMzNDtcbiYjNDM7XG4mIzQzO1x0Z3dfYWRkcl92Nj1cJiMzNDske0lQdjZfSFNfTkVUV09SS306OiQoZ2V0X3Jsb19ob3N0aWQgXCYjMzQ7JHtyaWR9XCYjMzQ7IFwmIzM0OyR7dGlkfVwmIzM0OylcJiMzNDtcbiYjNDM7XHRnd19hZGRyX3Y0PVwmIzM0OyR7SVB2NF9IU19ORVRXT1JLfS4kKGdldF9ybG9faG9zdGlkIFwmIzM0OyR7cmlkfVwmIzM0OyBcJiMzNDske3RpZH1cJiMzNDspXCYjMzQ7XG4mIzQzO1xuJiM0MztcdGlwIC1uZXRucyBcJiMzNDske3J0bmFtZX1cJiMzNDsgbGluayBhZGQgXCYjMzQ7dnJmLSR7dGlkfVwmIzM0OyB0eXBlIHZyZiB0YWJsZSBcJiMzNDske3RpZH1cJiMzNDtcbiYjNDM7XHRpcCAtbmV0bnMgXCYjMzQ7JHtydG5hbWV9XCYjMzQ7IGxpbmsgc2V0IFwmIzM0O3ZyZi0ke3RpZH1cJiMzNDsgdXBcbiYjNDM7XG4mIzQzO1x0aXAgLW5ldG5zIFwmIzM0OyR7cnRuYW1lfVwmIzM0OyBsaW5rIHNldCBcJiMzNDske3J0dmV0aH1cJiMzNDsgbWFzdGVyIFwmIzM0O3ZyZi0ke3RpZH1cJiMzNDtcbiYjNDM7XG4mIzQzO1x0aXAgLW5ldG5zIFwmIzM0OyR7cnRuYW1lfVwmIzM0OyBhZGRyIGFkZCBcXFxuJiM0MztcdFx0XCYjMzQ7JHtJUHY2X0hTX05FVFdPUkt9OjoyNTQvNjRcJiMzNDsgZGV2IFwmIzM0OyR7cnR2ZXRofVwmIzM0OyBub2RhZFxuJiM0MztcdGlwIC1uZXRucyBcJiMzNDske3J0bmFtZX1cJiMzNDsgYWRkciBhZGQgXFxcbiYjNDM7XHRcdFwmIzM0OyR7SVB2NF9IU19ORVRXT1JLfS4yNTQvMjRcJiMzNDsgZGV2IFwmIzM0OyR7cnR2ZXRofVwmIzM0O1xuJiM0MztcbiYjNDM7XHRpcCAtbmV0bnMgXCYjMzQ7JHtydG5hbWV9XCYjMzQ7IGxpbmsgc2V0IFwmIzM0OyR7cnR2ZXRofVwmIzM0OyB1cFxuJiM0MztcbiYjNDM7XHRpcCBuZXRucyBleGVjIFwmIzM0OyR7cnRuYW1lfVwmIzM0OyBcXFxuJiM0MztcdFx0c3lzY3RsIC13cSBcJiMzNDtuZXQuaXB2Ni5jb25mLiR7cnR2ZXRofS5wcm94eV9uZHA9MVwmIzM0O1xuJiM0MztcdGlwIG5ldG5zIGV4ZWMgXCYjMzQ7JHtydG5hbWV9XCYjMzQ7IFxcXG4mIzQzO1x0XHRzeXNjdGwgLXdxIFwmIzM0O25ldC5pcHY0LmNvbmYuJHtydHZldGh9LnByb3h5X2FycD0xXCYjMzQ7XG4mIzQzO1xuJiM0MztcdGlwIG5ldG5zIGV4ZWMgXCYjMzQ7JHtydG5hbWV9XCYjMzQ7IHNoIC1jIFwmIzM0O2VjaG8gMSBcdTAwM2UgL3Byb2Mvc3lzL25ldC92cmYvc3RyaWN0X21vZGVcJiMzNDtcbiYjNDM7XG4mIzQzO1x0IyByb3V0ZXIgbG9vcGJhY2sgaW50ZXJmYWNlIGZvciBsb2NhbGx5IG9yaWdpbmF0ZWQgdHJhZmZpY1xuJiM0MztcdGlwIC1uZXRucyBcJiMzNDske3J0bmFtZX1cJiMzNDsgbGluayBhZGQgXCYjMzQ7JHtybG9fZGV2fVwmIzM0OyB0eXBlIGR1bW15XG4mIzQzO1x0aXAgLW5ldG5zIFwmIzM0OyR7cnRuYW1lfVwmIzM0OyBsaW5rIHNldCBcJiMzNDske3Jsb19kZXZ9XCYjMzQ7IG1hc3RlciBcJiMzNDt2cmYtJHt0aWR9XCYjMzQ7XG4mIzQzO1xuJiM0MztcdGlwIC1uZXRucyBcJiMzNDske3J0bmFtZX1cJiMzNDsgYWRkciBhZGQgXCYjMzQ7JHtnd19hZGRyX3Y2fS8xMjhcJiMzNDsgXFxcbiYjNDM7XHRcdGRldiBcJiMzNDske3Jsb19kZXZ9XCYjMzQ7IG5vZGFkXG4mIzQzO1x0aXAgLW5ldG5zIFwmIzM0OyR7cnRuYW1lfVwmIzM0OyBhZGRyIGFkZCBcJiMzNDske2d3X2FkZHJfdjR9LzMyXCYjMzQ7IFxcXG4mIzQzO1x0XHRkZXYgXCYjMzQ7JHtybG9fZGV2fVwmIzM0O1xuJiM0MztcbiYjNDM7XHRpcCAtbmV0bnMgXCYjMzQ7JHtydG5hbWV9XCYjMzQ7IGxpbmsgc2V0IFwmIzM0OyR7cmxvX2Rldn1cJiMzNDsgdXBcbiYjNDM7XG4mIzQzO1x0IyBkZWZhdWx0IGJsYWNraG9sZSByb3V0ZXMgaW4gdGhlIFZSRjogYW55IHRyYWZmaWMgdGhhdCBkb2VzIG5vdCBtYXRjaFxuJiM0MztcdCMgYSBzcGVjaWZpYyByb3V0ZSBpcyBkcm9wcGVkLiBXaXRob3V0IHRoZSBcJiMzNDtsb29rdXBcJiMzNDsgYXR0cmlidXRlIG9uIHRoZVxuJiM0MztcdCMgZW5jYXAgcm91dGUsIHRoZSByb3V0ZSBmb3IgdGhlIGZpcnN0IFNJRCBjYW5ub3QgYmUgZm91bmQgZnJvbSB3aXRoaW5cbiYjNDM7XHQjIHRoZSBWUkYuXG4mIzQzO1x0aXAgLW5ldG5zIFwmIzM0OyR7cnRuYW1lfVwmIzM0OyAtNiByb3V0ZSBhZGQgYmxhY2tob2xlIGRlZmF1bHQgbWV0cmljIDQyNzgxOTgyNzIgXFxcbiYjNDM7XHRcdHZyZiBcJiMzNDt2cmYtJHt0aWR9XCYjMzQ7XG4mIzQzO1x0aXAgLW5ldG5zIFwmIzM0OyR7cnRuYW1lfVwmIzM0OyAtNCByb3V0ZSBhZGQgYmxhY2tob2xlIGRlZmF1bHQgbWV0cmljIDQyNzgxOTgyNzIgXFxcbiYjNDM7XHRcdHZyZiBcJiMzNDt2cmYtJHt0aWR9XCYjMzQ7XG4mIzQzO31cbiYjNDM7XG4mIzQzOyMgQ29uZmlndXJlIGEgb25lLXdheSBWUE4gcGF0aCB0b3dhcmRzIGhzZHN0IChvbiBydGRzdCkgZm9yIHRlbmFudCB0aWQuXG4mIzQzOyMgVGhlIGVuY2FwIHNpZGUgaXMgc2V0IHVwIG9uIHJ0c3JjIGFuZCB0aGUgZGVjYXAgc2lkZSBvbiBydGRzdC5cbiYjNDM7IyBhcmdzOlxuJiM0MzsjICAkMSAtIHJvdXRlciBpZCB3aGVyZSB0aGUgZW5jYXAgc2lkZSBpcyBzZXQgdXBcbiYjNDM7IyAgJDIgLSBob3N0IGlkIG9mIHRoZSBkZXN0aW5hdGlvbiBob3N0XG4mIzQzOyMgICQzIC0gcm91dGVyIGlkIG9mIHRoZSBkZXN0aW5hdGlvbiByb3V0ZXIgKGNvbm5lY3RlZCB0byB0aGUgZGVzdGluYXRpb24gaG9zdClcbiYjNDM7IyAgJDQgLSB0ZW5hbnQgaWRcbiYjNDM7c2V0dXBfdnBuX2NvbmZpZygpXG4mIzQzO3tcbiYjNDM7XHRsb2NhbCBydHNyYz1cJiMzNDskMVwmIzM0O1xuJiM0MztcdGxvY2FsIGhzZHN0PVwmIzM0OyQyXCYjMzQ7XG4mIzQzO1x0bG9jYWwgcnRkc3Q9XCYjMzQ7JDNcJiMzNDtcbiYjNDM7XHRsb2NhbCB0aWQ9XCYjMzQ7JDRcJiMzNDtcbiYjNDM7XHRsb2NhbCBydHZldGg9XCYjMzQ7dmV0aC10JHt0aWR9XCYjMzQ7XG4mIzQzO1x0bG9jYWwgcnRzcmNfbmFtZVxuJiM0MztcdGxvY2FsIHJ0ZHN0X25hbWVcbiYjNDM7XHRsb2NhbCB2cG5fc2lkXG4mIzQzO1xuJiM0MztcdHJ0c3JjX25hbWU9XCYjMzQ7JChnZXRfcnRfbnNuYW1lIFwmIzM0OyR7cnRzcmN9XCYjMzQ7KVwmIzM0O1xuJiM0MztcdHJ0ZHN0X25hbWU9XCYjMzQ7JChnZXRfcnRfbnNuYW1lIFwmIzM0OyR7cnRkc3R9XCYjMzQ7KVwmIzM0O1xuJiM0MztcdHZwbl9zaWQ9XCYjMzQ7JChidWlsZF92cG5fc2lkIFwmIzM0OyR7cnRzcmN9XCYjMzQ7IFwmIzM0OyR7cnRkc3R9XCYjMzQ7IFwmIzM0OyR7dGlkfVwmIzM0OylcJiMzNDtcbiYjNDM7XG4mIzQzO1x0aXAgLW5ldG5zIFwmIzM0OyR7cnRzcmNfbmFtZX1cJiMzNDsgLTYgbmVpZ2ggYWRkIHByb3h5IFxcXG4mIzQzO1x0XHRcJiMzNDske0lQdjZfSFNfTkVUV09SS306OiR7aHNkc3R9XCYjMzQ7IGRldiBcJiMzNDske3J0dmV0aH1cJiMzNDtcbiYjNDM7XHRzZXRfaG9zdF9lbmNhcF9yb3V0ZSBcJiMzNDske3J0c3JjfVwmIzM0OyBcJiMzNDske2hzZHN0fVwmIzM0OyBcJiMzNDske3Zwbl9zaWR9XCYjMzQ7IFwmIzM0OyR7dGlkfVwmIzM0O1xuJiM0MztcbiYjNDM7XHRpcCAtbmV0bnMgXCYjMzQ7JHtydHNyY19uYW1lfVwmIzM0OyAtNiByb3V0ZSBhZGQgXCYjMzQ7JHt2cG5fc2lkfS8xMjhcJiMzNDsgXFxcbiYjNDM7XHRcdHRhYmxlIFwmIzM0OyR7VU5ERVJMQVlfVEFCTEVfSUR9XCYjMzQ7IFxcXG4mIzQzO1x0XHR2aWEgXCYjMzQ7ZmQwMDo6JHtydGRzdH1cJiMzNDsgZGV2IHZldGgwXG4mIzQzO1xuJiM0MztcdCMgc2V0IHRoZSBkZWNhcCByb3V0ZSBmb3IgZGVjYXBzdWxhdGluZyBwYWNrZXRzIGFycml2aW5nIGZyb20gcnRzcmNcbiYjNDM7XHQjIGFuZCBkZXN0aW5lZCB0byBoc2RzdFxuJiM0MztcdGlwIC1uZXRucyBcJiMzNDske3J0ZHN0X25hbWV9XCYjMzQ7IC02IHJvdXRlIGFkZCBcJiMzNDske3Zwbl9zaWR9LzEyOFwmIzM0OyBcXFxuJiM0MztcdFx0dGFibGUgXCYjMzQ7JHtMT0NBTFNJRF9UQUJMRV9JRH1cJiMzNDsgXFxcbiYjNDM7XHRcdGVuY2FwIHNlZzZsb2NhbCBhY3Rpb24gRW5kLkRUNDYgXFxcbiYjNDM7XHRcdHZyZnRhYmxlIFwmIzM0OyR7dGlkfVwmIzM0OyBkZXYgXCYjMzQ7dnJmLSR7dGlkfVwmIzM0O1xuJiM0MztcbiYjNDM7XHQjIGFsbCBTSURzIGZvciBWUE5zIHN0YXJ0IHdpdGggYSBjb21tb24gbG9jYXRvciB3aGljaCBpcyBmYzAwOjovMTYuXG4mIzQzO1x0IyBSb3V0ZXMgZm9yIGhhbmRsaW5nIHRoZSBTUnY2IEVuZC5EVCogYmVoYXZpb3IgaW5zdGFuY2VzIGFyZSBncm91cGVkXG4mIzQzO1x0IyB0b2dldGhlciBpbiB0aGUgJiMzOTtsb2NhbHNpZCYjMzk7IHRhYmxlLlxuJiM0MztcdCNcbiYjNDM7XHQjIE5PVEU6IGFkZGVkIG9ubHkgb25jZVxuJiM0MztcdGlmICEgaXAgLW5ldG5zIFwmIzM0OyR7cnRkc3RfbmFtZX1cJiMzNDsgLTYgcnVsZSBzaG93IHwgXFxcbiYjNDM7XHQgICAgZ3JlcCAtcSBcJiMzNDt0byAke1ZQTl9MT0NBVE9SX1NFUlZJQ0V9OjovMTYgbG9va3VwICR7TE9DQUxTSURfVEFCTEVfSUR9XCYjMzQ7OyB0aGVuXG4mIzQzO1x0XHRpcCAtbmV0bnMgXCYjMzQ7JHtydGRzdF9uYW1lfVwmIzM0OyAtNiBydWxlIGFkZCBcXFxuJiM0MztcdFx0XHR0byBcJiMzNDske1ZQTl9MT0NBVE9SX1NFUlZJQ0V9OjovMTZcJiMzNDsgXFxcbiYjNDM7XHRcdFx0bG9va3VwIFwmIzM0OyR7TE9DQUxTSURfVEFCTEVfSUR9XCYjMzQ7IHByaW8gOTk5XG4mIzQzO1x0ZmlcbiYjNDM7fVxuJiM0MztcbiYjNDM7IyBDb25maWd1cmUgcnRzcmMgdG8gcmVhY2ggcnRkc3QmIzM5O3MgbG9vcGJhY2sgYWRkcmVzcyB0aHJvdWdoIHRoZSBWUE4uXG4mIzQzOyMgYXJnczpcbiYjNDM7IyAgJDEgLSByb3V0ZXIgaWQgd2hlcmUgdGhlIGVuY2FwIHJvdXRlIGlzIGluc3RhbGxlZFxuJiM0MzsjICAkMiAtIHJvdXRlciBpZCB3aG9zZSBsb29wYmFjayBpcyB0aGUgZGVzdGluYXRpb25cbiYjNDM7IyAgJDMgLSB0ZW5hbnQgaWRcbiYjNDM7c2V0dXBfdnBuX2d3X2VuY2FwKClcbiYjNDM7e1xuJiM0MztcdGxvY2FsIHJ0c3JjPVwmIzM0OyQxXCYjMzQ7XG4mIzQzO1x0bG9jYWwgcnRkc3Q9XCYjMzQ7JDJcJiMzNDtcbiYjNDM7XHRsb2NhbCB0aWQ9XCYjMzQ7JDNcJiMzNDtcbiYjNDM7XHRsb2NhbCBzaWRcbiYjNDM7XG4mIzQzO1x0c2lkPVwmIzM0OyQoYnVpbGRfdnBuX3NpZCBcJiMzNDske3J0c3JjfVwmIzM0OyBcJiMzNDske3J0ZHN0fVwmIzM0OyBcJiMzNDske3RpZH1cJiMzNDspXCYjMzQ7XG4mIzQzO1xuJiM0MztcdHNldF9nd19lbmNhcF9yb3V0ZSBcJiMzNDske3J0c3JjfVwmIzM0OyBcJiMzNDske3J0ZHN0fVwmIzM0OyBcJiMzNDske3NpZH1cJiMzNDsgXCYjMzQ7JHt0aWR9XCYjMzQ7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3NldHVwKClcbiYjNDM7e1xuJiM0MztcdGlwIGxpbmsgYWRkIHZldGgtcnQtMSB0eXBlIHZldGggcGVlciBuYW1lIHZldGgtcnQtMlxuJiM0MztcdHNldHVwX25zIHJ0XzEgcnRfMlxuJiM0MztcdHNldHVwX3J0X25ldHdvcmtpbmcgMVxuJiM0MztcdHNldHVwX3J0X25ldHdvcmtpbmcgMlxuJiM0MztcbiYjNDM7XHQjIHNldHVwIHR3byBob3N0cyBmb3IgdGhlIHRlbmFudCAxMDAuXG4mIzQzO1x0IyAgLSBob3N0IGhzLXQxMDAtMSBpcyBkaXJlY3RseSBjb25uZWN0ZWQgdG8gdGhlIHJvdXRlciBydC0xO1xuJiM0MztcdCMgIC0gaG9zdCBocy10MTAwLTIgaXMgZGlyZWN0bHkgY29ubmVjdGVkIHRvIHRoZSByb3V0ZXIgcnQtMi5cbiYjNDM7XHRzZXR1cF9ucyBoc190MTAwXzEgaHNfdDEwMF8yXG4mIzQzO1x0c2V0dXBfaHMgMSAxIDEwMFxuJiM0MztcdHNldHVwX2hzIDIgMiAxMDBcbiYjNDM7XG4mIzQzO1x0IyBzZXR1cCB0d28gaG9zdHMgZm9yIHRoZSB0ZW5hbnQgMjAwLlxuJiM0MztcdCMgIC0gaG9zdCBocy10MjAwLTMgaXMgZGlyZWN0bHkgY29ubmVjdGVkIHRvIHRoZSByb3V0ZXIgcnQtMTtcbiYjNDM7XHQjICAtIGhvc3QgaHMtdDIwMC00IGlzIGRpcmVjdGx5IGNvbm5lY3RlZCB0byB0aGUgcm91dGVyIHJ0LTIuXG4mIzQzO1x0c2V0dXBfbnMgaHNfdDIwMF8zIGhzX3QyMDBfNFxuJiM0MztcdHNldHVwX2hzIDMgMSAyMDBcbiYjNDM7XHRzZXR1cF9ocyA0IDIgMjAwXG4mIzQzO1xuJiM0MztcdCMgY29uZmlndXJlIGVhY2ggcm91dGVyIGZvciBlYWNoIHRlbmFudDogVlJGLCBibGFja2hvbGUgcm91dGVzLFxuJiM0MztcdCMgcm91dGVyIGxvb3BiYWNrIGludGVyZmFjZVxuJiM0MztcdHNldHVwX3J0IDEgMTAwXG4mIzQzO1x0c2V0dXBfcnQgMiAxMDBcbiYjNDM7XHRzZXR1cF9ydCAxIDIwMFxuJiM0MztcdHNldHVwX3J0IDIgMjAwXG4mIzQzO1xuJiM0MztcdCMgc2V0dXAgdGhlIEwzIFZQTiB3aGljaCBjb25uZWN0cyB0aGUgaG9zdCBocy10MTAwLTEgYW5kIGhvc3QgaHMtdDEwMC0yXG4mIzQzO1x0IyB3aXRoaW4gdGhlIHNhbWUgdGVuYW50IDEwMC5cbiYjNDM7XHRzZXR1cF92cG5fY29uZmlnIDEgMiAyIDEwMFxuJiM0MztcdHNldHVwX3Zwbl9jb25maWcgMiAxIDEgMTAwXG4mIzQzO1xuJiM0MztcdCMgc2V0dXAgdGhlIEwzIFZQTiB3aGljaCBjb25uZWN0cyB0aGUgaG9zdCBocy10MjAwLTMgYW5kIGhvc3QgaHMtdDIwMC00XG4mIzQzO1x0IyB3aXRoaW4gdGhlIHNhbWUgdGVuYW50IDIwMC5cbiYjNDM7XHRzZXR1cF92cG5fY29uZmlnIDEgNCAyIDIwMFxuJiM0MztcdHNldHVwX3Zwbl9jb25maWcgMiAzIDEgMjAwXG4mIzQzO1xuJiM0MztcdCMgYWxsb3cgZWFjaCByb3V0ZXIgdG8gcmVhY2ggdGhlIG90aGVyJiMzOTtzIGxvb3BiYWNrIHRocm91Z2ggdGhlIFZQTlxuJiM0MztcdHNldHVwX3Zwbl9nd19lbmNhcCAyIDEgMTAwXG4mIzQzO1x0c2V0dXBfdnBuX2d3X2VuY2FwIDEgMiAxMDBcbiYjNDM7XHRzZXR1cF92cG5fZ3dfZW5jYXAgMiAxIDIwMFxuJiM0MztcdHNldHVwX3Zwbl9nd19lbmNhcCAxIDIgMjAwXG4mIzQzO1xuJiM0MztcdCMgdGVzdGluZyBlbnZpcm9ubWVudCB3YXMgc2V0IHVwIHN1Y2Nlc3NmdWxseVxuJiM0MztcdFNFVFVQX0VSUj0wXG4mIzQzO31cbiYjNDM7XG4mIzQzO2NoZWNrX3J0X2Nvbm5lY3Rpdml0eSgpXG4mIzQzO3tcbiYjNDM7XHRsb2NhbCBydHNyYz1cJiMzNDskMVwmIzM0O1xuJiM0MztcdGxvY2FsIHJ0ZHN0PVwmIzM0OyQyXCYjMzQ7XG4mIzQzO1x0bG9jYWwgbnNuYW1lXG4mIzQzO1xuJiM0MztcdG5zbmFtZT1cJiMzNDskKGdldF9ydF9uc25hbWUgXCYjMzQ7JHtydHNyY31cJiMzNDspXCYjMzQ7XG4mIzQzO1xuJiM0MztcdGlwIG5ldG5zIGV4ZWMgXCYjMzQ7JHtuc25hbWV9XCYjMzQ7IHBpbmcgLWMgMSAtVyAxIFwmIzM0OyR7SVB2Nl9SVF9ORVRXT1JLfTo6JHtydGRzdH1cJiMzNDsgXFxcbiYjNDM7XHRcdFx1MDAzZS9kZXYvbnVsbCAyXHUwMDNlXHUwMDI2MVxuJiM0Mzt9XG4mIzQzO1xuJiM0MztjaGVja19hbmRfbG9nX3J0X2Nvbm5lY3Rpdml0eSgpXG4mIzQzO3tcbiYjNDM7XHRsb2NhbCBydHNyYz1cJiMzNDskMVwmIzM0O1xuJiM0MztcdGxvY2FsIHJ0ZHN0PVwmIzM0OyQyXCYjMzQ7XG4mIzQzO1xuJiM0MztcdGNoZWNrX3J0X2Nvbm5lY3Rpdml0eSBcJiMzNDske3J0c3JjfVwmIzM0OyBcJiMzNDske3J0ZHN0fVwmIzM0O1xuJiM0MztcdGxvZ190ZXN0ICQ/IDAgXCYjMzQ7Um91dGVycyBjb25uZWN0aXZpdHk6IHJ0LSR7cnRzcmN9IC1cdTAwM2UgcnQtJHtydGRzdH1cJiMzNDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7Y2hlY2tfaHNfaXB2Nl9jb25uZWN0aXZpdHkoKVxuJiM0Mzt7XG4mIzQzO1x0bG9jYWwgaHNzcmM9XCYjMzQ7JDFcJiMzNDtcbiYjNDM7XHRsb2NhbCBoc2RzdD1cJiMzNDskMlwmIzM0O1xuJiM0MztcdGxvY2FsIHRpZD1cJiMzNDskM1wmIzM0O1xuJiM0MztcdGxvY2FsIG5zbmFtZVxuJiM0MztcbiYjNDM7XHRuc25hbWU9XCYjMzQ7JChnZXRfaHNfbnNuYW1lIFwmIzM0OyR7dGlkfVwmIzM0OyBcJiMzNDske2hzc3JjfVwmIzM0OylcJiMzNDtcbiYjNDM7XG4mIzQzO1x0aXAgbmV0bnMgZXhlYyBcJiMzNDske25zbmFtZX1cJiMzNDsgcGluZyAtYyAxIC1XIFwmIzM0OyR7UElOR19USU1FT1VUX1NFQ31cJiMzNDsgXFxcbiYjNDM7XHRcdFwmIzM0OyR7SVB2Nl9IU19ORVRXT1JLfTo6JHtoc2RzdH1cJiMzNDsgXHUwMDNlL2Rldi9udWxsIDJcdTAwM2VcdTAwMjYxXG4mIzQzO31cbiYjNDM7XG4mIzQzO2NoZWNrX2hzX2lwdjRfY29ubmVjdGl2aXR5KClcbiYjNDM7e1xuJiM0MztcdGxvY2FsIGhzc3JjPVwmIzM0OyQxXCYjMzQ7XG4mIzQzO1x0bG9jYWwgaHNkc3Q9XCYjMzQ7JDJcJiMzNDtcbiYjNDM7XHRsb2NhbCB0aWQ9XCYjMzQ7JDNcJiMzNDtcbiYjNDM7XHRsb2NhbCBuc25hbWVcbiYjNDM7XG4mIzQzO1x0bnNuYW1lPVwmIzM0OyQoZ2V0X2hzX25zbmFtZSBcJiMzNDske3RpZH1cJiMzNDsgXCYjMzQ7JHtoc3NyY31cJiMzNDspXCYjMzQ7XG4mIzQzO1xuJiM0MztcdGlwIG5ldG5zIGV4ZWMgXCYjMzQ7JHtuc25hbWV9XCYjMzQ7IHBpbmcgLWMgMSAtVyBcJiMzNDske1BJTkdfVElNRU9VVF9TRUN9XCYjMzQ7IFxcXG4mIzQzO1x0XHRcJiMzNDske0lQdjRfSFNfTkVUV09SS30uJHtoc2RzdH1cJiMzNDsgXHUwMDNlL2Rldi9udWxsIDJcdTAwM2VcdTAwMjYxXG4mIzQzO31cbiYjNDM7XG4mIzQzO2NoZWNrX2FuZF9sb2dfaHNfY29ubmVjdGl2aXR5KClcbiYjNDM7e1xuJiM0MztcdGxvY2FsIGhzc3JjPVwmIzM0OyQxXCYjMzQ7XG4mIzQzO1x0bG9jYWwgaHNkc3Q9XCYjMzQ7JDJcJiMzNDtcbiYjNDM7XHRsb2NhbCB0aWQ9XCYjMzQ7JDNcJiMzNDtcbiYjNDM7XG4mIzQzO1x0Y2hlY2tfaHNfaXB2Nl9jb25uZWN0aXZpdHkgXCYjMzQ7JHtoc3NyY31cJiMzNDsgXCYjMzQ7JHtoc2RzdH1cJiMzNDsgXCYjMzQ7JHt0aWR9XCYjMzQ7XG4mIzQzO1x0bG9nX3Rlc3QgJD8gMCBcJiMzNDtJUHY2IGNvbm5lY3Rpdml0eTogaHMtdCR7dGlkfS0ke2hzc3JjfSAtXHUwMDNlIGhzLXQke3RpZH0tJHtoc2RzdH0gKHRlbmFudCAke3RpZH0pXCYjMzQ7XG4mIzQzO1xuJiM0MztcdGNoZWNrX2hzX2lwdjRfY29ubmVjdGl2aXR5IFwmIzM0OyR7aHNzcmN9XCYjMzQ7IFwmIzM0OyR7aHNkc3R9XCYjMzQ7IFwmIzM0OyR7dGlkfVwmIzM0O1xuJiM0MztcdGxvZ190ZXN0ICQ/IDAgXCYjMzQ7SVB2NCBjb25uZWN0aXZpdHk6IGhzLXQke3RpZH0tJHtoc3NyY30gLVx1MDAzZSBocy10JHt0aWR9LSR7aHNkc3R9ICh0ZW5hbnQgJHt0aWR9KVwmIzM0O1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztjaGVja19hbmRfbG9nX2hzX2lzb2xhdGlvbigpXG4mIzQzO3tcbiYjNDM7XHRsb2NhbCBoc3NyYz1cJiMzNDskMVwmIzM0O1xuJiM0MztcdGxvY2FsIHRpZHNyYz1cJiMzNDskMlwmIzM0O1xuJiM0MztcdGxvY2FsIGhzZHN0PVwmIzM0OyQzXCYjMzQ7XG4mIzQzO1x0bG9jYWwgdGlkZHN0PVwmIzM0OyQ0XCYjMzQ7XG4mIzQzO1xuJiM0MztcdGNoZWNrX2hzX2lwdjZfY29ubmVjdGl2aXR5IFwmIzM0OyR7aHNzcmN9XCYjMzQ7IFwmIzM0OyR7aHNkc3R9XCYjMzQ7IFwmIzM0OyR7dGlkc3JjfVwmIzM0O1xuJiM0MztcdGxvZ190ZXN0ICQ/IDEgXCYjMzQ7SVB2NiBpc29sYXRpb246IGhzLXQke3RpZHNyY30tJHtoc3NyY30gLVgtXHUwMDNlIGhzLXQke3RpZGRzdH0tJHtoc2RzdH1cJiMzNDtcbiYjNDM7XG4mIzQzO1x0Y2hlY2tfaHNfaXB2NF9jb25uZWN0aXZpdHkgXCYjMzQ7JHtoc3NyY31cJiMzNDsgXCYjMzQ7JHtoc2RzdH1cJiMzNDsgXCYjMzQ7JHt0aWRzcmN9XCYjMzQ7XG4mIzQzO1x0bG9nX3Rlc3QgJD8gMSBcJiMzNDtJUHY0IGlzb2xhdGlvbjogaHMtdCR7dGlkc3JjfS0ke2hzc3JjfSAtWC1cdTAwM2UgaHMtdCR7dGlkZHN0fS0ke2hzZHN0fVwmIzM0O1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztjaGVja19hbmRfbG9nX2hzMmd3X2Nvbm5lY3Rpdml0eSgpXG4mIzQzO3tcbiYjNDM7XHRsb2NhbCBoc3NyYz1cJiMzNDskMVwmIzM0O1xuJiM0MztcdGxvY2FsIHRpZD1cJiMzNDskMlwmIzM0O1xuJiM0MztcbiYjNDM7XHRjaGVja19oc19pcHY2X2Nvbm5lY3Rpdml0eSBcJiMzNDske2hzc3JjfVwmIzM0OyAyNTQgXCYjMzQ7JHt0aWR9XCYjMzQ7XG4mIzQzO1x0bG9nX3Rlc3QgJD8gMCBcJiMzNDtJUHY2IGNvbm5lY3Rpdml0eTogaHMtdCR7dGlkfS0ke2hzc3JjfSAtXHUwMDNlIGd3ICh0ZW5hbnQgJHt0aWR9KVwmIzM0O1xuJiM0MztcbiYjNDM7XHRjaGVja19oc19pcHY0X2Nvbm5lY3Rpdml0eSBcJiMzNDske2hzc3JjfVwmIzM0OyAyNTQgXCYjMzQ7JHt0aWR9XCYjMzQ7XG4mIzQzO1x0bG9nX3Rlc3QgJD8gMCBcJiMzNDtJUHY0IGNvbm5lY3Rpdml0eTogaHMtdCR7dGlkfS0ke2hzc3JjfSAtXHUwMDNlIGd3ICh0ZW5hbnQgJHt0aWR9KVwmIzM0O1xuJiM0Mzt9XG4mIzQzO1xuJiM0Mztyb3V0ZXJfdGVzdHMoKVxuJiM0Mzt7XG4mIzQzO1x0bG9nX3NlY3Rpb24gXCYjMzQ7SVB2NiByb3V0ZXJzIGNvbm5lY3Rpdml0eSB0ZXN0XCYjMzQ7XG4mIzQzO1xuJiM0MztcdGNoZWNrX2FuZF9sb2dfcnRfY29ubmVjdGl2aXR5IDEgMlxuJiM0MztcdGNoZWNrX2FuZF9sb2dfcnRfY29ubmVjdGl2aXR5IDIgMVxuJiM0Mzt9XG4mIzQzO1xuJiM0Mztob3N0MmdhdGV3YXlfdGVzdHMoKVxuJiM0Mzt7XG4mIzQzO1x0bG9nX3NlY3Rpb24gXCYjMzQ7Q29ubmVjdGl2aXR5IHRlc3QgYW1vbmcgaG9zdHMgYW5kIGdhdGV3YXlcJiMzNDtcbiYjNDM7XG4mIzQzO1x0Y2hlY2tfYW5kX2xvZ19oczJnd19jb25uZWN0aXZpdHkgMSAxMDBcbiYjNDM7XHRjaGVja19hbmRfbG9nX2hzMmd3X2Nvbm5lY3Rpdml0eSAyIDEwMFxuJiM0MztcbiYjNDM7XHRjaGVja19hbmRfbG9nX2hzMmd3X2Nvbm5lY3Rpdml0eSAzIDIwMFxuJiM0MztcdGNoZWNrX2FuZF9sb2dfaHMyZ3dfY29ubmVjdGl2aXR5IDQgMjAwXG4mIzQzO31cbiYjNDM7XG4mIzQzO2hvc3RfdnBuX3Rlc3RzKClcbiYjNDM7e1xuJiM0MztcdGxvZ19zZWN0aW9uIFwmIzM0O1NSdjYgVlBOIGNvbm5lY3Rpdml0eSB0ZXN0IGFtb25nIGhvc3RzIGluIHRoZSBzYW1lIHRlbmFudFwmIzM0O1xuJiM0MztcbiYjNDM7XHRjaGVja19hbmRfbG9nX2hzX2Nvbm5lY3Rpdml0eSAxIDIgMTAwXG4mIzQzO1x0Y2hlY2tfYW5kX2xvZ19oc19jb25uZWN0aXZpdHkgMiAxIDEwMFxuJiM0MztcbiYjNDM7XHRjaGVja19hbmRfbG9nX2hzX2Nvbm5lY3Rpdml0eSAzIDQgMjAwXG4mIzQzO1x0Y2hlY2tfYW5kX2xvZ19oc19jb25uZWN0aXZpdHkgNCAzIDIwMFxuJiM0Mzt9XG4mIzQzO1xuJiM0Mztob3N0X3Zwbl9pc29sYXRpb25fdGVzdHMoKVxuJiM0Mzt7XG4mIzQzO1x0bG9jYWwgbDE9XCYjMzQ7MSAyXCYjMzQ7XG4mIzQzO1x0bG9jYWwgbDI9XCYjMzQ7MyA0XCYjMzQ7XG4mIzQzO1x0bG9jYWwgdDE9MTAwXG4mIzQzO1x0bG9jYWwgdDI9MjAwXG4mIzQzO1x0bG9jYWwgaVxuJiM0MztcdGxvY2FsIGpcbiYjNDM7XHRsb2NhbCB0bXBcbiYjNDM7XG4mIzQzO1x0bG9nX3NlY3Rpb24gXCYjMzQ7U1J2NiBWUE4gaXNvbGF0aW9uIHRlc3QgYW1vbmcgaG9zdHMgaW4gZGlmZmVyZW50IHRlbmFudHNcJiMzNDtcbiYjNDM7XG4mIzQzO1x0Zm9yIF8gaW4gMCAxOyBkb1xuJiM0MztcdFx0Zm9yIGkgaW4gJHtsMX07IGRvXG4mIzQzO1x0XHRcdGZvciBqIGluICR7bDJ9OyBkb1xuJiM0MztcdFx0XHRcdGNoZWNrX2FuZF9sb2dfaHNfaXNvbGF0aW9uIFwmIzM0OyR7aX1cJiMzNDsgXCYjMzQ7JHt0MX1cJiMzNDsgXCYjMzQ7JHtqfVwmIzM0OyBcJiMzNDske3QyfVwmIzM0O1xuJiM0MztcdFx0XHRkb25lXG4mIzQzO1x0XHRkb25lXG4mIzQzO1xuJiM0MztcdFx0IyBsZXQgdXMgdGVzdCB0aGUgcmV2ZXJzZSBwYXRoXG4mIzQzO1x0XHR0bXA9XCYjMzQ7JHtsMX1cJiMzNDs7IGwxPVwmIzM0OyR7bDJ9XCYjMzQ7OyBsMj1cJiMzNDske3RtcH1cJiMzNDtcbiYjNDM7XHRcdHRtcD0ke3QxfTsgdDE9JHt0Mn07IHQyPSR7dG1wfVxuJiM0MztcdGRvbmVcbiYjNDM7fVxuJiM0MztcbiYjNDM7X190ZXN0X25vbG9va3VwKClcbiYjNDM7e1xuJiM0MztcdGxvY2FsIGhzc3JjPVwmIzM0OyQxXCYjMzQ7XG4mIzQzO1x0bG9jYWwgaHNkc3Q9XCYjMzQ7JDJcJiMzNDtcbiYjNDM7XHRsb2NhbCBydHNyYz1cJiMzNDskM1wmIzM0O1xuJiM0MztcdGxvY2FsIHJ0ZHN0PVwmIzM0OyQ0XCYjMzQ7XG4mIzQzO1x0bG9jYWwgdGlkPVwmIzM0OyQ1XCYjMzQ7XG4mIzQzO1x0bG9jYWwgdnBuX3NpZFxuJiM0MztcbiYjNDM7XHR2cG5fc2lkPVwmIzM0OyQoYnVpbGRfdnBuX3NpZCBcJiMzNDske3J0c3JjfVwmIzM0OyBcJiMzNDske3J0ZHN0fVwmIzM0OyBcJiMzNDske3RpZH1cJiMzNDspXCYjMzQ7XG4mIzQzO1xuJiM0MztcdCMgcmVwbGFjZSBlbmNhcCByb3V0ZShzKSB3aXRob3V0IFwmIzM0O2xvb2t1cFwmIzM0OyBhdHRyaWJ1dGVcbiYjNDM7XHRzZXRfaG9zdF9lbmNhcF9yb3V0ZV9ub2xvb2t1cCBcJiMzNDske3J0c3JjfVwmIzM0OyBcJiMzNDske2hzZHN0fVwmIzM0OyBcJiMzNDske3Zwbl9zaWR9XCYjMzQ7IFwmIzM0OyR7dGlkfVwmIzM0O1xuJiM0MztcbiYjNDM7XHRjaGVja19oc19pcHY2X2Nvbm5lY3Rpdml0eSBcJiMzNDske2hzc3JjfVwmIzM0OyBcJiMzNDske2hzZHN0fVwmIzM0OyBcJiMzNDske3RpZH1cJiMzNDtcbiYjNDM7XHRsb2dfdGVzdCAkPyAxIFwmIzM0O0lQdjYgdy9vIGxvb2t1cDogaHMtdCR7dGlkfS0ke2hzc3JjfSAtWC1cdTAwM2UgaHMtdCR7dGlkfS0ke2hzZHN0fSAodGVuYW50ICR7dGlkfSlcJiMzNDtcbiYjNDM7XG4mIzQzO1x0Y2hlY2tfaHNfaXB2NF9jb25uZWN0aXZpdHkgXCYjMzQ7JHtoc3NyY31cJiMzNDsgXCYjMzQ7JHtoc2RzdH1cJiMzNDsgXCYjMzQ7JHt0aWR9XCYjMzQ7XG4mIzQzO1x0bG9nX3Rlc3QgJD8gMSBcJiMzNDtJUHY0IHcvbyBsb29rdXA6IGhzLXQke3RpZH0tJHtoc3NyY30gLVgtXHUwMDNlIGhzLXQke3RpZH0tJHtoc2RzdH0gKHRlbmFudCAke3RpZH0pXCYjMzQ7XG4mIzQzO1xuJiM0MztcdCMgcmVzdG9yZSBlbmNhcCByb3V0ZShzKSB3aXRoIFwmIzM0O2xvb2t1cFwmIzM0OyBmb3Igc3Vic2VxdWVudCB0ZXN0c1xuJiM0MztcdHNldF9ob3N0X2VuY2FwX3JvdXRlIFwmIzM0OyR7cnRzcmN9XCYjMzQ7IFwmIzM0OyR7aHNkc3R9XCYjMzQ7IFwmIzM0OyR7dnBuX3NpZH1cJiMzNDsgXCYjMzQ7JHt0aWR9XCYjMzQ7XG4mIzQzO31cbiYjNDM7XG4mIzQzO2hvc3RfdnBuX25vbG9va3VwX3Rlc3RzKClcbiYjNDM7e1xuJiM0MztcdGxvZ19zZWN0aW9uIFwmIzM0O1NSdjYgVlBOIGNvbm5lY3Rpdml0eSB0ZXN0IGFtb25nIGhvc3RzIHcvbyBsb29rdXBcJiMzNDtcbiYjNDM7XG4mIzQzO1x0X190ZXN0X25vbG9va3VwIDEgMiAxIDIgMTAwXG4mIzQzO1x0X190ZXN0X25vbG9va3VwIDIgMSAyIDEgMTAwXG4mIzQzO1xuJiM0MztcdF9fdGVzdF9ub2xvb2t1cCAzIDQgMSAyIDIwMFxuJiM0MztcdF9fdGVzdF9ub2xvb2t1cCA0IDMgMiAxIDIwMFxuJiM0Mzt9XG4mIzQzO1xuJiM0MztjaGVja19nd19pcHY2X2Nvbm5lY3Rpdml0eSgpXG4mIzQzO3tcbiYjNDM7XHRsb2NhbCBydHNyYz1cJiMzNDskMVwmIzM0O1xuJiM0MztcdGxvY2FsIHJ0ZHN0PVwmIzM0OyQyXCYjMzQ7XG4mIzQzO1x0bG9jYWwgdGlkc3JjPVwmIzM0OyQzXCYjMzQ7XG4mIzQzO1x0bG9jYWwgdGlkZHN0PVwmIzM0OyQ0XCYjMzQ7XG4mIzQzO1x0bG9jYWwgcnRuYW1lXG4mIzQzO1x0bG9jYWwgc3JjX3Y2XG4mIzQzO1x0bG9jYWwgZHN0X3Y2XG4mIzQzO1xuJiM0MztcdHJ0bmFtZT1cJiMzNDskKGdldF9ydF9uc25hbWUgXCYjMzQ7JHtydHNyY31cJiMzNDspXCYjMzQ7XG4mIzQzO1x0c3JjX3Y2PVwmIzM0OyR7SVB2Nl9IU19ORVRXT1JLfTo6JChnZXRfcmxvX2hvc3RpZCBcJiMzNDske3J0c3JjfVwmIzM0OyBcJiMzNDske3RpZHNyY31cJiMzNDspXCYjMzQ7XG4mIzQzO1x0ZHN0X3Y2PVwmIzM0OyR7SVB2Nl9IU19ORVRXT1JLfTo6JChnZXRfcmxvX2hvc3RpZCBcJiMzNDske3J0ZHN0fVwmIzM0OyBcJiMzNDske3RpZGRzdH1cJiMzNDspXCYjMzQ7XG4mIzQzO1xuJiM0MztcdGlwIG5ldG5zIGV4ZWMgXCYjMzQ7JHtydG5hbWV9XCYjMzQ7IGlwIHZyZiBleGVjIFwmIzM0O3ZyZi0ke3RpZHNyY31cJiMzNDsgXFxcbiYjNDM7XHRcdHBpbmcgLWMgMSAtVyBcJiMzNDske1BJTkdfVElNRU9VVF9TRUN9XCYjMzQ7IFxcXG4mIzQzO1x0XHQtSSBcJiMzNDske3NyY192Nn1cJiMzNDsgXCYjMzQ7JHtkc3RfdjZ9XCYjMzQ7IFx1MDAzZS9kZXYvbnVsbCAyXHUwMDNlXHUwMDI2MVxuJiM0Mzt9XG4mIzQzO1xuJiM0MztjaGVja19nd19pcHY0X2Nvbm5lY3Rpdml0eSgpXG4mIzQzO3tcbiYjNDM7XHRsb2NhbCBydHNyYz1cJiMzNDskMVwmIzM0O1xuJiM0MztcdGxvY2FsIHJ0ZHN0PVwmIzM0OyQyXCYjMzQ7XG4mIzQzO1x0bG9jYWwgdGlkc3JjPVwmIzM0OyQzXCYjMzQ7XG4mIzQzO1x0bG9jYWwgdGlkZHN0PVwmIzM0OyQ0XCYjMzQ7XG4mIzQzO1x0bG9jYWwgcnRuYW1lXG4mIzQzO1x0bG9jYWwgc3JjX3Y0XG4mIzQzO1x0bG9jYWwgZHN0X3Y0XG4mIzQzO1xuJiM0MztcdHJ0bmFtZT1cJiMzNDskKGdldF9ydF9uc25hbWUgXCYjMzQ7JHtydHNyY31cJiMzNDspXCYjMzQ7XG4mIzQzO1x0c3JjX3Y0PVwmIzM0OyR7SVB2NF9IU19ORVRXT1JLfS4kKGdldF9ybG9faG9zdGlkIFwmIzM0OyR7cnRzcmN9XCYjMzQ7IFwmIzM0OyR7dGlkc3JjfVwmIzM0OylcJiMzNDtcbiYjNDM7XHRkc3RfdjQ9XCYjMzQ7JHtJUHY0X0hTX05FVFdPUkt9LiQoZ2V0X3Jsb19ob3N0aWQgXCYjMzQ7JHtydGRzdH1cJiMzNDsgXCYjMzQ7JHt0aWRkc3R9XCYjMzQ7KVwmIzM0O1xuJiM0MztcbiYjNDM7XHRpcCBuZXRucyBleGVjIFwmIzM0OyR7cnRuYW1lfVwmIzM0OyBpcCB2cmYgZXhlYyBcJiMzNDt2cmYtJHt0aWRzcmN9XCYjMzQ7IFxcXG4mIzQzO1x0XHRwaW5nIC1jIDEgLVcgXCYjMzQ7JHtQSU5HX1RJTUVPVVRfU0VDfVwmIzM0OyBcXFxuJiM0MztcdFx0LUkgXCYjMzQ7JHtzcmNfdjR9XCYjMzQ7IFwmIzM0OyR7ZHN0X3Y0fVwmIzM0OyBcdTAwM2UvZGV2L251bGwgMlx1MDAzZVx1MDAyNjFcbiYjNDM7fVxuJiM0MztcbiYjNDM7Y2hlY2tfYW5kX2xvZ19nd19jb25uZWN0aXZpdHkoKVxuJiM0Mzt7XG4mIzQzO1x0bG9jYWwgcnRzcmM9XCYjMzQ7JDFcJiMzNDtcbiYjNDM7XHRsb2NhbCBydGRzdD1cJiMzNDskMlwmIzM0O1xuJiM0MztcdGxvY2FsIHRpZD1cJiMzNDskM1wmIzM0O1xuJiM0MztcbiYjNDM7XHRjaGVja19nd19pcHY2X2Nvbm5lY3Rpdml0eSBcJiMzNDske3J0c3JjfVwmIzM0OyBcJiMzNDske3J0ZHN0fVwmIzM0OyBcJiMzNDske3RpZH1cJiMzNDsgXCYjMzQ7JHt0aWR9XCYjMzQ7XG4mIzQzO1x0bG9nX3Rlc3QgJD8gMCBcJiMzNDtJUHY2IGNvbm5lY3Rpdml0eTogcnQtJHtydHNyY30gLVx1MDAzZSBydC0ke3J0ZHN0fSAodGVuYW50ICR7dGlkfSlcJiMzNDtcbiYjNDM7XG4mIzQzO1x0Y2hlY2tfZ3dfaXB2NF9jb25uZWN0aXZpdHkgXCYjMzQ7JHtydHNyY31cJiMzNDsgXCYjMzQ7JHtydGRzdH1cJiMzNDsgXCYjMzQ7JHt0aWR9XCYjMzQ7IFwmIzM0OyR7dGlkfVwmIzM0O1xuJiM0MztcdGxvZ190ZXN0ICQ/IDAgXCYjMzQ7SVB2NCBjb25uZWN0aXZpdHk6IHJ0LSR7cnRzcmN9IC1cdTAwM2UgcnQtJHtydGRzdH0gKHRlbmFudCAke3RpZH0pXCYjMzQ7XG4mIzQzO31cbiYjNDM7XG4mIzQzO2NoZWNrX2FuZF9sb2dfZ3dfaXNvbGF0aW9uKClcbiYjNDM7e1xuJiM0MztcdGxvY2FsIHJ0c3JjPVwmIzM0OyQxXCYjMzQ7XG4mIzQzO1x0bG9jYWwgcnRkc3Q9XCYjMzQ7JDJcJiMzNDtcbiYjNDM7XHRsb2NhbCB0aWRzcmM9XCYjMzQ7JDNcJiMzNDtcbiYjNDM7XHRsb2NhbCB0aWRkc3Q9XCYjMzQ7JDRcJiMzNDtcbiYjNDM7XG4mIzQzO1x0Y2hlY2tfZ3dfaXB2Nl9jb25uZWN0aXZpdHkgXCYjMzQ7JHtydHNyY31cJiMzNDsgXCYjMzQ7JHtydGRzdH1cJiMzNDsgXCYjMzQ7JHt0aWRzcmN9XCYjMzQ7IFwmIzM0OyR7dGlkZHN0fVwmIzM0O1xuJiM0MztcdGxvZ190ZXN0ICQ/IDEgXCYjMzQ7SVB2NiBpc29sYXRpb246IHJ0LSR7cnRzcmN9IC1YLVx1MDAzZSBydC0ke3J0ZHN0fSAodGVuYW50cyAke3RpZHNyY30vJHt0aWRkc3R9KVwmIzM0O1xuJiM0MztcbiYjNDM7XHRjaGVja19nd19pcHY0X2Nvbm5lY3Rpdml0eSBcJiMzNDske3J0c3JjfVwmIzM0OyBcJiMzNDske3J0ZHN0fVwmIzM0OyBcJiMzNDske3RpZHNyY31cJiMzNDsgXCYjMzQ7JHt0aWRkc3R9XCYjMzQ7XG4mIzQzO1x0bG9nX3Rlc3QgJD8gMSBcJiMzNDtJUHY0IGlzb2xhdGlvbjogcnQtJHtydHNyY30gLVgtXHUwMDNlIHJ0LSR7cnRkc3R9ICh0ZW5hbnRzICR7dGlkc3JjfS8ke3RpZGRzdH0pXCYjMzQ7XG4mIzQzO31cbiYjNDM7XG4mIzQzO2d3X3Zwbl9pc29sYXRpb25fdGVzdHMoKVxuJiM0Mzt7XG4mIzQzO1x0bG9nX3NlY3Rpb24gXCYjMzQ7U1J2NiBWUE4gaXNvbGF0aW9uIHRlc3QgYW1vbmcgcm91dGVycyBpbiBkaWZmZXJlbnQgdGVuYW50c1wmIzM0O1xuJiM0MztcbiYjNDM7XHRjaGVja19hbmRfbG9nX2d3X2lzb2xhdGlvbiAxIDIgMTAwIDIwMFxuJiM0MztcdGNoZWNrX2FuZF9sb2dfZ3dfaXNvbGF0aW9uIDIgMSAxMDAgMjAwXG4mIzQzO1xuJiM0MztcdGNoZWNrX2FuZF9sb2dfZ3dfaXNvbGF0aW9uIDEgMiAyMDAgMTAwXG4mIzQzO1x0Y2hlY2tfYW5kX2xvZ19nd19pc29sYXRpb24gMiAxIDIwMCAxMDBcbiYjNDM7fVxuJiM0MztcbiYjNDM7Z3dfdnBuX3Rlc3RzKClcbiYjNDM7e1xuJiM0MztcdGxvZ19zZWN0aW9uIFwmIzM0O1NSdjYgVlBOIGNvbm5lY3Rpdml0eSB0ZXN0IGFtb25nIHJvdXRlcnMgaW4gdGhlIHNhbWUgdGVuYW50XCYjMzQ7XG4mIzQzO1xuJiM0MztcdGNoZWNrX2FuZF9sb2dfZ3dfY29ubmVjdGl2aXR5IDEgMiAxMDBcbiYjNDM7XHRjaGVja19hbmRfbG9nX2d3X2Nvbm5lY3Rpdml0eSAyIDEgMTAwXG4mIzQzO1xuJiM0MztcdGNoZWNrX2FuZF9sb2dfZ3dfY29ubmVjdGl2aXR5IDEgMiAyMDBcbiYjNDM7XHRjaGVja19hbmRfbG9nX2d3X2Nvbm5lY3Rpdml0eSAyIDEgMjAwXG4mIzQzO31cbiYjNDM7XG4mIzQzO19fdGVzdF9nd19ub2xvb2t1cCgpXG4mIzQzO3tcbiYjNDM7XHRsb2NhbCBydHNyYz1cJiMzNDskMVwmIzM0O1xuJiM0MztcdGxvY2FsIHJ0ZHN0PVwmIzM0OyQyXCYjMzQ7XG4mIzQzO1x0bG9jYWwgdGlkPVwmIzM0OyQzXCYjMzQ7XG4mIzQzO1x0bG9jYWwgc2lkXG4mIzQzO1xuJiM0MztcdHNpZD1cJiMzNDskKGJ1aWxkX3Zwbl9zaWQgXCYjMzQ7JHtydHNyY31cJiMzNDsgXCYjMzQ7JHtydGRzdH1cJiMzNDsgXCYjMzQ7JHt0aWR9XCYjMzQ7KVwmIzM0O1xuJiM0MztcbiYjNDM7XHQjIHJlcGxhY2UgZ3cgZW5jYXAgcm91dGUgd2l0aG91dCBcJiMzNDtsb29rdXBcJiMzNDsgYXR0cmlidXRlXG4mIzQzO1x0c2V0X2d3X2VuY2FwX3JvdXRlX25vbG9va3VwIFwmIzM0OyR7cnRzcmN9XCYjMzQ7IFwmIzM0OyR7cnRkc3R9XCYjMzQ7IFwmIzM0OyR7c2lkfVwmIzM0OyBcJiMzNDske3RpZH1cJiMzNDtcbiYjNDM7XG4mIzQzO1x0Y2hlY2tfZ3dfaXB2Nl9jb25uZWN0aXZpdHkgXCYjMzQ7JHtydHNyY31cJiMzNDsgXCYjMzQ7JHtydGRzdH1cJiMzNDsgXCYjMzQ7JHt0aWR9XCYjMzQ7IFwmIzM0OyR7dGlkfVwmIzM0O1xuJiM0MztcdGxvZ190ZXN0ICQ/IDEgXCYjMzQ7SVB2NiB3L28gbG9va3VwOiBydC0ke3J0c3JjfSAtWC1cdTAwM2UgcnQtJHtydGRzdH0gKHRlbmFudCAke3RpZH0pXCYjMzQ7XG4mIzQzO1xuJiM0MztcdGNoZWNrX2d3X2lwdjRfY29ubmVjdGl2aXR5IFwmIzM0OyR7cnRzcmN9XCYjMzQ7IFwmIzM0OyR7cnRkc3R9XCYjMzQ7IFwmIzM0OyR7dGlkfVwmIzM0OyBcJiMzNDske3RpZH1cJiMzNDtcbiYjNDM7XHRsb2dfdGVzdCAkPyAxIFwmIzM0O0lQdjQgdy9vIGxvb2t1cDogcnQtJHtydHNyY30gLVgtXHUwMDNlIHJ0LSR7cnRkc3R9ICh0ZW5hbnQgJHt0aWR9KVwmIzM0O1xuJiM0MztcbiYjNDM7XHQjIHJlc3RvcmUgZ3cgZW5jYXAgcm91dGUgd2l0aCBcJiMzNDtsb29rdXBcJiMzNDsgZm9yIHN1YnNlcXVlbnQgdGVzdHNcbiYjNDM7XHRzZXRfZ3dfZW5jYXBfcm91dGUgXCYjMzQ7JHtydHNyY31cJiMzNDsgXCYjMzQ7JHtydGRzdH1cJiMzNDsgXCYjMzQ7JHtzaWR9XCYjMzQ7IFwmIzM0OyR7dGlkfVwmIzM0O1xuJiM0Mzt9XG4mIzQzO1xuJiM0Mztnd192cG5fbm9sb29rdXBfdGVzdHMoKVxuJiM0Mzt7XG4mIzQzO1x0bG9nX3NlY3Rpb24gXCYjMzQ7U1J2NiBWUE4gY29ubmVjdGl2aXR5IHRlc3QgYW1vbmcgcm91dGVycyB3L28gbG9va3VwXCYjMzQ7XG4mIzQzO1xuJiM0MztcdF9fdGVzdF9nd19ub2xvb2t1cCAxIDIgMTAwXG4mIzQzO1x0X190ZXN0X2d3X25vbG9va3VwIDIgMSAxMDBcbiYjNDM7XG4mIzQzO1x0X190ZXN0X2d3X25vbG9va3VwIDEgMiAyMDBcbiYjNDM7XHRfX3Rlc3RfZ3dfbm9sb29rdXAgMiAxIDIwMFxuJiM0Mzt9XG4mIzQzO1xuJiM0Mzt0ZXN0X2NvbW1hbmRfb3Jfa3NmdF9za2lwKClcbiYjNDM7e1xuJiM0MztcdGxvY2FsIGNtZD1cJiMzNDskMVwmIzM0O1xuJiM0MztcbiYjNDM7XHRpZiBbICEgLXggXCYjMzQ7JChjb21tYW5kIC12IFwmIzM0OyR7Y21kfVwmIzM0OylcJiMzNDsgXTsgdGhlblxuJiM0MztcdFx0ZWNobyBcJiMzNDtTS0lQOiBDb3VsZCBub3QgcnVuIHRlc3Qgd2l0aG91dCBcXFwmIzM0OyR7Y21kfVxcXCYjMzQ7IHRvb2xcJiMzNDtcbiYjNDM7XHRcdGV4aXQgXCYjMzQ7JHtrc2Z0X3NraXB9XCYjMzQ7XG4mIzQzO1x0ZmlcbiYjNDM7fVxuJiM0MztcbiYjNDM7dGVzdF92cmZfb3Jfa3NmdF9za2lwKClcbiYjNDM7e1xuJiM0MztcdG1vZHByb2JlIHZyZiBcdTAwMjZcdTAwM2UvZGV2L251bGwgfHwgdHJ1ZVxuJiM0MztcdGlmIFsgISAtZSAvcHJvYy9zeXMvbmV0L3ZyZi9zdHJpY3RfbW9kZSBdOyB0aGVuXG4mIzQzO1x0XHRlY2hvIFwmIzM0O1NLSVA6IHZyZiBzeXNjdGwgZG9lcyBub3QgZXhpc3RcJiMzNDtcbiYjNDM7XHRcdGV4aXQgXCYjMzQ7JHtrc2Z0X3NraXB9XCYjMzQ7XG4mIzQzO1x0ZmlcbiYjNDM7fVxuJiM0MztcbiYjNDM7dGVzdF9kdW1teV9kZXZfb3Jfa3NmdF9za2lwKClcbiYjNDM7e1xuJiM0MztcdGxvY2FsIHRlc3RfbmV0bnNcbiYjNDM7XG4mIzQzO1x0c2V0dXBfbnMgdGVzdF9uZXRuc1xuJiM0MztcbiYjNDM7XHRtb2Rwcm9iZSBkdW1teSBcdTAwMjZcdTAwM2UvZGV2L251bGwgfHwgdHJ1ZVxuJiM0MztcdGlmICEgaXAgLW5ldG5zIFwmIzM0OyR7dGVzdF9uZXRuc31cJiMzNDsgbGluayBhZGQgXCYjMzQ7JHtEVU1NWV9ERVZOQU1FfVwmIzM0OyBcXFxuJiM0MztcdFx0XHR0eXBlIGR1bW15OyB0aGVuXG4mIzQzO1x0XHRjbGVhbnVwX25zIFwmIzM0OyR7dGVzdF9uZXRuc31cJiMzNDtcbiYjNDM7XHRcdGVjaG8gXCYjMzQ7U0tJUDogZHVtbXkgZGV2IG5vdCBzdXBwb3J0ZWRcJiMzNDtcbiYjNDM7XHRcdGV4aXQgXCYjMzQ7JHtrc2Z0X3NraXB9XCYjMzQ7XG4mIzQzO1x0ZmlcbiYjNDM7XG4mIzQzO1x0Y2xlYW51cF9ucyBcJiMzNDske3Rlc3RfbmV0bnN9XCYjMzQ7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3Rlc3RfZW5jYXBfbG9va3VwX3N1cHBfb3Jfa3NmdF9za2lwKClcbiYjNDM7e1xuJiM0MztcdGxvY2FsIG5zbmFtZVxuJiM0MztcbiYjNDM7XHRzZXR1cF9ucyBuc25hbWVcbiYjNDM7XG4mIzQzO1x0aXAgLW5ldG5zIFwmIzM0OyR7bnNuYW1lfVwmIzM0OyBsaW5rIGFkZCBcJiMzNDske0RVTU1ZX0RFVk5BTUV9XCYjMzQ7IHR5cGUgZHVtbXlcbiYjNDM7XHRpcCAtbmV0bnMgXCYjMzQ7JHtuc25hbWV9XCYjMzQ7IGxpbmsgc2V0IFwmIzM0OyR7RFVNTVlfREVWTkFNRX1cJiMzNDsgdXBcbiYjNDM7XG4mIzQzO1x0aWYgISBpcCAtbmV0bnMgXCYjMzQ7JHtuc25hbWV9XCYjMzQ7IC02IHJvdXRlIGFkZCBcJiMzNDske0lQdjZfVEVTVFNfQUREUn0vMTI4XCYjMzQ7IFxcXG4mIzQzO1x0XHRcdGVuY2FwIHNlZzYgbW9kZSBlbmNhcCBzZWdzIGZjMDA6OjEgXFxcbiYjNDM7XHRcdFx0bG9va3VwIFwmIzM0OyR7VEVTVFNfVEFCTEVfSUR9XCYjMzQ7IFxcXG4mIzQzO1x0XHRcdGRldiBcJiMzNDske0RVTU1ZX0RFVk5BTUV9XCYjMzQ7IDJcdTAwM2UvZGV2L251bGw7IHRoZW5cbiYjNDM7XHRcdGNsZWFudXBfbnMgXCYjMzQ7JHtuc25hbWV9XCYjMzQ7XG4mIzQzO1x0XHRlY2hvIFwmIzM0O1NLSVA6IHNlZzYgZW5jYXAgbG9va3VwIGF0dHJpYnV0ZSBub3Qgc3VwcG9ydGVkXCYjMzQ7XG4mIzQzO1x0XHRleGl0IFwmIzM0OyR7a3NmdF9za2lwfVwmIzM0O1xuJiM0MztcdGZpXG4mIzQzO1xuJiM0MztcdCMgQW4gb2xkIGtlcm5lbCB3aXRoIGEgcmVjZW50IGlwcm91dGUyIGFjY2VwdHMgdGhlIHJvdXRlIGJ1dFxuJiM0MztcdCMgc2lsZW50bHkgaWdub3JlcyB0aGUgbG9va3VwIGF0dHJpYnV0ZS4gRHVtcCB0aGUgcm91dGUgYW5kIGNoZWNrXG4mIzQzO1x0IyB0aGUgYXR0cmlidXRlIGlzIHJlYWxseSB0aGVyZSwgb3RoZXJ3aXNlIHRoZSB0ZXN0IGZhbHNlbHkgcGFzc2VzLlxuJiM0MztcdGlmICEgaXAgLW5ldG5zIFwmIzM0OyR7bnNuYW1lfVwmIzM0OyAtNiByb3V0ZSBzaG93IFwmIzM0OyR7SVB2Nl9URVNUU19BRERSfS8xMjhcJiMzNDsgfCBcXFxuJiM0MztcdFx0XHRncmVwIC1xIFwmIzM0O2xvb2t1cCAke1RFU1RTX1RBQkxFX0lEfVwmIzM0OzsgdGhlblxuJiM0MztcdFx0Y2xlYW51cF9ucyBcJiMzNDske25zbmFtZX1cJiMzNDtcbiYjNDM7XHRcdGVjaG8gXCYjMzQ7U0tJUDogc2VnNiBlbmNhcCBsb29rdXAgYXR0cmlidXRlIG5vdCBzdXBwb3J0ZWRcJiMzNDtcbiYjNDM7XHRcdGV4aXQgXCYjMzQ7JHtrc2Z0X3NraXB9XCYjMzQ7XG4mIzQzO1x0ZmlcbiYjNDM7XG4mIzQzO1x0Y2xlYW51cF9ucyBcJiMzNDske25zbmFtZX1cJiMzNDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7aWYgWyBcJiMzNDskKGlkIC11KVwmIzM0OyAtbmUgMCBdOyB0aGVuXG4mIzQzO1x0ZWNobyBcJiMzNDtTS0lQOiBOZWVkIHJvb3QgcHJpdmlsZWdlc1wmIzM0O1xuJiM0MztcdGV4aXQgXCYjMzQ7JHtrc2Z0X3NraXB9XCYjMzQ7XG4mIzQzO2ZpXG4mIzQzO1xuJiM0MzsjIHJlcXVpcmVkIHByb2dyYW1zIHRvIGNhcnJ5IG91dCB0aGlzIHNlbGZ0ZXN0XG4mIzQzO3Rlc3RfY29tbWFuZF9vcl9rc2Z0X3NraXAgaXBcbiYjNDM7dGVzdF9jb21tYW5kX29yX2tzZnRfc2tpcCBwaW5nXG4mIzQzO3Rlc3RfY29tbWFuZF9vcl9rc2Z0X3NraXAgc3lzY3RsXG4mIzQzO3Rlc3RfY29tbWFuZF9vcl9rc2Z0X3NraXAgZ3JlcFxuJiM0MztcbiYjNDM7dGVzdF9kdW1teV9kZXZfb3Jfa3NmdF9za2lwXG4mIzQzO3Rlc3RfdnJmX29yX2tzZnRfc2tpcFxuJiM0Mzt0ZXN0X2VuY2FwX2xvb2t1cF9zdXBwX29yX2tzZnRfc2tpcFxuJiM0MztcbiYjNDM7c2V0IC1lXG4mIzQzO3RyYXAgY2xlYW51cCBFWElUXG4mIzQzO1xuJiM0MztzZXR1cFxuJiM0MztzZXQgJiM0MztlXG4mIzQzO1xuJiM0Mztyb3V0ZXJfdGVzdHNcbiYjNDM7aG9zdDJnYXRld2F5X3Rlc3RzXG4mIzQzO2hvc3RfdnBuX3Rlc3RzXG4mIzQzO2hvc3RfdnBuX2lzb2xhdGlvbl90ZXN0c1xuJiM0Mztob3N0X3Zwbl9ub2xvb2t1cF90ZXN0c1xuJiM0Mztnd192cG5fdGVzdHNcbiYjNDM7Z3dfdnBuX2lzb2xhdGlvbl90ZXN0c1xuJiM0Mztnd192cG5fbm9sb29rdXBfdGVzdHNcbiYjNDM7XG4mIzQzO3ByaW50X2xvZ190ZXN0X3Jlc3VsdHNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwODo1NDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUFY2X1NFRzZfTFdUVU5ORUwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzZWc2X3RhYmxlX2xvb2t1cCYjMzQ7LAogICAgJiMzNDtzZWc2X2lucHV0X3JvdXRlJiMzNDssCiAgICAmIzM0O3NlZzZfb3V0cHV0X2RzdF9sb29rdXAmIzM0OywKICAgICYjMzQ7c2VnNl9idWlsZF9zdGF0ZSYjMzQ7LAogICAgJiMzNDtzZWc2X2ZpbGxfZW5jYXBfaW5mbyYjMzQ7LAogICAgJiMzNDtzZWc2X2VuY2FwX25sc2l6ZSYjMzQ7LAogICAgJiMzNDtzZWc2X2VuY2FwX2NtcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgbmV3IE5ldGxpbmsgYXR0cmlidXRlIGBTRUc2X0lQVFVOTkVMX1RBQkxFYCB0byBzcGVjaWZ5IGEgRklCIHRhYmxlIGZvciBwb3N0LWVuY2FwIFNJRCBsb29rdXAgaW4gU1J2NiB0dW5uZWxzLiBJdCBtb2RpZmllcyB0aGUgU1J2NiBlbmNhcHN1bGF0aW9uIGxvZ2ljIGluIGBuZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmNgIHRvIHBlcmZvcm0gcm91dGUgbG9va3VwcyBpbiB0aGUgc3BlY2lmaWVkIHRhYmxlIGR1cmluZyBib3RoIGlucHV0IGFuZCBvdXRwdXQgcGF0aHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byByZWFjaGFibGUgY29yZSBrZXJuZWwgbmV0d29ya2luZyBsb2dpYywgc3BlY2lmaWNhbGx5IHRoZSBJUHY2IFNlZ21lbnQgUm91dGluZyBzdWJzeXN0ZW0sIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBiZDBmNDdhODhiMGQ1MDk0YjlmZDQzMWNhMDRjMjFlOGY2NmM3ZjAxCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBKdWwgMTIgMDg6NTQ6MTQgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvbGludXgvc2VnNl9pcHR1bm5lbC5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L3NlZzZfaXB0dW5uZWwuaAppbmRleCA0ODU4ODliMTk5MDBlYS4uZTE5NjRiM2E0YmIwYWYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC9zZWc2X2lwdHVubmVsLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS91YXBpL2xpbnV4L3NlZzZfaXB0dW5uZWwuaApAQCAtMjEsNiAmIzQzOzIxLDcgQEAgZW51bSB7CiAJU0VHNl9JUFRVTk5FTF9VTlNQRUMsCiAJU0VHNl9JUFRVTk5FTF9TUkgsCiAJU0VHNl9JUFRVTk5FTF9TUkMsCS8qIHN0cnVjdCBpbjZfYWRkciAqLwomIzQzOwlTRUc2X0lQVFVOTkVMX1RBQkxFLAkvKiBfX3UzMiBGSUIgdGFibGUgZm9yIHBvc3QtZW5jYXAgU0lEIGxvb2t1cCAqLwogCV9fU0VHNl9JUFRVTk5FTF9NQVgsCiB9OwogI2RlZmluZSBTRUc2X0lQVFVOTkVMX01BWCAoX19TRUc2X0lQVFVOTkVMX01BWCAtIDEpCmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmMgYi9uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmMKaW5kZXggNGM0NWMwYTc3ZDc1ZDAuLjYxYzZhMjdiZjIwMmRkIDEwMDY0NAotLS0gYS9uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jCkBAIC01MSw2ICYjNDM7NTEsNyBAQCBzdHJ1Y3Qgc2VnNl9sd3QgewogCXN0cnVjdCBkc3RfY2FjaGUgY2FjaGVfaW5wdXQ7CiAJc3RydWN0IGRzdF9jYWNoZSBjYWNoZV9vdXRwdXQ7CiAJc3RydWN0IGluNl9hZGRyIHR1bnNyYzsKJiM0MzsJdTMyIHRhYmxlOwogCXN0cnVjdCBzZWc2X2lwdHVubmVsX2VuY2FwIHR1bmluZm9bXTsKIH07CiAKQEAgLTY4LDYgJiM0Mzs2OSw3IEBAIHNlZzZfZW5jYXBfbHd0dW5uZWwoc3RydWN0IGx3dHVubmVsX3N0YXRlICpsd3QpCiBzdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgc2VnNl9pcHR1bm5lbF9wb2xpY3lbU0VHNl9JUFRVTk5FTF9NQVggJiM0MzsgMV0gPSB7CiAJW1NFRzZfSVBUVU5ORUxfU1JIXQk9IHsgLnR5cGUgPSBOTEFfQklOQVJZIH0sCiAJW1NFRzZfSVBUVU5ORUxfU1JDXQk9IE5MQV9QT0xJQ1lfRVhBQ1RfTEVOKHNpemVvZihzdHJ1Y3QgaW42X2FkZHIpKSwKJiM0MzsJW1NFRzZfSVBUVU5ORUxfVEFCTEVdCT0geyAudHlwZSA9IE5MQV9VMzIgfSwKIH07CiAKIHN0YXRpYyBpbnQgbmxhX3B1dF9zcmgoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IGF0dHJ0eXBlLApAQCAtNDc5LDYgJiM0Mzs0ODEsNzMgQEAgaW50IHNlZzZfZG9fc3JoX2lubGluZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaXB2Nl9zcl9oZHIgKm9zcmgpCiB9CiBFWFBPUlRfU1lNQk9MX0dQTChzZWc2X2RvX3NyaF9pbmxpbmUpOwogCiYjNDM7LyogbG9vayB1cCBhIHJvdXRlIGluIGEgc3BlY2lmaWMgRklCIHRhYmxlLgomIzQzOyAqIFJldHVybnMgYSByZWZjb3VudGVkIGRzdCwgb3IgTlVMTCBpZiB0aGUgdGFibGUgZG9lcyBub3QgZXhpc3QuCiYjNDM7ICovCiYjNDM7c3RhdGljIHN0cnVjdCBkc3RfZW50cnkgKnNlZzZfdGFibGVfbG9va3VwKHN0cnVjdCBuZXQgKm5ldCwKJiM0MzsJCQkJCSAgIHN0cnVjdCBza19idWZmICpza2IsCiYjNDM7CQkJCQkgICBzdHJ1Y3QgZmxvd2k2ICpmbDYsIHUzMiB0YmxfaWQpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgZmliNl90YWJsZSAqdGFibGU7CiYjNDM7CXN0cnVjdCBydDZfaW5mbyAqcnQ7CiYjNDM7CiYjNDM7CXRhYmxlID0gZmliNl9nZXRfdGFibGUobmV0LCB0YmxfaWQpOwomIzQzOwlpZiAoIXRhYmxlKQomIzQzOwkJcmV0dXJuIE5VTEw7CiYjNDM7CiYjNDM7CXJ0ID0gaXA2X3BvbF9yb3V0ZShuZXQsIHRhYmxlLCAwLCBmbDYsIHNrYiwgUlQ2X0xPT0tVUF9GX0hBU19TQUREUik7CiYjNDM7CXJldHVybiAmYW1wO3J0LSZndDtkc3Q7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyB2b2lkIHNlZzZfaW5pdF9mbG93aTYoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlwdjZoZHIgKmhkciwKJiM0MzsJCQkgICAgIHN0cnVjdCBmbG93aTYgKmZsNikKJiM0Mzt7CiYjNDM7CW1lbXNldChmbDYsIDAsIHNpemVvZigqZmw2KSk7CiYjNDM7CiYjNDM7CWZsNi0mZ3Q7ZGFkZHIgPSBoZHItJmd0O2RhZGRyOwomIzQzOwlmbDYtJmd0O3NhZGRyID0gaGRyLSZndDtzYWRkcjsKJiM0MzsJZmw2LSZndDtmbG93bGFiZWwgPSBpcDZfZmxvd2luZm8oaGRyKTsKJiM0MzsJZmw2LSZndDtmbG93aTZfbWFyayA9IHNrYi0mZ3Q7bWFyazsKJiM0MzsJZmw2LSZndDtmbG93aTZfcHJvdG8gPSBoZHItJmd0O25leHRoZHI7CiYjNDM7fQomIzQzOwomIzQzOy8qIGxvb2sgdXAgdGhlIHJvdXRlIGZvciB0aGUgZmlyc3QgU0lEIG9uIHRoZSBpbnB1dCBwYXRoIGFuZCBzZXQgaXQgb24gdGhlIHNrYi4KJiM0MzsgKiBSZXR1cm5zIHRoZSByZWZjb3VudGVkIGRzdCwgb3IgTlVMTCBpZiBhIHJlZmVyZW5jZSBjb3VsZCBub3QgYmUgc2FmZWx5IHRha2VuLgomIzQzOyAqLwomIzQzO3N0YXRpYyBzdHJ1Y3QgZHN0X2VudHJ5ICpzZWc2X2lucHV0X3JvdXRlKHN0cnVjdCBuZXQgKm5ldCwKJiM0MzsJCQkJCSAgc3RydWN0IHNrX2J1ZmYgKnNrYiwKJiM0MzsJCQkJCSAgc3RydWN0IHNlZzZfbHd0ICpzbHd0KQomIzQzO3sKJiM0MzsJdTMyIHRhYmxlID0gc2x3dC0mZ3Q7dGFibGU7CiYjNDM7CiYjNDM7CWlmICh0YWJsZSkgewomIzQzOwkJc3RydWN0IGlwdjZoZHIgKmhkciA9IGlwdjZfaGRyKHNrYik7CiYjNDM7CQlzdHJ1Y3QgZHN0X2VudHJ5ICpkc3Q7CiYjNDM7CQlzdHJ1Y3QgZmxvd2k2IGZsNjsKJiM0MzsKJiM0MzsJCXNlZzZfaW5pdF9mbG93aTYoc2tiLCBoZHIsICZhbXA7Zmw2KTsKJiM0MzsJCWZsNi5mbG93aTZfaWlmID0gc2tiLSZndDtkZXYtJmd0O2lmaW5kZXg7CiYjNDM7CiYjNDM7CQlkc3QgPSBzZWc2X3RhYmxlX2xvb2t1cChuZXQsIHNrYiwgJmFtcDtmbDYsIHRhYmxlKTsKJiM0MzsJCWlmICghZHN0KSB7CiYjNDM7CQkJZHN0ID0gJmFtcDtuZXQtJmd0O2lwdjYuaXA2X2Jsa19ob2xlX2VudHJ5LSZndDtkc3Q7CiYjNDM7CQkJZHN0X2hvbGQoZHN0KTsKJiM0MzsJCX0KJiM0MzsKJiM0MzsJCXNrYl9kc3RfZHJvcChza2IpOwomIzQzOwkJc2tiX2RzdF9zZXQoc2tiLCBkc3QpOwomIzQzOwl9IGVsc2UgewomIzQzOwkJaXA2X3JvdXRlX2lucHV0KHNrYik7CiYjNDM7CiYjNDM7CQkvKiBpcDZfcm91dGVfaW5wdXQoKSBzZXRzIGEgTk9SRUYgZHN0OyBmb3JjZSBhIHJlZmNvdW50IG9uIGl0CiYjNDM7CQkgKiBiZWZvcmUgY2FjaGluZyBvciBmdXJ0aGVyIHVzZS4KJiM0MzsJCSAqLwomIzQzOwkJc2tiX2RzdF9mb3JjZShza2IpOwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiBza2JfZHN0KHNrYik7CiYjNDM7fQomIzQzOwogc3RhdGljIGludCBzZWc2X2lucHV0X2ZpbmlzaChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpzaywKIAkJCSAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYikKIHsKQEAgLTUxMywxNSAmIzQzOzU4Miw5IEBAIHN0YXRpYyBpbnQgc2VnNl9pbnB1dF9jb3JlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrLAogCQlnb3RvIGRyb3A7CiAJfQogCi0JaWYgKCFkc3QpIHsKLQkJaXA2X3JvdXRlX2lucHV0KHNrYik7Ci0KLQkJLyogaXA2X3JvdXRlX2lucHV0KCkgc2V0cyBhIE5PUkVGIGRzdDsgZm9yY2UgYSByZWZjb3VudCBvbiBpdAotCQkgKiBiZWZvcmUgY2FjaGluZyBvciBmdXJ0aGVyIHVzZS4KLQkJICovCi0JCXNrYl9kc3RfZm9yY2Uoc2tiKTsKLQkJZHN0ID0gc2tiX2RzdChza2IpOwotCQlpZiAodW5saWtlbHkoIWRzdCkpIHsKJiM0MzsJaWYgKHVubGlrZWx5KCFkc3QpKSB7CiYjNDM7CQlkc3QgPSBzZWc2X2lucHV0X3JvdXRlKG5ldCwgc2tiLCBzbHd0KTsKJiM0MzsJCWlmICghZHN0KSB7CiAJCQllcnIgPSAtRU5FVFVOUkVBQ0g7CiAJCQlnb3RvIGRyb3A7CiAJCX0KQEAgLTU3OCw2ICYjNDM7NjQxLDI5IEBAIHN0YXRpYyBpbnQgc2VnNl9pbnB1dChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCXJldHVybiBzZWc2X2lucHV0X2NvcmUoZGV2X25ldChza2ItJmd0O2RldiksIE5VTEwsIHNrYik7CiB9CiAKJiM0MzsvKiBsb29rIHVwIHRoZSByb3V0ZSBmb3IgdGhlIGZpcnN0IFNJRCBvbiB0aGUgb3V0cHV0IHBhdGguIEFsd2F5cyByZXR1cm5zIGEKJiM0MzsgKiByZWZjb3VudGVkIGRzdC4KJiM0MzsgKi8KJiM0MztzdGF0aWMgc3RydWN0IGRzdF9lbnRyeSAqc2VnNl9vdXRwdXRfZHN0X2xvb2t1cChzdHJ1Y3QgbmV0ICpuZXQsCiYjNDM7CQkJCQkJc3RydWN0IHNrX2J1ZmYgKnNrYiwKJiM0MzsJCQkJCQlzdHJ1Y3QgZmxvd2k2ICpmbDYsCiYjNDM7CQkJCQkJc3RydWN0IHNlZzZfbHd0ICpzbHd0KQomIzQzO3sKJiM0MzsJc3RydWN0IGRzdF9lbnRyeSAqZHN0OwomIzQzOwomIzQzOwlpZiAoc2x3dC0mZ3Q7dGFibGUpIHsKJiM0MzsJCWRzdCA9IHNlZzZfdGFibGVfbG9va3VwKG5ldCwgc2tiLCBmbDYsIHNsd3QtJmd0O3RhYmxlKTsKJiM0MzsJCWlmICghZHN0KSB7CiYjNDM7CQkJZHN0ID0gJmFtcDtuZXQtJmd0O2lwdjYuaXA2X2Jsa19ob2xlX2VudHJ5LSZndDtkc3Q7CiYjNDM7CQkJZHN0X2hvbGQoZHN0KTsKJiM0MzsJCX0KJiM0MzsJfSBlbHNlIHsKJiM0MzsJCWRzdCA9IGlwNl9yb3V0ZV9vdXRwdXQobmV0LCBOVUxMLCBmbDYpOwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiBkc3Q7CiYjNDM7fQomIzQzOwogc3RhdGljIGludCBzZWc2X291dHB1dF9jb3JlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrLAogCQkJICAgIHN0cnVjdCBza19idWZmICpza2IpCiB7CkBAIC02MDAsMTQgJiM0Mzs2ODYsOSBAQCBzdGF0aWMgaW50IHNlZzZfb3V0cHV0X2NvcmUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29jayAqc2ssCiAJCXN0cnVjdCBpcHY2aGRyICpoZHIgPSBpcHY2X2hkcihza2IpOwogCQlzdHJ1Y3QgZmxvd2k2IGZsNjsKIAotCQltZW1zZXQoJmFtcDtmbDYsIDAsIHNpemVvZihmbDYpKTsKLQkJZmw2LmRhZGRyID0gaGRyLSZndDtkYWRkcjsKLQkJZmw2LnNhZGRyID0gaGRyLSZndDtzYWRkcjsKLQkJZmw2LmZsb3dsYWJlbCA9IGlwNl9mbG93aW5mbyhoZHIpOwotCQlmbDYuZmxvd2k2X21hcmsgPSBza2ItJmd0O21hcms7Ci0JCWZsNi5mbG93aTZfcHJvdG8gPSBoZHItJmd0O25leHRoZHI7CiYjNDM7CQlzZWc2X2luaXRfZmxvd2k2KHNrYiwgaGRyLCAmYW1wO2ZsNik7CiAKLQkJZHN0ID0gaXA2X3JvdXRlX291dHB1dChuZXQsIE5VTEwsICZhbXA7Zmw2KTsKJiM0MzsJCWRzdCA9IHNlZzZfb3V0cHV0X2RzdF9sb29rdXAobmV0LCBza2IsICZhbXA7Zmw2LCBzbHd0KTsKIAkJaWYgKGRzdC0mZ3Q7ZXJyb3IpIHsKIAkJCWVyciA9IGRzdC0mZ3Q7ZXJyb3I7CiAJCQlnb3RvIGRyb3A7CkBAIC03NTIsNiAmIzQzOzgzMywxNSBAQCBzdGF0aWMgaW50IHNlZzZfYnVpbGRfc3RhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmxhdHRyICpubGEsCiAJCX0KIAl9CiAKJiM0MzsJaWYgKHRiW1NFRzZfSVBUVU5ORUxfVEFCTEVdKSB7CiYjNDM7CQlzbHd0LSZndDt0YWJsZSA9IG5sYV9nZXRfdTMyKHRiW1NFRzZfSVBUVU5ORUxfVEFCTEVdKTsKJiM0MzsJCWlmICghc2x3dC0mZ3Q7dGFibGUpIHsKJiM0MzsJCQlOTF9TRVRfRVJSX01TRyhleHRhY2ssICYjMzQ7aW52YWxpZCBsb29rdXAgdGFibGUmIzM0Oyk7CiYjNDM7CQkJZXJyID0gLUVJTlZBTDsKJiM0MzsJCQlnb3RvIGVycl9kZXN0cm95X291dHB1dDsKJiM0MzsJCX0KJiM0MzsJfQomIzQzOwogCW5ld3RzLSZndDt0eXBlID0gTFdUVU5ORUxfRU5DQVBfU0VHNjsKIAluZXd0cy0mZ3Q7ZmxhZ3MgfD0gTFdUVU5ORUxfU1RBVEVfSU5QVVRfUkVESVJFQ1Q7CiAKQEAgLTc5NSw2ICYjNDM7ODg1LDEwIEBAIHN0YXRpYyBpbnQgc2VnNl9maWxsX2VuY2FwX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkgICAgbmxhX3B1dF9pbjZfYWRkcihza2IsIFNFRzZfSVBUVU5ORUxfU1JDLCAmYW1wO3Nsd3QtJmd0O3R1bnNyYykpCiAJCXJldHVybiAtRU1TR1NJWkU7CiAKJiM0MzsJaWYgKHNsd3QtJmd0O3RhYmxlICZhbXA7JmFtcDsKJiM0MzsJICAgIG5sYV9wdXRfdTMyKHNrYiwgU0VHNl9JUFRVTk5FTF9UQUJMRSwgc2x3dC0mZ3Q7dGFibGUpKQomIzQzOwkJcmV0dXJuIC1FTVNHU0laRTsKJiM0MzsKIAlyZXR1cm4gMDsKIH0KIApAQCAtODA5LDYgJiM0Mzs5MDMsOSBAQCBzdGF0aWMgaW50IHNlZzZfZW5jYXBfbmxzaXplKHN0cnVjdCBsd3R1bm5lbF9zdGF0ZSAqbHd0c3RhdGUpCiAJaWYgKCFpcHY2X2FkZHJfYW55KCZhbXA7c2x3dC0mZ3Q7dHVuc3JjKSkKIAkJbmxzaXplICYjNDM7PSBubGFfdG90YWxfc2l6ZShzaXplb2Yoc2x3dC0mZ3Q7dHVuc3JjKSk7CiAKJiM0MzsJaWYgKHNsd3QtJmd0O3RhYmxlKQomIzQzOwkJbmxzaXplICYjNDM7PSBubGFfdG90YWxfc2l6ZShzaXplb2YodTMyKSk7CiYjNDM7CiAJcmV0dXJuIG5sc2l6ZTsKIH0KIApAQCAtODI2LDYgJiM0Mzs5MjMsOSBAQCBzdGF0aWMgaW50IHNlZzZfZW5jYXBfY21wKHN0cnVjdCBsd3R1bm5lbF9zdGF0ZSAqYSwgc3RydWN0IGx3dHVubmVsX3N0YXRlICpiKQogCWlmICghaXB2Nl9hZGRyX2VxdWFsKCZhbXA7YV9zbHd0LSZndDt0dW5zcmMsICZhbXA7Yl9zbHd0LSZndDt0dW5zcmMpKQogCQlyZXR1cm4gMTsKIAomIzQzOwlpZiAoYV9zbHd0LSZndDt0YWJsZSAhPSBiX3Nsd3QtJmd0O3RhYmxlKQomIzQzOwkJcmV0dXJuIDE7CiYjNDM7CiAJcmV0dXJuIG1lbWNtcChhX2hkciwgYl9oZHIsIGxlbik7CiB9CiAKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9NYWtlZmlsZSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9NYWtlZmlsZQppbmRleCA3MDhkOTYwYWUwN2Q1Yi4uNWRmMGM5NGFiMDYwMTggMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9NYWtlZmlsZQomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvTWFrZWZpbGUKQEAgLTg1LDYgJiM0Mzs4NSw3IEBAIFRFU1RfUFJPR1MgOj0gXAogCXJ4dGltZXN0YW1wLnNoIFwKIAlzY3RwX3ZyZi5zaCBcCiAJc2tmX25ldF9vZmYuc2ggXAomIzQzOwlzcnY2X2VuY2FwX2xvb2t1cF9sM3Zwbl90ZXN0LnNoIFwKIAlzcnY2X2VuZF9kdDQ2X2wzdnBuX3Rlc3Quc2ggXAogCXNydjZfZW5kX2R0NF9sM3Zwbl90ZXN0LnNoIFwKIAlzcnY2X2VuZF9kdDZfbDN2cG5fdGVzdC5zaCBcCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvc3J2Nl9lbmNhcF9sb29rdXBfbDN2cG5fdGVzdC5zaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9zcnY2X2VuY2FwX2xvb2t1cF9sM3Zwbl90ZXN0LnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwLi5kNjI0OTMwM2I3ZWFhMQotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9zcnY2X2VuY2FwX2xvb2t1cF9sM3Zwbl90ZXN0LnNoCkBAIC0wLDAgJiM0MzsxLDEwMjcgQEAKJiM0MzsjIS9iaW4vYmFzaAomIzQzOyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKJiM0MzsjCiYjNDM7IyBhdXRob3I6IEFuZHJlYSBNYXllciAmbHQ7YW5kcmVhLm1heWVyQHVuaXJvbWEyLml0Jmd0OwomIzQzOwomIzQzOyMgVGhpcyB0ZXN0IGV2YWx1YXRlcyB0aGUgU1J2NiBlbmNhcCAmIzM0O2xvb2t1cCYjMzQ7IGF0dHJpYnV0ZS4gQWZ0ZXIgZW5jYXBzdWxhdGlvbgomIzQzOyMgdGhlIHJvdXRlciBsb29rcyB1cCB0aGUgcm91dGUgZm9yIHRoZSBmaXJzdCBTSUQsIHRoYXQgaXMgdGhlIG91dGVyIElQdjYKJiM0MzsjIGRlc3RpbmF0aW9uIG9mIHRoZSBlbmNhcHN1bGF0ZWQgcGFja2V0LiBUaGUgYXR0cmlidXRlIHNlbGVjdHMgdGhlIEZJQiB0YWJsZQomIzQzOyMgdXNlZCBmb3IgdGhpcyBwb3N0LWVuY2FwIFNJRCByb3V0ZSBsb29rdXAuCiYjNDM7IwomIzQzOyMgVHdvIHJvdXRlcnMgKHJ0LTEsIHJ0LTIpIHByb3ZpZGUgTDMgVlBOIHNlcnZpY2VzIG92ZXIgYW4gSVB2NiB1bmRlcmxheQomIzQzOyMgKGZkMDA6Oi82NCkuIEVhY2ggcm91dGVyIHVzZXMgYSBzZXBhcmF0ZSBWUkYgcGVyIHRlbmFudCwgd2l0aCBkZWZhdWx0CiYjNDM7IyBibGFja2hvbGUgcm91dGVzIChJUHY0IGFuZCBJUHY2KSB0byBwcmV2ZW50IHRyYWZmaWMgZnJvbSBsZWFraW5nIG91dCBvZgomIzQzOyMgdGhlIFZSRi4gVGVuYW50IHRyYWZmaWMgaXMgZW5jYXBzdWxhdGVkLCB0aGVuIGRlY2Fwc3VsYXRlZCB3aXRoIGFuCiYjNDM7IyBFbmQuRFQ0Ni4gRWFjaCByb3V0ZXIgcHJveGllcyBib3RoIE5EUCBhbmQgQVJQLgomIzQzOyMKJiM0MzsjIFRoZSByb3V0ZXMgdGhhdCBtYXRjaCB0aGUgZmlyc3QgU0lEcyBhcmUgaW5zdGFsbGVkIGluIGEgZGVkaWNhdGVkIHVuZGVybGF5CiYjNDM7IyB0YWJsZSAoNTAwKSByYXRoZXIgdGhhbiB0aGUgbWFpbiB0YWJsZSAoMjU0KS4gVGhlIGVuY2FwIHJvdXRlcyB1c2UKJiM0MzsjICYjMzQ7bG9va3VwIDUwMCYjMzQ7IHRvIHNlbGVjdCB0aGlzIHRhYmxlIGZvciB0aGUgcG9zdC1lbmNhcCBTSUQgcm91dGUgbG9va3VwLgomIzQzOyMKJiM0MzsjIFdpdGhvdXQgdGhlICYjMzQ7bG9va3VwJiMzNDsgYXR0cmlidXRlLCB0aGUgcm91dGUgZm9yIHRoZSBmaXJzdCBTSUQgY2Fubm90IGJlIGZvdW5kOgomIzQzOyMgIC0gb24gdGhlIGlucHV0IHBhdGggKGZvcndhcmRlZCB0cmFmZmljKSwgdGhlIGxvb2t1cCBzdGF5cyBpbiB0aGUgVlJGCiYjNDM7IyAgICBhbmQgaGl0cyB0aGUgYmxhY2tob2xlOwomIzQzOyMgIC0gb24gdGhlIG91dHB1dCBwYXRoIChsb2NhbGx5IG9yaWdpbmF0ZWQgdHJhZmZpYyksIHRoZSBsb29rdXAgZmFsbHMKJiM0MzsjICAgIHRocm91Z2ggdG8gdGhlIG1haW4gdGFibGUsIHdpdGggbm8gcm91dGUgdG8gdGhlIGZpcnN0IFNJRC4KJiM0MzsjCiYjNDM7IwomIzQzOyMgTGVnZW5kIChzcGVjaWZpYyBwZXItdGVuYW50IGFkZHJlc3NlcyBhcmUgaW4gdGhlIGluc3RhbnRpYXRpb24gdGFibGVzIGJlbG93KToKJiM0MzsjICAgWCAgICAgICAgICA9IHRlbmFudCBpZCBhbmQgVlJGIHRhYmxlIGlkOyB0d28gdGVuYW50czogMTAwIGFuZCAyMDAKJiM0MzsjICAgICAgICAgICAgICAgICgmIzM0O3RYJiMzNDsgbWVhbnMgdGVuYW50IFgsIGUuZy4gdDEwMCwgdDIwMCkKJiM0MzsjICAgYSwgYiAgICAgICA9IHRoZSB0d28gaG9zdCBpZHMgb2YgdGhlIHRlbmFudAomIzQzOyMgICBIQSwgSEIgICAgID0gYWRkcmVzc2VzIG9mIGhvc3QgYSwgaG9zdCBiCiYjNDM7IyAgIFJMTzEsIFJMTzIgPSBybG8tWCByb3V0ZXIgbG9vcGJhY2sgYWRkcmVzcyBvbiBydC0xLCBydC0yICh0ZW5hbnQgZ2F0ZXdheQomIzQzOyMgICAgICAgICAgICAgICAgZm9yIHRoZSBvdXRwdXQgcGF0aCwgZHVhbC1zdGFjaykKJiM0MzsjICAgdnJmLVggICAgICA9IHBlci10ZW5hbnQgVlJGIG9uIGVhY2ggcm91dGVyICh0YWJsZSBYKQomIzQzOyMKJiM0MzsjIENvbnN0YW50cyAoc2FtZSBmb3IgZXZlcnkgdGVuYW50KToKJiM0MzsjICAgdW5kZXJsYXkgICA9IHRhYmxlIDUwMDsgcG9zdC1lbmNhcCBTSUQgcm91dGUgbG9va3VwICh2aWEgJiMzNDtsb29rdXAgNTAwJiMzNDspCiYjNDM7IyAgIGxvY2Fsc2lkICAgPSB0YWJsZSA5MDsgaG9sZHMgdGhlIGRlY2FwIFNJRHMgKEVuZC5EVDQ2KQomIzQzOyMgICBmZDAwOjovNjQgID0gdW5kZXJsYXkgbGluayBiZXR3ZWVuIHJ0LTEgYW5kIHJ0LTIKJiM0MzsjICAgdmV0aC10WCAgICA9IGNhZmU6OjI1NC8xMC4wLjAuMjU0ICh0ZW5hbnQgZ2F0ZXdheSBvbiB2ZXRoLCBib3RoIHJvdXRlcnMpCiYjNDM7IwomIzQzOyMKJiM0MzsjICYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOwomIzQzOyMgfCAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwKJiM0MzsjIHwgICBocy10WC1hIG5ldG5zICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIGhzLXRYLWIgbmV0bnMgICB8CiYjNDM7IyB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgfAomIzQzOyMgfCAgJiM0MzstLS0tLS0tLS0tLS0tJiM0MzsgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICYjNDM7LS0tLS0tLS0tLS0tLSYjNDM7ICB8CiYjNDM7IyB8ICB8ICAgIHZldGgwICAgIHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHwgICAgdmV0aDAgICAgfCAgfAomIzQzOyMgfCAgfCAgICAgSEEgICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICB8ICAgICBIQiAgICAgIHwgIHwKJiM0MzsjIHwgICYjNDM7LS0tLS0tLS0tLS0tLSYjNDM7ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAmIzQzOy0tLS0tLS0tLS0tLS0mIzQzOyAgfAomIzQzOyMgfCAgICAgICAgLiAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgLiAgICAgICAgIHwKJiM0MzsjICYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOwomIzQzOyMgICAgICAgICAgLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLgomIzQzOyMgICAgICAgICAgLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLgomIzQzOyMgJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7ICAgJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7CiYjNDM7IyB8ICAgICAgICAuICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAuICAgICAgICAgfAomIzQzOyMgfCAmIzQzOy0tLS0tLS0tLS0tLS0tLSYjNDM7ICAgICAgICAgICAgICAgICB8ICAgfCAgICAgICAgICAgICAgICAgJiM0MzstLS0tLS0tLS0tLS0tLS0mIzQzOyB8CiYjNDM7IyB8IHwgICB2ZXRoLXRYICAgICB8ICAgJiM0MzstLS0tLS0tLS0tJiM0MzsgIHwgICB8ICAmIzQzOy0tLS0tLS0tLS0mIzQzOyAgIHwgICB2ZXRoLXRYICAgICB8IHwKJiM0MzsjIHwgfCAgOjoyNTQvLjI1NCAgIHwgICB8IGxvY2Fsc2lkIHwgIHwgICB8ICB8IGxvY2Fsc2lkIHwgICB8ICA6OjI1NC8uMjU0ICAgfCB8CiYjNDM7IyB8ICYjNDM7LS0tLS0tLSYjNDM7LS0tLS0tLSYjNDM7ICAgJiM0MzstLS0tLS0tLS0tJiM0MzsgIHwgICB8ICAmIzQzOy0tLS0tLS0tLS0mIzQzOyAgICYjNDM7LS0tLS0tLSYjNDM7LS0tLS0tLSYjNDM7IHwKJiM0MzsjIHwgICAgICAgICB8ICAgICAgICAgICAmIzQzOy0tLS0tLS0tLS0mIzQzOyAgfCAgIHwgICYjNDM7LS0tLS0tLS0tLSYjNDM7ICAgICAgICAgICB8ICAgICAgICAgfAomIzQzOyMgfCAgICAmIzQzOy0tLS0mIzQzOy0tLS0mIzQzOyAgICAgIHwgdW5kZXJsYXkgfCAgfCAgIHwgIHwgdW5kZXJsYXkgfCAgICAgICYjNDM7LS0tLSYjNDM7LS0tLSYjNDM7ICAgIHwKJiM0MzsjIHwgICAgfCB2cmYtWCAgIHwgICAgICAmIzQzOy0tLS0tLS0tLS0mIzQzOyAgfCAgIHwgICYjNDM7LS0tLS0tLS0tLSYjNDM7ICAgICAgfCB2cmYtWCAgIHwgICAgfAomIzQzOyMgfCAgICAmIzQzOy0tLS0mIzQzOy0tLS0mIzQzOyAgICAgICAgICAgICAgICAgICAgfCAgIHwgICAgICAgICAgICAgICAgICAgICYjNDM7LS0tLSYjNDM7LS0tLSYjNDM7ICAgIHwKJiM0MzsjIHwgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8CiYjNDM7IyB8ICAgJiM0MzstLS0tLSYjNDM7LS0tLSYjNDM7ICAgICYjNDM7LS0tLS0tLS0tLS0tJiM0MzsgIHwgICB8ICAmIzQzOy0tLS0tLS0tLS0tLSYjNDM7ICAgICYjNDM7LS0tLSYjNDM7LS0tLS0mIzQzOyAgIHwKJiM0MzsjIHwgICB8ICBybG8tWCAgIHwgICAgfCAgIHZldGgwICAgIHwgIHwgICB8ICB8ICAgdmV0aDAgICAgfCAgICB8ICBybG8tWCAgIHwgICB8CiYjNDM7IyB8ICAgfCAgIFJMTzEgICB8ICAgIHwgZmQwMDo6MS82NCB8Li58Li4ufC4ufCBmZDAwOjoyLzY0IHwgICAgfCAgIFJMTzIgICB8ICAgfAomIzQzOyMgfCAgICYjNDM7LS0tLS0tLS0tLSYjNDM7ICAgICYjNDM7LS0tLS0tLS0tLS0tJiM0MzsgIHwgICB8ICAmIzQzOy0tLS0tLS0tLS0tLSYjNDM7ICAgICYjNDM7LS0tLS0tLS0tLSYjNDM7ICAgfAomIzQzOyMgfCAgICAgICAgICAgICAgcnQtMSBuZXRucyAgICAgICAgICAgfCAgIHwgICAgICAgICAgcnQtMiBuZXRucyAgICAgICAgICAgICAgIHwKJiM0MzsjICYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOyAgICYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOwomIzQzOyMKJiM0MzsjCiYjNDM7IyBQZXItdGVuYW50IGluc3RhbnRpYXRpb246CiYjNDM7IyAmIzQzOy0tLS0tJiM0MzstLS0tLS0mIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOwomIzQzOyMgfCAgWCAgfCBhLCBiIHwgSEEgICAgICAgICAgICAgICAgfCBIQiAgICAgICAgICAgICAgICB8CiYjNDM7IyAmIzQzOy0tLS0tJiM0MzstLS0tLS0mIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOwomIzQzOyMgfCAxMDAgfCAxLCAyIHwgY2FmZTo6MSwgMTAuMC4wLjEgfCBjYWZlOjoyLCAxMC4wLjAuMiB8CiYjNDM7IyB8IDIwMCB8IDMsIDQgfCBjYWZlOjozLCAxMC4wLjAuMyB8IGNhZmU6OjQsIDEwLjAuMC40IHwKJiM0MzsjICYjNDM7LS0tLS0mIzQzOy0tLS0tLSYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7CiYjNDM7IwomIzQzOyMgUm91dGVyIGxvb3BiYWNrIChybG8tWCkgYWRkcmVzc2VzLCBwZXIgdGVuYW50OgomIzQzOyMgJiM0MzstLS0tLSYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJiM0MzsKJiM0MzsjIHwgIFggIHwgUkxPMSAocnQtMSkgICAgICAgICAgIHwgUkxPMiAocnQtMikgICAgICAgICAgIHwKJiM0MzsjICYjNDM7LS0tLS0mIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7CiYjNDM7IyB8IDEwMCB8IGNhZmU6OjEwMSwgMTAuMC4wLjEwMSB8IGNhZmU6OjEwMiwgMTAuMC4wLjEwMiB8CiYjNDM7IyB8IDIwMCB8IGNhZmU6OjIwMSwgMTAuMC4wLjIwMSB8IGNhZmU6OjIwMiwgMTAuMC4wLjIwMiB8CiYjNDM7IyAmIzQzOy0tLS0tJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOwomIzQzOyMKJiM0MzsjCiYjNDM7IyBOZXR3b3JrIGNvbmZpZ3VyYXRpb24KJiM0MzsjID09PT09PT09PT09PT09PT09PT09PQomIzQzOyMKJiM0MzsjIHJ0LTE6IGxvY2Fsc2lkIHRhYmxlICh0YWJsZSA5MCkKJiM0MzsjICYjNDM7LS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJiM0MzsKJiM0MzsjIHwgdGVuYW50IHwgU0lEICAgICAgICAgICAgICAgIHwgQWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgfAomIzQzOyMgJiM0MzstLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOwomIzQzOyMgfCAgMTAwICAgfCBmYzAwOjI6MToxMDA6OjBkNDYgfCBhcHBseSBTUnY2IEVuZC5EVDQ2IHZyZnRhYmxlIDEwMCB8CiYjNDM7IyB8ICAyMDAgICB8IGZjMDA6MjoxOjIwMDo6MGQ0NiB8IGFwcGx5IFNSdjYgRW5kLkRUNDYgdnJmdGFibGUgMjAwIHwKJiM0MzsjICYjNDM7LS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJiM0MzsKJiM0MzsjCiYjNDM7IyBydC0xOiB1bmRlcmxheSB0YWJsZSAodGFibGUgNTAwKSAtIHBvc3QtZW5jYXAgU0lEIHJvdXRlIGxvb2t1cAomIzQzOyMgJiM0MzstLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOwomIzQzOyMgfCB0ZW5hbnQgfCBTSUQgICAgICAgICAgICAgICAgfCBBY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICB8CiYjNDM7IyAmIzQzOy0tLS0tLS0tJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7CiYjNDM7IyB8ICAxMDAgICB8IGZjMDA6MToyOjEwMDo6MGQ0NiB8IGZvcndhcmQgdmlhIGZkMDA6OjIgZGV2IHZldGgwIHwKJiM0MzsjIHwgIDIwMCAgIHwgZmMwMDoxOjI6MjAwOjowZDQ2IHwgZm9yd2FyZCB2aWEgZmQwMDo6MiBkZXYgdmV0aDAgfAomIzQzOyMgJiM0MzstLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOwomIzQzOyMKJiM0MzsjIHJ0LTE6IFZSRiB0YWJsZXMgKHBlciB0ZW5hbnQ6IHZyZi1YID0gdGFibGUgWCkKJiM0MzsjICYjNDM7LS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJiM0MzsKJiM0MzsjIHwgdGVuYW50IHwgZHN0ICAgICAgICB8IGVuY2FwIGFjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAomIzQzOyMgJiM0MzstLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0tJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOwomIzQzOyMgfCAxMDAgICAgfCBjYWZlOjoyICAgIHwgZW5jYXAgc2VncyBmYzAwOjE6MjoxMDA6OjBkNDYgbG9va3VwIDUwMCB8CiYjNDM7IyB8ICAgICAgICB8IDEwLjAuMC4yICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKJiM0MzsjIHwgICAgICAgIHwgY2FmZTo6MTAyICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAomIzQzOyMgfCAgICAgICAgfCAxMC4wLjAuMTAyIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiYjNDM7IyB8IDIwMCAgICB8IGNhZmU6OjQgICAgfCBlbmNhcCBzZWdzIGZjMDA6MToyOjIwMDo6MGQ0NiBsb29rdXAgNTAwIHwKJiM0MzsjIHwgICAgICAgIHwgMTAuMC4wLjQgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAomIzQzOyMgfCAgICAgICAgfCBjYWZlOjoyMDIgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiYjNDM7IyB8ICAgICAgICB8IDEwLjAuMC4yMDIgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKJiM0MzsjICYjNDM7LS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJiM0MzsKJiM0MzsjCiYjNDM7IwomIzQzOyMgcnQtMjogbG9jYWxzaWQgdGFibGUgKHRhYmxlIDkwKQomIzQzOyMgJiM0MzstLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOwomIzQzOyMgfCB0ZW5hbnQgfCBTSUQgICAgICAgICAgICAgICAgfCBBY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICB8CiYjNDM7IyAmIzQzOy0tLS0tLS0tJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7CiYjNDM7IyB8ICAxMDAgICB8IGZjMDA6MToyOjEwMDo6MGQ0NiB8IGFwcGx5IFNSdjYgRW5kLkRUNDYgdnJmdGFibGUgMTAwIHwKJiM0MzsjIHwgIDIwMCAgIHwgZmMwMDoxOjI6MjAwOjowZDQ2IHwgYXBwbHkgU1J2NiBFbmQuRFQ0NiB2cmZ0YWJsZSAyMDAgfAomIzQzOyMgJiM0MzstLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOwomIzQzOyMKJiM0MzsjIHJ0LTI6IHVuZGVybGF5IHRhYmxlICh0YWJsZSA1MDApIC0gcG9zdC1lbmNhcCBTSUQgcm91dGUgbG9va3VwCiYjNDM7IyAmIzQzOy0tLS0tLS0tJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7CiYjNDM7IyB8IHRlbmFudCB8IFNJRCAgICAgICAgICAgICAgICB8IEFjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgIHwKJiM0MzsjICYjNDM7LS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJiM0MzsKJiM0MzsjIHwgIDEwMCAgIHwgZmMwMDoyOjE6MTAwOjowZDQ2IHwgZm9yd2FyZCB2aWEgZmQwMDo6MSBkZXYgdmV0aDAgfAomIzQzOyMgfCAgMjAwICAgfCBmYzAwOjI6MToyMDA6OjBkNDYgfCBmb3J3YXJkIHZpYSBmZDAwOjoxIGRldiB2ZXRoMCB8CiYjNDM7IyAmIzQzOy0tLS0tLS0tJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7CiYjNDM7IwomIzQzOyMgcnQtMjogVlJGIHRhYmxlcyAocGVyIHRlbmFudDogdnJmLVggPSB0YWJsZSBYKQomIzQzOyMgJiM0MzstLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0tJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOwomIzQzOyMgfCB0ZW5hbnQgfCBkc3QgICAgICAgIHwgZW5jYXAgYWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiYjNDM7IyAmIzQzOy0tLS0tLS0tJiM0MzstLS0tLS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7CiYjNDM7IyB8IDEwMCAgICB8IGNhZmU6OjEgICAgfCBlbmNhcCBzZWdzIGZjMDA6MjoxOjEwMDo6MGQ0NiBsb29rdXAgNTAwIHwKJiM0MzsjIHwgICAgICAgIHwgMTAuMC4wLjEgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAomIzQzOyMgfCAgICAgICAgfCBjYWZlOjoxMDEgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiYjNDM7IyB8ICAgICAgICB8IDEwLjAuMC4xMDEgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKJiM0MzsjIHwgMjAwICAgIHwgY2FmZTo6MyAgICB8IGVuY2FwIHNlZ3MgZmMwMDoyOjE6MjAwOjowZDQ2IGxvb2t1cCA1MDAgfAomIzQzOyMgfCAgICAgICAgfCAxMC4wLjAuMyAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiYjNDM7IyB8ICAgICAgICB8IGNhZmU6OjIwMSAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKJiM0MzsjIHwgICAgICAgIHwgMTAuMC4wLjIwMSB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAomIzQzOyMgJiM0MzstLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0tJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOwomIzQzOyMgV2l0aGluIGEgdGVuYW50LCBhIHNpbmdsZSBTSUQgcmVhY2hlcyB0aGUgYWRqYWNlbnQgcm91dGVyIChpdHMgbG9vcGJhY2spCiYjNDM7IyBhbmQgdGhlIHJlbW90ZSBob3N0IGNvbm5lY3RlZCB0byBpdCwgaW4gYm90aCBJUHY0IGFuZCBJUHY2LgomIzQzOyMKJiM0MzsjIEZvciBib3RoIHJ0LTEgYW5kIHJ0LTIsIGVhY2ggVlJGIGFsc28gaGFzIHRoZSBjb25uZWN0ZWQgaG9zdCBwcmVmaXggKGNhZmU6Oi82NAomIzQzOyMgb3IgMTAuMC4wLjAvMjQpIGFuZCBhIGRlZmF1bHQgYmxhY2tob2xlIChJUHY0IGFuZCBJUHY2KS4KJiM0MzsjCiYjNDM7IwomIzQzOyMgTG9jYWxseSBvcmlnaW5hdGVkIHRyYWZmaWMgKG91dHB1dCBwYXRoKQomIzQzOyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQomIzQzOyMKJiM0MzsjIFRoZSBjb25maWd1cmF0aW9uIGFib3ZlIGNvdmVycyBmb3J3YXJkZWQgdHJhZmZpYywgd2hlcmUgcGFja2V0cyBhcnJpdmUgZnJvbQomIzQzOyMgYSBob3N0IGFuZCBhcmUgZW5jYXBzdWxhdGVkIGJ5IHRoZSByb3V0ZXIuIFRvIGFsc28gdGVzdCByb3V0ZXItb3JpZ2luYXRlZAomIzQzOyMgdHJhZmZpYywgZWFjaCByb3V0ZXIgcGluZ3MgdGhlIG90aGVyIHJvdXRlciYjMzk7cyBsb29wYmFjayBhZGRyZXNzIHRocm91Z2gKJiM0MzsjIHRoZSBWUE4uCiYjNDM7IwomIzQzOyMgRXhhbXBsZSAodGVuYW50IDEwMCksIHJ0LTEgcGluZ3MgY2FmZTo6MTAyIChydC0yJiMzOTtzIGxvb3BiYWNrKToKJiM0MzsjICAgMS4gcnQtMSBsb29rcyB1cCBjYWZlOjoxMDIgaW4gdnJmLTEwMCBhbmQgZW5jYXBzdWxhdGVzIGl0IChTSUQKJiM0MzsjICAgICAgZmMwMDoxOjI6MTAwOjowZDQ2KSwgdGhlbiAmIzM0O2xvb2t1cCA1MDAmIzM0OyBmaW5kcyB0aGUgcm91dGUgZm9yIHRoZSBTSUQgaW4gdGhlCiYjNDM7IyAgICAgIHVuZGVybGF5IHRhYmxlIChuZXh0IGhvcCBmZDAwOjoyKSBhbmQgZm9yd2FyZHMgaXQ7CiYjNDM7IyAgIDIuIHJ0LTIgZGVjYXBzdWxhdGVzIGl0IChsb2NhbHNpZCwgRW5kLkRUNDYpIGFuZCBkZWxpdmVycyBpdCBsb2NhbGx5CiYjNDM7IyAgICAgIChjYWZlOjoxMDIgaXMgb24gdGhlIHJsby0xMDAgaW50ZXJmYWNlKTsKJiM0MzsjICAgMy4gcnQtMiByZXBsaWVzIHdpdGggZGVzdGluYXRpb24gY2FmZTo6MTAxIChydC0xJiMzOTtzIGxvb3BiYWNrKS4gcnQtMiBsb29rcyB1cAomIzQzOyMgICAgICBjYWZlOjoxMDEgaW4gdnJmLTEwMCBhbmQgZW5jYXBzdWxhdGVzIGl0IGJhY2sgdG8gcnQtMSAoYWdhaW4gdmlhICYjMzQ7bG9va3VwCiYjNDM7IyAgICAgIDUwMCYjMzQ7KS4gcnQtMSBkZWNhcHN1bGF0ZXMgaXQgYW5kIGRlbGl2ZXJzIGl0LgomIzQzOwomIzQzOyMgc2hlbGxjaGVjayBzb3VyY2U9bGliLnNoCiYjNDM7c291cmNlIGxpYi5zaAomIzQzOwomIzQzO3JlYWRvbmx5IExPQ0FMU0lEX1RBQkxFX0lEPTkwCiYjNDM7cmVhZG9ubHkgVU5ERVJMQVlfVEFCTEVfSUQ9NTAwCiYjNDM7cmVhZG9ubHkgSVB2Nl9SVF9ORVRXT1JLPWZkMDAKJiM0MztyZWFkb25seSBJUHY2X0hTX05FVFdPUks9Y2FmZQomIzQzO3JlYWRvbmx5IElQdjRfSFNfTkVUV09SSz0xMC4wLjAKJiM0MztyZWFkb25seSBWUE5fTE9DQVRPUl9TRVJWSUNFPWZjMDAKJiM0MztyZWFkb25seSBEVDQ2X0ZVTkM9MGQ0NgomIzQzO3JlYWRvbmx5IERVTU1ZX0RFVk5BTUU9ZHVtMAomIzQzO3JlYWRvbmx5IElQdjZfVEVTVFNfQUREUj0yMDAxOmRiODo6MQomIzQzO3JlYWRvbmx5IFRFU1RTX1RBQkxFX0lEPTU0MzIxCiYjNDM7UElOR19USU1FT1VUX1NFQz00CiYjNDM7CiYjNDM7U0VUVVBfRVJSPTEKJiM0MzsKJiM0MztyZXQ9JHtrc2Z0X3NraXB9CiYjNDM7bnN1Y2Nlc3M9MAomIzQzO25mYWlsPTAKJiM0MzsKJiM0MztQQVVTRV9PTl9GQUlMPSR7UEFVU0VfT05fRkFJTDo9bm99CiYjNDM7CiYjNDM7bG9nX3Rlc3QoKQomIzQzO3sKJiM0MzsJbG9jYWwgcmM9JiMzNDskMSYjMzQ7CiYjNDM7CWxvY2FsIGV4cGVjdGVkPSYjMzQ7JDImIzM0OwomIzQzOwlsb2NhbCBtc2c9JiMzNDskMyYjMzQ7CiYjNDM7CiYjNDM7CWlmIFsgJiMzNDske3JjfSYjMzQ7IC1lcSAmIzM0OyR7ZXhwZWN0ZWR9JiMzNDsgXTsgdGhlbgomIzQzOwkJbnN1Y2Nlc3M9JCgobnN1Y2Nlc3MmIzQzOzEpKQomIzQzOwkJcHJpbnRmICYjMzQ7XG4gICAgVEVTVDogJS02MHMgIFsgT0sgXVxuJiMzNDsgJiMzNDske21zZ30mIzM0OwomIzQzOwllbHNlCiYjNDM7CQlyZXQ9MQomIzQzOwkJbmZhaWw9JCgobmZhaWwmIzQzOzEpKQomIzQzOwkJcHJpbnRmICYjMzQ7XG4gICAgVEVTVDogJS02MHMgIFtGQUlMXVxuJiMzNDsgJiMzNDske21zZ30mIzM0OwomIzQzOwkJaWYgWyAmIzM0OyR7UEFVU0VfT05fRkFJTH0mIzM0OyA9ICYjMzQ7eWVzJiMzNDsgXTsgdGhlbgomIzQzOwkJCWVjaG8KJiM0MzsJCQllY2hvICYjMzQ7aGl0IGVudGVyIHRvIGNvbnRpbnVlLCAmIzM5O3EmIzM5OyB0byBxdWl0JiMzNDsKJiM0MzsJCQlyZWFkIC1yIGEKJiM0MzsJCQlbICYjMzQ7JGEmIzM0OyA9ICYjMzQ7cSYjMzQ7IF0gJmFtcDsmYW1wOyBleGl0IDEKJiM0MzsJCWZpCiYjNDM7CWZpCiYjNDM7fQomIzQzOwomIzQzO3ByaW50X2xvZ190ZXN0X3Jlc3VsdHMoKQomIzQzO3sKJiM0MzsJcHJpbnRmICYjMzQ7XG5UZXN0cyBwYXNzZWQ6ICUzZFxuJiMzNDsgJiMzNDske25zdWNjZXNzfSYjMzQ7CiYjNDM7CXByaW50ZiAmIzM0O1Rlc3RzIGZhaWxlZDogJTNkXG4mIzM0OyAgICYjMzQ7JHtuZmFpbH0mIzM0OwomIzQzOwomIzQzOwkjIHdoZW4gYSB0ZXN0IGZhaWxzLCB0aGUgdmFsdWUgb2YgJiMzOTtyZXQmIzM5OyBpcyBzZXQgdG8gMSAoZXJyb3IgY29kZSkuCiYjNDM7CSMgQ29udmVyc2VseSwgd2hlbiBhbGwgdGVzdHMgYXJlIHBhc3NlZCBzdWNjZXNzZnVsbHksIHRoZSAmIzM5O3JldCYjMzk7IHZhbHVlCiYjNDM7CSMgaXMgc2V0IHRvIDAgKHN1Y2Nlc3MgY29kZSkuCiYjNDM7CWlmIFsgJiMzNDske3JldH0mIzM0OyAtbmUgMSBdOyB0aGVuCiYjNDM7CQlyZXQ9MAomIzQzOwlmaQomIzQzO30KJiM0MzsKJiM0Mztsb2dfc2VjdGlvbigpCiYjNDM7ewomIzQzOwllY2hvCiYjNDM7CWVjaG8gJiMzNDsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyYjMzQ7CiYjNDM7CWVjaG8gJiMzNDtURVNUIFNFQ1RJT046ICQqJiMzNDsKJiM0MzsJZWNobyAmIzM0OyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjJiMzNDsKJiM0Mzt9CiYjNDM7CiYjNDM7Z2V0X3J0bmFtZSgpCiYjNDM7ewomIzQzOwlsb2NhbCBydGlkPSYjMzQ7JDEmIzM0OwomIzQzOwomIzQzOwllY2hvICYjMzQ7cnRfJHtydGlkfSYjMzQ7CiYjNDM7fQomIzQzOwomIzQzO2dldF9ydF9uc25hbWUoKQomIzQzO3sKJiM0MzsJbG9jYWwgcnRpZD0mIzM0OyQxJiMzNDsKJiM0MzsJbG9jYWwgdmFybmFtZQomIzQzOwomIzQzOwl2YXJuYW1lPSYjMzQ7JChnZXRfcnRuYW1lICYjMzQ7JHtydGlkfSYjMzQ7KSYjMzQ7CiYjNDM7CWVjaG8gJiMzNDskeyF2YXJuYW1lfSYjMzQ7CiYjNDM7fQomIzQzOwomIzQzO2dldF9oc25hbWUoKQomIzQzO3sKJiM0MzsJbG9jYWwgdGlkPSYjMzQ7JDEmIzM0OwomIzQzOwlsb2NhbCBoc2lkPSYjMzQ7JDImIzM0OwomIzQzOwomIzQzOwllY2hvICYjMzQ7aHNfdCR7dGlkfV8ke2hzaWR9JiMzNDsKJiM0Mzt9CiYjNDM7CiYjNDM7Z2V0X2hzX25zbmFtZSgpCiYjNDM7ewomIzQzOwlsb2NhbCB0aWQ9JiMzNDskMSYjMzQ7CiYjNDM7CWxvY2FsIGhzaWQ9JiMzNDskMiYjMzQ7CiYjNDM7CWxvY2FsIHZhcm5hbWUKJiM0MzsKJiM0MzsJdmFybmFtZT0mIzM0OyQoZ2V0X2hzbmFtZSAmIzM0OyR7dGlkfSYjMzQ7ICYjMzQ7JHtoc2lkfSYjMzQ7KSYjMzQ7CiYjNDM7CWVjaG8gJiMzNDskeyF2YXJuYW1lfSYjMzQ7CiYjNDM7fQomIzQzOwomIzQzO2NsZWFudXAoKQomIzQzO3sKJiM0MzsJaXAgbGluayBkZWwgdmV0aC1ydC0xIDImZ3Q7L2Rldi9udWxsIHx8IHRydWUKJiM0MzsJaXAgbGluayBkZWwgdmV0aC1ydC0yIDImZ3Q7L2Rldi9udWxsIHx8IHRydWUKJiM0MzsKJiM0MzsJY2xlYW51cF9hbGxfbnMKJiM0MzsKJiM0MzsJIyBjaGVjayB3aGV0aGVyIHRoZSBzZXR1cCBwaGFzZSB3YXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseSBvciBub3QuIEluCiYjNDM7CSMgY2FzZSBvZiBhbiBlcnJvciBkdXJpbmcgdGhlIHNldHVwIHBoYXNlIG9mIHRoZSB0ZXN0aW5nIGVudmlyb25tZW50LAomIzQzOwkjIHRoZSBzZWxmdGVzdCBpcyBjb25zaWRlcmVkIGFzICYjMzQ7c2tpcHBlZCYjMzQ7LgomIzQzOwlpZiBbICYjMzQ7JHtTRVRVUF9FUlJ9JiMzNDsgLW5lIDAgXTsgdGhlbgomIzQzOwkJZWNobyAmIzM0O1NLSVA6IFNldHRpbmcgdXAgdGhlIHRlc3RpbmcgZW52aXJvbm1lbnQgZmFpbGVkJiMzNDsKJiM0MzsJCWV4aXQgJiMzNDske2tzZnRfc2tpcH0mIzM0OwomIzQzOwlmaQomIzQzOwomIzQzOwlleGl0ICYjMzQ7JHtyZXR9JiMzNDsKJiM0Mzt9CiYjNDM7CiYjNDM7IyBIb3N0IGlkIG9mIHRoZSByb3V0ZXIgbG9vcGJhY2sgKHJsbykgZm9yIGEgKHJvdXRlciwgdGVuYW50KSBwYWlyLgomIzQzOyMgRS5nLiBydC0xL3RlbmFudCAxMDAgLSZndDsgMTAxLCBydC0yL3RlbmFudCAyMDAgLSZndDsgMjAyLgomIzQzO2dldF9ybG9faG9zdGlkKCkKJiM0Mzt7CiYjNDM7CWxvY2FsIHJ0aWQ9JiMzNDskMSYjMzQ7CiYjNDM7CWxvY2FsIHRpZD0mIzM0OyQyJiMzNDsKJiM0MzsKJiM0MzsJZWNobyAmIzM0OyQoKHRpZCAmIzQzOyBydGlkKSkmIzM0OwomIzQzO30KJiM0MzsKJiM0MztidWlsZF92cG5fc2lkKCkKJiM0Mzt7CiYjNDM7CWxvY2FsIHJ0c3JjPSYjMzQ7JDEmIzM0OwomIzQzOwlsb2NhbCBydGRzdD0mIzM0OyQyJiMzNDsKJiM0MzsJbG9jYWwgdGlkPSYjMzQ7JDMmIzM0OwomIzQzOwomIzQzOwllY2hvICYjMzQ7JHtWUE5fTE9DQVRPUl9TRVJWSUNFfToke3J0c3JjfToke3J0ZHN0fToke3RpZH06OiR7RFQ0Nl9GVU5DfSYjMzQ7CiYjNDM7fQomIzQzOwomIzQzOyMgSW5zdGFsbCBhIGR1YWwtc3RhY2sgKElQdjYgYW5kIElQdjQpIGVuY2FwIHJvdXRlIGluIGEgVlJGIG9uIHRoZSBnaXZlbgomIzQzOyMgcm91dGVyLgomIzQzOyMgYXJnczoKJiM0MzsjICAkMSAtIHJvdXRlciBpZAomIzQzOyMgICQyIC0gaG9zdCBwYXJ0IG9mIHRoZSBJUHY2IGRlc3RpbmF0aW9uCiYjNDM7IyAgJDMgLSBob3N0IHBhcnQgb2YgdGhlIElQdjQgZGVzdGluYXRpb24KJiM0MzsjICAkNCAtIFNSdjYgU0lEIHVzZWQgYXMgdGhlIGVuY2FwIGRlc3RpbmF0aW9uCiYjNDM7IyAgJDUgLSB0ZW5hbnQgaWQKJiM0MzsjICAkNiAtIGlmICYjMzQ7dHJ1ZSYjMzQ7LCBhZGQgdGhlICYjMzQ7bG9va3VwJiMzNDsgYXR0cmlidXRlIHRvIHRoZSBlbmNhcCByb3V0ZQomIzQzO19fc2V0X2VuY2FwX3JvdXRlKCkKJiM0Mzt7CiYjNDM7CWxvY2FsIHJ0PSYjMzQ7JDEmIzM0OwomIzQzOwlsb2NhbCBkc3Q2PSYjMzQ7JDImIzM0OwomIzQzOwlsb2NhbCBkc3Q0PSYjMzQ7JDMmIzM0OwomIzQzOwlsb2NhbCBzaWQ9JiMzNDskNCYjMzQ7CiYjNDM7CWxvY2FsIHRpZD0mIzM0OyQ1JiMzNDsKJiM0MzsJbG9jYWwgdXNlX2xvb2t1cD0mIzM0OyQ2JiMzNDsKJiM0MzsJbG9jYWwgbG9va3VwPSYjMzk7JiMzOTsKJiM0MzsJbG9jYWwgcnRuYW1lCiYjNDM7CiYjNDM7CXJ0bmFtZT0mIzM0OyQoZ2V0X3J0X25zbmFtZSAmIzM0OyR7cnR9JiMzNDspJiMzNDsKJiM0MzsKJiM0MzsJaWYgWyAmIzM0OyR7dXNlX2xvb2t1cH0mIzM0OyA9ICYjMzQ7dHJ1ZSYjMzQ7IF07IHRoZW4KJiM0MzsJCWxvb2t1cD0mIzM0O2xvb2t1cCAke1VOREVSTEFZX1RBQkxFX0lEfSYjMzQ7CiYjNDM7CWZpCiYjNDM7CiYjNDM7CSMgc2hlbGxjaGVjayBkaXNhYmxlPVNDMjA4NgomIzQzOwlpcCAtbmV0bnMgJiMzNDske3J0bmFtZX0mIzM0OyAtNiByb3V0ZSByZXBsYWNlIFwKJiM0MzsJCSYjMzQ7JHtJUHY2X0hTX05FVFdPUkt9Ojoke2RzdDZ9LzEyOCYjMzQ7IHZyZiAmIzM0O3ZyZi0ke3RpZH0mIzM0OyBcCiYjNDM7CQllbmNhcCBzZWc2IG1vZGUgZW5jYXAgc2VncyAmIzM0OyR7c2lkfSYjMzQ7ICR7bG9va3VwfSBkZXYgdmV0aDAKJiM0MzsKJiM0MzsJIyBzaGVsbGNoZWNrIGRpc2FibGU9U0MyMDg2CiYjNDM7CWlwIC1uZXRucyAmIzM0OyR7cnRuYW1lfSYjMzQ7IC00IHJvdXRlIHJlcGxhY2UgXAomIzQzOwkJJiMzNDske0lQdjRfSFNfTkVUV09SS30uJHtkc3Q0fS8zMiYjMzQ7IHZyZiAmIzM0O3ZyZi0ke3RpZH0mIzM0OyBcCiYjNDM7CQllbmNhcCBzZWc2IG1vZGUgZW5jYXAgc2VncyAmIzM0OyR7c2lkfSYjMzQ7ICR7bG9va3VwfSBkZXYgdmV0aDAKJiM0Mzt9CiYjNDM7CiYjNDM7IyBJbnN0YWxsIHRoZSBkdWFsLXN0YWNrIGVuY2FwIHJvdXRlIGZvciBhIHRlbmFudCBob3N0IG9uIHJ0LCB3aXRoIHRoZQomIzQzOyMgJiMzNDtsb29rdXAmIzM0OyBhdHRyaWJ1dGUgc28gdGhlIGZpcnN0IFNJRCBpcyBsb29rZWQgdXAgaW4gdGhlIHVuZGVybGF5IHRhYmxlLgomIzQzOyMgYXJnczoKJiM0MzsjICAkMSAtIHJvdXRlciBpZCB3aGVyZSB0aGUgZW5jYXAgcm91dGUgaXMgaW5zdGFsbGVkCiYjNDM7IyAgJDIgLSBob3N0IGRlc3RpbmF0aW9uIGlkIChob3N0IHBhcnQgb2YgY2FmZTo6Jmx0O2lkJmd0Oy8xMjggYW5kIDEwLjAuMC4mbHQ7aWQmZ3Q7LzMyKQomIzQzOyMgICQzIC0gU1J2NiBTSUQgdXNlZCBhcyB0aGUgZW5jYXAgZGVzdGluYXRpb24KJiM0MzsjICAkNCAtIHRlbmFudCBpZAomIzQzO3NldF9ob3N0X2VuY2FwX3JvdXRlKCkKJiM0Mzt7CiYjNDM7CWxvY2FsIHJ0PSYjMzQ7JDEmIzM0OwomIzQzOwlsb2NhbCBoc2RzdD0mIzM0OyQyJiMzNDsKJiM0MzsJbG9jYWwgc2lkPSYjMzQ7JDMmIzM0OwomIzQzOwlsb2NhbCB0aWQ9JiMzNDskNCYjMzQ7CiYjNDM7CiYjNDM7CV9fc2V0X2VuY2FwX3JvdXRlICYjMzQ7JHtydH0mIzM0OyAmIzM0OyR7aHNkc3R9JiMzNDsgJiMzNDske2hzZHN0fSYjMzQ7ICYjMzQ7JHtzaWR9JiMzNDsgJiMzNDske3RpZH0mIzM0OyB0cnVlCiYjNDM7fQomIzQzOwomIzQzO3NldF9ob3N0X2VuY2FwX3JvdXRlX25vbG9va3VwKCkKJiM0Mzt7CiYjNDM7CWxvY2FsIHJ0PSYjMzQ7JDEmIzM0OwomIzQzOwlsb2NhbCBoc2RzdD0mIzM0OyQyJiMzNDsKJiM0MzsJbG9jYWwgc2lkPSYjMzQ7JDMmIzM0OwomIzQzOwlsb2NhbCB0aWQ9JiMzNDskNCYjMzQ7CiYjNDM7CiYjNDM7CV9fc2V0X2VuY2FwX3JvdXRlICYjMzQ7JHtydH0mIzM0OyAmIzM0OyR7aHNkc3R9JiMzNDsgJiMzNDske2hzZHN0fSYjMzQ7ICYjMzQ7JHtzaWR9JiMzNDsgJiMzNDske3RpZH0mIzM0OyBmYWxzZQomIzQzO30KJiM0MzsKJiM0MzsjIEluc3RhbGwgdGhlIGR1YWwtc3RhY2sgZW5jYXAgcm91dGUgb24gcnRzcmMgdG93YXJkIHJ0ZHN0JiMzOTtzIHJsbyBsb29wYmFjawomIzQzOyMgKFJMTzEgb3IgUkxPMiwgc2VlIGhlYWRlciksIHdpdGggdGhlICYjMzQ7bG9va3VwJiMzNDsgYXR0cmlidXRlIHNvIHRoZSBmaXJzdAomIzQzOyMgU0lEIGlzIGxvb2tlZCB1cCBpbiB0aGUgdW5kZXJsYXkgdGFibGUuCiYjNDM7IyBhcmdzOgomIzQzOyMgICQxIC0gcm91dGVyIGlkIHdoZXJlIHRoZSBlbmNhcCByb3V0ZSBpcyBpbnN0YWxsZWQKJiM0MzsjICAkMiAtIHJvdXRlciBpZCB3aG9zZSBsb29wYmFjayBhZGRyZXNzIGlzIHRoZSByb3V0ZSBkZXN0aW5hdGlvbgomIzQzOyMgICQzIC0gU1J2NiBTSUQgdXNlZCBhcyB0aGUgZW5jYXAgZGVzdGluYXRpb24KJiM0MzsjICAkNCAtIHRlbmFudCBpZAomIzQzO3NldF9nd19lbmNhcF9yb3V0ZSgpCiYjNDM7ewomIzQzOwlsb2NhbCBydHNyYz0mIzM0OyQxJiMzNDsKJiM0MzsJbG9jYWwgcnRkc3Q9JiMzNDskMiYjMzQ7CiYjNDM7CWxvY2FsIHNpZD0mIzM0OyQzJiMzNDsKJiM0MzsJbG9jYWwgdGlkPSYjMzQ7JDQmIzM0OwomIzQzOwlsb2NhbCBkc3QKJiM0MzsKJiM0MzsJZHN0PSYjMzQ7JChnZXRfcmxvX2hvc3RpZCAmIzM0OyR7cnRkc3R9JiMzNDsgJiMzNDske3RpZH0mIzM0OykmIzM0OwomIzQzOwomIzQzOwlfX3NldF9lbmNhcF9yb3V0ZSAmIzM0OyR7cnRzcmN9JiMzNDsgJiMzNDske2RzdH0mIzM0OyAmIzM0OyR7ZHN0fSYjMzQ7ICYjMzQ7JHtzaWR9JiMzNDsgJiMzNDske3RpZH0mIzM0OyB0cnVlCiYjNDM7fQomIzQzOwomIzQzO3NldF9nd19lbmNhcF9yb3V0ZV9ub2xvb2t1cCgpCiYjNDM7ewomIzQzOwlsb2NhbCBydHNyYz0mIzM0OyQxJiMzNDsKJiM0MzsJbG9jYWwgcnRkc3Q9JiMzNDskMiYjMzQ7CiYjNDM7CWxvY2FsIHNpZD0mIzM0OyQzJiMzNDsKJiM0MzsJbG9jYWwgdGlkPSYjMzQ7JDQmIzM0OwomIzQzOwlsb2NhbCBkc3QKJiM0MzsKJiM0MzsJZHN0PSYjMzQ7JChnZXRfcmxvX2hvc3RpZCAmIzM0OyR7cnRkc3R9JiMzNDsgJiMzNDske3RpZH0mIzM0OykmIzM0OwomIzQzOwomIzQzOwlfX3NldF9lbmNhcF9yb3V0ZSAmIzM0OyR7cnRzcmN9JiMzNDsgJiMzNDske2RzdH0mIzM0OyAmIzM0OyR7ZHN0fSYjMzQ7ICYjMzQ7JHtzaWR9JiMzNDsgJiMzNDske3RpZH0mIzM0OyBmYWxzZQomIzQzO30KJiM0MzsKJiM0MzsjIFNldHVwIHRoZSBiYXNpYyBuZXR3b3JraW5nIGZvciBhIHJvdXRlcgomIzQzO3NldHVwX3J0X25ldHdvcmtpbmcoKQomIzQzO3sKJiM0MzsJbG9jYWwgaWQ9JiMzNDskMSYjMzQ7CiYjNDM7CWxvY2FsIG5zbmFtZQomIzQzOwomIzQzOwluc25hbWU9JiMzNDskKGdldF9ydF9uc25hbWUgJiMzNDske2lkfSYjMzQ7KSYjMzQ7CiYjNDM7CiYjNDM7CWlwIGxpbmsgc2V0ICYjMzQ7dmV0aC1ydC0ke2lkfSYjMzQ7IG5ldG5zICYjMzQ7JHtuc25hbWV9JiMzNDsKJiM0MzsJaXAgLW5ldG5zICYjMzQ7JHtuc25hbWV9JiMzNDsgbGluayBzZXQgJiMzNDt2ZXRoLXJ0LSR7aWR9JiMzNDsgbmFtZSB2ZXRoMAomIzQzOwomIzQzOwlpcCBuZXRucyBleGVjICYjMzQ7JHtuc25hbWV9JiMzNDsgc3lzY3RsIC13cSBuZXQuaXB2Ni5jb25mLmFsbC5hY2NlcHRfZGFkPTAKJiM0MzsJaXAgbmV0bnMgZXhlYyAmIzM0OyR7bnNuYW1lfSYjMzQ7IHN5c2N0bCAtd3EgbmV0LmlwdjYuY29uZi5kZWZhdWx0LmFjY2VwdF9kYWQ9MAomIzQzOwomIzQzOwlpcCAtbmV0bnMgJiMzNDske25zbmFtZX0mIzM0OyBhZGRyIGFkZCAmIzM0OyR7SVB2Nl9SVF9ORVRXT1JLfTo6JHtpZH0vNjQmIzM0OyBkZXYgdmV0aDAgbm9kYWQKJiM0MzsJaXAgLW5ldG5zICYjMzQ7JHtuc25hbWV9JiMzNDsgbGluayBzZXQgdmV0aDAgdXAKJiM0MzsKJiM0MzsJaXAgbmV0bnMgZXhlYyAmIzM0OyR7bnNuYW1lfSYjMzQ7IHN5c2N0bCAtd3EgbmV0LmlwdjQuaXBfZm9yd2FyZD0xCiYjNDM7CWlwIG5ldG5zIGV4ZWMgJiMzNDske25zbmFtZX0mIzM0OyBzeXNjdGwgLXdxIG5ldC5pcHY2LmNvbmYuYWxsLmZvcndhcmRpbmc9MQomIzQzO30KJiM0MzsKJiM0MzsjIFNldHVwIGEgaG9zdCBuYW1lc3BhY2UgYW5kIGF0dGFjaCBpdCB0byBpdHMgZ2F0ZXdheQomIzQzO3NldHVwX2hzKCkKJiM0Mzt7CiYjNDM7CWxvY2FsIGhpZD0mIzM0OyQxJiMzNDsKJiM0MzsJbG9jYWwgcmlkPSYjMzQ7JDImIzM0OwomIzQzOwlsb2NhbCB0aWQ9JiMzNDskMyYjMzQ7CiYjNDM7CWxvY2FsIHJ0dmV0aD0mIzM0O3ZldGgtdCR7dGlkfSYjMzQ7CiYjNDM7CWxvY2FsIGhzbmFtZQomIzQzOwlsb2NhbCBydG5hbWUKJiM0MzsKJiM0MzsJaHNuYW1lPSYjMzQ7JChnZXRfaHNfbnNuYW1lICYjMzQ7JHt0aWR9JiMzNDsgJiMzNDske2hpZH0mIzM0OykmIzM0OwomIzQzOwlydG5hbWU9JiMzNDskKGdldF9ydF9uc25hbWUgJiMzNDske3JpZH0mIzM0OykmIzM0OwomIzQzOwomIzQzOwlpcCBuZXRucyBleGVjICYjMzQ7JHtoc25hbWV9JiMzNDsgc3lzY3RsIC13cSBuZXQuaXB2Ni5jb25mLmFsbC5hY2NlcHRfZGFkPTAKJiM0MzsJaXAgbmV0bnMgZXhlYyAmIzM0OyR7aHNuYW1lfSYjMzQ7IHN5c2N0bCAtd3EgbmV0LmlwdjYuY29uZi5kZWZhdWx0LmFjY2VwdF9kYWQ9MAomIzQzOwomIzQzOwlpcCAtbmV0bnMgJiMzNDske2hzbmFtZX0mIzM0OyBsaW5rIGFkZCB2ZXRoMCB0eXBlIHZldGggcGVlciBuYW1lICYjMzQ7JHtydHZldGh9JiMzNDsKJiM0MzsJaXAgLW5ldG5zICYjMzQ7JHtoc25hbWV9JiMzNDsgbGluayBzZXQgJiMzNDske3J0dmV0aH0mIzM0OyBuZXRucyAmIzM0OyR7cnRuYW1lfSYjMzQ7CiYjNDM7CiYjNDM7CWlwIC1uZXRucyAmIzM0OyR7aHNuYW1lfSYjMzQ7IGFkZHIgYWRkIFwKJiM0MzsJCSYjMzQ7JHtJUHY2X0hTX05FVFdPUkt9Ojoke2hpZH0vNjQmIzM0OyBkZXYgdmV0aDAgbm9kYWQKJiM0MzsJaXAgLW5ldG5zICYjMzQ7JHtoc25hbWV9JiMzNDsgYWRkciBhZGQgXAomIzQzOwkJJiMzNDske0lQdjRfSFNfTkVUV09SS30uJHtoaWR9LzI0JiMzNDsgZGV2IHZldGgwCiYjNDM7CiYjNDM7CWlwIC1uZXRucyAmIzM0OyR7aHNuYW1lfSYjMzQ7IGxpbmsgc2V0IHZldGgwIHVwCiYjNDM7fQomIzQzOwomIzQzOyMgU2V0dXAgdGhlIHBlci10ZW5hbnQgVlJGIG9uIGEgcm91dGVyIChnYXRld2F5LCBsb29wYmFjaywgYmxhY2tob2xlKQomIzQzO3NldHVwX3J0KCkKJiM0Mzt7CiYjNDM7CWxvY2FsIHJpZD0mIzM0OyQxJiMzNDsKJiM0MzsJbG9jYWwgdGlkPSYjMzQ7JDImIzM0OwomIzQzOwlsb2NhbCBydHZldGg9JiMzNDt2ZXRoLXQke3RpZH0mIzM0OwomIzQzOwlsb2NhbCBybG9fZGV2PSYjMzQ7cmxvLSR7dGlkfSYjMzQ7CiYjNDM7CWxvY2FsIHJ0bmFtZQomIzQzOwlsb2NhbCBnd19hZGRyX3Y2CiYjNDM7CWxvY2FsIGd3X2FkZHJfdjQKJiM0MzsKJiM0MzsJcnRuYW1lPSYjMzQ7JChnZXRfcnRfbnNuYW1lICYjMzQ7JHtyaWR9JiMzNDspJiMzNDsKJiM0MzsKJiM0MzsJZ3dfYWRkcl92Nj0mIzM0OyR7SVB2Nl9IU19ORVRXT1JLfTo6JChnZXRfcmxvX2hvc3RpZCAmIzM0OyR7cmlkfSYjMzQ7ICYjMzQ7JHt0aWR9JiMzNDspJiMzNDsKJiM0MzsJZ3dfYWRkcl92ND0mIzM0OyR7SVB2NF9IU19ORVRXT1JLfS4kKGdldF9ybG9faG9zdGlkICYjMzQ7JHtyaWR9JiMzNDsgJiMzNDske3RpZH0mIzM0OykmIzM0OwomIzQzOwomIzQzOwlpcCAtbmV0bnMgJiMzNDske3J0bmFtZX0mIzM0OyBsaW5rIGFkZCAmIzM0O3ZyZi0ke3RpZH0mIzM0OyB0eXBlIHZyZiB0YWJsZSAmIzM0OyR7dGlkfSYjMzQ7CiYjNDM7CWlwIC1uZXRucyAmIzM0OyR7cnRuYW1lfSYjMzQ7IGxpbmsgc2V0ICYjMzQ7dnJmLSR7dGlkfSYjMzQ7IHVwCiYjNDM7CiYjNDM7CWlwIC1uZXRucyAmIzM0OyR7cnRuYW1lfSYjMzQ7IGxpbmsgc2V0ICYjMzQ7JHtydHZldGh9JiMzNDsgbWFzdGVyICYjMzQ7dnJmLSR7dGlkfSYjMzQ7CiYjNDM7CiYjNDM7CWlwIC1uZXRucyAmIzM0OyR7cnRuYW1lfSYjMzQ7IGFkZHIgYWRkIFwKJiM0MzsJCSYjMzQ7JHtJUHY2X0hTX05FVFdPUkt9OjoyNTQvNjQmIzM0OyBkZXYgJiMzNDske3J0dmV0aH0mIzM0OyBub2RhZAomIzQzOwlpcCAtbmV0bnMgJiMzNDske3J0bmFtZX0mIzM0OyBhZGRyIGFkZCBcCiYjNDM7CQkmIzM0OyR7SVB2NF9IU19ORVRXT1JLfS4yNTQvMjQmIzM0OyBkZXYgJiMzNDske3J0dmV0aH0mIzM0OwomIzQzOwomIzQzOwlpcCAtbmV0bnMgJiMzNDske3J0bmFtZX0mIzM0OyBsaW5rIHNldCAmIzM0OyR7cnR2ZXRofSYjMzQ7IHVwCiYjNDM7CiYjNDM7CWlwIG5ldG5zIGV4ZWMgJiMzNDske3J0bmFtZX0mIzM0OyBcCiYjNDM7CQlzeXNjdGwgLXdxICYjMzQ7bmV0LmlwdjYuY29uZi4ke3J0dmV0aH0ucHJveHlfbmRwPTEmIzM0OwomIzQzOwlpcCBuZXRucyBleGVjICYjMzQ7JHtydG5hbWV9JiMzNDsgXAomIzQzOwkJc3lzY3RsIC13cSAmIzM0O25ldC5pcHY0LmNvbmYuJHtydHZldGh9LnByb3h5X2FycD0xJiMzNDsKJiM0MzsKJiM0MzsJaXAgbmV0bnMgZXhlYyAmIzM0OyR7cnRuYW1lfSYjMzQ7IHNoIC1jICYjMzQ7ZWNobyAxICZndDsgL3Byb2Mvc3lzL25ldC92cmYvc3RyaWN0X21vZGUmIzM0OwomIzQzOwomIzQzOwkjIHJvdXRlciBsb29wYmFjayBpbnRlcmZhY2UgZm9yIGxvY2FsbHkgb3JpZ2luYXRlZCB0cmFmZmljCiYjNDM7CWlwIC1uZXRucyAmIzM0OyR7cnRuYW1lfSYjMzQ7IGxpbmsgYWRkICYjMzQ7JHtybG9fZGV2fSYjMzQ7IHR5cGUgZHVtbXkKJiM0MzsJaXAgLW5ldG5zICYjMzQ7JHtydG5hbWV9JiMzNDsgbGluayBzZXQgJiMzNDske3Jsb19kZXZ9JiMzNDsgbWFzdGVyICYjMzQ7dnJmLSR7dGlkfSYjMzQ7CiYjNDM7CiYjNDM7CWlwIC1uZXRucyAmIzM0OyR7cnRuYW1lfSYjMzQ7IGFkZHIgYWRkICYjMzQ7JHtnd19hZGRyX3Y2fS8xMjgmIzM0OyBcCiYjNDM7CQlkZXYgJiMzNDske3Jsb19kZXZ9JiMzNDsgbm9kYWQKJiM0MzsJaXAgLW5ldG5zICYjMzQ7JHtydG5hbWV9JiMzNDsgYWRkciBhZGQgJiMzNDske2d3X2FkZHJfdjR9LzMyJiMzNDsgXAomIzQzOwkJZGV2ICYjMzQ7JHtybG9fZGV2fSYjMzQ7CiYjNDM7CiYjNDM7CWlwIC1uZXRucyAmIzM0OyR7cnRuYW1lfSYjMzQ7IGxpbmsgc2V0ICYjMzQ7JHtybG9fZGV2fSYjMzQ7IHVwCiYjNDM7CiYjNDM7CSMgZGVmYXVsdCBibGFja2hvbGUgcm91dGVzIGluIHRoZSBWUkY6IGFueSB0cmFmZmljIHRoYXQgZG9lcyBub3QgbWF0Y2gKJiM0MzsJIyBhIHNwZWNpZmljIHJvdXRlIGlzIGRyb3BwZWQuIFdpdGhvdXQgdGhlICYjMzQ7bG9va3VwJiMzNDsgYXR0cmlidXRlIG9uIHRoZQomIzQzOwkjIGVuY2FwIHJvdXRlLCB0aGUgcm91dGUgZm9yIHRoZSBmaXJzdCBTSUQgY2Fubm90IGJlIGZvdW5kIGZyb20gd2l0aGluCiYjNDM7CSMgdGhlIFZSRi4KJiM0MzsJaXAgLW5ldG5zICYjMzQ7JHtydG5hbWV9JiMzNDsgLTYgcm91dGUgYWRkIGJsYWNraG9sZSBkZWZhdWx0IG1ldHJpYyA0Mjc4MTk4MjcyIFwKJiM0MzsJCXZyZiAmIzM0O3ZyZi0ke3RpZH0mIzM0OwomIzQzOwlpcCAtbmV0bnMgJiMzNDske3J0bmFtZX0mIzM0OyAtNCByb3V0ZSBhZGQgYmxhY2tob2xlIGRlZmF1bHQgbWV0cmljIDQyNzgxOTgyNzIgXAomIzQzOwkJdnJmICYjMzQ7dnJmLSR7dGlkfSYjMzQ7CiYjNDM7fQomIzQzOwomIzQzOyMgQ29uZmlndXJlIGEgb25lLXdheSBWUE4gcGF0aCB0b3dhcmRzIGhzZHN0IChvbiBydGRzdCkgZm9yIHRlbmFudCB0aWQuCiYjNDM7IyBUaGUgZW5jYXAgc2lkZSBpcyBzZXQgdXAgb24gcnRzcmMgYW5kIHRoZSBkZWNhcCBzaWRlIG9uIHJ0ZHN0LgomIzQzOyMgYXJnczoKJiM0MzsjICAkMSAtIHJvdXRlciBpZCB3aGVyZSB0aGUgZW5jYXAgc2lkZSBpcyBzZXQgdXAKJiM0MzsjICAkMiAtIGhvc3QgaWQgb2YgdGhlIGRlc3RpbmF0aW9uIGhvc3QKJiM0MzsjICAkMyAtIHJvdXRlciBpZCBvZiB0aGUgZGVzdGluYXRpb24gcm91dGVyIChjb25uZWN0ZWQgdG8gdGhlIGRlc3RpbmF0aW9uIGhvc3QpCiYjNDM7IyAgJDQgLSB0ZW5hbnQgaWQKJiM0MztzZXR1cF92cG5fY29uZmlnKCkKJiM0Mzt7CiYjNDM7CWxvY2FsIHJ0c3JjPSYjMzQ7JDEmIzM0OwomIzQzOwlsb2NhbCBoc2RzdD0mIzM0OyQyJiMzNDsKJiM0MzsJbG9jYWwgcnRkc3Q9JiMzNDskMyYjMzQ7CiYjNDM7CWxvY2FsIHRpZD0mIzM0OyQ0JiMzNDsKJiM0MzsJbG9jYWwgcnR2ZXRoPSYjMzQ7dmV0aC10JHt0aWR9JiMzNDsKJiM0MzsJbG9jYWwgcnRzcmNfbmFtZQomIzQzOwlsb2NhbCBydGRzdF9uYW1lCiYjNDM7CWxvY2FsIHZwbl9zaWQKJiM0MzsKJiM0MzsJcnRzcmNfbmFtZT0mIzM0OyQoZ2V0X3J0X25zbmFtZSAmIzM0OyR7cnRzcmN9JiMzNDspJiMzNDsKJiM0MzsJcnRkc3RfbmFtZT0mIzM0OyQoZ2V0X3J0X25zbmFtZSAmIzM0OyR7cnRkc3R9JiMzNDspJiMzNDsKJiM0MzsJdnBuX3NpZD0mIzM0OyQoYnVpbGRfdnBuX3NpZCAmIzM0OyR7cnRzcmN9JiMzNDsgJiMzNDske3J0ZHN0fSYjMzQ7ICYjMzQ7JHt0aWR9JiMzNDspJiMzNDsKJiM0MzsKJiM0MzsJaXAgLW5ldG5zICYjMzQ7JHtydHNyY19uYW1lfSYjMzQ7IC02IG5laWdoIGFkZCBwcm94eSBcCiYjNDM7CQkmIzM0OyR7SVB2Nl9IU19ORVRXT1JLfTo6JHtoc2RzdH0mIzM0OyBkZXYgJiMzNDske3J0dmV0aH0mIzM0OwomIzQzOwlzZXRfaG9zdF9lbmNhcF9yb3V0ZSAmIzM0OyR7cnRzcmN9JiMzNDsgJiMzNDske2hzZHN0fSYjMzQ7ICYjMzQ7JHt2cG5fc2lkfSYjMzQ7ICYjMzQ7JHt0aWR9JiMzNDsKJiM0MzsKJiM0MzsJaXAgLW5ldG5zICYjMzQ7JHtydHNyY19uYW1lfSYjMzQ7IC02IHJvdXRlIGFkZCAmIzM0OyR7dnBuX3NpZH0vMTI4JiMzNDsgXAomIzQzOwkJdGFibGUgJiMzNDske1VOREVSTEFZX1RBQkxFX0lEfSYjMzQ7IFwKJiM0MzsJCXZpYSAmIzM0O2ZkMDA6OiR7cnRkc3R9JiMzNDsgZGV2IHZldGgwCiYjNDM7CiYjNDM7CSMgc2V0IHRoZSBkZWNhcCByb3V0ZSBmb3IgZGVjYXBzdWxhdGluZyBwYWNrZXRzIGFycml2aW5nIGZyb20gcnRzcmMKJiM0MzsJIyBhbmQgZGVzdGluZWQgdG8gaHNkc3QKJiM0MzsJaXAgLW5ldG5zICYjMzQ7JHtydGRzdF9uYW1lfSYjMzQ7IC02IHJvdXRlIGFkZCAmIzM0OyR7dnBuX3NpZH0vMTI4JiMzNDsgXAomIzQzOwkJdGFibGUgJiMzNDske0xPQ0FMU0lEX1RBQkxFX0lEfSYjMzQ7IFwKJiM0MzsJCWVuY2FwIHNlZzZsb2NhbCBhY3Rpb24gRW5kLkRUNDYgXAomIzQzOwkJdnJmdGFibGUgJiMzNDske3RpZH0mIzM0OyBkZXYgJiMzNDt2cmYtJHt0aWR9JiMzNDsKJiM0MzsKJiM0MzsJIyBhbGwgU0lEcyBmb3IgVlBOcyBzdGFydCB3aXRoIGEgY29tbW9uIGxvY2F0b3Igd2hpY2ggaXMgZmMwMDo6LzE2LgomIzQzOwkjIFJvdXRlcyBmb3IgaGFuZGxpbmcgdGhlIFNSdjYgRW5kLkRUKiBiZWhhdmlvciBpbnN0YW5jZXMgYXJlIGdyb3VwZWQKJiM0MzsJIyB0b2dldGhlciBpbiB0aGUgJiMzOTtsb2NhbHNpZCYjMzk7IHRhYmxlLgomIzQzOwkjCiYjNDM7CSMgTk9URTogYWRkZWQgb25seSBvbmNlCiYjNDM7CWlmICEgaXAgLW5ldG5zICYjMzQ7JHtydGRzdF9uYW1lfSYjMzQ7IC02IHJ1bGUgc2hvdyB8IFwKJiM0MzsJICAgIGdyZXAgLXEgJiMzNDt0byAke1ZQTl9MT0NBVE9SX1NFUlZJQ0V9OjovMTYgbG9va3VwICR7TE9DQUxTSURfVEFCTEVfSUR9JiMzNDs7IHRoZW4KJiM0MzsJCWlwIC1uZXRucyAmIzM0OyR7cnRkc3RfbmFtZX0mIzM0OyAtNiBydWxlIGFkZCBcCiYjNDM7CQkJdG8gJiMzNDske1ZQTl9MT0NBVE9SX1NFUlZJQ0V9OjovMTYmIzM0OyBcCiYjNDM7CQkJbG9va3VwICYjMzQ7JHtMT0NBTFNJRF9UQUJMRV9JRH0mIzM0OyBwcmlvIDk5OQomIzQzOwlmaQomIzQzO30KJiM0MzsKJiM0MzsjIENvbmZpZ3VyZSBydHNyYyB0byByZWFjaCBydGRzdCYjMzk7cyBsb29wYmFjayBhZGRyZXNzIHRocm91Z2ggdGhlIFZQTi4KJiM0MzsjIGFyZ3M6CiYjNDM7IyAgJDEgLSByb3V0ZXIgaWQgd2hlcmUgdGhlIGVuY2FwIHJvdXRlIGlzIGluc3RhbGxlZAomIzQzOyMgICQyIC0gcm91dGVyIGlkIHdob3NlIGxvb3BiYWNrIGlzIHRoZSBkZXN0aW5hdGlvbgomIzQzOyMgICQzIC0gdGVuYW50IGlkCiYjNDM7c2V0dXBfdnBuX2d3X2VuY2FwKCkKJiM0Mzt7CiYjNDM7CWxvY2FsIHJ0c3JjPSYjMzQ7JDEmIzM0OwomIzQzOwlsb2NhbCBydGRzdD0mIzM0OyQyJiMzNDsKJiM0MzsJbG9jYWwgdGlkPSYjMzQ7JDMmIzM0OwomIzQzOwlsb2NhbCBzaWQKJiM0MzsKJiM0MzsJc2lkPSYjMzQ7JChidWlsZF92cG5fc2lkICYjMzQ7JHtydHNyY30mIzM0OyAmIzM0OyR7cnRkc3R9JiMzNDsgJiMzNDske3RpZH0mIzM0OykmIzM0OwomIzQzOwomIzQzOwlzZXRfZ3dfZW5jYXBfcm91dGUgJiMzNDske3J0c3JjfSYjMzQ7ICYjMzQ7JHtydGRzdH0mIzM0OyAmIzM0OyR7c2lkfSYjMzQ7ICYjMzQ7JHt0aWR9JiMzNDsKJiM0Mzt9CiYjNDM7CiYjNDM7c2V0dXAoKQomIzQzO3sKJiM0MzsJaXAgbGluayBhZGQgdmV0aC1ydC0xIHR5cGUgdmV0aCBwZWVyIG5hbWUgdmV0aC1ydC0yCiYjNDM7CXNldHVwX25zIHJ0XzEgcnRfMgomIzQzOwlzZXR1cF9ydF9uZXR3b3JraW5nIDEKJiM0MzsJc2V0dXBfcnRfbmV0d29ya2luZyAyCiYjNDM7CiYjNDM7CSMgc2V0dXAgdHdvIGhvc3RzIGZvciB0aGUgdGVuYW50IDEwMC4KJiM0MzsJIyAgLSBob3N0IGhzLXQxMDAtMSBpcyBkaXJlY3RseSBjb25uZWN0ZWQgdG8gdGhlIHJvdXRlciBydC0xOwomIzQzOwkjICAtIGhvc3QgaHMtdDEwMC0yIGlzIGRpcmVjdGx5IGNvbm5lY3RlZCB0byB0aGUgcm91dGVyIHJ0LTIuCiYjNDM7CXNldHVwX25zIGhzX3QxMDBfMSBoc190MTAwXzIKJiM0MzsJc2V0dXBfaHMgMSAxIDEwMAomIzQzOwlzZXR1cF9ocyAyIDIgMTAwCiYjNDM7CiYjNDM7CSMgc2V0dXAgdHdvIGhvc3RzIGZvciB0aGUgdGVuYW50IDIwMC4KJiM0MzsJIyAgLSBob3N0IGhzLXQyMDAtMyBpcyBkaXJlY3RseSBjb25uZWN0ZWQgdG8gdGhlIHJvdXRlciBydC0xOwomIzQzOwkjICAtIGhvc3QgaHMtdDIwMC00IGlzIGRpcmVjdGx5IGNvbm5lY3RlZCB0byB0aGUgcm91dGVyIHJ0LTIuCiYjNDM7CXNldHVwX25zIGhzX3QyMDBfMyBoc190MjAwXzQKJiM0MzsJc2V0dXBfaHMgMyAxIDIwMAomIzQzOwlzZXR1cF9ocyA0IDIgMjAwCiYjNDM7CiYjNDM7CSMgY29uZmlndXJlIGVhY2ggcm91dGVyIGZvciBlYWNoIHRlbmFudDogVlJGLCBibGFja2hvbGUgcm91dGVzLAomIzQzOwkjIHJvdXRlciBsb29wYmFjayBpbnRlcmZhY2UKJiM0MzsJc2V0dXBfcnQgMSAxMDAKJiM0MzsJc2V0dXBfcnQgMiAxMDAKJiM0MzsJc2V0dXBfcnQgMSAyMDAKJiM0MzsJc2V0dXBfcnQgMiAyMDAKJiM0MzsKJiM0MzsJIyBzZXR1cCB0aGUgTDMgVlBOIHdoaWNoIGNvbm5lY3RzIHRoZSBob3N0IGhzLXQxMDAtMSBhbmQgaG9zdCBocy10MTAwLTIKJiM0MzsJIyB3aXRoaW4gdGhlIHNhbWUgdGVuYW50IDEwMC4KJiM0MzsJc2V0dXBfdnBuX2NvbmZpZyAxIDIgMiAxMDAKJiM0MzsJc2V0dXBfdnBuX2NvbmZpZyAyIDEgMSAxMDAKJiM0MzsKJiM0MzsJIyBzZXR1cCB0aGUgTDMgVlBOIHdoaWNoIGNvbm5lY3RzIHRoZSBob3N0IGhzLXQyMDAtMyBhbmQgaG9zdCBocy10MjAwLTQKJiM0MzsJIyB3aXRoaW4gdGhlIHNhbWUgdGVuYW50IDIwMC4KJiM0MzsJc2V0dXBfdnBuX2NvbmZpZyAxIDQgMiAyMDAKJiM0MzsJc2V0dXBfdnBuX2NvbmZpZyAyIDMgMSAyMDAKJiM0MzsKJiM0MzsJIyBhbGxvdyBlYWNoIHJvdXRlciB0byByZWFjaCB0aGUgb3RoZXImIzM5O3MgbG9vcGJhY2sgdGhyb3VnaCB0aGUgVlBOCiYjNDM7CXNldHVwX3Zwbl9nd19lbmNhcCAyIDEgMTAwCiYjNDM7CXNldHVwX3Zwbl9nd19lbmNhcCAxIDIgMTAwCiYjNDM7CXNldHVwX3Zwbl9nd19lbmNhcCAyIDEgMjAwCiYjNDM7CXNldHVwX3Zwbl9nd19lbmNhcCAxIDIgMjAwCiYjNDM7CiYjNDM7CSMgdGVzdGluZyBlbnZpcm9ubWVudCB3YXMgc2V0IHVwIHN1Y2Nlc3NmdWxseQomIzQzOwlTRVRVUF9FUlI9MAomIzQzO30KJiM0MzsKJiM0MztjaGVja19ydF9jb25uZWN0aXZpdHkoKQomIzQzO3sKJiM0MzsJbG9jYWwgcnRzcmM9JiMzNDskMSYjMzQ7CiYjNDM7CWxvY2FsIHJ0ZHN0PSYjMzQ7JDImIzM0OwomIzQzOwlsb2NhbCBuc25hbWUKJiM0MzsKJiM0MzsJbnNuYW1lPSYjMzQ7JChnZXRfcnRfbnNuYW1lICYjMzQ7JHtydHNyY30mIzM0OykmIzM0OwomIzQzOwomIzQzOwlpcCBuZXRucyBleGVjICYjMzQ7JHtuc25hbWV9JiMzNDsgcGluZyAtYyAxIC1XIDEgJiMzNDske0lQdjZfUlRfTkVUV09SS306OiR7cnRkc3R9JiMzNDsgXAomIzQzOwkJJmd0Oy9kZXYvbnVsbCAyJmd0OyZhbXA7MQomIzQzO30KJiM0MzsKJiM0MztjaGVja19hbmRfbG9nX3J0X2Nvbm5lY3Rpdml0eSgpCiYjNDM7ewomIzQzOwlsb2NhbCBydHNyYz0mIzM0OyQxJiMzNDsKJiM0MzsJbG9jYWwgcnRkc3Q9JiMzNDskMiYjMzQ7CiYjNDM7CiYjNDM7CWNoZWNrX3J0X2Nvbm5lY3Rpdml0eSAmIzM0OyR7cnRzcmN9JiMzNDsgJiMzNDske3J0ZHN0fSYjMzQ7CiYjNDM7CWxvZ190ZXN0ICQ/IDAgJiMzNDtSb3V0ZXJzIGNvbm5lY3Rpdml0eTogcnQtJHtydHNyY30gLSZndDsgcnQtJHtydGRzdH0mIzM0OwomIzQzO30KJiM0MzsKJiM0MztjaGVja19oc19pcHY2X2Nvbm5lY3Rpdml0eSgpCiYjNDM7ewomIzQzOwlsb2NhbCBoc3NyYz0mIzM0OyQxJiMzNDsKJiM0MzsJbG9jYWwgaHNkc3Q9JiMzNDskMiYjMzQ7CiYjNDM7CWxvY2FsIHRpZD0mIzM0OyQzJiMzNDsKJiM0MzsJbG9jYWwgbnNuYW1lCiYjNDM7CiYjNDM7CW5zbmFtZT0mIzM0OyQoZ2V0X2hzX25zbmFtZSAmIzM0OyR7dGlkfSYjMzQ7ICYjMzQ7JHtoc3NyY30mIzM0OykmIzM0OwomIzQzOwomIzQzOwlpcCBuZXRucyBleGVjICYjMzQ7JHtuc25hbWV9JiMzNDsgcGluZyAtYyAxIC1XICYjMzQ7JHtQSU5HX1RJTUVPVVRfU0VDfSYjMzQ7IFwKJiM0MzsJCSYjMzQ7JHtJUHY2X0hTX05FVFdPUkt9Ojoke2hzZHN0fSYjMzQ7ICZndDsvZGV2L251bGwgMiZndDsmYW1wOzEKJiM0Mzt9CiYjNDM7CiYjNDM7Y2hlY2tfaHNfaXB2NF9jb25uZWN0aXZpdHkoKQomIzQzO3sKJiM0MzsJbG9jYWwgaHNzcmM9JiMzNDskMSYjMzQ7CiYjNDM7CWxvY2FsIGhzZHN0PSYjMzQ7JDImIzM0OwomIzQzOwlsb2NhbCB0aWQ9JiMzNDskMyYjMzQ7CiYjNDM7CWxvY2FsIG5zbmFtZQomIzQzOwomIzQzOwluc25hbWU9JiMzNDskKGdldF9oc19uc25hbWUgJiMzNDske3RpZH0mIzM0OyAmIzM0OyR7aHNzcmN9JiMzNDspJiMzNDsKJiM0MzsKJiM0MzsJaXAgbmV0bnMgZXhlYyAmIzM0OyR7bnNuYW1lfSYjMzQ7IHBpbmcgLWMgMSAtVyAmIzM0OyR7UElOR19USU1FT1VUX1NFQ30mIzM0OyBcCiYjNDM7CQkmIzM0OyR7SVB2NF9IU19ORVRXT1JLfS4ke2hzZHN0fSYjMzQ7ICZndDsvZGV2L251bGwgMiZndDsmYW1wOzEKJiM0Mzt9CiYjNDM7CiYjNDM7Y2hlY2tfYW5kX2xvZ19oc19jb25uZWN0aXZpdHkoKQomIzQzO3sKJiM0MzsJbG9jYWwgaHNzcmM9JiMzNDskMSYjMzQ7CiYjNDM7CWxvY2FsIGhzZHN0PSYjMzQ7JDImIzM0OwomIzQzOwlsb2NhbCB0aWQ9JiMzNDskMyYjMzQ7CiYjNDM7CiYjNDM7CWNoZWNrX2hzX2lwdjZfY29ubmVjdGl2aXR5ICYjMzQ7JHtoc3NyY30mIzM0OyAmIzM0OyR7aHNkc3R9JiMzNDsgJiMzNDske3RpZH0mIzM0OwomIzQzOwlsb2dfdGVzdCAkPyAwICYjMzQ7SVB2NiBjb25uZWN0aXZpdHk6IGhzLXQke3RpZH0tJHtoc3NyY30gLSZndDsgaHMtdCR7dGlkfS0ke2hzZHN0fSAodGVuYW50ICR7dGlkfSkmIzM0OwomIzQzOwomIzQzOwljaGVja19oc19pcHY0X2Nvbm5lY3Rpdml0eSAmIzM0OyR7aHNzcmN9JiMzNDsgJiMzNDske2hzZHN0fSYjMzQ7ICYjMzQ7JHt0aWR9JiMzNDsKJiM0MzsJbG9nX3Rlc3QgJD8gMCAmIzM0O0lQdjQgY29ubmVjdGl2aXR5OiBocy10JHt0aWR9LSR7aHNzcmN9IC0mZ3Q7IGhzLXQke3RpZH0tJHtoc2RzdH0gKHRlbmFudCAke3RpZH0pJiMzNDsKJiM0Mzt9CiYjNDM7CiYjNDM7Y2hlY2tfYW5kX2xvZ19oc19pc29sYXRpb24oKQomIzQzO3sKJiM0MzsJbG9jYWwgaHNzcmM9JiMzNDskMSYjMzQ7CiYjNDM7CWxvY2FsIHRpZHNyYz0mIzM0OyQyJiMzNDsKJiM0MzsJbG9jYWwgaHNkc3Q9JiMzNDskMyYjMzQ7CiYjNDM7CWxvY2FsIHRpZGRzdD0mIzM0OyQ0JiMzNDsKJiM0MzsKJiM0MzsJY2hlY2tfaHNfaXB2Nl9jb25uZWN0aXZpdHkgJiMzNDske2hzc3JjfSYjMzQ7ICYjMzQ7JHtoc2RzdH0mIzM0OyAmIzM0OyR7dGlkc3JjfSYjMzQ7CiYjNDM7CWxvZ190ZXN0ICQ/IDEgJiMzNDtJUHY2IGlzb2xhdGlvbjogaHMtdCR7dGlkc3JjfS0ke2hzc3JjfSAtWC0mZ3Q7IGhzLXQke3RpZGRzdH0tJHtoc2RzdH0mIzM0OwomIzQzOwomIzQzOwljaGVja19oc19pcHY0X2Nvbm5lY3Rpdml0eSAmIzM0OyR7aHNzcmN9JiMzNDsgJiMzNDske2hzZHN0fSYjMzQ7ICYjMzQ7JHt0aWRzcmN9JiMzNDsKJiM0MzsJbG9nX3Rlc3QgJD8gMSAmIzM0O0lQdjQgaXNvbGF0aW9uOiBocy10JHt0aWRzcmN9LSR7aHNzcmN9IC1YLSZndDsgaHMtdCR7dGlkZHN0fS0ke2hzZHN0fSYjMzQ7CiYjNDM7fQomIzQzOwomIzQzO2NoZWNrX2FuZF9sb2dfaHMyZ3dfY29ubmVjdGl2aXR5KCkKJiM0Mzt7CiYjNDM7CWxvY2FsIGhzc3JjPSYjMzQ7JDEmIzM0OwomIzQzOwlsb2NhbCB0aWQ9JiMzNDskMiYjMzQ7CiYjNDM7CiYjNDM7CWNoZWNrX2hzX2lwdjZfY29ubmVjdGl2aXR5ICYjMzQ7JHtoc3NyY30mIzM0OyAyNTQgJiMzNDske3RpZH0mIzM0OwomIzQzOwlsb2dfdGVzdCAkPyAwICYjMzQ7SVB2NiBjb25uZWN0aXZpdHk6IGhzLXQke3RpZH0tJHtoc3NyY30gLSZndDsgZ3cgKHRlbmFudCAke3RpZH0pJiMzNDsKJiM0MzsKJiM0MzsJY2hlY2tfaHNfaXB2NF9jb25uZWN0aXZpdHkgJiMzNDske2hzc3JjfSYjMzQ7IDI1NCAmIzM0OyR7dGlkfSYjMzQ7CiYjNDM7CWxvZ190ZXN0ICQ/IDAgJiMzNDtJUHY0IGNvbm5lY3Rpdml0eTogaHMtdCR7dGlkfS0ke2hzc3JjfSAtJmd0OyBndyAodGVuYW50ICR7dGlkfSkmIzM0OwomIzQzO30KJiM0MzsKJiM0Mztyb3V0ZXJfdGVzdHMoKQomIzQzO3sKJiM0MzsJbG9nX3NlY3Rpb24gJiMzNDtJUHY2IHJvdXRlcnMgY29ubmVjdGl2aXR5IHRlc3QmIzM0OwomIzQzOwomIzQzOwljaGVja19hbmRfbG9nX3J0X2Nvbm5lY3Rpdml0eSAxIDIKJiM0MzsJY2hlY2tfYW5kX2xvZ19ydF9jb25uZWN0aXZpdHkgMiAxCiYjNDM7fQomIzQzOwomIzQzO2hvc3QyZ2F0ZXdheV90ZXN0cygpCiYjNDM7ewomIzQzOwlsb2dfc2VjdGlvbiAmIzM0O0Nvbm5lY3Rpdml0eSB0ZXN0IGFtb25nIGhvc3RzIGFuZCBnYXRld2F5JiMzNDsKJiM0MzsKJiM0MzsJY2hlY2tfYW5kX2xvZ19oczJnd19jb25uZWN0aXZpdHkgMSAxMDAKJiM0MzsJY2hlY2tfYW5kX2xvZ19oczJnd19jb25uZWN0aXZpdHkgMiAxMDAKJiM0MzsKJiM0MzsJY2hlY2tfYW5kX2xvZ19oczJnd19jb25uZWN0aXZpdHkgMyAyMDAKJiM0MzsJY2hlY2tfYW5kX2xvZ19oczJnd19jb25uZWN0aXZpdHkgNCAyMDAKJiM0Mzt9CiYjNDM7CiYjNDM7aG9zdF92cG5fdGVzdHMoKQomIzQzO3sKJiM0MzsJbG9nX3NlY3Rpb24gJiMzNDtTUnY2IFZQTiBjb25uZWN0aXZpdHkgdGVzdCBhbW9uZyBob3N0cyBpbiB0aGUgc2FtZSB0ZW5hbnQmIzM0OwomIzQzOwomIzQzOwljaGVja19hbmRfbG9nX2hzX2Nvbm5lY3Rpdml0eSAxIDIgMTAwCiYjNDM7CWNoZWNrX2FuZF9sb2dfaHNfY29ubmVjdGl2aXR5IDIgMSAxMDAKJiM0MzsKJiM0MzsJY2hlY2tfYW5kX2xvZ19oc19jb25uZWN0aXZpdHkgMyA0IDIwMAomIzQzOwljaGVja19hbmRfbG9nX2hzX2Nvbm5lY3Rpdml0eSA0IDMgMjAwCiYjNDM7fQomIzQzOwomIzQzO2hvc3RfdnBuX2lzb2xhdGlvbl90ZXN0cygpCiYjNDM7ewomIzQzOwlsb2NhbCBsMT0mIzM0OzEgMiYjMzQ7CiYjNDM7CWxvY2FsIGwyPSYjMzQ7MyA0JiMzNDsKJiM0MzsJbG9jYWwgdDE9MTAwCiYjNDM7CWxvY2FsIHQyPTIwMAomIzQzOwlsb2NhbCBpCiYjNDM7CWxvY2FsIGoKJiM0MzsJbG9jYWwgdG1wCiYjNDM7CiYjNDM7CWxvZ19zZWN0aW9uICYjMzQ7U1J2NiBWUE4gaXNvbGF0aW9uIHRlc3QgYW1vbmcgaG9zdHMgaW4gZGlmZmVyZW50IHRlbmFudHMmIzM0OwomIzQzOwomIzQzOwlmb3IgXyBpbiAwIDE7IGRvCiYjNDM7CQlmb3IgaSBpbiAke2wxfTsgZG8KJiM0MzsJCQlmb3IgaiBpbiAke2wyfTsgZG8KJiM0MzsJCQkJY2hlY2tfYW5kX2xvZ19oc19pc29sYXRpb24gJiMzNDske2l9JiMzNDsgJiMzNDske3QxfSYjMzQ7ICYjMzQ7JHtqfSYjMzQ7ICYjMzQ7JHt0Mn0mIzM0OwomIzQzOwkJCWRvbmUKJiM0MzsJCWRvbmUKJiM0MzsKJiM0MzsJCSMgbGV0IHVzIHRlc3QgdGhlIHJldmVyc2UgcGF0aAomIzQzOwkJdG1wPSYjMzQ7JHtsMX0mIzM0OzsgbDE9JiMzNDske2wyfSYjMzQ7OyBsMj0mIzM0OyR7dG1wfSYjMzQ7CiYjNDM7CQl0bXA9JHt0MX07IHQxPSR7dDJ9OyB0Mj0ke3RtcH0KJiM0MzsJZG9uZQomIzQzO30KJiM0MzsKJiM0MztfX3Rlc3Rfbm9sb29rdXAoKQomIzQzO3sKJiM0MzsJbG9jYWwgaHNzcmM9JiMzNDskMSYjMzQ7CiYjNDM7CWxvY2FsIGhzZHN0PSYjMzQ7JDImIzM0OwomIzQzOwlsb2NhbCBydHNyYz0mIzM0OyQzJiMzNDsKJiM0MzsJbG9jYWwgcnRkc3Q9JiMzNDskNCYjMzQ7CiYjNDM7CWxvY2FsIHRpZD0mIzM0OyQ1JiMzNDsKJiM0MzsJbG9jYWwgdnBuX3NpZAomIzQzOwomIzQzOwl2cG5fc2lkPSYjMzQ7JChidWlsZF92cG5fc2lkICYjMzQ7JHtydHNyY30mIzM0OyAmIzM0OyR7cnRkc3R9JiMzNDsgJiMzNDske3RpZH0mIzM0OykmIzM0OwomIzQzOwomIzQzOwkjIHJlcGxhY2UgZW5jYXAgcm91dGUocykgd2l0aG91dCAmIzM0O2xvb2t1cCYjMzQ7IGF0dHJpYnV0ZQomIzQzOwlzZXRfaG9zdF9lbmNhcF9yb3V0ZV9ub2xvb2t1cCAmIzM0OyR7cnRzcmN9JiMzNDsgJiMzNDske2hzZHN0fSYjMzQ7ICYjMzQ7JHt2cG5fc2lkfSYjMzQ7ICYjMzQ7JHt0aWR9JiMzNDsKJiM0MzsKJiM0MzsJY2hlY2tfaHNfaXB2Nl9jb25uZWN0aXZpdHkgJiMzNDske2hzc3JjfSYjMzQ7ICYjMzQ7JHtoc2RzdH0mIzM0OyAmIzM0OyR7dGlkfSYjMzQ7CiYjNDM7CWxvZ190ZXN0ICQ/IDEgJiMzNDtJUHY2IHcvbyBsb29rdXA6IGhzLXQke3RpZH0tJHtoc3NyY30gLVgtJmd0OyBocy10JHt0aWR9LSR7aHNkc3R9ICh0ZW5hbnQgJHt0aWR9KSYjMzQ7CiYjNDM7CiYjNDM7CWNoZWNrX2hzX2lwdjRfY29ubmVjdGl2aXR5ICYjMzQ7JHtoc3NyY30mIzM0OyAmIzM0OyR7aHNkc3R9JiMzNDsgJiMzNDske3RpZH0mIzM0OwomIzQzOwlsb2dfdGVzdCAkPyAxICYjMzQ7SVB2NCB3L28gbG9va3VwOiBocy10JHt0aWR9LSR7aHNzcmN9IC1YLSZndDsgaHMtdCR7dGlkfS0ke2hzZHN0fSAodGVuYW50ICR7dGlkfSkmIzM0OwomIzQzOwomIzQzOwkjIHJlc3RvcmUgZW5jYXAgcm91dGUocykgd2l0aCAmIzM0O2xvb2t1cCYjMzQ7IGZvciBzdWJzZXF1ZW50IHRlc3RzCiYjNDM7CXNldF9ob3N0X2VuY2FwX3JvdXRlICYjMzQ7JHtydHNyY30mIzM0OyAmIzM0OyR7aHNkc3R9JiMzNDsgJiMzNDske3Zwbl9zaWR9JiMzNDsgJiMzNDske3RpZH0mIzM0OwomIzQzO30KJiM0MzsKJiM0Mztob3N0X3Zwbl9ub2xvb2t1cF90ZXN0cygpCiYjNDM7ewomIzQzOwlsb2dfc2VjdGlvbiAmIzM0O1NSdjYgVlBOIGNvbm5lY3Rpdml0eSB0ZXN0IGFtb25nIGhvc3RzIHcvbyBsb29rdXAmIzM0OwomIzQzOwomIzQzOwlfX3Rlc3Rfbm9sb29rdXAgMSAyIDEgMiAxMDAKJiM0MzsJX190ZXN0X25vbG9va3VwIDIgMSAyIDEgMTAwCiYjNDM7CiYjNDM7CV9fdGVzdF9ub2xvb2t1cCAzIDQgMSAyIDIwMAomIzQzOwlfX3Rlc3Rfbm9sb29rdXAgNCAzIDIgMSAyMDAKJiM0Mzt9CiYjNDM7CiYjNDM7Y2hlY2tfZ3dfaXB2Nl9jb25uZWN0aXZpdHkoKQomIzQzO3sKJiM0MzsJbG9jYWwgcnRzcmM9JiMzNDskMSYjMzQ7CiYjNDM7CWxvY2FsIHJ0ZHN0PSYjMzQ7JDImIzM0OwomIzQzOwlsb2NhbCB0aWRzcmM9JiMzNDskMyYjMzQ7CiYjNDM7CWxvY2FsIHRpZGRzdD0mIzM0OyQ0JiMzNDsKJiM0MzsJbG9jYWwgcnRuYW1lCiYjNDM7CWxvY2FsIHNyY192NgomIzQzOwlsb2NhbCBkc3RfdjYKJiM0MzsKJiM0MzsJcnRuYW1lPSYjMzQ7JChnZXRfcnRfbnNuYW1lICYjMzQ7JHtydHNyY30mIzM0OykmIzM0OwomIzQzOwlzcmNfdjY9JiMzNDske0lQdjZfSFNfTkVUV09SS306OiQoZ2V0X3Jsb19ob3N0aWQgJiMzNDske3J0c3JjfSYjMzQ7ICYjMzQ7JHt0aWRzcmN9JiMzNDspJiMzNDsKJiM0MzsJZHN0X3Y2PSYjMzQ7JHtJUHY2X0hTX05FVFdPUkt9OjokKGdldF9ybG9faG9zdGlkICYjMzQ7JHtydGRzdH0mIzM0OyAmIzM0OyR7dGlkZHN0fSYjMzQ7KSYjMzQ7CiYjNDM7CiYjNDM7CWlwIG5ldG5zIGV4ZWMgJiMzNDske3J0bmFtZX0mIzM0OyBpcCB2cmYgZXhlYyAmIzM0O3ZyZi0ke3RpZHNyY30mIzM0OyBcCiYjNDM7CQlwaW5nIC1jIDEgLVcgJiMzNDske1BJTkdfVElNRU9VVF9TRUN9JiMzNDsgXAomIzQzOwkJLUkgJiMzNDske3NyY192Nn0mIzM0OyAmIzM0OyR7ZHN0X3Y2fSYjMzQ7ICZndDsvZGV2L251bGwgMiZndDsmYW1wOzEKJiM0Mzt9CiYjNDM7CiYjNDM7Y2hlY2tfZ3dfaXB2NF9jb25uZWN0aXZpdHkoKQomIzQzO3sKJiM0MzsJbG9jYWwgcnRzcmM9JiMzNDskMSYjMzQ7CiYjNDM7CWxvY2FsIHJ0ZHN0PSYjMzQ7JDImIzM0OwomIzQzOwlsb2NhbCB0aWRzcmM9JiMzNDskMyYjMzQ7CiYjNDM7CWxvY2FsIHRpZGRzdD0mIzM0OyQ0JiMzNDsKJiM0MzsJbG9jYWwgcnRuYW1lCiYjNDM7CWxvY2FsIHNyY192NAomIzQzOwlsb2NhbCBkc3RfdjQKJiM0MzsKJiM0MzsJcnRuYW1lPSYjMzQ7JChnZXRfcnRfbnNuYW1lICYjMzQ7JHtydHNyY30mIzM0OykmIzM0OwomIzQzOwlzcmNfdjQ9JiMzNDske0lQdjRfSFNfTkVUV09SS30uJChnZXRfcmxvX2hvc3RpZCAmIzM0OyR7cnRzcmN9JiMzNDsgJiMzNDske3RpZHNyY30mIzM0OykmIzM0OwomIzQzOwlkc3RfdjQ9JiMzNDske0lQdjRfSFNfTkVUV09SS30uJChnZXRfcmxvX2hvc3RpZCAmIzM0OyR7cnRkc3R9JiMzNDsgJiMzNDske3RpZGRzdH0mIzM0OykmIzM0OwomIzQzOwomIzQzOwlpcCBuZXRucyBleGVjICYjMzQ7JHtydG5hbWV9JiMzNDsgaXAgdnJmIGV4ZWMgJiMzNDt2cmYtJHt0aWRzcmN9JiMzNDsgXAomIzQzOwkJcGluZyAtYyAxIC1XICYjMzQ7JHtQSU5HX1RJTUVPVVRfU0VDfSYjMzQ7IFwKJiM0MzsJCS1JICYjMzQ7JHtzcmNfdjR9JiMzNDsgJiMzNDske2RzdF92NH0mIzM0OyAmZ3Q7L2Rldi9udWxsIDImZ3Q7JmFtcDsxCiYjNDM7fQomIzQzOwomIzQzO2NoZWNrX2FuZF9sb2dfZ3dfY29ubmVjdGl2aXR5KCkKJiM0Mzt7CiYjNDM7CWxvY2FsIHJ0c3JjPSYjMzQ7JDEmIzM0OwomIzQzOwlsb2NhbCBydGRzdD0mIzM0OyQyJiMzNDsKJiM0MzsJbG9jYWwgdGlkPSYjMzQ7JDMmIzM0OwomIzQzOwomIzQzOwljaGVja19nd19pcHY2X2Nvbm5lY3Rpdml0eSAmIzM0OyR7cnRzcmN9JiMzNDsgJiMzNDske3J0ZHN0fSYjMzQ7ICYjMzQ7JHt0aWR9JiMzNDsgJiMzNDske3RpZH0mIzM0OwomIzQzOwlsb2dfdGVzdCAkPyAwICYjMzQ7SVB2NiBjb25uZWN0aXZpdHk6IHJ0LSR7cnRzcmN9IC0mZ3Q7IHJ0LSR7cnRkc3R9ICh0ZW5hbnQgJHt0aWR9KSYjMzQ7CiYjNDM7CiYjNDM7CWNoZWNrX2d3X2lwdjRfY29ubmVjdGl2aXR5ICYjMzQ7JHtydHNyY30mIzM0OyAmIzM0OyR7cnRkc3R9JiMzNDsgJiMzNDske3RpZH0mIzM0OyAmIzM0OyR7dGlkfSYjMzQ7CiYjNDM7CWxvZ190ZXN0ICQ/IDAgJiMzNDtJUHY0IGNvbm5lY3Rpdml0eTogcnQtJHtydHNyY30gLSZndDsgcnQtJHtydGRzdH0gKHRlbmFudCAke3RpZH0pJiMzNDsKJiM0Mzt9CiYjNDM7CiYjNDM7Y2hlY2tfYW5kX2xvZ19nd19pc29sYXRpb24oKQomIzQzO3sKJiM0MzsJbG9jYWwgcnRzcmM9JiMzNDskMSYjMzQ7CiYjNDM7CWxvY2FsIHJ0ZHN0PSYjMzQ7JDImIzM0OwomIzQzOwlsb2NhbCB0aWRzcmM9JiMzNDskMyYjMzQ7CiYjNDM7CWxvY2FsIHRpZGRzdD0mIzM0OyQ0JiMzNDsKJiM0MzsKJiM0MzsJY2hlY2tfZ3dfaXB2Nl9jb25uZWN0aXZpdHkgJiMzNDske3J0c3JjfSYjMzQ7ICYjMzQ7JHtydGRzdH0mIzM0OyAmIzM0OyR7dGlkc3JjfSYjMzQ7ICYjMzQ7JHt0aWRkc3R9JiMzNDsKJiM0MzsJbG9nX3Rlc3QgJD8gMSAmIzM0O0lQdjYgaXNvbGF0aW9uOiBydC0ke3J0c3JjfSAtWC0mZ3Q7IHJ0LSR7cnRkc3R9ICh0ZW5hbnRzICR7dGlkc3JjfS8ke3RpZGRzdH0pJiMzNDsKJiM0MzsKJiM0MzsJY2hlY2tfZ3dfaXB2NF9jb25uZWN0aXZpdHkgJiMzNDske3J0c3JjfSYjMzQ7ICYjMzQ7JHtydGRzdH0mIzM0OyAmIzM0OyR7dGlkc3JjfSYjMzQ7ICYjMzQ7JHt0aWRkc3R9JiMzNDsKJiM0MzsJbG9nX3Rlc3QgJD8gMSAmIzM0O0lQdjQgaXNvbGF0aW9uOiBydC0ke3J0c3JjfSAtWC0mZ3Q7IHJ0LSR7cnRkc3R9ICh0ZW5hbnRzICR7dGlkc3JjfS8ke3RpZGRzdH0pJiMzNDsKJiM0Mzt9CiYjNDM7CiYjNDM7Z3dfdnBuX2lzb2xhdGlvbl90ZXN0cygpCiYjNDM7ewomIzQzOwlsb2dfc2VjdGlvbiAmIzM0O1NSdjYgVlBOIGlzb2xhdGlvbiB0ZXN0IGFtb25nIHJvdXRlcnMgaW4gZGlmZmVyZW50IHRlbmFudHMmIzM0OwomIzQzOwomIzQzOwljaGVja19hbmRfbG9nX2d3X2lzb2xhdGlvbiAxIDIgMTAwIDIwMAomIzQzOwljaGVja19hbmRfbG9nX2d3X2lzb2xhdGlvbiAyIDEgMTAwIDIwMAomIzQzOwomIzQzOwljaGVja19hbmRfbG9nX2d3X2lzb2xhdGlvbiAxIDIgMjAwIDEwMAomIzQzOwljaGVja19hbmRfbG9nX2d3X2lzb2xhdGlvbiAyIDEgMjAwIDEwMAomIzQzO30KJiM0MzsKJiM0Mztnd192cG5fdGVzdHMoKQomIzQzO3sKJiM0MzsJbG9nX3NlY3Rpb24gJiMzNDtTUnY2IFZQTiBjb25uZWN0aXZpdHkgdGVzdCBhbW9uZyByb3V0ZXJzIGluIHRoZSBzYW1lIHRlbmFudCYjMzQ7CiYjNDM7CiYjNDM7CWNoZWNrX2FuZF9sb2dfZ3dfY29ubmVjdGl2aXR5IDEgMiAxMDAKJiM0MzsJY2hlY2tfYW5kX2xvZ19nd19jb25uZWN0aXZpdHkgMiAxIDEwMAomIzQzOwomIzQzOwljaGVja19hbmRfbG9nX2d3X2Nvbm5lY3Rpdml0eSAxIDIgMjAwCiYjNDM7CWNoZWNrX2FuZF9sb2dfZ3dfY29ubmVjdGl2aXR5IDIgMSAyMDAKJiM0Mzt9CiYjNDM7CiYjNDM7X190ZXN0X2d3X25vbG9va3VwKCkKJiM0Mzt7CiYjNDM7CWxvY2FsIHJ0c3JjPSYjMzQ7JDEmIzM0OwomIzQzOwlsb2NhbCBydGRzdD0mIzM0OyQyJiMzNDsKJiM0MzsJbG9jYWwgdGlkPSYjMzQ7JDMmIzM0OwomIzQzOwlsb2NhbCBzaWQKJiM0MzsKJiM0MzsJc2lkPSYjMzQ7JChidWlsZF92cG5fc2lkICYjMzQ7JHtydHNyY30mIzM0OyAmIzM0OyR7cnRkc3R9JiMzNDsgJiMzNDske3RpZH0mIzM0OykmIzM0OwomIzQzOwomIzQzOwkjIHJlcGxhY2UgZ3cgZW5jYXAgcm91dGUgd2l0aG91dCAmIzM0O2xvb2t1cCYjMzQ7IGF0dHJpYnV0ZQomIzQzOwlzZXRfZ3dfZW5jYXBfcm91dGVfbm9sb29rdXAgJiMzNDske3J0c3JjfSYjMzQ7ICYjMzQ7JHtydGRzdH0mIzM0OyAmIzM0OyR7c2lkfSYjMzQ7ICYjMzQ7JHt0aWR9JiMzNDsKJiM0MzsKJiM0MzsJY2hlY2tfZ3dfaXB2Nl9jb25uZWN0aXZpdHkgJiMzNDske3J0c3JjfSYjMzQ7ICYjMzQ7JHtydGRzdH0mIzM0OyAmIzM0OyR7dGlkfSYjMzQ7ICYjMzQ7JHt0aWR9JiMzNDsKJiM0MzsJbG9nX3Rlc3QgJD8gMSAmIzM0O0lQdjYgdy9vIGxvb2t1cDogcnQtJHtydHNyY30gLVgtJmd0OyBydC0ke3J0ZHN0fSAodGVuYW50ICR7dGlkfSkmIzM0OwomIzQzOwomIzQzOwljaGVja19nd19pcHY0X2Nvbm5lY3Rpdml0eSAmIzM0OyR7cnRzcmN9JiMzNDsgJiMzNDske3J0ZHN0fSYjMzQ7ICYjMzQ7JHt0aWR9JiMzNDsgJiMzNDske3RpZH0mIzM0OwomIzQzOwlsb2dfdGVzdCAkPyAxICYjMzQ7SVB2NCB3L28gbG9va3VwOiBydC0ke3J0c3JjfSAtWC0mZ3Q7IHJ0LSR7cnRkc3R9ICh0ZW5hbnQgJHt0aWR9KSYjMzQ7CiYjNDM7CiYjNDM7CSMgcmVzdG9yZSBndyBlbmNhcCByb3V0ZSB3aXRoICYjMzQ7bG9va3VwJiMzNDsgZm9yIHN1YnNlcXVlbnQgdGVzdHMKJiM0MzsJc2V0X2d3X2VuY2FwX3JvdXRlICYjMzQ7JHtydHNyY30mIzM0OyAmIzM0OyR7cnRkc3R9JiMzNDsgJiMzNDske3NpZH0mIzM0OyAmIzM0OyR7dGlkfSYjMzQ7CiYjNDM7fQomIzQzOwomIzQzO2d3X3Zwbl9ub2xvb2t1cF90ZXN0cygpCiYjNDM7ewomIzQzOwlsb2dfc2VjdGlvbiAmIzM0O1NSdjYgVlBOIGNvbm5lY3Rpdml0eSB0ZXN0IGFtb25nIHJvdXRlcnMgdy9vIGxvb2t1cCYjMzQ7CiYjNDM7CiYjNDM7CV9fdGVzdF9nd19ub2xvb2t1cCAxIDIgMTAwCiYjNDM7CV9fdGVzdF9nd19ub2xvb2t1cCAyIDEgMTAwCiYjNDM7CiYjNDM7CV9fdGVzdF9nd19ub2xvb2t1cCAxIDIgMjAwCiYjNDM7CV9fdGVzdF9nd19ub2xvb2t1cCAyIDEgMjAwCiYjNDM7fQomIzQzOwomIzQzO3Rlc3RfY29tbWFuZF9vcl9rc2Z0X3NraXAoKQomIzQzO3sKJiM0MzsJbG9jYWwgY21kPSYjMzQ7JDEmIzM0OwomIzQzOwomIzQzOwlpZiBbICEgLXggJiMzNDskKGNvbW1hbmQgLXYgJiMzNDske2NtZH0mIzM0OykmIzM0OyBdOyB0aGVuCiYjNDM7CQllY2hvICYjMzQ7U0tJUDogQ291bGQgbm90IHJ1biB0ZXN0IHdpdGhvdXQgXCYjMzQ7JHtjbWR9XCYjMzQ7IHRvb2wmIzM0OwomIzQzOwkJZXhpdCAmIzM0OyR7a3NmdF9za2lwfSYjMzQ7CiYjNDM7CWZpCiYjNDM7fQomIzQzOwomIzQzO3Rlc3RfdnJmX29yX2tzZnRfc2tpcCgpCiYjNDM7ewomIzQzOwltb2Rwcm9iZSB2cmYgJmFtcDsmZ3Q7L2Rldi9udWxsIHx8IHRydWUKJiM0MzsJaWYgWyAhIC1lIC9wcm9jL3N5cy9uZXQvdnJmL3N0cmljdF9tb2RlIF07IHRoZW4KJiM0MzsJCWVjaG8gJiMzNDtTS0lQOiB2cmYgc3lzY3RsIGRvZXMgbm90IGV4aXN0JiMzNDsKJiM0MzsJCWV4aXQgJiMzNDske2tzZnRfc2tpcH0mIzM0OwomIzQzOwlmaQomIzQzO30KJiM0MzsKJiM0Mzt0ZXN0X2R1bW15X2Rldl9vcl9rc2Z0X3NraXAoKQomIzQzO3sKJiM0MzsJbG9jYWwgdGVzdF9uZXRucwomIzQzOwomIzQzOwlzZXR1cF9ucyB0ZXN0X25ldG5zCiYjNDM7CiYjNDM7CW1vZHByb2JlIGR1bW15ICZhbXA7Jmd0Oy9kZXYvbnVsbCB8fCB0cnVlCiYjNDM7CWlmICEgaXAgLW5ldG5zICYjMzQ7JHt0ZXN0X25ldG5zfSYjMzQ7IGxpbmsgYWRkICYjMzQ7JHtEVU1NWV9ERVZOQU1FfSYjMzQ7IFwKJiM0MzsJCQl0eXBlIGR1bW15OyB0aGVuCiYjNDM7CQljbGVhbnVwX25zICYjMzQ7JHt0ZXN0X25ldG5zfSYjMzQ7CiYjNDM7CQllY2hvICYjMzQ7U0tJUDogZHVtbXkgZGV2IG5vdCBzdXBwb3J0ZWQmIzM0OwomIzQzOwkJZXhpdCAmIzM0OyR7a3NmdF9za2lwfSYjMzQ7CiYjNDM7CWZpCiYjNDM7CiYjNDM7CWNsZWFudXBfbnMgJiMzNDske3Rlc3RfbmV0bnN9JiMzNDsKJiM0Mzt9CiYjNDM7CiYjNDM7dGVzdF9lbmNhcF9sb29rdXBfc3VwcF9vcl9rc2Z0X3NraXAoKQomIzQzO3sKJiM0MzsJbG9jYWwgbnNuYW1lCiYjNDM7CiYjNDM7CXNldHVwX25zIG5zbmFtZQomIzQzOwomIzQzOwlpcCAtbmV0bnMgJiMzNDske25zbmFtZX0mIzM0OyBsaW5rIGFkZCAmIzM0OyR7RFVNTVlfREVWTkFNRX0mIzM0OyB0eXBlIGR1bW15CiYjNDM7CWlwIC1uZXRucyAmIzM0OyR7bnNuYW1lfSYjMzQ7IGxpbmsgc2V0ICYjMzQ7JHtEVU1NWV9ERVZOQU1FfSYjMzQ7IHVwCiYjNDM7CiYjNDM7CWlmICEgaXAgLW5ldG5zICYjMzQ7JHtuc25hbWV9JiMzNDsgLTYgcm91dGUgYWRkICYjMzQ7JHtJUHY2X1RFU1RTX0FERFJ9LzEyOCYjMzQ7IFwKJiM0MzsJCQllbmNhcCBzZWc2IG1vZGUgZW5jYXAgc2VncyBmYzAwOjoxIFwKJiM0MzsJCQlsb29rdXAgJiMzNDske1RFU1RTX1RBQkxFX0lEfSYjMzQ7IFwKJiM0MzsJCQlkZXYgJiMzNDske0RVTU1ZX0RFVk5BTUV9JiMzNDsgMiZndDsvZGV2L251bGw7IHRoZW4KJiM0MzsJCWNsZWFudXBfbnMgJiMzNDske25zbmFtZX0mIzM0OwomIzQzOwkJZWNobyAmIzM0O1NLSVA6IHNlZzYgZW5jYXAgbG9va3VwIGF0dHJpYnV0ZSBub3Qgc3VwcG9ydGVkJiMzNDsKJiM0MzsJCWV4aXQgJiMzNDske2tzZnRfc2tpcH0mIzM0OwomIzQzOwlmaQomIzQzOwomIzQzOwkjIEFuIG9sZCBrZXJuZWwgd2l0aCBhIHJlY2VudCBpcHJvdXRlMiBhY2NlcHRzIHRoZSByb3V0ZSBidXQKJiM0MzsJIyBzaWxlbnRseSBpZ25vcmVzIHRoZSBsb29rdXAgYXR0cmlidXRlLiBEdW1wIHRoZSByb3V0ZSBhbmQgY2hlY2sKJiM0MzsJIyB0aGUgYXR0cmlidXRlIGlzIHJlYWxseSB0aGVyZSwgb3RoZXJ3aXNlIHRoZSB0ZXN0IGZhbHNlbHkgcGFzc2VzLgomIzQzOwlpZiAhIGlwIC1uZXRucyAmIzM0OyR7bnNuYW1lfSYjMzQ7IC02IHJvdXRlIHNob3cgJiMzNDske0lQdjZfVEVTVFNfQUREUn0vMTI4JiMzNDsgfCBcCiYjNDM7CQkJZ3JlcCAtcSAmIzM0O2xvb2t1cCAke1RFU1RTX1RBQkxFX0lEfSYjMzQ7OyB0aGVuCiYjNDM7CQljbGVhbnVwX25zICYjMzQ7JHtuc25hbWV9JiMzNDsKJiM0MzsJCWVjaG8gJiMzNDtTS0lQOiBzZWc2IGVuY2FwIGxvb2t1cCBhdHRyaWJ1dGUgbm90IHN1cHBvcnRlZCYjMzQ7CiYjNDM7CQlleGl0ICYjMzQ7JHtrc2Z0X3NraXB9JiMzNDsKJiM0MzsJZmkKJiM0MzsKJiM0MzsJY2xlYW51cF9ucyAmIzM0OyR7bnNuYW1lfSYjMzQ7CiYjNDM7fQomIzQzOwomIzQzO2lmIFsgJiMzNDskKGlkIC11KSYjMzQ7IC1uZSAwIF07IHRoZW4KJiM0MzsJZWNobyAmIzM0O1NLSVA6IE5lZWQgcm9vdCBwcml2aWxlZ2VzJiMzNDsKJiM0MzsJZXhpdCAmIzM0OyR7a3NmdF9za2lwfSYjMzQ7CiYjNDM7ZmkKJiM0MzsKJiM0MzsjIHJlcXVpcmVkIHByb2dyYW1zIHRvIGNhcnJ5IG91dCB0aGlzIHNlbGZ0ZXN0CiYjNDM7dGVzdF9jb21tYW5kX29yX2tzZnRfc2tpcCBpcAomIzQzO3Rlc3RfY29tbWFuZF9vcl9rc2Z0X3NraXAgcGluZwomIzQzO3Rlc3RfY29tbWFuZF9vcl9rc2Z0X3NraXAgc3lzY3RsCiYjNDM7dGVzdF9jb21tYW5kX29yX2tzZnRfc2tpcCBncmVwCiYjNDM7CiYjNDM7dGVzdF9kdW1teV9kZXZfb3Jfa3NmdF9za2lwCiYjNDM7dGVzdF92cmZfb3Jfa3NmdF9za2lwCiYjNDM7dGVzdF9lbmNhcF9sb29rdXBfc3VwcF9vcl9rc2Z0X3NraXAKJiM0MzsKJiM0MztzZXQgLWUKJiM0Mzt0cmFwIGNsZWFudXAgRVhJVAomIzQzOwomIzQzO3NldHVwCiYjNDM7c2V0ICYjNDM7ZQomIzQzOwomIzQzO3JvdXRlcl90ZXN0cwomIzQzO2hvc3QyZ2F0ZXdheV90ZXN0cwomIzQzO2hvc3RfdnBuX3Rlc3RzCiYjNDM7aG9zdF92cG5faXNvbGF0aW9uX3Rlc3RzCiYjNDM7aG9zdF92cG5fbm9sb29rdXBfdGVzdHMKJiM0Mztnd192cG5fdGVzdHMKJiM0Mztnd192cG5faXNvbGF0aW9uX3Rlc3RzCiYjNDM7Z3dfdnBuX25vbG9va3VwX3Rlc3RzCiYjNDM7CiYjNDM7cHJpbnRfbG9nX3Rlc3RfcmVzdWx0cwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwODo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzMwNQoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDU5MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBTUnY2IFRhYmxlIEF0dHJpYnV0ZSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQmIzM5O3Mgc3RyYWlnaHRmb3J3YXJkLiBUaGV5JiMzOTt2ZSBpbnRyb2R1Y2VkIGEgY3JpdGljYWwgZmVhdHVyZTogdGhlIGFiaWxpdHkgdG8gc3BlY2lmeSBhIEZJQiB0YWJsZSBmb3IgcG9zdC1lbmNhcHN1bGF0aW9uIFNJRCBsb29rdXAgd2l0aGluIFNSdjYgdHVubmVscy4gVGhpcyBpcyBhIGdhbWUtY2hhbmdlciBmb3Igc29waGlzdGljYXRlZCBuZXR3b3JrIGRlc2lnbnMsIGFsbG93aW5nIGZvciBtdWNoIG1vcmUgZ3JhbnVsYXIgY29udHJvbCBvdmVyIHJvdXRpbmcgd2l0aGluIHRoZSB0dW5uZWwuCgpUaGUgbWVhdCBvZiB0aGUgd29yayBpcyBpbiBgbmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jYC4gVGhleSYjMzk7dmUgYWRkZWQgYSBgc2VnNl90YWJsZV9sb29rdXBgIGZ1bmN0aW9uLCB3aGljaCBJIGxpa2UuIEl0JiMzOTtzIGNsZWFuIGFuZCBmb2N1c2VkIG9uIHJldHJpZXZpbmcgYSByb3V0ZSBmcm9tIGEgc3BlY2lmaWMgdGFibGUsIGhhbmRsaW5nIHRoZSBsb29rdXAgYW5kIGVuc3VyaW5nIHRoZSB0YWJsZSBhY3R1YWxseSBleGlzdHMuICBUaGUgdXNlIG9mIGBmaWI2X2dldF90YWJsZWAgYW5kIGBpcDZfcG9sX3JvdXRlYCBpcyBjb3JyZWN0IGhlcmUsIHJldXNpbmcgZXhpc3Rpbmcga2VybmVsIGluZnJhc3RydWN0dXJlLgoKVGhlIE5ldGxpbmsgYXR0cmlidXRlIGBTRUc2X0lQVFVOTkVMX1RBQkxFYCBpcyB0aGUgdXNlci1mYWNpbmcgcGFydCwgYW5kIHRoZSBjb2RlIGxvb2tzIHNhbmUuIEl0IGFwcGVhcnMgdGhlIGF0dHJpYnV0ZSBpcyBwYXJzZWQgaW4gYHNlZzZfYnVpbGRfc3RhdGVgLiBWYWxpZGF0aW9uIGlzIGluY2x1ZGVkIChjaGVja2luZyBmb3Igbm9uLXplcm8gYHRhYmxlYCB2YWx1ZSksIGFuZCB0aGV5JiMzOTtyZSB1c2luZyBgTkxfU0VUX0VSUl9NU0dgIGZvciBwcm9wZXIgZXJyb3IgcmVwb3J0aW5nIGJhY2sgdG8gdGhlIHVzZXIgc3BhY2UuIEdvb2QuCgpJJiMzOTtsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgaXMgZW5hYmxlZC4gVGltZSB0byBjaGVjayB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24uIEkmIzM5O2xsIHNlYXJjaCBmb3IgYHNlZzZfaXB0dW5uZWwuY2Agd2l0aGluIHRoZSBgbmV0L2lwdjYvTWFrZWZpbGVgIGFuZCBgbmV0L2lwdjYvS2NvbmZpZ2AgZmlsZXMuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBJIG5lZWQgdG8gZW5hYmxlIHRoaXMuIFRoaXMgaXMgY3JpdGljYWwgdG8gZW5zdXJlIHRoaXMgY29kZSBpcyBhY3R1YWxseSBidWlsdCBhbmQgYXZhaWxhYmxlIGZvciB1c2UgaW4gZGVwbG95bWVudHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDg6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2VnNl9pcHR1bm5lbCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY2LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2Ni9NYWtlZmlsZT0yND1pcHY2LSQoQ09ORklHX05FVExBQkVMKSAmIzQzOz0gY2FsaXBzby5vXG5uZXQvaXB2Ni9NYWtlZmlsZToyNTppcHY2LSQoQ09ORklHX0lQVjZfU0VHNl9MV1RVTk5FTCkgJiM0Mzs9IHNlZzZfaXB0dW5uZWwubyBzZWc2X2xvY2FsLm9cbm5ldC9pcHY2L01ha2VmaWxlLTI2LWlwdjYtJChDT05GSUdfSVBWNl9TRUc2X0hNQUMpICYjNDM7PSBzZWc2X2htYWMub1xuLS1cbm5ldC9pcHY2L3NlZzYuYz01MDg9aW50IF9faW5pdCBzZWc2X2luaXQodm9pZClcbi0tXG5uZXQvaXB2Ni9zZWc2LmMtNTE5LVxubmV0L2lwdjYvc2VnNi5jOjUyMDpcdGVyciA9IHNlZzZfaXB0dW5uZWxfaW5pdCgpO1xubmV0L2lwdjYvc2VnNi5jLTUyMS1cdGlmIChlcnIpXG4tLVxubmV0L2lwdjYvc2VnNi5jLTUzMi1vdXRfdW5yZWdpc3Rlcl9pcHR1bjpcbm5ldC9pcHY2L3NlZzYuYzo1MzM6XHRzZWc2X2lwdHVubmVsX2V4aXQoKTtcbm5ldC9pcHY2L3NlZzYuYy01MzQtb3V0X3VucmVnaXN0ZXJfZ2VubDpcbi0tXG5uZXQvaXB2Ni9zZWc2LmM9NTQxPXZvaWQgc2VnNl9leGl0KHZvaWQpXG4tLVxubmV0L2lwdjYvc2VnNi5jLTU0My1cdHNlZzZfbG9jYWxfZXhpdCgpO1xubmV0L2lwdjYvc2VnNi5jOjU0NDpcdHNlZzZfaXB0dW5uZWxfZXhpdCgpO1xubmV0L2lwdjYvc2VnNi5jLTU0NS1cdGdlbmxfdW5yZWdpc3Rlcl9mYW1pbHkoXHUwMDI2c2VnNl9nZW5sX2ZhbWlseSk7XG4tLVxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jLTIxLSNpbmNsdWRlIFx1MDAzY2xpbnV4L3NlZzYuaFx1MDAzZVxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jOjIyOiNpbmNsdWRlIFx1MDAzY2xpbnV4L3NlZzZfaXB0dW5uZWwuaFx1MDAzZVxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jLTIzLSNpbmNsdWRlIFx1MDAzY25ldC9hZGRyY29uZi5oXHUwMDNlXG4tLVxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jLTMwLVxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jOjMxOnN0YXRpYyBzaXplX3Qgc2VnNl9sd3RfaGVhZHJvb20oc3RydWN0IHNlZzZfaXB0dW5uZWxfZW5jYXAgKnR1bmluZm8pXG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmMtMzIte1xuLS1cbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYz01MD1zdHJ1Y3Qgc2VnNl9sd3Qge1xuLS1cbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYy01NC1cdHUzMiB0YWJsZTtcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYzo1NTpcdHN0cnVjdCBzZWc2X2lwdHVubmVsX2VuY2FwIHR1bmluZm9bXTtcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYy01Ni19O1xuLS1cbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYz01OD1zdGF0aWMgaW5saW5lIHN0cnVjdCBzZWc2X2x3dCAqc2VnNl9sd3RfbHd0dW5uZWwoc3RydWN0IGx3dHVubmVsX3N0YXRlICpsd3QpXG4tLVxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jLTYyLVxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jOjYzOnN0YXRpYyBpbmxpbmUgc3RydWN0IHNlZzZfaXB0dW5uZWxfZW5jYXAgKlxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jLTY0LXNlZzZfZW5jYXBfbHd0dW5uZWwoc3RydWN0IGx3dHVubmVsX3N0YXRlICpsd3QpXG4tLVxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jLTY4LVxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jOjY5OnN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBzZWc2X2lwdHVubmVsX3BvbGljeVtTRUc2X0lQVFVOTkVMX01BWCAmIzQzOyAxXSA9IHtcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYy03MC1cdFtTRUc2X0lQVFVOTkVMX1NSSF1cdD0geyAudHlwZSA9IE5MQV9CSU5BUlkgfSxcbi0tXG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmM9NzU9c3RhdGljIGludCBubGFfcHV0X3NyaChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgYXR0cnR5cGUsXG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmM6NzY6XHRcdCAgICAgICBzdHJ1Y3Qgc2VnNl9pcHR1bm5lbF9lbmNhcCAqdHVuaW5mbylcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYy03Ny17XG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmM6Nzg6XHRzdHJ1Y3Qgc2VnNl9pcHR1bm5lbF9lbmNhcCAqZGF0YTtcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYy03OS1cdHN0cnVjdCBubGF0dHIgKm5sYTtcbi0tXG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmM9MjI1PXN0YXRpYyBpbnQgc2VnNl9kb19zcmhfZW5jYXBfcmVkKHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jLTI0Ny1cdFx0LyogTk9URTogaWYgdGFnL2ZsYWdzIGFuZC9vciBvdGhlciBUTFZzIGFyZSBpbnRyb2R1Y2VkIGluIHRoZVxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jOjI0ODpcdFx0ICogc2VnNl9pcHR1bm5lbCBpbmZyYXN0cnVjdHVyZSwgdGhleSBzaG91bGQgYmUgY29uc2lkZXJlZCB3aGVuXG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmMtMjQ5LVx0XHQgKiBkZWNpZGluZyB0byBza2lwIHRoZSBTUkguXG4tLVxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jPTM5OD1zdGF0aWMgaW50IHNlZzZfZG9fc3JoKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBkc3RfZW50cnkgKmNhY2hlX2RzdClcbi0tXG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmMtNDAwLVx0c3RydWN0IGRzdF9lbnRyeSAqZHN0ID0gc2tiX2RzdChza2IpO1xubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jOjQwMTpcdHN0cnVjdCBzZWc2X2lwdHVubmVsX2VuY2FwICp0aW5mbztcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYy00MDItXHRzdHJ1Y3Qgc2VnNl9sd3QgKnNsd3Q7XG4tLVxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jPTc0Nz1zdGF0aWMgaW50IHNlZzZfYnVpbGRfc3RhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmxhdHRyICpubGEsXG4tLVxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jLTc1Mi1cdHN0cnVjdCBubGF0dHIgKnRiW1NFRzZfSVBUVU5ORUxfTUFYICYjNDM7IDFdO1xubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jOjc1MzpcdHN0cnVjdCBzZWc2X2lwdHVubmVsX2VuY2FwICp0dW5pbmZvO1xubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jLTc1NC1cdHN0cnVjdCBsd3R1bm5lbF9zdGF0ZSAqbmV3dHM7XG4tLVxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jLTc2Mi1cdGVyciA9IG5sYV9wYXJzZV9uZXN0ZWRfZGVwcmVjYXRlZCh0YiwgU0VHNl9JUFRVTk5FTF9NQVgsIG5sYSxcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYzo3NjM6XHRcdFx0XHRcdCAgc2VnNl9pcHR1bm5lbF9wb2xpY3ksIGV4dGFjayk7XG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmMtNzY0LVxuLS1cbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYz04NzU9c3RhdGljIGludCBzZWc2X2ZpbGxfZW5jYXBfaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYy04Nzcte1xubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jOjg3ODpcdHN0cnVjdCBzZWc2X2lwdHVubmVsX2VuY2FwICp0dW5pbmZvID0gc2VnNl9lbmNhcF9sd3R1bm5lbChsd3RzdGF0ZSk7XG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmMtODc5LVx0c3RydWN0IHNlZzZfbHd0ICpzbHd0ID0gc2VnNl9sd3RfbHd0dW5uZWwobHd0c3RhdGUpO1xuLS1cbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYz04OTU9c3RhdGljIGludCBzZWc2X2VuY2FwX25sc2l6ZShzdHJ1Y3QgbHd0dW5uZWxfc3RhdGUgKmx3dHN0YXRlKVxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jLTg5Ni17XG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmM6ODk3Olx0c3RydWN0IHNlZzZfaXB0dW5uZWxfZW5jYXAgKnR1bmluZm8gPSBzZWc2X2VuY2FwX2x3dHVubmVsKGx3dHN0YXRlKTtcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYy04OTgtXHRzdHJ1Y3Qgc2VnNl9sd3QgKnNsd3QgPSBzZWc2X2x3dF9sd3R1bm5lbChsd3RzdGF0ZSk7XG4tLVxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jPTkxMj1zdGF0aWMgaW50IHNlZzZfZW5jYXBfY21wKHN0cnVjdCBsd3R1bm5lbF9zdGF0ZSAqYSwgc3RydWN0IGx3dHVubmVsX3N0YXRlICpiKVxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jLTkxMy17XG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmM6OTE0Olx0c3RydWN0IHNlZzZfaXB0dW5uZWxfZW5jYXAgKmFfaGRyID0gc2VnNl9lbmNhcF9sd3R1bm5lbChhKTtcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYzo5MTU6XHRzdHJ1Y3Qgc2VnNl9pcHR1bm5lbF9lbmNhcCAqYl9oZHIgPSBzZWc2X2VuY2FwX2x3dHVubmVsKGIpO1xubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jLTkxNi1cdHN0cnVjdCBzZWc2X2x3dCAqYV9zbHd0ID0gc2VnNl9sd3RfbHd0dW5uZWwoYSk7XG4tLVxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jPTkzMj1zdGF0aWMgY29uc3Qgc3RydWN0IGx3dHVubmVsX2VuY2FwX29wcyBzZWc2X2lwdHVuX29wcyA9IHtcbi0tXG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmMtOTQyLVxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jOjk0MzppbnQgX19pbml0IHNlZzZfaXB0dW5uZWxfaW5pdCh2b2lkKVxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jLTk0NC17XG4tLVxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jLTk0Ny1cbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYzo5NDg6dm9pZCBzZWc2X2lwdHVubmVsX2V4aXQodm9pZClcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYy05NDkte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDA4OjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNDg3CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqSW52ZXN0aWdhdGluZyB0aGUgSVB2NiBTZWdtZW50IFJvdXRpbmcgd2l0aCBJUHY2IExXVHVubmVsIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIG5haWwgZG93biB0aGUgY29uZmlndXJhdGlvbiBvcHRpb24gZm9yIHRoZSBTZWdtZW50IFJvdXRpbmcgd2l0aCBJUHY2IExXVHVubmVsIGZlYXR1cmUuIFJpZ2h0LCBJIHJlbWVtYmVyIHNlZWluZyBzb21ldGhpbmcgbGlrZSBgQ09ORklHX0lQVjZfU0VHNl9MV1RVTk5FTGAuIExldCBtZSBqdXN0IGRvdWJsZS1jaGVjayB0aGF0LiBXaGVyZSBpcyB0aGUgYXV0aG9yaXRhdGl2ZSBzb3VyY2UgZm9yIHRoZXNlIGtlcm5lbCBjb25maWcgb3B0aW9ucz8gQWgsIHRoYXQgd291bGQgYmUgYG5ldC9pcHY2L0tjb25maWdgLiBUaW1lIHRvIGNyYWNrIHRoYXQgZmlsZSBvcGVuIGFuZCBjb25maXJtIHRoZSBleGFjdCBuYW1lIGFuZCBhbnkgZGVwZW5kZW5jaWVzIG9yIHJlbGF0ZWQgb3B0aW9ucyBzdXJyb3VuZGluZyBgSVBWNl9TRUc2X0xXVFVOTkVMYC4gR290dGEgbWFrZSBzdXJlIEkmIzM5O20gdXNpbmcgdGhlIHJpZ2h0IGtub2IsIGFuZCB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IHdpdGhpbiB0aGUgbGFyZ2VyIElQdjYgc3RhY2sgY29uZmlndXJhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwODo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtJUFY2X1NFRzZfTFdUVU5ORUwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2Ni9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY2L0tjb25maWc9Mjc5PWNvbmZpZyBJUFY2X1BJTVNNX1YyXG4tLVxubmV0L2lwdjYvS2NvbmZpZy0yODUtXG5uZXQvaXB2Ni9LY29uZmlnOjI4Njpjb25maWcgSVBWNl9TRUc2X0xXVFVOTkVMXG5uZXQvaXB2Ni9LY29uZmlnLTI4Ny1cdGJvb2wgXCYjMzQ7SVB2NjogU2VnbWVudCBSb3V0aW5nIEhlYWRlciBlbmNhcHN1bGF0aW9uIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnPTMxMj1jb25maWcgSVBWNl9TRUc2X0JQRlxubmV0L2lwdjYvS2NvbmZpZy0zMTMtXHRkZWZfYm9vbCB5XG5uZXQvaXB2Ni9LY29uZmlnOjMxNDpcdGRlcGVuZHMgb24gSVBWNl9TRUc2X0xXVFVOTkVMXG5uZXQvaXB2Ni9LY29uZmlnLTMxNS1cdGRlcGVuZHMgb24gSVBWNiA9IHlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwODo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDkxOQoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDY0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipJUCB2NiBTZWdtZW50IFJvdXRpbmcgQ29uZmlndXJhdGlvbiBDb25zaWRlcmF0aW9ucyoqCgpSaWdodCwgc28gSSYjMzk7bSBmb2N1c2luZyBvbiBzZXR0aW5nIHVwIHNlZ21lbnQgcm91dGluZyB3aXRoIElQdjYuIE15IHByaW1hcnkgY29uZmlnIG9wdGlvbiBoZXJlIGlzIGBJUFY2X1NFRzZfTFdUVU5ORUxgLiBUaGF0JiMzOTtzIHRoZSBiaWcgb25lLiBCdXQgSSBrbm93IGZyb20gZXhwZXJpZW5jZSB0aGF0IHRoZXNlIHRoaW5ncyByYXJlbHkgc3RhbmQgYWxvbmUuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55IG90aGVyIGNydWNpYWwgZGVwZW5kZW5jaWVzLiBgTFdUVU5ORUxgIGlzIGEgbGlrZWx5IGNhbmRpZGF0ZTsgSSYjMzk7bGwgZmxhZyB0aGF0IGFzIHNvbWV0aGluZyB0byB2ZXJpZnkuIFRvIGJlIGFic29sdXRlbHkgdGhvcm91Z2ggYW5kIG1ha2Ugc3VyZSBJJiMzOTt2ZSBnb3QgZXZlcnl0aGluZyBuYWlsZWQgZG93biwgSSYjMzk7bSBnb2luZyB0byBkaWcgaW50byBgbmV0L2lwdjYvS2NvbmZpZ2AuIFRoYXQmIzM5O3Mgd2hlcmUgYWxsIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgZGVmaW5lZCBmb3IgdGhlIElQdjYgc3RhY2suIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIGBJUFY2X1NFRzZfTFdUVU5ORUxgIHRvIHNlZSB3aGljaCBvdGhlciBvcHRpb25zIGFyZSBjb25uZWN0ZWQsIGFuZCBpZiBhbnl0aGluZyBlbHNlIGlzIG5lZWRlZCBvciByZWNvbW1lbmRlZCB0byBnZXQgdGhpcyB0aGluZyB3b3JraW5nIGNvcnJlY3RseS4gSXQmIzM5O3MgYmVzdCB0byBiZSBzdXJlIG9mIHRoYXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDg6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElQVjZfU0VHNl9MV1RVTk5FTCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY2L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjYvS2NvbmZpZz0yNzk9Y29uZmlnIElQVjZfUElNU01fVjJcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTI4NS1cbm5ldC9pcHY2L0tjb25maWc6Mjg2OmNvbmZpZyBJUFY2X1NFRzZfTFdUVU5ORUxcbm5ldC9pcHY2L0tjb25maWctMjg3LVx0Ym9vbCBcJiMzNDtJUHY2OiBTZWdtZW50IFJvdXRpbmcgSGVhZGVyIGVuY2Fwc3VsYXRpb24gc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDA4OjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxMzM0CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSBsaWtlIHlvdXJzZWxmOgoKKipBbmFseXppbmcgdGhlIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jeSoqCgpBbHJpZ2h0LCBteSBicmFpbiYjMzk7cyBraWNraW5nIGludG8gZ2Vhci4gRmlyc3QsIGxldCYjMzk7cyB6ZXJvIGluIG9uIHRob3NlIGxpbmVzIHN1cnJvdW5kaW5nIGBjb25maWcgSVBWNl9TRUc2X0xXVFVOTkVMYC4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIHRoZSBzdXJyb3VuZGluZyBjb250ZXh0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBpbnRlcmFjdGlvbnMgYXJvdW5kIHRoYXQgY29uZmlndXJhdGlvbiBvcHRpb24uIFdoYXQgb3RoZXIgZmVhdHVyZXMgb3Igc2V0dGluZ3MgYXJlIGludm9sdmVkPyBBcmUgdGhlcmUgYW55IHByZXJlcXVpc2l0ZXMgSSBzaG91bGQgYmUgYXdhcmUgb2YsIGxpa2Ugc3BlY2lmaWMga2VybmVsIG1vZHVsZXMgb3Igb3RoZXIgbmV0d29ya2luZyBzdGFjayBjb21wb25lbnRzPyBBcmUgdGhlcmUgYW55IG9idmlvdXMgY29uZmxpY3RzIHRvIGxvb2sgZm9yPyBXZSBjYW4gYWxzbyBjaGVjayB0aGUgS2NvbmZpZywgdG8gc2VlIGlmIHRoZXJlIGlzIGFueSBoZWxwIHRleHQgdG8gYXNzaXN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwODo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9pcHY2L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyODAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDI4MDpcdFx0Ym9vbCBcJiMzNDtJUHY2OiBQSU0tU00gdmVyc2lvbiAyIHN1cHBvcnRcJiMzNDtcbiAyODE6XHRcdGRlcGVuZHMgb24gSVBWNl9NUk9VVEVcbiAyODI6XHRcdGhlbHBcbiAyODM6XHRcdCAgU3VwcG9ydCBmb3IgSVB2NiBQSU0gbXVsdGljYXN0IHJvdXRpbmcgcHJvdG9jb2wgUElNLVNNdjIuXG4gMjg0Olx0XHQgIElmIHVuc3VyZSwgc2F5IE4uXG4gMjg1Olx0XG4gMjg2Olx0Y29uZmlnIElQVjZfU0VHNl9MV1RVTk5FTFxuIDI4NzpcdFx0Ym9vbCBcJiMzNDtJUHY2OiBTZWdtZW50IFJvdXRpbmcgSGVhZGVyIGVuY2Fwc3VsYXRpb24gc3VwcG9ydFwmIzM0O1xuIDI4ODpcdFx0ZGVwZW5kcyBvbiBJUFY2XG4gMjg5Olx0XHRzZWxlY3QgTFdUVU5ORUxcbiAyOTA6XHRcdHNlbGVjdCBEU1RfQ0FDSEVcbiAyOTE6XHRcdHNlbGVjdCBJUFY2X01VTFRJUExFX1RBQkxFU1xuIDI5MjpcdFx0aGVscFxuIDI5MzpcdFx0ICBTdXBwb3J0IGZvciBlbmNhcHN1bGF0aW9uIG9mIHBhY2tldHMgd2l0aGluIGFuIG91dGVyIElQdjZcbiAyOTQ6XHRcdCAgaGVhZGVyIGFuZCBhIFNlZ21lbnQgUm91dGluZyBIZWFkZXIgdXNpbmcgdGhlIGxpZ2h0d2VpZ2h0XG4gMjk1Olx0XHQgIHR1bm5lbHMgbWVjaGFuaXNtLiBBbHNvIGVuYWJsZSBzdXBwb3J0IGZvciBhZHZhbmNlZCBsb2NhbFxuIDI5NjpcdFx0ICBwcm9jZXNzaW5nIG9mIFNSdjYgcGFja2V0cyBiYXNlZCBvbiB0aGVpciBhY3RpdmUgc2VnbWVudC5cbiAyOTc6XHRcbiAyOTg6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiAyOTk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDg6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE4MzEKCQkJCQkJCW91dHB1dDogMjE1CgkJCQkJCQl0aG91Z2h0czogNzYxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgU3RyYXRlZ3kgZm9yIFNSdjYgRW5jYXBzdWxhdGlvbiBSb3V0aW5nIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIGludHJvZHVjaW5nIGEgbmV3IE5ldGxpbmsgYXR0cmlidXRlLCBgU0VHNl9JUFRVTk5FTF9UQUJMRWAsIHRvIGFsbG93IHNwZWNpZnlpbmcgYSBGSUIgdGFibGUgZm9yIHBvc3QtZW5jYXAgU0lEIGxvb2t1cCB3aXRoaW4gU1J2NiB0dW5uZWxzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBhZGRpdGlvbiB0aGF0IGRpcmVjdGx5IGltcGFjdHMgdGhlIElQdjYgU2VnbWVudCBSb3V0aW5nIHN1YnN5c3RlbSwgc28gZnV6emluZyBpcyBkZWZpbml0ZWx5IHdhcnJhbnRlZC4gVGhlIGNvcmUgY29uZmlndXJhdGlvbiBpcyBgSVBWNl9TRUc2X0xXVFVOTkVMYCwgd2hpY2ggc2VlbXMgc3VmZmljaWVudCBnaXZlbiB0aGF0IHRoZSBwYXRjaCBsZXZlcmFnZXMgc3RhbmRhcmQgSVB2NiByb3V0aW5nIGZ1bmN0aW9ucyBsaWtlIGBmaWI2X2dldF90YWJsZWAgKHJlcXVpcmluZyBgQ09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTYCwgd2hpY2ggaXMgc2VsZWN0ZWQgYnkgYElQVjZfU0VHNl9MV1RVTk5FTGApIGFuZCBgaXA2X3BvbF9yb3V0ZWAuCgpNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIHRoZSBmdW5jdGlvbnMgbW9zdCBkaXJlY3RseSBhZmZlY3RlZCBieSB0aGlzIG5ldyBhdHRyaWJ1dGUgYW5kIGxvZ2ljLiBUaGUgcHJpbWFyeSBmaWxlIHRvIGV4YW1pbmUgaXMgYG5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuY2AuCgpIZXJlJiMzOTtzIG15IHRhcmdldCBsaXN0OgoKKiAgIGBzZWc2X3RhYmxlX2xvb2t1cGA6IENyaXRpY2FsIGZvciB0aGUgbmV3IEZJQiB0YWJsZSBsb29rdXAuCiogICBgc2VnNl9pbnB1dF9yb3V0ZWA6IENhbGxlZCBmcm9tIGBzZWc2X2lucHV0X2NvcmVgLCBzbyBpdCYjMzk7cyBkaXJlY3RseSBpbnZvbHZlZCBpbiB0aGUgaW5wdXQgcGF0aC4KKiAgIGBzZWc2X291dHB1dF9kc3RfbG9va3VwYDogU2ltaWxhciB0byBgc2VnNl9pbnB1dF9yb3V0ZWAsIGJ1dCBmb3IgdGhlIG91dHB1dCBwYXRoLiBJdCYjMzk7cyBjYWxsZWQgZnJvbSBgc2VnNl9vdXRwdXRfY29yZWAuCiogICBgc2VnNl9idWlsZF9zdGF0ZWA6IFRoaXMgaGFuZGxlcyB0aGUgTmV0bGluayBjb25maWd1cmF0aW9uLCBzbyBpdCYjMzk7cyBhIHByaW1lIHRhcmdldCBmb3IgZnV6emluZyB0aGUgbmV3IGF0dHJpYnV0ZS4KKiAgIGBzZWc2X2ZpbGxfZW5jYXBfaW5mb2AKKiAgIGBzZWc2X2VuY2FwX25sc2l6ZWAKKiAgIGBzZWc2X2VuY2FwX2NtcGAKCldoaWxlIGBzZWc2X2lucHV0X2NvcmVgIGFuZCBgc2VnNl9vdXRwdXRfY29yZWAgYXJlIHRoZSBjb3JlIGZvcndhcmRpbmcgZnVuY3Rpb25zLCBJJiMzOTttIGdvaW5nIHRvIGZvY3VzIG9uIHRoZSBgc2VnNl90YWJsZV9sb29rdXBgLCBgc2VnNl9pbnB1dF9yb3V0ZWAsIGBzZWc2X291dHB1dF9kc3RfbG9va3VwYCBhbmQgYHNlZzZfYnVpbGRfc3RhdGVgIGZ1bmN0aW9ucywgYXMgdGhleSBhcmUgc3BlY2lmaWMgdG8gdGhlIG5ldyBmdW5jdGlvbmFsaXR5IGFuZCwgdGh1cywgbW9yZSBsaWtlbHkgdG8gZXhwb3NlIG5vdmVsIHZ1bG5lcmFiaWxpdGllcyByZWxhdGVkIHRvIHRoaXMgcGF0Y2guIFRoZSBvdGhlciBmdW5jdGlvbnMgYXJlIHJlbGF0ZWQgdG8gdGhlIGNvcmUgbG9naWMsIHdoaWNoIGlzIGFsc28gd29ydGggdGVzdGluZy4KClRoZSBoaWdoLWxldmVsIHJlYXNvbmluZyBpcyB0aGlzOiB0aGUgcGF0Y2ggZnVuZGFtZW50YWxseSBhbHRlcnMgdGhlIFNSdjYgZW5jYXBzdWxhdGlvbiBwYXRoIHRvIGluY29ycG9yYXRlIGEgdXNlci1zcGVjaWZpZWQgRklCIHRhYmxlIGxvb2t1cC4gVGhpcyBpbnRyb2R1Y2VzIGEgbmV3IGNvZGUgcGF0aCBhbmQgcG90ZW50aWFsIGZvciB1bmV4cGVjdGVkIGJlaGF2aW9yIGluIHRoZSByb3V0aW5nIGxvZ2ljLCBwYXJ0aWN1bGFybHkgaWYgdGhlIHByb3ZpZGVkIHRhYmxlIGlzIG1hbGZvcm1lZCBvciBpbnZhbGlkLiBUaGUgZnVuY3Rpb25zIGxpc3RlZCBhYm92ZSBhcmUgZ29pbmcgdG8gYmUga2V5IHRvIHRlc3RpbmcgdGhlIG5ldyBmdW5jdGlvbmFsaXR5LiBJJiMzOTtsbCB1c2UgdGhlIGBzZXQtcmVzdWx0c2AgdG9vbCB0byBmaW5hbGl6ZSB0aGUgYW5hbHlzaXMgYW5kIGZlZWQgdGhlc2UgdGFyZ2V0cyBpbnRvIHRoZSBmdXp6ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDA4OjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUFY2X1NFRzZfTFdUVU5ORUwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzZWc2X3RhYmxlX2xvb2t1cCYjMzQ7LAogICAgJiMzNDtzZWc2X2lucHV0X3JvdXRlJiMzNDssCiAgICAmIzM0O3NlZzZfb3V0cHV0X2RzdF9sb29rdXAmIzM0OywKICAgICYjMzQ7c2VnNl9idWlsZF9zdGF0ZSYjMzQ7LAogICAgJiMzNDtzZWc2X2ZpbGxfZW5jYXBfaW5mbyYjMzQ7LAogICAgJiMzNDtzZWc2X2VuY2FwX25sc2l6ZSYjMzQ7LAogICAgJiMzNDtzZWc2X2VuY2FwX2NtcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgbmV3IE5ldGxpbmsgYXR0cmlidXRlIGBTRUc2X0lQVFVOTkVMX1RBQkxFYCB0byBzcGVjaWZ5IGEgRklCIHRhYmxlIGZvciBwb3N0LWVuY2FwIFNJRCBsb29rdXAgaW4gU1J2NiB0dW5uZWxzLiBJdCBtb2RpZmllcyB0aGUgU1J2NiBlbmNhcHN1bGF0aW9uIGxvZ2ljIGluIGBuZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmNgIHRvIHBlcmZvcm0gcm91dGUgbG9va3VwcyBpbiB0aGUgc3BlY2lmaWVkIHRhYmxlIGR1cmluZyBib3RoIGlucHV0IGFuZCBvdXRwdXQgcGF0aHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byByZWFjaGFibGUgY29yZSBrZXJuZWwgbmV0d29ya2luZyBsb2dpYywgc3BlY2lmaWNhbGx5IHRoZSBJUHY2IFNlZ21lbnQgUm91dGluZyBzdWJzeXN0ZW0sIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUFY2X1NFRzZfTFdUVU5ORUwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzZWc2X3RhYmxlX2xvb2t1cCYjMzQ7LAogICAgJiMzNDtzZWc2X2lucHV0X3JvdXRlJiMzNDssCiAgICAmIzM0O3NlZzZfb3V0cHV0X2RzdF9sb29rdXAmIzM0OywKICAgICYjMzQ7c2VnNl9idWlsZF9zdGF0ZSYjMzQ7LAogICAgJiMzNDtzZWc2X2ZpbGxfZW5jYXBfaW5mbyYjMzQ7LAogICAgJiMzNDtzZWc2X2VuY2FwX25sc2l6ZSYjMzQ7LAogICAgJiMzNDtzZWc2X2VuY2FwX2NtcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgbmV3IE5ldGxpbmsgYXR0cmlidXRlIGBTRUc2X0lQVFVOTkVMX1RBQkxFYCB0byBzcGVjaWZ5IGEgRklCIHRhYmxlIGZvciBwb3N0LWVuY2FwIFNJRCBsb29rdXAgaW4gU1J2NiB0dW5uZWxzLiBJdCBtb2RpZmllcyB0aGUgU1J2NiBlbmNhcHN1bGF0aW9uIGxvZ2ljIGluIGBuZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmNgIHRvIHBlcmZvcm0gcm91dGUgbG9va3VwcyBpbiB0aGUgc3BlY2lmaWVkIHRhYmxlIGR1cmluZyBib3RoIGlucHV0IGFuZCBvdXRwdXQgcGF0aHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byByZWFjaGFibGUgY29yZSBrZXJuZWwgbmV0d29ya2luZyBsb2dpYywgc3BlY2lmaWNhbGx5IHRoZSBJUHY2IFNlZ21lbnQgUm91dGluZyBzdWJzeXN0ZW0sIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMTJUMDg6NTQ6MTYuNTIxNjIwMDQxWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzMyNDI1MjA5NzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBWNl9TRUc2X0xXVFVOTkVMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic2VnNl90YWJsZV9sb29rdXBcIixcbiAgICBcInNlZzZfaW5wdXRfcm91dGVcIixcbiAgICBcInNlZzZfb3V0cHV0X2RzdF9sb29rdXBcIixcbiAgICBcInNlZzZfYnVpbGRfc3RhdGVcIixcbiAgICBcInNlZzZfZmlsbF9lbmNhcF9pbmZvXCIsXG4gICAgXCJzZWc2X2VuY2FwX25sc2l6ZVwiLFxuICAgIFwic2VnNl9lbmNhcF9jbXBcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgbmV3IE5ldGxpbmsgYXR0cmlidXRlIGBTRUc2X0lQVFVOTkVMX1RBQkxFYCB0byBzcGVjaWZ5IGEgRklCIHRhYmxlIGZvciBwb3N0LWVuY2FwIFNJRCBsb29rdXAgaW4gU1J2NiB0dW5uZWxzLiBJdCBtb2RpZmllcyB0aGUgU1J2NiBlbmNhcHN1bGF0aW9uIGxvZ2ljIGluIGBuZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmNgIHRvIHBlcmZvcm0gcm91dGUgbG9va3VwcyBpbiB0aGUgc3BlY2lmaWVkIHRhYmxlIGR1cmluZyBib3RoIGlucHV0IGFuZCBvdXRwdXQgcGF0aHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byByZWFjaGFibGUgY29yZSBrZXJuZWwgbmV0d29ya2luZyBsb2dpYywgc3BlY2lmaWNhbGx5IHRoZSBJUHY2IFNlZ21lbnQgUm91dGluZyBzdWJzeXN0ZW0sIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwODo1NDoxNi41MjE2NTk4ODFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgyNzIxMzU2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGJkMGY0N2E4OGIwZDUwOTRiOWZkNDMxY2EwNGMyMWU4ZjY2YzdmMDFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFN1biBKdWwgMTIgMDg6NTQ6MTQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L3NlZzZfaXB0dW5uZWwuaCBiL2luY2x1ZGUvdWFwaS9saW51eC9zZWc2X2lwdHVubmVsLmhcXG5pbmRleCA0ODU4ODliMTk5MDBlYS4uZTE5NjRiM2E0YmIwYWYgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L3NlZzZfaXB0dW5uZWwuaFxcbisrKyBiL2luY2x1ZGUvdWFwaS9saW51eC9zZWc2X2lwdHVubmVsLmhcXG5AQCAtMjEsNiArMjEsNyBAQCBlbnVtIHtcXG4gXFx0U0VHNl9JUFRVTk5FTF9VTlNQRUMsXFxuIFxcdFNFRzZfSVBUVU5ORUxfU1JILFxcbiBcXHRTRUc2X0lQVFVOTkVMX1NSQyxcXHQvKiBzdHJ1Y3QgaW42X2FkZHIgKi9cXG4rXFx0U0VHNl9JUFRVTk5FTF9UQUJMRSxcXHQvKiBfX3UzMiBGSUIgdGFibGUgZm9yIHBvc3QtZW5jYXAgU0lEIGxvb2t1cCAqL1xcbiBcXHRfX1NFRzZfSVBUVU5ORUxfTUFYLFxcbiB9O1xcbiAjZGVmaW5lIFNFRzZfSVBUVU5ORUxfTUFYIChfX1NFRzZfSVBUVU5ORUxfTUFYIC0gMSlcXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jIGIvbmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jXFxuaW5kZXggNGM0NWMwYTc3ZDc1ZDAuLjYxYzZhMjdiZjIwMmRkIDEwMDY0NFxcbi0tLSBhL25ldC9pcHY2L3NlZzZfaXB0dW5uZWwuY1xcbisrKyBiL25ldC9pcHY2L3NlZzZfaXB0dW5uZWwuY1xcbkBAIC01MSw2ICs1MSw3IEBAIHN0cnVjdCBzZWc2X2x3dCB7XFxuIFxcdHN0cnVjdCBkc3RfY2FjaGUgY2FjaGVfaW5wdXQ7XFxuIFxcdHN0cnVjdCBkc3RfY2FjaGUgY2FjaGVfb3V0cHV0O1xcbiBcXHRzdHJ1Y3QgaW42X2FkZHIgdHVuc3JjO1xcbitcXHR1MzIgdGFibGU7XFxuIFxcdHN0cnVjdCBzZWc2X2lwdHVubmVsX2VuY2FwIHR1bmluZm9bXTtcXG4gfTtcXG4gXFxuQEAgLTY4LDYgKzY5LDcgQEAgc2VnNl9lbmNhcF9sd3R1bm5lbChzdHJ1Y3QgbHd0dW5uZWxfc3RhdGUgKmx3dClcXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IHNlZzZfaXB0dW5uZWxfcG9saWN5W1NFRzZfSVBUVU5ORUxfTUFYICsgMV0gPSB7XFxuIFxcdFtTRUc2X0lQVFVOTkVMX1NSSF1cXHQ9IHsgLnR5cGUgPSBOTEFfQklOQVJZIH0sXFxuIFxcdFtTRUc2X0lQVFVOTkVMX1NSQ11cXHQ9IE5MQV9QT0xJQ1lfRVhBQ1RfTEVOKHNpemVvZihzdHJ1Y3QgaW42X2FkZHIpKSxcXG4rXFx0W1NFRzZfSVBUVU5ORUxfVEFCTEVdXFx0PSB7IC50eXBlID0gTkxBX1UzMiB9LFxcbiB9O1xcbiBcXG4gc3RhdGljIGludCBubGFfcHV0X3NyaChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgYXR0cnR5cGUsXFxuQEAgLTQ3OSw2ICs0ODEsNzMgQEAgaW50IHNlZzZfZG9fc3JoX2lubGluZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaXB2Nl9zcl9oZHIgKm9zcmgpXFxuIH1cXG4gRVhQT1JUX1NZTUJPTF9HUEwoc2VnNl9kb19zcmhfaW5saW5lKTtcXG4gXFxuKy8qIGxvb2sgdXAgYSByb3V0ZSBpbiBhIHNwZWNpZmljIEZJQiB0YWJsZS5cXG4rICogUmV0dXJucyBhIHJlZmNvdW50ZWQgZHN0LCBvciBOVUxMIGlmIHRoZSB0YWJsZSBkb2VzIG5vdCBleGlzdC5cXG4rICovXFxuK3N0YXRpYyBzdHJ1Y3QgZHN0X2VudHJ5ICpzZWc2X3RhYmxlX2xvb2t1cChzdHJ1Y3QgbmV0ICpuZXQsXFxuK1xcdFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBza19idWZmICpza2IsXFxuK1xcdFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBmbG93aTYgKmZsNiwgdTMyIHRibF9pZClcXG4re1xcbitcXHRzdHJ1Y3QgZmliNl90YWJsZSAqdGFibGU7XFxuK1xcdHN0cnVjdCBydDZfaW5mbyAqcnQ7XFxuK1xcbitcXHR0YWJsZSA9IGZpYjZfZ2V0X3RhYmxlKG5ldCwgdGJsX2lkKTtcXG4rXFx0aWYgKCF0YWJsZSlcXG4rXFx0XFx0cmV0dXJuIE5VTEw7XFxuK1xcbitcXHRydCA9IGlwNl9wb2xfcm91dGUobmV0LCB0YWJsZSwgMCwgZmw2LCBza2IsIFJUNl9MT09LVVBfRl9IQVNfU0FERFIpO1xcbitcXHRyZXR1cm4gXFx1MDAyNnJ0LVxcdTAwM2Vkc3Q7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIHNlZzZfaW5pdF9mbG93aTYoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlwdjZoZHIgKmhkcixcXG4rXFx0XFx0XFx0ICAgICBzdHJ1Y3QgZmxvd2k2ICpmbDYpXFxuK3tcXG4rXFx0bWVtc2V0KGZsNiwgMCwgc2l6ZW9mKCpmbDYpKTtcXG4rXFxuK1xcdGZsNi1cXHUwMDNlZGFkZHIgPSBoZHItXFx1MDAzZWRhZGRyO1xcbitcXHRmbDYtXFx1MDAzZXNhZGRyID0gaGRyLVxcdTAwM2VzYWRkcjtcXG4rXFx0Zmw2LVxcdTAwM2VmbG93bGFiZWwgPSBpcDZfZmxvd2luZm8oaGRyKTtcXG4rXFx0Zmw2LVxcdTAwM2VmbG93aTZfbWFyayA9IHNrYi1cXHUwMDNlbWFyaztcXG4rXFx0Zmw2LVxcdTAwM2VmbG93aTZfcHJvdG8gPSBoZHItXFx1MDAzZW5leHRoZHI7XFxuK31cXG4rXFxuKy8qIGxvb2sgdXAgdGhlIHJvdXRlIGZvciB0aGUgZmlyc3QgU0lEIG9uIHRoZSBpbnB1dCBwYXRoIGFuZCBzZXQgaXQgb24gdGhlIHNrYi5cXG4rICogUmV0dXJucyB0aGUgcmVmY291bnRlZCBkc3QsIG9yIE5VTEwgaWYgYSByZWZlcmVuY2UgY291bGQgbm90IGJlIHNhZmVseSB0YWtlbi5cXG4rICovXFxuK3N0YXRpYyBzdHJ1Y3QgZHN0X2VudHJ5ICpzZWc2X2lucHV0X3JvdXRlKHN0cnVjdCBuZXQgKm5ldCxcXG4rXFx0XFx0XFx0XFx0XFx0ICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbitcXHRcXHRcXHRcXHRcXHQgIHN0cnVjdCBzZWc2X2x3dCAqc2x3dClcXG4re1xcbitcXHR1MzIgdGFibGUgPSBzbHd0LVxcdTAwM2V0YWJsZTtcXG4rXFxuK1xcdGlmICh0YWJsZSkge1xcbitcXHRcXHRzdHJ1Y3QgaXB2NmhkciAqaGRyID0gaXB2Nl9oZHIoc2tiKTtcXG4rXFx0XFx0c3RydWN0IGRzdF9lbnRyeSAqZHN0O1xcbitcXHRcXHRzdHJ1Y3QgZmxvd2k2IGZsNjtcXG4rXFxuK1xcdFxcdHNlZzZfaW5pdF9mbG93aTYoc2tiLCBoZHIsIFxcdTAwMjZmbDYpO1xcbitcXHRcXHRmbDYuZmxvd2k2X2lpZiA9IHNrYi1cXHUwMDNlZGV2LVxcdTAwM2VpZmluZGV4O1xcbitcXG4rXFx0XFx0ZHN0ID0gc2VnNl90YWJsZV9sb29rdXAobmV0LCBza2IsIFxcdTAwMjZmbDYsIHRhYmxlKTtcXG4rXFx0XFx0aWYgKCFkc3QpIHtcXG4rXFx0XFx0XFx0ZHN0ID0gXFx1MDAyNm5ldC1cXHUwMDNlaXB2Ni5pcDZfYmxrX2hvbGVfZW50cnktXFx1MDAzZWRzdDtcXG4rXFx0XFx0XFx0ZHN0X2hvbGQoZHN0KTtcXG4rXFx0XFx0fVxcbitcXG4rXFx0XFx0c2tiX2RzdF9kcm9wKHNrYik7XFxuK1xcdFxcdHNrYl9kc3Rfc2V0KHNrYiwgZHN0KTtcXG4rXFx0fSBlbHNlIHtcXG4rXFx0XFx0aXA2X3JvdXRlX2lucHV0KHNrYik7XFxuK1xcbitcXHRcXHQvKiBpcDZfcm91dGVfaW5wdXQoKSBzZXRzIGEgTk9SRUYgZHN0OyBmb3JjZSBhIHJlZmNvdW50IG9uIGl0XFxuK1xcdFxcdCAqIGJlZm9yZSBjYWNoaW5nIG9yIGZ1cnRoZXIgdXNlLlxcbitcXHRcXHQgKi9cXG4rXFx0XFx0c2tiX2RzdF9mb3JjZShza2IpO1xcbitcXHR9XFxuK1xcbitcXHRyZXR1cm4gc2tiX2RzdChza2IpO1xcbit9XFxuK1xcbiBzdGF0aWMgaW50IHNlZzZfaW5wdXRfZmluaXNoKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrLFxcbiBcXHRcXHRcXHQgICAgIHN0cnVjdCBza19idWZmICpza2IpXFxuIHtcXG5AQCAtNTEzLDE1ICs1ODIsOSBAQCBzdGF0aWMgaW50IHNlZzZfaW5wdXRfY29yZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpzayxcXG4gXFx0XFx0Z290byBkcm9wO1xcbiBcXHR9XFxuIFxcbi1cXHRpZiAoIWRzdCkge1xcbi1cXHRcXHRpcDZfcm91dGVfaW5wdXQoc2tiKTtcXG4tXFxuLVxcdFxcdC8qIGlwNl9yb3V0ZV9pbnB1dCgpIHNldHMgYSBOT1JFRiBkc3Q7IGZvcmNlIGEgcmVmY291bnQgb24gaXRcXG4tXFx0XFx0ICogYmVmb3JlIGNhY2hpbmcgb3IgZnVydGhlciB1c2UuXFxuLVxcdFxcdCAqL1xcbi1cXHRcXHRza2JfZHN0X2ZvcmNlKHNrYik7XFxuLVxcdFxcdGRzdCA9IHNrYl9kc3Qoc2tiKTtcXG4tXFx0XFx0aWYgKHVubGlrZWx5KCFkc3QpKSB7XFxuK1xcdGlmICh1bmxpa2VseSghZHN0KSkge1xcbitcXHRcXHRkc3QgPSBzZWc2X2lucHV0X3JvdXRlKG5ldCwgc2tiLCBzbHd0KTtcXG4rXFx0XFx0aWYgKCFkc3QpIHtcXG4gXFx0XFx0XFx0ZXJyID0gLUVORVRVTlJFQUNIO1xcbiBcXHRcXHRcXHRnb3RvIGRyb3A7XFxuIFxcdFxcdH1cXG5AQCAtNTc4LDYgKzY0MSwyOSBAQCBzdGF0aWMgaW50IHNlZzZfaW5wdXQoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4gXFx0cmV0dXJuIHNlZzZfaW5wdXRfY29yZShkZXZfbmV0KHNrYi1cXHUwMDNlZGV2KSwgTlVMTCwgc2tiKTtcXG4gfVxcbiBcXG4rLyogbG9vayB1cCB0aGUgcm91dGUgZm9yIHRoZSBmaXJzdCBTSUQgb24gdGhlIG91dHB1dCBwYXRoLiBBbHdheXMgcmV0dXJucyBhXFxuKyAqIHJlZmNvdW50ZWQgZHN0LlxcbisgKi9cXG4rc3RhdGljIHN0cnVjdCBkc3RfZW50cnkgKnNlZzZfb3V0cHV0X2RzdF9sb29rdXAoc3RydWN0IG5ldCAqbmV0LFxcbitcXHRcXHRcXHRcXHRcXHRcXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbitcXHRcXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgZmxvd2k2ICpmbDYsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdHN0cnVjdCBzZWc2X2x3dCAqc2x3dClcXG4re1xcbitcXHRzdHJ1Y3QgZHN0X2VudHJ5ICpkc3Q7XFxuK1xcbitcXHRpZiAoc2x3dC1cXHUwMDNldGFibGUpIHtcXG4rXFx0XFx0ZHN0ID0gc2VnNl90YWJsZV9sb29rdXAobmV0LCBza2IsIGZsNiwgc2x3dC1cXHUwMDNldGFibGUpO1xcbitcXHRcXHRpZiAoIWRzdCkge1xcbitcXHRcXHRcXHRkc3QgPSBcXHUwMDI2bmV0LVxcdTAwM2VpcHY2LmlwNl9ibGtfaG9sZV9lbnRyeS1cXHUwMDNlZHN0O1xcbitcXHRcXHRcXHRkc3RfaG9sZChkc3QpO1xcbitcXHRcXHR9XFxuK1xcdH0gZWxzZSB7XFxuK1xcdFxcdGRzdCA9IGlwNl9yb3V0ZV9vdXRwdXQobmV0LCBOVUxMLCBmbDYpO1xcbitcXHR9XFxuK1xcbitcXHRyZXR1cm4gZHN0O1xcbit9XFxuK1xcbiBzdGF0aWMgaW50IHNlZzZfb3V0cHV0X2NvcmUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29jayAqc2ssXFxuIFxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiB7XFxuQEAgLTYwMCwxNCArNjg2LDkgQEAgc3RhdGljIGludCBzZWc2X291dHB1dF9jb3JlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrLFxcbiBcXHRcXHRzdHJ1Y3QgaXB2NmhkciAqaGRyID0gaXB2Nl9oZHIoc2tiKTtcXG4gXFx0XFx0c3RydWN0IGZsb3dpNiBmbDY7XFxuIFxcbi1cXHRcXHRtZW1zZXQoXFx1MDAyNmZsNiwgMCwgc2l6ZW9mKGZsNikpO1xcbi1cXHRcXHRmbDYuZGFkZHIgPSBoZHItXFx1MDAzZWRhZGRyO1xcbi1cXHRcXHRmbDYuc2FkZHIgPSBoZHItXFx1MDAzZXNhZGRyO1xcbi1cXHRcXHRmbDYuZmxvd2xhYmVsID0gaXA2X2Zsb3dpbmZvKGhkcik7XFxuLVxcdFxcdGZsNi5mbG93aTZfbWFyayA9IHNrYi1cXHUwMDNlbWFyaztcXG4tXFx0XFx0Zmw2LmZsb3dpNl9wcm90byA9IGhkci1cXHUwMDNlbmV4dGhkcjtcXG4rXFx0XFx0c2VnNl9pbml0X2Zsb3dpNihza2IsIGhkciwgXFx1MDAyNmZsNik7XFxuIFxcbi1cXHRcXHRkc3QgPSBpcDZfcm91dGVfb3V0cHV0KG5ldCwgTlVMTCwgXFx1MDAyNmZsNik7XFxuK1xcdFxcdGRzdCA9IHNlZzZfb3V0cHV0X2RzdF9sb29rdXAobmV0LCBza2IsIFxcdTAwMjZmbDYsIHNsd3QpO1xcbiBcXHRcXHRpZiAoZHN0LVxcdTAwM2VlcnJvcikge1xcbiBcXHRcXHRcXHRlcnIgPSBkc3QtXFx1MDAzZWVycm9yO1xcbiBcXHRcXHRcXHRnb3RvIGRyb3A7XFxuQEAgLTc1Miw2ICs4MzMsMTUgQEAgc3RhdGljIGludCBzZWc2X2J1aWxkX3N0YXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5sYXR0ciAqbmxhLFxcbiBcXHRcXHR9XFxuIFxcdH1cXG4gXFxuK1xcdGlmICh0YltTRUc2X0lQVFVOTkVMX1RBQkxFXSkge1xcbitcXHRcXHRzbHd0LVxcdTAwM2V0YWJsZSA9IG5sYV9nZXRfdTMyKHRiW1NFRzZfSVBUVU5ORUxfVEFCTEVdKTtcXG4rXFx0XFx0aWYgKCFzbHd0LVxcdTAwM2V0YWJsZSkge1xcbitcXHRcXHRcXHROTF9TRVRfRVJSX01TRyhleHRhY2ssIFxcXCJpbnZhbGlkIGxvb2t1cCB0YWJsZVxcXCIpO1xcbitcXHRcXHRcXHRlcnIgPSAtRUlOVkFMO1xcbitcXHRcXHRcXHRnb3RvIGVycl9kZXN0cm95X291dHB1dDtcXG4rXFx0XFx0fVxcbitcXHR9XFxuK1xcbiBcXHRuZXd0cy1cXHUwMDNldHlwZSA9IExXVFVOTkVMX0VOQ0FQX1NFRzY7XFxuIFxcdG5ld3RzLVxcdTAwM2VmbGFncyB8PSBMV1RVTk5FTF9TVEFURV9JTlBVVF9SRURJUkVDVDtcXG4gXFxuQEAgLTc5NSw2ICs4ODUsMTAgQEAgc3RhdGljIGludCBzZWc2X2ZpbGxfZW5jYXBfaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHQgICAgbmxhX3B1dF9pbjZfYWRkcihza2IsIFNFRzZfSVBUVU5ORUxfU1JDLCBcXHUwMDI2c2x3dC1cXHUwMDNldHVuc3JjKSlcXG4gXFx0XFx0cmV0dXJuIC1FTVNHU0laRTtcXG4gXFxuK1xcdGlmIChzbHd0LVxcdTAwM2V0YWJsZSBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgbmxhX3B1dF91MzIoc2tiLCBTRUc2X0lQVFVOTkVMX1RBQkxFLCBzbHd0LVxcdTAwM2V0YWJsZSkpXFxuK1xcdFxcdHJldHVybiAtRU1TR1NJWkU7XFxuK1xcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG5AQCAtODA5LDYgKzkwMyw5IEBAIHN0YXRpYyBpbnQgc2VnNl9lbmNhcF9ubHNpemUoc3RydWN0IGx3dHVubmVsX3N0YXRlICpsd3RzdGF0ZSlcXG4gXFx0aWYgKCFpcHY2X2FkZHJfYW55KFxcdTAwMjZzbHd0LVxcdTAwM2V0dW5zcmMpKVxcbiBcXHRcXHRubHNpemUgKz0gbmxhX3RvdGFsX3NpemUoc2l6ZW9mKHNsd3QtXFx1MDAzZXR1bnNyYykpO1xcbiBcXG4rXFx0aWYgKHNsd3QtXFx1MDAzZXRhYmxlKVxcbitcXHRcXHRubHNpemUgKz0gbmxhX3RvdGFsX3NpemUoc2l6ZW9mKHUzMikpO1xcbitcXG4gXFx0cmV0dXJuIG5sc2l6ZTtcXG4gfVxcbiBcXG5AQCAtODI2LDYgKzkyMyw5IEBAIHN0YXRpYyBpbnQgc2VnNl9lbmNhcF9jbXAoc3RydWN0IGx3dHVubmVsX3N0YXRlICphLCBzdHJ1Y3QgbHd0dW5uZWxfc3RhdGUgKmIpXFxuIFxcdGlmICghaXB2Nl9hZGRyX2VxdWFsKFxcdTAwMjZhX3Nsd3QtXFx1MDAzZXR1bnNyYywgXFx1MDAyNmJfc2x3dC1cXHUwMDNldHVuc3JjKSlcXG4gXFx0XFx0cmV0dXJuIDE7XFxuIFxcbitcXHRpZiAoYV9zbHd0LVxcdTAwM2V0YWJsZSAhPSBiX3Nsd3QtXFx1MDAzZXRhYmxlKVxcbitcXHRcXHRyZXR1cm4gMTtcXG4rXFxuIFxcdHJldHVybiBtZW1jbXAoYV9oZHIsIGJfaGRyLCBsZW4pO1xcbiB9XFxuIFxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvTWFrZWZpbGUgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvTWFrZWZpbGVcXG5pbmRleCA3MDhkOTYwYWUwN2Q1Yi4uNWRmMGM5NGFiMDYwMTggMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L01ha2VmaWxlXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L01ha2VmaWxlXFxuQEAgLTg1LDYgKzg1LDcgQEAgVEVTVF9QUk9HUyA6PSBcXFxcXFxuIFxcdHJ4dGltZXN0YW1wLnNoIFxcXFxcXG4gXFx0c2N0cF92cmYuc2ggXFxcXFxcbiBcXHRza2ZfbmV0X29mZi5zaCBcXFxcXFxuK1xcdHNydjZfZW5jYXBfbG9va3VwX2wzdnBuX3Rlc3Quc2ggXFxcXFxcbiBcXHRzcnY2X2VuZF9kdDQ2X2wzdnBuX3Rlc3Quc2ggXFxcXFxcbiBcXHRzcnY2X2VuZF9kdDRfbDN2cG5fdGVzdC5zaCBcXFxcXFxuIFxcdHNydjZfZW5kX2R0Nl9sM3Zwbl90ZXN0LnNoIFxcXFxcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L3NydjZfZW5jYXBfbG9va3VwX2wzdnBuX3Rlc3Quc2ggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvc3J2Nl9lbmNhcF9sb29rdXBfbDN2cG5fdGVzdC5zaFxcbm5ldyBmaWxlIG1vZGUgMTAwNzU1XFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLmQ2MjQ5MzAzYjdlYWExXFxuLS0tIC9kZXYvbnVsbFxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9zcnY2X2VuY2FwX2xvb2t1cF9sM3Zwbl90ZXN0LnNoXFxuQEAgLTAsMCArMSwxMDI3IEBAXFxuKyMhL2Jpbi9iYXNoXFxuKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4rI1xcbisjIGF1dGhvcjogQW5kcmVhIE1heWVyIFxcdTAwM2NhbmRyZWEubWF5ZXJAdW5pcm9tYTIuaXRcXHUwMDNlXFxuK1xcbisjIFRoaXMgdGVzdCBldmFsdWF0ZXMgdGhlIFNSdjYgZW5jYXAgXFxcImxvb2t1cFxcXCIgYXR0cmlidXRlLiBBZnRlciBlbmNhcHN1bGF0aW9uXFxuKyMgdGhlIHJvdXRlciBsb29rcyB1cCB0aGUgcm91dGUgZm9yIHRoZSBmaXJzdCBTSUQsIHRoYXQgaXMgdGhlIG91dGVyIElQdjZcXG4rIyBkZXN0aW5hdGlvbiBvZiB0aGUgZW5jYXBzdWxhdGVkIHBhY2tldC4gVGhlIGF0dHJpYnV0ZSBzZWxlY3RzIHRoZSBGSUIgdGFibGVcXG4rIyB1c2VkIGZvciB0aGlzIHBvc3QtZW5jYXAgU0lEIHJvdXRlIGxvb2t1cC5cXG4rI1xcbisjIFR3byByb3V0ZXJzIChydC0xLCBydC0yKSBwcm92aWRlIEwzIFZQTiBzZXJ2aWNlcyBvdmVyIGFuIElQdjYgdW5kZXJsYXlcXG4rIyAoZmQwMDo6LzY0KS4gRWFjaCByb3V0ZXIgdXNlcyBhIHNlcGFyYXRlIFZSRiBwZXIgdGVuYW50LCB3aXRoIGRlZmF1bHRcXG4rIyBibGFja2hvbGUgcm91dGVzIChJUHY0IGFuZCBJUHY2KSB0byBwcmV2ZW50IHRyYWZmaWMgZnJvbSBsZWFraW5nIG91dCBvZlxcbisjIHRoZSBWUkYuIFRlbmFudCB0cmFmZmljIGlzIGVuY2Fwc3VsYXRlZCwgdGhlbiBkZWNhcHN1bGF0ZWQgd2l0aCBhblxcbisjIEVuZC5EVDQ2LiBFYWNoIHJvdXRlciBwcm94aWVzIGJvdGggTkRQIGFuZCBBUlAuXFxuKyNcXG4rIyBUaGUgcm91dGVzIHRoYXQgbWF0Y2ggdGhlIGZpcnN0IFNJRHMgYXJlIGluc3RhbGxlZCBpbiBhIGRlZGljYXRlZCB1bmRlcmxheVxcbisjIHRhYmxlICg1MDApIHJhdGhlciB0aGFuIHRoZSBtYWluIHRhYmxlICgyNTQpLiBUaGUgZW5jYXAgcm91dGVzIHVzZVxcbisjIFxcXCJsb29rdXAgNTAwXFxcIiB0byBzZWxlY3QgdGhpcyB0YWJsZSBmb3IgdGhlIHBvc3QtZW5jYXAgU0lEIHJvdXRlIGxvb2t1cC5cXG4rI1xcbisjIFdpdGhvdXQgdGhlIFxcXCJsb29rdXBcXFwiIGF0dHJpYnV0ZSwgdGhlIHJvdXRlIGZvciB0aGUgZmlyc3QgU0lEIGNhbm5vdCBiZSBmb3VuZDpcXG4rIyAgLSBvbiB0aGUgaW5wdXQgcGF0aCAoZm9yd2FyZGVkIHRyYWZmaWMpLCB0aGUgbG9va3VwIHN0YXlzIGluIHRoZSBWUkZcXG4rIyAgICBhbmQgaGl0cyB0aGUgYmxhY2tob2xlO1xcbisjICAtIG9uIHRoZSBvdXRwdXQgcGF0aCAobG9jYWxseSBvcmlnaW5hdGVkIHRyYWZmaWMpLCB0aGUgbG9va3VwIGZhbGxzXFxuKyMgICAgdGhyb3VnaCB0byB0aGUgbWFpbiB0YWJsZSwgd2l0aCBubyByb3V0ZSB0byB0aGUgZmlyc3QgU0lELlxcbisjXFxuKyNcXG4rIyBMZWdlbmQgKHNwZWNpZmljIHBlci10ZW5hbnQgYWRkcmVzc2VzIGFyZSBpbiB0aGUgaW5zdGFudGlhdGlvbiB0YWJsZXMgYmVsb3cpOlxcbisjICAgWCAgICAgICAgICA9IHRlbmFudCBpZCBhbmQgVlJGIHRhYmxlIGlkOyB0d28gdGVuYW50czogMTAwIGFuZCAyMDBcXG4rIyAgICAgICAgICAgICAgICAoXFxcInRYXFxcIiBtZWFucyB0ZW5hbnQgWCwgZS5nLiB0MTAwLCB0MjAwKVxcbisjICAgYSwgYiAgICAgICA9IHRoZSB0d28gaG9zdCBpZHMgb2YgdGhlIHRlbmFudFxcbisjICAgSEEsIEhCICAgICA9IGFkZHJlc3NlcyBvZiBob3N0IGEsIGhvc3QgYlxcbisjICAgUkxPMSwgUkxPMiA9IHJsby1YIHJvdXRlciBsb29wYmFjayBhZGRyZXNzIG9uIHJ0LTEsIHJ0LTIgKHRlbmFudCBnYXRld2F5XFxuKyMgICAgICAgICAgICAgICAgZm9yIHRoZSBvdXRwdXQgcGF0aCwgZHVhbC1zdGFjaylcXG4rIyAgIHZyZi1YICAgICAgPSBwZXItdGVuYW50IFZSRiBvbiBlYWNoIHJvdXRlciAodGFibGUgWClcXG4rI1xcbisjIENvbnN0YW50cyAoc2FtZSBmb3IgZXZlcnkgdGVuYW50KTpcXG4rIyAgIHVuZGVybGF5ICAgPSB0YWJsZSA1MDA7IHBvc3QtZW5jYXAgU0lEIHJvdXRlIGxvb2t1cCAodmlhIFxcXCJsb29rdXAgNTAwXFxcIilcXG4rIyAgIGxvY2Fsc2lkICAgPSB0YWJsZSA5MDsgaG9sZHMgdGhlIGRlY2FwIFNJRHMgKEVuZC5EVDQ2KVxcbisjICAgZmQwMDo6LzY0ICA9IHVuZGVybGF5IGxpbmsgYmV0d2VlbiBydC0xIGFuZCBydC0yXFxuKyMgICB2ZXRoLXRYICAgID0gY2FmZTo6MjU0LzEwLjAuMC4yNTQgKHRlbmFudCBnYXRld2F5IG9uIHZldGgsIGJvdGggcm91dGVycylcXG4rI1xcbisjXFxuKyMgKy0tLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLStcXG4rIyB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgfFxcbisjIHwgICBocy10WC1hIG5ldG5zICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIGhzLXRYLWIgbmV0bnMgICB8XFxuKyMgfCAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHxcXG4rIyB8ICArLS0tLS0tLS0tLS0tLSsgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICstLS0tLS0tLS0tLS0tKyAgfFxcbisjIHwgIHwgICAgdmV0aDAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgfCAgICB2ZXRoMCAgICB8ICB8XFxuKyMgfCAgfCAgICAgSEEgICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICB8ICAgICBIQiAgICAgIHwgIHxcXG4rIyB8ICArLS0tLS0tLS0tLS0tLSsgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICstLS0tLS0tLS0tLS0tKyAgfFxcbisjIHwgICAgICAgIC4gICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIC4gICAgICAgICB8XFxuKyMgKy0tLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLStcXG4rIyAgICAgICAgICAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuXFxuKyMgICAgICAgICAgLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLlxcbisjICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXFxuKyMgfCAgICAgICAgLiAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgLiAgICAgICAgIHxcXG4rIyB8ICstLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgICB8ICAgfCAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLSsgfFxcbisjIHwgfCAgIHZldGgtdFggICAgIHwgICArLS0tLS0tLS0tLSsgIHwgICB8ICArLS0tLS0tLS0tLSsgICB8ICAgdmV0aC10WCAgICAgfCB8XFxuKyMgfCB8ICA6OjI1NC8uMjU0ICAgfCAgIHwgbG9jYWxzaWQgfCAgfCAgIHwgIHwgbG9jYWxzaWQgfCAgIHwgIDo6MjU0Ly4yNTQgICB8IHxcXG4rIyB8ICstLS0tLS0tKy0tLS0tLS0rICAgKy0tLS0tLS0tLS0rICB8ICAgfCAgKy0tLS0tLS0tLS0rICAgKy0tLS0tLS0rLS0tLS0tLSsgfFxcbisjIHwgICAgICAgICB8ICAgICAgICAgICArLS0tLS0tLS0tLSsgIHwgICB8ICArLS0tLS0tLS0tLSsgICAgICAgICAgIHwgICAgICAgICB8XFxuKyMgfCAgICArLS0tLSstLS0tKyAgICAgIHwgdW5kZXJsYXkgfCAgfCAgIHwgIHwgdW5kZXJsYXkgfCAgICAgICstLS0tKy0tLS0rICAgIHxcXG4rIyB8ICAgIHwgdnJmLVggICB8ICAgICAgKy0tLS0tLS0tLS0rICB8ICAgfCAgKy0tLS0tLS0tLS0rICAgICAgfCB2cmYtWCAgIHwgICAgfFxcbisjIHwgICAgKy0tLS0rLS0tLSsgICAgICAgICAgICAgICAgICAgIHwgICB8ICAgICAgICAgICAgICAgICAgICArLS0tLSstLS0tKyAgICB8XFxuKyMgfCAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHxcXG4rIyB8ICAgKy0tLS0tKy0tLS0rICAgICstLS0tLS0tLS0tLS0rICB8ICAgfCAgKy0tLS0tLS0tLS0tLSsgICAgKy0tLS0rLS0tLS0rICAgfFxcbisjIHwgICB8ICBybG8tWCAgIHwgICAgfCAgIHZldGgwICAgIHwgIHwgICB8ICB8ICAgdmV0aDAgICAgfCAgICB8ICBybG8tWCAgIHwgICB8XFxuKyMgfCAgIHwgICBSTE8xICAgfCAgICB8IGZkMDA6OjEvNjQgfC4ufC4uLnwuLnwgZmQwMDo6Mi82NCB8ICAgIHwgICBSTE8yICAgfCAgIHxcXG4rIyB8ICAgKy0tLS0tLS0tLS0rICAgICstLS0tLS0tLS0tLS0rICB8ICAgfCAgKy0tLS0tLS0tLS0tLSsgICAgKy0tLS0tLS0tLS0rICAgfFxcbisjIHwgICAgICAgICAgICAgIHJ0LTEgbmV0bnMgICAgICAgICAgIHwgICB8ICAgICAgICAgIHJ0LTIgbmV0bnMgICAgICAgICAgICAgICB8XFxuKyMgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcXG4rI1xcbisjXFxuKyMgUGVyLXRlbmFudCBpbnN0YW50aWF0aW9uOlxcbisjICstLS0tLSstLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tK1xcbisjIHwgIFggIHwgYSwgYiB8IEhBICAgICAgICAgICAgICAgIHwgSEIgICAgICAgICAgICAgICAgfFxcbisjICstLS0tLSstLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tK1xcbisjIHwgMTAwIHwgMSwgMiB8IGNhZmU6OjEsIDEwLjAuMC4xIHwgY2FmZTo6MiwgMTAuMC4wLjIgfFxcbisjIHwgMjAwIHwgMywgNCB8IGNhZmU6OjMsIDEwLjAuMC4zIHwgY2FmZTo6NCwgMTAuMC4wLjQgfFxcbisjICstLS0tLSstLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tK1xcbisjXFxuKyMgUm91dGVyIGxvb3BiYWNrIChybG8tWCkgYWRkcmVzc2VzLCBwZXIgdGVuYW50OlxcbisjICstLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcXG4rIyB8ICBYICB8IFJMTzEgKHJ0LTEpICAgICAgICAgICB8IFJMTzIgKHJ0LTIpICAgICAgICAgICB8XFxuKyMgKy0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xcbisjIHwgMTAwIHwgY2FmZTo6MTAxLCAxMC4wLjAuMTAxIHwgY2FmZTo6MTAyLCAxMC4wLjAuMTAyIHxcXG4rIyB8IDIwMCB8IGNhZmU6OjIwMSwgMTAuMC4wLjIwMSB8IGNhZmU6OjIwMiwgMTAuMC4wLjIwMiB8XFxuKyMgKy0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xcbisjXFxuKyNcXG4rIyBOZXR3b3JrIGNvbmZpZ3VyYXRpb25cXG4rIyA9PT09PT09PT09PT09PT09PT09PT1cXG4rI1xcbisjIHJ0LTE6IGxvY2Fsc2lkIHRhYmxlICh0YWJsZSA5MClcXG4rIyArLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcXG4rIyB8IHRlbmFudCB8IFNJRCAgICAgICAgICAgICAgICB8IEFjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcXG4rIyArLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcXG4rIyB8ICAxMDAgICB8IGZjMDA6MjoxOjEwMDo6MGQ0NiB8IGFwcGx5IFNSdjYgRW5kLkRUNDYgdnJmdGFibGUgMTAwIHxcXG4rIyB8ICAyMDAgICB8IGZjMDA6MjoxOjIwMDo6MGQ0NiB8IGFwcGx5IFNSdjYgRW5kLkRUNDYgdnJmdGFibGUgMjAwIHxcXG4rIyArLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcXG4rI1xcbisjIHJ0LTE6IHVuZGVybGF5IHRhYmxlICh0YWJsZSA1MDApIC0gcG9zdC1lbmNhcCBTSUQgcm91dGUgbG9va3VwXFxuKyMgKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXFxuKyMgfCB0ZW5hbnQgfCBTSUQgICAgICAgICAgICAgICAgfCBBY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICB8XFxuKyMgKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXFxuKyMgfCAgMTAwICAgfCBmYzAwOjE6MjoxMDA6OjBkNDYgfCBmb3J3YXJkIHZpYSBmZDAwOjoyIGRldiB2ZXRoMCB8XFxuKyMgfCAgMjAwICAgfCBmYzAwOjE6MjoyMDA6OjBkNDYgfCBmb3J3YXJkIHZpYSBmZDAwOjoyIGRldiB2ZXRoMCB8XFxuKyMgKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXFxuKyNcXG4rIyBydC0xOiBWUkYgdGFibGVzIChwZXIgdGVuYW50OiB2cmYtWCA9IHRhYmxlIFgpXFxuKyMgKy0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXFxuKyMgfCB0ZW5hbnQgfCBkc3QgICAgICAgIHwgZW5jYXAgYWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XFxuKyMgKy0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXFxuKyMgfCAxMDAgICAgfCBjYWZlOjoyICAgIHwgZW5jYXAgc2VncyBmYzAwOjE6MjoxMDA6OjBkNDYgbG9va3VwIDUwMCB8XFxuKyMgfCAgICAgICAgfCAxMC4wLjAuMiAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XFxuKyMgfCAgICAgICAgfCBjYWZlOjoxMDIgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XFxuKyMgfCAgICAgICAgfCAxMC4wLjAuMTAyIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XFxuKyMgfCAyMDAgICAgfCBjYWZlOjo0ICAgIHwgZW5jYXAgc2VncyBmYzAwOjE6MjoyMDA6OjBkNDYgbG9va3VwIDUwMCB8XFxuKyMgfCAgICAgICAgfCAxMC4wLjAuNCAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XFxuKyMgfCAgICAgICAgfCBjYWZlOjoyMDIgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XFxuKyMgfCAgICAgICAgfCAxMC4wLjAuMjAyIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XFxuKyMgKy0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXFxuKyNcXG4rI1xcbisjIHJ0LTI6IGxvY2Fsc2lkIHRhYmxlICh0YWJsZSA5MClcXG4rIyArLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcXG4rIyB8IHRlbmFudCB8IFNJRCAgICAgICAgICAgICAgICB8IEFjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcXG4rIyArLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcXG4rIyB8ICAxMDAgICB8IGZjMDA6MToyOjEwMDo6MGQ0NiB8IGFwcGx5IFNSdjYgRW5kLkRUNDYgdnJmdGFibGUgMTAwIHxcXG4rIyB8ICAyMDAgICB8IGZjMDA6MToyOjIwMDo6MGQ0NiB8IGFwcGx5IFNSdjYgRW5kLkRUNDYgdnJmdGFibGUgMjAwIHxcXG4rIyArLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcXG4rI1xcbisjIHJ0LTI6IHVuZGVybGF5IHRhYmxlICh0YWJsZSA1MDApIC0gcG9zdC1lbmNhcCBTSUQgcm91dGUgbG9va3VwXFxuKyMgKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXFxuKyMgfCB0ZW5hbnQgfCBTSUQgICAgICAgICAgICAgICAgfCBBY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICB8XFxuKyMgKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXFxuKyMgfCAgMTAwICAgfCBmYzAwOjI6MToxMDA6OjBkNDYgfCBmb3J3YXJkIHZpYSBmZDAwOjoxIGRldiB2ZXRoMCB8XFxuKyMgfCAgMjAwICAgfCBmYzAwOjI6MToyMDA6OjBkNDYgfCBmb3J3YXJkIHZpYSBmZDAwOjoxIGRldiB2ZXRoMCB8XFxuKyMgKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXFxuKyNcXG4rIyBydC0yOiBWUkYgdGFibGVzIChwZXIgdGVuYW50OiB2cmYtWCA9IHRhYmxlIFgpXFxuKyMgKy0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXFxuKyMgfCB0ZW5hbnQgfCBkc3QgICAgICAgIHwgZW5jYXAgYWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XFxuKyMgKy0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXFxuKyMgfCAxMDAgICAgfCBjYWZlOjoxICAgIHwgZW5jYXAgc2VncyBmYzAwOjI6MToxMDA6OjBkNDYgbG9va3VwIDUwMCB8XFxuKyMgfCAgICAgICAgfCAxMC4wLjAuMSAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XFxuKyMgfCAgICAgICAgfCBjYWZlOjoxMDEgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XFxuKyMgfCAgICAgICAgfCAxMC4wLjAuMTAxIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XFxuKyMgfCAyMDAgICAgfCBjYWZlOjozICAgIHwgZW5jYXAgc2VncyBmYzAwOjI6MToyMDA6OjBkNDYgbG9va3VwIDUwMCB8XFxuKyMgfCAgICAgICAgfCAxMC4wLjAuMyAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XFxuKyMgfCAgICAgICAgfCBjYWZlOjoyMDEgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XFxuKyMgfCAgICAgICAgfCAxMC4wLjAuMjAxIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XFxuKyMgKy0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXFxuKyMgV2l0aGluIGEgdGVuYW50LCBhIHNpbmdsZSBTSUQgcmVhY2hlcyB0aGUgYWRqYWNlbnQgcm91dGVyIChpdHMgbG9vcGJhY2spXFxuKyMgYW5kIHRoZSByZW1vdGUgaG9zdCBjb25uZWN0ZWQgdG8gaXQsIGluIGJvdGggSVB2NCBhbmQgSVB2Ni5cXG4rI1xcbisjIEZvciBib3RoIHJ0LTEgYW5kIHJ0LTIsIGVhY2ggVlJGIGFsc28gaGFzIHRoZSBjb25uZWN0ZWQgaG9zdCBwcmVmaXggKGNhZmU6Oi82NFxcbisjIG9yIDEwLjAuMC4wLzI0KSBhbmQgYSBkZWZhdWx0IGJsYWNraG9sZSAoSVB2NCBhbmQgSVB2NikuXFxuKyNcXG4rI1xcbisjIExvY2FsbHkgb3JpZ2luYXRlZCB0cmFmZmljIChvdXRwdXQgcGF0aClcXG4rIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxuKyNcXG4rIyBUaGUgY29uZmlndXJhdGlvbiBhYm92ZSBjb3ZlcnMgZm9yd2FyZGVkIHRyYWZmaWMsIHdoZXJlIHBhY2tldHMgYXJyaXZlIGZyb21cXG4rIyBhIGhvc3QgYW5kIGFyZSBlbmNhcHN1bGF0ZWQgYnkgdGhlIHJvdXRlci4gVG8gYWxzbyB0ZXN0IHJvdXRlci1vcmlnaW5hdGVkXFxuKyMgdHJhZmZpYywgZWFjaCByb3V0ZXIgcGluZ3MgdGhlIG90aGVyIHJvdXRlcidzIGxvb3BiYWNrIGFkZHJlc3MgdGhyb3VnaFxcbisjIHRoZSBWUE4uXFxuKyNcXG4rIyBFeGFtcGxlICh0ZW5hbnQgMTAwKSwgcnQtMSBwaW5ncyBjYWZlOjoxMDIgKHJ0LTIncyBsb29wYmFjayk6XFxuKyMgICAxLiBydC0xIGxvb2tzIHVwIGNhZmU6OjEwMiBpbiB2cmYtMTAwIGFuZCBlbmNhcHN1bGF0ZXMgaXQgKFNJRFxcbisjICAgICAgZmMwMDoxOjI6MTAwOjowZDQ2KSwgdGhlbiBcXFwibG9va3VwIDUwMFxcXCIgZmluZHMgdGhlIHJvdXRlIGZvciB0aGUgU0lEIGluIHRoZVxcbisjICAgICAgdW5kZXJsYXkgdGFibGUgKG5leHQgaG9wIGZkMDA6OjIpIGFuZCBmb3J3YXJkcyBpdDtcXG4rIyAgIDIuIHJ0LTIgZGVjYXBzdWxhdGVzIGl0IChsb2NhbHNpZCwgRW5kLkRUNDYpIGFuZCBkZWxpdmVycyBpdCBsb2NhbGx5XFxuKyMgICAgICAoY2FmZTo6MTAyIGlzIG9uIHRoZSBybG8tMTAwIGludGVyZmFjZSk7XFxuKyMgICAzLiBydC0yIHJlcGxpZXMgd2l0aCBkZXN0aW5hdGlvbiBjYWZlOjoxMDEgKHJ0LTEncyBsb29wYmFjaykuIHJ0LTIgbG9va3MgdXBcXG4rIyAgICAgIGNhZmU6OjEwMSBpbiB2cmYtMTAwIGFuZCBlbmNhcHN1bGF0ZXMgaXQgYmFjayB0byBydC0xIChhZ2FpbiB2aWEgXFxcImxvb2t1cFxcbisjICAgICAgNTAwXFxcIikuIHJ0LTEgZGVjYXBzdWxhdGVzIGl0IGFuZCBkZWxpdmVycyBpdC5cXG4rXFxuKyMgc2hlbGxjaGVjayBzb3VyY2U9bGliLnNoXFxuK3NvdXJjZSBsaWIuc2hcXG4rXFxuK3JlYWRvbmx5IExPQ0FMU0lEX1RBQkxFX0lEPTkwXFxuK3JlYWRvbmx5IFVOREVSTEFZX1RBQkxFX0lEPTUwMFxcbityZWFkb25seSBJUHY2X1JUX05FVFdPUks9ZmQwMFxcbityZWFkb25seSBJUHY2X0hTX05FVFdPUks9Y2FmZVxcbityZWFkb25seSBJUHY0X0hTX05FVFdPUks9MTAuMC4wXFxuK3JlYWRvbmx5IFZQTl9MT0NBVE9SX1NFUlZJQ0U9ZmMwMFxcbityZWFkb25seSBEVDQ2X0ZVTkM9MGQ0NlxcbityZWFkb25seSBEVU1NWV9ERVZOQU1FPWR1bTBcXG4rcmVhZG9ubHkgSVB2Nl9URVNUU19BRERSPTIwMDE6ZGI4OjoxXFxuK3JlYWRvbmx5IFRFU1RTX1RBQkxFX0lEPTU0MzIxXFxuK1BJTkdfVElNRU9VVF9TRUM9NFxcbitcXG4rU0VUVVBfRVJSPTFcXG4rXFxuK3JldD0ke2tzZnRfc2tpcH1cXG4rbnN1Y2Nlc3M9MFxcbituZmFpbD0wXFxuK1xcbitQQVVTRV9PTl9GQUlMPSR7UEFVU0VfT05fRkFJTDo9bm99XFxuK1xcbitsb2dfdGVzdCgpXFxuK3tcXG4rXFx0bG9jYWwgcmM9XFxcIiQxXFxcIlxcbitcXHRsb2NhbCBleHBlY3RlZD1cXFwiJDJcXFwiXFxuK1xcdGxvY2FsIG1zZz1cXFwiJDNcXFwiXFxuK1xcbitcXHRpZiBbIFxcXCIke3JjfVxcXCIgLWVxIFxcXCIke2V4cGVjdGVkfVxcXCIgXTsgdGhlblxcbitcXHRcXHRuc3VjY2Vzcz0kKChuc3VjY2VzcysxKSlcXG4rXFx0XFx0cHJpbnRmIFxcXCJcXFxcbiAgICBURVNUOiAlLTYwcyAgWyBPSyBdXFxcXG5cXFwiIFxcXCIke21zZ31cXFwiXFxuK1xcdGVsc2VcXG4rXFx0XFx0cmV0PTFcXG4rXFx0XFx0bmZhaWw9JCgobmZhaWwrMSkpXFxuK1xcdFxcdHByaW50ZiBcXFwiXFxcXG4gICAgVEVTVDogJS02MHMgIFtGQUlMXVxcXFxuXFxcIiBcXFwiJHttc2d9XFxcIlxcbitcXHRcXHRpZiBbIFxcXCIke1BBVVNFX09OX0ZBSUx9XFxcIiA9IFxcXCJ5ZXNcXFwiIF07IHRoZW5cXG4rXFx0XFx0XFx0ZWNob1xcbitcXHRcXHRcXHRlY2hvIFxcXCJoaXQgZW50ZXIgdG8gY29udGludWUsICdxJyB0byBxdWl0XFxcIlxcbitcXHRcXHRcXHRyZWFkIC1yIGFcXG4rXFx0XFx0XFx0WyBcXFwiJGFcXFwiID0gXFxcInFcXFwiIF0gXFx1MDAyNlxcdTAwMjYgZXhpdCAxXFxuK1xcdFxcdGZpXFxuK1xcdGZpXFxuK31cXG4rXFxuK3ByaW50X2xvZ190ZXN0X3Jlc3VsdHMoKVxcbit7XFxuK1xcdHByaW50ZiBcXFwiXFxcXG5UZXN0cyBwYXNzZWQ6ICUzZFxcXFxuXFxcIiBcXFwiJHtuc3VjY2Vzc31cXFwiXFxuK1xcdHByaW50ZiBcXFwiVGVzdHMgZmFpbGVkOiAlM2RcXFxcblxcXCIgICBcXFwiJHtuZmFpbH1cXFwiXFxuK1xcbitcXHQjIHdoZW4gYSB0ZXN0IGZhaWxzLCB0aGUgdmFsdWUgb2YgJ3JldCcgaXMgc2V0IHRvIDEgKGVycm9yIGNvZGUpLlxcbitcXHQjIENvbnZlcnNlbHksIHdoZW4gYWxsIHRlc3RzIGFyZSBwYXNzZWQgc3VjY2Vzc2Z1bGx5LCB0aGUgJ3JldCcgdmFsdWVcXG4rXFx0IyBpcyBzZXQgdG8gMCAoc3VjY2VzcyBjb2RlKS5cXG4rXFx0aWYgWyBcXFwiJHtyZXR9XFxcIiAtbmUgMSBdOyB0aGVuXFxuK1xcdFxcdHJldD0wXFxuK1xcdGZpXFxuK31cXG4rXFxuK2xvZ19zZWN0aW9uKClcXG4re1xcbitcXHRlY2hvXFxuK1xcdGVjaG8gXFxcIiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjXFxcIlxcbitcXHRlY2hvIFxcXCJURVNUIFNFQ1RJT046ICQqXFxcIlxcbitcXHRlY2hvIFxcXCIjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI1xcXCJcXG4rfVxcbitcXG4rZ2V0X3J0bmFtZSgpXFxuK3tcXG4rXFx0bG9jYWwgcnRpZD1cXFwiJDFcXFwiXFxuK1xcbitcXHRlY2hvIFxcXCJydF8ke3J0aWR9XFxcIlxcbit9XFxuK1xcbitnZXRfcnRfbnNuYW1lKClcXG4re1xcbitcXHRsb2NhbCBydGlkPVxcXCIkMVxcXCJcXG4rXFx0bG9jYWwgdmFybmFtZVxcbitcXG4rXFx0dmFybmFtZT1cXFwiJChnZXRfcnRuYW1lIFxcXCIke3J0aWR9XFxcIilcXFwiXFxuK1xcdGVjaG8gXFxcIiR7IXZhcm5hbWV9XFxcIlxcbit9XFxuK1xcbitnZXRfaHNuYW1lKClcXG4re1xcbitcXHRsb2NhbCB0aWQ9XFxcIiQxXFxcIlxcbitcXHRsb2NhbCBoc2lkPVxcXCIkMlxcXCJcXG4rXFxuK1xcdGVjaG8gXFxcImhzX3Qke3RpZH1fJHtoc2lkfVxcXCJcXG4rfVxcbitcXG4rZ2V0X2hzX25zbmFtZSgpXFxuK3tcXG4rXFx0bG9jYWwgdGlkPVxcXCIkMVxcXCJcXG4rXFx0bG9jYWwgaHNpZD1cXFwiJDJcXFwiXFxuK1xcdGxvY2FsIHZhcm5hbWVcXG4rXFxuK1xcdHZhcm5hbWU9XFxcIiQoZ2V0X2hzbmFtZSBcXFwiJHt0aWR9XFxcIiBcXFwiJHtoc2lkfVxcXCIpXFxcIlxcbitcXHRlY2hvIFxcXCIkeyF2YXJuYW1lfVxcXCJcXG4rfVxcbitcXG4rY2xlYW51cCgpXFxuK3tcXG4rXFx0aXAgbGluayBkZWwgdmV0aC1ydC0xIDJcXHUwMDNlL2Rldi9udWxsIHx8IHRydWVcXG4rXFx0aXAgbGluayBkZWwgdmV0aC1ydC0yIDJcXHUwMDNlL2Rldi9udWxsIHx8IHRydWVcXG4rXFxuK1xcdGNsZWFudXBfYWxsX25zXFxuK1xcbitcXHQjIGNoZWNrIHdoZXRoZXIgdGhlIHNldHVwIHBoYXNlIHdhcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5IG9yIG5vdC4gSW5cXG4rXFx0IyBjYXNlIG9mIGFuIGVycm9yIGR1cmluZyB0aGUgc2V0dXAgcGhhc2Ugb2YgdGhlIHRlc3RpbmcgZW52aXJvbm1lbnQsXFxuK1xcdCMgdGhlIHNlbGZ0ZXN0IGlzIGNvbnNpZGVyZWQgYXMgXFxcInNraXBwZWRcXFwiLlxcbitcXHRpZiBbIFxcXCIke1NFVFVQX0VSUn1cXFwiIC1uZSAwIF07IHRoZW5cXG4rXFx0XFx0ZWNobyBcXFwiU0tJUDogU2V0dGluZyB1cCB0aGUgdGVzdGluZyBlbnZpcm9ubWVudCBmYWlsZWRcXFwiXFxuK1xcdFxcdGV4aXQgXFxcIiR7a3NmdF9za2lwfVxcXCJcXG4rXFx0ZmlcXG4rXFxuK1xcdGV4aXQgXFxcIiR7cmV0fVxcXCJcXG4rfVxcbitcXG4rIyBIb3N0IGlkIG9mIHRoZSByb3V0ZXIgbG9vcGJhY2sgKHJsbykgZm9yIGEgKHJvdXRlciwgdGVuYW50KSBwYWlyLlxcbisjIEUuZy4gcnQtMS90ZW5hbnQgMTAwIC1cXHUwMDNlIDEwMSwgcnQtMi90ZW5hbnQgMjAwIC1cXHUwMDNlIDIwMi5cXG4rZ2V0X3Jsb19ob3N0aWQoKVxcbit7XFxuK1xcdGxvY2FsIHJ0aWQ9XFxcIiQxXFxcIlxcbitcXHRsb2NhbCB0aWQ9XFxcIiQyXFxcIlxcbitcXG4rXFx0ZWNobyBcXFwiJCgodGlkICsgcnRpZCkpXFxcIlxcbit9XFxuK1xcbitidWlsZF92cG5fc2lkKClcXG4re1xcbitcXHRsb2NhbCBydHNyYz1cXFwiJDFcXFwiXFxuK1xcdGxvY2FsIHJ0ZHN0PVxcXCIkMlxcXCJcXG4rXFx0bG9jYWwgdGlkPVxcXCIkM1xcXCJcXG4rXFxuK1xcdGVjaG8gXFxcIiR7VlBOX0xPQ0FUT1JfU0VSVklDRX06JHtydHNyY306JHtydGRzdH06JHt0aWR9Ojoke0RUNDZfRlVOQ31cXFwiXFxuK31cXG4rXFxuKyMgSW5zdGFsbCBhIGR1YWwtc3RhY2sgKElQdjYgYW5kIElQdjQpIGVuY2FwIHJvdXRlIGluIGEgVlJGIG9uIHRoZSBnaXZlblxcbisjIHJvdXRlci5cXG4rIyBhcmdzOlxcbisjICAkMSAtIHJvdXRlciBpZFxcbisjICAkMiAtIGhvc3QgcGFydCBvZiB0aGUgSVB2NiBkZXN0aW5hdGlvblxcbisjICAkMyAtIGhvc3QgcGFydCBvZiB0aGUgSVB2NCBkZXN0aW5hdGlvblxcbisjICAkNCAtIFNSdjYgU0lEIHVzZWQgYXMgdGhlIGVuY2FwIGRlc3RpbmF0aW9uXFxuKyMgICQ1IC0gdGVuYW50IGlkXFxuKyMgICQ2IC0gaWYgXFxcInRydWVcXFwiLCBhZGQgdGhlIFxcXCJsb29rdXBcXFwiIGF0dHJpYnV0ZSB0byB0aGUgZW5jYXAgcm91dGVcXG4rX19zZXRfZW5jYXBfcm91dGUoKVxcbit7XFxuK1xcdGxvY2FsIHJ0PVxcXCIkMVxcXCJcXG4rXFx0bG9jYWwgZHN0Nj1cXFwiJDJcXFwiXFxuK1xcdGxvY2FsIGRzdDQ9XFxcIiQzXFxcIlxcbitcXHRsb2NhbCBzaWQ9XFxcIiQ0XFxcIlxcbitcXHRsb2NhbCB0aWQ9XFxcIiQ1XFxcIlxcbitcXHRsb2NhbCB1c2VfbG9va3VwPVxcXCIkNlxcXCJcXG4rXFx0bG9jYWwgbG9va3VwPScnXFxuK1xcdGxvY2FsIHJ0bmFtZVxcbitcXG4rXFx0cnRuYW1lPVxcXCIkKGdldF9ydF9uc25hbWUgXFxcIiR7cnR9XFxcIilcXFwiXFxuK1xcbitcXHRpZiBbIFxcXCIke3VzZV9sb29rdXB9XFxcIiA9IFxcXCJ0cnVlXFxcIiBdOyB0aGVuXFxuK1xcdFxcdGxvb2t1cD1cXFwibG9va3VwICR7VU5ERVJMQVlfVEFCTEVfSUR9XFxcIlxcbitcXHRmaVxcbitcXG4rXFx0IyBzaGVsbGNoZWNrIGRpc2FibGU9U0MyMDg2XFxuK1xcdGlwIC1uZXRucyBcXFwiJHtydG5hbWV9XFxcIiAtNiByb3V0ZSByZXBsYWNlIFxcXFxcXG4rXFx0XFx0XFxcIiR7SVB2Nl9IU19ORVRXT1JLfTo6JHtkc3Q2fS8xMjhcXFwiIHZyZiBcXFwidnJmLSR7dGlkfVxcXCIgXFxcXFxcbitcXHRcXHRlbmNhcCBzZWc2IG1vZGUgZW5jYXAgc2VncyBcXFwiJHtzaWR9XFxcIiAke2xvb2t1cH0gZGV2IHZldGgwXFxuK1xcbitcXHQjIHNoZWxsY2hlY2sgZGlzYWJsZT1TQzIwODZcXG4rXFx0aXAgLW5ldG5zIFxcXCIke3J0bmFtZX1cXFwiIC00IHJvdXRlIHJlcGxhY2UgXFxcXFxcbitcXHRcXHRcXFwiJHtJUHY0X0hTX05FVFdPUkt9LiR7ZHN0NH0vMzJcXFwiIHZyZiBcXFwidnJmLSR7dGlkfVxcXCIgXFxcXFxcbitcXHRcXHRlbmNhcCBzZWc2IG1vZGUgZW5jYXAgc2VncyBcXFwiJHtzaWR9XFxcIiAke2xvb2t1cH0gZGV2IHZldGgwXFxuK31cXG4rXFxuKyMgSW5zdGFsbCB0aGUgZHVhbC1zdGFjayBlbmNhcCByb3V0ZSBmb3IgYSB0ZW5hbnQgaG9zdCBvbiBydCwgd2l0aCB0aGVcXG4rIyBcXFwibG9va3VwXFxcIiBhdHRyaWJ1dGUgc28gdGhlIGZpcnN0IFNJRCBpcyBsb29rZWQgdXAgaW4gdGhlIHVuZGVybGF5IHRhYmxlLlxcbisjIGFyZ3M6XFxuKyMgICQxIC0gcm91dGVyIGlkIHdoZXJlIHRoZSBlbmNhcCByb3V0ZSBpcyBpbnN0YWxsZWRcXG4rIyAgJDIgLSBob3N0IGRlc3RpbmF0aW9uIGlkIChob3N0IHBhcnQgb2YgY2FmZTo6XFx1MDAzY2lkXFx1MDAzZS8xMjggYW5kIDEwLjAuMC5cXHUwMDNjaWRcXHUwMDNlLzMyKVxcbisjICAkMyAtIFNSdjYgU0lEIHVzZWQgYXMgdGhlIGVuY2FwIGRlc3RpbmF0aW9uXFxuKyMgICQ0IC0gdGVuYW50IGlkXFxuK3NldF9ob3N0X2VuY2FwX3JvdXRlKClcXG4re1xcbitcXHRsb2NhbCBydD1cXFwiJDFcXFwiXFxuK1xcdGxvY2FsIGhzZHN0PVxcXCIkMlxcXCJcXG4rXFx0bG9jYWwgc2lkPVxcXCIkM1xcXCJcXG4rXFx0bG9jYWwgdGlkPVxcXCIkNFxcXCJcXG4rXFxuK1xcdF9fc2V0X2VuY2FwX3JvdXRlIFxcXCIke3J0fVxcXCIgXFxcIiR7aHNkc3R9XFxcIiBcXFwiJHtoc2RzdH1cXFwiIFxcXCIke3NpZH1cXFwiIFxcXCIke3RpZH1cXFwiIHRydWVcXG4rfVxcbitcXG4rc2V0X2hvc3RfZW5jYXBfcm91dGVfbm9sb29rdXAoKVxcbit7XFxuK1xcdGxvY2FsIHJ0PVxcXCIkMVxcXCJcXG4rXFx0bG9jYWwgaHNkc3Q9XFxcIiQyXFxcIlxcbitcXHRsb2NhbCBzaWQ9XFxcIiQzXFxcIlxcbitcXHRsb2NhbCB0aWQ9XFxcIiQ0XFxcIlxcbitcXG4rXFx0X19zZXRfZW5jYXBfcm91dGUgXFxcIiR7cnR9XFxcIiBcXFwiJHtoc2RzdH1cXFwiIFxcXCIke2hzZHN0fVxcXCIgXFxcIiR7c2lkfVxcXCIgXFxcIiR7dGlkfVxcXCIgZmFsc2VcXG4rfVxcbitcXG4rIyBJbnN0YWxsIHRoZSBkdWFsLXN0YWNrIGVuY2FwIHJvdXRlIG9uIHJ0c3JjIHRvd2FyZCBydGRzdCdzIHJsbyBsb29wYmFja1xcbisjIChSTE8xIG9yIFJMTzIsIHNlZSBoZWFkZXIpLCB3aXRoIHRoZSBcXFwibG9va3VwXFxcIiBhdHRyaWJ1dGUgc28gdGhlIGZpcnN0XFxuKyMgU0lEIGlzIGxvb2tlZCB1cCBpbiB0aGUgdW5kZXJsYXkgdGFibGUuXFxuKyMgYXJnczpcXG4rIyAgJDEgLSByb3V0ZXIgaWQgd2hlcmUgdGhlIGVuY2FwIHJvdXRlIGlzIGluc3RhbGxlZFxcbisjICAkMiAtIHJvdXRlciBpZCB3aG9zZSBsb29wYmFjayBhZGRyZXNzIGlzIHRoZSByb3V0ZSBkZXN0aW5hdGlvblxcbisjICAkMyAtIFNSdjYgU0lEIHVzZWQgYXMgdGhlIGVuY2FwIGRlc3RpbmF0aW9uXFxuKyMgICQ0IC0gdGVuYW50IGlkXFxuK3NldF9nd19lbmNhcF9yb3V0ZSgpXFxuK3tcXG4rXFx0bG9jYWwgcnRzcmM9XFxcIiQxXFxcIlxcbitcXHRsb2NhbCBydGRzdD1cXFwiJDJcXFwiXFxuK1xcdGxvY2FsIHNpZD1cXFwiJDNcXFwiXFxuK1xcdGxvY2FsIHRpZD1cXFwiJDRcXFwiXFxuK1xcdGxvY2FsIGRzdFxcbitcXG4rXFx0ZHN0PVxcXCIkKGdldF9ybG9faG9zdGlkIFxcXCIke3J0ZHN0fVxcXCIgXFxcIiR7dGlkfVxcXCIpXFxcIlxcbitcXG4rXFx0X19zZXRfZW5jYXBfcm91dGUgXFxcIiR7cnRzcmN9XFxcIiBcXFwiJHtkc3R9XFxcIiBcXFwiJHtkc3R9XFxcIiBcXFwiJHtzaWR9XFxcIiBcXFwiJHt0aWR9XFxcIiB0cnVlXFxuK31cXG4rXFxuK3NldF9nd19lbmNhcF9yb3V0ZV9ub2xvb2t1cCgpXFxuK3tcXG4rXFx0bG9jYWwgcnRzcmM9XFxcIiQxXFxcIlxcbitcXHRsb2NhbCBydGRzdD1cXFwiJDJcXFwiXFxuK1xcdGxvY2FsIHNpZD1cXFwiJDNcXFwiXFxuK1xcdGxvY2FsIHRpZD1cXFwiJDRcXFwiXFxuK1xcdGxvY2FsIGRzdFxcbitcXG4rXFx0ZHN0PVxcXCIkKGdldF9ybG9faG9zdGlkIFxcXCIke3J0ZHN0fVxcXCIgXFxcIiR7dGlkfVxcXCIpXFxcIlxcbitcXG4rXFx0X19zZXRfZW5jYXBfcm91dGUgXFxcIiR7cnRzcmN9XFxcIiBcXFwiJHtkc3R9XFxcIiBcXFwiJHtkc3R9XFxcIiBcXFwiJHtzaWR9XFxcIiBcXFwiJHt0aWR9XFxcIiBmYWxzZVxcbit9XFxuK1xcbisjIFNldHVwIHRoZSBiYXNpYyBuZXR3b3JraW5nIGZvciBhIHJvdXRlclxcbitzZXR1cF9ydF9uZXR3b3JraW5nKClcXG4re1xcbitcXHRsb2NhbCBpZD1cXFwiJDFcXFwiXFxuK1xcdGxvY2FsIG5zbmFtZVxcbitcXG4rXFx0bnNuYW1lPVxcXCIkKGdldF9ydF9uc25hbWUgXFxcIiR7aWR9XFxcIilcXFwiXFxuK1xcbitcXHRpcCBsaW5rIHNldCBcXFwidmV0aC1ydC0ke2lkfVxcXCIgbmV0bnMgXFxcIiR7bnNuYW1lfVxcXCJcXG4rXFx0aXAgLW5ldG5zIFxcXCIke25zbmFtZX1cXFwiIGxpbmsgc2V0IFxcXCJ2ZXRoLXJ0LSR7aWR9XFxcIiBuYW1lIHZldGgwXFxuK1xcbitcXHRpcCBuZXRucyBleGVjIFxcXCIke25zbmFtZX1cXFwiIHN5c2N0bCAtd3EgbmV0LmlwdjYuY29uZi5hbGwuYWNjZXB0X2RhZD0wXFxuK1xcdGlwIG5ldG5zIGV4ZWMgXFxcIiR7bnNuYW1lfVxcXCIgc3lzY3RsIC13cSBuZXQuaXB2Ni5jb25mLmRlZmF1bHQuYWNjZXB0X2RhZD0wXFxuK1xcbitcXHRpcCAtbmV0bnMgXFxcIiR7bnNuYW1lfVxcXCIgYWRkciBhZGQgXFxcIiR7SVB2Nl9SVF9ORVRXT1JLfTo6JHtpZH0vNjRcXFwiIGRldiB2ZXRoMCBub2RhZFxcbitcXHRpcCAtbmV0bnMgXFxcIiR7bnNuYW1lfVxcXCIgbGluayBzZXQgdmV0aDAgdXBcXG4rXFxuK1xcdGlwIG5ldG5zIGV4ZWMgXFxcIiR7bnNuYW1lfVxcXCIgc3lzY3RsIC13cSBuZXQuaXB2NC5pcF9mb3J3YXJkPTFcXG4rXFx0aXAgbmV0bnMgZXhlYyBcXFwiJHtuc25hbWV9XFxcIiBzeXNjdGwgLXdxIG5ldC5pcHY2LmNvbmYuYWxsLmZvcndhcmRpbmc9MVxcbit9XFxuK1xcbisjIFNldHVwIGEgaG9zdCBuYW1lc3BhY2UgYW5kIGF0dGFjaCBpdCB0byBpdHMgZ2F0ZXdheVxcbitzZXR1cF9ocygpXFxuK3tcXG4rXFx0bG9jYWwgaGlkPVxcXCIkMVxcXCJcXG4rXFx0bG9jYWwgcmlkPVxcXCIkMlxcXCJcXG4rXFx0bG9jYWwgdGlkPVxcXCIkM1xcXCJcXG4rXFx0bG9jYWwgcnR2ZXRoPVxcXCJ2ZXRoLXQke3RpZH1cXFwiXFxuK1xcdGxvY2FsIGhzbmFtZVxcbitcXHRsb2NhbCBydG5hbWVcXG4rXFxuK1xcdGhzbmFtZT1cXFwiJChnZXRfaHNfbnNuYW1lIFxcXCIke3RpZH1cXFwiIFxcXCIke2hpZH1cXFwiKVxcXCJcXG4rXFx0cnRuYW1lPVxcXCIkKGdldF9ydF9uc25hbWUgXFxcIiR7cmlkfVxcXCIpXFxcIlxcbitcXG4rXFx0aXAgbmV0bnMgZXhlYyBcXFwiJHtoc25hbWV9XFxcIiBzeXNjdGwgLXdxIG5ldC5pcHY2LmNvbmYuYWxsLmFjY2VwdF9kYWQ9MFxcbitcXHRpcCBuZXRucyBleGVjIFxcXCIke2hzbmFtZX1cXFwiIHN5c2N0bCAtd3EgbmV0LmlwdjYuY29uZi5kZWZhdWx0LmFjY2VwdF9kYWQ9MFxcbitcXG4rXFx0aXAgLW5ldG5zIFxcXCIke2hzbmFtZX1cXFwiIGxpbmsgYWRkIHZldGgwIHR5cGUgdmV0aCBwZWVyIG5hbWUgXFxcIiR7cnR2ZXRofVxcXCJcXG4rXFx0aXAgLW5ldG5zIFxcXCIke2hzbmFtZX1cXFwiIGxpbmsgc2V0IFxcXCIke3J0dmV0aH1cXFwiIG5ldG5zIFxcXCIke3J0bmFtZX1cXFwiXFxuK1xcbitcXHRpcCAtbmV0bnMgXFxcIiR7aHNuYW1lfVxcXCIgYWRkciBhZGQgXFxcXFxcbitcXHRcXHRcXFwiJHtJUHY2X0hTX05FVFdPUkt9Ojoke2hpZH0vNjRcXFwiIGRldiB2ZXRoMCBub2RhZFxcbitcXHRpcCAtbmV0bnMgXFxcIiR7aHNuYW1lfVxcXCIgYWRkciBhZGQgXFxcXFxcbitcXHRcXHRcXFwiJHtJUHY0X0hTX05FVFdPUkt9LiR7aGlkfS8yNFxcXCIgZGV2IHZldGgwXFxuK1xcbitcXHRpcCAtbmV0bnMgXFxcIiR7aHNuYW1lfVxcXCIgbGluayBzZXQgdmV0aDAgdXBcXG4rfVxcbitcXG4rIyBTZXR1cCB0aGUgcGVyLXRlbmFudCBWUkYgb24gYSByb3V0ZXIgKGdhdGV3YXksIGxvb3BiYWNrLCBibGFja2hvbGUpXFxuK3NldHVwX3J0KClcXG4re1xcbitcXHRsb2NhbCByaWQ9XFxcIiQxXFxcIlxcbitcXHRsb2NhbCB0aWQ9XFxcIiQyXFxcIlxcbitcXHRsb2NhbCBydHZldGg9XFxcInZldGgtdCR7dGlkfVxcXCJcXG4rXFx0bG9jYWwgcmxvX2Rldj1cXFwicmxvLSR7dGlkfVxcXCJcXG4rXFx0bG9jYWwgcnRuYW1lXFxuK1xcdGxvY2FsIGd3X2FkZHJfdjZcXG4rXFx0bG9jYWwgZ3dfYWRkcl92NFxcbitcXG4rXFx0cnRuYW1lPVxcXCIkKGdldF9ydF9uc25hbWUgXFxcIiR7cmlkfVxcXCIpXFxcIlxcbitcXG4rXFx0Z3dfYWRkcl92Nj1cXFwiJHtJUHY2X0hTX05FVFdPUkt9OjokKGdldF9ybG9faG9zdGlkIFxcXCIke3JpZH1cXFwiIFxcXCIke3RpZH1cXFwiKVxcXCJcXG4rXFx0Z3dfYWRkcl92ND1cXFwiJHtJUHY0X0hTX05FVFdPUkt9LiQoZ2V0X3Jsb19ob3N0aWQgXFxcIiR7cmlkfVxcXCIgXFxcIiR7dGlkfVxcXCIpXFxcIlxcbitcXG4rXFx0aXAgLW5ldG5zIFxcXCIke3J0bmFtZX1cXFwiIGxpbmsgYWRkIFxcXCJ2cmYtJHt0aWR9XFxcIiB0eXBlIHZyZiB0YWJsZSBcXFwiJHt0aWR9XFxcIlxcbitcXHRpcCAtbmV0bnMgXFxcIiR7cnRuYW1lfVxcXCIgbGluayBzZXQgXFxcInZyZi0ke3RpZH1cXFwiIHVwXFxuK1xcbitcXHRpcCAtbmV0bnMgXFxcIiR7cnRuYW1lfVxcXCIgbGluayBzZXQgXFxcIiR7cnR2ZXRofVxcXCIgbWFzdGVyIFxcXCJ2cmYtJHt0aWR9XFxcIlxcbitcXG4rXFx0aXAgLW5ldG5zIFxcXCIke3J0bmFtZX1cXFwiIGFkZHIgYWRkIFxcXFxcXG4rXFx0XFx0XFxcIiR7SVB2Nl9IU19ORVRXT1JLfTo6MjU0LzY0XFxcIiBkZXYgXFxcIiR7cnR2ZXRofVxcXCIgbm9kYWRcXG4rXFx0aXAgLW5ldG5zIFxcXCIke3J0bmFtZX1cXFwiIGFkZHIgYWRkIFxcXFxcXG4rXFx0XFx0XFxcIiR7SVB2NF9IU19ORVRXT1JLfS4yNTQvMjRcXFwiIGRldiBcXFwiJHtydHZldGh9XFxcIlxcbitcXG4rXFx0aXAgLW5ldG5zIFxcXCIke3J0bmFtZX1cXFwiIGxpbmsgc2V0IFxcXCIke3J0dmV0aH1cXFwiIHVwXFxuK1xcbitcXHRpcCBuZXRucyBleGVjIFxcXCIke3J0bmFtZX1cXFwiIFxcXFxcXG4rXFx0XFx0c3lzY3RsIC13cSBcXFwibmV0LmlwdjYuY29uZi4ke3J0dmV0aH0ucHJveHlfbmRwPTFcXFwiXFxuK1xcdGlwIG5ldG5zIGV4ZWMgXFxcIiR7cnRuYW1lfVxcXCIgXFxcXFxcbitcXHRcXHRzeXNjdGwgLXdxIFxcXCJuZXQuaXB2NC5jb25mLiR7cnR2ZXRofS5wcm94eV9hcnA9MVxcXCJcXG4rXFxuK1xcdGlwIG5ldG5zIGV4ZWMgXFxcIiR7cnRuYW1lfVxcXCIgc2ggLWMgXFxcImVjaG8gMSBcXHUwMDNlIC9wcm9jL3N5cy9uZXQvdnJmL3N0cmljdF9tb2RlXFxcIlxcbitcXG4rXFx0IyByb3V0ZXIgbG9vcGJhY2sgaW50ZXJmYWNlIGZvciBsb2NhbGx5IG9yaWdpbmF0ZWQgdHJhZmZpY1xcbitcXHRpcCAtbmV0bnMgXFxcIiR7cnRuYW1lfVxcXCIgbGluayBhZGQgXFxcIiR7cmxvX2Rldn1cXFwiIHR5cGUgZHVtbXlcXG4rXFx0aXAgLW5ldG5zIFxcXCIke3J0bmFtZX1cXFwiIGxpbmsgc2V0IFxcXCIke3Jsb19kZXZ9XFxcIiBtYXN0ZXIgXFxcInZyZi0ke3RpZH1cXFwiXFxuK1xcbitcXHRpcCAtbmV0bnMgXFxcIiR7cnRuYW1lfVxcXCIgYWRkciBhZGQgXFxcIiR7Z3dfYWRkcl92Nn0vMTI4XFxcIiBcXFxcXFxuK1xcdFxcdGRldiBcXFwiJHtybG9fZGV2fVxcXCIgbm9kYWRcXG4rXFx0aXAgLW5ldG5zIFxcXCIke3J0bmFtZX1cXFwiIGFkZHIgYWRkIFxcXCIke2d3X2FkZHJfdjR9LzMyXFxcIiBcXFxcXFxuK1xcdFxcdGRldiBcXFwiJHtybG9fZGV2fVxcXCJcXG4rXFxuK1xcdGlwIC1uZXRucyBcXFwiJHtydG5hbWV9XFxcIiBsaW5rIHNldCBcXFwiJHtybG9fZGV2fVxcXCIgdXBcXG4rXFxuK1xcdCMgZGVmYXVsdCBibGFja2hvbGUgcm91dGVzIGluIHRoZSBWUkY6IGFueSB0cmFmZmljIHRoYXQgZG9lcyBub3QgbWF0Y2hcXG4rXFx0IyBhIHNwZWNpZmljIHJvdXRlIGlzIGRyb3BwZWQuIFdpdGhvdXQgdGhlIFxcXCJsb29rdXBcXFwiIGF0dHJpYnV0ZSBvbiB0aGVcXG4rXFx0IyBlbmNhcCByb3V0ZSwgdGhlIHJvdXRlIGZvciB0aGUgZmlyc3QgU0lEIGNhbm5vdCBiZSBmb3VuZCBmcm9tIHdpdGhpblxcbitcXHQjIHRoZSBWUkYuXFxuK1xcdGlwIC1uZXRucyBcXFwiJHtydG5hbWV9XFxcIiAtNiByb3V0ZSBhZGQgYmxhY2tob2xlIGRlZmF1bHQgbWV0cmljIDQyNzgxOTgyNzIgXFxcXFxcbitcXHRcXHR2cmYgXFxcInZyZi0ke3RpZH1cXFwiXFxuK1xcdGlwIC1uZXRucyBcXFwiJHtydG5hbWV9XFxcIiAtNCByb3V0ZSBhZGQgYmxhY2tob2xlIGRlZmF1bHQgbWV0cmljIDQyNzgxOTgyNzIgXFxcXFxcbitcXHRcXHR2cmYgXFxcInZyZi0ke3RpZH1cXFwiXFxuK31cXG4rXFxuKyMgQ29uZmlndXJlIGEgb25lLXdheSBWUE4gcGF0aCB0b3dhcmRzIGhzZHN0IChvbiBydGRzdCkgZm9yIHRlbmFudCB0aWQuXFxuKyMgVGhlIGVuY2FwIHNpZGUgaXMgc2V0IHVwIG9uIHJ0c3JjIGFuZCB0aGUgZGVjYXAgc2lkZSBvbiBydGRzdC5cXG4rIyBhcmdzOlxcbisjICAkMSAtIHJvdXRlciBpZCB3aGVyZSB0aGUgZW5jYXAgc2lkZSBpcyBzZXQgdXBcXG4rIyAgJDIgLSBob3N0IGlkIG9mIHRoZSBkZXN0aW5hdGlvbiBob3N0XFxuKyMgICQzIC0gcm91dGVyIGlkIG9mIHRoZSBkZXN0aW5hdGlvbiByb3V0ZXIgKGNvbm5lY3RlZCB0byB0aGUgZGVzdGluYXRpb24gaG9zdClcXG4rIyAgJDQgLSB0ZW5hbnQgaWRcXG4rc2V0dXBfdnBuX2NvbmZpZygpXFxuK3tcXG4rXFx0bG9jYWwgcnRzcmM9XFxcIiQxXFxcIlxcbitcXHRsb2NhbCBoc2RzdD1cXFwiJDJcXFwiXFxuK1xcdGxvY2FsIHJ0ZHN0PVxcXCIkM1xcXCJcXG4rXFx0bG9jYWwgdGlkPVxcXCIkNFxcXCJcXG4rXFx0bG9jYWwgcnR2ZXRoPVxcXCJ2ZXRoLXQke3RpZH1cXFwiXFxuK1xcdGxvY2FsIHJ0c3JjX25hbWVcXG4rXFx0bG9jYWwgcnRkc3RfbmFtZVxcbitcXHRsb2NhbCB2cG5fc2lkXFxuK1xcbitcXHRydHNyY19uYW1lPVxcXCIkKGdldF9ydF9uc25hbWUgXFxcIiR7cnRzcmN9XFxcIilcXFwiXFxuK1xcdHJ0ZHN0X25hbWU9XFxcIiQoZ2V0X3J0X25zbmFtZSBcXFwiJHtydGRzdH1cXFwiKVxcXCJcXG4rXFx0dnBuX3NpZD1cXFwiJChidWlsZF92cG5fc2lkIFxcXCIke3J0c3JjfVxcXCIgXFxcIiR7cnRkc3R9XFxcIiBcXFwiJHt0aWR9XFxcIilcXFwiXFxuK1xcbitcXHRpcCAtbmV0bnMgXFxcIiR7cnRzcmNfbmFtZX1cXFwiIC02IG5laWdoIGFkZCBwcm94eSBcXFxcXFxuK1xcdFxcdFxcXCIke0lQdjZfSFNfTkVUV09SS306OiR7aHNkc3R9XFxcIiBkZXYgXFxcIiR7cnR2ZXRofVxcXCJcXG4rXFx0c2V0X2hvc3RfZW5jYXBfcm91dGUgXFxcIiR7cnRzcmN9XFxcIiBcXFwiJHtoc2RzdH1cXFwiIFxcXCIke3Zwbl9zaWR9XFxcIiBcXFwiJHt0aWR9XFxcIlxcbitcXG4rXFx0aXAgLW5ldG5zIFxcXCIke3J0c3JjX25hbWV9XFxcIiAtNiByb3V0ZSBhZGQgXFxcIiR7dnBuX3NpZH0vMTI4XFxcIiBcXFxcXFxuK1xcdFxcdHRhYmxlIFxcXCIke1VOREVSTEFZX1RBQkxFX0lEfVxcXCIgXFxcXFxcbitcXHRcXHR2aWEgXFxcImZkMDA6OiR7cnRkc3R9XFxcIiBkZXYgdmV0aDBcXG4rXFxuK1xcdCMgc2V0IHRoZSBkZWNhcCByb3V0ZSBmb3IgZGVjYXBzdWxhdGluZyBwYWNrZXRzIGFycml2aW5nIGZyb20gcnRzcmNcXG4rXFx0IyBhbmQgZGVzdGluZWQgdG8gaHNkc3RcXG4rXFx0aXAgLW5ldG5zIFxcXCIke3J0ZHN0X25hbWV9XFxcIiAtNiByb3V0ZSBhZGQgXFxcIiR7dnBuX3NpZH0vMTI4XFxcIiBcXFxcXFxuK1xcdFxcdHRhYmxlIFxcXCIke0xPQ0FMU0lEX1RBQkxFX0lEfVxcXCIgXFxcXFxcbitcXHRcXHRlbmNhcCBzZWc2bG9jYWwgYWN0aW9uIEVuZC5EVDQ2IFxcXFxcXG4rXFx0XFx0dnJmdGFibGUgXFxcIiR7dGlkfVxcXCIgZGV2IFxcXCJ2cmYtJHt0aWR9XFxcIlxcbitcXG4rXFx0IyBhbGwgU0lEcyBmb3IgVlBOcyBzdGFydCB3aXRoIGEgY29tbW9uIGxvY2F0b3Igd2hpY2ggaXMgZmMwMDo6LzE2LlxcbitcXHQjIFJvdXRlcyBmb3IgaGFuZGxpbmcgdGhlIFNSdjYgRW5kLkRUKiBiZWhhdmlvciBpbnN0YW5jZXMgYXJlIGdyb3VwZWRcXG4rXFx0IyB0b2dldGhlciBpbiB0aGUgJ2xvY2Fsc2lkJyB0YWJsZS5cXG4rXFx0I1xcbitcXHQjIE5PVEU6IGFkZGVkIG9ubHkgb25jZVxcbitcXHRpZiAhIGlwIC1uZXRucyBcXFwiJHtydGRzdF9uYW1lfVxcXCIgLTYgcnVsZSBzaG93IHwgXFxcXFxcbitcXHQgICAgZ3JlcCAtcSBcXFwidG8gJHtWUE5fTE9DQVRPUl9TRVJWSUNFfTo6LzE2IGxvb2t1cCAke0xPQ0FMU0lEX1RBQkxFX0lEfVxcXCI7IHRoZW5cXG4rXFx0XFx0aXAgLW5ldG5zIFxcXCIke3J0ZHN0X25hbWV9XFxcIiAtNiBydWxlIGFkZCBcXFxcXFxuK1xcdFxcdFxcdHRvIFxcXCIke1ZQTl9MT0NBVE9SX1NFUlZJQ0V9OjovMTZcXFwiIFxcXFxcXG4rXFx0XFx0XFx0bG9va3VwIFxcXCIke0xPQ0FMU0lEX1RBQkxFX0lEfVxcXCIgcHJpbyA5OTlcXG4rXFx0ZmlcXG4rfVxcbitcXG4rIyBDb25maWd1cmUgcnRzcmMgdG8gcmVhY2ggcnRkc3QncyBsb29wYmFjayBhZGRyZXNzIHRocm91Z2ggdGhlIFZQTi5cXG4rIyBhcmdzOlxcbisjICAkMSAtIHJvdXRlciBpZCB3aGVyZSB0aGUgZW5jYXAgcm91dGUgaXMgaW5zdGFsbGVkXFxuKyMgICQyIC0gcm91dGVyIGlkIHdob3NlIGxvb3BiYWNrIGlzIHRoZSBkZXN0aW5hdGlvblxcbisjICAkMyAtIHRlbmFudCBpZFxcbitzZXR1cF92cG5fZ3dfZW5jYXAoKVxcbit7XFxuK1xcdGxvY2FsIHJ0c3JjPVxcXCIkMVxcXCJcXG4rXFx0bG9jYWwgcnRkc3Q9XFxcIiQyXFxcIlxcbitcXHRsb2NhbCB0aWQ9XFxcIiQzXFxcIlxcbitcXHRsb2NhbCBzaWRcXG4rXFxuK1xcdHNpZD1cXFwiJChidWlsZF92cG5fc2lkIFxcXCIke3J0c3JjfVxcXCIgXFxcIiR7cnRkc3R9XFxcIiBcXFwiJHt0aWR9XFxcIilcXFwiXFxuK1xcbitcXHRzZXRfZ3dfZW5jYXBfcm91dGUgXFxcIiR7cnRzcmN9XFxcIiBcXFwiJHtydGRzdH1cXFwiIFxcXCIke3NpZH1cXFwiIFxcXCIke3RpZH1cXFwiXFxuK31cXG4rXFxuK3NldHVwKClcXG4re1xcbitcXHRpcCBsaW5rIGFkZCB2ZXRoLXJ0LTEgdHlwZSB2ZXRoIHBlZXIgbmFtZSB2ZXRoLXJ0LTJcXG4rXFx0c2V0dXBfbnMgcnRfMSBydF8yXFxuK1xcdHNldHVwX3J0X25ldHdvcmtpbmcgMVxcbitcXHRzZXR1cF9ydF9uZXR3b3JraW5nIDJcXG4rXFxuK1xcdCMgc2V0dXAgdHdvIGhvc3RzIGZvciB0aGUgdGVuYW50IDEwMC5cXG4rXFx0IyAgLSBob3N0IGhzLXQxMDAtMSBpcyBkaXJlY3RseSBjb25uZWN0ZWQgdG8gdGhlIHJvdXRlciBydC0xO1xcbitcXHQjICAtIGhvc3QgaHMtdDEwMC0yIGlzIGRpcmVjdGx5IGNvbm5lY3RlZCB0byB0aGUgcm91dGVyIHJ0LTIuXFxuK1xcdHNldHVwX25zIGhzX3QxMDBfMSBoc190MTAwXzJcXG4rXFx0c2V0dXBfaHMgMSAxIDEwMFxcbitcXHRzZXR1cF9ocyAyIDIgMTAwXFxuK1xcbitcXHQjIHNldHVwIHR3byBob3N0cyBmb3IgdGhlIHRlbmFudCAyMDAuXFxuK1xcdCMgIC0gaG9zdCBocy10MjAwLTMgaXMgZGlyZWN0bHkgY29ubmVjdGVkIHRvIHRoZSByb3V0ZXIgcnQtMTtcXG4rXFx0IyAgLSBob3N0IGhzLXQyMDAtNCBpcyBkaXJlY3RseSBjb25uZWN0ZWQgdG8gdGhlIHJvdXRlciBydC0yLlxcbitcXHRzZXR1cF9ucyBoc190MjAwXzMgaHNfdDIwMF80XFxuK1xcdHNldHVwX2hzIDMgMSAyMDBcXG4rXFx0c2V0dXBfaHMgNCAyIDIwMFxcbitcXG4rXFx0IyBjb25maWd1cmUgZWFjaCByb3V0ZXIgZm9yIGVhY2ggdGVuYW50OiBWUkYsIGJsYWNraG9sZSByb3V0ZXMsXFxuK1xcdCMgcm91dGVyIGxvb3BiYWNrIGludGVyZmFjZVxcbitcXHRzZXR1cF9ydCAxIDEwMFxcbitcXHRzZXR1cF9ydCAyIDEwMFxcbitcXHRzZXR1cF9ydCAxIDIwMFxcbitcXHRzZXR1cF9ydCAyIDIwMFxcbitcXG4rXFx0IyBzZXR1cCB0aGUgTDMgVlBOIHdoaWNoIGNvbm5lY3RzIHRoZSBob3N0IGhzLXQxMDAtMSBhbmQgaG9zdCBocy10MTAwLTJcXG4rXFx0IyB3aXRoaW4gdGhlIHNhbWUgdGVuYW50IDEwMC5cXG4rXFx0c2V0dXBfdnBuX2NvbmZpZyAxIDIgMiAxMDBcXG4rXFx0c2V0dXBfdnBuX2NvbmZpZyAyIDEgMSAxMDBcXG4rXFxuK1xcdCMgc2V0dXAgdGhlIEwzIFZQTiB3aGljaCBjb25uZWN0cyB0aGUgaG9zdCBocy10MjAwLTMgYW5kIGhvc3QgaHMtdDIwMC00XFxuK1xcdCMgd2l0aGluIHRoZSBzYW1lIHRlbmFudCAyMDAuXFxuK1xcdHNldHVwX3Zwbl9jb25maWcgMSA0IDIgMjAwXFxuK1xcdHNldHVwX3Zwbl9jb25maWcgMiAzIDEgMjAwXFxuK1xcbitcXHQjIGFsbG93IGVhY2ggcm91dGVyIHRvIHJlYWNoIHRoZSBvdGhlcidzIGxvb3BiYWNrIHRocm91Z2ggdGhlIFZQTlxcbitcXHRzZXR1cF92cG5fZ3dfZW5jYXAgMiAxIDEwMFxcbitcXHRzZXR1cF92cG5fZ3dfZW5jYXAgMSAyIDEwMFxcbitcXHRzZXR1cF92cG5fZ3dfZW5jYXAgMiAxIDIwMFxcbitcXHRzZXR1cF92cG5fZ3dfZW5jYXAgMSAyIDIwMFxcbitcXG4rXFx0IyB0ZXN0aW5nIGVudmlyb25tZW50IHdhcyBzZXQgdXAgc3VjY2Vzc2Z1bGx5XFxuK1xcdFNFVFVQX0VSUj0wXFxuK31cXG4rXFxuK2NoZWNrX3J0X2Nvbm5lY3Rpdml0eSgpXFxuK3tcXG4rXFx0bG9jYWwgcnRzcmM9XFxcIiQxXFxcIlxcbitcXHRsb2NhbCBydGRzdD1cXFwiJDJcXFwiXFxuK1xcdGxvY2FsIG5zbmFtZVxcbitcXG4rXFx0bnNuYW1lPVxcXCIkKGdldF9ydF9uc25hbWUgXFxcIiR7cnRzcmN9XFxcIilcXFwiXFxuK1xcbitcXHRpcCBuZXRucyBleGVjIFxcXCIke25zbmFtZX1cXFwiIHBpbmcgLWMgMSAtVyAxIFxcXCIke0lQdjZfUlRfTkVUV09SS306OiR7cnRkc3R9XFxcIiBcXFxcXFxuK1xcdFxcdFxcdTAwM2UvZGV2L251bGwgMlxcdTAwM2VcXHUwMDI2MVxcbit9XFxuK1xcbitjaGVja19hbmRfbG9nX3J0X2Nvbm5lY3Rpdml0eSgpXFxuK3tcXG4rXFx0bG9jYWwgcnRzcmM9XFxcIiQxXFxcIlxcbitcXHRsb2NhbCBydGRzdD1cXFwiJDJcXFwiXFxuK1xcbitcXHRjaGVja19ydF9jb25uZWN0aXZpdHkgXFxcIiR7cnRzcmN9XFxcIiBcXFwiJHtydGRzdH1cXFwiXFxuK1xcdGxvZ190ZXN0ICQ/IDAgXFxcIlJvdXRlcnMgY29ubmVjdGl2aXR5OiBydC0ke3J0c3JjfSAtXFx1MDAzZSBydC0ke3J0ZHN0fVxcXCJcXG4rfVxcbitcXG4rY2hlY2tfaHNfaXB2Nl9jb25uZWN0aXZpdHkoKVxcbit7XFxuK1xcdGxvY2FsIGhzc3JjPVxcXCIkMVxcXCJcXG4rXFx0bG9jYWwgaHNkc3Q9XFxcIiQyXFxcIlxcbitcXHRsb2NhbCB0aWQ9XFxcIiQzXFxcIlxcbitcXHRsb2NhbCBuc25hbWVcXG4rXFxuK1xcdG5zbmFtZT1cXFwiJChnZXRfaHNfbnNuYW1lIFxcXCIke3RpZH1cXFwiIFxcXCIke2hzc3JjfVxcXCIpXFxcIlxcbitcXG4rXFx0aXAgbmV0bnMgZXhlYyBcXFwiJHtuc25hbWV9XFxcIiBwaW5nIC1jIDEgLVcgXFxcIiR7UElOR19USU1FT1VUX1NFQ31cXFwiIFxcXFxcXG4rXFx0XFx0XFxcIiR7SVB2Nl9IU19ORVRXT1JLfTo6JHtoc2RzdH1cXFwiIFxcdTAwM2UvZGV2L251bGwgMlxcdTAwM2VcXHUwMDI2MVxcbit9XFxuK1xcbitjaGVja19oc19pcHY0X2Nvbm5lY3Rpdml0eSgpXFxuK3tcXG4rXFx0bG9jYWwgaHNzcmM9XFxcIiQxXFxcIlxcbitcXHRsb2NhbCBoc2RzdD1cXFwiJDJcXFwiXFxuK1xcdGxvY2FsIHRpZD1cXFwiJDNcXFwiXFxuK1xcdGxvY2FsIG5zbmFtZVxcbitcXG4rXFx0bnNuYW1lPVxcXCIkKGdldF9oc19uc25hbWUgXFxcIiR7dGlkfVxcXCIgXFxcIiR7aHNzcmN9XFxcIilcXFwiXFxuK1xcbitcXHRpcCBuZXRucyBleGVjIFxcXCIke25zbmFtZX1cXFwiIHBpbmcgLWMgMSAtVyBcXFwiJHtQSU5HX1RJTUVPVVRfU0VDfVxcXCIgXFxcXFxcbitcXHRcXHRcXFwiJHtJUHY0X0hTX05FVFdPUkt9LiR7aHNkc3R9XFxcIiBcXHUwMDNlL2Rldi9udWxsIDJcXHUwMDNlXFx1MDAyNjFcXG4rfVxcbitcXG4rY2hlY2tfYW5kX2xvZ19oc19jb25uZWN0aXZpdHkoKVxcbit7XFxuK1xcdGxvY2FsIGhzc3JjPVxcXCIkMVxcXCJcXG4rXFx0bG9jYWwgaHNkc3Q9XFxcIiQyXFxcIlxcbitcXHRsb2NhbCB0aWQ9XFxcIiQzXFxcIlxcbitcXG4rXFx0Y2hlY2tfaHNfaXB2Nl9jb25uZWN0aXZpdHkgXFxcIiR7aHNzcmN9XFxcIiBcXFwiJHtoc2RzdH1cXFwiIFxcXCIke3RpZH1cXFwiXFxuK1xcdGxvZ190ZXN0ICQ/IDAgXFxcIklQdjYgY29ubmVjdGl2aXR5OiBocy10JHt0aWR9LSR7aHNzcmN9IC1cXHUwMDNlIGhzLXQke3RpZH0tJHtoc2RzdH0gKHRlbmFudCAke3RpZH0pXFxcIlxcbitcXG4rXFx0Y2hlY2tfaHNfaXB2NF9jb25uZWN0aXZpdHkgXFxcIiR7aHNzcmN9XFxcIiBcXFwiJHtoc2RzdH1cXFwiIFxcXCIke3RpZH1cXFwiXFxuK1xcdGxvZ190ZXN0ICQ/IDAgXFxcIklQdjQgY29ubmVjdGl2aXR5OiBocy10JHt0aWR9LSR7aHNzcmN9IC1cXHUwMDNlIGhzLXQke3RpZH0tJHtoc2RzdH0gKHRlbmFudCAke3RpZH0pXFxcIlxcbit9XFxuK1xcbitjaGVja19hbmRfbG9nX2hzX2lzb2xhdGlvbigpXFxuK3tcXG4rXFx0bG9jYWwgaHNzcmM9XFxcIiQxXFxcIlxcbitcXHRsb2NhbCB0aWRzcmM9XFxcIiQyXFxcIlxcbitcXHRsb2NhbCBoc2RzdD1cXFwiJDNcXFwiXFxuK1xcdGxvY2FsIHRpZGRzdD1cXFwiJDRcXFwiXFxuK1xcbitcXHRjaGVja19oc19pcHY2X2Nvbm5lY3Rpdml0eSBcXFwiJHtoc3NyY31cXFwiIFxcXCIke2hzZHN0fVxcXCIgXFxcIiR7dGlkc3JjfVxcXCJcXG4rXFx0bG9nX3Rlc3QgJD8gMSBcXFwiSVB2NiBpc29sYXRpb246IGhzLXQke3RpZHNyY30tJHtoc3NyY30gLVgtXFx1MDAzZSBocy10JHt0aWRkc3R9LSR7aHNkc3R9XFxcIlxcbitcXG4rXFx0Y2hlY2tfaHNfaXB2NF9jb25uZWN0aXZpdHkgXFxcIiR7aHNzcmN9XFxcIiBcXFwiJHtoc2RzdH1cXFwiIFxcXCIke3RpZHNyY31cXFwiXFxuK1xcdGxvZ190ZXN0ICQ/IDEgXFxcIklQdjQgaXNvbGF0aW9uOiBocy10JHt0aWRzcmN9LSR7aHNzcmN9IC1YLVxcdTAwM2UgaHMtdCR7dGlkZHN0fS0ke2hzZHN0fVxcXCJcXG4rfVxcbitcXG4rY2hlY2tfYW5kX2xvZ19oczJnd19jb25uZWN0aXZpdHkoKVxcbit7XFxuK1xcdGxvY2FsIGhzc3JjPVxcXCIkMVxcXCJcXG4rXFx0bG9jYWwgdGlkPVxcXCIkMlxcXCJcXG4rXFxuK1xcdGNoZWNrX2hzX2lwdjZfY29ubmVjdGl2aXR5IFxcXCIke2hzc3JjfVxcXCIgMjU0IFxcXCIke3RpZH1cXFwiXFxuK1xcdGxvZ190ZXN0ICQ/IDAgXFxcIklQdjYgY29ubmVjdGl2aXR5OiBocy10JHt0aWR9LSR7aHNzcmN9IC1cXHUwMDNlIGd3ICh0ZW5hbnQgJHt0aWR9KVxcXCJcXG4rXFxuK1xcdGNoZWNrX2hzX2lwdjRfY29ubmVjdGl2aXR5IFxcXCIke2hzc3JjfVxcXCIgMjU0IFxcXCIke3RpZH1cXFwiXFxuK1xcdGxvZ190ZXN0ICQ/IDAgXFxcIklQdjQgY29ubmVjdGl2aXR5OiBocy10JHt0aWR9LSR7aHNzcmN9IC1cXHUwMDNlIGd3ICh0ZW5hbnQgJHt0aWR9KVxcXCJcXG4rfVxcbitcXG4rcm91dGVyX3Rlc3RzKClcXG4re1xcbitcXHRsb2dfc2VjdGlvbiBcXFwiSVB2NiByb3V0ZXJzIGNvbm5lY3Rpdml0eSB0ZXN0XFxcIlxcbitcXG4rXFx0Y2hlY2tfYW5kX2xvZ19ydF9jb25uZWN0aXZpdHkgMSAyXFxuK1xcdGNoZWNrX2FuZF9sb2dfcnRfY29ubmVjdGl2aXR5IDIgMVxcbit9XFxuK1xcbitob3N0MmdhdGV3YXlfdGVzdHMoKVxcbit7XFxuK1xcdGxvZ19zZWN0aW9uIFxcXCJDb25uZWN0aXZpdHkgdGVzdCBhbW9uZyBob3N0cyBhbmQgZ2F0ZXdheVxcXCJcXG4rXFxuK1xcdGNoZWNrX2FuZF9sb2dfaHMyZ3dfY29ubmVjdGl2aXR5IDEgMTAwXFxuK1xcdGNoZWNrX2FuZF9sb2dfaHMyZ3dfY29ubmVjdGl2aXR5IDIgMTAwXFxuK1xcbitcXHRjaGVja19hbmRfbG9nX2hzMmd3X2Nvbm5lY3Rpdml0eSAzIDIwMFxcbitcXHRjaGVja19hbmRfbG9nX2hzMmd3X2Nvbm5lY3Rpdml0eSA0IDIwMFxcbit9XFxuK1xcbitob3N0X3Zwbl90ZXN0cygpXFxuK3tcXG4rXFx0bG9nX3NlY3Rpb24gXFxcIlNSdjYgVlBOIGNvbm5lY3Rpdml0eSB0ZXN0IGFtb25nIGhvc3RzIGluIHRoZSBzYW1lIHRlbmFudFxcXCJcXG4rXFxuK1xcdGNoZWNrX2FuZF9sb2dfaHNfY29ubmVjdGl2aXR5IDEgMiAxMDBcXG4rXFx0Y2hlY2tfYW5kX2xvZ19oc19jb25uZWN0aXZpdHkgMiAxIDEwMFxcbitcXG4rXFx0Y2hlY2tfYW5kX2xvZ19oc19jb25uZWN0aXZpdHkgMyA0IDIwMFxcbitcXHRjaGVja19hbmRfbG9nX2hzX2Nvbm5lY3Rpdml0eSA0IDMgMjAwXFxuK31cXG4rXFxuK2hvc3RfdnBuX2lzb2xhdGlvbl90ZXN0cygpXFxuK3tcXG4rXFx0bG9jYWwgbDE9XFxcIjEgMlxcXCJcXG4rXFx0bG9jYWwgbDI9XFxcIjMgNFxcXCJcXG4rXFx0bG9jYWwgdDE9MTAwXFxuK1xcdGxvY2FsIHQyPTIwMFxcbitcXHRsb2NhbCBpXFxuK1xcdGxvY2FsIGpcXG4rXFx0bG9jYWwgdG1wXFxuK1xcbitcXHRsb2dfc2VjdGlvbiBcXFwiU1J2NiBWUE4gaXNvbGF0aW9uIHRlc3QgYW1vbmcgaG9zdHMgaW4gZGlmZmVyZW50IHRlbmFudHNcXFwiXFxuK1xcbitcXHRmb3IgXyBpbiAwIDE7IGRvXFxuK1xcdFxcdGZvciBpIGluICR7bDF9OyBkb1xcbitcXHRcXHRcXHRmb3IgaiBpbiAke2wyfTsgZG9cXG4rXFx0XFx0XFx0XFx0Y2hlY2tfYW5kX2xvZ19oc19pc29sYXRpb24gXFxcIiR7aX1cXFwiIFxcXCIke3QxfVxcXCIgXFxcIiR7an1cXFwiIFxcXCIke3QyfVxcXCJcXG4rXFx0XFx0XFx0ZG9uZVxcbitcXHRcXHRkb25lXFxuK1xcbitcXHRcXHQjIGxldCB1cyB0ZXN0IHRoZSByZXZlcnNlIHBhdGhcXG4rXFx0XFx0dG1wPVxcXCIke2wxfVxcXCI7IGwxPVxcXCIke2wyfVxcXCI7IGwyPVxcXCIke3RtcH1cXFwiXFxuK1xcdFxcdHRtcD0ke3QxfTsgdDE9JHt0Mn07IHQyPSR7dG1wfVxcbitcXHRkb25lXFxuK31cXG4rXFxuK19fdGVzdF9ub2xvb2t1cCgpXFxuK3tcXG4rXFx0bG9jYWwgaHNzcmM9XFxcIiQxXFxcIlxcbitcXHRsb2NhbCBoc2RzdD1cXFwiJDJcXFwiXFxuK1xcdGxvY2FsIHJ0c3JjPVxcXCIkM1xcXCJcXG4rXFx0bG9jYWwgcnRkc3Q9XFxcIiQ0XFxcIlxcbitcXHRsb2NhbCB0aWQ9XFxcIiQ1XFxcIlxcbitcXHRsb2NhbCB2cG5fc2lkXFxuK1xcbitcXHR2cG5fc2lkPVxcXCIkKGJ1aWxkX3Zwbl9zaWQgXFxcIiR7cnRzcmN9XFxcIiBcXFwiJHtydGRzdH1cXFwiIFxcXCIke3RpZH1cXFwiKVxcXCJcXG4rXFxuK1xcdCMgcmVwbGFjZSBlbmNhcCByb3V0ZShzKSB3aXRob3V0IFxcXCJsb29rdXBcXFwiIGF0dHJpYnV0ZVxcbitcXHRzZXRfaG9zdF9lbmNhcF9yb3V0ZV9ub2xvb2t1cCBcXFwiJHtydHNyY31cXFwiIFxcXCIke2hzZHN0fVxcXCIgXFxcIiR7dnBuX3NpZH1cXFwiIFxcXCIke3RpZH1cXFwiXFxuK1xcbitcXHRjaGVja19oc19pcHY2X2Nvbm5lY3Rpdml0eSBcXFwiJHtoc3NyY31cXFwiIFxcXCIke2hzZHN0fVxcXCIgXFxcIiR7dGlkfVxcXCJcXG4rXFx0bG9nX3Rlc3QgJD8gMSBcXFwiSVB2NiB3L28gbG9va3VwOiBocy10JHt0aWR9LSR7aHNzcmN9IC1YLVxcdTAwM2UgaHMtdCR7dGlkfS0ke2hzZHN0fSAodGVuYW50ICR7dGlkfSlcXFwiXFxuK1xcbitcXHRjaGVja19oc19pcHY0X2Nvbm5lY3Rpdml0eSBcXFwiJHtoc3NyY31cXFwiIFxcXCIke2hzZHN0fVxcXCIgXFxcIiR7dGlkfVxcXCJcXG4rXFx0bG9nX3Rlc3QgJD8gMSBcXFwiSVB2NCB3L28gbG9va3VwOiBocy10JHt0aWR9LSR7aHNzcmN9IC1YLVxcdTAwM2UgaHMtdCR7dGlkfS0ke2hzZHN0fSAodGVuYW50ICR7dGlkfSlcXFwiXFxuK1xcbitcXHQjIHJlc3RvcmUgZW5jYXAgcm91dGUocykgd2l0aCBcXFwibG9va3VwXFxcIiBmb3Igc3Vic2VxdWVudCB0ZXN0c1xcbitcXHRzZXRfaG9zdF9lbmNhcF9yb3V0ZSBcXFwiJHtydHNyY31cXFwiIFxcXCIke2hzZHN0fVxcXCIgXFxcIiR7dnBuX3NpZH1cXFwiIFxcXCIke3RpZH1cXFwiXFxuK31cXG4rXFxuK2hvc3RfdnBuX25vbG9va3VwX3Rlc3RzKClcXG4re1xcbitcXHRsb2dfc2VjdGlvbiBcXFwiU1J2NiBWUE4gY29ubmVjdGl2aXR5IHRlc3QgYW1vbmcgaG9zdHMgdy9vIGxvb2t1cFxcXCJcXG4rXFxuK1xcdF9fdGVzdF9ub2xvb2t1cCAxIDIgMSAyIDEwMFxcbitcXHRfX3Rlc3Rfbm9sb29rdXAgMiAxIDIgMSAxMDBcXG4rXFxuK1xcdF9fdGVzdF9ub2xvb2t1cCAzIDQgMSAyIDIwMFxcbitcXHRfX3Rlc3Rfbm9sb29rdXAgNCAzIDIgMSAyMDBcXG4rfVxcbitcXG4rY2hlY2tfZ3dfaXB2Nl9jb25uZWN0aXZpdHkoKVxcbit7XFxuK1xcdGxvY2FsIHJ0c3JjPVxcXCIkMVxcXCJcXG4rXFx0bG9jYWwgcnRkc3Q9XFxcIiQyXFxcIlxcbitcXHRsb2NhbCB0aWRzcmM9XFxcIiQzXFxcIlxcbitcXHRsb2NhbCB0aWRkc3Q9XFxcIiQ0XFxcIlxcbitcXHRsb2NhbCBydG5hbWVcXG4rXFx0bG9jYWwgc3JjX3Y2XFxuK1xcdGxvY2FsIGRzdF92NlxcbitcXG4rXFx0cnRuYW1lPVxcXCIkKGdldF9ydF9uc25hbWUgXFxcIiR7cnRzcmN9XFxcIilcXFwiXFxuK1xcdHNyY192Nj1cXFwiJHtJUHY2X0hTX05FVFdPUkt9OjokKGdldF9ybG9faG9zdGlkIFxcXCIke3J0c3JjfVxcXCIgXFxcIiR7dGlkc3JjfVxcXCIpXFxcIlxcbitcXHRkc3RfdjY9XFxcIiR7SVB2Nl9IU19ORVRXT1JLfTo6JChnZXRfcmxvX2hvc3RpZCBcXFwiJHtydGRzdH1cXFwiIFxcXCIke3RpZGRzdH1cXFwiKVxcXCJcXG4rXFxuK1xcdGlwIG5ldG5zIGV4ZWMgXFxcIiR7cnRuYW1lfVxcXCIgaXAgdnJmIGV4ZWMgXFxcInZyZi0ke3RpZHNyY31cXFwiIFxcXFxcXG4rXFx0XFx0cGluZyAtYyAxIC1XIFxcXCIke1BJTkdfVElNRU9VVF9TRUN9XFxcIiBcXFxcXFxuK1xcdFxcdC1JIFxcXCIke3NyY192Nn1cXFwiIFxcXCIke2RzdF92Nn1cXFwiIFxcdTAwM2UvZGV2L251bGwgMlxcdTAwM2VcXHUwMDI2MVxcbit9XFxuK1xcbitjaGVja19nd19pcHY0X2Nvbm5lY3Rpdml0eSgpXFxuK3tcXG4rXFx0bG9jYWwgcnRzcmM9XFxcIiQxXFxcIlxcbitcXHRsb2NhbCBydGRzdD1cXFwiJDJcXFwiXFxuK1xcdGxvY2FsIHRpZHNyYz1cXFwiJDNcXFwiXFxuK1xcdGxvY2FsIHRpZGRzdD1cXFwiJDRcXFwiXFxuK1xcdGxvY2FsIHJ0bmFtZVxcbitcXHRsb2NhbCBzcmNfdjRcXG4rXFx0bG9jYWwgZHN0X3Y0XFxuK1xcbitcXHRydG5hbWU9XFxcIiQoZ2V0X3J0X25zbmFtZSBcXFwiJHtydHNyY31cXFwiKVxcXCJcXG4rXFx0c3JjX3Y0PVxcXCIke0lQdjRfSFNfTkVUV09SS30uJChnZXRfcmxvX2hvc3RpZCBcXFwiJHtydHNyY31cXFwiIFxcXCIke3RpZHNyY31cXFwiKVxcXCJcXG4rXFx0ZHN0X3Y0PVxcXCIke0lQdjRfSFNfTkVUV09SS30uJChnZXRfcmxvX2hvc3RpZCBcXFwiJHtydGRzdH1cXFwiIFxcXCIke3RpZGRzdH1cXFwiKVxcXCJcXG4rXFxuK1xcdGlwIG5ldG5zIGV4ZWMgXFxcIiR7cnRuYW1lfVxcXCIgaXAgdnJmIGV4ZWMgXFxcInZyZi0ke3RpZHNyY31cXFwiIFxcXFxcXG4rXFx0XFx0cGluZyAtYyAxIC1XIFxcXCIke1BJTkdfVElNRU9VVF9TRUN9XFxcIiBcXFxcXFxuK1xcdFxcdC1JIFxcXCIke3NyY192NH1cXFwiIFxcXCIke2RzdF92NH1cXFwiIFxcdTAwM2UvZGV2L251bGwgMlxcdTAwM2VcXHUwMDI2MVxcbit9XFxuK1xcbitjaGVja19hbmRfbG9nX2d3X2Nvbm5lY3Rpdml0eSgpXFxuK3tcXG4rXFx0bG9jYWwgcnRzcmM9XFxcIiQxXFxcIlxcbitcXHRsb2NhbCBydGRzdD1cXFwiJDJcXFwiXFxuK1xcdGxvY2FsIHRpZD1cXFwiJDNcXFwiXFxuK1xcbitcXHRjaGVja19nd19pcHY2X2Nvbm5lY3Rpdml0eSBcXFwiJHtydHNyY31cXFwiIFxcXCIke3J0ZHN0fVxcXCIgXFxcIiR7dGlkfVxcXCIgXFxcIiR7dGlkfVxcXCJcXG4rXFx0bG9nX3Rlc3QgJD8gMCBcXFwiSVB2NiBjb25uZWN0aXZpdHk6IHJ0LSR7cnRzcmN9IC1cXHUwMDNlIHJ0LSR7cnRkc3R9ICh0ZW5hbnQgJHt0aWR9KVxcXCJcXG4rXFxuK1xcdGNoZWNrX2d3X2lwdjRfY29ubmVjdGl2aXR5IFxcXCIke3J0c3JjfVxcXCIgXFxcIiR7cnRkc3R9XFxcIiBcXFwiJHt0aWR9XFxcIiBcXFwiJHt0aWR9XFxcIlxcbitcXHRsb2dfdGVzdCAkPyAwIFxcXCJJUHY0IGNvbm5lY3Rpdml0eTogcnQtJHtydHNyY30gLVxcdTAwM2UgcnQtJHtydGRzdH0gKHRlbmFudCAke3RpZH0pXFxcIlxcbit9XFxuK1xcbitjaGVja19hbmRfbG9nX2d3X2lzb2xhdGlvbigpXFxuK3tcXG4rXFx0bG9jYWwgcnRzcmM9XFxcIiQxXFxcIlxcbitcXHRsb2NhbCBydGRzdD1cXFwiJDJcXFwiXFxuK1xcdGxvY2FsIHRpZHNyYz1cXFwiJDNcXFwiXFxuK1xcdGxvY2FsIHRpZGRzdD1cXFwiJDRcXFwiXFxuK1xcbitcXHRjaGVja19nd19pcHY2X2Nvbm5lY3Rpdml0eSBcXFwiJHtydHNyY31cXFwiIFxcXCIke3J0ZHN0fVxcXCIgXFxcIiR7dGlkc3JjfVxcXCIgXFxcIiR7dGlkZHN0fVxcXCJcXG4rXFx0bG9nX3Rlc3QgJD8gMSBcXFwiSVB2NiBpc29sYXRpb246IHJ0LSR7cnRzcmN9IC1YLVxcdTAwM2UgcnQtJHtydGRzdH0gKHRlbmFudHMgJHt0aWRzcmN9LyR7dGlkZHN0fSlcXFwiXFxuK1xcbitcXHRjaGVja19nd19pcHY0X2Nvbm5lY3Rpdml0eSBcXFwiJHtydHNyY31cXFwiIFxcXCIke3J0ZHN0fVxcXCIgXFxcIiR7dGlkc3JjfVxcXCIgXFxcIiR7dGlkZHN0fVxcXCJcXG4rXFx0bG9nX3Rlc3QgJD8gMSBcXFwiSVB2NCBpc29sYXRpb246IHJ0LSR7cnRzcmN9IC1YLVxcdTAwM2UgcnQtJHtydGRzdH0gKHRlbmFudHMgJHt0aWRzcmN9LyR7dGlkZHN0fSlcXFwiXFxuK31cXG4rXFxuK2d3X3Zwbl9pc29sYXRpb25fdGVzdHMoKVxcbit7XFxuK1xcdGxvZ19zZWN0aW9uIFxcXCJTUnY2IFZQTiBpc29sYXRpb24gdGVzdCBhbW9uZyByb3V0ZXJzIGluIGRpZmZlcmVudCB0ZW5hbnRzXFxcIlxcbitcXG4rXFx0Y2hlY2tfYW5kX2xvZ19nd19pc29sYXRpb24gMSAyIDEwMCAyMDBcXG4rXFx0Y2hlY2tfYW5kX2xvZ19nd19pc29sYXRpb24gMiAxIDEwMCAyMDBcXG4rXFxuK1xcdGNoZWNrX2FuZF9sb2dfZ3dfaXNvbGF0aW9uIDEgMiAyMDAgMTAwXFxuK1xcdGNoZWNrX2FuZF9sb2dfZ3dfaXNvbGF0aW9uIDIgMSAyMDAgMTAwXFxuK31cXG4rXFxuK2d3X3Zwbl90ZXN0cygpXFxuK3tcXG4rXFx0bG9nX3NlY3Rpb24gXFxcIlNSdjYgVlBOIGNvbm5lY3Rpdml0eSB0ZXN0IGFtb25nIHJvdXRlcnMgaW4gdGhlIHNhbWUgdGVuYW50XFxcIlxcbitcXG4rXFx0Y2hlY2tfYW5kX2xvZ19nd19jb25uZWN0aXZpdHkgMSAyIDEwMFxcbitcXHRjaGVja19hbmRfbG9nX2d3X2Nvbm5lY3Rpdml0eSAyIDEgMTAwXFxuK1xcbitcXHRjaGVja19hbmRfbG9nX2d3X2Nvbm5lY3Rpdml0eSAxIDIgMjAwXFxuK1xcdGNoZWNrX2FuZF9sb2dfZ3dfY29ubmVjdGl2aXR5IDIgMSAyMDBcXG4rfVxcbitcXG4rX190ZXN0X2d3X25vbG9va3VwKClcXG4re1xcbitcXHRsb2NhbCBydHNyYz1cXFwiJDFcXFwiXFxuK1xcdGxvY2FsIHJ0ZHN0PVxcXCIkMlxcXCJcXG4rXFx0bG9jYWwgdGlkPVxcXCIkM1xcXCJcXG4rXFx0bG9jYWwgc2lkXFxuK1xcbitcXHRzaWQ9XFxcIiQoYnVpbGRfdnBuX3NpZCBcXFwiJHtydHNyY31cXFwiIFxcXCIke3J0ZHN0fVxcXCIgXFxcIiR7dGlkfVxcXCIpXFxcIlxcbitcXG4rXFx0IyByZXBsYWNlIGd3IGVuY2FwIHJvdXRlIHdpdGhvdXQgXFxcImxvb2t1cFxcXCIgYXR0cmlidXRlXFxuK1xcdHNldF9nd19lbmNhcF9yb3V0ZV9ub2xvb2t1cCBcXFwiJHtydHNyY31cXFwiIFxcXCIke3J0ZHN0fVxcXCIgXFxcIiR7c2lkfVxcXCIgXFxcIiR7dGlkfVxcXCJcXG4rXFxuK1xcdGNoZWNrX2d3X2lwdjZfY29ubmVjdGl2aXR5IFxcXCIke3J0c3JjfVxcXCIgXFxcIiR7cnRkc3R9XFxcIiBcXFwiJHt0aWR9XFxcIiBcXFwiJHt0aWR9XFxcIlxcbitcXHRsb2dfdGVzdCAkPyAxIFxcXCJJUHY2IHcvbyBsb29rdXA6IHJ0LSR7cnRzcmN9IC1YLVxcdTAwM2UgcnQtJHtydGRzdH0gKHRlbmFudCAke3RpZH0pXFxcIlxcbitcXG4rXFx0Y2hlY2tfZ3dfaXB2NF9jb25uZWN0aXZpdHkgXFxcIiR7cnRzcmN9XFxcIiBcXFwiJHtydGRzdH1cXFwiIFxcXCIke3RpZH1cXFwiIFxcXCIke3RpZH1cXFwiXFxuK1xcdGxvZ190ZXN0ICQ/IDEgXFxcIklQdjQgdy9vIGxvb2t1cDogcnQtJHtydHNyY30gLVgtXFx1MDAzZSBydC0ke3J0ZHN0fSAodGVuYW50ICR7dGlkfSlcXFwiXFxuK1xcbitcXHQjIHJlc3RvcmUgZ3cgZW5jYXAgcm91dGUgd2l0aCBcXFwibG9va3VwXFxcIiBmb3Igc3Vic2VxdWVudCB0ZXN0c1xcbitcXHRzZXRfZ3dfZW5jYXBfcm91dGUgXFxcIiR7cnRzcmN9XFxcIiBcXFwiJHtydGRzdH1cXFwiIFxcXCIke3NpZH1cXFwiIFxcXCIke3RpZH1cXFwiXFxuK31cXG4rXFxuK2d3X3Zwbl9ub2xvb2t1cF90ZXN0cygpXFxuK3tcXG4rXFx0bG9nX3NlY3Rpb24gXFxcIlNSdjYgVlBOIGNvbm5lY3Rpdml0eSB0ZXN0IGFtb25nIHJvdXRlcnMgdy9vIGxvb2t1cFxcXCJcXG4rXFxuK1xcdF9fdGVzdF9nd19ub2xvb2t1cCAxIDIgMTAwXFxuK1xcdF9fdGVzdF9nd19ub2xvb2t1cCAyIDEgMTAwXFxuK1xcbitcXHRfX3Rlc3RfZ3dfbm9sb29rdXAgMSAyIDIwMFxcbitcXHRfX3Rlc3RfZ3dfbm9sb29rdXAgMiAxIDIwMFxcbit9XFxuK1xcbit0ZXN0X2NvbW1hbmRfb3Jfa3NmdF9za2lwKClcXG4re1xcbitcXHRsb2NhbCBjbWQ9XFxcIiQxXFxcIlxcbitcXG4rXFx0aWYgWyAhIC14IFxcXCIkKGNvbW1hbmQgLXYgXFxcIiR7Y21kfVxcXCIpXFxcIiBdOyB0aGVuXFxuK1xcdFxcdGVjaG8gXFxcIlNLSVA6IENvdWxkIG5vdCBydW4gdGVzdCB3aXRob3V0IFxcXFxcXFwiJHtjbWR9XFxcXFxcXCIgdG9vbFxcXCJcXG4rXFx0XFx0ZXhpdCBcXFwiJHtrc2Z0X3NraXB9XFxcIlxcbitcXHRmaVxcbit9XFxuK1xcbit0ZXN0X3ZyZl9vcl9rc2Z0X3NraXAoKVxcbit7XFxuK1xcdG1vZHByb2JlIHZyZiBcXHUwMDI2XFx1MDAzZS9kZXYvbnVsbCB8fCB0cnVlXFxuK1xcdGlmIFsgISAtZSAvcHJvYy9zeXMvbmV0L3ZyZi9zdHJpY3RfbW9kZSBdOyB0aGVuXFxuK1xcdFxcdGVjaG8gXFxcIlNLSVA6IHZyZiBzeXNjdGwgZG9lcyBub3QgZXhpc3RcXFwiXFxuK1xcdFxcdGV4aXQgXFxcIiR7a3NmdF9za2lwfVxcXCJcXG4rXFx0ZmlcXG4rfVxcbitcXG4rdGVzdF9kdW1teV9kZXZfb3Jfa3NmdF9za2lwKClcXG4re1xcbitcXHRsb2NhbCB0ZXN0X25ldG5zXFxuK1xcbitcXHRzZXR1cF9ucyB0ZXN0X25ldG5zXFxuK1xcbitcXHRtb2Rwcm9iZSBkdW1teSBcXHUwMDI2XFx1MDAzZS9kZXYvbnVsbCB8fCB0cnVlXFxuK1xcdGlmICEgaXAgLW5ldG5zIFxcXCIke3Rlc3RfbmV0bnN9XFxcIiBsaW5rIGFkZCBcXFwiJHtEVU1NWV9ERVZOQU1FfVxcXCIgXFxcXFxcbitcXHRcXHRcXHR0eXBlIGR1bW15OyB0aGVuXFxuK1xcdFxcdGNsZWFudXBfbnMgXFxcIiR7dGVzdF9uZXRuc31cXFwiXFxuK1xcdFxcdGVjaG8gXFxcIlNLSVA6IGR1bW15IGRldiBub3Qgc3VwcG9ydGVkXFxcIlxcbitcXHRcXHRleGl0IFxcXCIke2tzZnRfc2tpcH1cXFwiXFxuK1xcdGZpXFxuK1xcbitcXHRjbGVhbnVwX25zIFxcXCIke3Rlc3RfbmV0bnN9XFxcIlxcbit9XFxuK1xcbit0ZXN0X2VuY2FwX2xvb2t1cF9zdXBwX29yX2tzZnRfc2tpcCgpXFxuK3tcXG4rXFx0bG9jYWwgbnNuYW1lXFxuK1xcbitcXHRzZXR1cF9ucyBuc25hbWVcXG4rXFxuK1xcdGlwIC1uZXRucyBcXFwiJHtuc25hbWV9XFxcIiBsaW5rIGFkZCBcXFwiJHtEVU1NWV9ERVZOQU1FfVxcXCIgdHlwZSBkdW1teVxcbitcXHRpcCAtbmV0bnMgXFxcIiR7bnNuYW1lfVxcXCIgbGluayBzZXQgXFxcIiR7RFVNTVlfREVWTkFNRX1cXFwiIHVwXFxuK1xcbitcXHRpZiAhIGlwIC1uZXRucyBcXFwiJHtuc25hbWV9XFxcIiAtNiByb3V0ZSBhZGQgXFxcIiR7SVB2Nl9URVNUU19BRERSfS8xMjhcXFwiIFxcXFxcXG4rXFx0XFx0XFx0ZW5jYXAgc2VnNiBtb2RlIGVuY2FwIHNlZ3MgZmMwMDo6MSBcXFxcXFxuK1xcdFxcdFxcdGxvb2t1cCBcXFwiJHtURVNUU19UQUJMRV9JRH1cXFwiIFxcXFxcXG4rXFx0XFx0XFx0ZGV2IFxcXCIke0RVTU1ZX0RFVk5BTUV9XFxcIiAyXFx1MDAzZS9kZXYvbnVsbDsgdGhlblxcbitcXHRcXHRjbGVhbnVwX25zIFxcXCIke25zbmFtZX1cXFwiXFxuK1xcdFxcdGVjaG8gXFxcIlNLSVA6IHNlZzYgZW5jYXAgbG9va3VwIGF0dHJpYnV0ZSBub3Qgc3VwcG9ydGVkXFxcIlxcbitcXHRcXHRleGl0IFxcXCIke2tzZnRfc2tpcH1cXFwiXFxuK1xcdGZpXFxuK1xcbitcXHQjIEFuIG9sZCBrZXJuZWwgd2l0aCBhIHJlY2VudCBpcHJvdXRlMiBhY2NlcHRzIHRoZSByb3V0ZSBidXRcXG4rXFx0IyBzaWxlbnRseSBpZ25vcmVzIHRoZSBsb29rdXAgYXR0cmlidXRlLiBEdW1wIHRoZSByb3V0ZSBhbmQgY2hlY2tcXG4rXFx0IyB0aGUgYXR0cmlidXRlIGlzIHJlYWxseSB0aGVyZSwgb3RoZXJ3aXNlIHRoZSB0ZXN0IGZhbHNlbHkgcGFzc2VzLlxcbitcXHRpZiAhIGlwIC1uZXRucyBcXFwiJHtuc25hbWV9XFxcIiAtNiByb3V0ZSBzaG93IFxcXCIke0lQdjZfVEVTVFNfQUREUn0vMTI4XFxcIiB8IFxcXFxcXG4rXFx0XFx0XFx0Z3JlcCAtcSBcXFwibG9va3VwICR7VEVTVFNfVEFCTEVfSUR9XFxcIjsgdGhlblxcbitcXHRcXHRjbGVhbnVwX25zIFxcXCIke25zbmFtZX1cXFwiXFxuK1xcdFxcdGVjaG8gXFxcIlNLSVA6IHNlZzYgZW5jYXAgbG9va3VwIGF0dHJpYnV0ZSBub3Qgc3VwcG9ydGVkXFxcIlxcbitcXHRcXHRleGl0IFxcXCIke2tzZnRfc2tpcH1cXFwiXFxuK1xcdGZpXFxuK1xcbitcXHRjbGVhbnVwX25zIFxcXCIke25zbmFtZX1cXFwiXFxuK31cXG4rXFxuK2lmIFsgXFxcIiQoaWQgLXUpXFxcIiAtbmUgMCBdOyB0aGVuXFxuK1xcdGVjaG8gXFxcIlNLSVA6IE5lZWQgcm9vdCBwcml2aWxlZ2VzXFxcIlxcbitcXHRleGl0IFxcXCIke2tzZnRfc2tpcH1cXFwiXFxuK2ZpXFxuK1xcbisjIHJlcXVpcmVkIHByb2dyYW1zIHRvIGNhcnJ5IG91dCB0aGlzIHNlbGZ0ZXN0XFxuK3Rlc3RfY29tbWFuZF9vcl9rc2Z0X3NraXAgaXBcXG4rdGVzdF9jb21tYW5kX29yX2tzZnRfc2tpcCBwaW5nXFxuK3Rlc3RfY29tbWFuZF9vcl9rc2Z0X3NraXAgc3lzY3RsXFxuK3Rlc3RfY29tbWFuZF9vcl9rc2Z0X3NraXAgZ3JlcFxcbitcXG4rdGVzdF9kdW1teV9kZXZfb3Jfa3NmdF9za2lwXFxuK3Rlc3RfdnJmX29yX2tzZnRfc2tpcFxcbit0ZXN0X2VuY2FwX2xvb2t1cF9zdXBwX29yX2tzZnRfc2tpcFxcbitcXG4rc2V0IC1lXFxuK3RyYXAgY2xlYW51cCBFWElUXFxuK1xcbitzZXR1cFxcbitzZXQgK2VcXG4rXFxuK3JvdXRlcl90ZXN0c1xcbitob3N0MmdhdGV3YXlfdGVzdHNcXG4raG9zdF92cG5fdGVzdHNcXG4raG9zdF92cG5faXNvbGF0aW9uX3Rlc3RzXFxuK2hvc3RfdnBuX25vbG9va3VwX3Rlc3RzXFxuK2d3X3Zwbl90ZXN0c1xcbitnd192cG5faXNvbGF0aW9uX3Rlc3RzXFxuK2d3X3Zwbl9ub2xvb2t1cF90ZXN0c1xcbitcXG4rcHJpbnRfbG9nX3Rlc3RfcmVzdWx0c1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwODo1NDoxNy4zNDk3NzMwOTFaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNDE0MzU1MzI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQVjZfU0VHNl9MV1RVTk5FTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInNlZzZfdGFibGVfbG9va3VwXCIsXG4gICAgXCJzZWc2X2lucHV0X3JvdXRlXCIsXG4gICAgXCJzZWc2X291dHB1dF9kc3RfbG9va3VwXCIsXG4gICAgXCJzZWc2X2J1aWxkX3N0YXRlXCIsXG4gICAgXCJzZWc2X2ZpbGxfZW5jYXBfaW5mb1wiLFxuICAgIFwic2VnNl9lbmNhcF9ubHNpemVcIixcbiAgICBcInNlZzZfZW5jYXBfY21wXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIG5ldyBOZXRsaW5rIGF0dHJpYnV0ZSBgU0VHNl9JUFRVTk5FTF9UQUJMRWAgdG8gc3BlY2lmeSBhIEZJQiB0YWJsZSBmb3IgcG9zdC1lbmNhcCBTSUQgbG9va3VwIGluIFNSdjYgdHVubmVscy4gSXQgbW9kaWZpZXMgdGhlIFNSdjYgZW5jYXBzdWxhdGlvbiBsb2dpYyBpbiBgbmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jYCB0byBwZXJmb3JtIHJvdXRlIGxvb2t1cHMgaW4gdGhlIHNwZWNpZmllZCB0YWJsZSBkdXJpbmcgYm90aCBpbnB1dCBhbmQgb3V0cHV0IHBhdGhzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gcmVhY2hhYmxlIGNvcmUga2VybmVsIG5ldHdvcmtpbmcgbG9naWMsIHNwZWNpZmljYWxseSB0aGUgSVB2NiBTZWdtZW50IFJvdXRpbmcgc3Vic3lzdGVtLCBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBiZDBmNDdhODhiMGQ1MDk0YjlmZDQzMWNhMDRjMjFlOGY2NmM3ZjAxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBKdWwgMTIgMDg6NTQ6MTQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvbGludXgvc2VnNl9pcHR1bm5lbC5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L3NlZzZfaXB0dW5uZWwuaFxuaW5kZXggNDg1ODg5YjE5OTAwZWEuLmUxOTY0YjNhNGJiMGFmIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L3NlZzZfaXB0dW5uZWwuaFxuKysrIGIvaW5jbHVkZS91YXBpL2xpbnV4L3NlZzZfaXB0dW5uZWwuaFxuQEAgLTIxLDYgKzIxLDcgQEAgZW51bSB7XG4gXHRTRUc2X0lQVFVOTkVMX1VOU1BFQyxcbiBcdFNFRzZfSVBUVU5ORUxfU1JILFxuIFx0U0VHNl9JUFRVTk5FTF9TUkMsXHQvKiBzdHJ1Y3QgaW42X2FkZHIgKi9cbitcdFNFRzZfSVBUVU5ORUxfVEFCTEUsXHQvKiBfX3UzMiBGSUIgdGFibGUgZm9yIHBvc3QtZW5jYXAgU0lEIGxvb2t1cCAqL1xuIFx0X19TRUc2X0lQVFVOTkVMX01BWCxcbiB9O1xuICNkZWZpbmUgU0VHNl9JUFRVTk5FTF9NQVggKF9fU0VHNl9JUFRVTk5FTF9NQVggLSAxKVxuZGlmZiAtLWdpdCBhL25ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYyBiL25ldC9pcHY2L3NlZzZfaXB0dW5uZWwuY1xuaW5kZXggNGM0NWMwYTc3ZDc1ZDAuLjYxYzZhMjdiZjIwMmRkIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jXG4rKysgYi9uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmNcbkBAIC01MSw2ICs1MSw3IEBAIHN0cnVjdCBzZWc2X2x3dCB7XG4gXHRzdHJ1Y3QgZHN0X2NhY2hlIGNhY2hlX2lucHV0O1xuIFx0c3RydWN0IGRzdF9jYWNoZSBjYWNoZV9vdXRwdXQ7XG4gXHRzdHJ1Y3QgaW42X2FkZHIgdHVuc3JjO1xuK1x0dTMyIHRhYmxlO1xuIFx0c3RydWN0IHNlZzZfaXB0dW5uZWxfZW5jYXAgdHVuaW5mb1tdO1xuIH07XG4gXG5AQCAtNjgsNiArNjksNyBAQCBzZWc2X2VuY2FwX2x3dHVubmVsKHN0cnVjdCBsd3R1bm5lbF9zdGF0ZSAqbHd0KVxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBzZWc2X2lwdHVubmVsX3BvbGljeVtTRUc2X0lQVFVOTkVMX01BWCArIDFdID0ge1xuIFx0W1NFRzZfSVBUVU5ORUxfU1JIXVx0PSB7IC50eXBlID0gTkxBX0JJTkFSWSB9LFxuIFx0W1NFRzZfSVBUVU5ORUxfU1JDXVx0PSBOTEFfUE9MSUNZX0VYQUNUX0xFTihzaXplb2Yoc3RydWN0IGluNl9hZGRyKSksXG4rXHRbU0VHNl9JUFRVTk5FTF9UQUJMRV1cdD0geyAudHlwZSA9IE5MQV9VMzIgfSxcbiB9O1xuIFxuIHN0YXRpYyBpbnQgbmxhX3B1dF9zcmgoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IGF0dHJ0eXBlLFxuQEAgLTQ3OSw2ICs0ODEsNzMgQEAgaW50IHNlZzZfZG9fc3JoX2lubGluZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaXB2Nl9zcl9oZHIgKm9zcmgpXG4gfVxuIEVYUE9SVF9TWU1CT0xfR1BMKHNlZzZfZG9fc3JoX2lubGluZSk7XG4gXG4rLyogbG9vayB1cCBhIHJvdXRlIGluIGEgc3BlY2lmaWMgRklCIHRhYmxlLlxuKyAqIFJldHVybnMgYSByZWZjb3VudGVkIGRzdCwgb3IgTlVMTCBpZiB0aGUgdGFibGUgZG9lcyBub3QgZXhpc3QuXG4rICovXG4rc3RhdGljIHN0cnVjdCBkc3RfZW50cnkgKnNlZzZfdGFibGVfbG9va3VwKHN0cnVjdCBuZXQgKm5ldCxcbitcdFx0XHRcdFx0ICAgc3RydWN0IHNrX2J1ZmYgKnNrYixcbitcdFx0XHRcdFx0ICAgc3RydWN0IGZsb3dpNiAqZmw2LCB1MzIgdGJsX2lkKVxuK3tcbitcdHN0cnVjdCBmaWI2X3RhYmxlICp0YWJsZTtcbitcdHN0cnVjdCBydDZfaW5mbyAqcnQ7XG4rXG4rXHR0YWJsZSA9IGZpYjZfZ2V0X3RhYmxlKG5ldCwgdGJsX2lkKTtcbitcdGlmICghdGFibGUpXG4rXHRcdHJldHVybiBOVUxMO1xuK1xuK1x0cnQgPSBpcDZfcG9sX3JvdXRlKG5ldCwgdGFibGUsIDAsIGZsNiwgc2tiLCBSVDZfTE9PS1VQX0ZfSEFTX1NBRERSKTtcbitcdHJldHVybiBcdTAwMjZydC1cdTAwM2Vkc3Q7XG4rfVxuK1xuK3N0YXRpYyB2b2lkIHNlZzZfaW5pdF9mbG93aTYoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlwdjZoZHIgKmhkcixcbitcdFx0XHQgICAgIHN0cnVjdCBmbG93aTYgKmZsNilcbit7XG4rXHRtZW1zZXQoZmw2LCAwLCBzaXplb2YoKmZsNikpO1xuK1xuK1x0Zmw2LVx1MDAzZWRhZGRyID0gaGRyLVx1MDAzZWRhZGRyO1xuK1x0Zmw2LVx1MDAzZXNhZGRyID0gaGRyLVx1MDAzZXNhZGRyO1xuK1x0Zmw2LVx1MDAzZWZsb3dsYWJlbCA9IGlwNl9mbG93aW5mbyhoZHIpO1xuK1x0Zmw2LVx1MDAzZWZsb3dpNl9tYXJrID0gc2tiLVx1MDAzZW1hcms7XG4rXHRmbDYtXHUwMDNlZmxvd2k2X3Byb3RvID0gaGRyLVx1MDAzZW5leHRoZHI7XG4rfVxuK1xuKy8qIGxvb2sgdXAgdGhlIHJvdXRlIGZvciB0aGUgZmlyc3QgU0lEIG9uIHRoZSBpbnB1dCBwYXRoIGFuZCBzZXQgaXQgb24gdGhlIHNrYi5cbisgKiBSZXR1cm5zIHRoZSByZWZjb3VudGVkIGRzdCwgb3IgTlVMTCBpZiBhIHJlZmVyZW5jZSBjb3VsZCBub3QgYmUgc2FmZWx5IHRha2VuLlxuKyAqL1xuK3N0YXRpYyBzdHJ1Y3QgZHN0X2VudHJ5ICpzZWc2X2lucHV0X3JvdXRlKHN0cnVjdCBuZXQgKm5ldCxcbitcdFx0XHRcdFx0ICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuK1x0XHRcdFx0XHQgIHN0cnVjdCBzZWc2X2x3dCAqc2x3dClcbit7XG4rXHR1MzIgdGFibGUgPSBzbHd0LVx1MDAzZXRhYmxlO1xuK1xuK1x0aWYgKHRhYmxlKSB7XG4rXHRcdHN0cnVjdCBpcHY2aGRyICpoZHIgPSBpcHY2X2hkcihza2IpO1xuK1x0XHRzdHJ1Y3QgZHN0X2VudHJ5ICpkc3Q7XG4rXHRcdHN0cnVjdCBmbG93aTYgZmw2O1xuK1xuK1x0XHRzZWc2X2luaXRfZmxvd2k2KHNrYiwgaGRyLCBcdTAwMjZmbDYpO1xuK1x0XHRmbDYuZmxvd2k2X2lpZiA9IHNrYi1cdTAwM2VkZXYtXHUwMDNlaWZpbmRleDtcbitcbitcdFx0ZHN0ID0gc2VnNl90YWJsZV9sb29rdXAobmV0LCBza2IsIFx1MDAyNmZsNiwgdGFibGUpO1xuK1x0XHRpZiAoIWRzdCkge1xuK1x0XHRcdGRzdCA9IFx1MDAyNm5ldC1cdTAwM2VpcHY2LmlwNl9ibGtfaG9sZV9lbnRyeS1cdTAwM2Vkc3Q7XG4rXHRcdFx0ZHN0X2hvbGQoZHN0KTtcbitcdFx0fVxuK1xuK1x0XHRza2JfZHN0X2Ryb3Aoc2tiKTtcbitcdFx0c2tiX2RzdF9zZXQoc2tiLCBkc3QpO1xuK1x0fSBlbHNlIHtcbitcdFx0aXA2X3JvdXRlX2lucHV0KHNrYik7XG4rXG4rXHRcdC8qIGlwNl9yb3V0ZV9pbnB1dCgpIHNldHMgYSBOT1JFRiBkc3Q7IGZvcmNlIGEgcmVmY291bnQgb24gaXRcbitcdFx0ICogYmVmb3JlIGNhY2hpbmcgb3IgZnVydGhlciB1c2UuXG4rXHRcdCAqL1xuK1x0XHRza2JfZHN0X2ZvcmNlKHNrYik7XG4rXHR9XG4rXG4rXHRyZXR1cm4gc2tiX2RzdChza2IpO1xuK31cbitcbiBzdGF0aWMgaW50IHNlZzZfaW5wdXRfZmluaXNoKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrLFxuIFx0XHRcdCAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiB7XG5AQCAtNTEzLDE1ICs1ODIsOSBAQCBzdGF0aWMgaW50IHNlZzZfaW5wdXRfY29yZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpzayxcbiBcdFx0Z290byBkcm9wO1xuIFx0fVxuIFxuLVx0aWYgKCFkc3QpIHtcbi1cdFx0aXA2X3JvdXRlX2lucHV0KHNrYik7XG4tXG4tXHRcdC8qIGlwNl9yb3V0ZV9pbnB1dCgpIHNldHMgYSBOT1JFRiBkc3Q7IGZvcmNlIGEgcmVmY291bnQgb24gaXRcbi1cdFx0ICogYmVmb3JlIGNhY2hpbmcgb3IgZnVydGhlciB1c2UuXG4tXHRcdCAqL1xuLVx0XHRza2JfZHN0X2ZvcmNlKHNrYik7XG4tXHRcdGRzdCA9IHNrYl9kc3Qoc2tiKTtcbi1cdFx0aWYgKHVubGlrZWx5KCFkc3QpKSB7XG4rXHRpZiAodW5saWtlbHkoIWRzdCkpIHtcbitcdFx0ZHN0ID0gc2VnNl9pbnB1dF9yb3V0ZShuZXQsIHNrYiwgc2x3dCk7XG4rXHRcdGlmICghZHN0KSB7XG4gXHRcdFx0ZXJyID0gLUVORVRVTlJFQUNIO1xuIFx0XHRcdGdvdG8gZHJvcDtcbiBcdFx0fVxuQEAgLTU3OCw2ICs2NDEsMjkgQEAgc3RhdGljIGludCBzZWc2X2lucHV0KHN0cnVjdCBza19idWZmICpza2IpXG4gXHRyZXR1cm4gc2VnNl9pbnB1dF9jb3JlKGRldl9uZXQoc2tiLVx1MDAzZWRldiksIE5VTEwsIHNrYik7XG4gfVxuIFxuKy8qIGxvb2sgdXAgdGhlIHJvdXRlIGZvciB0aGUgZmlyc3QgU0lEIG9uIHRoZSBvdXRwdXQgcGF0aC4gQWx3YXlzIHJldHVybnMgYVxuKyAqIHJlZmNvdW50ZWQgZHN0LlxuKyAqL1xuK3N0YXRpYyBzdHJ1Y3QgZHN0X2VudHJ5ICpzZWc2X291dHB1dF9kc3RfbG9va3VwKHN0cnVjdCBuZXQgKm5ldCxcbitcdFx0XHRcdFx0XHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuK1x0XHRcdFx0XHRcdHN0cnVjdCBmbG93aTYgKmZsNixcbitcdFx0XHRcdFx0XHRzdHJ1Y3Qgc2VnNl9sd3QgKnNsd3QpXG4re1xuK1x0c3RydWN0IGRzdF9lbnRyeSAqZHN0O1xuK1xuK1x0aWYgKHNsd3QtXHUwMDNldGFibGUpIHtcbitcdFx0ZHN0ID0gc2VnNl90YWJsZV9sb29rdXAobmV0LCBza2IsIGZsNiwgc2x3dC1cdTAwM2V0YWJsZSk7XG4rXHRcdGlmICghZHN0KSB7XG4rXHRcdFx0ZHN0ID0gXHUwMDI2bmV0LVx1MDAzZWlwdjYuaXA2X2Jsa19ob2xlX2VudHJ5LVx1MDAzZWRzdDtcbitcdFx0XHRkc3RfaG9sZChkc3QpO1xuK1x0XHR9XG4rXHR9IGVsc2Uge1xuK1x0XHRkc3QgPSBpcDZfcm91dGVfb3V0cHV0KG5ldCwgTlVMTCwgZmw2KTtcbitcdH1cbitcbitcdHJldHVybiBkc3Q7XG4rfVxuK1xuIHN0YXRpYyBpbnQgc2VnNl9vdXRwdXRfY29yZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpzayxcbiBcdFx0XHQgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiB7XG5AQCAtNjAwLDE0ICs2ODYsOSBAQCBzdGF0aWMgaW50IHNlZzZfb3V0cHV0X2NvcmUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29jayAqc2ssXG4gXHRcdHN0cnVjdCBpcHY2aGRyICpoZHIgPSBpcHY2X2hkcihza2IpO1xuIFx0XHRzdHJ1Y3QgZmxvd2k2IGZsNjtcbiBcbi1cdFx0bWVtc2V0KFx1MDAyNmZsNiwgMCwgc2l6ZW9mKGZsNikpO1xuLVx0XHRmbDYuZGFkZHIgPSBoZHItXHUwMDNlZGFkZHI7XG4tXHRcdGZsNi5zYWRkciA9IGhkci1cdTAwM2VzYWRkcjtcbi1cdFx0Zmw2LmZsb3dsYWJlbCA9IGlwNl9mbG93aW5mbyhoZHIpO1xuLVx0XHRmbDYuZmxvd2k2X21hcmsgPSBza2ItXHUwMDNlbWFyaztcbi1cdFx0Zmw2LmZsb3dpNl9wcm90byA9IGhkci1cdTAwM2VuZXh0aGRyO1xuK1x0XHRzZWc2X2luaXRfZmxvd2k2KHNrYiwgaGRyLCBcdTAwMjZmbDYpO1xuIFxuLVx0XHRkc3QgPSBpcDZfcm91dGVfb3V0cHV0KG5ldCwgTlVMTCwgXHUwMDI2Zmw2KTtcbitcdFx0ZHN0ID0gc2VnNl9vdXRwdXRfZHN0X2xvb2t1cChuZXQsIHNrYiwgXHUwMDI2Zmw2LCBzbHd0KTtcbiBcdFx0aWYgKGRzdC1cdTAwM2VlcnJvcikge1xuIFx0XHRcdGVyciA9IGRzdC1cdTAwM2VlcnJvcjtcbiBcdFx0XHRnb3RvIGRyb3A7XG5AQCAtNzUyLDYgKzgzMywxNSBAQCBzdGF0aWMgaW50IHNlZzZfYnVpbGRfc3RhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmxhdHRyICpubGEsXG4gXHRcdH1cbiBcdH1cbiBcbitcdGlmICh0YltTRUc2X0lQVFVOTkVMX1RBQkxFXSkge1xuK1x0XHRzbHd0LVx1MDAzZXRhYmxlID0gbmxhX2dldF91MzIodGJbU0VHNl9JUFRVTk5FTF9UQUJMRV0pO1xuK1x0XHRpZiAoIXNsd3QtXHUwMDNldGFibGUpIHtcbitcdFx0XHROTF9TRVRfRVJSX01TRyhleHRhY2ssIFwiaW52YWxpZCBsb29rdXAgdGFibGVcIik7XG4rXHRcdFx0ZXJyID0gLUVJTlZBTDtcbitcdFx0XHRnb3RvIGVycl9kZXN0cm95X291dHB1dDtcbitcdFx0fVxuK1x0fVxuK1xuIFx0bmV3dHMtXHUwMDNldHlwZSA9IExXVFVOTkVMX0VOQ0FQX1NFRzY7XG4gXHRuZXd0cy1cdTAwM2VmbGFncyB8PSBMV1RVTk5FTF9TVEFURV9JTlBVVF9SRURJUkVDVDtcbiBcbkBAIC03OTUsNiArODg1LDEwIEBAIHN0YXRpYyBpbnQgc2VnNl9maWxsX2VuY2FwX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdCAgICBubGFfcHV0X2luNl9hZGRyKHNrYiwgU0VHNl9JUFRVTk5FTF9TUkMsIFx1MDAyNnNsd3QtXHUwMDNldHVuc3JjKSlcbiBcdFx0cmV0dXJuIC1FTVNHU0laRTtcbiBcbitcdGlmIChzbHd0LVx1MDAzZXRhYmxlIFx1MDAyNlx1MDAyNlxuK1x0ICAgIG5sYV9wdXRfdTMyKHNrYiwgU0VHNl9JUFRVTk5FTF9UQUJMRSwgc2x3dC1cdTAwM2V0YWJsZSkpXG4rXHRcdHJldHVybiAtRU1TR1NJWkU7XG4rXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG5AQCAtODA5LDYgKzkwMyw5IEBAIHN0YXRpYyBpbnQgc2VnNl9lbmNhcF9ubHNpemUoc3RydWN0IGx3dHVubmVsX3N0YXRlICpsd3RzdGF0ZSlcbiBcdGlmICghaXB2Nl9hZGRyX2FueShcdTAwMjZzbHd0LVx1MDAzZXR1bnNyYykpXG4gXHRcdG5sc2l6ZSArPSBubGFfdG90YWxfc2l6ZShzaXplb2Yoc2x3dC1cdTAwM2V0dW5zcmMpKTtcbiBcbitcdGlmIChzbHd0LVx1MDAzZXRhYmxlKVxuK1x0XHRubHNpemUgKz0gbmxhX3RvdGFsX3NpemUoc2l6ZW9mKHUzMikpO1xuK1xuIFx0cmV0dXJuIG5sc2l6ZTtcbiB9XG4gXG5AQCAtODI2LDYgKzkyMyw5IEBAIHN0YXRpYyBpbnQgc2VnNl9lbmNhcF9jbXAoc3RydWN0IGx3dHVubmVsX3N0YXRlICphLCBzdHJ1Y3QgbHd0dW5uZWxfc3RhdGUgKmIpXG4gXHRpZiAoIWlwdjZfYWRkcl9lcXVhbChcdTAwMjZhX3Nsd3QtXHUwMDNldHVuc3JjLCBcdTAwMjZiX3Nsd3QtXHUwMDNldHVuc3JjKSlcbiBcdFx0cmV0dXJuIDE7XG4gXG4rXHRpZiAoYV9zbHd0LVx1MDAzZXRhYmxlICE9IGJfc2x3dC1cdTAwM2V0YWJsZSlcbitcdFx0cmV0dXJuIDE7XG4rXG4gXHRyZXR1cm4gbWVtY21wKGFfaGRyLCBiX2hkciwgbGVuKTtcbiB9XG4gXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L01ha2VmaWxlIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L01ha2VmaWxlXG5pbmRleCA3MDhkOTYwYWUwN2Q1Yi4uNWRmMGM5NGFiMDYwMTggMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvTWFrZWZpbGVcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9NYWtlZmlsZVxuQEAgLTg1LDYgKzg1LDcgQEAgVEVTVF9QUk9HUyA6PSBcXFxuIFx0cnh0aW1lc3RhbXAuc2ggXFxcbiBcdHNjdHBfdnJmLnNoIFxcXG4gXHRza2ZfbmV0X29mZi5zaCBcXFxuK1x0c3J2Nl9lbmNhcF9sb29rdXBfbDN2cG5fdGVzdC5zaCBcXFxuIFx0c3J2Nl9lbmRfZHQ0Nl9sM3Zwbl90ZXN0LnNoIFxcXG4gXHRzcnY2X2VuZF9kdDRfbDN2cG5fdGVzdC5zaCBcXFxuIFx0c3J2Nl9lbmRfZHQ2X2wzdnBuX3Rlc3Quc2ggXFxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvc3J2Nl9lbmNhcF9sb29rdXBfbDN2cG5fdGVzdC5zaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9zcnY2X2VuY2FwX2xvb2t1cF9sM3Zwbl90ZXN0LnNoXG5uZXcgZmlsZSBtb2RlIDEwMDc1NVxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLmQ2MjQ5MzAzYjdlYWExXG4tLS0gL2Rldi9udWxsXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvc3J2Nl9lbmNhcF9sb29rdXBfbDN2cG5fdGVzdC5zaFxuQEAgLTAsMCArMSwxMDI3IEBAXG4rIyEvYmluL2Jhc2hcbisjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4rI1xuKyMgYXV0aG9yOiBBbmRyZWEgTWF5ZXIgXHUwMDNjYW5kcmVhLm1heWVyQHVuaXJvbWEyLml0XHUwMDNlXG4rXG4rIyBUaGlzIHRlc3QgZXZhbHVhdGVzIHRoZSBTUnY2IGVuY2FwIFwibG9va3VwXCIgYXR0cmlidXRlLiBBZnRlciBlbmNhcHN1bGF0aW9uXG4rIyB0aGUgcm91dGVyIGxvb2tzIHVwIHRoZSByb3V0ZSBmb3IgdGhlIGZpcnN0IFNJRCwgdGhhdCBpcyB0aGUgb3V0ZXIgSVB2NlxuKyMgZGVzdGluYXRpb24gb2YgdGhlIGVuY2Fwc3VsYXRlZCBwYWNrZXQuIFRoZSBhdHRyaWJ1dGUgc2VsZWN0cyB0aGUgRklCIHRhYmxlXG4rIyB1c2VkIGZvciB0aGlzIHBvc3QtZW5jYXAgU0lEIHJvdXRlIGxvb2t1cC5cbisjXG4rIyBUd28gcm91dGVycyAocnQtMSwgcnQtMikgcHJvdmlkZSBMMyBWUE4gc2VydmljZXMgb3ZlciBhbiBJUHY2IHVuZGVybGF5XG4rIyAoZmQwMDo6LzY0KS4gRWFjaCByb3V0ZXIgdXNlcyBhIHNlcGFyYXRlIFZSRiBwZXIgdGVuYW50LCB3aXRoIGRlZmF1bHRcbisjIGJsYWNraG9sZSByb3V0ZXMgKElQdjQgYW5kIElQdjYpIHRvIHByZXZlbnQgdHJhZmZpYyBmcm9tIGxlYWtpbmcgb3V0IG9mXG4rIyB0aGUgVlJGLiBUZW5hbnQgdHJhZmZpYyBpcyBlbmNhcHN1bGF0ZWQsIHRoZW4gZGVjYXBzdWxhdGVkIHdpdGggYW5cbisjIEVuZC5EVDQ2LiBFYWNoIHJvdXRlciBwcm94aWVzIGJvdGggTkRQIGFuZCBBUlAuXG4rI1xuKyMgVGhlIHJvdXRlcyB0aGF0IG1hdGNoIHRoZSBmaXJzdCBTSURzIGFyZSBpbnN0YWxsZWQgaW4gYSBkZWRpY2F0ZWQgdW5kZXJsYXlcbisjIHRhYmxlICg1MDApIHJhdGhlciB0aGFuIHRoZSBtYWluIHRhYmxlICgyNTQpLiBUaGUgZW5jYXAgcm91dGVzIHVzZVxuKyMgXCJsb29rdXAgNTAwXCIgdG8gc2VsZWN0IHRoaXMgdGFibGUgZm9yIHRoZSBwb3N0LWVuY2FwIFNJRCByb3V0ZSBsb29rdXAuXG4rI1xuKyMgV2l0aG91dCB0aGUgXCJsb29rdXBcIiBhdHRyaWJ1dGUsIHRoZSByb3V0ZSBmb3IgdGhlIGZpcnN0IFNJRCBjYW5ub3QgYmUgZm91bmQ6XG4rIyAgLSBvbiB0aGUgaW5wdXQgcGF0aCAoZm9yd2FyZGVkIHRyYWZmaWMpLCB0aGUgbG9va3VwIHN0YXlzIGluIHRoZSBWUkZcbisjICAgIGFuZCBoaXRzIHRoZSBibGFja2hvbGU7XG4rIyAgLSBvbiB0aGUgb3V0cHV0IHBhdGggKGxvY2FsbHkgb3JpZ2luYXRlZCB0cmFmZmljKSwgdGhlIGxvb2t1cCBmYWxsc1xuKyMgICAgdGhyb3VnaCB0byB0aGUgbWFpbiB0YWJsZSwgd2l0aCBubyByb3V0ZSB0byB0aGUgZmlyc3QgU0lELlxuKyNcbisjXG4rIyBMZWdlbmQgKHNwZWNpZmljIHBlci10ZW5hbnQgYWRkcmVzc2VzIGFyZSBpbiB0aGUgaW5zdGFudGlhdGlvbiB0YWJsZXMgYmVsb3cpOlxuKyMgICBYICAgICAgICAgID0gdGVuYW50IGlkIGFuZCBWUkYgdGFibGUgaWQ7IHR3byB0ZW5hbnRzOiAxMDAgYW5kIDIwMFxuKyMgICAgICAgICAgICAgICAgKFwidFhcIiBtZWFucyB0ZW5hbnQgWCwgZS5nLiB0MTAwLCB0MjAwKVxuKyMgICBhLCBiICAgICAgID0gdGhlIHR3byBob3N0IGlkcyBvZiB0aGUgdGVuYW50XG4rIyAgIEhBLCBIQiAgICAgPSBhZGRyZXNzZXMgb2YgaG9zdCBhLCBob3N0IGJcbisjICAgUkxPMSwgUkxPMiA9IHJsby1YIHJvdXRlciBsb29wYmFjayBhZGRyZXNzIG9uIHJ0LTEsIHJ0LTIgKHRlbmFudCBnYXRld2F5XG4rIyAgICAgICAgICAgICAgICBmb3IgdGhlIG91dHB1dCBwYXRoLCBkdWFsLXN0YWNrKVxuKyMgICB2cmYtWCAgICAgID0gcGVyLXRlbmFudCBWUkYgb24gZWFjaCByb3V0ZXIgKHRhYmxlIFgpXG4rI1xuKyMgQ29uc3RhbnRzIChzYW1lIGZvciBldmVyeSB0ZW5hbnQpOlxuKyMgICB1bmRlcmxheSAgID0gdGFibGUgNTAwOyBwb3N0LWVuY2FwIFNJRCByb3V0ZSBsb29rdXAgKHZpYSBcImxvb2t1cCA1MDBcIilcbisjICAgbG9jYWxzaWQgICA9IHRhYmxlIDkwOyBob2xkcyB0aGUgZGVjYXAgU0lEcyAoRW5kLkRUNDYpXG4rIyAgIGZkMDA6Oi82NCAgPSB1bmRlcmxheSBsaW5rIGJldHdlZW4gcnQtMSBhbmQgcnQtMlxuKyMgICB2ZXRoLXRYICAgID0gY2FmZTo6MjU0LzEwLjAuMC4yNTQgKHRlbmFudCBnYXRld2F5IG9uIHZldGgsIGJvdGggcm91dGVycylcbisjXG4rI1xuKyMgKy0tLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLStcbisjIHwgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICB8XG4rIyB8ICAgaHMtdFgtYSBuZXRucyAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICBocy10WC1iIG5ldG5zICAgfFxuKyMgfCAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHxcbisjIHwgICstLS0tLS0tLS0tLS0tKyAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgKy0tLS0tLS0tLS0tLS0rICB8XG4rIyB8ICB8ICAgIHZldGgwICAgIHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHwgICAgdmV0aDAgICAgfCAgfFxuKyMgfCAgfCAgICAgSEEgICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICB8ICAgICBIQiAgICAgIHwgIHxcbisjIHwgICstLS0tLS0tLS0tLS0tKyAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgKy0tLS0tLS0tLS0tLS0rICB8XG4rIyB8ICAgICAgICAuICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAuICAgICAgICAgfFxuKyMgKy0tLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLStcbisjICAgICAgICAgIC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5cbisjICAgICAgICAgIC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5cbisjICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4rIyB8ICAgICAgICAuICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAuICAgICAgICAgfFxuKyMgfCArLS0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgICAgfCAgIHwgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0rIHxcbisjIHwgfCAgIHZldGgtdFggICAgIHwgICArLS0tLS0tLS0tLSsgIHwgICB8ICArLS0tLS0tLS0tLSsgICB8ICAgdmV0aC10WCAgICAgfCB8XG4rIyB8IHwgIDo6MjU0Ly4yNTQgICB8ICAgfCBsb2NhbHNpZCB8ICB8ICAgfCAgfCBsb2NhbHNpZCB8ICAgfCAgOjoyNTQvLjI1NCAgIHwgfFxuKyMgfCArLS0tLS0tLSstLS0tLS0tKyAgICstLS0tLS0tLS0tKyAgfCAgIHwgICstLS0tLS0tLS0tKyAgICstLS0tLS0tKy0tLS0tLS0rIHxcbisjIHwgICAgICAgICB8ICAgICAgICAgICArLS0tLS0tLS0tLSsgIHwgICB8ICArLS0tLS0tLS0tLSsgICAgICAgICAgIHwgICAgICAgICB8XG4rIyB8ICAgICstLS0tKy0tLS0rICAgICAgfCB1bmRlcmxheSB8ICB8ICAgfCAgfCB1bmRlcmxheSB8ICAgICAgKy0tLS0rLS0tLSsgICAgfFxuKyMgfCAgICB8IHZyZi1YICAgfCAgICAgICstLS0tLS0tLS0tKyAgfCAgIHwgICstLS0tLS0tLS0tKyAgICAgIHwgdnJmLVggICB8ICAgIHxcbisjIHwgICAgKy0tLS0rLS0tLSsgICAgICAgICAgICAgICAgICAgIHwgICB8ICAgICAgICAgICAgICAgICAgICArLS0tLSstLS0tKyAgICB8XG4rIyB8ICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgfCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKyMgfCAgICstLS0tLSstLS0tKyAgICArLS0tLS0tLS0tLS0tKyAgfCAgIHwgICstLS0tLS0tLS0tLS0rICAgICstLS0tKy0tLS0tKyAgIHxcbisjIHwgICB8ICBybG8tWCAgIHwgICAgfCAgIHZldGgwICAgIHwgIHwgICB8ICB8ICAgdmV0aDAgICAgfCAgICB8ICBybG8tWCAgIHwgICB8XG4rIyB8ICAgfCAgIFJMTzEgICB8ICAgIHwgZmQwMDo6MS82NCB8Li58Li4ufC4ufCBmZDAwOjoyLzY0IHwgICAgfCAgIFJMTzIgICB8ICAgfFxuKyMgfCAgICstLS0tLS0tLS0tKyAgICArLS0tLS0tLS0tLS0tKyAgfCAgIHwgICstLS0tLS0tLS0tLS0rICAgICstLS0tLS0tLS0tKyAgIHxcbisjIHwgICAgICAgICAgICAgIHJ0LTEgbmV0bnMgICAgICAgICAgIHwgICB8ICAgICAgICAgIHJ0LTIgbmV0bnMgICAgICAgICAgICAgICB8XG4rIyArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuKyNcbisjXG4rIyBQZXItdGVuYW50IGluc3RhbnRpYXRpb246XG4rIyArLS0tLS0rLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLStcbisjIHwgIFggIHwgYSwgYiB8IEhBICAgICAgICAgICAgICAgIHwgSEIgICAgICAgICAgICAgICAgfFxuKyMgKy0tLS0tKy0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rXG4rIyB8IDEwMCB8IDEsIDIgfCBjYWZlOjoxLCAxMC4wLjAuMSB8IGNhZmU6OjIsIDEwLjAuMC4yIHxcbisjIHwgMjAwIHwgMywgNCB8IGNhZmU6OjMsIDEwLjAuMC4zIHwgY2FmZTo6NCwgMTAuMC4wLjQgfFxuKyMgKy0tLS0tKy0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rXG4rI1xuKyMgUm91dGVyIGxvb3BiYWNrIChybG8tWCkgYWRkcmVzc2VzLCBwZXIgdGVuYW50OlxuKyMgKy0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuKyMgfCAgWCAgfCBSTE8xIChydC0xKSAgICAgICAgICAgfCBSTE8yIChydC0yKSAgICAgICAgICAgfFxuKyMgKy0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuKyMgfCAxMDAgfCBjYWZlOjoxMDEsIDEwLjAuMC4xMDEgfCBjYWZlOjoxMDIsIDEwLjAuMC4xMDIgfFxuKyMgfCAyMDAgfCBjYWZlOjoyMDEsIDEwLjAuMC4yMDEgfCBjYWZlOjoyMDIsIDEwLjAuMC4yMDIgfFxuKyMgKy0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuKyNcbisjXG4rIyBOZXR3b3JrIGNvbmZpZ3VyYXRpb25cbisjID09PT09PT09PT09PT09PT09PT09PVxuKyNcbisjIHJ0LTE6IGxvY2Fsc2lkIHRhYmxlICh0YWJsZSA5MClcbisjICstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuKyMgfCB0ZW5hbnQgfCBTSUQgICAgICAgICAgICAgICAgfCBBY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4rIyArLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbisjIHwgIDEwMCAgIHwgZmMwMDoyOjE6MTAwOjowZDQ2IHwgYXBwbHkgU1J2NiBFbmQuRFQ0NiB2cmZ0YWJsZSAxMDAgfFxuKyMgfCAgMjAwICAgfCBmYzAwOjI6MToyMDA6OjBkNDYgfCBhcHBseSBTUnY2IEVuZC5EVDQ2IHZyZnRhYmxlIDIwMCB8XG4rIyArLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbisjXG4rIyBydC0xOiB1bmRlcmxheSB0YWJsZSAodGFibGUgNTAwKSAtIHBvc3QtZW5jYXAgU0lEIHJvdXRlIGxvb2t1cFxuKyMgKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4rIyB8IHRlbmFudCB8IFNJRCAgICAgICAgICAgICAgICB8IEFjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgIHxcbisjICstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuKyMgfCAgMTAwICAgfCBmYzAwOjE6MjoxMDA6OjBkNDYgfCBmb3J3YXJkIHZpYSBmZDAwOjoyIGRldiB2ZXRoMCB8XG4rIyB8ICAyMDAgICB8IGZjMDA6MToyOjIwMDo6MGQ0NiB8IGZvcndhcmQgdmlhIGZkMDA6OjIgZGV2IHZldGgwIHxcbisjICstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuKyNcbisjIHJ0LTE6IFZSRiB0YWJsZXMgKHBlciB0ZW5hbnQ6IHZyZi1YID0gdGFibGUgWClcbisjICstLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuKyMgfCB0ZW5hbnQgfCBkc3QgICAgICAgIHwgZW5jYXAgYWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4rIyArLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbisjIHwgMTAwICAgIHwgY2FmZTo6MiAgICB8IGVuY2FwIHNlZ3MgZmMwMDoxOjI6MTAwOjowZDQ2IGxvb2t1cCA1MDAgfFxuKyMgfCAgICAgICAgfCAxMC4wLjAuMiAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4rIyB8ICAgICAgICB8IGNhZmU6OjEwMiAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbisjIHwgICAgICAgIHwgMTAuMC4wLjEwMiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKyMgfCAyMDAgICAgfCBjYWZlOjo0ICAgIHwgZW5jYXAgc2VncyBmYzAwOjE6MjoyMDA6OjBkNDYgbG9va3VwIDUwMCB8XG4rIyB8ICAgICAgICB8IDEwLjAuMC40ICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbisjIHwgICAgICAgIHwgY2FmZTo6MjAyICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKyMgfCAgICAgICAgfCAxMC4wLjAuMjAyIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4rIyArLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbisjXG4rI1xuKyMgcnQtMjogbG9jYWxzaWQgdGFibGUgKHRhYmxlIDkwKVxuKyMgKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4rIyB8IHRlbmFudCB8IFNJRCAgICAgICAgICAgICAgICB8IEFjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbisjICstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuKyMgfCAgMTAwICAgfCBmYzAwOjE6MjoxMDA6OjBkNDYgfCBhcHBseSBTUnY2IEVuZC5EVDQ2IHZyZnRhYmxlIDEwMCB8XG4rIyB8ICAyMDAgICB8IGZjMDA6MToyOjIwMDo6MGQ0NiB8IGFwcGx5IFNSdjYgRW5kLkRUNDYgdnJmdGFibGUgMjAwIHxcbisjICstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuKyNcbisjIHJ0LTI6IHVuZGVybGF5IHRhYmxlICh0YWJsZSA1MDApIC0gcG9zdC1lbmNhcCBTSUQgcm91dGUgbG9va3VwXG4rIyArLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbisjIHwgdGVuYW50IHwgU0lEICAgICAgICAgICAgICAgIHwgQWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgfFxuKyMgKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4rIyB8ICAxMDAgICB8IGZjMDA6MjoxOjEwMDo6MGQ0NiB8IGZvcndhcmQgdmlhIGZkMDA6OjEgZGV2IHZldGgwIHxcbisjIHwgIDIwMCAgIHwgZmMwMDoyOjE6MjAwOjowZDQ2IHwgZm9yd2FyZCB2aWEgZmQwMDo6MSBkZXYgdmV0aDAgfFxuKyMgKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4rI1xuKyMgcnQtMjogVlJGIHRhYmxlcyAocGVyIHRlbmFudDogdnJmLVggPSB0YWJsZSBYKVxuKyMgKy0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4rIyB8IHRlbmFudCB8IGRzdCAgICAgICAgfCBlbmNhcCBhY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbisjICstLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuKyMgfCAxMDAgICAgfCBjYWZlOjoxICAgIHwgZW5jYXAgc2VncyBmYzAwOjI6MToxMDA6OjBkNDYgbG9va3VwIDUwMCB8XG4rIyB8ICAgICAgICB8IDEwLjAuMC4xICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbisjIHwgICAgICAgIHwgY2FmZTo6MTAxICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKyMgfCAgICAgICAgfCAxMC4wLjAuMTAxIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4rIyB8IDIwMCAgICB8IGNhZmU6OjMgICAgfCBlbmNhcCBzZWdzIGZjMDA6MjoxOjIwMDo6MGQ0NiBsb29rdXAgNTAwIHxcbisjIHwgICAgICAgIHwgMTAuMC4wLjMgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKyMgfCAgICAgICAgfCBjYWZlOjoyMDEgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4rIyB8ICAgICAgICB8IDEwLjAuMC4yMDEgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbisjICstLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuKyMgV2l0aGluIGEgdGVuYW50LCBhIHNpbmdsZSBTSUQgcmVhY2hlcyB0aGUgYWRqYWNlbnQgcm91dGVyIChpdHMgbG9vcGJhY2spXG4rIyBhbmQgdGhlIHJlbW90ZSBob3N0IGNvbm5lY3RlZCB0byBpdCwgaW4gYm90aCBJUHY0IGFuZCBJUHY2LlxuKyNcbisjIEZvciBib3RoIHJ0LTEgYW5kIHJ0LTIsIGVhY2ggVlJGIGFsc28gaGFzIHRoZSBjb25uZWN0ZWQgaG9zdCBwcmVmaXggKGNhZmU6Oi82NFxuKyMgb3IgMTAuMC4wLjAvMjQpIGFuZCBhIGRlZmF1bHQgYmxhY2tob2xlIChJUHY0IGFuZCBJUHY2KS5cbisjXG4rI1xuKyMgTG9jYWxseSBvcmlnaW5hdGVkIHRyYWZmaWMgKG91dHB1dCBwYXRoKVxuKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuKyNcbisjIFRoZSBjb25maWd1cmF0aW9uIGFib3ZlIGNvdmVycyBmb3J3YXJkZWQgdHJhZmZpYywgd2hlcmUgcGFja2V0cyBhcnJpdmUgZnJvbVxuKyMgYSBob3N0IGFuZCBhcmUgZW5jYXBzdWxhdGVkIGJ5IHRoZSByb3V0ZXIuIFRvIGFsc28gdGVzdCByb3V0ZXItb3JpZ2luYXRlZFxuKyMgdHJhZmZpYywgZWFjaCByb3V0ZXIgcGluZ3MgdGhlIG90aGVyIHJvdXRlcidzIGxvb3BiYWNrIGFkZHJlc3MgdGhyb3VnaFxuKyMgdGhlIFZQTi5cbisjXG4rIyBFeGFtcGxlICh0ZW5hbnQgMTAwKSwgcnQtMSBwaW5ncyBjYWZlOjoxMDIgKHJ0LTIncyBsb29wYmFjayk6XG4rIyAgIDEuIHJ0LTEgbG9va3MgdXAgY2FmZTo6MTAyIGluIHZyZi0xMDAgYW5kIGVuY2Fwc3VsYXRlcyBpdCAoU0lEXG4rIyAgICAgIGZjMDA6MToyOjEwMDo6MGQ0NiksIHRoZW4gXCJsb29rdXAgNTAwXCIgZmluZHMgdGhlIHJvdXRlIGZvciB0aGUgU0lEIGluIHRoZVxuKyMgICAgICB1bmRlcmxheSB0YWJsZSAobmV4dCBob3AgZmQwMDo6MikgYW5kIGZvcndhcmRzIGl0O1xuKyMgICAyLiBydC0yIGRlY2Fwc3VsYXRlcyBpdCAobG9jYWxzaWQsIEVuZC5EVDQ2KSBhbmQgZGVsaXZlcnMgaXQgbG9jYWxseVxuKyMgICAgICAoY2FmZTo6MTAyIGlzIG9uIHRoZSBybG8tMTAwIGludGVyZmFjZSk7XG4rIyAgIDMuIHJ0LTIgcmVwbGllcyB3aXRoIGRlc3RpbmF0aW9uIGNhZmU6OjEwMSAocnQtMSdzIGxvb3BiYWNrKS4gcnQtMiBsb29rcyB1cFxuKyMgICAgICBjYWZlOjoxMDEgaW4gdnJmLTEwMCBhbmQgZW5jYXBzdWxhdGVzIGl0IGJhY2sgdG8gcnQtMSAoYWdhaW4gdmlhIFwibG9va3VwXG4rIyAgICAgIDUwMFwiKS4gcnQtMSBkZWNhcHN1bGF0ZXMgaXQgYW5kIGRlbGl2ZXJzIGl0LlxuK1xuKyMgc2hlbGxjaGVjayBzb3VyY2U9bGliLnNoXG4rc291cmNlIGxpYi5zaFxuK1xuK3JlYWRvbmx5IExPQ0FMU0lEX1RBQkxFX0lEPTkwXG4rcmVhZG9ubHkgVU5ERVJMQVlfVEFCTEVfSUQ9NTAwXG4rcmVhZG9ubHkgSVB2Nl9SVF9ORVRXT1JLPWZkMDBcbityZWFkb25seSBJUHY2X0hTX05FVFdPUks9Y2FmZVxuK3JlYWRvbmx5IElQdjRfSFNfTkVUV09SSz0xMC4wLjBcbityZWFkb25seSBWUE5fTE9DQVRPUl9TRVJWSUNFPWZjMDBcbityZWFkb25seSBEVDQ2X0ZVTkM9MGQ0NlxuK3JlYWRvbmx5IERVTU1ZX0RFVk5BTUU9ZHVtMFxuK3JlYWRvbmx5IElQdjZfVEVTVFNfQUREUj0yMDAxOmRiODo6MVxuK3JlYWRvbmx5IFRFU1RTX1RBQkxFX0lEPTU0MzIxXG4rUElOR19USU1FT1VUX1NFQz00XG4rXG4rU0VUVVBfRVJSPTFcbitcbityZXQ9JHtrc2Z0X3NraXB9XG4rbnN1Y2Nlc3M9MFxuK25mYWlsPTBcbitcbitQQVVTRV9PTl9GQUlMPSR7UEFVU0VfT05fRkFJTDo9bm99XG4rXG4rbG9nX3Rlc3QoKVxuK3tcbitcdGxvY2FsIHJjPVwiJDFcIlxuK1x0bG9jYWwgZXhwZWN0ZWQ9XCIkMlwiXG4rXHRsb2NhbCBtc2c9XCIkM1wiXG4rXG4rXHRpZiBbIFwiJHtyY31cIiAtZXEgXCIke2V4cGVjdGVkfVwiIF07IHRoZW5cbitcdFx0bnN1Y2Nlc3M9JCgobnN1Y2Nlc3MrMSkpXG4rXHRcdHByaW50ZiBcIlxcbiAgICBURVNUOiAlLTYwcyAgWyBPSyBdXFxuXCIgXCIke21zZ31cIlxuK1x0ZWxzZVxuK1x0XHRyZXQ9MVxuK1x0XHRuZmFpbD0kKChuZmFpbCsxKSlcbitcdFx0cHJpbnRmIFwiXFxuICAgIFRFU1Q6ICUtNjBzICBbRkFJTF1cXG5cIiBcIiR7bXNnfVwiXG4rXHRcdGlmIFsgXCIke1BBVVNFX09OX0ZBSUx9XCIgPSBcInllc1wiIF07IHRoZW5cbitcdFx0XHRlY2hvXG4rXHRcdFx0ZWNobyBcImhpdCBlbnRlciB0byBjb250aW51ZSwgJ3EnIHRvIHF1aXRcIlxuK1x0XHRcdHJlYWQgLXIgYVxuK1x0XHRcdFsgXCIkYVwiID0gXCJxXCIgXSBcdTAwMjZcdTAwMjYgZXhpdCAxXG4rXHRcdGZpXG4rXHRmaVxuK31cbitcbitwcmludF9sb2dfdGVzdF9yZXN1bHRzKClcbit7XG4rXHRwcmludGYgXCJcXG5UZXN0cyBwYXNzZWQ6ICUzZFxcblwiIFwiJHtuc3VjY2Vzc31cIlxuK1x0cHJpbnRmIFwiVGVzdHMgZmFpbGVkOiAlM2RcXG5cIiAgIFwiJHtuZmFpbH1cIlxuK1xuK1x0IyB3aGVuIGEgdGVzdCBmYWlscywgdGhlIHZhbHVlIG9mICdyZXQnIGlzIHNldCB0byAxIChlcnJvciBjb2RlKS5cbitcdCMgQ29udmVyc2VseSwgd2hlbiBhbGwgdGVzdHMgYXJlIHBhc3NlZCBzdWNjZXNzZnVsbHksIHRoZSAncmV0JyB2YWx1ZVxuK1x0IyBpcyBzZXQgdG8gMCAoc3VjY2VzcyBjb2RlKS5cbitcdGlmIFsgXCIke3JldH1cIiAtbmUgMSBdOyB0aGVuXG4rXHRcdHJldD0wXG4rXHRmaVxuK31cbitcbitsb2dfc2VjdGlvbigpXG4re1xuK1x0ZWNob1xuK1x0ZWNobyBcIiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjXCJcbitcdGVjaG8gXCJURVNUIFNFQ1RJT046ICQqXCJcbitcdGVjaG8gXCIjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI1wiXG4rfVxuK1xuK2dldF9ydG5hbWUoKVxuK3tcbitcdGxvY2FsIHJ0aWQ9XCIkMVwiXG4rXG4rXHRlY2hvIFwicnRfJHtydGlkfVwiXG4rfVxuK1xuK2dldF9ydF9uc25hbWUoKVxuK3tcbitcdGxvY2FsIHJ0aWQ9XCIkMVwiXG4rXHRsb2NhbCB2YXJuYW1lXG4rXG4rXHR2YXJuYW1lPVwiJChnZXRfcnRuYW1lIFwiJHtydGlkfVwiKVwiXG4rXHRlY2hvIFwiJHshdmFybmFtZX1cIlxuK31cbitcbitnZXRfaHNuYW1lKClcbit7XG4rXHRsb2NhbCB0aWQ9XCIkMVwiXG4rXHRsb2NhbCBoc2lkPVwiJDJcIlxuK1xuK1x0ZWNobyBcImhzX3Qke3RpZH1fJHtoc2lkfVwiXG4rfVxuK1xuK2dldF9oc19uc25hbWUoKVxuK3tcbitcdGxvY2FsIHRpZD1cIiQxXCJcbitcdGxvY2FsIGhzaWQ9XCIkMlwiXG4rXHRsb2NhbCB2YXJuYW1lXG4rXG4rXHR2YXJuYW1lPVwiJChnZXRfaHNuYW1lIFwiJHt0aWR9XCIgXCIke2hzaWR9XCIpXCJcbitcdGVjaG8gXCIkeyF2YXJuYW1lfVwiXG4rfVxuK1xuK2NsZWFudXAoKVxuK3tcbitcdGlwIGxpbmsgZGVsIHZldGgtcnQtMSAyXHUwMDNlL2Rldi9udWxsIHx8IHRydWVcbitcdGlwIGxpbmsgZGVsIHZldGgtcnQtMiAyXHUwMDNlL2Rldi9udWxsIHx8IHRydWVcbitcbitcdGNsZWFudXBfYWxsX25zXG4rXG4rXHQjIGNoZWNrIHdoZXRoZXIgdGhlIHNldHVwIHBoYXNlIHdhcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5IG9yIG5vdC4gSW5cbitcdCMgY2FzZSBvZiBhbiBlcnJvciBkdXJpbmcgdGhlIHNldHVwIHBoYXNlIG9mIHRoZSB0ZXN0aW5nIGVudmlyb25tZW50LFxuK1x0IyB0aGUgc2VsZnRlc3QgaXMgY29uc2lkZXJlZCBhcyBcInNraXBwZWRcIi5cbitcdGlmIFsgXCIke1NFVFVQX0VSUn1cIiAtbmUgMCBdOyB0aGVuXG4rXHRcdGVjaG8gXCJTS0lQOiBTZXR0aW5nIHVwIHRoZSB0ZXN0aW5nIGVudmlyb25tZW50IGZhaWxlZFwiXG4rXHRcdGV4aXQgXCIke2tzZnRfc2tpcH1cIlxuK1x0ZmlcbitcbitcdGV4aXQgXCIke3JldH1cIlxuK31cbitcbisjIEhvc3QgaWQgb2YgdGhlIHJvdXRlciBsb29wYmFjayAocmxvKSBmb3IgYSAocm91dGVyLCB0ZW5hbnQpIHBhaXIuXG4rIyBFLmcuIHJ0LTEvdGVuYW50IDEwMCAtXHUwMDNlIDEwMSwgcnQtMi90ZW5hbnQgMjAwIC1cdTAwM2UgMjAyLlxuK2dldF9ybG9faG9zdGlkKClcbit7XG4rXHRsb2NhbCBydGlkPVwiJDFcIlxuK1x0bG9jYWwgdGlkPVwiJDJcIlxuK1xuK1x0ZWNobyBcIiQoKHRpZCArIHJ0aWQpKVwiXG4rfVxuK1xuK2J1aWxkX3Zwbl9zaWQoKVxuK3tcbitcdGxvY2FsIHJ0c3JjPVwiJDFcIlxuK1x0bG9jYWwgcnRkc3Q9XCIkMlwiXG4rXHRsb2NhbCB0aWQ9XCIkM1wiXG4rXG4rXHRlY2hvIFwiJHtWUE5fTE9DQVRPUl9TRVJWSUNFfToke3J0c3JjfToke3J0ZHN0fToke3RpZH06OiR7RFQ0Nl9GVU5DfVwiXG4rfVxuK1xuKyMgSW5zdGFsbCBhIGR1YWwtc3RhY2sgKElQdjYgYW5kIElQdjQpIGVuY2FwIHJvdXRlIGluIGEgVlJGIG9uIHRoZSBnaXZlblxuKyMgcm91dGVyLlxuKyMgYXJnczpcbisjICAkMSAtIHJvdXRlciBpZFxuKyMgICQyIC0gaG9zdCBwYXJ0IG9mIHRoZSBJUHY2IGRlc3RpbmF0aW9uXG4rIyAgJDMgLSBob3N0IHBhcnQgb2YgdGhlIElQdjQgZGVzdGluYXRpb25cbisjICAkNCAtIFNSdjYgU0lEIHVzZWQgYXMgdGhlIGVuY2FwIGRlc3RpbmF0aW9uXG4rIyAgJDUgLSB0ZW5hbnQgaWRcbisjICAkNiAtIGlmIFwidHJ1ZVwiLCBhZGQgdGhlIFwibG9va3VwXCIgYXR0cmlidXRlIHRvIHRoZSBlbmNhcCByb3V0ZVxuK19fc2V0X2VuY2FwX3JvdXRlKClcbit7XG4rXHRsb2NhbCBydD1cIiQxXCJcbitcdGxvY2FsIGRzdDY9XCIkMlwiXG4rXHRsb2NhbCBkc3Q0PVwiJDNcIlxuK1x0bG9jYWwgc2lkPVwiJDRcIlxuK1x0bG9jYWwgdGlkPVwiJDVcIlxuK1x0bG9jYWwgdXNlX2xvb2t1cD1cIiQ2XCJcbitcdGxvY2FsIGxvb2t1cD0nJ1xuK1x0bG9jYWwgcnRuYW1lXG4rXG4rXHRydG5hbWU9XCIkKGdldF9ydF9uc25hbWUgXCIke3J0fVwiKVwiXG4rXG4rXHRpZiBbIFwiJHt1c2VfbG9va3VwfVwiID0gXCJ0cnVlXCIgXTsgdGhlblxuK1x0XHRsb29rdXA9XCJsb29rdXAgJHtVTkRFUkxBWV9UQUJMRV9JRH1cIlxuK1x0ZmlcbitcbitcdCMgc2hlbGxjaGVjayBkaXNhYmxlPVNDMjA4NlxuK1x0aXAgLW5ldG5zIFwiJHtydG5hbWV9XCIgLTYgcm91dGUgcmVwbGFjZSBcXFxuK1x0XHRcIiR7SVB2Nl9IU19ORVRXT1JLfTo6JHtkc3Q2fS8xMjhcIiB2cmYgXCJ2cmYtJHt0aWR9XCIgXFxcbitcdFx0ZW5jYXAgc2VnNiBtb2RlIGVuY2FwIHNlZ3MgXCIke3NpZH1cIiAke2xvb2t1cH0gZGV2IHZldGgwXG4rXG4rXHQjIHNoZWxsY2hlY2sgZGlzYWJsZT1TQzIwODZcbitcdGlwIC1uZXRucyBcIiR7cnRuYW1lfVwiIC00IHJvdXRlIHJlcGxhY2UgXFxcbitcdFx0XCIke0lQdjRfSFNfTkVUV09SS30uJHtkc3Q0fS8zMlwiIHZyZiBcInZyZi0ke3RpZH1cIiBcXFxuK1x0XHRlbmNhcCBzZWc2IG1vZGUgZW5jYXAgc2VncyBcIiR7c2lkfVwiICR7bG9va3VwfSBkZXYgdmV0aDBcbit9XG4rXG4rIyBJbnN0YWxsIHRoZSBkdWFsLXN0YWNrIGVuY2FwIHJvdXRlIGZvciBhIHRlbmFudCBob3N0IG9uIHJ0LCB3aXRoIHRoZVxuKyMgXCJsb29rdXBcIiBhdHRyaWJ1dGUgc28gdGhlIGZpcnN0IFNJRCBpcyBsb29rZWQgdXAgaW4gdGhlIHVuZGVybGF5IHRhYmxlLlxuKyMgYXJnczpcbisjICAkMSAtIHJvdXRlciBpZCB3aGVyZSB0aGUgZW5jYXAgcm91dGUgaXMgaW5zdGFsbGVkXG4rIyAgJDIgLSBob3N0IGRlc3RpbmF0aW9uIGlkIChob3N0IHBhcnQgb2YgY2FmZTo6XHUwMDNjaWRcdTAwM2UvMTI4IGFuZCAxMC4wLjAuXHUwMDNjaWRcdTAwM2UvMzIpXG4rIyAgJDMgLSBTUnY2IFNJRCB1c2VkIGFzIHRoZSBlbmNhcCBkZXN0aW5hdGlvblxuKyMgICQ0IC0gdGVuYW50IGlkXG4rc2V0X2hvc3RfZW5jYXBfcm91dGUoKVxuK3tcbitcdGxvY2FsIHJ0PVwiJDFcIlxuK1x0bG9jYWwgaHNkc3Q9XCIkMlwiXG4rXHRsb2NhbCBzaWQ9XCIkM1wiXG4rXHRsb2NhbCB0aWQ9XCIkNFwiXG4rXG4rXHRfX3NldF9lbmNhcF9yb3V0ZSBcIiR7cnR9XCIgXCIke2hzZHN0fVwiIFwiJHtoc2RzdH1cIiBcIiR7c2lkfVwiIFwiJHt0aWR9XCIgdHJ1ZVxuK31cbitcbitzZXRfaG9zdF9lbmNhcF9yb3V0ZV9ub2xvb2t1cCgpXG4re1xuK1x0bG9jYWwgcnQ9XCIkMVwiXG4rXHRsb2NhbCBoc2RzdD1cIiQyXCJcbitcdGxvY2FsIHNpZD1cIiQzXCJcbitcdGxvY2FsIHRpZD1cIiQ0XCJcbitcbitcdF9fc2V0X2VuY2FwX3JvdXRlIFwiJHtydH1cIiBcIiR7aHNkc3R9XCIgXCIke2hzZHN0fVwiIFwiJHtzaWR9XCIgXCIke3RpZH1cIiBmYWxzZVxuK31cbitcbisjIEluc3RhbGwgdGhlIGR1YWwtc3RhY2sgZW5jYXAgcm91dGUgb24gcnRzcmMgdG93YXJkIHJ0ZHN0J3MgcmxvIGxvb3BiYWNrXG4rIyAoUkxPMSBvciBSTE8yLCBzZWUgaGVhZGVyKSwgd2l0aCB0aGUgXCJsb29rdXBcIiBhdHRyaWJ1dGUgc28gdGhlIGZpcnN0XG4rIyBTSUQgaXMgbG9va2VkIHVwIGluIHRoZSB1bmRlcmxheSB0YWJsZS5cbisjIGFyZ3M6XG4rIyAgJDEgLSByb3V0ZXIgaWQgd2hlcmUgdGhlIGVuY2FwIHJvdXRlIGlzIGluc3RhbGxlZFxuKyMgICQyIC0gcm91dGVyIGlkIHdob3NlIGxvb3BiYWNrIGFkZHJlc3MgaXMgdGhlIHJvdXRlIGRlc3RpbmF0aW9uXG4rIyAgJDMgLSBTUnY2IFNJRCB1c2VkIGFzIHRoZSBlbmNhcCBkZXN0aW5hdGlvblxuKyMgICQ0IC0gdGVuYW50IGlkXG4rc2V0X2d3X2VuY2FwX3JvdXRlKClcbit7XG4rXHRsb2NhbCBydHNyYz1cIiQxXCJcbitcdGxvY2FsIHJ0ZHN0PVwiJDJcIlxuK1x0bG9jYWwgc2lkPVwiJDNcIlxuK1x0bG9jYWwgdGlkPVwiJDRcIlxuK1x0bG9jYWwgZHN0XG4rXG4rXHRkc3Q9XCIkKGdldF9ybG9faG9zdGlkIFwiJHtydGRzdH1cIiBcIiR7dGlkfVwiKVwiXG4rXG4rXHRfX3NldF9lbmNhcF9yb3V0ZSBcIiR7cnRzcmN9XCIgXCIke2RzdH1cIiBcIiR7ZHN0fVwiIFwiJHtzaWR9XCIgXCIke3RpZH1cIiB0cnVlXG4rfVxuK1xuK3NldF9nd19lbmNhcF9yb3V0ZV9ub2xvb2t1cCgpXG4re1xuK1x0bG9jYWwgcnRzcmM9XCIkMVwiXG4rXHRsb2NhbCBydGRzdD1cIiQyXCJcbitcdGxvY2FsIHNpZD1cIiQzXCJcbitcdGxvY2FsIHRpZD1cIiQ0XCJcbitcdGxvY2FsIGRzdFxuK1xuK1x0ZHN0PVwiJChnZXRfcmxvX2hvc3RpZCBcIiR7cnRkc3R9XCIgXCIke3RpZH1cIilcIlxuK1xuK1x0X19zZXRfZW5jYXBfcm91dGUgXCIke3J0c3JjfVwiIFwiJHtkc3R9XCIgXCIke2RzdH1cIiBcIiR7c2lkfVwiIFwiJHt0aWR9XCIgZmFsc2Vcbit9XG4rXG4rIyBTZXR1cCB0aGUgYmFzaWMgbmV0d29ya2luZyBmb3IgYSByb3V0ZXJcbitzZXR1cF9ydF9uZXR3b3JraW5nKClcbit7XG4rXHRsb2NhbCBpZD1cIiQxXCJcbitcdGxvY2FsIG5zbmFtZVxuK1xuK1x0bnNuYW1lPVwiJChnZXRfcnRfbnNuYW1lIFwiJHtpZH1cIilcIlxuK1xuK1x0aXAgbGluayBzZXQgXCJ2ZXRoLXJ0LSR7aWR9XCIgbmV0bnMgXCIke25zbmFtZX1cIlxuK1x0aXAgLW5ldG5zIFwiJHtuc25hbWV9XCIgbGluayBzZXQgXCJ2ZXRoLXJ0LSR7aWR9XCIgbmFtZSB2ZXRoMFxuK1xuK1x0aXAgbmV0bnMgZXhlYyBcIiR7bnNuYW1lfVwiIHN5c2N0bCAtd3EgbmV0LmlwdjYuY29uZi5hbGwuYWNjZXB0X2RhZD0wXG4rXHRpcCBuZXRucyBleGVjIFwiJHtuc25hbWV9XCIgc3lzY3RsIC13cSBuZXQuaXB2Ni5jb25mLmRlZmF1bHQuYWNjZXB0X2RhZD0wXG4rXG4rXHRpcCAtbmV0bnMgXCIke25zbmFtZX1cIiBhZGRyIGFkZCBcIiR7SVB2Nl9SVF9ORVRXT1JLfTo6JHtpZH0vNjRcIiBkZXYgdmV0aDAgbm9kYWRcbitcdGlwIC1uZXRucyBcIiR7bnNuYW1lfVwiIGxpbmsgc2V0IHZldGgwIHVwXG4rXG4rXHRpcCBuZXRucyBleGVjIFwiJHtuc25hbWV9XCIgc3lzY3RsIC13cSBuZXQuaXB2NC5pcF9mb3J3YXJkPTFcbitcdGlwIG5ldG5zIGV4ZWMgXCIke25zbmFtZX1cIiBzeXNjdGwgLXdxIG5ldC5pcHY2LmNvbmYuYWxsLmZvcndhcmRpbmc9MVxuK31cbitcbisjIFNldHVwIGEgaG9zdCBuYW1lc3BhY2UgYW5kIGF0dGFjaCBpdCB0byBpdHMgZ2F0ZXdheVxuK3NldHVwX2hzKClcbit7XG4rXHRsb2NhbCBoaWQ9XCIkMVwiXG4rXHRsb2NhbCByaWQ9XCIkMlwiXG4rXHRsb2NhbCB0aWQ9XCIkM1wiXG4rXHRsb2NhbCBydHZldGg9XCJ2ZXRoLXQke3RpZH1cIlxuK1x0bG9jYWwgaHNuYW1lXG4rXHRsb2NhbCBydG5hbWVcbitcbitcdGhzbmFtZT1cIiQoZ2V0X2hzX25zbmFtZSBcIiR7dGlkfVwiIFwiJHtoaWR9XCIpXCJcbitcdHJ0bmFtZT1cIiQoZ2V0X3J0X25zbmFtZSBcIiR7cmlkfVwiKVwiXG4rXG4rXHRpcCBuZXRucyBleGVjIFwiJHtoc25hbWV9XCIgc3lzY3RsIC13cSBuZXQuaXB2Ni5jb25mLmFsbC5hY2NlcHRfZGFkPTBcbitcdGlwIG5ldG5zIGV4ZWMgXCIke2hzbmFtZX1cIiBzeXNjdGwgLXdxIG5ldC5pcHY2LmNvbmYuZGVmYXVsdC5hY2NlcHRfZGFkPTBcbitcbitcdGlwIC1uZXRucyBcIiR7aHNuYW1lfVwiIGxpbmsgYWRkIHZldGgwIHR5cGUgdmV0aCBwZWVyIG5hbWUgXCIke3J0dmV0aH1cIlxuK1x0aXAgLW5ldG5zIFwiJHtoc25hbWV9XCIgbGluayBzZXQgXCIke3J0dmV0aH1cIiBuZXRucyBcIiR7cnRuYW1lfVwiXG4rXG4rXHRpcCAtbmV0bnMgXCIke2hzbmFtZX1cIiBhZGRyIGFkZCBcXFxuK1x0XHRcIiR7SVB2Nl9IU19ORVRXT1JLfTo6JHtoaWR9LzY0XCIgZGV2IHZldGgwIG5vZGFkXG4rXHRpcCAtbmV0bnMgXCIke2hzbmFtZX1cIiBhZGRyIGFkZCBcXFxuK1x0XHRcIiR7SVB2NF9IU19ORVRXT1JLfS4ke2hpZH0vMjRcIiBkZXYgdmV0aDBcbitcbitcdGlwIC1uZXRucyBcIiR7aHNuYW1lfVwiIGxpbmsgc2V0IHZldGgwIHVwXG4rfVxuK1xuKyMgU2V0dXAgdGhlIHBlci10ZW5hbnQgVlJGIG9uIGEgcm91dGVyIChnYXRld2F5LCBsb29wYmFjaywgYmxhY2tob2xlKVxuK3NldHVwX3J0KClcbit7XG4rXHRsb2NhbCByaWQ9XCIkMVwiXG4rXHRsb2NhbCB0aWQ9XCIkMlwiXG4rXHRsb2NhbCBydHZldGg9XCJ2ZXRoLXQke3RpZH1cIlxuK1x0bG9jYWwgcmxvX2Rldj1cInJsby0ke3RpZH1cIlxuK1x0bG9jYWwgcnRuYW1lXG4rXHRsb2NhbCBnd19hZGRyX3Y2XG4rXHRsb2NhbCBnd19hZGRyX3Y0XG4rXG4rXHRydG5hbWU9XCIkKGdldF9ydF9uc25hbWUgXCIke3JpZH1cIilcIlxuK1xuK1x0Z3dfYWRkcl92Nj1cIiR7SVB2Nl9IU19ORVRXT1JLfTo6JChnZXRfcmxvX2hvc3RpZCBcIiR7cmlkfVwiIFwiJHt0aWR9XCIpXCJcbitcdGd3X2FkZHJfdjQ9XCIke0lQdjRfSFNfTkVUV09SS30uJChnZXRfcmxvX2hvc3RpZCBcIiR7cmlkfVwiIFwiJHt0aWR9XCIpXCJcbitcbitcdGlwIC1uZXRucyBcIiR7cnRuYW1lfVwiIGxpbmsgYWRkIFwidnJmLSR7dGlkfVwiIHR5cGUgdnJmIHRhYmxlIFwiJHt0aWR9XCJcbitcdGlwIC1uZXRucyBcIiR7cnRuYW1lfVwiIGxpbmsgc2V0IFwidnJmLSR7dGlkfVwiIHVwXG4rXG4rXHRpcCAtbmV0bnMgXCIke3J0bmFtZX1cIiBsaW5rIHNldCBcIiR7cnR2ZXRofVwiIG1hc3RlciBcInZyZi0ke3RpZH1cIlxuK1xuK1x0aXAgLW5ldG5zIFwiJHtydG5hbWV9XCIgYWRkciBhZGQgXFxcbitcdFx0XCIke0lQdjZfSFNfTkVUV09SS306OjI1NC82NFwiIGRldiBcIiR7cnR2ZXRofVwiIG5vZGFkXG4rXHRpcCAtbmV0bnMgXCIke3J0bmFtZX1cIiBhZGRyIGFkZCBcXFxuK1x0XHRcIiR7SVB2NF9IU19ORVRXT1JLfS4yNTQvMjRcIiBkZXYgXCIke3J0dmV0aH1cIlxuK1xuK1x0aXAgLW5ldG5zIFwiJHtydG5hbWV9XCIgbGluayBzZXQgXCIke3J0dmV0aH1cIiB1cFxuK1xuK1x0aXAgbmV0bnMgZXhlYyBcIiR7cnRuYW1lfVwiIFxcXG4rXHRcdHN5c2N0bCAtd3EgXCJuZXQuaXB2Ni5jb25mLiR7cnR2ZXRofS5wcm94eV9uZHA9MVwiXG4rXHRpcCBuZXRucyBleGVjIFwiJHtydG5hbWV9XCIgXFxcbitcdFx0c3lzY3RsIC13cSBcIm5ldC5pcHY0LmNvbmYuJHtydHZldGh9LnByb3h5X2FycD0xXCJcbitcbitcdGlwIG5ldG5zIGV4ZWMgXCIke3J0bmFtZX1cIiBzaCAtYyBcImVjaG8gMSBcdTAwM2UgL3Byb2Mvc3lzL25ldC92cmYvc3RyaWN0X21vZGVcIlxuK1xuK1x0IyByb3V0ZXIgbG9vcGJhY2sgaW50ZXJmYWNlIGZvciBsb2NhbGx5IG9yaWdpbmF0ZWQgdHJhZmZpY1xuK1x0aXAgLW5ldG5zIFwiJHtydG5hbWV9XCIgbGluayBhZGQgXCIke3Jsb19kZXZ9XCIgdHlwZSBkdW1teVxuK1x0aXAgLW5ldG5zIFwiJHtydG5hbWV9XCIgbGluayBzZXQgXCIke3Jsb19kZXZ9XCIgbWFzdGVyIFwidnJmLSR7dGlkfVwiXG4rXG4rXHRpcCAtbmV0bnMgXCIke3J0bmFtZX1cIiBhZGRyIGFkZCBcIiR7Z3dfYWRkcl92Nn0vMTI4XCIgXFxcbitcdFx0ZGV2IFwiJHtybG9fZGV2fVwiIG5vZGFkXG4rXHRpcCAtbmV0bnMgXCIke3J0bmFtZX1cIiBhZGRyIGFkZCBcIiR7Z3dfYWRkcl92NH0vMzJcIiBcXFxuK1x0XHRkZXYgXCIke3Jsb19kZXZ9XCJcbitcbitcdGlwIC1uZXRucyBcIiR7cnRuYW1lfVwiIGxpbmsgc2V0IFwiJHtybG9fZGV2fVwiIHVwXG4rXG4rXHQjIGRlZmF1bHQgYmxhY2tob2xlIHJvdXRlcyBpbiB0aGUgVlJGOiBhbnkgdHJhZmZpYyB0aGF0IGRvZXMgbm90IG1hdGNoXG4rXHQjIGEgc3BlY2lmaWMgcm91dGUgaXMgZHJvcHBlZC4gV2l0aG91dCB0aGUgXCJsb29rdXBcIiBhdHRyaWJ1dGUgb24gdGhlXG4rXHQjIGVuY2FwIHJvdXRlLCB0aGUgcm91dGUgZm9yIHRoZSBmaXJzdCBTSUQgY2Fubm90IGJlIGZvdW5kIGZyb20gd2l0aGluXG4rXHQjIHRoZSBWUkYuXG4rXHRpcCAtbmV0bnMgXCIke3J0bmFtZX1cIiAtNiByb3V0ZSBhZGQgYmxhY2tob2xlIGRlZmF1bHQgbWV0cmljIDQyNzgxOTgyNzIgXFxcbitcdFx0dnJmIFwidnJmLSR7dGlkfVwiXG4rXHRpcCAtbmV0bnMgXCIke3J0bmFtZX1cIiAtNCByb3V0ZSBhZGQgYmxhY2tob2xlIGRlZmF1bHQgbWV0cmljIDQyNzgxOTgyNzIgXFxcbitcdFx0dnJmIFwidnJmLSR7dGlkfVwiXG4rfVxuK1xuKyMgQ29uZmlndXJlIGEgb25lLXdheSBWUE4gcGF0aCB0b3dhcmRzIGhzZHN0IChvbiBydGRzdCkgZm9yIHRlbmFudCB0aWQuXG4rIyBUaGUgZW5jYXAgc2lkZSBpcyBzZXQgdXAgb24gcnRzcmMgYW5kIHRoZSBkZWNhcCBzaWRlIG9uIHJ0ZHN0LlxuKyMgYXJnczpcbisjICAkMSAtIHJvdXRlciBpZCB3aGVyZSB0aGUgZW5jYXAgc2lkZSBpcyBzZXQgdXBcbisjICAkMiAtIGhvc3QgaWQgb2YgdGhlIGRlc3RpbmF0aW9uIGhvc3RcbisjICAkMyAtIHJvdXRlciBpZCBvZiB0aGUgZGVzdGluYXRpb24gcm91dGVyIChjb25uZWN0ZWQgdG8gdGhlIGRlc3RpbmF0aW9uIGhvc3QpXG4rIyAgJDQgLSB0ZW5hbnQgaWRcbitzZXR1cF92cG5fY29uZmlnKClcbit7XG4rXHRsb2NhbCBydHNyYz1cIiQxXCJcbitcdGxvY2FsIGhzZHN0PVwiJDJcIlxuK1x0bG9jYWwgcnRkc3Q9XCIkM1wiXG4rXHRsb2NhbCB0aWQ9XCIkNFwiXG4rXHRsb2NhbCBydHZldGg9XCJ2ZXRoLXQke3RpZH1cIlxuK1x0bG9jYWwgcnRzcmNfbmFtZVxuK1x0bG9jYWwgcnRkc3RfbmFtZVxuK1x0bG9jYWwgdnBuX3NpZFxuK1xuK1x0cnRzcmNfbmFtZT1cIiQoZ2V0X3J0X25zbmFtZSBcIiR7cnRzcmN9XCIpXCJcbitcdHJ0ZHN0X25hbWU9XCIkKGdldF9ydF9uc25hbWUgXCIke3J0ZHN0fVwiKVwiXG4rXHR2cG5fc2lkPVwiJChidWlsZF92cG5fc2lkIFwiJHtydHNyY31cIiBcIiR7cnRkc3R9XCIgXCIke3RpZH1cIilcIlxuK1xuK1x0aXAgLW5ldG5zIFwiJHtydHNyY19uYW1lfVwiIC02IG5laWdoIGFkZCBwcm94eSBcXFxuK1x0XHRcIiR7SVB2Nl9IU19ORVRXT1JLfTo6JHtoc2RzdH1cIiBkZXYgXCIke3J0dmV0aH1cIlxuK1x0c2V0X2hvc3RfZW5jYXBfcm91dGUgXCIke3J0c3JjfVwiIFwiJHtoc2RzdH1cIiBcIiR7dnBuX3NpZH1cIiBcIiR7dGlkfVwiXG4rXG4rXHRpcCAtbmV0bnMgXCIke3J0c3JjX25hbWV9XCIgLTYgcm91dGUgYWRkIFwiJHt2cG5fc2lkfS8xMjhcIiBcXFxuK1x0XHR0YWJsZSBcIiR7VU5ERVJMQVlfVEFCTEVfSUR9XCIgXFxcbitcdFx0dmlhIFwiZmQwMDo6JHtydGRzdH1cIiBkZXYgdmV0aDBcbitcbitcdCMgc2V0IHRoZSBkZWNhcCByb3V0ZSBmb3IgZGVjYXBzdWxhdGluZyBwYWNrZXRzIGFycml2aW5nIGZyb20gcnRzcmNcbitcdCMgYW5kIGRlc3RpbmVkIHRvIGhzZHN0XG4rXHRpcCAtbmV0bnMgXCIke3J0ZHN0X25hbWV9XCIgLTYgcm91dGUgYWRkIFwiJHt2cG5fc2lkfS8xMjhcIiBcXFxuK1x0XHR0YWJsZSBcIiR7TE9DQUxTSURfVEFCTEVfSUR9XCIgXFxcbitcdFx0ZW5jYXAgc2VnNmxvY2FsIGFjdGlvbiBFbmQuRFQ0NiBcXFxuK1x0XHR2cmZ0YWJsZSBcIiR7dGlkfVwiIGRldiBcInZyZi0ke3RpZH1cIlxuK1xuK1x0IyBhbGwgU0lEcyBmb3IgVlBOcyBzdGFydCB3aXRoIGEgY29tbW9uIGxvY2F0b3Igd2hpY2ggaXMgZmMwMDo6LzE2LlxuK1x0IyBSb3V0ZXMgZm9yIGhhbmRsaW5nIHRoZSBTUnY2IEVuZC5EVCogYmVoYXZpb3IgaW5zdGFuY2VzIGFyZSBncm91cGVkXG4rXHQjIHRvZ2V0aGVyIGluIHRoZSAnbG9jYWxzaWQnIHRhYmxlLlxuK1x0I1xuK1x0IyBOT1RFOiBhZGRlZCBvbmx5IG9uY2VcbitcdGlmICEgaXAgLW5ldG5zIFwiJHtydGRzdF9uYW1lfVwiIC02IHJ1bGUgc2hvdyB8IFxcXG4rXHQgICAgZ3JlcCAtcSBcInRvICR7VlBOX0xPQ0FUT1JfU0VSVklDRX06Oi8xNiBsb29rdXAgJHtMT0NBTFNJRF9UQUJMRV9JRH1cIjsgdGhlblxuK1x0XHRpcCAtbmV0bnMgXCIke3J0ZHN0X25hbWV9XCIgLTYgcnVsZSBhZGQgXFxcbitcdFx0XHR0byBcIiR7VlBOX0xPQ0FUT1JfU0VSVklDRX06Oi8xNlwiIFxcXG4rXHRcdFx0bG9va3VwIFwiJHtMT0NBTFNJRF9UQUJMRV9JRH1cIiBwcmlvIDk5OVxuK1x0Zmlcbit9XG4rXG4rIyBDb25maWd1cmUgcnRzcmMgdG8gcmVhY2ggcnRkc3QncyBsb29wYmFjayBhZGRyZXNzIHRocm91Z2ggdGhlIFZQTi5cbisjIGFyZ3M6XG4rIyAgJDEgLSByb3V0ZXIgaWQgd2hlcmUgdGhlIGVuY2FwIHJvdXRlIGlzIGluc3RhbGxlZFxuKyMgICQyIC0gcm91dGVyIGlkIHdob3NlIGxvb3BiYWNrIGlzIHRoZSBkZXN0aW5hdGlvblxuKyMgICQzIC0gdGVuYW50IGlkXG4rc2V0dXBfdnBuX2d3X2VuY2FwKClcbit7XG4rXHRsb2NhbCBydHNyYz1cIiQxXCJcbitcdGxvY2FsIHJ0ZHN0PVwiJDJcIlxuK1x0bG9jYWwgdGlkPVwiJDNcIlxuK1x0bG9jYWwgc2lkXG4rXG4rXHRzaWQ9XCIkKGJ1aWxkX3Zwbl9zaWQgXCIke3J0c3JjfVwiIFwiJHtydGRzdH1cIiBcIiR7dGlkfVwiKVwiXG4rXG4rXHRzZXRfZ3dfZW5jYXBfcm91dGUgXCIke3J0c3JjfVwiIFwiJHtydGRzdH1cIiBcIiR7c2lkfVwiIFwiJHt0aWR9XCJcbit9XG4rXG4rc2V0dXAoKVxuK3tcbitcdGlwIGxpbmsgYWRkIHZldGgtcnQtMSB0eXBlIHZldGggcGVlciBuYW1lIHZldGgtcnQtMlxuK1x0c2V0dXBfbnMgcnRfMSBydF8yXG4rXHRzZXR1cF9ydF9uZXR3b3JraW5nIDFcbitcdHNldHVwX3J0X25ldHdvcmtpbmcgMlxuK1xuK1x0IyBzZXR1cCB0d28gaG9zdHMgZm9yIHRoZSB0ZW5hbnQgMTAwLlxuK1x0IyAgLSBob3N0IGhzLXQxMDAtMSBpcyBkaXJlY3RseSBjb25uZWN0ZWQgdG8gdGhlIHJvdXRlciBydC0xO1xuK1x0IyAgLSBob3N0IGhzLXQxMDAtMiBpcyBkaXJlY3RseSBjb25uZWN0ZWQgdG8gdGhlIHJvdXRlciBydC0yLlxuK1x0c2V0dXBfbnMgaHNfdDEwMF8xIGhzX3QxMDBfMlxuK1x0c2V0dXBfaHMgMSAxIDEwMFxuK1x0c2V0dXBfaHMgMiAyIDEwMFxuK1xuK1x0IyBzZXR1cCB0d28gaG9zdHMgZm9yIHRoZSB0ZW5hbnQgMjAwLlxuK1x0IyAgLSBob3N0IGhzLXQyMDAtMyBpcyBkaXJlY3RseSBjb25uZWN0ZWQgdG8gdGhlIHJvdXRlciBydC0xO1xuK1x0IyAgLSBob3N0IGhzLXQyMDAtNCBpcyBkaXJlY3RseSBjb25uZWN0ZWQgdG8gdGhlIHJvdXRlciBydC0yLlxuK1x0c2V0dXBfbnMgaHNfdDIwMF8zIGhzX3QyMDBfNFxuK1x0c2V0dXBfaHMgMyAxIDIwMFxuK1x0c2V0dXBfaHMgNCAyIDIwMFxuK1xuK1x0IyBjb25maWd1cmUgZWFjaCByb3V0ZXIgZm9yIGVhY2ggdGVuYW50OiBWUkYsIGJsYWNraG9sZSByb3V0ZXMsXG4rXHQjIHJvdXRlciBsb29wYmFjayBpbnRlcmZhY2VcbitcdHNldHVwX3J0IDEgMTAwXG4rXHRzZXR1cF9ydCAyIDEwMFxuK1x0c2V0dXBfcnQgMSAyMDBcbitcdHNldHVwX3J0IDIgMjAwXG4rXG4rXHQjIHNldHVwIHRoZSBMMyBWUE4gd2hpY2ggY29ubmVjdHMgdGhlIGhvc3QgaHMtdDEwMC0xIGFuZCBob3N0IGhzLXQxMDAtMlxuK1x0IyB3aXRoaW4gdGhlIHNhbWUgdGVuYW50IDEwMC5cbitcdHNldHVwX3Zwbl9jb25maWcgMSAyIDIgMTAwXG4rXHRzZXR1cF92cG5fY29uZmlnIDIgMSAxIDEwMFxuK1xuK1x0IyBzZXR1cCB0aGUgTDMgVlBOIHdoaWNoIGNvbm5lY3RzIHRoZSBob3N0IGhzLXQyMDAtMyBhbmQgaG9zdCBocy10MjAwLTRcbitcdCMgd2l0aGluIHRoZSBzYW1lIHRlbmFudCAyMDAuXG4rXHRzZXR1cF92cG5fY29uZmlnIDEgNCAyIDIwMFxuK1x0c2V0dXBfdnBuX2NvbmZpZyAyIDMgMSAyMDBcbitcbitcdCMgYWxsb3cgZWFjaCByb3V0ZXIgdG8gcmVhY2ggdGhlIG90aGVyJ3MgbG9vcGJhY2sgdGhyb3VnaCB0aGUgVlBOXG4rXHRzZXR1cF92cG5fZ3dfZW5jYXAgMiAxIDEwMFxuK1x0c2V0dXBfdnBuX2d3X2VuY2FwIDEgMiAxMDBcbitcdHNldHVwX3Zwbl9nd19lbmNhcCAyIDEgMjAwXG4rXHRzZXR1cF92cG5fZ3dfZW5jYXAgMSAyIDIwMFxuK1xuK1x0IyB0ZXN0aW5nIGVudmlyb25tZW50IHdhcyBzZXQgdXAgc3VjY2Vzc2Z1bGx5XG4rXHRTRVRVUF9FUlI9MFxuK31cbitcbitjaGVja19ydF9jb25uZWN0aXZpdHkoKVxuK3tcbitcdGxvY2FsIHJ0c3JjPVwiJDFcIlxuK1x0bG9jYWwgcnRkc3Q9XCIkMlwiXG4rXHRsb2NhbCBuc25hbWVcbitcbitcdG5zbmFtZT1cIiQoZ2V0X3J0X25zbmFtZSBcIiR7cnRzcmN9XCIpXCJcbitcbitcdGlwIG5ldG5zIGV4ZWMgXCIke25zbmFtZX1cIiBwaW5nIC1jIDEgLVcgMSBcIiR7SVB2Nl9SVF9ORVRXT1JLfTo6JHtydGRzdH1cIiBcXFxuK1x0XHRcdTAwM2UvZGV2L251bGwgMlx1MDAzZVx1MDAyNjFcbit9XG4rXG4rY2hlY2tfYW5kX2xvZ19ydF9jb25uZWN0aXZpdHkoKVxuK3tcbitcdGxvY2FsIHJ0c3JjPVwiJDFcIlxuK1x0bG9jYWwgcnRkc3Q9XCIkMlwiXG4rXG4rXHRjaGVja19ydF9jb25uZWN0aXZpdHkgXCIke3J0c3JjfVwiIFwiJHtydGRzdH1cIlxuK1x0bG9nX3Rlc3QgJD8gMCBcIlJvdXRlcnMgY29ubmVjdGl2aXR5OiBydC0ke3J0c3JjfSAtXHUwMDNlIHJ0LSR7cnRkc3R9XCJcbit9XG4rXG4rY2hlY2tfaHNfaXB2Nl9jb25uZWN0aXZpdHkoKVxuK3tcbitcdGxvY2FsIGhzc3JjPVwiJDFcIlxuK1x0bG9jYWwgaHNkc3Q9XCIkMlwiXG4rXHRsb2NhbCB0aWQ9XCIkM1wiXG4rXHRsb2NhbCBuc25hbWVcbitcbitcdG5zbmFtZT1cIiQoZ2V0X2hzX25zbmFtZSBcIiR7dGlkfVwiIFwiJHtoc3NyY31cIilcIlxuK1xuK1x0aXAgbmV0bnMgZXhlYyBcIiR7bnNuYW1lfVwiIHBpbmcgLWMgMSAtVyBcIiR7UElOR19USU1FT1VUX1NFQ31cIiBcXFxuK1x0XHRcIiR7SVB2Nl9IU19ORVRXT1JLfTo6JHtoc2RzdH1cIiBcdTAwM2UvZGV2L251bGwgMlx1MDAzZVx1MDAyNjFcbit9XG4rXG4rY2hlY2tfaHNfaXB2NF9jb25uZWN0aXZpdHkoKVxuK3tcbitcdGxvY2FsIGhzc3JjPVwiJDFcIlxuK1x0bG9jYWwgaHNkc3Q9XCIkMlwiXG4rXHRsb2NhbCB0aWQ9XCIkM1wiXG4rXHRsb2NhbCBuc25hbWVcbitcbitcdG5zbmFtZT1cIiQoZ2V0X2hzX25zbmFtZSBcIiR7dGlkfVwiIFwiJHtoc3NyY31cIilcIlxuK1xuK1x0aXAgbmV0bnMgZXhlYyBcIiR7bnNuYW1lfVwiIHBpbmcgLWMgMSAtVyBcIiR7UElOR19USU1FT1VUX1NFQ31cIiBcXFxuK1x0XHRcIiR7SVB2NF9IU19ORVRXT1JLfS4ke2hzZHN0fVwiIFx1MDAzZS9kZXYvbnVsbCAyXHUwMDNlXHUwMDI2MVxuK31cbitcbitjaGVja19hbmRfbG9nX2hzX2Nvbm5lY3Rpdml0eSgpXG4re1xuK1x0bG9jYWwgaHNzcmM9XCIkMVwiXG4rXHRsb2NhbCBoc2RzdD1cIiQyXCJcbitcdGxvY2FsIHRpZD1cIiQzXCJcbitcbitcdGNoZWNrX2hzX2lwdjZfY29ubmVjdGl2aXR5IFwiJHtoc3NyY31cIiBcIiR7aHNkc3R9XCIgXCIke3RpZH1cIlxuK1x0bG9nX3Rlc3QgJD8gMCBcIklQdjYgY29ubmVjdGl2aXR5OiBocy10JHt0aWR9LSR7aHNzcmN9IC1cdTAwM2UgaHMtdCR7dGlkfS0ke2hzZHN0fSAodGVuYW50ICR7dGlkfSlcIlxuK1xuK1x0Y2hlY2tfaHNfaXB2NF9jb25uZWN0aXZpdHkgXCIke2hzc3JjfVwiIFwiJHtoc2RzdH1cIiBcIiR7dGlkfVwiXG4rXHRsb2dfdGVzdCAkPyAwIFwiSVB2NCBjb25uZWN0aXZpdHk6IGhzLXQke3RpZH0tJHtoc3NyY30gLVx1MDAzZSBocy10JHt0aWR9LSR7aHNkc3R9ICh0ZW5hbnQgJHt0aWR9KVwiXG4rfVxuK1xuK2NoZWNrX2FuZF9sb2dfaHNfaXNvbGF0aW9uKClcbit7XG4rXHRsb2NhbCBoc3NyYz1cIiQxXCJcbitcdGxvY2FsIHRpZHNyYz1cIiQyXCJcbitcdGxvY2FsIGhzZHN0PVwiJDNcIlxuK1x0bG9jYWwgdGlkZHN0PVwiJDRcIlxuK1xuK1x0Y2hlY2tfaHNfaXB2Nl9jb25uZWN0aXZpdHkgXCIke2hzc3JjfVwiIFwiJHtoc2RzdH1cIiBcIiR7dGlkc3JjfVwiXG4rXHRsb2dfdGVzdCAkPyAxIFwiSVB2NiBpc29sYXRpb246IGhzLXQke3RpZHNyY30tJHtoc3NyY30gLVgtXHUwMDNlIGhzLXQke3RpZGRzdH0tJHtoc2RzdH1cIlxuK1xuK1x0Y2hlY2tfaHNfaXB2NF9jb25uZWN0aXZpdHkgXCIke2hzc3JjfVwiIFwiJHtoc2RzdH1cIiBcIiR7dGlkc3JjfVwiXG4rXHRsb2dfdGVzdCAkPyAxIFwiSVB2NCBpc29sYXRpb246IGhzLXQke3RpZHNyY30tJHtoc3NyY30gLVgtXHUwMDNlIGhzLXQke3RpZGRzdH0tJHtoc2RzdH1cIlxuK31cbitcbitjaGVja19hbmRfbG9nX2hzMmd3X2Nvbm5lY3Rpdml0eSgpXG4re1xuK1x0bG9jYWwgaHNzcmM9XCIkMVwiXG4rXHRsb2NhbCB0aWQ9XCIkMlwiXG4rXG4rXHRjaGVja19oc19pcHY2X2Nvbm5lY3Rpdml0eSBcIiR7aHNzcmN9XCIgMjU0IFwiJHt0aWR9XCJcbitcdGxvZ190ZXN0ICQ/IDAgXCJJUHY2IGNvbm5lY3Rpdml0eTogaHMtdCR7dGlkfS0ke2hzc3JjfSAtXHUwMDNlIGd3ICh0ZW5hbnQgJHt0aWR9KVwiXG4rXG4rXHRjaGVja19oc19pcHY0X2Nvbm5lY3Rpdml0eSBcIiR7aHNzcmN9XCIgMjU0IFwiJHt0aWR9XCJcbitcdGxvZ190ZXN0ICQ/IDAgXCJJUHY0IGNvbm5lY3Rpdml0eTogaHMtdCR7dGlkfS0ke2hzc3JjfSAtXHUwMDNlIGd3ICh0ZW5hbnQgJHt0aWR9KVwiXG4rfVxuK1xuK3JvdXRlcl90ZXN0cygpXG4re1xuK1x0bG9nX3NlY3Rpb24gXCJJUHY2IHJvdXRlcnMgY29ubmVjdGl2aXR5IHRlc3RcIlxuK1xuK1x0Y2hlY2tfYW5kX2xvZ19ydF9jb25uZWN0aXZpdHkgMSAyXG4rXHRjaGVja19hbmRfbG9nX3J0X2Nvbm5lY3Rpdml0eSAyIDFcbit9XG4rXG4raG9zdDJnYXRld2F5X3Rlc3RzKClcbit7XG4rXHRsb2dfc2VjdGlvbiBcIkNvbm5lY3Rpdml0eSB0ZXN0IGFtb25nIGhvc3RzIGFuZCBnYXRld2F5XCJcbitcbitcdGNoZWNrX2FuZF9sb2dfaHMyZ3dfY29ubmVjdGl2aXR5IDEgMTAwXG4rXHRjaGVja19hbmRfbG9nX2hzMmd3X2Nvbm5lY3Rpdml0eSAyIDEwMFxuK1xuK1x0Y2hlY2tfYW5kX2xvZ19oczJnd19jb25uZWN0aXZpdHkgMyAyMDBcbitcdGNoZWNrX2FuZF9sb2dfaHMyZ3dfY29ubmVjdGl2aXR5IDQgMjAwXG4rfVxuK1xuK2hvc3RfdnBuX3Rlc3RzKClcbit7XG4rXHRsb2dfc2VjdGlvbiBcIlNSdjYgVlBOIGNvbm5lY3Rpdml0eSB0ZXN0IGFtb25nIGhvc3RzIGluIHRoZSBzYW1lIHRlbmFudFwiXG4rXG4rXHRjaGVja19hbmRfbG9nX2hzX2Nvbm5lY3Rpdml0eSAxIDIgMTAwXG4rXHRjaGVja19hbmRfbG9nX2hzX2Nvbm5lY3Rpdml0eSAyIDEgMTAwXG4rXG4rXHRjaGVja19hbmRfbG9nX2hzX2Nvbm5lY3Rpdml0eSAzIDQgMjAwXG4rXHRjaGVja19hbmRfbG9nX2hzX2Nvbm5lY3Rpdml0eSA0IDMgMjAwXG4rfVxuK1xuK2hvc3RfdnBuX2lzb2xhdGlvbl90ZXN0cygpXG4re1xuK1x0bG9jYWwgbDE9XCIxIDJcIlxuK1x0bG9jYWwgbDI9XCIzIDRcIlxuK1x0bG9jYWwgdDE9MTAwXG4rXHRsb2NhbCB0Mj0yMDBcbitcdGxvY2FsIGlcbitcdGxvY2FsIGpcbitcdGxvY2FsIHRtcFxuK1xuK1x0bG9nX3NlY3Rpb24gXCJTUnY2IFZQTiBpc29sYXRpb24gdGVzdCBhbW9uZyBob3N0cyBpbiBkaWZmZXJlbnQgdGVuYW50c1wiXG4rXG4rXHRmb3IgXyBpbiAwIDE7IGRvXG4rXHRcdGZvciBpIGluICR7bDF9OyBkb1xuK1x0XHRcdGZvciBqIGluICR7bDJ9OyBkb1xuK1x0XHRcdFx0Y2hlY2tfYW5kX2xvZ19oc19pc29sYXRpb24gXCIke2l9XCIgXCIke3QxfVwiIFwiJHtqfVwiIFwiJHt0Mn1cIlxuK1x0XHRcdGRvbmVcbitcdFx0ZG9uZVxuK1xuK1x0XHQjIGxldCB1cyB0ZXN0IHRoZSByZXZlcnNlIHBhdGhcbitcdFx0dG1wPVwiJHtsMX1cIjsgbDE9XCIke2wyfVwiOyBsMj1cIiR7dG1wfVwiXG4rXHRcdHRtcD0ke3QxfTsgdDE9JHt0Mn07IHQyPSR7dG1wfVxuK1x0ZG9uZVxuK31cbitcbitfX3Rlc3Rfbm9sb29rdXAoKVxuK3tcbitcdGxvY2FsIGhzc3JjPVwiJDFcIlxuK1x0bG9jYWwgaHNkc3Q9XCIkMlwiXG4rXHRsb2NhbCBydHNyYz1cIiQzXCJcbitcdGxvY2FsIHJ0ZHN0PVwiJDRcIlxuK1x0bG9jYWwgdGlkPVwiJDVcIlxuK1x0bG9jYWwgdnBuX3NpZFxuK1xuK1x0dnBuX3NpZD1cIiQoYnVpbGRfdnBuX3NpZCBcIiR7cnRzcmN9XCIgXCIke3J0ZHN0fVwiIFwiJHt0aWR9XCIpXCJcbitcbitcdCMgcmVwbGFjZSBlbmNhcCByb3V0ZShzKSB3aXRob3V0IFwibG9va3VwXCIgYXR0cmlidXRlXG4rXHRzZXRfaG9zdF9lbmNhcF9yb3V0ZV9ub2xvb2t1cCBcIiR7cnRzcmN9XCIgXCIke2hzZHN0fVwiIFwiJHt2cG5fc2lkfVwiIFwiJHt0aWR9XCJcbitcbitcdGNoZWNrX2hzX2lwdjZfY29ubmVjdGl2aXR5IFwiJHtoc3NyY31cIiBcIiR7aHNkc3R9XCIgXCIke3RpZH1cIlxuK1x0bG9nX3Rlc3QgJD8gMSBcIklQdjYgdy9vIGxvb2t1cDogaHMtdCR7dGlkfS0ke2hzc3JjfSAtWC1cdTAwM2UgaHMtdCR7dGlkfS0ke2hzZHN0fSAodGVuYW50ICR7dGlkfSlcIlxuK1xuK1x0Y2hlY2tfaHNfaXB2NF9jb25uZWN0aXZpdHkgXCIke2hzc3JjfVwiIFwiJHtoc2RzdH1cIiBcIiR7dGlkfVwiXG4rXHRsb2dfdGVzdCAkPyAxIFwiSVB2NCB3L28gbG9va3VwOiBocy10JHt0aWR9LSR7aHNzcmN9IC1YLVx1MDAzZSBocy10JHt0aWR9LSR7aHNkc3R9ICh0ZW5hbnQgJHt0aWR9KVwiXG4rXG4rXHQjIHJlc3RvcmUgZW5jYXAgcm91dGUocykgd2l0aCBcImxvb2t1cFwiIGZvciBzdWJzZXF1ZW50IHRlc3RzXG4rXHRzZXRfaG9zdF9lbmNhcF9yb3V0ZSBcIiR7cnRzcmN9XCIgXCIke2hzZHN0fVwiIFwiJHt2cG5fc2lkfVwiIFwiJHt0aWR9XCJcbit9XG4rXG4raG9zdF92cG5fbm9sb29rdXBfdGVzdHMoKVxuK3tcbitcdGxvZ19zZWN0aW9uIFwiU1J2NiBWUE4gY29ubmVjdGl2aXR5IHRlc3QgYW1vbmcgaG9zdHMgdy9vIGxvb2t1cFwiXG4rXG4rXHRfX3Rlc3Rfbm9sb29rdXAgMSAyIDEgMiAxMDBcbitcdF9fdGVzdF9ub2xvb2t1cCAyIDEgMiAxIDEwMFxuK1xuK1x0X190ZXN0X25vbG9va3VwIDMgNCAxIDIgMjAwXG4rXHRfX3Rlc3Rfbm9sb29rdXAgNCAzIDIgMSAyMDBcbit9XG4rXG4rY2hlY2tfZ3dfaXB2Nl9jb25uZWN0aXZpdHkoKVxuK3tcbitcdGxvY2FsIHJ0c3JjPVwiJDFcIlxuK1x0bG9jYWwgcnRkc3Q9XCIkMlwiXG4rXHRsb2NhbCB0aWRzcmM9XCIkM1wiXG4rXHRsb2NhbCB0aWRkc3Q9XCIkNFwiXG4rXHRsb2NhbCBydG5hbWVcbitcdGxvY2FsIHNyY192NlxuK1x0bG9jYWwgZHN0X3Y2XG4rXG4rXHRydG5hbWU9XCIkKGdldF9ydF9uc25hbWUgXCIke3J0c3JjfVwiKVwiXG4rXHRzcmNfdjY9XCIke0lQdjZfSFNfTkVUV09SS306OiQoZ2V0X3Jsb19ob3N0aWQgXCIke3J0c3JjfVwiIFwiJHt0aWRzcmN9XCIpXCJcbitcdGRzdF92Nj1cIiR7SVB2Nl9IU19ORVRXT1JLfTo6JChnZXRfcmxvX2hvc3RpZCBcIiR7cnRkc3R9XCIgXCIke3RpZGRzdH1cIilcIlxuK1xuK1x0aXAgbmV0bnMgZXhlYyBcIiR7cnRuYW1lfVwiIGlwIHZyZiBleGVjIFwidnJmLSR7dGlkc3JjfVwiIFxcXG4rXHRcdHBpbmcgLWMgMSAtVyBcIiR7UElOR19USU1FT1VUX1NFQ31cIiBcXFxuK1x0XHQtSSBcIiR7c3JjX3Y2fVwiIFwiJHtkc3RfdjZ9XCIgXHUwMDNlL2Rldi9udWxsIDJcdTAwM2VcdTAwMjYxXG4rfVxuK1xuK2NoZWNrX2d3X2lwdjRfY29ubmVjdGl2aXR5KClcbit7XG4rXHRsb2NhbCBydHNyYz1cIiQxXCJcbitcdGxvY2FsIHJ0ZHN0PVwiJDJcIlxuK1x0bG9jYWwgdGlkc3JjPVwiJDNcIlxuK1x0bG9jYWwgdGlkZHN0PVwiJDRcIlxuK1x0bG9jYWwgcnRuYW1lXG4rXHRsb2NhbCBzcmNfdjRcbitcdGxvY2FsIGRzdF92NFxuK1xuK1x0cnRuYW1lPVwiJChnZXRfcnRfbnNuYW1lIFwiJHtydHNyY31cIilcIlxuK1x0c3JjX3Y0PVwiJHtJUHY0X0hTX05FVFdPUkt9LiQoZ2V0X3Jsb19ob3N0aWQgXCIke3J0c3JjfVwiIFwiJHt0aWRzcmN9XCIpXCJcbitcdGRzdF92ND1cIiR7SVB2NF9IU19ORVRXT1JLfS4kKGdldF9ybG9faG9zdGlkIFwiJHtydGRzdH1cIiBcIiR7dGlkZHN0fVwiKVwiXG4rXG4rXHRpcCBuZXRucyBleGVjIFwiJHtydG5hbWV9XCIgaXAgdnJmIGV4ZWMgXCJ2cmYtJHt0aWRzcmN9XCIgXFxcbitcdFx0cGluZyAtYyAxIC1XIFwiJHtQSU5HX1RJTUVPVVRfU0VDfVwiIFxcXG4rXHRcdC1JIFwiJHtzcmNfdjR9XCIgXCIke2RzdF92NH1cIiBcdTAwM2UvZGV2L251bGwgMlx1MDAzZVx1MDAyNjFcbit9XG4rXG4rY2hlY2tfYW5kX2xvZ19nd19jb25uZWN0aXZpdHkoKVxuK3tcbitcdGxvY2FsIHJ0c3JjPVwiJDFcIlxuK1x0bG9jYWwgcnRkc3Q9XCIkMlwiXG4rXHRsb2NhbCB0aWQ9XCIkM1wiXG4rXG4rXHRjaGVja19nd19pcHY2X2Nvbm5lY3Rpdml0eSBcIiR7cnRzcmN9XCIgXCIke3J0ZHN0fVwiIFwiJHt0aWR9XCIgXCIke3RpZH1cIlxuK1x0bG9nX3Rlc3QgJD8gMCBcIklQdjYgY29ubmVjdGl2aXR5OiBydC0ke3J0c3JjfSAtXHUwMDNlIHJ0LSR7cnRkc3R9ICh0ZW5hbnQgJHt0aWR9KVwiXG4rXG4rXHRjaGVja19nd19pcHY0X2Nvbm5lY3Rpdml0eSBcIiR7cnRzcmN9XCIgXCIke3J0ZHN0fVwiIFwiJHt0aWR9XCIgXCIke3RpZH1cIlxuK1x0bG9nX3Rlc3QgJD8gMCBcIklQdjQgY29ubmVjdGl2aXR5OiBydC0ke3J0c3JjfSAtXHUwMDNlIHJ0LSR7cnRkc3R9ICh0ZW5hbnQgJHt0aWR9KVwiXG4rfVxuK1xuK2NoZWNrX2FuZF9sb2dfZ3dfaXNvbGF0aW9uKClcbit7XG4rXHRsb2NhbCBydHNyYz1cIiQxXCJcbitcdGxvY2FsIHJ0ZHN0PVwiJDJcIlxuK1x0bG9jYWwgdGlkc3JjPVwiJDNcIlxuK1x0bG9jYWwgdGlkZHN0PVwiJDRcIlxuK1xuK1x0Y2hlY2tfZ3dfaXB2Nl9jb25uZWN0aXZpdHkgXCIke3J0c3JjfVwiIFwiJHtydGRzdH1cIiBcIiR7dGlkc3JjfVwiIFwiJHt0aWRkc3R9XCJcbitcdGxvZ190ZXN0ICQ/IDEgXCJJUHY2IGlzb2xhdGlvbjogcnQtJHtydHNyY30gLVgtXHUwMDNlIHJ0LSR7cnRkc3R9ICh0ZW5hbnRzICR7dGlkc3JjfS8ke3RpZGRzdH0pXCJcbitcbitcdGNoZWNrX2d3X2lwdjRfY29ubmVjdGl2aXR5IFwiJHtydHNyY31cIiBcIiR7cnRkc3R9XCIgXCIke3RpZHNyY31cIiBcIiR7dGlkZHN0fVwiXG4rXHRsb2dfdGVzdCAkPyAxIFwiSVB2NCBpc29sYXRpb246IHJ0LSR7cnRzcmN9IC1YLVx1MDAzZSBydC0ke3J0ZHN0fSAodGVuYW50cyAke3RpZHNyY30vJHt0aWRkc3R9KVwiXG4rfVxuK1xuK2d3X3Zwbl9pc29sYXRpb25fdGVzdHMoKVxuK3tcbitcdGxvZ19zZWN0aW9uIFwiU1J2NiBWUE4gaXNvbGF0aW9uIHRlc3QgYW1vbmcgcm91dGVycyBpbiBkaWZmZXJlbnQgdGVuYW50c1wiXG4rXG4rXHRjaGVja19hbmRfbG9nX2d3X2lzb2xhdGlvbiAxIDIgMTAwIDIwMFxuK1x0Y2hlY2tfYW5kX2xvZ19nd19pc29sYXRpb24gMiAxIDEwMCAyMDBcbitcbitcdGNoZWNrX2FuZF9sb2dfZ3dfaXNvbGF0aW9uIDEgMiAyMDAgMTAwXG4rXHRjaGVja19hbmRfbG9nX2d3X2lzb2xhdGlvbiAyIDEgMjAwIDEwMFxuK31cbitcbitnd192cG5fdGVzdHMoKVxuK3tcbitcdGxvZ19zZWN0aW9uIFwiU1J2NiBWUE4gY29ubmVjdGl2aXR5IHRlc3QgYW1vbmcgcm91dGVycyBpbiB0aGUgc2FtZSB0ZW5hbnRcIlxuK1xuK1x0Y2hlY2tfYW5kX2xvZ19nd19jb25uZWN0aXZpdHkgMSAyIDEwMFxuK1x0Y2hlY2tfYW5kX2xvZ19nd19jb25uZWN0aXZpdHkgMiAxIDEwMFxuK1xuK1x0Y2hlY2tfYW5kX2xvZ19nd19jb25uZWN0aXZpdHkgMSAyIDIwMFxuK1x0Y2hlY2tfYW5kX2xvZ19nd19jb25uZWN0aXZpdHkgMiAxIDIwMFxuK31cbitcbitfX3Rlc3RfZ3dfbm9sb29rdXAoKVxuK3tcbitcdGxvY2FsIHJ0c3JjPVwiJDFcIlxuK1x0bG9jYWwgcnRkc3Q9XCIkMlwiXG4rXHRsb2NhbCB0aWQ9XCIkM1wiXG4rXHRsb2NhbCBzaWRcbitcbitcdHNpZD1cIiQoYnVpbGRfdnBuX3NpZCBcIiR7cnRzcmN9XCIgXCIke3J0ZHN0fVwiIFwiJHt0aWR9XCIpXCJcbitcbitcdCMgcmVwbGFjZSBndyBlbmNhcCByb3V0ZSB3aXRob3V0IFwibG9va3VwXCIgYXR0cmlidXRlXG4rXHRzZXRfZ3dfZW5jYXBfcm91dGVfbm9sb29rdXAgXCIke3J0c3JjfVwiIFwiJHtydGRzdH1cIiBcIiR7c2lkfVwiIFwiJHt0aWR9XCJcbitcbitcdGNoZWNrX2d3X2lwdjZfY29ubmVjdGl2aXR5IFwiJHtydHNyY31cIiBcIiR7cnRkc3R9XCIgXCIke3RpZH1cIiBcIiR7dGlkfVwiXG4rXHRsb2dfdGVzdCAkPyAxIFwiSVB2NiB3L28gbG9va3VwOiBydC0ke3J0c3JjfSAtWC1cdTAwM2UgcnQtJHtydGRzdH0gKHRlbmFudCAke3RpZH0pXCJcbitcbitcdGNoZWNrX2d3X2lwdjRfY29ubmVjdGl2aXR5IFwiJHtydHNyY31cIiBcIiR7cnRkc3R9XCIgXCIke3RpZH1cIiBcIiR7dGlkfVwiXG4rXHRsb2dfdGVzdCAkPyAxIFwiSVB2NCB3L28gbG9va3VwOiBydC0ke3J0c3JjfSAtWC1cdTAwM2UgcnQtJHtydGRzdH0gKHRlbmFudCAke3RpZH0pXCJcbitcbitcdCMgcmVzdG9yZSBndyBlbmNhcCByb3V0ZSB3aXRoIFwibG9va3VwXCIgZm9yIHN1YnNlcXVlbnQgdGVzdHNcbitcdHNldF9nd19lbmNhcF9yb3V0ZSBcIiR7cnRzcmN9XCIgXCIke3J0ZHN0fVwiIFwiJHtzaWR9XCIgXCIke3RpZH1cIlxuK31cbitcbitnd192cG5fbm9sb29rdXBfdGVzdHMoKVxuK3tcbitcdGxvZ19zZWN0aW9uIFwiU1J2NiBWUE4gY29ubmVjdGl2aXR5IHRlc3QgYW1vbmcgcm91dGVycyB3L28gbG9va3VwXCJcbitcbitcdF9fdGVzdF9nd19ub2xvb2t1cCAxIDIgMTAwXG4rXHRfX3Rlc3RfZ3dfbm9sb29rdXAgMiAxIDEwMFxuK1xuK1x0X190ZXN0X2d3X25vbG9va3VwIDEgMiAyMDBcbitcdF9fdGVzdF9nd19ub2xvb2t1cCAyIDEgMjAwXG4rfVxuK1xuK3Rlc3RfY29tbWFuZF9vcl9rc2Z0X3NraXAoKVxuK3tcbitcdGxvY2FsIGNtZD1cIiQxXCJcbitcbitcdGlmIFsgISAteCBcIiQoY29tbWFuZCAtdiBcIiR7Y21kfVwiKVwiIF07IHRoZW5cbitcdFx0ZWNobyBcIlNLSVA6IENvdWxkIG5vdCBydW4gdGVzdCB3aXRob3V0IFxcXCIke2NtZH1cXFwiIHRvb2xcIlxuK1x0XHRleGl0IFwiJHtrc2Z0X3NraXB9XCJcbitcdGZpXG4rfVxuK1xuK3Rlc3RfdnJmX29yX2tzZnRfc2tpcCgpXG4re1xuK1x0bW9kcHJvYmUgdnJmIFx1MDAyNlx1MDAzZS9kZXYvbnVsbCB8fCB0cnVlXG4rXHRpZiBbICEgLWUgL3Byb2Mvc3lzL25ldC92cmYvc3RyaWN0X21vZGUgXTsgdGhlblxuK1x0XHRlY2hvIFwiU0tJUDogdnJmIHN5c2N0bCBkb2VzIG5vdCBleGlzdFwiXG4rXHRcdGV4aXQgXCIke2tzZnRfc2tpcH1cIlxuK1x0Zmlcbit9XG4rXG4rdGVzdF9kdW1teV9kZXZfb3Jfa3NmdF9za2lwKClcbit7XG4rXHRsb2NhbCB0ZXN0X25ldG5zXG4rXG4rXHRzZXR1cF9ucyB0ZXN0X25ldG5zXG4rXG4rXHRtb2Rwcm9iZSBkdW1teSBcdTAwMjZcdTAwM2UvZGV2L251bGwgfHwgdHJ1ZVxuK1x0aWYgISBpcCAtbmV0bnMgXCIke3Rlc3RfbmV0bnN9XCIgbGluayBhZGQgXCIke0RVTU1ZX0RFVk5BTUV9XCIgXFxcbitcdFx0XHR0eXBlIGR1bW15OyB0aGVuXG4rXHRcdGNsZWFudXBfbnMgXCIke3Rlc3RfbmV0bnN9XCJcbitcdFx0ZWNobyBcIlNLSVA6IGR1bW15IGRldiBub3Qgc3VwcG9ydGVkXCJcbitcdFx0ZXhpdCBcIiR7a3NmdF9za2lwfVwiXG4rXHRmaVxuK1xuK1x0Y2xlYW51cF9ucyBcIiR7dGVzdF9uZXRuc31cIlxuK31cbitcbit0ZXN0X2VuY2FwX2xvb2t1cF9zdXBwX29yX2tzZnRfc2tpcCgpXG4re1xuK1x0bG9jYWwgbnNuYW1lXG4rXG4rXHRzZXR1cF9ucyBuc25hbWVcbitcbitcdGlwIC1uZXRucyBcIiR7bnNuYW1lfVwiIGxpbmsgYWRkIFwiJHtEVU1NWV9ERVZOQU1FfVwiIHR5cGUgZHVtbXlcbitcdGlwIC1uZXRucyBcIiR7bnNuYW1lfVwiIGxpbmsgc2V0IFwiJHtEVU1NWV9ERVZOQU1FfVwiIHVwXG4rXG4rXHRpZiAhIGlwIC1uZXRucyBcIiR7bnNuYW1lfVwiIC02IHJvdXRlIGFkZCBcIiR7SVB2Nl9URVNUU19BRERSfS8xMjhcIiBcXFxuK1x0XHRcdGVuY2FwIHNlZzYgbW9kZSBlbmNhcCBzZWdzIGZjMDA6OjEgXFxcbitcdFx0XHRsb29rdXAgXCIke1RFU1RTX1RBQkxFX0lEfVwiIFxcXG4rXHRcdFx0ZGV2IFwiJHtEVU1NWV9ERVZOQU1FfVwiIDJcdTAwM2UvZGV2L251bGw7IHRoZW5cbitcdFx0Y2xlYW51cF9ucyBcIiR7bnNuYW1lfVwiXG4rXHRcdGVjaG8gXCJTS0lQOiBzZWc2IGVuY2FwIGxvb2t1cCBhdHRyaWJ1dGUgbm90IHN1cHBvcnRlZFwiXG4rXHRcdGV4aXQgXCIke2tzZnRfc2tpcH1cIlxuK1x0ZmlcbitcbitcdCMgQW4gb2xkIGtlcm5lbCB3aXRoIGEgcmVjZW50IGlwcm91dGUyIGFjY2VwdHMgdGhlIHJvdXRlIGJ1dFxuK1x0IyBzaWxlbnRseSBpZ25vcmVzIHRoZSBsb29rdXAgYXR0cmlidXRlLiBEdW1wIHRoZSByb3V0ZSBhbmQgY2hlY2tcbitcdCMgdGhlIGF0dHJpYnV0ZSBpcyByZWFsbHkgdGhlcmUsIG90aGVyd2lzZSB0aGUgdGVzdCBmYWxzZWx5IHBhc3Nlcy5cbitcdGlmICEgaXAgLW5ldG5zIFwiJHtuc25hbWV9XCIgLTYgcm91dGUgc2hvdyBcIiR7SVB2Nl9URVNUU19BRERSfS8xMjhcIiB8IFxcXG4rXHRcdFx0Z3JlcCAtcSBcImxvb2t1cCAke1RFU1RTX1RBQkxFX0lEfVwiOyB0aGVuXG4rXHRcdGNsZWFudXBfbnMgXCIke25zbmFtZX1cIlxuK1x0XHRlY2hvIFwiU0tJUDogc2VnNiBlbmNhcCBsb29rdXAgYXR0cmlidXRlIG5vdCBzdXBwb3J0ZWRcIlxuK1x0XHRleGl0IFwiJHtrc2Z0X3NraXB9XCJcbitcdGZpXG4rXG4rXHRjbGVhbnVwX25zIFwiJHtuc25hbWV9XCJcbit9XG4rXG4raWYgWyBcIiQoaWQgLXUpXCIgLW5lIDAgXTsgdGhlblxuK1x0ZWNobyBcIlNLSVA6IE5lZWQgcm9vdCBwcml2aWxlZ2VzXCJcbitcdGV4aXQgXCIke2tzZnRfc2tpcH1cIlxuK2ZpXG4rXG4rIyByZXF1aXJlZCBwcm9ncmFtcyB0byBjYXJyeSBvdXQgdGhpcyBzZWxmdGVzdFxuK3Rlc3RfY29tbWFuZF9vcl9rc2Z0X3NraXAgaXBcbit0ZXN0X2NvbW1hbmRfb3Jfa3NmdF9za2lwIHBpbmdcbit0ZXN0X2NvbW1hbmRfb3Jfa3NmdF9za2lwIHN5c2N0bFxuK3Rlc3RfY29tbWFuZF9vcl9rc2Z0X3NraXAgZ3JlcFxuK1xuK3Rlc3RfZHVtbXlfZGV2X29yX2tzZnRfc2tpcFxuK3Rlc3RfdnJmX29yX2tzZnRfc2tpcFxuK3Rlc3RfZW5jYXBfbG9va3VwX3N1cHBfb3Jfa3NmdF9za2lwXG4rXG4rc2V0IC1lXG4rdHJhcCBjbGVhbnVwIEVYSVRcbitcbitzZXR1cFxuK3NldCArZVxuK1xuK3JvdXRlcl90ZXN0c1xuK2hvc3QyZ2F0ZXdheV90ZXN0c1xuK2hvc3RfdnBuX3Rlc3RzXG4raG9zdF92cG5faXNvbGF0aW9uX3Rlc3RzXG4raG9zdF92cG5fbm9sb29rdXBfdGVzdHNcbitnd192cG5fdGVzdHNcbitnd192cG5faXNvbGF0aW9uX3Rlc3RzXG4rZ3dfdnBuX25vbG9va3VwX3Rlc3RzXG4rXG4rcHJpbnRfbG9nX3Rlc3RfcmVzdWx0c1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDg6NTQ6MTcuMzQ5Nzc1MjAxWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzY3NTAyNTM5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBTUnY2IFRhYmxlIEF0dHJpYnV0ZSBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0J3Mgc3RyYWlnaHRmb3J3YXJkLiBUaGV5J3ZlIGludHJvZHVjZWQgYSBjcml0aWNhbCBmZWF0dXJlOiB0aGUgYWJpbGl0eSB0byBzcGVjaWZ5IGEgRklCIHRhYmxlIGZvciBwb3N0LWVuY2Fwc3VsYXRpb24gU0lEIGxvb2t1cCB3aXRoaW4gU1J2NiB0dW5uZWxzLiBUaGlzIGlzIGEgZ2FtZS1jaGFuZ2VyIGZvciBzb3BoaXN0aWNhdGVkIG5ldHdvcmsgZGVzaWducywgYWxsb3dpbmcgZm9yIG11Y2ggbW9yZSBncmFudWxhciBjb250cm9sIG92ZXIgcm91dGluZyB3aXRoaW4gdGhlIHR1bm5lbC5cblxuVGhlIG1lYXQgb2YgdGhlIHdvcmsgaXMgaW4gYG5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuY2AuIFRoZXkndmUgYWRkZWQgYSBgc2VnNl90YWJsZV9sb29rdXBgIGZ1bmN0aW9uLCB3aGljaCBJIGxpa2UuIEl0J3MgY2xlYW4gYW5kIGZvY3VzZWQgb24gcmV0cmlldmluZyBhIHJvdXRlIGZyb20gYSBzcGVjaWZpYyB0YWJsZSwgaGFuZGxpbmcgdGhlIGxvb2t1cCBhbmQgZW5zdXJpbmcgdGhlIHRhYmxlIGFjdHVhbGx5IGV4aXN0cy4gIFRoZSB1c2Ugb2YgYGZpYjZfZ2V0X3RhYmxlYCBhbmQgYGlwNl9wb2xfcm91dGVgIGlzIGNvcnJlY3QgaGVyZSwgcmV1c2luZyBleGlzdGluZyBrZXJuZWwgaW5mcmFzdHJ1Y3R1cmUuXG5cblRoZSBOZXRsaW5rIGF0dHJpYnV0ZSBgU0VHNl9JUFRVTk5FTF9UQUJMRWAgaXMgdGhlIHVzZXItZmFjaW5nIHBhcnQsIGFuZCB0aGUgY29kZSBsb29rcyBzYW5lLiBJdCBhcHBlYXJzIHRoZSBhdHRyaWJ1dGUgaXMgcGFyc2VkIGluIGBzZWc2X2J1aWxkX3N0YXRlYC4gVmFsaWRhdGlvbiBpcyBpbmNsdWRlZCAoY2hlY2tpbmcgZm9yIG5vbi16ZXJvIGB0YWJsZWAgdmFsdWUpLCBhbmQgdGhleSdyZSB1c2luZyBgTkxfU0VUX0VSUl9NU0dgIGZvciBwcm9wZXIgZXJyb3IgcmVwb3J0aW5nIGJhY2sgdG8gdGhlIHVzZXIgc3BhY2UuIEdvb2QuXG5cbkknbGwgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGlzIGlzIGVuYWJsZWQuIFRpbWUgdG8gY2hlY2sgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uLiBJJ2xsIHNlYXJjaCBmb3IgYHNlZzZfaXB0dW5uZWwuY2Agd2l0aGluIHRoZSBgbmV0L2lwdjYvTWFrZWZpbGVgIGFuZCBgbmV0L2lwdjYvS2NvbmZpZ2AgZmlsZXMuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBJIG5lZWQgdG8gZW5hYmxlIHRoaXMuIFRoaXMgaXMgY3JpdGljYWwgdG8gZW5zdXJlIHRoaXMgY29kZSBpcyBhY3R1YWxseSBidWlsdCBhbmQgYXZhaWxhYmxlIGZvciB1c2UgaW4gZGVwbG95bWVudHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3MzA1LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTkwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDg6NTQ6MjUuMDI0ODAzMDcxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0MTgxMTgyNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZWc2X2lwdHVubmVsXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY2L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2Ni9NYWtlZmlsZT0yND1pcHY2LSQoQ09ORklHX05FVExBQkVMKSArPSBjYWxpcHNvLm9cXG5uZXQvaXB2Ni9NYWtlZmlsZToyNTppcHY2LSQoQ09ORklHX0lQVjZfU0VHNl9MV1RVTk5FTCkgKz0gc2VnNl9pcHR1bm5lbC5vIHNlZzZfbG9jYWwub1xcbm5ldC9pcHY2L01ha2VmaWxlLTI2LWlwdjYtJChDT05GSUdfSVBWNl9TRUc2X0hNQUMpICs9IHNlZzZfaG1hYy5vXFxuLS1cXG5uZXQvaXB2Ni9zZWc2LmM9NTA4PWludCBfX2luaXQgc2VnNl9pbml0KHZvaWQpXFxuLS1cXG5uZXQvaXB2Ni9zZWc2LmMtNTE5LVxcbm5ldC9pcHY2L3NlZzYuYzo1MjA6XFx0ZXJyID0gc2VnNl9pcHR1bm5lbF9pbml0KCk7XFxubmV0L2lwdjYvc2VnNi5jLTUyMS1cXHRpZiAoZXJyKVxcbi0tXFxubmV0L2lwdjYvc2VnNi5jLTUzMi1vdXRfdW5yZWdpc3Rlcl9pcHR1bjpcXG5uZXQvaXB2Ni9zZWc2LmM6NTMzOlxcdHNlZzZfaXB0dW5uZWxfZXhpdCgpO1xcbm5ldC9pcHY2L3NlZzYuYy01MzQtb3V0X3VucmVnaXN0ZXJfZ2VubDpcXG4tLVxcbm5ldC9pcHY2L3NlZzYuYz01NDE9dm9pZCBzZWc2X2V4aXQodm9pZClcXG4tLVxcbm5ldC9pcHY2L3NlZzYuYy01NDMtXFx0c2VnNl9sb2NhbF9leGl0KCk7XFxubmV0L2lwdjYvc2VnNi5jOjU0NDpcXHRzZWc2X2lwdHVubmVsX2V4aXQoKTtcXG5uZXQvaXB2Ni9zZWc2LmMtNTQ1LVxcdGdlbmxfdW5yZWdpc3Rlcl9mYW1pbHkoXFx1MDAyNnNlZzZfZ2VubF9mYW1pbHkpO1xcbi0tXFxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jLTIxLSNpbmNsdWRlIFxcdTAwM2NsaW51eC9zZWc2LmhcXHUwMDNlXFxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jOjIyOiNpbmNsdWRlIFxcdTAwM2NsaW51eC9zZWc2X2lwdHVubmVsLmhcXHUwMDNlXFxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jLTIzLSNpbmNsdWRlIFxcdTAwM2NuZXQvYWRkcmNvbmYuaFxcdTAwM2VcXG4tLVxcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYy0zMC1cXG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmM6MzE6c3RhdGljIHNpemVfdCBzZWc2X2x3dF9oZWFkcm9vbShzdHJ1Y3Qgc2VnNl9pcHR1bm5lbF9lbmNhcCAqdHVuaW5mbylcXG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmMtMzIte1xcbi0tXFxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jPTUwPXN0cnVjdCBzZWc2X2x3dCB7XFxuLS1cXG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmMtNTQtXFx0dTMyIHRhYmxlO1xcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYzo1NTpcXHRzdHJ1Y3Qgc2VnNl9pcHR1bm5lbF9lbmNhcCB0dW5pbmZvW107XFxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jLTU2LX07XFxuLS1cXG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmM9NTg9c3RhdGljIGlubGluZSBzdHJ1Y3Qgc2VnNl9sd3QgKnNlZzZfbHd0X2x3dHVubmVsKHN0cnVjdCBsd3R1bm5lbF9zdGF0ZSAqbHd0KVxcbi0tXFxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jLTYyLVxcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYzo2MzpzdGF0aWMgaW5saW5lIHN0cnVjdCBzZWc2X2lwdHVubmVsX2VuY2FwICpcXG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmMtNjQtc2VnNl9lbmNhcF9sd3R1bm5lbChzdHJ1Y3QgbHd0dW5uZWxfc3RhdGUgKmx3dClcXG4tLVxcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYy02OC1cXG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmM6Njk6c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IHNlZzZfaXB0dW5uZWxfcG9saWN5W1NFRzZfSVBUVU5ORUxfTUFYICsgMV0gPSB7XFxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jLTcwLVxcdFtTRUc2X0lQVFVOTkVMX1NSSF1cXHQ9IHsgLnR5cGUgPSBOTEFfQklOQVJZIH0sXFxuLS1cXG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmM9NzU9c3RhdGljIGludCBubGFfcHV0X3NyaChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgYXR0cnR5cGUsXFxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jOjc2OlxcdFxcdCAgICAgICBzdHJ1Y3Qgc2VnNl9pcHR1bm5lbF9lbmNhcCAqdHVuaW5mbylcXG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmMtNzcte1xcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYzo3ODpcXHRzdHJ1Y3Qgc2VnNl9pcHR1bm5lbF9lbmNhcCAqZGF0YTtcXG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmMtNzktXFx0c3RydWN0IG5sYXR0ciAqbmxhO1xcbi0tXFxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jPTIyNT1zdGF0aWMgaW50IHNlZzZfZG9fc3JoX2VuY2FwX3JlZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jLTI0Ny1cXHRcXHQvKiBOT1RFOiBpZiB0YWcvZmxhZ3MgYW5kL29yIG90aGVyIFRMVnMgYXJlIGludHJvZHVjZWQgaW4gdGhlXFxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jOjI0ODpcXHRcXHQgKiBzZWc2X2lwdHVubmVsIGluZnJhc3RydWN0dXJlLCB0aGV5IHNob3VsZCBiZSBjb25zaWRlcmVkIHdoZW5cXG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmMtMjQ5LVxcdFxcdCAqIGRlY2lkaW5nIHRvIHNraXAgdGhlIFNSSC5cXG4tLVxcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYz0zOTg9c3RhdGljIGludCBzZWc2X2RvX3NyaChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZHN0X2VudHJ5ICpjYWNoZV9kc3QpXFxuLS1cXG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmMtNDAwLVxcdHN0cnVjdCBkc3RfZW50cnkgKmRzdCA9IHNrYl9kc3Qoc2tiKTtcXG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmM6NDAxOlxcdHN0cnVjdCBzZWc2X2lwdHVubmVsX2VuY2FwICp0aW5mbztcXG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmMtNDAyLVxcdHN0cnVjdCBzZWc2X2x3dCAqc2x3dDtcXG4tLVxcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYz03NDc9c3RhdGljIGludCBzZWc2X2J1aWxkX3N0YXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5sYXR0ciAqbmxhLFxcbi0tXFxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jLTc1Mi1cXHRzdHJ1Y3QgbmxhdHRyICp0YltTRUc2X0lQVFVOTkVMX01BWCArIDFdO1xcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYzo3NTM6XFx0c3RydWN0IHNlZzZfaXB0dW5uZWxfZW5jYXAgKnR1bmluZm87XFxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jLTc1NC1cXHRzdHJ1Y3QgbHd0dW5uZWxfc3RhdGUgKm5ld3RzO1xcbi0tXFxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jLTc2Mi1cXHRlcnIgPSBubGFfcGFyc2VfbmVzdGVkX2RlcHJlY2F0ZWQodGIsIFNFRzZfSVBUVU5ORUxfTUFYLCBubGEsXFxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jOjc2MzpcXHRcXHRcXHRcXHRcXHQgIHNlZzZfaXB0dW5uZWxfcG9saWN5LCBleHRhY2spO1xcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYy03NjQtXFxuLS1cXG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmM9ODc1PXN0YXRpYyBpbnQgc2VnNl9maWxsX2VuY2FwX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYy04Nzcte1xcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYzo4Nzg6XFx0c3RydWN0IHNlZzZfaXB0dW5uZWxfZW5jYXAgKnR1bmluZm8gPSBzZWc2X2VuY2FwX2x3dHVubmVsKGx3dHN0YXRlKTtcXG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmMtODc5LVxcdHN0cnVjdCBzZWc2X2x3dCAqc2x3dCA9IHNlZzZfbHd0X2x3dHVubmVsKGx3dHN0YXRlKTtcXG4tLVxcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYz04OTU9c3RhdGljIGludCBzZWc2X2VuY2FwX25sc2l6ZShzdHJ1Y3QgbHd0dW5uZWxfc3RhdGUgKmx3dHN0YXRlKVxcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYy04OTYte1xcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYzo4OTc6XFx0c3RydWN0IHNlZzZfaXB0dW5uZWxfZW5jYXAgKnR1bmluZm8gPSBzZWc2X2VuY2FwX2x3dHVubmVsKGx3dHN0YXRlKTtcXG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmMtODk4LVxcdHN0cnVjdCBzZWc2X2x3dCAqc2x3dCA9IHNlZzZfbHd0X2x3dHVubmVsKGx3dHN0YXRlKTtcXG4tLVxcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYz05MTI9c3RhdGljIGludCBzZWc2X2VuY2FwX2NtcChzdHJ1Y3QgbHd0dW5uZWxfc3RhdGUgKmEsIHN0cnVjdCBsd3R1bm5lbF9zdGF0ZSAqYilcXG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmMtOTEzLXtcXG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmM6OTE0OlxcdHN0cnVjdCBzZWc2X2lwdHVubmVsX2VuY2FwICphX2hkciA9IHNlZzZfZW5jYXBfbHd0dW5uZWwoYSk7XFxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jOjkxNTpcXHRzdHJ1Y3Qgc2VnNl9pcHR1bm5lbF9lbmNhcCAqYl9oZHIgPSBzZWc2X2VuY2FwX2x3dHVubmVsKGIpO1xcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYy05MTYtXFx0c3RydWN0IHNlZzZfbHd0ICphX3Nsd3QgPSBzZWc2X2x3dF9sd3R1bm5lbChhKTtcXG4tLVxcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYz05MzI9c3RhdGljIGNvbnN0IHN0cnVjdCBsd3R1bm5lbF9lbmNhcF9vcHMgc2VnNl9pcHR1bl9vcHMgPSB7XFxuLS1cXG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmMtOTQyLVxcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYzo5NDM6aW50IF9faW5pdCBzZWc2X2lwdHVubmVsX2luaXQodm9pZClcXG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmMtOTQ0LXtcXG4tLVxcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYy05NDctXFxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jOjk0ODp2b2lkIHNlZzZfaXB0dW5uZWxfZXhpdCh2b2lkKVxcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYy05NDkte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwODo1NDoyNS4yNjY2MjEwMjdaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDA5NTYxNTkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBJUHY2IFNlZ21lbnQgUm91dGluZyB3aXRoIElQdjYgTFdUdW5uZWwgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBuYWlsIGRvd24gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGZvciB0aGUgU2VnbWVudCBSb3V0aW5nIHdpdGggSVB2NiBMV1R1bm5lbCBmZWF0dXJlLiBSaWdodCwgSSByZW1lbWJlciBzZWVpbmcgc29tZXRoaW5nIGxpa2UgYENPTkZJR19JUFY2X1NFRzZfTFdUVU5ORUxgLiBMZXQgbWUganVzdCBkb3VibGUtY2hlY2sgdGhhdC4gV2hlcmUgaXMgdGhlIGF1dGhvcml0YXRpdmUgc291cmNlIGZvciB0aGVzZSBrZXJuZWwgY29uZmlnIG9wdGlvbnM/IEFoLCB0aGF0IHdvdWxkIGJlIGBuZXQvaXB2Ni9LY29uZmlnYC4gVGltZSB0byBjcmFjayB0aGF0IGZpbGUgb3BlbiBhbmQgY29uZmlybSB0aGUgZXhhY3QgbmFtZSBhbmQgYW55IGRlcGVuZGVuY2llcyBvciByZWxhdGVkIG9wdGlvbnMgc3Vycm91bmRpbmcgYElQVjZfU0VHNl9MV1RVTk5FTGAuIEdvdHRhIG1ha2Ugc3VyZSBJJ20gdXNpbmcgdGhlIHJpZ2h0IGtub2IsIGFuZCB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IHdpdGhpbiB0aGUgbGFyZ2VyIElQdjYgc3RhY2sgY29uZmlndXJhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA0ODcsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwODo1NDoyOC4yNzYxODUyODdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzU3ODgzMDc1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIklQVjZfU0VHNl9MV1RVTk5FTFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2Ni9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY2L0tjb25maWc9Mjc5PWNvbmZpZyBJUFY2X1BJTVNNX1YyXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTI4NS1cXG5uZXQvaXB2Ni9LY29uZmlnOjI4Njpjb25maWcgSVBWNl9TRUc2X0xXVFVOTkVMXFxubmV0L2lwdjYvS2NvbmZpZy0yODctXFx0Ym9vbCBcXFwiSVB2NjogU2VnbWVudCBSb3V0aW5nIEhlYWRlciBlbmNhcHN1bGF0aW9uIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnPTMxMj1jb25maWcgSVBWNl9TRUc2X0JQRlxcbm5ldC9pcHY2L0tjb25maWctMzEzLVxcdGRlZl9ib29sIHlcXG5uZXQvaXB2Ni9LY29uZmlnOjMxNDpcXHRkZXBlbmRzIG9uIElQVjZfU0VHNl9MV1RVTk5FTFxcbm5ldC9pcHY2L0tjb25maWctMzE1LVxcdGRlcGVuZHMgb24gSVBWNiA9IHlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDg6NTQ6MjkuMDM0MDc1NjIxWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTk2OTg0NTEwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG4qKklQIHY2IFNlZ21lbnQgUm91dGluZyBDb25maWd1cmF0aW9uIENvbnNpZGVyYXRpb25zKipcblxuUmlnaHQsIHNvIEknbSBmb2N1c2luZyBvbiBzZXR0aW5nIHVwIHNlZ21lbnQgcm91dGluZyB3aXRoIElQdjYuIE15IHByaW1hcnkgY29uZmlnIG9wdGlvbiBoZXJlIGlzIGBJUFY2X1NFRzZfTFdUVU5ORUxgLiBUaGF0J3MgdGhlIGJpZyBvbmUuIEJ1dCBJIGtub3cgZnJvbSBleHBlcmllbmNlIHRoYXQgdGhlc2UgdGhpbmdzIHJhcmVseSBzdGFuZCBhbG9uZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueSBvdGhlciBjcnVjaWFsIGRlcGVuZGVuY2llcy4gYExXVFVOTkVMYCBpcyBhIGxpa2VseSBjYW5kaWRhdGU7IEknbGwgZmxhZyB0aGF0IGFzIHNvbWV0aGluZyB0byB2ZXJpZnkuIFRvIGJlIGFic29sdXRlbHkgdGhvcm91Z2ggYW5kIG1ha2Ugc3VyZSBJJ3ZlIGdvdCBldmVyeXRoaW5nIG5haWxlZCBkb3duLCBJJ20gZ29pbmcgdG8gZGlnIGludG8gYG5ldC9pcHY2L0tjb25maWdgLiBUaGF0J3Mgd2hlcmUgYWxsIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgZGVmaW5lZCBmb3IgdGhlIElQdjYgc3RhY2suIEknbGwgbmVlZCB0byBkb3VibGUgY2hlY2sgYElQVjZfU0VHNl9MV1RVTk5FTGAgdG8gc2VlIHdoaWNoIG90aGVyIG9wdGlvbnMgYXJlIGNvbm5lY3RlZCwgYW5kIGlmIGFueXRoaW5nIGVsc2UgaXMgbmVlZGVkIG9yIHJlY29tbWVuZGVkIHRvIGdldCB0aGlzIHRoaW5nIHdvcmtpbmcgY29ycmVjdGx5LiBJdCdzIGJlc3QgdG8gYmUgc3VyZSBvZiB0aGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDkxOSwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDA4OjU0OjM1LjAwMzkyNDUyNFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTM3MjgzODIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElQVjZfU0VHNl9MV1RVTk5FTFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2Ni9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY2L0tjb25maWc9Mjc5PWNvbmZpZyBJUFY2X1BJTVNNX1YyXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTI4NS1cXG5uZXQvaXB2Ni9LY29uZmlnOjI4Njpjb25maWcgSVBWNl9TRUc2X0xXVFVOTkVMXFxubmV0L2lwdjYvS2NvbmZpZy0yODctXFx0Ym9vbCBcXFwiSVB2NjogU2VnbWVudCBSb3V0aW5nIEhlYWRlciBlbmNhcHN1bGF0aW9uIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDA4OjU0OjM1LjI5NzY1ODk5NloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwOTQzMTY3MDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlIGxpa2UgeW91cnNlbGY6XG5cbioqQW5hbHl6aW5nIHRoZSBDb25maWd1cmF0aW9uIERlcGVuZGVuY3kqKlxuXG5BbHJpZ2h0LCBteSBicmFpbidzIGtpY2tpbmcgaW50byBnZWFyLiBGaXJzdCwgbGV0J3MgemVybyBpbiBvbiB0aG9zZSBsaW5lcyBzdXJyb3VuZGluZyBgY29uZmlnIElQVjZfU0VHNl9MV1RVTk5FTGAuIE15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiB0aGUgc3Vycm91bmRpbmcgY29udGV4dC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBhbmQgaW50ZXJhY3Rpb25zIGFyb3VuZCB0aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBXaGF0IG90aGVyIGZlYXR1cmVzIG9yIHNldHRpbmdzIGFyZSBpbnZvbHZlZD8gQXJlIHRoZXJlIGFueSBwcmVyZXF1aXNpdGVzIEkgc2hvdWxkIGJlIGF3YXJlIG9mLCBsaWtlIHNwZWNpZmljIGtlcm5lbCBtb2R1bGVzIG9yIG90aGVyIG5ldHdvcmtpbmcgc3RhY2sgY29tcG9uZW50cz8gQXJlIHRoZXJlIGFueSBvYnZpb3VzIGNvbmZsaWN0cyB0byBsb29rIGZvcj8gV2UgY2FuIGFsc28gY2hlY2sgdGhlIEtjb25maWcsIHRvIHNlZSBpZiB0aGVyZSBpcyBhbnkgaGVscCB0ZXh0IHRvIGFzc2lzdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjEzMzQsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwODo1NDozOC4zOTE5Nzk1OTFaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAyNTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9pcHY2L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjgwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjgwOlxcdFxcdGJvb2wgXFxcIklQdjY6IFBJTS1TTSB2ZXJzaW9uIDIgc3VwcG9ydFxcXCJcXG4gMjgxOlxcdFxcdGRlcGVuZHMgb24gSVBWNl9NUk9VVEVcXG4gMjgyOlxcdFxcdGhlbHBcXG4gMjgzOlxcdFxcdCAgU3VwcG9ydCBmb3IgSVB2NiBQSU0gbXVsdGljYXN0IHJvdXRpbmcgcHJvdG9jb2wgUElNLVNNdjIuXFxuIDI4NDpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuIDI4NTpcXHRcXG4gMjg2OlxcdGNvbmZpZyBJUFY2X1NFRzZfTFdUVU5ORUxcXG4gMjg3OlxcdFxcdGJvb2wgXFxcIklQdjY6IFNlZ21lbnQgUm91dGluZyBIZWFkZXIgZW5jYXBzdWxhdGlvbiBzdXBwb3J0XFxcIlxcbiAyODg6XFx0XFx0ZGVwZW5kcyBvbiBJUFY2XFxuIDI4OTpcXHRcXHRzZWxlY3QgTFdUVU5ORUxcXG4gMjkwOlxcdFxcdHNlbGVjdCBEU1RfQ0FDSEVcXG4gMjkxOlxcdFxcdHNlbGVjdCBJUFY2X01VTFRJUExFX1RBQkxFU1xcbiAyOTI6XFx0XFx0aGVscFxcbiAyOTM6XFx0XFx0ICBTdXBwb3J0IGZvciBlbmNhcHN1bGF0aW9uIG9mIHBhY2tldHMgd2l0aGluIGFuIG91dGVyIElQdjZcXG4gMjk0OlxcdFxcdCAgaGVhZGVyIGFuZCBhIFNlZ21lbnQgUm91dGluZyBIZWFkZXIgdXNpbmcgdGhlIGxpZ2h0d2VpZ2h0XFxuIDI5NTpcXHRcXHQgIHR1bm5lbHMgbWVjaGFuaXNtLiBBbHNvIGVuYWJsZSBzdXBwb3J0IGZvciBhZHZhbmNlZCBsb2NhbFxcbiAyOTY6XFx0XFx0ICBwcm9jZXNzaW5nIG9mIFNSdjYgcGFja2V0cyBiYXNlZCBvbiB0aGVpciBhY3RpdmUgc2VnbWVudC5cXG4gMjk3OlxcdFxcbiAyOTg6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBOLlxcbiAyOTk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDA4OjU0OjM4LjM5MjA4NjkwMVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTE2MjMxNDMwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFN0cmF0ZWd5IGZvciBTUnY2IEVuY2Fwc3VsYXRpb24gUm91dGluZyBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggaW50cm9kdWNpbmcgYSBuZXcgTmV0bGluayBhdHRyaWJ1dGUsIGBTRUc2X0lQVFVOTkVMX1RBQkxFYCwgdG8gYWxsb3cgc3BlY2lmeWluZyBhIEZJQiB0YWJsZSBmb3IgcG9zdC1lbmNhcCBTSUQgbG9va3VwIHdpdGhpbiBTUnY2IHR1bm5lbHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGFkZGl0aW9uIHRoYXQgZGlyZWN0bHkgaW1wYWN0cyB0aGUgSVB2NiBTZWdtZW50IFJvdXRpbmcgc3Vic3lzdGVtLCBzbyBmdXp6aW5nIGlzIGRlZmluaXRlbHkgd2FycmFudGVkLiBUaGUgY29yZSBjb25maWd1cmF0aW9uIGlzIGBJUFY2X1NFRzZfTFdUVU5ORUxgLCB3aGljaCBzZWVtcyBzdWZmaWNpZW50IGdpdmVuIHRoYXQgdGhlIHBhdGNoIGxldmVyYWdlcyBzdGFuZGFyZCBJUHY2IHJvdXRpbmcgZnVuY3Rpb25zIGxpa2UgYGZpYjZfZ2V0X3RhYmxlYCAocmVxdWlyaW5nIGBDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVNgLCB3aGljaCBpcyBzZWxlY3RlZCBieSBgSVBWNl9TRUc2X0xXVFVOTkVMYCkgYW5kIGBpcDZfcG9sX3JvdXRlYC5cblxuTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiB0aGUgZnVuY3Rpb25zIG1vc3QgZGlyZWN0bHkgYWZmZWN0ZWQgYnkgdGhpcyBuZXcgYXR0cmlidXRlIGFuZCBsb2dpYy4gVGhlIHByaW1hcnkgZmlsZSB0byBleGFtaW5lIGlzIGBuZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmNgLlxuXG5IZXJlJ3MgbXkgdGFyZ2V0IGxpc3Q6XG5cbiogICBgc2VnNl90YWJsZV9sb29rdXBgOiBDcml0aWNhbCBmb3IgdGhlIG5ldyBGSUIgdGFibGUgbG9va3VwLlxuKiAgIGBzZWc2X2lucHV0X3JvdXRlYDogQ2FsbGVkIGZyb20gYHNlZzZfaW5wdXRfY29yZWAsIHNvIGl0J3MgZGlyZWN0bHkgaW52b2x2ZWQgaW4gdGhlIGlucHV0IHBhdGguXG4qICAgYHNlZzZfb3V0cHV0X2RzdF9sb29rdXBgOiBTaW1pbGFyIHRvIGBzZWc2X2lucHV0X3JvdXRlYCwgYnV0IGZvciB0aGUgb3V0cHV0IHBhdGguIEl0J3MgY2FsbGVkIGZyb20gYHNlZzZfb3V0cHV0X2NvcmVgLlxuKiAgIGBzZWc2X2J1aWxkX3N0YXRlYDogVGhpcyBoYW5kbGVzIHRoZSBOZXRsaW5rIGNvbmZpZ3VyYXRpb24sIHNvIGl0J3MgYSBwcmltZSB0YXJnZXQgZm9yIGZ1enppbmcgdGhlIG5ldyBhdHRyaWJ1dGUuXG4qICAgYHNlZzZfZmlsbF9lbmNhcF9pbmZvYFxuKiAgIGBzZWc2X2VuY2FwX25sc2l6ZWBcbiogICBgc2VnNl9lbmNhcF9jbXBgXG5cbldoaWxlIGBzZWc2X2lucHV0X2NvcmVgIGFuZCBgc2VnNl9vdXRwdXRfY29yZWAgYXJlIHRoZSBjb3JlIGZvcndhcmRpbmcgZnVuY3Rpb25zLCBJJ20gZ29pbmcgdG8gZm9jdXMgb24gdGhlIGBzZWc2X3RhYmxlX2xvb2t1cGAsIGBzZWc2X2lucHV0X3JvdXRlYCwgYHNlZzZfb3V0cHV0X2RzdF9sb29rdXBgIGFuZCBgc2VnNl9idWlsZF9zdGF0ZWAgZnVuY3Rpb25zLCBhcyB0aGV5IGFyZSBzcGVjaWZpYyB0byB0aGUgbmV3IGZ1bmN0aW9uYWxpdHkgYW5kLCB0aHVzLCBtb3JlIGxpa2VseSB0byBleHBvc2Ugbm92ZWwgdnVsbmVyYWJpbGl0aWVzIHJlbGF0ZWQgdG8gdGhpcyBwYXRjaC4gVGhlIG90aGVyIGZ1bmN0aW9ucyBhcmUgcmVsYXRlZCB0byB0aGUgY29yZSBsb2dpYywgd2hpY2ggaXMgYWxzbyB3b3J0aCB0ZXN0aW5nLlxuXG5UaGUgaGlnaC1sZXZlbCByZWFzb25pbmcgaXMgdGhpczogdGhlIHBhdGNoIGZ1bmRhbWVudGFsbHkgYWx0ZXJzIHRoZSBTUnY2IGVuY2Fwc3VsYXRpb24gcGF0aCB0byBpbmNvcnBvcmF0ZSBhIHVzZXItc3BlY2lmaWVkIEZJQiB0YWJsZSBsb29rdXAuIFRoaXMgaW50cm9kdWNlcyBhIG5ldyBjb2RlIHBhdGggYW5kIHBvdGVudGlhbCBmb3IgdW5leHBlY3RlZCBiZWhhdmlvciBpbiB0aGUgcm91dGluZyBsb2dpYywgcGFydGljdWxhcmx5IGlmIHRoZSBwcm92aWRlZCB0YWJsZSBpcyBtYWxmb3JtZWQgb3IgaW52YWxpZC4gVGhlIGZ1bmN0aW9ucyBsaXN0ZWQgYWJvdmUgYXJlIGdvaW5nIHRvIGJlIGtleSB0byB0ZXN0aW5nIHRoZSBuZXcgZnVuY3Rpb25hbGl0eS4gSSdsbCB1c2UgdGhlIGBzZXQtcmVzdWx0c2AgdG9vbCB0byBmaW5hbGl6ZSB0aGUgYW5hbHlzaXMgYW5kIGZlZWQgdGhlc2UgdGFyZ2V0cyBpbnRvIHRoZSBmdXp6ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxODMxLCJPdXRwdXRUb2tlbnMiOjIxNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc2MSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDA4OjU0OjQ5LjU1NDQwNDM0MloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwOTcxODgxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBWNl9TRUc2X0xXVFVOTkVMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic2VnNl90YWJsZV9sb29rdXBcIixcbiAgICBcInNlZzZfaW5wdXRfcm91dGVcIixcbiAgICBcInNlZzZfb3V0cHV0X2RzdF9sb29rdXBcIixcbiAgICBcInNlZzZfYnVpbGRfc3RhdGVcIixcbiAgICBcInNlZzZfZmlsbF9lbmNhcF9pbmZvXCIsXG4gICAgXCJzZWc2X2VuY2FwX25sc2l6ZVwiLFxuICAgIFwic2VnNl9lbmNhcF9jbXBcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgbmV3IE5ldGxpbmsgYXR0cmlidXRlIGBTRUc2X0lQVFVOTkVMX1RBQkxFYCB0byBzcGVjaWZ5IGEgRklCIHRhYmxlIGZvciBwb3N0LWVuY2FwIFNJRCBsb29rdXAgaW4gU1J2NiB0dW5uZWxzLiBJdCBtb2RpZmllcyB0aGUgU1J2NiBlbmNhcHN1bGF0aW9uIGxvZ2ljIGluIGBuZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmNgIHRvIHBlcmZvcm0gcm91dGUgbG9va3VwcyBpbiB0aGUgc3BlY2lmaWVkIHRhYmxlIGR1cmluZyBib3RoIGlucHV0IGFuZCBvdXRwdXQgcGF0aHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byByZWFjaGFibGUgY29yZSBrZXJuZWwgbmV0d29ya2luZyBsb2dpYywgc3BlY2lmaWNhbGx5IHRoZSBJUHY2IFNlZ21lbnQgUm91dGluZyBzdWJzeXN0ZW0sIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQVjZfU0VHNl9MV1RVTk5FTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInNlZzZfdGFibGVfbG9va3VwXCIsXG4gICAgXCJzZWc2X2lucHV0X3JvdXRlXCIsXG4gICAgXCJzZWc2X291dHB1dF9kc3RfbG9va3VwXCIsXG4gICAgXCJzZWc2X2J1aWxkX3N0YXRlXCIsXG4gICAgXCJzZWc2X2ZpbGxfZW5jYXBfaW5mb1wiLFxuICAgIFwic2VnNl9lbmNhcF9ubHNpemVcIixcbiAgICBcInNlZzZfZW5jYXBfY21wXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIG5ldyBOZXRsaW5rIGF0dHJpYnV0ZSBgU0VHNl9JUFRVTk5FTF9UQUJMRWAgdG8gc3BlY2lmeSBhIEZJQiB0YWJsZSBmb3IgcG9zdC1lbmNhcCBTSUQgbG9va3VwIGluIFNSdjYgdHVubmVscy4gSXQgbW9kaWZpZXMgdGhlIFNSdjYgZW5jYXBzdWxhdGlvbiBsb2dpYyBpbiBgbmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jYCB0byBwZXJmb3JtIHJvdXRlIGxvb2t1cHMgaW4gdGhlIHNwZWNpZmllZCB0YWJsZSBkdXJpbmcgYm90aCBpbnB1dCBhbmQgb3V0cHV0IHBhdGhzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gcmVhY2hhYmxlIGNvcmUga2VybmVsIG5ldHdvcmtpbmcgbG9naWMsIHNwZWNpZmljYWxseSB0aGUgSVB2NiBTZWdtZW50IFJvdXRpbmcgc3Vic3lzdGVtLCBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowp6fjj[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-12 08:38:34 +0000 UTC FinishedAt: 2026-07-12 08:54:51 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IPV6_SEG6_LWTUNNEL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IPV6_SEG6_LWTUNNEL" ], "series_id": "d9361371-0204-496e-b2d2-71ee96506940" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "seg6_table_lookup", "seg6_input_route", "seg6_output_dst_lookup", "seg6_build_state", "seg6_fill_encap_info", "seg6_encap_nlsize", "seg6_encap_cmp" ], "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+CgkJCTx0ZD4yMDI2LzA3LzEyIDA4OjU0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQVjZfU0VHNl9MV1RVTk5FTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3NlZzZfdGFibGVfbG9va3VwJiMzNDssCiAgICAmIzM0O3NlZzZfaW5wdXRfcm91dGUmIzM0OywKICAgICYjMzQ7c2VnNl9vdXRwdXRfZHN0X2xvb2t1cCYjMzQ7LAogICAgJiMzNDtzZWc2X2J1aWxkX3N0YXRlJiMzNDssCiAgICAmIzM0O3NlZzZfZmlsbF9lbmNhcF9pbmZvJiMzNDssCiAgICAmIzM0O3NlZzZfZW5jYXBfbmxzaXplJiMzNDssCiAgICAmIzM0O3NlZzZfZW5jYXBfY21wJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBuZXcgTmV0bGluayBhdHRyaWJ1dGUgYFNFRzZfSVBUVU5ORUxfVEFCTEVgIHRvIHNwZWNpZnkgYSBGSUIgdGFibGUgZm9yIHBvc3QtZW5jYXAgU0lEIGxvb2t1cCBpbiBTUnY2IHR1bm5lbHMuIEl0IG1vZGlmaWVzIHRoZSBTUnY2IGVuY2Fwc3VsYXRpb24gbG9naWMgaW4gYG5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuY2AgdG8gcGVyZm9ybSByb3V0ZSBsb29rdXBzIGluIHRoZSBzcGVjaWZpZWQgdGFibGUgZHVyaW5nIGJvdGggaW5wdXQgYW5kIG91dHB1dCBwYXRocy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBuZXR3b3JraW5nIGxvZ2ljLCBzcGVjaWZpY2FsbHkgdGhlIElQdjYgU2VnbWVudCBSb3V0aW5nIHN1YnN5c3RlbSwgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDg6NTQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBiZDBmNDdhODhiMGQ1MDk0YjlmZDQzMWNhMDRjMjFlOGY2NmM3ZjAxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBKdWwgMTIgMDg6NTQ6MTQgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L3NlZzZfaXB0dW5uZWwuaCBiL2luY2x1ZGUvdWFwaS9saW51eC9zZWc2X2lwdHVubmVsLmhcbmluZGV4IDQ4NTg4OWIxOTkwMGVhLi5lMTk2NGIzYTRiYjBhZiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC9zZWc2X2lwdHVubmVsLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvdWFwaS9saW51eC9zZWc2X2lwdHVubmVsLmhcbkBAIC0yMSw2ICYjNDM7MjEsNyBAQCBlbnVtIHtcbiBcdFNFRzZfSVBUVU5ORUxfVU5TUEVDLFxuIFx0U0VHNl9JUFRVTk5FTF9TUkgsXG4gXHRTRUc2X0lQVFVOTkVMX1NSQyxcdC8qIHN0cnVjdCBpbjZfYWRkciAqL1xuJiM0MztcdFNFRzZfSVBUVU5ORUxfVEFCTEUsXHQvKiBfX3UzMiBGSUIgdGFibGUgZm9yIHBvc3QtZW5jYXAgU0lEIGxvb2t1cCAqL1xuIFx0X19TRUc2X0lQVFVOTkVMX01BWCxcbiB9O1xuICNkZWZpbmUgU0VHNl9JUFRVTk5FTF9NQVggKF9fU0VHNl9JUFRVTk5FTF9NQVggLSAxKVxuZGlmZiAtLWdpdCBhL25ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYyBiL25ldC9pcHY2L3NlZzZfaXB0dW5uZWwuY1xuaW5kZXggNGM0NWMwYTc3ZDc1ZDAuLjYxYzZhMjdiZjIwMmRkIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmNcbkBAIC01MSw2ICYjNDM7NTEsNyBAQCBzdHJ1Y3Qgc2VnNl9sd3Qge1xuIFx0c3RydWN0IGRzdF9jYWNoZSBjYWNoZV9pbnB1dDtcbiBcdHN0cnVjdCBkc3RfY2FjaGUgY2FjaGVfb3V0cHV0O1xuIFx0c3RydWN0IGluNl9hZGRyIHR1bnNyYztcbiYjNDM7XHR1MzIgdGFibGU7XG4gXHRzdHJ1Y3Qgc2VnNl9pcHR1bm5lbF9lbmNhcCB0dW5pbmZvW107XG4gfTtcbiBcbkBAIC02OCw2ICYjNDM7NjksNyBAQCBzZWc2X2VuY2FwX2x3dHVubmVsKHN0cnVjdCBsd3R1bm5lbF9zdGF0ZSAqbHd0KVxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBzZWc2X2lwdHVubmVsX3BvbGljeVtTRUc2X0lQVFVOTkVMX01BWCAmIzQzOyAxXSA9IHtcbiBcdFtTRUc2X0lQVFVOTkVMX1NSSF1cdD0geyAudHlwZSA9IE5MQV9CSU5BUlkgfSxcbiBcdFtTRUc2X0lQVFVOTkVMX1NSQ11cdD0gTkxBX1BPTElDWV9FWEFDVF9MRU4oc2l6ZW9mKHN0cnVjdCBpbjZfYWRkcikpLFxuJiM0MztcdFtTRUc2X0lQVFVOTkVMX1RBQkxFXVx0PSB7IC50eXBlID0gTkxBX1UzMiB9LFxuIH07XG4gXG4gc3RhdGljIGludCBubGFfcHV0X3NyaChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgYXR0cnR5cGUsXG5AQCAtNDc5LDYgJiM0Mzs0ODEsNzMgQEAgaW50IHNlZzZfZG9fc3JoX2lubGluZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaXB2Nl9zcl9oZHIgKm9zcmgpXG4gfVxuIEVYUE9SVF9TWU1CT0xfR1BMKHNlZzZfZG9fc3JoX2lubGluZSk7XG4gXG4mIzQzOy8qIGxvb2sgdXAgYSByb3V0ZSBpbiBhIHNwZWNpZmljIEZJQiB0YWJsZS5cbiYjNDM7ICogUmV0dXJucyBhIHJlZmNvdW50ZWQgZHN0LCBvciBOVUxMIGlmIHRoZSB0YWJsZSBkb2VzIG5vdCBleGlzdC5cbiYjNDM7ICovXG4mIzQzO3N0YXRpYyBzdHJ1Y3QgZHN0X2VudHJ5ICpzZWc2X3RhYmxlX2xvb2t1cChzdHJ1Y3QgbmV0ICpuZXQsXG4mIzQzO1x0XHRcdFx0XHQgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuJiM0MztcdFx0XHRcdFx0ICAgc3RydWN0IGZsb3dpNiAqZmw2LCB1MzIgdGJsX2lkKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGZpYjZfdGFibGUgKnRhYmxlO1xuJiM0MztcdHN0cnVjdCBydDZfaW5mbyAqcnQ7XG4mIzQzO1xuJiM0MztcdHRhYmxlID0gZmliNl9nZXRfdGFibGUobmV0LCB0YmxfaWQpO1xuJiM0MztcdGlmICghdGFibGUpXG4mIzQzO1x0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XG4mIzQzO1x0cnQgPSBpcDZfcG9sX3JvdXRlKG5ldCwgdGFibGUsIDAsIGZsNiwgc2tiLCBSVDZfTE9PS1VQX0ZfSEFTX1NBRERSKTtcbiYjNDM7XHRyZXR1cm4gXHUwMDI2cnQtXHUwMDNlZHN0O1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCBzZWc2X2luaXRfZmxvd2k2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBpcHY2aGRyICpoZHIsXG4mIzQzO1x0XHRcdCAgICAgc3RydWN0IGZsb3dpNiAqZmw2KVxuJiM0Mzt7XG4mIzQzO1x0bWVtc2V0KGZsNiwgMCwgc2l6ZW9mKCpmbDYpKTtcbiYjNDM7XG4mIzQzO1x0Zmw2LVx1MDAzZWRhZGRyID0gaGRyLVx1MDAzZWRhZGRyO1xuJiM0MztcdGZsNi1cdTAwM2VzYWRkciA9IGhkci1cdTAwM2VzYWRkcjtcbiYjNDM7XHRmbDYtXHUwMDNlZmxvd2xhYmVsID0gaXA2X2Zsb3dpbmZvKGhkcik7XG4mIzQzO1x0Zmw2LVx1MDAzZWZsb3dpNl9tYXJrID0gc2tiLVx1MDAzZW1hcms7XG4mIzQzO1x0Zmw2LVx1MDAzZWZsb3dpNl9wcm90byA9IGhkci1cdTAwM2VuZXh0aGRyO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MzsvKiBsb29rIHVwIHRoZSByb3V0ZSBmb3IgdGhlIGZpcnN0IFNJRCBvbiB0aGUgaW5wdXQgcGF0aCBhbmQgc2V0IGl0IG9uIHRoZSBza2IuXG4mIzQzOyAqIFJldHVybnMgdGhlIHJlZmNvdW50ZWQgZHN0LCBvciBOVUxMIGlmIGEgcmVmZXJlbmNlIGNvdWxkIG5vdCBiZSBzYWZlbHkgdGFrZW4uXG4mIzQzOyAqL1xuJiM0MztzdGF0aWMgc3RydWN0IGRzdF9lbnRyeSAqc2VnNl9pbnB1dF9yb3V0ZShzdHJ1Y3QgbmV0ICpuZXQsXG4mIzQzO1x0XHRcdFx0XHQgIHN0cnVjdCBza19idWZmICpza2IsXG4mIzQzO1x0XHRcdFx0XHQgIHN0cnVjdCBzZWc2X2x3dCAqc2x3dClcbiYjNDM7e1xuJiM0MztcdHUzMiB0YWJsZSA9IHNsd3QtXHUwMDNldGFibGU7XG4mIzQzO1xuJiM0MztcdGlmICh0YWJsZSkge1xuJiM0MztcdFx0c3RydWN0IGlwdjZoZHIgKmhkciA9IGlwdjZfaGRyKHNrYik7XG4mIzQzO1x0XHRzdHJ1Y3QgZHN0X2VudHJ5ICpkc3Q7XG4mIzQzO1x0XHRzdHJ1Y3QgZmxvd2k2IGZsNjtcbiYjNDM7XG4mIzQzO1x0XHRzZWc2X2luaXRfZmxvd2k2KHNrYiwgaGRyLCBcdTAwMjZmbDYpO1xuJiM0MztcdFx0Zmw2LmZsb3dpNl9paWYgPSBza2ItXHUwMDNlZGV2LVx1MDAzZWlmaW5kZXg7XG4mIzQzO1xuJiM0MztcdFx0ZHN0ID0gc2VnNl90YWJsZV9sb29rdXAobmV0LCBza2IsIFx1MDAyNmZsNiwgdGFibGUpO1xuJiM0MztcdFx0aWYgKCFkc3QpIHtcbiYjNDM7XHRcdFx0ZHN0ID0gXHUwMDI2bmV0LVx1MDAzZWlwdjYuaXA2X2Jsa19ob2xlX2VudHJ5LVx1MDAzZWRzdDtcbiYjNDM7XHRcdFx0ZHN0X2hvbGQoZHN0KTtcbiYjNDM7XHRcdH1cbiYjNDM7XG4mIzQzO1x0XHRza2JfZHN0X2Ryb3Aoc2tiKTtcbiYjNDM7XHRcdHNrYl9kc3Rfc2V0KHNrYiwgZHN0KTtcbiYjNDM7XHR9IGVsc2Uge1xuJiM0MztcdFx0aXA2X3JvdXRlX2lucHV0KHNrYik7XG4mIzQzO1xuJiM0MztcdFx0LyogaXA2X3JvdXRlX2lucHV0KCkgc2V0cyBhIE5PUkVGIGRzdDsgZm9yY2UgYSByZWZjb3VudCBvbiBpdFxuJiM0MztcdFx0ICogYmVmb3JlIGNhY2hpbmcgb3IgZnVydGhlciB1c2UuXG4mIzQzO1x0XHQgKi9cbiYjNDM7XHRcdHNrYl9kc3RfZm9yY2Uoc2tiKTtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHJldHVybiBza2JfZHN0KHNrYik7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGludCBzZWc2X2lucHV0X2ZpbmlzaChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpzayxcbiBcdFx0XHQgICAgIHN0cnVjdCBza19idWZmICpza2IpXG4ge1xuQEAgLTUxMywxNSAmIzQzOzU4Miw5IEBAIHN0YXRpYyBpbnQgc2VnNl9pbnB1dF9jb3JlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrLFxuIFx0XHRnb3RvIGRyb3A7XG4gXHR9XG4gXG4tXHRpZiAoIWRzdCkge1xuLVx0XHRpcDZfcm91dGVfaW5wdXQoc2tiKTtcbi1cbi1cdFx0LyogaXA2X3JvdXRlX2lucHV0KCkgc2V0cyBhIE5PUkVGIGRzdDsgZm9yY2UgYSByZWZjb3VudCBvbiBpdFxuLVx0XHQgKiBiZWZvcmUgY2FjaGluZyBvciBmdXJ0aGVyIHVzZS5cbi1cdFx0ICovXG4tXHRcdHNrYl9kc3RfZm9yY2Uoc2tiKTtcbi1cdFx0ZHN0ID0gc2tiX2RzdChza2IpO1xuLVx0XHRpZiAodW5saWtlbHkoIWRzdCkpIHtcbiYjNDM7XHRpZiAodW5saWtlbHkoIWRzdCkpIHtcbiYjNDM7XHRcdGRzdCA9IHNlZzZfaW5wdXRfcm91dGUobmV0LCBza2IsIHNsd3QpO1xuJiM0MztcdFx0aWYgKCFkc3QpIHtcbiBcdFx0XHRlcnIgPSAtRU5FVFVOUkVBQ0g7XG4gXHRcdFx0Z290byBkcm9wO1xuIFx0XHR9XG5AQCAtNTc4LDYgJiM0Mzs2NDEsMjkgQEAgc3RhdGljIGludCBzZWc2X2lucHV0KHN0cnVjdCBza19idWZmICpza2IpXG4gXHRyZXR1cm4gc2VnNl9pbnB1dF9jb3JlKGRldl9uZXQoc2tiLVx1MDAzZWRldiksIE5VTEwsIHNrYik7XG4gfVxuIFxuJiM0MzsvKiBsb29rIHVwIHRoZSByb3V0ZSBmb3IgdGhlIGZpcnN0IFNJRCBvbiB0aGUgb3V0cHV0IHBhdGguIEFsd2F5cyByZXR1cm5zIGFcbiYjNDM7ICogcmVmY291bnRlZCBkc3QuXG4mIzQzOyAqL1xuJiM0MztzdGF0aWMgc3RydWN0IGRzdF9lbnRyeSAqc2VnNl9vdXRwdXRfZHN0X2xvb2t1cChzdHJ1Y3QgbmV0ICpuZXQsXG4mIzQzO1x0XHRcdFx0XHRcdHN0cnVjdCBza19idWZmICpza2IsXG4mIzQzO1x0XHRcdFx0XHRcdHN0cnVjdCBmbG93aTYgKmZsNixcbiYjNDM7XHRcdFx0XHRcdFx0c3RydWN0IHNlZzZfbHd0ICpzbHd0KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGRzdF9lbnRyeSAqZHN0O1xuJiM0MztcbiYjNDM7XHRpZiAoc2x3dC1cdTAwM2V0YWJsZSkge1xuJiM0MztcdFx0ZHN0ID0gc2VnNl90YWJsZV9sb29rdXAobmV0LCBza2IsIGZsNiwgc2x3dC1cdTAwM2V0YWJsZSk7XG4mIzQzO1x0XHRpZiAoIWRzdCkge1xuJiM0MztcdFx0XHRkc3QgPSBcdTAwMjZuZXQtXHUwMDNlaXB2Ni5pcDZfYmxrX2hvbGVfZW50cnktXHUwMDNlZHN0O1xuJiM0MztcdFx0XHRkc3RfaG9sZChkc3QpO1xuJiM0MztcdFx0fVxuJiM0MztcdH0gZWxzZSB7XG4mIzQzO1x0XHRkc3QgPSBpcDZfcm91dGVfb3V0cHV0KG5ldCwgTlVMTCwgZmw2KTtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHJldHVybiBkc3Q7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGludCBzZWc2X291dHB1dF9jb3JlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrLFxuIFx0XHRcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIHtcbkBAIC02MDAsMTQgJiM0Mzs2ODYsOSBAQCBzdGF0aWMgaW50IHNlZzZfb3V0cHV0X2NvcmUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29jayAqc2ssXG4gXHRcdHN0cnVjdCBpcHY2aGRyICpoZHIgPSBpcHY2X2hkcihza2IpO1xuIFx0XHRzdHJ1Y3QgZmxvd2k2IGZsNjtcbiBcbi1cdFx0bWVtc2V0KFx1MDAyNmZsNiwgMCwgc2l6ZW9mKGZsNikpO1xuLVx0XHRmbDYuZGFkZHIgPSBoZHItXHUwMDNlZGFkZHI7XG4tXHRcdGZsNi5zYWRkciA9IGhkci1cdTAwM2VzYWRkcjtcbi1cdFx0Zmw2LmZsb3dsYWJlbCA9IGlwNl9mbG93aW5mbyhoZHIpO1xuLVx0XHRmbDYuZmxvd2k2X21hcmsgPSBza2ItXHUwMDNlbWFyaztcbi1cdFx0Zmw2LmZsb3dpNl9wcm90byA9IGhkci1cdTAwM2VuZXh0aGRyO1xuJiM0MztcdFx0c2VnNl9pbml0X2Zsb3dpNihza2IsIGhkciwgXHUwMDI2Zmw2KTtcbiBcbi1cdFx0ZHN0ID0gaXA2X3JvdXRlX291dHB1dChuZXQsIE5VTEwsIFx1MDAyNmZsNik7XG4mIzQzO1x0XHRkc3QgPSBzZWc2X291dHB1dF9kc3RfbG9va3VwKG5ldCwgc2tiLCBcdTAwMjZmbDYsIHNsd3QpO1xuIFx0XHRpZiAoZHN0LVx1MDAzZWVycm9yKSB7XG4gXHRcdFx0ZXJyID0gZHN0LVx1MDAzZWVycm9yO1xuIFx0XHRcdGdvdG8gZHJvcDtcbkBAIC03NTIsNiAmIzQzOzgzMywxNSBAQCBzdGF0aWMgaW50IHNlZzZfYnVpbGRfc3RhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmxhdHRyICpubGEsXG4gXHRcdH1cbiBcdH1cbiBcbiYjNDM7XHRpZiAodGJbU0VHNl9JUFRVTk5FTF9UQUJMRV0pIHtcbiYjNDM7XHRcdHNsd3QtXHUwMDNldGFibGUgPSBubGFfZ2V0X3UzMih0YltTRUc2X0lQVFVOTkVMX1RBQkxFXSk7XG4mIzQzO1x0XHRpZiAoIXNsd3QtXHUwMDNldGFibGUpIHtcbiYjNDM7XHRcdFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLCBcJiMzNDtpbnZhbGlkIGxvb2t1cCB0YWJsZVwmIzM0Oyk7XG4mIzQzO1x0XHRcdGVyciA9IC1FSU5WQUw7XG4mIzQzO1x0XHRcdGdvdG8gZXJyX2Rlc3Ryb3lfb3V0cHV0O1xuJiM0MztcdFx0fVxuJiM0MztcdH1cbiYjNDM7XG4gXHRuZXd0cy1cdTAwM2V0eXBlID0gTFdUVU5ORUxfRU5DQVBfU0VHNjtcbiBcdG5ld3RzLVx1MDAzZWZsYWdzIHw9IExXVFVOTkVMX1NUQVRFX0lOUFVUX1JFRElSRUNUO1xuIFxuQEAgLTc5NSw2ICYjNDM7ODg1LDEwIEBAIHN0YXRpYyBpbnQgc2VnNl9maWxsX2VuY2FwX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdCAgICBubGFfcHV0X2luNl9hZGRyKHNrYiwgU0VHNl9JUFRVTk5FTF9TUkMsIFx1MDAyNnNsd3QtXHUwMDNldHVuc3JjKSlcbiBcdFx0cmV0dXJuIC1FTVNHU0laRTtcbiBcbiYjNDM7XHRpZiAoc2x3dC1cdTAwM2V0YWJsZSBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgbmxhX3B1dF91MzIoc2tiLCBTRUc2X0lQVFVOTkVMX1RBQkxFLCBzbHd0LVx1MDAzZXRhYmxlKSlcbiYjNDM7XHRcdHJldHVybiAtRU1TR1NJWkU7XG4mIzQzO1xuIFx0cmV0dXJuIDA7XG4gfVxuIFxuQEAgLTgwOSw2ICYjNDM7OTAzLDkgQEAgc3RhdGljIGludCBzZWc2X2VuY2FwX25sc2l6ZShzdHJ1Y3QgbHd0dW5uZWxfc3RhdGUgKmx3dHN0YXRlKVxuIFx0aWYgKCFpcHY2X2FkZHJfYW55KFx1MDAyNnNsd3QtXHUwMDNldHVuc3JjKSlcbiBcdFx0bmxzaXplICYjNDM7PSBubGFfdG90YWxfc2l6ZShzaXplb2Yoc2x3dC1cdTAwM2V0dW5zcmMpKTtcbiBcbiYjNDM7XHRpZiAoc2x3dC1cdTAwM2V0YWJsZSlcbiYjNDM7XHRcdG5sc2l6ZSAmIzQzOz0gbmxhX3RvdGFsX3NpemUoc2l6ZW9mKHUzMikpO1xuJiM0MztcbiBcdHJldHVybiBubHNpemU7XG4gfVxuIFxuQEAgLTgyNiw2ICYjNDM7OTIzLDkgQEAgc3RhdGljIGludCBzZWc2X2VuY2FwX2NtcChzdHJ1Y3QgbHd0dW5uZWxfc3RhdGUgKmEsIHN0cnVjdCBsd3R1bm5lbF9zdGF0ZSAqYilcbiBcdGlmICghaXB2Nl9hZGRyX2VxdWFsKFx1MDAyNmFfc2x3dC1cdTAwM2V0dW5zcmMsIFx1MDAyNmJfc2x3dC1cdTAwM2V0dW5zcmMpKVxuIFx0XHRyZXR1cm4gMTtcbiBcbiYjNDM7XHRpZiAoYV9zbHd0LVx1MDAzZXRhYmxlICE9IGJfc2x3dC1cdTAwM2V0YWJsZSlcbiYjNDM7XHRcdHJldHVybiAxO1xuJiM0MztcbiBcdHJldHVybiBtZW1jbXAoYV9oZHIsIGJfaGRyLCBsZW4pO1xuIH1cbiBcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvTWFrZWZpbGUgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvTWFrZWZpbGVcbmluZGV4IDcwOGQ5NjBhZTA3ZDViLi41ZGYwYzk0YWIwNjAxOCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9NYWtlZmlsZVxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L01ha2VmaWxlXG5AQCAtODUsNiAmIzQzOzg1LDcgQEAgVEVTVF9QUk9HUyA6PSBcXFxuIFx0cnh0aW1lc3RhbXAuc2ggXFxcbiBcdHNjdHBfdnJmLnNoIFxcXG4gXHRza2ZfbmV0X29mZi5zaCBcXFxuJiM0MztcdHNydjZfZW5jYXBfbG9va3VwX2wzdnBuX3Rlc3Quc2ggXFxcbiBcdHNydjZfZW5kX2R0NDZfbDN2cG5fdGVzdC5zaCBcXFxuIFx0c3J2Nl9lbmRfZHQ0X2wzdnBuX3Rlc3Quc2ggXFxcbiBcdHNydjZfZW5kX2R0Nl9sM3Zwbl90ZXN0LnNoIFxcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L3NydjZfZW5jYXBfbG9va3VwX2wzdnBuX3Rlc3Quc2ggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvc3J2Nl9lbmNhcF9sb29rdXBfbDN2cG5fdGVzdC5zaFxubmV3IGZpbGUgbW9kZSAxMDA3NTVcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi5kNjI0OTMwM2I3ZWFhMVxuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L3NydjZfZW5jYXBfbG9va3VwX2wzdnBuX3Rlc3Quc2hcbkBAIC0wLDAgJiM0MzsxLDEwMjcgQEBcbiYjNDM7IyEvYmluL2Jhc2hcbiYjNDM7IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuJiM0MzsjXG4mIzQzOyMgYXV0aG9yOiBBbmRyZWEgTWF5ZXIgXHUwMDNjYW5kcmVhLm1heWVyQHVuaXJvbWEyLml0XHUwMDNlXG4mIzQzO1xuJiM0MzsjIFRoaXMgdGVzdCBldmFsdWF0ZXMgdGhlIFNSdjYgZW5jYXAgXCYjMzQ7bG9va3VwXCYjMzQ7IGF0dHJpYnV0ZS4gQWZ0ZXIgZW5jYXBzdWxhdGlvblxuJiM0MzsjIHRoZSByb3V0ZXIgbG9va3MgdXAgdGhlIHJvdXRlIGZvciB0aGUgZmlyc3QgU0lELCB0aGF0IGlzIHRoZSBvdXRlciBJUHY2XG4mIzQzOyMgZGVzdGluYXRpb24gb2YgdGhlIGVuY2Fwc3VsYXRlZCBwYWNrZXQuIFRoZSBhdHRyaWJ1dGUgc2VsZWN0cyB0aGUgRklCIHRhYmxlXG4mIzQzOyMgdXNlZCBmb3IgdGhpcyBwb3N0LWVuY2FwIFNJRCByb3V0ZSBsb29rdXAuXG4mIzQzOyNcbiYjNDM7IyBUd28gcm91dGVycyAocnQtMSwgcnQtMikgcHJvdmlkZSBMMyBWUE4gc2VydmljZXMgb3ZlciBhbiBJUHY2IHVuZGVybGF5XG4mIzQzOyMgKGZkMDA6Oi82NCkuIEVhY2ggcm91dGVyIHVzZXMgYSBzZXBhcmF0ZSBWUkYgcGVyIHRlbmFudCwgd2l0aCBkZWZhdWx0XG4mIzQzOyMgYmxhY2tob2xlIHJvdXRlcyAoSVB2NCBhbmQgSVB2NikgdG8gcHJldmVudCB0cmFmZmljIGZyb20gbGVha2luZyBvdXQgb2ZcbiYjNDM7IyB0aGUgVlJGLiBUZW5hbnQgdHJhZmZpYyBpcyBlbmNhcHN1bGF0ZWQsIHRoZW4gZGVjYXBzdWxhdGVkIHdpdGggYW5cbiYjNDM7IyBFbmQuRFQ0Ni4gRWFjaCByb3V0ZXIgcHJveGllcyBib3RoIE5EUCBhbmQgQVJQLlxuJiM0MzsjXG4mIzQzOyMgVGhlIHJvdXRlcyB0aGF0IG1hdGNoIHRoZSBmaXJzdCBTSURzIGFyZSBpbnN0YWxsZWQgaW4gYSBkZWRpY2F0ZWQgdW5kZXJsYXlcbiYjNDM7IyB0YWJsZSAoNTAwKSByYXRoZXIgdGhhbiB0aGUgbWFpbiB0YWJsZSAoMjU0KS4gVGhlIGVuY2FwIHJvdXRlcyB1c2VcbiYjNDM7IyBcJiMzNDtsb29rdXAgNTAwXCYjMzQ7IHRvIHNlbGVjdCB0aGlzIHRhYmxlIGZvciB0aGUgcG9zdC1lbmNhcCBTSUQgcm91dGUgbG9va3VwLlxuJiM0MzsjXG4mIzQzOyMgV2l0aG91dCB0aGUgXCYjMzQ7bG9va3VwXCYjMzQ7IGF0dHJpYnV0ZSwgdGhlIHJvdXRlIGZvciB0aGUgZmlyc3QgU0lEIGNhbm5vdCBiZSBmb3VuZDpcbiYjNDM7IyAgLSBvbiB0aGUgaW5wdXQgcGF0aCAoZm9yd2FyZGVkIHRyYWZmaWMpLCB0aGUgbG9va3VwIHN0YXlzIGluIHRoZSBWUkZcbiYjNDM7IyAgICBhbmQgaGl0cyB0aGUgYmxhY2tob2xlO1xuJiM0MzsjICAtIG9uIHRoZSBvdXRwdXQgcGF0aCAobG9jYWxseSBvcmlnaW5hdGVkIHRyYWZmaWMpLCB0aGUgbG9va3VwIGZhbGxzXG4mIzQzOyMgICAgdGhyb3VnaCB0byB0aGUgbWFpbiB0YWJsZSwgd2l0aCBubyByb3V0ZSB0byB0aGUgZmlyc3QgU0lELlxuJiM0MzsjXG4mIzQzOyNcbiYjNDM7IyBMZWdlbmQgKHNwZWNpZmljIHBlci10ZW5hbnQgYWRkcmVzc2VzIGFyZSBpbiB0aGUgaW5zdGFudGlhdGlvbiB0YWJsZXMgYmVsb3cpOlxuJiM0MzsjICAgWCAgICAgICAgICA9IHRlbmFudCBpZCBhbmQgVlJGIHRhYmxlIGlkOyB0d28gdGVuYW50czogMTAwIGFuZCAyMDBcbiYjNDM7IyAgICAgICAgICAgICAgICAoXCYjMzQ7dFhcJiMzNDsgbWVhbnMgdGVuYW50IFgsIGUuZy4gdDEwMCwgdDIwMClcbiYjNDM7IyAgIGEsIGIgICAgICAgPSB0aGUgdHdvIGhvc3QgaWRzIG9mIHRoZSB0ZW5hbnRcbiYjNDM7IyAgIEhBLCBIQiAgICAgPSBhZGRyZXNzZXMgb2YgaG9zdCBhLCBob3N0IGJcbiYjNDM7IyAgIFJMTzEsIFJMTzIgPSBybG8tWCByb3V0ZXIgbG9vcGJhY2sgYWRkcmVzcyBvbiBydC0xLCBydC0yICh0ZW5hbnQgZ2F0ZXdheVxuJiM0MzsjICAgICAgICAgICAgICAgIGZvciB0aGUgb3V0cHV0IHBhdGgsIGR1YWwtc3RhY2spXG4mIzQzOyMgICB2cmYtWCAgICAgID0gcGVyLXRlbmFudCBWUkYgb24gZWFjaCByb3V0ZXIgKHRhYmxlIFgpXG4mIzQzOyNcbiYjNDM7IyBDb25zdGFudHMgKHNhbWUgZm9yIGV2ZXJ5IHRlbmFudCk6XG4mIzQzOyMgICB1bmRlcmxheSAgID0gdGFibGUgNTAwOyBwb3N0LWVuY2FwIFNJRCByb3V0ZSBsb29rdXAgKHZpYSBcJiMzNDtsb29rdXAgNTAwXCYjMzQ7KVxuJiM0MzsjICAgbG9jYWxzaWQgICA9IHRhYmxlIDkwOyBob2xkcyB0aGUgZGVjYXAgU0lEcyAoRW5kLkRUNDYpXG4mIzQzOyMgICBmZDAwOjovNjQgID0gdW5kZXJsYXkgbGluayBiZXR3ZWVuIHJ0LTEgYW5kIHJ0LTJcbiYjNDM7IyAgIHZldGgtdFggICAgPSBjYWZlOjoyNTQvMTAuMC4wLjI1NCAodGVuYW50IGdhdGV3YXkgb24gdmV0aCwgYm90aCByb3V0ZXJzKVxuJiM0MzsjXG4mIzQzOyNcbiYjNDM7IyAmIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tJiM0MztcbiYjNDM7IyB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgfFxuJiM0MzsjIHwgICBocy10WC1hIG5ldG5zICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIGhzLXRYLWIgbmV0bnMgICB8XG4mIzQzOyMgfCAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHxcbiYjNDM7IyB8ICAmIzQzOy0tLS0tLS0tLS0tLS0mIzQzOyAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgJiM0MzstLS0tLS0tLS0tLS0tJiM0MzsgIHxcbiYjNDM7IyB8ICB8ICAgIHZldGgwICAgIHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHwgICAgdmV0aDAgICAgfCAgfFxuJiM0MzsjIHwgIHwgICAgIEhBICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgfCAgICAgSEIgICAgICB8ICB8XG4mIzQzOyMgfCAgJiM0MzstLS0tLS0tLS0tLS0tJiM0MzsgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICYjNDM7LS0tLS0tLS0tLS0tLSYjNDM7ICB8XG4mIzQzOyMgfCAgICAgICAgLiAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgLiAgICAgICAgIHxcbiYjNDM7IyAmIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tJiM0MztcbiYjNDM7IyAgICAgICAgICAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuXG4mIzQzOyMgICAgICAgICAgLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLlxuJiM0MzsjICYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOyAgICYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzO1xuJiM0MzsjIHwgICAgICAgIC4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIC4gICAgICAgICB8XG4mIzQzOyMgfCAmIzQzOy0tLS0tLS0tLS0tLS0tLSYjNDM7ICAgICAgICAgICAgICAgICB8ICAgfCAgICAgICAgICAgICAgICAgJiM0MzstLS0tLS0tLS0tLS0tLS0mIzQzOyB8XG4mIzQzOyMgfCB8ICAgdmV0aC10WCAgICAgfCAgICYjNDM7LS0tLS0tLS0tLSYjNDM7ICB8ICAgfCAgJiM0MzstLS0tLS0tLS0tJiM0MzsgICB8ICAgdmV0aC10WCAgICAgfCB8XG4mIzQzOyMgfCB8ICA6OjI1NC8uMjU0ICAgfCAgIHwgbG9jYWxzaWQgfCAgfCAgIHwgIHwgbG9jYWxzaWQgfCAgIHwgIDo6MjU0Ly4yNTQgICB8IHxcbiYjNDM7IyB8ICYjNDM7LS0tLS0tLSYjNDM7LS0tLS0tLSYjNDM7ICAgJiM0MzstLS0tLS0tLS0tJiM0MzsgIHwgICB8ICAmIzQzOy0tLS0tLS0tLS0mIzQzOyAgICYjNDM7LS0tLS0tLSYjNDM7LS0tLS0tLSYjNDM7IHxcbiYjNDM7IyB8ICAgICAgICAgfCAgICAgICAgICAgJiM0MzstLS0tLS0tLS0tJiM0MzsgIHwgICB8ICAmIzQzOy0tLS0tLS0tLS0mIzQzOyAgICAgICAgICAgfCAgICAgICAgIHxcbiYjNDM7IyB8ICAgICYjNDM7LS0tLSYjNDM7LS0tLSYjNDM7ICAgICAgfCB1bmRlcmxheSB8ICB8ICAgfCAgfCB1bmRlcmxheSB8ICAgICAgJiM0MzstLS0tJiM0MzstLS0tJiM0MzsgICAgfFxuJiM0MzsjIHwgICAgfCB2cmYtWCAgIHwgICAgICAmIzQzOy0tLS0tLS0tLS0mIzQzOyAgfCAgIHwgICYjNDM7LS0tLS0tLS0tLSYjNDM7ICAgICAgfCB2cmYtWCAgIHwgICAgfFxuJiM0MzsjIHwgICAgJiM0MzstLS0tJiM0MzstLS0tJiM0MzsgICAgICAgICAgICAgICAgICAgIHwgICB8ICAgICAgICAgICAgICAgICAgICAmIzQzOy0tLS0mIzQzOy0tLS0mIzQzOyAgICB8XG4mIzQzOyMgfCAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHxcbiYjNDM7IyB8ICAgJiM0MzstLS0tLSYjNDM7LS0tLSYjNDM7ICAgICYjNDM7LS0tLS0tLS0tLS0tJiM0MzsgIHwgICB8ICAmIzQzOy0tLS0tLS0tLS0tLSYjNDM7ICAgICYjNDM7LS0tLSYjNDM7LS0tLS0mIzQzOyAgIHxcbiYjNDM7IyB8ICAgfCAgcmxvLVggICB8ICAgIHwgICB2ZXRoMCAgICB8ICB8ICAgfCAgfCAgIHZldGgwICAgIHwgICAgfCAgcmxvLVggICB8ICAgfFxuJiM0MzsjIHwgICB8ICAgUkxPMSAgIHwgICAgfCBmZDAwOjoxLzY0IHwuLnwuLi58Li58IGZkMDA6OjIvNjQgfCAgICB8ICAgUkxPMiAgIHwgICB8XG4mIzQzOyMgfCAgICYjNDM7LS0tLS0tLS0tLSYjNDM7ICAgICYjNDM7LS0tLS0tLS0tLS0tJiM0MzsgIHwgICB8ICAmIzQzOy0tLS0tLS0tLS0tLSYjNDM7ICAgICYjNDM7LS0tLS0tLS0tLSYjNDM7ICAgfFxuJiM0MzsjIHwgICAgICAgICAgICAgIHJ0LTEgbmV0bnMgICAgICAgICAgIHwgICB8ICAgICAgICAgIHJ0LTIgbmV0bnMgICAgICAgICAgICAgICB8XG4mIzQzOyMgJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7ICAgJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7XG4mIzQzOyNcbiYjNDM7I1xuJiM0MzsjIFBlci10ZW5hbnQgaW5zdGFudGlhdGlvbjpcbiYjNDM7IyAmIzQzOy0tLS0tJiM0MzstLS0tLS0mIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzO1xuJiM0MzsjIHwgIFggIHwgYSwgYiB8IEhBICAgICAgICAgICAgICAgIHwgSEIgICAgICAgICAgICAgICAgfFxuJiM0MzsjICYjNDM7LS0tLS0mIzQzOy0tLS0tLSYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7XG4mIzQzOyMgfCAxMDAgfCAxLCAyIHwgY2FmZTo6MSwgMTAuMC4wLjEgfCBjYWZlOjoyLCAxMC4wLjAuMiB8XG4mIzQzOyMgfCAyMDAgfCAzLCA0IHwgY2FmZTo6MywgMTAuMC4wLjMgfCBjYWZlOjo0LCAxMC4wLjAuNCB8XG4mIzQzOyMgJiM0MzstLS0tLSYjNDM7LS0tLS0tJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tJiM0MztcbiYjNDM7I1xuJiM0MzsjIFJvdXRlciBsb29wYmFjayAocmxvLVgpIGFkZHJlc3NlcywgcGVyIHRlbmFudDpcbiYjNDM7IyAmIzQzOy0tLS0tJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzO1xuJiM0MzsjIHwgIFggIHwgUkxPMSAocnQtMSkgICAgICAgICAgIHwgUkxPMiAocnQtMikgICAgICAgICAgIHxcbiYjNDM7IyAmIzQzOy0tLS0tJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzO1xuJiM0MzsjIHwgMTAwIHwgY2FmZTo6MTAxLCAxMC4wLjAuMTAxIHwgY2FmZTo6MTAyLCAxMC4wLjAuMTAyIHxcbiYjNDM7IyB8IDIwMCB8IGNhZmU6OjIwMSwgMTAuMC4wLjIwMSB8IGNhZmU6OjIwMiwgMTAuMC4wLjIwMiB8XG4mIzQzOyMgJiM0MzstLS0tLSYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJiM0MztcbiYjNDM7I1xuJiM0MzsjXG4mIzQzOyMgTmV0d29yayBjb25maWd1cmF0aW9uXG4mIzQzOyMgPT09PT09PT09PT09PT09PT09PT09XG4mIzQzOyNcbiYjNDM7IyBydC0xOiBsb2NhbHNpZCB0YWJsZSAodGFibGUgOTApXG4mIzQzOyMgJiM0MzstLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzO1xuJiM0MzsjIHwgdGVuYW50IHwgU0lEICAgICAgICAgICAgICAgIHwgQWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuJiM0MzsjICYjNDM7LS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJiM0MztcbiYjNDM7IyB8ICAxMDAgICB8IGZjMDA6MjoxOjEwMDo6MGQ0NiB8IGFwcGx5IFNSdjYgRW5kLkRUNDYgdnJmdGFibGUgMTAwIHxcbiYjNDM7IyB8ICAyMDAgICB8IGZjMDA6MjoxOjIwMDo6MGQ0NiB8IGFwcGx5IFNSdjYgRW5kLkRUNDYgdnJmdGFibGUgMjAwIHxcbiYjNDM7IyAmIzQzOy0tLS0tLS0tJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7XG4mIzQzOyNcbiYjNDM7IyBydC0xOiB1bmRlcmxheSB0YWJsZSAodGFibGUgNTAwKSAtIHBvc3QtZW5jYXAgU0lEIHJvdXRlIGxvb2t1cFxuJiM0MzsjICYjNDM7LS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJiM0MztcbiYjNDM7IyB8IHRlbmFudCB8IFNJRCAgICAgICAgICAgICAgICB8IEFjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgIHxcbiYjNDM7IyAmIzQzOy0tLS0tLS0tJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7XG4mIzQzOyMgfCAgMTAwICAgfCBmYzAwOjE6MjoxMDA6OjBkNDYgfCBmb3J3YXJkIHZpYSBmZDAwOjoyIGRldiB2ZXRoMCB8XG4mIzQzOyMgfCAgMjAwICAgfCBmYzAwOjE6MjoyMDA6OjBkNDYgfCBmb3J3YXJkIHZpYSBmZDAwOjoyIGRldiB2ZXRoMCB8XG4mIzQzOyMgJiM0MzstLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzO1xuJiM0MzsjXG4mIzQzOyMgcnQtMTogVlJGIHRhYmxlcyAocGVyIHRlbmFudDogdnJmLVggPSB0YWJsZSBYKVxuJiM0MzsjICYjNDM7LS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJiM0MztcbiYjNDM7IyB8IHRlbmFudCB8IGRzdCAgICAgICAgfCBlbmNhcCBhY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiYjNDM7IyAmIzQzOy0tLS0tLS0tJiM0MzstLS0tLS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7XG4mIzQzOyMgfCAxMDAgICAgfCBjYWZlOjoyICAgIHwgZW5jYXAgc2VncyBmYzAwOjE6MjoxMDA6OjBkNDYgbG9va3VwIDUwMCB8XG4mIzQzOyMgfCAgICAgICAgfCAxMC4wLjAuMiAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4mIzQzOyMgfCAgICAgICAgfCBjYWZlOjoxMDIgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4mIzQzOyMgfCAgICAgICAgfCAxMC4wLjAuMTAyIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4mIzQzOyMgfCAyMDAgICAgfCBjYWZlOjo0ICAgIHwgZW5jYXAgc2VncyBmYzAwOjE6MjoyMDA6OjBkNDYgbG9va3VwIDUwMCB8XG4mIzQzOyMgfCAgICAgICAgfCAxMC4wLjAuNCAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4mIzQzOyMgfCAgICAgICAgfCBjYWZlOjoyMDIgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4mIzQzOyMgfCAgICAgICAgfCAxMC4wLjAuMjAyIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4mIzQzOyMgJiM0MzstLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0tJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzO1xuJiM0MzsjXG4mIzQzOyNcbiYjNDM7IyBydC0yOiBsb2NhbHNpZCB0YWJsZSAodGFibGUgOTApXG4mIzQzOyMgJiM0MzstLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzO1xuJiM0MzsjIHwgdGVuYW50IHwgU0lEICAgICAgICAgICAgICAgIHwgQWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuJiM0MzsjICYjNDM7LS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJiM0MztcbiYjNDM7IyB8ICAxMDAgICB8IGZjMDA6MToyOjEwMDo6MGQ0NiB8IGFwcGx5IFNSdjYgRW5kLkRUNDYgdnJmdGFibGUgMTAwIHxcbiYjNDM7IyB8ICAyMDAgICB8IGZjMDA6MToyOjIwMDo6MGQ0NiB8IGFwcGx5IFNSdjYgRW5kLkRUNDYgdnJmdGFibGUgMjAwIHxcbiYjNDM7IyAmIzQzOy0tLS0tLS0tJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7XG4mIzQzOyNcbiYjNDM7IyBydC0yOiB1bmRlcmxheSB0YWJsZSAodGFibGUgNTAwKSAtIHBvc3QtZW5jYXAgU0lEIHJvdXRlIGxvb2t1cFxuJiM0MzsjICYjNDM7LS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJiM0MztcbiYjNDM7IyB8IHRlbmFudCB8IFNJRCAgICAgICAgICAgICAgICB8IEFjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgIHxcbiYjNDM7IyAmIzQzOy0tLS0tLS0tJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7XG4mIzQzOyMgfCAgMTAwICAgfCBmYzAwOjI6MToxMDA6OjBkNDYgfCBmb3J3YXJkIHZpYSBmZDAwOjoxIGRldiB2ZXRoMCB8XG4mIzQzOyMgfCAgMjAwICAgfCBmYzAwOjI6MToyMDA6OjBkNDYgfCBmb3J3YXJkIHZpYSBmZDAwOjoxIGRldiB2ZXRoMCB8XG4mIzQzOyMgJiM0MzstLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzO1xuJiM0MzsjXG4mIzQzOyMgcnQtMjogVlJGIHRhYmxlcyAocGVyIHRlbmFudDogdnJmLVggPSB0YWJsZSBYKVxuJiM0MzsjICYjNDM7LS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJiM0MztcbiYjNDM7IyB8IHRlbmFudCB8IGRzdCAgICAgICAgfCBlbmNhcCBhY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiYjNDM7IyAmIzQzOy0tLS0tLS0tJiM0MzstLS0tLS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7XG4mIzQzOyMgfCAxMDAgICAgfCBjYWZlOjoxICAgIHwgZW5jYXAgc2VncyBmYzAwOjI6MToxMDA6OjBkNDYgbG9va3VwIDUwMCB8XG4mIzQzOyMgfCAgICAgICAgfCAxMC4wLjAuMSAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4mIzQzOyMgfCAgICAgICAgfCBjYWZlOjoxMDEgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4mIzQzOyMgfCAgICAgICAgfCAxMC4wLjAuMTAxIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4mIzQzOyMgfCAyMDAgICAgfCBjYWZlOjozICAgIHwgZW5jYXAgc2VncyBmYzAwOjI6MToyMDA6OjBkNDYgbG9va3VwIDUwMCB8XG4mIzQzOyMgfCAgICAgICAgfCAxMC4wLjAuMyAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4mIzQzOyMgfCAgICAgICAgfCBjYWZlOjoyMDEgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4mIzQzOyMgfCAgICAgICAgfCAxMC4wLjAuMjAxIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4mIzQzOyMgJiM0MzstLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0tJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzO1xuJiM0MzsjIFdpdGhpbiBhIHRlbmFudCwgYSBzaW5nbGUgU0lEIHJlYWNoZXMgdGhlIGFkamFjZW50IHJvdXRlciAoaXRzIGxvb3BiYWNrKVxuJiM0MzsjIGFuZCB0aGUgcmVtb3RlIGhvc3QgY29ubmVjdGVkIHRvIGl0LCBpbiBib3RoIElQdjQgYW5kIElQdjYuXG4mIzQzOyNcbiYjNDM7IyBGb3IgYm90aCBydC0xIGFuZCBydC0yLCBlYWNoIFZSRiBhbHNvIGhhcyB0aGUgY29ubmVjdGVkIGhvc3QgcHJlZml4IChjYWZlOjovNjRcbiYjNDM7IyBvciAxMC4wLjAuMC8yNCkgYW5kIGEgZGVmYXVsdCBibGFja2hvbGUgKElQdjQgYW5kIElQdjYpLlxuJiM0MzsjXG4mIzQzOyNcbiYjNDM7IyBMb2NhbGx5IG9yaWdpbmF0ZWQgdHJhZmZpYyAob3V0cHV0IHBhdGgpXG4mIzQzOyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuJiM0MzsjXG4mIzQzOyMgVGhlIGNvbmZpZ3VyYXRpb24gYWJvdmUgY292ZXJzIGZvcndhcmRlZCB0cmFmZmljLCB3aGVyZSBwYWNrZXRzIGFycml2ZSBmcm9tXG4mIzQzOyMgYSBob3N0IGFuZCBhcmUgZW5jYXBzdWxhdGVkIGJ5IHRoZSByb3V0ZXIuIFRvIGFsc28gdGVzdCByb3V0ZXItb3JpZ2luYXRlZFxuJiM0MzsjIHRyYWZmaWMsIGVhY2ggcm91dGVyIHBpbmdzIHRoZSBvdGhlciByb3V0ZXImIzM5O3MgbG9vcGJhY2sgYWRkcmVzcyB0aHJvdWdoXG4mIzQzOyMgdGhlIFZQTi5cbiYjNDM7I1xuJiM0MzsjIEV4YW1wbGUgKHRlbmFudCAxMDApLCBydC0xIHBpbmdzIGNhZmU6OjEwMiAocnQtMiYjMzk7cyBsb29wYmFjayk6XG4mIzQzOyMgICAxLiBydC0xIGxvb2tzIHVwIGNhZmU6OjEwMiBpbiB2cmYtMTAwIGFuZCBlbmNhcHN1bGF0ZXMgaXQgKFNJRFxuJiM0MzsjICAgICAgZmMwMDoxOjI6MTAwOjowZDQ2KSwgdGhlbiBcJiMzNDtsb29rdXAgNTAwXCYjMzQ7IGZpbmRzIHRoZSByb3V0ZSBmb3IgdGhlIFNJRCBpbiB0aGVcbiYjNDM7IyAgICAgIHVuZGVybGF5IHRhYmxlIChuZXh0IGhvcCBmZDAwOjoyKSBhbmQgZm9yd2FyZHMgaXQ7XG4mIzQzOyMgICAyLiBydC0yIGRlY2Fwc3VsYXRlcyBpdCAobG9jYWxzaWQsIEVuZC5EVDQ2KSBhbmQgZGVsaXZlcnMgaXQgbG9jYWxseVxuJiM0MzsjICAgICAgKGNhZmU6OjEwMiBpcyBvbiB0aGUgcmxvLTEwMCBpbnRlcmZhY2UpO1xuJiM0MzsjICAgMy4gcnQtMiByZXBsaWVzIHdpdGggZGVzdGluYXRpb24gY2FmZTo6MTAxIChydC0xJiMzOTtzIGxvb3BiYWNrKS4gcnQtMiBsb29rcyB1cFxuJiM0MzsjICAgICAgY2FmZTo6MTAxIGluIHZyZi0xMDAgYW5kIGVuY2Fwc3VsYXRlcyBpdCBiYWNrIHRvIHJ0LTEgKGFnYWluIHZpYSBcJiMzNDtsb29rdXBcbiYjNDM7IyAgICAgIDUwMFwmIzM0OykuIHJ0LTEgZGVjYXBzdWxhdGVzIGl0IGFuZCBkZWxpdmVycyBpdC5cbiYjNDM7XG4mIzQzOyMgc2hlbGxjaGVjayBzb3VyY2U9bGliLnNoXG4mIzQzO3NvdXJjZSBsaWIuc2hcbiYjNDM7XG4mIzQzO3JlYWRvbmx5IExPQ0FMU0lEX1RBQkxFX0lEPTkwXG4mIzQzO3JlYWRvbmx5IFVOREVSTEFZX1RBQkxFX0lEPTUwMFxuJiM0MztyZWFkb25seSBJUHY2X1JUX05FVFdPUks9ZmQwMFxuJiM0MztyZWFkb25seSBJUHY2X0hTX05FVFdPUks9Y2FmZVxuJiM0MztyZWFkb25seSBJUHY0X0hTX05FVFdPUks9MTAuMC4wXG4mIzQzO3JlYWRvbmx5IFZQTl9MT0NBVE9SX1NFUlZJQ0U9ZmMwMFxuJiM0MztyZWFkb25seSBEVDQ2X0ZVTkM9MGQ0NlxuJiM0MztyZWFkb25seSBEVU1NWV9ERVZOQU1FPWR1bTBcbiYjNDM7cmVhZG9ubHkgSVB2Nl9URVNUU19BRERSPTIwMDE6ZGI4OjoxXG4mIzQzO3JlYWRvbmx5IFRFU1RTX1RBQkxFX0lEPTU0MzIxXG4mIzQzO1BJTkdfVElNRU9VVF9TRUM9NFxuJiM0MztcbiYjNDM7U0VUVVBfRVJSPTFcbiYjNDM7XG4mIzQzO3JldD0ke2tzZnRfc2tpcH1cbiYjNDM7bnN1Y2Nlc3M9MFxuJiM0MztuZmFpbD0wXG4mIzQzO1xuJiM0MztQQVVTRV9PTl9GQUlMPSR7UEFVU0VfT05fRkFJTDo9bm99XG4mIzQzO1xuJiM0Mztsb2dfdGVzdCgpXG4mIzQzO3tcbiYjNDM7XHRsb2NhbCByYz1cJiMzNDskMVwmIzM0O1xuJiM0MztcdGxvY2FsIGV4cGVjdGVkPVwmIzM0OyQyXCYjMzQ7XG4mIzQzO1x0bG9jYWwgbXNnPVwmIzM0OyQzXCYjMzQ7XG4mIzQzO1xuJiM0MztcdGlmIFsgXCYjMzQ7JHtyY31cJiMzNDsgLWVxIFwmIzM0OyR7ZXhwZWN0ZWR9XCYjMzQ7IF07IHRoZW5cbiYjNDM7XHRcdG5zdWNjZXNzPSQoKG5zdWNjZXNzJiM0MzsxKSlcbiYjNDM7XHRcdHByaW50ZiBcJiMzNDtcXG4gICAgVEVTVDogJS02MHMgIFsgT0sgXVxcblwmIzM0OyBcJiMzNDske21zZ31cJiMzNDtcbiYjNDM7XHRlbHNlXG4mIzQzO1x0XHRyZXQ9MVxuJiM0MztcdFx0bmZhaWw9JCgobmZhaWwmIzQzOzEpKVxuJiM0MztcdFx0cHJpbnRmIFwmIzM0O1xcbiAgICBURVNUOiAlLTYwcyAgW0ZBSUxdXFxuXCYjMzQ7IFwmIzM0OyR7bXNnfVwmIzM0O1xuJiM0MztcdFx0aWYgWyBcJiMzNDske1BBVVNFX09OX0ZBSUx9XCYjMzQ7ID0gXCYjMzQ7eWVzXCYjMzQ7IF07IHRoZW5cbiYjNDM7XHRcdFx0ZWNob1xuJiM0MztcdFx0XHRlY2hvIFwmIzM0O2hpdCBlbnRlciB0byBjb250aW51ZSwgJiMzOTtxJiMzOTsgdG8gcXVpdFwmIzM0O1xuJiM0MztcdFx0XHRyZWFkIC1yIGFcbiYjNDM7XHRcdFx0WyBcJiMzNDskYVwmIzM0OyA9IFwmIzM0O3FcJiMzNDsgXSBcdTAwMjZcdTAwMjYgZXhpdCAxXG4mIzQzO1x0XHRmaVxuJiM0MztcdGZpXG4mIzQzO31cbiYjNDM7XG4mIzQzO3ByaW50X2xvZ190ZXN0X3Jlc3VsdHMoKVxuJiM0Mzt7XG4mIzQzO1x0cHJpbnRmIFwmIzM0O1xcblRlc3RzIHBhc3NlZDogJTNkXFxuXCYjMzQ7IFwmIzM0OyR7bnN1Y2Nlc3N9XCYjMzQ7XG4mIzQzO1x0cHJpbnRmIFwmIzM0O1Rlc3RzIGZhaWxlZDogJTNkXFxuXCYjMzQ7ICAgXCYjMzQ7JHtuZmFpbH1cJiMzNDtcbiYjNDM7XG4mIzQzO1x0IyB3aGVuIGEgdGVzdCBmYWlscywgdGhlIHZhbHVlIG9mICYjMzk7cmV0JiMzOTsgaXMgc2V0IHRvIDEgKGVycm9yIGNvZGUpLlxuJiM0MztcdCMgQ29udmVyc2VseSwgd2hlbiBhbGwgdGVzdHMgYXJlIHBhc3NlZCBzdWNjZXNzZnVsbHksIHRoZSAmIzM5O3JldCYjMzk7IHZhbHVlXG4mIzQzO1x0IyBpcyBzZXQgdG8gMCAoc3VjY2VzcyBjb2RlKS5cbiYjNDM7XHRpZiBbIFwmIzM0OyR7cmV0fVwmIzM0OyAtbmUgMSBdOyB0aGVuXG4mIzQzO1x0XHRyZXQ9MFxuJiM0MztcdGZpXG4mIzQzO31cbiYjNDM7XG4mIzQzO2xvZ19zZWN0aW9uKClcbiYjNDM7e1xuJiM0MztcdGVjaG9cbiYjNDM7XHRlY2hvIFwmIzM0OyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjXCYjMzQ7XG4mIzQzO1x0ZWNobyBcJiMzNDtURVNUIFNFQ1RJT046ICQqXCYjMzQ7XG4mIzQzO1x0ZWNobyBcJiMzNDsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI1wmIzM0O1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztnZXRfcnRuYW1lKClcbiYjNDM7e1xuJiM0MztcdGxvY2FsIHJ0aWQ9XCYjMzQ7JDFcJiMzNDtcbiYjNDM7XG4mIzQzO1x0ZWNobyBcJiMzNDtydF8ke3J0aWR9XCYjMzQ7XG4mIzQzO31cbiYjNDM7XG4mIzQzO2dldF9ydF9uc25hbWUoKVxuJiM0Mzt7XG4mIzQzO1x0bG9jYWwgcnRpZD1cJiMzNDskMVwmIzM0O1xuJiM0MztcdGxvY2FsIHZhcm5hbWVcbiYjNDM7XG4mIzQzO1x0dmFybmFtZT1cJiMzNDskKGdldF9ydG5hbWUgXCYjMzQ7JHtydGlkfVwmIzM0OylcJiMzNDtcbiYjNDM7XHRlY2hvIFwmIzM0OyR7IXZhcm5hbWV9XCYjMzQ7XG4mIzQzO31cbiYjNDM7XG4mIzQzO2dldF9oc25hbWUoKVxuJiM0Mzt7XG4mIzQzO1x0bG9jYWwgdGlkPVwmIzM0OyQxXCYjMzQ7XG4mIzQzO1x0bG9jYWwgaHNpZD1cJiMzNDskMlwmIzM0O1xuJiM0MztcbiYjNDM7XHRlY2hvIFwmIzM0O2hzX3Qke3RpZH1fJHtoc2lkfVwmIzM0O1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztnZXRfaHNfbnNuYW1lKClcbiYjNDM7e1xuJiM0MztcdGxvY2FsIHRpZD1cJiMzNDskMVwmIzM0O1xuJiM0MztcdGxvY2FsIGhzaWQ9XCYjMzQ7JDJcJiMzNDtcbiYjNDM7XHRsb2NhbCB2YXJuYW1lXG4mIzQzO1xuJiM0MztcdHZhcm5hbWU9XCYjMzQ7JChnZXRfaHNuYW1lIFwmIzM0OyR7dGlkfVwmIzM0OyBcJiMzNDske2hzaWR9XCYjMzQ7KVwmIzM0O1xuJiM0MztcdGVjaG8gXCYjMzQ7JHshdmFybmFtZX1cJiMzNDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7Y2xlYW51cCgpXG4mIzQzO3tcbiYjNDM7XHRpcCBsaW5rIGRlbCB2ZXRoLXJ0LTEgMlx1MDAzZS9kZXYvbnVsbCB8fCB0cnVlXG4mIzQzO1x0aXAgbGluayBkZWwgdmV0aC1ydC0yIDJcdTAwM2UvZGV2L251bGwgfHwgdHJ1ZVxuJiM0MztcbiYjNDM7XHRjbGVhbnVwX2FsbF9uc1xuJiM0MztcbiYjNDM7XHQjIGNoZWNrIHdoZXRoZXIgdGhlIHNldHVwIHBoYXNlIHdhcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5IG9yIG5vdC4gSW5cbiYjNDM7XHQjIGNhc2Ugb2YgYW4gZXJyb3IgZHVyaW5nIHRoZSBzZXR1cCBwaGFzZSBvZiB0aGUgdGVzdGluZyBlbnZpcm9ubWVudCxcbiYjNDM7XHQjIHRoZSBzZWxmdGVzdCBpcyBjb25zaWRlcmVkIGFzIFwmIzM0O3NraXBwZWRcJiMzNDsuXG4mIzQzO1x0aWYgWyBcJiMzNDske1NFVFVQX0VSUn1cJiMzNDsgLW5lIDAgXTsgdGhlblxuJiM0MztcdFx0ZWNobyBcJiMzNDtTS0lQOiBTZXR0aW5nIHVwIHRoZSB0ZXN0aW5nIGVudmlyb25tZW50IGZhaWxlZFwmIzM0O1xuJiM0MztcdFx0ZXhpdCBcJiMzNDske2tzZnRfc2tpcH1cJiMzNDtcbiYjNDM7XHRmaVxuJiM0MztcbiYjNDM7XHRleGl0IFwmIzM0OyR7cmV0fVwmIzM0O1xuJiM0Mzt9XG4mIzQzO1xuJiM0MzsjIEhvc3QgaWQgb2YgdGhlIHJvdXRlciBsb29wYmFjayAocmxvKSBmb3IgYSAocm91dGVyLCB0ZW5hbnQpIHBhaXIuXG4mIzQzOyMgRS5nLiBydC0xL3RlbmFudCAxMDAgLVx1MDAzZSAxMDEsIHJ0LTIvdGVuYW50IDIwMCAtXHUwMDNlIDIwMi5cbiYjNDM7Z2V0X3Jsb19ob3N0aWQoKVxuJiM0Mzt7XG4mIzQzO1x0bG9jYWwgcnRpZD1cJiMzNDskMVwmIzM0O1xuJiM0MztcdGxvY2FsIHRpZD1cJiMzNDskMlwmIzM0O1xuJiM0MztcbiYjNDM7XHRlY2hvIFwmIzM0OyQoKHRpZCAmIzQzOyBydGlkKSlcJiMzNDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7YnVpbGRfdnBuX3NpZCgpXG4mIzQzO3tcbiYjNDM7XHRsb2NhbCBydHNyYz1cJiMzNDskMVwmIzM0O1xuJiM0MztcdGxvY2FsIHJ0ZHN0PVwmIzM0OyQyXCYjMzQ7XG4mIzQzO1x0bG9jYWwgdGlkPVwmIzM0OyQzXCYjMzQ7XG4mIzQzO1xuJiM0MztcdGVjaG8gXCYjMzQ7JHtWUE5fTE9DQVRPUl9TRVJWSUNFfToke3J0c3JjfToke3J0ZHN0fToke3RpZH06OiR7RFQ0Nl9GVU5DfVwmIzM0O1xuJiM0Mzt9XG4mIzQzO1xuJiM0MzsjIEluc3RhbGwgYSBkdWFsLXN0YWNrIChJUHY2IGFuZCBJUHY0KSBlbmNhcCByb3V0ZSBpbiBhIFZSRiBvbiB0aGUgZ2l2ZW5cbiYjNDM7IyByb3V0ZXIuXG4mIzQzOyMgYXJnczpcbiYjNDM7IyAgJDEgLSByb3V0ZXIgaWRcbiYjNDM7IyAgJDIgLSBob3N0IHBhcnQgb2YgdGhlIElQdjYgZGVzdGluYXRpb25cbiYjNDM7IyAgJDMgLSBob3N0IHBhcnQgb2YgdGhlIElQdjQgZGVzdGluYXRpb25cbiYjNDM7IyAgJDQgLSBTUnY2IFNJRCB1c2VkIGFzIHRoZSBlbmNhcCBkZXN0aW5hdGlvblxuJiM0MzsjICAkNSAtIHRlbmFudCBpZFxuJiM0MzsjICAkNiAtIGlmIFwmIzM0O3RydWVcJiMzNDssIGFkZCB0aGUgXCYjMzQ7bG9va3VwXCYjMzQ7IGF0dHJpYnV0ZSB0byB0aGUgZW5jYXAgcm91dGVcbiYjNDM7X19zZXRfZW5jYXBfcm91dGUoKVxuJiM0Mzt7XG4mIzQzO1x0bG9jYWwgcnQ9XCYjMzQ7JDFcJiMzNDtcbiYjNDM7XHRsb2NhbCBkc3Q2PVwmIzM0OyQyXCYjMzQ7XG4mIzQzO1x0bG9jYWwgZHN0ND1cJiMzNDskM1wmIzM0O1xuJiM0MztcdGxvY2FsIHNpZD1cJiMzNDskNFwmIzM0O1xuJiM0MztcdGxvY2FsIHRpZD1cJiMzNDskNVwmIzM0O1xuJiM0MztcdGxvY2FsIHVzZV9sb29rdXA9XCYjMzQ7JDZcJiMzNDtcbiYjNDM7XHRsb2NhbCBsb29rdXA9JiMzOTsmIzM5O1xuJiM0MztcdGxvY2FsIHJ0bmFtZVxuJiM0MztcbiYjNDM7XHRydG5hbWU9XCYjMzQ7JChnZXRfcnRfbnNuYW1lIFwmIzM0OyR7cnR9XCYjMzQ7KVwmIzM0O1xuJiM0MztcbiYjNDM7XHRpZiBbIFwmIzM0OyR7dXNlX2xvb2t1cH1cJiMzNDsgPSBcJiMzNDt0cnVlXCYjMzQ7IF07IHRoZW5cbiYjNDM7XHRcdGxvb2t1cD1cJiMzNDtsb29rdXAgJHtVTkRFUkxBWV9UQUJMRV9JRH1cJiMzNDtcbiYjNDM7XHRmaVxuJiM0MztcbiYjNDM7XHQjIHNoZWxsY2hlY2sgZGlzYWJsZT1TQzIwODZcbiYjNDM7XHRpcCAtbmV0bnMgXCYjMzQ7JHtydG5hbWV9XCYjMzQ7IC02IHJvdXRlIHJlcGxhY2UgXFxcbiYjNDM7XHRcdFwmIzM0OyR7SVB2Nl9IU19ORVRXT1JLfTo6JHtkc3Q2fS8xMjhcJiMzNDsgdnJmIFwmIzM0O3ZyZi0ke3RpZH1cJiMzNDsgXFxcbiYjNDM7XHRcdGVuY2FwIHNlZzYgbW9kZSBlbmNhcCBzZWdzIFwmIzM0OyR7c2lkfVwmIzM0OyAke2xvb2t1cH0gZGV2IHZldGgwXG4mIzQzO1xuJiM0MztcdCMgc2hlbGxjaGVjayBkaXNhYmxlPVNDMjA4NlxuJiM0MztcdGlwIC1uZXRucyBcJiMzNDske3J0bmFtZX1cJiMzNDsgLTQgcm91dGUgcmVwbGFjZSBcXFxuJiM0MztcdFx0XCYjMzQ7JHtJUHY0X0hTX05FVFdPUkt9LiR7ZHN0NH0vMzJcJiMzNDsgdnJmIFwmIzM0O3ZyZi0ke3RpZH1cJiMzNDsgXFxcbiYjNDM7XHRcdGVuY2FwIHNlZzYgbW9kZSBlbmNhcCBzZWdzIFwmIzM0OyR7c2lkfVwmIzM0OyAke2xvb2t1cH0gZGV2IHZldGgwXG4mIzQzO31cbiYjNDM7XG4mIzQzOyMgSW5zdGFsbCB0aGUgZHVhbC1zdGFjayBlbmNhcCByb3V0ZSBmb3IgYSB0ZW5hbnQgaG9zdCBvbiBydCwgd2l0aCB0aGVcbiYjNDM7IyBcJiMzNDtsb29rdXBcJiMzNDsgYXR0cmlidXRlIHNvIHRoZSBmaXJzdCBTSUQgaXMgbG9va2VkIHVwIGluIHRoZSB1bmRlcmxheSB0YWJsZS5cbiYjNDM7IyBhcmdzOlxuJiM0MzsjICAkMSAtIHJvdXRlciBpZCB3aGVyZSB0aGUgZW5jYXAgcm91dGUgaXMgaW5zdGFsbGVkXG4mIzQzOyMgICQyIC0gaG9zdCBkZXN0aW5hdGlvbiBpZCAoaG9zdCBwYXJ0IG9mIGNhZmU6Olx1MDAzY2lkXHUwMDNlLzEyOCBhbmQgMTAuMC4wLlx1MDAzY2lkXHUwMDNlLzMyKVxuJiM0MzsjICAkMyAtIFNSdjYgU0lEIHVzZWQgYXMgdGhlIGVuY2FwIGRlc3RpbmF0aW9uXG4mIzQzOyMgICQ0IC0gdGVuYW50IGlkXG4mIzQzO3NldF9ob3N0X2VuY2FwX3JvdXRlKClcbiYjNDM7e1xuJiM0MztcdGxvY2FsIHJ0PVwmIzM0OyQxXCYjMzQ7XG4mIzQzO1x0bG9jYWwgaHNkc3Q9XCYjMzQ7JDJcJiMzNDtcbiYjNDM7XHRsb2NhbCBzaWQ9XCYjMzQ7JDNcJiMzNDtcbiYjNDM7XHRsb2NhbCB0aWQ9XCYjMzQ7JDRcJiMzNDtcbiYjNDM7XG4mIzQzO1x0X19zZXRfZW5jYXBfcm91dGUgXCYjMzQ7JHtydH1cJiMzNDsgXCYjMzQ7JHtoc2RzdH1cJiMzNDsgXCYjMzQ7JHtoc2RzdH1cJiMzNDsgXCYjMzQ7JHtzaWR9XCYjMzQ7IFwmIzM0OyR7dGlkfVwmIzM0OyB0cnVlXG4mIzQzO31cbiYjNDM7XG4mIzQzO3NldF9ob3N0X2VuY2FwX3JvdXRlX25vbG9va3VwKClcbiYjNDM7e1xuJiM0MztcdGxvY2FsIHJ0PVwmIzM0OyQxXCYjMzQ7XG4mIzQzO1x0bG9jYWwgaHNkc3Q9XCYjMzQ7JDJcJiMzNDtcbiYjNDM7XHRsb2NhbCBzaWQ9XCYjMzQ7JDNcJiMzNDtcbiYjNDM7XHRsb2NhbCB0aWQ9XCYjMzQ7JDRcJiMzNDtcbiYjNDM7XG4mIzQzO1x0X19zZXRfZW5jYXBfcm91dGUgXCYjMzQ7JHtydH1cJiMzNDsgXCYjMzQ7JHtoc2RzdH1cJiMzNDsgXCYjMzQ7JHtoc2RzdH1cJiMzNDsgXCYjMzQ7JHtzaWR9XCYjMzQ7IFwmIzM0OyR7dGlkfVwmIzM0OyBmYWxzZVxuJiM0Mzt9XG4mIzQzO1xuJiM0MzsjIEluc3RhbGwgdGhlIGR1YWwtc3RhY2sgZW5jYXAgcm91dGUgb24gcnRzcmMgdG93YXJkIHJ0ZHN0JiMzOTtzIHJsbyBsb29wYmFja1xuJiM0MzsjIChSTE8xIG9yIFJMTzIsIHNlZSBoZWFkZXIpLCB3aXRoIHRoZSBcJiMzNDtsb29rdXBcJiMzNDsgYXR0cmlidXRlIHNvIHRoZSBmaXJzdFxuJiM0MzsjIFNJRCBpcyBsb29rZWQgdXAgaW4gdGhlIHVuZGVybGF5IHRhYmxlLlxuJiM0MzsjIGFyZ3M6XG4mIzQzOyMgICQxIC0gcm91dGVyIGlkIHdoZXJlIHRoZSBlbmNhcCByb3V0ZSBpcyBpbnN0YWxsZWRcbiYjNDM7IyAgJDIgLSByb3V0ZXIgaWQgd2hvc2UgbG9vcGJhY2sgYWRkcmVzcyBpcyB0aGUgcm91dGUgZGVzdGluYXRpb25cbiYjNDM7IyAgJDMgLSBTUnY2IFNJRCB1c2VkIGFzIHRoZSBlbmNhcCBkZXN0aW5hdGlvblxuJiM0MzsjICAkNCAtIHRlbmFudCBpZFxuJiM0MztzZXRfZ3dfZW5jYXBfcm91dGUoKVxuJiM0Mzt7XG4mIzQzO1x0bG9jYWwgcnRzcmM9XCYjMzQ7JDFcJiMzNDtcbiYjNDM7XHRsb2NhbCBydGRzdD1cJiMzNDskMlwmIzM0O1xuJiM0MztcdGxvY2FsIHNpZD1cJiMzNDskM1wmIzM0O1xuJiM0MztcdGxvY2FsIHRpZD1cJiMzNDskNFwmIzM0O1xuJiM0MztcdGxvY2FsIGRzdFxuJiM0MztcbiYjNDM7XHRkc3Q9XCYjMzQ7JChnZXRfcmxvX2hvc3RpZCBcJiMzNDske3J0ZHN0fVwmIzM0OyBcJiMzNDske3RpZH1cJiMzNDspXCYjMzQ7XG4mIzQzO1xuJiM0MztcdF9fc2V0X2VuY2FwX3JvdXRlIFwmIzM0OyR7cnRzcmN9XCYjMzQ7IFwmIzM0OyR7ZHN0fVwmIzM0OyBcJiMzNDske2RzdH1cJiMzNDsgXCYjMzQ7JHtzaWR9XCYjMzQ7IFwmIzM0OyR7dGlkfVwmIzM0OyB0cnVlXG4mIzQzO31cbiYjNDM7XG4mIzQzO3NldF9nd19lbmNhcF9yb3V0ZV9ub2xvb2t1cCgpXG4mIzQzO3tcbiYjNDM7XHRsb2NhbCBydHNyYz1cJiMzNDskMVwmIzM0O1xuJiM0MztcdGxvY2FsIHJ0ZHN0PVwmIzM0OyQyXCYjMzQ7XG4mIzQzO1x0bG9jYWwgc2lkPVwmIzM0OyQzXCYjMzQ7XG4mIzQzO1x0bG9jYWwgdGlkPVwmIzM0OyQ0XCYjMzQ7XG4mIzQzO1x0bG9jYWwgZHN0XG4mIzQzO1xuJiM0MztcdGRzdD1cJiMzNDskKGdldF9ybG9faG9zdGlkIFwmIzM0OyR7cnRkc3R9XCYjMzQ7IFwmIzM0OyR7dGlkfVwmIzM0OylcJiMzNDtcbiYjNDM7XG4mIzQzO1x0X19zZXRfZW5jYXBfcm91dGUgXCYjMzQ7JHtydHNyY31cJiMzNDsgXCYjMzQ7JHtkc3R9XCYjMzQ7IFwmIzM0OyR7ZHN0fVwmIzM0OyBcJiMzNDske3NpZH1cJiMzNDsgXCYjMzQ7JHt0aWR9XCYjMzQ7IGZhbHNlXG4mIzQzO31cbiYjNDM7XG4mIzQzOyMgU2V0dXAgdGhlIGJhc2ljIG5ldHdvcmtpbmcgZm9yIGEgcm91dGVyXG4mIzQzO3NldHVwX3J0X25ldHdvcmtpbmcoKVxuJiM0Mzt7XG4mIzQzO1x0bG9jYWwgaWQ9XCYjMzQ7JDFcJiMzNDtcbiYjNDM7XHRsb2NhbCBuc25hbWVcbiYjNDM7XG4mIzQzO1x0bnNuYW1lPVwmIzM0OyQoZ2V0X3J0X25zbmFtZSBcJiMzNDske2lkfVwmIzM0OylcJiMzNDtcbiYjNDM7XG4mIzQzO1x0aXAgbGluayBzZXQgXCYjMzQ7dmV0aC1ydC0ke2lkfVwmIzM0OyBuZXRucyBcJiMzNDske25zbmFtZX1cJiMzNDtcbiYjNDM7XHRpcCAtbmV0bnMgXCYjMzQ7JHtuc25hbWV9XCYjMzQ7IGxpbmsgc2V0IFwmIzM0O3ZldGgtcnQtJHtpZH1cJiMzNDsgbmFtZSB2ZXRoMFxuJiM0MztcbiYjNDM7XHRpcCBuZXRucyBleGVjIFwmIzM0OyR7bnNuYW1lfVwmIzM0OyBzeXNjdGwgLXdxIG5ldC5pcHY2LmNvbmYuYWxsLmFjY2VwdF9kYWQ9MFxuJiM0MztcdGlwIG5ldG5zIGV4ZWMgXCYjMzQ7JHtuc25hbWV9XCYjMzQ7IHN5c2N0bCAtd3EgbmV0LmlwdjYuY29uZi5kZWZhdWx0LmFjY2VwdF9kYWQ9MFxuJiM0MztcbiYjNDM7XHRpcCAtbmV0bnMgXCYjMzQ7JHtuc25hbWV9XCYjMzQ7IGFkZHIgYWRkIFwmIzM0OyR7SVB2Nl9SVF9ORVRXT1JLfTo6JHtpZH0vNjRcJiMzNDsgZGV2IHZldGgwIG5vZGFkXG4mIzQzO1x0aXAgLW5ldG5zIFwmIzM0OyR7bnNuYW1lfVwmIzM0OyBsaW5rIHNldCB2ZXRoMCB1cFxuJiM0MztcbiYjNDM7XHRpcCBuZXRucyBleGVjIFwmIzM0OyR7bnNuYW1lfVwmIzM0OyBzeXNjdGwgLXdxIG5ldC5pcHY0LmlwX2ZvcndhcmQ9MVxuJiM0MztcdGlwIG5ldG5zIGV4ZWMgXCYjMzQ7JHtuc25hbWV9XCYjMzQ7IHN5c2N0bCAtd3EgbmV0LmlwdjYuY29uZi5hbGwuZm9yd2FyZGluZz0xXG4mIzQzO31cbiYjNDM7XG4mIzQzOyMgU2V0dXAgYSBob3N0IG5hbWVzcGFjZSBhbmQgYXR0YWNoIGl0IHRvIGl0cyBnYXRld2F5XG4mIzQzO3NldHVwX2hzKClcbiYjNDM7e1xuJiM0MztcdGxvY2FsIGhpZD1cJiMzNDskMVwmIzM0O1xuJiM0MztcdGxvY2FsIHJpZD1cJiMzNDskMlwmIzM0O1xuJiM0MztcdGxvY2FsIHRpZD1cJiMzNDskM1wmIzM0O1xuJiM0MztcdGxvY2FsIHJ0dmV0aD1cJiMzNDt2ZXRoLXQke3RpZH1cJiMzNDtcbiYjNDM7XHRsb2NhbCBoc25hbWVcbiYjNDM7XHRsb2NhbCBydG5hbWVcbiYjNDM7XG4mIzQzO1x0aHNuYW1lPVwmIzM0OyQoZ2V0X2hzX25zbmFtZSBcJiMzNDske3RpZH1cJiMzNDsgXCYjMzQ7JHtoaWR9XCYjMzQ7KVwmIzM0O1xuJiM0MztcdHJ0bmFtZT1cJiMzNDskKGdldF9ydF9uc25hbWUgXCYjMzQ7JHtyaWR9XCYjMzQ7KVwmIzM0O1xuJiM0MztcbiYjNDM7XHRpcCBuZXRucyBleGVjIFwmIzM0OyR7aHNuYW1lfVwmIzM0OyBzeXNjdGwgLXdxIG5ldC5pcHY2LmNvbmYuYWxsLmFjY2VwdF9kYWQ9MFxuJiM0MztcdGlwIG5ldG5zIGV4ZWMgXCYjMzQ7JHtoc25hbWV9XCYjMzQ7IHN5c2N0bCAtd3EgbmV0LmlwdjYuY29uZi5kZWZhdWx0LmFjY2VwdF9kYWQ9MFxuJiM0MztcbiYjNDM7XHRpcCAtbmV0bnMgXCYjMzQ7JHtoc25hbWV9XCYjMzQ7IGxpbmsgYWRkIHZldGgwIHR5cGUgdmV0aCBwZWVyIG5hbWUgXCYjMzQ7JHtydHZldGh9XCYjMzQ7XG4mIzQzO1x0aXAgLW5ldG5zIFwmIzM0OyR7aHNuYW1lfVwmIzM0OyBsaW5rIHNldCBcJiMzNDske3J0dmV0aH1cJiMzNDsgbmV0bnMgXCYjMzQ7JHtydG5hbWV9XCYjMzQ7XG4mIzQzO1xuJiM0MztcdGlwIC1uZXRucyBcJiMzNDske2hzbmFtZX1cJiMzNDsgYWRkciBhZGQgXFxcbiYjNDM7XHRcdFwmIzM0OyR7SVB2Nl9IU19ORVRXT1JLfTo6JHtoaWR9LzY0XCYjMzQ7IGRldiB2ZXRoMCBub2RhZFxuJiM0MztcdGlwIC1uZXRucyBcJiMzNDske2hzbmFtZX1cJiMzNDsgYWRkciBhZGQgXFxcbiYjNDM7XHRcdFwmIzM0OyR7SVB2NF9IU19ORVRXT1JLfS4ke2hpZH0vMjRcJiMzNDsgZGV2IHZldGgwXG4mIzQzO1xuJiM0MztcdGlwIC1uZXRucyBcJiMzNDske2hzbmFtZX1cJiMzNDsgbGluayBzZXQgdmV0aDAgdXBcbiYjNDM7fVxuJiM0MztcbiYjNDM7IyBTZXR1cCB0aGUgcGVyLXRlbmFudCBWUkYgb24gYSByb3V0ZXIgKGdhdGV3YXksIGxvb3BiYWNrLCBibGFja2hvbGUpXG4mIzQzO3NldHVwX3J0KClcbiYjNDM7e1xuJiM0MztcdGxvY2FsIHJpZD1cJiMzNDskMVwmIzM0O1xuJiM0MztcdGxvY2FsIHRpZD1cJiMzNDskMlwmIzM0O1xuJiM0MztcdGxvY2FsIHJ0dmV0aD1cJiMzNDt2ZXRoLXQke3RpZH1cJiMzNDtcbiYjNDM7XHRsb2NhbCBybG9fZGV2PVwmIzM0O3Jsby0ke3RpZH1cJiMzNDtcbiYjNDM7XHRsb2NhbCBydG5hbWVcbiYjNDM7XHRsb2NhbCBnd19hZGRyX3Y2XG4mIzQzO1x0bG9jYWwgZ3dfYWRkcl92NFxuJiM0MztcbiYjNDM7XHRydG5hbWU9XCYjMzQ7JChnZXRfcnRfbnNuYW1lIFwmIzM0OyR7cmlkfVwmIzM0OylcJiMzNDtcbiYjNDM7XG4mIzQzO1x0Z3dfYWRkcl92Nj1cJiMzNDske0lQdjZfSFNfTkVUV09SS306OiQoZ2V0X3Jsb19ob3N0aWQgXCYjMzQ7JHtyaWR9XCYjMzQ7IFwmIzM0OyR7dGlkfVwmIzM0OylcJiMzNDtcbiYjNDM7XHRnd19hZGRyX3Y0PVwmIzM0OyR7SVB2NF9IU19ORVRXT1JLfS4kKGdldF9ybG9faG9zdGlkIFwmIzM0OyR7cmlkfVwmIzM0OyBcJiMzNDske3RpZH1cJiMzNDspXCYjMzQ7XG4mIzQzO1xuJiM0MztcdGlwIC1uZXRucyBcJiMzNDske3J0bmFtZX1cJiMzNDsgbGluayBhZGQgXCYjMzQ7dnJmLSR7dGlkfVwmIzM0OyB0eXBlIHZyZiB0YWJsZSBcJiMzNDske3RpZH1cJiMzNDtcbiYjNDM7XHRpcCAtbmV0bnMgXCYjMzQ7JHtydG5hbWV9XCYjMzQ7IGxpbmsgc2V0IFwmIzM0O3ZyZi0ke3RpZH1cJiMzNDsgdXBcbiYjNDM7XG4mIzQzO1x0aXAgLW5ldG5zIFwmIzM0OyR7cnRuYW1lfVwmIzM0OyBsaW5rIHNldCBcJiMzNDske3J0dmV0aH1cJiMzNDsgbWFzdGVyIFwmIzM0O3ZyZi0ke3RpZH1cJiMzNDtcbiYjNDM7XG4mIzQzO1x0aXAgLW5ldG5zIFwmIzM0OyR7cnRuYW1lfVwmIzM0OyBhZGRyIGFkZCBcXFxuJiM0MztcdFx0XCYjMzQ7JHtJUHY2X0hTX05FVFdPUkt9OjoyNTQvNjRcJiMzNDsgZGV2IFwmIzM0OyR7cnR2ZXRofVwmIzM0OyBub2RhZFxuJiM0MztcdGlwIC1uZXRucyBcJiMzNDske3J0bmFtZX1cJiMzNDsgYWRkciBhZGQgXFxcbiYjNDM7XHRcdFwmIzM0OyR7SVB2NF9IU19ORVRXT1JLfS4yNTQvMjRcJiMzNDsgZGV2IFwmIzM0OyR7cnR2ZXRofVwmIzM0O1xuJiM0MztcbiYjNDM7XHRpcCAtbmV0bnMgXCYjMzQ7JHtydG5hbWV9XCYjMzQ7IGxpbmsgc2V0IFwmIzM0OyR7cnR2ZXRofVwmIzM0OyB1cFxuJiM0MztcbiYjNDM7XHRpcCBuZXRucyBleGVjIFwmIzM0OyR7cnRuYW1lfVwmIzM0OyBcXFxuJiM0MztcdFx0c3lzY3RsIC13cSBcJiMzNDtuZXQuaXB2Ni5jb25mLiR7cnR2ZXRofS5wcm94eV9uZHA9MVwmIzM0O1xuJiM0MztcdGlwIG5ldG5zIGV4ZWMgXCYjMzQ7JHtydG5hbWV9XCYjMzQ7IFxcXG4mIzQzO1x0XHRzeXNjdGwgLXdxIFwmIzM0O25ldC5pcHY0LmNvbmYuJHtydHZldGh9LnByb3h5X2FycD0xXCYjMzQ7XG4mIzQzO1xuJiM0MztcdGlwIG5ldG5zIGV4ZWMgXCYjMzQ7JHtydG5hbWV9XCYjMzQ7IHNoIC1jIFwmIzM0O2VjaG8gMSBcdTAwM2UgL3Byb2Mvc3lzL25ldC92cmYvc3RyaWN0X21vZGVcJiMzNDtcbiYjNDM7XG4mIzQzO1x0IyByb3V0ZXIgbG9vcGJhY2sgaW50ZXJmYWNlIGZvciBsb2NhbGx5IG9yaWdpbmF0ZWQgdHJhZmZpY1xuJiM0MztcdGlwIC1uZXRucyBcJiMzNDske3J0bmFtZX1cJiMzNDsgbGluayBhZGQgXCYjMzQ7JHtybG9fZGV2fVwmIzM0OyB0eXBlIGR1bW15XG4mIzQzO1x0aXAgLW5ldG5zIFwmIzM0OyR7cnRuYW1lfVwmIzM0OyBsaW5rIHNldCBcJiMzNDske3Jsb19kZXZ9XCYjMzQ7IG1hc3RlciBcJiMzNDt2cmYtJHt0aWR9XCYjMzQ7XG4mIzQzO1xuJiM0MztcdGlwIC1uZXRucyBcJiMzNDske3J0bmFtZX1cJiMzNDsgYWRkciBhZGQgXCYjMzQ7JHtnd19hZGRyX3Y2fS8xMjhcJiMzNDsgXFxcbiYjNDM7XHRcdGRldiBcJiMzNDske3Jsb19kZXZ9XCYjMzQ7IG5vZGFkXG4mIzQzO1x0aXAgLW5ldG5zIFwmIzM0OyR7cnRuYW1lfVwmIzM0OyBhZGRyIGFkZCBcJiMzNDske2d3X2FkZHJfdjR9LzMyXCYjMzQ7IFxcXG4mIzQzO1x0XHRkZXYgXCYjMzQ7JHtybG9fZGV2fVwmIzM0O1xuJiM0MztcbiYjNDM7XHRpcCAtbmV0bnMgXCYjMzQ7JHtydG5hbWV9XCYjMzQ7IGxpbmsgc2V0IFwmIzM0OyR7cmxvX2Rldn1cJiMzNDsgdXBcbiYjNDM7XG4mIzQzO1x0IyBkZWZhdWx0IGJsYWNraG9sZSByb3V0ZXMgaW4gdGhlIFZSRjogYW55IHRyYWZmaWMgdGhhdCBkb2VzIG5vdCBtYXRjaFxuJiM0MztcdCMgYSBzcGVjaWZpYyByb3V0ZSBpcyBkcm9wcGVkLiBXaXRob3V0IHRoZSBcJiMzNDtsb29rdXBcJiMzNDsgYXR0cmlidXRlIG9uIHRoZVxuJiM0MztcdCMgZW5jYXAgcm91dGUsIHRoZSByb3V0ZSBmb3IgdGhlIGZpcnN0IFNJRCBjYW5ub3QgYmUgZm91bmQgZnJvbSB3aXRoaW5cbiYjNDM7XHQjIHRoZSBWUkYuXG4mIzQzO1x0aXAgLW5ldG5zIFwmIzM0OyR7cnRuYW1lfVwmIzM0OyAtNiByb3V0ZSBhZGQgYmxhY2tob2xlIGRlZmF1bHQgbWV0cmljIDQyNzgxOTgyNzIgXFxcbiYjNDM7XHRcdHZyZiBcJiMzNDt2cmYtJHt0aWR9XCYjMzQ7XG4mIzQzO1x0aXAgLW5ldG5zIFwmIzM0OyR7cnRuYW1lfVwmIzM0OyAtNCByb3V0ZSBhZGQgYmxhY2tob2xlIGRlZmF1bHQgbWV0cmljIDQyNzgxOTgyNzIgXFxcbiYjNDM7XHRcdHZyZiBcJiMzNDt2cmYtJHt0aWR9XCYjMzQ7XG4mIzQzO31cbiYjNDM7XG4mIzQzOyMgQ29uZmlndXJlIGEgb25lLXdheSBWUE4gcGF0aCB0b3dhcmRzIGhzZHN0IChvbiBydGRzdCkgZm9yIHRlbmFudCB0aWQuXG4mIzQzOyMgVGhlIGVuY2FwIHNpZGUgaXMgc2V0IHVwIG9uIHJ0c3JjIGFuZCB0aGUgZGVjYXAgc2lkZSBvbiBydGRzdC5cbiYjNDM7IyBhcmdzOlxuJiM0MzsjICAkMSAtIHJvdXRlciBpZCB3aGVyZSB0aGUgZW5jYXAgc2lkZSBpcyBzZXQgdXBcbiYjNDM7IyAgJDIgLSBob3N0IGlkIG9mIHRoZSBkZXN0aW5hdGlvbiBob3N0XG4mIzQzOyMgICQzIC0gcm91dGVyIGlkIG9mIHRoZSBkZXN0aW5hdGlvbiByb3V0ZXIgKGNvbm5lY3RlZCB0byB0aGUgZGVzdGluYXRpb24gaG9zdClcbiYjNDM7IyAgJDQgLSB0ZW5hbnQgaWRcbiYjNDM7c2V0dXBfdnBuX2NvbmZpZygpXG4mIzQzO3tcbiYjNDM7XHRsb2NhbCBydHNyYz1cJiMzNDskMVwmIzM0O1xuJiM0MztcdGxvY2FsIGhzZHN0PVwmIzM0OyQyXCYjMzQ7XG4mIzQzO1x0bG9jYWwgcnRkc3Q9XCYjMzQ7JDNcJiMzNDtcbiYjNDM7XHRsb2NhbCB0aWQ9XCYjMzQ7JDRcJiMzNDtcbiYjNDM7XHRsb2NhbCBydHZldGg9XCYjMzQ7dmV0aC10JHt0aWR9XCYjMzQ7XG4mIzQzO1x0bG9jYWwgcnRzcmNfbmFtZVxuJiM0MztcdGxvY2FsIHJ0ZHN0X25hbWVcbiYjNDM7XHRsb2NhbCB2cG5fc2lkXG4mIzQzO1xuJiM0MztcdHJ0c3JjX25hbWU9XCYjMzQ7JChnZXRfcnRfbnNuYW1lIFwmIzM0OyR7cnRzcmN9XCYjMzQ7KVwmIzM0O1xuJiM0MztcdHJ0ZHN0X25hbWU9XCYjMzQ7JChnZXRfcnRfbnNuYW1lIFwmIzM0OyR7cnRkc3R9XCYjMzQ7KVwmIzM0O1xuJiM0MztcdHZwbl9zaWQ9XCYjMzQ7JChidWlsZF92cG5fc2lkIFwmIzM0OyR7cnRzcmN9XCYjMzQ7IFwmIzM0OyR7cnRkc3R9XCYjMzQ7IFwmIzM0OyR7dGlkfVwmIzM0OylcJiMzNDtcbiYjNDM7XG4mIzQzO1x0aXAgLW5ldG5zIFwmIzM0OyR7cnRzcmNfbmFtZX1cJiMzNDsgLTYgbmVpZ2ggYWRkIHByb3h5IFxcXG4mIzQzO1x0XHRcJiMzNDske0lQdjZfSFNfTkVUV09SS306OiR7aHNkc3R9XCYjMzQ7IGRldiBcJiMzNDske3J0dmV0aH1cJiMzNDtcbiYjNDM7XHRzZXRfaG9zdF9lbmNhcF9yb3V0ZSBcJiMzNDske3J0c3JjfVwmIzM0OyBcJiMzNDske2hzZHN0fVwmIzM0OyBcJiMzNDske3Zwbl9zaWR9XCYjMzQ7IFwmIzM0OyR7dGlkfVwmIzM0O1xuJiM0MztcbiYjNDM7XHRpcCAtbmV0bnMgXCYjMzQ7JHtydHNyY19uYW1lfVwmIzM0OyAtNiByb3V0ZSBhZGQgXCYjMzQ7JHt2cG5fc2lkfS8xMjhcJiMzNDsgXFxcbiYjNDM7XHRcdHRhYmxlIFwmIzM0OyR7VU5ERVJMQVlfVEFCTEVfSUR9XCYjMzQ7IFxcXG4mIzQzO1x0XHR2aWEgXCYjMzQ7ZmQwMDo6JHtydGRzdH1cJiMzNDsgZGV2IHZldGgwXG4mIzQzO1xuJiM0MztcdCMgc2V0IHRoZSBkZWNhcCByb3V0ZSBmb3IgZGVjYXBzdWxhdGluZyBwYWNrZXRzIGFycml2aW5nIGZyb20gcnRzcmNcbiYjNDM7XHQjIGFuZCBkZXN0aW5lZCB0byBoc2RzdFxuJiM0MztcdGlwIC1uZXRucyBcJiMzNDske3J0ZHN0X25hbWV9XCYjMzQ7IC02IHJvdXRlIGFkZCBcJiMzNDske3Zwbl9zaWR9LzEyOFwmIzM0OyBcXFxuJiM0MztcdFx0dGFibGUgXCYjMzQ7JHtMT0NBTFNJRF9UQUJMRV9JRH1cJiMzNDsgXFxcbiYjNDM7XHRcdGVuY2FwIHNlZzZsb2NhbCBhY3Rpb24gRW5kLkRUNDYgXFxcbiYjNDM7XHRcdHZyZnRhYmxlIFwmIzM0OyR7dGlkfVwmIzM0OyBkZXYgXCYjMzQ7dnJmLSR7dGlkfVwmIzM0O1xuJiM0MztcbiYjNDM7XHQjIGFsbCBTSURzIGZvciBWUE5zIHN0YXJ0IHdpdGggYSBjb21tb24gbG9jYXRvciB3aGljaCBpcyBmYzAwOjovMTYuXG4mIzQzO1x0IyBSb3V0ZXMgZm9yIGhhbmRsaW5nIHRoZSBTUnY2IEVuZC5EVCogYmVoYXZpb3IgaW5zdGFuY2VzIGFyZSBncm91cGVkXG4mIzQzO1x0IyB0b2dldGhlciBpbiB0aGUgJiMzOTtsb2NhbHNpZCYjMzk7IHRhYmxlLlxuJiM0MztcdCNcbiYjNDM7XHQjIE5PVEU6IGFkZGVkIG9ubHkgb25jZVxuJiM0MztcdGlmICEgaXAgLW5ldG5zIFwmIzM0OyR7cnRkc3RfbmFtZX1cJiMzNDsgLTYgcnVsZSBzaG93IHwgXFxcbiYjNDM7XHQgICAgZ3JlcCAtcSBcJiMzNDt0byAke1ZQTl9MT0NBVE9SX1NFUlZJQ0V9OjovMTYgbG9va3VwICR7TE9DQUxTSURfVEFCTEVfSUR9XCYjMzQ7OyB0aGVuXG4mIzQzO1x0XHRpcCAtbmV0bnMgXCYjMzQ7JHtydGRzdF9uYW1lfVwmIzM0OyAtNiBydWxlIGFkZCBcXFxuJiM0MztcdFx0XHR0byBcJiMzNDske1ZQTl9MT0NBVE9SX1NFUlZJQ0V9OjovMTZcJiMzNDsgXFxcbiYjNDM7XHRcdFx0bG9va3VwIFwmIzM0OyR7TE9DQUxTSURfVEFCTEVfSUR9XCYjMzQ7IHByaW8gOTk5XG4mIzQzO1x0ZmlcbiYjNDM7fVxuJiM0MztcbiYjNDM7IyBDb25maWd1cmUgcnRzcmMgdG8gcmVhY2ggcnRkc3QmIzM5O3MgbG9vcGJhY2sgYWRkcmVzcyB0aHJvdWdoIHRoZSBWUE4uXG4mIzQzOyMgYXJnczpcbiYjNDM7IyAgJDEgLSByb3V0ZXIgaWQgd2hlcmUgdGhlIGVuY2FwIHJvdXRlIGlzIGluc3RhbGxlZFxuJiM0MzsjICAkMiAtIHJvdXRlciBpZCB3aG9zZSBsb29wYmFjayBpcyB0aGUgZGVzdGluYXRpb25cbiYjNDM7IyAgJDMgLSB0ZW5hbnQgaWRcbiYjNDM7c2V0dXBfdnBuX2d3X2VuY2FwKClcbiYjNDM7e1xuJiM0MztcdGxvY2FsIHJ0c3JjPVwmIzM0OyQxXCYjMzQ7XG4mIzQzO1x0bG9jYWwgcnRkc3Q9XCYjMzQ7JDJcJiMzNDtcbiYjNDM7XHRsb2NhbCB0aWQ9XCYjMzQ7JDNcJiMzNDtcbiYjNDM7XHRsb2NhbCBzaWRcbiYjNDM7XG4mIzQzO1x0c2lkPVwmIzM0OyQoYnVpbGRfdnBuX3NpZCBcJiMzNDske3J0c3JjfVwmIzM0OyBcJiMzNDske3J0ZHN0fVwmIzM0OyBcJiMzNDske3RpZH1cJiMzNDspXCYjMzQ7XG4mIzQzO1xuJiM0MztcdHNldF9nd19lbmNhcF9yb3V0ZSBcJiMzNDske3J0c3JjfVwmIzM0OyBcJiMzNDske3J0ZHN0fVwmIzM0OyBcJiMzNDske3NpZH1cJiMzNDsgXCYjMzQ7JHt0aWR9XCYjMzQ7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3NldHVwKClcbiYjNDM7e1xuJiM0MztcdGlwIGxpbmsgYWRkIHZldGgtcnQtMSB0eXBlIHZldGggcGVlciBuYW1lIHZldGgtcnQtMlxuJiM0MztcdHNldHVwX25zIHJ0XzEgcnRfMlxuJiM0MztcdHNldHVwX3J0X25ldHdvcmtpbmcgMVxuJiM0MztcdHNldHVwX3J0X25ldHdvcmtpbmcgMlxuJiM0MztcbiYjNDM7XHQjIHNldHVwIHR3byBob3N0cyBmb3IgdGhlIHRlbmFudCAxMDAuXG4mIzQzO1x0IyAgLSBob3N0IGhzLXQxMDAtMSBpcyBkaXJlY3RseSBjb25uZWN0ZWQgdG8gdGhlIHJvdXRlciBydC0xO1xuJiM0MztcdCMgIC0gaG9zdCBocy10MTAwLTIgaXMgZGlyZWN0bHkgY29ubmVjdGVkIHRvIHRoZSByb3V0ZXIgcnQtMi5cbiYjNDM7XHRzZXR1cF9ucyBoc190MTAwXzEgaHNfdDEwMF8yXG4mIzQzO1x0c2V0dXBfaHMgMSAxIDEwMFxuJiM0MztcdHNldHVwX2hzIDIgMiAxMDBcbiYjNDM7XG4mIzQzO1x0IyBzZXR1cCB0d28gaG9zdHMgZm9yIHRoZSB0ZW5hbnQgMjAwLlxuJiM0MztcdCMgIC0gaG9zdCBocy10MjAwLTMgaXMgZGlyZWN0bHkgY29ubmVjdGVkIHRvIHRoZSByb3V0ZXIgcnQtMTtcbiYjNDM7XHQjICAtIGhvc3QgaHMtdDIwMC00IGlzIGRpcmVjdGx5IGNvbm5lY3RlZCB0byB0aGUgcm91dGVyIHJ0LTIuXG4mIzQzO1x0c2V0dXBfbnMgaHNfdDIwMF8zIGhzX3QyMDBfNFxuJiM0MztcdHNldHVwX2hzIDMgMSAyMDBcbiYjNDM7XHRzZXR1cF9ocyA0IDIgMjAwXG4mIzQzO1xuJiM0MztcdCMgY29uZmlndXJlIGVhY2ggcm91dGVyIGZvciBlYWNoIHRlbmFudDogVlJGLCBibGFja2hvbGUgcm91dGVzLFxuJiM0MztcdCMgcm91dGVyIGxvb3BiYWNrIGludGVyZmFjZVxuJiM0MztcdHNldHVwX3J0IDEgMTAwXG4mIzQzO1x0c2V0dXBfcnQgMiAxMDBcbiYjNDM7XHRzZXR1cF9ydCAxIDIwMFxuJiM0MztcdHNldHVwX3J0IDIgMjAwXG4mIzQzO1xuJiM0MztcdCMgc2V0dXAgdGhlIEwzIFZQTiB3aGljaCBjb25uZWN0cyB0aGUgaG9zdCBocy10MTAwLTEgYW5kIGhvc3QgaHMtdDEwMC0yXG4mIzQzO1x0IyB3aXRoaW4gdGhlIHNhbWUgdGVuYW50IDEwMC5cbiYjNDM7XHRzZXR1cF92cG5fY29uZmlnIDEgMiAyIDEwMFxuJiM0MztcdHNldHVwX3Zwbl9jb25maWcgMiAxIDEgMTAwXG4mIzQzO1xuJiM0MztcdCMgc2V0dXAgdGhlIEwzIFZQTiB3aGljaCBjb25uZWN0cyB0aGUgaG9zdCBocy10MjAwLTMgYW5kIGhvc3QgaHMtdDIwMC00XG4mIzQzO1x0IyB3aXRoaW4gdGhlIHNhbWUgdGVuYW50IDIwMC5cbiYjNDM7XHRzZXR1cF92cG5fY29uZmlnIDEgNCAyIDIwMFxuJiM0MztcdHNldHVwX3Zwbl9jb25maWcgMiAzIDEgMjAwXG4mIzQzO1xuJiM0MztcdCMgYWxsb3cgZWFjaCByb3V0ZXIgdG8gcmVhY2ggdGhlIG90aGVyJiMzOTtzIGxvb3BiYWNrIHRocm91Z2ggdGhlIFZQTlxuJiM0MztcdHNldHVwX3Zwbl9nd19lbmNhcCAyIDEgMTAwXG4mIzQzO1x0c2V0dXBfdnBuX2d3X2VuY2FwIDEgMiAxMDBcbiYjNDM7XHRzZXR1cF92cG5fZ3dfZW5jYXAgMiAxIDIwMFxuJiM0MztcdHNldHVwX3Zwbl9nd19lbmNhcCAxIDIgMjAwXG4mIzQzO1xuJiM0MztcdCMgdGVzdGluZyBlbnZpcm9ubWVudCB3YXMgc2V0IHVwIHN1Y2Nlc3NmdWxseVxuJiM0MztcdFNFVFVQX0VSUj0wXG4mIzQzO31cbiYjNDM7XG4mIzQzO2NoZWNrX3J0X2Nvbm5lY3Rpdml0eSgpXG4mIzQzO3tcbiYjNDM7XHRsb2NhbCBydHNyYz1cJiMzNDskMVwmIzM0O1xuJiM0MztcdGxvY2FsIHJ0ZHN0PVwmIzM0OyQyXCYjMzQ7XG4mIzQzO1x0bG9jYWwgbnNuYW1lXG4mIzQzO1xuJiM0MztcdG5zbmFtZT1cJiMzNDskKGdldF9ydF9uc25hbWUgXCYjMzQ7JHtydHNyY31cJiMzNDspXCYjMzQ7XG4mIzQzO1xuJiM0MztcdGlwIG5ldG5zIGV4ZWMgXCYjMzQ7JHtuc25hbWV9XCYjMzQ7IHBpbmcgLWMgMSAtVyAxIFwmIzM0OyR7SVB2Nl9SVF9ORVRXT1JLfTo6JHtydGRzdH1cJiMzNDsgXFxcbiYjNDM7XHRcdFx1MDAzZS9kZXYvbnVsbCAyXHUwMDNlXHUwMDI2MVxuJiM0Mzt9XG4mIzQzO1xuJiM0MztjaGVja19hbmRfbG9nX3J0X2Nvbm5lY3Rpdml0eSgpXG4mIzQzO3tcbiYjNDM7XHRsb2NhbCBydHNyYz1cJiMzNDskMVwmIzM0O1xuJiM0MztcdGxvY2FsIHJ0ZHN0PVwmIzM0OyQyXCYjMzQ7XG4mIzQzO1xuJiM0MztcdGNoZWNrX3J0X2Nvbm5lY3Rpdml0eSBcJiMzNDske3J0c3JjfVwmIzM0OyBcJiMzNDske3J0ZHN0fVwmIzM0O1xuJiM0MztcdGxvZ190ZXN0ICQ/IDAgXCYjMzQ7Um91dGVycyBjb25uZWN0aXZpdHk6IHJ0LSR7cnRzcmN9IC1cdTAwM2UgcnQtJHtydGRzdH1cJiMzNDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7Y2hlY2tfaHNfaXB2Nl9jb25uZWN0aXZpdHkoKVxuJiM0Mzt7XG4mIzQzO1x0bG9jYWwgaHNzcmM9XCYjMzQ7JDFcJiMzNDtcbiYjNDM7XHRsb2NhbCBoc2RzdD1cJiMzNDskMlwmIzM0O1xuJiM0MztcdGxvY2FsIHRpZD1cJiMzNDskM1wmIzM0O1xuJiM0MztcdGxvY2FsIG5zbmFtZVxuJiM0MztcbiYjNDM7XHRuc25hbWU9XCYjMzQ7JChnZXRfaHNfbnNuYW1lIFwmIzM0OyR7dGlkfVwmIzM0OyBcJiMzNDske2hzc3JjfVwmIzM0OylcJiMzNDtcbiYjNDM7XG4mIzQzO1x0aXAgbmV0bnMgZXhlYyBcJiMzNDske25zbmFtZX1cJiMzNDsgcGluZyAtYyAxIC1XIFwmIzM0OyR7UElOR19USU1FT1VUX1NFQ31cJiMzNDsgXFxcbiYjNDM7XHRcdFwmIzM0OyR7SVB2Nl9IU19ORVRXT1JLfTo6JHtoc2RzdH1cJiMzNDsgXHUwMDNlL2Rldi9udWxsIDJcdTAwM2VcdTAwMjYxXG4mIzQzO31cbiYjNDM7XG4mIzQzO2NoZWNrX2hzX2lwdjRfY29ubmVjdGl2aXR5KClcbiYjNDM7e1xuJiM0MztcdGxvY2FsIGhzc3JjPVwmIzM0OyQxXCYjMzQ7XG4mIzQzO1x0bG9jYWwgaHNkc3Q9XCYjMzQ7JDJcJiMzNDtcbiYjNDM7XHRsb2NhbCB0aWQ9XCYjMzQ7JDNcJiMzNDtcbiYjNDM7XHRsb2NhbCBuc25hbWVcbiYjNDM7XG4mIzQzO1x0bnNuYW1lPVwmIzM0OyQoZ2V0X2hzX25zbmFtZSBcJiMzNDske3RpZH1cJiMzNDsgXCYjMzQ7JHtoc3NyY31cJiMzNDspXCYjMzQ7XG4mIzQzO1xuJiM0MztcdGlwIG5ldG5zIGV4ZWMgXCYjMzQ7JHtuc25hbWV9XCYjMzQ7IHBpbmcgLWMgMSAtVyBcJiMzNDske1BJTkdfVElNRU9VVF9TRUN9XCYjMzQ7IFxcXG4mIzQzO1x0XHRcJiMzNDske0lQdjRfSFNfTkVUV09SS30uJHtoc2RzdH1cJiMzNDsgXHUwMDNlL2Rldi9udWxsIDJcdTAwM2VcdTAwMjYxXG4mIzQzO31cbiYjNDM7XG4mIzQzO2NoZWNrX2FuZF9sb2dfaHNfY29ubmVjdGl2aXR5KClcbiYjNDM7e1xuJiM0MztcdGxvY2FsIGhzc3JjPVwmIzM0OyQxXCYjMzQ7XG4mIzQzO1x0bG9jYWwgaHNkc3Q9XCYjMzQ7JDJcJiMzNDtcbiYjNDM7XHRsb2NhbCB0aWQ9XCYjMzQ7JDNcJiMzNDtcbiYjNDM7XG4mIzQzO1x0Y2hlY2tfaHNfaXB2Nl9jb25uZWN0aXZpdHkgXCYjMzQ7JHtoc3NyY31cJiMzNDsgXCYjMzQ7JHtoc2RzdH1cJiMzNDsgXCYjMzQ7JHt0aWR9XCYjMzQ7XG4mIzQzO1x0bG9nX3Rlc3QgJD8gMCBcJiMzNDtJUHY2IGNvbm5lY3Rpdml0eTogaHMtdCR7dGlkfS0ke2hzc3JjfSAtXHUwMDNlIGhzLXQke3RpZH0tJHtoc2RzdH0gKHRlbmFudCAke3RpZH0pXCYjMzQ7XG4mIzQzO1xuJiM0MztcdGNoZWNrX2hzX2lwdjRfY29ubmVjdGl2aXR5IFwmIzM0OyR7aHNzcmN9XCYjMzQ7IFwmIzM0OyR7aHNkc3R9XCYjMzQ7IFwmIzM0OyR7dGlkfVwmIzM0O1xuJiM0MztcdGxvZ190ZXN0ICQ/IDAgXCYjMzQ7SVB2NCBjb25uZWN0aXZpdHk6IGhzLXQke3RpZH0tJHtoc3NyY30gLVx1MDAzZSBocy10JHt0aWR9LSR7aHNkc3R9ICh0ZW5hbnQgJHt0aWR9KVwmIzM0O1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztjaGVja19hbmRfbG9nX2hzX2lzb2xhdGlvbigpXG4mIzQzO3tcbiYjNDM7XHRsb2NhbCBoc3NyYz1cJiMzNDskMVwmIzM0O1xuJiM0MztcdGxvY2FsIHRpZHNyYz1cJiMzNDskMlwmIzM0O1xuJiM0MztcdGxvY2FsIGhzZHN0PVwmIzM0OyQzXCYjMzQ7XG4mIzQzO1x0bG9jYWwgdGlkZHN0PVwmIzM0OyQ0XCYjMzQ7XG4mIzQzO1xuJiM0MztcdGNoZWNrX2hzX2lwdjZfY29ubmVjdGl2aXR5IFwmIzM0OyR7aHNzcmN9XCYjMzQ7IFwmIzM0OyR7aHNkc3R9XCYjMzQ7IFwmIzM0OyR7dGlkc3JjfVwmIzM0O1xuJiM0MztcdGxvZ190ZXN0ICQ/IDEgXCYjMzQ7SVB2NiBpc29sYXRpb246IGhzLXQke3RpZHNyY30tJHtoc3NyY30gLVgtXHUwMDNlIGhzLXQke3RpZGRzdH0tJHtoc2RzdH1cJiMzNDtcbiYjNDM7XG4mIzQzO1x0Y2hlY2tfaHNfaXB2NF9jb25uZWN0aXZpdHkgXCYjMzQ7JHtoc3NyY31cJiMzNDsgXCYjMzQ7JHtoc2RzdH1cJiMzNDsgXCYjMzQ7JHt0aWRzcmN9XCYjMzQ7XG4mIzQzO1x0bG9nX3Rlc3QgJD8gMSBcJiMzNDtJUHY0IGlzb2xhdGlvbjogaHMtdCR7dGlkc3JjfS0ke2hzc3JjfSAtWC1cdTAwM2UgaHMtdCR7dGlkZHN0fS0ke2hzZHN0fVwmIzM0O1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztjaGVja19hbmRfbG9nX2hzMmd3X2Nvbm5lY3Rpdml0eSgpXG4mIzQzO3tcbiYjNDM7XHRsb2NhbCBoc3NyYz1cJiMzNDskMVwmIzM0O1xuJiM0MztcdGxvY2FsIHRpZD1cJiMzNDskMlwmIzM0O1xuJiM0MztcbiYjNDM7XHRjaGVja19oc19pcHY2X2Nvbm5lY3Rpdml0eSBcJiMzNDske2hzc3JjfVwmIzM0OyAyNTQgXCYjMzQ7JHt0aWR9XCYjMzQ7XG4mIzQzO1x0bG9nX3Rlc3QgJD8gMCBcJiMzNDtJUHY2IGNvbm5lY3Rpdml0eTogaHMtdCR7dGlkfS0ke2hzc3JjfSAtXHUwMDNlIGd3ICh0ZW5hbnQgJHt0aWR9KVwmIzM0O1xuJiM0MztcbiYjNDM7XHRjaGVja19oc19pcHY0X2Nvbm5lY3Rpdml0eSBcJiMzNDske2hzc3JjfVwmIzM0OyAyNTQgXCYjMzQ7JHt0aWR9XCYjMzQ7XG4mIzQzO1x0bG9nX3Rlc3QgJD8gMCBcJiMzNDtJUHY0IGNvbm5lY3Rpdml0eTogaHMtdCR7dGlkfS0ke2hzc3JjfSAtXHUwMDNlIGd3ICh0ZW5hbnQgJHt0aWR9KVwmIzM0O1xuJiM0Mzt9XG4mIzQzO1xuJiM0Mztyb3V0ZXJfdGVzdHMoKVxuJiM0Mzt7XG4mIzQzO1x0bG9nX3NlY3Rpb24gXCYjMzQ7SVB2NiByb3V0ZXJzIGNvbm5lY3Rpdml0eSB0ZXN0XCYjMzQ7XG4mIzQzO1xuJiM0MztcdGNoZWNrX2FuZF9sb2dfcnRfY29ubmVjdGl2aXR5IDEgMlxuJiM0MztcdGNoZWNrX2FuZF9sb2dfcnRfY29ubmVjdGl2aXR5IDIgMVxuJiM0Mzt9XG4mIzQzO1xuJiM0Mztob3N0MmdhdGV3YXlfdGVzdHMoKVxuJiM0Mzt7XG4mIzQzO1x0bG9nX3NlY3Rpb24gXCYjMzQ7Q29ubmVjdGl2aXR5IHRlc3QgYW1vbmcgaG9zdHMgYW5kIGdhdGV3YXlcJiMzNDtcbiYjNDM7XG4mIzQzO1x0Y2hlY2tfYW5kX2xvZ19oczJnd19jb25uZWN0aXZpdHkgMSAxMDBcbiYjNDM7XHRjaGVja19hbmRfbG9nX2hzMmd3X2Nvbm5lY3Rpdml0eSAyIDEwMFxuJiM0MztcbiYjNDM7XHRjaGVja19hbmRfbG9nX2hzMmd3X2Nvbm5lY3Rpdml0eSAzIDIwMFxuJiM0MztcdGNoZWNrX2FuZF9sb2dfaHMyZ3dfY29ubmVjdGl2aXR5IDQgMjAwXG4mIzQzO31cbiYjNDM7XG4mIzQzO2hvc3RfdnBuX3Rlc3RzKClcbiYjNDM7e1xuJiM0MztcdGxvZ19zZWN0aW9uIFwmIzM0O1NSdjYgVlBOIGNvbm5lY3Rpdml0eSB0ZXN0IGFtb25nIGhvc3RzIGluIHRoZSBzYW1lIHRlbmFudFwmIzM0O1xuJiM0MztcbiYjNDM7XHRjaGVja19hbmRfbG9nX2hzX2Nvbm5lY3Rpdml0eSAxIDIgMTAwXG4mIzQzO1x0Y2hlY2tfYW5kX2xvZ19oc19jb25uZWN0aXZpdHkgMiAxIDEwMFxuJiM0MztcbiYjNDM7XHRjaGVja19hbmRfbG9nX2hzX2Nvbm5lY3Rpdml0eSAzIDQgMjAwXG4mIzQzO1x0Y2hlY2tfYW5kX2xvZ19oc19jb25uZWN0aXZpdHkgNCAzIDIwMFxuJiM0Mzt9XG4mIzQzO1xuJiM0Mztob3N0X3Zwbl9pc29sYXRpb25fdGVzdHMoKVxuJiM0Mzt7XG4mIzQzO1x0bG9jYWwgbDE9XCYjMzQ7MSAyXCYjMzQ7XG4mIzQzO1x0bG9jYWwgbDI9XCYjMzQ7MyA0XCYjMzQ7XG4mIzQzO1x0bG9jYWwgdDE9MTAwXG4mIzQzO1x0bG9jYWwgdDI9MjAwXG4mIzQzO1x0bG9jYWwgaVxuJiM0MztcdGxvY2FsIGpcbiYjNDM7XHRsb2NhbCB0bXBcbiYjNDM7XG4mIzQzO1x0bG9nX3NlY3Rpb24gXCYjMzQ7U1J2NiBWUE4gaXNvbGF0aW9uIHRlc3QgYW1vbmcgaG9zdHMgaW4gZGlmZmVyZW50IHRlbmFudHNcJiMzNDtcbiYjNDM7XG4mIzQzO1x0Zm9yIF8gaW4gMCAxOyBkb1xuJiM0MztcdFx0Zm9yIGkgaW4gJHtsMX07IGRvXG4mIzQzO1x0XHRcdGZvciBqIGluICR7bDJ9OyBkb1xuJiM0MztcdFx0XHRcdGNoZWNrX2FuZF9sb2dfaHNfaXNvbGF0aW9uIFwmIzM0OyR7aX1cJiMzNDsgXCYjMzQ7JHt0MX1cJiMzNDsgXCYjMzQ7JHtqfVwmIzM0OyBcJiMzNDske3QyfVwmIzM0O1xuJiM0MztcdFx0XHRkb25lXG4mIzQzO1x0XHRkb25lXG4mIzQzO1xuJiM0MztcdFx0IyBsZXQgdXMgdGVzdCB0aGUgcmV2ZXJzZSBwYXRoXG4mIzQzO1x0XHR0bXA9XCYjMzQ7JHtsMX1cJiMzNDs7IGwxPVwmIzM0OyR7bDJ9XCYjMzQ7OyBsMj1cJiMzNDske3RtcH1cJiMzNDtcbiYjNDM7XHRcdHRtcD0ke3QxfTsgdDE9JHt0Mn07IHQyPSR7dG1wfVxuJiM0MztcdGRvbmVcbiYjNDM7fVxuJiM0MztcbiYjNDM7X190ZXN0X25vbG9va3VwKClcbiYjNDM7e1xuJiM0MztcdGxvY2FsIGhzc3JjPVwmIzM0OyQxXCYjMzQ7XG4mIzQzO1x0bG9jYWwgaHNkc3Q9XCYjMzQ7JDJcJiMzNDtcbiYjNDM7XHRsb2NhbCBydHNyYz1cJiMzNDskM1wmIzM0O1xuJiM0MztcdGxvY2FsIHJ0ZHN0PVwmIzM0OyQ0XCYjMzQ7XG4mIzQzO1x0bG9jYWwgdGlkPVwmIzM0OyQ1XCYjMzQ7XG4mIzQzO1x0bG9jYWwgdnBuX3NpZFxuJiM0MztcbiYjNDM7XHR2cG5fc2lkPVwmIzM0OyQoYnVpbGRfdnBuX3NpZCBcJiMzNDske3J0c3JjfVwmIzM0OyBcJiMzNDske3J0ZHN0fVwmIzM0OyBcJiMzNDske3RpZH1cJiMzNDspXCYjMzQ7XG4mIzQzO1xuJiM0MztcdCMgcmVwbGFjZSBlbmNhcCByb3V0ZShzKSB3aXRob3V0IFwmIzM0O2xvb2t1cFwmIzM0OyBhdHRyaWJ1dGVcbiYjNDM7XHRzZXRfaG9zdF9lbmNhcF9yb3V0ZV9ub2xvb2t1cCBcJiMzNDske3J0c3JjfVwmIzM0OyBcJiMzNDske2hzZHN0fVwmIzM0OyBcJiMzNDske3Zwbl9zaWR9XCYjMzQ7IFwmIzM0OyR7dGlkfVwmIzM0O1xuJiM0MztcbiYjNDM7XHRjaGVja19oc19pcHY2X2Nvbm5lY3Rpdml0eSBcJiMzNDske2hzc3JjfVwmIzM0OyBcJiMzNDske2hzZHN0fVwmIzM0OyBcJiMzNDske3RpZH1cJiMzNDtcbiYjNDM7XHRsb2dfdGVzdCAkPyAxIFwmIzM0O0lQdjYgdy9vIGxvb2t1cDogaHMtdCR7dGlkfS0ke2hzc3JjfSAtWC1cdTAwM2UgaHMtdCR7dGlkfS0ke2hzZHN0fSAodGVuYW50ICR7dGlkfSlcJiMzNDtcbiYjNDM7XG4mIzQzO1x0Y2hlY2tfaHNfaXB2NF9jb25uZWN0aXZpdHkgXCYjMzQ7JHtoc3NyY31cJiMzNDsgXCYjMzQ7JHtoc2RzdH1cJiMzNDsgXCYjMzQ7JHt0aWR9XCYjMzQ7XG4mIzQzO1x0bG9nX3Rlc3QgJD8gMSBcJiMzNDtJUHY0IHcvbyBsb29rdXA6IGhzLXQke3RpZH0tJHtoc3NyY30gLVgtXHUwMDNlIGhzLXQke3RpZH0tJHtoc2RzdH0gKHRlbmFudCAke3RpZH0pXCYjMzQ7XG4mIzQzO1xuJiM0MztcdCMgcmVzdG9yZSBlbmNhcCByb3V0ZShzKSB3aXRoIFwmIzM0O2xvb2t1cFwmIzM0OyBmb3Igc3Vic2VxdWVudCB0ZXN0c1xuJiM0MztcdHNldF9ob3N0X2VuY2FwX3JvdXRlIFwmIzM0OyR7cnRzcmN9XCYjMzQ7IFwmIzM0OyR7aHNkc3R9XCYjMzQ7IFwmIzM0OyR7dnBuX3NpZH1cJiMzNDsgXCYjMzQ7JHt0aWR9XCYjMzQ7XG4mIzQzO31cbiYjNDM7XG4mIzQzO2hvc3RfdnBuX25vbG9va3VwX3Rlc3RzKClcbiYjNDM7e1xuJiM0MztcdGxvZ19zZWN0aW9uIFwmIzM0O1NSdjYgVlBOIGNvbm5lY3Rpdml0eSB0ZXN0IGFtb25nIGhvc3RzIHcvbyBsb29rdXBcJiMzNDtcbiYjNDM7XG4mIzQzO1x0X190ZXN0X25vbG9va3VwIDEgMiAxIDIgMTAwXG4mIzQzO1x0X190ZXN0X25vbG9va3VwIDIgMSAyIDEgMTAwXG4mIzQzO1xuJiM0MztcdF9fdGVzdF9ub2xvb2t1cCAzIDQgMSAyIDIwMFxuJiM0MztcdF9fdGVzdF9ub2xvb2t1cCA0IDMgMiAxIDIwMFxuJiM0Mzt9XG4mIzQzO1xuJiM0MztjaGVja19nd19pcHY2X2Nvbm5lY3Rpdml0eSgpXG4mIzQzO3tcbiYjNDM7XHRsb2NhbCBydHNyYz1cJiMzNDskMVwmIzM0O1xuJiM0MztcdGxvY2FsIHJ0ZHN0PVwmIzM0OyQyXCYjMzQ7XG4mIzQzO1x0bG9jYWwgdGlkc3JjPVwmIzM0OyQzXCYjMzQ7XG4mIzQzO1x0bG9jYWwgdGlkZHN0PVwmIzM0OyQ0XCYjMzQ7XG4mIzQzO1x0bG9jYWwgcnRuYW1lXG4mIzQzO1x0bG9jYWwgc3JjX3Y2XG4mIzQzO1x0bG9jYWwgZHN0X3Y2XG4mIzQzO1xuJiM0MztcdHJ0bmFtZT1cJiMzNDskKGdldF9ydF9uc25hbWUgXCYjMzQ7JHtydHNyY31cJiMzNDspXCYjMzQ7XG4mIzQzO1x0c3JjX3Y2PVwmIzM0OyR7SVB2Nl9IU19ORVRXT1JLfTo6JChnZXRfcmxvX2hvc3RpZCBcJiMzNDske3J0c3JjfVwmIzM0OyBcJiMzNDske3RpZHNyY31cJiMzNDspXCYjMzQ7XG4mIzQzO1x0ZHN0X3Y2PVwmIzM0OyR7SVB2Nl9IU19ORVRXT1JLfTo6JChnZXRfcmxvX2hvc3RpZCBcJiMzNDske3J0ZHN0fVwmIzM0OyBcJiMzNDske3RpZGRzdH1cJiMzNDspXCYjMzQ7XG4mIzQzO1xuJiM0MztcdGlwIG5ldG5zIGV4ZWMgXCYjMzQ7JHtydG5hbWV9XCYjMzQ7IGlwIHZyZiBleGVjIFwmIzM0O3ZyZi0ke3RpZHNyY31cJiMzNDsgXFxcbiYjNDM7XHRcdHBpbmcgLWMgMSAtVyBcJiMzNDske1BJTkdfVElNRU9VVF9TRUN9XCYjMzQ7IFxcXG4mIzQzO1x0XHQtSSBcJiMzNDske3NyY192Nn1cJiMzNDsgXCYjMzQ7JHtkc3RfdjZ9XCYjMzQ7IFx1MDAzZS9kZXYvbnVsbCAyXHUwMDNlXHUwMDI2MVxuJiM0Mzt9XG4mIzQzO1xuJiM0MztjaGVja19nd19pcHY0X2Nvbm5lY3Rpdml0eSgpXG4mIzQzO3tcbiYjNDM7XHRsb2NhbCBydHNyYz1cJiMzNDskMVwmIzM0O1xuJiM0MztcdGxvY2FsIHJ0ZHN0PVwmIzM0OyQyXCYjMzQ7XG4mIzQzO1x0bG9jYWwgdGlkc3JjPVwmIzM0OyQzXCYjMzQ7XG4mIzQzO1x0bG9jYWwgdGlkZHN0PVwmIzM0OyQ0XCYjMzQ7XG4mIzQzO1x0bG9jYWwgcnRuYW1lXG4mIzQzO1x0bG9jYWwgc3JjX3Y0XG4mIzQzO1x0bG9jYWwgZHN0X3Y0XG4mIzQzO1xuJiM0MztcdHJ0bmFtZT1cJiMzNDskKGdldF9ydF9uc25hbWUgXCYjMzQ7JHtydHNyY31cJiMzNDspXCYjMzQ7XG4mIzQzO1x0c3JjX3Y0PVwmIzM0OyR7SVB2NF9IU19ORVRXT1JLfS4kKGdldF9ybG9faG9zdGlkIFwmIzM0OyR7cnRzcmN9XCYjMzQ7IFwmIzM0OyR7dGlkc3JjfVwmIzM0OylcJiMzNDtcbiYjNDM7XHRkc3RfdjQ9XCYjMzQ7JHtJUHY0X0hTX05FVFdPUkt9LiQoZ2V0X3Jsb19ob3N0aWQgXCYjMzQ7JHtydGRzdH1cJiMzNDsgXCYjMzQ7JHt0aWRkc3R9XCYjMzQ7KVwmIzM0O1xuJiM0MztcbiYjNDM7XHRpcCBuZXRucyBleGVjIFwmIzM0OyR7cnRuYW1lfVwmIzM0OyBpcCB2cmYgZXhlYyBcJiMzNDt2cmYtJHt0aWRzcmN9XCYjMzQ7IFxcXG4mIzQzO1x0XHRwaW5nIC1jIDEgLVcgXCYjMzQ7JHtQSU5HX1RJTUVPVVRfU0VDfVwmIzM0OyBcXFxuJiM0MztcdFx0LUkgXCYjMzQ7JHtzcmNfdjR9XCYjMzQ7IFwmIzM0OyR7ZHN0X3Y0fVwmIzM0OyBcdTAwM2UvZGV2L251bGwgMlx1MDAzZVx1MDAyNjFcbiYjNDM7fVxuJiM0MztcbiYjNDM7Y2hlY2tfYW5kX2xvZ19nd19jb25uZWN0aXZpdHkoKVxuJiM0Mzt7XG4mIzQzO1x0bG9jYWwgcnRzcmM9XCYjMzQ7JDFcJiMzNDtcbiYjNDM7XHRsb2NhbCBydGRzdD1cJiMzNDskMlwmIzM0O1xuJiM0MztcdGxvY2FsIHRpZD1cJiMzNDskM1wmIzM0O1xuJiM0MztcbiYjNDM7XHRjaGVja19nd19pcHY2X2Nvbm5lY3Rpdml0eSBcJiMzNDske3J0c3JjfVwmIzM0OyBcJiMzNDske3J0ZHN0fVwmIzM0OyBcJiMzNDske3RpZH1cJiMzNDsgXCYjMzQ7JHt0aWR9XCYjMzQ7XG4mIzQzO1x0bG9nX3Rlc3QgJD8gMCBcJiMzNDtJUHY2IGNvbm5lY3Rpdml0eTogcnQtJHtydHNyY30gLVx1MDAzZSBydC0ke3J0ZHN0fSAodGVuYW50ICR7dGlkfSlcJiMzNDtcbiYjNDM7XG4mIzQzO1x0Y2hlY2tfZ3dfaXB2NF9jb25uZWN0aXZpdHkgXCYjMzQ7JHtydHNyY31cJiMzNDsgXCYjMzQ7JHtydGRzdH1cJiMzNDsgXCYjMzQ7JHt0aWR9XCYjMzQ7IFwmIzM0OyR7dGlkfVwmIzM0O1xuJiM0MztcdGxvZ190ZXN0ICQ/IDAgXCYjMzQ7SVB2NCBjb25uZWN0aXZpdHk6IHJ0LSR7cnRzcmN9IC1cdTAwM2UgcnQtJHtydGRzdH0gKHRlbmFudCAke3RpZH0pXCYjMzQ7XG4mIzQzO31cbiYjNDM7XG4mIzQzO2NoZWNrX2FuZF9sb2dfZ3dfaXNvbGF0aW9uKClcbiYjNDM7e1xuJiM0MztcdGxvY2FsIHJ0c3JjPVwmIzM0OyQxXCYjMzQ7XG4mIzQzO1x0bG9jYWwgcnRkc3Q9XCYjMzQ7JDJcJiMzNDtcbiYjNDM7XHRsb2NhbCB0aWRzcmM9XCYjMzQ7JDNcJiMzNDtcbiYjNDM7XHRsb2NhbCB0aWRkc3Q9XCYjMzQ7JDRcJiMzNDtcbiYjNDM7XG4mIzQzO1x0Y2hlY2tfZ3dfaXB2Nl9jb25uZWN0aXZpdHkgXCYjMzQ7JHtydHNyY31cJiMzNDsgXCYjMzQ7JHtydGRzdH1cJiMzNDsgXCYjMzQ7JHt0aWRzcmN9XCYjMzQ7IFwmIzM0OyR7dGlkZHN0fVwmIzM0O1xuJiM0MztcdGxvZ190ZXN0ICQ/IDEgXCYjMzQ7SVB2NiBpc29sYXRpb246IHJ0LSR7cnRzcmN9IC1YLVx1MDAzZSBydC0ke3J0ZHN0fSAodGVuYW50cyAke3RpZHNyY30vJHt0aWRkc3R9KVwmIzM0O1xuJiM0MztcbiYjNDM7XHRjaGVja19nd19pcHY0X2Nvbm5lY3Rpdml0eSBcJiMzNDske3J0c3JjfVwmIzM0OyBcJiMzNDske3J0ZHN0fVwmIzM0OyBcJiMzNDske3RpZHNyY31cJiMzNDsgXCYjMzQ7JHt0aWRkc3R9XCYjMzQ7XG4mIzQzO1x0bG9nX3Rlc3QgJD8gMSBcJiMzNDtJUHY0IGlzb2xhdGlvbjogcnQtJHtydHNyY30gLVgtXHUwMDNlIHJ0LSR7cnRkc3R9ICh0ZW5hbnRzICR7dGlkc3JjfS8ke3RpZGRzdH0pXCYjMzQ7XG4mIzQzO31cbiYjNDM7XG4mIzQzO2d3X3Zwbl9pc29sYXRpb25fdGVzdHMoKVxuJiM0Mzt7XG4mIzQzO1x0bG9nX3NlY3Rpb24gXCYjMzQ7U1J2NiBWUE4gaXNvbGF0aW9uIHRlc3QgYW1vbmcgcm91dGVycyBpbiBkaWZmZXJlbnQgdGVuYW50c1wmIzM0O1xuJiM0MztcbiYjNDM7XHRjaGVja19hbmRfbG9nX2d3X2lzb2xhdGlvbiAxIDIgMTAwIDIwMFxuJiM0MztcdGNoZWNrX2FuZF9sb2dfZ3dfaXNvbGF0aW9uIDIgMSAxMDAgMjAwXG4mIzQzO1xuJiM0MztcdGNoZWNrX2FuZF9sb2dfZ3dfaXNvbGF0aW9uIDEgMiAyMDAgMTAwXG4mIzQzO1x0Y2hlY2tfYW5kX2xvZ19nd19pc29sYXRpb24gMiAxIDIwMCAxMDBcbiYjNDM7fVxuJiM0MztcbiYjNDM7Z3dfdnBuX3Rlc3RzKClcbiYjNDM7e1xuJiM0MztcdGxvZ19zZWN0aW9uIFwmIzM0O1NSdjYgVlBOIGNvbm5lY3Rpdml0eSB0ZXN0IGFtb25nIHJvdXRlcnMgaW4gdGhlIHNhbWUgdGVuYW50XCYjMzQ7XG4mIzQzO1xuJiM0MztcdGNoZWNrX2FuZF9sb2dfZ3dfY29ubmVjdGl2aXR5IDEgMiAxMDBcbiYjNDM7XHRjaGVja19hbmRfbG9nX2d3X2Nvbm5lY3Rpdml0eSAyIDEgMTAwXG4mIzQzO1xuJiM0MztcdGNoZWNrX2FuZF9sb2dfZ3dfY29ubmVjdGl2aXR5IDEgMiAyMDBcbiYjNDM7XHRjaGVja19hbmRfbG9nX2d3X2Nvbm5lY3Rpdml0eSAyIDEgMjAwXG4mIzQzO31cbiYjNDM7XG4mIzQzO19fdGVzdF9nd19ub2xvb2t1cCgpXG4mIzQzO3tcbiYjNDM7XHRsb2NhbCBydHNyYz1cJiMzNDskMVwmIzM0O1xuJiM0MztcdGxvY2FsIHJ0ZHN0PVwmIzM0OyQyXCYjMzQ7XG4mIzQzO1x0bG9jYWwgdGlkPVwmIzM0OyQzXCYjMzQ7XG4mIzQzO1x0bG9jYWwgc2lkXG4mIzQzO1xuJiM0MztcdHNpZD1cJiMzNDskKGJ1aWxkX3Zwbl9zaWQgXCYjMzQ7JHtydHNyY31cJiMzNDsgXCYjMzQ7JHtydGRzdH1cJiMzNDsgXCYjMzQ7JHt0aWR9XCYjMzQ7KVwmIzM0O1xuJiM0MztcbiYjNDM7XHQjIHJlcGxhY2UgZ3cgZW5jYXAgcm91dGUgd2l0aG91dCBcJiMzNDtsb29rdXBcJiMzNDsgYXR0cmlidXRlXG4mIzQzO1x0c2V0X2d3X2VuY2FwX3JvdXRlX25vbG9va3VwIFwmIzM0OyR7cnRzcmN9XCYjMzQ7IFwmIzM0OyR7cnRkc3R9XCYjMzQ7IFwmIzM0OyR7c2lkfVwmIzM0OyBcJiMzNDske3RpZH1cJiMzNDtcbiYjNDM7XG4mIzQzO1x0Y2hlY2tfZ3dfaXB2Nl9jb25uZWN0aXZpdHkgXCYjMzQ7JHtydHNyY31cJiMzNDsgXCYjMzQ7JHtydGRzdH1cJiMzNDsgXCYjMzQ7JHt0aWR9XCYjMzQ7IFwmIzM0OyR7dGlkfVwmIzM0O1xuJiM0MztcdGxvZ190ZXN0ICQ/IDEgXCYjMzQ7SVB2NiB3L28gbG9va3VwOiBydC0ke3J0c3JjfSAtWC1cdTAwM2UgcnQtJHtydGRzdH0gKHRlbmFudCAke3RpZH0pXCYjMzQ7XG4mIzQzO1xuJiM0MztcdGNoZWNrX2d3X2lwdjRfY29ubmVjdGl2aXR5IFwmIzM0OyR7cnRzcmN9XCYjMzQ7IFwmIzM0OyR7cnRkc3R9XCYjMzQ7IFwmIzM0OyR7dGlkfVwmIzM0OyBcJiMzNDske3RpZH1cJiMzNDtcbiYjNDM7XHRsb2dfdGVzdCAkPyAxIFwmIzM0O0lQdjQgdy9vIGxvb2t1cDogcnQtJHtydHNyY30gLVgtXHUwMDNlIHJ0LSR7cnRkc3R9ICh0ZW5hbnQgJHt0aWR9KVwmIzM0O1xuJiM0MztcbiYjNDM7XHQjIHJlc3RvcmUgZ3cgZW5jYXAgcm91dGUgd2l0aCBcJiMzNDtsb29rdXBcJiMzNDsgZm9yIHN1YnNlcXVlbnQgdGVzdHNcbiYjNDM7XHRzZXRfZ3dfZW5jYXBfcm91dGUgXCYjMzQ7JHtydHNyY31cJiMzNDsgXCYjMzQ7JHtydGRzdH1cJiMzNDsgXCYjMzQ7JHtzaWR9XCYjMzQ7IFwmIzM0OyR7dGlkfVwmIzM0O1xuJiM0Mzt9XG4mIzQzO1xuJiM0Mztnd192cG5fbm9sb29rdXBfdGVzdHMoKVxuJiM0Mzt7XG4mIzQzO1x0bG9nX3NlY3Rpb24gXCYjMzQ7U1J2NiBWUE4gY29ubmVjdGl2aXR5IHRlc3QgYW1vbmcgcm91dGVycyB3L28gbG9va3VwXCYjMzQ7XG4mIzQzO1xuJiM0MztcdF9fdGVzdF9nd19ub2xvb2t1cCAxIDIgMTAwXG4mIzQzO1x0X190ZXN0X2d3X25vbG9va3VwIDIgMSAxMDBcbiYjNDM7XG4mIzQzO1x0X190ZXN0X2d3X25vbG9va3VwIDEgMiAyMDBcbiYjNDM7XHRfX3Rlc3RfZ3dfbm9sb29rdXAgMiAxIDIwMFxuJiM0Mzt9XG4mIzQzO1xuJiM0Mzt0ZXN0X2NvbW1hbmRfb3Jfa3NmdF9za2lwKClcbiYjNDM7e1xuJiM0MztcdGxvY2FsIGNtZD1cJiMzNDskMVwmIzM0O1xuJiM0MztcbiYjNDM7XHRpZiBbICEgLXggXCYjMzQ7JChjb21tYW5kIC12IFwmIzM0OyR7Y21kfVwmIzM0OylcJiMzNDsgXTsgdGhlblxuJiM0MztcdFx0ZWNobyBcJiMzNDtTS0lQOiBDb3VsZCBub3QgcnVuIHRlc3Qgd2l0aG91dCBcXFwmIzM0OyR7Y21kfVxcXCYjMzQ7IHRvb2xcJiMzNDtcbiYjNDM7XHRcdGV4aXQgXCYjMzQ7JHtrc2Z0X3NraXB9XCYjMzQ7XG4mIzQzO1x0ZmlcbiYjNDM7fVxuJiM0MztcbiYjNDM7dGVzdF92cmZfb3Jfa3NmdF9za2lwKClcbiYjNDM7e1xuJiM0MztcdG1vZHByb2JlIHZyZiBcdTAwMjZcdTAwM2UvZGV2L251bGwgfHwgdHJ1ZVxuJiM0MztcdGlmIFsgISAtZSAvcHJvYy9zeXMvbmV0L3ZyZi9zdHJpY3RfbW9kZSBdOyB0aGVuXG4mIzQzO1x0XHRlY2hvIFwmIzM0O1NLSVA6IHZyZiBzeXNjdGwgZG9lcyBub3QgZXhpc3RcJiMzNDtcbiYjNDM7XHRcdGV4aXQgXCYjMzQ7JHtrc2Z0X3NraXB9XCYjMzQ7XG4mIzQzO1x0ZmlcbiYjNDM7fVxuJiM0MztcbiYjNDM7dGVzdF9kdW1teV9kZXZfb3Jfa3NmdF9za2lwKClcbiYjNDM7e1xuJiM0MztcdGxvY2FsIHRlc3RfbmV0bnNcbiYjNDM7XG4mIzQzO1x0c2V0dXBfbnMgdGVzdF9uZXRuc1xuJiM0MztcbiYjNDM7XHRtb2Rwcm9iZSBkdW1teSBcdTAwMjZcdTAwM2UvZGV2L251bGwgfHwgdHJ1ZVxuJiM0MztcdGlmICEgaXAgLW5ldG5zIFwmIzM0OyR7dGVzdF9uZXRuc31cJiMzNDsgbGluayBhZGQgXCYjMzQ7JHtEVU1NWV9ERVZOQU1FfVwmIzM0OyBcXFxuJiM0MztcdFx0XHR0eXBlIGR1bW15OyB0aGVuXG4mIzQzO1x0XHRjbGVhbnVwX25zIFwmIzM0OyR7dGVzdF9uZXRuc31cJiMzNDtcbiYjNDM7XHRcdGVjaG8gXCYjMzQ7U0tJUDogZHVtbXkgZGV2IG5vdCBzdXBwb3J0ZWRcJiMzNDtcbiYjNDM7XHRcdGV4aXQgXCYjMzQ7JHtrc2Z0X3NraXB9XCYjMzQ7XG4mIzQzO1x0ZmlcbiYjNDM7XG4mIzQzO1x0Y2xlYW51cF9ucyBcJiMzNDske3Rlc3RfbmV0bnN9XCYjMzQ7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3Rlc3RfZW5jYXBfbG9va3VwX3N1cHBfb3Jfa3NmdF9za2lwKClcbiYjNDM7e1xuJiM0MztcdGxvY2FsIG5zbmFtZVxuJiM0MztcbiYjNDM7XHRzZXR1cF9ucyBuc25hbWVcbiYjNDM7XG4mIzQzO1x0aXAgLW5ldG5zIFwmIzM0OyR7bnNuYW1lfVwmIzM0OyBsaW5rIGFkZCBcJiMzNDske0RVTU1ZX0RFVk5BTUV9XCYjMzQ7IHR5cGUgZHVtbXlcbiYjNDM7XHRpcCAtbmV0bnMgXCYjMzQ7JHtuc25hbWV9XCYjMzQ7IGxpbmsgc2V0IFwmIzM0OyR7RFVNTVlfREVWTkFNRX1cJiMzNDsgdXBcbiYjNDM7XG4mIzQzO1x0aWYgISBpcCAtbmV0bnMgXCYjMzQ7JHtuc25hbWV9XCYjMzQ7IC02IHJvdXRlIGFkZCBcJiMzNDske0lQdjZfVEVTVFNfQUREUn0vMTI4XCYjMzQ7IFxcXG4mIzQzO1x0XHRcdGVuY2FwIHNlZzYgbW9kZSBlbmNhcCBzZWdzIGZjMDA6OjEgXFxcbiYjNDM7XHRcdFx0bG9va3VwIFwmIzM0OyR7VEVTVFNfVEFCTEVfSUR9XCYjMzQ7IFxcXG4mIzQzO1x0XHRcdGRldiBcJiMzNDske0RVTU1ZX0RFVk5BTUV9XCYjMzQ7IDJcdTAwM2UvZGV2L251bGw7IHRoZW5cbiYjNDM7XHRcdGNsZWFudXBfbnMgXCYjMzQ7JHtuc25hbWV9XCYjMzQ7XG4mIzQzO1x0XHRlY2hvIFwmIzM0O1NLSVA6IHNlZzYgZW5jYXAgbG9va3VwIGF0dHJpYnV0ZSBub3Qgc3VwcG9ydGVkXCYjMzQ7XG4mIzQzO1x0XHRleGl0IFwmIzM0OyR7a3NmdF9za2lwfVwmIzM0O1xuJiM0MztcdGZpXG4mIzQzO1xuJiM0MztcdCMgQW4gb2xkIGtlcm5lbCB3aXRoIGEgcmVjZW50IGlwcm91dGUyIGFjY2VwdHMgdGhlIHJvdXRlIGJ1dFxuJiM0MztcdCMgc2lsZW50bHkgaWdub3JlcyB0aGUgbG9va3VwIGF0dHJpYnV0ZS4gRHVtcCB0aGUgcm91dGUgYW5kIGNoZWNrXG4mIzQzO1x0IyB0aGUgYXR0cmlidXRlIGlzIHJlYWxseSB0aGVyZSwgb3RoZXJ3aXNlIHRoZSB0ZXN0IGZhbHNlbHkgcGFzc2VzLlxuJiM0MztcdGlmICEgaXAgLW5ldG5zIFwmIzM0OyR7bnNuYW1lfVwmIzM0OyAtNiByb3V0ZSBzaG93IFwmIzM0OyR7SVB2Nl9URVNUU19BRERSfS8xMjhcJiMzNDsgfCBcXFxuJiM0MztcdFx0XHRncmVwIC1xIFwmIzM0O2xvb2t1cCAke1RFU1RTX1RBQkxFX0lEfVwmIzM0OzsgdGhlblxuJiM0MztcdFx0Y2xlYW51cF9ucyBcJiMzNDske25zbmFtZX1cJiMzNDtcbiYjNDM7XHRcdGVjaG8gXCYjMzQ7U0tJUDogc2VnNiBlbmNhcCBsb29rdXAgYXR0cmlidXRlIG5vdCBzdXBwb3J0ZWRcJiMzNDtcbiYjNDM7XHRcdGV4aXQgXCYjMzQ7JHtrc2Z0X3NraXB9XCYjMzQ7XG4mIzQzO1x0ZmlcbiYjNDM7XG4mIzQzO1x0Y2xlYW51cF9ucyBcJiMzNDske25zbmFtZX1cJiMzNDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7aWYgWyBcJiMzNDskKGlkIC11KVwmIzM0OyAtbmUgMCBdOyB0aGVuXG4mIzQzO1x0ZWNobyBcJiMzNDtTS0lQOiBOZWVkIHJvb3QgcHJpdmlsZWdlc1wmIzM0O1xuJiM0MztcdGV4aXQgXCYjMzQ7JHtrc2Z0X3NraXB9XCYjMzQ7XG4mIzQzO2ZpXG4mIzQzO1xuJiM0MzsjIHJlcXVpcmVkIHByb2dyYW1zIHRvIGNhcnJ5IG91dCB0aGlzIHNlbGZ0ZXN0XG4mIzQzO3Rlc3RfY29tbWFuZF9vcl9rc2Z0X3NraXAgaXBcbiYjNDM7dGVzdF9jb21tYW5kX29yX2tzZnRfc2tpcCBwaW5nXG4mIzQzO3Rlc3RfY29tbWFuZF9vcl9rc2Z0X3NraXAgc3lzY3RsXG4mIzQzO3Rlc3RfY29tbWFuZF9vcl9rc2Z0X3NraXAgZ3JlcFxuJiM0MztcbiYjNDM7dGVzdF9kdW1teV9kZXZfb3Jfa3NmdF9za2lwXG4mIzQzO3Rlc3RfdnJmX29yX2tzZnRfc2tpcFxuJiM0Mzt0ZXN0X2VuY2FwX2xvb2t1cF9zdXBwX29yX2tzZnRfc2tpcFxuJiM0MztcbiYjNDM7c2V0IC1lXG4mIzQzO3RyYXAgY2xlYW51cCBFWElUXG4mIzQzO1xuJiM0MztzZXR1cFxuJiM0MztzZXQgJiM0MztlXG4mIzQzO1xuJiM0Mztyb3V0ZXJfdGVzdHNcbiYjNDM7aG9zdDJnYXRld2F5X3Rlc3RzXG4mIzQzO2hvc3RfdnBuX3Rlc3RzXG4mIzQzO2hvc3RfdnBuX2lzb2xhdGlvbl90ZXN0c1xuJiM0Mztob3N0X3Zwbl9ub2xvb2t1cF90ZXN0c1xuJiM0Mztnd192cG5fdGVzdHNcbiYjNDM7Z3dfdnBuX2lzb2xhdGlvbl90ZXN0c1xuJiM0Mztnd192cG5fbm9sb29rdXBfdGVzdHNcbiYjNDM7XG4mIzQzO3ByaW50X2xvZ190ZXN0X3Jlc3VsdHNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwODo1NDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUFY2X1NFRzZfTFdUVU5ORUwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzZWc2X3RhYmxlX2xvb2t1cCYjMzQ7LAogICAgJiMzNDtzZWc2X2lucHV0X3JvdXRlJiMzNDssCiAgICAmIzM0O3NlZzZfb3V0cHV0X2RzdF9sb29rdXAmIzM0OywKICAgICYjMzQ7c2VnNl9idWlsZF9zdGF0ZSYjMzQ7LAogICAgJiMzNDtzZWc2X2ZpbGxfZW5jYXBfaW5mbyYjMzQ7LAogICAgJiMzNDtzZWc2X2VuY2FwX25sc2l6ZSYjMzQ7LAogICAgJiMzNDtzZWc2X2VuY2FwX2NtcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgbmV3IE5ldGxpbmsgYXR0cmlidXRlIGBTRUc2X0lQVFVOTkVMX1RBQkxFYCB0byBzcGVjaWZ5IGEgRklCIHRhYmxlIGZvciBwb3N0LWVuY2FwIFNJRCBsb29rdXAgaW4gU1J2NiB0dW5uZWxzLiBJdCBtb2RpZmllcyB0aGUgU1J2NiBlbmNhcHN1bGF0aW9uIGxvZ2ljIGluIGBuZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmNgIHRvIHBlcmZvcm0gcm91dGUgbG9va3VwcyBpbiB0aGUgc3BlY2lmaWVkIHRhYmxlIGR1cmluZyBib3RoIGlucHV0IGFuZCBvdXRwdXQgcGF0aHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byByZWFjaGFibGUgY29yZSBrZXJuZWwgbmV0d29ya2luZyBsb2dpYywgc3BlY2lmaWNhbGx5IHRoZSBJUHY2IFNlZ21lbnQgUm91dGluZyBzdWJzeXN0ZW0sIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBiZDBmNDdhODhiMGQ1MDk0YjlmZDQzMWNhMDRjMjFlOGY2NmM3ZjAxCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBKdWwgMTIgMDg6NTQ6MTQgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvbGludXgvc2VnNl9pcHR1bm5lbC5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L3NlZzZfaXB0dW5uZWwuaAppbmRleCA0ODU4ODliMTk5MDBlYS4uZTE5NjRiM2E0YmIwYWYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC9zZWc2X2lwdHVubmVsLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS91YXBpL2xpbnV4L3NlZzZfaXB0dW5uZWwuaApAQCAtMjEsNiAmIzQzOzIxLDcgQEAgZW51bSB7CiAJU0VHNl9JUFRVTk5FTF9VTlNQRUMsCiAJU0VHNl9JUFRVTk5FTF9TUkgsCiAJU0VHNl9JUFRVTk5FTF9TUkMsCS8qIHN0cnVjdCBpbjZfYWRkciAqLwomIzQzOwlTRUc2X0lQVFVOTkVMX1RBQkxFLAkvKiBfX3UzMiBGSUIgdGFibGUgZm9yIHBvc3QtZW5jYXAgU0lEIGxvb2t1cCAqLwogCV9fU0VHNl9JUFRVTk5FTF9NQVgsCiB9OwogI2RlZmluZSBTRUc2X0lQVFVOTkVMX01BWCAoX19TRUc2X0lQVFVOTkVMX01BWCAtIDEpCmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmMgYi9uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmMKaW5kZXggNGM0NWMwYTc3ZDc1ZDAuLjYxYzZhMjdiZjIwMmRkIDEwMDY0NAotLS0gYS9uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jCkBAIC01MSw2ICYjNDM7NTEsNyBAQCBzdHJ1Y3Qgc2VnNl9sd3QgewogCXN0cnVjdCBkc3RfY2FjaGUgY2FjaGVfaW5wdXQ7CiAJc3RydWN0IGRzdF9jYWNoZSBjYWNoZV9vdXRwdXQ7CiAJc3RydWN0IGluNl9hZGRyIHR1bnNyYzsKJiM0MzsJdTMyIHRhYmxlOwogCXN0cnVjdCBzZWc2X2lwdHVubmVsX2VuY2FwIHR1bmluZm9bXTsKIH07CiAKQEAgLTY4LDYgJiM0Mzs2OSw3IEBAIHNlZzZfZW5jYXBfbHd0dW5uZWwoc3RydWN0IGx3dHVubmVsX3N0YXRlICpsd3QpCiBzdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgc2VnNl9pcHR1bm5lbF9wb2xpY3lbU0VHNl9JUFRVTk5FTF9NQVggJiM0MzsgMV0gPSB7CiAJW1NFRzZfSVBUVU5ORUxfU1JIXQk9IHsgLnR5cGUgPSBOTEFfQklOQVJZIH0sCiAJW1NFRzZfSVBUVU5ORUxfU1JDXQk9IE5MQV9QT0xJQ1lfRVhBQ1RfTEVOKHNpemVvZihzdHJ1Y3QgaW42X2FkZHIpKSwKJiM0MzsJW1NFRzZfSVBUVU5ORUxfVEFCTEVdCT0geyAudHlwZSA9IE5MQV9VMzIgfSwKIH07CiAKIHN0YXRpYyBpbnQgbmxhX3B1dF9zcmgoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IGF0dHJ0eXBlLApAQCAtNDc5LDYgJiM0Mzs0ODEsNzMgQEAgaW50IHNlZzZfZG9fc3JoX2lubGluZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaXB2Nl9zcl9oZHIgKm9zcmgpCiB9CiBFWFBPUlRfU1lNQk9MX0dQTChzZWc2X2RvX3NyaF9pbmxpbmUpOwogCiYjNDM7LyogbG9vayB1cCBhIHJvdXRlIGluIGEgc3BlY2lmaWMgRklCIHRhYmxlLgomIzQzOyAqIFJldHVybnMgYSByZWZjb3VudGVkIGRzdCwgb3IgTlVMTCBpZiB0aGUgdGFibGUgZG9lcyBub3QgZXhpc3QuCiYjNDM7ICovCiYjNDM7c3RhdGljIHN0cnVjdCBkc3RfZW50cnkgKnNlZzZfdGFibGVfbG9va3VwKHN0cnVjdCBuZXQgKm5ldCwKJiM0MzsJCQkJCSAgIHN0cnVjdCBza19idWZmICpza2IsCiYjNDM7CQkJCQkgICBzdHJ1Y3QgZmxvd2k2ICpmbDYsIHUzMiB0YmxfaWQpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgZmliNl90YWJsZSAqdGFibGU7CiYjNDM7CXN0cnVjdCBydDZfaW5mbyAqcnQ7CiYjNDM7CiYjNDM7CXRhYmxlID0gZmliNl9nZXRfdGFibGUobmV0LCB0YmxfaWQpOwomIzQzOwlpZiAoIXRhYmxlKQomIzQzOwkJcmV0dXJuIE5VTEw7CiYjNDM7CiYjNDM7CXJ0ID0gaXA2X3BvbF9yb3V0ZShuZXQsIHRhYmxlLCAwLCBmbDYsIHNrYiwgUlQ2X0xPT0tVUF9GX0hBU19TQUREUik7CiYjNDM7CXJldHVybiAmYW1wO3J0LSZndDtkc3Q7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyB2b2lkIHNlZzZfaW5pdF9mbG93aTYoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlwdjZoZHIgKmhkciwKJiM0MzsJCQkgICAgIHN0cnVjdCBmbG93aTYgKmZsNikKJiM0Mzt7CiYjNDM7CW1lbXNldChmbDYsIDAsIHNpemVvZigqZmw2KSk7CiYjNDM7CiYjNDM7CWZsNi0mZ3Q7ZGFkZHIgPSBoZHItJmd0O2RhZGRyOwomIzQzOwlmbDYtJmd0O3NhZGRyID0gaGRyLSZndDtzYWRkcjsKJiM0MzsJZmw2LSZndDtmbG93bGFiZWwgPSBpcDZfZmxvd2luZm8oaGRyKTsKJiM0MzsJZmw2LSZndDtmbG93aTZfbWFyayA9IHNrYi0mZ3Q7bWFyazsKJiM0MzsJZmw2LSZndDtmbG93aTZfcHJvdG8gPSBoZHItJmd0O25leHRoZHI7CiYjNDM7fQomIzQzOwomIzQzOy8qIGxvb2sgdXAgdGhlIHJvdXRlIGZvciB0aGUgZmlyc3QgU0lEIG9uIHRoZSBpbnB1dCBwYXRoIGFuZCBzZXQgaXQgb24gdGhlIHNrYi4KJiM0MzsgKiBSZXR1cm5zIHRoZSByZWZjb3VudGVkIGRzdCwgb3IgTlVMTCBpZiBhIHJlZmVyZW5jZSBjb3VsZCBub3QgYmUgc2FmZWx5IHRha2VuLgomIzQzOyAqLwomIzQzO3N0YXRpYyBzdHJ1Y3QgZHN0X2VudHJ5ICpzZWc2X2lucHV0X3JvdXRlKHN0cnVjdCBuZXQgKm5ldCwKJiM0MzsJCQkJCSAgc3RydWN0IHNrX2J1ZmYgKnNrYiwKJiM0MzsJCQkJCSAgc3RydWN0IHNlZzZfbHd0ICpzbHd0KQomIzQzO3sKJiM0MzsJdTMyIHRhYmxlID0gc2x3dC0mZ3Q7dGFibGU7CiYjNDM7CiYjNDM7CWlmICh0YWJsZSkgewomIzQzOwkJc3RydWN0IGlwdjZoZHIgKmhkciA9IGlwdjZfaGRyKHNrYik7CiYjNDM7CQlzdHJ1Y3QgZHN0X2VudHJ5ICpkc3Q7CiYjNDM7CQlzdHJ1Y3QgZmxvd2k2IGZsNjsKJiM0MzsKJiM0MzsJCXNlZzZfaW5pdF9mbG93aTYoc2tiLCBoZHIsICZhbXA7Zmw2KTsKJiM0MzsJCWZsNi5mbG93aTZfaWlmID0gc2tiLSZndDtkZXYtJmd0O2lmaW5kZXg7CiYjNDM7CiYjNDM7CQlkc3QgPSBzZWc2X3RhYmxlX2xvb2t1cChuZXQsIHNrYiwgJmFtcDtmbDYsIHRhYmxlKTsKJiM0MzsJCWlmICghZHN0KSB7CiYjNDM7CQkJZHN0ID0gJmFtcDtuZXQtJmd0O2lwdjYuaXA2X2Jsa19ob2xlX2VudHJ5LSZndDtkc3Q7CiYjNDM7CQkJZHN0X2hvbGQoZHN0KTsKJiM0MzsJCX0KJiM0MzsKJiM0MzsJCXNrYl9kc3RfZHJvcChza2IpOwomIzQzOwkJc2tiX2RzdF9zZXQoc2tiLCBkc3QpOwomIzQzOwl9IGVsc2UgewomIzQzOwkJaXA2X3JvdXRlX2lucHV0KHNrYik7CiYjNDM7CiYjNDM7CQkvKiBpcDZfcm91dGVfaW5wdXQoKSBzZXRzIGEgTk9SRUYgZHN0OyBmb3JjZSBhIHJlZmNvdW50IG9uIGl0CiYjNDM7CQkgKiBiZWZvcmUgY2FjaGluZyBvciBmdXJ0aGVyIHVzZS4KJiM0MzsJCSAqLwomIzQzOwkJc2tiX2RzdF9mb3JjZShza2IpOwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiBza2JfZHN0KHNrYik7CiYjNDM7fQomIzQzOwogc3RhdGljIGludCBzZWc2X2lucHV0X2ZpbmlzaChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpzaywKIAkJCSAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYikKIHsKQEAgLTUxMywxNSAmIzQzOzU4Miw5IEBAIHN0YXRpYyBpbnQgc2VnNl9pbnB1dF9jb3JlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrLAogCQlnb3RvIGRyb3A7CiAJfQogCi0JaWYgKCFkc3QpIHsKLQkJaXA2X3JvdXRlX2lucHV0KHNrYik7Ci0KLQkJLyogaXA2X3JvdXRlX2lucHV0KCkgc2V0cyBhIE5PUkVGIGRzdDsgZm9yY2UgYSByZWZjb3VudCBvbiBpdAotCQkgKiBiZWZvcmUgY2FjaGluZyBvciBmdXJ0aGVyIHVzZS4KLQkJICovCi0JCXNrYl9kc3RfZm9yY2Uoc2tiKTsKLQkJZHN0ID0gc2tiX2RzdChza2IpOwotCQlpZiAodW5saWtlbHkoIWRzdCkpIHsKJiM0MzsJaWYgKHVubGlrZWx5KCFkc3QpKSB7CiYjNDM7CQlkc3QgPSBzZWc2X2lucHV0X3JvdXRlKG5ldCwgc2tiLCBzbHd0KTsKJiM0MzsJCWlmICghZHN0KSB7CiAJCQllcnIgPSAtRU5FVFVOUkVBQ0g7CiAJCQlnb3RvIGRyb3A7CiAJCX0KQEAgLTU3OCw2ICYjNDM7NjQxLDI5IEBAIHN0YXRpYyBpbnQgc2VnNl9pbnB1dChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCXJldHVybiBzZWc2X2lucHV0X2NvcmUoZGV2X25ldChza2ItJmd0O2RldiksIE5VTEwsIHNrYik7CiB9CiAKJiM0MzsvKiBsb29rIHVwIHRoZSByb3V0ZSBmb3IgdGhlIGZpcnN0IFNJRCBvbiB0aGUgb3V0cHV0IHBhdGguIEFsd2F5cyByZXR1cm5zIGEKJiM0MzsgKiByZWZjb3VudGVkIGRzdC4KJiM0MzsgKi8KJiM0MztzdGF0aWMgc3RydWN0IGRzdF9lbnRyeSAqc2VnNl9vdXRwdXRfZHN0X2xvb2t1cChzdHJ1Y3QgbmV0ICpuZXQsCiYjNDM7CQkJCQkJc3RydWN0IHNrX2J1ZmYgKnNrYiwKJiM0MzsJCQkJCQlzdHJ1Y3QgZmxvd2k2ICpmbDYsCiYjNDM7CQkJCQkJc3RydWN0IHNlZzZfbHd0ICpzbHd0KQomIzQzO3sKJiM0MzsJc3RydWN0IGRzdF9lbnRyeSAqZHN0OwomIzQzOwomIzQzOwlpZiAoc2x3dC0mZ3Q7dGFibGUpIHsKJiM0MzsJCWRzdCA9IHNlZzZfdGFibGVfbG9va3VwKG5ldCwgc2tiLCBmbDYsIHNsd3QtJmd0O3RhYmxlKTsKJiM0MzsJCWlmICghZHN0KSB7CiYjNDM7CQkJZHN0ID0gJmFtcDtuZXQtJmd0O2lwdjYuaXA2X2Jsa19ob2xlX2VudHJ5LSZndDtkc3Q7CiYjNDM7CQkJZHN0X2hvbGQoZHN0KTsKJiM0MzsJCX0KJiM0MzsJfSBlbHNlIHsKJiM0MzsJCWRzdCA9IGlwNl9yb3V0ZV9vdXRwdXQobmV0LCBOVUxMLCBmbDYpOwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiBkc3Q7CiYjNDM7fQomIzQzOwogc3RhdGljIGludCBzZWc2X291dHB1dF9jb3JlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrLAogCQkJICAgIHN0cnVjdCBza19idWZmICpza2IpCiB7CkBAIC02MDAsMTQgJiM0Mzs2ODYsOSBAQCBzdGF0aWMgaW50IHNlZzZfb3V0cHV0X2NvcmUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29jayAqc2ssCiAJCXN0cnVjdCBpcHY2aGRyICpoZHIgPSBpcHY2X2hkcihza2IpOwogCQlzdHJ1Y3QgZmxvd2k2IGZsNjsKIAotCQltZW1zZXQoJmFtcDtmbDYsIDAsIHNpemVvZihmbDYpKTsKLQkJZmw2LmRhZGRyID0gaGRyLSZndDtkYWRkcjsKLQkJZmw2LnNhZGRyID0gaGRyLSZndDtzYWRkcjsKLQkJZmw2LmZsb3dsYWJlbCA9IGlwNl9mbG93aW5mbyhoZHIpOwotCQlmbDYuZmxvd2k2X21hcmsgPSBza2ItJmd0O21hcms7Ci0JCWZsNi5mbG93aTZfcHJvdG8gPSBoZHItJmd0O25leHRoZHI7CiYjNDM7CQlzZWc2X2luaXRfZmxvd2k2KHNrYiwgaGRyLCAmYW1wO2ZsNik7CiAKLQkJZHN0ID0gaXA2X3JvdXRlX291dHB1dChuZXQsIE5VTEwsICZhbXA7Zmw2KTsKJiM0MzsJCWRzdCA9IHNlZzZfb3V0cHV0X2RzdF9sb29rdXAobmV0LCBza2IsICZhbXA7Zmw2LCBzbHd0KTsKIAkJaWYgKGRzdC0mZ3Q7ZXJyb3IpIHsKIAkJCWVyciA9IGRzdC0mZ3Q7ZXJyb3I7CiAJCQlnb3RvIGRyb3A7CkBAIC03NTIsNiAmIzQzOzgzMywxNSBAQCBzdGF0aWMgaW50IHNlZzZfYnVpbGRfc3RhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmxhdHRyICpubGEsCiAJCX0KIAl9CiAKJiM0MzsJaWYgKHRiW1NFRzZfSVBUVU5ORUxfVEFCTEVdKSB7CiYjNDM7CQlzbHd0LSZndDt0YWJsZSA9IG5sYV9nZXRfdTMyKHRiW1NFRzZfSVBUVU5ORUxfVEFCTEVdKTsKJiM0MzsJCWlmICghc2x3dC0mZ3Q7dGFibGUpIHsKJiM0MzsJCQlOTF9TRVRfRVJSX01TRyhleHRhY2ssICYjMzQ7aW52YWxpZCBsb29rdXAgdGFibGUmIzM0Oyk7CiYjNDM7CQkJZXJyID0gLUVJTlZBTDsKJiM0MzsJCQlnb3RvIGVycl9kZXN0cm95X291dHB1dDsKJiM0MzsJCX0KJiM0MzsJfQomIzQzOwogCW5ld3RzLSZndDt0eXBlID0gTFdUVU5ORUxfRU5DQVBfU0VHNjsKIAluZXd0cy0mZ3Q7ZmxhZ3MgfD0gTFdUVU5ORUxfU1RBVEVfSU5QVVRfUkVESVJFQ1Q7CiAKQEAgLTc5NSw2ICYjNDM7ODg1LDEwIEBAIHN0YXRpYyBpbnQgc2VnNl9maWxsX2VuY2FwX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkgICAgbmxhX3B1dF9pbjZfYWRkcihza2IsIFNFRzZfSVBUVU5ORUxfU1JDLCAmYW1wO3Nsd3QtJmd0O3R1bnNyYykpCiAJCXJldHVybiAtRU1TR1NJWkU7CiAKJiM0MzsJaWYgKHNsd3QtJmd0O3RhYmxlICZhbXA7JmFtcDsKJiM0MzsJICAgIG5sYV9wdXRfdTMyKHNrYiwgU0VHNl9JUFRVTk5FTF9UQUJMRSwgc2x3dC0mZ3Q7dGFibGUpKQomIzQzOwkJcmV0dXJuIC1FTVNHU0laRTsKJiM0MzsKIAlyZXR1cm4gMDsKIH0KIApAQCAtODA5LDYgJiM0Mzs5MDMsOSBAQCBzdGF0aWMgaW50IHNlZzZfZW5jYXBfbmxzaXplKHN0cnVjdCBsd3R1bm5lbF9zdGF0ZSAqbHd0c3RhdGUpCiAJaWYgKCFpcHY2X2FkZHJfYW55KCZhbXA7c2x3dC0mZ3Q7dHVuc3JjKSkKIAkJbmxzaXplICYjNDM7PSBubGFfdG90YWxfc2l6ZShzaXplb2Yoc2x3dC0mZ3Q7dHVuc3JjKSk7CiAKJiM0MzsJaWYgKHNsd3QtJmd0O3RhYmxlKQomIzQzOwkJbmxzaXplICYjNDM7PSBubGFfdG90YWxfc2l6ZShzaXplb2YodTMyKSk7CiYjNDM7CiAJcmV0dXJuIG5sc2l6ZTsKIH0KIApAQCAtODI2LDYgJiM0Mzs5MjMsOSBAQCBzdGF0aWMgaW50IHNlZzZfZW5jYXBfY21wKHN0cnVjdCBsd3R1bm5lbF9zdGF0ZSAqYSwgc3RydWN0IGx3dHVubmVsX3N0YXRlICpiKQogCWlmICghaXB2Nl9hZGRyX2VxdWFsKCZhbXA7YV9zbHd0LSZndDt0dW5zcmMsICZhbXA7Yl9zbHd0LSZndDt0dW5zcmMpKQogCQlyZXR1cm4gMTsKIAomIzQzOwlpZiAoYV9zbHd0LSZndDt0YWJsZSAhPSBiX3Nsd3QtJmd0O3RhYmxlKQomIzQzOwkJcmV0dXJuIDE7CiYjNDM7CiAJcmV0dXJuIG1lbWNtcChhX2hkciwgYl9oZHIsIGxlbik7CiB9CiAKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9NYWtlZmlsZSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9NYWtlZmlsZQppbmRleCA3MDhkOTYwYWUwN2Q1Yi4uNWRmMGM5NGFiMDYwMTggMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9NYWtlZmlsZQomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvTWFrZWZpbGUKQEAgLTg1LDYgJiM0Mzs4NSw3IEBAIFRFU1RfUFJPR1MgOj0gXAogCXJ4dGltZXN0YW1wLnNoIFwKIAlzY3RwX3ZyZi5zaCBcCiAJc2tmX25ldF9vZmYuc2ggXAomIzQzOwlzcnY2X2VuY2FwX2xvb2t1cF9sM3Zwbl90ZXN0LnNoIFwKIAlzcnY2X2VuZF9kdDQ2X2wzdnBuX3Rlc3Quc2ggXAogCXNydjZfZW5kX2R0NF9sM3Zwbl90ZXN0LnNoIFwKIAlzcnY2X2VuZF9kdDZfbDN2cG5fdGVzdC5zaCBcCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvc3J2Nl9lbmNhcF9sb29rdXBfbDN2cG5fdGVzdC5zaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9zcnY2X2VuY2FwX2xvb2t1cF9sM3Zwbl90ZXN0LnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwLi5kNjI0OTMwM2I3ZWFhMQotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9zcnY2X2VuY2FwX2xvb2t1cF9sM3Zwbl90ZXN0LnNoCkBAIC0wLDAgJiM0MzsxLDEwMjcgQEAKJiM0MzsjIS9iaW4vYmFzaAomIzQzOyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKJiM0MzsjCiYjNDM7IyBhdXRob3I6IEFuZHJlYSBNYXllciAmbHQ7YW5kcmVhLm1heWVyQHVuaXJvbWEyLml0Jmd0OwomIzQzOwomIzQzOyMgVGhpcyB0ZXN0IGV2YWx1YXRlcyB0aGUgU1J2NiBlbmNhcCAmIzM0O2xvb2t1cCYjMzQ7IGF0dHJpYnV0ZS4gQWZ0ZXIgZW5jYXBzdWxhdGlvbgomIzQzOyMgdGhlIHJvdXRlciBsb29rcyB1cCB0aGUgcm91dGUgZm9yIHRoZSBmaXJzdCBTSUQsIHRoYXQgaXMgdGhlIG91dGVyIElQdjYKJiM0MzsjIGRlc3RpbmF0aW9uIG9mIHRoZSBlbmNhcHN1bGF0ZWQgcGFja2V0LiBUaGUgYXR0cmlidXRlIHNlbGVjdHMgdGhlIEZJQiB0YWJsZQomIzQzOyMgdXNlZCBmb3IgdGhpcyBwb3N0LWVuY2FwIFNJRCByb3V0ZSBsb29rdXAuCiYjNDM7IwomIzQzOyMgVHdvIHJvdXRlcnMgKHJ0LTEsIHJ0LTIpIHByb3ZpZGUgTDMgVlBOIHNlcnZpY2VzIG92ZXIgYW4gSVB2NiB1bmRlcmxheQomIzQzOyMgKGZkMDA6Oi82NCkuIEVhY2ggcm91dGVyIHVzZXMgYSBzZXBhcmF0ZSBWUkYgcGVyIHRlbmFudCwgd2l0aCBkZWZhdWx0CiYjNDM7IyBibGFja2hvbGUgcm91dGVzIChJUHY0IGFuZCBJUHY2KSB0byBwcmV2ZW50IHRyYWZmaWMgZnJvbSBsZWFraW5nIG91dCBvZgomIzQzOyMgdGhlIFZSRi4gVGVuYW50IHRyYWZmaWMgaXMgZW5jYXBzdWxhdGVkLCB0aGVuIGRlY2Fwc3VsYXRlZCB3aXRoIGFuCiYjNDM7IyBFbmQuRFQ0Ni4gRWFjaCByb3V0ZXIgcHJveGllcyBib3RoIE5EUCBhbmQgQVJQLgomIzQzOyMKJiM0MzsjIFRoZSByb3V0ZXMgdGhhdCBtYXRjaCB0aGUgZmlyc3QgU0lEcyBhcmUgaW5zdGFsbGVkIGluIGEgZGVkaWNhdGVkIHVuZGVybGF5CiYjNDM7IyB0YWJsZSAoNTAwKSByYXRoZXIgdGhhbiB0aGUgbWFpbiB0YWJsZSAoMjU0KS4gVGhlIGVuY2FwIHJvdXRlcyB1c2UKJiM0MzsjICYjMzQ7bG9va3VwIDUwMCYjMzQ7IHRvIHNlbGVjdCB0aGlzIHRhYmxlIGZvciB0aGUgcG9zdC1lbmNhcCBTSUQgcm91dGUgbG9va3VwLgomIzQzOyMKJiM0MzsjIFdpdGhvdXQgdGhlICYjMzQ7bG9va3VwJiMzNDsgYXR0cmlidXRlLCB0aGUgcm91dGUgZm9yIHRoZSBmaXJzdCBTSUQgY2Fubm90IGJlIGZvdW5kOgomIzQzOyMgIC0gb24gdGhlIGlucHV0IHBhdGggKGZvcndhcmRlZCB0cmFmZmljKSwgdGhlIGxvb2t1cCBzdGF5cyBpbiB0aGUgVlJGCiYjNDM7IyAgICBhbmQgaGl0cyB0aGUgYmxhY2tob2xlOwomIzQzOyMgIC0gb24gdGhlIG91dHB1dCBwYXRoIChsb2NhbGx5IG9yaWdpbmF0ZWQgdHJhZmZpYyksIHRoZSBsb29rdXAgZmFsbHMKJiM0MzsjICAgIHRocm91Z2ggdG8gdGhlIG1haW4gdGFibGUsIHdpdGggbm8gcm91dGUgdG8gdGhlIGZpcnN0IFNJRC4KJiM0MzsjCiYjNDM7IwomIzQzOyMgTGVnZW5kIChzcGVjaWZpYyBwZXItdGVuYW50IGFkZHJlc3NlcyBhcmUgaW4gdGhlIGluc3RhbnRpYXRpb24gdGFibGVzIGJlbG93KToKJiM0MzsjICAgWCAgICAgICAgICA9IHRlbmFudCBpZCBhbmQgVlJGIHRhYmxlIGlkOyB0d28gdGVuYW50czogMTAwIGFuZCAyMDAKJiM0MzsjICAgICAgICAgICAgICAgICgmIzM0O3RYJiMzNDsgbWVhbnMgdGVuYW50IFgsIGUuZy4gdDEwMCwgdDIwMCkKJiM0MzsjICAgYSwgYiAgICAgICA9IHRoZSB0d28gaG9zdCBpZHMgb2YgdGhlIHRlbmFudAomIzQzOyMgICBIQSwgSEIgICAgID0gYWRkcmVzc2VzIG9mIGhvc3QgYSwgaG9zdCBiCiYjNDM7IyAgIFJMTzEsIFJMTzIgPSBybG8tWCByb3V0ZXIgbG9vcGJhY2sgYWRkcmVzcyBvbiBydC0xLCBydC0yICh0ZW5hbnQgZ2F0ZXdheQomIzQzOyMgICAgICAgICAgICAgICAgZm9yIHRoZSBvdXRwdXQgcGF0aCwgZHVhbC1zdGFjaykKJiM0MzsjICAgdnJmLVggICAgICA9IHBlci10ZW5hbnQgVlJGIG9uIGVhY2ggcm91dGVyICh0YWJsZSBYKQomIzQzOyMKJiM0MzsjIENvbnN0YW50cyAoc2FtZSBmb3IgZXZlcnkgdGVuYW50KToKJiM0MzsjICAgdW5kZXJsYXkgICA9IHRhYmxlIDUwMDsgcG9zdC1lbmNhcCBTSUQgcm91dGUgbG9va3VwICh2aWEgJiMzNDtsb29rdXAgNTAwJiMzNDspCiYjNDM7IyAgIGxvY2Fsc2lkICAgPSB0YWJsZSA5MDsgaG9sZHMgdGhlIGRlY2FwIFNJRHMgKEVuZC5EVDQ2KQomIzQzOyMgICBmZDAwOjovNjQgID0gdW5kZXJsYXkgbGluayBiZXR3ZWVuIHJ0LTEgYW5kIHJ0LTIKJiM0MzsjICAgdmV0aC10WCAgICA9IGNhZmU6OjI1NC8xMC4wLjAuMjU0ICh0ZW5hbnQgZ2F0ZXdheSBvbiB2ZXRoLCBib3RoIHJvdXRlcnMpCiYjNDM7IwomIzQzOyMKJiM0MzsjICYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOwomIzQzOyMgfCAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwKJiM0MzsjIHwgICBocy10WC1hIG5ldG5zICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIGhzLXRYLWIgbmV0bnMgICB8CiYjNDM7IyB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgfAomIzQzOyMgfCAgJiM0MzstLS0tLS0tLS0tLS0tJiM0MzsgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICYjNDM7LS0tLS0tLS0tLS0tLSYjNDM7ICB8CiYjNDM7IyB8ICB8ICAgIHZldGgwICAgIHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHwgICAgdmV0aDAgICAgfCAgfAomIzQzOyMgfCAgfCAgICAgSEEgICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICB8ICAgICBIQiAgICAgIHwgIHwKJiM0MzsjIHwgICYjNDM7LS0tLS0tLS0tLS0tLSYjNDM7ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAmIzQzOy0tLS0tLS0tLS0tLS0mIzQzOyAgfAomIzQzOyMgfCAgICAgICAgLiAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgLiAgICAgICAgIHwKJiM0MzsjICYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOwomIzQzOyMgICAgICAgICAgLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLgomIzQzOyMgICAgICAgICAgLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLgomIzQzOyMgJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7ICAgJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7CiYjNDM7IyB8ICAgICAgICAuICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAuICAgICAgICAgfAomIzQzOyMgfCAmIzQzOy0tLS0tLS0tLS0tLS0tLSYjNDM7ICAgICAgICAgICAgICAgICB8ICAgfCAgICAgICAgICAgICAgICAgJiM0MzstLS0tLS0tLS0tLS0tLS0mIzQzOyB8CiYjNDM7IyB8IHwgICB2ZXRoLXRYICAgICB8ICAgJiM0MzstLS0tLS0tLS0tJiM0MzsgIHwgICB8ICAmIzQzOy0tLS0tLS0tLS0mIzQzOyAgIHwgICB2ZXRoLXRYICAgICB8IHwKJiM0MzsjIHwgfCAgOjoyNTQvLjI1NCAgIHwgICB8IGxvY2Fsc2lkIHwgIHwgICB8ICB8IGxvY2Fsc2lkIHwgICB8ICA6OjI1NC8uMjU0ICAgfCB8CiYjNDM7IyB8ICYjNDM7LS0tLS0tLSYjNDM7LS0tLS0tLSYjNDM7ICAgJiM0MzstLS0tLS0tLS0tJiM0MzsgIHwgICB8ICAmIzQzOy0tLS0tLS0tLS0mIzQzOyAgICYjNDM7LS0tLS0tLSYjNDM7LS0tLS0tLSYjNDM7IHwKJiM0MzsjIHwgICAgICAgICB8ICAgICAgICAgICAmIzQzOy0tLS0tLS0tLS0mIzQzOyAgfCAgIHwgICYjNDM7LS0tLS0tLS0tLSYjNDM7ICAgICAgICAgICB8ICAgICAgICAgfAomIzQzOyMgfCAgICAmIzQzOy0tLS0mIzQzOy0tLS0mIzQzOyAgICAgIHwgdW5kZXJsYXkgfCAgfCAgIHwgIHwgdW5kZXJsYXkgfCAgICAgICYjNDM7LS0tLSYjNDM7LS0tLSYjNDM7ICAgIHwKJiM0MzsjIHwgICAgfCB2cmYtWCAgIHwgICAgICAmIzQzOy0tLS0tLS0tLS0mIzQzOyAgfCAgIHwgICYjNDM7LS0tLS0tLS0tLSYjNDM7ICAgICAgfCB2cmYtWCAgIHwgICAgfAomIzQzOyMgfCAgICAmIzQzOy0tLS0mIzQzOy0tLS0mIzQzOyAgICAgICAgICAgICAgICAgICAgfCAgIHwgICAgICAgICAgICAgICAgICAgICYjNDM7LS0tLSYjNDM7LS0tLSYjNDM7ICAgIHwKJiM0MzsjIHwgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8CiYjNDM7IyB8ICAgJiM0MzstLS0tLSYjNDM7LS0tLSYjNDM7ICAgICYjNDM7LS0tLS0tLS0tLS0tJiM0MzsgIHwgICB8ICAmIzQzOy0tLS0tLS0tLS0tLSYjNDM7ICAgICYjNDM7LS0tLSYjNDM7LS0tLS0mIzQzOyAgIHwKJiM0MzsjIHwgICB8ICBybG8tWCAgIHwgICAgfCAgIHZldGgwICAgIHwgIHwgICB8ICB8ICAgdmV0aDAgICAgfCAgICB8ICBybG8tWCAgIHwgICB8CiYjNDM7IyB8ICAgfCAgIFJMTzEgICB8ICAgIHwgZmQwMDo6MS82NCB8Li58Li4ufC4ufCBmZDAwOjoyLzY0IHwgICAgfCAgIFJMTzIgICB8ICAgfAomIzQzOyMgfCAgICYjNDM7LS0tLS0tLS0tLSYjNDM7ICAgICYjNDM7LS0tLS0tLS0tLS0tJiM0MzsgIHwgICB8ICAmIzQzOy0tLS0tLS0tLS0tLSYjNDM7ICAgICYjNDM7LS0tLS0tLS0tLSYjNDM7ICAgfAomIzQzOyMgfCAgICAgICAgICAgICAgcnQtMSBuZXRucyAgICAgICAgICAgfCAgIHwgICAgICAgICAgcnQtMiBuZXRucyAgICAgICAgICAgICAgIHwKJiM0MzsjICYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOyAgICYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOwomIzQzOyMKJiM0MzsjCiYjNDM7IyBQZXItdGVuYW50IGluc3RhbnRpYXRpb246CiYjNDM7IyAmIzQzOy0tLS0tJiM0MzstLS0tLS0mIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOwomIzQzOyMgfCAgWCAgfCBhLCBiIHwgSEEgICAgICAgICAgICAgICAgfCBIQiAgICAgICAgICAgICAgICB8CiYjNDM7IyAmIzQzOy0tLS0tJiM0MzstLS0tLS0mIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOwomIzQzOyMgfCAxMDAgfCAxLCAyIHwgY2FmZTo6MSwgMTAuMC4wLjEgfCBjYWZlOjoyLCAxMC4wLjAuMiB8CiYjNDM7IyB8IDIwMCB8IDMsIDQgfCBjYWZlOjozLCAxMC4wLjAuMyB8IGNhZmU6OjQsIDEwLjAuMC40IHwKJiM0MzsjICYjNDM7LS0tLS0mIzQzOy0tLS0tLSYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7CiYjNDM7IwomIzQzOyMgUm91dGVyIGxvb3BiYWNrIChybG8tWCkgYWRkcmVzc2VzLCBwZXIgdGVuYW50OgomIzQzOyMgJiM0MzstLS0tLSYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJiM0MzsKJiM0MzsjIHwgIFggIHwgUkxPMSAocnQtMSkgICAgICAgICAgIHwgUkxPMiAocnQtMikgICAgICAgICAgIHwKJiM0MzsjICYjNDM7LS0tLS0mIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7CiYjNDM7IyB8IDEwMCB8IGNhZmU6OjEwMSwgMTAuMC4wLjEwMSB8IGNhZmU6OjEwMiwgMTAuMC4wLjEwMiB8CiYjNDM7IyB8IDIwMCB8IGNhZmU6OjIwMSwgMTAuMC4wLjIwMSB8IGNhZmU6OjIwMiwgMTAuMC4wLjIwMiB8CiYjNDM7IyAmIzQzOy0tLS0tJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOwomIzQzOyMKJiM0MzsjCiYjNDM7IyBOZXR3b3JrIGNvbmZpZ3VyYXRpb24KJiM0MzsjID09PT09PT09PT09PT09PT09PT09PQomIzQzOyMKJiM0MzsjIHJ0LTE6IGxvY2Fsc2lkIHRhYmxlICh0YWJsZSA5MCkKJiM0MzsjICYjNDM7LS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJiM0MzsKJiM0MzsjIHwgdGVuYW50IHwgU0lEICAgICAgICAgICAgICAgIHwgQWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgfAomIzQzOyMgJiM0MzstLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOwomIzQzOyMgfCAgMTAwICAgfCBmYzAwOjI6MToxMDA6OjBkNDYgfCBhcHBseSBTUnY2IEVuZC5EVDQ2IHZyZnRhYmxlIDEwMCB8CiYjNDM7IyB8ICAyMDAgICB8IGZjMDA6MjoxOjIwMDo6MGQ0NiB8IGFwcGx5IFNSdjYgRW5kLkRUNDYgdnJmdGFibGUgMjAwIHwKJiM0MzsjICYjNDM7LS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJiM0MzsKJiM0MzsjCiYjNDM7IyBydC0xOiB1bmRlcmxheSB0YWJsZSAodGFibGUgNTAwKSAtIHBvc3QtZW5jYXAgU0lEIHJvdXRlIGxvb2t1cAomIzQzOyMgJiM0MzstLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOwomIzQzOyMgfCB0ZW5hbnQgfCBTSUQgICAgICAgICAgICAgICAgfCBBY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICB8CiYjNDM7IyAmIzQzOy0tLS0tLS0tJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7CiYjNDM7IyB8ICAxMDAgICB8IGZjMDA6MToyOjEwMDo6MGQ0NiB8IGZvcndhcmQgdmlhIGZkMDA6OjIgZGV2IHZldGgwIHwKJiM0MzsjIHwgIDIwMCAgIHwgZmMwMDoxOjI6MjAwOjowZDQ2IHwgZm9yd2FyZCB2aWEgZmQwMDo6MiBkZXYgdmV0aDAgfAomIzQzOyMgJiM0MzstLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOwomIzQzOyMKJiM0MzsjIHJ0LTE6IFZSRiB0YWJsZXMgKHBlciB0ZW5hbnQ6IHZyZi1YID0gdGFibGUgWCkKJiM0MzsjICYjNDM7LS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJiM0MzsKJiM0MzsjIHwgdGVuYW50IHwgZHN0ICAgICAgICB8IGVuY2FwIGFjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAomIzQzOyMgJiM0MzstLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0tJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOwomIzQzOyMgfCAxMDAgICAgfCBjYWZlOjoyICAgIHwgZW5jYXAgc2VncyBmYzAwOjE6MjoxMDA6OjBkNDYgbG9va3VwIDUwMCB8CiYjNDM7IyB8ICAgICAgICB8IDEwLjAuMC4yICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKJiM0MzsjIHwgICAgICAgIHwgY2FmZTo6MTAyICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAomIzQzOyMgfCAgICAgICAgfCAxMC4wLjAuMTAyIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiYjNDM7IyB8IDIwMCAgICB8IGNhZmU6OjQgICAgfCBlbmNhcCBzZWdzIGZjMDA6MToyOjIwMDo6MGQ0NiBsb29rdXAgNTAwIHwKJiM0MzsjIHwgICAgICAgIHwgMTAuMC4wLjQgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAomIzQzOyMgfCAgICAgICAgfCBjYWZlOjoyMDIgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiYjNDM7IyB8ICAgICAgICB8IDEwLjAuMC4yMDIgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKJiM0MzsjICYjNDM7LS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJiM0MzsKJiM0MzsjCiYjNDM7IwomIzQzOyMgcnQtMjogbG9jYWxzaWQgdGFibGUgKHRhYmxlIDkwKQomIzQzOyMgJiM0MzstLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOwomIzQzOyMgfCB0ZW5hbnQgfCBTSUQgICAgICAgICAgICAgICAgfCBBY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICB8CiYjNDM7IyAmIzQzOy0tLS0tLS0tJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7CiYjNDM7IyB8ICAxMDAgICB8IGZjMDA6MToyOjEwMDo6MGQ0NiB8IGFwcGx5IFNSdjYgRW5kLkRUNDYgdnJmdGFibGUgMTAwIHwKJiM0MzsjIHwgIDIwMCAgIHwgZmMwMDoxOjI6MjAwOjowZDQ2IHwgYXBwbHkgU1J2NiBFbmQuRFQ0NiB2cmZ0YWJsZSAyMDAgfAomIzQzOyMgJiM0MzstLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOwomIzQzOyMKJiM0MzsjIHJ0LTI6IHVuZGVybGF5IHRhYmxlICh0YWJsZSA1MDApIC0gcG9zdC1lbmNhcCBTSUQgcm91dGUgbG9va3VwCiYjNDM7IyAmIzQzOy0tLS0tLS0tJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7CiYjNDM7IyB8IHRlbmFudCB8IFNJRCAgICAgICAgICAgICAgICB8IEFjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgIHwKJiM0MzsjICYjNDM7LS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJiM0MzsKJiM0MzsjIHwgIDEwMCAgIHwgZmMwMDoyOjE6MTAwOjowZDQ2IHwgZm9yd2FyZCB2aWEgZmQwMDo6MSBkZXYgdmV0aDAgfAomIzQzOyMgfCAgMjAwICAgfCBmYzAwOjI6MToyMDA6OjBkNDYgfCBmb3J3YXJkIHZpYSBmZDAwOjoxIGRldiB2ZXRoMCB8CiYjNDM7IyAmIzQzOy0tLS0tLS0tJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7CiYjNDM7IwomIzQzOyMgcnQtMjogVlJGIHRhYmxlcyAocGVyIHRlbmFudDogdnJmLVggPSB0YWJsZSBYKQomIzQzOyMgJiM0MzstLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0tJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOwomIzQzOyMgfCB0ZW5hbnQgfCBkc3QgICAgICAgIHwgZW5jYXAgYWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiYjNDM7IyAmIzQzOy0tLS0tLS0tJiM0MzstLS0tLS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7CiYjNDM7IyB8IDEwMCAgICB8IGNhZmU6OjEgICAgfCBlbmNhcCBzZWdzIGZjMDA6MjoxOjEwMDo6MGQ0NiBsb29rdXAgNTAwIHwKJiM0MzsjIHwgICAgICAgIHwgMTAuMC4wLjEgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAomIzQzOyMgfCAgICAgICAgfCBjYWZlOjoxMDEgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiYjNDM7IyB8ICAgICAgICB8IDEwLjAuMC4xMDEgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKJiM0MzsjIHwgMjAwICAgIHwgY2FmZTo6MyAgICB8IGVuY2FwIHNlZ3MgZmMwMDoyOjE6MjAwOjowZDQ2IGxvb2t1cCA1MDAgfAomIzQzOyMgfCAgICAgICAgfCAxMC4wLjAuMyAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiYjNDM7IyB8ICAgICAgICB8IGNhZmU6OjIwMSAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKJiM0MzsjIHwgICAgICAgIHwgMTAuMC4wLjIwMSB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAomIzQzOyMgJiM0MzstLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0tJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOwomIzQzOyMgV2l0aGluIGEgdGVuYW50LCBhIHNpbmdsZSBTSUQgcmVhY2hlcyB0aGUgYWRqYWNlbnQgcm91dGVyIChpdHMgbG9vcGJhY2spCiYjNDM7IyBhbmQgdGhlIHJlbW90ZSBob3N0IGNvbm5lY3RlZCB0byBpdCwgaW4gYm90aCBJUHY0IGFuZCBJUHY2LgomIzQzOyMKJiM0MzsjIEZvciBib3RoIHJ0LTEgYW5kIHJ0LTIsIGVhY2ggVlJGIGFsc28gaGFzIHRoZSBjb25uZWN0ZWQgaG9zdCBwcmVmaXggKGNhZmU6Oi82NAomIzQzOyMgb3IgMTAuMC4wLjAvMjQpIGFuZCBhIGRlZmF1bHQgYmxhY2tob2xlIChJUHY0IGFuZCBJUHY2KS4KJiM0MzsjCiYjNDM7IwomIzQzOyMgTG9jYWxseSBvcmlnaW5hdGVkIHRyYWZmaWMgKG91dHB1dCBwYXRoKQomIzQzOyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQomIzQzOyMKJiM0MzsjIFRoZSBjb25maWd1cmF0aW9uIGFib3ZlIGNvdmVycyBmb3J3YXJkZWQgdHJhZmZpYywgd2hlcmUgcGFja2V0cyBhcnJpdmUgZnJvbQomIzQzOyMgYSBob3N0IGFuZCBhcmUgZW5jYXBzdWxhdGVkIGJ5IHRoZSByb3V0ZXIuIFRvIGFsc28gdGVzdCByb3V0ZXItb3JpZ2luYXRlZAomIzQzOyMgdHJhZmZpYywgZWFjaCByb3V0ZXIgcGluZ3MgdGhlIG90aGVyIHJvdXRlciYjMzk7cyBsb29wYmFjayBhZGRyZXNzIHRocm91Z2gKJiM0MzsjIHRoZSBWUE4uCiYjNDM7IwomIzQzOyMgRXhhbXBsZSAodGVuYW50IDEwMCksIHJ0LTEgcGluZ3MgY2FmZTo6MTAyIChydC0yJiMzOTtzIGxvb3BiYWNrKToKJiM0MzsjICAgMS4gcnQtMSBsb29rcyB1cCBjYWZlOjoxMDIgaW4gdnJmLTEwMCBhbmQgZW5jYXBzdWxhdGVzIGl0IChTSUQKJiM0MzsjICAgICAgZmMwMDoxOjI6MTAwOjowZDQ2KSwgdGhlbiAmIzM0O2xvb2t1cCA1MDAmIzM0OyBmaW5kcyB0aGUgcm91dGUgZm9yIHRoZSBTSUQgaW4gdGhlCiYjNDM7IyAgICAgIHVuZGVybGF5IHRhYmxlIChuZXh0IGhvcCBmZDAwOjoyKSBhbmQgZm9yd2FyZHMgaXQ7CiYjNDM7IyAgIDIuIHJ0LTIgZGVjYXBzdWxhdGVzIGl0IChsb2NhbHNpZCwgRW5kLkRUNDYpIGFuZCBkZWxpdmVycyBpdCBsb2NhbGx5CiYjNDM7IyAgICAgIChjYWZlOjoxMDIgaXMgb24gdGhlIHJsby0xMDAgaW50ZXJmYWNlKTsKJiM0MzsjICAgMy4gcnQtMiByZXBsaWVzIHdpdGggZGVzdGluYXRpb24gY2FmZTo6MTAxIChydC0xJiMzOTtzIGxvb3BiYWNrKS4gcnQtMiBsb29rcyB1cAomIzQzOyMgICAgICBjYWZlOjoxMDEgaW4gdnJmLTEwMCBhbmQgZW5jYXBzdWxhdGVzIGl0IGJhY2sgdG8gcnQtMSAoYWdhaW4gdmlhICYjMzQ7bG9va3VwCiYjNDM7IyAgICAgIDUwMCYjMzQ7KS4gcnQtMSBkZWNhcHN1bGF0ZXMgaXQgYW5kIGRlbGl2ZXJzIGl0LgomIzQzOwomIzQzOyMgc2hlbGxjaGVjayBzb3VyY2U9bGliLnNoCiYjNDM7c291cmNlIGxpYi5zaAomIzQzOwomIzQzO3JlYWRvbmx5IExPQ0FMU0lEX1RBQkxFX0lEPTkwCiYjNDM7cmVhZG9ubHkgVU5ERVJMQVlfVEFCTEVfSUQ9NTAwCiYjNDM7cmVhZG9ubHkgSVB2Nl9SVF9ORVRXT1JLPWZkMDAKJiM0MztyZWFkb25seSBJUHY2X0hTX05FVFdPUks9Y2FmZQomIzQzO3JlYWRvbmx5IElQdjRfSFNfTkVUV09SSz0xMC4wLjAKJiM0MztyZWFkb25seSBWUE5fTE9DQVRPUl9TRVJWSUNFPWZjMDAKJiM0MztyZWFkb25seSBEVDQ2X0ZVTkM9MGQ0NgomIzQzO3JlYWRvbmx5IERVTU1ZX0RFVk5BTUU9ZHVtMAomIzQzO3JlYWRvbmx5IElQdjZfVEVTVFNfQUREUj0yMDAxOmRiODo6MQomIzQzO3JlYWRvbmx5IFRFU1RTX1RBQkxFX0lEPTU0MzIxCiYjNDM7UElOR19USU1FT1VUX1NFQz00CiYjNDM7CiYjNDM7U0VUVVBfRVJSPTEKJiM0MzsKJiM0MztyZXQ9JHtrc2Z0X3NraXB9CiYjNDM7bnN1Y2Nlc3M9MAomIzQzO25mYWlsPTAKJiM0MzsKJiM0MztQQVVTRV9PTl9GQUlMPSR7UEFVU0VfT05fRkFJTDo9bm99CiYjNDM7CiYjNDM7bG9nX3Rlc3QoKQomIzQzO3sKJiM0MzsJbG9jYWwgcmM9JiMzNDskMSYjMzQ7CiYjNDM7CWxvY2FsIGV4cGVjdGVkPSYjMzQ7JDImIzM0OwomIzQzOwlsb2NhbCBtc2c9JiMzNDskMyYjMzQ7CiYjNDM7CiYjNDM7CWlmIFsgJiMzNDske3JjfSYjMzQ7IC1lcSAmIzM0OyR7ZXhwZWN0ZWR9JiMzNDsgXTsgdGhlbgomIzQzOwkJbnN1Y2Nlc3M9JCgobnN1Y2Nlc3MmIzQzOzEpKQomIzQzOwkJcHJpbnRmICYjMzQ7XG4gICAgVEVTVDogJS02MHMgIFsgT0sgXVxuJiMzNDsgJiMzNDske21zZ30mIzM0OwomIzQzOwllbHNlCiYjNDM7CQlyZXQ9MQomIzQzOwkJbmZhaWw9JCgobmZhaWwmIzQzOzEpKQomIzQzOwkJcHJpbnRmICYjMzQ7XG4gICAgVEVTVDogJS02MHMgIFtGQUlMXVxuJiMzNDsgJiMzNDske21zZ30mIzM0OwomIzQzOwkJaWYgWyAmIzM0OyR7UEFVU0VfT05fRkFJTH0mIzM0OyA9ICYjMzQ7eWVzJiMzNDsgXTsgdGhlbgomIzQzOwkJCWVjaG8KJiM0MzsJCQllY2hvICYjMzQ7aGl0IGVudGVyIHRvIGNvbnRpbnVlLCAmIzM5O3EmIzM5OyB0byBxdWl0JiMzNDsKJiM0MzsJCQlyZWFkIC1yIGEKJiM0MzsJCQlbICYjMzQ7JGEmIzM0OyA9ICYjMzQ7cSYjMzQ7IF0gJmFtcDsmYW1wOyBleGl0IDEKJiM0MzsJCWZpCiYjNDM7CWZpCiYjNDM7fQomIzQzOwomIzQzO3ByaW50X2xvZ190ZXN0X3Jlc3VsdHMoKQomIzQzO3sKJiM0MzsJcHJpbnRmICYjMzQ7XG5UZXN0cyBwYXNzZWQ6ICUzZFxuJiMzNDsgJiMzNDske25zdWNjZXNzfSYjMzQ7CiYjNDM7CXByaW50ZiAmIzM0O1Rlc3RzIGZhaWxlZDogJTNkXG4mIzM0OyAgICYjMzQ7JHtuZmFpbH0mIzM0OwomIzQzOwomIzQzOwkjIHdoZW4gYSB0ZXN0IGZhaWxzLCB0aGUgdmFsdWUgb2YgJiMzOTtyZXQmIzM5OyBpcyBzZXQgdG8gMSAoZXJyb3IgY29kZSkuCiYjNDM7CSMgQ29udmVyc2VseSwgd2hlbiBhbGwgdGVzdHMgYXJlIHBhc3NlZCBzdWNjZXNzZnVsbHksIHRoZSAmIzM5O3JldCYjMzk7IHZhbHVlCiYjNDM7CSMgaXMgc2V0IHRvIDAgKHN1Y2Nlc3MgY29kZSkuCiYjNDM7CWlmIFsgJiMzNDske3JldH0mIzM0OyAtbmUgMSBdOyB0aGVuCiYjNDM7CQlyZXQ9MAomIzQzOwlmaQomIzQzO30KJiM0MzsKJiM0Mztsb2dfc2VjdGlvbigpCiYjNDM7ewomIzQzOwllY2hvCiYjNDM7CWVjaG8gJiMzNDsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyYjMzQ7CiYjNDM7CWVjaG8gJiMzNDtURVNUIFNFQ1RJT046ICQqJiMzNDsKJiM0MzsJZWNobyAmIzM0OyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjJiMzNDsKJiM0Mzt9CiYjNDM7CiYjNDM7Z2V0X3J0bmFtZSgpCiYjNDM7ewomIzQzOwlsb2NhbCBydGlkPSYjMzQ7JDEmIzM0OwomIzQzOwomIzQzOwllY2hvICYjMzQ7cnRfJHtydGlkfSYjMzQ7CiYjNDM7fQomIzQzOwomIzQzO2dldF9ydF9uc25hbWUoKQomIzQzO3sKJiM0MzsJbG9jYWwgcnRpZD0mIzM0OyQxJiMzNDsKJiM0MzsJbG9jYWwgdmFybmFtZQomIzQzOwomIzQzOwl2YXJuYW1lPSYjMzQ7JChnZXRfcnRuYW1lICYjMzQ7JHtydGlkfSYjMzQ7KSYjMzQ7CiYjNDM7CWVjaG8gJiMzNDskeyF2YXJuYW1lfSYjMzQ7CiYjNDM7fQomIzQzOwomIzQzO2dldF9oc25hbWUoKQomIzQzO3sKJiM0MzsJbG9jYWwgdGlkPSYjMzQ7JDEmIzM0OwomIzQzOwlsb2NhbCBoc2lkPSYjMzQ7JDImIzM0OwomIzQzOwomIzQzOwllY2hvICYjMzQ7aHNfdCR7dGlkfV8ke2hzaWR9JiMzNDsKJiM0Mzt9CiYjNDM7CiYjNDM7Z2V0X2hzX25zbmFtZSgpCiYjNDM7ewomIzQzOwlsb2NhbCB0aWQ9JiMzNDskMSYjMzQ7CiYjNDM7CWxvY2FsIGhzaWQ9JiMzNDskMiYjMzQ7CiYjNDM7CWxvY2FsIHZhcm5hbWUKJiM0MzsKJiM0MzsJdmFybmFtZT0mIzM0OyQoZ2V0X2hzbmFtZSAmIzM0OyR7dGlkfSYjMzQ7ICYjMzQ7JHtoc2lkfSYjMzQ7KSYjMzQ7CiYjNDM7CWVjaG8gJiMzNDskeyF2YXJuYW1lfSYjMzQ7CiYjNDM7fQomIzQzOwomIzQzO2NsZWFudXAoKQomIzQzO3sKJiM0MzsJaXAgbGluayBkZWwgdmV0aC1ydC0xIDImZ3Q7L2Rldi9udWxsIHx8IHRydWUKJiM0MzsJaXAgbGluayBkZWwgdmV0aC1ydC0yIDImZ3Q7L2Rldi9udWxsIHx8IHRydWUKJiM0MzsKJiM0MzsJY2xlYW51cF9hbGxfbnMKJiM0MzsKJiM0MzsJIyBjaGVjayB3aGV0aGVyIHRoZSBzZXR1cCBwaGFzZSB3YXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseSBvciBub3QuIEluCiYjNDM7CSMgY2FzZSBvZiBhbiBlcnJvciBkdXJpbmcgdGhlIHNldHVwIHBoYXNlIG9mIHRoZSB0ZXN0aW5nIGVudmlyb25tZW50LAomIzQzOwkjIHRoZSBzZWxmdGVzdCBpcyBjb25zaWRlcmVkIGFzICYjMzQ7c2tpcHBlZCYjMzQ7LgomIzQzOwlpZiBbICYjMzQ7JHtTRVRVUF9FUlJ9JiMzNDsgLW5lIDAgXTsgdGhlbgomIzQzOwkJZWNobyAmIzM0O1NLSVA6IFNldHRpbmcgdXAgdGhlIHRlc3RpbmcgZW52aXJvbm1lbnQgZmFpbGVkJiMzNDsKJiM0MzsJCWV4aXQgJiMzNDske2tzZnRfc2tpcH0mIzM0OwomIzQzOwlmaQomIzQzOwomIzQzOwlleGl0ICYjMzQ7JHtyZXR9JiMzNDsKJiM0Mzt9CiYjNDM7CiYjNDM7IyBIb3N0IGlkIG9mIHRoZSByb3V0ZXIgbG9vcGJhY2sgKHJsbykgZm9yIGEgKHJvdXRlciwgdGVuYW50KSBwYWlyLgomIzQzOyMgRS5nLiBydC0xL3RlbmFudCAxMDAgLSZndDsgMTAxLCBydC0yL3RlbmFudCAyMDAgLSZndDsgMjAyLgomIzQzO2dldF9ybG9faG9zdGlkKCkKJiM0Mzt7CiYjNDM7CWxvY2FsIHJ0aWQ9JiMzNDskMSYjMzQ7CiYjNDM7CWxvY2FsIHRpZD0mIzM0OyQyJiMzNDsKJiM0MzsKJiM0MzsJZWNobyAmIzM0OyQoKHRpZCAmIzQzOyBydGlkKSkmIzM0OwomIzQzO30KJiM0MzsKJiM0MztidWlsZF92cG5fc2lkKCkKJiM0Mzt7CiYjNDM7CWxvY2FsIHJ0c3JjPSYjMzQ7JDEmIzM0OwomIzQzOwlsb2NhbCBydGRzdD0mIzM0OyQyJiMzNDsKJiM0MzsJbG9jYWwgdGlkPSYjMzQ7JDMmIzM0OwomIzQzOwomIzQzOwllY2hvICYjMzQ7JHtWUE5fTE9DQVRPUl9TRVJWSUNFfToke3J0c3JjfToke3J0ZHN0fToke3RpZH06OiR7RFQ0Nl9GVU5DfSYjMzQ7CiYjNDM7fQomIzQzOwomIzQzOyMgSW5zdGFsbCBhIGR1YWwtc3RhY2sgKElQdjYgYW5kIElQdjQpIGVuY2FwIHJvdXRlIGluIGEgVlJGIG9uIHRoZSBnaXZlbgomIzQzOyMgcm91dGVyLgomIzQzOyMgYXJnczoKJiM0MzsjICAkMSAtIHJvdXRlciBpZAomIzQzOyMgICQyIC0gaG9zdCBwYXJ0IG9mIHRoZSBJUHY2IGRlc3RpbmF0aW9uCiYjNDM7IyAgJDMgLSBob3N0IHBhcnQgb2YgdGhlIElQdjQgZGVzdGluYXRpb24KJiM0MzsjICAkNCAtIFNSdjYgU0lEIHVzZWQgYXMgdGhlIGVuY2FwIGRlc3RpbmF0aW9uCiYjNDM7IyAgJDUgLSB0ZW5hbnQgaWQKJiM0MzsjICAkNiAtIGlmICYjMzQ7dHJ1ZSYjMzQ7LCBhZGQgdGhlICYjMzQ7bG9va3VwJiMzNDsgYXR0cmlidXRlIHRvIHRoZSBlbmNhcCByb3V0ZQomIzQzO19fc2V0X2VuY2FwX3JvdXRlKCkKJiM0Mzt7CiYjNDM7CWxvY2FsIHJ0PSYjMzQ7JDEmIzM0OwomIzQzOwlsb2NhbCBkc3Q2PSYjMzQ7JDImIzM0OwomIzQzOwlsb2NhbCBkc3Q0PSYjMzQ7JDMmIzM0OwomIzQzOwlsb2NhbCBzaWQ9JiMzNDskNCYjMzQ7CiYjNDM7CWxvY2FsIHRpZD0mIzM0OyQ1JiMzNDsKJiM0MzsJbG9jYWwgdXNlX2xvb2t1cD0mIzM0OyQ2JiMzNDsKJiM0MzsJbG9jYWwgbG9va3VwPSYjMzk7JiMzOTsKJiM0MzsJbG9jYWwgcnRuYW1lCiYjNDM7CiYjNDM7CXJ0bmFtZT0mIzM0OyQoZ2V0X3J0X25zbmFtZSAmIzM0OyR7cnR9JiMzNDspJiMzNDsKJiM0MzsKJiM0MzsJaWYgWyAmIzM0OyR7dXNlX2xvb2t1cH0mIzM0OyA9ICYjMzQ7dHJ1ZSYjMzQ7IF07IHRoZW4KJiM0MzsJCWxvb2t1cD0mIzM0O2xvb2t1cCAke1VOREVSTEFZX1RBQkxFX0lEfSYjMzQ7CiYjNDM7CWZpCiYjNDM7CiYjNDM7CSMgc2hlbGxjaGVjayBkaXNhYmxlPVNDMjA4NgomIzQzOwlpcCAtbmV0bnMgJiMzNDske3J0bmFtZX0mIzM0OyAtNiByb3V0ZSByZXBsYWNlIFwKJiM0MzsJCSYjMzQ7JHtJUHY2X0hTX05FVFdPUkt9Ojoke2RzdDZ9LzEyOCYjMzQ7IHZyZiAmIzM0O3ZyZi0ke3RpZH0mIzM0OyBcCiYjNDM7CQllbmNhcCBzZWc2IG1vZGUgZW5jYXAgc2VncyAmIzM0OyR7c2lkfSYjMzQ7ICR7bG9va3VwfSBkZXYgdmV0aDAKJiM0MzsKJiM0MzsJIyBzaGVsbGNoZWNrIGRpc2FibGU9U0MyMDg2CiYjNDM7CWlwIC1uZXRucyAmIzM0OyR7cnRuYW1lfSYjMzQ7IC00IHJvdXRlIHJlcGxhY2UgXAomIzQzOwkJJiMzNDske0lQdjRfSFNfTkVUV09SS30uJHtkc3Q0fS8zMiYjMzQ7IHZyZiAmIzM0O3ZyZi0ke3RpZH0mIzM0OyBcCiYjNDM7CQllbmNhcCBzZWc2IG1vZGUgZW5jYXAgc2VncyAmIzM0OyR7c2lkfSYjMzQ7ICR7bG9va3VwfSBkZXYgdmV0aDAKJiM0Mzt9CiYjNDM7CiYjNDM7IyBJbnN0YWxsIHRoZSBkdWFsLXN0YWNrIGVuY2FwIHJvdXRlIGZvciBhIHRlbmFudCBob3N0IG9uIHJ0LCB3aXRoIHRoZQomIzQzOyMgJiMzNDtsb29rdXAmIzM0OyBhdHRyaWJ1dGUgc28gdGhlIGZpcnN0IFNJRCBpcyBsb29rZWQgdXAgaW4gdGhlIHVuZGVybGF5IHRhYmxlLgomIzQzOyMgYXJnczoKJiM0MzsjICAkMSAtIHJvdXRlciBpZCB3aGVyZSB0aGUgZW5jYXAgcm91dGUgaXMgaW5zdGFsbGVkCiYjNDM7IyAgJDIgLSBob3N0IGRlc3RpbmF0aW9uIGlkIChob3N0IHBhcnQgb2YgY2FmZTo6Jmx0O2lkJmd0Oy8xMjggYW5kIDEwLjAuMC4mbHQ7aWQmZ3Q7LzMyKQomIzQzOyMgICQzIC0gU1J2NiBTSUQgdXNlZCBhcyB0aGUgZW5jYXAgZGVzdGluYXRpb24KJiM0MzsjICAkNCAtIHRlbmFudCBpZAomIzQzO3NldF9ob3N0X2VuY2FwX3JvdXRlKCkKJiM0Mzt7CiYjNDM7CWxvY2FsIHJ0PSYjMzQ7JDEmIzM0OwomIzQzOwlsb2NhbCBoc2RzdD0mIzM0OyQyJiMzNDsKJiM0MzsJbG9jYWwgc2lkPSYjMzQ7JDMmIzM0OwomIzQzOwlsb2NhbCB0aWQ9JiMzNDskNCYjMzQ7CiYjNDM7CiYjNDM7CV9fc2V0X2VuY2FwX3JvdXRlICYjMzQ7JHtydH0mIzM0OyAmIzM0OyR7aHNkc3R9JiMzNDsgJiMzNDske2hzZHN0fSYjMzQ7ICYjMzQ7JHtzaWR9JiMzNDsgJiMzNDske3RpZH0mIzM0OyB0cnVlCiYjNDM7fQomIzQzOwomIzQzO3NldF9ob3N0X2VuY2FwX3JvdXRlX25vbG9va3VwKCkKJiM0Mzt7CiYjNDM7CWxvY2FsIHJ0PSYjMzQ7JDEmIzM0OwomIzQzOwlsb2NhbCBoc2RzdD0mIzM0OyQyJiMzNDsKJiM0MzsJbG9jYWwgc2lkPSYjMzQ7JDMmIzM0OwomIzQzOwlsb2NhbCB0aWQ9JiMzNDskNCYjMzQ7CiYjNDM7CiYjNDM7CV9fc2V0X2VuY2FwX3JvdXRlICYjMzQ7JHtydH0mIzM0OyAmIzM0OyR7aHNkc3R9JiMzNDsgJiMzNDske2hzZHN0fSYjMzQ7ICYjMzQ7JHtzaWR9JiMzNDsgJiMzNDske3RpZH0mIzM0OyBmYWxzZQomIzQzO30KJiM0MzsKJiM0MzsjIEluc3RhbGwgdGhlIGR1YWwtc3RhY2sgZW5jYXAgcm91dGUgb24gcnRzcmMgdG93YXJkIHJ0ZHN0JiMzOTtzIHJsbyBsb29wYmFjawomIzQzOyMgKFJMTzEgb3IgUkxPMiwgc2VlIGhlYWRlciksIHdpdGggdGhlICYjMzQ7bG9va3VwJiMzNDsgYXR0cmlidXRlIHNvIHRoZSBmaXJzdAomIzQzOyMgU0lEIGlzIGxvb2tlZCB1cCBpbiB0aGUgdW5kZXJsYXkgdGFibGUuCiYjNDM7IyBhcmdzOgomIzQzOyMgICQxIC0gcm91dGVyIGlkIHdoZXJlIHRoZSBlbmNhcCByb3V0ZSBpcyBpbnN0YWxsZWQKJiM0MzsjICAkMiAtIHJvdXRlciBpZCB3aG9zZSBsb29wYmFjayBhZGRyZXNzIGlzIHRoZSByb3V0ZSBkZXN0aW5hdGlvbgomIzQzOyMgICQzIC0gU1J2NiBTSUQgdXNlZCBhcyB0aGUgZW5jYXAgZGVzdGluYXRpb24KJiM0MzsjICAkNCAtIHRlbmFudCBpZAomIzQzO3NldF9nd19lbmNhcF9yb3V0ZSgpCiYjNDM7ewomIzQzOwlsb2NhbCBydHNyYz0mIzM0OyQxJiMzNDsKJiM0MzsJbG9jYWwgcnRkc3Q9JiMzNDskMiYjMzQ7CiYjNDM7CWxvY2FsIHNpZD0mIzM0OyQzJiMzNDsKJiM0MzsJbG9jYWwgdGlkPSYjMzQ7JDQmIzM0OwomIzQzOwlsb2NhbCBkc3QKJiM0MzsKJiM0MzsJZHN0PSYjMzQ7JChnZXRfcmxvX2hvc3RpZCAmIzM0OyR7cnRkc3R9JiMzNDsgJiMzNDske3RpZH0mIzM0OykmIzM0OwomIzQzOwomIzQzOwlfX3NldF9lbmNhcF9yb3V0ZSAmIzM0OyR7cnRzcmN9JiMzNDsgJiMzNDske2RzdH0mIzM0OyAmIzM0OyR7ZHN0fSYjMzQ7ICYjMzQ7JHtzaWR9JiMzNDsgJiMzNDske3RpZH0mIzM0OyB0cnVlCiYjNDM7fQomIzQzOwomIzQzO3NldF9nd19lbmNhcF9yb3V0ZV9ub2xvb2t1cCgpCiYjNDM7ewomIzQzOwlsb2NhbCBydHNyYz0mIzM0OyQxJiMzNDsKJiM0MzsJbG9jYWwgcnRkc3Q9JiMzNDskMiYjMzQ7CiYjNDM7CWxvY2FsIHNpZD0mIzM0OyQzJiMzNDsKJiM0MzsJbG9jYWwgdGlkPSYjMzQ7JDQmIzM0OwomIzQzOwlsb2NhbCBkc3QKJiM0MzsKJiM0MzsJZHN0PSYjMzQ7JChnZXRfcmxvX2hvc3RpZCAmIzM0OyR7cnRkc3R9JiMzNDsgJiMzNDske3RpZH0mIzM0OykmIzM0OwomIzQzOwomIzQzOwlfX3NldF9lbmNhcF9yb3V0ZSAmIzM0OyR7cnRzcmN9JiMzNDsgJiMzNDske2RzdH0mIzM0OyAmIzM0OyR7ZHN0fSYjMzQ7ICYjMzQ7JHtzaWR9JiMzNDsgJiMzNDske3RpZH0mIzM0OyBmYWxzZQomIzQzO30KJiM0MzsKJiM0MzsjIFNldHVwIHRoZSBiYXNpYyBuZXR3b3JraW5nIGZvciBhIHJvdXRlcgomIzQzO3NldHVwX3J0X25ldHdvcmtpbmcoKQomIzQzO3sKJiM0MzsJbG9jYWwgaWQ9JiMzNDskMSYjMzQ7CiYjNDM7CWxvY2FsIG5zbmFtZQomIzQzOwomIzQzOwluc25hbWU9JiMzNDskKGdldF9ydF9uc25hbWUgJiMzNDske2lkfSYjMzQ7KSYjMzQ7CiYjNDM7CiYjNDM7CWlwIGxpbmsgc2V0ICYjMzQ7dmV0aC1ydC0ke2lkfSYjMzQ7IG5ldG5zICYjMzQ7JHtuc25hbWV9JiMzNDsKJiM0MzsJaXAgLW5ldG5zICYjMzQ7JHtuc25hbWV9JiMzNDsgbGluayBzZXQgJiMzNDt2ZXRoLXJ0LSR7aWR9JiMzNDsgbmFtZSB2ZXRoMAomIzQzOwomIzQzOwlpcCBuZXRucyBleGVjICYjMzQ7JHtuc25hbWV9JiMzNDsgc3lzY3RsIC13cSBuZXQuaXB2Ni5jb25mLmFsbC5hY2NlcHRfZGFkPTAKJiM0MzsJaXAgbmV0bnMgZXhlYyAmIzM0OyR7bnNuYW1lfSYjMzQ7IHN5c2N0bCAtd3EgbmV0LmlwdjYuY29uZi5kZWZhdWx0LmFjY2VwdF9kYWQ9MAomIzQzOwomIzQzOwlpcCAtbmV0bnMgJiMzNDske25zbmFtZX0mIzM0OyBhZGRyIGFkZCAmIzM0OyR7SVB2Nl9SVF9ORVRXT1JLfTo6JHtpZH0vNjQmIzM0OyBkZXYgdmV0aDAgbm9kYWQKJiM0MzsJaXAgLW5ldG5zICYjMzQ7JHtuc25hbWV9JiMzNDsgbGluayBzZXQgdmV0aDAgdXAKJiM0MzsKJiM0MzsJaXAgbmV0bnMgZXhlYyAmIzM0OyR7bnNuYW1lfSYjMzQ7IHN5c2N0bCAtd3EgbmV0LmlwdjQuaXBfZm9yd2FyZD0xCiYjNDM7CWlwIG5ldG5zIGV4ZWMgJiMzNDske25zbmFtZX0mIzM0OyBzeXNjdGwgLXdxIG5ldC5pcHY2LmNvbmYuYWxsLmZvcndhcmRpbmc9MQomIzQzO30KJiM0MzsKJiM0MzsjIFNldHVwIGEgaG9zdCBuYW1lc3BhY2UgYW5kIGF0dGFjaCBpdCB0byBpdHMgZ2F0ZXdheQomIzQzO3NldHVwX2hzKCkKJiM0Mzt7CiYjNDM7CWxvY2FsIGhpZD0mIzM0OyQxJiMzNDsKJiM0MzsJbG9jYWwgcmlkPSYjMzQ7JDImIzM0OwomIzQzOwlsb2NhbCB0aWQ9JiMzNDskMyYjMzQ7CiYjNDM7CWxvY2FsIHJ0dmV0aD0mIzM0O3ZldGgtdCR7dGlkfSYjMzQ7CiYjNDM7CWxvY2FsIGhzbmFtZQomIzQzOwlsb2NhbCBydG5hbWUKJiM0MzsKJiM0MzsJaHNuYW1lPSYjMzQ7JChnZXRfaHNfbnNuYW1lICYjMzQ7JHt0aWR9JiMzNDsgJiMzNDske2hpZH0mIzM0OykmIzM0OwomIzQzOwlydG5hbWU9JiMzNDskKGdldF9ydF9uc25hbWUgJiMzNDske3JpZH0mIzM0OykmIzM0OwomIzQzOwomIzQzOwlpcCBuZXRucyBleGVjICYjMzQ7JHtoc25hbWV9JiMzNDsgc3lzY3RsIC13cSBuZXQuaXB2Ni5jb25mLmFsbC5hY2NlcHRfZGFkPTAKJiM0MzsJaXAgbmV0bnMgZXhlYyAmIzM0OyR7aHNuYW1lfSYjMzQ7IHN5c2N0bCAtd3EgbmV0LmlwdjYuY29uZi5kZWZhdWx0LmFjY2VwdF9kYWQ9MAomIzQzOwomIzQzOwlpcCAtbmV0bnMgJiMzNDske2hzbmFtZX0mIzM0OyBsaW5rIGFkZCB2ZXRoMCB0eXBlIHZldGggcGVlciBuYW1lICYjMzQ7JHtydHZldGh9JiMzNDsKJiM0MzsJaXAgLW5ldG5zICYjMzQ7JHtoc25hbWV9JiMzNDsgbGluayBzZXQgJiMzNDske3J0dmV0aH0mIzM0OyBuZXRucyAmIzM0OyR7cnRuYW1lfSYjMzQ7CiYjNDM7CiYjNDM7CWlwIC1uZXRucyAmIzM0OyR7aHNuYW1lfSYjMzQ7IGFkZHIgYWRkIFwKJiM0MzsJCSYjMzQ7JHtJUHY2X0hTX05FVFdPUkt9Ojoke2hpZH0vNjQmIzM0OyBkZXYgdmV0aDAgbm9kYWQKJiM0MzsJaXAgLW5ldG5zICYjMzQ7JHtoc25hbWV9JiMzNDsgYWRkciBhZGQgXAomIzQzOwkJJiMzNDske0lQdjRfSFNfTkVUV09SS30uJHtoaWR9LzI0JiMzNDsgZGV2IHZldGgwCiYjNDM7CiYjNDM7CWlwIC1uZXRucyAmIzM0OyR7aHNuYW1lfSYjMzQ7IGxpbmsgc2V0IHZldGgwIHVwCiYjNDM7fQomIzQzOwomIzQzOyMgU2V0dXAgdGhlIHBlci10ZW5hbnQgVlJGIG9uIGEgcm91dGVyIChnYXRld2F5LCBsb29wYmFjaywgYmxhY2tob2xlKQomIzQzO3NldHVwX3J0KCkKJiM0Mzt7CiYjNDM7CWxvY2FsIHJpZD0mIzM0OyQxJiMzNDsKJiM0MzsJbG9jYWwgdGlkPSYjMzQ7JDImIzM0OwomIzQzOwlsb2NhbCBydHZldGg9JiMzNDt2ZXRoLXQke3RpZH0mIzM0OwomIzQzOwlsb2NhbCBybG9fZGV2PSYjMzQ7cmxvLSR7dGlkfSYjMzQ7CiYjNDM7CWxvY2FsIHJ0bmFtZQomIzQzOwlsb2NhbCBnd19hZGRyX3Y2CiYjNDM7CWxvY2FsIGd3X2FkZHJfdjQKJiM0MzsKJiM0MzsJcnRuYW1lPSYjMzQ7JChnZXRfcnRfbnNuYW1lICYjMzQ7JHtyaWR9JiMzNDspJiMzNDsKJiM0MzsKJiM0MzsJZ3dfYWRkcl92Nj0mIzM0OyR7SVB2Nl9IU19ORVRXT1JLfTo6JChnZXRfcmxvX2hvc3RpZCAmIzM0OyR7cmlkfSYjMzQ7ICYjMzQ7JHt0aWR9JiMzNDspJiMzNDsKJiM0MzsJZ3dfYWRkcl92ND0mIzM0OyR7SVB2NF9IU19ORVRXT1JLfS4kKGdldF9ybG9faG9zdGlkICYjMzQ7JHtyaWR9JiMzNDsgJiMzNDske3RpZH0mIzM0OykmIzM0OwomIzQzOwomIzQzOwlpcCAtbmV0bnMgJiMzNDske3J0bmFtZX0mIzM0OyBsaW5rIGFkZCAmIzM0O3ZyZi0ke3RpZH0mIzM0OyB0eXBlIHZyZiB0YWJsZSAmIzM0OyR7dGlkfSYjMzQ7CiYjNDM7CWlwIC1uZXRucyAmIzM0OyR7cnRuYW1lfSYjMzQ7IGxpbmsgc2V0ICYjMzQ7dnJmLSR7dGlkfSYjMzQ7IHVwCiYjNDM7CiYjNDM7CWlwIC1uZXRucyAmIzM0OyR7cnRuYW1lfSYjMzQ7IGxpbmsgc2V0ICYjMzQ7JHtydHZldGh9JiMzNDsgbWFzdGVyICYjMzQ7dnJmLSR7dGlkfSYjMzQ7CiYjNDM7CiYjNDM7CWlwIC1uZXRucyAmIzM0OyR7cnRuYW1lfSYjMzQ7IGFkZHIgYWRkIFwKJiM0MzsJCSYjMzQ7JHtJUHY2X0hTX05FVFdPUkt9OjoyNTQvNjQmIzM0OyBkZXYgJiMzNDske3J0dmV0aH0mIzM0OyBub2RhZAomIzQzOwlpcCAtbmV0bnMgJiMzNDske3J0bmFtZX0mIzM0OyBhZGRyIGFkZCBcCiYjNDM7CQkmIzM0OyR7SVB2NF9IU19ORVRXT1JLfS4yNTQvMjQmIzM0OyBkZXYgJiMzNDske3J0dmV0aH0mIzM0OwomIzQzOwomIzQzOwlpcCAtbmV0bnMgJiMzNDske3J0bmFtZX0mIzM0OyBsaW5rIHNldCAmIzM0OyR7cnR2ZXRofSYjMzQ7IHVwCiYjNDM7CiYjNDM7CWlwIG5ldG5zIGV4ZWMgJiMzNDske3J0bmFtZX0mIzM0OyBcCiYjNDM7CQlzeXNjdGwgLXdxICYjMzQ7bmV0LmlwdjYuY29uZi4ke3J0dmV0aH0ucHJveHlfbmRwPTEmIzM0OwomIzQzOwlpcCBuZXRucyBleGVjICYjMzQ7JHtydG5hbWV9JiMzNDsgXAomIzQzOwkJc3lzY3RsIC13cSAmIzM0O25ldC5pcHY0LmNvbmYuJHtydHZldGh9LnByb3h5X2FycD0xJiMzNDsKJiM0MzsKJiM0MzsJaXAgbmV0bnMgZXhlYyAmIzM0OyR7cnRuYW1lfSYjMzQ7IHNoIC1jICYjMzQ7ZWNobyAxICZndDsgL3Byb2Mvc3lzL25ldC92cmYvc3RyaWN0X21vZGUmIzM0OwomIzQzOwomIzQzOwkjIHJvdXRlciBsb29wYmFjayBpbnRlcmZhY2UgZm9yIGxvY2FsbHkgb3JpZ2luYXRlZCB0cmFmZmljCiYjNDM7CWlwIC1uZXRucyAmIzM0OyR7cnRuYW1lfSYjMzQ7IGxpbmsgYWRkICYjMzQ7JHtybG9fZGV2fSYjMzQ7IHR5cGUgZHVtbXkKJiM0MzsJaXAgLW5ldG5zICYjMzQ7JHtydG5hbWV9JiMzNDsgbGluayBzZXQgJiMzNDske3Jsb19kZXZ9JiMzNDsgbWFzdGVyICYjMzQ7dnJmLSR7dGlkfSYjMzQ7CiYjNDM7CiYjNDM7CWlwIC1uZXRucyAmIzM0OyR7cnRuYW1lfSYjMzQ7IGFkZHIgYWRkICYjMzQ7JHtnd19hZGRyX3Y2fS8xMjgmIzM0OyBcCiYjNDM7CQlkZXYgJiMzNDske3Jsb19kZXZ9JiMzNDsgbm9kYWQKJiM0MzsJaXAgLW5ldG5zICYjMzQ7JHtydG5hbWV9JiMzNDsgYWRkciBhZGQgJiMzNDske2d3X2FkZHJfdjR9LzMyJiMzNDsgXAomIzQzOwkJZGV2ICYjMzQ7JHtybG9fZGV2fSYjMzQ7CiYjNDM7CiYjNDM7CWlwIC1uZXRucyAmIzM0OyR7cnRuYW1lfSYjMzQ7IGxpbmsgc2V0ICYjMzQ7JHtybG9fZGV2fSYjMzQ7IHVwCiYjNDM7CiYjNDM7CSMgZGVmYXVsdCBibGFja2hvbGUgcm91dGVzIGluIHRoZSBWUkY6IGFueSB0cmFmZmljIHRoYXQgZG9lcyBub3QgbWF0Y2gKJiM0MzsJIyBhIHNwZWNpZmljIHJvdXRlIGlzIGRyb3BwZWQuIFdpdGhvdXQgdGhlICYjMzQ7bG9va3VwJiMzNDsgYXR0cmlidXRlIG9uIHRoZQomIzQzOwkjIGVuY2FwIHJvdXRlLCB0aGUgcm91dGUgZm9yIHRoZSBmaXJzdCBTSUQgY2Fubm90IGJlIGZvdW5kIGZyb20gd2l0aGluCiYjNDM7CSMgdGhlIFZSRi4KJiM0MzsJaXAgLW5ldG5zICYjMzQ7JHtydG5hbWV9JiMzNDsgLTYgcm91dGUgYWRkIGJsYWNraG9sZSBkZWZhdWx0IG1ldHJpYyA0Mjc4MTk4MjcyIFwKJiM0MzsJCXZyZiAmIzM0O3ZyZi0ke3RpZH0mIzM0OwomIzQzOwlpcCAtbmV0bnMgJiMzNDske3J0bmFtZX0mIzM0OyAtNCByb3V0ZSBhZGQgYmxhY2tob2xlIGRlZmF1bHQgbWV0cmljIDQyNzgxOTgyNzIgXAomIzQzOwkJdnJmICYjMzQ7dnJmLSR7dGlkfSYjMzQ7CiYjNDM7fQomIzQzOwomIzQzOyMgQ29uZmlndXJlIGEgb25lLXdheSBWUE4gcGF0aCB0b3dhcmRzIGhzZHN0IChvbiBydGRzdCkgZm9yIHRlbmFudCB0aWQuCiYjNDM7IyBUaGUgZW5jYXAgc2lkZSBpcyBzZXQgdXAgb24gcnRzcmMgYW5kIHRoZSBkZWNhcCBzaWRlIG9uIHJ0ZHN0LgomIzQzOyMgYXJnczoKJiM0MzsjICAkMSAtIHJvdXRlciBpZCB3aGVyZSB0aGUgZW5jYXAgc2lkZSBpcyBzZXQgdXAKJiM0MzsjICAkMiAtIGhvc3QgaWQgb2YgdGhlIGRlc3RpbmF0aW9uIGhvc3QKJiM0MzsjICAkMyAtIHJvdXRlciBpZCBvZiB0aGUgZGVzdGluYXRpb24gcm91dGVyIChjb25uZWN0ZWQgdG8gdGhlIGRlc3RpbmF0aW9uIGhvc3QpCiYjNDM7IyAgJDQgLSB0ZW5hbnQgaWQKJiM0MztzZXR1cF92cG5fY29uZmlnKCkKJiM0Mzt7CiYjNDM7CWxvY2FsIHJ0c3JjPSYjMzQ7JDEmIzM0OwomIzQzOwlsb2NhbCBoc2RzdD0mIzM0OyQyJiMzNDsKJiM0MzsJbG9jYWwgcnRkc3Q9JiMzNDskMyYjMzQ7CiYjNDM7CWxvY2FsIHRpZD0mIzM0OyQ0JiMzNDsKJiM0MzsJbG9jYWwgcnR2ZXRoPSYjMzQ7dmV0aC10JHt0aWR9JiMzNDsKJiM0MzsJbG9jYWwgcnRzcmNfbmFtZQomIzQzOwlsb2NhbCBydGRzdF9uYW1lCiYjNDM7CWxvY2FsIHZwbl9zaWQKJiM0MzsKJiM0MzsJcnRzcmNfbmFtZT0mIzM0OyQoZ2V0X3J0X25zbmFtZSAmIzM0OyR7cnRzcmN9JiMzNDspJiMzNDsKJiM0MzsJcnRkc3RfbmFtZT0mIzM0OyQoZ2V0X3J0X25zbmFtZSAmIzM0OyR7cnRkc3R9JiMzNDspJiMzNDsKJiM0MzsJdnBuX3NpZD0mIzM0OyQoYnVpbGRfdnBuX3NpZCAmIzM0OyR7cnRzcmN9JiMzNDsgJiMzNDske3J0ZHN0fSYjMzQ7ICYjMzQ7JHt0aWR9JiMzNDspJiMzNDsKJiM0MzsKJiM0MzsJaXAgLW5ldG5zICYjMzQ7JHtydHNyY19uYW1lfSYjMzQ7IC02IG5laWdoIGFkZCBwcm94eSBcCiYjNDM7CQkmIzM0OyR7SVB2Nl9IU19ORVRXT1JLfTo6JHtoc2RzdH0mIzM0OyBkZXYgJiMzNDske3J0dmV0aH0mIzM0OwomIzQzOwlzZXRfaG9zdF9lbmNhcF9yb3V0ZSAmIzM0OyR7cnRzcmN9JiMzNDsgJiMzNDske2hzZHN0fSYjMzQ7ICYjMzQ7JHt2cG5fc2lkfSYjMzQ7ICYjMzQ7JHt0aWR9JiMzNDsKJiM0MzsKJiM0MzsJaXAgLW5ldG5zICYjMzQ7JHtydHNyY19uYW1lfSYjMzQ7IC02IHJvdXRlIGFkZCAmIzM0OyR7dnBuX3NpZH0vMTI4JiMzNDsgXAomIzQzOwkJdGFibGUgJiMzNDske1VOREVSTEFZX1RBQkxFX0lEfSYjMzQ7IFwKJiM0MzsJCXZpYSAmIzM0O2ZkMDA6OiR7cnRkc3R9JiMzNDsgZGV2IHZldGgwCiYjNDM7CiYjNDM7CSMgc2V0IHRoZSBkZWNhcCByb3V0ZSBmb3IgZGVjYXBzdWxhdGluZyBwYWNrZXRzIGFycml2aW5nIGZyb20gcnRzcmMKJiM0MzsJIyBhbmQgZGVzdGluZWQgdG8gaHNkc3QKJiM0MzsJaXAgLW5ldG5zICYjMzQ7JHtydGRzdF9uYW1lfSYjMzQ7IC02IHJvdXRlIGFkZCAmIzM0OyR7dnBuX3NpZH0vMTI4JiMzNDsgXAomIzQzOwkJdGFibGUgJiMzNDske0xPQ0FMU0lEX1RBQkxFX0lEfSYjMzQ7IFwKJiM0MzsJCWVuY2FwIHNlZzZsb2NhbCBhY3Rpb24gRW5kLkRUNDYgXAomIzQzOwkJdnJmdGFibGUgJiMzNDske3RpZH0mIzM0OyBkZXYgJiMzNDt2cmYtJHt0aWR9JiMzNDsKJiM0MzsKJiM0MzsJIyBhbGwgU0lEcyBmb3IgVlBOcyBzdGFydCB3aXRoIGEgY29tbW9uIGxvY2F0b3Igd2hpY2ggaXMgZmMwMDo6LzE2LgomIzQzOwkjIFJvdXRlcyBmb3IgaGFuZGxpbmcgdGhlIFNSdjYgRW5kLkRUKiBiZWhhdmlvciBpbnN0YW5jZXMgYXJlIGdyb3VwZWQKJiM0MzsJIyB0b2dldGhlciBpbiB0aGUgJiMzOTtsb2NhbHNpZCYjMzk7IHRhYmxlLgomIzQzOwkjCiYjNDM7CSMgTk9URTogYWRkZWQgb25seSBvbmNlCiYjNDM7CWlmICEgaXAgLW5ldG5zICYjMzQ7JHtydGRzdF9uYW1lfSYjMzQ7IC02IHJ1bGUgc2hvdyB8IFwKJiM0MzsJICAgIGdyZXAgLXEgJiMzNDt0byAke1ZQTl9MT0NBVE9SX1NFUlZJQ0V9OjovMTYgbG9va3VwICR7TE9DQUxTSURfVEFCTEVfSUR9JiMzNDs7IHRoZW4KJiM0MzsJCWlwIC1uZXRucyAmIzM0OyR7cnRkc3RfbmFtZX0mIzM0OyAtNiBydWxlIGFkZCBcCiYjNDM7CQkJdG8gJiMzNDske1ZQTl9MT0NBVE9SX1NFUlZJQ0V9OjovMTYmIzM0OyBcCiYjNDM7CQkJbG9va3VwICYjMzQ7JHtMT0NBTFNJRF9UQUJMRV9JRH0mIzM0OyBwcmlvIDk5OQomIzQzOwlmaQomIzQzO30KJiM0MzsKJiM0MzsjIENvbmZpZ3VyZSBydHNyYyB0byByZWFjaCBydGRzdCYjMzk7cyBsb29wYmFjayBhZGRyZXNzIHRocm91Z2ggdGhlIFZQTi4KJiM0MzsjIGFyZ3M6CiYjNDM7IyAgJDEgLSByb3V0ZXIgaWQgd2hlcmUgdGhlIGVuY2FwIHJvdXRlIGlzIGluc3RhbGxlZAomIzQzOyMgICQyIC0gcm91dGVyIGlkIHdob3NlIGxvb3BiYWNrIGlzIHRoZSBkZXN0aW5hdGlvbgomIzQzOyMgICQzIC0gdGVuYW50IGlkCiYjNDM7c2V0dXBfdnBuX2d3X2VuY2FwKCkKJiM0Mzt7CiYjNDM7CWxvY2FsIHJ0c3JjPSYjMzQ7JDEmIzM0OwomIzQzOwlsb2NhbCBydGRzdD0mIzM0OyQyJiMzNDsKJiM0MzsJbG9jYWwgdGlkPSYjMzQ7JDMmIzM0OwomIzQzOwlsb2NhbCBzaWQKJiM0MzsKJiM0MzsJc2lkPSYjMzQ7JChidWlsZF92cG5fc2lkICYjMzQ7JHtydHNyY30mIzM0OyAmIzM0OyR7cnRkc3R9JiMzNDsgJiMzNDske3RpZH0mIzM0OykmIzM0OwomIzQzOwomIzQzOwlzZXRfZ3dfZW5jYXBfcm91dGUgJiMzNDske3J0c3JjfSYjMzQ7ICYjMzQ7JHtydGRzdH0mIzM0OyAmIzM0OyR7c2lkfSYjMzQ7ICYjMzQ7JHt0aWR9JiMzNDsKJiM0Mzt9CiYjNDM7CiYjNDM7c2V0dXAoKQomIzQzO3sKJiM0MzsJaXAgbGluayBhZGQgdmV0aC1ydC0xIHR5cGUgdmV0aCBwZWVyIG5hbWUgdmV0aC1ydC0yCiYjNDM7CXNldHVwX25zIHJ0XzEgcnRfMgomIzQzOwlzZXR1cF9ydF9uZXR3b3JraW5nIDEKJiM0MzsJc2V0dXBfcnRfbmV0d29ya2luZyAyCiYjNDM7CiYjNDM7CSMgc2V0dXAgdHdvIGhvc3RzIGZvciB0aGUgdGVuYW50IDEwMC4KJiM0MzsJIyAgLSBob3N0IGhzLXQxMDAtMSBpcyBkaXJlY3RseSBjb25uZWN0ZWQgdG8gdGhlIHJvdXRlciBydC0xOwomIzQzOwkjICAtIGhvc3QgaHMtdDEwMC0yIGlzIGRpcmVjdGx5IGNvbm5lY3RlZCB0byB0aGUgcm91dGVyIHJ0LTIuCiYjNDM7CXNldHVwX25zIGhzX3QxMDBfMSBoc190MTAwXzIKJiM0MzsJc2V0dXBfaHMgMSAxIDEwMAomIzQzOwlzZXR1cF9ocyAyIDIgMTAwCiYjNDM7CiYjNDM7CSMgc2V0dXAgdHdvIGhvc3RzIGZvciB0aGUgdGVuYW50IDIwMC4KJiM0MzsJIyAgLSBob3N0IGhzLXQyMDAtMyBpcyBkaXJlY3RseSBjb25uZWN0ZWQgdG8gdGhlIHJvdXRlciBydC0xOwomIzQzOwkjICAtIGhvc3QgaHMtdDIwMC00IGlzIGRpcmVjdGx5IGNvbm5lY3RlZCB0byB0aGUgcm91dGVyIHJ0LTIuCiYjNDM7CXNldHVwX25zIGhzX3QyMDBfMyBoc190MjAwXzQKJiM0MzsJc2V0dXBfaHMgMyAxIDIwMAomIzQzOwlzZXR1cF9ocyA0IDIgMjAwCiYjNDM7CiYjNDM7CSMgY29uZmlndXJlIGVhY2ggcm91dGVyIGZvciBlYWNoIHRlbmFudDogVlJGLCBibGFja2hvbGUgcm91dGVzLAomIzQzOwkjIHJvdXRlciBsb29wYmFjayBpbnRlcmZhY2UKJiM0MzsJc2V0dXBfcnQgMSAxMDAKJiM0MzsJc2V0dXBfcnQgMiAxMDAKJiM0MzsJc2V0dXBfcnQgMSAyMDAKJiM0MzsJc2V0dXBfcnQgMiAyMDAKJiM0MzsKJiM0MzsJIyBzZXR1cCB0aGUgTDMgVlBOIHdoaWNoIGNvbm5lY3RzIHRoZSBob3N0IGhzLXQxMDAtMSBhbmQgaG9zdCBocy10MTAwLTIKJiM0MzsJIyB3aXRoaW4gdGhlIHNhbWUgdGVuYW50IDEwMC4KJiM0MzsJc2V0dXBfdnBuX2NvbmZpZyAxIDIgMiAxMDAKJiM0MzsJc2V0dXBfdnBuX2NvbmZpZyAyIDEgMSAxMDAKJiM0MzsKJiM0MzsJIyBzZXR1cCB0aGUgTDMgVlBOIHdoaWNoIGNvbm5lY3RzIHRoZSBob3N0IGhzLXQyMDAtMyBhbmQgaG9zdCBocy10MjAwLTQKJiM0MzsJIyB3aXRoaW4gdGhlIHNhbWUgdGVuYW50IDIwMC4KJiM0MzsJc2V0dXBfdnBuX2NvbmZpZyAxIDQgMiAyMDAKJiM0MzsJc2V0dXBfdnBuX2NvbmZpZyAyIDMgMSAyMDAKJiM0MzsKJiM0MzsJIyBhbGxvdyBlYWNoIHJvdXRlciB0byByZWFjaCB0aGUgb3RoZXImIzM5O3MgbG9vcGJhY2sgdGhyb3VnaCB0aGUgVlBOCiYjNDM7CXNldHVwX3Zwbl9nd19lbmNhcCAyIDEgMTAwCiYjNDM7CXNldHVwX3Zwbl9nd19lbmNhcCAxIDIgMTAwCiYjNDM7CXNldHVwX3Zwbl9nd19lbmNhcCAyIDEgMjAwCiYjNDM7CXNldHVwX3Zwbl9nd19lbmNhcCAxIDIgMjAwCiYjNDM7CiYjNDM7CSMgdGVzdGluZyBlbnZpcm9ubWVudCB3YXMgc2V0IHVwIHN1Y2Nlc3NmdWxseQomIzQzOwlTRVRVUF9FUlI9MAomIzQzO30KJiM0MzsKJiM0MztjaGVja19ydF9jb25uZWN0aXZpdHkoKQomIzQzO3sKJiM0MzsJbG9jYWwgcnRzcmM9JiMzNDskMSYjMzQ7CiYjNDM7CWxvY2FsIHJ0ZHN0PSYjMzQ7JDImIzM0OwomIzQzOwlsb2NhbCBuc25hbWUKJiM0MzsKJiM0MzsJbnNuYW1lPSYjMzQ7JChnZXRfcnRfbnNuYW1lICYjMzQ7JHtydHNyY30mIzM0OykmIzM0OwomIzQzOwomIzQzOwlpcCBuZXRucyBleGVjICYjMzQ7JHtuc25hbWV9JiMzNDsgcGluZyAtYyAxIC1XIDEgJiMzNDske0lQdjZfUlRfTkVUV09SS306OiR7cnRkc3R9JiMzNDsgXAomIzQzOwkJJmd0Oy9kZXYvbnVsbCAyJmd0OyZhbXA7MQomIzQzO30KJiM0MzsKJiM0MztjaGVja19hbmRfbG9nX3J0X2Nvbm5lY3Rpdml0eSgpCiYjNDM7ewomIzQzOwlsb2NhbCBydHNyYz0mIzM0OyQxJiMzNDsKJiM0MzsJbG9jYWwgcnRkc3Q9JiMzNDskMiYjMzQ7CiYjNDM7CiYjNDM7CWNoZWNrX3J0X2Nvbm5lY3Rpdml0eSAmIzM0OyR7cnRzcmN9JiMzNDsgJiMzNDske3J0ZHN0fSYjMzQ7CiYjNDM7CWxvZ190ZXN0ICQ/IDAgJiMzNDtSb3V0ZXJzIGNvbm5lY3Rpdml0eTogcnQtJHtydHNyY30gLSZndDsgcnQtJHtydGRzdH0mIzM0OwomIzQzO30KJiM0MzsKJiM0MztjaGVja19oc19pcHY2X2Nvbm5lY3Rpdml0eSgpCiYjNDM7ewomIzQzOwlsb2NhbCBoc3NyYz0mIzM0OyQxJiMzNDsKJiM0MzsJbG9jYWwgaHNkc3Q9JiMzNDskMiYjMzQ7CiYjNDM7CWxvY2FsIHRpZD0mIzM0OyQzJiMzNDsKJiM0MzsJbG9jYWwgbnNuYW1lCiYjNDM7CiYjNDM7CW5zbmFtZT0mIzM0OyQoZ2V0X2hzX25zbmFtZSAmIzM0OyR7dGlkfSYjMzQ7ICYjMzQ7JHtoc3NyY30mIzM0OykmIzM0OwomIzQzOwomIzQzOwlpcCBuZXRucyBleGVjICYjMzQ7JHtuc25hbWV9JiMzNDsgcGluZyAtYyAxIC1XICYjMzQ7JHtQSU5HX1RJTUVPVVRfU0VDfSYjMzQ7IFwKJiM0MzsJCSYjMzQ7JHtJUHY2X0hTX05FVFdPUkt9Ojoke2hzZHN0fSYjMzQ7ICZndDsvZGV2L251bGwgMiZndDsmYW1wOzEKJiM0Mzt9CiYjNDM7CiYjNDM7Y2hlY2tfaHNfaXB2NF9jb25uZWN0aXZpdHkoKQomIzQzO3sKJiM0MzsJbG9jYWwgaHNzcmM9JiMzNDskMSYjMzQ7CiYjNDM7CWxvY2FsIGhzZHN0PSYjMzQ7JDImIzM0OwomIzQzOwlsb2NhbCB0aWQ9JiMzNDskMyYjMzQ7CiYjNDM7CWxvY2FsIG5zbmFtZQomIzQzOwomIzQzOwluc25hbWU9JiMzNDskKGdldF9oc19uc25hbWUgJiMzNDske3RpZH0mIzM0OyAmIzM0OyR7aHNzcmN9JiMzNDspJiMzNDsKJiM0MzsKJiM0MzsJaXAgbmV0bnMgZXhlYyAmIzM0OyR7bnNuYW1lfSYjMzQ7IHBpbmcgLWMgMSAtVyAmIzM0OyR7UElOR19USU1FT1VUX1NFQ30mIzM0OyBcCiYjNDM7CQkmIzM0OyR7SVB2NF9IU19ORVRXT1JLfS4ke2hzZHN0fSYjMzQ7ICZndDsvZGV2L251bGwgMiZndDsmYW1wOzEKJiM0Mzt9CiYjNDM7CiYjNDM7Y2hlY2tfYW5kX2xvZ19oc19jb25uZWN0aXZpdHkoKQomIzQzO3sKJiM0MzsJbG9jYWwgaHNzcmM9JiMzNDskMSYjMzQ7CiYjNDM7CWxvY2FsIGhzZHN0PSYjMzQ7JDImIzM0OwomIzQzOwlsb2NhbCB0aWQ9JiMzNDskMyYjMzQ7CiYjNDM7CiYjNDM7CWNoZWNrX2hzX2lwdjZfY29ubmVjdGl2aXR5ICYjMzQ7JHtoc3NyY30mIzM0OyAmIzM0OyR7aHNkc3R9JiMzNDsgJiMzNDske3RpZH0mIzM0OwomIzQzOwlsb2dfdGVzdCAkPyAwICYjMzQ7SVB2NiBjb25uZWN0aXZpdHk6IGhzLXQke3RpZH0tJHtoc3NyY30gLSZndDsgaHMtdCR7dGlkfS0ke2hzZHN0fSAodGVuYW50ICR7dGlkfSkmIzM0OwomIzQzOwomIzQzOwljaGVja19oc19pcHY0X2Nvbm5lY3Rpdml0eSAmIzM0OyR7aHNzcmN9JiMzNDsgJiMzNDske2hzZHN0fSYjMzQ7ICYjMzQ7JHt0aWR9JiMzNDsKJiM0MzsJbG9nX3Rlc3QgJD8gMCAmIzM0O0lQdjQgY29ubmVjdGl2aXR5OiBocy10JHt0aWR9LSR7aHNzcmN9IC0mZ3Q7IGhzLXQke3RpZH0tJHtoc2RzdH0gKHRlbmFudCAke3RpZH0pJiMzNDsKJiM0Mzt9CiYjNDM7CiYjNDM7Y2hlY2tfYW5kX2xvZ19oc19pc29sYXRpb24oKQomIzQzO3sKJiM0MzsJbG9jYWwgaHNzcmM9JiMzNDskMSYjMzQ7CiYjNDM7CWxvY2FsIHRpZHNyYz0mIzM0OyQyJiMzNDsKJiM0MzsJbG9jYWwgaHNkc3Q9JiMzNDskMyYjMzQ7CiYjNDM7CWxvY2FsIHRpZGRzdD0mIzM0OyQ0JiMzNDsKJiM0MzsKJiM0MzsJY2hlY2tfaHNfaXB2Nl9jb25uZWN0aXZpdHkgJiMzNDske2hzc3JjfSYjMzQ7ICYjMzQ7JHtoc2RzdH0mIzM0OyAmIzM0OyR7dGlkc3JjfSYjMzQ7CiYjNDM7CWxvZ190ZXN0ICQ/IDEgJiMzNDtJUHY2IGlzb2xhdGlvbjogaHMtdCR7dGlkc3JjfS0ke2hzc3JjfSAtWC0mZ3Q7IGhzLXQke3RpZGRzdH0tJHtoc2RzdH0mIzM0OwomIzQzOwomIzQzOwljaGVja19oc19pcHY0X2Nvbm5lY3Rpdml0eSAmIzM0OyR7aHNzcmN9JiMzNDsgJiMzNDske2hzZHN0fSYjMzQ7ICYjMzQ7JHt0aWRzcmN9JiMzNDsKJiM0MzsJbG9nX3Rlc3QgJD8gMSAmIzM0O0lQdjQgaXNvbGF0aW9uOiBocy10JHt0aWRzcmN9LSR7aHNzcmN9IC1YLSZndDsgaHMtdCR7dGlkZHN0fS0ke2hzZHN0fSYjMzQ7CiYjNDM7fQomIzQzOwomIzQzO2NoZWNrX2FuZF9sb2dfaHMyZ3dfY29ubmVjdGl2aXR5KCkKJiM0Mzt7CiYjNDM7CWxvY2FsIGhzc3JjPSYjMzQ7JDEmIzM0OwomIzQzOwlsb2NhbCB0aWQ9JiMzNDskMiYjMzQ7CiYjNDM7CiYjNDM7CWNoZWNrX2hzX2lwdjZfY29ubmVjdGl2aXR5ICYjMzQ7JHtoc3NyY30mIzM0OyAyNTQgJiMzNDske3RpZH0mIzM0OwomIzQzOwlsb2dfdGVzdCAkPyAwICYjMzQ7SVB2NiBjb25uZWN0aXZpdHk6IGhzLXQke3RpZH0tJHtoc3NyY30gLSZndDsgZ3cgKHRlbmFudCAke3RpZH0pJiMzNDsKJiM0MzsKJiM0MzsJY2hlY2tfaHNfaXB2NF9jb25uZWN0aXZpdHkgJiMzNDske2hzc3JjfSYjMzQ7IDI1NCAmIzM0OyR7dGlkfSYjMzQ7CiYjNDM7CWxvZ190ZXN0ICQ/IDAgJiMzNDtJUHY0IGNvbm5lY3Rpdml0eTogaHMtdCR7dGlkfS0ke2hzc3JjfSAtJmd0OyBndyAodGVuYW50ICR7dGlkfSkmIzM0OwomIzQzO30KJiM0MzsKJiM0Mztyb3V0ZXJfdGVzdHMoKQomIzQzO3sKJiM0MzsJbG9nX3NlY3Rpb24gJiMzNDtJUHY2IHJvdXRlcnMgY29ubmVjdGl2aXR5IHRlc3QmIzM0OwomIzQzOwomIzQzOwljaGVja19hbmRfbG9nX3J0X2Nvbm5lY3Rpdml0eSAxIDIKJiM0MzsJY2hlY2tfYW5kX2xvZ19ydF9jb25uZWN0aXZpdHkgMiAxCiYjNDM7fQomIzQzOwomIzQzO2hvc3QyZ2F0ZXdheV90ZXN0cygpCiYjNDM7ewomIzQzOwlsb2dfc2VjdGlvbiAmIzM0O0Nvbm5lY3Rpdml0eSB0ZXN0IGFtb25nIGhvc3RzIGFuZCBnYXRld2F5JiMzNDsKJiM0MzsKJiM0MzsJY2hlY2tfYW5kX2xvZ19oczJnd19jb25uZWN0aXZpdHkgMSAxMDAKJiM0MzsJY2hlY2tfYW5kX2xvZ19oczJnd19jb25uZWN0aXZpdHkgMiAxMDAKJiM0MzsKJiM0MzsJY2hlY2tfYW5kX2xvZ19oczJnd19jb25uZWN0aXZpdHkgMyAyMDAKJiM0MzsJY2hlY2tfYW5kX2xvZ19oczJnd19jb25uZWN0aXZpdHkgNCAyMDAKJiM0Mzt9CiYjNDM7CiYjNDM7aG9zdF92cG5fdGVzdHMoKQomIzQzO3sKJiM0MzsJbG9nX3NlY3Rpb24gJiMzNDtTUnY2IFZQTiBjb25uZWN0aXZpdHkgdGVzdCBhbW9uZyBob3N0cyBpbiB0aGUgc2FtZSB0ZW5hbnQmIzM0OwomIzQzOwomIzQzOwljaGVja19hbmRfbG9nX2hzX2Nvbm5lY3Rpdml0eSAxIDIgMTAwCiYjNDM7CWNoZWNrX2FuZF9sb2dfaHNfY29ubmVjdGl2aXR5IDIgMSAxMDAKJiM0MzsKJiM0MzsJY2hlY2tfYW5kX2xvZ19oc19jb25uZWN0aXZpdHkgMyA0IDIwMAomIzQzOwljaGVja19hbmRfbG9nX2hzX2Nvbm5lY3Rpdml0eSA0IDMgMjAwCiYjNDM7fQomIzQzOwomIzQzO2hvc3RfdnBuX2lzb2xhdGlvbl90ZXN0cygpCiYjNDM7ewomIzQzOwlsb2NhbCBsMT0mIzM0OzEgMiYjMzQ7CiYjNDM7CWxvY2FsIGwyPSYjMzQ7MyA0JiMzNDsKJiM0MzsJbG9jYWwgdDE9MTAwCiYjNDM7CWxvY2FsIHQyPTIwMAomIzQzOwlsb2NhbCBpCiYjNDM7CWxvY2FsIGoKJiM0MzsJbG9jYWwgdG1wCiYjNDM7CiYjNDM7CWxvZ19zZWN0aW9uICYjMzQ7U1J2NiBWUE4gaXNvbGF0aW9uIHRlc3QgYW1vbmcgaG9zdHMgaW4gZGlmZmVyZW50IHRlbmFudHMmIzM0OwomIzQzOwomIzQzOwlmb3IgXyBpbiAwIDE7IGRvCiYjNDM7CQlmb3IgaSBpbiAke2wxfTsgZG8KJiM0MzsJCQlmb3IgaiBpbiAke2wyfTsgZG8KJiM0MzsJCQkJY2hlY2tfYW5kX2xvZ19oc19pc29sYXRpb24gJiMzNDske2l9JiMzNDsgJiMzNDske3QxfSYjMzQ7ICYjMzQ7JHtqfSYjMzQ7ICYjMzQ7JHt0Mn0mIzM0OwomIzQzOwkJCWRvbmUKJiM0MzsJCWRvbmUKJiM0MzsKJiM0MzsJCSMgbGV0IHVzIHRlc3QgdGhlIHJldmVyc2UgcGF0aAomIzQzOwkJdG1wPSYjMzQ7JHtsMX0mIzM0OzsgbDE9JiMzNDske2wyfSYjMzQ7OyBsMj0mIzM0OyR7dG1wfSYjMzQ7CiYjNDM7CQl0bXA9JHt0MX07IHQxPSR7dDJ9OyB0Mj0ke3RtcH0KJiM0MzsJZG9uZQomIzQzO30KJiM0MzsKJiM0MztfX3Rlc3Rfbm9sb29rdXAoKQomIzQzO3sKJiM0MzsJbG9jYWwgaHNzcmM9JiMzNDskMSYjMzQ7CiYjNDM7CWxvY2FsIGhzZHN0PSYjMzQ7JDImIzM0OwomIzQzOwlsb2NhbCBydHNyYz0mIzM0OyQzJiMzNDsKJiM0MzsJbG9jYWwgcnRkc3Q9JiMzNDskNCYjMzQ7CiYjNDM7CWxvY2FsIHRpZD0mIzM0OyQ1JiMzNDsKJiM0MzsJbG9jYWwgdnBuX3NpZAomIzQzOwomIzQzOwl2cG5fc2lkPSYjMzQ7JChidWlsZF92cG5fc2lkICYjMzQ7JHtydHNyY30mIzM0OyAmIzM0OyR7cnRkc3R9JiMzNDsgJiMzNDske3RpZH0mIzM0OykmIzM0OwomIzQzOwomIzQzOwkjIHJlcGxhY2UgZW5jYXAgcm91dGUocykgd2l0aG91dCAmIzM0O2xvb2t1cCYjMzQ7IGF0dHJpYnV0ZQomIzQzOwlzZXRfaG9zdF9lbmNhcF9yb3V0ZV9ub2xvb2t1cCAmIzM0OyR7cnRzcmN9JiMzNDsgJiMzNDske2hzZHN0fSYjMzQ7ICYjMzQ7JHt2cG5fc2lkfSYjMzQ7ICYjMzQ7JHt0aWR9JiMzNDsKJiM0MzsKJiM0MzsJY2hlY2tfaHNfaXB2Nl9jb25uZWN0aXZpdHkgJiMzNDske2hzc3JjfSYjMzQ7ICYjMzQ7JHtoc2RzdH0mIzM0OyAmIzM0OyR7dGlkfSYjMzQ7CiYjNDM7CWxvZ190ZXN0ICQ/IDEgJiMzNDtJUHY2IHcvbyBsb29rdXA6IGhzLXQke3RpZH0tJHtoc3NyY30gLVgtJmd0OyBocy10JHt0aWR9LSR7aHNkc3R9ICh0ZW5hbnQgJHt0aWR9KSYjMzQ7CiYjNDM7CiYjNDM7CWNoZWNrX2hzX2lwdjRfY29ubmVjdGl2aXR5ICYjMzQ7JHtoc3NyY30mIzM0OyAmIzM0OyR7aHNkc3R9JiMzNDsgJiMzNDske3RpZH0mIzM0OwomIzQzOwlsb2dfdGVzdCAkPyAxICYjMzQ7SVB2NCB3L28gbG9va3VwOiBocy10JHt0aWR9LSR7aHNzcmN9IC1YLSZndDsgaHMtdCR7dGlkfS0ke2hzZHN0fSAodGVuYW50ICR7dGlkfSkmIzM0OwomIzQzOwomIzQzOwkjIHJlc3RvcmUgZW5jYXAgcm91dGUocykgd2l0aCAmIzM0O2xvb2t1cCYjMzQ7IGZvciBzdWJzZXF1ZW50IHRlc3RzCiYjNDM7CXNldF9ob3N0X2VuY2FwX3JvdXRlICYjMzQ7JHtydHNyY30mIzM0OyAmIzM0OyR7aHNkc3R9JiMzNDsgJiMzNDske3Zwbl9zaWR9JiMzNDsgJiMzNDske3RpZH0mIzM0OwomIzQzO30KJiM0MzsKJiM0Mztob3N0X3Zwbl9ub2xvb2t1cF90ZXN0cygpCiYjNDM7ewomIzQzOwlsb2dfc2VjdGlvbiAmIzM0O1NSdjYgVlBOIGNvbm5lY3Rpdml0eSB0ZXN0IGFtb25nIGhvc3RzIHcvbyBsb29rdXAmIzM0OwomIzQzOwomIzQzOwlfX3Rlc3Rfbm9sb29rdXAgMSAyIDEgMiAxMDAKJiM0MzsJX190ZXN0X25vbG9va3VwIDIgMSAyIDEgMTAwCiYjNDM7CiYjNDM7CV9fdGVzdF9ub2xvb2t1cCAzIDQgMSAyIDIwMAomIzQzOwlfX3Rlc3Rfbm9sb29rdXAgNCAzIDIgMSAyMDAKJiM0Mzt9CiYjNDM7CiYjNDM7Y2hlY2tfZ3dfaXB2Nl9jb25uZWN0aXZpdHkoKQomIzQzO3sKJiM0MzsJbG9jYWwgcnRzcmM9JiMzNDskMSYjMzQ7CiYjNDM7CWxvY2FsIHJ0ZHN0PSYjMzQ7JDImIzM0OwomIzQzOwlsb2NhbCB0aWRzcmM9JiMzNDskMyYjMzQ7CiYjNDM7CWxvY2FsIHRpZGRzdD0mIzM0OyQ0JiMzNDsKJiM0MzsJbG9jYWwgcnRuYW1lCiYjNDM7CWxvY2FsIHNyY192NgomIzQzOwlsb2NhbCBkc3RfdjYKJiM0MzsKJiM0MzsJcnRuYW1lPSYjMzQ7JChnZXRfcnRfbnNuYW1lICYjMzQ7JHtydHNyY30mIzM0OykmIzM0OwomIzQzOwlzcmNfdjY9JiMzNDske0lQdjZfSFNfTkVUV09SS306OiQoZ2V0X3Jsb19ob3N0aWQgJiMzNDske3J0c3JjfSYjMzQ7ICYjMzQ7JHt0aWRzcmN9JiMzNDspJiMzNDsKJiM0MzsJZHN0X3Y2PSYjMzQ7JHtJUHY2X0hTX05FVFdPUkt9OjokKGdldF9ybG9faG9zdGlkICYjMzQ7JHtydGRzdH0mIzM0OyAmIzM0OyR7dGlkZHN0fSYjMzQ7KSYjMzQ7CiYjNDM7CiYjNDM7CWlwIG5ldG5zIGV4ZWMgJiMzNDske3J0bmFtZX0mIzM0OyBpcCB2cmYgZXhlYyAmIzM0O3ZyZi0ke3RpZHNyY30mIzM0OyBcCiYjNDM7CQlwaW5nIC1jIDEgLVcgJiMzNDske1BJTkdfVElNRU9VVF9TRUN9JiMzNDsgXAomIzQzOwkJLUkgJiMzNDske3NyY192Nn0mIzM0OyAmIzM0OyR7ZHN0X3Y2fSYjMzQ7ICZndDsvZGV2L251bGwgMiZndDsmYW1wOzEKJiM0Mzt9CiYjNDM7CiYjNDM7Y2hlY2tfZ3dfaXB2NF9jb25uZWN0aXZpdHkoKQomIzQzO3sKJiM0MzsJbG9jYWwgcnRzcmM9JiMzNDskMSYjMzQ7CiYjNDM7CWxvY2FsIHJ0ZHN0PSYjMzQ7JDImIzM0OwomIzQzOwlsb2NhbCB0aWRzcmM9JiMzNDskMyYjMzQ7CiYjNDM7CWxvY2FsIHRpZGRzdD0mIzM0OyQ0JiMzNDsKJiM0MzsJbG9jYWwgcnRuYW1lCiYjNDM7CWxvY2FsIHNyY192NAomIzQzOwlsb2NhbCBkc3RfdjQKJiM0MzsKJiM0MzsJcnRuYW1lPSYjMzQ7JChnZXRfcnRfbnNuYW1lICYjMzQ7JHtydHNyY30mIzM0OykmIzM0OwomIzQzOwlzcmNfdjQ9JiMzNDske0lQdjRfSFNfTkVUV09SS30uJChnZXRfcmxvX2hvc3RpZCAmIzM0OyR7cnRzcmN9JiMzNDsgJiMzNDske3RpZHNyY30mIzM0OykmIzM0OwomIzQzOwlkc3RfdjQ9JiMzNDske0lQdjRfSFNfTkVUV09SS30uJChnZXRfcmxvX2hvc3RpZCAmIzM0OyR7cnRkc3R9JiMzNDsgJiMzNDske3RpZGRzdH0mIzM0OykmIzM0OwomIzQzOwomIzQzOwlpcCBuZXRucyBleGVjICYjMzQ7JHtydG5hbWV9JiMzNDsgaXAgdnJmIGV4ZWMgJiMzNDt2cmYtJHt0aWRzcmN9JiMzNDsgXAomIzQzOwkJcGluZyAtYyAxIC1XICYjMzQ7JHtQSU5HX1RJTUVPVVRfU0VDfSYjMzQ7IFwKJiM0MzsJCS1JICYjMzQ7JHtzcmNfdjR9JiMzNDsgJiMzNDske2RzdF92NH0mIzM0OyAmZ3Q7L2Rldi9udWxsIDImZ3Q7JmFtcDsxCiYjNDM7fQomIzQzOwomIzQzO2NoZWNrX2FuZF9sb2dfZ3dfY29ubmVjdGl2aXR5KCkKJiM0Mzt7CiYjNDM7CWxvY2FsIHJ0c3JjPSYjMzQ7JDEmIzM0OwomIzQzOwlsb2NhbCBydGRzdD0mIzM0OyQyJiMzNDsKJiM0MzsJbG9jYWwgdGlkPSYjMzQ7JDMmIzM0OwomIzQzOwomIzQzOwljaGVja19nd19pcHY2X2Nvbm5lY3Rpdml0eSAmIzM0OyR7cnRzcmN9JiMzNDsgJiMzNDske3J0ZHN0fSYjMzQ7ICYjMzQ7JHt0aWR9JiMzNDsgJiMzNDske3RpZH0mIzM0OwomIzQzOwlsb2dfdGVzdCAkPyAwICYjMzQ7SVB2NiBjb25uZWN0aXZpdHk6IHJ0LSR7cnRzcmN9IC0mZ3Q7IHJ0LSR7cnRkc3R9ICh0ZW5hbnQgJHt0aWR9KSYjMzQ7CiYjNDM7CiYjNDM7CWNoZWNrX2d3X2lwdjRfY29ubmVjdGl2aXR5ICYjMzQ7JHtydHNyY30mIzM0OyAmIzM0OyR7cnRkc3R9JiMzNDsgJiMzNDske3RpZH0mIzM0OyAmIzM0OyR7dGlkfSYjMzQ7CiYjNDM7CWxvZ190ZXN0ICQ/IDAgJiMzNDtJUHY0IGNvbm5lY3Rpdml0eTogcnQtJHtydHNyY30gLSZndDsgcnQtJHtydGRzdH0gKHRlbmFudCAke3RpZH0pJiMzNDsKJiM0Mzt9CiYjNDM7CiYjNDM7Y2hlY2tfYW5kX2xvZ19nd19pc29sYXRpb24oKQomIzQzO3sKJiM0MzsJbG9jYWwgcnRzcmM9JiMzNDskMSYjMzQ7CiYjNDM7CWxvY2FsIHJ0ZHN0PSYjMzQ7JDImIzM0OwomIzQzOwlsb2NhbCB0aWRzcmM9JiMzNDskMyYjMzQ7CiYjNDM7CWxvY2FsIHRpZGRzdD0mIzM0OyQ0JiMzNDsKJiM0MzsKJiM0MzsJY2hlY2tfZ3dfaXB2Nl9jb25uZWN0aXZpdHkgJiMzNDske3J0c3JjfSYjMzQ7ICYjMzQ7JHtydGRzdH0mIzM0OyAmIzM0OyR7dGlkc3JjfSYjMzQ7ICYjMzQ7JHt0aWRkc3R9JiMzNDsKJiM0MzsJbG9nX3Rlc3QgJD8gMSAmIzM0O0lQdjYgaXNvbGF0aW9uOiBydC0ke3J0c3JjfSAtWC0mZ3Q7IHJ0LSR7cnRkc3R9ICh0ZW5hbnRzICR7dGlkc3JjfS8ke3RpZGRzdH0pJiMzNDsKJiM0MzsKJiM0MzsJY2hlY2tfZ3dfaXB2NF9jb25uZWN0aXZpdHkgJiMzNDske3J0c3JjfSYjMzQ7ICYjMzQ7JHtydGRzdH0mIzM0OyAmIzM0OyR7dGlkc3JjfSYjMzQ7ICYjMzQ7JHt0aWRkc3R9JiMzNDsKJiM0MzsJbG9nX3Rlc3QgJD8gMSAmIzM0O0lQdjQgaXNvbGF0aW9uOiBydC0ke3J0c3JjfSAtWC0mZ3Q7IHJ0LSR7cnRkc3R9ICh0ZW5hbnRzICR7dGlkc3JjfS8ke3RpZGRzdH0pJiMzNDsKJiM0Mzt9CiYjNDM7CiYjNDM7Z3dfdnBuX2lzb2xhdGlvbl90ZXN0cygpCiYjNDM7ewomIzQzOwlsb2dfc2VjdGlvbiAmIzM0O1NSdjYgVlBOIGlzb2xhdGlvbiB0ZXN0IGFtb25nIHJvdXRlcnMgaW4gZGlmZmVyZW50IHRlbmFudHMmIzM0OwomIzQzOwomIzQzOwljaGVja19hbmRfbG9nX2d3X2lzb2xhdGlvbiAxIDIgMTAwIDIwMAomIzQzOwljaGVja19hbmRfbG9nX2d3X2lzb2xhdGlvbiAyIDEgMTAwIDIwMAomIzQzOwomIzQzOwljaGVja19hbmRfbG9nX2d3X2lzb2xhdGlvbiAxIDIgMjAwIDEwMAomIzQzOwljaGVja19hbmRfbG9nX2d3X2lzb2xhdGlvbiAyIDEgMjAwIDEwMAomIzQzO30KJiM0MzsKJiM0Mztnd192cG5fdGVzdHMoKQomIzQzO3sKJiM0MzsJbG9nX3NlY3Rpb24gJiMzNDtTUnY2IFZQTiBjb25uZWN0aXZpdHkgdGVzdCBhbW9uZyByb3V0ZXJzIGluIHRoZSBzYW1lIHRlbmFudCYjMzQ7CiYjNDM7CiYjNDM7CWNoZWNrX2FuZF9sb2dfZ3dfY29ubmVjdGl2aXR5IDEgMiAxMDAKJiM0MzsJY2hlY2tfYW5kX2xvZ19nd19jb25uZWN0aXZpdHkgMiAxIDEwMAomIzQzOwomIzQzOwljaGVja19hbmRfbG9nX2d3X2Nvbm5lY3Rpdml0eSAxIDIgMjAwCiYjNDM7CWNoZWNrX2FuZF9sb2dfZ3dfY29ubmVjdGl2aXR5IDIgMSAyMDAKJiM0Mzt9CiYjNDM7CiYjNDM7X190ZXN0X2d3X25vbG9va3VwKCkKJiM0Mzt7CiYjNDM7CWxvY2FsIHJ0c3JjPSYjMzQ7JDEmIzM0OwomIzQzOwlsb2NhbCBydGRzdD0mIzM0OyQyJiMzNDsKJiM0MzsJbG9jYWwgdGlkPSYjMzQ7JDMmIzM0OwomIzQzOwlsb2NhbCBzaWQKJiM0MzsKJiM0MzsJc2lkPSYjMzQ7JChidWlsZF92cG5fc2lkICYjMzQ7JHtydHNyY30mIzM0OyAmIzM0OyR7cnRkc3R9JiMzNDsgJiMzNDske3RpZH0mIzM0OykmIzM0OwomIzQzOwomIzQzOwkjIHJlcGxhY2UgZ3cgZW5jYXAgcm91dGUgd2l0aG91dCAmIzM0O2xvb2t1cCYjMzQ7IGF0dHJpYnV0ZQomIzQzOwlzZXRfZ3dfZW5jYXBfcm91dGVfbm9sb29rdXAgJiMzNDske3J0c3JjfSYjMzQ7ICYjMzQ7JHtydGRzdH0mIzM0OyAmIzM0OyR7c2lkfSYjMzQ7ICYjMzQ7JHt0aWR9JiMzNDsKJiM0MzsKJiM0MzsJY2hlY2tfZ3dfaXB2Nl9jb25uZWN0aXZpdHkgJiMzNDske3J0c3JjfSYjMzQ7ICYjMzQ7JHtydGRzdH0mIzM0OyAmIzM0OyR7dGlkfSYjMzQ7ICYjMzQ7JHt0aWR9JiMzNDsKJiM0MzsJbG9nX3Rlc3QgJD8gMSAmIzM0O0lQdjYgdy9vIGxvb2t1cDogcnQtJHtydHNyY30gLVgtJmd0OyBydC0ke3J0ZHN0fSAodGVuYW50ICR7dGlkfSkmIzM0OwomIzQzOwomIzQzOwljaGVja19nd19pcHY0X2Nvbm5lY3Rpdml0eSAmIzM0OyR7cnRzcmN9JiMzNDsgJiMzNDske3J0ZHN0fSYjMzQ7ICYjMzQ7JHt0aWR9JiMzNDsgJiMzNDske3RpZH0mIzM0OwomIzQzOwlsb2dfdGVzdCAkPyAxICYjMzQ7SVB2NCB3L28gbG9va3VwOiBydC0ke3J0c3JjfSAtWC0mZ3Q7IHJ0LSR7cnRkc3R9ICh0ZW5hbnQgJHt0aWR9KSYjMzQ7CiYjNDM7CiYjNDM7CSMgcmVzdG9yZSBndyBlbmNhcCByb3V0ZSB3aXRoICYjMzQ7bG9va3VwJiMzNDsgZm9yIHN1YnNlcXVlbnQgdGVzdHMKJiM0MzsJc2V0X2d3X2VuY2FwX3JvdXRlICYjMzQ7JHtydHNyY30mIzM0OyAmIzM0OyR7cnRkc3R9JiMzNDsgJiMzNDske3NpZH0mIzM0OyAmIzM0OyR7dGlkfSYjMzQ7CiYjNDM7fQomIzQzOwomIzQzO2d3X3Zwbl9ub2xvb2t1cF90ZXN0cygpCiYjNDM7ewomIzQzOwlsb2dfc2VjdGlvbiAmIzM0O1NSdjYgVlBOIGNvbm5lY3Rpdml0eSB0ZXN0IGFtb25nIHJvdXRlcnMgdy9vIGxvb2t1cCYjMzQ7CiYjNDM7CiYjNDM7CV9fdGVzdF9nd19ub2xvb2t1cCAxIDIgMTAwCiYjNDM7CV9fdGVzdF9nd19ub2xvb2t1cCAyIDEgMTAwCiYjNDM7CiYjNDM7CV9fdGVzdF9nd19ub2xvb2t1cCAxIDIgMjAwCiYjNDM7CV9fdGVzdF9nd19ub2xvb2t1cCAyIDEgMjAwCiYjNDM7fQomIzQzOwomIzQzO3Rlc3RfY29tbWFuZF9vcl9rc2Z0X3NraXAoKQomIzQzO3sKJiM0MzsJbG9jYWwgY21kPSYjMzQ7JDEmIzM0OwomIzQzOwomIzQzOwlpZiBbICEgLXggJiMzNDskKGNvbW1hbmQgLXYgJiMzNDske2NtZH0mIzM0OykmIzM0OyBdOyB0aGVuCiYjNDM7CQllY2hvICYjMzQ7U0tJUDogQ291bGQgbm90IHJ1biB0ZXN0IHdpdGhvdXQgXCYjMzQ7JHtjbWR9XCYjMzQ7IHRvb2wmIzM0OwomIzQzOwkJZXhpdCAmIzM0OyR7a3NmdF9za2lwfSYjMzQ7CiYjNDM7CWZpCiYjNDM7fQomIzQzOwomIzQzO3Rlc3RfdnJmX29yX2tzZnRfc2tpcCgpCiYjNDM7ewomIzQzOwltb2Rwcm9iZSB2cmYgJmFtcDsmZ3Q7L2Rldi9udWxsIHx8IHRydWUKJiM0MzsJaWYgWyAhIC1lIC9wcm9jL3N5cy9uZXQvdnJmL3N0cmljdF9tb2RlIF07IHRoZW4KJiM0MzsJCWVjaG8gJiMzNDtTS0lQOiB2cmYgc3lzY3RsIGRvZXMgbm90IGV4aXN0JiMzNDsKJiM0MzsJCWV4aXQgJiMzNDske2tzZnRfc2tpcH0mIzM0OwomIzQzOwlmaQomIzQzO30KJiM0MzsKJiM0Mzt0ZXN0X2R1bW15X2Rldl9vcl9rc2Z0X3NraXAoKQomIzQzO3sKJiM0MzsJbG9jYWwgdGVzdF9uZXRucwomIzQzOwomIzQzOwlzZXR1cF9ucyB0ZXN0X25ldG5zCiYjNDM7CiYjNDM7CW1vZHByb2JlIGR1bW15ICZhbXA7Jmd0Oy9kZXYvbnVsbCB8fCB0cnVlCiYjNDM7CWlmICEgaXAgLW5ldG5zICYjMzQ7JHt0ZXN0X25ldG5zfSYjMzQ7IGxpbmsgYWRkICYjMzQ7JHtEVU1NWV9ERVZOQU1FfSYjMzQ7IFwKJiM0MzsJCQl0eXBlIGR1bW15OyB0aGVuCiYjNDM7CQljbGVhbnVwX25zICYjMzQ7JHt0ZXN0X25ldG5zfSYjMzQ7CiYjNDM7CQllY2hvICYjMzQ7U0tJUDogZHVtbXkgZGV2IG5vdCBzdXBwb3J0ZWQmIzM0OwomIzQzOwkJZXhpdCAmIzM0OyR7a3NmdF9za2lwfSYjMzQ7CiYjNDM7CWZpCiYjNDM7CiYjNDM7CWNsZWFudXBfbnMgJiMzNDske3Rlc3RfbmV0bnN9JiMzNDsKJiM0Mzt9CiYjNDM7CiYjNDM7dGVzdF9lbmNhcF9sb29rdXBfc3VwcF9vcl9rc2Z0X3NraXAoKQomIzQzO3sKJiM0MzsJbG9jYWwgbnNuYW1lCiYjNDM7CiYjNDM7CXNldHVwX25zIG5zbmFtZQomIzQzOwomIzQzOwlpcCAtbmV0bnMgJiMzNDske25zbmFtZX0mIzM0OyBsaW5rIGFkZCAmIzM0OyR7RFVNTVlfREVWTkFNRX0mIzM0OyB0eXBlIGR1bW15CiYjNDM7CWlwIC1uZXRucyAmIzM0OyR7bnNuYW1lfSYjMzQ7IGxpbmsgc2V0ICYjMzQ7JHtEVU1NWV9ERVZOQU1FfSYjMzQ7IHVwCiYjNDM7CiYjNDM7CWlmICEgaXAgLW5ldG5zICYjMzQ7JHtuc25hbWV9JiMzNDsgLTYgcm91dGUgYWRkICYjMzQ7JHtJUHY2X1RFU1RTX0FERFJ9LzEyOCYjMzQ7IFwKJiM0MzsJCQllbmNhcCBzZWc2IG1vZGUgZW5jYXAgc2VncyBmYzAwOjoxIFwKJiM0MzsJCQlsb29rdXAgJiMzNDske1RFU1RTX1RBQkxFX0lEfSYjMzQ7IFwKJiM0MzsJCQlkZXYgJiMzNDske0RVTU1ZX0RFVk5BTUV9JiMzNDsgMiZndDsvZGV2L251bGw7IHRoZW4KJiM0MzsJCWNsZWFudXBfbnMgJiMzNDske25zbmFtZX0mIzM0OwomIzQzOwkJZWNobyAmIzM0O1NLSVA6IHNlZzYgZW5jYXAgbG9va3VwIGF0dHJpYnV0ZSBub3Qgc3VwcG9ydGVkJiMzNDsKJiM0MzsJCWV4aXQgJiMzNDske2tzZnRfc2tpcH0mIzM0OwomIzQzOwlmaQomIzQzOwomIzQzOwkjIEFuIG9sZCBrZXJuZWwgd2l0aCBhIHJlY2VudCBpcHJvdXRlMiBhY2NlcHRzIHRoZSByb3V0ZSBidXQKJiM0MzsJIyBzaWxlbnRseSBpZ25vcmVzIHRoZSBsb29rdXAgYXR0cmlidXRlLiBEdW1wIHRoZSByb3V0ZSBhbmQgY2hlY2sKJiM0MzsJIyB0aGUgYXR0cmlidXRlIGlzIHJlYWxseSB0aGVyZSwgb3RoZXJ3aXNlIHRoZSB0ZXN0IGZhbHNlbHkgcGFzc2VzLgomIzQzOwlpZiAhIGlwIC1uZXRucyAmIzM0OyR7bnNuYW1lfSYjMzQ7IC02IHJvdXRlIHNob3cgJiMzNDske0lQdjZfVEVTVFNfQUREUn0vMTI4JiMzNDsgfCBcCiYjNDM7CQkJZ3JlcCAtcSAmIzM0O2xvb2t1cCAke1RFU1RTX1RBQkxFX0lEfSYjMzQ7OyB0aGVuCiYjNDM7CQljbGVhbnVwX25zICYjMzQ7JHtuc25hbWV9JiMzNDsKJiM0MzsJCWVjaG8gJiMzNDtTS0lQOiBzZWc2IGVuY2FwIGxvb2t1cCBhdHRyaWJ1dGUgbm90IHN1cHBvcnRlZCYjMzQ7CiYjNDM7CQlleGl0ICYjMzQ7JHtrc2Z0X3NraXB9JiMzNDsKJiM0MzsJZmkKJiM0MzsKJiM0MzsJY2xlYW51cF9ucyAmIzM0OyR7bnNuYW1lfSYjMzQ7CiYjNDM7fQomIzQzOwomIzQzO2lmIFsgJiMzNDskKGlkIC11KSYjMzQ7IC1uZSAwIF07IHRoZW4KJiM0MzsJZWNobyAmIzM0O1NLSVA6IE5lZWQgcm9vdCBwcml2aWxlZ2VzJiMzNDsKJiM0MzsJZXhpdCAmIzM0OyR7a3NmdF9za2lwfSYjMzQ7CiYjNDM7ZmkKJiM0MzsKJiM0MzsjIHJlcXVpcmVkIHByb2dyYW1zIHRvIGNhcnJ5IG91dCB0aGlzIHNlbGZ0ZXN0CiYjNDM7dGVzdF9jb21tYW5kX29yX2tzZnRfc2tpcCBpcAomIzQzO3Rlc3RfY29tbWFuZF9vcl9rc2Z0X3NraXAgcGluZwomIzQzO3Rlc3RfY29tbWFuZF9vcl9rc2Z0X3NraXAgc3lzY3RsCiYjNDM7dGVzdF9jb21tYW5kX29yX2tzZnRfc2tpcCBncmVwCiYjNDM7CiYjNDM7dGVzdF9kdW1teV9kZXZfb3Jfa3NmdF9za2lwCiYjNDM7dGVzdF92cmZfb3Jfa3NmdF9za2lwCiYjNDM7dGVzdF9lbmNhcF9sb29rdXBfc3VwcF9vcl9rc2Z0X3NraXAKJiM0MzsKJiM0MztzZXQgLWUKJiM0Mzt0cmFwIGNsZWFudXAgRVhJVAomIzQzOwomIzQzO3NldHVwCiYjNDM7c2V0ICYjNDM7ZQomIzQzOwomIzQzO3JvdXRlcl90ZXN0cwomIzQzO2hvc3QyZ2F0ZXdheV90ZXN0cwomIzQzO2hvc3RfdnBuX3Rlc3RzCiYjNDM7aG9zdF92cG5faXNvbGF0aW9uX3Rlc3RzCiYjNDM7aG9zdF92cG5fbm9sb29rdXBfdGVzdHMKJiM0Mztnd192cG5fdGVzdHMKJiM0Mztnd192cG5faXNvbGF0aW9uX3Rlc3RzCiYjNDM7Z3dfdnBuX25vbG9va3VwX3Rlc3RzCiYjNDM7CiYjNDM7cHJpbnRfbG9nX3Rlc3RfcmVzdWx0cwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwODo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzMwNQoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDU5MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBTUnY2IFRhYmxlIEF0dHJpYnV0ZSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQmIzM5O3Mgc3RyYWlnaHRmb3J3YXJkLiBUaGV5JiMzOTt2ZSBpbnRyb2R1Y2VkIGEgY3JpdGljYWwgZmVhdHVyZTogdGhlIGFiaWxpdHkgdG8gc3BlY2lmeSBhIEZJQiB0YWJsZSBmb3IgcG9zdC1lbmNhcHN1bGF0aW9uIFNJRCBsb29rdXAgd2l0aGluIFNSdjYgdHVubmVscy4gVGhpcyBpcyBhIGdhbWUtY2hhbmdlciBmb3Igc29waGlzdGljYXRlZCBuZXR3b3JrIGRlc2lnbnMsIGFsbG93aW5nIGZvciBtdWNoIG1vcmUgZ3JhbnVsYXIgY29udHJvbCBvdmVyIHJvdXRpbmcgd2l0aGluIHRoZSB0dW5uZWwuCgpUaGUgbWVhdCBvZiB0aGUgd29yayBpcyBpbiBgbmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jYC4gVGhleSYjMzk7dmUgYWRkZWQgYSBgc2VnNl90YWJsZV9sb29rdXBgIGZ1bmN0aW9uLCB3aGljaCBJIGxpa2UuIEl0JiMzOTtzIGNsZWFuIGFuZCBmb2N1c2VkIG9uIHJldHJpZXZpbmcgYSByb3V0ZSBmcm9tIGEgc3BlY2lmaWMgdGFibGUsIGhhbmRsaW5nIHRoZSBsb29rdXAgYW5kIGVuc3VyaW5nIHRoZSB0YWJsZSBhY3R1YWxseSBleGlzdHMuICBUaGUgdXNlIG9mIGBmaWI2X2dldF90YWJsZWAgYW5kIGBpcDZfcG9sX3JvdXRlYCBpcyBjb3JyZWN0IGhlcmUsIHJldXNpbmcgZXhpc3Rpbmcga2VybmVsIGluZnJhc3RydWN0dXJlLgoKVGhlIE5ldGxpbmsgYXR0cmlidXRlIGBTRUc2X0lQVFVOTkVMX1RBQkxFYCBpcyB0aGUgdXNlci1mYWNpbmcgcGFydCwgYW5kIHRoZSBjb2RlIGxvb2tzIHNhbmUuIEl0IGFwcGVhcnMgdGhlIGF0dHJpYnV0ZSBpcyBwYXJzZWQgaW4gYHNlZzZfYnVpbGRfc3RhdGVgLiBWYWxpZGF0aW9uIGlzIGluY2x1ZGVkIChjaGVja2luZyBmb3Igbm9uLXplcm8gYHRhYmxlYCB2YWx1ZSksIGFuZCB0aGV5JiMzOTtyZSB1c2luZyBgTkxfU0VUX0VSUl9NU0dgIGZvciBwcm9wZXIgZXJyb3IgcmVwb3J0aW5nIGJhY2sgdG8gdGhlIHVzZXIgc3BhY2UuIEdvb2QuCgpJJiMzOTtsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgaXMgZW5hYmxlZC4gVGltZSB0byBjaGVjayB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24uIEkmIzM5O2xsIHNlYXJjaCBmb3IgYHNlZzZfaXB0dW5uZWwuY2Agd2l0aGluIHRoZSBgbmV0L2lwdjYvTWFrZWZpbGVgIGFuZCBgbmV0L2lwdjYvS2NvbmZpZ2AgZmlsZXMuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBJIG5lZWQgdG8gZW5hYmxlIHRoaXMuIFRoaXMgaXMgY3JpdGljYWwgdG8gZW5zdXJlIHRoaXMgY29kZSBpcyBhY3R1YWxseSBidWlsdCBhbmQgYXZhaWxhYmxlIGZvciB1c2UgaW4gZGVwbG95bWVudHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDg6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2VnNl9pcHR1bm5lbCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY2LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2Ni9NYWtlZmlsZT0yND1pcHY2LSQoQ09ORklHX05FVExBQkVMKSAmIzQzOz0gY2FsaXBzby5vXG5uZXQvaXB2Ni9NYWtlZmlsZToyNTppcHY2LSQoQ09ORklHX0lQVjZfU0VHNl9MV1RVTk5FTCkgJiM0Mzs9IHNlZzZfaXB0dW5uZWwubyBzZWc2X2xvY2FsLm9cbm5ldC9pcHY2L01ha2VmaWxlLTI2LWlwdjYtJChDT05GSUdfSVBWNl9TRUc2X0hNQUMpICYjNDM7PSBzZWc2X2htYWMub1xuLS1cbm5ldC9pcHY2L3NlZzYuYz01MDg9aW50IF9faW5pdCBzZWc2X2luaXQodm9pZClcbi0tXG5uZXQvaXB2Ni9zZWc2LmMtNTE5LVxubmV0L2lwdjYvc2VnNi5jOjUyMDpcdGVyciA9IHNlZzZfaXB0dW5uZWxfaW5pdCgpO1xubmV0L2lwdjYvc2VnNi5jLTUyMS1cdGlmIChlcnIpXG4tLVxubmV0L2lwdjYvc2VnNi5jLTUzMi1vdXRfdW5yZWdpc3Rlcl9pcHR1bjpcbm5ldC9pcHY2L3NlZzYuYzo1MzM6XHRzZWc2X2lwdHVubmVsX2V4aXQoKTtcbm5ldC9pcHY2L3NlZzYuYy01MzQtb3V0X3VucmVnaXN0ZXJfZ2VubDpcbi0tXG5uZXQvaXB2Ni9zZWc2LmM9NTQxPXZvaWQgc2VnNl9leGl0KHZvaWQpXG4tLVxubmV0L2lwdjYvc2VnNi5jLTU0My1cdHNlZzZfbG9jYWxfZXhpdCgpO1xubmV0L2lwdjYvc2VnNi5jOjU0NDpcdHNlZzZfaXB0dW5uZWxfZXhpdCgpO1xubmV0L2lwdjYvc2VnNi5jLTU0NS1cdGdlbmxfdW5yZWdpc3Rlcl9mYW1pbHkoXHUwMDI2c2VnNl9nZW5sX2ZhbWlseSk7XG4tLVxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jLTIxLSNpbmNsdWRlIFx1MDAzY2xpbnV4L3NlZzYuaFx1MDAzZVxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jOjIyOiNpbmNsdWRlIFx1MDAzY2xpbnV4L3NlZzZfaXB0dW5uZWwuaFx1MDAzZVxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jLTIzLSNpbmNsdWRlIFx1MDAzY25ldC9hZGRyY29uZi5oXHUwMDNlXG4tLVxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jLTMwLVxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jOjMxOnN0YXRpYyBzaXplX3Qgc2VnNl9sd3RfaGVhZHJvb20oc3RydWN0IHNlZzZfaXB0dW5uZWxfZW5jYXAgKnR1bmluZm8pXG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmMtMzIte1xuLS1cbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYz01MD1zdHJ1Y3Qgc2VnNl9sd3Qge1xuLS1cbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYy01NC1cdHUzMiB0YWJsZTtcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYzo1NTpcdHN0cnVjdCBzZWc2X2lwdHVubmVsX2VuY2FwIHR1bmluZm9bXTtcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYy01Ni19O1xuLS1cbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYz01OD1zdGF0aWMgaW5saW5lIHN0cnVjdCBzZWc2X2x3dCAqc2VnNl9sd3RfbHd0dW5uZWwoc3RydWN0IGx3dHVubmVsX3N0YXRlICpsd3QpXG4tLVxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jLTYyLVxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jOjYzOnN0YXRpYyBpbmxpbmUgc3RydWN0IHNlZzZfaXB0dW5uZWxfZW5jYXAgKlxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jLTY0LXNlZzZfZW5jYXBfbHd0dW5uZWwoc3RydWN0IGx3dHVubmVsX3N0YXRlICpsd3QpXG4tLVxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jLTY4LVxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jOjY5OnN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBzZWc2X2lwdHVubmVsX3BvbGljeVtTRUc2X0lQVFVOTkVMX01BWCAmIzQzOyAxXSA9IHtcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYy03MC1cdFtTRUc2X0lQVFVOTkVMX1NSSF1cdD0geyAudHlwZSA9IE5MQV9CSU5BUlkgfSxcbi0tXG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmM9NzU9c3RhdGljIGludCBubGFfcHV0X3NyaChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgYXR0cnR5cGUsXG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmM6NzY6XHRcdCAgICAgICBzdHJ1Y3Qgc2VnNl9pcHR1bm5lbF9lbmNhcCAqdHVuaW5mbylcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYy03Ny17XG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmM6Nzg6XHRzdHJ1Y3Qgc2VnNl9pcHR1bm5lbF9lbmNhcCAqZGF0YTtcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYy03OS1cdHN0cnVjdCBubGF0dHIgKm5sYTtcbi0tXG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmM9MjI1PXN0YXRpYyBpbnQgc2VnNl9kb19zcmhfZW5jYXBfcmVkKHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jLTI0Ny1cdFx0LyogTk9URTogaWYgdGFnL2ZsYWdzIGFuZC9vciBvdGhlciBUTFZzIGFyZSBpbnRyb2R1Y2VkIGluIHRoZVxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jOjI0ODpcdFx0ICogc2VnNl9pcHR1bm5lbCBpbmZyYXN0cnVjdHVyZSwgdGhleSBzaG91bGQgYmUgY29uc2lkZXJlZCB3aGVuXG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmMtMjQ5LVx0XHQgKiBkZWNpZGluZyB0byBza2lwIHRoZSBTUkguXG4tLVxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jPTM5OD1zdGF0aWMgaW50IHNlZzZfZG9fc3JoKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBkc3RfZW50cnkgKmNhY2hlX2RzdClcbi0tXG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmMtNDAwLVx0c3RydWN0IGRzdF9lbnRyeSAqZHN0ID0gc2tiX2RzdChza2IpO1xubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jOjQwMTpcdHN0cnVjdCBzZWc2X2lwdHVubmVsX2VuY2FwICp0aW5mbztcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYy00MDItXHRzdHJ1Y3Qgc2VnNl9sd3QgKnNsd3Q7XG4tLVxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jPTc0Nz1zdGF0aWMgaW50IHNlZzZfYnVpbGRfc3RhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmxhdHRyICpubGEsXG4tLVxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jLTc1Mi1cdHN0cnVjdCBubGF0dHIgKnRiW1NFRzZfSVBUVU5ORUxfTUFYICYjNDM7IDFdO1xubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jOjc1MzpcdHN0cnVjdCBzZWc2X2lwdHVubmVsX2VuY2FwICp0dW5pbmZvO1xubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jLTc1NC1cdHN0cnVjdCBsd3R1bm5lbF9zdGF0ZSAqbmV3dHM7XG4tLVxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jLTc2Mi1cdGVyciA9IG5sYV9wYXJzZV9uZXN0ZWRfZGVwcmVjYXRlZCh0YiwgU0VHNl9JUFRVTk5FTF9NQVgsIG5sYSxcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYzo3NjM6XHRcdFx0XHRcdCAgc2VnNl9pcHR1bm5lbF9wb2xpY3ksIGV4dGFjayk7XG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmMtNzY0LVxuLS1cbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYz04NzU9c3RhdGljIGludCBzZWc2X2ZpbGxfZW5jYXBfaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYy04Nzcte1xubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jOjg3ODpcdHN0cnVjdCBzZWc2X2lwdHVubmVsX2VuY2FwICp0dW5pbmZvID0gc2VnNl9lbmNhcF9sd3R1bm5lbChsd3RzdGF0ZSk7XG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmMtODc5LVx0c3RydWN0IHNlZzZfbHd0ICpzbHd0ID0gc2VnNl9sd3RfbHd0dW5uZWwobHd0c3RhdGUpO1xuLS1cbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYz04OTU9c3RhdGljIGludCBzZWc2X2VuY2FwX25sc2l6ZShzdHJ1Y3QgbHd0dW5uZWxfc3RhdGUgKmx3dHN0YXRlKVxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jLTg5Ni17XG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmM6ODk3Olx0c3RydWN0IHNlZzZfaXB0dW5uZWxfZW5jYXAgKnR1bmluZm8gPSBzZWc2X2VuY2FwX2x3dHVubmVsKGx3dHN0YXRlKTtcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYy04OTgtXHRzdHJ1Y3Qgc2VnNl9sd3QgKnNsd3QgPSBzZWc2X2x3dF9sd3R1bm5lbChsd3RzdGF0ZSk7XG4tLVxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jPTkxMj1zdGF0aWMgaW50IHNlZzZfZW5jYXBfY21wKHN0cnVjdCBsd3R1bm5lbF9zdGF0ZSAqYSwgc3RydWN0IGx3dHVubmVsX3N0YXRlICpiKVxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jLTkxMy17XG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmM6OTE0Olx0c3RydWN0IHNlZzZfaXB0dW5uZWxfZW5jYXAgKmFfaGRyID0gc2VnNl9lbmNhcF9sd3R1bm5lbChhKTtcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYzo5MTU6XHRzdHJ1Y3Qgc2VnNl9pcHR1bm5lbF9lbmNhcCAqYl9oZHIgPSBzZWc2X2VuY2FwX2x3dHVubmVsKGIpO1xubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jLTkxNi1cdHN0cnVjdCBzZWc2X2x3dCAqYV9zbHd0ID0gc2VnNl9sd3RfbHd0dW5uZWwoYSk7XG4tLVxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jPTkzMj1zdGF0aWMgY29uc3Qgc3RydWN0IGx3dHVubmVsX2VuY2FwX29wcyBzZWc2X2lwdHVuX29wcyA9IHtcbi0tXG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmMtOTQyLVxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jOjk0MzppbnQgX19pbml0IHNlZzZfaXB0dW5uZWxfaW5pdCh2b2lkKVxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jLTk0NC17XG4tLVxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jLTk0Ny1cbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYzo5NDg6dm9pZCBzZWc2X2lwdHVubmVsX2V4aXQodm9pZClcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYy05NDkte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDA4OjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNDg3CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqSW52ZXN0aWdhdGluZyB0aGUgSVB2NiBTZWdtZW50IFJvdXRpbmcgd2l0aCBJUHY2IExXVHVubmVsIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIG5haWwgZG93biB0aGUgY29uZmlndXJhdGlvbiBvcHRpb24gZm9yIHRoZSBTZWdtZW50IFJvdXRpbmcgd2l0aCBJUHY2IExXVHVubmVsIGZlYXR1cmUuIFJpZ2h0LCBJIHJlbWVtYmVyIHNlZWluZyBzb21ldGhpbmcgbGlrZSBgQ09ORklHX0lQVjZfU0VHNl9MV1RVTk5FTGAuIExldCBtZSBqdXN0IGRvdWJsZS1jaGVjayB0aGF0LiBXaGVyZSBpcyB0aGUgYXV0aG9yaXRhdGl2ZSBzb3VyY2UgZm9yIHRoZXNlIGtlcm5lbCBjb25maWcgb3B0aW9ucz8gQWgsIHRoYXQgd291bGQgYmUgYG5ldC9pcHY2L0tjb25maWdgLiBUaW1lIHRvIGNyYWNrIHRoYXQgZmlsZSBvcGVuIGFuZCBjb25maXJtIHRoZSBleGFjdCBuYW1lIGFuZCBhbnkgZGVwZW5kZW5jaWVzIG9yIHJlbGF0ZWQgb3B0aW9ucyBzdXJyb3VuZGluZyBgSVBWNl9TRUc2X0xXVFVOTkVMYC4gR290dGEgbWFrZSBzdXJlIEkmIzM5O20gdXNpbmcgdGhlIHJpZ2h0IGtub2IsIGFuZCB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IHdpdGhpbiB0aGUgbGFyZ2VyIElQdjYgc3RhY2sgY29uZmlndXJhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwODo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtJUFY2X1NFRzZfTFdUVU5ORUwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2Ni9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY2L0tjb25maWc9Mjc5PWNvbmZpZyBJUFY2X1BJTVNNX1YyXG4tLVxubmV0L2lwdjYvS2NvbmZpZy0yODUtXG5uZXQvaXB2Ni9LY29uZmlnOjI4Njpjb25maWcgSVBWNl9TRUc2X0xXVFVOTkVMXG5uZXQvaXB2Ni9LY29uZmlnLTI4Ny1cdGJvb2wgXCYjMzQ7SVB2NjogU2VnbWVudCBSb3V0aW5nIEhlYWRlciBlbmNhcHN1bGF0aW9uIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnPTMxMj1jb25maWcgSVBWNl9TRUc2X0JQRlxubmV0L2lwdjYvS2NvbmZpZy0zMTMtXHRkZWZfYm9vbCB5XG5uZXQvaXB2Ni9LY29uZmlnOjMxNDpcdGRlcGVuZHMgb24gSVBWNl9TRUc2X0xXVFVOTkVMXG5uZXQvaXB2Ni9LY29uZmlnLTMxNS1cdGRlcGVuZHMgb24gSVBWNiA9IHlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwODo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDkxOQoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDY0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipJUCB2NiBTZWdtZW50IFJvdXRpbmcgQ29uZmlndXJhdGlvbiBDb25zaWRlcmF0aW9ucyoqCgpSaWdodCwgc28gSSYjMzk7bSBmb2N1c2luZyBvbiBzZXR0aW5nIHVwIHNlZ21lbnQgcm91dGluZyB3aXRoIElQdjYuIE15IHByaW1hcnkgY29uZmlnIG9wdGlvbiBoZXJlIGlzIGBJUFY2X1NFRzZfTFdUVU5ORUxgLiBUaGF0JiMzOTtzIHRoZSBiaWcgb25lLiBCdXQgSSBrbm93IGZyb20gZXhwZXJpZW5jZSB0aGF0IHRoZXNlIHRoaW5ncyByYXJlbHkgc3RhbmQgYWxvbmUuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55IG90aGVyIGNydWNpYWwgZGVwZW5kZW5jaWVzLiBgTFdUVU5ORUxgIGlzIGEgbGlrZWx5IGNhbmRpZGF0ZTsgSSYjMzk7bGwgZmxhZyB0aGF0IGFzIHNvbWV0aGluZyB0byB2ZXJpZnkuIFRvIGJlIGFic29sdXRlbHkgdGhvcm91Z2ggYW5kIG1ha2Ugc3VyZSBJJiMzOTt2ZSBnb3QgZXZlcnl0aGluZyBuYWlsZWQgZG93biwgSSYjMzk7bSBnb2luZyB0byBkaWcgaW50byBgbmV0L2lwdjYvS2NvbmZpZ2AuIFRoYXQmIzM5O3Mgd2hlcmUgYWxsIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgZGVmaW5lZCBmb3IgdGhlIElQdjYgc3RhY2suIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIGBJUFY2X1NFRzZfTFdUVU5ORUxgIHRvIHNlZSB3aGljaCBvdGhlciBvcHRpb25zIGFyZSBjb25uZWN0ZWQsIGFuZCBpZiBhbnl0aGluZyBlbHNlIGlzIG5lZWRlZCBvciByZWNvbW1lbmRlZCB0byBnZXQgdGhpcyB0aGluZyB3b3JraW5nIGNvcnJlY3RseS4gSXQmIzM5O3MgYmVzdCB0byBiZSBzdXJlIG9mIHRoYXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDg6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElQVjZfU0VHNl9MV1RVTk5FTCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY2L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjYvS2NvbmZpZz0yNzk9Y29uZmlnIElQVjZfUElNU01fVjJcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTI4NS1cbm5ldC9pcHY2L0tjb25maWc6Mjg2OmNvbmZpZyBJUFY2X1NFRzZfTFdUVU5ORUxcbm5ldC9pcHY2L0tjb25maWctMjg3LVx0Ym9vbCBcJiMzNDtJUHY2OiBTZWdtZW50IFJvdXRpbmcgSGVhZGVyIGVuY2Fwc3VsYXRpb24gc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDA4OjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxMzM0CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSBsaWtlIHlvdXJzZWxmOgoKKipBbmFseXppbmcgdGhlIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jeSoqCgpBbHJpZ2h0LCBteSBicmFpbiYjMzk7cyBraWNraW5nIGludG8gZ2Vhci4gRmlyc3QsIGxldCYjMzk7cyB6ZXJvIGluIG9uIHRob3NlIGxpbmVzIHN1cnJvdW5kaW5nIGBjb25maWcgSVBWNl9TRUc2X0xXVFVOTkVMYC4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIHRoZSBzdXJyb3VuZGluZyBjb250ZXh0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBpbnRlcmFjdGlvbnMgYXJvdW5kIHRoYXQgY29uZmlndXJhdGlvbiBvcHRpb24uIFdoYXQgb3RoZXIgZmVhdHVyZXMgb3Igc2V0dGluZ3MgYXJlIGludm9sdmVkPyBBcmUgdGhlcmUgYW55IHByZXJlcXVpc2l0ZXMgSSBzaG91bGQgYmUgYXdhcmUgb2YsIGxpa2Ugc3BlY2lmaWMga2VybmVsIG1vZHVsZXMgb3Igb3RoZXIgbmV0d29ya2luZyBzdGFjayBjb21wb25lbnRzPyBBcmUgdGhlcmUgYW55IG9idmlvdXMgY29uZmxpY3RzIHRvIGxvb2sgZm9yPyBXZSBjYW4gYWxzbyBjaGVjayB0aGUgS2NvbmZpZywgdG8gc2VlIGlmIHRoZXJlIGlzIGFueSBoZWxwIHRleHQgdG8gYXNzaXN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwODo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9pcHY2L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyODAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDI4MDpcdFx0Ym9vbCBcJiMzNDtJUHY2OiBQSU0tU00gdmVyc2lvbiAyIHN1cHBvcnRcJiMzNDtcbiAyODE6XHRcdGRlcGVuZHMgb24gSVBWNl9NUk9VVEVcbiAyODI6XHRcdGhlbHBcbiAyODM6XHRcdCAgU3VwcG9ydCBmb3IgSVB2NiBQSU0gbXVsdGljYXN0IHJvdXRpbmcgcHJvdG9jb2wgUElNLVNNdjIuXG4gMjg0Olx0XHQgIElmIHVuc3VyZSwgc2F5IE4uXG4gMjg1Olx0XG4gMjg2Olx0Y29uZmlnIElQVjZfU0VHNl9MV1RVTk5FTFxuIDI4NzpcdFx0Ym9vbCBcJiMzNDtJUHY2OiBTZWdtZW50IFJvdXRpbmcgSGVhZGVyIGVuY2Fwc3VsYXRpb24gc3VwcG9ydFwmIzM0O1xuIDI4ODpcdFx0ZGVwZW5kcyBvbiBJUFY2XG4gMjg5Olx0XHRzZWxlY3QgTFdUVU5ORUxcbiAyOTA6XHRcdHNlbGVjdCBEU1RfQ0FDSEVcbiAyOTE6XHRcdHNlbGVjdCBJUFY2X01VTFRJUExFX1RBQkxFU1xuIDI5MjpcdFx0aGVscFxuIDI5MzpcdFx0ICBTdXBwb3J0IGZvciBlbmNhcHN1bGF0aW9uIG9mIHBhY2tldHMgd2l0aGluIGFuIG91dGVyIElQdjZcbiAyOTQ6XHRcdCAgaGVhZGVyIGFuZCBhIFNlZ21lbnQgUm91dGluZyBIZWFkZXIgdXNpbmcgdGhlIGxpZ2h0d2VpZ2h0XG4gMjk1Olx0XHQgIHR1bm5lbHMgbWVjaGFuaXNtLiBBbHNvIGVuYWJsZSBzdXBwb3J0IGZvciBhZHZhbmNlZCBsb2NhbFxuIDI5NjpcdFx0ICBwcm9jZXNzaW5nIG9mIFNSdjYgcGFja2V0cyBiYXNlZCBvbiB0aGVpciBhY3RpdmUgc2VnbWVudC5cbiAyOTc6XHRcbiAyOTg6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiAyOTk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDg6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE4MzEKCQkJCQkJCW91dHB1dDogMjE1CgkJCQkJCQl0aG91Z2h0czogNzYxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgU3RyYXRlZ3kgZm9yIFNSdjYgRW5jYXBzdWxhdGlvbiBSb3V0aW5nIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIGludHJvZHVjaW5nIGEgbmV3IE5ldGxpbmsgYXR0cmlidXRlLCBgU0VHNl9JUFRVTk5FTF9UQUJMRWAsIHRvIGFsbG93IHNwZWNpZnlpbmcgYSBGSUIgdGFibGUgZm9yIHBvc3QtZW5jYXAgU0lEIGxvb2t1cCB3aXRoaW4gU1J2NiB0dW5uZWxzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBhZGRpdGlvbiB0aGF0IGRpcmVjdGx5IGltcGFjdHMgdGhlIElQdjYgU2VnbWVudCBSb3V0aW5nIHN1YnN5c3RlbSwgc28gZnV6emluZyBpcyBkZWZpbml0ZWx5IHdhcnJhbnRlZC4gVGhlIGNvcmUgY29uZmlndXJhdGlvbiBpcyBgSVBWNl9TRUc2X0xXVFVOTkVMYCwgd2hpY2ggc2VlbXMgc3VmZmljaWVudCBnaXZlbiB0aGF0IHRoZSBwYXRjaCBsZXZlcmFnZXMgc3RhbmRhcmQgSVB2NiByb3V0aW5nIGZ1bmN0aW9ucyBsaWtlIGBmaWI2X2dldF90YWJsZWAgKHJlcXVpcmluZyBgQ09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTYCwgd2hpY2ggaXMgc2VsZWN0ZWQgYnkgYElQVjZfU0VHNl9MV1RVTk5FTGApIGFuZCBgaXA2X3BvbF9yb3V0ZWAuCgpNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIHRoZSBmdW5jdGlvbnMgbW9zdCBkaXJlY3RseSBhZmZlY3RlZCBieSB0aGlzIG5ldyBhdHRyaWJ1dGUgYW5kIGxvZ2ljLiBUaGUgcHJpbWFyeSBmaWxlIHRvIGV4YW1pbmUgaXMgYG5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuY2AuCgpIZXJlJiMzOTtzIG15IHRhcmdldCBsaXN0OgoKKiAgIGBzZWc2X3RhYmxlX2xvb2t1cGA6IENyaXRpY2FsIGZvciB0aGUgbmV3IEZJQiB0YWJsZSBsb29rdXAuCiogICBgc2VnNl9pbnB1dF9yb3V0ZWA6IENhbGxlZCBmcm9tIGBzZWc2X2lucHV0X2NvcmVgLCBzbyBpdCYjMzk7cyBkaXJlY3RseSBpbnZvbHZlZCBpbiB0aGUgaW5wdXQgcGF0aC4KKiAgIGBzZWc2X291dHB1dF9kc3RfbG9va3VwYDogU2ltaWxhciB0byBgc2VnNl9pbnB1dF9yb3V0ZWAsIGJ1dCBmb3IgdGhlIG91dHB1dCBwYXRoLiBJdCYjMzk7cyBjYWxsZWQgZnJvbSBgc2VnNl9vdXRwdXRfY29yZWAuCiogICBgc2VnNl9idWlsZF9zdGF0ZWA6IFRoaXMgaGFuZGxlcyB0aGUgTmV0bGluayBjb25maWd1cmF0aW9uLCBzbyBpdCYjMzk7cyBhIHByaW1lIHRhcmdldCBmb3IgZnV6emluZyB0aGUgbmV3IGF0dHJpYnV0ZS4KKiAgIGBzZWc2X2ZpbGxfZW5jYXBfaW5mb2AKKiAgIGBzZWc2X2VuY2FwX25sc2l6ZWAKKiAgIGBzZWc2X2VuY2FwX2NtcGAKCldoaWxlIGBzZWc2X2lucHV0X2NvcmVgIGFuZCBgc2VnNl9vdXRwdXRfY29yZWAgYXJlIHRoZSBjb3JlIGZvcndhcmRpbmcgZnVuY3Rpb25zLCBJJiMzOTttIGdvaW5nIHRvIGZvY3VzIG9uIHRoZSBgc2VnNl90YWJsZV9sb29rdXBgLCBgc2VnNl9pbnB1dF9yb3V0ZWAsIGBzZWc2X291dHB1dF9kc3RfbG9va3VwYCBhbmQgYHNlZzZfYnVpbGRfc3RhdGVgIGZ1bmN0aW9ucywgYXMgdGhleSBhcmUgc3BlY2lmaWMgdG8gdGhlIG5ldyBmdW5jdGlvbmFsaXR5IGFuZCwgdGh1cywgbW9yZSBsaWtlbHkgdG8gZXhwb3NlIG5vdmVsIHZ1bG5lcmFiaWxpdGllcyByZWxhdGVkIHRvIHRoaXMgcGF0Y2guIFRoZSBvdGhlciBmdW5jdGlvbnMgYXJlIHJlbGF0ZWQgdG8gdGhlIGNvcmUgbG9naWMsIHdoaWNoIGlzIGFsc28gd29ydGggdGVzdGluZy4KClRoZSBoaWdoLWxldmVsIHJlYXNvbmluZyBpcyB0aGlzOiB0aGUgcGF0Y2ggZnVuZGFtZW50YWxseSBhbHRlcnMgdGhlIFNSdjYgZW5jYXBzdWxhdGlvbiBwYXRoIHRvIGluY29ycG9yYXRlIGEgdXNlci1zcGVjaWZpZWQgRklCIHRhYmxlIGxvb2t1cC4gVGhpcyBpbnRyb2R1Y2VzIGEgbmV3IGNvZGUgcGF0aCBhbmQgcG90ZW50aWFsIGZvciB1bmV4cGVjdGVkIGJlaGF2aW9yIGluIHRoZSByb3V0aW5nIGxvZ2ljLCBwYXJ0aWN1bGFybHkgaWYgdGhlIHByb3ZpZGVkIHRhYmxlIGlzIG1hbGZvcm1lZCBvciBpbnZhbGlkLiBUaGUgZnVuY3Rpb25zIGxpc3RlZCBhYm92ZSBhcmUgZ29pbmcgdG8gYmUga2V5IHRvIHRlc3RpbmcgdGhlIG5ldyBmdW5jdGlvbmFsaXR5LiBJJiMzOTtsbCB1c2UgdGhlIGBzZXQtcmVzdWx0c2AgdG9vbCB0byBmaW5hbGl6ZSB0aGUgYW5hbHlzaXMgYW5kIGZlZWQgdGhlc2UgdGFyZ2V0cyBpbnRvIHRoZSBmdXp6ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDA4OjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUFY2X1NFRzZfTFdUVU5ORUwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzZWc2X3RhYmxlX2xvb2t1cCYjMzQ7LAogICAgJiMzNDtzZWc2X2lucHV0X3JvdXRlJiMzNDssCiAgICAmIzM0O3NlZzZfb3V0cHV0X2RzdF9sb29rdXAmIzM0OywKICAgICYjMzQ7c2VnNl9idWlsZF9zdGF0ZSYjMzQ7LAogICAgJiMzNDtzZWc2X2ZpbGxfZW5jYXBfaW5mbyYjMzQ7LAogICAgJiMzNDtzZWc2X2VuY2FwX25sc2l6ZSYjMzQ7LAogICAgJiMzNDtzZWc2X2VuY2FwX2NtcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgbmV3IE5ldGxpbmsgYXR0cmlidXRlIGBTRUc2X0lQVFVOTkVMX1RBQkxFYCB0byBzcGVjaWZ5IGEgRklCIHRhYmxlIGZvciBwb3N0LWVuY2FwIFNJRCBsb29rdXAgaW4gU1J2NiB0dW5uZWxzLiBJdCBtb2RpZmllcyB0aGUgU1J2NiBlbmNhcHN1bGF0aW9uIGxvZ2ljIGluIGBuZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmNgIHRvIHBlcmZvcm0gcm91dGUgbG9va3VwcyBpbiB0aGUgc3BlY2lmaWVkIHRhYmxlIGR1cmluZyBib3RoIGlucHV0IGFuZCBvdXRwdXQgcGF0aHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byByZWFjaGFibGUgY29yZSBrZXJuZWwgbmV0d29ya2luZyBsb2dpYywgc3BlY2lmaWNhbGx5IHRoZSBJUHY2IFNlZ21lbnQgUm91dGluZyBzdWJzeXN0ZW0sIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUFY2X1NFRzZfTFdUVU5ORUwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzZWc2X3RhYmxlX2xvb2t1cCYjMzQ7LAogICAgJiMzNDtzZWc2X2lucHV0X3JvdXRlJiMzNDssCiAgICAmIzM0O3NlZzZfb3V0cHV0X2RzdF9sb29rdXAmIzM0OywKICAgICYjMzQ7c2VnNl9idWlsZF9zdGF0ZSYjMzQ7LAogICAgJiMzNDtzZWc2X2ZpbGxfZW5jYXBfaW5mbyYjMzQ7LAogICAgJiMzNDtzZWc2X2VuY2FwX25sc2l6ZSYjMzQ7LAogICAgJiMzNDtzZWc2X2VuY2FwX2NtcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgbmV3IE5ldGxpbmsgYXR0cmlidXRlIGBTRUc2X0lQVFVOTkVMX1RBQkxFYCB0byBzcGVjaWZ5IGEgRklCIHRhYmxlIGZvciBwb3N0LWVuY2FwIFNJRCBsb29rdXAgaW4gU1J2NiB0dW5uZWxzLiBJdCBtb2RpZmllcyB0aGUgU1J2NiBlbmNhcHN1bGF0aW9uIGxvZ2ljIGluIGBuZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmNgIHRvIHBlcmZvcm0gcm91dGUgbG9va3VwcyBpbiB0aGUgc3BlY2lmaWVkIHRhYmxlIGR1cmluZyBib3RoIGlucHV0IGFuZCBvdXRwdXQgcGF0aHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byByZWFjaGFibGUgY29yZSBrZXJuZWwgbmV0d29ya2luZyBsb2dpYywgc3BlY2lmaWNhbGx5IHRoZSBJUHY2IFNlZ21lbnQgUm91dGluZyBzdWJzeXN0ZW0sIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMTJUMDg6NTQ6MTYuNTIxNjIwMDQxWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzMyNDI1MjA5NzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBWNl9TRUc2X0xXVFVOTkVMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic2VnNl90YWJsZV9sb29rdXBcIixcbiAgICBcInNlZzZfaW5wdXRfcm91dGVcIixcbiAgICBcInNlZzZfb3V0cHV0X2RzdF9sb29rdXBcIixcbiAgICBcInNlZzZfYnVpbGRfc3RhdGVcIixcbiAgICBcInNlZzZfZmlsbF9lbmNhcF9pbmZvXCIsXG4gICAgXCJzZWc2X2VuY2FwX25sc2l6ZVwiLFxuICAgIFwic2VnNl9lbmNhcF9jbXBcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgbmV3IE5ldGxpbmsgYXR0cmlidXRlIGBTRUc2X0lQVFVOTkVMX1RBQkxFYCB0byBzcGVjaWZ5IGEgRklCIHRhYmxlIGZvciBwb3N0LWVuY2FwIFNJRCBsb29rdXAgaW4gU1J2NiB0dW5uZWxzLiBJdCBtb2RpZmllcyB0aGUgU1J2NiBlbmNhcHN1bGF0aW9uIGxvZ2ljIGluIGBuZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmNgIHRvIHBlcmZvcm0gcm91dGUgbG9va3VwcyBpbiB0aGUgc3BlY2lmaWVkIHRhYmxlIGR1cmluZyBib3RoIGlucHV0IGFuZCBvdXRwdXQgcGF0aHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byByZWFjaGFibGUgY29yZSBrZXJuZWwgbmV0d29ya2luZyBsb2dpYywgc3BlY2lmaWNhbGx5IHRoZSBJUHY2IFNlZ21lbnQgUm91dGluZyBzdWJzeXN0ZW0sIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwODo1NDoxNi41MjE2NTk4ODFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgyNzIxMzU2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGJkMGY0N2E4OGIwZDUwOTRiOWZkNDMxY2EwNGMyMWU4ZjY2YzdmMDFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFN1biBKdWwgMTIgMDg6NTQ6MTQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L3NlZzZfaXB0dW5uZWwuaCBiL2luY2x1ZGUvdWFwaS9saW51eC9zZWc2X2lwdHVubmVsLmhcXG5pbmRleCA0ODU4ODliMTk5MDBlYS4uZTE5NjRiM2E0YmIwYWYgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L3NlZzZfaXB0dW5uZWwuaFxcbisrKyBiL2luY2x1ZGUvdWFwaS9saW51eC9zZWc2X2lwdHVubmVsLmhcXG5AQCAtMjEsNiArMjEsNyBAQCBlbnVtIHtcXG4gXFx0U0VHNl9JUFRVTk5FTF9VTlNQRUMsXFxuIFxcdFNFRzZfSVBUVU5ORUxfU1JILFxcbiBcXHRTRUc2X0lQVFVOTkVMX1NSQyxcXHQvKiBzdHJ1Y3QgaW42X2FkZHIgKi9cXG4rXFx0U0VHNl9JUFRVTk5FTF9UQUJMRSxcXHQvKiBfX3UzMiBGSUIgdGFibGUgZm9yIHBvc3QtZW5jYXAgU0lEIGxvb2t1cCAqL1xcbiBcXHRfX1NFRzZfSVBUVU5ORUxfTUFYLFxcbiB9O1xcbiAjZGVmaW5lIFNFRzZfSVBUVU5ORUxfTUFYIChfX1NFRzZfSVBUVU5ORUxfTUFYIC0gMSlcXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jIGIvbmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jXFxuaW5kZXggNGM0NWMwYTc3ZDc1ZDAuLjYxYzZhMjdiZjIwMmRkIDEwMDY0NFxcbi0tLSBhL25ldC9pcHY2L3NlZzZfaXB0dW5uZWwuY1xcbisrKyBiL25ldC9pcHY2L3NlZzZfaXB0dW5uZWwuY1xcbkBAIC01MSw2ICs1MSw3IEBAIHN0cnVjdCBzZWc2X2x3dCB7XFxuIFxcdHN0cnVjdCBkc3RfY2FjaGUgY2FjaGVfaW5wdXQ7XFxuIFxcdHN0cnVjdCBkc3RfY2FjaGUgY2FjaGVfb3V0cHV0O1xcbiBcXHRzdHJ1Y3QgaW42X2FkZHIgdHVuc3JjO1xcbitcXHR1MzIgdGFibGU7XFxuIFxcdHN0cnVjdCBzZWc2X2lwdHVubmVsX2VuY2FwIHR1bmluZm9bXTtcXG4gfTtcXG4gXFxuQEAgLTY4LDYgKzY5LDcgQEAgc2VnNl9lbmNhcF9sd3R1bm5lbChzdHJ1Y3QgbHd0dW5uZWxfc3RhdGUgKmx3dClcXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IHNlZzZfaXB0dW5uZWxfcG9saWN5W1NFRzZfSVBUVU5ORUxfTUFYICsgMV0gPSB7XFxuIFxcdFtTRUc2X0lQVFVOTkVMX1NSSF1cXHQ9IHsgLnR5cGUgPSBOTEFfQklOQVJZIH0sXFxuIFxcdFtTRUc2X0lQVFVOTkVMX1NSQ11cXHQ9IE5MQV9QT0xJQ1lfRVhBQ1RfTEVOKHNpemVvZihzdHJ1Y3QgaW42X2FkZHIpKSxcXG4rXFx0W1NFRzZfSVBUVU5ORUxfVEFCTEVdXFx0PSB7IC50eXBlID0gTkxBX1UzMiB9LFxcbiB9O1xcbiBcXG4gc3RhdGljIGludCBubGFfcHV0X3NyaChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgYXR0cnR5cGUsXFxuQEAgLTQ3OSw2ICs0ODEsNzMgQEAgaW50IHNlZzZfZG9fc3JoX2lubGluZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaXB2Nl9zcl9oZHIgKm9zcmgpXFxuIH1cXG4gRVhQT1JUX1NZTUJPTF9HUEwoc2VnNl9kb19zcmhfaW5saW5lKTtcXG4gXFxuKy8qIGxvb2sgdXAgYSByb3V0ZSBpbiBhIHNwZWNpZmljIEZJQiB0YWJsZS5cXG4rICogUmV0dXJucyBhIHJlZmNvdW50ZWQgZHN0LCBvciBOVUxMIGlmIHRoZSB0YWJsZSBkb2VzIG5vdCBleGlzdC5cXG4rICovXFxuK3N0YXRpYyBzdHJ1Y3QgZHN0X2VudHJ5ICpzZWc2X3RhYmxlX2xvb2t1cChzdHJ1Y3QgbmV0ICpuZXQsXFxuK1xcdFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBza19idWZmICpza2IsXFxuK1xcdFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBmbG93aTYgKmZsNiwgdTMyIHRibF9pZClcXG4re1xcbitcXHRzdHJ1Y3QgZmliNl90YWJsZSAqdGFibGU7XFxuK1xcdHN0cnVjdCBydDZfaW5mbyAqcnQ7XFxuK1xcbitcXHR0YWJsZSA9IGZpYjZfZ2V0X3RhYmxlKG5ldCwgdGJsX2lkKTtcXG4rXFx0aWYgKCF0YWJsZSlcXG4rXFx0XFx0cmV0dXJuIE5VTEw7XFxuK1xcbitcXHRydCA9IGlwNl9wb2xfcm91dGUobmV0LCB0YWJsZSwgMCwgZmw2LCBza2IsIFJUNl9MT09LVVBfRl9IQVNfU0FERFIpO1xcbitcXHRyZXR1cm4gXFx1MDAyNnJ0LVxcdTAwM2Vkc3Q7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIHNlZzZfaW5pdF9mbG93aTYoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlwdjZoZHIgKmhkcixcXG4rXFx0XFx0XFx0ICAgICBzdHJ1Y3QgZmxvd2k2ICpmbDYpXFxuK3tcXG4rXFx0bWVtc2V0KGZsNiwgMCwgc2l6ZW9mKCpmbDYpKTtcXG4rXFxuK1xcdGZsNi1cXHUwMDNlZGFkZHIgPSBoZHItXFx1MDAzZWRhZGRyO1xcbitcXHRmbDYtXFx1MDAzZXNhZGRyID0gaGRyLVxcdTAwM2VzYWRkcjtcXG4rXFx0Zmw2LVxcdTAwM2VmbG93bGFiZWwgPSBpcDZfZmxvd2luZm8oaGRyKTtcXG4rXFx0Zmw2LVxcdTAwM2VmbG93aTZfbWFyayA9IHNrYi1cXHUwMDNlbWFyaztcXG4rXFx0Zmw2LVxcdTAwM2VmbG93aTZfcHJvdG8gPSBoZHItXFx1MDAzZW5leHRoZHI7XFxuK31cXG4rXFxuKy8qIGxvb2sgdXAgdGhlIHJvdXRlIGZvciB0aGUgZmlyc3QgU0lEIG9uIHRoZSBpbnB1dCBwYXRoIGFuZCBzZXQgaXQgb24gdGhlIHNrYi5cXG4rICogUmV0dXJucyB0aGUgcmVmY291bnRlZCBkc3QsIG9yIE5VTEwgaWYgYSByZWZlcmVuY2UgY291bGQgbm90IGJlIHNhZmVseSB0YWtlbi5cXG4rICovXFxuK3N0YXRpYyBzdHJ1Y3QgZHN0X2VudHJ5ICpzZWc2X2lucHV0X3JvdXRlKHN0cnVjdCBuZXQgKm5ldCxcXG4rXFx0XFx0XFx0XFx0XFx0ICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbitcXHRcXHRcXHRcXHRcXHQgIHN0cnVjdCBzZWc2X2x3dCAqc2x3dClcXG4re1xcbitcXHR1MzIgdGFibGUgPSBzbHd0LVxcdTAwM2V0YWJsZTtcXG4rXFxuK1xcdGlmICh0YWJsZSkge1xcbitcXHRcXHRzdHJ1Y3QgaXB2NmhkciAqaGRyID0gaXB2Nl9oZHIoc2tiKTtcXG4rXFx0XFx0c3RydWN0IGRzdF9lbnRyeSAqZHN0O1xcbitcXHRcXHRzdHJ1Y3QgZmxvd2k2IGZsNjtcXG4rXFxuK1xcdFxcdHNlZzZfaW5pdF9mbG93aTYoc2tiLCBoZHIsIFxcdTAwMjZmbDYpO1xcbitcXHRcXHRmbDYuZmxvd2k2X2lpZiA9IHNrYi1cXHUwMDNlZGV2LVxcdTAwM2VpZmluZGV4O1xcbitcXG4rXFx0XFx0ZHN0ID0gc2VnNl90YWJsZV9sb29rdXAobmV0LCBza2IsIFxcdTAwMjZmbDYsIHRhYmxlKTtcXG4rXFx0XFx0aWYgKCFkc3QpIHtcXG4rXFx0XFx0XFx0ZHN0ID0gXFx1MDAyNm5ldC1cXHUwMDNlaXB2Ni5pcDZfYmxrX2hvbGVfZW50cnktXFx1MDAzZWRzdDtcXG4rXFx0XFx0XFx0ZHN0X2hvbGQoZHN0KTtcXG4rXFx0XFx0fVxcbitcXG4rXFx0XFx0c2tiX2RzdF9kcm9wKHNrYik7XFxuK1xcdFxcdHNrYl9kc3Rfc2V0KHNrYiwgZHN0KTtcXG4rXFx0fSBlbHNlIHtcXG4rXFx0XFx0aXA2X3JvdXRlX2lucHV0KHNrYik7XFxuK1xcbitcXHRcXHQvKiBpcDZfcm91dGVfaW5wdXQoKSBzZXRzIGEgTk9SRUYgZHN0OyBmb3JjZSBhIHJlZmNvdW50IG9uIGl0XFxuK1xcdFxcdCAqIGJlZm9yZSBjYWNoaW5nIG9yIGZ1cnRoZXIgdXNlLlxcbitcXHRcXHQgKi9cXG4rXFx0XFx0c2tiX2RzdF9mb3JjZShza2IpO1xcbitcXHR9XFxuK1xcbitcXHRyZXR1cm4gc2tiX2RzdChza2IpO1xcbit9XFxuK1xcbiBzdGF0aWMgaW50IHNlZzZfaW5wdXRfZmluaXNoKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrLFxcbiBcXHRcXHRcXHQgICAgIHN0cnVjdCBza19idWZmICpza2IpXFxuIHtcXG5AQCAtNTEzLDE1ICs1ODIsOSBAQCBzdGF0aWMgaW50IHNlZzZfaW5wdXRfY29yZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpzayxcXG4gXFx0XFx0Z290byBkcm9wO1xcbiBcXHR9XFxuIFxcbi1cXHRpZiAoIWRzdCkge1xcbi1cXHRcXHRpcDZfcm91dGVfaW5wdXQoc2tiKTtcXG4tXFxuLVxcdFxcdC8qIGlwNl9yb3V0ZV9pbnB1dCgpIHNldHMgYSBOT1JFRiBkc3Q7IGZvcmNlIGEgcmVmY291bnQgb24gaXRcXG4tXFx0XFx0ICogYmVmb3JlIGNhY2hpbmcgb3IgZnVydGhlciB1c2UuXFxuLVxcdFxcdCAqL1xcbi1cXHRcXHRza2JfZHN0X2ZvcmNlKHNrYik7XFxuLVxcdFxcdGRzdCA9IHNrYl9kc3Qoc2tiKTtcXG4tXFx0XFx0aWYgKHVubGlrZWx5KCFkc3QpKSB7XFxuK1xcdGlmICh1bmxpa2VseSghZHN0KSkge1xcbitcXHRcXHRkc3QgPSBzZWc2X2lucHV0X3JvdXRlKG5ldCwgc2tiLCBzbHd0KTtcXG4rXFx0XFx0aWYgKCFkc3QpIHtcXG4gXFx0XFx0XFx0ZXJyID0gLUVORVRVTlJFQUNIO1xcbiBcXHRcXHRcXHRnb3RvIGRyb3A7XFxuIFxcdFxcdH1cXG5AQCAtNTc4LDYgKzY0MSwyOSBAQCBzdGF0aWMgaW50IHNlZzZfaW5wdXQoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4gXFx0cmV0dXJuIHNlZzZfaW5wdXRfY29yZShkZXZfbmV0KHNrYi1cXHUwMDNlZGV2KSwgTlVMTCwgc2tiKTtcXG4gfVxcbiBcXG4rLyogbG9vayB1cCB0aGUgcm91dGUgZm9yIHRoZSBmaXJzdCBTSUQgb24gdGhlIG91dHB1dCBwYXRoLiBBbHdheXMgcmV0dXJucyBhXFxuKyAqIHJlZmNvdW50ZWQgZHN0LlxcbisgKi9cXG4rc3RhdGljIHN0cnVjdCBkc3RfZW50cnkgKnNlZzZfb3V0cHV0X2RzdF9sb29rdXAoc3RydWN0IG5ldCAqbmV0LFxcbitcXHRcXHRcXHRcXHRcXHRcXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbitcXHRcXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgZmxvd2k2ICpmbDYsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdHN0cnVjdCBzZWc2X2x3dCAqc2x3dClcXG4re1xcbitcXHRzdHJ1Y3QgZHN0X2VudHJ5ICpkc3Q7XFxuK1xcbitcXHRpZiAoc2x3dC1cXHUwMDNldGFibGUpIHtcXG4rXFx0XFx0ZHN0ID0gc2VnNl90YWJsZV9sb29rdXAobmV0LCBza2IsIGZsNiwgc2x3dC1cXHUwMDNldGFibGUpO1xcbitcXHRcXHRpZiAoIWRzdCkge1xcbitcXHRcXHRcXHRkc3QgPSBcXHUwMDI2bmV0LVxcdTAwM2VpcHY2LmlwNl9ibGtfaG9sZV9lbnRyeS1cXHUwMDNlZHN0O1xcbitcXHRcXHRcXHRkc3RfaG9sZChkc3QpO1xcbitcXHRcXHR9XFxuK1xcdH0gZWxzZSB7XFxuK1xcdFxcdGRzdCA9IGlwNl9yb3V0ZV9vdXRwdXQobmV0LCBOVUxMLCBmbDYpO1xcbitcXHR9XFxuK1xcbitcXHRyZXR1cm4gZHN0O1xcbit9XFxuK1xcbiBzdGF0aWMgaW50IHNlZzZfb3V0cHV0X2NvcmUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29jayAqc2ssXFxuIFxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiB7XFxuQEAgLTYwMCwxNCArNjg2LDkgQEAgc3RhdGljIGludCBzZWc2X291dHB1dF9jb3JlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrLFxcbiBcXHRcXHRzdHJ1Y3QgaXB2NmhkciAqaGRyID0gaXB2Nl9oZHIoc2tiKTtcXG4gXFx0XFx0c3RydWN0IGZsb3dpNiBmbDY7XFxuIFxcbi1cXHRcXHRtZW1zZXQoXFx1MDAyNmZsNiwgMCwgc2l6ZW9mKGZsNikpO1xcbi1cXHRcXHRmbDYuZGFkZHIgPSBoZHItXFx1MDAzZWRhZGRyO1xcbi1cXHRcXHRmbDYuc2FkZHIgPSBoZHItXFx1MDAzZXNhZGRyO1xcbi1cXHRcXHRmbDYuZmxvd2xhYmVsID0gaXA2X2Zsb3dpbmZvKGhkcik7XFxuLVxcdFxcdGZsNi5mbG93aTZfbWFyayA9IHNrYi1cXHUwMDNlbWFyaztcXG4tXFx0XFx0Zmw2LmZsb3dpNl9wcm90byA9IGhkci1cXHUwMDNlbmV4dGhkcjtcXG4rXFx0XFx0c2VnNl9pbml0X2Zsb3dpNihza2IsIGhkciwgXFx1MDAyNmZsNik7XFxuIFxcbi1cXHRcXHRkc3QgPSBpcDZfcm91dGVfb3V0cHV0KG5ldCwgTlVMTCwgXFx1MDAyNmZsNik7XFxuK1xcdFxcdGRzdCA9IHNlZzZfb3V0cHV0X2RzdF9sb29rdXAobmV0LCBza2IsIFxcdTAwMjZmbDYsIHNsd3QpO1xcbiBcXHRcXHRpZiAoZHN0LVxcdTAwM2VlcnJvcikge1xcbiBcXHRcXHRcXHRlcnIgPSBkc3QtXFx1MDAzZWVycm9yO1xcbiBcXHRcXHRcXHRnb3RvIGRyb3A7XFxuQEAgLTc1Miw2ICs4MzMsMTUgQEAgc3RhdGljIGludCBzZWc2X2J1aWxkX3N0YXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5sYXR0ciAqbmxhLFxcbiBcXHRcXHR9XFxuIFxcdH1cXG4gXFxuK1xcdGlmICh0YltTRUc2X0lQVFVOTkVMX1RBQkxFXSkge1xcbitcXHRcXHRzbHd0LVxcdTAwM2V0YWJsZSA9IG5sYV9nZXRfdTMyKHRiW1NFRzZfSVBUVU5ORUxfVEFCTEVdKTtcXG4rXFx0XFx0aWYgKCFzbHd0LVxcdTAwM2V0YWJsZSkge1xcbitcXHRcXHRcXHROTF9TRVRfRVJSX01TRyhleHRhY2ssIFxcXCJpbnZhbGlkIGxvb2t1cCB0YWJsZVxcXCIpO1xcbitcXHRcXHRcXHRlcnIgPSAtRUlOVkFMO1xcbitcXHRcXHRcXHRnb3RvIGVycl9kZXN0cm95X291dHB1dDtcXG4rXFx0XFx0fVxcbitcXHR9XFxuK1xcbiBcXHRuZXd0cy1cXHUwMDNldHlwZSA9IExXVFVOTkVMX0VOQ0FQX1NFRzY7XFxuIFxcdG5ld3RzLVxcdTAwM2VmbGFncyB8PSBMV1RVTk5FTF9TVEFURV9JTlBVVF9SRURJUkVDVDtcXG4gXFxuQEAgLTc5NSw2ICs4ODUsMTAgQEAgc3RhdGljIGludCBzZWc2X2ZpbGxfZW5jYXBfaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHQgICAgbmxhX3B1dF9pbjZfYWRkcihza2IsIFNFRzZfSVBUVU5ORUxfU1JDLCBcXHUwMDI2c2x3dC1cXHUwMDNldHVuc3JjKSlcXG4gXFx0XFx0cmV0dXJuIC1FTVNHU0laRTtcXG4gXFxuK1xcdGlmIChzbHd0LVxcdTAwM2V0YWJsZSBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgbmxhX3B1dF91MzIoc2tiLCBTRUc2X0lQVFVOTkVMX1RBQkxFLCBzbHd0LVxcdTAwM2V0YWJsZSkpXFxuK1xcdFxcdHJldHVybiAtRU1TR1NJWkU7XFxuK1xcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG5AQCAtODA5LDYgKzkwMyw5IEBAIHN0YXRpYyBpbnQgc2VnNl9lbmNhcF9ubHNpemUoc3RydWN0IGx3dHVubmVsX3N0YXRlICpsd3RzdGF0ZSlcXG4gXFx0aWYgKCFpcHY2X2FkZHJfYW55KFxcdTAwMjZzbHd0LVxcdTAwM2V0dW5zcmMpKVxcbiBcXHRcXHRubHNpemUgKz0gbmxhX3RvdGFsX3NpemUoc2l6ZW9mKHNsd3QtXFx1MDAzZXR1bnNyYykpO1xcbiBcXG4rXFx0aWYgKHNsd3QtXFx1MDAzZXRhYmxlKVxcbitcXHRcXHRubHNpemUgKz0gbmxhX3RvdGFsX3NpemUoc2l6ZW9mKHUzMikpO1xcbitcXG4gXFx0cmV0dXJuIG5sc2l6ZTtcXG4gfVxcbiBcXG5AQCAtODI2LDYgKzkyMyw5IEBAIHN0YXRpYyBpbnQgc2VnNl9lbmNhcF9jbXAoc3RydWN0IGx3dHVubmVsX3N0YXRlICphLCBzdHJ1Y3QgbHd0dW5uZWxfc3RhdGUgKmIpXFxuIFxcdGlmICghaXB2Nl9hZGRyX2VxdWFsKFxcdTAwMjZhX3Nsd3QtXFx1MDAzZXR1bnNyYywgXFx1MDAyNmJfc2x3dC1cXHUwMDNldHVuc3JjKSlcXG4gXFx0XFx0cmV0dXJuIDE7XFxuIFxcbitcXHRpZiAoYV9zbHd0LVxcdTAwM2V0YWJsZSAhPSBiX3Nsd3QtXFx1MDAzZXRhYmxlKVxcbitcXHRcXHRyZXR1cm4gMTtcXG4rXFxuIFxcdHJldHVybiBtZW1jbXAoYV9oZHIsIGJfaGRyLCBsZW4pO1xcbiB9XFxuIFxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvTWFrZWZpbGUgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvTWFrZWZpbGVcXG5pbmRleCA3MDhkOTYwYWUwN2Q1Yi4uNWRmMGM5NGFiMDYwMTggMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L01ha2VmaWxlXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L01ha2VmaWxlXFxuQEAgLTg1LDYgKzg1LDcgQEAgVEVTVF9QUk9HUyA6PSBcXFxcXFxuIFxcdHJ4dGltZXN0YW1wLnNoIFxcXFxcXG4gXFx0c2N0cF92cmYuc2ggXFxcXFxcbiBcXHRza2ZfbmV0X29mZi5zaCBcXFxcXFxuK1xcdHNydjZfZW5jYXBfbG9va3VwX2wzdnBuX3Rlc3Quc2ggXFxcXFxcbiBcXHRzcnY2X2VuZF9kdDQ2X2wzdnBuX3Rlc3Quc2ggXFxcXFxcbiBcXHRzcnY2X2VuZF9kdDRfbDN2cG5fdGVzdC5zaCBcXFxcXFxuIFxcdHNydjZfZW5kX2R0Nl9sM3Zwbl90ZXN0LnNoIFxcXFxcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L3NydjZfZW5jYXBfbG9va3VwX2wzdnBuX3Rlc3Quc2ggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvc3J2Nl9lbmNhcF9sb29rdXBfbDN2cG5fdGVzdC5zaFxcbm5ldyBmaWxlIG1vZGUgMTAwNzU1XFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLmQ2MjQ5MzAzYjdlYWExXFxuLS0tIC9kZXYvbnVsbFxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9zcnY2X2VuY2FwX2xvb2t1cF9sM3Zwbl90ZXN0LnNoXFxuQEAgLTAsMCArMSwxMDI3IEBAXFxuKyMhL2Jpbi9iYXNoXFxuKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4rI1xcbisjIGF1dGhvcjogQW5kcmVhIE1heWVyIFxcdTAwM2NhbmRyZWEubWF5ZXJAdW5pcm9tYTIuaXRcXHUwMDNlXFxuK1xcbisjIFRoaXMgdGVzdCBldmFsdWF0ZXMgdGhlIFNSdjYgZW5jYXAgXFxcImxvb2t1cFxcXCIgYXR0cmlidXRlLiBBZnRlciBlbmNhcHN1bGF0aW9uXFxuKyMgdGhlIHJvdXRlciBsb29rcyB1cCB0aGUgcm91dGUgZm9yIHRoZSBmaXJzdCBTSUQsIHRoYXQgaXMgdGhlIG91dGVyIElQdjZcXG4rIyBkZXN0aW5hdGlvbiBvZiB0aGUgZW5jYXBzdWxhdGVkIHBhY2tldC4gVGhlIGF0dHJpYnV0ZSBzZWxlY3RzIHRoZSBGSUIgdGFibGVcXG4rIyB1c2VkIGZvciB0aGlzIHBvc3QtZW5jYXAgU0lEIHJvdXRlIGxvb2t1cC5cXG4rI1xcbisjIFR3byByb3V0ZXJzIChydC0xLCBydC0yKSBwcm92aWRlIEwzIFZQTiBzZXJ2aWNlcyBvdmVyIGFuIElQdjYgdW5kZXJsYXlcXG4rIyAoZmQwMDo6LzY0KS4gRWFjaCByb3V0ZXIgdXNlcyBhIHNlcGFyYXRlIFZSRiBwZXIgdGVuYW50LCB3aXRoIGRlZmF1bHRcXG4rIyBibGFja2hvbGUgcm91dGVzIChJUHY0IGFuZCBJUHY2KSB0byBwcmV2ZW50IHRyYWZmaWMgZnJvbSBsZWFraW5nIG91dCBvZlxcbisjIHRoZSBWUkYuIFRlbmFudCB0cmFmZmljIGlzIGVuY2Fwc3VsYXRlZCwgdGhlbiBkZWNhcHN1bGF0ZWQgd2l0aCBhblxcbisjIEVuZC5EVDQ2LiBFYWNoIHJvdXRlciBwcm94aWVzIGJvdGggTkRQIGFuZCBBUlAuXFxuKyNcXG4rIyBUaGUgcm91dGVzIHRoYXQgbWF0Y2ggdGhlIGZpcnN0IFNJRHMgYXJlIGluc3RhbGxlZCBpbiBhIGRlZGljYXRlZCB1bmRlcmxheVxcbisjIHRhYmxlICg1MDApIHJhdGhlciB0aGFuIHRoZSBtYWluIHRhYmxlICgyNTQpLiBUaGUgZW5jYXAgcm91dGVzIHVzZVxcbisjIFxcXCJsb29rdXAgNTAwXFxcIiB0byBzZWxlY3QgdGhpcyB0YWJsZSBmb3IgdGhlIHBvc3QtZW5jYXAgU0lEIHJvdXRlIGxvb2t1cC5cXG4rI1xcbisjIFdpdGhvdXQgdGhlIFxcXCJsb29rdXBcXFwiIGF0dHJpYnV0ZSwgdGhlIHJvdXRlIGZvciB0aGUgZmlyc3QgU0lEIGNhbm5vdCBiZSBmb3VuZDpcXG4rIyAgLSBvbiB0aGUgaW5wdXQgcGF0aCAoZm9yd2FyZGVkIHRyYWZmaWMpLCB0aGUgbG9va3VwIHN0YXlzIGluIHRoZSBWUkZcXG4rIyAgICBhbmQgaGl0cyB0aGUgYmxhY2tob2xlO1xcbisjICAtIG9uIHRoZSBvdXRwdXQgcGF0aCAobG9jYWxseSBvcmlnaW5hdGVkIHRyYWZmaWMpLCB0aGUgbG9va3VwIGZhbGxzXFxuKyMgICAgdGhyb3VnaCB0byB0aGUgbWFpbiB0YWJsZSwgd2l0aCBubyByb3V0ZSB0byB0aGUgZmlyc3QgU0lELlxcbisjXFxuKyNcXG4rIyBMZWdlbmQgKHNwZWNpZmljIHBlci10ZW5hbnQgYWRkcmVzc2VzIGFyZSBpbiB0aGUgaW5zdGFudGlhdGlvbiB0YWJsZXMgYmVsb3cpOlxcbisjICAgWCAgICAgICAgICA9IHRlbmFudCBpZCBhbmQgVlJGIHRhYmxlIGlkOyB0d28gdGVuYW50czogMTAwIGFuZCAyMDBcXG4rIyAgICAgICAgICAgICAgICAoXFxcInRYXFxcIiBtZWFucyB0ZW5hbnQgWCwgZS5nLiB0MTAwLCB0MjAwKVxcbisjICAgYSwgYiAgICAgICA9IHRoZSB0d28gaG9zdCBpZHMgb2YgdGhlIHRlbmFudFxcbisjICAgSEEsIEhCICAgICA9IGFkZHJlc3NlcyBvZiBob3N0IGEsIGhvc3QgYlxcbisjICAgUkxPMSwgUkxPMiA9IHJsby1YIHJvdXRlciBsb29wYmFjayBhZGRyZXNzIG9uIHJ0LTEsIHJ0LTIgKHRlbmFudCBnYXRld2F5XFxuKyMgICAgICAgICAgICAgICAgZm9yIHRoZSBvdXRwdXQgcGF0aCwgZHVhbC1zdGFjaylcXG4rIyAgIHZyZi1YICAgICAgPSBwZXItdGVuYW50IFZSRiBvbiBlYWNoIHJvdXRlciAodGFibGUgWClcXG4rI1xcbisjIENvbnN0YW50cyAoc2FtZSBmb3IgZXZlcnkgdGVuYW50KTpcXG4rIyAgIHVuZGVybGF5ICAgPSB0YWJsZSA1MDA7IHBvc3QtZW5jYXAgU0lEIHJvdXRlIGxvb2t1cCAodmlhIFxcXCJsb29rdXAgNTAwXFxcIilcXG4rIyAgIGxvY2Fsc2lkICAgPSB0YWJsZSA5MDsgaG9sZHMgdGhlIGRlY2FwIFNJRHMgKEVuZC5EVDQ2KVxcbisjICAgZmQwMDo6LzY0ICA9IHVuZGVybGF5IGxpbmsgYmV0d2VlbiBydC0xIGFuZCBydC0yXFxuKyMgICB2ZXRoLXRYICAgID0gY2FmZTo6MjU0LzEwLjAuMC4yNTQgKHRlbmFudCBnYXRld2F5IG9uIHZldGgsIGJvdGggcm91dGVycylcXG4rI1xcbisjXFxuKyMgKy0tLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLStcXG4rIyB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgfFxcbisjIHwgICBocy10WC1hIG5ldG5zICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIGhzLXRYLWIgbmV0bnMgICB8XFxuKyMgfCAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHxcXG4rIyB8ICArLS0tLS0tLS0tLS0tLSsgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICstLS0tLS0tLS0tLS0tKyAgfFxcbisjIHwgIHwgICAgdmV0aDAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgfCAgICB2ZXRoMCAgICB8ICB8XFxuKyMgfCAgfCAgICAgSEEgICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICB8ICAgICBIQiAgICAgIHwgIHxcXG4rIyB8ICArLS0tLS0tLS0tLS0tLSsgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICstLS0tLS0tLS0tLS0tKyAgfFxcbisjIHwgICAgICAgIC4gICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIC4gICAgICAgICB8XFxuKyMgKy0tLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLStcXG4rIyAgICAgICAgICAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuXFxuKyMgICAgICAgICAgLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLlxcbisjICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXFxuKyMgfCAgICAgICAgLiAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgLiAgICAgICAgIHxcXG4rIyB8ICstLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgICB8ICAgfCAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLSsgfFxcbisjIHwgfCAgIHZldGgtdFggICAgIHwgICArLS0tLS0tLS0tLSsgIHwgICB8ICArLS0tLS0tLS0tLSsgICB8ICAgdmV0aC10WCAgICAgfCB8XFxuKyMgfCB8ICA6OjI1NC8uMjU0ICAgfCAgIHwgbG9jYWxzaWQgfCAgfCAgIHwgIHwgbG9jYWxzaWQgfCAgIHwgIDo6MjU0Ly4yNTQgICB8IHxcXG4rIyB8ICstLS0tLS0tKy0tLS0tLS0rICAgKy0tLS0tLS0tLS0rICB8ICAgfCAgKy0tLS0tLS0tLS0rICAgKy0tLS0tLS0rLS0tLS0tLSsgfFxcbisjIHwgICAgICAgICB8ICAgICAgICAgICArLS0tLS0tLS0tLSsgIHwgICB8ICArLS0tLS0tLS0tLSsgICAgICAgICAgIHwgICAgICAgICB8XFxuKyMgfCAgICArLS0tLSstLS0tKyAgICAgIHwgdW5kZXJsYXkgfCAgfCAgIHwgIHwgdW5kZXJsYXkgfCAgICAgICstLS0tKy0tLS0rICAgIHxcXG4rIyB8ICAgIHwgdnJmLVggICB8ICAgICAgKy0tLS0tLS0tLS0rICB8ICAgfCAgKy0tLS0tLS0tLS0rICAgICAgfCB2cmYtWCAgIHwgICAgfFxcbisjIHwgICAgKy0tLS0rLS0tLSsgICAgICAgICAgICAgICAgICAgIHwgICB8ICAgICAgICAgICAgICAgICAgICArLS0tLSstLS0tKyAgICB8XFxuKyMgfCAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHxcXG4rIyB8ICAgKy0tLS0tKy0tLS0rICAgICstLS0tLS0tLS0tLS0rICB8ICAgfCAgKy0tLS0tLS0tLS0tLSsgICAgKy0tLS0rLS0tLS0rICAgfFxcbisjIHwgICB8ICBybG8tWCAgIHwgICAgfCAgIHZldGgwICAgIHwgIHwgICB8ICB8ICAgdmV0aDAgICAgfCAgICB8ICBybG8tWCAgIHwgICB8XFxuKyMgfCAgIHwgICBSTE8xICAgfCAgICB8IGZkMDA6OjEvNjQgfC4ufC4uLnwuLnwgZmQwMDo6Mi82NCB8ICAgIHwgICBSTE8yICAgfCAgIHxcXG4rIyB8ICAgKy0tLS0tLS0tLS0rICAgICstLS0tLS0tLS0tLS0rICB8ICAgfCAgKy0tLS0tLS0tLS0tLSsgICAgKy0tLS0tLS0tLS0rICAgfFxcbisjIHwgICAgICAgICAgICAgIHJ0LTEgbmV0bnMgICAgICAgICAgIHwgICB8ICAgICAgICAgIHJ0LTIgbmV0bnMgICAgICAgICAgICAgICB8XFxuKyMgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcXG4rI1xcbisjXFxuKyMgUGVyLXRlbmFudCBpbnN0YW50aWF0aW9uOlxcbisjICstLS0tLSstLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tK1xcbisjIHwgIFggIHwgYSwgYiB8IEhBICAgICAgICAgICAgICAgIHwgSEIgICAgICAgICAgICAgICAgfFxcbisjICstLS0tLSstLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tK1xcbisjIHwgMTAwIHwgMSwgMiB8IGNhZmU6OjEsIDEwLjAuMC4xIHwgY2FmZTo6MiwgMTAuMC4wLjIgfFxcbisjIHwgMjAwIHwgMywgNCB8IGNhZmU6OjMsIDEwLjAuMC4zIHwgY2FmZTo6NCwgMTAuMC4wLjQgfFxcbisjICstLS0tLSstLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tK1xcbisjXFxuKyMgUm91dGVyIGxvb3BiYWNrIChybG8tWCkgYWRkcmVzc2VzLCBwZXIgdGVuYW50OlxcbisjICstLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcXG4rIyB8ICBYICB8IFJMTzEgKHJ0LTEpICAgICAgICAgICB8IFJMTzIgKHJ0LTIpICAgICAgICAgICB8XFxuKyMgKy0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xcbisjIHwgMTAwIHwgY2FmZTo6MTAxLCAxMC4wLjAuMTAxIHwgY2FmZTo6MTAyLCAxMC4wLjAuMTAyIHxcXG4rIyB8IDIwMCB8IGNhZmU6OjIwMSwgMTAuMC4wLjIwMSB8IGNhZmU6OjIwMiwgMTAuMC4wLjIwMiB8XFxuKyMgKy0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xcbisjXFxuKyNcXG4rIyBOZXR3b3JrIGNvbmZpZ3VyYXRpb25cXG4rIyA9PT09PT09PT09PT09PT09PT09PT1cXG4rI1xcbisjIHJ0LTE6IGxvY2Fsc2lkIHRhYmxlICh0YWJsZSA5MClcXG4rIyArLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcXG4rIyB8IHRlbmFudCB8IFNJRCAgICAgICAgICAgICAgICB8IEFjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcXG4rIyArLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcXG4rIyB8ICAxMDAgICB8IGZjMDA6MjoxOjEwMDo6MGQ0NiB8IGFwcGx5IFNSdjYgRW5kLkRUNDYgdnJmdGFibGUgMTAwIHxcXG4rIyB8ICAyMDAgICB8IGZjMDA6MjoxOjIwMDo6MGQ0NiB8IGFwcGx5IFNSdjYgRW5kLkRUNDYgdnJmdGFibGUgMjAwIHxcXG4rIyArLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcXG4rI1xcbisjIHJ0LTE6IHVuZGVybGF5IHRhYmxlICh0YWJsZSA1MDApIC0gcG9zdC1lbmNhcCBTSUQgcm91dGUgbG9va3VwXFxuKyMgKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXFxuKyMgfCB0ZW5hbnQgfCBTSUQgICAgICAgICAgICAgICAgfCBBY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICB8XFxuKyMgKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXFxuKyMgfCAgMTAwICAgfCBmYzAwOjE6MjoxMDA6OjBkNDYgfCBmb3J3YXJkIHZpYSBmZDAwOjoyIGRldiB2ZXRoMCB8XFxuKyMgfCAgMjAwICAgfCBmYzAwOjE6MjoyMDA6OjBkNDYgfCBmb3J3YXJkIHZpYSBmZDAwOjoyIGRldiB2ZXRoMCB8XFxuKyMgKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXFxuKyNcXG4rIyBydC0xOiBWUkYgdGFibGVzIChwZXIgdGVuYW50OiB2cmYtWCA9IHRhYmxlIFgpXFxuKyMgKy0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXFxuKyMgfCB0ZW5hbnQgfCBkc3QgICAgICAgIHwgZW5jYXAgYWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XFxuKyMgKy0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXFxuKyMgfCAxMDAgICAgfCBjYWZlOjoyICAgIHwgZW5jYXAgc2VncyBmYzAwOjE6MjoxMDA6OjBkNDYgbG9va3VwIDUwMCB8XFxuKyMgfCAgICAgICAgfCAxMC4wLjAuMiAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XFxuKyMgfCAgICAgICAgfCBjYWZlOjoxMDIgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XFxuKyMgfCAgICAgICAgfCAxMC4wLjAuMTAyIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XFxuKyMgfCAyMDAgICAgfCBjYWZlOjo0ICAgIHwgZW5jYXAgc2VncyBmYzAwOjE6MjoyMDA6OjBkNDYgbG9va3VwIDUwMCB8XFxuKyMgfCAgICAgICAgfCAxMC4wLjAuNCAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XFxuKyMgfCAgICAgICAgfCBjYWZlOjoyMDIgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XFxuKyMgfCAgICAgICAgfCAxMC4wLjAuMjAyIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XFxuKyMgKy0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXFxuKyNcXG4rI1xcbisjIHJ0LTI6IGxvY2Fsc2lkIHRhYmxlICh0YWJsZSA5MClcXG4rIyArLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcXG4rIyB8IHRlbmFudCB8IFNJRCAgICAgICAgICAgICAgICB8IEFjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcXG4rIyArLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcXG4rIyB8ICAxMDAgICB8IGZjMDA6MToyOjEwMDo6MGQ0NiB8IGFwcGx5IFNSdjYgRW5kLkRUNDYgdnJmdGFibGUgMTAwIHxcXG4rIyB8ICAyMDAgICB8IGZjMDA6MToyOjIwMDo6MGQ0NiB8IGFwcGx5IFNSdjYgRW5kLkRUNDYgdnJmdGFibGUgMjAwIHxcXG4rIyArLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcXG4rI1xcbisjIHJ0LTI6IHVuZGVybGF5IHRhYmxlICh0YWJsZSA1MDApIC0gcG9zdC1lbmNhcCBTSUQgcm91dGUgbG9va3VwXFxuKyMgKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXFxuKyMgfCB0ZW5hbnQgfCBTSUQgICAgICAgICAgICAgICAgfCBBY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICB8XFxuKyMgKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXFxuKyMgfCAgMTAwICAgfCBmYzAwOjI6MToxMDA6OjBkNDYgfCBmb3J3YXJkIHZpYSBmZDAwOjoxIGRldiB2ZXRoMCB8XFxuKyMgfCAgMjAwICAgfCBmYzAwOjI6MToyMDA6OjBkNDYgfCBmb3J3YXJkIHZpYSBmZDAwOjoxIGRldiB2ZXRoMCB8XFxuKyMgKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXFxuKyNcXG4rIyBydC0yOiBWUkYgdGFibGVzIChwZXIgdGVuYW50OiB2cmYtWCA9IHRhYmxlIFgpXFxuKyMgKy0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXFxuKyMgfCB0ZW5hbnQgfCBkc3QgICAgICAgIHwgZW5jYXAgYWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XFxuKyMgKy0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXFxuKyMgfCAxMDAgICAgfCBjYWZlOjoxICAgIHwgZW5jYXAgc2VncyBmYzAwOjI6MToxMDA6OjBkNDYgbG9va3VwIDUwMCB8XFxuKyMgfCAgICAgICAgfCAxMC4wLjAuMSAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XFxuKyMgfCAgICAgICAgfCBjYWZlOjoxMDEgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XFxuKyMgfCAgICAgICAgfCAxMC4wLjAuMTAxIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XFxuKyMgfCAyMDAgICAgfCBjYWZlOjozICAgIHwgZW5jYXAgc2VncyBmYzAwOjI6MToyMDA6OjBkNDYgbG9va3VwIDUwMCB8XFxuKyMgfCAgICAgICAgfCAxMC4wLjAuMyAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XFxuKyMgfCAgICAgICAgfCBjYWZlOjoyMDEgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XFxuKyMgfCAgICAgICAgfCAxMC4wLjAuMjAxIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XFxuKyMgKy0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXFxuKyMgV2l0aGluIGEgdGVuYW50LCBhIHNpbmdsZSBTSUQgcmVhY2hlcyB0aGUgYWRqYWNlbnQgcm91dGVyIChpdHMgbG9vcGJhY2spXFxuKyMgYW5kIHRoZSByZW1vdGUgaG9zdCBjb25uZWN0ZWQgdG8gaXQsIGluIGJvdGggSVB2NCBhbmQgSVB2Ni5cXG4rI1xcbisjIEZvciBib3RoIHJ0LTEgYW5kIHJ0LTIsIGVhY2ggVlJGIGFsc28gaGFzIHRoZSBjb25uZWN0ZWQgaG9zdCBwcmVmaXggKGNhZmU6Oi82NFxcbisjIG9yIDEwLjAuMC4wLzI0KSBhbmQgYSBkZWZhdWx0IGJsYWNraG9sZSAoSVB2NCBhbmQgSVB2NikuXFxuKyNcXG4rI1xcbisjIExvY2FsbHkgb3JpZ2luYXRlZCB0cmFmZmljIChvdXRwdXQgcGF0aClcXG4rIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxuKyNcXG4rIyBUaGUgY29uZmlndXJhdGlvbiBhYm92ZSBjb3ZlcnMgZm9yd2FyZGVkIHRyYWZmaWMsIHdoZXJlIHBhY2tldHMgYXJyaXZlIGZyb21cXG4rIyBhIGhvc3QgYW5kIGFyZSBlbmNhcHN1bGF0ZWQgYnkgdGhlIHJvdXRlci4gVG8gYWxzbyB0ZXN0IHJvdXRlci1vcmlnaW5hdGVkXFxuKyMgdHJhZmZpYywgZWFjaCByb3V0ZXIgcGluZ3MgdGhlIG90aGVyIHJvdXRlcidzIGxvb3BiYWNrIGFkZHJlc3MgdGhyb3VnaFxcbisjIHRoZSBWUE4uXFxuKyNcXG4rIyBFeGFtcGxlICh0ZW5hbnQgMTAwKSwgcnQtMSBwaW5ncyBjYWZlOjoxMDIgKHJ0LTIncyBsb29wYmFjayk6XFxuKyMgICAxLiBydC0xIGxvb2tzIHVwIGNhZmU6OjEwMiBpbiB2cmYtMTAwIGFuZCBlbmNhcHN1bGF0ZXMgaXQgKFNJRFxcbisjICAgICAgZmMwMDoxOjI6MTAwOjowZDQ2KSwgdGhlbiBcXFwibG9va3VwIDUwMFxcXCIgZmluZHMgdGhlIHJvdXRlIGZvciB0aGUgU0lEIGluIHRoZVxcbisjICAgICAgdW5kZXJsYXkgdGFibGUgKG5leHQgaG9wIGZkMDA6OjIpIGFuZCBmb3J3YXJkcyBpdDtcXG4rIyAgIDIuIHJ0LTIgZGVjYXBzdWxhdGVzIGl0IChsb2NhbHNpZCwgRW5kLkRUNDYpIGFuZCBkZWxpdmVycyBpdCBsb2NhbGx5XFxuKyMgICAgICAoY2FmZTo6MTAyIGlzIG9uIHRoZSBybG8tMTAwIGludGVyZmFjZSk7XFxuKyMgICAzLiBydC0yIHJlcGxpZXMgd2l0aCBkZXN0aW5hdGlvbiBjYWZlOjoxMDEgKHJ0LTEncyBsb29wYmFjaykuIHJ0LTIgbG9va3MgdXBcXG4rIyAgICAgIGNhZmU6OjEwMSBpbiB2cmYtMTAwIGFuZCBlbmNhcHN1bGF0ZXMgaXQgYmFjayB0byBydC0xIChhZ2FpbiB2aWEgXFxcImxvb2t1cFxcbisjICAgICAgNTAwXFxcIikuIHJ0LTEgZGVjYXBzdWxhdGVzIGl0IGFuZCBkZWxpdmVycyBpdC5cXG4rXFxuKyMgc2hlbGxjaGVjayBzb3VyY2U9bGliLnNoXFxuK3NvdXJjZSBsaWIuc2hcXG4rXFxuK3JlYWRvbmx5IExPQ0FMU0lEX1RBQkxFX0lEPTkwXFxuK3JlYWRvbmx5IFVOREVSTEFZX1RBQkxFX0lEPTUwMFxcbityZWFkb25seSBJUHY2X1JUX05FVFdPUks9ZmQwMFxcbityZWFkb25seSBJUHY2X0hTX05FVFdPUks9Y2FmZVxcbityZWFkb25seSBJUHY0X0hTX05FVFdPUks9MTAuMC4wXFxuK3JlYWRvbmx5IFZQTl9MT0NBVE9SX1NFUlZJQ0U9ZmMwMFxcbityZWFkb25seSBEVDQ2X0ZVTkM9MGQ0NlxcbityZWFkb25seSBEVU1NWV9ERVZOQU1FPWR1bTBcXG4rcmVhZG9ubHkgSVB2Nl9URVNUU19BRERSPTIwMDE6ZGI4OjoxXFxuK3JlYWRvbmx5IFRFU1RTX1RBQkxFX0lEPTU0MzIxXFxuK1BJTkdfVElNRU9VVF9TRUM9NFxcbitcXG4rU0VUVVBfRVJSPTFcXG4rXFxuK3JldD0ke2tzZnRfc2tpcH1cXG4rbnN1Y2Nlc3M9MFxcbituZmFpbD0wXFxuK1xcbitQQVVTRV9PTl9GQUlMPSR7UEFVU0VfT05fRkFJTDo9bm99XFxuK1xcbitsb2dfdGVzdCgpXFxuK3tcXG4rXFx0bG9jYWwgcmM9XFxcIiQxXFxcIlxcbitcXHRsb2NhbCBleHBlY3RlZD1cXFwiJDJcXFwiXFxuK1xcdGxvY2FsIG1zZz1cXFwiJDNcXFwiXFxuK1xcbitcXHRpZiBbIFxcXCIke3JjfVxcXCIgLWVxIFxcXCIke2V4cGVjdGVkfVxcXCIgXTsgdGhlblxcbitcXHRcXHRuc3VjY2Vzcz0kKChuc3VjY2VzcysxKSlcXG4rXFx0XFx0cHJpbnRmIFxcXCJcXFxcbiAgICBURVNUOiAlLTYwcyAgWyBPSyBdXFxcXG5cXFwiIFxcXCIke21zZ31cXFwiXFxuK1xcdGVsc2VcXG4rXFx0XFx0cmV0PTFcXG4rXFx0XFx0bmZhaWw9JCgobmZhaWwrMSkpXFxuK1xcdFxcdHByaW50ZiBcXFwiXFxcXG4gICAgVEVTVDogJS02MHMgIFtGQUlMXVxcXFxuXFxcIiBcXFwiJHttc2d9XFxcIlxcbitcXHRcXHRpZiBbIFxcXCIke1BBVVNFX09OX0ZBSUx9XFxcIiA9IFxcXCJ5ZXNcXFwiIF07IHRoZW5cXG4rXFx0XFx0XFx0ZWNob1xcbitcXHRcXHRcXHRlY2hvIFxcXCJoaXQgZW50ZXIgdG8gY29udGludWUsICdxJyB0byBxdWl0XFxcIlxcbitcXHRcXHRcXHRyZWFkIC1yIGFcXG4rXFx0XFx0XFx0WyBcXFwiJGFcXFwiID0gXFxcInFcXFwiIF0gXFx1MDAyNlxcdTAwMjYgZXhpdCAxXFxuK1xcdFxcdGZpXFxuK1xcdGZpXFxuK31cXG4rXFxuK3ByaW50X2xvZ190ZXN0X3Jlc3VsdHMoKVxcbit7XFxuK1xcdHByaW50ZiBcXFwiXFxcXG5UZXN0cyBwYXNzZWQ6ICUzZFxcXFxuXFxcIiBcXFwiJHtuc3VjY2Vzc31cXFwiXFxuK1xcdHByaW50ZiBcXFwiVGVzdHMgZmFpbGVkOiAlM2RcXFxcblxcXCIgICBcXFwiJHtuZmFpbH1cXFwiXFxuK1xcbitcXHQjIHdoZW4gYSB0ZXN0IGZhaWxzLCB0aGUgdmFsdWUgb2YgJ3JldCcgaXMgc2V0IHRvIDEgKGVycm9yIGNvZGUpLlxcbitcXHQjIENvbnZlcnNlbHksIHdoZW4gYWxsIHRlc3RzIGFyZSBwYXNzZWQgc3VjY2Vzc2Z1bGx5LCB0aGUgJ3JldCcgdmFsdWVcXG4rXFx0IyBpcyBzZXQgdG8gMCAoc3VjY2VzcyBjb2RlKS5cXG4rXFx0aWYgWyBcXFwiJHtyZXR9XFxcIiAtbmUgMSBdOyB0aGVuXFxuK1xcdFxcdHJldD0wXFxuK1xcdGZpXFxuK31cXG4rXFxuK2xvZ19zZWN0aW9uKClcXG4re1xcbitcXHRlY2hvXFxuK1xcdGVjaG8gXFxcIiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjXFxcIlxcbitcXHRlY2hvIFxcXCJURVNUIFNFQ1RJT046ICQqXFxcIlxcbitcXHRlY2hvIFxcXCIjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI1xcXCJcXG4rfVxcbitcXG4rZ2V0X3J0bmFtZSgpXFxuK3tcXG4rXFx0bG9jYWwgcnRpZD1cXFwiJDFcXFwiXFxuK1xcbitcXHRlY2hvIFxcXCJydF8ke3J0aWR9XFxcIlxcbit9XFxuK1xcbitnZXRfcnRfbnNuYW1lKClcXG4re1xcbitcXHRsb2NhbCBydGlkPVxcXCIkMVxcXCJcXG4rXFx0bG9jYWwgdmFybmFtZVxcbitcXG4rXFx0dmFybmFtZT1cXFwiJChnZXRfcnRuYW1lIFxcXCIke3J0aWR9XFxcIilcXFwiXFxuK1xcdGVjaG8gXFxcIiR7IXZhcm5hbWV9XFxcIlxcbit9XFxuK1xcbitnZXRfaHNuYW1lKClcXG4re1xcbitcXHRsb2NhbCB0aWQ9XFxcIiQxXFxcIlxcbitcXHRsb2NhbCBoc2lkPVxcXCIkMlxcXCJcXG4rXFxuK1xcdGVjaG8gXFxcImhzX3Qke3RpZH1fJHtoc2lkfVxcXCJcXG4rfVxcbitcXG4rZ2V0X2hzX25zbmFtZSgpXFxuK3tcXG4rXFx0bG9jYWwgdGlkPVxcXCIkMVxcXCJcXG4rXFx0bG9jYWwgaHNpZD1cXFwiJDJcXFwiXFxuK1xcdGxvY2FsIHZhcm5hbWVcXG4rXFxuK1xcdHZhcm5hbWU9XFxcIiQoZ2V0X2hzbmFtZSBcXFwiJHt0aWR9XFxcIiBcXFwiJHtoc2lkfVxcXCIpXFxcIlxcbitcXHRlY2hvIFxcXCIkeyF2YXJuYW1lfVxcXCJcXG4rfVxcbitcXG4rY2xlYW51cCgpXFxuK3tcXG4rXFx0aXAgbGluayBkZWwgdmV0aC1ydC0xIDJcXHUwMDNlL2Rldi9udWxsIHx8IHRydWVcXG4rXFx0aXAgbGluayBkZWwgdmV0aC1ydC0yIDJcXHUwMDNlL2Rldi9udWxsIHx8IHRydWVcXG4rXFxuK1xcdGNsZWFudXBfYWxsX25zXFxuK1xcbitcXHQjIGNoZWNrIHdoZXRoZXIgdGhlIHNldHVwIHBoYXNlIHdhcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5IG9yIG5vdC4gSW5cXG4rXFx0IyBjYXNlIG9mIGFuIGVycm9yIGR1cmluZyB0aGUgc2V0dXAgcGhhc2Ugb2YgdGhlIHRlc3RpbmcgZW52aXJvbm1lbnQsXFxuK1xcdCMgdGhlIHNlbGZ0ZXN0IGlzIGNvbnNpZGVyZWQgYXMgXFxcInNraXBwZWRcXFwiLlxcbitcXHRpZiBbIFxcXCIke1NFVFVQX0VSUn1cXFwiIC1uZSAwIF07IHRoZW5cXG4rXFx0XFx0ZWNobyBcXFwiU0tJUDogU2V0dGluZyB1cCB0aGUgdGVzdGluZyBlbnZpcm9ubWVudCBmYWlsZWRcXFwiXFxuK1xcdFxcdGV4aXQgXFxcIiR7a3NmdF9za2lwfVxcXCJcXG4rXFx0ZmlcXG4rXFxuK1xcdGV4aXQgXFxcIiR7cmV0fVxcXCJcXG4rfVxcbitcXG4rIyBIb3N0IGlkIG9mIHRoZSByb3V0ZXIgbG9vcGJhY2sgKHJsbykgZm9yIGEgKHJvdXRlciwgdGVuYW50KSBwYWlyLlxcbisjIEUuZy4gcnQtMS90ZW5hbnQgMTAwIC1cXHUwMDNlIDEwMSwgcnQtMi90ZW5hbnQgMjAwIC1cXHUwMDNlIDIwMi5cXG4rZ2V0X3Jsb19ob3N0aWQoKVxcbit7XFxuK1xcdGxvY2FsIHJ0aWQ9XFxcIiQxXFxcIlxcbitcXHRsb2NhbCB0aWQ9XFxcIiQyXFxcIlxcbitcXG4rXFx0ZWNobyBcXFwiJCgodGlkICsgcnRpZCkpXFxcIlxcbit9XFxuK1xcbitidWlsZF92cG5fc2lkKClcXG4re1xcbitcXHRsb2NhbCBydHNyYz1cXFwiJDFcXFwiXFxuK1xcdGxvY2FsIHJ0ZHN0PVxcXCIkMlxcXCJcXG4rXFx0bG9jYWwgdGlkPVxcXCIkM1xcXCJcXG4rXFxuK1xcdGVjaG8gXFxcIiR7VlBOX0xPQ0FUT1JfU0VSVklDRX06JHtydHNyY306JHtydGRzdH06JHt0aWR9Ojoke0RUNDZfRlVOQ31cXFwiXFxuK31cXG4rXFxuKyMgSW5zdGFsbCBhIGR1YWwtc3RhY2sgKElQdjYgYW5kIElQdjQpIGVuY2FwIHJvdXRlIGluIGEgVlJGIG9uIHRoZSBnaXZlblxcbisjIHJvdXRlci5cXG4rIyBhcmdzOlxcbisjICAkMSAtIHJvdXRlciBpZFxcbisjICAkMiAtIGhvc3QgcGFydCBvZiB0aGUgSVB2NiBkZXN0aW5hdGlvblxcbisjICAkMyAtIGhvc3QgcGFydCBvZiB0aGUgSVB2NCBkZXN0aW5hdGlvblxcbisjICAkNCAtIFNSdjYgU0lEIHVzZWQgYXMgdGhlIGVuY2FwIGRlc3RpbmF0aW9uXFxuKyMgICQ1IC0gdGVuYW50IGlkXFxuKyMgICQ2IC0gaWYgXFxcInRydWVcXFwiLCBhZGQgdGhlIFxcXCJsb29rdXBcXFwiIGF0dHJpYnV0ZSB0byB0aGUgZW5jYXAgcm91dGVcXG4rX19zZXRfZW5jYXBfcm91dGUoKVxcbit7XFxuK1xcdGxvY2FsIHJ0PVxcXCIkMVxcXCJcXG4rXFx0bG9jYWwgZHN0Nj1cXFwiJDJcXFwiXFxuK1xcdGxvY2FsIGRzdDQ9XFxcIiQzXFxcIlxcbitcXHRsb2NhbCBzaWQ9XFxcIiQ0XFxcIlxcbitcXHRsb2NhbCB0aWQ9XFxcIiQ1XFxcIlxcbitcXHRsb2NhbCB1c2VfbG9va3VwPVxcXCIkNlxcXCJcXG4rXFx0bG9jYWwgbG9va3VwPScnXFxuK1xcdGxvY2FsIHJ0bmFtZVxcbitcXG4rXFx0cnRuYW1lPVxcXCIkKGdldF9ydF9uc25hbWUgXFxcIiR7cnR9XFxcIilcXFwiXFxuK1xcbitcXHRpZiBbIFxcXCIke3VzZV9sb29rdXB9XFxcIiA9IFxcXCJ0cnVlXFxcIiBdOyB0aGVuXFxuK1xcdFxcdGxvb2t1cD1cXFwibG9va3VwICR7VU5ERVJMQVlfVEFCTEVfSUR9XFxcIlxcbitcXHRmaVxcbitcXG4rXFx0IyBzaGVsbGNoZWNrIGRpc2FibGU9U0MyMDg2XFxuK1xcdGlwIC1uZXRucyBcXFwiJHtydG5hbWV9XFxcIiAtNiByb3V0ZSByZXBsYWNlIFxcXFxcXG4rXFx0XFx0XFxcIiR7SVB2Nl9IU19ORVRXT1JLfTo6JHtkc3Q2fS8xMjhcXFwiIHZyZiBcXFwidnJmLSR7dGlkfVxcXCIgXFxcXFxcbitcXHRcXHRlbmNhcCBzZWc2IG1vZGUgZW5jYXAgc2VncyBcXFwiJHtzaWR9XFxcIiAke2xvb2t1cH0gZGV2IHZldGgwXFxuK1xcbitcXHQjIHNoZWxsY2hlY2sgZGlzYWJsZT1TQzIwODZcXG4rXFx0aXAgLW5ldG5zIFxcXCIke3J0bmFtZX1cXFwiIC00IHJvdXRlIHJlcGxhY2UgXFxcXFxcbitcXHRcXHRcXFwiJHtJUHY0X0hTX05FVFdPUkt9LiR7ZHN0NH0vMzJcXFwiIHZyZiBcXFwidnJmLSR7dGlkfVxcXCIgXFxcXFxcbitcXHRcXHRlbmNhcCBzZWc2IG1vZGUgZW5jYXAgc2VncyBcXFwiJHtzaWR9XFxcIiAke2xvb2t1cH0gZGV2IHZldGgwXFxuK31cXG4rXFxuKyMgSW5zdGFsbCB0aGUgZHVhbC1zdGFjayBlbmNhcCByb3V0ZSBmb3IgYSB0ZW5hbnQgaG9zdCBvbiBydCwgd2l0aCB0aGVcXG4rIyBcXFwibG9va3VwXFxcIiBhdHRyaWJ1dGUgc28gdGhlIGZpcnN0IFNJRCBpcyBsb29rZWQgdXAgaW4gdGhlIHVuZGVybGF5IHRhYmxlLlxcbisjIGFyZ3M6XFxuKyMgICQxIC0gcm91dGVyIGlkIHdoZXJlIHRoZSBlbmNhcCByb3V0ZSBpcyBpbnN0YWxsZWRcXG4rIyAgJDIgLSBob3N0IGRlc3RpbmF0aW9uIGlkIChob3N0IHBhcnQgb2YgY2FmZTo6XFx1MDAzY2lkXFx1MDAzZS8xMjggYW5kIDEwLjAuMC5cXHUwMDNjaWRcXHUwMDNlLzMyKVxcbisjICAkMyAtIFNSdjYgU0lEIHVzZWQgYXMgdGhlIGVuY2FwIGRlc3RpbmF0aW9uXFxuKyMgICQ0IC0gdGVuYW50IGlkXFxuK3NldF9ob3N0X2VuY2FwX3JvdXRlKClcXG4re1xcbitcXHRsb2NhbCBydD1cXFwiJDFcXFwiXFxuK1xcdGxvY2FsIGhzZHN0PVxcXCIkMlxcXCJcXG4rXFx0bG9jYWwgc2lkPVxcXCIkM1xcXCJcXG4rXFx0bG9jYWwgdGlkPVxcXCIkNFxcXCJcXG4rXFxuK1xcdF9fc2V0X2VuY2FwX3JvdXRlIFxcXCIke3J0fVxcXCIgXFxcIiR7aHNkc3R9XFxcIiBcXFwiJHtoc2RzdH1cXFwiIFxcXCIke3NpZH1cXFwiIFxcXCIke3RpZH1cXFwiIHRydWVcXG4rfVxcbitcXG4rc2V0X2hvc3RfZW5jYXBfcm91dGVfbm9sb29rdXAoKVxcbit7XFxuK1xcdGxvY2FsIHJ0PVxcXCIkMVxcXCJcXG4rXFx0bG9jYWwgaHNkc3Q9XFxcIiQyXFxcIlxcbitcXHRsb2NhbCBzaWQ9XFxcIiQzXFxcIlxcbitcXHRsb2NhbCB0aWQ9XFxcIiQ0XFxcIlxcbitcXG4rXFx0X19zZXRfZW5jYXBfcm91dGUgXFxcIiR7cnR9XFxcIiBcXFwiJHtoc2RzdH1cXFwiIFxcXCIke2hzZHN0fVxcXCIgXFxcIiR7c2lkfVxcXCIgXFxcIiR7dGlkfVxcXCIgZmFsc2VcXG4rfVxcbitcXG4rIyBJbnN0YWxsIHRoZSBkdWFsLXN0YWNrIGVuY2FwIHJvdXRlIG9uIHJ0c3JjIHRvd2FyZCBydGRzdCdzIHJsbyBsb29wYmFja1xcbisjIChSTE8xIG9yIFJMTzIsIHNlZSBoZWFkZXIpLCB3aXRoIHRoZSBcXFwibG9va3VwXFxcIiBhdHRyaWJ1dGUgc28gdGhlIGZpcnN0XFxuKyMgU0lEIGlzIGxvb2tlZCB1cCBpbiB0aGUgdW5kZXJsYXkgdGFibGUuXFxuKyMgYXJnczpcXG4rIyAgJDEgLSByb3V0ZXIgaWQgd2hlcmUgdGhlIGVuY2FwIHJvdXRlIGlzIGluc3RhbGxlZFxcbisjICAkMiAtIHJvdXRlciBpZCB3aG9zZSBsb29wYmFjayBhZGRyZXNzIGlzIHRoZSByb3V0ZSBkZXN0aW5hdGlvblxcbisjICAkMyAtIFNSdjYgU0lEIHVzZWQgYXMgdGhlIGVuY2FwIGRlc3RpbmF0aW9uXFxuKyMgICQ0IC0gdGVuYW50IGlkXFxuK3NldF9nd19lbmNhcF9yb3V0ZSgpXFxuK3tcXG4rXFx0bG9jYWwgcnRzcmM9XFxcIiQxXFxcIlxcbitcXHRsb2NhbCBydGRzdD1cXFwiJDJcXFwiXFxuK1xcdGxvY2FsIHNpZD1cXFwiJDNcXFwiXFxuK1xcdGxvY2FsIHRpZD1cXFwiJDRcXFwiXFxuK1xcdGxvY2FsIGRzdFxcbitcXG4rXFx0ZHN0PVxcXCIkKGdldF9ybG9faG9zdGlkIFxcXCIke3J0ZHN0fVxcXCIgXFxcIiR7dGlkfVxcXCIpXFxcIlxcbitcXG4rXFx0X19zZXRfZW5jYXBfcm91dGUgXFxcIiR7cnRzcmN9XFxcIiBcXFwiJHtkc3R9XFxcIiBcXFwiJHtkc3R9XFxcIiBcXFwiJHtzaWR9XFxcIiBcXFwiJHt0aWR9XFxcIiB0cnVlXFxuK31cXG4rXFxuK3NldF9nd19lbmNhcF9yb3V0ZV9ub2xvb2t1cCgpXFxuK3tcXG4rXFx0bG9jYWwgcnRzcmM9XFxcIiQxXFxcIlxcbitcXHRsb2NhbCBydGRzdD1cXFwiJDJcXFwiXFxuK1xcdGxvY2FsIHNpZD1cXFwiJDNcXFwiXFxuK1xcdGxvY2FsIHRpZD1cXFwiJDRcXFwiXFxuK1xcdGxvY2FsIGRzdFxcbitcXG4rXFx0ZHN0PVxcXCIkKGdldF9ybG9faG9zdGlkIFxcXCIke3J0ZHN0fVxcXCIgXFxcIiR7dGlkfVxcXCIpXFxcIlxcbitcXG4rXFx0X19zZXRfZW5jYXBfcm91dGUgXFxcIiR7cnRzcmN9XFxcIiBcXFwiJHtkc3R9XFxcIiBcXFwiJHtkc3R9XFxcIiBcXFwiJHtzaWR9XFxcIiBcXFwiJHt0aWR9XFxcIiBmYWxzZVxcbit9XFxuK1xcbisjIFNldHVwIHRoZSBiYXNpYyBuZXR3b3JraW5nIGZvciBhIHJvdXRlclxcbitzZXR1cF9ydF9uZXR3b3JraW5nKClcXG4re1xcbitcXHRsb2NhbCBpZD1cXFwiJDFcXFwiXFxuK1xcdGxvY2FsIG5zbmFtZVxcbitcXG4rXFx0bnNuYW1lPVxcXCIkKGdldF9ydF9uc25hbWUgXFxcIiR7aWR9XFxcIilcXFwiXFxuK1xcbitcXHRpcCBsaW5rIHNldCBcXFwidmV0aC1ydC0ke2lkfVxcXCIgbmV0bnMgXFxcIiR7bnNuYW1lfVxcXCJcXG4rXFx0aXAgLW5ldG5zIFxcXCIke25zbmFtZX1cXFwiIGxpbmsgc2V0IFxcXCJ2ZXRoLXJ0LSR7aWR9XFxcIiBuYW1lIHZldGgwXFxuK1xcbitcXHRpcCBuZXRucyBleGVjIFxcXCIke25zbmFtZX1cXFwiIHN5c2N0bCAtd3EgbmV0LmlwdjYuY29uZi5hbGwuYWNjZXB0X2RhZD0wXFxuK1xcdGlwIG5ldG5zIGV4ZWMgXFxcIiR7bnNuYW1lfVxcXCIgc3lzY3RsIC13cSBuZXQuaXB2Ni5jb25mLmRlZmF1bHQuYWNjZXB0X2RhZD0wXFxuK1xcbitcXHRpcCAtbmV0bnMgXFxcIiR7bnNuYW1lfVxcXCIgYWRkciBhZGQgXFxcIiR7SVB2Nl9SVF9ORVRXT1JLfTo6JHtpZH0vNjRcXFwiIGRldiB2ZXRoMCBub2RhZFxcbitcXHRpcCAtbmV0bnMgXFxcIiR7bnNuYW1lfVxcXCIgbGluayBzZXQgdmV0aDAgdXBcXG4rXFxuK1xcdGlwIG5ldG5zIGV4ZWMgXFxcIiR7bnNuYW1lfVxcXCIgc3lzY3RsIC13cSBuZXQuaXB2NC5pcF9mb3J3YXJkPTFcXG4rXFx0aXAgbmV0bnMgZXhlYyBcXFwiJHtuc25hbWV9XFxcIiBzeXNjdGwgLXdxIG5ldC5pcHY2LmNvbmYuYWxsLmZvcndhcmRpbmc9MVxcbit9XFxuK1xcbisjIFNldHVwIGEgaG9zdCBuYW1lc3BhY2UgYW5kIGF0dGFjaCBpdCB0byBpdHMgZ2F0ZXdheVxcbitzZXR1cF9ocygpXFxuK3tcXG4rXFx0bG9jYWwgaGlkPVxcXCIkMVxcXCJcXG4rXFx0bG9jYWwgcmlkPVxcXCIkMlxcXCJcXG4rXFx0bG9jYWwgdGlkPVxcXCIkM1xcXCJcXG4rXFx0bG9jYWwgcnR2ZXRoPVxcXCJ2ZXRoLXQke3RpZH1cXFwiXFxuK1xcdGxvY2FsIGhzbmFtZVxcbitcXHRsb2NhbCBydG5hbWVcXG4rXFxuK1xcdGhzbmFtZT1cXFwiJChnZXRfaHNfbnNuYW1lIFxcXCIke3RpZH1cXFwiIFxcXCIke2hpZH1cXFwiKVxcXCJcXG4rXFx0cnRuYW1lPVxcXCIkKGdldF9ydF9uc25hbWUgXFxcIiR7cmlkfVxcXCIpXFxcIlxcbitcXG4rXFx0aXAgbmV0bnMgZXhlYyBcXFwiJHtoc25hbWV9XFxcIiBzeXNjdGwgLXdxIG5ldC5pcHY2LmNvbmYuYWxsLmFjY2VwdF9kYWQ9MFxcbitcXHRpcCBuZXRucyBleGVjIFxcXCIke2hzbmFtZX1cXFwiIHN5c2N0bCAtd3EgbmV0LmlwdjYuY29uZi5kZWZhdWx0LmFjY2VwdF9kYWQ9MFxcbitcXG4rXFx0aXAgLW5ldG5zIFxcXCIke2hzbmFtZX1cXFwiIGxpbmsgYWRkIHZldGgwIHR5cGUgdmV0aCBwZWVyIG5hbWUgXFxcIiR7cnR2ZXRofVxcXCJcXG4rXFx0aXAgLW5ldG5zIFxcXCIke2hzbmFtZX1cXFwiIGxpbmsgc2V0IFxcXCIke3J0dmV0aH1cXFwiIG5ldG5zIFxcXCIke3J0bmFtZX1cXFwiXFxuK1xcbitcXHRpcCAtbmV0bnMgXFxcIiR7aHNuYW1lfVxcXCIgYWRkciBhZGQgXFxcXFxcbitcXHRcXHRcXFwiJHtJUHY2X0hTX05FVFdPUkt9Ojoke2hpZH0vNjRcXFwiIGRldiB2ZXRoMCBub2RhZFxcbitcXHRpcCAtbmV0bnMgXFxcIiR7aHNuYW1lfVxcXCIgYWRkciBhZGQgXFxcXFxcbitcXHRcXHRcXFwiJHtJUHY0X0hTX05FVFdPUkt9LiR7aGlkfS8yNFxcXCIgZGV2IHZldGgwXFxuK1xcbitcXHRpcCAtbmV0bnMgXFxcIiR7aHNuYW1lfVxcXCIgbGluayBzZXQgdmV0aDAgdXBcXG4rfVxcbitcXG4rIyBTZXR1cCB0aGUgcGVyLXRlbmFudCBWUkYgb24gYSByb3V0ZXIgKGdhdGV3YXksIGxvb3BiYWNrLCBibGFja2hvbGUpXFxuK3NldHVwX3J0KClcXG4re1xcbitcXHRsb2NhbCByaWQ9XFxcIiQxXFxcIlxcbitcXHRsb2NhbCB0aWQ9XFxcIiQyXFxcIlxcbitcXHRsb2NhbCBydHZldGg9XFxcInZldGgtdCR7dGlkfVxcXCJcXG4rXFx0bG9jYWwgcmxvX2Rldj1cXFwicmxvLSR7dGlkfVxcXCJcXG4rXFx0bG9jYWwgcnRuYW1lXFxuK1xcdGxvY2FsIGd3X2FkZHJfdjZcXG4rXFx0bG9jYWwgZ3dfYWRkcl92NFxcbitcXG4rXFx0cnRuYW1lPVxcXCIkKGdldF9ydF9uc25hbWUgXFxcIiR7cmlkfVxcXCIpXFxcIlxcbitcXG4rXFx0Z3dfYWRkcl92Nj1cXFwiJHtJUHY2X0hTX05FVFdPUkt9OjokKGdldF9ybG9faG9zdGlkIFxcXCIke3JpZH1cXFwiIFxcXCIke3RpZH1cXFwiKVxcXCJcXG4rXFx0Z3dfYWRkcl92ND1cXFwiJHtJUHY0X0hTX05FVFdPUkt9LiQoZ2V0X3Jsb19ob3N0aWQgXFxcIiR7cmlkfVxcXCIgXFxcIiR7dGlkfVxcXCIpXFxcIlxcbitcXG4rXFx0aXAgLW5ldG5zIFxcXCIke3J0bmFtZX1cXFwiIGxpbmsgYWRkIFxcXCJ2cmYtJHt0aWR9XFxcIiB0eXBlIHZyZiB0YWJsZSBcXFwiJHt0aWR9XFxcIlxcbitcXHRpcCAtbmV0bnMgXFxcIiR7cnRuYW1lfVxcXCIgbGluayBzZXQgXFxcInZyZi0ke3RpZH1cXFwiIHVwXFxuK1xcbitcXHRpcCAtbmV0bnMgXFxcIiR7cnRuYW1lfVxcXCIgbGluayBzZXQgXFxcIiR7cnR2ZXRofVxcXCIgbWFzdGVyIFxcXCJ2cmYtJHt0aWR9XFxcIlxcbitcXG4rXFx0aXAgLW5ldG5zIFxcXCIke3J0bmFtZX1cXFwiIGFkZHIgYWRkIFxcXFxcXG4rXFx0XFx0XFxcIiR7SVB2Nl9IU19ORVRXT1JLfTo6MjU0LzY0XFxcIiBkZXYgXFxcIiR7cnR2ZXRofVxcXCIgbm9kYWRcXG4rXFx0aXAgLW5ldG5zIFxcXCIke3J0bmFtZX1cXFwiIGFkZHIgYWRkIFxcXFxcXG4rXFx0XFx0XFxcIiR7SVB2NF9IU19ORVRXT1JLfS4yNTQvMjRcXFwiIGRldiBcXFwiJHtydHZldGh9XFxcIlxcbitcXG4rXFx0aXAgLW5ldG5zIFxcXCIke3J0bmFtZX1cXFwiIGxpbmsgc2V0IFxcXCIke3J0dmV0aH1cXFwiIHVwXFxuK1xcbitcXHRpcCBuZXRucyBleGVjIFxcXCIke3J0bmFtZX1cXFwiIFxcXFxcXG4rXFx0XFx0c3lzY3RsIC13cSBcXFwibmV0LmlwdjYuY29uZi4ke3J0dmV0aH0ucHJveHlfbmRwPTFcXFwiXFxuK1xcdGlwIG5ldG5zIGV4ZWMgXFxcIiR7cnRuYW1lfVxcXCIgXFxcXFxcbitcXHRcXHRzeXNjdGwgLXdxIFxcXCJuZXQuaXB2NC5jb25mLiR7cnR2ZXRofS5wcm94eV9hcnA9MVxcXCJcXG4rXFxuK1xcdGlwIG5ldG5zIGV4ZWMgXFxcIiR7cnRuYW1lfVxcXCIgc2ggLWMgXFxcImVjaG8gMSBcXHUwMDNlIC9wcm9jL3N5cy9uZXQvdnJmL3N0cmljdF9tb2RlXFxcIlxcbitcXG4rXFx0IyByb3V0ZXIgbG9vcGJhY2sgaW50ZXJmYWNlIGZvciBsb2NhbGx5IG9yaWdpbmF0ZWQgdHJhZmZpY1xcbitcXHRpcCAtbmV0bnMgXFxcIiR7cnRuYW1lfVxcXCIgbGluayBhZGQgXFxcIiR7cmxvX2Rldn1cXFwiIHR5cGUgZHVtbXlcXG4rXFx0aXAgLW5ldG5zIFxcXCIke3J0bmFtZX1cXFwiIGxpbmsgc2V0IFxcXCIke3Jsb19kZXZ9XFxcIiBtYXN0ZXIgXFxcInZyZi0ke3RpZH1cXFwiXFxuK1xcbitcXHRpcCAtbmV0bnMgXFxcIiR7cnRuYW1lfVxcXCIgYWRkciBhZGQgXFxcIiR7Z3dfYWRkcl92Nn0vMTI4XFxcIiBcXFxcXFxuK1xcdFxcdGRldiBcXFwiJHtybG9fZGV2fVxcXCIgbm9kYWRcXG4rXFx0aXAgLW5ldG5zIFxcXCIke3J0bmFtZX1cXFwiIGFkZHIgYWRkIFxcXCIke2d3X2FkZHJfdjR9LzMyXFxcIiBcXFxcXFxuK1xcdFxcdGRldiBcXFwiJHtybG9fZGV2fVxcXCJcXG4rXFxuK1xcdGlwIC1uZXRucyBcXFwiJHtydG5hbWV9XFxcIiBsaW5rIHNldCBcXFwiJHtybG9fZGV2fVxcXCIgdXBcXG4rXFxuK1xcdCMgZGVmYXVsdCBibGFja2hvbGUgcm91dGVzIGluIHRoZSBWUkY6IGFueSB0cmFmZmljIHRoYXQgZG9lcyBub3QgbWF0Y2hcXG4rXFx0IyBhIHNwZWNpZmljIHJvdXRlIGlzIGRyb3BwZWQuIFdpdGhvdXQgdGhlIFxcXCJsb29rdXBcXFwiIGF0dHJpYnV0ZSBvbiB0aGVcXG4rXFx0IyBlbmNhcCByb3V0ZSwgdGhlIHJvdXRlIGZvciB0aGUgZmlyc3QgU0lEIGNhbm5vdCBiZSBmb3VuZCBmcm9tIHdpdGhpblxcbitcXHQjIHRoZSBWUkYuXFxuK1xcdGlwIC1uZXRucyBcXFwiJHtydG5hbWV9XFxcIiAtNiByb3V0ZSBhZGQgYmxhY2tob2xlIGRlZmF1bHQgbWV0cmljIDQyNzgxOTgyNzIgXFxcXFxcbitcXHRcXHR2cmYgXFxcInZyZi0ke3RpZH1cXFwiXFxuK1xcdGlwIC1uZXRucyBcXFwiJHtydG5hbWV9XFxcIiAtNCByb3V0ZSBhZGQgYmxhY2tob2xlIGRlZmF1bHQgbWV0cmljIDQyNzgxOTgyNzIgXFxcXFxcbitcXHRcXHR2cmYgXFxcInZyZi0ke3RpZH1cXFwiXFxuK31cXG4rXFxuKyMgQ29uZmlndXJlIGEgb25lLXdheSBWUE4gcGF0aCB0b3dhcmRzIGhzZHN0IChvbiBydGRzdCkgZm9yIHRlbmFudCB0aWQuXFxuKyMgVGhlIGVuY2FwIHNpZGUgaXMgc2V0IHVwIG9uIHJ0c3JjIGFuZCB0aGUgZGVjYXAgc2lkZSBvbiBydGRzdC5cXG4rIyBhcmdzOlxcbisjICAkMSAtIHJvdXRlciBpZCB3aGVyZSB0aGUgZW5jYXAgc2lkZSBpcyBzZXQgdXBcXG4rIyAgJDIgLSBob3N0IGlkIG9mIHRoZSBkZXN0aW5hdGlvbiBob3N0XFxuKyMgICQzIC0gcm91dGVyIGlkIG9mIHRoZSBkZXN0aW5hdGlvbiByb3V0ZXIgKGNvbm5lY3RlZCB0byB0aGUgZGVzdGluYXRpb24gaG9zdClcXG4rIyAgJDQgLSB0ZW5hbnQgaWRcXG4rc2V0dXBfdnBuX2NvbmZpZygpXFxuK3tcXG4rXFx0bG9jYWwgcnRzcmM9XFxcIiQxXFxcIlxcbitcXHRsb2NhbCBoc2RzdD1cXFwiJDJcXFwiXFxuK1xcdGxvY2FsIHJ0ZHN0PVxcXCIkM1xcXCJcXG4rXFx0bG9jYWwgdGlkPVxcXCIkNFxcXCJcXG4rXFx0bG9jYWwgcnR2ZXRoPVxcXCJ2ZXRoLXQke3RpZH1cXFwiXFxuK1xcdGxvY2FsIHJ0c3JjX25hbWVcXG4rXFx0bG9jYWwgcnRkc3RfbmFtZVxcbitcXHRsb2NhbCB2cG5fc2lkXFxuK1xcbitcXHRydHNyY19uYW1lPVxcXCIkKGdldF9ydF9uc25hbWUgXFxcIiR7cnRzcmN9XFxcIilcXFwiXFxuK1xcdHJ0ZHN0X25hbWU9XFxcIiQoZ2V0X3J0X25zbmFtZSBcXFwiJHtydGRzdH1cXFwiKVxcXCJcXG4rXFx0dnBuX3NpZD1cXFwiJChidWlsZF92cG5fc2lkIFxcXCIke3J0c3JjfVxcXCIgXFxcIiR7cnRkc3R9XFxcIiBcXFwiJHt0aWR9XFxcIilcXFwiXFxuK1xcbitcXHRpcCAtbmV0bnMgXFxcIiR7cnRzcmNfbmFtZX1cXFwiIC02IG5laWdoIGFkZCBwcm94eSBcXFxcXFxuK1xcdFxcdFxcXCIke0lQdjZfSFNfTkVUV09SS306OiR7aHNkc3R9XFxcIiBkZXYgXFxcIiR7cnR2ZXRofVxcXCJcXG4rXFx0c2V0X2hvc3RfZW5jYXBfcm91dGUgXFxcIiR7cnRzcmN9XFxcIiBcXFwiJHtoc2RzdH1cXFwiIFxcXCIke3Zwbl9zaWR9XFxcIiBcXFwiJHt0aWR9XFxcIlxcbitcXG4rXFx0aXAgLW5ldG5zIFxcXCIke3J0c3JjX25hbWV9XFxcIiAtNiByb3V0ZSBhZGQgXFxcIiR7dnBuX3NpZH0vMTI4XFxcIiBcXFxcXFxuK1xcdFxcdHRhYmxlIFxcXCIke1VOREVSTEFZX1RBQkxFX0lEfVxcXCIgXFxcXFxcbitcXHRcXHR2aWEgXFxcImZkMDA6OiR7cnRkc3R9XFxcIiBkZXYgdmV0aDBcXG4rXFxuK1xcdCMgc2V0IHRoZSBkZWNhcCByb3V0ZSBmb3IgZGVjYXBzdWxhdGluZyBwYWNrZXRzIGFycml2aW5nIGZyb20gcnRzcmNcXG4rXFx0IyBhbmQgZGVzdGluZWQgdG8gaHNkc3RcXG4rXFx0aXAgLW5ldG5zIFxcXCIke3J0ZHN0X25hbWV9XFxcIiAtNiByb3V0ZSBhZGQgXFxcIiR7dnBuX3NpZH0vMTI4XFxcIiBcXFxcXFxuK1xcdFxcdHRhYmxlIFxcXCIke0xPQ0FMU0lEX1RBQkxFX0lEfVxcXCIgXFxcXFxcbitcXHRcXHRlbmNhcCBzZWc2bG9jYWwgYWN0aW9uIEVuZC5EVDQ2IFxcXFxcXG4rXFx0XFx0dnJmdGFibGUgXFxcIiR7dGlkfVxcXCIgZGV2IFxcXCJ2cmYtJHt0aWR9XFxcIlxcbitcXG4rXFx0IyBhbGwgU0lEcyBmb3IgVlBOcyBzdGFydCB3aXRoIGEgY29tbW9uIGxvY2F0b3Igd2hpY2ggaXMgZmMwMDo6LzE2LlxcbitcXHQjIFJvdXRlcyBmb3IgaGFuZGxpbmcgdGhlIFNSdjYgRW5kLkRUKiBiZWhhdmlvciBpbnN0YW5jZXMgYXJlIGdyb3VwZWRcXG4rXFx0IyB0b2dldGhlciBpbiB0aGUgJ2xvY2Fsc2lkJyB0YWJsZS5cXG4rXFx0I1xcbitcXHQjIE5PVEU6IGFkZGVkIG9ubHkgb25jZVxcbitcXHRpZiAhIGlwIC1uZXRucyBcXFwiJHtydGRzdF9uYW1lfVxcXCIgLTYgcnVsZSBzaG93IHwgXFxcXFxcbitcXHQgICAgZ3JlcCAtcSBcXFwidG8gJHtWUE5fTE9DQVRPUl9TRVJWSUNFfTo6LzE2IGxvb2t1cCAke0xPQ0FMU0lEX1RBQkxFX0lEfVxcXCI7IHRoZW5cXG4rXFx0XFx0aXAgLW5ldG5zIFxcXCIke3J0ZHN0X25hbWV9XFxcIiAtNiBydWxlIGFkZCBcXFxcXFxuK1xcdFxcdFxcdHRvIFxcXCIke1ZQTl9MT0NBVE9SX1NFUlZJQ0V9OjovMTZcXFwiIFxcXFxcXG4rXFx0XFx0XFx0bG9va3VwIFxcXCIke0xPQ0FMU0lEX1RBQkxFX0lEfVxcXCIgcHJpbyA5OTlcXG4rXFx0ZmlcXG4rfVxcbitcXG4rIyBDb25maWd1cmUgcnRzcmMgdG8gcmVhY2ggcnRkc3QncyBsb29wYmFjayBhZGRyZXNzIHRocm91Z2ggdGhlIFZQTi5cXG4rIyBhcmdzOlxcbisjICAkMSAtIHJvdXRlciBpZCB3aGVyZSB0aGUgZW5jYXAgcm91dGUgaXMgaW5zdGFsbGVkXFxuKyMgICQyIC0gcm91dGVyIGlkIHdob3NlIGxvb3BiYWNrIGlzIHRoZSBkZXN0aW5hdGlvblxcbisjICAkMyAtIHRlbmFudCBpZFxcbitzZXR1cF92cG5fZ3dfZW5jYXAoKVxcbit7XFxuK1xcdGxvY2FsIHJ0c3JjPVxcXCIkMVxcXCJcXG4rXFx0bG9jYWwgcnRkc3Q9XFxcIiQyXFxcIlxcbitcXHRsb2NhbCB0aWQ9XFxcIiQzXFxcIlxcbitcXHRsb2NhbCBzaWRcXG4rXFxuK1xcdHNpZD1cXFwiJChidWlsZF92cG5fc2lkIFxcXCIke3J0c3JjfVxcXCIgXFxcIiR7cnRkc3R9XFxcIiBcXFwiJHt0aWR9XFxcIilcXFwiXFxuK1xcbitcXHRzZXRfZ3dfZW5jYXBfcm91dGUgXFxcIiR7cnRzcmN9XFxcIiBcXFwiJHtydGRzdH1cXFwiIFxcXCIke3NpZH1cXFwiIFxcXCIke3RpZH1cXFwiXFxuK31cXG4rXFxuK3NldHVwKClcXG4re1xcbitcXHRpcCBsaW5rIGFkZCB2ZXRoLXJ0LTEgdHlwZSB2ZXRoIHBlZXIgbmFtZSB2ZXRoLXJ0LTJcXG4rXFx0c2V0dXBfbnMgcnRfMSBydF8yXFxuK1xcdHNldHVwX3J0X25ldHdvcmtpbmcgMVxcbitcXHRzZXR1cF9ydF9uZXR3b3JraW5nIDJcXG4rXFxuK1xcdCMgc2V0dXAgdHdvIGhvc3RzIGZvciB0aGUgdGVuYW50IDEwMC5cXG4rXFx0IyAgLSBob3N0IGhzLXQxMDAtMSBpcyBkaXJlY3RseSBjb25uZWN0ZWQgdG8gdGhlIHJvdXRlciBydC0xO1xcbitcXHQjICAtIGhvc3QgaHMtdDEwMC0yIGlzIGRpcmVjdGx5IGNvbm5lY3RlZCB0byB0aGUgcm91dGVyIHJ0LTIuXFxuK1xcdHNldHVwX25zIGhzX3QxMDBfMSBoc190MTAwXzJcXG4rXFx0c2V0dXBfaHMgMSAxIDEwMFxcbitcXHRzZXR1cF9ocyAyIDIgMTAwXFxuK1xcbitcXHQjIHNldHVwIHR3byBob3N0cyBmb3IgdGhlIHRlbmFudCAyMDAuXFxuK1xcdCMgIC0gaG9zdCBocy10MjAwLTMgaXMgZGlyZWN0bHkgY29ubmVjdGVkIHRvIHRoZSByb3V0ZXIgcnQtMTtcXG4rXFx0IyAgLSBob3N0IGhzLXQyMDAtNCBpcyBkaXJlY3RseSBjb25uZWN0ZWQgdG8gdGhlIHJvdXRlciBydC0yLlxcbitcXHRzZXR1cF9ucyBoc190MjAwXzMgaHNfdDIwMF80XFxuK1xcdHNldHVwX2hzIDMgMSAyMDBcXG4rXFx0c2V0dXBfaHMgNCAyIDIwMFxcbitcXG4rXFx0IyBjb25maWd1cmUgZWFjaCByb3V0ZXIgZm9yIGVhY2ggdGVuYW50OiBWUkYsIGJsYWNraG9sZSByb3V0ZXMsXFxuK1xcdCMgcm91dGVyIGxvb3BiYWNrIGludGVyZmFjZVxcbitcXHRzZXR1cF9ydCAxIDEwMFxcbitcXHRzZXR1cF9ydCAyIDEwMFxcbitcXHRzZXR1cF9ydCAxIDIwMFxcbitcXHRzZXR1cF9ydCAyIDIwMFxcbitcXG4rXFx0IyBzZXR1cCB0aGUgTDMgVlBOIHdoaWNoIGNvbm5lY3RzIHRoZSBob3N0IGhzLXQxMDAtMSBhbmQgaG9zdCBocy10MTAwLTJcXG4rXFx0IyB3aXRoaW4gdGhlIHNhbWUgdGVuYW50IDEwMC5cXG4rXFx0c2V0dXBfdnBuX2NvbmZpZyAxIDIgMiAxMDBcXG4rXFx0c2V0dXBfdnBuX2NvbmZpZyAyIDEgMSAxMDBcXG4rXFxuK1xcdCMgc2V0dXAgdGhlIEwzIFZQTiB3aGljaCBjb25uZWN0cyB0aGUgaG9zdCBocy10MjAwLTMgYW5kIGhvc3QgaHMtdDIwMC00XFxuK1xcdCMgd2l0aGluIHRoZSBzYW1lIHRlbmFudCAyMDAuXFxuK1xcdHNldHVwX3Zwbl9jb25maWcgMSA0IDIgMjAwXFxuK1xcdHNldHVwX3Zwbl9jb25maWcgMiAzIDEgMjAwXFxuK1xcbitcXHQjIGFsbG93IGVhY2ggcm91dGVyIHRvIHJlYWNoIHRoZSBvdGhlcidzIGxvb3BiYWNrIHRocm91Z2ggdGhlIFZQTlxcbitcXHRzZXR1cF92cG5fZ3dfZW5jYXAgMiAxIDEwMFxcbitcXHRzZXR1cF92cG5fZ3dfZW5jYXAgMSAyIDEwMFxcbitcXHRzZXR1cF92cG5fZ3dfZW5jYXAgMiAxIDIwMFxcbitcXHRzZXR1cF92cG5fZ3dfZW5jYXAgMSAyIDIwMFxcbitcXG4rXFx0IyB0ZXN0aW5nIGVudmlyb25tZW50IHdhcyBzZXQgdXAgc3VjY2Vzc2Z1bGx5XFxuK1xcdFNFVFVQX0VSUj0wXFxuK31cXG4rXFxuK2NoZWNrX3J0X2Nvbm5lY3Rpdml0eSgpXFxuK3tcXG4rXFx0bG9jYWwgcnRzcmM9XFxcIiQxXFxcIlxcbitcXHRsb2NhbCBydGRzdD1cXFwiJDJcXFwiXFxuK1xcdGxvY2FsIG5zbmFtZVxcbitcXG4rXFx0bnNuYW1lPVxcXCIkKGdldF9ydF9uc25hbWUgXFxcIiR7cnRzcmN9XFxcIilcXFwiXFxuK1xcbitcXHRpcCBuZXRucyBleGVjIFxcXCIke25zbmFtZX1cXFwiIHBpbmcgLWMgMSAtVyAxIFxcXCIke0lQdjZfUlRfTkVUV09SS306OiR7cnRkc3R9XFxcIiBcXFxcXFxuK1xcdFxcdFxcdTAwM2UvZGV2L251bGwgMlxcdTAwM2VcXHUwMDI2MVxcbit9XFxuK1xcbitjaGVja19hbmRfbG9nX3J0X2Nvbm5lY3Rpdml0eSgpXFxuK3tcXG4rXFx0bG9jYWwgcnRzcmM9XFxcIiQxXFxcIlxcbitcXHRsb2NhbCBydGRzdD1cXFwiJDJcXFwiXFxuK1xcbitcXHRjaGVja19ydF9jb25uZWN0aXZpdHkgXFxcIiR7cnRzcmN9XFxcIiBcXFwiJHtydGRzdH1cXFwiXFxuK1xcdGxvZ190ZXN0ICQ/IDAgXFxcIlJvdXRlcnMgY29ubmVjdGl2aXR5OiBydC0ke3J0c3JjfSAtXFx1MDAzZSBydC0ke3J0ZHN0fVxcXCJcXG4rfVxcbitcXG4rY2hlY2tfaHNfaXB2Nl9jb25uZWN0aXZpdHkoKVxcbit7XFxuK1xcdGxvY2FsIGhzc3JjPVxcXCIkMVxcXCJcXG4rXFx0bG9jYWwgaHNkc3Q9XFxcIiQyXFxcIlxcbitcXHRsb2NhbCB0aWQ9XFxcIiQzXFxcIlxcbitcXHRsb2NhbCBuc25hbWVcXG4rXFxuK1xcdG5zbmFtZT1cXFwiJChnZXRfaHNfbnNuYW1lIFxcXCIke3RpZH1cXFwiIFxcXCIke2hzc3JjfVxcXCIpXFxcIlxcbitcXG4rXFx0aXAgbmV0bnMgZXhlYyBcXFwiJHtuc25hbWV9XFxcIiBwaW5nIC1jIDEgLVcgXFxcIiR7UElOR19USU1FT1VUX1NFQ31cXFwiIFxcXFxcXG4rXFx0XFx0XFxcIiR7SVB2Nl9IU19ORVRXT1JLfTo6JHtoc2RzdH1cXFwiIFxcdTAwM2UvZGV2L251bGwgMlxcdTAwM2VcXHUwMDI2MVxcbit9XFxuK1xcbitjaGVja19oc19pcHY0X2Nvbm5lY3Rpdml0eSgpXFxuK3tcXG4rXFx0bG9jYWwgaHNzcmM9XFxcIiQxXFxcIlxcbitcXHRsb2NhbCBoc2RzdD1cXFwiJDJcXFwiXFxuK1xcdGxvY2FsIHRpZD1cXFwiJDNcXFwiXFxuK1xcdGxvY2FsIG5zbmFtZVxcbitcXG4rXFx0bnNuYW1lPVxcXCIkKGdldF9oc19uc25hbWUgXFxcIiR7dGlkfVxcXCIgXFxcIiR7aHNzcmN9XFxcIilcXFwiXFxuK1xcbitcXHRpcCBuZXRucyBleGVjIFxcXCIke25zbmFtZX1cXFwiIHBpbmcgLWMgMSAtVyBcXFwiJHtQSU5HX1RJTUVPVVRfU0VDfVxcXCIgXFxcXFxcbitcXHRcXHRcXFwiJHtJUHY0X0hTX05FVFdPUkt9LiR7aHNkc3R9XFxcIiBcXHUwMDNlL2Rldi9udWxsIDJcXHUwMDNlXFx1MDAyNjFcXG4rfVxcbitcXG4rY2hlY2tfYW5kX2xvZ19oc19jb25uZWN0aXZpdHkoKVxcbit7XFxuK1xcdGxvY2FsIGhzc3JjPVxcXCIkMVxcXCJcXG4rXFx0bG9jYWwgaHNkc3Q9XFxcIiQyXFxcIlxcbitcXHRsb2NhbCB0aWQ9XFxcIiQzXFxcIlxcbitcXG4rXFx0Y2hlY2tfaHNfaXB2Nl9jb25uZWN0aXZpdHkgXFxcIiR7aHNzcmN9XFxcIiBcXFwiJHtoc2RzdH1cXFwiIFxcXCIke3RpZH1cXFwiXFxuK1xcdGxvZ190ZXN0ICQ/IDAgXFxcIklQdjYgY29ubmVjdGl2aXR5OiBocy10JHt0aWR9LSR7aHNzcmN9IC1cXHUwMDNlIGhzLXQke3RpZH0tJHtoc2RzdH0gKHRlbmFudCAke3RpZH0pXFxcIlxcbitcXG4rXFx0Y2hlY2tfaHNfaXB2NF9jb25uZWN0aXZpdHkgXFxcIiR7aHNzcmN9XFxcIiBcXFwiJHtoc2RzdH1cXFwiIFxcXCIke3RpZH1cXFwiXFxuK1xcdGxvZ190ZXN0ICQ/IDAgXFxcIklQdjQgY29ubmVjdGl2aXR5OiBocy10JHt0aWR9LSR7aHNzcmN9IC1cXHUwMDNlIGhzLXQke3RpZH0tJHtoc2RzdH0gKHRlbmFudCAke3RpZH0pXFxcIlxcbit9XFxuK1xcbitjaGVja19hbmRfbG9nX2hzX2lzb2xhdGlvbigpXFxuK3tcXG4rXFx0bG9jYWwgaHNzcmM9XFxcIiQxXFxcIlxcbitcXHRsb2NhbCB0aWRzcmM9XFxcIiQyXFxcIlxcbitcXHRsb2NhbCBoc2RzdD1cXFwiJDNcXFwiXFxuK1xcdGxvY2FsIHRpZGRzdD1cXFwiJDRcXFwiXFxuK1xcbitcXHRjaGVja19oc19pcHY2X2Nvbm5lY3Rpdml0eSBcXFwiJHtoc3NyY31cXFwiIFxcXCIke2hzZHN0fVxcXCIgXFxcIiR7dGlkc3JjfVxcXCJcXG4rXFx0bG9nX3Rlc3QgJD8gMSBcXFwiSVB2NiBpc29sYXRpb246IGhzLXQke3RpZHNyY30tJHtoc3NyY30gLVgtXFx1MDAzZSBocy10JHt0aWRkc3R9LSR7aHNkc3R9XFxcIlxcbitcXG4rXFx0Y2hlY2tfaHNfaXB2NF9jb25uZWN0aXZpdHkgXFxcIiR7aHNzcmN9XFxcIiBcXFwiJHtoc2RzdH1cXFwiIFxcXCIke3RpZHNyY31cXFwiXFxuK1xcdGxvZ190ZXN0ICQ/IDEgXFxcIklQdjQgaXNvbGF0aW9uOiBocy10JHt0aWRzcmN9LSR7aHNzcmN9IC1YLVxcdTAwM2UgaHMtdCR7dGlkZHN0fS0ke2hzZHN0fVxcXCJcXG4rfVxcbitcXG4rY2hlY2tfYW5kX2xvZ19oczJnd19jb25uZWN0aXZpdHkoKVxcbit7XFxuK1xcdGxvY2FsIGhzc3JjPVxcXCIkMVxcXCJcXG4rXFx0bG9jYWwgdGlkPVxcXCIkMlxcXCJcXG4rXFxuK1xcdGNoZWNrX2hzX2lwdjZfY29ubmVjdGl2aXR5IFxcXCIke2hzc3JjfVxcXCIgMjU0IFxcXCIke3RpZH1cXFwiXFxuK1xcdGxvZ190ZXN0ICQ/IDAgXFxcIklQdjYgY29ubmVjdGl2aXR5OiBocy10JHt0aWR9LSR7aHNzcmN9IC1cXHUwMDNlIGd3ICh0ZW5hbnQgJHt0aWR9KVxcXCJcXG4rXFxuK1xcdGNoZWNrX2hzX2lwdjRfY29ubmVjdGl2aXR5IFxcXCIke2hzc3JjfVxcXCIgMjU0IFxcXCIke3RpZH1cXFwiXFxuK1xcdGxvZ190ZXN0ICQ/IDAgXFxcIklQdjQgY29ubmVjdGl2aXR5OiBocy10JHt0aWR9LSR7aHNzcmN9IC1cXHUwMDNlIGd3ICh0ZW5hbnQgJHt0aWR9KVxcXCJcXG4rfVxcbitcXG4rcm91dGVyX3Rlc3RzKClcXG4re1xcbitcXHRsb2dfc2VjdGlvbiBcXFwiSVB2NiByb3V0ZXJzIGNvbm5lY3Rpdml0eSB0ZXN0XFxcIlxcbitcXG4rXFx0Y2hlY2tfYW5kX2xvZ19ydF9jb25uZWN0aXZpdHkgMSAyXFxuK1xcdGNoZWNrX2FuZF9sb2dfcnRfY29ubmVjdGl2aXR5IDIgMVxcbit9XFxuK1xcbitob3N0MmdhdGV3YXlfdGVzdHMoKVxcbit7XFxuK1xcdGxvZ19zZWN0aW9uIFxcXCJDb25uZWN0aXZpdHkgdGVzdCBhbW9uZyBob3N0cyBhbmQgZ2F0ZXdheVxcXCJcXG4rXFxuK1xcdGNoZWNrX2FuZF9sb2dfaHMyZ3dfY29ubmVjdGl2aXR5IDEgMTAwXFxuK1xcdGNoZWNrX2FuZF9sb2dfaHMyZ3dfY29ubmVjdGl2aXR5IDIgMTAwXFxuK1xcbitcXHRjaGVja19hbmRfbG9nX2hzMmd3X2Nvbm5lY3Rpdml0eSAzIDIwMFxcbitcXHRjaGVja19hbmRfbG9nX2hzMmd3X2Nvbm5lY3Rpdml0eSA0IDIwMFxcbit9XFxuK1xcbitob3N0X3Zwbl90ZXN0cygpXFxuK3tcXG4rXFx0bG9nX3NlY3Rpb24gXFxcIlNSdjYgVlBOIGNvbm5lY3Rpdml0eSB0ZXN0IGFtb25nIGhvc3RzIGluIHRoZSBzYW1lIHRlbmFudFxcXCJcXG4rXFxuK1xcdGNoZWNrX2FuZF9sb2dfaHNfY29ubmVjdGl2aXR5IDEgMiAxMDBcXG4rXFx0Y2hlY2tfYW5kX2xvZ19oc19jb25uZWN0aXZpdHkgMiAxIDEwMFxcbitcXG4rXFx0Y2hlY2tfYW5kX2xvZ19oc19jb25uZWN0aXZpdHkgMyA0IDIwMFxcbitcXHRjaGVja19hbmRfbG9nX2hzX2Nvbm5lY3Rpdml0eSA0IDMgMjAwXFxuK31cXG4rXFxuK2hvc3RfdnBuX2lzb2xhdGlvbl90ZXN0cygpXFxuK3tcXG4rXFx0bG9jYWwgbDE9XFxcIjEgMlxcXCJcXG4rXFx0bG9jYWwgbDI9XFxcIjMgNFxcXCJcXG4rXFx0bG9jYWwgdDE9MTAwXFxuK1xcdGxvY2FsIHQyPTIwMFxcbitcXHRsb2NhbCBpXFxuK1xcdGxvY2FsIGpcXG4rXFx0bG9jYWwgdG1wXFxuK1xcbitcXHRsb2dfc2VjdGlvbiBcXFwiU1J2NiBWUE4gaXNvbGF0aW9uIHRlc3QgYW1vbmcgaG9zdHMgaW4gZGlmZmVyZW50IHRlbmFudHNcXFwiXFxuK1xcbitcXHRmb3IgXyBpbiAwIDE7IGRvXFxuK1xcdFxcdGZvciBpIGluICR7bDF9OyBkb1xcbitcXHRcXHRcXHRmb3IgaiBpbiAke2wyfTsgZG9cXG4rXFx0XFx0XFx0XFx0Y2hlY2tfYW5kX2xvZ19oc19pc29sYXRpb24gXFxcIiR7aX1cXFwiIFxcXCIke3QxfVxcXCIgXFxcIiR7an1cXFwiIFxcXCIke3QyfVxcXCJcXG4rXFx0XFx0XFx0ZG9uZVxcbitcXHRcXHRkb25lXFxuK1xcbitcXHRcXHQjIGxldCB1cyB0ZXN0IHRoZSByZXZlcnNlIHBhdGhcXG4rXFx0XFx0dG1wPVxcXCIke2wxfVxcXCI7IGwxPVxcXCIke2wyfVxcXCI7IGwyPVxcXCIke3RtcH1cXFwiXFxuK1xcdFxcdHRtcD0ke3QxfTsgdDE9JHt0Mn07IHQyPSR7dG1wfVxcbitcXHRkb25lXFxuK31cXG4rXFxuK19fdGVzdF9ub2xvb2t1cCgpXFxuK3tcXG4rXFx0bG9jYWwgaHNzcmM9XFxcIiQxXFxcIlxcbitcXHRsb2NhbCBoc2RzdD1cXFwiJDJcXFwiXFxuK1xcdGxvY2FsIHJ0c3JjPVxcXCIkM1xcXCJcXG4rXFx0bG9jYWwgcnRkc3Q9XFxcIiQ0XFxcIlxcbitcXHRsb2NhbCB0aWQ9XFxcIiQ1XFxcIlxcbitcXHRsb2NhbCB2cG5fc2lkXFxuK1xcbitcXHR2cG5fc2lkPVxcXCIkKGJ1aWxkX3Zwbl9zaWQgXFxcIiR7cnRzcmN9XFxcIiBcXFwiJHtydGRzdH1cXFwiIFxcXCIke3RpZH1cXFwiKVxcXCJcXG4rXFxuK1xcdCMgcmVwbGFjZSBlbmNhcCByb3V0ZShzKSB3aXRob3V0IFxcXCJsb29rdXBcXFwiIGF0dHJpYnV0ZVxcbitcXHRzZXRfaG9zdF9lbmNhcF9yb3V0ZV9ub2xvb2t1cCBcXFwiJHtydHNyY31cXFwiIFxcXCIke2hzZHN0fVxcXCIgXFxcIiR7dnBuX3NpZH1cXFwiIFxcXCIke3RpZH1cXFwiXFxuK1xcbitcXHRjaGVja19oc19pcHY2X2Nvbm5lY3Rpdml0eSBcXFwiJHtoc3NyY31cXFwiIFxcXCIke2hzZHN0fVxcXCIgXFxcIiR7dGlkfVxcXCJcXG4rXFx0bG9nX3Rlc3QgJD8gMSBcXFwiSVB2NiB3L28gbG9va3VwOiBocy10JHt0aWR9LSR7aHNzcmN9IC1YLVxcdTAwM2UgaHMtdCR7dGlkfS0ke2hzZHN0fSAodGVuYW50ICR7dGlkfSlcXFwiXFxuK1xcbitcXHRjaGVja19oc19pcHY0X2Nvbm5lY3Rpdml0eSBcXFwiJHtoc3NyY31cXFwiIFxcXCIke2hzZHN0fVxcXCIgXFxcIiR7dGlkfVxcXCJcXG4rXFx0bG9nX3Rlc3QgJD8gMSBcXFwiSVB2NCB3L28gbG9va3VwOiBocy10JHt0aWR9LSR7aHNzcmN9IC1YLVxcdTAwM2UgaHMtdCR7dGlkfS0ke2hzZHN0fSAodGVuYW50ICR7dGlkfSlcXFwiXFxuK1xcbitcXHQjIHJlc3RvcmUgZW5jYXAgcm91dGUocykgd2l0aCBcXFwibG9va3VwXFxcIiBmb3Igc3Vic2VxdWVudCB0ZXN0c1xcbitcXHRzZXRfaG9zdF9lbmNhcF9yb3V0ZSBcXFwiJHtydHNyY31cXFwiIFxcXCIke2hzZHN0fVxcXCIgXFxcIiR7dnBuX3NpZH1cXFwiIFxcXCIke3RpZH1cXFwiXFxuK31cXG4rXFxuK2hvc3RfdnBuX25vbG9va3VwX3Rlc3RzKClcXG4re1xcbitcXHRsb2dfc2VjdGlvbiBcXFwiU1J2NiBWUE4gY29ubmVjdGl2aXR5IHRlc3QgYW1vbmcgaG9zdHMgdy9vIGxvb2t1cFxcXCJcXG4rXFxuK1xcdF9fdGVzdF9ub2xvb2t1cCAxIDIgMSAyIDEwMFxcbitcXHRfX3Rlc3Rfbm9sb29rdXAgMiAxIDIgMSAxMDBcXG4rXFxuK1xcdF9fdGVzdF9ub2xvb2t1cCAzIDQgMSAyIDIwMFxcbitcXHRfX3Rlc3Rfbm9sb29rdXAgNCAzIDIgMSAyMDBcXG4rfVxcbitcXG4rY2hlY2tfZ3dfaXB2Nl9jb25uZWN0aXZpdHkoKVxcbit7XFxuK1xcdGxvY2FsIHJ0c3JjPVxcXCIkMVxcXCJcXG4rXFx0bG9jYWwgcnRkc3Q9XFxcIiQyXFxcIlxcbitcXHRsb2NhbCB0aWRzcmM9XFxcIiQzXFxcIlxcbitcXHRsb2NhbCB0aWRkc3Q9XFxcIiQ0XFxcIlxcbitcXHRsb2NhbCBydG5hbWVcXG4rXFx0bG9jYWwgc3JjX3Y2XFxuK1xcdGxvY2FsIGRzdF92NlxcbitcXG4rXFx0cnRuYW1lPVxcXCIkKGdldF9ydF9uc25hbWUgXFxcIiR7cnRzcmN9XFxcIilcXFwiXFxuK1xcdHNyY192Nj1cXFwiJHtJUHY2X0hTX05FVFdPUkt9OjokKGdldF9ybG9faG9zdGlkIFxcXCIke3J0c3JjfVxcXCIgXFxcIiR7dGlkc3JjfVxcXCIpXFxcIlxcbitcXHRkc3RfdjY9XFxcIiR7SVB2Nl9IU19ORVRXT1JLfTo6JChnZXRfcmxvX2hvc3RpZCBcXFwiJHtydGRzdH1cXFwiIFxcXCIke3RpZGRzdH1cXFwiKVxcXCJcXG4rXFxuK1xcdGlwIG5ldG5zIGV4ZWMgXFxcIiR7cnRuYW1lfVxcXCIgaXAgdnJmIGV4ZWMgXFxcInZyZi0ke3RpZHNyY31cXFwiIFxcXFxcXG4rXFx0XFx0cGluZyAtYyAxIC1XIFxcXCIke1BJTkdfVElNRU9VVF9TRUN9XFxcIiBcXFxcXFxuK1xcdFxcdC1JIFxcXCIke3NyY192Nn1cXFwiIFxcXCIke2RzdF92Nn1cXFwiIFxcdTAwM2UvZGV2L251bGwgMlxcdTAwM2VcXHUwMDI2MVxcbit9XFxuK1xcbitjaGVja19nd19pcHY0X2Nvbm5lY3Rpdml0eSgpXFxuK3tcXG4rXFx0bG9jYWwgcnRzcmM9XFxcIiQxXFxcIlxcbitcXHRsb2NhbCBydGRzdD1cXFwiJDJcXFwiXFxuK1xcdGxvY2FsIHRpZHNyYz1cXFwiJDNcXFwiXFxuK1xcdGxvY2FsIHRpZGRzdD1cXFwiJDRcXFwiXFxuK1xcdGxvY2FsIHJ0bmFtZVxcbitcXHRsb2NhbCBzcmNfdjRcXG4rXFx0bG9jYWwgZHN0X3Y0XFxuK1xcbitcXHRydG5hbWU9XFxcIiQoZ2V0X3J0X25zbmFtZSBcXFwiJHtydHNyY31cXFwiKVxcXCJcXG4rXFx0c3JjX3Y0PVxcXCIke0lQdjRfSFNfTkVUV09SS30uJChnZXRfcmxvX2hvc3RpZCBcXFwiJHtydHNyY31cXFwiIFxcXCIke3RpZHNyY31cXFwiKVxcXCJcXG4rXFx0ZHN0X3Y0PVxcXCIke0lQdjRfSFNfTkVUV09SS30uJChnZXRfcmxvX2hvc3RpZCBcXFwiJHtydGRzdH1cXFwiIFxcXCIke3RpZGRzdH1cXFwiKVxcXCJcXG4rXFxuK1xcdGlwIG5ldG5zIGV4ZWMgXFxcIiR7cnRuYW1lfVxcXCIgaXAgdnJmIGV4ZWMgXFxcInZyZi0ke3RpZHNyY31cXFwiIFxcXFxcXG4rXFx0XFx0cGluZyAtYyAxIC1XIFxcXCIke1BJTkdfVElNRU9VVF9TRUN9XFxcIiBcXFxcXFxuK1xcdFxcdC1JIFxcXCIke3NyY192NH1cXFwiIFxcXCIke2RzdF92NH1cXFwiIFxcdTAwM2UvZGV2L251bGwgMlxcdTAwM2VcXHUwMDI2MVxcbit9XFxuK1xcbitjaGVja19hbmRfbG9nX2d3X2Nvbm5lY3Rpdml0eSgpXFxuK3tcXG4rXFx0bG9jYWwgcnRzcmM9XFxcIiQxXFxcIlxcbitcXHRsb2NhbCBydGRzdD1cXFwiJDJcXFwiXFxuK1xcdGxvY2FsIHRpZD1cXFwiJDNcXFwiXFxuK1xcbitcXHRjaGVja19nd19pcHY2X2Nvbm5lY3Rpdml0eSBcXFwiJHtydHNyY31cXFwiIFxcXCIke3J0ZHN0fVxcXCIgXFxcIiR7dGlkfVxcXCIgXFxcIiR7dGlkfVxcXCJcXG4rXFx0bG9nX3Rlc3QgJD8gMCBcXFwiSVB2NiBjb25uZWN0aXZpdHk6IHJ0LSR7cnRzcmN9IC1cXHUwMDNlIHJ0LSR7cnRkc3R9ICh0ZW5hbnQgJHt0aWR9KVxcXCJcXG4rXFxuK1xcdGNoZWNrX2d3X2lwdjRfY29ubmVjdGl2aXR5IFxcXCIke3J0c3JjfVxcXCIgXFxcIiR7cnRkc3R9XFxcIiBcXFwiJHt0aWR9XFxcIiBcXFwiJHt0aWR9XFxcIlxcbitcXHRsb2dfdGVzdCAkPyAwIFxcXCJJUHY0IGNvbm5lY3Rpdml0eTogcnQtJHtydHNyY30gLVxcdTAwM2UgcnQtJHtydGRzdH0gKHRlbmFudCAke3RpZH0pXFxcIlxcbit9XFxuK1xcbitjaGVja19hbmRfbG9nX2d3X2lzb2xhdGlvbigpXFxuK3tcXG4rXFx0bG9jYWwgcnRzcmM9XFxcIiQxXFxcIlxcbitcXHRsb2NhbCBydGRzdD1cXFwiJDJcXFwiXFxuK1xcdGxvY2FsIHRpZHNyYz1cXFwiJDNcXFwiXFxuK1xcdGxvY2FsIHRpZGRzdD1cXFwiJDRcXFwiXFxuK1xcbitcXHRjaGVja19nd19pcHY2X2Nvbm5lY3Rpdml0eSBcXFwiJHtydHNyY31cXFwiIFxcXCIke3J0ZHN0fVxcXCIgXFxcIiR7dGlkc3JjfVxcXCIgXFxcIiR7dGlkZHN0fVxcXCJcXG4rXFx0bG9nX3Rlc3QgJD8gMSBcXFwiSVB2NiBpc29sYXRpb246IHJ0LSR7cnRzcmN9IC1YLVxcdTAwM2UgcnQtJHtydGRzdH0gKHRlbmFudHMgJHt0aWRzcmN9LyR7dGlkZHN0fSlcXFwiXFxuK1xcbitcXHRjaGVja19nd19pcHY0X2Nvbm5lY3Rpdml0eSBcXFwiJHtydHNyY31cXFwiIFxcXCIke3J0ZHN0fVxcXCIgXFxcIiR7dGlkc3JjfVxcXCIgXFxcIiR7dGlkZHN0fVxcXCJcXG4rXFx0bG9nX3Rlc3QgJD8gMSBcXFwiSVB2NCBpc29sYXRpb246IHJ0LSR7cnRzcmN9IC1YLVxcdTAwM2UgcnQtJHtydGRzdH0gKHRlbmFudHMgJHt0aWRzcmN9LyR7dGlkZHN0fSlcXFwiXFxuK31cXG4rXFxuK2d3X3Zwbl9pc29sYXRpb25fdGVzdHMoKVxcbit7XFxuK1xcdGxvZ19zZWN0aW9uIFxcXCJTUnY2IFZQTiBpc29sYXRpb24gdGVzdCBhbW9uZyByb3V0ZXJzIGluIGRpZmZlcmVudCB0ZW5hbnRzXFxcIlxcbitcXG4rXFx0Y2hlY2tfYW5kX2xvZ19nd19pc29sYXRpb24gMSAyIDEwMCAyMDBcXG4rXFx0Y2hlY2tfYW5kX2xvZ19nd19pc29sYXRpb24gMiAxIDEwMCAyMDBcXG4rXFxuK1xcdGNoZWNrX2FuZF9sb2dfZ3dfaXNvbGF0aW9uIDEgMiAyMDAgMTAwXFxuK1xcdGNoZWNrX2FuZF9sb2dfZ3dfaXNvbGF0aW9uIDIgMSAyMDAgMTAwXFxuK31cXG4rXFxuK2d3X3Zwbl90ZXN0cygpXFxuK3tcXG4rXFx0bG9nX3NlY3Rpb24gXFxcIlNSdjYgVlBOIGNvbm5lY3Rpdml0eSB0ZXN0IGFtb25nIHJvdXRlcnMgaW4gdGhlIHNhbWUgdGVuYW50XFxcIlxcbitcXG4rXFx0Y2hlY2tfYW5kX2xvZ19nd19jb25uZWN0aXZpdHkgMSAyIDEwMFxcbitcXHRjaGVja19hbmRfbG9nX2d3X2Nvbm5lY3Rpdml0eSAyIDEgMTAwXFxuK1xcbitcXHRjaGVja19hbmRfbG9nX2d3X2Nvbm5lY3Rpdml0eSAxIDIgMjAwXFxuK1xcdGNoZWNrX2FuZF9sb2dfZ3dfY29ubmVjdGl2aXR5IDIgMSAyMDBcXG4rfVxcbitcXG4rX190ZXN0X2d3X25vbG9va3VwKClcXG4re1xcbitcXHRsb2NhbCBydHNyYz1cXFwiJDFcXFwiXFxuK1xcdGxvY2FsIHJ0ZHN0PVxcXCIkMlxcXCJcXG4rXFx0bG9jYWwgdGlkPVxcXCIkM1xcXCJcXG4rXFx0bG9jYWwgc2lkXFxuK1xcbitcXHRzaWQ9XFxcIiQoYnVpbGRfdnBuX3NpZCBcXFwiJHtydHNyY31cXFwiIFxcXCIke3J0ZHN0fVxcXCIgXFxcIiR7dGlkfVxcXCIpXFxcIlxcbitcXG4rXFx0IyByZXBsYWNlIGd3IGVuY2FwIHJvdXRlIHdpdGhvdXQgXFxcImxvb2t1cFxcXCIgYXR0cmlidXRlXFxuK1xcdHNldF9nd19lbmNhcF9yb3V0ZV9ub2xvb2t1cCBcXFwiJHtydHNyY31cXFwiIFxcXCIke3J0ZHN0fVxcXCIgXFxcIiR7c2lkfVxcXCIgXFxcIiR7dGlkfVxcXCJcXG4rXFxuK1xcdGNoZWNrX2d3X2lwdjZfY29ubmVjdGl2aXR5IFxcXCIke3J0c3JjfVxcXCIgXFxcIiR7cnRkc3R9XFxcIiBcXFwiJHt0aWR9XFxcIiBcXFwiJHt0aWR9XFxcIlxcbitcXHRsb2dfdGVzdCAkPyAxIFxcXCJJUHY2IHcvbyBsb29rdXA6IHJ0LSR7cnRzcmN9IC1YLVxcdTAwM2UgcnQtJHtydGRzdH0gKHRlbmFudCAke3RpZH0pXFxcIlxcbitcXG4rXFx0Y2hlY2tfZ3dfaXB2NF9jb25uZWN0aXZpdHkgXFxcIiR7cnRzcmN9XFxcIiBcXFwiJHtydGRzdH1cXFwiIFxcXCIke3RpZH1cXFwiIFxcXCIke3RpZH1cXFwiXFxuK1xcdGxvZ190ZXN0ICQ/IDEgXFxcIklQdjQgdy9vIGxvb2t1cDogcnQtJHtydHNyY30gLVgtXFx1MDAzZSBydC0ke3J0ZHN0fSAodGVuYW50ICR7dGlkfSlcXFwiXFxuK1xcbitcXHQjIHJlc3RvcmUgZ3cgZW5jYXAgcm91dGUgd2l0aCBcXFwibG9va3VwXFxcIiBmb3Igc3Vic2VxdWVudCB0ZXN0c1xcbitcXHRzZXRfZ3dfZW5jYXBfcm91dGUgXFxcIiR7cnRzcmN9XFxcIiBcXFwiJHtydGRzdH1cXFwiIFxcXCIke3NpZH1cXFwiIFxcXCIke3RpZH1cXFwiXFxuK31cXG4rXFxuK2d3X3Zwbl9ub2xvb2t1cF90ZXN0cygpXFxuK3tcXG4rXFx0bG9nX3NlY3Rpb24gXFxcIlNSdjYgVlBOIGNvbm5lY3Rpdml0eSB0ZXN0IGFtb25nIHJvdXRlcnMgdy9vIGxvb2t1cFxcXCJcXG4rXFxuK1xcdF9fdGVzdF9nd19ub2xvb2t1cCAxIDIgMTAwXFxuK1xcdF9fdGVzdF9nd19ub2xvb2t1cCAyIDEgMTAwXFxuK1xcbitcXHRfX3Rlc3RfZ3dfbm9sb29rdXAgMSAyIDIwMFxcbitcXHRfX3Rlc3RfZ3dfbm9sb29rdXAgMiAxIDIwMFxcbit9XFxuK1xcbit0ZXN0X2NvbW1hbmRfb3Jfa3NmdF9za2lwKClcXG4re1xcbitcXHRsb2NhbCBjbWQ9XFxcIiQxXFxcIlxcbitcXG4rXFx0aWYgWyAhIC14IFxcXCIkKGNvbW1hbmQgLXYgXFxcIiR7Y21kfVxcXCIpXFxcIiBdOyB0aGVuXFxuK1xcdFxcdGVjaG8gXFxcIlNLSVA6IENvdWxkIG5vdCBydW4gdGVzdCB3aXRob3V0IFxcXFxcXFwiJHtjbWR9XFxcXFxcXCIgdG9vbFxcXCJcXG4rXFx0XFx0ZXhpdCBcXFwiJHtrc2Z0X3NraXB9XFxcIlxcbitcXHRmaVxcbit9XFxuK1xcbit0ZXN0X3ZyZl9vcl9rc2Z0X3NraXAoKVxcbit7XFxuK1xcdG1vZHByb2JlIHZyZiBcXHUwMDI2XFx1MDAzZS9kZXYvbnVsbCB8fCB0cnVlXFxuK1xcdGlmIFsgISAtZSAvcHJvYy9zeXMvbmV0L3ZyZi9zdHJpY3RfbW9kZSBdOyB0aGVuXFxuK1xcdFxcdGVjaG8gXFxcIlNLSVA6IHZyZiBzeXNjdGwgZG9lcyBub3QgZXhpc3RcXFwiXFxuK1xcdFxcdGV4aXQgXFxcIiR7a3NmdF9za2lwfVxcXCJcXG4rXFx0ZmlcXG4rfVxcbitcXG4rdGVzdF9kdW1teV9kZXZfb3Jfa3NmdF9za2lwKClcXG4re1xcbitcXHRsb2NhbCB0ZXN0X25ldG5zXFxuK1xcbitcXHRzZXR1cF9ucyB0ZXN0X25ldG5zXFxuK1xcbitcXHRtb2Rwcm9iZSBkdW1teSBcXHUwMDI2XFx1MDAzZS9kZXYvbnVsbCB8fCB0cnVlXFxuK1xcdGlmICEgaXAgLW5ldG5zIFxcXCIke3Rlc3RfbmV0bnN9XFxcIiBsaW5rIGFkZCBcXFwiJHtEVU1NWV9ERVZOQU1FfVxcXCIgXFxcXFxcbitcXHRcXHRcXHR0eXBlIGR1bW15OyB0aGVuXFxuK1xcdFxcdGNsZWFudXBfbnMgXFxcIiR7dGVzdF9uZXRuc31cXFwiXFxuK1xcdFxcdGVjaG8gXFxcIlNLSVA6IGR1bW15IGRldiBub3Qgc3VwcG9ydGVkXFxcIlxcbitcXHRcXHRleGl0IFxcXCIke2tzZnRfc2tpcH1cXFwiXFxuK1xcdGZpXFxuK1xcbitcXHRjbGVhbnVwX25zIFxcXCIke3Rlc3RfbmV0bnN9XFxcIlxcbit9XFxuK1xcbit0ZXN0X2VuY2FwX2xvb2t1cF9zdXBwX29yX2tzZnRfc2tpcCgpXFxuK3tcXG4rXFx0bG9jYWwgbnNuYW1lXFxuK1xcbitcXHRzZXR1cF9ucyBuc25hbWVcXG4rXFxuK1xcdGlwIC1uZXRucyBcXFwiJHtuc25hbWV9XFxcIiBsaW5rIGFkZCBcXFwiJHtEVU1NWV9ERVZOQU1FfVxcXCIgdHlwZSBkdW1teVxcbitcXHRpcCAtbmV0bnMgXFxcIiR7bnNuYW1lfVxcXCIgbGluayBzZXQgXFxcIiR7RFVNTVlfREVWTkFNRX1cXFwiIHVwXFxuK1xcbitcXHRpZiAhIGlwIC1uZXRucyBcXFwiJHtuc25hbWV9XFxcIiAtNiByb3V0ZSBhZGQgXFxcIiR7SVB2Nl9URVNUU19BRERSfS8xMjhcXFwiIFxcXFxcXG4rXFx0XFx0XFx0ZW5jYXAgc2VnNiBtb2RlIGVuY2FwIHNlZ3MgZmMwMDo6MSBcXFxcXFxuK1xcdFxcdFxcdGxvb2t1cCBcXFwiJHtURVNUU19UQUJMRV9JRH1cXFwiIFxcXFxcXG4rXFx0XFx0XFx0ZGV2IFxcXCIke0RVTU1ZX0RFVk5BTUV9XFxcIiAyXFx1MDAzZS9kZXYvbnVsbDsgdGhlblxcbitcXHRcXHRjbGVhbnVwX25zIFxcXCIke25zbmFtZX1cXFwiXFxuK1xcdFxcdGVjaG8gXFxcIlNLSVA6IHNlZzYgZW5jYXAgbG9va3VwIGF0dHJpYnV0ZSBub3Qgc3VwcG9ydGVkXFxcIlxcbitcXHRcXHRleGl0IFxcXCIke2tzZnRfc2tpcH1cXFwiXFxuK1xcdGZpXFxuK1xcbitcXHQjIEFuIG9sZCBrZXJuZWwgd2l0aCBhIHJlY2VudCBpcHJvdXRlMiBhY2NlcHRzIHRoZSByb3V0ZSBidXRcXG4rXFx0IyBzaWxlbnRseSBpZ25vcmVzIHRoZSBsb29rdXAgYXR0cmlidXRlLiBEdW1wIHRoZSByb3V0ZSBhbmQgY2hlY2tcXG4rXFx0IyB0aGUgYXR0cmlidXRlIGlzIHJlYWxseSB0aGVyZSwgb3RoZXJ3aXNlIHRoZSB0ZXN0IGZhbHNlbHkgcGFzc2VzLlxcbitcXHRpZiAhIGlwIC1uZXRucyBcXFwiJHtuc25hbWV9XFxcIiAtNiByb3V0ZSBzaG93IFxcXCIke0lQdjZfVEVTVFNfQUREUn0vMTI4XFxcIiB8IFxcXFxcXG4rXFx0XFx0XFx0Z3JlcCAtcSBcXFwibG9va3VwICR7VEVTVFNfVEFCTEVfSUR9XFxcIjsgdGhlblxcbitcXHRcXHRjbGVhbnVwX25zIFxcXCIke25zbmFtZX1cXFwiXFxuK1xcdFxcdGVjaG8gXFxcIlNLSVA6IHNlZzYgZW5jYXAgbG9va3VwIGF0dHJpYnV0ZSBub3Qgc3VwcG9ydGVkXFxcIlxcbitcXHRcXHRleGl0IFxcXCIke2tzZnRfc2tpcH1cXFwiXFxuK1xcdGZpXFxuK1xcbitcXHRjbGVhbnVwX25zIFxcXCIke25zbmFtZX1cXFwiXFxuK31cXG4rXFxuK2lmIFsgXFxcIiQoaWQgLXUpXFxcIiAtbmUgMCBdOyB0aGVuXFxuK1xcdGVjaG8gXFxcIlNLSVA6IE5lZWQgcm9vdCBwcml2aWxlZ2VzXFxcIlxcbitcXHRleGl0IFxcXCIke2tzZnRfc2tpcH1cXFwiXFxuK2ZpXFxuK1xcbisjIHJlcXVpcmVkIHByb2dyYW1zIHRvIGNhcnJ5IG91dCB0aGlzIHNlbGZ0ZXN0XFxuK3Rlc3RfY29tbWFuZF9vcl9rc2Z0X3NraXAgaXBcXG4rdGVzdF9jb21tYW5kX29yX2tzZnRfc2tpcCBwaW5nXFxuK3Rlc3RfY29tbWFuZF9vcl9rc2Z0X3NraXAgc3lzY3RsXFxuK3Rlc3RfY29tbWFuZF9vcl9rc2Z0X3NraXAgZ3JlcFxcbitcXG4rdGVzdF9kdW1teV9kZXZfb3Jfa3NmdF9za2lwXFxuK3Rlc3RfdnJmX29yX2tzZnRfc2tpcFxcbit0ZXN0X2VuY2FwX2xvb2t1cF9zdXBwX29yX2tzZnRfc2tpcFxcbitcXG4rc2V0IC1lXFxuK3RyYXAgY2xlYW51cCBFWElUXFxuK1xcbitzZXR1cFxcbitzZXQgK2VcXG4rXFxuK3JvdXRlcl90ZXN0c1xcbitob3N0MmdhdGV3YXlfdGVzdHNcXG4raG9zdF92cG5fdGVzdHNcXG4raG9zdF92cG5faXNvbGF0aW9uX3Rlc3RzXFxuK2hvc3RfdnBuX25vbG9va3VwX3Rlc3RzXFxuK2d3X3Zwbl90ZXN0c1xcbitnd192cG5faXNvbGF0aW9uX3Rlc3RzXFxuK2d3X3Zwbl9ub2xvb2t1cF90ZXN0c1xcbitcXG4rcHJpbnRfbG9nX3Rlc3RfcmVzdWx0c1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwODo1NDoxNy4zNDk3NzMwOTFaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNDE0MzU1MzI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQVjZfU0VHNl9MV1RVTk5FTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInNlZzZfdGFibGVfbG9va3VwXCIsXG4gICAgXCJzZWc2X2lucHV0X3JvdXRlXCIsXG4gICAgXCJzZWc2X291dHB1dF9kc3RfbG9va3VwXCIsXG4gICAgXCJzZWc2X2J1aWxkX3N0YXRlXCIsXG4gICAgXCJzZWc2X2ZpbGxfZW5jYXBfaW5mb1wiLFxuICAgIFwic2VnNl9lbmNhcF9ubHNpemVcIixcbiAgICBcInNlZzZfZW5jYXBfY21wXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIG5ldyBOZXRsaW5rIGF0dHJpYnV0ZSBgU0VHNl9JUFRVTk5FTF9UQUJMRWAgdG8gc3BlY2lmeSBhIEZJQiB0YWJsZSBmb3IgcG9zdC1lbmNhcCBTSUQgbG9va3VwIGluIFNSdjYgdHVubmVscy4gSXQgbW9kaWZpZXMgdGhlIFNSdjYgZW5jYXBzdWxhdGlvbiBsb2dpYyBpbiBgbmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jYCB0byBwZXJmb3JtIHJvdXRlIGxvb2t1cHMgaW4gdGhlIHNwZWNpZmllZCB0YWJsZSBkdXJpbmcgYm90aCBpbnB1dCBhbmQgb3V0cHV0IHBhdGhzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gcmVhY2hhYmxlIGNvcmUga2VybmVsIG5ldHdvcmtpbmcgbG9naWMsIHNwZWNpZmljYWxseSB0aGUgSVB2NiBTZWdtZW50IFJvdXRpbmcgc3Vic3lzdGVtLCBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBiZDBmNDdhODhiMGQ1MDk0YjlmZDQzMWNhMDRjMjFlOGY2NmM3ZjAxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBKdWwgMTIgMDg6NTQ6MTQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvbGludXgvc2VnNl9pcHR1bm5lbC5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L3NlZzZfaXB0dW5uZWwuaFxuaW5kZXggNDg1ODg5YjE5OTAwZWEuLmUxOTY0YjNhNGJiMGFmIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L3NlZzZfaXB0dW5uZWwuaFxuKysrIGIvaW5jbHVkZS91YXBpL2xpbnV4L3NlZzZfaXB0dW5uZWwuaFxuQEAgLTIxLDYgKzIxLDcgQEAgZW51bSB7XG4gXHRTRUc2X0lQVFVOTkVMX1VOU1BFQyxcbiBcdFNFRzZfSVBUVU5ORUxfU1JILFxuIFx0U0VHNl9JUFRVTk5FTF9TUkMsXHQvKiBzdHJ1Y3QgaW42X2FkZHIgKi9cbitcdFNFRzZfSVBUVU5ORUxfVEFCTEUsXHQvKiBfX3UzMiBGSUIgdGFibGUgZm9yIHBvc3QtZW5jYXAgU0lEIGxvb2t1cCAqL1xuIFx0X19TRUc2X0lQVFVOTkVMX01BWCxcbiB9O1xuICNkZWZpbmUgU0VHNl9JUFRVTk5FTF9NQVggKF9fU0VHNl9JUFRVTk5FTF9NQVggLSAxKVxuZGlmZiAtLWdpdCBhL25ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYyBiL25ldC9pcHY2L3NlZzZfaXB0dW5uZWwuY1xuaW5kZXggNGM0NWMwYTc3ZDc1ZDAuLjYxYzZhMjdiZjIwMmRkIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jXG4rKysgYi9uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmNcbkBAIC01MSw2ICs1MSw3IEBAIHN0cnVjdCBzZWc2X2x3dCB7XG4gXHRzdHJ1Y3QgZHN0X2NhY2hlIGNhY2hlX2lucHV0O1xuIFx0c3RydWN0IGRzdF9jYWNoZSBjYWNoZV9vdXRwdXQ7XG4gXHRzdHJ1Y3QgaW42X2FkZHIgdHVuc3JjO1xuK1x0dTMyIHRhYmxlO1xuIFx0c3RydWN0IHNlZzZfaXB0dW5uZWxfZW5jYXAgdHVuaW5mb1tdO1xuIH07XG4gXG5AQCAtNjgsNiArNjksNyBAQCBzZWc2X2VuY2FwX2x3dHVubmVsKHN0cnVjdCBsd3R1bm5lbF9zdGF0ZSAqbHd0KVxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBzZWc2X2lwdHVubmVsX3BvbGljeVtTRUc2X0lQVFVOTkVMX01BWCArIDFdID0ge1xuIFx0W1NFRzZfSVBUVU5ORUxfU1JIXVx0PSB7IC50eXBlID0gTkxBX0JJTkFSWSB9LFxuIFx0W1NFRzZfSVBUVU5ORUxfU1JDXVx0PSBOTEFfUE9MSUNZX0VYQUNUX0xFTihzaXplb2Yoc3RydWN0IGluNl9hZGRyKSksXG4rXHRbU0VHNl9JUFRVTk5FTF9UQUJMRV1cdD0geyAudHlwZSA9IE5MQV9VMzIgfSxcbiB9O1xuIFxuIHN0YXRpYyBpbnQgbmxhX3B1dF9zcmgoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IGF0dHJ0eXBlLFxuQEAgLTQ3OSw2ICs0ODEsNzMgQEAgaW50IHNlZzZfZG9fc3JoX2lubGluZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaXB2Nl9zcl9oZHIgKm9zcmgpXG4gfVxuIEVYUE9SVF9TWU1CT0xfR1BMKHNlZzZfZG9fc3JoX2lubGluZSk7XG4gXG4rLyogbG9vayB1cCBhIHJvdXRlIGluIGEgc3BlY2lmaWMgRklCIHRhYmxlLlxuKyAqIFJldHVybnMgYSByZWZjb3VudGVkIGRzdCwgb3IgTlVMTCBpZiB0aGUgdGFibGUgZG9lcyBub3QgZXhpc3QuXG4rICovXG4rc3RhdGljIHN0cnVjdCBkc3RfZW50cnkgKnNlZzZfdGFibGVfbG9va3VwKHN0cnVjdCBuZXQgKm5ldCxcbitcdFx0XHRcdFx0ICAgc3RydWN0IHNrX2J1ZmYgKnNrYixcbitcdFx0XHRcdFx0ICAgc3RydWN0IGZsb3dpNiAqZmw2LCB1MzIgdGJsX2lkKVxuK3tcbitcdHN0cnVjdCBmaWI2X3RhYmxlICp0YWJsZTtcbitcdHN0cnVjdCBydDZfaW5mbyAqcnQ7XG4rXG4rXHR0YWJsZSA9IGZpYjZfZ2V0X3RhYmxlKG5ldCwgdGJsX2lkKTtcbitcdGlmICghdGFibGUpXG4rXHRcdHJldHVybiBOVUxMO1xuK1xuK1x0cnQgPSBpcDZfcG9sX3JvdXRlKG5ldCwgdGFibGUsIDAsIGZsNiwgc2tiLCBSVDZfTE9PS1VQX0ZfSEFTX1NBRERSKTtcbitcdHJldHVybiBcdTAwMjZydC1cdTAwM2Vkc3Q7XG4rfVxuK1xuK3N0YXRpYyB2b2lkIHNlZzZfaW5pdF9mbG93aTYoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlwdjZoZHIgKmhkcixcbitcdFx0XHQgICAgIHN0cnVjdCBmbG93aTYgKmZsNilcbit7XG4rXHRtZW1zZXQoZmw2LCAwLCBzaXplb2YoKmZsNikpO1xuK1xuK1x0Zmw2LVx1MDAzZWRhZGRyID0gaGRyLVx1MDAzZWRhZGRyO1xuK1x0Zmw2LVx1MDAzZXNhZGRyID0gaGRyLVx1MDAzZXNhZGRyO1xuK1x0Zmw2LVx1MDAzZWZsb3dsYWJlbCA9IGlwNl9mbG93aW5mbyhoZHIpO1xuK1x0Zmw2LVx1MDAzZWZsb3dpNl9tYXJrID0gc2tiLVx1MDAzZW1hcms7XG4rXHRmbDYtXHUwMDNlZmxvd2k2X3Byb3RvID0gaGRyLVx1MDAzZW5leHRoZHI7XG4rfVxuK1xuKy8qIGxvb2sgdXAgdGhlIHJvdXRlIGZvciB0aGUgZmlyc3QgU0lEIG9uIHRoZSBpbnB1dCBwYXRoIGFuZCBzZXQgaXQgb24gdGhlIHNrYi5cbisgKiBSZXR1cm5zIHRoZSByZWZjb3VudGVkIGRzdCwgb3IgTlVMTCBpZiBhIHJlZmVyZW5jZSBjb3VsZCBub3QgYmUgc2FmZWx5IHRha2VuLlxuKyAqL1xuK3N0YXRpYyBzdHJ1Y3QgZHN0X2VudHJ5ICpzZWc2X2lucHV0X3JvdXRlKHN0cnVjdCBuZXQgKm5ldCxcbitcdFx0XHRcdFx0ICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuK1x0XHRcdFx0XHQgIHN0cnVjdCBzZWc2X2x3dCAqc2x3dClcbit7XG4rXHR1MzIgdGFibGUgPSBzbHd0LVx1MDAzZXRhYmxlO1xuK1xuK1x0aWYgKHRhYmxlKSB7XG4rXHRcdHN0cnVjdCBpcHY2aGRyICpoZHIgPSBpcHY2X2hkcihza2IpO1xuK1x0XHRzdHJ1Y3QgZHN0X2VudHJ5ICpkc3Q7XG4rXHRcdHN0cnVjdCBmbG93aTYgZmw2O1xuK1xuK1x0XHRzZWc2X2luaXRfZmxvd2k2KHNrYiwgaGRyLCBcdTAwMjZmbDYpO1xuK1x0XHRmbDYuZmxvd2k2X2lpZiA9IHNrYi1cdTAwM2VkZXYtXHUwMDNlaWZpbmRleDtcbitcbitcdFx0ZHN0ID0gc2VnNl90YWJsZV9sb29rdXAobmV0LCBza2IsIFx1MDAyNmZsNiwgdGFibGUpO1xuK1x0XHRpZiAoIWRzdCkge1xuK1x0XHRcdGRzdCA9IFx1MDAyNm5ldC1cdTAwM2VpcHY2LmlwNl9ibGtfaG9sZV9lbnRyeS1cdTAwM2Vkc3Q7XG4rXHRcdFx0ZHN0X2hvbGQoZHN0KTtcbitcdFx0fVxuK1xuK1x0XHRza2JfZHN0X2Ryb3Aoc2tiKTtcbitcdFx0c2tiX2RzdF9zZXQoc2tiLCBkc3QpO1xuK1x0fSBlbHNlIHtcbitcdFx0aXA2X3JvdXRlX2lucHV0KHNrYik7XG4rXG4rXHRcdC8qIGlwNl9yb3V0ZV9pbnB1dCgpIHNldHMgYSBOT1JFRiBkc3Q7IGZvcmNlIGEgcmVmY291bnQgb24gaXRcbitcdFx0ICogYmVmb3JlIGNhY2hpbmcgb3IgZnVydGhlciB1c2UuXG4rXHRcdCAqL1xuK1x0XHRza2JfZHN0X2ZvcmNlKHNrYik7XG4rXHR9XG4rXG4rXHRyZXR1cm4gc2tiX2RzdChza2IpO1xuK31cbitcbiBzdGF0aWMgaW50IHNlZzZfaW5wdXRfZmluaXNoKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrLFxuIFx0XHRcdCAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiB7XG5AQCAtNTEzLDE1ICs1ODIsOSBAQCBzdGF0aWMgaW50IHNlZzZfaW5wdXRfY29yZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpzayxcbiBcdFx0Z290byBkcm9wO1xuIFx0fVxuIFxuLVx0aWYgKCFkc3QpIHtcbi1cdFx0aXA2X3JvdXRlX2lucHV0KHNrYik7XG4tXG4tXHRcdC8qIGlwNl9yb3V0ZV9pbnB1dCgpIHNldHMgYSBOT1JFRiBkc3Q7IGZvcmNlIGEgcmVmY291bnQgb24gaXRcbi1cdFx0ICogYmVmb3JlIGNhY2hpbmcgb3IgZnVydGhlciB1c2UuXG4tXHRcdCAqL1xuLVx0XHRza2JfZHN0X2ZvcmNlKHNrYik7XG4tXHRcdGRzdCA9IHNrYl9kc3Qoc2tiKTtcbi1cdFx0aWYgKHVubGlrZWx5KCFkc3QpKSB7XG4rXHRpZiAodW5saWtlbHkoIWRzdCkpIHtcbitcdFx0ZHN0ID0gc2VnNl9pbnB1dF9yb3V0ZShuZXQsIHNrYiwgc2x3dCk7XG4rXHRcdGlmICghZHN0KSB7XG4gXHRcdFx0ZXJyID0gLUVORVRVTlJFQUNIO1xuIFx0XHRcdGdvdG8gZHJvcDtcbiBcdFx0fVxuQEAgLTU3OCw2ICs2NDEsMjkgQEAgc3RhdGljIGludCBzZWc2X2lucHV0KHN0cnVjdCBza19idWZmICpza2IpXG4gXHRyZXR1cm4gc2VnNl9pbnB1dF9jb3JlKGRldl9uZXQoc2tiLVx1MDAzZWRldiksIE5VTEwsIHNrYik7XG4gfVxuIFxuKy8qIGxvb2sgdXAgdGhlIHJvdXRlIGZvciB0aGUgZmlyc3QgU0lEIG9uIHRoZSBvdXRwdXQgcGF0aC4gQWx3YXlzIHJldHVybnMgYVxuKyAqIHJlZmNvdW50ZWQgZHN0LlxuKyAqL1xuK3N0YXRpYyBzdHJ1Y3QgZHN0X2VudHJ5ICpzZWc2X291dHB1dF9kc3RfbG9va3VwKHN0cnVjdCBuZXQgKm5ldCxcbitcdFx0XHRcdFx0XHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuK1x0XHRcdFx0XHRcdHN0cnVjdCBmbG93aTYgKmZsNixcbitcdFx0XHRcdFx0XHRzdHJ1Y3Qgc2VnNl9sd3QgKnNsd3QpXG4re1xuK1x0c3RydWN0IGRzdF9lbnRyeSAqZHN0O1xuK1xuK1x0aWYgKHNsd3QtXHUwMDNldGFibGUpIHtcbitcdFx0ZHN0ID0gc2VnNl90YWJsZV9sb29rdXAobmV0LCBza2IsIGZsNiwgc2x3dC1cdTAwM2V0YWJsZSk7XG4rXHRcdGlmICghZHN0KSB7XG4rXHRcdFx0ZHN0ID0gXHUwMDI2bmV0LVx1MDAzZWlwdjYuaXA2X2Jsa19ob2xlX2VudHJ5LVx1MDAzZWRzdDtcbitcdFx0XHRkc3RfaG9sZChkc3QpO1xuK1x0XHR9XG4rXHR9IGVsc2Uge1xuK1x0XHRkc3QgPSBpcDZfcm91dGVfb3V0cHV0KG5ldCwgTlVMTCwgZmw2KTtcbitcdH1cbitcbitcdHJldHVybiBkc3Q7XG4rfVxuK1xuIHN0YXRpYyBpbnQgc2VnNl9vdXRwdXRfY29yZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpzayxcbiBcdFx0XHQgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiB7XG5AQCAtNjAwLDE0ICs2ODYsOSBAQCBzdGF0aWMgaW50IHNlZzZfb3V0cHV0X2NvcmUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29jayAqc2ssXG4gXHRcdHN0cnVjdCBpcHY2aGRyICpoZHIgPSBpcHY2X2hkcihza2IpO1xuIFx0XHRzdHJ1Y3QgZmxvd2k2IGZsNjtcbiBcbi1cdFx0bWVtc2V0KFx1MDAyNmZsNiwgMCwgc2l6ZW9mKGZsNikpO1xuLVx0XHRmbDYuZGFkZHIgPSBoZHItXHUwMDNlZGFkZHI7XG4tXHRcdGZsNi5zYWRkciA9IGhkci1cdTAwM2VzYWRkcjtcbi1cdFx0Zmw2LmZsb3dsYWJlbCA9IGlwNl9mbG93aW5mbyhoZHIpO1xuLVx0XHRmbDYuZmxvd2k2X21hcmsgPSBza2ItXHUwMDNlbWFyaztcbi1cdFx0Zmw2LmZsb3dpNl9wcm90byA9IGhkci1cdTAwM2VuZXh0aGRyO1xuK1x0XHRzZWc2X2luaXRfZmxvd2k2KHNrYiwgaGRyLCBcdTAwMjZmbDYpO1xuIFxuLVx0XHRkc3QgPSBpcDZfcm91dGVfb3V0cHV0KG5ldCwgTlVMTCwgXHUwMDI2Zmw2KTtcbitcdFx0ZHN0ID0gc2VnNl9vdXRwdXRfZHN0X2xvb2t1cChuZXQsIHNrYiwgXHUwMDI2Zmw2LCBzbHd0KTtcbiBcdFx0aWYgKGRzdC1cdTAwM2VlcnJvcikge1xuIFx0XHRcdGVyciA9IGRzdC1cdTAwM2VlcnJvcjtcbiBcdFx0XHRnb3RvIGRyb3A7XG5AQCAtNzUyLDYgKzgzMywxNSBAQCBzdGF0aWMgaW50IHNlZzZfYnVpbGRfc3RhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmxhdHRyICpubGEsXG4gXHRcdH1cbiBcdH1cbiBcbitcdGlmICh0YltTRUc2X0lQVFVOTkVMX1RBQkxFXSkge1xuK1x0XHRzbHd0LVx1MDAzZXRhYmxlID0gbmxhX2dldF91MzIodGJbU0VHNl9JUFRVTk5FTF9UQUJMRV0pO1xuK1x0XHRpZiAoIXNsd3QtXHUwMDNldGFibGUpIHtcbitcdFx0XHROTF9TRVRfRVJSX01TRyhleHRhY2ssIFwiaW52YWxpZCBsb29rdXAgdGFibGVcIik7XG4rXHRcdFx0ZXJyID0gLUVJTlZBTDtcbitcdFx0XHRnb3RvIGVycl9kZXN0cm95X291dHB1dDtcbitcdFx0fVxuK1x0fVxuK1xuIFx0bmV3dHMtXHUwMDNldHlwZSA9IExXVFVOTkVMX0VOQ0FQX1NFRzY7XG4gXHRuZXd0cy1cdTAwM2VmbGFncyB8PSBMV1RVTk5FTF9TVEFURV9JTlBVVF9SRURJUkVDVDtcbiBcbkBAIC03OTUsNiArODg1LDEwIEBAIHN0YXRpYyBpbnQgc2VnNl9maWxsX2VuY2FwX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdCAgICBubGFfcHV0X2luNl9hZGRyKHNrYiwgU0VHNl9JUFRVTk5FTF9TUkMsIFx1MDAyNnNsd3QtXHUwMDNldHVuc3JjKSlcbiBcdFx0cmV0dXJuIC1FTVNHU0laRTtcbiBcbitcdGlmIChzbHd0LVx1MDAzZXRhYmxlIFx1MDAyNlx1MDAyNlxuK1x0ICAgIG5sYV9wdXRfdTMyKHNrYiwgU0VHNl9JUFRVTk5FTF9UQUJMRSwgc2x3dC1cdTAwM2V0YWJsZSkpXG4rXHRcdHJldHVybiAtRU1TR1NJWkU7XG4rXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG5AQCAtODA5LDYgKzkwMyw5IEBAIHN0YXRpYyBpbnQgc2VnNl9lbmNhcF9ubHNpemUoc3RydWN0IGx3dHVubmVsX3N0YXRlICpsd3RzdGF0ZSlcbiBcdGlmICghaXB2Nl9hZGRyX2FueShcdTAwMjZzbHd0LVx1MDAzZXR1bnNyYykpXG4gXHRcdG5sc2l6ZSArPSBubGFfdG90YWxfc2l6ZShzaXplb2Yoc2x3dC1cdTAwM2V0dW5zcmMpKTtcbiBcbitcdGlmIChzbHd0LVx1MDAzZXRhYmxlKVxuK1x0XHRubHNpemUgKz0gbmxhX3RvdGFsX3NpemUoc2l6ZW9mKHUzMikpO1xuK1xuIFx0cmV0dXJuIG5sc2l6ZTtcbiB9XG4gXG5AQCAtODI2LDYgKzkyMyw5IEBAIHN0YXRpYyBpbnQgc2VnNl9lbmNhcF9jbXAoc3RydWN0IGx3dHVubmVsX3N0YXRlICphLCBzdHJ1Y3QgbHd0dW5uZWxfc3RhdGUgKmIpXG4gXHRpZiAoIWlwdjZfYWRkcl9lcXVhbChcdTAwMjZhX3Nsd3QtXHUwMDNldHVuc3JjLCBcdTAwMjZiX3Nsd3QtXHUwMDNldHVuc3JjKSlcbiBcdFx0cmV0dXJuIDE7XG4gXG4rXHRpZiAoYV9zbHd0LVx1MDAzZXRhYmxlICE9IGJfc2x3dC1cdTAwM2V0YWJsZSlcbitcdFx0cmV0dXJuIDE7XG4rXG4gXHRyZXR1cm4gbWVtY21wKGFfaGRyLCBiX2hkciwgbGVuKTtcbiB9XG4gXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L01ha2VmaWxlIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L01ha2VmaWxlXG5pbmRleCA3MDhkOTYwYWUwN2Q1Yi4uNWRmMGM5NGFiMDYwMTggMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvTWFrZWZpbGVcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9NYWtlZmlsZVxuQEAgLTg1LDYgKzg1LDcgQEAgVEVTVF9QUk9HUyA6PSBcXFxuIFx0cnh0aW1lc3RhbXAuc2ggXFxcbiBcdHNjdHBfdnJmLnNoIFxcXG4gXHRza2ZfbmV0X29mZi5zaCBcXFxuK1x0c3J2Nl9lbmNhcF9sb29rdXBfbDN2cG5fdGVzdC5zaCBcXFxuIFx0c3J2Nl9lbmRfZHQ0Nl9sM3Zwbl90ZXN0LnNoIFxcXG4gXHRzcnY2X2VuZF9kdDRfbDN2cG5fdGVzdC5zaCBcXFxuIFx0c3J2Nl9lbmRfZHQ2X2wzdnBuX3Rlc3Quc2ggXFxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvc3J2Nl9lbmNhcF9sb29rdXBfbDN2cG5fdGVzdC5zaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9zcnY2X2VuY2FwX2xvb2t1cF9sM3Zwbl90ZXN0LnNoXG5uZXcgZmlsZSBtb2RlIDEwMDc1NVxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLmQ2MjQ5MzAzYjdlYWExXG4tLS0gL2Rldi9udWxsXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvc3J2Nl9lbmNhcF9sb29rdXBfbDN2cG5fdGVzdC5zaFxuQEAgLTAsMCArMSwxMDI3IEBAXG4rIyEvYmluL2Jhc2hcbisjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4rI1xuKyMgYXV0aG9yOiBBbmRyZWEgTWF5ZXIgXHUwMDNjYW5kcmVhLm1heWVyQHVuaXJvbWEyLml0XHUwMDNlXG4rXG4rIyBUaGlzIHRlc3QgZXZhbHVhdGVzIHRoZSBTUnY2IGVuY2FwIFwibG9va3VwXCIgYXR0cmlidXRlLiBBZnRlciBlbmNhcHN1bGF0aW9uXG4rIyB0aGUgcm91dGVyIGxvb2tzIHVwIHRoZSByb3V0ZSBmb3IgdGhlIGZpcnN0IFNJRCwgdGhhdCBpcyB0aGUgb3V0ZXIgSVB2NlxuKyMgZGVzdGluYXRpb24gb2YgdGhlIGVuY2Fwc3VsYXRlZCBwYWNrZXQuIFRoZSBhdHRyaWJ1dGUgc2VsZWN0cyB0aGUgRklCIHRhYmxlXG4rIyB1c2VkIGZvciB0aGlzIHBvc3QtZW5jYXAgU0lEIHJvdXRlIGxvb2t1cC5cbisjXG4rIyBUd28gcm91dGVycyAocnQtMSwgcnQtMikgcHJvdmlkZSBMMyBWUE4gc2VydmljZXMgb3ZlciBhbiBJUHY2IHVuZGVybGF5XG4rIyAoZmQwMDo6LzY0KS4gRWFjaCByb3V0ZXIgdXNlcyBhIHNlcGFyYXRlIFZSRiBwZXIgdGVuYW50LCB3aXRoIGRlZmF1bHRcbisjIGJsYWNraG9sZSByb3V0ZXMgKElQdjQgYW5kIElQdjYpIHRvIHByZXZlbnQgdHJhZmZpYyBmcm9tIGxlYWtpbmcgb3V0IG9mXG4rIyB0aGUgVlJGLiBUZW5hbnQgdHJhZmZpYyBpcyBlbmNhcHN1bGF0ZWQsIHRoZW4gZGVjYXBzdWxhdGVkIHdpdGggYW5cbisjIEVuZC5EVDQ2LiBFYWNoIHJvdXRlciBwcm94aWVzIGJvdGggTkRQIGFuZCBBUlAuXG4rI1xuKyMgVGhlIHJvdXRlcyB0aGF0IG1hdGNoIHRoZSBmaXJzdCBTSURzIGFyZSBpbnN0YWxsZWQgaW4gYSBkZWRpY2F0ZWQgdW5kZXJsYXlcbisjIHRhYmxlICg1MDApIHJhdGhlciB0aGFuIHRoZSBtYWluIHRhYmxlICgyNTQpLiBUaGUgZW5jYXAgcm91dGVzIHVzZVxuKyMgXCJsb29rdXAgNTAwXCIgdG8gc2VsZWN0IHRoaXMgdGFibGUgZm9yIHRoZSBwb3N0LWVuY2FwIFNJRCByb3V0ZSBsb29rdXAuXG4rI1xuKyMgV2l0aG91dCB0aGUgXCJsb29rdXBcIiBhdHRyaWJ1dGUsIHRoZSByb3V0ZSBmb3IgdGhlIGZpcnN0IFNJRCBjYW5ub3QgYmUgZm91bmQ6XG4rIyAgLSBvbiB0aGUgaW5wdXQgcGF0aCAoZm9yd2FyZGVkIHRyYWZmaWMpLCB0aGUgbG9va3VwIHN0YXlzIGluIHRoZSBWUkZcbisjICAgIGFuZCBoaXRzIHRoZSBibGFja2hvbGU7XG4rIyAgLSBvbiB0aGUgb3V0cHV0IHBhdGggKGxvY2FsbHkgb3JpZ2luYXRlZCB0cmFmZmljKSwgdGhlIGxvb2t1cCBmYWxsc1xuKyMgICAgdGhyb3VnaCB0byB0aGUgbWFpbiB0YWJsZSwgd2l0aCBubyByb3V0ZSB0byB0aGUgZmlyc3QgU0lELlxuKyNcbisjXG4rIyBMZWdlbmQgKHNwZWNpZmljIHBlci10ZW5hbnQgYWRkcmVzc2VzIGFyZSBpbiB0aGUgaW5zdGFudGlhdGlvbiB0YWJsZXMgYmVsb3cpOlxuKyMgICBYICAgICAgICAgID0gdGVuYW50IGlkIGFuZCBWUkYgdGFibGUgaWQ7IHR3byB0ZW5hbnRzOiAxMDAgYW5kIDIwMFxuKyMgICAgICAgICAgICAgICAgKFwidFhcIiBtZWFucyB0ZW5hbnQgWCwgZS5nLiB0MTAwLCB0MjAwKVxuKyMgICBhLCBiICAgICAgID0gdGhlIHR3byBob3N0IGlkcyBvZiB0aGUgdGVuYW50XG4rIyAgIEhBLCBIQiAgICAgPSBhZGRyZXNzZXMgb2YgaG9zdCBhLCBob3N0IGJcbisjICAgUkxPMSwgUkxPMiA9IHJsby1YIHJvdXRlciBsb29wYmFjayBhZGRyZXNzIG9uIHJ0LTEsIHJ0LTIgKHRlbmFudCBnYXRld2F5XG4rIyAgICAgICAgICAgICAgICBmb3IgdGhlIG91dHB1dCBwYXRoLCBkdWFsLXN0YWNrKVxuKyMgICB2cmYtWCAgICAgID0gcGVyLXRlbmFudCBWUkYgb24gZWFjaCByb3V0ZXIgKHRhYmxlIFgpXG4rI1xuKyMgQ29uc3RhbnRzIChzYW1lIGZvciBldmVyeSB0ZW5hbnQpOlxuKyMgICB1bmRlcmxheSAgID0gdGFibGUgNTAwOyBwb3N0LWVuY2FwIFNJRCByb3V0ZSBsb29rdXAgKHZpYSBcImxvb2t1cCA1MDBcIilcbisjICAgbG9jYWxzaWQgICA9IHRhYmxlIDkwOyBob2xkcyB0aGUgZGVjYXAgU0lEcyAoRW5kLkRUNDYpXG4rIyAgIGZkMDA6Oi82NCAgPSB1bmRlcmxheSBsaW5rIGJldHdlZW4gcnQtMSBhbmQgcnQtMlxuKyMgICB2ZXRoLXRYICAgID0gY2FmZTo6MjU0LzEwLjAuMC4yNTQgKHRlbmFudCBnYXRld2F5IG9uIHZldGgsIGJvdGggcm91dGVycylcbisjXG4rI1xuKyMgKy0tLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLStcbisjIHwgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICB8XG4rIyB8ICAgaHMtdFgtYSBuZXRucyAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICBocy10WC1iIG5ldG5zICAgfFxuKyMgfCAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHxcbisjIHwgICstLS0tLS0tLS0tLS0tKyAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgKy0tLS0tLS0tLS0tLS0rICB8XG4rIyB8ICB8ICAgIHZldGgwICAgIHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHwgICAgdmV0aDAgICAgfCAgfFxuKyMgfCAgfCAgICAgSEEgICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICB8ICAgICBIQiAgICAgIHwgIHxcbisjIHwgICstLS0tLS0tLS0tLS0tKyAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgKy0tLS0tLS0tLS0tLS0rICB8XG4rIyB8ICAgICAgICAuICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAuICAgICAgICAgfFxuKyMgKy0tLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLStcbisjICAgICAgICAgIC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5cbisjICAgICAgICAgIC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5cbisjICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4rIyB8ICAgICAgICAuICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAuICAgICAgICAgfFxuKyMgfCArLS0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgICAgfCAgIHwgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0rIHxcbisjIHwgfCAgIHZldGgtdFggICAgIHwgICArLS0tLS0tLS0tLSsgIHwgICB8ICArLS0tLS0tLS0tLSsgICB8ICAgdmV0aC10WCAgICAgfCB8XG4rIyB8IHwgIDo6MjU0Ly4yNTQgICB8ICAgfCBsb2NhbHNpZCB8ICB8ICAgfCAgfCBsb2NhbHNpZCB8ICAgfCAgOjoyNTQvLjI1NCAgIHwgfFxuKyMgfCArLS0tLS0tLSstLS0tLS0tKyAgICstLS0tLS0tLS0tKyAgfCAgIHwgICstLS0tLS0tLS0tKyAgICstLS0tLS0tKy0tLS0tLS0rIHxcbisjIHwgICAgICAgICB8ICAgICAgICAgICArLS0tLS0tLS0tLSsgIHwgICB8ICArLS0tLS0tLS0tLSsgICAgICAgICAgIHwgICAgICAgICB8XG4rIyB8ICAgICstLS0tKy0tLS0rICAgICAgfCB1bmRlcmxheSB8ICB8ICAgfCAgfCB1bmRlcmxheSB8ICAgICAgKy0tLS0rLS0tLSsgICAgfFxuKyMgfCAgICB8IHZyZi1YICAgfCAgICAgICstLS0tLS0tLS0tKyAgfCAgIHwgICstLS0tLS0tLS0tKyAgICAgIHwgdnJmLVggICB8ICAgIHxcbisjIHwgICAgKy0tLS0rLS0tLSsgICAgICAgICAgICAgICAgICAgIHwgICB8ICAgICAgICAgICAgICAgICAgICArLS0tLSstLS0tKyAgICB8XG4rIyB8ICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgfCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKyMgfCAgICstLS0tLSstLS0tKyAgICArLS0tLS0tLS0tLS0tKyAgfCAgIHwgICstLS0tLS0tLS0tLS0rICAgICstLS0tKy0tLS0tKyAgIHxcbisjIHwgICB8ICBybG8tWCAgIHwgICAgfCAgIHZldGgwICAgIHwgIHwgICB8ICB8ICAgdmV0aDAgICAgfCAgICB8ICBybG8tWCAgIHwgICB8XG4rIyB8ICAgfCAgIFJMTzEgICB8ICAgIHwgZmQwMDo6MS82NCB8Li58Li4ufC4ufCBmZDAwOjoyLzY0IHwgICAgfCAgIFJMTzIgICB8ICAgfFxuKyMgfCAgICstLS0tLS0tLS0tKyAgICArLS0tLS0tLS0tLS0tKyAgfCAgIHwgICstLS0tLS0tLS0tLS0rICAgICstLS0tLS0tLS0tKyAgIHxcbisjIHwgICAgICAgICAgICAgIHJ0LTEgbmV0bnMgICAgICAgICAgIHwgICB8ICAgICAgICAgIHJ0LTIgbmV0bnMgICAgICAgICAgICAgICB8XG4rIyArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuKyNcbisjXG4rIyBQZXItdGVuYW50IGluc3RhbnRpYXRpb246XG4rIyArLS0tLS0rLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLStcbisjIHwgIFggIHwgYSwgYiB8IEhBICAgICAgICAgICAgICAgIHwgSEIgICAgICAgICAgICAgICAgfFxuKyMgKy0tLS0tKy0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rXG4rIyB8IDEwMCB8IDEsIDIgfCBjYWZlOjoxLCAxMC4wLjAuMSB8IGNhZmU6OjIsIDEwLjAuMC4yIHxcbisjIHwgMjAwIHwgMywgNCB8IGNhZmU6OjMsIDEwLjAuMC4zIHwgY2FmZTo6NCwgMTAuMC4wLjQgfFxuKyMgKy0tLS0tKy0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rXG4rI1xuKyMgUm91dGVyIGxvb3BiYWNrIChybG8tWCkgYWRkcmVzc2VzLCBwZXIgdGVuYW50OlxuKyMgKy0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuKyMgfCAgWCAgfCBSTE8xIChydC0xKSAgICAgICAgICAgfCBSTE8yIChydC0yKSAgICAgICAgICAgfFxuKyMgKy0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuKyMgfCAxMDAgfCBjYWZlOjoxMDEsIDEwLjAuMC4xMDEgfCBjYWZlOjoxMDIsIDEwLjAuMC4xMDIgfFxuKyMgfCAyMDAgfCBjYWZlOjoyMDEsIDEwLjAuMC4yMDEgfCBjYWZlOjoyMDIsIDEwLjAuMC4yMDIgfFxuKyMgKy0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuKyNcbisjXG4rIyBOZXR3b3JrIGNvbmZpZ3VyYXRpb25cbisjID09PT09PT09PT09PT09PT09PT09PVxuKyNcbisjIHJ0LTE6IGxvY2Fsc2lkIHRhYmxlICh0YWJsZSA5MClcbisjICstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuKyMgfCB0ZW5hbnQgfCBTSUQgICAgICAgICAgICAgICAgfCBBY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4rIyArLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbisjIHwgIDEwMCAgIHwgZmMwMDoyOjE6MTAwOjowZDQ2IHwgYXBwbHkgU1J2NiBFbmQuRFQ0NiB2cmZ0YWJsZSAxMDAgfFxuKyMgfCAgMjAwICAgfCBmYzAwOjI6MToyMDA6OjBkNDYgfCBhcHBseSBTUnY2IEVuZC5EVDQ2IHZyZnRhYmxlIDIwMCB8XG4rIyArLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbisjXG4rIyBydC0xOiB1bmRlcmxheSB0YWJsZSAodGFibGUgNTAwKSAtIHBvc3QtZW5jYXAgU0lEIHJvdXRlIGxvb2t1cFxuKyMgKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4rIyB8IHRlbmFudCB8IFNJRCAgICAgICAgICAgICAgICB8IEFjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgIHxcbisjICstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuKyMgfCAgMTAwICAgfCBmYzAwOjE6MjoxMDA6OjBkNDYgfCBmb3J3YXJkIHZpYSBmZDAwOjoyIGRldiB2ZXRoMCB8XG4rIyB8ICAyMDAgICB8IGZjMDA6MToyOjIwMDo6MGQ0NiB8IGZvcndhcmQgdmlhIGZkMDA6OjIgZGV2IHZldGgwIHxcbisjICstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuKyNcbisjIHJ0LTE6IFZSRiB0YWJsZXMgKHBlciB0ZW5hbnQ6IHZyZi1YID0gdGFibGUgWClcbisjICstLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuKyMgfCB0ZW5hbnQgfCBkc3QgICAgICAgIHwgZW5jYXAgYWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4rIyArLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbisjIHwgMTAwICAgIHwgY2FmZTo6MiAgICB8IGVuY2FwIHNlZ3MgZmMwMDoxOjI6MTAwOjowZDQ2IGxvb2t1cCA1MDAgfFxuKyMgfCAgICAgICAgfCAxMC4wLjAuMiAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4rIyB8ICAgICAgICB8IGNhZmU6OjEwMiAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbisjIHwgICAgICAgIHwgMTAuMC4wLjEwMiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKyMgfCAyMDAgICAgfCBjYWZlOjo0ICAgIHwgZW5jYXAgc2VncyBmYzAwOjE6MjoyMDA6OjBkNDYgbG9va3VwIDUwMCB8XG4rIyB8ICAgICAgICB8IDEwLjAuMC40ICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbisjIHwgICAgICAgIHwgY2FmZTo6MjAyICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKyMgfCAgICAgICAgfCAxMC4wLjAuMjAyIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4rIyArLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbisjXG4rI1xuKyMgcnQtMjogbG9jYWxzaWQgdGFibGUgKHRhYmxlIDkwKVxuKyMgKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4rIyB8IHRlbmFudCB8IFNJRCAgICAgICAgICAgICAgICB8IEFjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbisjICstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuKyMgfCAgMTAwICAgfCBmYzAwOjE6MjoxMDA6OjBkNDYgfCBhcHBseSBTUnY2IEVuZC5EVDQ2IHZyZnRhYmxlIDEwMCB8XG4rIyB8ICAyMDAgICB8IGZjMDA6MToyOjIwMDo6MGQ0NiB8IGFwcGx5IFNSdjYgRW5kLkRUNDYgdnJmdGFibGUgMjAwIHxcbisjICstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuKyNcbisjIHJ0LTI6IHVuZGVybGF5IHRhYmxlICh0YWJsZSA1MDApIC0gcG9zdC1lbmNhcCBTSUQgcm91dGUgbG9va3VwXG4rIyArLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbisjIHwgdGVuYW50IHwgU0lEICAgICAgICAgICAgICAgIHwgQWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgfFxuKyMgKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4rIyB8ICAxMDAgICB8IGZjMDA6MjoxOjEwMDo6MGQ0NiB8IGZvcndhcmQgdmlhIGZkMDA6OjEgZGV2IHZldGgwIHxcbisjIHwgIDIwMCAgIHwgZmMwMDoyOjE6MjAwOjowZDQ2IHwgZm9yd2FyZCB2aWEgZmQwMDo6MSBkZXYgdmV0aDAgfFxuKyMgKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4rI1xuKyMgcnQtMjogVlJGIHRhYmxlcyAocGVyIHRlbmFudDogdnJmLVggPSB0YWJsZSBYKVxuKyMgKy0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4rIyB8IHRlbmFudCB8IGRzdCAgICAgICAgfCBlbmNhcCBhY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbisjICstLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuKyMgfCAxMDAgICAgfCBjYWZlOjoxICAgIHwgZW5jYXAgc2VncyBmYzAwOjI6MToxMDA6OjBkNDYgbG9va3VwIDUwMCB8XG4rIyB8ICAgICAgICB8IDEwLjAuMC4xICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbisjIHwgICAgICAgIHwgY2FmZTo6MTAxICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKyMgfCAgICAgICAgfCAxMC4wLjAuMTAxIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4rIyB8IDIwMCAgICB8IGNhZmU6OjMgICAgfCBlbmNhcCBzZWdzIGZjMDA6MjoxOjIwMDo6MGQ0NiBsb29rdXAgNTAwIHxcbisjIHwgICAgICAgIHwgMTAuMC4wLjMgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKyMgfCAgICAgICAgfCBjYWZlOjoyMDEgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4rIyB8ICAgICAgICB8IDEwLjAuMC4yMDEgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbisjICstLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuKyMgV2l0aGluIGEgdGVuYW50LCBhIHNpbmdsZSBTSUQgcmVhY2hlcyB0aGUgYWRqYWNlbnQgcm91dGVyIChpdHMgbG9vcGJhY2spXG4rIyBhbmQgdGhlIHJlbW90ZSBob3N0IGNvbm5lY3RlZCB0byBpdCwgaW4gYm90aCBJUHY0IGFuZCBJUHY2LlxuKyNcbisjIEZvciBib3RoIHJ0LTEgYW5kIHJ0LTIsIGVhY2ggVlJGIGFsc28gaGFzIHRoZSBjb25uZWN0ZWQgaG9zdCBwcmVmaXggKGNhZmU6Oi82NFxuKyMgb3IgMTAuMC4wLjAvMjQpIGFuZCBhIGRlZmF1bHQgYmxhY2tob2xlIChJUHY0IGFuZCBJUHY2KS5cbisjXG4rI1xuKyMgTG9jYWxseSBvcmlnaW5hdGVkIHRyYWZmaWMgKG91dHB1dCBwYXRoKVxuKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuKyNcbisjIFRoZSBjb25maWd1cmF0aW9uIGFib3ZlIGNvdmVycyBmb3J3YXJkZWQgdHJhZmZpYywgd2hlcmUgcGFja2V0cyBhcnJpdmUgZnJvbVxuKyMgYSBob3N0IGFuZCBhcmUgZW5jYXBzdWxhdGVkIGJ5IHRoZSByb3V0ZXIuIFRvIGFsc28gdGVzdCByb3V0ZXItb3JpZ2luYXRlZFxuKyMgdHJhZmZpYywgZWFjaCByb3V0ZXIgcGluZ3MgdGhlIG90aGVyIHJvdXRlcidzIGxvb3BiYWNrIGFkZHJlc3MgdGhyb3VnaFxuKyMgdGhlIFZQTi5cbisjXG4rIyBFeGFtcGxlICh0ZW5hbnQgMTAwKSwgcnQtMSBwaW5ncyBjYWZlOjoxMDIgKHJ0LTIncyBsb29wYmFjayk6XG4rIyAgIDEuIHJ0LTEgbG9va3MgdXAgY2FmZTo6MTAyIGluIHZyZi0xMDAgYW5kIGVuY2Fwc3VsYXRlcyBpdCAoU0lEXG4rIyAgICAgIGZjMDA6MToyOjEwMDo6MGQ0NiksIHRoZW4gXCJsb29rdXAgNTAwXCIgZmluZHMgdGhlIHJvdXRlIGZvciB0aGUgU0lEIGluIHRoZVxuKyMgICAgICB1bmRlcmxheSB0YWJsZSAobmV4dCBob3AgZmQwMDo6MikgYW5kIGZvcndhcmRzIGl0O1xuKyMgICAyLiBydC0yIGRlY2Fwc3VsYXRlcyBpdCAobG9jYWxzaWQsIEVuZC5EVDQ2KSBhbmQgZGVsaXZlcnMgaXQgbG9jYWxseVxuKyMgICAgICAoY2FmZTo6MTAyIGlzIG9uIHRoZSBybG8tMTAwIGludGVyZmFjZSk7XG4rIyAgIDMuIHJ0LTIgcmVwbGllcyB3aXRoIGRlc3RpbmF0aW9uIGNhZmU6OjEwMSAocnQtMSdzIGxvb3BiYWNrKS4gcnQtMiBsb29rcyB1cFxuKyMgICAgICBjYWZlOjoxMDEgaW4gdnJmLTEwMCBhbmQgZW5jYXBzdWxhdGVzIGl0IGJhY2sgdG8gcnQtMSAoYWdhaW4gdmlhIFwibG9va3VwXG4rIyAgICAgIDUwMFwiKS4gcnQtMSBkZWNhcHN1bGF0ZXMgaXQgYW5kIGRlbGl2ZXJzIGl0LlxuK1xuKyMgc2hlbGxjaGVjayBzb3VyY2U9bGliLnNoXG4rc291cmNlIGxpYi5zaFxuK1xuK3JlYWRvbmx5IExPQ0FMU0lEX1RBQkxFX0lEPTkwXG4rcmVhZG9ubHkgVU5ERVJMQVlfVEFCTEVfSUQ9NTAwXG4rcmVhZG9ubHkgSVB2Nl9SVF9ORVRXT1JLPWZkMDBcbityZWFkb25seSBJUHY2X0hTX05FVFdPUks9Y2FmZVxuK3JlYWRvbmx5IElQdjRfSFNfTkVUV09SSz0xMC4wLjBcbityZWFkb25seSBWUE5fTE9DQVRPUl9TRVJWSUNFPWZjMDBcbityZWFkb25seSBEVDQ2X0ZVTkM9MGQ0NlxuK3JlYWRvbmx5IERVTU1ZX0RFVk5BTUU9ZHVtMFxuK3JlYWRvbmx5IElQdjZfVEVTVFNfQUREUj0yMDAxOmRiODo6MVxuK3JlYWRvbmx5IFRFU1RTX1RBQkxFX0lEPTU0MzIxXG4rUElOR19USU1FT1VUX1NFQz00XG4rXG4rU0VUVVBfRVJSPTFcbitcbityZXQ9JHtrc2Z0X3NraXB9XG4rbnN1Y2Nlc3M9MFxuK25mYWlsPTBcbitcbitQQVVTRV9PTl9GQUlMPSR7UEFVU0VfT05fRkFJTDo9bm99XG4rXG4rbG9nX3Rlc3QoKVxuK3tcbitcdGxvY2FsIHJjPVwiJDFcIlxuK1x0bG9jYWwgZXhwZWN0ZWQ9XCIkMlwiXG4rXHRsb2NhbCBtc2c9XCIkM1wiXG4rXG4rXHRpZiBbIFwiJHtyY31cIiAtZXEgXCIke2V4cGVjdGVkfVwiIF07IHRoZW5cbitcdFx0bnN1Y2Nlc3M9JCgobnN1Y2Nlc3MrMSkpXG4rXHRcdHByaW50ZiBcIlxcbiAgICBURVNUOiAlLTYwcyAgWyBPSyBdXFxuXCIgXCIke21zZ31cIlxuK1x0ZWxzZVxuK1x0XHRyZXQ9MVxuK1x0XHRuZmFpbD0kKChuZmFpbCsxKSlcbitcdFx0cHJpbnRmIFwiXFxuICAgIFRFU1Q6ICUtNjBzICBbRkFJTF1cXG5cIiBcIiR7bXNnfVwiXG4rXHRcdGlmIFsgXCIke1BBVVNFX09OX0ZBSUx9XCIgPSBcInllc1wiIF07IHRoZW5cbitcdFx0XHRlY2hvXG4rXHRcdFx0ZWNobyBcImhpdCBlbnRlciB0byBjb250aW51ZSwgJ3EnIHRvIHF1aXRcIlxuK1x0XHRcdHJlYWQgLXIgYVxuK1x0XHRcdFsgXCIkYVwiID0gXCJxXCIgXSBcdTAwMjZcdTAwMjYgZXhpdCAxXG4rXHRcdGZpXG4rXHRmaVxuK31cbitcbitwcmludF9sb2dfdGVzdF9yZXN1bHRzKClcbit7XG4rXHRwcmludGYgXCJcXG5UZXN0cyBwYXNzZWQ6ICUzZFxcblwiIFwiJHtuc3VjY2Vzc31cIlxuK1x0cHJpbnRmIFwiVGVzdHMgZmFpbGVkOiAlM2RcXG5cIiAgIFwiJHtuZmFpbH1cIlxuK1xuK1x0IyB3aGVuIGEgdGVzdCBmYWlscywgdGhlIHZhbHVlIG9mICdyZXQnIGlzIHNldCB0byAxIChlcnJvciBjb2RlKS5cbitcdCMgQ29udmVyc2VseSwgd2hlbiBhbGwgdGVzdHMgYXJlIHBhc3NlZCBzdWNjZXNzZnVsbHksIHRoZSAncmV0JyB2YWx1ZVxuK1x0IyBpcyBzZXQgdG8gMCAoc3VjY2VzcyBjb2RlKS5cbitcdGlmIFsgXCIke3JldH1cIiAtbmUgMSBdOyB0aGVuXG4rXHRcdHJldD0wXG4rXHRmaVxuK31cbitcbitsb2dfc2VjdGlvbigpXG4re1xuK1x0ZWNob1xuK1x0ZWNobyBcIiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjXCJcbitcdGVjaG8gXCJURVNUIFNFQ1RJT046ICQqXCJcbitcdGVjaG8gXCIjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI1wiXG4rfVxuK1xuK2dldF9ydG5hbWUoKVxuK3tcbitcdGxvY2FsIHJ0aWQ9XCIkMVwiXG4rXG4rXHRlY2hvIFwicnRfJHtydGlkfVwiXG4rfVxuK1xuK2dldF9ydF9uc25hbWUoKVxuK3tcbitcdGxvY2FsIHJ0aWQ9XCIkMVwiXG4rXHRsb2NhbCB2YXJuYW1lXG4rXG4rXHR2YXJuYW1lPVwiJChnZXRfcnRuYW1lIFwiJHtydGlkfVwiKVwiXG4rXHRlY2hvIFwiJHshdmFybmFtZX1cIlxuK31cbitcbitnZXRfaHNuYW1lKClcbit7XG4rXHRsb2NhbCB0aWQ9XCIkMVwiXG4rXHRsb2NhbCBoc2lkPVwiJDJcIlxuK1xuK1x0ZWNobyBcImhzX3Qke3RpZH1fJHtoc2lkfVwiXG4rfVxuK1xuK2dldF9oc19uc25hbWUoKVxuK3tcbitcdGxvY2FsIHRpZD1cIiQxXCJcbitcdGxvY2FsIGhzaWQ9XCIkMlwiXG4rXHRsb2NhbCB2YXJuYW1lXG4rXG4rXHR2YXJuYW1lPVwiJChnZXRfaHNuYW1lIFwiJHt0aWR9XCIgXCIke2hzaWR9XCIpXCJcbitcdGVjaG8gXCIkeyF2YXJuYW1lfVwiXG4rfVxuK1xuK2NsZWFudXAoKVxuK3tcbitcdGlwIGxpbmsgZGVsIHZldGgtcnQtMSAyXHUwMDNlL2Rldi9udWxsIHx8IHRydWVcbitcdGlwIGxpbmsgZGVsIHZldGgtcnQtMiAyXHUwMDNlL2Rldi9udWxsIHx8IHRydWVcbitcbitcdGNsZWFudXBfYWxsX25zXG4rXG4rXHQjIGNoZWNrIHdoZXRoZXIgdGhlIHNldHVwIHBoYXNlIHdhcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5IG9yIG5vdC4gSW5cbitcdCMgY2FzZSBvZiBhbiBlcnJvciBkdXJpbmcgdGhlIHNldHVwIHBoYXNlIG9mIHRoZSB0ZXN0aW5nIGVudmlyb25tZW50LFxuK1x0IyB0aGUgc2VsZnRlc3QgaXMgY29uc2lkZXJlZCBhcyBcInNraXBwZWRcIi5cbitcdGlmIFsgXCIke1NFVFVQX0VSUn1cIiAtbmUgMCBdOyB0aGVuXG4rXHRcdGVjaG8gXCJTS0lQOiBTZXR0aW5nIHVwIHRoZSB0ZXN0aW5nIGVudmlyb25tZW50IGZhaWxlZFwiXG4rXHRcdGV4aXQgXCIke2tzZnRfc2tpcH1cIlxuK1x0ZmlcbitcbitcdGV4aXQgXCIke3JldH1cIlxuK31cbitcbisjIEhvc3QgaWQgb2YgdGhlIHJvdXRlciBsb29wYmFjayAocmxvKSBmb3IgYSAocm91dGVyLCB0ZW5hbnQpIHBhaXIuXG4rIyBFLmcuIHJ0LTEvdGVuYW50IDEwMCAtXHUwMDNlIDEwMSwgcnQtMi90ZW5hbnQgMjAwIC1cdTAwM2UgMjAyLlxuK2dldF9ybG9faG9zdGlkKClcbit7XG4rXHRsb2NhbCBydGlkPVwiJDFcIlxuK1x0bG9jYWwgdGlkPVwiJDJcIlxuK1xuK1x0ZWNobyBcIiQoKHRpZCArIHJ0aWQpKVwiXG4rfVxuK1xuK2J1aWxkX3Zwbl9zaWQoKVxuK3tcbitcdGxvY2FsIHJ0c3JjPVwiJDFcIlxuK1x0bG9jYWwgcnRkc3Q9XCIkMlwiXG4rXHRsb2NhbCB0aWQ9XCIkM1wiXG4rXG4rXHRlY2hvIFwiJHtWUE5fTE9DQVRPUl9TRVJWSUNFfToke3J0c3JjfToke3J0ZHN0fToke3RpZH06OiR7RFQ0Nl9GVU5DfVwiXG4rfVxuK1xuKyMgSW5zdGFsbCBhIGR1YWwtc3RhY2sgKElQdjYgYW5kIElQdjQpIGVuY2FwIHJvdXRlIGluIGEgVlJGIG9uIHRoZSBnaXZlblxuKyMgcm91dGVyLlxuKyMgYXJnczpcbisjICAkMSAtIHJvdXRlciBpZFxuKyMgICQyIC0gaG9zdCBwYXJ0IG9mIHRoZSBJUHY2IGRlc3RpbmF0aW9uXG4rIyAgJDMgLSBob3N0IHBhcnQgb2YgdGhlIElQdjQgZGVzdGluYXRpb25cbisjICAkNCAtIFNSdjYgU0lEIHVzZWQgYXMgdGhlIGVuY2FwIGRlc3RpbmF0aW9uXG4rIyAgJDUgLSB0ZW5hbnQgaWRcbisjICAkNiAtIGlmIFwidHJ1ZVwiLCBhZGQgdGhlIFwibG9va3VwXCIgYXR0cmlidXRlIHRvIHRoZSBlbmNhcCByb3V0ZVxuK19fc2V0X2VuY2FwX3JvdXRlKClcbit7XG4rXHRsb2NhbCBydD1cIiQxXCJcbitcdGxvY2FsIGRzdDY9XCIkMlwiXG4rXHRsb2NhbCBkc3Q0PVwiJDNcIlxuK1x0bG9jYWwgc2lkPVwiJDRcIlxuK1x0bG9jYWwgdGlkPVwiJDVcIlxuK1x0bG9jYWwgdXNlX2xvb2t1cD1cIiQ2XCJcbitcdGxvY2FsIGxvb2t1cD0nJ1xuK1x0bG9jYWwgcnRuYW1lXG4rXG4rXHRydG5hbWU9XCIkKGdldF9ydF9uc25hbWUgXCIke3J0fVwiKVwiXG4rXG4rXHRpZiBbIFwiJHt1c2VfbG9va3VwfVwiID0gXCJ0cnVlXCIgXTsgdGhlblxuK1x0XHRsb29rdXA9XCJsb29rdXAgJHtVTkRFUkxBWV9UQUJMRV9JRH1cIlxuK1x0ZmlcbitcbitcdCMgc2hlbGxjaGVjayBkaXNhYmxlPVNDMjA4NlxuK1x0aXAgLW5ldG5zIFwiJHtydG5hbWV9XCIgLTYgcm91dGUgcmVwbGFjZSBcXFxuK1x0XHRcIiR7SVB2Nl9IU19ORVRXT1JLfTo6JHtkc3Q2fS8xMjhcIiB2cmYgXCJ2cmYtJHt0aWR9XCIgXFxcbitcdFx0ZW5jYXAgc2VnNiBtb2RlIGVuY2FwIHNlZ3MgXCIke3NpZH1cIiAke2xvb2t1cH0gZGV2IHZldGgwXG4rXG4rXHQjIHNoZWxsY2hlY2sgZGlzYWJsZT1TQzIwODZcbitcdGlwIC1uZXRucyBcIiR7cnRuYW1lfVwiIC00IHJvdXRlIHJlcGxhY2UgXFxcbitcdFx0XCIke0lQdjRfSFNfTkVUV09SS30uJHtkc3Q0fS8zMlwiIHZyZiBcInZyZi0ke3RpZH1cIiBcXFxuK1x0XHRlbmNhcCBzZWc2IG1vZGUgZW5jYXAgc2VncyBcIiR7c2lkfVwiICR7bG9va3VwfSBkZXYgdmV0aDBcbit9XG4rXG4rIyBJbnN0YWxsIHRoZSBkdWFsLXN0YWNrIGVuY2FwIHJvdXRlIGZvciBhIHRlbmFudCBob3N0IG9uIHJ0LCB3aXRoIHRoZVxuKyMgXCJsb29rdXBcIiBhdHRyaWJ1dGUgc28gdGhlIGZpcnN0IFNJRCBpcyBsb29rZWQgdXAgaW4gdGhlIHVuZGVybGF5IHRhYmxlLlxuKyMgYXJnczpcbisjICAkMSAtIHJvdXRlciBpZCB3aGVyZSB0aGUgZW5jYXAgcm91dGUgaXMgaW5zdGFsbGVkXG4rIyAgJDIgLSBob3N0IGRlc3RpbmF0aW9uIGlkIChob3N0IHBhcnQgb2YgY2FmZTo6XHUwMDNjaWRcdTAwM2UvMTI4IGFuZCAxMC4wLjAuXHUwMDNjaWRcdTAwM2UvMzIpXG4rIyAgJDMgLSBTUnY2IFNJRCB1c2VkIGFzIHRoZSBlbmNhcCBkZXN0aW5hdGlvblxuKyMgICQ0IC0gdGVuYW50IGlkXG4rc2V0X2hvc3RfZW5jYXBfcm91dGUoKVxuK3tcbitcdGxvY2FsIHJ0PVwiJDFcIlxuK1x0bG9jYWwgaHNkc3Q9XCIkMlwiXG4rXHRsb2NhbCBzaWQ9XCIkM1wiXG4rXHRsb2NhbCB0aWQ9XCIkNFwiXG4rXG4rXHRfX3NldF9lbmNhcF9yb3V0ZSBcIiR7cnR9XCIgXCIke2hzZHN0fVwiIFwiJHtoc2RzdH1cIiBcIiR7c2lkfVwiIFwiJHt0aWR9XCIgdHJ1ZVxuK31cbitcbitzZXRfaG9zdF9lbmNhcF9yb3V0ZV9ub2xvb2t1cCgpXG4re1xuK1x0bG9jYWwgcnQ9XCIkMVwiXG4rXHRsb2NhbCBoc2RzdD1cIiQyXCJcbitcdGxvY2FsIHNpZD1cIiQzXCJcbitcdGxvY2FsIHRpZD1cIiQ0XCJcbitcbitcdF9fc2V0X2VuY2FwX3JvdXRlIFwiJHtydH1cIiBcIiR7aHNkc3R9XCIgXCIke2hzZHN0fVwiIFwiJHtzaWR9XCIgXCIke3RpZH1cIiBmYWxzZVxuK31cbitcbisjIEluc3RhbGwgdGhlIGR1YWwtc3RhY2sgZW5jYXAgcm91dGUgb24gcnRzcmMgdG93YXJkIHJ0ZHN0J3MgcmxvIGxvb3BiYWNrXG4rIyAoUkxPMSBvciBSTE8yLCBzZWUgaGVhZGVyKSwgd2l0aCB0aGUgXCJsb29rdXBcIiBhdHRyaWJ1dGUgc28gdGhlIGZpcnN0XG4rIyBTSUQgaXMgbG9va2VkIHVwIGluIHRoZSB1bmRlcmxheSB0YWJsZS5cbisjIGFyZ3M6XG4rIyAgJDEgLSByb3V0ZXIgaWQgd2hlcmUgdGhlIGVuY2FwIHJvdXRlIGlzIGluc3RhbGxlZFxuKyMgICQyIC0gcm91dGVyIGlkIHdob3NlIGxvb3BiYWNrIGFkZHJlc3MgaXMgdGhlIHJvdXRlIGRlc3RpbmF0aW9uXG4rIyAgJDMgLSBTUnY2IFNJRCB1c2VkIGFzIHRoZSBlbmNhcCBkZXN0aW5hdGlvblxuKyMgICQ0IC0gdGVuYW50IGlkXG4rc2V0X2d3X2VuY2FwX3JvdXRlKClcbit7XG4rXHRsb2NhbCBydHNyYz1cIiQxXCJcbitcdGxvY2FsIHJ0ZHN0PVwiJDJcIlxuK1x0bG9jYWwgc2lkPVwiJDNcIlxuK1x0bG9jYWwgdGlkPVwiJDRcIlxuK1x0bG9jYWwgZHN0XG4rXG4rXHRkc3Q9XCIkKGdldF9ybG9faG9zdGlkIFwiJHtydGRzdH1cIiBcIiR7dGlkfVwiKVwiXG4rXG4rXHRfX3NldF9lbmNhcF9yb3V0ZSBcIiR7cnRzcmN9XCIgXCIke2RzdH1cIiBcIiR7ZHN0fVwiIFwiJHtzaWR9XCIgXCIke3RpZH1cIiB0cnVlXG4rfVxuK1xuK3NldF9nd19lbmNhcF9yb3V0ZV9ub2xvb2t1cCgpXG4re1xuK1x0bG9jYWwgcnRzcmM9XCIkMVwiXG4rXHRsb2NhbCBydGRzdD1cIiQyXCJcbitcdGxvY2FsIHNpZD1cIiQzXCJcbitcdGxvY2FsIHRpZD1cIiQ0XCJcbitcdGxvY2FsIGRzdFxuK1xuK1x0ZHN0PVwiJChnZXRfcmxvX2hvc3RpZCBcIiR7cnRkc3R9XCIgXCIke3RpZH1cIilcIlxuK1xuK1x0X19zZXRfZW5jYXBfcm91dGUgXCIke3J0c3JjfVwiIFwiJHtkc3R9XCIgXCIke2RzdH1cIiBcIiR7c2lkfVwiIFwiJHt0aWR9XCIgZmFsc2Vcbit9XG4rXG4rIyBTZXR1cCB0aGUgYmFzaWMgbmV0d29ya2luZyBmb3IgYSByb3V0ZXJcbitzZXR1cF9ydF9uZXR3b3JraW5nKClcbit7XG4rXHRsb2NhbCBpZD1cIiQxXCJcbitcdGxvY2FsIG5zbmFtZVxuK1xuK1x0bnNuYW1lPVwiJChnZXRfcnRfbnNuYW1lIFwiJHtpZH1cIilcIlxuK1xuK1x0aXAgbGluayBzZXQgXCJ2ZXRoLXJ0LSR7aWR9XCIgbmV0bnMgXCIke25zbmFtZX1cIlxuK1x0aXAgLW5ldG5zIFwiJHtuc25hbWV9XCIgbGluayBzZXQgXCJ2ZXRoLXJ0LSR7aWR9XCIgbmFtZSB2ZXRoMFxuK1xuK1x0aXAgbmV0bnMgZXhlYyBcIiR7bnNuYW1lfVwiIHN5c2N0bCAtd3EgbmV0LmlwdjYuY29uZi5hbGwuYWNjZXB0X2RhZD0wXG4rXHRpcCBuZXRucyBleGVjIFwiJHtuc25hbWV9XCIgc3lzY3RsIC13cSBuZXQuaXB2Ni5jb25mLmRlZmF1bHQuYWNjZXB0X2RhZD0wXG4rXG4rXHRpcCAtbmV0bnMgXCIke25zbmFtZX1cIiBhZGRyIGFkZCBcIiR7SVB2Nl9SVF9ORVRXT1JLfTo6JHtpZH0vNjRcIiBkZXYgdmV0aDAgbm9kYWRcbitcdGlwIC1uZXRucyBcIiR7bnNuYW1lfVwiIGxpbmsgc2V0IHZldGgwIHVwXG4rXG4rXHRpcCBuZXRucyBleGVjIFwiJHtuc25hbWV9XCIgc3lzY3RsIC13cSBuZXQuaXB2NC5pcF9mb3J3YXJkPTFcbitcdGlwIG5ldG5zIGV4ZWMgXCIke25zbmFtZX1cIiBzeXNjdGwgLXdxIG5ldC5pcHY2LmNvbmYuYWxsLmZvcndhcmRpbmc9MVxuK31cbitcbisjIFNldHVwIGEgaG9zdCBuYW1lc3BhY2UgYW5kIGF0dGFjaCBpdCB0byBpdHMgZ2F0ZXdheVxuK3NldHVwX2hzKClcbit7XG4rXHRsb2NhbCBoaWQ9XCIkMVwiXG4rXHRsb2NhbCByaWQ9XCIkMlwiXG4rXHRsb2NhbCB0aWQ9XCIkM1wiXG4rXHRsb2NhbCBydHZldGg9XCJ2ZXRoLXQke3RpZH1cIlxuK1x0bG9jYWwgaHNuYW1lXG4rXHRsb2NhbCBydG5hbWVcbitcbitcdGhzbmFtZT1cIiQoZ2V0X2hzX25zbmFtZSBcIiR7dGlkfVwiIFwiJHtoaWR9XCIpXCJcbitcdHJ0bmFtZT1cIiQoZ2V0X3J0X25zbmFtZSBcIiR7cmlkfVwiKVwiXG4rXG4rXHRpcCBuZXRucyBleGVjIFwiJHtoc25hbWV9XCIgc3lzY3RsIC13cSBuZXQuaXB2Ni5jb25mLmFsbC5hY2NlcHRfZGFkPTBcbitcdGlwIG5ldG5zIGV4ZWMgXCIke2hzbmFtZX1cIiBzeXNjdGwgLXdxIG5ldC5pcHY2LmNvbmYuZGVmYXVsdC5hY2NlcHRfZGFkPTBcbitcbitcdGlwIC1uZXRucyBcIiR7aHNuYW1lfVwiIGxpbmsgYWRkIHZldGgwIHR5cGUgdmV0aCBwZWVyIG5hbWUgXCIke3J0dmV0aH1cIlxuK1x0aXAgLW5ldG5zIFwiJHtoc25hbWV9XCIgbGluayBzZXQgXCIke3J0dmV0aH1cIiBuZXRucyBcIiR7cnRuYW1lfVwiXG4rXG4rXHRpcCAtbmV0bnMgXCIke2hzbmFtZX1cIiBhZGRyIGFkZCBcXFxuK1x0XHRcIiR7SVB2Nl9IU19ORVRXT1JLfTo6JHtoaWR9LzY0XCIgZGV2IHZldGgwIG5vZGFkXG4rXHRpcCAtbmV0bnMgXCIke2hzbmFtZX1cIiBhZGRyIGFkZCBcXFxuK1x0XHRcIiR7SVB2NF9IU19ORVRXT1JLfS4ke2hpZH0vMjRcIiBkZXYgdmV0aDBcbitcbitcdGlwIC1uZXRucyBcIiR7aHNuYW1lfVwiIGxpbmsgc2V0IHZldGgwIHVwXG4rfVxuK1xuKyMgU2V0dXAgdGhlIHBlci10ZW5hbnQgVlJGIG9uIGEgcm91dGVyIChnYXRld2F5LCBsb29wYmFjaywgYmxhY2tob2xlKVxuK3NldHVwX3J0KClcbit7XG4rXHRsb2NhbCByaWQ9XCIkMVwiXG4rXHRsb2NhbCB0aWQ9XCIkMlwiXG4rXHRsb2NhbCBydHZldGg9XCJ2ZXRoLXQke3RpZH1cIlxuK1x0bG9jYWwgcmxvX2Rldj1cInJsby0ke3RpZH1cIlxuK1x0bG9jYWwgcnRuYW1lXG4rXHRsb2NhbCBnd19hZGRyX3Y2XG4rXHRsb2NhbCBnd19hZGRyX3Y0XG4rXG4rXHRydG5hbWU9XCIkKGdldF9ydF9uc25hbWUgXCIke3JpZH1cIilcIlxuK1xuK1x0Z3dfYWRkcl92Nj1cIiR7SVB2Nl9IU19ORVRXT1JLfTo6JChnZXRfcmxvX2hvc3RpZCBcIiR7cmlkfVwiIFwiJHt0aWR9XCIpXCJcbitcdGd3X2FkZHJfdjQ9XCIke0lQdjRfSFNfTkVUV09SS30uJChnZXRfcmxvX2hvc3RpZCBcIiR7cmlkfVwiIFwiJHt0aWR9XCIpXCJcbitcbitcdGlwIC1uZXRucyBcIiR7cnRuYW1lfVwiIGxpbmsgYWRkIFwidnJmLSR7dGlkfVwiIHR5cGUgdnJmIHRhYmxlIFwiJHt0aWR9XCJcbitcdGlwIC1uZXRucyBcIiR7cnRuYW1lfVwiIGxpbmsgc2V0IFwidnJmLSR7dGlkfVwiIHVwXG4rXG4rXHRpcCAtbmV0bnMgXCIke3J0bmFtZX1cIiBsaW5rIHNldCBcIiR7cnR2ZXRofVwiIG1hc3RlciBcInZyZi0ke3RpZH1cIlxuK1xuK1x0aXAgLW5ldG5zIFwiJHtydG5hbWV9XCIgYWRkciBhZGQgXFxcbitcdFx0XCIke0lQdjZfSFNfTkVUV09SS306OjI1NC82NFwiIGRldiBcIiR7cnR2ZXRofVwiIG5vZGFkXG4rXHRpcCAtbmV0bnMgXCIke3J0bmFtZX1cIiBhZGRyIGFkZCBcXFxuK1x0XHRcIiR7SVB2NF9IU19ORVRXT1JLfS4yNTQvMjRcIiBkZXYgXCIke3J0dmV0aH1cIlxuK1xuK1x0aXAgLW5ldG5zIFwiJHtydG5hbWV9XCIgbGluayBzZXQgXCIke3J0dmV0aH1cIiB1cFxuK1xuK1x0aXAgbmV0bnMgZXhlYyBcIiR7cnRuYW1lfVwiIFxcXG4rXHRcdHN5c2N0bCAtd3EgXCJuZXQuaXB2Ni5jb25mLiR7cnR2ZXRofS5wcm94eV9uZHA9MVwiXG4rXHRpcCBuZXRucyBleGVjIFwiJHtydG5hbWV9XCIgXFxcbitcdFx0c3lzY3RsIC13cSBcIm5ldC5pcHY0LmNvbmYuJHtydHZldGh9LnByb3h5X2FycD0xXCJcbitcbitcdGlwIG5ldG5zIGV4ZWMgXCIke3J0bmFtZX1cIiBzaCAtYyBcImVjaG8gMSBcdTAwM2UgL3Byb2Mvc3lzL25ldC92cmYvc3RyaWN0X21vZGVcIlxuK1xuK1x0IyByb3V0ZXIgbG9vcGJhY2sgaW50ZXJmYWNlIGZvciBsb2NhbGx5IG9yaWdpbmF0ZWQgdHJhZmZpY1xuK1x0aXAgLW5ldG5zIFwiJHtydG5hbWV9XCIgbGluayBhZGQgXCIke3Jsb19kZXZ9XCIgdHlwZSBkdW1teVxuK1x0aXAgLW5ldG5zIFwiJHtydG5hbWV9XCIgbGluayBzZXQgXCIke3Jsb19kZXZ9XCIgbWFzdGVyIFwidnJmLSR7dGlkfVwiXG4rXG4rXHRpcCAtbmV0bnMgXCIke3J0bmFtZX1cIiBhZGRyIGFkZCBcIiR7Z3dfYWRkcl92Nn0vMTI4XCIgXFxcbitcdFx0ZGV2IFwiJHtybG9fZGV2fVwiIG5vZGFkXG4rXHRpcCAtbmV0bnMgXCIke3J0bmFtZX1cIiBhZGRyIGFkZCBcIiR7Z3dfYWRkcl92NH0vMzJcIiBcXFxuK1x0XHRkZXYgXCIke3Jsb19kZXZ9XCJcbitcbitcdGlwIC1uZXRucyBcIiR7cnRuYW1lfVwiIGxpbmsgc2V0IFwiJHtybG9fZGV2fVwiIHVwXG4rXG4rXHQjIGRlZmF1bHQgYmxhY2tob2xlIHJvdXRlcyBpbiB0aGUgVlJGOiBhbnkgdHJhZmZpYyB0aGF0IGRvZXMgbm90IG1hdGNoXG4rXHQjIGEgc3BlY2lmaWMgcm91dGUgaXMgZHJvcHBlZC4gV2l0aG91dCB0aGUgXCJsb29rdXBcIiBhdHRyaWJ1dGUgb24gdGhlXG4rXHQjIGVuY2FwIHJvdXRlLCB0aGUgcm91dGUgZm9yIHRoZSBmaXJzdCBTSUQgY2Fubm90IGJlIGZvdW5kIGZyb20gd2l0aGluXG4rXHQjIHRoZSBWUkYuXG4rXHRpcCAtbmV0bnMgXCIke3J0bmFtZX1cIiAtNiByb3V0ZSBhZGQgYmxhY2tob2xlIGRlZmF1bHQgbWV0cmljIDQyNzgxOTgyNzIgXFxcbitcdFx0dnJmIFwidnJmLSR7dGlkfVwiXG4rXHRpcCAtbmV0bnMgXCIke3J0bmFtZX1cIiAtNCByb3V0ZSBhZGQgYmxhY2tob2xlIGRlZmF1bHQgbWV0cmljIDQyNzgxOTgyNzIgXFxcbitcdFx0dnJmIFwidnJmLSR7dGlkfVwiXG4rfVxuK1xuKyMgQ29uZmlndXJlIGEgb25lLXdheSBWUE4gcGF0aCB0b3dhcmRzIGhzZHN0IChvbiBydGRzdCkgZm9yIHRlbmFudCB0aWQuXG4rIyBUaGUgZW5jYXAgc2lkZSBpcyBzZXQgdXAgb24gcnRzcmMgYW5kIHRoZSBkZWNhcCBzaWRlIG9uIHJ0ZHN0LlxuKyMgYXJnczpcbisjICAkMSAtIHJvdXRlciBpZCB3aGVyZSB0aGUgZW5jYXAgc2lkZSBpcyBzZXQgdXBcbisjICAkMiAtIGhvc3QgaWQgb2YgdGhlIGRlc3RpbmF0aW9uIGhvc3RcbisjICAkMyAtIHJvdXRlciBpZCBvZiB0aGUgZGVzdGluYXRpb24gcm91dGVyIChjb25uZWN0ZWQgdG8gdGhlIGRlc3RpbmF0aW9uIGhvc3QpXG4rIyAgJDQgLSB0ZW5hbnQgaWRcbitzZXR1cF92cG5fY29uZmlnKClcbit7XG4rXHRsb2NhbCBydHNyYz1cIiQxXCJcbitcdGxvY2FsIGhzZHN0PVwiJDJcIlxuK1x0bG9jYWwgcnRkc3Q9XCIkM1wiXG4rXHRsb2NhbCB0aWQ9XCIkNFwiXG4rXHRsb2NhbCBydHZldGg9XCJ2ZXRoLXQke3RpZH1cIlxuK1x0bG9jYWwgcnRzcmNfbmFtZVxuK1x0bG9jYWwgcnRkc3RfbmFtZVxuK1x0bG9jYWwgdnBuX3NpZFxuK1xuK1x0cnRzcmNfbmFtZT1cIiQoZ2V0X3J0X25zbmFtZSBcIiR7cnRzcmN9XCIpXCJcbitcdHJ0ZHN0X25hbWU9XCIkKGdldF9ydF9uc25hbWUgXCIke3J0ZHN0fVwiKVwiXG4rXHR2cG5fc2lkPVwiJChidWlsZF92cG5fc2lkIFwiJHtydHNyY31cIiBcIiR7cnRkc3R9XCIgXCIke3RpZH1cIilcIlxuK1xuK1x0aXAgLW5ldG5zIFwiJHtydHNyY19uYW1lfVwiIC02IG5laWdoIGFkZCBwcm94eSBcXFxuK1x0XHRcIiR7SVB2Nl9IU19ORVRXT1JLfTo6JHtoc2RzdH1cIiBkZXYgXCIke3J0dmV0aH1cIlxuK1x0c2V0X2hvc3RfZW5jYXBfcm91dGUgXCIke3J0c3JjfVwiIFwiJHtoc2RzdH1cIiBcIiR7dnBuX3NpZH1cIiBcIiR7dGlkfVwiXG4rXG4rXHRpcCAtbmV0bnMgXCIke3J0c3JjX25hbWV9XCIgLTYgcm91dGUgYWRkIFwiJHt2cG5fc2lkfS8xMjhcIiBcXFxuK1x0XHR0YWJsZSBcIiR7VU5ERVJMQVlfVEFCTEVfSUR9XCIgXFxcbitcdFx0dmlhIFwiZmQwMDo6JHtydGRzdH1cIiBkZXYgdmV0aDBcbitcbitcdCMgc2V0IHRoZSBkZWNhcCByb3V0ZSBmb3IgZGVjYXBzdWxhdGluZyBwYWNrZXRzIGFycml2aW5nIGZyb20gcnRzcmNcbitcdCMgYW5kIGRlc3RpbmVkIHRvIGhzZHN0XG4rXHRpcCAtbmV0bnMgXCIke3J0ZHN0X25hbWV9XCIgLTYgcm91dGUgYWRkIFwiJHt2cG5fc2lkfS8xMjhcIiBcXFxuK1x0XHR0YWJsZSBcIiR7TE9DQUxTSURfVEFCTEVfSUR9XCIgXFxcbitcdFx0ZW5jYXAgc2VnNmxvY2FsIGFjdGlvbiBFbmQuRFQ0NiBcXFxuK1x0XHR2cmZ0YWJsZSBcIiR7dGlkfVwiIGRldiBcInZyZi0ke3RpZH1cIlxuK1xuK1x0IyBhbGwgU0lEcyBmb3IgVlBOcyBzdGFydCB3aXRoIGEgY29tbW9uIGxvY2F0b3Igd2hpY2ggaXMgZmMwMDo6LzE2LlxuK1x0IyBSb3V0ZXMgZm9yIGhhbmRsaW5nIHRoZSBTUnY2IEVuZC5EVCogYmVoYXZpb3IgaW5zdGFuY2VzIGFyZSBncm91cGVkXG4rXHQjIHRvZ2V0aGVyIGluIHRoZSAnbG9jYWxzaWQnIHRhYmxlLlxuK1x0I1xuK1x0IyBOT1RFOiBhZGRlZCBvbmx5IG9uY2VcbitcdGlmICEgaXAgLW5ldG5zIFwiJHtydGRzdF9uYW1lfVwiIC02IHJ1bGUgc2hvdyB8IFxcXG4rXHQgICAgZ3JlcCAtcSBcInRvICR7VlBOX0xPQ0FUT1JfU0VSVklDRX06Oi8xNiBsb29rdXAgJHtMT0NBTFNJRF9UQUJMRV9JRH1cIjsgdGhlblxuK1x0XHRpcCAtbmV0bnMgXCIke3J0ZHN0X25hbWV9XCIgLTYgcnVsZSBhZGQgXFxcbitcdFx0XHR0byBcIiR7VlBOX0xPQ0FUT1JfU0VSVklDRX06Oi8xNlwiIFxcXG4rXHRcdFx0bG9va3VwIFwiJHtMT0NBTFNJRF9UQUJMRV9JRH1cIiBwcmlvIDk5OVxuK1x0Zmlcbit9XG4rXG4rIyBDb25maWd1cmUgcnRzcmMgdG8gcmVhY2ggcnRkc3QncyBsb29wYmFjayBhZGRyZXNzIHRocm91Z2ggdGhlIFZQTi5cbisjIGFyZ3M6XG4rIyAgJDEgLSByb3V0ZXIgaWQgd2hlcmUgdGhlIGVuY2FwIHJvdXRlIGlzIGluc3RhbGxlZFxuKyMgICQyIC0gcm91dGVyIGlkIHdob3NlIGxvb3BiYWNrIGlzIHRoZSBkZXN0aW5hdGlvblxuKyMgICQzIC0gdGVuYW50IGlkXG4rc2V0dXBfdnBuX2d3X2VuY2FwKClcbit7XG4rXHRsb2NhbCBydHNyYz1cIiQxXCJcbitcdGxvY2FsIHJ0ZHN0PVwiJDJcIlxuK1x0bG9jYWwgdGlkPVwiJDNcIlxuK1x0bG9jYWwgc2lkXG4rXG4rXHRzaWQ9XCIkKGJ1aWxkX3Zwbl9zaWQgXCIke3J0c3JjfVwiIFwiJHtydGRzdH1cIiBcIiR7dGlkfVwiKVwiXG4rXG4rXHRzZXRfZ3dfZW5jYXBfcm91dGUgXCIke3J0c3JjfVwiIFwiJHtydGRzdH1cIiBcIiR7c2lkfVwiIFwiJHt0aWR9XCJcbit9XG4rXG4rc2V0dXAoKVxuK3tcbitcdGlwIGxpbmsgYWRkIHZldGgtcnQtMSB0eXBlIHZldGggcGVlciBuYW1lIHZldGgtcnQtMlxuK1x0c2V0dXBfbnMgcnRfMSBydF8yXG4rXHRzZXR1cF9ydF9uZXR3b3JraW5nIDFcbitcdHNldHVwX3J0X25ldHdvcmtpbmcgMlxuK1xuK1x0IyBzZXR1cCB0d28gaG9zdHMgZm9yIHRoZSB0ZW5hbnQgMTAwLlxuK1x0IyAgLSBob3N0IGhzLXQxMDAtMSBpcyBkaXJlY3RseSBjb25uZWN0ZWQgdG8gdGhlIHJvdXRlciBydC0xO1xuK1x0IyAgLSBob3N0IGhzLXQxMDAtMiBpcyBkaXJlY3RseSBjb25uZWN0ZWQgdG8gdGhlIHJvdXRlciBydC0yLlxuK1x0c2V0dXBfbnMgaHNfdDEwMF8xIGhzX3QxMDBfMlxuK1x0c2V0dXBfaHMgMSAxIDEwMFxuK1x0c2V0dXBfaHMgMiAyIDEwMFxuK1xuK1x0IyBzZXR1cCB0d28gaG9zdHMgZm9yIHRoZSB0ZW5hbnQgMjAwLlxuK1x0IyAgLSBob3N0IGhzLXQyMDAtMyBpcyBkaXJlY3RseSBjb25uZWN0ZWQgdG8gdGhlIHJvdXRlciBydC0xO1xuK1x0IyAgLSBob3N0IGhzLXQyMDAtNCBpcyBkaXJlY3RseSBjb25uZWN0ZWQgdG8gdGhlIHJvdXRlciBydC0yLlxuK1x0c2V0dXBfbnMgaHNfdDIwMF8zIGhzX3QyMDBfNFxuK1x0c2V0dXBfaHMgMyAxIDIwMFxuK1x0c2V0dXBfaHMgNCAyIDIwMFxuK1xuK1x0IyBjb25maWd1cmUgZWFjaCByb3V0ZXIgZm9yIGVhY2ggdGVuYW50OiBWUkYsIGJsYWNraG9sZSByb3V0ZXMsXG4rXHQjIHJvdXRlciBsb29wYmFjayBpbnRlcmZhY2VcbitcdHNldHVwX3J0IDEgMTAwXG4rXHRzZXR1cF9ydCAyIDEwMFxuK1x0c2V0dXBfcnQgMSAyMDBcbitcdHNldHVwX3J0IDIgMjAwXG4rXG4rXHQjIHNldHVwIHRoZSBMMyBWUE4gd2hpY2ggY29ubmVjdHMgdGhlIGhvc3QgaHMtdDEwMC0xIGFuZCBob3N0IGhzLXQxMDAtMlxuK1x0IyB3aXRoaW4gdGhlIHNhbWUgdGVuYW50IDEwMC5cbitcdHNldHVwX3Zwbl9jb25maWcgMSAyIDIgMTAwXG4rXHRzZXR1cF92cG5fY29uZmlnIDIgMSAxIDEwMFxuK1xuK1x0IyBzZXR1cCB0aGUgTDMgVlBOIHdoaWNoIGNvbm5lY3RzIHRoZSBob3N0IGhzLXQyMDAtMyBhbmQgaG9zdCBocy10MjAwLTRcbitcdCMgd2l0aGluIHRoZSBzYW1lIHRlbmFudCAyMDAuXG4rXHRzZXR1cF92cG5fY29uZmlnIDEgNCAyIDIwMFxuK1x0c2V0dXBfdnBuX2NvbmZpZyAyIDMgMSAyMDBcbitcbitcdCMgYWxsb3cgZWFjaCByb3V0ZXIgdG8gcmVhY2ggdGhlIG90aGVyJ3MgbG9vcGJhY2sgdGhyb3VnaCB0aGUgVlBOXG4rXHRzZXR1cF92cG5fZ3dfZW5jYXAgMiAxIDEwMFxuK1x0c2V0dXBfdnBuX2d3X2VuY2FwIDEgMiAxMDBcbitcdHNldHVwX3Zwbl9nd19lbmNhcCAyIDEgMjAwXG4rXHRzZXR1cF92cG5fZ3dfZW5jYXAgMSAyIDIwMFxuK1xuK1x0IyB0ZXN0aW5nIGVudmlyb25tZW50IHdhcyBzZXQgdXAgc3VjY2Vzc2Z1bGx5XG4rXHRTRVRVUF9FUlI9MFxuK31cbitcbitjaGVja19ydF9jb25uZWN0aXZpdHkoKVxuK3tcbitcdGxvY2FsIHJ0c3JjPVwiJDFcIlxuK1x0bG9jYWwgcnRkc3Q9XCIkMlwiXG4rXHRsb2NhbCBuc25hbWVcbitcbitcdG5zbmFtZT1cIiQoZ2V0X3J0X25zbmFtZSBcIiR7cnRzcmN9XCIpXCJcbitcbitcdGlwIG5ldG5zIGV4ZWMgXCIke25zbmFtZX1cIiBwaW5nIC1jIDEgLVcgMSBcIiR7SVB2Nl9SVF9ORVRXT1JLfTo6JHtydGRzdH1cIiBcXFxuK1x0XHRcdTAwM2UvZGV2L251bGwgMlx1MDAzZVx1MDAyNjFcbit9XG4rXG4rY2hlY2tfYW5kX2xvZ19ydF9jb25uZWN0aXZpdHkoKVxuK3tcbitcdGxvY2FsIHJ0c3JjPVwiJDFcIlxuK1x0bG9jYWwgcnRkc3Q9XCIkMlwiXG4rXG4rXHRjaGVja19ydF9jb25uZWN0aXZpdHkgXCIke3J0c3JjfVwiIFwiJHtydGRzdH1cIlxuK1x0bG9nX3Rlc3QgJD8gMCBcIlJvdXRlcnMgY29ubmVjdGl2aXR5OiBydC0ke3J0c3JjfSAtXHUwMDNlIHJ0LSR7cnRkc3R9XCJcbit9XG4rXG4rY2hlY2tfaHNfaXB2Nl9jb25uZWN0aXZpdHkoKVxuK3tcbitcdGxvY2FsIGhzc3JjPVwiJDFcIlxuK1x0bG9jYWwgaHNkc3Q9XCIkMlwiXG4rXHRsb2NhbCB0aWQ9XCIkM1wiXG4rXHRsb2NhbCBuc25hbWVcbitcbitcdG5zbmFtZT1cIiQoZ2V0X2hzX25zbmFtZSBcIiR7dGlkfVwiIFwiJHtoc3NyY31cIilcIlxuK1xuK1x0aXAgbmV0bnMgZXhlYyBcIiR7bnNuYW1lfVwiIHBpbmcgLWMgMSAtVyBcIiR7UElOR19USU1FT1VUX1NFQ31cIiBcXFxuK1x0XHRcIiR7SVB2Nl9IU19ORVRXT1JLfTo6JHtoc2RzdH1cIiBcdTAwM2UvZGV2L251bGwgMlx1MDAzZVx1MDAyNjFcbit9XG4rXG4rY2hlY2tfaHNfaXB2NF9jb25uZWN0aXZpdHkoKVxuK3tcbitcdGxvY2FsIGhzc3JjPVwiJDFcIlxuK1x0bG9jYWwgaHNkc3Q9XCIkMlwiXG4rXHRsb2NhbCB0aWQ9XCIkM1wiXG4rXHRsb2NhbCBuc25hbWVcbitcbitcdG5zbmFtZT1cIiQoZ2V0X2hzX25zbmFtZSBcIiR7dGlkfVwiIFwiJHtoc3NyY31cIilcIlxuK1xuK1x0aXAgbmV0bnMgZXhlYyBcIiR7bnNuYW1lfVwiIHBpbmcgLWMgMSAtVyBcIiR7UElOR19USU1FT1VUX1NFQ31cIiBcXFxuK1x0XHRcIiR7SVB2NF9IU19ORVRXT1JLfS4ke2hzZHN0fVwiIFx1MDAzZS9kZXYvbnVsbCAyXHUwMDNlXHUwMDI2MVxuK31cbitcbitjaGVja19hbmRfbG9nX2hzX2Nvbm5lY3Rpdml0eSgpXG4re1xuK1x0bG9jYWwgaHNzcmM9XCIkMVwiXG4rXHRsb2NhbCBoc2RzdD1cIiQyXCJcbitcdGxvY2FsIHRpZD1cIiQzXCJcbitcbitcdGNoZWNrX2hzX2lwdjZfY29ubmVjdGl2aXR5IFwiJHtoc3NyY31cIiBcIiR7aHNkc3R9XCIgXCIke3RpZH1cIlxuK1x0bG9nX3Rlc3QgJD8gMCBcIklQdjYgY29ubmVjdGl2aXR5OiBocy10JHt0aWR9LSR7aHNzcmN9IC1cdTAwM2UgaHMtdCR7dGlkfS0ke2hzZHN0fSAodGVuYW50ICR7dGlkfSlcIlxuK1xuK1x0Y2hlY2tfaHNfaXB2NF9jb25uZWN0aXZpdHkgXCIke2hzc3JjfVwiIFwiJHtoc2RzdH1cIiBcIiR7dGlkfVwiXG4rXHRsb2dfdGVzdCAkPyAwIFwiSVB2NCBjb25uZWN0aXZpdHk6IGhzLXQke3RpZH0tJHtoc3NyY30gLVx1MDAzZSBocy10JHt0aWR9LSR7aHNkc3R9ICh0ZW5hbnQgJHt0aWR9KVwiXG4rfVxuK1xuK2NoZWNrX2FuZF9sb2dfaHNfaXNvbGF0aW9uKClcbit7XG4rXHRsb2NhbCBoc3NyYz1cIiQxXCJcbitcdGxvY2FsIHRpZHNyYz1cIiQyXCJcbitcdGxvY2FsIGhzZHN0PVwiJDNcIlxuK1x0bG9jYWwgdGlkZHN0PVwiJDRcIlxuK1xuK1x0Y2hlY2tfaHNfaXB2Nl9jb25uZWN0aXZpdHkgXCIke2hzc3JjfVwiIFwiJHtoc2RzdH1cIiBcIiR7dGlkc3JjfVwiXG4rXHRsb2dfdGVzdCAkPyAxIFwiSVB2NiBpc29sYXRpb246IGhzLXQke3RpZHNyY30tJHtoc3NyY30gLVgtXHUwMDNlIGhzLXQke3RpZGRzdH0tJHtoc2RzdH1cIlxuK1xuK1x0Y2hlY2tfaHNfaXB2NF9jb25uZWN0aXZpdHkgXCIke2hzc3JjfVwiIFwiJHtoc2RzdH1cIiBcIiR7dGlkc3JjfVwiXG4rXHRsb2dfdGVzdCAkPyAxIFwiSVB2NCBpc29sYXRpb246IGhzLXQke3RpZHNyY30tJHtoc3NyY30gLVgtXHUwMDNlIGhzLXQke3RpZGRzdH0tJHtoc2RzdH1cIlxuK31cbitcbitjaGVja19hbmRfbG9nX2hzMmd3X2Nvbm5lY3Rpdml0eSgpXG4re1xuK1x0bG9jYWwgaHNzcmM9XCIkMVwiXG4rXHRsb2NhbCB0aWQ9XCIkMlwiXG4rXG4rXHRjaGVja19oc19pcHY2X2Nvbm5lY3Rpdml0eSBcIiR7aHNzcmN9XCIgMjU0IFwiJHt0aWR9XCJcbitcdGxvZ190ZXN0ICQ/IDAgXCJJUHY2IGNvbm5lY3Rpdml0eTogaHMtdCR7dGlkfS0ke2hzc3JjfSAtXHUwMDNlIGd3ICh0ZW5hbnQgJHt0aWR9KVwiXG4rXG4rXHRjaGVja19oc19pcHY0X2Nvbm5lY3Rpdml0eSBcIiR7aHNzcmN9XCIgMjU0IFwiJHt0aWR9XCJcbitcdGxvZ190ZXN0ICQ/IDAgXCJJUHY0IGNvbm5lY3Rpdml0eTogaHMtdCR7dGlkfS0ke2hzc3JjfSAtXHUwMDNlIGd3ICh0ZW5hbnQgJHt0aWR9KVwiXG4rfVxuK1xuK3JvdXRlcl90ZXN0cygpXG4re1xuK1x0bG9nX3NlY3Rpb24gXCJJUHY2IHJvdXRlcnMgY29ubmVjdGl2aXR5IHRlc3RcIlxuK1xuK1x0Y2hlY2tfYW5kX2xvZ19ydF9jb25uZWN0aXZpdHkgMSAyXG4rXHRjaGVja19hbmRfbG9nX3J0X2Nvbm5lY3Rpdml0eSAyIDFcbit9XG4rXG4raG9zdDJnYXRld2F5X3Rlc3RzKClcbit7XG4rXHRsb2dfc2VjdGlvbiBcIkNvbm5lY3Rpdml0eSB0ZXN0IGFtb25nIGhvc3RzIGFuZCBnYXRld2F5XCJcbitcbitcdGNoZWNrX2FuZF9sb2dfaHMyZ3dfY29ubmVjdGl2aXR5IDEgMTAwXG4rXHRjaGVja19hbmRfbG9nX2hzMmd3X2Nvbm5lY3Rpdml0eSAyIDEwMFxuK1xuK1x0Y2hlY2tfYW5kX2xvZ19oczJnd19jb25uZWN0aXZpdHkgMyAyMDBcbitcdGNoZWNrX2FuZF9sb2dfaHMyZ3dfY29ubmVjdGl2aXR5IDQgMjAwXG4rfVxuK1xuK2hvc3RfdnBuX3Rlc3RzKClcbit7XG4rXHRsb2dfc2VjdGlvbiBcIlNSdjYgVlBOIGNvbm5lY3Rpdml0eSB0ZXN0IGFtb25nIGhvc3RzIGluIHRoZSBzYW1lIHRlbmFudFwiXG4rXG4rXHRjaGVja19hbmRfbG9nX2hzX2Nvbm5lY3Rpdml0eSAxIDIgMTAwXG4rXHRjaGVja19hbmRfbG9nX2hzX2Nvbm5lY3Rpdml0eSAyIDEgMTAwXG4rXG4rXHRjaGVja19hbmRfbG9nX2hzX2Nvbm5lY3Rpdml0eSAzIDQgMjAwXG4rXHRjaGVja19hbmRfbG9nX2hzX2Nvbm5lY3Rpdml0eSA0IDMgMjAwXG4rfVxuK1xuK2hvc3RfdnBuX2lzb2xhdGlvbl90ZXN0cygpXG4re1xuK1x0bG9jYWwgbDE9XCIxIDJcIlxuK1x0bG9jYWwgbDI9XCIzIDRcIlxuK1x0bG9jYWwgdDE9MTAwXG4rXHRsb2NhbCB0Mj0yMDBcbitcdGxvY2FsIGlcbitcdGxvY2FsIGpcbitcdGxvY2FsIHRtcFxuK1xuK1x0bG9nX3NlY3Rpb24gXCJTUnY2IFZQTiBpc29sYXRpb24gdGVzdCBhbW9uZyBob3N0cyBpbiBkaWZmZXJlbnQgdGVuYW50c1wiXG4rXG4rXHRmb3IgXyBpbiAwIDE7IGRvXG4rXHRcdGZvciBpIGluICR7bDF9OyBkb1xuK1x0XHRcdGZvciBqIGluICR7bDJ9OyBkb1xuK1x0XHRcdFx0Y2hlY2tfYW5kX2xvZ19oc19pc29sYXRpb24gXCIke2l9XCIgXCIke3QxfVwiIFwiJHtqfVwiIFwiJHt0Mn1cIlxuK1x0XHRcdGRvbmVcbitcdFx0ZG9uZVxuK1xuK1x0XHQjIGxldCB1cyB0ZXN0IHRoZSByZXZlcnNlIHBhdGhcbitcdFx0dG1wPVwiJHtsMX1cIjsgbDE9XCIke2wyfVwiOyBsMj1cIiR7dG1wfVwiXG4rXHRcdHRtcD0ke3QxfTsgdDE9JHt0Mn07IHQyPSR7dG1wfVxuK1x0ZG9uZVxuK31cbitcbitfX3Rlc3Rfbm9sb29rdXAoKVxuK3tcbitcdGxvY2FsIGhzc3JjPVwiJDFcIlxuK1x0bG9jYWwgaHNkc3Q9XCIkMlwiXG4rXHRsb2NhbCBydHNyYz1cIiQzXCJcbitcdGxvY2FsIHJ0ZHN0PVwiJDRcIlxuK1x0bG9jYWwgdGlkPVwiJDVcIlxuK1x0bG9jYWwgdnBuX3NpZFxuK1xuK1x0dnBuX3NpZD1cIiQoYnVpbGRfdnBuX3NpZCBcIiR7cnRzcmN9XCIgXCIke3J0ZHN0fVwiIFwiJHt0aWR9XCIpXCJcbitcbitcdCMgcmVwbGFjZSBlbmNhcCByb3V0ZShzKSB3aXRob3V0IFwibG9va3VwXCIgYXR0cmlidXRlXG4rXHRzZXRfaG9zdF9lbmNhcF9yb3V0ZV9ub2xvb2t1cCBcIiR7cnRzcmN9XCIgXCIke2hzZHN0fVwiIFwiJHt2cG5fc2lkfVwiIFwiJHt0aWR9XCJcbitcbitcdGNoZWNrX2hzX2lwdjZfY29ubmVjdGl2aXR5IFwiJHtoc3NyY31cIiBcIiR7aHNkc3R9XCIgXCIke3RpZH1cIlxuK1x0bG9nX3Rlc3QgJD8gMSBcIklQdjYgdy9vIGxvb2t1cDogaHMtdCR7dGlkfS0ke2hzc3JjfSAtWC1cdTAwM2UgaHMtdCR7dGlkfS0ke2hzZHN0fSAodGVuYW50ICR7dGlkfSlcIlxuK1xuK1x0Y2hlY2tfaHNfaXB2NF9jb25uZWN0aXZpdHkgXCIke2hzc3JjfVwiIFwiJHtoc2RzdH1cIiBcIiR7dGlkfVwiXG4rXHRsb2dfdGVzdCAkPyAxIFwiSVB2NCB3L28gbG9va3VwOiBocy10JHt0aWR9LSR7aHNzcmN9IC1YLVx1MDAzZSBocy10JHt0aWR9LSR7aHNkc3R9ICh0ZW5hbnQgJHt0aWR9KVwiXG4rXG4rXHQjIHJlc3RvcmUgZW5jYXAgcm91dGUocykgd2l0aCBcImxvb2t1cFwiIGZvciBzdWJzZXF1ZW50IHRlc3RzXG4rXHRzZXRfaG9zdF9lbmNhcF9yb3V0ZSBcIiR7cnRzcmN9XCIgXCIke2hzZHN0fVwiIFwiJHt2cG5fc2lkfVwiIFwiJHt0aWR9XCJcbit9XG4rXG4raG9zdF92cG5fbm9sb29rdXBfdGVzdHMoKVxuK3tcbitcdGxvZ19zZWN0aW9uIFwiU1J2NiBWUE4gY29ubmVjdGl2aXR5IHRlc3QgYW1vbmcgaG9zdHMgdy9vIGxvb2t1cFwiXG4rXG4rXHRfX3Rlc3Rfbm9sb29rdXAgMSAyIDEgMiAxMDBcbitcdF9fdGVzdF9ub2xvb2t1cCAyIDEgMiAxIDEwMFxuK1xuK1x0X190ZXN0X25vbG9va3VwIDMgNCAxIDIgMjAwXG4rXHRfX3Rlc3Rfbm9sb29rdXAgNCAzIDIgMSAyMDBcbit9XG4rXG4rY2hlY2tfZ3dfaXB2Nl9jb25uZWN0aXZpdHkoKVxuK3tcbitcdGxvY2FsIHJ0c3JjPVwiJDFcIlxuK1x0bG9jYWwgcnRkc3Q9XCIkMlwiXG4rXHRsb2NhbCB0aWRzcmM9XCIkM1wiXG4rXHRsb2NhbCB0aWRkc3Q9XCIkNFwiXG4rXHRsb2NhbCBydG5hbWVcbitcdGxvY2FsIHNyY192NlxuK1x0bG9jYWwgZHN0X3Y2XG4rXG4rXHRydG5hbWU9XCIkKGdldF9ydF9uc25hbWUgXCIke3J0c3JjfVwiKVwiXG4rXHRzcmNfdjY9XCIke0lQdjZfSFNfTkVUV09SS306OiQoZ2V0X3Jsb19ob3N0aWQgXCIke3J0c3JjfVwiIFwiJHt0aWRzcmN9XCIpXCJcbitcdGRzdF92Nj1cIiR7SVB2Nl9IU19ORVRXT1JLfTo6JChnZXRfcmxvX2hvc3RpZCBcIiR7cnRkc3R9XCIgXCIke3RpZGRzdH1cIilcIlxuK1xuK1x0aXAgbmV0bnMgZXhlYyBcIiR7cnRuYW1lfVwiIGlwIHZyZiBleGVjIFwidnJmLSR7dGlkc3JjfVwiIFxcXG4rXHRcdHBpbmcgLWMgMSAtVyBcIiR7UElOR19USU1FT1VUX1NFQ31cIiBcXFxuK1x0XHQtSSBcIiR7c3JjX3Y2fVwiIFwiJHtkc3RfdjZ9XCIgXHUwMDNlL2Rldi9udWxsIDJcdTAwM2VcdTAwMjYxXG4rfVxuK1xuK2NoZWNrX2d3X2lwdjRfY29ubmVjdGl2aXR5KClcbit7XG4rXHRsb2NhbCBydHNyYz1cIiQxXCJcbitcdGxvY2FsIHJ0ZHN0PVwiJDJcIlxuK1x0bG9jYWwgdGlkc3JjPVwiJDNcIlxuK1x0bG9jYWwgdGlkZHN0PVwiJDRcIlxuK1x0bG9jYWwgcnRuYW1lXG4rXHRsb2NhbCBzcmNfdjRcbitcdGxvY2FsIGRzdF92NFxuK1xuK1x0cnRuYW1lPVwiJChnZXRfcnRfbnNuYW1lIFwiJHtydHNyY31cIilcIlxuK1x0c3JjX3Y0PVwiJHtJUHY0X0hTX05FVFdPUkt9LiQoZ2V0X3Jsb19ob3N0aWQgXCIke3J0c3JjfVwiIFwiJHt0aWRzcmN9XCIpXCJcbitcdGRzdF92ND1cIiR7SVB2NF9IU19ORVRXT1JLfS4kKGdldF9ybG9faG9zdGlkIFwiJHtydGRzdH1cIiBcIiR7dGlkZHN0fVwiKVwiXG4rXG4rXHRpcCBuZXRucyBleGVjIFwiJHtydG5hbWV9XCIgaXAgdnJmIGV4ZWMgXCJ2cmYtJHt0aWRzcmN9XCIgXFxcbitcdFx0cGluZyAtYyAxIC1XIFwiJHtQSU5HX1RJTUVPVVRfU0VDfVwiIFxcXG4rXHRcdC1JIFwiJHtzcmNfdjR9XCIgXCIke2RzdF92NH1cIiBcdTAwM2UvZGV2L251bGwgMlx1MDAzZVx1MDAyNjFcbit9XG4rXG4rY2hlY2tfYW5kX2xvZ19nd19jb25uZWN0aXZpdHkoKVxuK3tcbitcdGxvY2FsIHJ0c3JjPVwiJDFcIlxuK1x0bG9jYWwgcnRkc3Q9XCIkMlwiXG4rXHRsb2NhbCB0aWQ9XCIkM1wiXG4rXG4rXHRjaGVja19nd19pcHY2X2Nvbm5lY3Rpdml0eSBcIiR7cnRzcmN9XCIgXCIke3J0ZHN0fVwiIFwiJHt0aWR9XCIgXCIke3RpZH1cIlxuK1x0bG9nX3Rlc3QgJD8gMCBcIklQdjYgY29ubmVjdGl2aXR5OiBydC0ke3J0c3JjfSAtXHUwMDNlIHJ0LSR7cnRkc3R9ICh0ZW5hbnQgJHt0aWR9KVwiXG4rXG4rXHRjaGVja19nd19pcHY0X2Nvbm5lY3Rpdml0eSBcIiR7cnRzcmN9XCIgXCIke3J0ZHN0fVwiIFwiJHt0aWR9XCIgXCIke3RpZH1cIlxuK1x0bG9nX3Rlc3QgJD8gMCBcIklQdjQgY29ubmVjdGl2aXR5OiBydC0ke3J0c3JjfSAtXHUwMDNlIHJ0LSR7cnRkc3R9ICh0ZW5hbnQgJHt0aWR9KVwiXG4rfVxuK1xuK2NoZWNrX2FuZF9sb2dfZ3dfaXNvbGF0aW9uKClcbit7XG4rXHRsb2NhbCBydHNyYz1cIiQxXCJcbitcdGxvY2FsIHJ0ZHN0PVwiJDJcIlxuK1x0bG9jYWwgdGlkc3JjPVwiJDNcIlxuK1x0bG9jYWwgdGlkZHN0PVwiJDRcIlxuK1xuK1x0Y2hlY2tfZ3dfaXB2Nl9jb25uZWN0aXZpdHkgXCIke3J0c3JjfVwiIFwiJHtydGRzdH1cIiBcIiR7dGlkc3JjfVwiIFwiJHt0aWRkc3R9XCJcbitcdGxvZ190ZXN0ICQ/IDEgXCJJUHY2IGlzb2xhdGlvbjogcnQtJHtydHNyY30gLVgtXHUwMDNlIHJ0LSR7cnRkc3R9ICh0ZW5hbnRzICR7dGlkc3JjfS8ke3RpZGRzdH0pXCJcbitcbitcdGNoZWNrX2d3X2lwdjRfY29ubmVjdGl2aXR5IFwiJHtydHNyY31cIiBcIiR7cnRkc3R9XCIgXCIke3RpZHNyY31cIiBcIiR7dGlkZHN0fVwiXG4rXHRsb2dfdGVzdCAkPyAxIFwiSVB2NCBpc29sYXRpb246IHJ0LSR7cnRzcmN9IC1YLVx1MDAzZSBydC0ke3J0ZHN0fSAodGVuYW50cyAke3RpZHNyY30vJHt0aWRkc3R9KVwiXG4rfVxuK1xuK2d3X3Zwbl9pc29sYXRpb25fdGVzdHMoKVxuK3tcbitcdGxvZ19zZWN0aW9uIFwiU1J2NiBWUE4gaXNvbGF0aW9uIHRlc3QgYW1vbmcgcm91dGVycyBpbiBkaWZmZXJlbnQgdGVuYW50c1wiXG4rXG4rXHRjaGVja19hbmRfbG9nX2d3X2lzb2xhdGlvbiAxIDIgMTAwIDIwMFxuK1x0Y2hlY2tfYW5kX2xvZ19nd19pc29sYXRpb24gMiAxIDEwMCAyMDBcbitcbitcdGNoZWNrX2FuZF9sb2dfZ3dfaXNvbGF0aW9uIDEgMiAyMDAgMTAwXG4rXHRjaGVja19hbmRfbG9nX2d3X2lzb2xhdGlvbiAyIDEgMjAwIDEwMFxuK31cbitcbitnd192cG5fdGVzdHMoKVxuK3tcbitcdGxvZ19zZWN0aW9uIFwiU1J2NiBWUE4gY29ubmVjdGl2aXR5IHRlc3QgYW1vbmcgcm91dGVycyBpbiB0aGUgc2FtZSB0ZW5hbnRcIlxuK1xuK1x0Y2hlY2tfYW5kX2xvZ19nd19jb25uZWN0aXZpdHkgMSAyIDEwMFxuK1x0Y2hlY2tfYW5kX2xvZ19nd19jb25uZWN0aXZpdHkgMiAxIDEwMFxuK1xuK1x0Y2hlY2tfYW5kX2xvZ19nd19jb25uZWN0aXZpdHkgMSAyIDIwMFxuK1x0Y2hlY2tfYW5kX2xvZ19nd19jb25uZWN0aXZpdHkgMiAxIDIwMFxuK31cbitcbitfX3Rlc3RfZ3dfbm9sb29rdXAoKVxuK3tcbitcdGxvY2FsIHJ0c3JjPVwiJDFcIlxuK1x0bG9jYWwgcnRkc3Q9XCIkMlwiXG4rXHRsb2NhbCB0aWQ9XCIkM1wiXG4rXHRsb2NhbCBzaWRcbitcbitcdHNpZD1cIiQoYnVpbGRfdnBuX3NpZCBcIiR7cnRzcmN9XCIgXCIke3J0ZHN0fVwiIFwiJHt0aWR9XCIpXCJcbitcbitcdCMgcmVwbGFjZSBndyBlbmNhcCByb3V0ZSB3aXRob3V0IFwibG9va3VwXCIgYXR0cmlidXRlXG4rXHRzZXRfZ3dfZW5jYXBfcm91dGVfbm9sb29rdXAgXCIke3J0c3JjfVwiIFwiJHtydGRzdH1cIiBcIiR7c2lkfVwiIFwiJHt0aWR9XCJcbitcbitcdGNoZWNrX2d3X2lwdjZfY29ubmVjdGl2aXR5IFwiJHtydHNyY31cIiBcIiR7cnRkc3R9XCIgXCIke3RpZH1cIiBcIiR7dGlkfVwiXG4rXHRsb2dfdGVzdCAkPyAxIFwiSVB2NiB3L28gbG9va3VwOiBydC0ke3J0c3JjfSAtWC1cdTAwM2UgcnQtJHtydGRzdH0gKHRlbmFudCAke3RpZH0pXCJcbitcbitcdGNoZWNrX2d3X2lwdjRfY29ubmVjdGl2aXR5IFwiJHtydHNyY31cIiBcIiR7cnRkc3R9XCIgXCIke3RpZH1cIiBcIiR7dGlkfVwiXG4rXHRsb2dfdGVzdCAkPyAxIFwiSVB2NCB3L28gbG9va3VwOiBydC0ke3J0c3JjfSAtWC1cdTAwM2UgcnQtJHtydGRzdH0gKHRlbmFudCAke3RpZH0pXCJcbitcbitcdCMgcmVzdG9yZSBndyBlbmNhcCByb3V0ZSB3aXRoIFwibG9va3VwXCIgZm9yIHN1YnNlcXVlbnQgdGVzdHNcbitcdHNldF9nd19lbmNhcF9yb3V0ZSBcIiR7cnRzcmN9XCIgXCIke3J0ZHN0fVwiIFwiJHtzaWR9XCIgXCIke3RpZH1cIlxuK31cbitcbitnd192cG5fbm9sb29rdXBfdGVzdHMoKVxuK3tcbitcdGxvZ19zZWN0aW9uIFwiU1J2NiBWUE4gY29ubmVjdGl2aXR5IHRlc3QgYW1vbmcgcm91dGVycyB3L28gbG9va3VwXCJcbitcbitcdF9fdGVzdF9nd19ub2xvb2t1cCAxIDIgMTAwXG4rXHRfX3Rlc3RfZ3dfbm9sb29rdXAgMiAxIDEwMFxuK1xuK1x0X190ZXN0X2d3X25vbG9va3VwIDEgMiAyMDBcbitcdF9fdGVzdF9nd19ub2xvb2t1cCAyIDEgMjAwXG4rfVxuK1xuK3Rlc3RfY29tbWFuZF9vcl9rc2Z0X3NraXAoKVxuK3tcbitcdGxvY2FsIGNtZD1cIiQxXCJcbitcbitcdGlmIFsgISAteCBcIiQoY29tbWFuZCAtdiBcIiR7Y21kfVwiKVwiIF07IHRoZW5cbitcdFx0ZWNobyBcIlNLSVA6IENvdWxkIG5vdCBydW4gdGVzdCB3aXRob3V0IFxcXCIke2NtZH1cXFwiIHRvb2xcIlxuK1x0XHRleGl0IFwiJHtrc2Z0X3NraXB9XCJcbitcdGZpXG4rfVxuK1xuK3Rlc3RfdnJmX29yX2tzZnRfc2tpcCgpXG4re1xuK1x0bW9kcHJvYmUgdnJmIFx1MDAyNlx1MDAzZS9kZXYvbnVsbCB8fCB0cnVlXG4rXHRpZiBbICEgLWUgL3Byb2Mvc3lzL25ldC92cmYvc3RyaWN0X21vZGUgXTsgdGhlblxuK1x0XHRlY2hvIFwiU0tJUDogdnJmIHN5c2N0bCBkb2VzIG5vdCBleGlzdFwiXG4rXHRcdGV4aXQgXCIke2tzZnRfc2tpcH1cIlxuK1x0Zmlcbit9XG4rXG4rdGVzdF9kdW1teV9kZXZfb3Jfa3NmdF9za2lwKClcbit7XG4rXHRsb2NhbCB0ZXN0X25ldG5zXG4rXG4rXHRzZXR1cF9ucyB0ZXN0X25ldG5zXG4rXG4rXHRtb2Rwcm9iZSBkdW1teSBcdTAwMjZcdTAwM2UvZGV2L251bGwgfHwgdHJ1ZVxuK1x0aWYgISBpcCAtbmV0bnMgXCIke3Rlc3RfbmV0bnN9XCIgbGluayBhZGQgXCIke0RVTU1ZX0RFVk5BTUV9XCIgXFxcbitcdFx0XHR0eXBlIGR1bW15OyB0aGVuXG4rXHRcdGNsZWFudXBfbnMgXCIke3Rlc3RfbmV0bnN9XCJcbitcdFx0ZWNobyBcIlNLSVA6IGR1bW15IGRldiBub3Qgc3VwcG9ydGVkXCJcbitcdFx0ZXhpdCBcIiR7a3NmdF9za2lwfVwiXG4rXHRmaVxuK1xuK1x0Y2xlYW51cF9ucyBcIiR7dGVzdF9uZXRuc31cIlxuK31cbitcbit0ZXN0X2VuY2FwX2xvb2t1cF9zdXBwX29yX2tzZnRfc2tpcCgpXG4re1xuK1x0bG9jYWwgbnNuYW1lXG4rXG4rXHRzZXR1cF9ucyBuc25hbWVcbitcbitcdGlwIC1uZXRucyBcIiR7bnNuYW1lfVwiIGxpbmsgYWRkIFwiJHtEVU1NWV9ERVZOQU1FfVwiIHR5cGUgZHVtbXlcbitcdGlwIC1uZXRucyBcIiR7bnNuYW1lfVwiIGxpbmsgc2V0IFwiJHtEVU1NWV9ERVZOQU1FfVwiIHVwXG4rXG4rXHRpZiAhIGlwIC1uZXRucyBcIiR7bnNuYW1lfVwiIC02IHJvdXRlIGFkZCBcIiR7SVB2Nl9URVNUU19BRERSfS8xMjhcIiBcXFxuK1x0XHRcdGVuY2FwIHNlZzYgbW9kZSBlbmNhcCBzZWdzIGZjMDA6OjEgXFxcbitcdFx0XHRsb29rdXAgXCIke1RFU1RTX1RBQkxFX0lEfVwiIFxcXG4rXHRcdFx0ZGV2IFwiJHtEVU1NWV9ERVZOQU1FfVwiIDJcdTAwM2UvZGV2L251bGw7IHRoZW5cbitcdFx0Y2xlYW51cF9ucyBcIiR7bnNuYW1lfVwiXG4rXHRcdGVjaG8gXCJTS0lQOiBzZWc2IGVuY2FwIGxvb2t1cCBhdHRyaWJ1dGUgbm90IHN1cHBvcnRlZFwiXG4rXHRcdGV4aXQgXCIke2tzZnRfc2tpcH1cIlxuK1x0ZmlcbitcbitcdCMgQW4gb2xkIGtlcm5lbCB3aXRoIGEgcmVjZW50IGlwcm91dGUyIGFjY2VwdHMgdGhlIHJvdXRlIGJ1dFxuK1x0IyBzaWxlbnRseSBpZ25vcmVzIHRoZSBsb29rdXAgYXR0cmlidXRlLiBEdW1wIHRoZSByb3V0ZSBhbmQgY2hlY2tcbitcdCMgdGhlIGF0dHJpYnV0ZSBpcyByZWFsbHkgdGhlcmUsIG90aGVyd2lzZSB0aGUgdGVzdCBmYWxzZWx5IHBhc3Nlcy5cbitcdGlmICEgaXAgLW5ldG5zIFwiJHtuc25hbWV9XCIgLTYgcm91dGUgc2hvdyBcIiR7SVB2Nl9URVNUU19BRERSfS8xMjhcIiB8IFxcXG4rXHRcdFx0Z3JlcCAtcSBcImxvb2t1cCAke1RFU1RTX1RBQkxFX0lEfVwiOyB0aGVuXG4rXHRcdGNsZWFudXBfbnMgXCIke25zbmFtZX1cIlxuK1x0XHRlY2hvIFwiU0tJUDogc2VnNiBlbmNhcCBsb29rdXAgYXR0cmlidXRlIG5vdCBzdXBwb3J0ZWRcIlxuK1x0XHRleGl0IFwiJHtrc2Z0X3NraXB9XCJcbitcdGZpXG4rXG4rXHRjbGVhbnVwX25zIFwiJHtuc25hbWV9XCJcbit9XG4rXG4raWYgWyBcIiQoaWQgLXUpXCIgLW5lIDAgXTsgdGhlblxuK1x0ZWNobyBcIlNLSVA6IE5lZWQgcm9vdCBwcml2aWxlZ2VzXCJcbitcdGV4aXQgXCIke2tzZnRfc2tpcH1cIlxuK2ZpXG4rXG4rIyByZXF1aXJlZCBwcm9ncmFtcyB0byBjYXJyeSBvdXQgdGhpcyBzZWxmdGVzdFxuK3Rlc3RfY29tbWFuZF9vcl9rc2Z0X3NraXAgaXBcbit0ZXN0X2NvbW1hbmRfb3Jfa3NmdF9za2lwIHBpbmdcbit0ZXN0X2NvbW1hbmRfb3Jfa3NmdF9za2lwIHN5c2N0bFxuK3Rlc3RfY29tbWFuZF9vcl9rc2Z0X3NraXAgZ3JlcFxuK1xuK3Rlc3RfZHVtbXlfZGV2X29yX2tzZnRfc2tpcFxuK3Rlc3RfdnJmX29yX2tzZnRfc2tpcFxuK3Rlc3RfZW5jYXBfbG9va3VwX3N1cHBfb3Jfa3NmdF9za2lwXG4rXG4rc2V0IC1lXG4rdHJhcCBjbGVhbnVwIEVYSVRcbitcbitzZXR1cFxuK3NldCArZVxuK1xuK3JvdXRlcl90ZXN0c1xuK2hvc3QyZ2F0ZXdheV90ZXN0c1xuK2hvc3RfdnBuX3Rlc3RzXG4raG9zdF92cG5faXNvbGF0aW9uX3Rlc3RzXG4raG9zdF92cG5fbm9sb29rdXBfdGVzdHNcbitnd192cG5fdGVzdHNcbitnd192cG5faXNvbGF0aW9uX3Rlc3RzXG4rZ3dfdnBuX25vbG9va3VwX3Rlc3RzXG4rXG4rcHJpbnRfbG9nX3Rlc3RfcmVzdWx0c1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDg6NTQ6MTcuMzQ5Nzc1MjAxWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzY3NTAyNTM5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBTUnY2IFRhYmxlIEF0dHJpYnV0ZSBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0J3Mgc3RyYWlnaHRmb3J3YXJkLiBUaGV5J3ZlIGludHJvZHVjZWQgYSBjcml0aWNhbCBmZWF0dXJlOiB0aGUgYWJpbGl0eSB0byBzcGVjaWZ5IGEgRklCIHRhYmxlIGZvciBwb3N0LWVuY2Fwc3VsYXRpb24gU0lEIGxvb2t1cCB3aXRoaW4gU1J2NiB0dW5uZWxzLiBUaGlzIGlzIGEgZ2FtZS1jaGFuZ2VyIGZvciBzb3BoaXN0aWNhdGVkIG5ldHdvcmsgZGVzaWducywgYWxsb3dpbmcgZm9yIG11Y2ggbW9yZSBncmFudWxhciBjb250cm9sIG92ZXIgcm91dGluZyB3aXRoaW4gdGhlIHR1bm5lbC5cblxuVGhlIG1lYXQgb2YgdGhlIHdvcmsgaXMgaW4gYG5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuY2AuIFRoZXkndmUgYWRkZWQgYSBgc2VnNl90YWJsZV9sb29rdXBgIGZ1bmN0aW9uLCB3aGljaCBJIGxpa2UuIEl0J3MgY2xlYW4gYW5kIGZvY3VzZWQgb24gcmV0cmlldmluZyBhIHJvdXRlIGZyb20gYSBzcGVjaWZpYyB0YWJsZSwgaGFuZGxpbmcgdGhlIGxvb2t1cCBhbmQgZW5zdXJpbmcgdGhlIHRhYmxlIGFjdHVhbGx5IGV4aXN0cy4gIFRoZSB1c2Ugb2YgYGZpYjZfZ2V0X3RhYmxlYCBhbmQgYGlwNl9wb2xfcm91dGVgIGlzIGNvcnJlY3QgaGVyZSwgcmV1c2luZyBleGlzdGluZyBrZXJuZWwgaW5mcmFzdHJ1Y3R1cmUuXG5cblRoZSBOZXRsaW5rIGF0dHJpYnV0ZSBgU0VHNl9JUFRVTk5FTF9UQUJMRWAgaXMgdGhlIHVzZXItZmFjaW5nIHBhcnQsIGFuZCB0aGUgY29kZSBsb29rcyBzYW5lLiBJdCBhcHBlYXJzIHRoZSBhdHRyaWJ1dGUgaXMgcGFyc2VkIGluIGBzZWc2X2J1aWxkX3N0YXRlYC4gVmFsaWRhdGlvbiBpcyBpbmNsdWRlZCAoY2hlY2tpbmcgZm9yIG5vbi16ZXJvIGB0YWJsZWAgdmFsdWUpLCBhbmQgdGhleSdyZSB1c2luZyBgTkxfU0VUX0VSUl9NU0dgIGZvciBwcm9wZXIgZXJyb3IgcmVwb3J0aW5nIGJhY2sgdG8gdGhlIHVzZXIgc3BhY2UuIEdvb2QuXG5cbkknbGwgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGlzIGlzIGVuYWJsZWQuIFRpbWUgdG8gY2hlY2sgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uLiBJJ2xsIHNlYXJjaCBmb3IgYHNlZzZfaXB0dW5uZWwuY2Agd2l0aGluIHRoZSBgbmV0L2lwdjYvTWFrZWZpbGVgIGFuZCBgbmV0L2lwdjYvS2NvbmZpZ2AgZmlsZXMuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBJIG5lZWQgdG8gZW5hYmxlIHRoaXMuIFRoaXMgaXMgY3JpdGljYWwgdG8gZW5zdXJlIHRoaXMgY29kZSBpcyBhY3R1YWxseSBidWlsdCBhbmQgYXZhaWxhYmxlIGZvciB1c2UgaW4gZGVwbG95bWVudHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3MzA1LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTkwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDg6NTQ6MjUuMDI0ODAzMDcxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0MTgxMTgyNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZWc2X2lwdHVubmVsXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY2L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2Ni9NYWtlZmlsZT0yND1pcHY2LSQoQ09ORklHX05FVExBQkVMKSArPSBjYWxpcHNvLm9cXG5uZXQvaXB2Ni9NYWtlZmlsZToyNTppcHY2LSQoQ09ORklHX0lQVjZfU0VHNl9MV1RVTk5FTCkgKz0gc2VnNl9pcHR1bm5lbC5vIHNlZzZfbG9jYWwub1xcbm5ldC9pcHY2L01ha2VmaWxlLTI2LWlwdjYtJChDT05GSUdfSVBWNl9TRUc2X0hNQUMpICs9IHNlZzZfaG1hYy5vXFxuLS1cXG5uZXQvaXB2Ni9zZWc2LmM9NTA4PWludCBfX2luaXQgc2VnNl9pbml0KHZvaWQpXFxuLS1cXG5uZXQvaXB2Ni9zZWc2LmMtNTE5LVxcbm5ldC9pcHY2L3NlZzYuYzo1MjA6XFx0ZXJyID0gc2VnNl9pcHR1bm5lbF9pbml0KCk7XFxubmV0L2lwdjYvc2VnNi5jLTUyMS1cXHRpZiAoZXJyKVxcbi0tXFxubmV0L2lwdjYvc2VnNi5jLTUzMi1vdXRfdW5yZWdpc3Rlcl9pcHR1bjpcXG5uZXQvaXB2Ni9zZWc2LmM6NTMzOlxcdHNlZzZfaXB0dW5uZWxfZXhpdCgpO1xcbm5ldC9pcHY2L3NlZzYuYy01MzQtb3V0X3VucmVnaXN0ZXJfZ2VubDpcXG4tLVxcbm5ldC9pcHY2L3NlZzYuYz01NDE9dm9pZCBzZWc2X2V4aXQodm9pZClcXG4tLVxcbm5ldC9pcHY2L3NlZzYuYy01NDMtXFx0c2VnNl9sb2NhbF9leGl0KCk7XFxubmV0L2lwdjYvc2VnNi5jOjU0NDpcXHRzZWc2X2lwdHVubmVsX2V4aXQoKTtcXG5uZXQvaXB2Ni9zZWc2LmMtNTQ1LVxcdGdlbmxfdW5yZWdpc3Rlcl9mYW1pbHkoXFx1MDAyNnNlZzZfZ2VubF9mYW1pbHkpO1xcbi0tXFxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jLTIxLSNpbmNsdWRlIFxcdTAwM2NsaW51eC9zZWc2LmhcXHUwMDNlXFxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jOjIyOiNpbmNsdWRlIFxcdTAwM2NsaW51eC9zZWc2X2lwdHVubmVsLmhcXHUwMDNlXFxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jLTIzLSNpbmNsdWRlIFxcdTAwM2NuZXQvYWRkcmNvbmYuaFxcdTAwM2VcXG4tLVxcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYy0zMC1cXG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmM6MzE6c3RhdGljIHNpemVfdCBzZWc2X2x3dF9oZWFkcm9vbShzdHJ1Y3Qgc2VnNl9pcHR1bm5lbF9lbmNhcCAqdHVuaW5mbylcXG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmMtMzIte1xcbi0tXFxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jPTUwPXN0cnVjdCBzZWc2X2x3dCB7XFxuLS1cXG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmMtNTQtXFx0dTMyIHRhYmxlO1xcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYzo1NTpcXHRzdHJ1Y3Qgc2VnNl9pcHR1bm5lbF9lbmNhcCB0dW5pbmZvW107XFxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jLTU2LX07XFxuLS1cXG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmM9NTg9c3RhdGljIGlubGluZSBzdHJ1Y3Qgc2VnNl9sd3QgKnNlZzZfbHd0X2x3dHVubmVsKHN0cnVjdCBsd3R1bm5lbF9zdGF0ZSAqbHd0KVxcbi0tXFxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jLTYyLVxcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYzo2MzpzdGF0aWMgaW5saW5lIHN0cnVjdCBzZWc2X2lwdHVubmVsX2VuY2FwICpcXG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmMtNjQtc2VnNl9lbmNhcF9sd3R1bm5lbChzdHJ1Y3QgbHd0dW5uZWxfc3RhdGUgKmx3dClcXG4tLVxcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYy02OC1cXG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmM6Njk6c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IHNlZzZfaXB0dW5uZWxfcG9saWN5W1NFRzZfSVBUVU5ORUxfTUFYICsgMV0gPSB7XFxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jLTcwLVxcdFtTRUc2X0lQVFVOTkVMX1NSSF1cXHQ9IHsgLnR5cGUgPSBOTEFfQklOQVJZIH0sXFxuLS1cXG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmM9NzU9c3RhdGljIGludCBubGFfcHV0X3NyaChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgYXR0cnR5cGUsXFxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jOjc2OlxcdFxcdCAgICAgICBzdHJ1Y3Qgc2VnNl9pcHR1bm5lbF9lbmNhcCAqdHVuaW5mbylcXG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmMtNzcte1xcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYzo3ODpcXHRzdHJ1Y3Qgc2VnNl9pcHR1bm5lbF9lbmNhcCAqZGF0YTtcXG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmMtNzktXFx0c3RydWN0IG5sYXR0ciAqbmxhO1xcbi0tXFxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jPTIyNT1zdGF0aWMgaW50IHNlZzZfZG9fc3JoX2VuY2FwX3JlZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jLTI0Ny1cXHRcXHQvKiBOT1RFOiBpZiB0YWcvZmxhZ3MgYW5kL29yIG90aGVyIFRMVnMgYXJlIGludHJvZHVjZWQgaW4gdGhlXFxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jOjI0ODpcXHRcXHQgKiBzZWc2X2lwdHVubmVsIGluZnJhc3RydWN0dXJlLCB0aGV5IHNob3VsZCBiZSBjb25zaWRlcmVkIHdoZW5cXG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmMtMjQ5LVxcdFxcdCAqIGRlY2lkaW5nIHRvIHNraXAgdGhlIFNSSC5cXG4tLVxcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYz0zOTg9c3RhdGljIGludCBzZWc2X2RvX3NyaChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZHN0X2VudHJ5ICpjYWNoZV9kc3QpXFxuLS1cXG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmMtNDAwLVxcdHN0cnVjdCBkc3RfZW50cnkgKmRzdCA9IHNrYl9kc3Qoc2tiKTtcXG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmM6NDAxOlxcdHN0cnVjdCBzZWc2X2lwdHVubmVsX2VuY2FwICp0aW5mbztcXG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmMtNDAyLVxcdHN0cnVjdCBzZWc2X2x3dCAqc2x3dDtcXG4tLVxcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYz03NDc9c3RhdGljIGludCBzZWc2X2J1aWxkX3N0YXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5sYXR0ciAqbmxhLFxcbi0tXFxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jLTc1Mi1cXHRzdHJ1Y3QgbmxhdHRyICp0YltTRUc2X0lQVFVOTkVMX01BWCArIDFdO1xcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYzo3NTM6XFx0c3RydWN0IHNlZzZfaXB0dW5uZWxfZW5jYXAgKnR1bmluZm87XFxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jLTc1NC1cXHRzdHJ1Y3QgbHd0dW5uZWxfc3RhdGUgKm5ld3RzO1xcbi0tXFxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jLTc2Mi1cXHRlcnIgPSBubGFfcGFyc2VfbmVzdGVkX2RlcHJlY2F0ZWQodGIsIFNFRzZfSVBUVU5ORUxfTUFYLCBubGEsXFxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jOjc2MzpcXHRcXHRcXHRcXHRcXHQgIHNlZzZfaXB0dW5uZWxfcG9saWN5LCBleHRhY2spO1xcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYy03NjQtXFxuLS1cXG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmM9ODc1PXN0YXRpYyBpbnQgc2VnNl9maWxsX2VuY2FwX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYy04Nzcte1xcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYzo4Nzg6XFx0c3RydWN0IHNlZzZfaXB0dW5uZWxfZW5jYXAgKnR1bmluZm8gPSBzZWc2X2VuY2FwX2x3dHVubmVsKGx3dHN0YXRlKTtcXG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmMtODc5LVxcdHN0cnVjdCBzZWc2X2x3dCAqc2x3dCA9IHNlZzZfbHd0X2x3dHVubmVsKGx3dHN0YXRlKTtcXG4tLVxcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYz04OTU9c3RhdGljIGludCBzZWc2X2VuY2FwX25sc2l6ZShzdHJ1Y3QgbHd0dW5uZWxfc3RhdGUgKmx3dHN0YXRlKVxcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYy04OTYte1xcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYzo4OTc6XFx0c3RydWN0IHNlZzZfaXB0dW5uZWxfZW5jYXAgKnR1bmluZm8gPSBzZWc2X2VuY2FwX2x3dHVubmVsKGx3dHN0YXRlKTtcXG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmMtODk4LVxcdHN0cnVjdCBzZWc2X2x3dCAqc2x3dCA9IHNlZzZfbHd0X2x3dHVubmVsKGx3dHN0YXRlKTtcXG4tLVxcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYz05MTI9c3RhdGljIGludCBzZWc2X2VuY2FwX2NtcChzdHJ1Y3QgbHd0dW5uZWxfc3RhdGUgKmEsIHN0cnVjdCBsd3R1bm5lbF9zdGF0ZSAqYilcXG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmMtOTEzLXtcXG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmM6OTE0OlxcdHN0cnVjdCBzZWc2X2lwdHVubmVsX2VuY2FwICphX2hkciA9IHNlZzZfZW5jYXBfbHd0dW5uZWwoYSk7XFxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jOjkxNTpcXHRzdHJ1Y3Qgc2VnNl9pcHR1bm5lbF9lbmNhcCAqYl9oZHIgPSBzZWc2X2VuY2FwX2x3dHVubmVsKGIpO1xcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYy05MTYtXFx0c3RydWN0IHNlZzZfbHd0ICphX3Nsd3QgPSBzZWc2X2x3dF9sd3R1bm5lbChhKTtcXG4tLVxcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYz05MzI9c3RhdGljIGNvbnN0IHN0cnVjdCBsd3R1bm5lbF9lbmNhcF9vcHMgc2VnNl9pcHR1bl9vcHMgPSB7XFxuLS1cXG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmMtOTQyLVxcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYzo5NDM6aW50IF9faW5pdCBzZWc2X2lwdHVubmVsX2luaXQodm9pZClcXG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmMtOTQ0LXtcXG4tLVxcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYy05NDctXFxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jOjk0ODp2b2lkIHNlZzZfaXB0dW5uZWxfZXhpdCh2b2lkKVxcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYy05NDkte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwODo1NDoyNS4yNjY2MjEwMjdaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDA5NTYxNTkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBJUHY2IFNlZ21lbnQgUm91dGluZyB3aXRoIElQdjYgTFdUdW5uZWwgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBuYWlsIGRvd24gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGZvciB0aGUgU2VnbWVudCBSb3V0aW5nIHdpdGggSVB2NiBMV1R1bm5lbCBmZWF0dXJlLiBSaWdodCwgSSByZW1lbWJlciBzZWVpbmcgc29tZXRoaW5nIGxpa2UgYENPTkZJR19JUFY2X1NFRzZfTFdUVU5ORUxgLiBMZXQgbWUganVzdCBkb3VibGUtY2hlY2sgdGhhdC4gV2hlcmUgaXMgdGhlIGF1dGhvcml0YXRpdmUgc291cmNlIGZvciB0aGVzZSBrZXJuZWwgY29uZmlnIG9wdGlvbnM/IEFoLCB0aGF0IHdvdWxkIGJlIGBuZXQvaXB2Ni9LY29uZmlnYC4gVGltZSB0byBjcmFjayB0aGF0IGZpbGUgb3BlbiBhbmQgY29uZmlybSB0aGUgZXhhY3QgbmFtZSBhbmQgYW55IGRlcGVuZGVuY2llcyBvciByZWxhdGVkIG9wdGlvbnMgc3Vycm91bmRpbmcgYElQVjZfU0VHNl9MV1RVTk5FTGAuIEdvdHRhIG1ha2Ugc3VyZSBJJ20gdXNpbmcgdGhlIHJpZ2h0IGtub2IsIGFuZCB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IHdpdGhpbiB0aGUgbGFyZ2VyIElQdjYgc3RhY2sgY29uZmlndXJhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA0ODcsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwODo1NDoyOC4yNzYxODUyODdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzU3ODgzMDc1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIklQVjZfU0VHNl9MV1RVTk5FTFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2Ni9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY2L0tjb25maWc9Mjc5PWNvbmZpZyBJUFY2X1BJTVNNX1YyXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTI4NS1cXG5uZXQvaXB2Ni9LY29uZmlnOjI4Njpjb25maWcgSVBWNl9TRUc2X0xXVFVOTkVMXFxubmV0L2lwdjYvS2NvbmZpZy0yODctXFx0Ym9vbCBcXFwiSVB2NjogU2VnbWVudCBSb3V0aW5nIEhlYWRlciBlbmNhcHN1bGF0aW9uIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnPTMxMj1jb25maWcgSVBWNl9TRUc2X0JQRlxcbm5ldC9pcHY2L0tjb25maWctMzEzLVxcdGRlZl9ib29sIHlcXG5uZXQvaXB2Ni9LY29uZmlnOjMxNDpcXHRkZXBlbmRzIG9uIElQVjZfU0VHNl9MV1RVTk5FTFxcbm5ldC9pcHY2L0tjb25maWctMzE1LVxcdGRlcGVuZHMgb24gSVBWNiA9IHlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDg6NTQ6MjkuMDM0MDc1NjIxWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTk2OTg0NTEwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG4qKklQIHY2IFNlZ21lbnQgUm91dGluZyBDb25maWd1cmF0aW9uIENvbnNpZGVyYXRpb25zKipcblxuUmlnaHQsIHNvIEknbSBmb2N1c2luZyBvbiBzZXR0aW5nIHVwIHNlZ21lbnQgcm91dGluZyB3aXRoIElQdjYuIE15IHByaW1hcnkgY29uZmlnIG9wdGlvbiBoZXJlIGlzIGBJUFY2X1NFRzZfTFdUVU5ORUxgLiBUaGF0J3MgdGhlIGJpZyBvbmUuIEJ1dCBJIGtub3cgZnJvbSBleHBlcmllbmNlIHRoYXQgdGhlc2UgdGhpbmdzIHJhcmVseSBzdGFuZCBhbG9uZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueSBvdGhlciBjcnVjaWFsIGRlcGVuZGVuY2llcy4gYExXVFVOTkVMYCBpcyBhIGxpa2VseSBjYW5kaWRhdGU7IEknbGwgZmxhZyB0aGF0IGFzIHNvbWV0aGluZyB0byB2ZXJpZnkuIFRvIGJlIGFic29sdXRlbHkgdGhvcm91Z2ggYW5kIG1ha2Ugc3VyZSBJJ3ZlIGdvdCBldmVyeXRoaW5nIG5haWxlZCBkb3duLCBJJ20gZ29pbmcgdG8gZGlnIGludG8gYG5ldC9pcHY2L0tjb25maWdgLiBUaGF0J3Mgd2hlcmUgYWxsIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgZGVmaW5lZCBmb3IgdGhlIElQdjYgc3RhY2suIEknbGwgbmVlZCB0byBkb3VibGUgY2hlY2sgYElQVjZfU0VHNl9MV1RVTk5FTGAgdG8gc2VlIHdoaWNoIG90aGVyIG9wdGlvbnMgYXJlIGNvbm5lY3RlZCwgYW5kIGlmIGFueXRoaW5nIGVsc2UgaXMgbmVlZGVkIG9yIHJlY29tbWVuZGVkIHRvIGdldCB0aGlzIHRoaW5nIHdvcmtpbmcgY29ycmVjdGx5LiBJdCdzIGJlc3QgdG8gYmUgc3VyZSBvZiB0aGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDkxOSwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDA4OjU0OjM1LjAwMzkyNDUyNFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTM3MjgzODIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElQVjZfU0VHNl9MV1RVTk5FTFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2Ni9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY2L0tjb25maWc9Mjc5PWNvbmZpZyBJUFY2X1BJTVNNX1YyXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTI4NS1cXG5uZXQvaXB2Ni9LY29uZmlnOjI4Njpjb25maWcgSVBWNl9TRUc2X0xXVFVOTkVMXFxubmV0L2lwdjYvS2NvbmZpZy0yODctXFx0Ym9vbCBcXFwiSVB2NjogU2VnbWVudCBSb3V0aW5nIEhlYWRlciBlbmNhcHN1bGF0aW9uIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDA4OjU0OjM1LjI5NzY1ODk5NloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwOTQzMTY3MDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlIGxpa2UgeW91cnNlbGY6XG5cbioqQW5hbHl6aW5nIHRoZSBDb25maWd1cmF0aW9uIERlcGVuZGVuY3kqKlxuXG5BbHJpZ2h0LCBteSBicmFpbidzIGtpY2tpbmcgaW50byBnZWFyLiBGaXJzdCwgbGV0J3MgemVybyBpbiBvbiB0aG9zZSBsaW5lcyBzdXJyb3VuZGluZyBgY29uZmlnIElQVjZfU0VHNl9MV1RVTk5FTGAuIE15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiB0aGUgc3Vycm91bmRpbmcgY29udGV4dC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBhbmQgaW50ZXJhY3Rpb25zIGFyb3VuZCB0aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBXaGF0IG90aGVyIGZlYXR1cmVzIG9yIHNldHRpbmdzIGFyZSBpbnZvbHZlZD8gQXJlIHRoZXJlIGFueSBwcmVyZXF1aXNpdGVzIEkgc2hvdWxkIGJlIGF3YXJlIG9mLCBsaWtlIHNwZWNpZmljIGtlcm5lbCBtb2R1bGVzIG9yIG90aGVyIG5ldHdvcmtpbmcgc3RhY2sgY29tcG9uZW50cz8gQXJlIHRoZXJlIGFueSBvYnZpb3VzIGNvbmZsaWN0cyB0byBsb29rIGZvcj8gV2UgY2FuIGFsc28gY2hlY2sgdGhlIEtjb25maWcsIHRvIHNlZSBpZiB0aGVyZSBpcyBhbnkgaGVscCB0ZXh0IHRvIGFzc2lzdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjEzMzQsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwODo1NDozOC4zOTE5Nzk1OTFaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAyNTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9pcHY2L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjgwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjgwOlxcdFxcdGJvb2wgXFxcIklQdjY6IFBJTS1TTSB2ZXJzaW9uIDIgc3VwcG9ydFxcXCJcXG4gMjgxOlxcdFxcdGRlcGVuZHMgb24gSVBWNl9NUk9VVEVcXG4gMjgyOlxcdFxcdGhlbHBcXG4gMjgzOlxcdFxcdCAgU3VwcG9ydCBmb3IgSVB2NiBQSU0gbXVsdGljYXN0IHJvdXRpbmcgcHJvdG9jb2wgUElNLVNNdjIuXFxuIDI4NDpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuIDI4NTpcXHRcXG4gMjg2OlxcdGNvbmZpZyBJUFY2X1NFRzZfTFdUVU5ORUxcXG4gMjg3OlxcdFxcdGJvb2wgXFxcIklQdjY6IFNlZ21lbnQgUm91dGluZyBIZWFkZXIgZW5jYXBzdWxhdGlvbiBzdXBwb3J0XFxcIlxcbiAyODg6XFx0XFx0ZGVwZW5kcyBvbiBJUFY2XFxuIDI4OTpcXHRcXHRzZWxlY3QgTFdUVU5ORUxcXG4gMjkwOlxcdFxcdHNlbGVjdCBEU1RfQ0FDSEVcXG4gMjkxOlxcdFxcdHNlbGVjdCBJUFY2X01VTFRJUExFX1RBQkxFU1xcbiAyOTI6XFx0XFx0aGVscFxcbiAyOTM6XFx0XFx0ICBTdXBwb3J0IGZvciBlbmNhcHN1bGF0aW9uIG9mIHBhY2tldHMgd2l0aGluIGFuIG91dGVyIElQdjZcXG4gMjk0OlxcdFxcdCAgaGVhZGVyIGFuZCBhIFNlZ21lbnQgUm91dGluZyBIZWFkZXIgdXNpbmcgdGhlIGxpZ2h0d2VpZ2h0XFxuIDI5NTpcXHRcXHQgIHR1bm5lbHMgbWVjaGFuaXNtLiBBbHNvIGVuYWJsZSBzdXBwb3J0IGZvciBhZHZhbmNlZCBsb2NhbFxcbiAyOTY6XFx0XFx0ICBwcm9jZXNzaW5nIG9mIFNSdjYgcGFja2V0cyBiYXNlZCBvbiB0aGVpciBhY3RpdmUgc2VnbWVudC5cXG4gMjk3OlxcdFxcbiAyOTg6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBOLlxcbiAyOTk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDA4OjU0OjM4LjM5MjA4NjkwMVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTE2MjMxNDMwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFN0cmF0ZWd5IGZvciBTUnY2IEVuY2Fwc3VsYXRpb24gUm91dGluZyBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggaW50cm9kdWNpbmcgYSBuZXcgTmV0bGluayBhdHRyaWJ1dGUsIGBTRUc2X0lQVFVOTkVMX1RBQkxFYCwgdG8gYWxsb3cgc3BlY2lmeWluZyBhIEZJQiB0YWJsZSBmb3IgcG9zdC1lbmNhcCBTSUQgbG9va3VwIHdpdGhpbiBTUnY2IHR1bm5lbHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGFkZGl0aW9uIHRoYXQgZGlyZWN0bHkgaW1wYWN0cyB0aGUgSVB2NiBTZWdtZW50IFJvdXRpbmcgc3Vic3lzdGVtLCBzbyBmdXp6aW5nIGlzIGRlZmluaXRlbHkgd2FycmFudGVkLiBUaGUgY29yZSBjb25maWd1cmF0aW9uIGlzIGBJUFY2X1NFRzZfTFdUVU5ORUxgLCB3aGljaCBzZWVtcyBzdWZmaWNpZW50IGdpdmVuIHRoYXQgdGhlIHBhdGNoIGxldmVyYWdlcyBzdGFuZGFyZCBJUHY2IHJvdXRpbmcgZnVuY3Rpb25zIGxpa2UgYGZpYjZfZ2V0X3RhYmxlYCAocmVxdWlyaW5nIGBDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVNgLCB3aGljaCBpcyBzZWxlY3RlZCBieSBgSVBWNl9TRUc2X0xXVFVOTkVMYCkgYW5kIGBpcDZfcG9sX3JvdXRlYC5cblxuTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiB0aGUgZnVuY3Rpb25zIG1vc3QgZGlyZWN0bHkgYWZmZWN0ZWQgYnkgdGhpcyBuZXcgYXR0cmlidXRlIGFuZCBsb2dpYy4gVGhlIHByaW1hcnkgZmlsZSB0byBleGFtaW5lIGlzIGBuZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmNgLlxuXG5IZXJlJ3MgbXkgdGFyZ2V0IGxpc3Q6XG5cbiogICBgc2VnNl90YWJsZV9sb29rdXBgOiBDcml0aWNhbCBmb3IgdGhlIG5ldyBGSUIgdGFibGUgbG9va3VwLlxuKiAgIGBzZWc2X2lucHV0X3JvdXRlYDogQ2FsbGVkIGZyb20gYHNlZzZfaW5wdXRfY29yZWAsIHNvIGl0J3MgZGlyZWN0bHkgaW52b2x2ZWQgaW4gdGhlIGlucHV0IHBhdGguXG4qICAgYHNlZzZfb3V0cHV0X2RzdF9sb29rdXBgOiBTaW1pbGFyIHRvIGBzZWc2X2lucHV0X3JvdXRlYCwgYnV0IGZvciB0aGUgb3V0cHV0IHBhdGguIEl0J3MgY2FsbGVkIGZyb20gYHNlZzZfb3V0cHV0X2NvcmVgLlxuKiAgIGBzZWc2X2J1aWxkX3N0YXRlYDogVGhpcyBoYW5kbGVzIHRoZSBOZXRsaW5rIGNvbmZpZ3VyYXRpb24sIHNvIGl0J3MgYSBwcmltZSB0YXJnZXQgZm9yIGZ1enppbmcgdGhlIG5ldyBhdHRyaWJ1dGUuXG4qICAgYHNlZzZfZmlsbF9lbmNhcF9pbmZvYFxuKiAgIGBzZWc2X2VuY2FwX25sc2l6ZWBcbiogICBgc2VnNl9lbmNhcF9jbXBgXG5cbldoaWxlIGBzZWc2X2lucHV0X2NvcmVgIGFuZCBgc2VnNl9vdXRwdXRfY29yZWAgYXJlIHRoZSBjb3JlIGZvcndhcmRpbmcgZnVuY3Rpb25zLCBJJ20gZ29pbmcgdG8gZm9jdXMgb24gdGhlIGBzZWc2X3RhYmxlX2xvb2t1cGAsIGBzZWc2X2lucHV0X3JvdXRlYCwgYHNlZzZfb3V0cHV0X2RzdF9sb29rdXBgIGFuZCBgc2VnNl9idWlsZF9zdGF0ZWAgZnVuY3Rpb25zLCBhcyB0aGV5IGFyZSBzcGVjaWZpYyB0byB0aGUgbmV3IGZ1bmN0aW9uYWxpdHkgYW5kLCB0aHVzLCBtb3JlIGxpa2VseSB0byBleHBvc2Ugbm92ZWwgdnVsbmVyYWJpbGl0aWVzIHJlbGF0ZWQgdG8gdGhpcyBwYXRjaC4gVGhlIG90aGVyIGZ1bmN0aW9ucyBhcmUgcmVsYXRlZCB0byB0aGUgY29yZSBsb2dpYywgd2hpY2ggaXMgYWxzbyB3b3J0aCB0ZXN0aW5nLlxuXG5UaGUgaGlnaC1sZXZlbCByZWFzb25pbmcgaXMgdGhpczogdGhlIHBhdGNoIGZ1bmRhbWVudGFsbHkgYWx0ZXJzIHRoZSBTUnY2IGVuY2Fwc3VsYXRpb24gcGF0aCB0byBpbmNvcnBvcmF0ZSBhIHVzZXItc3BlY2lmaWVkIEZJQiB0YWJsZSBsb29rdXAuIFRoaXMgaW50cm9kdWNlcyBhIG5ldyBjb2RlIHBhdGggYW5kIHBvdGVudGlhbCBmb3IgdW5leHBlY3RlZCBiZWhhdmlvciBpbiB0aGUgcm91dGluZyBsb2dpYywgcGFydGljdWxhcmx5IGlmIHRoZSBwcm92aWRlZCB0YWJsZSBpcyBtYWxmb3JtZWQgb3IgaW52YWxpZC4gVGhlIGZ1bmN0aW9ucyBsaXN0ZWQgYWJvdmUgYXJlIGdvaW5nIHRvIGJlIGtleSB0byB0ZXN0aW5nIHRoZSBuZXcgZnVuY3Rpb25hbGl0eS4gSSdsbCB1c2UgdGhlIGBzZXQtcmVzdWx0c2AgdG9vbCB0byBmaW5hbGl6ZSB0aGUgYW5hbHlzaXMgYW5kIGZlZWQgdGhlc2UgdGFyZ2V0cyBpbnRvIHRoZSBmdXp6ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxODMxLCJPdXRwdXRUb2tlbnMiOjIxNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc2MSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDA4OjU0OjQ5LjU1NDQwNDM0MloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwOTcxODgxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBWNl9TRUc2X0xXVFVOTkVMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic2VnNl90YWJsZV9sb29rdXBcIixcbiAgICBcInNlZzZfaW5wdXRfcm91dGVcIixcbiAgICBcInNlZzZfb3V0cHV0X2RzdF9sb29rdXBcIixcbiAgICBcInNlZzZfYnVpbGRfc3RhdGVcIixcbiAgICBcInNlZzZfZmlsbF9lbmNhcF9pbmZvXCIsXG4gICAgXCJzZWc2X2VuY2FwX25sc2l6ZVwiLFxuICAgIFwic2VnNl9lbmNhcF9jbXBcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgbmV3IE5ldGxpbmsgYXR0cmlidXRlIGBTRUc2X0lQVFVOTkVMX1RBQkxFYCB0byBzcGVjaWZ5IGEgRklCIHRhYmxlIGZvciBwb3N0LWVuY2FwIFNJRCBsb29rdXAgaW4gU1J2NiB0dW5uZWxzLiBJdCBtb2RpZmllcyB0aGUgU1J2NiBlbmNhcHN1bGF0aW9uIGxvZ2ljIGluIGBuZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmNgIHRvIHBlcmZvcm0gcm91dGUgbG9va3VwcyBpbiB0aGUgc3BlY2lmaWVkIHRhYmxlIGR1cmluZyBib3RoIGlucHV0IGFuZCBvdXRwdXQgcGF0aHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byByZWFjaGFibGUgY29yZSBrZXJuZWwgbmV0d29ya2luZyBsb2dpYywgc3BlY2lmaWNhbGx5IHRoZSBJUHY2IFNlZ21lbnQgUm91dGluZyBzdWJzeXN0ZW0sIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQVjZfU0VHNl9MV1RVTk5FTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInNlZzZfdGFibGVfbG9va3VwXCIsXG4gICAgXCJzZWc2X2lucHV0X3JvdXRlXCIsXG4gICAgXCJzZWc2X291dHB1dF9kc3RfbG9va3VwXCIsXG4gICAgXCJzZWc2X2J1aWxkX3N0YXRlXCIsXG4gICAgXCJzZWc2X2ZpbGxfZW5jYXBfaW5mb1wiLFxuICAgIFwic2VnNl9lbmNhcF9ubHNpemVcIixcbiAgICBcInNlZzZfZW5jYXBfY21wXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIG5ldyBOZXRsaW5rIGF0dHJpYnV0ZSBgU0VHNl9JUFRVTk5FTF9UQUJMRWAgdG8gc3BlY2lmeSBhIEZJQiB0YWJsZSBmb3IgcG9zdC1lbmNhcCBTSUQgbG9va3VwIGluIFNSdjYgdHVubmVscy4gSXQgbW9kaWZpZXMgdGhlIFNSdjYgZW5jYXBzdWxhdGlvbiBsb2dpYyBpbiBgbmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jYCB0byBwZXJmb3JtIHJvdXRlIGxvb2t1cHMgaW4gdGhlIHNwZWNpZmllZCB0YWJsZSBkdXJpbmcgYm90aCBpbnB1dCBhbmQgb3V0cHV0IHBhdGhzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gcmVhY2hhYmxlIGNvcmUga2VybmVsIG5ldHdvcmtpbmcgbG9naWMsIHNwZWNpZmljYWxseSB0aGUgSVB2NiBTZWdtZW50IFJvdXRpbmcgc3Vic3lzdGVtLCBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowp6fjj[1] Phase: Succeeded StartedAt: 2026-07-12 08:55:36 +0000 UTC FinishedAt: 2026-07-12 08:55:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp6fjj[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-12 08:55:37 +0000 UTC FinishedAt: 2026-07-12 08:55:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp6fjj[2] Phase: Succeeded StartedAt: 2026-07-12 08:55:37 +0000 UTC FinishedAt: 2026-07-12 12:58:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp6fjj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["seg6_table_lookup","seg6_input_route","seg6_output_dst_lookup","seg6_build_state","seg6_fill_encap_info","seg6_encap_nlsize","seg6_encap_cmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL"],"series_id":"d9361371-0204-496e-b2d2-71ee96506940","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-12 08:55:37 +0000 UTC FinishedAt: 2026-07-12 12:58:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["seg6_table_lookup","seg6_input_route","seg6_output_dst_lookup","seg6_build_state","seg6_fill_encap_info","seg6_encap_nlsize","seg6_encap_cmp"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL"],"series_id":"d9361371-0204-496e-b2d2-71ee96506940","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowp6fjj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["seg6_table_lookup","seg6_input_route","seg6_output_dst_lookup","seg6_build_state","seg6_fill_encap_info","seg6_encap_nlsize","seg6_encap_cmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL"],"series_id":"d9361371-0204-496e-b2d2-71ee96506940","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-12 08:55:37 +0000 UTC FinishedAt: 2026-07-12 08:57:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp6fjj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["seg6_table_lookup","seg6_input_route","seg6_output_dst_lookup","seg6_build_state","seg6_fill_encap_info","seg6_encap_nlsize","seg6_encap_cmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL"],"series_id":"d9361371-0204-496e-b2d2-71ee96506940","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-12 08:55:37 +0000 UTC FinishedAt: 2026-07-12 08:56:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowp6fjj/series-workflowp6fjj-convert-artifact-1199762998/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowp6fjj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["seg6_table_lookup","seg6_input_route","seg6_output_dst_lookup","seg6_build_state","seg6_fill_encap_info","seg6_encap_nlsize","seg6_encap_cmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL"],"series_id":"d9361371-0204-496e-b2d2-71ee96506940","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-12 08:57:10 +0000 UTC FinishedAt: 2026-07-12 09:21:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp6fjj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["seg6_table_lookup","seg6_input_route","seg6_output_dst_lookup","seg6_build_state","seg6_fill_encap_info","seg6_encap_nlsize","seg6_encap_cmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL"],"series_id":"d9361371-0204-496e-b2d2-71ee96506940","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-12 08:57:10 +0000 UTC FinishedAt: 2026-07-12 09:21: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:*11afb91f-e16a-4b83-984a-9af8e0c1ccc5,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-workflowp6fjj/series-workflowp6fjj-convert-artifact-1199762998/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": "f32f9bd7-c0f9-4bc1-8d7a-238b152bfdcb", "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-workflowp6fjj/series-workflowp6fjj-build-action-1121195340/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowp6fjj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["seg6_table_lookup","seg6_input_route","seg6_output_dst_lookup","seg6_build_state","seg6_fill_encap_info","seg6_encap_nlsize","seg6_encap_cmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL"],"series_id":"d9361371-0204-496e-b2d2-71ee96506940","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-12 08:57:10 +0000 UTC FinishedAt: 2026-07-12 09:19:49 +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:*11afb91f-e16a-4b83-984a-9af8e0c1ccc5,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-workflowp6fjj/series-workflowp6fjj-convert-artifact-1199762998/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": "f32f9bd7-c0f9-4bc1-8d7a-238b152bfdcb", "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-workflowp6fjj/series-workflowp6fjj-build-action-1121195340/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowp6fjj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["seg6_table_lookup","seg6_input_route","seg6_output_dst_lookup","seg6_build_state","seg6_fill_encap_info","seg6_encap_nlsize","seg6_encap_cmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL"],"series_id":"d9361371-0204-496e-b2d2-71ee96506940","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-12 09:21:02 +0000 UTC FinishedAt: 2026-07-12 09:21:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp6fjj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["seg6_table_lookup","seg6_input_route","seg6_output_dst_lookup","seg6_build_state","seg6_fill_encap_info","seg6_encap_nlsize","seg6_encap_cmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL"],"series_id":"d9361371-0204-496e-b2d2-71ee96506940","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-12 09:21:02 +0000 UTC FinishedAt: 2026-07-12 09:21:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp6fjj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["seg6_table_lookup","seg6_input_route","seg6_output_dst_lookup","seg6_build_state","seg6_fill_encap_info","seg6_encap_nlsize","seg6_encap_cmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL"],"series_id":"d9361371-0204-496e-b2d2-71ee96506940","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-12 09:21:02 +0000 UTC FinishedAt: 2026-07-12 09:21:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp6fjj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["seg6_table_lookup","seg6_input_route","seg6_output_dst_lookup","seg6_build_state","seg6_fill_encap_info","seg6_encap_nlsize","seg6_encap_cmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL"],"series_id":"d9361371-0204-496e-b2d2-71ee96506940","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-12 09:21:02 +0000 UTC FinishedAt: 2026-07-12 09:21:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL"],"series_id":"d9361371-0204-496e-b2d2-71ee96506940","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowp6fjj/series-workflowp6fjj-convert-artifact-1292491977/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowp6fjj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["seg6_table_lookup","seg6_input_route","seg6_output_dst_lookup","seg6_build_state","seg6_fill_encap_info","seg6_encap_nlsize","seg6_encap_cmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL"],"series_id":"d9361371-0204-496e-b2d2-71ee96506940","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-12 09:21:12 +0000 UTC FinishedAt: 2026-07-12 09:23:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp6fjj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["seg6_table_lookup","seg6_input_route","seg6_output_dst_lookup","seg6_build_state","seg6_fill_encap_info","seg6_encap_nlsize","seg6_encap_cmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL"],"series_id":"d9361371-0204-496e-b2d2-71ee96506940","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-12 09:21:12 +0000 UTC FinishedAt: 2026-07-12 09:23:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*f32f9bd7-c0f9-4bc1-8d7a-238b152bfdcb,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-workflowp6fjj/series-workflowp6fjj-build-action-1121195340/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-workflowp6fjj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["seg6_table_lookup","seg6_input_route","seg6_output_dst_lookup","seg6_build_state","seg6_fill_encap_info","seg6_encap_nlsize","seg6_encap_cmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL"],"series_id":"d9361371-0204-496e-b2d2-71ee96506940","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-12 09:23:27 +0000 UTC FinishedAt: 2026-07-12 09:23:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp6fjj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["seg6_table_lookup","seg6_input_route","seg6_output_dst_lookup","seg6_build_state","seg6_fill_encap_info","seg6_encap_nlsize","seg6_encap_cmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL"],"series_id":"d9361371-0204-496e-b2d2-71ee96506940","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-12 09:23:27 +0000 UTC FinishedAt: 2026-07-12 09:23:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp6fjj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["seg6_table_lookup","seg6_input_route","seg6_output_dst_lookup","seg6_build_state","seg6_fill_encap_info","seg6_encap_nlsize","seg6_encap_cmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL"],"series_id":"d9361371-0204-496e-b2d2-71ee96506940","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-12 09:23:27 +0000 UTC FinishedAt: 2026-07-12 09:54:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp6fjj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["seg6_table_lookup","seg6_input_route","seg6_output_dst_lookup","seg6_build_state","seg6_fill_encap_info","seg6_encap_nlsize","seg6_encap_cmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL"],"series_id":"d9361371-0204-496e-b2d2-71ee96506940","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-12 09:23:27 +0000 UTC FinishedAt: 2026-07-12 09:54:23 +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:*11afb91f-e16a-4b83-984a-9af8e0c1ccc5,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-workflowp6fjj/series-workflowp6fjj-convert-artifact-1292491977/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": "5ec627be-e1c1-4c31-9cd5-b3353d38312e", "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-workflowp6fjj/series-workflowp6fjj-build-action-3205458853/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowp6fjj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["seg6_table_lookup","seg6_input_route","seg6_output_dst_lookup","seg6_build_state","seg6_fill_encap_info","seg6_encap_nlsize","seg6_encap_cmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL"],"series_id":"d9361371-0204-496e-b2d2-71ee96506940","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-12 09:23:27 +0000 UTC FinishedAt: 2026-07-12 09:54:13 +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:*11afb91f-e16a-4b83-984a-9af8e0c1ccc5,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-workflowp6fjj/series-workflowp6fjj-convert-artifact-1292491977/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": "5ec627be-e1c1-4c31-9cd5-b3353d38312e", "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-workflowp6fjj/series-workflowp6fjj-build-action-3205458853/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowp6fjj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["seg6_table_lookup","seg6_input_route","seg6_output_dst_lookup","seg6_build_state","seg6_fill_encap_info","seg6_encap_nlsize","seg6_encap_cmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL"],"series_id":"d9361371-0204-496e-b2d2-71ee96506940","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-12 09:54:23 +0000 UTC FinishedAt: 2026-07-12 09:54:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp6fjj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["seg6_table_lookup","seg6_input_route","seg6_output_dst_lookup","seg6_build_state","seg6_fill_encap_info","seg6_encap_nlsize","seg6_encap_cmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL"],"series_id":"d9361371-0204-496e-b2d2-71ee96506940","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-12 09:54:23 +0000 UTC FinishedAt: 2026-07-12 09:54:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp6fjj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["seg6_table_lookup","seg6_input_route","seg6_output_dst_lookup","seg6_build_state","seg6_fill_encap_info","seg6_encap_nlsize","seg6_encap_cmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL"],"series_id":"d9361371-0204-496e-b2d2-71ee96506940","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-12 09:54:23 +0000 UTC FinishedAt: 2026-07-12 09:56:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp6fjj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["seg6_table_lookup","seg6_input_route","seg6_output_dst_lookup","seg6_build_state","seg6_fill_encap_info","seg6_encap_nlsize","seg6_encap_cmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL"],"series_id":"d9361371-0204-496e-b2d2-71ee96506940","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-12 09:54:23 +0000 UTC FinishedAt: 2026-07-12 09:56:25 +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:*5ec627be-e1c1-4c31-9cd5-b3353d38312e,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-workflowp6fjj/series-workflowp6fjj-build-action-3205458853/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-workflowp6fjj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["seg6_table_lookup","seg6_input_route","seg6_output_dst_lookup","seg6_build_state","seg6_fill_encap_info","seg6_encap_nlsize","seg6_encap_cmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL"],"series_id":"d9361371-0204-496e-b2d2-71ee96506940","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-12 09:56:35 +0000 UTC FinishedAt: 2026-07-12 12:58:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp6fjj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["seg6_table_lookup","seg6_input_route","seg6_output_dst_lookup","seg6_build_state","seg6_fill_encap_info","seg6_encap_nlsize","seg6_encap_cmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL"],"series_id":"d9361371-0204-496e-b2d2-71ee96506940","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-12 09:56:35 +0000 UTC FinishedAt: 2026-07-12 12:58:46 +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":["seg6_table_lookup","seg6_input_route","seg6_output_dst_lookup","seg6_build_state","seg6_fill_encap_info","seg6_encap_nlsize","seg6_encap_cmp"],"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:*f32f9bd7-c0f9-4bc1-8d7a-238b152bfdcb,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*5ec627be-e1c1-4c31-9cd5-b3353d38312e,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-workflowp6fjj/series-workflowp6fjj-build-action-1121195340/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-workflowp6fjj/series-workflowp6fjj-build-action-3205458853/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowp6fjj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["seg6_table_lookup","seg6_input_route","seg6_output_dst_lookup","seg6_build_state","seg6_fill_encap_info","seg6_encap_nlsize","seg6_encap_cmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL"],"series_id":"d9361371-0204-496e-b2d2-71ee96506940","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-12 09:56:35 +0000 UTC FinishedAt: 2026-07-12 09:57:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp6fjj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["seg6_table_lookup","seg6_input_route","seg6_output_dst_lookup","seg6_build_state","seg6_fill_encap_info","seg6_encap_nlsize","seg6_encap_cmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL"],"series_id":"d9361371-0204-496e-b2d2-71ee96506940","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-12 09:56:35 +0000 UTC FinishedAt: 2026-07-12 09:57:05 +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":["seg6_table_lookup","seg6_input_route","seg6_output_dst_lookup","seg6_build_state","seg6_fill_encap_info","seg6_encap_nlsize","seg6_encap_cmp"],"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-workflowp6fjj/series-workflowp6fjj-convert-artifact-3104392478/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowp6fjj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["seg6_table_lookup","seg6_input_route","seg6_output_dst_lookup","seg6_build_state","seg6_fill_encap_info","seg6_encap_nlsize","seg6_encap_cmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL"],"series_id":"d9361371-0204-496e-b2d2-71ee96506940","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-12 09:56:35 +0000 UTC FinishedAt: 2026-07-12 09:56:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp6fjj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["seg6_table_lookup","seg6_input_route","seg6_output_dst_lookup","seg6_build_state","seg6_fill_encap_info","seg6_encap_nlsize","seg6_encap_cmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL"],"series_id":"d9361371-0204-496e-b2d2-71ee96506940","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-12 09:56:35 +0000 UTC FinishedAt: 2026-07-12 09:56:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp6fjj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["seg6_table_lookup","seg6_input_route","seg6_output_dst_lookup","seg6_build_state","seg6_fill_encap_info","seg6_encap_nlsize","seg6_encap_cmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL"],"series_id":"d9361371-0204-496e-b2d2-71ee96506940","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-12 09:56:35 +0000 UTC FinishedAt: 2026-07-12 09:56:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp6fjj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["seg6_table_lookup","seg6_input_route","seg6_output_dst_lookup","seg6_build_state","seg6_fill_encap_info","seg6_encap_nlsize","seg6_encap_cmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL"],"series_id":"d9361371-0204-496e-b2d2-71ee96506940","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-12 09:57:12 +0000 UTC FinishedAt: 2026-07-12 12:58:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp6fjj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["seg6_table_lookup","seg6_input_route","seg6_output_dst_lookup","seg6_build_state","seg6_fill_encap_info","seg6_encap_nlsize","seg6_encap_cmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL"],"series_id":"d9361371-0204-496e-b2d2-71ee96506940","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-12 09:57:12 +0000 UTC FinishedAt: 2026-07-12 12:58:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*f32f9bd7-c0f9-4bc1-8d7a-238b152bfdcb,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*5ec627be-e1c1-4c31-9cd5-b3353d38312e,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-workflowp6fjj/series-workflowp6fjj-build-action-1121195340/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-workflowp6fjj/series-workflowp6fjj-build-action-3205458853/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-workflowp6fjj/series-workflowp6fjj-convert-artifact-3104392478/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,}