Name: series-workflowsj85k Phase: Succeeded StartedAt: 2026-08-26 09:36:10 +0000 UTC FinishedAt: 2026-08-26 11:23:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsj85k[0] Phase: Succeeded StartedAt: 2026-08-26 09:36:10 +0000 UTC FinishedAt: 2026-08-26 10:40:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsj85k[0].run-triage Phase: Succeeded StartedAt: 2026-08-26 09:36:10 +0000 UTC FinishedAt: 2026-08-26 10:40:19 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MT76x0U", "MT76x2U" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MT76x0U", "MT76x2U" ], "series_id": "9f71526c-bd84-41f5-8a35-7cda311f8eb4" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mt76x02_send_tx_status", "mt76x02_tx_status_data" ], "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+CgkJCTx0ZD4yMDI2LzA4LzI2IDEwOjIxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MThtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNVDc2eDBVJiMzNDssCiAgICAmIzM0O01UNzZ4MlUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttdDc2eDAyX3NlbmRfdHhfc3RhdHVzJiMzNDssCiAgICAmIzM0O210NzZ4MDJfdHhfc3RhdHVzX2RhdGEmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2VzcyBidWcgY2F1c2VkIGJ5IGFuIHVudmFsaWRhdGVkIGhhcmR3YXJlIFRYLXN0YXR1cyBpbmRleCBvdmVyZmxvd2luZyB0aGUgbWFjODAyMTEvbWluc3RyZWxfaHQgcGVyLWdyb3VwIHJhdGUgYXJyYXkuIE91dC1vZi1ib3VuZHMgYWNjZXNzZXMgYXJlIHJlbGlhYmx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIG1vZGlmeSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIGluZm8tbGVha3MsIG9yIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTiB0byBkZXRlY3QuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIHRvIGBtdDc2eDAyX21hY19wcm9jZXNzX3R4X3JhdGVgIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3MgaW4gbWFjODAyMTEvbWluc3RyZWxfaHQuIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSBVU0IgZnV6emluZyBvZiB0aGUgbWVkaWF0ZWsgbXQ3NngwdSBhbmQgbXQ3NngydSBkcml2ZXJzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDEwOjIxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMTFjNmY4NWIwZGE1YmY5NDcwZjU5NGQ5ZTkwZjk3MGJjZWNjMzUyOFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDI2IDEwOjIxOjExIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuY1xuaW5kZXggMTRlZTViM2I5NGQzMS4uZDc3MzU2YTJlYzgwMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5jXG5AQCAtMzAyLDEwICYjNDM7MzAyLDIyIEBAIG10NzZ4MDJfbWFjX3Byb2Nlc3NfdHhfcmF0ZShzdHJ1Y3QgaWVlZTgwMjExX3R4X3JhdGUgKnR4cmF0ZSwgdTE2IHJhdGUsXG4gXHRcdHR4cmF0ZS1cdTAwM2VmbGFncyB8PSBJRUVFODAyMTFfVFhfUkNfR1JFRU5fRklFTEQ7XG4gXHRcdGZhbGx0aHJvdWdoO1xuIFx0Y2FzZSBNVF9QSFlfVFlQRV9IVDpcbiYjNDM7XHRcdC8qIFJhdyBoYXJkd2FyZSBUWC1zdGF0dXMgaW5kZXggaXMgdW52YWxpZGF0ZWQ7IGEgc3RhbGUgb3JcbiYjNDM7XHRcdCAqIGNvcnJ1cHQgdmFsdWUgaGVyZSBvdmVyZmxvd3MgbWFjODAyMTEvbWluc3RyZWxfaHQmIzM5O3NcbiYjNDM7XHRcdCAqIHBlci1ncm91cCByYXRlIGFycmF5IChNQ1NfR1JPVVBfUkFURVMgPT0gMTApIGFuZCBjcmFzaGVzLlxuJiM0MztcdFx0ICogVmFsaWQgODAyLjExbiBNQ1MgaW5kaWNlcyBhcmUgMC0zMSAoZm91ciBzdHJlYW1zIHggOCkuXG4mIzQzO1x0XHQgKi9cbiYjNDM7XHRcdGlmIChpZHggXHUwMDNlIDMxKVxuJiM0MztcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdFx0dHhyYXRlLVx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9UWF9SQ19NQ1M7XG4gXHRcdHR4cmF0ZS1cdTAwM2VpZHggPSBpZHg7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBNVF9QSFlfVFlQRV9WSFQ6XG4mIzQzO1x0XHQvKiBTYW1lIG92ZXJmbG93IHJpc2sgZm9yIFZIVDogbWFjODAyMTEgZXhwZWN0cyB0aGUgTUNTXG4mIzQzO1x0XHQgKiBuaWJibGUgKGJpdHMgMzowKSBpbiByYW5nZSAwLTksIG5zcyBwYWNrZWQgYWJvdmUgaXQuXG4mIzQzO1x0XHQgKi9cbiYjNDM7XHRcdGlmICgoaWR4IFx1MDAyNiAweGYpIFx1MDAzZSA5KVxuJiM0MztcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdFx0dHhyYXRlLVx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9UWF9SQ19WSFRfTUNTO1xuIFx0XHR0eHJhdGUtXHUwMDNlaWR4ID0gaWR4O1xuIFx0XHRicmVhaztcbkBAIC00OTMsMTggJiM0Mzs1MDUsMjEgQEAgbXQ3NngwMl9tYWNfZmlsbF90eF9zdGF0dXMoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYsIHN0cnVjdCBtdDc2eDAyX3N0YSAqbXN0YSxcbiBcdFx0Zmlyc3RfcmF0ZSA9IHN0LVx1MDAzZXJhdGUgXHUwMDI2IH5NVF9QS1RJRF9SQVRFO1xuIFx0XHRmaXJzdF9yYXRlIHw9IHN0LVx1MDAzZXBrdGlkIFx1MDAyNiBNVF9QS1RJRF9SQVRFO1xuIFxuLVx0XHRtdDc2eDAyX21hY19wcm9jZXNzX3R4X3JhdGUoXHUwMDI2cmF0ZVswXSwgZmlyc3RfcmF0ZSxcbi1cdFx0XHRcdFx0ICAgIGRldi1cdTAwM2VtcGh5LmNoYW5kZWYuY2hhbi1cdTAwM2ViYW5kKTtcbiYjNDM7XHRcdGlmIChtdDc2eDAyX21hY19wcm9jZXNzX3R4X3JhdGUoXHUwMDI2cmF0ZVswXSwgZmlyc3RfcmF0ZSxcbiYjNDM7XHRcdFx0XHRcdFx0ZGV2LVx1MDAzZW1waHkuY2hhbmRlZi5jaGFuLVx1MDAzZWJhbmQpKVxuJiM0MztcdFx0XHRyZXR1cm47XG4gXHR9IGVsc2UgaWYgKHJhdGVbMF0uaWR4IFx1MDAzYyAwKSB7XG4gXHRcdGlmICghbXN0YSlcbiBcdFx0XHRyZXR1cm47XG4gXG4tXHRcdG10NzZ4MDJfbWFjX3Byb2Nlc3NfdHhfcmF0ZShcdTAwMjZyYXRlWzBdLCBtc3RhLVx1MDAzZXdjaWQudHhfaW5mbyxcbi1cdFx0XHRcdFx0ICAgIGRldi1cdTAwM2VtcGh5LmNoYW5kZWYuY2hhbi1cdTAwM2ViYW5kKTtcbiYjNDM7XHRcdGlmIChtdDc2eDAyX21hY19wcm9jZXNzX3R4X3JhdGUoXHUwMDI2cmF0ZVswXSwgbXN0YS1cdTAwM2V3Y2lkLnR4X2luZm8sXG4mIzQzO1x0XHRcdFx0XHRcdGRldi1cdTAwM2VtcGh5LmNoYW5kZWYuY2hhbi1cdTAwM2ViYW5kKSlcbiYjNDM7XHRcdFx0cmV0dXJuO1xuIFx0fVxuIFxuLVx0bXQ3NngwMl9tYWNfcHJvY2Vzc190eF9yYXRlKFx1MDAyNmxhc3RfcmF0ZSwgc3QtXHUwMDNlcmF0ZSxcbi1cdFx0XHRcdCAgICBkZXYtXHUwMDNlbXBoeS5jaGFuZGVmLmNoYW4tXHUwMDNlYmFuZCk7XG4mIzQzO1x0aWYgKG10NzZ4MDJfbWFjX3Byb2Nlc3NfdHhfcmF0ZShcdTAwMjZsYXN0X3JhdGUsIHN0LVx1MDAzZXJhdGUsXG4mIzQzO1x0XHRcdFx0XHRkZXYtXHUwMDNlbXBoeS5jaGFuZGVmLmNoYW4tXHUwMDNlYmFuZCkpXG4mIzQzO1x0XHRyZXR1cm47XG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKGluZm8tXHUwMDNlc3RhdHVzLnJhdGVzKTsgaSYjNDM7JiM0MzspIHtcbiBcdFx0cmV0cnktLTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAxMDoyMTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xOG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01UNzZ4MFUmIzM0OywKICAgICYjMzQ7TVQ3NngyVSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O210NzZ4MDJfc2VuZF90eF9zdGF0dXMmIzM0OywKICAgICYjMzQ7bXQ3NngwMl90eF9zdGF0dXNfZGF0YSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyB0byBgbXQ3NngwMl9tYWNfcHJvY2Vzc190eF9yYXRlYCB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzIGluIG1hYzgwMjExL21pbnN0cmVsX2h0LiBUaGlzIGlzIHJlYWNoYWJsZSB2aWEgVVNCIGZ1enppbmcgb2YgdGhlIG1lZGlhdGVrIG10NzZ4MHUgYW5kIG10NzZ4MnUgZHJpdmVycy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDExYzZmODViMGRhNWJmOTQ3MGY1OTRkOWU5MGY5NzBiY2VjYzM1MjgKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEF1ZyAyNiAxMDoyMToxMSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuYwppbmRleCAxNGVlNWIzYjk0ZDMxLi5kNzczNTZhMmVjODAzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5jCkBAIC0zMDIsMTAgJiM0MzszMDIsMjIgQEAgbXQ3NngwMl9tYWNfcHJvY2Vzc190eF9yYXRlKHN0cnVjdCBpZWVlODAyMTFfdHhfcmF0ZSAqdHhyYXRlLCB1MTYgcmF0ZSwKIAkJdHhyYXRlLSZndDtmbGFncyB8PSBJRUVFODAyMTFfVFhfUkNfR1JFRU5fRklFTEQ7CiAJCWZhbGx0aHJvdWdoOwogCWNhc2UgTVRfUEhZX1RZUEVfSFQ6CiYjNDM7CQkvKiBSYXcgaGFyZHdhcmUgVFgtc3RhdHVzIGluZGV4IGlzIHVudmFsaWRhdGVkOyBhIHN0YWxlIG9yCiYjNDM7CQkgKiBjb3JydXB0IHZhbHVlIGhlcmUgb3ZlcmZsb3dzIG1hYzgwMjExL21pbnN0cmVsX2h0JiMzOTtzCiYjNDM7CQkgKiBwZXItZ3JvdXAgcmF0ZSBhcnJheSAoTUNTX0dST1VQX1JBVEVTID09IDEwKSBhbmQgY3Jhc2hlcy4KJiM0MzsJCSAqIFZhbGlkIDgwMi4xMW4gTUNTIGluZGljZXMgYXJlIDAtMzEgKGZvdXIgc3RyZWFtcyB4IDgpLgomIzQzOwkJICovCiYjNDM7CQlpZiAoaWR4ICZndDsgMzEpCiYjNDM7CQkJcmV0dXJuIC1FSU5WQUw7CiAJCXR4cmF0ZS0mZ3Q7ZmxhZ3MgfD0gSUVFRTgwMjExX1RYX1JDX01DUzsKIAkJdHhyYXRlLSZndDtpZHggPSBpZHg7CiAJCWJyZWFrOwogCWNhc2UgTVRfUEhZX1RZUEVfVkhUOgomIzQzOwkJLyogU2FtZSBvdmVyZmxvdyByaXNrIGZvciBWSFQ6IG1hYzgwMjExIGV4cGVjdHMgdGhlIE1DUwomIzQzOwkJICogbmliYmxlIChiaXRzIDM6MCkgaW4gcmFuZ2UgMC05LCBuc3MgcGFja2VkIGFib3ZlIGl0LgomIzQzOwkJICovCiYjNDM7CQlpZiAoKGlkeCAmYW1wOyAweGYpICZndDsgOSkKJiM0MzsJCQlyZXR1cm4gLUVJTlZBTDsKIAkJdHhyYXRlLSZndDtmbGFncyB8PSBJRUVFODAyMTFfVFhfUkNfVkhUX01DUzsKIAkJdHhyYXRlLSZndDtpZHggPSBpZHg7CiAJCWJyZWFrOwpAQCAtNDkzLDE4ICYjNDM7NTA1LDIxIEBAIG10NzZ4MDJfbWFjX2ZpbGxfdHhfc3RhdHVzKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2LCBzdHJ1Y3QgbXQ3NngwMl9zdGEgKm1zdGEsCiAJCWZpcnN0X3JhdGUgPSBzdC0mZ3Q7cmF0ZSAmYW1wOyB+TVRfUEtUSURfUkFURTsKIAkJZmlyc3RfcmF0ZSB8PSBzdC0mZ3Q7cGt0aWQgJmFtcDsgTVRfUEtUSURfUkFURTsKIAotCQltdDc2eDAyX21hY19wcm9jZXNzX3R4X3JhdGUoJmFtcDtyYXRlWzBdLCBmaXJzdF9yYXRlLAotCQkJCQkgICAgZGV2LSZndDttcGh5LmNoYW5kZWYuY2hhbi0mZ3Q7YmFuZCk7CiYjNDM7CQlpZiAobXQ3NngwMl9tYWNfcHJvY2Vzc190eF9yYXRlKCZhbXA7cmF0ZVswXSwgZmlyc3RfcmF0ZSwKJiM0MzsJCQkJCQlkZXYtJmd0O21waHkuY2hhbmRlZi5jaGFuLSZndDtiYW5kKSkKJiM0MzsJCQlyZXR1cm47CiAJfSBlbHNlIGlmIChyYXRlWzBdLmlkeCAmbHQ7IDApIHsKIAkJaWYgKCFtc3RhKQogCQkJcmV0dXJuOwogCi0JCW10NzZ4MDJfbWFjX3Byb2Nlc3NfdHhfcmF0ZSgmYW1wO3JhdGVbMF0sIG1zdGEtJmd0O3djaWQudHhfaW5mbywKLQkJCQkJICAgIGRldi0mZ3Q7bXBoeS5jaGFuZGVmLmNoYW4tJmd0O2JhbmQpOwomIzQzOwkJaWYgKG10NzZ4MDJfbWFjX3Byb2Nlc3NfdHhfcmF0ZSgmYW1wO3JhdGVbMF0sIG1zdGEtJmd0O3djaWQudHhfaW5mbywKJiM0MzsJCQkJCQlkZXYtJmd0O21waHkuY2hhbmRlZi5jaGFuLSZndDtiYW5kKSkKJiM0MzsJCQlyZXR1cm47CiAJfQogCi0JbXQ3NngwMl9tYWNfcHJvY2Vzc190eF9yYXRlKCZhbXA7bGFzdF9yYXRlLCBzdC0mZ3Q7cmF0ZSwKLQkJCQkgICAgZGV2LSZndDttcGh5LmNoYW5kZWYuY2hhbi0mZ3Q7YmFuZCk7CiYjNDM7CWlmIChtdDc2eDAyX21hY19wcm9jZXNzX3R4X3JhdGUoJmFtcDtsYXN0X3JhdGUsIHN0LSZndDtyYXRlLAomIzQzOwkJCQkJZGV2LSZndDttcGh5LmNoYW5kZWYuY2hhbi0mZ3Q7YmFuZCkpCiYjNDM7CQlyZXR1cm47CiAKIAlmb3IgKGkgPSAwOyBpICZsdDsgQVJSQVlfU0laRShpbmZvLSZndDtzdGF0dXMucmF0ZXMpOyBpJiM0MzsmIzQzOykgewogCQlyZXRyeS0tOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAxMDoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzQyCgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMjk4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggd2l0aGluIHRoZSBgbXQ3NngwMl9tYWMuY2AgZmlsZSBvZiB0aGUgTWVkaWFUZWsgd2lyZWxlc3MgZHJpdmVyLiBJdCYjMzk7cyBmb2N1c2VkIG9uIGJvdW5kcyBjaGVja2luZyBmb3IgdGhlIGBpZHhgIHZhcmlhYmxlIHdoZW4gZGVhbGluZyB3aXRoIEhUIGFuZCBWSFQgUEhZIHR5cGVzIGluIHRoZSBgbXQ3NngwMl9tYWNfcHJvY2Vzc190eF9yYXRlYCBmdW5jdGlvbi4gSWYgYGlkeGAgaXMgb3V0IG9mIGJvdW5kcywgaXQgbm93IHJldHVybnMgYC1FSU5WQUxgLCB3aGljaCBpcyBnb29kIHByYWN0aWNlLiBUaGUgc2Vjb25kIHBhcnQgbW9kaWZpZXMgYG10NzZ4MDJfbWFjX2ZpbGxfdHhfc3RhdHVzYCB0byBjaGVjayB0aGUgcmVzdWx0IG9mIHRoZSBmb3JtZXIgZnVuY3Rpb24gYW5kIHJldHVybiBlYXJseSwgdGhlcmVieSBhdm9pZGluZyBmdXJ0aGVyIHByb2Nlc3NpbmcgaWYgc29tZXRoaW5nIGdvZXMgd3Jvbmcgd2l0aCB0aGUgcmF0ZSBzZWxlY3Rpb24uIFRoaXMgc3VnZ2VzdHMgdGhlIGludGVudGlvbiBvZiB0aGUgcGF0Y2ggaXMgdG8gZW5oYW5jZSByb2J1c3RuZXNzLCBwb3RlbnRpYWxseSB0byBtaXRpZ2F0ZSBhZ2FpbnN0IHNvbWUgZm9ybSBvZiBvdXQtb2YtYm91bmRzIGFjY2Vzcy4KCk15IGltbWVkaWF0ZSB0aG91Z2h0cyBnbyB0byBmdXp6aW5nIHBvdGVudGlhbC4gU2luY2UgaXQmIzM5O3MgYSB3aXJlbGVzcyBkcml2ZXIsIGBtYWM4MDIxMV9od3NpbWAgY29tZXMgdG8gbWluZCBhcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIEhvd2V2ZXIsIHRoaXMgaXMgc3BlY2lmaWNhbGx5IGZvciBNZWRpYVRlayYjMzk7cyBoYXJkd2FyZSwgc28gSSYjMzk7bSB3b25kZXJpbmcgaWYgYSB0eXBpY2FsIGhhcmR3YXJlLWFnbm9zdGljIHNldHVwIHdpbGwgc3VmZmljZS4gTXkgcGFzdCBleHBlcmllbmNlIHN1Z2dlc3RzIHRoYXQgdGhlc2Ugc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVycyBhcmUgdXN1YWxseSB0cmlja2llciB0byB0ZXN0IHdpdGhvdXQgdGhlIGFjdHVhbCBoYXJkd2FyZSBpbiBwbGFjZS4gQnV0IGNvdWxkIEkgdmlydHVhbGl6ZSBpdCBpbiBRRU1VPyBBbmQsIGEgdGhvdWdodCBqdXN0IHBvcHBlZCB1cDogaXMgdGhpcyBkcml2ZXIgYSBVU0IgZHJpdmVyPyBVU0IgZHJpdmVycyBhcmUgZWFzaWVyIHRvIGZ1enogc2luY2Ugd2UgY2FuIHV0aWxpemUgYSBkdW1teSBIQ0Qgb3IgdmhjaSB0byB0ZXN0IHRoZW0uIExldCBtZSBjaGVjayBpZiB0aGVzZSBmdW5jdGlvbnMsIGBtdDc2eDAyX21hY19maWxsX3R4X3N0YXR1c2Agb3IgYG10NzZ4MDJfbWFjX3Byb2Nlc3NfdHhfcmF0ZWAsIGhhdmUgYW55IFVTQiBjb25uZWN0aW9ucy4gQSBxdWljayBjb2RlIHNlYXJjaCBzaG91bGQgY2xhcmlmeSB0aGF0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDEwOjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzZ4MDJfbWFjX2ZpbGxfdHhfc3RhdHVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuYz00ODc9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuYzo0ODg6bXQ3NngwMl9tYWNfZmlsbF90eF9zdGF0dXMoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYsIHN0cnVjdCBtdDc2eDAyX3N0YSAqbXN0YSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuYy00ODktXHRcdFx0ICAgc3RydWN0IGllZWU4MDIxMV90eF9pbmZvICppbmZvLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuYz01NTU9dm9pZCBtdDc2eDAyX3NlbmRfdHhfc3RhdHVzKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuYy02MjItXHRcdGN1cl9wa3RpZCA9IG1zdGEtXHUwMDNlc3RhdHVzLnBrdGlkO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5jOjYyMzpcdFx0bXQ3NngwMl9tYWNfZmlsbF90eF9zdGF0dXMoZGV2LCBtc3RhLCBzdGF0dXMuaW5mbyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuYy02MjQtXHRcdFx0XHRcdCAgIFx1MDAyNm1zdGEtXHUwMDNlc3RhdHVzLCBtc3RhLVx1MDAzZW5fZnJhbWVzKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmMtNjMwLVx0XHRjdXJfcGt0aWQgPSBzdGF0LVx1MDAzZXBrdGlkO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5jOjYzMTpcdFx0bXQ3NngwMl9tYWNfZmlsbF90eF9zdGF0dXMoZGV2LCBtc3RhLCBzdGF0dXMuaW5mbywgc3RhdCwgMSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmMtNjMyLVx0XHQqdXBkYXRlID0gMTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAxMDoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzOTI3CgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIG10NzZ4MDJfbWFjLmMgRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIGBtdDc2eDAyX21hYy5jYCBkcml2ZXIuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gZmlndXJlIG91dCBpdHMgdXNhZ2UgLSB3aGljaCBoYXJkd2FyZSBwbGF0Zm9ybXMgYW5kIGFzc29jaWF0ZWQgZHJpdmVycyBhcmUgbGV2ZXJhZ2luZyB0aGlzIHBhcnRpY3VsYXIgTUFDIGxheWVyIG1vZHVsZS4gSSYjMzk7bSB0aGlua2luZyBvZiBxdWlja2x5IGlkZW50aWZ5aW5nIGFsbCB0aGUgY2FsbGluZyBkcml2ZXJzIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlIGFuZCBwb3RlbnRpYWwgaW1wYWN0IG9mIGFueSBjaGFuZ2VzIEkgbWlnaHQgbWFrZSwgb3IgaXNzdWVzIEkgbWlnaHQgZW5jb3VudGVyLiBJcyBpdCBqdXN0IGEgbmljaGUgY2FyZCBvciBpcyBpdCBzb21ldGhpbmcgbW9yZSB3aWRlbHkgdXNlZD8gSSBuZWVkIHRvIGJ1aWxkIGEgbWVudGFsIG1hcCBvZiB0aGUgZGVwZW5kZW5jeSB0cmVlLiBJJiMzOTtsbCBuZWVkIHRvIGtub3cgd2hpY2ggcGxhdGZvcm1zIGFyZSB1c2luZyB0aGlzIGFuZCB3aHkgdGhpcyBwYXJ0aWN1bGFyIGRyaXZlciB3YXMgdXNlZCBvdmVyIG90aGVycy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAxMDoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc2eDAyX3NlbmRfdHhfc3RhdHVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuYz00ODg9bXQ3NngwMl9tYWNfZmlsbF90eF9zdGF0dXMoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYsIHN0cnVjdCBtdDc2eDAyX3N0YSAqbXN0YSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmMtNTU0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5jOjU1NTp2b2lkIG10NzZ4MDJfc2VuZF90eF9zdGF0dXMoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmMtNTU2LVx0XHRcdCAgICBzdHJ1Y3QgbXQ3NngwMl90eF9zdGF0dXMgKnN0YXQsIHU4ICp1cGRhdGUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5jPTg5MT12b2lkIG10NzZ4MDJfbWFjX3BvbGxfdHhfc3RhdHVzKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2LCBib29sIGlycSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmMtOTEyLVx0XHRpZiAoIWlycSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5jOjkxMzpcdFx0XHRtdDc2eDAyX3NlbmRfdHhfc3RhdHVzKGRldiwgXHUwMDI2c3RhdCwgXHUwMDI2dXBkYXRlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuYy05MTQtXHRcdFx0Y29udGludWU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5oPTE4Mz1ib29sIG10NzZ4MDJfbWFjX2xvYWRfdHhfc3RhdHVzKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5oLTE4NC1cdFx0XHRcdHN0cnVjdCBtdDc2eDAyX3R4X3N0YXR1cyAqc3RhdCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmg6MTg1OnZvaWQgbXQ3NngwMl9zZW5kX3R4X3N0YXR1cyhzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuaC0xODYtXHRcdFx0ICAgIHN0cnVjdCBtdDc2eDAyX3R4X3N0YXR1cyAqc3RhdCwgdTggKnVwZGF0ZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21taW8uYz0xMzA9c3RhdGljIHZvaWQgbXQ3NngwMl9wcm9jZXNzX3R4X3N0YXR1c19maWZvKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tbWlvLmMtMTM1LVx0d2hpbGUgKGtmaWZvX2dldChcdTAwMjZkZXYtXHUwMDNldHhzdGF0dXNfZmlmbywgXHUwMDI2c3RhdCkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbW1pby5jOjEzNjpcdFx0bXQ3NngwMl9zZW5kX3R4X3N0YXR1cyhkZXYsIFx1MDAyNnN0YXQsIFx1MDAyNnVwZGF0ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbW1pby5jLTEzNy19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3R4cnguYz0xMjM9Ym9vbCBtdDc2eDAyX3R4X3N0YXR1c19kYXRhKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdTggKnVwZGF0ZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdHhyeC5jLTEzMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl90eHJ4LmM6MTMxOlx0bXQ3NngwMl9zZW5kX3R4X3N0YXR1cyhkZXYsIFx1MDAyNnN0YXQsIHVwZGF0ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdHhyeC5jLTEzMi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAxMDoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTA2CgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBNVDc2eDAyIFVTQiBEcml2ZXIgSW1wbGVtZW50YXRpb24qKgoKT2theSwgc28gdGhlIE1UNzZ4MDIgbGlicmFyeSBpcyBwcmV0dHkgdWJpcXVpdG91cyBmb3IgdGhhdCBkZXZpY2UgZmFtaWx5LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCBpZiB0aGVyZSYjMzk7cyBhIHdlbGwtZXN0YWJsaXNoZWQgVVNCIGRyaXZlciB0aGF0IGxldmVyYWdlcyB0aGlzLiBGaW5kaW5nIG9uZSB3b3VsZCBkZWZpbml0ZWx5IHN0cmVhbWxpbmUgbXkgY3VycmVudCBwcm9qZWN0LiBJdCYjMzk7cyBhIG5hdHVyYWwgcXVlc3Rpb24gdG8gcG9zZSB3aGVuIHdvcmtpbmcgd2l0aCB0aGVzZSB0eXBlcyBvZiBkZXZpY2VzOyB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgc3lzdGVtIGNvbXBvbmVudHMgaW50ZXJhY3QgaXMga2V5IHRvIGEgc29saWQgaW1wbGVtZW50YXRpb24uIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGluIGFuZCBzZWUgd2hhdCYjMzk7cyBvdXQgdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMTA6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3NngwMl91c2ImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZT0zMT1tdDc2eDAyLWxpYi15IDo9IG10NzZ4MDJfdXRpbC5vIG10NzZ4MDJfbWFjLm8gbXQ3NngwMl9tY3UubyBcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGUtMzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlOjM2Om10NzZ4MDItdXNiLXkgOj0gbXQ3NngwMl91c2JfbWN1Lm8gbXQ3NngwMl91c2JfY29yZS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlLTM3LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTExLSNpbmNsdWRlIFwmIzM0O21jdS5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzoxMjojaW5jbHVkZSBcJiMzNDsuLi9tdDc2eDAyX3VzYi5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0xMy1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2JfbWN1LmMtMTAtI2luY2x1ZGUgXCYjMzQ7bWN1LmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYl9tY3UuYzoxMTojaW5jbHVkZSBcJiMzNDsuLi9tdDc2eDAyX3VzYi5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2JfbWN1LmMtMTItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9jb3JlLmMtNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfY29yZS5jOjY6I2luY2x1ZGUgXCYjMzQ7bXQ3NngwMl91c2IuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9jb3JlLmMtNy1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX21jdS5jLTEwLSNpbmNsdWRlIFwmIzM0O210NzZ4MDJfbWN1LmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfbWN1LmM6MTE6I2luY2x1ZGUgXCYjMzQ7bXQ3NngwMl91c2IuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9tY3UuYy0xMi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2IuYy04LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvdXNiLmM6OTojaW5jbHVkZSBcJiMzNDsuLi9tdDc2eDAyX3VzYi5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2IuYy0xMC0jaW5jbHVkZSBcJiMzNDttdDc2eDJ1LmhcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2JfaW5pdC5jLTEwLSNpbmNsdWRlIFwmIzM0Oy4uL210NzZ4MDJfcGh5LmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3VzYl9pbml0LmM6MTE6I2luY2x1ZGUgXCYjMzQ7Li4vbXQ3NngwMl91c2IuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvdXNiX2luaXQuYy0xMi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2JfbWFpbi5jLTYtI2luY2x1ZGUgXCYjMzQ7bXQ3NngydS5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2JfbWFpbi5jOjc6I2luY2x1ZGUgXCYjMzQ7Li4vbXQ3NngwMl91c2IuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvdXNiX21haW4uYy04LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3VzYl9tY3UuYy05LSNpbmNsdWRlIFwmIzM0O2VlcHJvbS5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2JfbWN1LmM6MTA6I2luY2x1ZGUgXCYjMzQ7Li4vbXQ3NngwMl91c2IuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvdXNiX21jdS5jLTExLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDEwOjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYzMTgKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiAxNjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgTVQ3NngwMiBEcml2ZXI6IEEgUHJvbWlzaW5nIFRhcmdldCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlIGBtdDc2eDAyYCBkcml2ZXIsIGFuZCBpdCYjMzk7cyBjbGVhciB0aGF0IGl0JiMzOTtzIGxldmVyYWdlZCBieSBgbXQ3NngwdWAgYW5kIGBtdDc2eDJ1YCwgYm90aCBVU0IgZHJpdmVycy4gVGhhdCYjMzk7cyBnb29kIG5ld3M7IFVTQiBkcml2ZXJzIGFyZSBhY2Nlc3NpYmxlIGZvciBmdXp6aW5nIHZpYSBzeXprYWxsZXImIzM5O3MgVVNCIGZ1enppbmcgY2FwYWJpbGl0aWVzIHVzaW5nIGBkdW1teV9oY2RgIG9yIGB2aGNpYC4gVGhpcyBtZWFucyB0aGUgY29kZSAqaXMqIHJlYWNoYWJsZSBhbmQgbGlrZWx5IHdvcnRoIHRoZSBlZmZvcnQuCgpNeSBpbml0aWFsIGZvY3VzIGlzIG9uIHRoZSBgbXQ3NngwMl9tYWNfZmlsbF90eF9zdGF0dXNgIGZ1bmN0aW9uLiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIGNhbGxlZCB3aXRoaW4gYG10NzZ4MDJfc2VuZF90eF9zdGF0dXNgLCB3aGljaCwgaW4gdHVybiwgaXMgY2FsbGVkIGZyb20gZWl0aGVyIGBtdDc2eDAyX3R4X3N0YXR1c19kYXRhYCBvciBgbXQ3NngwMl9wcm9jZXNzX3R4X3N0YXR1c19maWZvYC4gTm93LCB0aGUgY3J1Y2lhbCBzdGVwIGlzIHRvIHRyYWNlIGJhY2sgdG8gd2hlcmUgYG10NzZ4MDJfdHhfc3RhdHVzX2RhdGFgIGlzIGFjdHVhbGx5IGludm9rZWQuIFRoYXQmIzM5O3Mgd2hlcmUgSSBuZWVkIHRvIGZvY3VzIG15IGFuYWx5c2lzIHRvIHVuZGVyc3RhbmQgaG93IHRvIGdldCB0byB0aGUgY29yZSBmdW5jdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMTA6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3NngwMl90eF9zdGF0dXNfZGF0YSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYz0yMTM9c3RhdGljIGludCBtdDc2eDB1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50Zixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0yMjMtXHRcdC50eF9jb21wbGV0ZV9za2IgPSBtdDc2eDAydV90eF9jb21wbGV0ZV9za2IsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzoyMjQ6XHRcdC50eF9zdGF0dXNfZGF0YSA9IG10NzZ4MDJfdHhfc3RhdHVzX2RhdGEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0yMjUtXHRcdC5yeF9za2IgPSBtdDc2eDAyX3F1ZXVlX3J4X3NrYixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDIuaD0xODg9dm9pZCBtdDc2eDAyX3JlbW92ZV9oZHJfcGFkKHN0cnVjdCBza19idWZmICpza2IsIGludCBsZW4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyLmg6MTg5OmJvb2wgbXQ3NngwMl90eF9zdGF0dXNfZGF0YShzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHU4ICp1cGRhdGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyLmgtMTkwLXZvaWQgbXQ3NngwMl9xdWV1ZV9yeF9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LCBlbnVtIG10NzZfcnhxX2lkIHEsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3R4cnguYz0xMjE9RVhQT1JUX1NZTUJPTF9HUEwobXQ3NngwMl90eF9zZXRfdHhwd3JfYXV0byk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdHhyeC5jLTEyMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl90eHJ4LmM6MTIzOmJvb2wgbXQ3NngwMl90eF9zdGF0dXNfZGF0YShzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHU4ICp1cGRhdGUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdHhyeC5jLTEyNC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3R4cnguYy0xMzQtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3R4cnguYzoxMzU6RVhQT1JUX1NZTUJPTF9HUEwobXQ3NngwMl90eF9zdGF0dXNfZGF0YSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdHhyeC5jLTEzNi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2IuYz0zMj1zdGF0aWMgaW50IG10NzZ4MnVfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvdXNiLmMtNDItXHRcdC50eF9jb21wbGV0ZV9za2IgPSBtdDc2eDAydV90eF9jb21wbGV0ZV9za2IsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2IuYzo0MzpcdFx0LnR4X3N0YXR1c19kYXRhID0gbXQ3NngwMl90eF9zdGF0dXNfZGF0YSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3VzYi5jLTQ0LVx0XHQucnhfc2tiID0gbXQ3NngwMl9xdWV1ZV9yeF9za2IsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDEwOjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc2MzEKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiA1MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSYjMzk7bSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIE1UNzZ4MDIgVFggU3RhdHVzIEZ1bmN0aW9uKioKCk9rYXksIHNvIEkgc2VlIHRoaXMgYG10NzZ4MDJfdHhfc3RhdHVzX2RhdGFgIGZ1bmN0aW9uLiBUaGF0IG5hbWUgcmluZ3MgYSBiZWxsOyBpdCYjMzk7cyB0aGUgYC50eF9zdGF0dXNfZGF0YWAgY2FsbGJhY2sgd2l0aGluIGBtdDc2X2RyaXZlcl9vcHNgLCByaWdodD8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUgYmV0dGVyLiBNeSBmaXJzdCBzdGVwIGlzIHRvIGZpZ3VyZSBvdXQgdGhlIGNhbGxpbmcgY29udGV4dCDigJMgd2hlcmUgaXMgdGhhdCBjYWxsYmFjayBhY3R1YWxseSAqdXNlZCo/IFRpbWUgdG8gdHJhY2UgaXRzIGludm9jYXRpb24gcG9pbnRzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgbG9naWMgZmxvdyBoZXJlLiBJJiMzOTtsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhhdCBgLnR4X3N0YXR1c19kYXRhYCBmaWVsZCB3aXRoaW4gYG10NzZfZHJpdmVyX29wc2AgaXMgYWN0dWFsbHkgKmNhbGxlZCouIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgZHJpdmVyIHByb2Nlc3NlcyB0cmFuc21pdCBzdGF0dXMgaW5mb3JtYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDEwOjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3R4X3N0YXR1c19kYXRhJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTU0Mz1zdHJ1Y3QgbXQ3Nl9kcml2ZXJfb3BzIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC01NjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDo1NjI6XHRib29sICgqdHhfc3RhdHVzX2RhdGEpKHN0cnVjdCBtdDc2X2RldiAqZGV2LCB1OCAqdXBkYXRlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTU2My1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tdDc2MTUuaD01NDM9aW50IG10NzY2M191c2Jfc2Rpb190eF9wcmVwYXJlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKnR4d2lfcHRyLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L210NzYxNS5oLTU0Ni1cdFx0XHRcdCAgIHN0cnVjdCBtdDc2X3R4X2luZm8gKnR4X2luZm8pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbXQ3NjE1Lmg6NTQ3OmJvb2wgbXQ3NjYzX3VzYl9zZGlvX3R4X3N0YXR1c19kYXRhKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdTggKnVwZGF0ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tdDc2MTUuaC01NDgtdm9pZCBtdDc2NjNfdXNiX3NkaW9fdHhfY29tcGxldGVfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9zZGlvLmM9NzY9c3RhdGljIGludCBtdDc2NjNzX3Byb2JlKHN0cnVjdCBzZGlvX2Z1bmMgKmZ1bmMsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvc2Rpby5jLTgzLVx0XHQudHhfY29tcGxldGVfc2tiID0gbXQ3NjYzX3VzYl9zZGlvX3R4X2NvbXBsZXRlX3NrYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3NkaW8uYzo4NDpcdFx0LnR4X3N0YXR1c19kYXRhID0gbXQ3NjYzX3VzYl9zZGlvX3R4X3N0YXR1c19kYXRhLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvc2Rpby5jLTg1LVx0XHQucnhfc2tiID0gbXQ3NjE1X3F1ZXVlX3J4X3NrYixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYz0xMTI9c3RhdGljIGludCBtdDc2NjN1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50Zixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0xMTktXHRcdC50eF9jb21wbGV0ZV9za2IgPSBtdDc2NjNfdXNiX3NkaW9fdHhfY29tcGxldGVfc2tiLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmM6MTIwOlx0XHQudHhfc3RhdHVzX2RhdGEgPSBtdDc2NjNfdXNiX3NkaW9fdHhfc3RhdHVzX2RhdGEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0xMjEtXHRcdC5yeF9za2IgPSBtdDc2MTVfcXVldWVfcnhfc2tiLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmM9MTMxPXN0YXRpYyB2b2lkIG10NzY2M191c2Jfc2Rpb19yYXRlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmMtMTU1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYzoxNTY6Ym9vbCBtdDc2NjNfdXNiX3NkaW9fdHhfc3RhdHVzX2RhdGEoc3RydWN0IG10NzZfZGV2ICptZGV2LCB1OCAqdXBkYXRlKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0xNTcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmMtMTY1LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmM6MTY2OkVYUE9SVF9TWU1CT0xfR1BMKG10NzY2M191c2Jfc2Rpb190eF9zdGF0dXNfZGF0YSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTE2Ny1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYz0yMTM9c3RhdGljIGludCBtdDc2eDB1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50Zixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0yMjMtXHRcdC50eF9jb21wbGV0ZV9za2IgPSBtdDc2eDAydV90eF9jb21wbGV0ZV9za2IsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzoyMjQ6XHRcdC50eF9zdGF0dXNfZGF0YSA9IG10NzZ4MDJfdHhfc3RhdHVzX2RhdGEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0yMjUtXHRcdC5yeF9za2IgPSBtdDc2eDAyX3F1ZXVlX3J4X3NrYixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDIuaD0xODg9dm9pZCBtdDc2eDAyX3JlbW92ZV9oZHJfcGFkKHN0cnVjdCBza19idWZmICpza2IsIGludCBsZW4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyLmg6MTg5OmJvb2wgbXQ3NngwMl90eF9zdGF0dXNfZGF0YShzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHU4ICp1cGRhdGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyLmgtMTkwLXZvaWQgbXQ3NngwMl9xdWV1ZV9yeF9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LCBlbnVtIG10NzZfcnhxX2lkIHEsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3R4cnguYz0xMjE9RVhQT1JUX1NZTUJPTF9HUEwobXQ3NngwMl90eF9zZXRfdHhwd3JfYXV0byk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdHhyeC5jLTEyMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl90eHJ4LmM6MTIzOmJvb2wgbXQ3NngwMl90eF9zdGF0dXNfZGF0YShzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHU4ICp1cGRhdGUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdHhyeC5jLTEyNC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3R4cnguYy0xMzQtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3R4cnguYzoxMzU6RVhQT1JUX1NZTUJPTF9HUEwobXQ3NngwMl90eF9zdGF0dXNfZGF0YSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdHhyeC5jLTEzNi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2IuYz0zMj1zdGF0aWMgaW50IG10NzZ4MnVfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvdXNiLmMtNDItXHRcdC50eF9jb21wbGV0ZV9za2IgPSBtdDc2eDAydV90eF9jb21wbGV0ZV9za2IsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2IuYzo0MzpcdFx0LnR4X3N0YXR1c19kYXRhID0gbXQ3NngwMl90eF9zdGF0dXNfZGF0YSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3VzYi5jLTQ0LVx0XHQucnhfc2tiID0gbXQ3NngwMl9xdWV1ZV9yeF9za2IsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM9ODQwPUVYUE9SVF9TWU1CT0xfR1BMKG10NzkyMV91c2Jfc2Rpb190eF9jb21wbGV0ZV9za2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtODQxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6ODQyOmJvb2wgbXQ3OTIxX3VzYl9zZGlvX3R4X3N0YXR1c19kYXRhKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdTggKnVwZGF0ZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTg0My17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtODUxLX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjg1MjpFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjFfdXNiX3NkaW9fdHhfc3RhdHVzX2RhdGEpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtODUzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL210NzkyMS5oPTMzMj12b2lkIG10NzkyMV91c2Jfc2Rpb190eF9jb21wbGV0ZV9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbXQ3OTIxLmgtMzMzLVx0XHRcdFx0ICAgICBzdHJ1Y3QgbXQ3Nl9xdWV1ZV9lbnRyeSAqZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tdDc5MjEuaDozMzQ6Ym9vbCBtdDc5MjFfdXNiX3NkaW9fdHhfc3RhdHVzX2RhdGEoc3RydWN0IG10NzZfZGV2ICptZGV2LCB1OCAqdXBkYXRlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL210NzkyMS5oLTMzNS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvLmM9OTA9c3RhdGljIGludCBtdDc5MjFzX3Byb2JlKHN0cnVjdCBzZGlvX2Z1bmMgKmZ1bmMsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpby5jLTEwMC1cdFx0LnR4X2NvbXBsZXRlX3NrYiA9IG10NzkyMV91c2Jfc2Rpb190eF9jb21wbGV0ZV9za2IsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvLmM6MTAxOlx0XHQudHhfc3RhdHVzX2RhdGEgPSBtdDc5MjFfdXNiX3NkaW9fdHhfc3RhdHVzX2RhdGEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvLmMtMTAyLVx0XHQucnhfc2tiID0gbXQ3OTIxX3F1ZXVlX3J4X3NrYixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYz0xNTA9c3RhdGljIGludCBtdDc5MjF1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50Zixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0xNjEtXHRcdC50eF9jb21wbGV0ZV9za2IgPSBtdDc5MjFfdXNiX3NkaW9fdHhfY29tcGxldGVfc2tiLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM6MTYyOlx0XHQudHhfc3RhdHVzX2RhdGEgPSBtdDc5MjFfdXNiX3NkaW9fdHhfc3RhdHVzX2RhdGEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0xNjMtXHRcdC5yeF9za2IgPSBtdDc5MjFfcXVldWVfcnhfc2tiLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jPTE0ODI9RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTI1X3VzYl9zZGlvX3R4X2NvbXBsZXRlX3NrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNDgzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTQ4NDpib29sIG10NzkyNV91c2Jfc2Rpb190eF9zdGF0dXNfZGF0YShzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHU4ICp1cGRhdGUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNDg1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNDkzLX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjE0OTQ6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTI1X3VzYl9zZGlvX3R4X3N0YXR1c19kYXRhKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0OTUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1Lmg9MzY2PXZvaWQgbXQ3OTI1X3VzYl9zZGlvX3R4X2NvbXBsZXRlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaC0zNjctXHRcdFx0XHQgICAgIHN0cnVjdCBtdDc2X3F1ZXVlX2VudHJ5ICplKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oOjM2ODpib29sIG10NzkyNV91c2Jfc2Rpb190eF9zdGF0dXNfZGF0YShzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHU4ICp1cGRhdGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmgtMzY5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jPTE0Mz1zdGF0aWMgaW50IG10NzkyNXVfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVzYl9pbnRmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTE1NC1cdFx0LnR4X2NvbXBsZXRlX3NrYiA9IG10NzkyNV91c2Jfc2Rpb190eF9jb21wbGV0ZV9za2IsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzoxNTU6XHRcdC50eF9zdGF0dXNfZGF0YSA9IG10NzkyNV91c2Jfc2Rpb190eF9zdGF0dXNfZGF0YSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTE1Ni1cdFx0LnJ4X3NrYiA9IG10NzkyNV9xdWV1ZV9yeF9za2IsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9zZGlvLmM9NDYxPXN0YXRpYyB2b2lkIG10NzZzX3N0YXR1c193b3JrZXIoc3RydWN0IG10NzZfd29ya2VyICp3KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvc2Rpby5jLTQ4MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvc2Rpby5jOjQ4MTpcdFx0aWYgKGRldi1cdTAwM2VkcnYtXHUwMDNldHhfc3RhdHVzX2RhdGEgXHUwMDI2XHUwMDI2IG5kYXRhX2ZyYW1lcyBcdTAwM2UgMCBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvc2Rpby5jLTQ4Mi1cdFx0ICAgICF0ZXN0X2FuZF9zZXRfYml0KE1UNzZfUkVBRElOR19TVEFUUywgXHUwMDI2ZGV2LVx1MDAzZXBoeS5zdGF0ZSkgXHUwMDI2XHUwMDI2XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9zZGlvLmMtNDkwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9zZGlvLmM6NDkxOnN0YXRpYyB2b2lkIG10NzZzX3R4X3N0YXR1c19kYXRhKHN0cnVjdCBtdDc2X3dvcmtlciAqd29ya2VyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9zZGlvLmMtNDkyLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3NkaW8uYy01MDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3NkaW8uYzo1MDY6XHRcdGlmICghZGV2LVx1MDAzZWRydi1cdTAwM2V0eF9zdGF0dXNfZGF0YShkZXYsIFx1MDAyNnVwZGF0ZSkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3NkaW8uYy01MDctXHRcdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9zZGlvLmM9NjM1PWludCBtdDc2c19pbml0KHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3Qgc2Rpb19mdW5jICpmdW5jLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvc2Rpby5jLTY1MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvc2Rpby5jOjY1MjpcdGVyciA9IG10NzZfd29ya2VyX3NldHVwKGRldi1cdTAwM2VodywgXHUwMDI2c2Rpby1cdTAwM2VzdGF0X3dvcmtlciwgbXQ3NnNfdHhfc3RhdHVzX2RhdGEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3NkaW8uYy02NTMtXHRcdFx0XHRcJiMzNDtzZGlvLXN0YVwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni91c2IuYz03NTk9c3RhdGljIHZvaWQgbXQ3NnVfc3RhdHVzX3dvcmtlcihzdHJ1Y3QgbXQ3Nl93b3JrZXIgKncpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni91c2IuYy03OTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3VzYi5jOjc5MTpcdGlmIChkZXYtXHUwMDNlZHJ2LVx1MDAzZXR4X3N0YXR1c19kYXRhIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni91c2IuYy03OTItXHQgICAgIXRlc3RfYW5kX3NldF9iaXQoTVQ3Nl9SRUFESU5HX1NUQVRTLCBcdTAwMjZkZXYtXHUwMDNlcGh5LnN0YXRlKSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3VzYi5jLTc5NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdXNiLmM6Nzk2OnN0YXRpYyB2b2lkIG10NzZ1X3R4X3N0YXR1c19kYXRhKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdXNiLmMtNzk3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3VzYi5jLTgwOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdXNiLmM6ODEwOlx0XHRpZiAoIWRldi1cdTAwM2VkcnYtXHUwMDNldHhfc3RhdHVzX2RhdGEoZGV2LCBcdTAwMjZ1cGRhdGUpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni91c2IuYy04MTEtXHRcdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni91c2IuYz0xMDc2PWludCBfX210NzZ1X2luaXQoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdXNiLmMtMTA4Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdXNiLmM6MTA4MzpcdElOSVRfV09SSyhcdTAwMjZ1c2ItXHUwMDNlc3RhdF93b3JrLCBtdDc2dV90eF9zdGF0dXNfZGF0YSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3VzYi5jLTEwODQtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDEwOjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyNDM4CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogMTE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBEcml2ZXIgQ29uZmlndXJhdGlvbiBmb3IgTVQ3NngwMiBGdW5jdGlvbmFsaXR5KioKCk9rYXksIHNvIEkmIzM5O20gc2VlaW5nIHRoYXQgYG10NzZ4MDJfdHhfc3RhdHVzX2RhdGFgIGdldHMgdXRpbGl6ZWQgaW4gYm90aCBgbXQ3NngwdV9wcm9iZWAgYW5kIGBtdDc2eDJ1X3Byb2JlYC4gVGhhdCBzdWdnZXN0cyBzb21lIHNoYXJlZCBkYXRhIHN0cnVjdHVyZSBvciBmdW5jdGlvbiByZWxhdGVkIHRvIHRyYW5zbWl0IHN0YXR1cyBpcyBiZWluZyB1c2VkIGFjcm9zcyB0aGVzZSBzbGlnaHRseSBkaWZmZXJlbnQgTWVkaWF0ZWsgVVNCIHdpcmVsZXNzIGRldmljZSB2YXJpYW50cy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGxldCYjMzk7cyBuYWlsIGRvd24gcHJlY2lzZWx5IHdoaWNoIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBnb3Zlcm4gdGhlIGluY2x1c2lvbiBvZiB0aGVzZSBwcm9iZSBmdW5jdGlvbnMuIFRoZSBjb2RlIGluZGljYXRlcyB0aGF0IHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGBDT05GSUdfTVQ3NngwVWAgYW5kIGBDT05GSUdfTVQ3NngyVWAuIFJpZ2h0LCB0aGF0IG1ha2VzIHNlbnNlLiBOb3cgSSBuZWVkIHRvIHF1aWNrbHkgY29uZmlybSB0aGlzIGluIHRoZSByZWxldmFudCBLY29uZmlnIGZpbGVzLiBUaW1lIHRvIGNoZWNrIHRob3NlLCBzcGVjaWZpY2FsbHksIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnYCBhbmQgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL0tjb25maWdgIHRvIHNlZSB0aGUgY29uZGl0aW9ucyB1bmRlciB3aGljaCB0aG9zZSBjb25maWcgc3ltYm9scyBhcmUgYWN0dWFsbHkgZGVmaW5lZCBhbmQgaG93IHRoZXkgcmVsYXRlIHRvIHRoZSBicm9hZGVyIGRyaXZlciBjb25maWd1cmF0aW9uLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGVzZSBkcml2ZXIgY29tcG9uZW50cyBpbnRlZ3JhdGUgaW50byB0aGUgb3ZlcmFsbCBNVDc2IGZyYW1ld29yay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMTA6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1UNzZ4MFUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZz0yPWNvbmZpZyBNVDc2eDBfQ09NTU9OXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZy01LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZzo2OmNvbmZpZyBNVDc2eDBVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnLTctXHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc2eDBVIChVU0IpIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMTA6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI5ODQKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiA3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqRGVwZW5kZW5jeSBDaGVjazogQSBOZWNlc3NhcnkgRXZpbCAoQnV0IGEgVml0YWwgT25lKSoqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gdGFrZSBhIGhhcmQgbG9vayBhdCB0aG9zZSBkZXBlbmRlbmNpZXMuIEl0JiMzOTtzIGEgZnVuZGFtZW50YWwgc3RlcCwgcmVhbGx5LiBJIGtub3cgSSBrbm93IHRoZSBjb2RlIHByZXR0eSB3ZWxsLCBidXQgY29tcGxhY2VuY3kgaXMgYSBkYW5nZXJvdXMgZ2FtZSB3aGVuIHlvdSYjMzk7cmUgZGVhbGluZyB3aXRoIGV4dGVybmFsIGxpYnJhcmllcyBhbmQgZnJhbWV3b3Jrcy4gSXQmIzM5O3MgdG9vIGVhc3kgdG8gYXNzdW1lIGV2ZXJ5dGhpbmcmIzM5O3Mga29zaGVyLCB0aGF0IHRoZSB2ZXJzaW9ucyBhcmUgY29tcGF0aWJsZSwgYW5kIHRoYXQgdGhlIHRyYW5zaXRpdmUgZGVwZW5kZW5jaWVzIGFyZSBhbGwgcGxheWluZyBuaWNlbHkuCgpMZXQmIzM5O3Mgc3RhcnQgYnkgbWFwcGluZyB0aGVtIG91dC4uLiBJJiMzOTtsbCBuZWVkIHRvIGdvIHRocm91Z2ggdGhlIHByb2plY3Qgc3RydWN0dXJlLCBsb29rIGF0IHRoZSBwYWNrYWdlIG1hbmFnZXJzLCBkaWcgaW50byB0aGUgYnVpbGQgY29uZmlndXJhdGlvbnMuLi4gSSBuZWVkIGEgY2xlYXIgcGljdHVyZS4gSXMgdGhlcmUgYW55dGhpbmcgdGhhdCBzZWVtcyBvdXQgb2YgcGxhY2U/IElzIHRoZXJlIGEga25vd24gdnVsbmVyYWJpbGl0eSBpbiB0aGUgdmVyc2lvbiBJJiMzOTttIHVzaW5nIHRoYXQgSSYjMzk7ZCBuZWVkIHRvIGNvbnNpZGVyPyBBcmUgdGhlcmUgYW55IG9idmlvdXMgY29uZmxpY3RzIHdhaXRpbmcgdG8gYml0ZSBtZSBsYXRlciBkb3duIHRoZSBsaW5lPyBJIG5lZWQgdG8gY2hlY2sgZm9yIGFueSBkZXByZWNhdGVkIHZlcnNpb25zLgoKVGhpcyBpc27igJl0IGp1c3QgYWJvdXQgbWFraW5nIHN1cmUgZXZlcnl0aGluZyAqd29ya3MqIGF0IHRoZSBtb21lbnQ7IGl0JiMzOTtzIGFib3V0IHN0YWJpbGl0eSBhbmQgbWFpbnRhaW5hYmlsaXR5IGluIHRoZSBsb25nIHJ1bi4gSWYgSSBjYW4mIzM5O3QgZ3VhcmFudGVlIGNvbXBhdGliaWxpdHksIHRoZW4gSSBoYXZlIHRvIGxvY2sgZG93biB2ZXJzaW9ucy4gSWYgSSBzZWUgY29uZmxpY3RpbmcgZGVwZW5kZW5jaWVzLCBJIG5lZWQgdG8gZ2V0IHJpZCBvZiB0aGVtLiBJdCYjMzk7cyByZWFsbHkgYWJvdXQgYmVpbmcgcHJvYWN0aXZlIHJhdGhlciB0aGFuIHJlYWN0aXZlLgoKQW5kIGxldCYjMzk7cyBiZSBob25lc3QsIGRlcGVuZGVuY3kgaGVsbCBpcyB0aGUgYmFuZSBvZiBteSBleGlzdGVuY2UsIGFuZCBpdCBvbmx5IGdldHMgd29yc2UgdGhlIGJpZ2dlciB0aGUgcHJvamVjdCBnZXRzLiBCZXR0ZXIgdG8gYWRkcmVzcyBhbnkgaXNzdWVzIG5vdywgYmVmb3JlIHRoZXkgYmVjb21lIGEgbWFzc2l2ZSBoZWFkYWNoZSwgb3Igd29yc2UsIGNhdXNlIHVuZm9yZXNlZW4gcHJvYmxlbXMgZHVyaW5nIGRlcGxveW1lbnQuCgpTbywgbGV0JiMzOTtzIGRpdmUgaW4uIExldCYjMzk7cyBtYWtlIHN1cmUgdGhpbmdzIGFyZSBsb2NrZWQgZG93biBhbmQgd2VsbC1kb2N1bWVudGVkLiBPdGhlcndpc2UsIGl0JiMzOTtzIGp1c3QgYSB0aW1lIGJvbWIgd2FpdGluZyB0byBleHBsb2RlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAxMDoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgTVQ3NngwX0NPTU1PTlxuICAgMzpcdFx0dHJpc3RhdGVcbiAgIDQ6XHRcdHNlbGVjdCBNVDc2eDAyX0xJQlxuICAgNTpcdFxuICAgNjpcdGNvbmZpZyBNVDc2eDBVXG4gICA3Olx0XHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc2eDBVIChVU0IpIHN1cHBvcnRcJiMzNDtcbiAgIDg6XHRcdHNlbGVjdCBNVDc2eDBfQ09NTU9OXG4gICA5Olx0XHRzZWxlY3QgTVQ3NngwMl9VU0JcbiAgMTA6XHRcdGRlcGVuZHMgb24gTUFDODAyMTFcbiAgMTE6XHRcdGRlcGVuZHMgb24gVVNCXG4gIDEyOlx0XHRoZWxwXG4gIDEzOlx0XHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBNVDc2MTBVLWJhc2VkIFVTQiAyLjAgd2lyZWxlc3MgZG9uZ2xlcyxcbiAgMTQ6XHRcdCAgd2hpY2ggY29tcGx5IHdpdGggSUVFRSA4MDIuMTFhYyBzdGFuZGFyZHMgYW5kIHN1cHBvcnQgMXgxXG4gIDE1Olx0XHQgIDQzM01icHMgUEhZIHJhdGUuXG4gIDE2Olx0XG4gIDE3Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXG4gIDE4Olx0XG4gIDE5Olx0Y29uZmlnIE1UNzZ4MEVcbiAgMjA6XHRcdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzZ4MEUgKFBDSWUpIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMTA6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM3MTMKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiA5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqTXkgRGVlcCBEaXZlIGludG8gdGhlIE1UNzZ4MlUqKgoKQWxyaWdodCwgbGV0JiMzOTtzIHRhbGsgYWJvdXQgdGhlIE1UNzZ4MlUuIE15IGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIHJldm9sdmVzIGFyb3VuZCBpdHMgY29yZSBmdW5jdGlvbiDigJMgYSBjb21tb24gVVNCIFdpRmkgY2hpcHNldCwgcmlnaHQ/IEJ1dCB0aGUgcmVhbCBxdWVzdGlvbnMgYXJlOiBIb3cgKndlbGwqIGRvZXMgaXQgcGVyZm9ybSBpbiBzcGVjaWZpYyBhcHBsaWNhdGlvbnM/IFdoZXJlIGFyZSBpdHMgbGltaXRhdGlvbnM/IFRoaW5raW5nIGJhY2ssIEkmIzM5O3ZlIHNlZW4gaXQgcG9wIHVwIGluIGEgdG9uIG9mIGRpZmZlcmVudCBwcm9kdWN0cyBvdmVyIHRoZSB5ZWFycywgZnJvbSBiYXNpYyBkb25nbGVzIHRvIG1vcmUgaW50ZWdyYXRlZCBlbWJlZGRlZCBzeXN0ZW1zLgoKTXkgZmlyc3QgY29uc2lkZXJhdGlvbiBpcyBhbHdheXMgdGhlIGRyaXZlciBzaXR1YXRpb24uIEFyZSB3ZSBkZWFsaW5nIHdpdGggc3RhYmxlLCB3ZWxsLW1haW50YWluZWQgb3Blbi1zb3VyY2UgZHJpdmVycywgb3IgcHJvcHJpZXRhcnkgYmxvYnMgdGhhdCByZXF1aXJlIGEgbG90IG9mIHR3ZWFraW5nPyBUaGUgTVQ3NngyVSBoYXMgZGVjZW50IGNvbW11bml0eSBzdXBwb3J0LCBidXQgdGhlIHNwZWNpZmljcyBhcmUgZ29pbmcgdG8gYmUgY3J1Y2lhbC4gSSBpbW1lZGlhdGVseSBzdGFydCBtZW50YWxseSBjYXRhbG9naW5nIHBvdGVudGlhbCBpc3N1ZXM6IGtlcm5lbCB2ZXJzaW9uIGNvbXBhdGliaWxpdHksIHRoZSBuZWVkIGZvciBmaXJtd2FyZSBsb2FkaW5nLCBhbmQgYW55IGdvdGNoYXMgcmVsYXRlZCB0byBzcGVjaWZpYyBMaW51eCBkaXN0cmlidXRpb25zIG9yIGV2ZW4gV2luZG93cyB2ZXJzaW9ucy4gQXJlIHRoZXJlIGFueSBrbm93biBpc3N1ZXMgd2l0aCB0aGluZ3MgbGlrZSBwb3dlciBtYW5hZ2VtZW50IHRoYXQgY2F1c2UgaW50ZXJtaXR0ZW50IGRpc2Nvbm5lY3Rpb25zIG9yIHBlcmZvcm1hbmNlIHRocm90dGxpbmc/IEFyZSB0aGVyZSBhbHRlcm5hdGl2ZSBmaXJtd2FyZSBvcHRpb25zIHRvIHRlc3QgaWYgdGhlIHN0b2NrIG9uZSBpcyBub3Qgc3VmZmljaWVudD8gSSB0aGluayBhYm91dCBwb3RlbnRpYWwgcGFja2V0IGluamVjdGlvbiBvciBtb25pdG9yIG1vZGUgY2FwYWJpbGl0aWVzLCBlc3BlY2lhbGx5IGlmIHRoaXMgaXMgaW4gYSBzZWN1cml0eSBvciBuZXR3b3JrIHRlc3RpbmcgY29udGV4dC4KCk5leHQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBhcmNoaXRlY3R1cmFsIG51YW5jZXMuIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIE1BQy9QSFkgZGVzaWduLiBXaGF0IGtpbmQgb2YgTUlNTyBjb25maWd1cmF0aW9uIGRvZXMgaXQgc3VwcG9ydD8gSXMgaXQgYSB0cnVlIDJ4Miwgb3IgaXMgdGhlcmUgc29tZSBvdGhlciBjb21wcm9taXNlIGluIHRoZSBkZXNpZ24/IFRoZSBkYXRhIHNoZWV0IGJlY29tZXMgaW1wb3J0YW50LiBMb29raW5nIGZvciB0aGluZ3MgbGlrZSBzdXBwb3J0ZWQgbW9kdWxhdGlvbiBzY2hlbWVzIChNQ1MgcmF0ZXMpLCB0cmFuc21pdCBwb3dlciwgYW5kIHJlY2VpdmUgc2Vuc2l0aXZpdHkuIEkmIzM5O20gYWxzbyBjb25zaWRlcmluZyB0aGUgaW1wbGljYXRpb25zIG9mIHRoZSBVU0IgMi4wIGludGVyZmFjZS4gSXMgaXQgc3VmZmljaWVudCB0byBhdm9pZCBiZWNvbWluZyBhIGJvdHRsZW5lY2ssIG9yIGFyZSB3ZSBnb2luZyB0byBiZSBsaW1pdGVkIGJ5IFVTQiB0aHJvdWdocHV0IGluIGhpZ2gtYmFuZHdpZHRoIHNjZW5hcmlvcyBsaWtlIDgwMi4xMWFjPwoKRmluYWxseSwgbGV04oCZcyBjb25zaWRlciBzb21lIHVzZSBjYXNlcy4gSSBpbWFnaW5lIGEgcXVpY2sgcnVuZG93biBvbiB3aGljaCBvZiB0aGUgY29tbW9uIHNjZW5hcmlvcyB0aGlzIGNoaXBzZXQgbWF5IGJlIHN1aXRhYmxlIGZvci4gSSYjMzk7ZCBldmFsdWF0ZSBpdCYjMzk7cyBzdWl0YWJpbGl0eSBmb3IgcmFuZ2UgZXh0ZW5zaW9uLCBlbWJlZGRlZCBzeXN0ZW0gbmV0d29yayBjb25uZWN0aXZpdHksIG9yIGV2ZW4gYXMgYSBiYXNpcyBmb3IgYSBjdXN0b20gd2lyZWxlc3Mgc29sdXRpb24uIFdoYXQgYWJvdXQgdGhlIHBvd2VyIGNvbnN1bXB0aW9uPyBJZiBpdOKAmXMgZm9yIGEgYmF0dGVyeS1wb3dlcmVkIGRldmljZSwgSSB3YW50IHRvIGtub3cgaXRzIHBvd2VyIGRyYXcuIFJlbGlhYmlsaXR5IGlzIGFub3RoZXIga2V5IGZhY3Rvci4gSXMgdGhpcyBhIGNoaXBzZXQgSSBjYW4gdHJ1c3QgdG8gcnVuIDI0Lzcgd2l0aG91dCBpc3N1ZXMsIG9yIGFtIEkgZ29pbmcgdG8gYmUgZGVhbGluZyB3aXRoIGZyZXF1ZW50IGRyb3BvdXRzIG9yIGluc3RhYmlsaXR5PyBJIGFsc28gaGF2ZSB0byBjb25zaWRlciB0aGUgcmVndWxhdG9yeSBpbXBsaWNhdGlvbnMg4oCTIEZDQywgQ0UsIGV0Yy4g4oCTIGFuZCBob3cgdGhlIGRyaXZlci9maXJtd2FyZSBoYW5kbGVzIHJlZ2lvbiBjb2RlcyBhbmQgY2hhbm5lbCBzZWxlY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDEwOjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxuICAgMjpcdGNvbmZpZyBNVDc2eDJfQ09NTU9OXG4gICAzOlx0XHR0cmlzdGF0ZVxuICAgNDpcdFx0c2VsZWN0IE1UNzZ4MDJfTElCXG4gICA1Olx0XG4gICA2Olx0Y29uZmlnIE1UNzZ4MkVcbiAgIDc6XHRcdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzZ4MkUgKFBDSWUpIHN1cHBvcnRcJiMzNDtcbiAgIDg6XHRcdHNlbGVjdCBNVDc2eDJfQ09NTU9OXG4gICA5Olx0XHRkZXBlbmRzIG9uIE1BQzgwMjExXG4gIDEwOlx0XHRkZXBlbmRzIG9uIFBDSVxuICAxMTpcdFx0aGVscFxuICAxMjpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3NjEyL01UNzYwMi9NVDc2NjItYmFzZWQgUENJZSB3aXJlbGVzc1xuICAxMzpcdFx0ICBkZXZpY2VzLCB3aGljaCBjb21wbHkgd2l0aCBJRUVFIDgwMi4xMWFjIHN0YW5kYXJkcyBhbmQgc3VwcG9ydFxuICAxNDpcdFx0ICAyU1MgdG8gODY2TWJpdC9zIFBIWSByYXRlLlxuICAxNTpcdFxuICAxNjpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxuICAxNzpcdFxuICAxODpcdGNvbmZpZyBNVDc2eDJVXG4gIDE5Olx0XHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc2eDJVIChVU0IpIHN1cHBvcnRcJiMzNDtcbiAgMjA6XHRcdHNlbGVjdCBNVDc2eDJfQ09NTU9OXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDEwOjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0NjIxCgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogMTUyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTVQ3NngyVSBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBNVDc2eDJVIGRyaXZlciwgYW5kIGl0JiMzOTtzIGJ1aWx0IG9uIHRvcCBvZiB0aGUgTUFDODAyMTEgZnJhbWV3b3JrIGFuZCBVU0IsIGFzIGV4cGVjdGVkLiBTbywgdGhlIGJhc2UgY29uZmlndXJhdGlvbnMgSSBuZWVkIHRvIGZvY3VzIG9uIGFyZSBgTVQ3NngwVWAgYW5kIGBNVDc2eDJVYC4gQnV0LCBob2xkIG9uIGEgc2Vjb25kLi4uIHRoZSBzcGVjaWZpYyBwYXRjaCBJJiMzOTttIGludGVyZXN0ZWQgaW4gaXMgbG9jYXRlZCB3aXRoaW4gYG10NzZ4MDJfbWFjLmNgLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhhdCB0aWVzIGluLiBBaCwgcmlnaHQhIGBtdDc2eDAyX21hYy5jYCBpcyBwYXJ0IG9mIGBNVDc2eDAyX0xJQmAuCgpOb3cgaXQgbWFrZXMgbW9yZSBzZW5zZS4gYE1UNzZ4MDJfTElCYCBpcyBzZWxlY3RlZCB1cHN0cmVhbSBieSBib3RoIGBNVDc2eDBfQ09NTU9OYCBhbmQgYE1UNzZ4Ml9DT01NT05gLiBUaGF0IGltcGxpZXMgdGhhdCBlbmFibGluZyBlaXRoZXIgYE1UNzZ4MFVgIG9yIGBNVDc2eDJVYCB3aWxsIGFjdHVhbGx5IHRyaWdnZXIgdGhlIGJ1aWxkIG9mIHRoaXMgc3BlY2lmaWMgY29kZSBJJiMzOTttIGxvb2tpbmcgZm9yLiBUaGF0IHNob3VsZCBtYWtlIHRoaW5ncyBzaW1wbGUuCgpOb3csIGp1c3QgdG8gYmUgdGhvcm91Z2ggYW5kIGJlY2F1c2UgaXQmIzM5O3MgZ29vZCBwcmFjdGljZSwgSSBzaG91bGQgcXVpY2tseSBjaGVjayBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGRyaXZlcnMgd2l0aGluIHRoZSBjb2RlYmFzZSB0aGF0IG1pZ2h0IGFsc28gYmUgbGV2ZXJhZ2luZyBgTVQ3NngwMl9MSUJgLiBJdCYjMzk7cyBhbHdheXMgYSBnb29kIGlkZWEgdG8gdW5kZXJzdGFuZCB0aGUgYnJvYWRlciBkZXBlbmRlbmNpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDEwOjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NlbGVjdCBNVDc2eDAyX0xJQiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnPTI9Y29uZmlnIE1UNzZ4MF9DT01NT05cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWctMy1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnOjQ6XHRzZWxlY3QgTVQ3NngwMl9MSUJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWctNS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9LY29uZmlnPTI9Y29uZmlnIE1UNzZ4Ml9DT01NT05cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL0tjb25maWctMy1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9LY29uZmlnOjQ6XHRzZWxlY3QgTVQ3NngwMl9MSUJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL0tjb25maWctNS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMTA6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTUzNDQKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAxNzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRm9jdXNpbmcgRnV6emluZyBvbiBLZXkgVVNCIERyaXZlciBGdW5jdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaXQmIzM5O3MgY2xlYXIgdGhhdCB0aGUgYE1UNzZ4MFVgIGFuZCBgTVQ3NngyVWAgVVNCIGRyaXZlcnMgYXJlIHRoZSBvbmVzIHVzaW5nIGl0LiBUaGUgcGF0Y2ggc3BlY2lmaWNhbGx5IHR3ZWFrcyBgbXQ3NngwMl9tYWNfcHJvY2Vzc190eF9yYXRlYCBhbmQgYG10NzZ4MDJfbWFjX2ZpbGxfdHhfc3RhdHVzYC4gR2l2ZW4gdGhhdCB0aGVzZSBmdW5jdGlvbnMgYXJlIGFjY2Vzc2libGUgdGhyb3VnaCBVU0IgZnV6emluZywgaXQgbWFrZXMgc2Vuc2UgdG8gaXNvbGF0ZSB0aGVtIGZvciBtb3JlIHRhcmdldGVkIHRlc3RpbmcuIAoKTXkgaW1tZWRpYXRlIHN0cmF0ZWd5IGlzIHRvIGV4dHJhY3QgdGhvc2UgZnVuY3Rpb25zIGFuZCBmb2N1cyBteSBmdXp6aW5nIGVmZm9ydHMgdGhlcmUuIFNvIHRoYXQmIzM5O3MgYG10NzZ4MDJfbWFjX3Byb2Nlc3NfdHhfcmF0ZWAsIGBtdDc2eDAyX21hY19maWxsX3R4X3N0YXR1c2AsIGBtdDc2eDAyX3NlbmRfdHhfc3RhdHVzYCBhbmQgYG10NzZ4MDJfdHhfc3RhdHVzX2RhdGFgIC0gdGhleSBzZWVtIGxpa2UgdGhlIHJpZ2h0IHRhcmdldHMuCgpXYWl0IGEgc2Vjb25kLi4uaXMgYG10NzZ4MDJfbWFjX3Byb2Nlc3NfdHhfcmF0ZWAgc3RhdGljPyBJIHNob3VsZCBjaGVjayB0aGF0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAxMDoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc2eDAyX21hY19wcm9jZXNzX3R4X3JhdGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5jPTI3OD1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmM6Mjc5Om10NzZ4MDJfbWFjX3Byb2Nlc3NfdHhfcmF0ZShzdHJ1Y3QgaWVlZTgwMjExX3R4X3JhdGUgKnR4cmF0ZSwgdTE2IHJhdGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmMtMjgwLVx0XHRcdCAgICBlbnVtIG5sODAyMTFfYmFuZCBiYW5kKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuYz00ODg9bXQ3NngwMl9tYWNfZmlsbF90eF9zdGF0dXMoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYsIHN0cnVjdCBtdDc2eDAyX3N0YSAqbXN0YSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmMtNTA3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5jOjUwODpcdFx0aWYgKG10NzZ4MDJfbWFjX3Byb2Nlc3NfdHhfcmF0ZShcdTAwMjZyYXRlWzBdLCBmaXJzdF9yYXRlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5jLTUwOS1cdFx0XHRcdFx0XHRkZXYtXHUwMDNlbXBoeS5jaGFuZGVmLmNoYW4tXHUwMDNlYmFuZCkpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5jLTUxNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuYzo1MTU6XHRcdGlmIChtdDc2eDAyX21hY19wcm9jZXNzX3R4X3JhdGUoXHUwMDI2cmF0ZVswXSwgbXN0YS1cdTAwM2V3Y2lkLnR4X2luZm8sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmMtNTE2LVx0XHRcdFx0XHRcdGRldi1cdTAwM2VtcGh5LmNoYW5kZWYuY2hhbi1cdTAwM2ViYW5kKSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmMtNTE5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5jOjUyMDpcdGlmIChtdDc2eDAyX21hY19wcm9jZXNzX3R4X3JhdGUoXHUwMDI2bGFzdF9yYXRlLCBzdC1cdTAwM2VyYXRlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5jLTUyMS1cdFx0XHRcdFx0ZGV2LVx1MDAzZW1waHkuY2hhbmRlZi5jaGFuLVx1MDAzZWJhbmQpKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAxMDoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjM5NgoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDkzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHVuZGVyc3RhbmRpbmcsIHRoaW5raW5nIHRocm91Z2ggdGhpcyBjb2RlOgoKKipBbmFseXppbmcgVFggU3RhdHVzIEhhbmRsaW5nIGluIHRoZSBtdDc2eDAyIERyaXZlcioqCgpSaWdodCwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyB0cmFuc21pdCAoVFgpIHN0YXR1cyBpcyBtYW5hZ2VkIGluIHRoZSBgbXQ3NngwMmAgZHJpdmVyLiBJIHNlZSB0aGF0IHRoZSBmdW5jdGlvbnMgYG10NzZ4MDJfbWFjX3Byb2Nlc3NfdHhfcmF0ZWAgYW5kIGBtdDc2eDAyX21hY19maWxsX3R4X3N0YXR1c2AgYXJlIGRlY2xhcmVkIGFzIHN0YXRpYy4gVGhpcyBtYWtlcyBzZW5zZTsgdGhleSYjMzk7cmUgbGlrZWx5IGhlbHBlciBmdW5jdGlvbnMgc3BlY2lmaWMgdG8gYSBjZXJ0YWluIG1vZHVsZSBvciBjb250ZXh0IHdpdGhpbiB0aGUgZHJpdmVyLiBUaGV5JiMzOTtyZSBwcm9iYWJseSBub3QgaW50ZW5kZWQgdG8gYmUgY2FsbGVkIGRpcmVjdGx5IGZyb20gb3V0c2lkZSB0aGVpciBkZWZpbmluZyBmaWxlLiBOb3csIHRoZSBmdW5jdGlvbnMgYG10NzZ4MDJfc2VuZF90eF9zdGF0dXNgIGFuZCBgbXQ3NngwMl90eF9zdGF0dXNfZGF0YWAgYXJlbiYjMzk7dCBzdGF0aWMgdGhvdWdoIHdoaWNoIG1lYW5zIHRoZXkgaGF2ZSBleHRlcm5hbCBsaW5rYWdlLCBzbyBJIG5lZWQgdG8gdmVyaWZ5IHRoZWlyIGZ1bmN0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhleSBhcmUgYmVpbmcgdXNlZC4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgYG10NzZ4MDJfc2VuZF90eF9zdGF0dXNgIGlzIGJlaW5nIGNhbGxlZCBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBzdGF0aWMgZnVuY3Rpb25zIGFuZCB0aGUgb3ZlcmFsbCBUWCBwcm9jZXNzLiBJJiMzOTttIGdvaW5nIHRvIGRpZyBpbnRvIHRoZSByZWZlcmVuY2VzIHRvIGBtdDc2eDAyX3NlbmRfdHhfc3RhdHVzYCBhbmQgdHJhY2UgaXRzIGV4ZWN1dGlvbiBwYXRoLiBJIHdpbGwgc2VlIGlmIHRoZXJlIGFyZSBhbnkgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAxMDoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2b2lkIG10NzZ4MDJfc2VuZF90eF9zdGF0dXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5jPTQ4OD1tdDc2eDAyX21hY19maWxsX3R4X3N0YXR1cyhzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldiwgc3RydWN0IG10NzZ4MDJfc3RhICptc3RhLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuYy01NTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmM6NTU1OnZvaWQgbXQ3NngwMl9zZW5kX3R4X3N0YXR1cyhzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuYy01NTYtXHRcdFx0ICAgIHN0cnVjdCBtdDc2eDAyX3R4X3N0YXR1cyAqc3RhdCwgdTggKnVwZGF0ZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmg9MTgzPWJvb2wgbXQ3NngwMl9tYWNfbG9hZF90eF9zdGF0dXMoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmgtMTg0LVx0XHRcdFx0c3RydWN0IG10NzZ4MDJfdHhfc3RhdHVzICpzdGF0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuaDoxODU6dm9pZCBtdDc2eDAyX3NlbmRfdHhfc3RhdHVzKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5oLTE4Ni1cdFx0XHQgICAgc3RydWN0IG10NzZ4MDJfdHhfc3RhdHVzICpzdGF0LCB1OCAqdXBkYXRlKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMTA6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjE2bTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3MjIzCgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSBzeW1ib2xzLCBrZWVwaW5nIGluIG1pbmQgbXkgZXhwZXJ0aXNlOgoKKipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgYG10NzZ4MDJfc2VuZF90eF9zdGF0dXNgIGFuZCBgbXQ3NngwMl90eF9zdGF0dXNfZGF0YWAqKgoKQWxyaWdodCwgbG9va2luZyBhdCB0aGVzZSB0d28sIGBtdDc2eDAyX3NlbmRfdHhfc3RhdHVzYCBhbmQgYG10NzZ4MDJfdHhfc3RhdHVzX2RhdGFgLCB0aGV5JiMzOTtyZSBjbGVhcmx5IHRoZSByZWxldmFudCBwaWVjZXMgdG8gaG9uZSBpbiBvbi4gRnJvbSB0aGUgbmFtaW5nIGNvbnZlbnRpb25zLCB0aGUgYHNlbmRfdHhfc3RhdHVzYCBmdW5jdGlvbiBsaWtlbHkgaGFuZGxlcyB0aGUgcmVwb3J0aW5nIG9mIHRyYW5zbWl0IHN0YXR1cyBpbmZvcm1hdGlvbi4gQW5kIHRoZSBhY2NvbXBhbnlpbmcgZGF0YSBzdHJ1Y3QsIGB0eF9zdGF0dXNfZGF0YWAsIHNob3VsZCBjb250YWluIGFsbCB0aGUgY3J1Y2lhbCBkZXRhaWxzIGFib3V0IHRob3NlIHRyYW5zbWlzc2lvbnMuIE15IGd1dCB0ZWxscyBtZSB0aGlzIGlzIHdoZXJlIEkmIzM5O2xsIGZpbmQgdGhlIGNvcmUgb2YgdGhlIFRYIHByb2Nlc3MgLSB0aGUgZnVuY3Rpb24gcmVzcG9uc2libGUgZm9yIHBhc3NpbmcgYmFjayBkZXRhaWxzIGFib3V0IGhvdyB0aGUgdHJhbnNtaXNzaW9uIHdlbnQsIGxpa2Ugc3VjY2VzcywgZmFpbHVyZSwgcmV0cmFuc21pc3Npb25zLCBlcnJvcnMsIGV0Yy4sIHVwIHRoZSBzdGFjay4gQW5kIHRoYXQgZGF0YSBzdHJ1Y3R1cmUuLi4gdGhhdCYjMzk7cyB3aGVyZSB0aGUgKm1lYXQqIGlzLiBJJiMzOTttIGltYWdpbmluZyBpdCYjMzk7bGwgY29udGFpbiBmaWVsZHMgcmVwcmVzZW50aW5nIGZyYW1lIHN0YXR1cyAoQUNLL05BQ0ssIHJldHJ5IGNvdW50LCBNQ1MgaW5kZXgsIG1heWJlIGV2ZW4gc2lnbmFsIHN0cmVuZ3RoIGRldGFpbHMpLCBwbHVzIG1heWJlIGEgdGltZXN0YW1wIGZvciBhY2N1cmF0ZSB0aW1pbmcgYW5hbHlzaXMsIGFuZCBhbnkgc3BlY2lmaWMgZXJyb3IgY29kZXMgdGhhdCBjb21lIHVwIGR1cmluZyB0cmFuc21pc3Npb24uCgpJJiMzOTtkIGV4cGVjdCB0byBzZWUgYSBnb29kIGRlYWwgb2Ygd29yayBkb25lIHdpdGhpbiB0aGUgc2NvcGUgb2YgdGhpcyBmdW5jdGlvbiBmb3IgZGVidWdnaW5nIG9yIG9wdGltaXphdGlvbiwgYW5kIHRoYXQgbWFrZXMgaXQgd29ydGggaW52ZXN0aWdhdGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMTA6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Ym9vbCBtdDc2eDAyX3R4X3N0YXR1c19kYXRhJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMi5oPTE4OD12b2lkIG10NzZ4MDJfcmVtb3ZlX2hkcl9wYWQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IGxlbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDIuaDoxODk6Ym9vbCBtdDc2eDAyX3R4X3N0YXR1c19kYXRhKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdTggKnVwZGF0ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDIuaC0xOTAtdm9pZCBtdDc2eDAyX3F1ZXVlX3J4X3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIGVudW0gbXQ3Nl9yeHFfaWQgcSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdHhyeC5jPTEyMT1FWFBPUlRfU1lNQk9MX0dQTChtdDc2eDAyX3R4X3NldF90eHB3cl9hdXRvKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl90eHJ4LmMtMTIyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3R4cnguYzoxMjM6Ym9vbCBtdDc2eDAyX3R4X3N0YXR1c19kYXRhKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdTggKnVwZGF0ZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl90eHJ4LmMtMTI0LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMTA6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc5MzgKCQkJCQkJCW91dHB1dDogMTQ3CgkJCQkJCQl0aG91Z2h0czogMzEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIE1UNzZ4MDIgRHJpdmVyIGZvciBGdXp6aW5nKioKCk9rYXksIHNvIGBtdDc2eDAyX3R4X3N0YXR1c19kYXRhYCAqaXMqIGluZGVlZCBleHBvcnRlZCwgdGhhdCYjMzk7cyBnb29kIHRvIGtub3cuIFRoZSBrZXkgY29uZmlndXJhdGlvbnMgdG8gZW5hYmxlIHNlZW0gdG8gYmUgYE1UNzZ4MFVgIGFuZCBgTVQ3NngyVWAuIEJ1dCwgYWx3YXlzIGJlc3QgdG8gYmUgdGhvcm91Z2gsIGxldCYjMzk7cyBqdXN0IHF1aWNrbHkgY2hlY2sgZm9yIGFueSBvdGhlciBkZXBlbmRlbmNpZXMuIFJpZ2h0LCBgTVQ3NngwVWAgbmVlZHMgYE1BQzgwMjExYCBhbmQgYFVTQmAsIGFuZCB0aGUgc2FtZSBmb3IgYE1UNzZ4MlVgLiBTbywgdGhvc2UgdHdvIGFyZSB0aGUgb25seSBpbXBvcnRhbnQgb25lcy4KCk5vdywgYSBxdWljayBzYW5pdHkgY2hlY2s6IGRvIEkgbmVlZCB0byAqZXhwbGljaXRseSogZW5hYmxlIGBNVDc2eDAyX1VTQmA/IE5vcGUsIGBNVDc2eDBVYCB0YWtlcyBjYXJlIG9mIHRoYXQgYnkgc2VsZWN0aW5nIGl0LiBFeGNlbGxlbnQuCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc29saWRpZnkgdGhlIGZpbmRpbmdzOgoKKiAgICoqYFdvcnRoRnV6emluZzogdHJ1ZWAqKiAtIEFic29sdXRlbHksIHRoaXMgaXMgd29ydGggZXhwbG9yaW5nIQoqICAgKipgRm9jdXNTeW1ib2xzOmAqKiAtIFRoZSBjcml0aWNhbCBmdW5jdGlvbnMgZm9yIGZ1enppbmcgYXJlIGNsZWFybHkgYG10NzZ4MDJfc2VuZF90eF9zdGF0dXNgIGFuZCwgbW9zdCBpbXBvcnRhbnRseSwgYG10NzZ4MDJfdHhfc3RhdHVzX2RhdGFgLgoqICAgKipgRW5hYmxlQ29uZmlnczpgKiogLSBXZSBuZWVkIGBNVDc2eDBVYCBhbmQgYE1UNzZ4MlVgIGVuYWJsZWQuCiogICAqKlJlYXNvbmluZzoqKiBUaGUgcGF0Y2ggaXMgYWJvdXQgYm91bmRzIGNoZWNraW5nIGluIGBtdDc2eDAyX21hY19wcm9jZXNzX3R4X3JhdGVgLCByZWxhdGVkIHRvIGBtYWM4MDIxMS9taW5zdHJlbF9odGAuIFRoaXMgc2hvdWxkIGJlIHJlYWNoYWJsZSB2aWEgVVNCIGZ1enppbmcgb2YgdGhlIG1lZGlhdGVrIG10NzZ4MHUgYW5kIG10NzZ4MnUgZHJpdmVycy4gVGhpcyBzZWVtcyBsaWtlIGEgcHJvbWlzaW5nIGF2ZW51ZSBmb3IgZGlzY292ZXJpbmcgYSBzZWN1cml0eSB2dWxuZXJhYmlsaXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAxMDozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TVQ3NngwVSYjMzQ7LAogICAgJiMzNDtNVDc2eDJVJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bXQ3NngwMl9zZW5kX3R4X3N0YXR1cyYjMzQ7LAogICAgJiMzNDttdDc2eDAyX3R4X3N0YXR1c19kYXRhJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIHRvIGBtdDc2eDAyX21hY19wcm9jZXNzX3R4X3JhdGVgIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3MgaW4gbWFjODAyMTEvbWluc3RyZWxfaHQuIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSBVU0IgZnV6emluZyBvZiB0aGUgbWVkaWF0ZWsgbXQ3NngwdSBhbmQgbXQ3NngydSBkcml2ZXJzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNVDc2eDBVJiMzNDssCiAgICAmIzM0O01UNzZ4MlUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttdDc2eDAyX3NlbmRfdHhfc3RhdHVzJiMzNDssCiAgICAmIzM0O210NzZ4MDJfdHhfc3RhdHVzX2RhdGEmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgdG8gYG10NzZ4MDJfbWFjX3Byb2Nlc3NfdHhfcmF0ZWAgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2VzcyBpbiBtYWM4MDIxMS9taW5zdHJlbF9odC4gVGhpcyBpcyByZWFjaGFibGUgdmlhIFVTQiBmdXp6aW5nIG9mIHRoZSBtZWRpYXRlayBtdDc2eDB1IGFuZCBtdDc2eDJ1IGRyaXZlcnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDEwOjM5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMTA6Mzk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3MgYnVnIGNhdXNlZCBieSBhbiB1bnZhbGlkYXRlZCBoYXJkd2FyZSBUWC1zdGF0dXMgaW5kZXggb3ZlcmZsb3dpbmcgdGhlIG1hYzgwMjExL21pbnN0cmVsX2h0IHBlci1ncm91cCByYXRlIGFycmF5LiBPdXQtb2YtYm91bmRzIGFjY2Vzc2VzIGFyZSByZWxpYWJseSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBtb2RpZnkgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBpbmZvLWxlYWtzLCBvciBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4gdG8gZGV0ZWN0LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAxMWM2Zjg1YjBkYTViZjk0NzBmNTk0ZDllOTBmOTcwYmNlY2MzNTI4CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBBdWcgMjYgMTA6MjE6MTEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmMKaW5kZXggMTRlZTViM2I5NGQzMS4uZDc3MzU2YTJlYzgwMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuYwpAQCAtMzAyLDEwICYjNDM7MzAyLDIyIEBAIG10NzZ4MDJfbWFjX3Byb2Nlc3NfdHhfcmF0ZShzdHJ1Y3QgaWVlZTgwMjExX3R4X3JhdGUgKnR4cmF0ZSwgdTE2IHJhdGUsCiAJCXR4cmF0ZS0mZ3Q7ZmxhZ3MgfD0gSUVFRTgwMjExX1RYX1JDX0dSRUVOX0ZJRUxEOwogCQlmYWxsdGhyb3VnaDsKIAljYXNlIE1UX1BIWV9UWVBFX0hUOgomIzQzOwkJLyogUmF3IGhhcmR3YXJlIFRYLXN0YXR1cyBpbmRleCBpcyB1bnZhbGlkYXRlZDsgYSBzdGFsZSBvcgomIzQzOwkJICogY29ycnVwdCB2YWx1ZSBoZXJlIG92ZXJmbG93cyBtYWM4MDIxMS9taW5zdHJlbF9odCYjMzk7cwomIzQzOwkJICogcGVyLWdyb3VwIHJhdGUgYXJyYXkgKE1DU19HUk9VUF9SQVRFUyA9PSAxMCkgYW5kIGNyYXNoZXMuCiYjNDM7CQkgKiBWYWxpZCA4MDIuMTFuIE1DUyBpbmRpY2VzIGFyZSAwLTMxIChmb3VyIHN0cmVhbXMgeCA4KS4KJiM0MzsJCSAqLwomIzQzOwkJaWYgKGlkeCAmZ3Q7IDMxKQomIzQzOwkJCXJldHVybiAtRUlOVkFMOwogCQl0eHJhdGUtJmd0O2ZsYWdzIHw9IElFRUU4MDIxMV9UWF9SQ19NQ1M7CiAJCXR4cmF0ZS0mZ3Q7aWR4ID0gaWR4OwogCQlicmVhazsKIAljYXNlIE1UX1BIWV9UWVBFX1ZIVDoKJiM0MzsJCS8qIFNhbWUgb3ZlcmZsb3cgcmlzayBmb3IgVkhUOiBtYWM4MDIxMSBleHBlY3RzIHRoZSBNQ1MKJiM0MzsJCSAqIG5pYmJsZSAoYml0cyAzOjApIGluIHJhbmdlIDAtOSwgbnNzIHBhY2tlZCBhYm92ZSBpdC4KJiM0MzsJCSAqLwomIzQzOwkJaWYgKChpZHggJmFtcDsgMHhmKSAmZ3Q7IDkpCiYjNDM7CQkJcmV0dXJuIC1FSU5WQUw7CiAJCXR4cmF0ZS0mZ3Q7ZmxhZ3MgfD0gSUVFRTgwMjExX1RYX1JDX1ZIVF9NQ1M7CiAJCXR4cmF0ZS0mZ3Q7aWR4ID0gaWR4OwogCQlicmVhazsKQEAgLTQ5MywxOCAmIzQzOzUwNSwyMSBAQCBtdDc2eDAyX21hY19maWxsX3R4X3N0YXR1cyhzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldiwgc3RydWN0IG10NzZ4MDJfc3RhICptc3RhLAogCQlmaXJzdF9yYXRlID0gc3QtJmd0O3JhdGUgJmFtcDsgfk1UX1BLVElEX1JBVEU7CiAJCWZpcnN0X3JhdGUgfD0gc3QtJmd0O3BrdGlkICZhbXA7IE1UX1BLVElEX1JBVEU7CiAKLQkJbXQ3NngwMl9tYWNfcHJvY2Vzc190eF9yYXRlKCZhbXA7cmF0ZVswXSwgZmlyc3RfcmF0ZSwKLQkJCQkJICAgIGRldi0mZ3Q7bXBoeS5jaGFuZGVmLmNoYW4tJmd0O2JhbmQpOwomIzQzOwkJaWYgKG10NzZ4MDJfbWFjX3Byb2Nlc3NfdHhfcmF0ZSgmYW1wO3JhdGVbMF0sIGZpcnN0X3JhdGUsCiYjNDM7CQkJCQkJZGV2LSZndDttcGh5LmNoYW5kZWYuY2hhbi0mZ3Q7YmFuZCkpCiYjNDM7CQkJcmV0dXJuOwogCX0gZWxzZSBpZiAocmF0ZVswXS5pZHggJmx0OyAwKSB7CiAJCWlmICghbXN0YSkKIAkJCXJldHVybjsKIAotCQltdDc2eDAyX21hY19wcm9jZXNzX3R4X3JhdGUoJmFtcDtyYXRlWzBdLCBtc3RhLSZndDt3Y2lkLnR4X2luZm8sCi0JCQkJCSAgICBkZXYtJmd0O21waHkuY2hhbmRlZi5jaGFuLSZndDtiYW5kKTsKJiM0MzsJCWlmIChtdDc2eDAyX21hY19wcm9jZXNzX3R4X3JhdGUoJmFtcDtyYXRlWzBdLCBtc3RhLSZndDt3Y2lkLnR4X2luZm8sCiYjNDM7CQkJCQkJZGV2LSZndDttcGh5LmNoYW5kZWYuY2hhbi0mZ3Q7YmFuZCkpCiYjNDM7CQkJcmV0dXJuOwogCX0KIAotCW10NzZ4MDJfbWFjX3Byb2Nlc3NfdHhfcmF0ZSgmYW1wO2xhc3RfcmF0ZSwgc3QtJmd0O3JhdGUsCi0JCQkJICAgIGRldi0mZ3Q7bXBoeS5jaGFuZGVmLmNoYW4tJmd0O2JhbmQpOwomIzQzOwlpZiAobXQ3NngwMl9tYWNfcHJvY2Vzc190eF9yYXRlKCZhbXA7bGFzdF9yYXRlLCBzdC0mZ3Q7cmF0ZSwKJiM0MzsJCQkJCWRldi0mZ3Q7bXBoeS5jaGFuZGVmLmNoYW4tJmd0O2JhbmQpKQomIzQzOwkJcmV0dXJuOwogCiAJZm9yIChpID0gMDsgaSAmbHQ7IEFSUkFZX1NJWkUoaW5mby0mZ3Q7c3RhdHVzLnJhdGVzKTsgaSYjNDM7JiM0MzspIHsKIAkJcmV0cnktLTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDEwOjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3MzkKCQkJCQkJCW91dHB1dDogNTcKCQkJCQkJCXRob3VnaHRzOiA2MTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgV2lyZWxlc3MgRHJpdmVyIFBhdGNoIGZvciBQb3RlbnRpYWwgSXNzdWVzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciB0aGUgTWVkaWF0ZWsgTVQ3NngwMiB3aXJlbGVzcyBkcml2ZXIuIEl0IHNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQsIGFkZGluZyBib3VuZHMgY2hlY2tpbmcgdG8gdGhlIGBtdDc2eDAyX21hY19wcm9jZXNzX3R4X3JhdGVgIGZ1bmN0aW9uLiBTcGVjaWZpY2FsbHksIHRoZXkmIzM5O3JlIGd1YXJkaW5nIGFnYWluc3QgaW52YWxpZCBgaWR4YCB2YWx1ZXMsIHByZXZlbnRpbmcgaXQgZnJvbSBleGNlZWRpbmcgMzEgZm9yIEhUIFBIWSB0eXBlcyBhbmQgOSBmb3IgVkhUIFBIWSB0eXBlcy4gVGhpcyBmdW5jdGlvbiYjMzk7cyBhbHNvIGJlaW5nIGhhbmRsZWQgaW4gYG10NzZ4MDJfbWFjX2ZpbGxfdHhfc3RhdHVzYCBzbyB0aGF0IGZ1bmN0aW9uIHJldHVybnMgaWYgYW4gZXJyb3IgaXMgY2F1Z2h0LgoKVGhlIGNvbW1lbnQgY2xlYXJseSBpbmRpY2F0ZXMgdGhlIHJhdGlvbmFsZTogYSBwb3RlbnRpYWxseSBzdGFsZSBvciBjb3JydXB0IGluZGV4IHZhbHVlIGZyb20gdGhlIGhhcmR3YXJlIFRYIHN0YXR1cyBjYW4gbGVhZCB0byBhbiBvdXQtb2YtYm91bmRzIGFjY2VzcyBpbiB0aGUgbWFjODAyMTEvbWluc3RyZWxfaHQgcmF0ZSBhcnJheSwgdWx0aW1hdGVseSBjYXVzaW5nIGEgY3Jhc2guIFRoaXMgbWFrZXMgcGVyZmVjdCBzZW5zZTsgdGhvc2UgaW5kaWNlcyBhcmUgZGlyZWN0bHkgdXNlZCB0byBhY2Nlc3MgbWVtb3J5LiBUaGlzIGlzIGV4YWN0bHkgdGhlIGtpbmQgb2YgdGhpbmcgS0FTQU4gaXMgZGVzaWduZWQgdG8gY2F0Y2gg4oCTIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMuCgpOb3csIG15IGluaXRpYWwgdGhvdWdodCBpcywgdGhpcyBpcyBqdXN0IGEgYm91bmRzIGNoZWNrOyBpdCBwcmV2ZW50cyB0aGUgY3Jhc2guIEtNU0FOIGlzbiYjMzk7dCByZWFsbHkgcmVsZXZhbnQgaGVyZSwgYmVjYXVzZSBpdCBmb2N1c2VzIG9uIGRldGVjdGluZyB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgYW5kIHRoaXMgaXMgY2xlYXJseSBhYm91dCBhbiBhcnJheSBvdmVyZmxvdy4gVGhlIHBhdGNoIGFwcGVhcnMgdG8gZWxpbWluYXRlIGEgdnVsbmVyYWJpbGl0eSBkdWUgdG8gaW52YWxpZCBpbmRleCB2YWx1ZXMuCgpCdXQsIEkgbmVlZCB0byBiZSB0aG9yb3VnaC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueXRoaW5nLiBJIG5lZWQgdG8gY2hlY2sgZm9yIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzc3Vlcy4KClRoZSBmdW5jdGlvbiBgbXQ3NngwMl9tYWNfZmlsbF90eF9zdGF0dXNgIGlzIHZvaWQsIGJ1dCBpdCBwb3B1bGF0ZXMgYSBgc3RydWN0IG10NzZfdHhfc3RhdHVzICppbmZvYC4gSWYgdGhlIGZ1bmN0aW9uIHJldHVybnMgZWFybHksIGRvZXMgaXQgbGVhdmUgc29tZXRoaW5nIHVuaW5pdGlhbGl6ZWQgdGhhdCYjMzk7cyBsYXRlciB1c2VkPyBJdCYjMzk7cyBmaWxsaW5nIGEgYHN0cnVjdCBtdDc2X3R4X3N0YXR1c2AgdGhhdCB3aWxsIGJlIHVzZWQgbGF0ZXIuIExldCBtZSBjaGVjayB0aGUgY2FsbGVycyBvZiBgbXQ3NngwMl9tYWNfZmlsbF90eF9zdGF0dXNgLCBtYWtlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhbnl0aGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMTA6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3NngwMl9tYWNfZmlsbF90eF9zdGF0dXMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5jPTQ4Nz1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5jOjQ4ODptdDc2eDAyX21hY19maWxsX3R4X3N0YXR1cyhzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldiwgc3RydWN0IG10NzZ4MDJfc3RhICptc3RhLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5jLTQ4OS1cdFx0XHQgICBzdHJ1Y3QgaWVlZTgwMjExX3R4X2luZm8gKmluZm8sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5jPTU1NT12b2lkIG10NzZ4MDJfc2VuZF90eF9zdGF0dXMoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5jLTYyMi1cdFx0Y3VyX3BrdGlkID0gbXN0YS1cdTAwM2VzdGF0dXMucGt0aWQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmM6NjIzOlx0XHRtdDc2eDAyX21hY19maWxsX3R4X3N0YXR1cyhkZXYsIG1zdGEsIHN0YXR1cy5pbmZvLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5jLTYyNC1cdFx0XHRcdFx0ICAgXHUwMDI2bXN0YS1cdTAwM2VzdGF0dXMsIG1zdGEtXHUwMDNlbl9mcmFtZXMpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuYy02MzAtXHRcdGN1cl9wa3RpZCA9IHN0YXQtXHUwMDNlcGt0aWQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmM6NjMxOlx0XHRtdDc2eDAyX21hY19maWxsX3R4X3N0YXR1cyhkZXYsIG1zdGEsIHN0YXR1cy5pbmZvLCBzdGF0LCAxKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuYy02MzItXHRcdCp1cGRhdGUgPSAxO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAxMDozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MzIxCgkJCQkJCQlvdXRwdXQ6IDUyCgkJCQkJCQl0aG91Z2h0czogNDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBob3cgSSYjMzk7ZCBhcHByb2FjaCBzdW1tYXJpemluZyB0aGUgcHJvbXB0LCBnaXZlbiBteSBhc3N1bWVkIGV4cGVydGlzZToKCioqRXhhbWluaW5nIGBtdDc2eDAyX3NlbmRfdHhfc3RhdHVzYCoqCgpSaWdodCwgbGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGdvaW5nIG9uIHdpdGggYG10NzZ4MDJfc2VuZF90eF9zdGF0dXNgIHdpdGhpbiB0aGUgTWVkaWF0ZWsgTVQ3NngwMiB3aXJlbGVzcyBkcml2ZXIsIHNwZWNpZmljYWxseSBpbiBgbXQ3Ni9tdDc2eDAyX21hYy5jYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBkcml2ZXIgaGFuZGxlcyB0cmFuc21pdCBzdGF0dXMgdXBkYXRlcywgYW5kIHRoaXMgaXMgd2hlcmUgdGhhdCBmdW5jdGlvbiBsaXZlcy4gTXkgaW1tZWRpYXRlIGdvYWwgaXMgdG8gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGUgVFggc3RhdHVzIGNhbGxiYWNrcyBhcmUgcHJvY2Vzc2VkLCBob3cgdGhleSBpbnRlcmFjdCB3aXRoIHRoZSBoYXJkd2FyZSByZWdpc3RlcnMsIGFuZCBob3cgdGhlIGRyaXZlciB1bHRpbWF0ZWx5IHJlbGF5cyB0aGlzIGluZm9ybWF0aW9uIHRvIHRoZSBuZXR3b3JraW5nIHN0YWNrLiBJJiMzOTtsbCBuZWVkIHRvIGZvY3VzIG9uIHdoYXQgZXZlbnRzIGNhbiBpbnRlcnJ1cHQgdGhhdCByb3V0aW5lLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zLCBpbnRlcnJ1cHQtaGFuZGxpbmcgbnVhbmNlcywgYW5kIGFueSBpbmRpY2F0aW9ucyBvZiBob3cgdGhpcyBmdW5jdGlvbiBjb250cmlidXRlcyB0byB0aHJvdWdocHV0IGFuZCBlcnJvciBoYW5kbGluZy4gSSYjMzk7bGwgd2FudCB0byBxdWlja2x5IHNlZSBob3cgaXQgYWxpZ25zIHdpdGggdGhlIG92ZXJhbGwgTVQ3NiBhcmNoaXRlY3R1cmUsIGVzcGVjaWFsbHkgYW55IGludGVyYWN0aW9ucyB3aXRoIHRoZSBETUEgZW5naW5lIG9yIHRoZSBoYXJkd2FyZSBxdWV1ZSBtYW5hZ2VtZW50LiBMZXQmIzM5O3Mgc2VlIGlmIHRoZXJlJiMzOTtzIGFueSBjbGV2ZXJuZXNzIGluIGhvdyB0aGUgc3RhdHVzIGlzIHBhcnNlZCwgYW5kIGlmIHRoZXJlIGFyZSBhbnkgaW5kaWNhdGlvbnMgb2Ygb3B0aW1pemF0aW9ucyBvciBwb3RlbnRpYWwgYm90dGxlbmVja3Mgd2l0aGluIHRoaXMgZnVuY3Rpb24uIEkmIzM5O20gYXNzdW1pbmcgZmFtaWxpYXJpdHkgd2l0aCB0aGUgTVQ3NiBhcmNoaXRlY3R1cmUsIHNvIEkgZG9uJiMzOTt0IG5lZWQgZXhjZXNzaXZlIGhhbmQtaG9sZGluZywganVzdCB0aGUgZXNzZW5jZSBvZiB0aGUgZnVuY3Rpb24mIzM5O3MgbG9naWMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDEwOjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNTU1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNTU1Olx0dm9pZCBtdDc2eDAyX3NlbmRfdHhfc3RhdHVzKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2LFxuIDU1NjpcdFx0XHRcdCAgICBzdHJ1Y3QgbXQ3NngwMl90eF9zdGF0dXMgKnN0YXQsIHU4ICp1cGRhdGUpXG4gNTU3Olx0e1xuIDU1ODpcdFx0c3RydWN0IGllZWU4MDIxMV90eF9pbmZvIGluZm8gPSB7fTtcbiA1NTk6XHRcdHN0cnVjdCBpZWVlODAyMTFfdHhfc3RhdHVzIHN0YXR1cyA9IHtcbiA1NjA6XHRcdFx0LmluZm8gPSBcdTAwMjZpbmZvXG4gNTYxOlx0XHR9O1xuIDU2MjpcdFx0c3RhdGljIGNvbnN0IHU4IGFjX3RvX3RpZFs0XSA9IHtcbiA1NjM6XHRcdFx0W0lFRUU4MDIxMV9BQ19CRV0gPSAwLFxuIDU2NDpcdFx0XHRbSUVFRTgwMjExX0FDX0JLXSA9IDEsXG4gNTY1Olx0XHRcdFtJRUVFODAyMTFfQUNfVkldID0gNCxcbiA1NjY6XHRcdFx0W0lFRUU4MDIxMV9BQ19WT10gPSA2XG4gNTY3Olx0XHR9O1xuIDU2ODpcdFx0c3RydWN0IG10NzZfd2NpZCAqd2NpZCA9IE5VTEw7XG4gNTY5Olx0XHRzdHJ1Y3QgbXQ3NngwMl9zdGEgKm1zdGEgPSBOVUxMO1xuIDU3MDpcdFx0c3RydWN0IG10NzZfZGV2ICptZGV2ID0gXHUwMDI2ZGV2LVx1MDAzZW10NzY7XG4gNTcxOlx0XHRzdHJ1Y3Qgc2tfYnVmZl9oZWFkIGxpc3Q7XG4gNTcyOlx0XHR1MzIgZHVyYXRpb24gPSAwO1xuIDU3MzpcdFx0dTggY3VyX3BrdGlkO1xuIDU3NDpcdFx0dTMyIGFjID0gMDtcbiA1NzU6XHRcdGludCBsZW4gPSAwO1xuIDU3NjpcdFxuIDU3NzpcdFx0aWYgKHN0YXQtXHUwMDNlcGt0aWQgPT0gTVRfUEFDS0VUX0lEX05PX0FDSylcbiA1Nzg6XHRcdFx0cmV0dXJuO1xuIDU3OTpcdFxuIDU4MDpcdFx0cmN1X3JlYWRfbG9jaygpO1xuIDU4MTpcdFxuIDU4MjpcdFx0d2NpZCA9IG10NzZfd2NpZF9wdHIoZGV2LCBzdGF0LVx1MDAzZXdjaWQpO1xuIDU4MzpcdFx0aWYgKHdjaWQgXHUwMDI2XHUwMDI2IHdjaWQtXHUwMDNlc3RhKSB7XG4gNTg0Olx0XHRcdHZvaWQgKnByaXY7XG4gNTg1Olx0XG4gNTg2Olx0XHRcdHByaXYgPSBtc3RhID0gY29udGFpbmVyX29mKHdjaWQsIHN0cnVjdCBtdDc2eDAyX3N0YSwgd2NpZCk7XG4gNTg3Olx0XHRcdHN0YXR1cy5zdGEgPSBjb250YWluZXJfb2YocHJpdiwgc3RydWN0IGllZWU4MDIxMV9zdGEsXG4gNTg4Olx0XHRcdFx0XHRcdCAgZHJ2X3ByaXYpO1xuIDU4OTpcdFx0fVxuIDU5MDpcdFxuIDU5MTpcdFx0bXQ3Nl90eF9zdGF0dXNfbG9jayhtZGV2LCBcdTAwMjZsaXN0KTtcbiA1OTI6XHRcbiA1OTM6XHRcdGlmICh3Y2lkKSB7XG4gNTk0Olx0XHRcdGlmIChtdDc2X2lzX3NrYl9wa3RpZChzdGF0LVx1MDAzZXBrdGlkKSlcbiA1OTU6XHRcdFx0XHRzdGF0dXMuc2tiID0gbXQ3Nl90eF9zdGF0dXNfc2tiX2dldChtZGV2LCB3Y2lkLFxuIDU5NjpcdFx0XHRcdFx0XHRcdFx0ICAgIHN0YXQtXHUwMDNlcGt0aWQsIFx1MDAyNmxpc3QpO1xuIDU5NzpcdFx0XHRpZiAoc3RhdHVzLnNrYilcbiA1OTg6XHRcdFx0XHRzdGF0dXMuaW5mbyA9IElFRUU4MDIxMV9TS0JfQ0Ioc3RhdHVzLnNrYik7XG4gNTk5Olx0XHR9XG4gNjAwOlx0XG4gNjAxOlx0XHRpZiAoIXN0YXR1cy5za2IgXHUwMDI2XHUwMDI2ICEoc3RhdC1cdTAwM2Vwa3RpZCBcdTAwMjYgTVRfUEFDS0VUX0lEX0hBU19SQVRFKSkge1xuIDYwMjpcdFx0XHRtdDc2X3R4X3N0YXR1c191bmxvY2sobWRldiwgXHUwMDI2bGlzdCk7XG4gNjAzOlx0XHRcdGdvdG8gb3V0O1xuIDYwNDpcdFx0fVxuIDYwNTpcdFxuIDYwNjpcdFxuIDYwNzpcdFx0aWYgKG1zdGEgXHUwMDI2XHUwMDI2IHN0YXQtXHUwMDNlYWdnciBcdTAwMjZcdTAwMjYgIXN0YXR1cy5za2IpIHtcbiA2MDg6XHRcdFx0dTMyIHN0YXRfdmFsLCBzdGF0X2NhY2hlO1xuIDYwOTpcdFxuIDYxMDpcdFx0XHRzdGF0X3ZhbCA9IHN0YXQtXHUwMDNlcmF0ZTtcbiA2MTE6XHRcdFx0c3RhdF92YWwgfD0gKCh1MzIpc3RhdC1cdTAwM2VyZXRyeSkgXHUwMDNjXHUwMDNjIDE2O1xuIDYxMjpcdFx0XHRzdGF0X2NhY2hlID0gbXN0YS1cdTAwM2VzdGF0dXMucmF0ZTtcbiA2MTM6XHRcdFx0c3RhdF9jYWNoZSB8PSAoKHUzMiltc3RhLVx1MDAzZXN0YXR1cy5yZXRyeSkgXHUwMDNjXHUwMDNjIDE2O1xuIDYxNDpcdFxuIDYxNTpcdFx0XHRpZiAoKnVwZGF0ZSA9PSAwIFx1MDAyNlx1MDAyNiBzdGF0X3ZhbCA9PSBzdGF0X2NhY2hlIFx1MDAyNlx1MDAyNlxuIDYxNjpcdFx0XHQgICAgc3RhdC1cdTAwM2V3Y2lkID09IG1zdGEtXHUwMDNlc3RhdHVzLndjaWQgXHUwMDI2XHUwMDI2IG1zdGEtXHUwMDNlbl9mcmFtZXMgXHUwMDNjIDMyKSB7XG4gNjE3Olx0XHRcdFx0bXN0YS1cdTAwM2VuX2ZyYW1lcyYjNDM7JiM0Mzs7XG4gNjE4Olx0XHRcdFx0bXQ3Nl90eF9zdGF0dXNfdW5sb2NrKG1kZXYsIFx1MDAyNmxpc3QpO1xuIDYxOTpcdFx0XHRcdGdvdG8gb3V0O1xuIDYyMDpcdFx0XHR9XG4gNjIxOlx0XG4gNjIyOlx0XHRcdGN1cl9wa3RpZCA9IG1zdGEtXHUwMDNlc3RhdHVzLnBrdGlkO1xuIDYyMzpcdFx0XHRtdDc2eDAyX21hY19maWxsX3R4X3N0YXR1cyhkZXYsIG1zdGEsIHN0YXR1cy5pbmZvLFxuIDYyNDpcdFx0XHRcdFx0XHQgICBcdTAwMjZtc3RhLVx1MDAzZXN0YXR1cywgbXN0YS1cdTAwM2VuX2ZyYW1lcyk7XG4gNjI1Olx0XG4gNjI2Olx0XHRcdG1zdGEtXHUwMDNlc3RhdHVzID0gKnN0YXQ7XG4gNjI3Olx0XHRcdG1zdGEtXHUwMDNlbl9mcmFtZXMgPSAxO1xuIDYyODpcdFx0XHQqdXBkYXRlID0gMDtcbiA2Mjk6XHRcdH0gZWxzZSB7XG4gNjMwOlx0XHRcdGN1cl9wa3RpZCA9IHN0YXQtXHUwMDNlcGt0aWQ7XG4gNjMxOlx0XHRcdG10NzZ4MDJfbWFjX2ZpbGxfdHhfc3RhdHVzKGRldiwgbXN0YSwgc3RhdHVzLmluZm8sIHN0YXQsIDEpO1xuIDYzMjpcdFx0XHQqdXBkYXRlID0gMTtcbiA2MzM6XHRcdH1cbiA2MzQ6XHRcbiA2MzU6XHRcdGlmIChzdGF0dXMuc2tiKSB7XG4gNjM2Olx0XHRcdGluZm8gPSAqc3RhdHVzLmluZm87XG4gNjM3Olx0XHRcdGxlbiA9IHN0YXR1cy5za2ItXHUwMDNlbGVuO1xuIDYzODpcdFx0XHRhYyA9IHNrYl9nZXRfcXVldWVfbWFwcGluZyhzdGF0dXMuc2tiKTtcbiA2Mzk6XHRcdFx0bXQ3Nl90eF9zdGF0dXNfc2tiX2RvbmUobWRldiwgc3RhdHVzLnNrYiwgXHUwMDI2bGlzdCk7XG4gNjQwOlx0XHR9IGVsc2UgaWYgKG1zdGEpIHtcbiA2NDE6XHRcdFx0bGVuID0gc3RhdHVzLmluZm8tXHUwMDNlc3RhdHVzLmFtcGR1X2xlbiAqIGV3bWFfcGt0bGVuX3JlYWQoXHUwMDI2bXN0YS1cdTAwM2Vwa3RsZW4pO1xuIDY0MjpcdFx0XHRhYyA9IEZJRUxEX0dFVChNVF9QS1RJRF9BQywgY3VyX3BrdGlkKTtcbiA2NDM6XHRcdH1cbiA2NDQ6XHRcbiA2NDU6XHRcdG10NzZfdHhfc3RhdHVzX3VubG9jayhtZGV2LCBcdTAwMjZsaXN0KTtcbiA2NDY6XHRcbiA2NDc6XHRcdGlmICghc3RhdHVzLnNrYikge1xuIDY0ODpcdFx0XHRzcGluX2xvY2tfYmgoXHUwMDI2ZGV2LVx1MDAzZW10NzYucnhfbG9jayk7XG4gNjQ5Olx0XHRcdGllZWU4MDIxMV90eF9zdGF0dXNfZXh0KG10NzZfaHcoZGV2KSwgXHUwMDI2c3RhdHVzKTtcbiA2NTA6XHRcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2ZGV2LVx1MDAzZW10NzYucnhfbG9jayk7XG4gNjUxOlx0XHR9XG4gNjUyOlx0XG4gNjUzOlx0XHRpZiAoIWxlbilcbiA2NTQ6XHRcdFx0Z290byBvdXQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDEwOjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY0MjMKCQkJCQkJCW91dHB1dDogNTIKCQkJCQkJCXRob3VnaHRzOiA0MzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIE1lbW9yeSBJc3N1ZSBpbiB0aGUgTVQ3NiBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBjb2RlIGFuZCBJJiMzOTttIGxvb2tpbmcgYXQgYSBwb3RlbnRpYWwgc2NlbmFyaW8gaW52b2x2aW5nIGBtdDc2eDAyX21hY19maWxsX3R4X3N0YXR1c2AuIFRoZSBpbml0aWFsIHRob3VnaHQgd2FzIHRoYXQgaWYgdGhpcyBmdW5jdGlvbiByZXR1cm5zIGVhcmx5LCBgc3RhdHVzLmluZm9gIG1pZ2h0IG5vdCBiZSBmdWxseSBwb3B1bGF0ZWQuIFNwZWNpZmljYWxseSwgYHN0YXR1cy5pbmZvYCBlaXRoZXIgcG9pbnRzIHRvIGEgemVyby1pbml0aWFsaXplZCBgaW5mb2Agc3RydWN0IChpZiBgc3RhdHVzLnNrYmAgaXMgTlVMTCkgb3IgdG8gYElFRUU4MDIxMV9TS0JfQ0Ioc3RhdHVzLnNrYilgIChpZiBgc3RhdHVzLnNrYmAgaXMgbm90IE5VTEwpLgoKQnV0IHdhaXQsIGBpbmZvYCBpcyAqZXhwbGljaXRseSogaW5pdGlhbGl6ZWQgdG8gemVybywgd2hpY2ggaXMgZ29vZC4gU28sIGlmIGBzdGF0dXMuc2tiYCBpcyBOVUxMLCB0aGVuIGBzdGF0dXMuaW5mb2Agd2lsbCBiZSB0aGUgemVybyBpbml0aWFsaXplZCBpbmZvLiBBbmQgaWYgYHN0YXR1cy5za2JgIGlzbiYjMzk7dCBOVUxMLCB0aGVuIGBzdGF0dXMuaW5mb2AgcG9pbnRzIHRvIHRoZSBjb250cm9sIGJsb2NrIG9mIHRoZSBTS0IsIHdoaWNoIGlzIGFzc3VtZWQgdG8gYmUgaW5pdGlhbGl6ZWQgd2hlbiB0aGUgc2tiIHdhcyBjcmVhdGVkLiBUaGVuIGBpZWVlODAyMTFfdHhfc3RhdHVzX2V4dGAgZ2V0cyBjYWxsZWQuIE5vdywgSSBoYXZlIHRvIGVuc3VyZSB0aGF0IGlmIGBtdDc2eDAyX21hY19maWxsX3R4X3N0YXR1c2AgZG9lcyBiYWlsIG91dCBlYXJseSwgaXQgZG9lc24mIzM5O3QgbGVhdmUgc29tZXRoaW5nIHVuaW5pdGlhbGl6ZWQuCgpUaGUgY29uY2VybiB3YXMgcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCBtZW1vcnkgYmVpbmcgcmVhZC4gQnV0LCBnaXZlbiB0aGF0IGBpbmZvYCBpcyB6ZXJvZWQsIGFuZCB0aGUgYElFRUU4MDIxMV9TS0JfQ0JgIGlzIGFzc3VtZWQgdG8gYmUgaW5pdGlhbGl6ZWQuIFRoZXJlIGlzIG5vdCBhbiB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZSBpbiB0aGUgY29kZSBhcyBkZXNjcmliZWQuCgpUaGUgcmVhbCBwcm9ibGVtLCB0aG91Z2gsIGFwcGVhcnMgdG8gYmUgYW4gb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3MsIHdoaWNoIGlzIHNvbWV0aGluZyBJJiMzOTttIHZlcnkgZmFtaWxpYXIgd2l0aC4gSXQmIzM5O3MgaGFwcGVuaW5nIGluIGBtYWM4MDIxMS9taW5zdHJlbF9odGAsIHNwZWNpZmljYWxseSBiZWNhdXNlIG9mIGFuIGludmFsaWQgYGlkeGAgdmFsdWUuIFRoZSBjb21tZW50IGV2ZW4gY29uZmlybXMgaXQsIG1lbnRpb25pbmcgdGhhdCB0aGUgJiMzNDtSYXcgaGFyZHdhcmUgVFgtc3RhdHVzIGluZGV4IGlzIHVudmFsaWRhdGVkOyBhIHN0YWxlIG9yIGNvcnJ1cHQgdmFsdWUgaGVyZSBvdmVyZmxvd3MgbWFjODAyMTEvbWluc3RyZWxfaHQmIzM5O3MgcGVyLWdyb3VwIHJhdGUgYXJyYXkmIzM0Oy4gVGhpcyBpcyBhIHRleHRib29rIGV4YW1wbGUgb2YgYSBidWZmZXIgb3ZlcmZsb3csIGFuZCBLQVNBTiBzaG91bGQgaGF2ZSBubyBwcm9ibGVtIGNhdGNoaW5nIHRoaXMuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgbXQ3NngwMl9tYWNfZmlsbF90eF9zdGF0dXNgIGl0c2VsZiB0byBzZWUgaWYgdGhlIHJvb3QgY2F1c2UgY2FuIGJlIHVuY292ZXJlZC4gQnV0IHRoZSBjb3JlIGlzc3VlIGlzIGNsZWFybHkgdGhlIGFycmF5IGFjY2Vzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMTA6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0ODcsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA0ODc6XHRzdGF0aWMgdm9pZFxuIDQ4ODpcdG10NzZ4MDJfbWFjX2ZpbGxfdHhfc3RhdHVzKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2LCBzdHJ1Y3QgbXQ3NngwMl9zdGEgKm1zdGEsXG4gNDg5Olx0XHRcdFx0ICAgc3RydWN0IGllZWU4MDIxMV90eF9pbmZvICppbmZvLFxuIDQ5MDpcdFx0XHRcdCAgIHN0cnVjdCBtdDc2eDAyX3R4X3N0YXR1cyAqc3QsIGludCBuX2ZyYW1lcylcbiA0OTE6XHR7XG4gNDkyOlx0XHRzdHJ1Y3QgaWVlZTgwMjExX3R4X3JhdGUgKnJhdGUgPSBpbmZvLVx1MDAzZXN0YXR1cy5yYXRlcztcbiA0OTM6XHRcdHN0cnVjdCBpZWVlODAyMTFfdHhfcmF0ZSBsYXN0X3JhdGU7XG4gNDk0Olx0XHR1MTYgZmlyc3RfcmF0ZTtcbiA0OTU6XHRcdGludCByZXRyeSA9IHN0LVx1MDAzZXJldHJ5O1xuIDQ5NjpcdFx0aW50IHBoeTtcbiA0OTc6XHRcdGludCBpO1xuIDQ5ODpcdFxuIDQ5OTpcdFx0aWYgKCFuX2ZyYW1lcylcbiA1MDA6XHRcdFx0cmV0dXJuO1xuIDUwMTpcdFxuIDUwMjpcdFx0cGh5ID0gRklFTERfR0VUKE1UX1JYV0lfUkFURV9QSFksIHN0LVx1MDAzZXJhdGUpO1xuIDUwMzpcdFxuIDUwNDpcdFx0aWYgKHN0LVx1MDAzZXBrdGlkIFx1MDAyNiBNVF9QQUNLRVRfSURfSEFTX1JBVEUpIHtcbiA1MDU6XHRcdFx0Zmlyc3RfcmF0ZSA9IHN0LVx1MDAzZXJhdGUgXHUwMDI2IH5NVF9QS1RJRF9SQVRFO1xuIDUwNjpcdFx0XHRmaXJzdF9yYXRlIHw9IHN0LVx1MDAzZXBrdGlkIFx1MDAyNiBNVF9QS1RJRF9SQVRFO1xuIDUwNzpcdFxuIDUwODpcdFx0XHRpZiAobXQ3NngwMl9tYWNfcHJvY2Vzc190eF9yYXRlKFx1MDAyNnJhdGVbMF0sIGZpcnN0X3JhdGUsXG4gNTA5Olx0XHRcdFx0XHRcdFx0ZGV2LVx1MDAzZW1waHkuY2hhbmRlZi5jaGFuLVx1MDAzZWJhbmQpKVxuIDUxMDpcdFx0XHRcdHJldHVybjtcbiA1MTE6XHRcdH0gZWxzZSBpZiAocmF0ZVswXS5pZHggXHUwMDNjIDApIHtcbiA1MTI6XHRcdFx0aWYgKCFtc3RhKVxuIDUxMzpcdFx0XHRcdHJldHVybjtcbiA1MTQ6XHRcbiA1MTU6XHRcdFx0aWYgKG10NzZ4MDJfbWFjX3Byb2Nlc3NfdHhfcmF0ZShcdTAwMjZyYXRlWzBdLCBtc3RhLVx1MDAzZXdjaWQudHhfaW5mbyxcbiA1MTY6XHRcdFx0XHRcdFx0XHRkZXYtXHUwMDNlbXBoeS5jaGFuZGVmLmNoYW4tXHUwMDNlYmFuZCkpXG4gNTE3Olx0XHRcdFx0cmV0dXJuO1xuIDUxODpcdFx0fVxuIDUxOTpcdFxuIDUyMDpcdFx0aWYgKG10NzZ4MDJfbWFjX3Byb2Nlc3NfdHhfcmF0ZShcdTAwMjZsYXN0X3JhdGUsIHN0LVx1MDAzZXJhdGUsXG4gNTIxOlx0XHRcdFx0XHRcdGRldi1cdTAwM2VtcGh5LmNoYW5kZWYuY2hhbi1cdTAwM2ViYW5kKSlcbiA1MjI6XHRcdFx0cmV0dXJuO1xuIDUyMzpcdFxuIDUyNDpcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShpbmZvLVx1MDAzZXN0YXR1cy5yYXRlcyk7IGkmIzQzOyYjNDM7KSB7XG4gNTI1Olx0XHRcdHJldHJ5LS07XG4gNTI2Olx0XHRcdGlmIChpICYjNDM7IDEgPT0gQVJSQVlfU0laRShpbmZvLVx1MDAzZXN0YXR1cy5yYXRlcykpIHtcbiA1Mjc6XHRcdFx0XHRpbmZvLVx1MDAzZXN0YXR1cy5yYXRlc1tpXSA9IGxhc3RfcmF0ZTtcbiA1Mjg6XHRcdFx0XHRpbmZvLVx1MDAzZXN0YXR1cy5yYXRlc1tpXS5jb3VudCA9IG1heF90KGludCwgcmV0cnksIDEpO1xuIDUyOTpcdFx0XHRcdGJyZWFrO1xuIDUzMDpcdFx0XHR9XG4gNTMxOlx0XG4gNTMyOlx0XHRcdG10NzZ4MDJfdHhfcmF0ZV9mYWxsYmFjayhpbmZvLVx1MDAzZXN0YXR1cy5yYXRlcywgaSwgcGh5KTtcbiA1MzM6XHRcdFx0aWYgKGluZm8tXHUwMDNlc3RhdHVzLnJhdGVzW2ldLmlkeCA9PSBsYXN0X3JhdGUuaWR4KVxuIDUzNDpcdFx0XHRcdGJyZWFrO1xuIDUzNTpcdFx0fVxuIDUzNjpcdFxuIDUzNzpcdFx0aWYgKGkgJiM0MzsgMSBcdTAwM2MgQVJSQVlfU0laRShpbmZvLVx1MDAzZXN0YXR1cy5yYXRlcykpIHtcbiA1Mzg6XHRcdFx0aW5mby1cdTAwM2VzdGF0dXMucmF0ZXNbaSAmIzQzOyAxXS5pZHggPSAtMTtcbiA1Mzk6XHRcdFx0aW5mby1cdTAwM2VzdGF0dXMucmF0ZXNbaSAmIzQzOyAxXS5jb3VudCA9IDA7XG4gNTQwOlx0XHR9XG4gNTQxOlx0XG4gNTQyOlx0XHRpbmZvLVx1MDAzZXN0YXR1cy5hbXBkdV9sZW4gPSBuX2ZyYW1lcztcbiA1NDM6XHRcdGluZm8tXHUwMDNlc3RhdHVzLmFtcGR1X2Fja19sZW4gPSBzdC1cdTAwM2VzdWNjZXNzID8gbl9mcmFtZXMgOiAwO1xuIDU0NDpcdFxuIDU0NTpcdFx0aWYgKHN0LVx1MDAzZWFnZ3IpXG4gNTQ2Olx0XHRcdGluZm8tXHUwMDNlZmxhZ3MgfD0gSUVFRTgwMjExX1RYX0NUTF9BTVBEVSB8XG4gNTQ3Olx0XHRcdFx0ICAgICAgIElFRUU4MDIxMV9UWF9TVEFUX0FNUERVO1xuIDU0ODpcdFxuIDU0OTpcdFx0aWYgKCFzdC1cdTAwM2VhY2tfcmVxKVxuIDU1MDpcdFx0XHRpbmZvLVx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9UWF9DVExfTk9fQUNLO1xuIDU1MTpcdFx0ZWxzZSBpZiAoc3QtXHUwMDNlc3VjY2VzcylcbiA1NTI6XHRcdFx0aW5mby1cdTAwM2VmbGFncyB8PSBJRUVFODAyMTFfVFhfU1RBVF9BQ0s7XG4gNTUzOlx0fVxuIDU1NDpcdFxuIDU1NTpcdHZvaWQgbXQ3NngwMl9zZW5kX3R4X3N0YXR1cyhzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldixcbiA1NTY6XHRcdFx0XHQgICAgc3RydWN0IG10NzZ4MDJfdHhfc3RhdHVzICpzdGF0LCB1OCAqdXBkYXRlKVxuIDU1NzpcdHtcbiA1NTg6XHRcdHN0cnVjdCBpZWVlODAyMTFfdHhfaW5mbyBpbmZvID0ge307XG4gNTU5Olx0XHRzdHJ1Y3QgaWVlZTgwMjExX3R4X3N0YXR1cyBzdGF0dXMgPSB7XG4gNTYwOlx0XHRcdC5pbmZvID0gXHUwMDI2aW5mb1xuIDU2MTpcdFx0fTtcbiA1NjI6XHRcdHN0YXRpYyBjb25zdCB1OCBhY190b190aWRbNF0gPSB7XG4gNTYzOlx0XHRcdFtJRUVFODAyMTFfQUNfQkVdID0gMCxcbiA1NjQ6XHRcdFx0W0lFRUU4MDIxMV9BQ19CS10gPSAxLFxuIDU2NTpcdFx0XHRbSUVFRTgwMjExX0FDX1ZJXSA9IDQsXG4gNTY2Olx0XHRcdFtJRUVFODAyMTFfQUNfVk9dID0gNlxuIDU2NzpcdFx0fTtcbiA1Njg6XHRcdHN0cnVjdCBtdDc2X3djaWQgKndjaWQgPSBOVUxMO1xuIDU2OTpcdFx0c3RydWN0IG10NzZ4MDJfc3RhICptc3RhID0gTlVMTDtcbiA1NzA6XHRcdHN0cnVjdCBtdDc2X2RldiAqbWRldiA9IFx1MDAyNmRldi1cdTAwM2VtdDc2O1xuIDU3MTpcdFx0c3RydWN0IHNrX2J1ZmZfaGVhZCBsaXN0O1xuIDU3MjpcdFx0dTMyIGR1cmF0aW9uID0gMDtcbiA1NzM6XHRcdHU4IGN1cl9wa3RpZDtcbiA1NzQ6XHRcdHUzMiBhYyA9IDA7XG4gNTc1Olx0XHRpbnQgbGVuID0gMDtcbiA1NzY6XHRcbiA1Nzc6XHRcdGlmIChzdGF0LVx1MDAzZXBrdGlkID09IE1UX1BBQ0tFVF9JRF9OT19BQ0spXG4gNTc4Olx0XHRcdHJldHVybjtcbiA1Nzk6XHRcbiA1ODA6XHRcdHJjdV9yZWFkX2xvY2soKTtcbiA1ODE6XHRcbiA1ODI6XHRcdHdjaWQgPSBtdDc2X3djaWRfcHRyKGRldiwgc3RhdC1cdTAwM2V3Y2lkKTtcbiA1ODM6XHRcdGlmICh3Y2lkIFx1MDAyNlx1MDAyNiB3Y2lkLVx1MDAzZXN0YSkge1xuIDU4NDpcdFx0XHR2b2lkICpwcml2O1xuIDU4NTpcdFxuIDU4NjpcdFx0XHRwcml2ID0gbXN0YSA9IGNvbnRhaW5lcl9vZih3Y2lkLCBzdHJ1Y3QgbXQ3NngwMl9zdGEsIHdjaWQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAxMDozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MTI1CgkJCQkJCQlvdXRwdXQ6IDExMQoJCQkJCQkJdGhvdWdodHM6IDI2NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBUWCBTdGF0dXMgSXNzdWUqKgoKT2theSwgc28gaGVyZSYjMzk7cyB0aGUgZGVhbC4gSXQgbG9va3MgbGlrZSB3ZSBoYXZlIGEgcG90ZW50aWFsIHByb2JsZW0gd2l0aCB0aGUgYG10NzZ4MDJfbWFjX2ZpbGxfdHhfc3RhdHVzYCBmdW5jdGlvbi4gSXQgc2VlbXMgdGhhdCBpZiB0aGlzIGZ1bmN0aW9uIGJhaWxzIG91dCBlYXJseSwgdGhlIGBpbmZvYCBzdHJ1Y3R1cmUgbWlnaHQgbm90IGJlIGZ1bGx5IHBvcHVsYXRlZC4gSG93ZXZlciwgYGluZm9gICppcyogemVyby1pbml0aWFsaXplZCBpbiBgbXQ3NngwMl9zZW5kX3R4X3N0YXR1c2AsIHNvIHRoYXTigJlzIGEgbWl0aWdhdGluZyBmYWN0b3IuIEFuZCwgaWYgYHN0YXR1cy5za2JgIGlzbiYjMzk7dCBOVUxMLCB0aGVuIGBpbmZvYCBnZXRzIGl0cyBkYXRhIGZyb20gYElFRUU4MDIxMV9TS0JfQ0Ioc3RhdHVzLnNrYilgLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzLCAmIzM0O0lzIHRoZXJlIGFuIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWQgbHVya2luZyBpbiBoZXJlIHNvbWV3aGVyZT8mIzM0OwoKQnV0IGFmdGVyIGEgY2xvc2VyIGxvb2ssIG5vLCB0aGF0JiMzOTtzIG5vdCBpdC4gVGhlIHJvb3QgY2F1c2UgaXMgYSBjbGFzc2ljIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzLCB0cmlnZ2VyZWQgYnkgYSBjb3JydXB0ZWQgb3Igc3RhbGUgaGFyZHdhcmUgVFgtc3RhdHVzIGluZGV4LiBUaGUgZXhpc3RpbmcgY29kZSBpc24mIzM5O3QgdmFsaWRhdGluZyB0aGlzIGluZGV4LCBhbmQgdGhhdCYjMzk7cyB0aGUgdnVsbmVyYWJpbGl0eS4gVGhlIHByb3Bvc2VkIHBhdGNoIGFkZHJlc3NlcyB0aGlzIGJ5IGFkZGluZyBib3VuZHMgY2hlY2tpbmcsIHByZXZlbnRpbmcgdGhpcyBPT0IgYWNjZXNzIGZyb20gaGFwcGVuaW5nIGluIHRoZSBmaXJzdCBwbGFjZS4KCkdpdmVuIHRoZSBuYXR1cmUgb2YgdGhlIGJ1ZywgSSBzZWUgbm8gcmVhc29uIHRvIGJlbGlldmUgS01TQU4gaXMgbmVlZGVkIGhlcmUuIFRoZSBwcm9ibGVtIGlzIGEgc2ltcGxlIGFycmF5IGJvdW5kcyB2aW9sYXRpb24uIEtBU0FOIGlzIHBlcmZlY3RseSBjYXBhYmxlIG9mIGNhdGNoaW5nIHRoYXQgdHlwZSBvZiBlcnJvci4gV2UgYXJlIG5vdCBkZWFsaW5nIHdpdGggdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgYW55IGluZm8gbGVha3MgaGVyZS4gVGhlIGZpeCBpcyBhIGNsZWFuIGJvdW5kcyBjaGVjaywgYW5kIHRoYXTigJlzIHByZWNpc2VseSB3aGF0IEtBU0FOIGV4Y2VscyBhdCBkZXRlY3RpbmcuIFRoaXMgaXMgYSBzdHJhaWdodGZvcndhcmQgS0FTQU4gaXNzdWUuIFNvLCBJJiMzOTttIGNvbmZpZGVudCB3ZSBjYW4gcHJvY2VlZCB3aXRob3V0IHRoZSBjb21wbGV4aXR5IG9mIEtNU0FOLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAxMDozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2VzcyBidWcgY2F1c2VkIGJ5IGFuIHVudmFsaWRhdGVkIGhhcmR3YXJlIFRYLXN0YXR1cyBpbmRleCBvdmVyZmxvd2luZyB0aGUgbWFjODAyMTEvbWluc3RyZWxfaHQgcGVyLWdyb3VwIHJhdGUgYXJyYXkuIE91dC1vZi1ib3VuZHMgYWNjZXNzZXMgYXJlIHJlbGlhYmx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIG1vZGlmeSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIGluZm8tbGVha3MsIG9yIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTiB0byBkZXRlY3QuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2VzcyBidWcgY2F1c2VkIGJ5IGFuIHVudmFsaWRhdGVkIGhhcmR3YXJlIFRYLXN0YXR1cyBpbmRleCBvdmVyZmxvd2luZyB0aGUgbWFjODAyMTEvbWluc3RyZWxfaHQgcGVyLWdyb3VwIHJhdGUgYXJyYXkuIE91dC1vZi1ib3VuZHMgYWNjZXNzZXMgYXJlIHJlbGlhYmx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIG1vZGlmeSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIGluZm8tbGVha3MsIG9yIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTiB0byBkZXRlY3QuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDEwOjIxOjEzLjEwNzMxMjM2N1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMTYxMzE0NzEyNjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTVQ3NngwVVwiLFxuICAgIFwiTVQ3NngyVVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm10NzZ4MDJfc2VuZF90eF9zdGF0dXNcIixcbiAgICBcIm10NzZ4MDJfdHhfc3RhdHVzX2RhdGFcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzIGJ1ZyBjYXVzZWQgYnkgYW4gdW52YWxpZGF0ZWQgaGFyZHdhcmUgVFgtc3RhdHVzIGluZGV4IG92ZXJmbG93aW5nIHRoZSBtYWM4MDIxMS9taW5zdHJlbF9odCBwZXItZ3JvdXAgcmF0ZSBhcnJheS4gT3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBhcmUgcmVsaWFibHkgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgbW9kaWZ5IGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgaW5mby1sZWFrcywgb3IgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOIHRvIGRldGVjdC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyB0byBgbXQ3NngwMl9tYWNfcHJvY2Vzc190eF9yYXRlYCB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzIGluIG1hYzgwMjExL21pbnN0cmVsX2h0LiBUaGlzIGlzIHJlYWNoYWJsZSB2aWEgVVNCIGZ1enppbmcgb2YgdGhlIG1lZGlhdGVrIG10NzZ4MHUgYW5kIG10NzZ4MnUgZHJpdmVycy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMTA6MjE6MTMuMTA3MzE5NTE3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTIzMjQ1NzY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMTFjNmY4NWIwZGE1YmY5NDcwZjU5NGQ5ZTkwZjk3MGJjZWNjMzUyOFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEF1ZyAyNiAxMDoyMToxMSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmNcXG5pbmRleCAxNGVlNWIzYjk0ZDMxLi5kNzczNTZhMmVjODAzIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuY1xcbkBAIC0zMDIsMTAgKzMwMiwyMiBAQCBtdDc2eDAyX21hY19wcm9jZXNzX3R4X3JhdGUoc3RydWN0IGllZWU4MDIxMV90eF9yYXRlICp0eHJhdGUsIHUxNiByYXRlLFxcbiBcXHRcXHR0eHJhdGUtXFx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9UWF9SQ19HUkVFTl9GSUVMRDtcXG4gXFx0XFx0ZmFsbHRocm91Z2g7XFxuIFxcdGNhc2UgTVRfUEhZX1RZUEVfSFQ6XFxuK1xcdFxcdC8qIFJhdyBoYXJkd2FyZSBUWC1zdGF0dXMgaW5kZXggaXMgdW52YWxpZGF0ZWQ7IGEgc3RhbGUgb3JcXG4rXFx0XFx0ICogY29ycnVwdCB2YWx1ZSBoZXJlIG92ZXJmbG93cyBtYWM4MDIxMS9taW5zdHJlbF9odCdzXFxuK1xcdFxcdCAqIHBlci1ncm91cCByYXRlIGFycmF5IChNQ1NfR1JPVVBfUkFURVMgPT0gMTApIGFuZCBjcmFzaGVzLlxcbitcXHRcXHQgKiBWYWxpZCA4MDIuMTFuIE1DUyBpbmRpY2VzIGFyZSAwLTMxIChmb3VyIHN0cmVhbXMgeCA4KS5cXG4rXFx0XFx0ICovXFxuK1xcdFxcdGlmIChpZHggXFx1MDAzZSAzMSlcXG4rXFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcdFxcdHR4cmF0ZS1cXHUwMDNlZmxhZ3MgfD0gSUVFRTgwMjExX1RYX1JDX01DUztcXG4gXFx0XFx0dHhyYXRlLVxcdTAwM2VpZHggPSBpZHg7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIE1UX1BIWV9UWVBFX1ZIVDpcXG4rXFx0XFx0LyogU2FtZSBvdmVyZmxvdyByaXNrIGZvciBWSFQ6IG1hYzgwMjExIGV4cGVjdHMgdGhlIE1DU1xcbitcXHRcXHQgKiBuaWJibGUgKGJpdHMgMzowKSBpbiByYW5nZSAwLTksIG5zcyBwYWNrZWQgYWJvdmUgaXQuXFxuK1xcdFxcdCAqL1xcbitcXHRcXHRpZiAoKGlkeCBcXHUwMDI2IDB4ZikgXFx1MDAzZSA5KVxcbitcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFx0XFx0dHhyYXRlLVxcdTAwM2VmbGFncyB8PSBJRUVFODAyMTFfVFhfUkNfVkhUX01DUztcXG4gXFx0XFx0dHhyYXRlLVxcdTAwM2VpZHggPSBpZHg7XFxuIFxcdFxcdGJyZWFrO1xcbkBAIC00OTMsMTggKzUwNSwyMSBAQCBtdDc2eDAyX21hY19maWxsX3R4X3N0YXR1cyhzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldiwgc3RydWN0IG10NzZ4MDJfc3RhICptc3RhLFxcbiBcXHRcXHRmaXJzdF9yYXRlID0gc3QtXFx1MDAzZXJhdGUgXFx1MDAyNiB+TVRfUEtUSURfUkFURTtcXG4gXFx0XFx0Zmlyc3RfcmF0ZSB8PSBzdC1cXHUwMDNlcGt0aWQgXFx1MDAyNiBNVF9QS1RJRF9SQVRFO1xcbiBcXG4tXFx0XFx0bXQ3NngwMl9tYWNfcHJvY2Vzc190eF9yYXRlKFxcdTAwMjZyYXRlWzBdLCBmaXJzdF9yYXRlLFxcbi1cXHRcXHRcXHRcXHRcXHQgICAgZGV2LVxcdTAwM2VtcGh5LmNoYW5kZWYuY2hhbi1cXHUwMDNlYmFuZCk7XFxuK1xcdFxcdGlmIChtdDc2eDAyX21hY19wcm9jZXNzX3R4X3JhdGUoXFx1MDAyNnJhdGVbMF0sIGZpcnN0X3JhdGUsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdGRldi1cXHUwMDNlbXBoeS5jaGFuZGVmLmNoYW4tXFx1MDAzZWJhbmQpKVxcbitcXHRcXHRcXHRyZXR1cm47XFxuIFxcdH0gZWxzZSBpZiAocmF0ZVswXS5pZHggXFx1MDAzYyAwKSB7XFxuIFxcdFxcdGlmICghbXN0YSlcXG4gXFx0XFx0XFx0cmV0dXJuO1xcbiBcXG4tXFx0XFx0bXQ3NngwMl9tYWNfcHJvY2Vzc190eF9yYXRlKFxcdTAwMjZyYXRlWzBdLCBtc3RhLVxcdTAwM2V3Y2lkLnR4X2luZm8sXFxuLVxcdFxcdFxcdFxcdFxcdCAgICBkZXYtXFx1MDAzZW1waHkuY2hhbmRlZi5jaGFuLVxcdTAwM2ViYW5kKTtcXG4rXFx0XFx0aWYgKG10NzZ4MDJfbWFjX3Byb2Nlc3NfdHhfcmF0ZShcXHUwMDI2cmF0ZVswXSwgbXN0YS1cXHUwMDNld2NpZC50eF9pbmZvLFxcbitcXHRcXHRcXHRcXHRcXHRcXHRkZXYtXFx1MDAzZW1waHkuY2hhbmRlZi5jaGFuLVxcdTAwM2ViYW5kKSlcXG4rXFx0XFx0XFx0cmV0dXJuO1xcbiBcXHR9XFxuIFxcbi1cXHRtdDc2eDAyX21hY19wcm9jZXNzX3R4X3JhdGUoXFx1MDAyNmxhc3RfcmF0ZSwgc3QtXFx1MDAzZXJhdGUsXFxuLVxcdFxcdFxcdFxcdCAgICBkZXYtXFx1MDAzZW1waHkuY2hhbmRlZi5jaGFuLVxcdTAwM2ViYW5kKTtcXG4rXFx0aWYgKG10NzZ4MDJfbWFjX3Byb2Nlc3NfdHhfcmF0ZShcXHUwMDI2bGFzdF9yYXRlLCBzdC1cXHUwMDNlcmF0ZSxcXG4rXFx0XFx0XFx0XFx0XFx0ZGV2LVxcdTAwM2VtcGh5LmNoYW5kZWYuY2hhbi1cXHUwMDNlYmFuZCkpXFxuK1xcdFxcdHJldHVybjtcXG4gXFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBUlJBWV9TSVpFKGluZm8tXFx1MDAzZXN0YXR1cy5yYXRlcyk7IGkrKykge1xcbiBcXHRcXHRyZXRyeS0tO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQxMDoyMToxNC42MzEwNzQ0ODNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxMDg3Nzg3NzczNTk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1UNzZ4MFVcIixcbiAgICBcIk1UNzZ4MlVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtdDc2eDAyX3NlbmRfdHhfc3RhdHVzXCIsXG4gICAgXCJtdDc2eDAyX3R4X3N0YXR1c19kYXRhXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgdG8gYG10NzZ4MDJfbWFjX3Byb2Nlc3NfdHhfcmF0ZWAgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2VzcyBpbiBtYWM4MDIxMS9taW5zdHJlbF9odC4gVGhpcyBpcyByZWFjaGFibGUgdmlhIFVTQiBmdXp6aW5nIG9mIHRoZSBtZWRpYXRlayBtdDc2eDB1IGFuZCBtdDc2eDJ1IGRyaXZlcnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDExYzZmODViMGRhNWJmOTQ3MGY1OTRkOWU5MGY5NzBiY2VjYzM1MjhcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyAyNiAxMDoyMToxMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuY1xuaW5kZXggMTRlZTViM2I5NGQzMS4uZDc3MzU2YTJlYzgwMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5jXG5AQCAtMzAyLDEwICszMDIsMjIgQEAgbXQ3NngwMl9tYWNfcHJvY2Vzc190eF9yYXRlKHN0cnVjdCBpZWVlODAyMTFfdHhfcmF0ZSAqdHhyYXRlLCB1MTYgcmF0ZSxcbiBcdFx0dHhyYXRlLVx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9UWF9SQ19HUkVFTl9GSUVMRDtcbiBcdFx0ZmFsbHRocm91Z2g7XG4gXHRjYXNlIE1UX1BIWV9UWVBFX0hUOlxuK1x0XHQvKiBSYXcgaGFyZHdhcmUgVFgtc3RhdHVzIGluZGV4IGlzIHVudmFsaWRhdGVkOyBhIHN0YWxlIG9yXG4rXHRcdCAqIGNvcnJ1cHQgdmFsdWUgaGVyZSBvdmVyZmxvd3MgbWFjODAyMTEvbWluc3RyZWxfaHQnc1xuK1x0XHQgKiBwZXItZ3JvdXAgcmF0ZSBhcnJheSAoTUNTX0dST1VQX1JBVEVTID09IDEwKSBhbmQgY3Jhc2hlcy5cbitcdFx0ICogVmFsaWQgODAyLjExbiBNQ1MgaW5kaWNlcyBhcmUgMC0zMSAoZm91ciBzdHJlYW1zIHggOCkuXG4rXHRcdCAqL1xuK1x0XHRpZiAoaWR4IFx1MDAzZSAzMSlcbitcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdFx0dHhyYXRlLVx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9UWF9SQ19NQ1M7XG4gXHRcdHR4cmF0ZS1cdTAwM2VpZHggPSBpZHg7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBNVF9QSFlfVFlQRV9WSFQ6XG4rXHRcdC8qIFNhbWUgb3ZlcmZsb3cgcmlzayBmb3IgVkhUOiBtYWM4MDIxMSBleHBlY3RzIHRoZSBNQ1NcbitcdFx0ICogbmliYmxlIChiaXRzIDM6MCkgaW4gcmFuZ2UgMC05LCBuc3MgcGFja2VkIGFib3ZlIGl0LlxuK1x0XHQgKi9cbitcdFx0aWYgKChpZHggXHUwMDI2IDB4ZikgXHUwMDNlIDkpXG4rXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHRcdHR4cmF0ZS1cdTAwM2VmbGFncyB8PSBJRUVFODAyMTFfVFhfUkNfVkhUX01DUztcbiBcdFx0dHhyYXRlLVx1MDAzZWlkeCA9IGlkeDtcbiBcdFx0YnJlYWs7XG5AQCAtNDkzLDE4ICs1MDUsMjEgQEAgbXQ3NngwMl9tYWNfZmlsbF90eF9zdGF0dXMoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYsIHN0cnVjdCBtdDc2eDAyX3N0YSAqbXN0YSxcbiBcdFx0Zmlyc3RfcmF0ZSA9IHN0LVx1MDAzZXJhdGUgXHUwMDI2IH5NVF9QS1RJRF9SQVRFO1xuIFx0XHRmaXJzdF9yYXRlIHw9IHN0LVx1MDAzZXBrdGlkIFx1MDAyNiBNVF9QS1RJRF9SQVRFO1xuIFxuLVx0XHRtdDc2eDAyX21hY19wcm9jZXNzX3R4X3JhdGUoXHUwMDI2cmF0ZVswXSwgZmlyc3RfcmF0ZSxcbi1cdFx0XHRcdFx0ICAgIGRldi1cdTAwM2VtcGh5LmNoYW5kZWYuY2hhbi1cdTAwM2ViYW5kKTtcbitcdFx0aWYgKG10NzZ4MDJfbWFjX3Byb2Nlc3NfdHhfcmF0ZShcdTAwMjZyYXRlWzBdLCBmaXJzdF9yYXRlLFxuK1x0XHRcdFx0XHRcdGRldi1cdTAwM2VtcGh5LmNoYW5kZWYuY2hhbi1cdTAwM2ViYW5kKSlcbitcdFx0XHRyZXR1cm47XG4gXHR9IGVsc2UgaWYgKHJhdGVbMF0uaWR4IFx1MDAzYyAwKSB7XG4gXHRcdGlmICghbXN0YSlcbiBcdFx0XHRyZXR1cm47XG4gXG4tXHRcdG10NzZ4MDJfbWFjX3Byb2Nlc3NfdHhfcmF0ZShcdTAwMjZyYXRlWzBdLCBtc3RhLVx1MDAzZXdjaWQudHhfaW5mbyxcbi1cdFx0XHRcdFx0ICAgIGRldi1cdTAwM2VtcGh5LmNoYW5kZWYuY2hhbi1cdTAwM2ViYW5kKTtcbitcdFx0aWYgKG10NzZ4MDJfbWFjX3Byb2Nlc3NfdHhfcmF0ZShcdTAwMjZyYXRlWzBdLCBtc3RhLVx1MDAzZXdjaWQudHhfaW5mbyxcbitcdFx0XHRcdFx0XHRkZXYtXHUwMDNlbXBoeS5jaGFuZGVmLmNoYW4tXHUwMDNlYmFuZCkpXG4rXHRcdFx0cmV0dXJuO1xuIFx0fVxuIFxuLVx0bXQ3NngwMl9tYWNfcHJvY2Vzc190eF9yYXRlKFx1MDAyNmxhc3RfcmF0ZSwgc3QtXHUwMDNlcmF0ZSxcbi1cdFx0XHRcdCAgICBkZXYtXHUwMDNlbXBoeS5jaGFuZGVmLmNoYW4tXHUwMDNlYmFuZCk7XG4rXHRpZiAobXQ3NngwMl9tYWNfcHJvY2Vzc190eF9yYXRlKFx1MDAyNmxhc3RfcmF0ZSwgc3QtXHUwMDNlcmF0ZSxcbitcdFx0XHRcdFx0ZGV2LVx1MDAzZW1waHkuY2hhbmRlZi5jaGFuLVx1MDAzZWJhbmQpKVxuK1x0XHRyZXR1cm47XG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKGluZm8tXHUwMDNlc3RhdHVzLnJhdGVzKTsgaSsrKSB7XG4gXHRcdHJldHJ5LS07XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQxMDoyMToxNC42MzEwNzY3NTNaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2ODY3MjgwODExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHdpdGhpbiB0aGUgYG10NzZ4MDJfbWFjLmNgIGZpbGUgb2YgdGhlIE1lZGlhVGVrIHdpcmVsZXNzIGRyaXZlci4gSXQncyBmb2N1c2VkIG9uIGJvdW5kcyBjaGVja2luZyBmb3IgdGhlIGBpZHhgIHZhcmlhYmxlIHdoZW4gZGVhbGluZyB3aXRoIEhUIGFuZCBWSFQgUEhZIHR5cGVzIGluIHRoZSBgbXQ3NngwMl9tYWNfcHJvY2Vzc190eF9yYXRlYCBmdW5jdGlvbi4gSWYgYGlkeGAgaXMgb3V0IG9mIGJvdW5kcywgaXQgbm93IHJldHVybnMgYC1FSU5WQUxgLCB3aGljaCBpcyBnb29kIHByYWN0aWNlLiBUaGUgc2Vjb25kIHBhcnQgbW9kaWZpZXMgYG10NzZ4MDJfbWFjX2ZpbGxfdHhfc3RhdHVzYCB0byBjaGVjayB0aGUgcmVzdWx0IG9mIHRoZSBmb3JtZXIgZnVuY3Rpb24gYW5kIHJldHVybiBlYXJseSwgdGhlcmVieSBhdm9pZGluZyBmdXJ0aGVyIHByb2Nlc3NpbmcgaWYgc29tZXRoaW5nIGdvZXMgd3Jvbmcgd2l0aCB0aGUgcmF0ZSBzZWxlY3Rpb24uIFRoaXMgc3VnZ2VzdHMgdGhlIGludGVudGlvbiBvZiB0aGUgcGF0Y2ggaXMgdG8gZW5oYW5jZSByb2J1c3RuZXNzLCBwb3RlbnRpYWxseSB0byBtaXRpZ2F0ZSBhZ2FpbnN0IHNvbWUgZm9ybSBvZiBvdXQtb2YtYm91bmRzIGFjY2Vzcy5cblxuTXkgaW1tZWRpYXRlIHRob3VnaHRzIGdvIHRvIGZ1enppbmcgcG90ZW50aWFsLiBTaW5jZSBpdCdzIGEgd2lyZWxlc3MgZHJpdmVyLCBgbWFjODAyMTFfaHdzaW1gIGNvbWVzIHRvIG1pbmQgYXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBIb3dldmVyLCB0aGlzIGlzIHNwZWNpZmljYWxseSBmb3IgTWVkaWFUZWsncyBoYXJkd2FyZSwgc28gSSdtIHdvbmRlcmluZyBpZiBhIHR5cGljYWwgaGFyZHdhcmUtYWdub3N0aWMgc2V0dXAgd2lsbCBzdWZmaWNlLiBNeSBwYXN0IGV4cGVyaWVuY2Ugc3VnZ2VzdHMgdGhhdCB0aGVzZSBzcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXJzIGFyZSB1c3VhbGx5IHRyaWNraWVyIHRvIHRlc3Qgd2l0aG91dCB0aGUgYWN0dWFsIGhhcmR3YXJlIGluIHBsYWNlLiBCdXQgY291bGQgSSB2aXJ0dWFsaXplIGl0IGluIFFFTVU/IEFuZCwgYSB0aG91Z2h0IGp1c3QgcG9wcGVkIHVwOiBpcyB0aGlzIGRyaXZlciBhIFVTQiBkcml2ZXI/IFVTQiBkcml2ZXJzIGFyZSBlYXNpZXIgdG8gZnV6eiBzaW5jZSB3ZSBjYW4gdXRpbGl6ZSBhIGR1bW15IEhDRCBvciB2aGNpIHRvIHRlc3QgdGhlbS4gTGV0IG1lIGNoZWNrIGlmIHRoZXNlIGZ1bmN0aW9ucywgYG10NzZ4MDJfbWFjX2ZpbGxfdHhfc3RhdHVzYCBvciBgbXQ3NngwMl9tYWNfcHJvY2Vzc190eF9yYXRlYCwgaGF2ZSBhbnkgVVNCIGNvbm5lY3Rpb25zLiBBIHF1aWNrIGNvZGUgc2VhcmNoIHNob3VsZCBjbGFyaWZ5IHRoYXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3NDIsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOTgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQxMDoyMToyMS40OTgzNjAwNzRaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE5NDM5MTkyNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc2eDAyX21hY19maWxsX3R4X3N0YXR1c1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmM9NDg3PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5jOjQ4ODptdDc2eDAyX21hY19maWxsX3R4X3N0YXR1cyhzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldiwgc3RydWN0IG10NzZ4MDJfc3RhICptc3RhLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuYy00ODktXFx0XFx0XFx0ICAgc3RydWN0IGllZWU4MDIxMV90eF9pbmZvICppbmZvLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5jPTU1NT12b2lkIG10NzZ4MDJfc2VuZF90eF9zdGF0dXMoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmMtNjIyLVxcdFxcdGN1cl9wa3RpZCA9IG1zdGEtXFx1MDAzZXN0YXR1cy5wa3RpZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmM6NjIzOlxcdFxcdG10NzZ4MDJfbWFjX2ZpbGxfdHhfc3RhdHVzKGRldiwgbXN0YSwgc3RhdHVzLmluZm8sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5jLTYyNC1cXHRcXHRcXHRcXHRcXHQgICBcXHUwMDI2bXN0YS1cXHUwMDNlc3RhdHVzLCBtc3RhLVxcdTAwM2VuX2ZyYW1lcyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmMtNjMwLVxcdFxcdGN1cl9wa3RpZCA9IHN0YXQtXFx1MDAzZXBrdGlkO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuYzo2MzE6XFx0XFx0bXQ3NngwMl9tYWNfZmlsbF90eF9zdGF0dXMoZGV2LCBtc3RhLCBzdGF0dXMuaW5mbywgc3RhdCwgMSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5jLTYzMi1cXHRcXHQqdXBkYXRlID0gMTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMTA6MjE6MjMuNjkyNzU3MzA5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTI1ODIyNjI4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIG10NzZ4MDJfbWFjLmMgRGVwZW5kZW5jaWVzKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoZSBgbXQ3NngwMl9tYWMuY2AgZHJpdmVyLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGZpZ3VyZSBvdXQgaXRzIHVzYWdlIC0gd2hpY2ggaGFyZHdhcmUgcGxhdGZvcm1zIGFuZCBhc3NvY2lhdGVkIGRyaXZlcnMgYXJlIGxldmVyYWdpbmcgdGhpcyBwYXJ0aWN1bGFyIE1BQyBsYXllciBtb2R1bGUuIEknbSB0aGlua2luZyBvZiBxdWlja2x5IGlkZW50aWZ5aW5nIGFsbCB0aGUgY2FsbGluZyBkcml2ZXJzIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlIGFuZCBwb3RlbnRpYWwgaW1wYWN0IG9mIGFueSBjaGFuZ2VzIEkgbWlnaHQgbWFrZSwgb3IgaXNzdWVzIEkgbWlnaHQgZW5jb3VudGVyLiBJcyBpdCBqdXN0IGEgbmljaGUgY2FyZCBvciBpcyBpdCBzb21ldGhpbmcgbW9yZSB3aWRlbHkgdXNlZD8gSSBuZWVkIHRvIGJ1aWxkIGEgbWVudGFsIG1hcCBvZiB0aGUgZGVwZW5kZW5jeSB0cmVlLiBJJ2xsIG5lZWQgdG8ga25vdyB3aGljaCBwbGF0Zm9ybXMgYXJlIHVzaW5nIHRoaXMgYW5kIHdoeSB0aGlzIHBhcnRpY3VsYXIgZHJpdmVyIHdhcyB1c2VkIG92ZXIgb3RoZXJzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTI3LCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMTA6MjE6MjguOTUwOTg1NTg2WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMDAxNTc4MTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3NngwMl9zZW5kX3R4X3N0YXR1c1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmM9NDg4PW10NzZ4MDJfbWFjX2ZpbGxfdHhfc3RhdHVzKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2LCBzdHJ1Y3QgbXQ3NngwMl9zdGEgKm1zdGEsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmMtNTU0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuYzo1NTU6dm9pZCBtdDc2eDAyX3NlbmRfdHhfc3RhdHVzKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuYy01NTYtXFx0XFx0XFx0ICAgIHN0cnVjdCBtdDc2eDAyX3R4X3N0YXR1cyAqc3RhdCwgdTggKnVwZGF0ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuYz04OTE9dm9pZCBtdDc2eDAyX21hY19wb2xsX3R4X3N0YXR1cyhzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldiwgYm9vbCBpcnEpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmMtOTEyLVxcdFxcdGlmICghaXJxKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5jOjkxMzpcXHRcXHRcXHRtdDc2eDAyX3NlbmRfdHhfc3RhdHVzKGRldiwgXFx1MDAyNnN0YXQsIFxcdTAwMjZ1cGRhdGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuYy05MTQtXFx0XFx0XFx0Y29udGludWU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmg9MTgzPWJvb2wgbXQ3NngwMl9tYWNfbG9hZF90eF9zdGF0dXMoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5oLTE4NC1cXHRcXHRcXHRcXHRzdHJ1Y3QgbXQ3NngwMl90eF9zdGF0dXMgKnN0YXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuaDoxODU6dm9pZCBtdDc2eDAyX3NlbmRfdHhfc3RhdHVzKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuaC0xODYtXFx0XFx0XFx0ICAgIHN0cnVjdCBtdDc2eDAyX3R4X3N0YXR1cyAqc3RhdCwgdTggKnVwZGF0ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbW1pby5jPTEzMD1zdGF0aWMgdm9pZCBtdDc2eDAyX3Byb2Nlc3NfdHhfc3RhdHVzX2ZpZm8oc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbW1pby5jLTEzNS1cXHR3aGlsZSAoa2ZpZm9fZ2V0KFxcdTAwMjZkZXYtXFx1MDAzZXR4c3RhdHVzX2ZpZm8sIFxcdTAwMjZzdGF0KSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbW1pby5jOjEzNjpcXHRcXHRtdDc2eDAyX3NlbmRfdHhfc3RhdHVzKGRldiwgXFx1MDAyNnN0YXQsIFxcdTAwMjZ1cGRhdGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tbWlvLmMtMTM3LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl90eHJ4LmM9MTIzPWJvb2wgbXQ3NngwMl90eF9zdGF0dXNfZGF0YShzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHU4ICp1cGRhdGUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdHhyeC5jLTEzMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdHhyeC5jOjEzMTpcXHRtdDc2eDAyX3NlbmRfdHhfc3RhdHVzKGRldiwgXFx1MDAyNnN0YXQsIHVwZGF0ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3R4cnguYy0xMzItXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDEwOjIxOjMxLjE1MTE0OTg1MVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxOTYxMTU2MDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyBNVDc2eDAyIFVTQiBEcml2ZXIgSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCBzbyB0aGUgTVQ3NngwMiBsaWJyYXJ5IGlzIHByZXR0eSB1YmlxdWl0b3VzIGZvciB0aGF0IGRldmljZSBmYW1pbHkuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IGlmIHRoZXJlJ3MgYSB3ZWxsLWVzdGFibGlzaGVkIFVTQiBkcml2ZXIgdGhhdCBsZXZlcmFnZXMgdGhpcy4gRmluZGluZyBvbmUgd291bGQgZGVmaW5pdGVseSBzdHJlYW1saW5lIG15IGN1cnJlbnQgcHJvamVjdC4gSXQncyBhIG5hdHVyYWwgcXVlc3Rpb24gdG8gcG9zZSB3aGVuIHdvcmtpbmcgd2l0aCB0aGVzZSB0eXBlcyBvZiBkZXZpY2VzOyB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgc3lzdGVtIGNvbXBvbmVudHMgaW50ZXJhY3QgaXMga2V5IHRvIGEgc29saWQgaW1wbGVtZW50YXRpb24uIEknbGwgbmVlZCB0byBkaWcgaW4gYW5kIHNlZSB3aGF0J3Mgb3V0IHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MTA2LCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMTA6MjE6MzUuMzQ3MjY3MzI0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MTYzNTQ0ODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3NngwMl91c2JcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZT0zMT1tdDc2eDAyLWxpYi15IDo9IG10NzZ4MDJfdXRpbC5vIG10NzZ4MDJfbWFjLm8gbXQ3NngwMl9tY3UubyBcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlLTM1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGU6MzY6bXQ3NngwMi11c2IteSA6PSBtdDc2eDAyX3VzYl9tY3UubyBtdDc2eDAyX3VzYl9jb3JlLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlLTM3LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMTEtI2luY2x1ZGUgXFxcIm1jdS5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jOjEyOiNpbmNsdWRlIFxcXCIuLi9tdDc2eDAyX3VzYi5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTEzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiX21jdS5jLTEwLSNpbmNsdWRlIFxcXCJtY3UuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2JfbWN1LmM6MTE6I2luY2x1ZGUgXFxcIi4uL210NzZ4MDJfdXNiLmhcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiX21jdS5jLTEyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9jb3JlLmMtNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX2NvcmUuYzo2OiNpbmNsdWRlIFxcXCJtdDc2eDAyX3VzYi5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfY29yZS5jLTctXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX21jdS5jLTEwLSNpbmNsdWRlIFxcXCJtdDc2eDAyX21jdS5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfbWN1LmM6MTE6I2luY2x1ZGUgXFxcIm10NzZ4MDJfdXNiLmhcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9tY3UuYy0xMi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3VzYi5jLTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvdXNiLmM6OTojaW5jbHVkZSBcXFwiLi4vbXQ3NngwMl91c2IuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2IuYy0xMC0jaW5jbHVkZSBcXFwibXQ3NngydS5oXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvdXNiX2luaXQuYy0xMC0jaW5jbHVkZSBcXFwiLi4vbXQ3NngwMl9waHkuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2JfaW5pdC5jOjExOiNpbmNsdWRlIFxcXCIuLi9tdDc2eDAyX3VzYi5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3VzYl9pbml0LmMtMTItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2JfbWFpbi5jLTYtI2luY2x1ZGUgXFxcIm10NzZ4MnUuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2JfbWFpbi5jOjc6I2luY2x1ZGUgXFxcIi4uL210NzZ4MDJfdXNiLmhcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvdXNiX21haW4uYy04LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvdXNiX21jdS5jLTktI2luY2x1ZGUgXFxcImVlcHJvbS5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3VzYl9tY3UuYzoxMDojaW5jbHVkZSBcXFwiLi4vbXQ3NngwMl91c2IuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2JfbWN1LmMtMTEtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDEwOjIxOjM3LjI2MzYyNjY2M1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYwNzE0ODg1NzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyB0aGUgTVQ3NngwMiBEcml2ZXI6IEEgUHJvbWlzaW5nIFRhcmdldCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZSBgbXQ3NngwMmAgZHJpdmVyLCBhbmQgaXQncyBjbGVhciB0aGF0IGl0J3MgbGV2ZXJhZ2VkIGJ5IGBtdDc2eDB1YCBhbmQgYG10NzZ4MnVgLCBib3RoIFVTQiBkcml2ZXJzLiBUaGF0J3MgZ29vZCBuZXdzOyBVU0IgZHJpdmVycyBhcmUgYWNjZXNzaWJsZSBmb3IgZnV6emluZyB2aWEgc3l6a2FsbGVyJ3MgVVNCIGZ1enppbmcgY2FwYWJpbGl0aWVzIHVzaW5nIGBkdW1teV9oY2RgIG9yIGB2aGNpYC4gVGhpcyBtZWFucyB0aGUgY29kZSAqaXMqIHJlYWNoYWJsZSBhbmQgbGlrZWx5IHdvcnRoIHRoZSBlZmZvcnQuXG5cbk15IGluaXRpYWwgZm9jdXMgaXMgb24gdGhlIGBtdDc2eDAyX21hY19maWxsX3R4X3N0YXR1c2AgZnVuY3Rpb24uIEl0IGxvb2tzIGxpa2UgaXQncyBjYWxsZWQgd2l0aGluIGBtdDc2eDAyX3NlbmRfdHhfc3RhdHVzYCwgd2hpY2gsIGluIHR1cm4sIGlzIGNhbGxlZCBmcm9tIGVpdGhlciBgbXQ3NngwMl90eF9zdGF0dXNfZGF0YWAgb3IgYG10NzZ4MDJfcHJvY2Vzc190eF9zdGF0dXNfZmlmb2AuIE5vdywgdGhlIGNydWNpYWwgc3RlcCBpcyB0byB0cmFjZSBiYWNrIHRvIHdoZXJlIGBtdDc2eDAyX3R4X3N0YXR1c19kYXRhYCBpcyBhY3R1YWxseSBpbnZva2VkLiBUaGF0J3Mgd2hlcmUgSSBuZWVkIHRvIGZvY3VzIG15IGFuYWx5c2lzIHRvIHVuZGVyc3RhbmQgaG93IHRvIGdldCB0byB0aGUgY29yZSBmdW5jdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NjMxOCwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQxMDoyMTo0My4zMzUxMTcxMjdaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxNjEwNzY1MTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3NngwMl90eF9zdGF0dXNfZGF0YVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYz0yMTM9c3RhdGljIGludCBtdDc2eDB1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50ZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTIyMy1cXHRcXHQudHhfY29tcGxldGVfc2tiID0gbXQ3NngwMnVfdHhfY29tcGxldGVfc2tiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jOjIyNDpcXHRcXHQudHhfc3RhdHVzX2RhdGEgPSBtdDc2eDAyX3R4X3N0YXR1c19kYXRhLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTIyNS1cXHRcXHQucnhfc2tiID0gbXQ3NngwMl9xdWV1ZV9yeF9za2IsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDIuaD0xODg9dm9pZCBtdDc2eDAyX3JlbW92ZV9oZHJfcGFkKHN0cnVjdCBza19idWZmICpza2IsIGludCBsZW4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMi5oOjE4OTpib29sIG10NzZ4MDJfdHhfc3RhdHVzX2RhdGEoc3RydWN0IG10NzZfZGV2ICptZGV2LCB1OCAqdXBkYXRlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDIuaC0xOTAtdm9pZCBtdDc2eDAyX3F1ZXVlX3J4X3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIGVudW0gbXQ3Nl9yeHFfaWQgcSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl90eHJ4LmM9MTIxPUVYUE9SVF9TWU1CT0xfR1BMKG10NzZ4MDJfdHhfc2V0X3R4cHdyX2F1dG8pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl90eHJ4LmMtMTIyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl90eHJ4LmM6MTIzOmJvb2wgbXQ3NngwMl90eF9zdGF0dXNfZGF0YShzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHU4ICp1cGRhdGUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3R4cnguYy0xMjQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3R4cnguYy0xMzQtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl90eHJ4LmM6MTM1OkVYUE9SVF9TWU1CT0xfR1BMKG10NzZ4MDJfdHhfc3RhdHVzX2RhdGEpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl90eHJ4LmMtMTM2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvdXNiLmM9MzI9c3RhdGljIGludCBtdDc2eDJ1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvdXNiLmMtNDItXFx0XFx0LnR4X2NvbXBsZXRlX3NrYiA9IG10NzZ4MDJ1X3R4X2NvbXBsZXRlX3NrYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2IuYzo0MzpcXHRcXHQudHhfc3RhdHVzX2RhdGEgPSBtdDc2eDAyX3R4X3N0YXR1c19kYXRhLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3VzYi5jLTQ0LVxcdFxcdC5yeF9za2IgPSBtdDc2eDAyX3F1ZXVlX3J4X3NrYixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMTA6MjE6NDUuNDk2MjA0MjkzWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0NTgxNTg1MjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNVDc2eDAyIFRYIFN0YXR1cyBGdW5jdGlvbioqXG5cbk9rYXksIHNvIEkgc2VlIHRoaXMgYG10NzZ4MDJfdHhfc3RhdHVzX2RhdGFgIGZ1bmN0aW9uLiBUaGF0IG5hbWUgcmluZ3MgYSBiZWxsOyBpdCdzIHRoZSBgLnR4X3N0YXR1c19kYXRhYCBjYWxsYmFjayB3aXRoaW4gYG10NzZfZHJpdmVyX29wc2AsIHJpZ2h0PyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSBiZXR0ZXIuIE15IGZpcnN0IHN0ZXAgaXMgdG8gZmlndXJlIG91dCB0aGUgY2FsbGluZyBjb250ZXh0IOKAkyB3aGVyZSBpcyB0aGF0IGNhbGxiYWNrIGFjdHVhbGx5ICp1c2VkKj8gVGltZSB0byB0cmFjZSBpdHMgaW52b2NhdGlvbiBwb2ludHMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBsb2dpYyBmbG93IGhlcmUuIEknbGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoYXQgYC50eF9zdGF0dXNfZGF0YWAgZmllbGQgd2l0aGluIGBtdDc2X2RyaXZlcl9vcHNgIGlzIGFjdHVhbGx5ICpjYWxsZWQqLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGRyaXZlciBwcm9jZXNzZXMgdHJhbnNtaXQgc3RhdHVzIGluZm9ybWF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NjMxLCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMTA6MjE6NDguOTU0MzY0NzY4WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTg2Njk0ODU1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInR4X3N0YXR1c19kYXRhXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTU0Mz1zdHJ1Y3QgbXQ3Nl9kcml2ZXJfb3BzIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTU2MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDo1NjI6XFx0Ym9vbCAoKnR4X3N0YXR1c19kYXRhKShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgdTggKnVwZGF0ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtNTYzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbXQ3NjE1Lmg9NTQzPWludCBtdDc2NjNfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LCB2b2lkICp0eHdpX3B0cixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L210NzYxNS5oLTU0Ni1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgbXQ3Nl90eF9pbmZvICp0eF9pbmZvKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tdDc2MTUuaDo1NDc6Ym9vbCBtdDc2NjNfdXNiX3NkaW9fdHhfc3RhdHVzX2RhdGEoc3RydWN0IG10NzZfZGV2ICptZGV2LCB1OCAqdXBkYXRlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tdDc2MTUuaC01NDgtdm9pZCBtdDc2NjNfdXNiX3NkaW9fdHhfY29tcGxldGVfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3NkaW8uYz03Nj1zdGF0aWMgaW50IG10NzY2M3NfcHJvYmUoc3RydWN0IHNkaW9fZnVuYyAqZnVuYyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3NkaW8uYy04My1cXHRcXHQudHhfY29tcGxldGVfc2tiID0gbXQ3NjYzX3VzYl9zZGlvX3R4X2NvbXBsZXRlX3NrYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9zZGlvLmM6ODQ6XFx0XFx0LnR4X3N0YXR1c19kYXRhID0gbXQ3NjYzX3VzYl9zZGlvX3R4X3N0YXR1c19kYXRhLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3NkaW8uYy04NS1cXHRcXHQucnhfc2tiID0gbXQ3NjE1X3F1ZXVlX3J4X3NrYixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jPTExMj1zdGF0aWMgaW50IG10NzY2M3VfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVzYl9pbnRmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtMTE5LVxcdFxcdC50eF9jb21wbGV0ZV9za2IgPSBtdDc2NjNfdXNiX3NkaW9fdHhfY29tcGxldGVfc2tiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjEyMDpcXHRcXHQudHhfc3RhdHVzX2RhdGEgPSBtdDc2NjNfdXNiX3NkaW9fdHhfc3RhdHVzX2RhdGEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtMTIxLVxcdFxcdC5yeF9za2IgPSBtdDc2MTVfcXVldWVfcnhfc2tiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYz0xMzE9c3RhdGljIHZvaWQgbXQ3NjYzX3VzYl9zZGlvX3JhdGVfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTE1NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jOjE1Njpib29sIG10NzY2M191c2Jfc2Rpb190eF9zdGF0dXNfZGF0YShzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHU4ICp1cGRhdGUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0xNTcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0xNjUtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmM6MTY2OkVYUE9SVF9TWU1CT0xfR1BMKG10NzY2M191c2Jfc2Rpb190eF9zdGF0dXNfZGF0YSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0xNjctXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYz0yMTM9c3RhdGljIGludCBtdDc2eDB1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50ZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTIyMy1cXHRcXHQudHhfY29tcGxldGVfc2tiID0gbXQ3NngwMnVfdHhfY29tcGxldGVfc2tiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jOjIyNDpcXHRcXHQudHhfc3RhdHVzX2RhdGEgPSBtdDc2eDAyX3R4X3N0YXR1c19kYXRhLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTIyNS1cXHRcXHQucnhfc2tiID0gbXQ3NngwMl9xdWV1ZV9yeF9za2IsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDIuaD0xODg9dm9pZCBtdDc2eDAyX3JlbW92ZV9oZHJfcGFkKHN0cnVjdCBza19idWZmICpza2IsIGludCBsZW4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMi5oOjE4OTpib29sIG10NzZ4MDJfdHhfc3RhdHVzX2RhdGEoc3RydWN0IG10NzZfZGV2ICptZGV2LCB1OCAqdXBkYXRlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDIuaC0xOTAtdm9pZCBtdDc2eDAyX3F1ZXVlX3J4X3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIGVudW0gbXQ3Nl9yeHFfaWQgcSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl90eHJ4LmM9MTIxPUVYUE9SVF9TWU1CT0xfR1BMKG10NzZ4MDJfdHhfc2V0X3R4cHdyX2F1dG8pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl90eHJ4LmMtMTIyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl90eHJ4LmM6MTIzOmJvb2wgbXQ3NngwMl90eF9zdGF0dXNfZGF0YShzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHU4ICp1cGRhdGUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3R4cnguYy0xMjQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3R4cnguYy0xMzQtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl90eHJ4LmM6MTM1OkVYUE9SVF9TWU1CT0xfR1BMKG10NzZ4MDJfdHhfc3RhdHVzX2RhdGEpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl90eHJ4LmMtMTM2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvdXNiLmM9MzI9c3RhdGljIGludCBtdDc2eDJ1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvdXNiLmMtNDItXFx0XFx0LnR4X2NvbXBsZXRlX3NrYiA9IG10NzZ4MDJ1X3R4X2NvbXBsZXRlX3NrYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2IuYzo0MzpcXHRcXHQudHhfc3RhdHVzX2RhdGEgPSBtdDc2eDAyX3R4X3N0YXR1c19kYXRhLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3VzYi5jLTQ0LVxcdFxcdC5yeF9za2IgPSBtdDc2eDAyX3F1ZXVlX3J4X3NrYixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jPTg0MD1FWFBPUlRfU1lNQk9MX0dQTChtdDc5MjFfdXNiX3NkaW9fdHhfY29tcGxldGVfc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy04NDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6ODQyOmJvb2wgbXQ3OTIxX3VzYl9zZGlvX3R4X3N0YXR1c19kYXRhKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdTggKnVwZGF0ZSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy04NDMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtODUxLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo4NTI6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTIxX3VzYl9zZGlvX3R4X3N0YXR1c19kYXRhKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy04NTMtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tdDc5MjEuaD0zMzI9dm9pZCBtdDc5MjFfdXNiX3NkaW9fdHhfY29tcGxldGVfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tdDc5MjEuaC0zMzMtXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgbXQ3Nl9xdWV1ZV9lbnRyeSAqZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbXQ3OTIxLmg6MzM0OmJvb2wgbXQ3OTIxX3VzYl9zZGlvX3R4X3N0YXR1c19kYXRhKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdTggKnVwZGF0ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbXQ3OTIxLmgtMzM1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpby5jPTkwPXN0YXRpYyBpbnQgbXQ3OTIxc19wcm9iZShzdHJ1Y3Qgc2Rpb19mdW5jICpmdW5jLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpby5jLTEwMC1cXHRcXHQudHhfY29tcGxldGVfc2tiID0gbXQ3OTIxX3VzYl9zZGlvX3R4X2NvbXBsZXRlX3NrYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvLmM6MTAxOlxcdFxcdC50eF9zdGF0dXNfZGF0YSA9IG10NzkyMV91c2Jfc2Rpb190eF9zdGF0dXNfZGF0YSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvLmMtMTAyLVxcdFxcdC5yeF9za2IgPSBtdDc5MjFfcXVldWVfcnhfc2tiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM9MTUwPXN0YXRpYyBpbnQgbXQ3OTIxdV9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdXNiX2ludGYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0xNjEtXFx0XFx0LnR4X2NvbXBsZXRlX3NrYiA9IG10NzkyMV91c2Jfc2Rpb190eF9jb21wbGV0ZV9za2IsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM6MTYyOlxcdFxcdC50eF9zdGF0dXNfZGF0YSA9IG10NzkyMV91c2Jfc2Rpb190eF9zdGF0dXNfZGF0YSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0xNjMtXFx0XFx0LnJ4X3NrYiA9IG10NzkyMV9xdWV1ZV9yeF9za2IsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYz0xNDgyPUVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV91c2Jfc2Rpb190eF9jb21wbGV0ZV9za2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0ODMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTQ4NDpib29sIG10NzkyNV91c2Jfc2Rpb190eF9zdGF0dXNfZGF0YShzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHU4ICp1cGRhdGUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQ4NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNDkzLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxNDk0OkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV91c2Jfc2Rpb190eF9zdGF0dXNfZGF0YSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQ5NS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oPTM2Nj12b2lkIG10NzkyNV91c2Jfc2Rpb190eF9jb21wbGV0ZV9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oLTM2Ny1cXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBtdDc2X3F1ZXVlX2VudHJ5ICplKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaDozNjg6Ym9vbCBtdDc5MjVfdXNiX3NkaW9fdHhfc3RhdHVzX2RhdGEoc3RydWN0IG10NzZfZGV2ICptZGV2LCB1OCAqdXBkYXRlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaC0zNjktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYz0xNDM9c3RhdGljIGludCBtdDc5MjV1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50ZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTE1NC1cXHRcXHQudHhfY29tcGxldGVfc2tiID0gbXQ3OTI1X3VzYl9zZGlvX3R4X2NvbXBsZXRlX3NrYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzoxNTU6XFx0XFx0LnR4X3N0YXR1c19kYXRhID0gbXQ3OTI1X3VzYl9zZGlvX3R4X3N0YXR1c19kYXRhLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTE1Ni1cXHRcXHQucnhfc2tiID0gbXQ3OTI1X3F1ZXVlX3J4X3NrYixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvc2Rpby5jPTQ2MT1zdGF0aWMgdm9pZCBtdDc2c19zdGF0dXNfd29ya2VyKHN0cnVjdCBtdDc2X3dvcmtlciAqdylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvc2Rpby5jLTQ4MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3NkaW8uYzo0ODE6XFx0XFx0aWYgKGRldi1cXHUwMDNlZHJ2LVxcdTAwM2V0eF9zdGF0dXNfZGF0YSBcXHUwMDI2XFx1MDAyNiBuZGF0YV9mcmFtZXMgXFx1MDAzZSAwIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9zZGlvLmMtNDgyLVxcdFxcdCAgICAhdGVzdF9hbmRfc2V0X2JpdChNVDc2X1JFQURJTkdfU1RBVFMsIFxcdTAwMjZkZXYtXFx1MDAzZXBoeS5zdGF0ZSkgXFx1MDAyNlxcdTAwMjZcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvc2Rpby5jLTQ5MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3NkaW8uYzo0OTE6c3RhdGljIHZvaWQgbXQ3NnNfdHhfc3RhdHVzX2RhdGEoc3RydWN0IG10NzZfd29ya2VyICp3b3JrZXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9zZGlvLmMtNDkyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvc2Rpby5jLTUwNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3NkaW8uYzo1MDY6XFx0XFx0aWYgKCFkZXYtXFx1MDAzZWRydi1cXHUwMDNldHhfc3RhdHVzX2RhdGEoZGV2LCBcXHUwMDI2dXBkYXRlKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3NkaW8uYy01MDctXFx0XFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3NkaW8uYz02MzU9aW50IG10NzZzX2luaXQoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBzZGlvX2Z1bmMgKmZ1bmMsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3NkaW8uYy02NTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9zZGlvLmM6NjUyOlxcdGVyciA9IG10NzZfd29ya2VyX3NldHVwKGRldi1cXHUwMDNlaHcsIFxcdTAwMjZzZGlvLVxcdTAwM2VzdGF0X3dvcmtlciwgbXQ3NnNfdHhfc3RhdHVzX2RhdGEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9zZGlvLmMtNjUzLVxcdFxcdFxcdFxcdFxcXCJzZGlvLXN0YVxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni91c2IuYz03NTk9c3RhdGljIHZvaWQgbXQ3NnVfc3RhdHVzX3dvcmtlcihzdHJ1Y3QgbXQ3Nl93b3JrZXIgKncpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3VzYi5jLTc5MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3VzYi5jOjc5MTpcXHRpZiAoZGV2LVxcdTAwM2VkcnYtXFx1MDAzZXR4X3N0YXR1c19kYXRhIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni91c2IuYy03OTItXFx0ICAgICF0ZXN0X2FuZF9zZXRfYml0KE1UNzZfUkVBRElOR19TVEFUUywgXFx1MDAyNmRldi1cXHUwMDNlcGh5LnN0YXRlKSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdXNiLmMtNzk1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdXNiLmM6Nzk2OnN0YXRpYyB2b2lkIG10NzZ1X3R4X3N0YXR1c19kYXRhKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3VzYi5jLTc5Ny17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3VzYi5jLTgwOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3VzYi5jOjgxMDpcXHRcXHRpZiAoIWRldi1cXHUwMDNlZHJ2LVxcdTAwM2V0eF9zdGF0dXNfZGF0YShkZXYsIFxcdTAwMjZ1cGRhdGUpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdXNiLmMtODExLVxcdFxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni91c2IuYz0xMDc2PWludCBfX210NzZ1X2luaXQoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni91c2IuYy0xMDgyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdXNiLmM6MTA4MzpcXHRJTklUX1dPUksoXFx1MDAyNnVzYi1cXHUwMDNlc3RhdF93b3JrLCBtdDc2dV90eF9zdGF0dXNfZGF0YSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni91c2IuYy0xMDg0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQxMDoyMTo1MS4xNDEwNjM2MjNaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDMzMTQyMTE3MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgRHJpdmVyIENvbmZpZ3VyYXRpb24gZm9yIE1UNzZ4MDIgRnVuY3Rpb25hbGl0eSoqXG5cbk9rYXksIHNvIEknbSBzZWVpbmcgdGhhdCBgbXQ3NngwMl90eF9zdGF0dXNfZGF0YWAgZ2V0cyB1dGlsaXplZCBpbiBib3RoIGBtdDc2eDB1X3Byb2JlYCBhbmQgYG10NzZ4MnVfcHJvYmVgLiBUaGF0IHN1Z2dlc3RzIHNvbWUgc2hhcmVkIGRhdGEgc3RydWN0dXJlIG9yIGZ1bmN0aW9uIHJlbGF0ZWQgdG8gdHJhbnNtaXQgc3RhdHVzIGlzIGJlaW5nIHVzZWQgYWNyb3NzIHRoZXNlIHNsaWdodGx5IGRpZmZlcmVudCBNZWRpYXRlayBVU0Igd2lyZWxlc3MgZGV2aWNlIHZhcmlhbnRzLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgbGV0J3MgbmFpbCBkb3duIHByZWNpc2VseSB3aGljaCBjb25maWd1cmF0aW9uIG9wdGlvbnMgZ292ZXJuIHRoZSBpbmNsdXNpb24gb2YgdGhlc2UgcHJvYmUgZnVuY3Rpb25zLiBUaGUgY29kZSBpbmRpY2F0ZXMgdGhhdCB3ZSdyZSB0YWxraW5nIGFib3V0IGBDT05GSUdfTVQ3NngwVWAgYW5kIGBDT05GSUdfTVQ3NngyVWAuIFJpZ2h0LCB0aGF0IG1ha2VzIHNlbnNlLiBOb3cgSSBuZWVkIHRvIHF1aWNrbHkgY29uZmlybSB0aGlzIGluIHRoZSByZWxldmFudCBLY29uZmlnIGZpbGVzLiBUaW1lIHRvIGNoZWNrIHRob3NlLCBzcGVjaWZpY2FsbHksIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnYCBhbmQgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL0tjb25maWdgIHRvIHNlZSB0aGUgY29uZGl0aW9ucyB1bmRlciB3aGljaCB0aG9zZSBjb25maWcgc3ltYm9scyBhcmUgYWN0dWFsbHkgZGVmaW5lZCBhbmQgaG93IHRoZXkgcmVsYXRlIHRvIHRoZSBicm9hZGVyIGRyaXZlciBjb25maWd1cmF0aW9uLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGVzZSBkcml2ZXIgY29tcG9uZW50cyBpbnRlZ3JhdGUgaW50byB0aGUgb3ZlcmFsbCBNVDc2IGZyYW1ld29yay5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI0MzgsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMTA6MjE6NTUuNDcyNDg4NDg0WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDcwMzIwNjc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNVDc2eDBVXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWc9Mj1jb25maWcgTVQ3NngwX0NPTU1PTlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZy01LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWc6Njpjb25maWcgTVQ3NngwVVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWctNy1cXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3NngwVSAoVVNCKSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQxMDoyMTo1Ny41NDI4MTMwMTJaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQ0MDg3Nzc3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipEZXBlbmRlbmN5IENoZWNrOiBBIE5lY2Vzc2FyeSBFdmlsIChCdXQgYSBWaXRhbCBPbmUpKipcblxuQWxyaWdodCwgdGltZSB0byBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHRha2UgYSBoYXJkIGxvb2sgYXQgdGhvc2UgZGVwZW5kZW5jaWVzLiBJdCdzIGEgZnVuZGFtZW50YWwgc3RlcCwgcmVhbGx5LiBJIGtub3cgSSBrbm93IHRoZSBjb2RlIHByZXR0eSB3ZWxsLCBidXQgY29tcGxhY2VuY3kgaXMgYSBkYW5nZXJvdXMgZ2FtZSB3aGVuIHlvdSdyZSBkZWFsaW5nIHdpdGggZXh0ZXJuYWwgbGlicmFyaWVzIGFuZCBmcmFtZXdvcmtzLiBJdCdzIHRvbyBlYXN5IHRvIGFzc3VtZSBldmVyeXRoaW5nJ3Mga29zaGVyLCB0aGF0IHRoZSB2ZXJzaW9ucyBhcmUgY29tcGF0aWJsZSwgYW5kIHRoYXQgdGhlIHRyYW5zaXRpdmUgZGVwZW5kZW5jaWVzIGFyZSBhbGwgcGxheWluZyBuaWNlbHkuXG5cbkxldCdzIHN0YXJ0IGJ5IG1hcHBpbmcgdGhlbSBvdXQuLi4gSSdsbCBuZWVkIHRvIGdvIHRocm91Z2ggdGhlIHByb2plY3Qgc3RydWN0dXJlLCBsb29rIGF0IHRoZSBwYWNrYWdlIG1hbmFnZXJzLCBkaWcgaW50byB0aGUgYnVpbGQgY29uZmlndXJhdGlvbnMuLi4gSSBuZWVkIGEgY2xlYXIgcGljdHVyZS4gSXMgdGhlcmUgYW55dGhpbmcgdGhhdCBzZWVtcyBvdXQgb2YgcGxhY2U/IElzIHRoZXJlIGEga25vd24gdnVsbmVyYWJpbGl0eSBpbiB0aGUgdmVyc2lvbiBJJ20gdXNpbmcgdGhhdCBJJ2QgbmVlZCB0byBjb25zaWRlcj8gQXJlIHRoZXJlIGFueSBvYnZpb3VzIGNvbmZsaWN0cyB3YWl0aW5nIHRvIGJpdGUgbWUgbGF0ZXIgZG93biB0aGUgbGluZT8gSSBuZWVkIHRvIGNoZWNrIGZvciBhbnkgZGVwcmVjYXRlZCB2ZXJzaW9ucy5cblxuVGhpcyBpc27igJl0IGp1c3QgYWJvdXQgbWFraW5nIHN1cmUgZXZlcnl0aGluZyAqd29ya3MqIGF0IHRoZSBtb21lbnQ7IGl0J3MgYWJvdXQgc3RhYmlsaXR5IGFuZCBtYWludGFpbmFiaWxpdHkgaW4gdGhlIGxvbmcgcnVuLiBJZiBJIGNhbid0IGd1YXJhbnRlZSBjb21wYXRpYmlsaXR5LCB0aGVuIEkgaGF2ZSB0byBsb2NrIGRvd24gdmVyc2lvbnMuIElmIEkgc2VlIGNvbmZsaWN0aW5nIGRlcGVuZGVuY2llcywgSSBuZWVkIHRvIGdldCByaWQgb2YgdGhlbS4gSXQncyByZWFsbHkgYWJvdXQgYmVpbmcgcHJvYWN0aXZlIHJhdGhlciB0aGFuIHJlYWN0aXZlLlxuXG5BbmQgbGV0J3MgYmUgaG9uZXN0LCBkZXBlbmRlbmN5IGhlbGwgaXMgdGhlIGJhbmUgb2YgbXkgZXhpc3RlbmNlLCBhbmQgaXQgb25seSBnZXRzIHdvcnNlIHRoZSBiaWdnZXIgdGhlIHByb2plY3QgZ2V0cy4gQmV0dGVyIHRvIGFkZHJlc3MgYW55IGlzc3VlcyBub3csIGJlZm9yZSB0aGV5IGJlY29tZSBhIG1hc3NpdmUgaGVhZGFjaGUsIG9yIHdvcnNlLCBjYXVzZSB1bmZvcmVzZWVuIHByb2JsZW1zIGR1cmluZyBkZXBsb3ltZW50LlxuXG5TbywgbGV0J3MgZGl2ZSBpbi4gTGV0J3MgbWFrZSBzdXJlIHRoaW5ncyBhcmUgbG9ja2VkIGRvd24gYW5kIHdlbGwtZG9jdW1lbnRlZC4gT3RoZXJ3aXNlLCBpdCdzIGp1c3QgYSB0aW1lIGJvbWIgd2FpdGluZyB0byBleHBsb2RlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjk4NCwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMTA6MjI6MDEuOTgzNjk0MjkxWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgwNDYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBNVDc2eDBfQ09NTU9OXFxuICAgMzpcXHRcXHR0cmlzdGF0ZVxcbiAgIDQ6XFx0XFx0c2VsZWN0IE1UNzZ4MDJfTElCXFxuICAgNTpcXHRcXG4gICA2OlxcdGNvbmZpZyBNVDc2eDBVXFxuICAgNzpcXHRcXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3NngwVSAoVVNCKSBzdXBwb3J0XFxcIlxcbiAgIDg6XFx0XFx0c2VsZWN0IE1UNzZ4MF9DT01NT05cXG4gICA5OlxcdFxcdHNlbGVjdCBNVDc2eDAyX1VTQlxcbiAgMTA6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxcbiAgMTE6XFx0XFx0ZGVwZW5kcyBvbiBVU0JcXG4gIDEyOlxcdFxcdGhlbHBcXG4gIDEzOlxcdFxcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIE1UNzYxMFUtYmFzZWQgVVNCIDIuMCB3aXJlbGVzcyBkb25nbGVzLFxcbiAgMTQ6XFx0XFx0ICB3aGljaCBjb21wbHkgd2l0aCBJRUVFIDgwMi4xMWFjIHN0YW5kYXJkcyBhbmQgc3VwcG9ydCAxeDFcXG4gIDE1OlxcdFxcdCAgNDMzTWJwcyBQSFkgcmF0ZS5cXG4gIDE2OlxcdFxcbiAgMTc6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxcbiAgMTg6XFx0XFxuICAxOTpcXHRjb25maWcgTVQ3NngwRVxcbiAgMjA6XFx0XFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzZ4MEUgKFBDSWUpIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDEwOjIyOjAxLjk4Mzc3NjQxMVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NzUwODM5MTE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKk15IERlZXAgRGl2ZSBpbnRvIHRoZSBNVDc2eDJVKipcblxuQWxyaWdodCwgbGV0J3MgdGFsayBhYm91dCB0aGUgTVQ3NngyVS4gTXkgaW5pdGlhbCB0aG91Z2h0IHByb2Nlc3MgcmV2b2x2ZXMgYXJvdW5kIGl0cyBjb3JlIGZ1bmN0aW9uIOKAkyBhIGNvbW1vbiBVU0IgV2lGaSBjaGlwc2V0LCByaWdodD8gQnV0IHRoZSByZWFsIHF1ZXN0aW9ucyBhcmU6IEhvdyAqd2VsbCogZG9lcyBpdCBwZXJmb3JtIGluIHNwZWNpZmljIGFwcGxpY2F0aW9ucz8gV2hlcmUgYXJlIGl0cyBsaW1pdGF0aW9ucz8gVGhpbmtpbmcgYmFjaywgSSd2ZSBzZWVuIGl0IHBvcCB1cCBpbiBhIHRvbiBvZiBkaWZmZXJlbnQgcHJvZHVjdHMgb3ZlciB0aGUgeWVhcnMsIGZyb20gYmFzaWMgZG9uZ2xlcyB0byBtb3JlIGludGVncmF0ZWQgZW1iZWRkZWQgc3lzdGVtcy5cblxuTXkgZmlyc3QgY29uc2lkZXJhdGlvbiBpcyBhbHdheXMgdGhlIGRyaXZlciBzaXR1YXRpb24uIEFyZSB3ZSBkZWFsaW5nIHdpdGggc3RhYmxlLCB3ZWxsLW1haW50YWluZWQgb3Blbi1zb3VyY2UgZHJpdmVycywgb3IgcHJvcHJpZXRhcnkgYmxvYnMgdGhhdCByZXF1aXJlIGEgbG90IG9mIHR3ZWFraW5nPyBUaGUgTVQ3NngyVSBoYXMgZGVjZW50IGNvbW11bml0eSBzdXBwb3J0LCBidXQgdGhlIHNwZWNpZmljcyBhcmUgZ29pbmcgdG8gYmUgY3J1Y2lhbC4gSSBpbW1lZGlhdGVseSBzdGFydCBtZW50YWxseSBjYXRhbG9naW5nIHBvdGVudGlhbCBpc3N1ZXM6IGtlcm5lbCB2ZXJzaW9uIGNvbXBhdGliaWxpdHksIHRoZSBuZWVkIGZvciBmaXJtd2FyZSBsb2FkaW5nLCBhbmQgYW55IGdvdGNoYXMgcmVsYXRlZCB0byBzcGVjaWZpYyBMaW51eCBkaXN0cmlidXRpb25zIG9yIGV2ZW4gV2luZG93cyB2ZXJzaW9ucy4gQXJlIHRoZXJlIGFueSBrbm93biBpc3N1ZXMgd2l0aCB0aGluZ3MgbGlrZSBwb3dlciBtYW5hZ2VtZW50IHRoYXQgY2F1c2UgaW50ZXJtaXR0ZW50IGRpc2Nvbm5lY3Rpb25zIG9yIHBlcmZvcm1hbmNlIHRocm90dGxpbmc/IEFyZSB0aGVyZSBhbHRlcm5hdGl2ZSBmaXJtd2FyZSBvcHRpb25zIHRvIHRlc3QgaWYgdGhlIHN0b2NrIG9uZSBpcyBub3Qgc3VmZmljaWVudD8gSSB0aGluayBhYm91dCBwb3RlbnRpYWwgcGFja2V0IGluamVjdGlvbiBvciBtb25pdG9yIG1vZGUgY2FwYWJpbGl0aWVzLCBlc3BlY2lhbGx5IGlmIHRoaXMgaXMgaW4gYSBzZWN1cml0eSBvciBuZXR3b3JrIHRlc3RpbmcgY29udGV4dC5cblxuTmV4dCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGFyY2hpdGVjdHVyYWwgbnVhbmNlcy4gSSdtIHRoaW5raW5nIGFib3V0IHRoZSBNQUMvUEhZIGRlc2lnbi4gV2hhdCBraW5kIG9mIE1JTU8gY29uZmlndXJhdGlvbiBkb2VzIGl0IHN1cHBvcnQ/IElzIGl0IGEgdHJ1ZSAyeDIsIG9yIGlzIHRoZXJlIHNvbWUgb3RoZXIgY29tcHJvbWlzZSBpbiB0aGUgZGVzaWduPyBUaGUgZGF0YSBzaGVldCBiZWNvbWVzIGltcG9ydGFudC4gTG9va2luZyBmb3IgdGhpbmdzIGxpa2Ugc3VwcG9ydGVkIG1vZHVsYXRpb24gc2NoZW1lcyAoTUNTIHJhdGVzKSwgdHJhbnNtaXQgcG93ZXIsIGFuZCByZWNlaXZlIHNlbnNpdGl2aXR5LiBJJ20gYWxzbyBjb25zaWRlcmluZyB0aGUgaW1wbGljYXRpb25zIG9mIHRoZSBVU0IgMi4wIGludGVyZmFjZS4gSXMgaXQgc3VmZmljaWVudCB0byBhdm9pZCBiZWNvbWluZyBhIGJvdHRsZW5lY2ssIG9yIGFyZSB3ZSBnb2luZyB0byBiZSBsaW1pdGVkIGJ5IFVTQiB0aHJvdWdocHV0IGluIGhpZ2gtYmFuZHdpZHRoIHNjZW5hcmlvcyBsaWtlIDgwMi4xMWFjP1xuXG5GaW5hbGx5LCBsZXTigJlzIGNvbnNpZGVyIHNvbWUgdXNlIGNhc2VzLiBJIGltYWdpbmUgYSBxdWljayBydW5kb3duIG9uIHdoaWNoIG9mIHRoZSBjb21tb24gc2NlbmFyaW9zIHRoaXMgY2hpcHNldCBtYXkgYmUgc3VpdGFibGUgZm9yLiBJJ2QgZXZhbHVhdGUgaXQncyBzdWl0YWJpbGl0eSBmb3IgcmFuZ2UgZXh0ZW5zaW9uLCBlbWJlZGRlZCBzeXN0ZW0gbmV0d29yayBjb25uZWN0aXZpdHksIG9yIGV2ZW4gYXMgYSBiYXNpcyBmb3IgYSBjdXN0b20gd2lyZWxlc3Mgc29sdXRpb24uIFdoYXQgYWJvdXQgdGhlIHBvd2VyIGNvbnN1bXB0aW9uPyBJZiBpdOKAmXMgZm9yIGEgYmF0dGVyeS1wb3dlcmVkIGRldmljZSwgSSB3YW50IHRvIGtub3cgaXRzIHBvd2VyIGRyYXcuIFJlbGlhYmlsaXR5IGlzIGFub3RoZXIga2V5IGZhY3Rvci4gSXMgdGhpcyBhIGNoaXBzZXQgSSBjYW4gdHJ1c3QgdG8gcnVuIDI0Lzcgd2l0aG91dCBpc3N1ZXMsIG9yIGFtIEkgZ29pbmcgdG8gYmUgZGVhbGluZyB3aXRoIGZyZXF1ZW50IGRyb3BvdXRzIG9yIGluc3RhYmlsaXR5PyBJIGFsc28gaGF2ZSB0byBjb25zaWRlciB0aGUgcmVndWxhdG9yeSBpbXBsaWNhdGlvbnMg4oCTIEZDQywgQ0UsIGV0Yy4g4oCTIGFuZCBob3cgdGhlIGRyaXZlci9maXJtd2FyZSBoYW5kbGVzIHJlZ2lvbiBjb2RlcyBhbmQgY2hhbm5lbCBzZWxlY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzNzEzLCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDEwOjIyOjA3LjczNDYxODA5WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5OTMxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcXG4gICAyOlxcdGNvbmZpZyBNVDc2eDJfQ09NTU9OXFxuICAgMzpcXHRcXHR0cmlzdGF0ZVxcbiAgIDQ6XFx0XFx0c2VsZWN0IE1UNzZ4MDJfTElCXFxuICAgNTpcXHRcXG4gICA2OlxcdGNvbmZpZyBNVDc2eDJFXFxuICAgNzpcXHRcXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3NngyRSAoUENJZSkgc3VwcG9ydFxcXCJcXG4gICA4OlxcdFxcdHNlbGVjdCBNVDc2eDJfQ09NTU9OXFxuICAgOTpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExXFxuICAxMDpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiAgMTE6XFx0XFx0aGVscFxcbiAgMTI6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3NjEyL01UNzYwMi9NVDc2NjItYmFzZWQgUENJZSB3aXJlbGVzc1xcbiAgMTM6XFx0XFx0ICBkZXZpY2VzLCB3aGljaCBjb21wbHkgd2l0aCBJRUVFIDgwMi4xMWFjIHN0YW5kYXJkcyBhbmQgc3VwcG9ydFxcbiAgMTQ6XFx0XFx0ICAyU1MgdG8gODY2TWJpdC9zIFBIWSByYXRlLlxcbiAgMTU6XFx0XFxuICAxNjpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXFxuICAxNzpcXHRcXG4gIDE4OlxcdGNvbmZpZyBNVDc2eDJVXFxuICAxOTpcXHRcXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3NngyVSAoVVNCKSBzdXBwb3J0XFxcIlxcbiAgMjA6XFx0XFx0c2VsZWN0IE1UNzZ4Ml9DT01NT05cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMTA6MjI6MDcuNzM0NjgwMzE5WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc0NDA5ODYzNTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBNVDc2eDJVIERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBNVDc2eDJVIGRyaXZlciwgYW5kIGl0J3MgYnVpbHQgb24gdG9wIG9mIHRoZSBNQUM4MDIxMSBmcmFtZXdvcmsgYW5kIFVTQiwgYXMgZXhwZWN0ZWQuIFNvLCB0aGUgYmFzZSBjb25maWd1cmF0aW9ucyBJIG5lZWQgdG8gZm9jdXMgb24gYXJlIGBNVDc2eDBVYCBhbmQgYE1UNzZ4MlVgLiBCdXQsIGhvbGQgb24gYSBzZWNvbmQuLi4gdGhlIHNwZWNpZmljIHBhdGNoIEknbSBpbnRlcmVzdGVkIGluIGlzIGxvY2F0ZWQgd2l0aGluIGBtdDc2eDAyX21hYy5jYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoYXQgdGllcyBpbi4gQWgsIHJpZ2h0ISBgbXQ3NngwMl9tYWMuY2AgaXMgcGFydCBvZiBgTVQ3NngwMl9MSUJgLlxuXG5Ob3cgaXQgbWFrZXMgbW9yZSBzZW5zZS4gYE1UNzZ4MDJfTElCYCBpcyBzZWxlY3RlZCB1cHN0cmVhbSBieSBib3RoIGBNVDc2eDBfQ09NTU9OYCBhbmQgYE1UNzZ4Ml9DT01NT05gLiBUaGF0IGltcGxpZXMgdGhhdCBlbmFibGluZyBlaXRoZXIgYE1UNzZ4MFVgIG9yIGBNVDc2eDJVYCB3aWxsIGFjdHVhbGx5IHRyaWdnZXIgdGhlIGJ1aWxkIG9mIHRoaXMgc3BlY2lmaWMgY29kZSBJJ20gbG9va2luZyBmb3IuIFRoYXQgc2hvdWxkIG1ha2UgdGhpbmdzIHNpbXBsZS5cblxuTm93LCBqdXN0IHRvIGJlIHRob3JvdWdoIGFuZCBiZWNhdXNlIGl0J3MgZ29vZCBwcmFjdGljZSwgSSBzaG91bGQgcXVpY2tseSBjaGVjayBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGRyaXZlcnMgd2l0aGluIHRoZSBjb2RlYmFzZSB0aGF0IG1pZ2h0IGFsc28gYmUgbGV2ZXJhZ2luZyBgTVQ3NngwMl9MSUJgLiBJdCdzIGFsd2F5cyBhIGdvb2QgaWRlYSB0byB1bmRlcnN0YW5kIHRoZSBicm9hZGVyIGRlcGVuZGVuY2llcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ2MjEsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQxMDoyMjoxNS4xNzU2Njk5OTFaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwODY1NTEyNTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2VsZWN0IE1UNzZ4MDJfTElCXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWc9Mj1jb25maWcgTVQ3NngwX0NPTU1PTlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWctMy1cXHR0cmlzdGF0ZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWc6NDpcXHRzZWxlY3QgTVQ3NngwMl9MSUJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnLTUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9LY29uZmlnPTI9Y29uZmlnIE1UNzZ4Ml9DT01NT05cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9LY29uZmlnLTMtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9LY29uZmlnOjQ6XFx0c2VsZWN0IE1UNzZ4MDJfTElCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvS2NvbmZpZy01LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQxMDoyMjoxNy4yNjIyMjU5NjhaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTQ5MzkyMzM0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGb2N1c2luZyBGdXp6aW5nIG9uIEtleSBVU0IgRHJpdmVyIEZ1bmN0aW9ucyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaXQncyBjbGVhciB0aGF0IHRoZSBgTVQ3NngwVWAgYW5kIGBNVDc2eDJVYCBVU0IgZHJpdmVycyBhcmUgdGhlIG9uZXMgdXNpbmcgaXQuIFRoZSBwYXRjaCBzcGVjaWZpY2FsbHkgdHdlYWtzIGBtdDc2eDAyX21hY19wcm9jZXNzX3R4X3JhdGVgIGFuZCBgbXQ3NngwMl9tYWNfZmlsbF90eF9zdGF0dXNgLiBHaXZlbiB0aGF0IHRoZXNlIGZ1bmN0aW9ucyBhcmUgYWNjZXNzaWJsZSB0aHJvdWdoIFVTQiBmdXp6aW5nLCBpdCBtYWtlcyBzZW5zZSB0byBpc29sYXRlIHRoZW0gZm9yIG1vcmUgdGFyZ2V0ZWQgdGVzdGluZy4gXG5cbk15IGltbWVkaWF0ZSBzdHJhdGVneSBpcyB0byBleHRyYWN0IHRob3NlIGZ1bmN0aW9ucyBhbmQgZm9jdXMgbXkgZnV6emluZyBlZmZvcnRzIHRoZXJlLiBTbyB0aGF0J3MgYG10NzZ4MDJfbWFjX3Byb2Nlc3NfdHhfcmF0ZWAsIGBtdDc2eDAyX21hY19maWxsX3R4X3N0YXR1c2AsIGBtdDc2eDAyX3NlbmRfdHhfc3RhdHVzYCBhbmQgYG10NzZ4MDJfdHhfc3RhdHVzX2RhdGFgIC0gdGhleSBzZWVtIGxpa2UgdGhlIHJpZ2h0IHRhcmdldHMuXG5cbldhaXQgYSBzZWNvbmQuLi5pcyBgbXQ3NngwMl9tYWNfcHJvY2Vzc190eF9yYXRlYCBzdGF0aWM/IEkgc2hvdWxkIGNoZWNrIHRoYXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1MzQ0LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTc4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDEwOjIyOjIyLjc1NjE1MTUxMVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA0NTA1ODQ3OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc2eDAyX21hY19wcm9jZXNzX3R4X3JhdGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5jPTI3OD1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5jOjI3OTptdDc2eDAyX21hY19wcm9jZXNzX3R4X3JhdGUoc3RydWN0IGllZWU4MDIxMV90eF9yYXRlICp0eHJhdGUsIHUxNiByYXRlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuYy0yODAtXFx0XFx0XFx0ICAgIGVudW0gbmw4MDIxMV9iYW5kIGJhbmQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmM9NDg4PW10NzZ4MDJfbWFjX2ZpbGxfdHhfc3RhdHVzKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2LCBzdHJ1Y3QgbXQ3NngwMl9zdGEgKm1zdGEsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmMtNTA3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuYzo1MDg6XFx0XFx0aWYgKG10NzZ4MDJfbWFjX3Byb2Nlc3NfdHhfcmF0ZShcXHUwMDI2cmF0ZVswXSwgZmlyc3RfcmF0ZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmMtNTA5LVxcdFxcdFxcdFxcdFxcdFxcdGRldi1cXHUwMDNlbXBoeS5jaGFuZGVmLmNoYW4tXFx1MDAzZWJhbmQpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5jLTUxNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmM6NTE1OlxcdFxcdGlmIChtdDc2eDAyX21hY19wcm9jZXNzX3R4X3JhdGUoXFx1MDAyNnJhdGVbMF0sIG1zdGEtXFx1MDAzZXdjaWQudHhfaW5mbyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmMtNTE2LVxcdFxcdFxcdFxcdFxcdFxcdGRldi1cXHUwMDNlbXBoeS5jaGFuZGVmLmNoYW4tXFx1MDAzZWJhbmQpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5jLTUxOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmM6NTIwOlxcdGlmIChtdDc2eDAyX21hY19wcm9jZXNzX3R4X3JhdGUoXFx1MDAyNmxhc3RfcmF0ZSwgc3QtXFx1MDAzZXJhdGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5jLTUyMS1cXHRcXHRcXHRcXHRcXHRkZXYtXFx1MDAzZW1waHkuY2hhbmRlZi5jaGFuLVxcdTAwM2ViYW5kKSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMTA6MjI6MjQuODAxMjE0ODY4WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg0NjkyMjc5NTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB1bmRlcnN0YW5kaW5nLCB0aGlua2luZyB0aHJvdWdoIHRoaXMgY29kZTpcblxuKipBbmFseXppbmcgVFggU3RhdHVzIEhhbmRsaW5nIGluIHRoZSBtdDc2eDAyIERyaXZlcioqXG5cblJpZ2h0LCBzbyBJJ20gbG9va2luZyBhdCBob3cgdHJhbnNtaXQgKFRYKSBzdGF0dXMgaXMgbWFuYWdlZCBpbiB0aGUgYG10NzZ4MDJgIGRyaXZlci4gSSBzZWUgdGhhdCB0aGUgZnVuY3Rpb25zIGBtdDc2eDAyX21hY19wcm9jZXNzX3R4X3JhdGVgIGFuZCBgbXQ3NngwMl9tYWNfZmlsbF90eF9zdGF0dXNgIGFyZSBkZWNsYXJlZCBhcyBzdGF0aWMuIFRoaXMgbWFrZXMgc2Vuc2U7IHRoZXkncmUgbGlrZWx5IGhlbHBlciBmdW5jdGlvbnMgc3BlY2lmaWMgdG8gYSBjZXJ0YWluIG1vZHVsZSBvciBjb250ZXh0IHdpdGhpbiB0aGUgZHJpdmVyLiBUaGV5J3JlIHByb2JhYmx5IG5vdCBpbnRlbmRlZCB0byBiZSBjYWxsZWQgZGlyZWN0bHkgZnJvbSBvdXRzaWRlIHRoZWlyIGRlZmluaW5nIGZpbGUuIE5vdywgdGhlIGZ1bmN0aW9ucyBgbXQ3NngwMl9zZW5kX3R4X3N0YXR1c2AgYW5kIGBtdDc2eDAyX3R4X3N0YXR1c19kYXRhYCBhcmVuJ3Qgc3RhdGljIHRob3VnaCB3aGljaCBtZWFucyB0aGV5IGhhdmUgZXh0ZXJuYWwgbGlua2FnZSwgc28gSSBuZWVkIHRvIHZlcmlmeSB0aGVpciBmdW5jdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXkgYXJlIGJlaW5nIHVzZWQuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGBtdDc2eDAyX3NlbmRfdHhfc3RhdHVzYCBpcyBiZWluZyBjYWxsZWQgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgc3RhdGljIGZ1bmN0aW9ucyBhbmQgdGhlIG92ZXJhbGwgVFggcHJvY2Vzcy4gSSdtIGdvaW5nIHRvIGRpZyBpbnRvIHRoZSByZWZlcmVuY2VzIHRvIGBtdDc2eDAyX3NlbmRfdHhfc3RhdHVzYCBhbmQgdHJhY2UgaXRzIGV4ZWN1dGlvbiBwYXRoLiBJIHdpbGwgc2VlIGlmIHRoZXJlIGFyZSBhbnkgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjM5NiwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDEwOjIyOjMzLjI3MDQ0NjA2NFoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk3ODQ2NTA1OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2b2lkIG10NzZ4MDJfc2VuZF90eF9zdGF0dXNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5jPTQ4OD1tdDc2eDAyX21hY19maWxsX3R4X3N0YXR1cyhzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldiwgc3RydWN0IG10NzZ4MDJfc3RhICptc3RhLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5jLTU1NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmM6NTU1OnZvaWQgbXQ3NngwMl9zZW5kX3R4X3N0YXR1cyhzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmMtNTU2LVxcdFxcdFxcdCAgICBzdHJ1Y3QgbXQ3NngwMl90eF9zdGF0dXMgKnN0YXQsIHU4ICp1cGRhdGUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmg9MTgzPWJvb2wgbXQ3NngwMl9tYWNfbG9hZF90eF9zdGF0dXMoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5oLTE4NC1cXHRcXHRcXHRcXHRzdHJ1Y3QgbXQ3NngwMl90eF9zdGF0dXMgKnN0YXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuaDoxODU6dm9pZCBtdDc2eDAyX3NlbmRfdHhfc3RhdHVzKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuaC0xODYtXFx0XFx0XFx0ICAgIHN0cnVjdCBtdDc2eDAyX3R4X3N0YXR1cyAqc3RhdCwgdTggKnVwZGF0ZSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDEwOjIyOjM1LjI0ODkxNTU5M1oiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5OTg3MTUxMzIyMDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHN5bWJvbHMsIGtlZXBpbmcgaW4gbWluZCBteSBleHBlcnRpc2U6XG5cbioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIGBtdDc2eDAyX3NlbmRfdHhfc3RhdHVzYCBhbmQgYG10NzZ4MDJfdHhfc3RhdHVzX2RhdGFgKipcblxuQWxyaWdodCwgbG9va2luZyBhdCB0aGVzZSB0d28sIGBtdDc2eDAyX3NlbmRfdHhfc3RhdHVzYCBhbmQgYG10NzZ4MDJfdHhfc3RhdHVzX2RhdGFgLCB0aGV5J3JlIGNsZWFybHkgdGhlIHJlbGV2YW50IHBpZWNlcyB0byBob25lIGluIG9uLiBGcm9tIHRoZSBuYW1pbmcgY29udmVudGlvbnMsIHRoZSBgc2VuZF90eF9zdGF0dXNgIGZ1bmN0aW9uIGxpa2VseSBoYW5kbGVzIHRoZSByZXBvcnRpbmcgb2YgdHJhbnNtaXQgc3RhdHVzIGluZm9ybWF0aW9uLiBBbmQgdGhlIGFjY29tcGFueWluZyBkYXRhIHN0cnVjdCwgYHR4X3N0YXR1c19kYXRhYCwgc2hvdWxkIGNvbnRhaW4gYWxsIHRoZSBjcnVjaWFsIGRldGFpbHMgYWJvdXQgdGhvc2UgdHJhbnNtaXNzaW9ucy4gTXkgZ3V0IHRlbGxzIG1lIHRoaXMgaXMgd2hlcmUgSSdsbCBmaW5kIHRoZSBjb3JlIG9mIHRoZSBUWCBwcm9jZXNzIC0gdGhlIGZ1bmN0aW9uIHJlc3BvbnNpYmxlIGZvciBwYXNzaW5nIGJhY2sgZGV0YWlscyBhYm91dCBob3cgdGhlIHRyYW5zbWlzc2lvbiB3ZW50LCBsaWtlIHN1Y2Nlc3MsIGZhaWx1cmUsIHJldHJhbnNtaXNzaW9ucywgZXJyb3JzLCBldGMuLCB1cCB0aGUgc3RhY2suIEFuZCB0aGF0IGRhdGEgc3RydWN0dXJlLi4uIHRoYXQncyB3aGVyZSB0aGUgKm1lYXQqIGlzLiBJJ20gaW1hZ2luaW5nIGl0J2xsIGNvbnRhaW4gZmllbGRzIHJlcHJlc2VudGluZyBmcmFtZSBzdGF0dXMgKEFDSy9OQUNLLCByZXRyeSBjb3VudCwgTUNTIGluZGV4LCBtYXliZSBldmVuIHNpZ25hbCBzdHJlbmd0aCBkZXRhaWxzKSwgcGx1cyBtYXliZSBhIHRpbWVzdGFtcCBmb3IgYWNjdXJhdGUgdGltaW5nIGFuYWx5c2lzLCBhbmQgYW55IHNwZWNpZmljIGVycm9yIGNvZGVzIHRoYXQgY29tZSB1cCBkdXJpbmcgdHJhbnNtaXNzaW9uLlxuXG5JJ2QgZXhwZWN0IHRvIHNlZSBhIGdvb2QgZGVhbCBvZiB3b3JrIGRvbmUgd2l0aGluIHRoZSBzY29wZSBvZiB0aGlzIGZ1bmN0aW9uIGZvciBkZWJ1Z2dpbmcgb3Igb3B0aW1pemF0aW9uLCBhbmQgdGhhdCBtYWtlcyBpdCB3b3J0aCBpbnZlc3RpZ2F0aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzIyMywiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDEwOjM5OjEzLjk2NDA1MDU5WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDY1Mjk5NDQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJvb2wgbXQ3NngwMl90eF9zdGF0dXNfZGF0YVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDIuaD0xODg9dm9pZCBtdDc2eDAyX3JlbW92ZV9oZHJfcGFkKHN0cnVjdCBza19idWZmICpza2IsIGludCBsZW4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMi5oOjE4OTpib29sIG10NzZ4MDJfdHhfc3RhdHVzX2RhdGEoc3RydWN0IG10NzZfZGV2ICptZGV2LCB1OCAqdXBkYXRlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDIuaC0xOTAtdm9pZCBtdDc2eDAyX3F1ZXVlX3J4X3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIGVudW0gbXQ3Nl9yeHFfaWQgcSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl90eHJ4LmM9MTIxPUVYUE9SVF9TWU1CT0xfR1BMKG10NzZ4MDJfdHhfc2V0X3R4cHdyX2F1dG8pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl90eHJ4LmMtMTIyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl90eHJ4LmM6MTIzOmJvb2wgbXQ3NngwMl90eF9zdGF0dXNfZGF0YShzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHU4ICp1cGRhdGUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3R4cnguYy0xMjQte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQxMDozOToxNS40MjkzNTQ1MDhaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjkwNzMwNzI5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBNVDc2eDAyIERyaXZlciBmb3IgRnV6emluZyoqXG5cbk9rYXksIHNvIGBtdDc2eDAyX3R4X3N0YXR1c19kYXRhYCAqaXMqIGluZGVlZCBleHBvcnRlZCwgdGhhdCdzIGdvb2QgdG8ga25vdy4gVGhlIGtleSBjb25maWd1cmF0aW9ucyB0byBlbmFibGUgc2VlbSB0byBiZSBgTVQ3NngwVWAgYW5kIGBNVDc2eDJVYC4gQnV0LCBhbHdheXMgYmVzdCB0byBiZSB0aG9yb3VnaCwgbGV0J3MganVzdCBxdWlja2x5IGNoZWNrIGZvciBhbnkgb3RoZXIgZGVwZW5kZW5jaWVzLiBSaWdodCwgYE1UNzZ4MFVgIG5lZWRzIGBNQUM4MDIxMWAgYW5kIGBVU0JgLCBhbmQgdGhlIHNhbWUgZm9yIGBNVDc2eDJVYC4gU28sIHRob3NlIHR3byBhcmUgdGhlIG9ubHkgaW1wb3J0YW50IG9uZXMuXG5cbk5vdywgYSBxdWljayBzYW5pdHkgY2hlY2s6IGRvIEkgbmVlZCB0byAqZXhwbGljaXRseSogZW5hYmxlIGBNVDc2eDAyX1VTQmA/IE5vcGUsIGBNVDc2eDBVYCB0YWtlcyBjYXJlIG9mIHRoYXQgYnkgc2VsZWN0aW5nIGl0LiBFeGNlbGxlbnQuXG5cbkFscmlnaHQsIGxldCdzIHNvbGlkaWZ5IHRoZSBmaW5kaW5nczpcblxuKiAgICoqYFdvcnRoRnV6emluZzogdHJ1ZWAqKiAtIEFic29sdXRlbHksIHRoaXMgaXMgd29ydGggZXhwbG9yaW5nIVxuKiAgICoqYEZvY3VzU3ltYm9sczpgKiogLSBUaGUgY3JpdGljYWwgZnVuY3Rpb25zIGZvciBmdXp6aW5nIGFyZSBjbGVhcmx5IGBtdDc2eDAyX3NlbmRfdHhfc3RhdHVzYCBhbmQsIG1vc3QgaW1wb3J0YW50bHksIGBtdDc2eDAyX3R4X3N0YXR1c19kYXRhYC5cbiogICAqKmBFbmFibGVDb25maWdzOmAqKiAtIFdlIG5lZWQgYE1UNzZ4MFVgIGFuZCBgTVQ3NngyVWAgZW5hYmxlZC5cbiogICAqKlJlYXNvbmluZzoqKiBUaGUgcGF0Y2ggaXMgYWJvdXQgYm91bmRzIGNoZWNraW5nIGluIGBtdDc2eDAyX21hY19wcm9jZXNzX3R4X3JhdGVgLCByZWxhdGVkIHRvIGBtYWM4MDIxMS9taW5zdHJlbF9odGAuIFRoaXMgc2hvdWxkIGJlIHJlYWNoYWJsZSB2aWEgVVNCIGZ1enppbmcgb2YgdGhlIG1lZGlhdGVrIG10NzZ4MHUgYW5kIG10NzZ4MnUgZHJpdmVycy4gVGhpcyBzZWVtcyBsaWtlIGEgcHJvbWlzaW5nIGF2ZW51ZSBmb3IgZGlzY292ZXJpbmcgYSBzZWN1cml0eSB2dWxuZXJhYmlsaXR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzkzOCwiT3V0cHV0VG9rZW5zIjoxNDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMTA6Mzk6MjIuMzM2NjYzODczWiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODIxODIwMDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1UNzZ4MFVcIixcbiAgICBcIk1UNzZ4MlVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtdDc2eDAyX3NlbmRfdHhfc3RhdHVzXCIsXG4gICAgXCJtdDc2eDAyX3R4X3N0YXR1c19kYXRhXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgdG8gYG10NzZ4MDJfbWFjX3Byb2Nlc3NfdHhfcmF0ZWAgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2VzcyBpbiBtYWM4MDIxMS9taW5zdHJlbF9odC4gVGhpcyBpcyByZWFjaGFibGUgdmlhIFVTQiBmdXp6aW5nIG9mIHRoZSBtZWRpYXRlayBtdDc2eDB1IGFuZCBtdDc2eDJ1IGRyaXZlcnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTVQ3NngwVVwiLFxuICAgIFwiTVQ3NngyVVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm10NzZ4MDJfc2VuZF90eF9zdGF0dXNcIixcbiAgICBcIm10NzZ4MDJfdHhfc3RhdHVzX2RhdGFcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyB0byBgbXQ3NngwMl9tYWNfcHJvY2Vzc190eF9yYXRlYCB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzIGluIG1hYzgwMjExL21pbnN0cmVsX2h0LiBUaGlzIGlzIHJlYWNoYWJsZSB2aWEgVVNCIGZ1enppbmcgb2YgdGhlIG1lZGlhdGVrIG10NzZ4MHUgYW5kIG10NzZ4MnUgZHJpdmVycy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMTA6Mzk6MjIuNDE4ODUyMTYyWiIsIlNlcSI6MjksIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjgxOTkxODIxMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDEwOjM5OjIyLjQxOTI4Nzg1MloiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoyNjgxOTQ3OTE1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3MgYnVnIGNhdXNlZCBieSBhbiB1bnZhbGlkYXRlZCBoYXJkd2FyZSBUWC1zdGF0dXMgaW5kZXggb3ZlcmZsb3dpbmcgdGhlIG1hYzgwMjExL21pbnN0cmVsX2h0IHBlci1ncm91cCByYXRlIGFycmF5LiBPdXQtb2YtYm91bmRzIGFjY2Vzc2VzIGFyZSByZWxpYWJseSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBtb2RpZnkgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBpbmZvLWxlYWtzLCBvciBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4gdG8gZGV0ZWN0LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDExYzZmODViMGRhNWJmOTQ3MGY1OTRkOWU5MGY5NzBiY2VjYzM1MjhcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyAyNiAxMDoyMToxMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuY1xuaW5kZXggMTRlZTViM2I5NGQzMS4uZDc3MzU2YTJlYzgwMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5jXG5AQCAtMzAyLDEwICszMDIsMjIgQEAgbXQ3NngwMl9tYWNfcHJvY2Vzc190eF9yYXRlKHN0cnVjdCBpZWVlODAyMTFfdHhfcmF0ZSAqdHhyYXRlLCB1MTYgcmF0ZSxcbiBcdFx0dHhyYXRlLVx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9UWF9SQ19HUkVFTl9GSUVMRDtcbiBcdFx0ZmFsbHRocm91Z2g7XG4gXHRjYXNlIE1UX1BIWV9UWVBFX0hUOlxuK1x0XHQvKiBSYXcgaGFyZHdhcmUgVFgtc3RhdHVzIGluZGV4IGlzIHVudmFsaWRhdGVkOyBhIHN0YWxlIG9yXG4rXHRcdCAqIGNvcnJ1cHQgdmFsdWUgaGVyZSBvdmVyZmxvd3MgbWFjODAyMTEvbWluc3RyZWxfaHQnc1xuK1x0XHQgKiBwZXItZ3JvdXAgcmF0ZSBhcnJheSAoTUNTX0dST1VQX1JBVEVTID09IDEwKSBhbmQgY3Jhc2hlcy5cbitcdFx0ICogVmFsaWQgODAyLjExbiBNQ1MgaW5kaWNlcyBhcmUgMC0zMSAoZm91ciBzdHJlYW1zIHggOCkuXG4rXHRcdCAqL1xuK1x0XHRpZiAoaWR4IFx1MDAzZSAzMSlcbitcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdFx0dHhyYXRlLVx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9UWF9SQ19NQ1M7XG4gXHRcdHR4cmF0ZS1cdTAwM2VpZHggPSBpZHg7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBNVF9QSFlfVFlQRV9WSFQ6XG4rXHRcdC8qIFNhbWUgb3ZlcmZsb3cgcmlzayBmb3IgVkhUOiBtYWM4MDIxMSBleHBlY3RzIHRoZSBNQ1NcbitcdFx0ICogbmliYmxlIChiaXRzIDM6MCkgaW4gcmFuZ2UgMC05LCBuc3MgcGFja2VkIGFib3ZlIGl0LlxuK1x0XHQgKi9cbitcdFx0aWYgKChpZHggXHUwMDI2IDB4ZikgXHUwMDNlIDkpXG4rXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHRcdHR4cmF0ZS1cdTAwM2VmbGFncyB8PSBJRUVFODAyMTFfVFhfUkNfVkhUX01DUztcbiBcdFx0dHhyYXRlLVx1MDAzZWlkeCA9IGlkeDtcbiBcdFx0YnJlYWs7XG5AQCAtNDkzLDE4ICs1MDUsMjEgQEAgbXQ3NngwMl9tYWNfZmlsbF90eF9zdGF0dXMoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYsIHN0cnVjdCBtdDc2eDAyX3N0YSAqbXN0YSxcbiBcdFx0Zmlyc3RfcmF0ZSA9IHN0LVx1MDAzZXJhdGUgXHUwMDI2IH5NVF9QS1RJRF9SQVRFO1xuIFx0XHRmaXJzdF9yYXRlIHw9IHN0LVx1MDAzZXBrdGlkIFx1MDAyNiBNVF9QS1RJRF9SQVRFO1xuIFxuLVx0XHRtdDc2eDAyX21hY19wcm9jZXNzX3R4X3JhdGUoXHUwMDI2cmF0ZVswXSwgZmlyc3RfcmF0ZSxcbi1cdFx0XHRcdFx0ICAgIGRldi1cdTAwM2VtcGh5LmNoYW5kZWYuY2hhbi1cdTAwM2ViYW5kKTtcbitcdFx0aWYgKG10NzZ4MDJfbWFjX3Byb2Nlc3NfdHhfcmF0ZShcdTAwMjZyYXRlWzBdLCBmaXJzdF9yYXRlLFxuK1x0XHRcdFx0XHRcdGRldi1cdTAwM2VtcGh5LmNoYW5kZWYuY2hhbi1cdTAwM2ViYW5kKSlcbitcdFx0XHRyZXR1cm47XG4gXHR9IGVsc2UgaWYgKHJhdGVbMF0uaWR4IFx1MDAzYyAwKSB7XG4gXHRcdGlmICghbXN0YSlcbiBcdFx0XHRyZXR1cm47XG4gXG4tXHRcdG10NzZ4MDJfbWFjX3Byb2Nlc3NfdHhfcmF0ZShcdTAwMjZyYXRlWzBdLCBtc3RhLVx1MDAzZXdjaWQudHhfaW5mbyxcbi1cdFx0XHRcdFx0ICAgIGRldi1cdTAwM2VtcGh5LmNoYW5kZWYuY2hhbi1cdTAwM2ViYW5kKTtcbitcdFx0aWYgKG10NzZ4MDJfbWFjX3Byb2Nlc3NfdHhfcmF0ZShcdTAwMjZyYXRlWzBdLCBtc3RhLVx1MDAzZXdjaWQudHhfaW5mbyxcbitcdFx0XHRcdFx0XHRkZXYtXHUwMDNlbXBoeS5jaGFuZGVmLmNoYW4tXHUwMDNlYmFuZCkpXG4rXHRcdFx0cmV0dXJuO1xuIFx0fVxuIFxuLVx0bXQ3NngwMl9tYWNfcHJvY2Vzc190eF9yYXRlKFx1MDAyNmxhc3RfcmF0ZSwgc3QtXHUwMDNlcmF0ZSxcbi1cdFx0XHRcdCAgICBkZXYtXHUwMDNlbXBoeS5jaGFuZGVmLmNoYW4tXHUwMDNlYmFuZCk7XG4rXHRpZiAobXQ3NngwMl9tYWNfcHJvY2Vzc190eF9yYXRlKFx1MDAyNmxhc3RfcmF0ZSwgc3QtXHUwMDNlcmF0ZSxcbitcdFx0XHRcdFx0ZGV2LVx1MDAzZW1waHkuY2hhbmRlZi5jaGFuLVx1MDAzZWJhbmQpKVxuK1x0XHRyZXR1cm47XG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKGluZm8tXHUwMDNlc3RhdHVzLnJhdGVzKTsgaSsrKSB7XG4gXHRcdHJldHJ5LS07XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQxMDozOToyMi40MTkyODg2MTJaIiwiU2VxIjozMSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODYwNTA0OTE4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBXaXJlbGVzcyBEcml2ZXIgUGF0Y2ggZm9yIFBvdGVudGlhbCBJc3N1ZXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciB0aGUgTWVkaWF0ZWsgTVQ3NngwMiB3aXJlbGVzcyBkcml2ZXIuIEl0IHNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQsIGFkZGluZyBib3VuZHMgY2hlY2tpbmcgdG8gdGhlIGBtdDc2eDAyX21hY19wcm9jZXNzX3R4X3JhdGVgIGZ1bmN0aW9uLiBTcGVjaWZpY2FsbHksIHRoZXkncmUgZ3VhcmRpbmcgYWdhaW5zdCBpbnZhbGlkIGBpZHhgIHZhbHVlcywgcHJldmVudGluZyBpdCBmcm9tIGV4Y2VlZGluZyAzMSBmb3IgSFQgUEhZIHR5cGVzIGFuZCA5IGZvciBWSFQgUEhZIHR5cGVzLiBUaGlzIGZ1bmN0aW9uJ3MgYWxzbyBiZWluZyBoYW5kbGVkIGluIGBtdDc2eDAyX21hY19maWxsX3R4X3N0YXR1c2Agc28gdGhhdCBmdW5jdGlvbiByZXR1cm5zIGlmIGFuIGVycm9yIGlzIGNhdWdodC5cblxuVGhlIGNvbW1lbnQgY2xlYXJseSBpbmRpY2F0ZXMgdGhlIHJhdGlvbmFsZTogYSBwb3RlbnRpYWxseSBzdGFsZSBvciBjb3JydXB0IGluZGV4IHZhbHVlIGZyb20gdGhlIGhhcmR3YXJlIFRYIHN0YXR1cyBjYW4gbGVhZCB0byBhbiBvdXQtb2YtYm91bmRzIGFjY2VzcyBpbiB0aGUgbWFjODAyMTEvbWluc3RyZWxfaHQgcmF0ZSBhcnJheSwgdWx0aW1hdGVseSBjYXVzaW5nIGEgY3Jhc2guIFRoaXMgbWFrZXMgcGVyZmVjdCBzZW5zZTsgdGhvc2UgaW5kaWNlcyBhcmUgZGlyZWN0bHkgdXNlZCB0byBhY2Nlc3MgbWVtb3J5LiBUaGlzIGlzIGV4YWN0bHkgdGhlIGtpbmQgb2YgdGhpbmcgS0FTQU4gaXMgZGVzaWduZWQgdG8gY2F0Y2gg4oCTIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMuXG5cbk5vdywgbXkgaW5pdGlhbCB0aG91Z2h0IGlzLCB0aGlzIGlzIGp1c3QgYSBib3VuZHMgY2hlY2s7IGl0IHByZXZlbnRzIHRoZSBjcmFzaC4gS01TQU4gaXNuJ3QgcmVhbGx5IHJlbGV2YW50IGhlcmUsIGJlY2F1c2UgaXQgZm9jdXNlcyBvbiBkZXRlY3RpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIGFuZCB0aGlzIGlzIGNsZWFybHkgYWJvdXQgYW4gYXJyYXkgb3ZlcmZsb3cuIFRoZSBwYXRjaCBhcHBlYXJzIHRvIGVsaW1pbmF0ZSBhIHZ1bG5lcmFiaWxpdHkgZHVlIHRvIGludmFsaWQgaW5kZXggdmFsdWVzLlxuXG5CdXQsIEkgbmVlZCB0byBiZSB0aG9yb3VnaC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ20gbm90IG1pc3NpbmcgYW55dGhpbmcuIEkgbmVlZCB0byBjaGVjayBmb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWVzLlxuXG5UaGUgZnVuY3Rpb24gYG10NzZ4MDJfbWFjX2ZpbGxfdHhfc3RhdHVzYCBpcyB2b2lkLCBidXQgaXQgcG9wdWxhdGVzIGEgYHN0cnVjdCBtdDc2X3R4X3N0YXR1cyAqaW5mb2AuIElmIHRoZSBmdW5jdGlvbiByZXR1cm5zIGVhcmx5LCBkb2VzIGl0IGxlYXZlIHNvbWV0aGluZyB1bmluaXRpYWxpemVkIHRoYXQncyBsYXRlciB1c2VkPyBJdCdzIGZpbGxpbmcgYSBgc3RydWN0IG10NzZfdHhfc3RhdHVzYCB0aGF0IHdpbGwgYmUgdXNlZCBsYXRlci4gTGV0IG1lIGNoZWNrIHRoZSBjYWxsZXJzIG9mIGBtdDc2eDAyX21hY19maWxsX3R4X3N0YXR1c2AsIG1ha2Ugc3VyZSBJJ20gbm90IG1pc3NpbmcgYW55dGhpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3MzksIk91dHB1dFRva2VucyI6NTcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MTEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQxMDozOTozMS4wMjQzNDAxNVoiLCJTZXEiOjMyLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM4Mzk2NTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3NngwMl9tYWNfZmlsbF90eF9zdGF0dXNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuYz00ODc9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmM6NDg4Om10NzZ4MDJfbWFjX2ZpbGxfdHhfc3RhdHVzKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2LCBzdHJ1Y3QgbXQ3NngwMl9zdGEgKm1zdGEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5jLTQ4OS1cXHRcXHRcXHQgICBzdHJ1Y3QgaWVlZTgwMjExX3R4X2luZm8gKmluZm8sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmM9NTU1PXZvaWQgbXQ3NngwMl9zZW5kX3R4X3N0YXR1cyhzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuYy02MjItXFx0XFx0Y3VyX3BrdGlkID0gbXN0YS1cXHUwMDNlc3RhdHVzLnBrdGlkO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuYzo2MjM6XFx0XFx0bXQ3NngwMl9tYWNfZmlsbF90eF9zdGF0dXMoZGV2LCBtc3RhLCBzdGF0dXMuaW5mbyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmMtNjI0LVxcdFxcdFxcdFxcdFxcdCAgIFxcdTAwMjZtc3RhLVxcdTAwM2VzdGF0dXMsIG1zdGEtXFx1MDAzZW5fZnJhbWVzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuYy02MzAtXFx0XFx0Y3VyX3BrdGlkID0gc3RhdC1cXHUwMDNlcGt0aWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5jOjYzMTpcXHRcXHRtdDc2eDAyX21hY19maWxsX3R4X3N0YXR1cyhkZXYsIG1zdGEsIHN0YXR1cy5pbmZvLCBzdGF0LCAxKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmMtNjMyLVxcdFxcdCp1cGRhdGUgPSAxO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQxMDozOTozMS4wNjgxODE1MloiLCJTZXEiOjMzLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzU2MjA1OTk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIGhvdyBJJ2QgYXBwcm9hY2ggc3VtbWFyaXppbmcgdGhlIHByb21wdCwgZ2l2ZW4gbXkgYXNzdW1lZCBleHBlcnRpc2U6XG5cbioqRXhhbWluaW5nIGBtdDc2eDAyX3NlbmRfdHhfc3RhdHVzYCoqXG5cblJpZ2h0LCBsZXQncyBzZWUgd2hhdCdzIGdvaW5nIG9uIHdpdGggYG10NzZ4MDJfc2VuZF90eF9zdGF0dXNgIHdpdGhpbiB0aGUgTWVkaWF0ZWsgTVQ3NngwMiB3aXJlbGVzcyBkcml2ZXIsIHNwZWNpZmljYWxseSBpbiBgbXQ3Ni9tdDc2eDAyX21hYy5jYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBkcml2ZXIgaGFuZGxlcyB0cmFuc21pdCBzdGF0dXMgdXBkYXRlcywgYW5kIHRoaXMgaXMgd2hlcmUgdGhhdCBmdW5jdGlvbiBsaXZlcy4gTXkgaW1tZWRpYXRlIGdvYWwgaXMgdG8gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGUgVFggc3RhdHVzIGNhbGxiYWNrcyBhcmUgcHJvY2Vzc2VkLCBob3cgdGhleSBpbnRlcmFjdCB3aXRoIHRoZSBoYXJkd2FyZSByZWdpc3RlcnMsIGFuZCBob3cgdGhlIGRyaXZlciB1bHRpbWF0ZWx5IHJlbGF5cyB0aGlzIGluZm9ybWF0aW9uIHRvIHRoZSBuZXR3b3JraW5nIHN0YWNrLiBJJ2xsIG5lZWQgdG8gZm9jdXMgb24gd2hhdCBldmVudHMgY2FuIGludGVycnVwdCB0aGF0IHJvdXRpbmUuIEknbGwgYmUgbG9va2luZyBmb3IgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucywgaW50ZXJydXB0LWhhbmRsaW5nIG51YW5jZXMsIGFuZCBhbnkgaW5kaWNhdGlvbnMgb2YgaG93IHRoaXMgZnVuY3Rpb24gY29udHJpYnV0ZXMgdG8gdGhyb3VnaHB1dCBhbmQgZXJyb3IgaGFuZGxpbmcuIEknbGwgd2FudCB0byBxdWlja2x5IHNlZSBob3cgaXQgYWxpZ25zIHdpdGggdGhlIG92ZXJhbGwgTVQ3NiBhcmNoaXRlY3R1cmUsIGVzcGVjaWFsbHkgYW55IGludGVyYWN0aW9ucyB3aXRoIHRoZSBETUEgZW5naW5lIG9yIHRoZSBoYXJkd2FyZSBxdWV1ZSBtYW5hZ2VtZW50LiBMZXQncyBzZWUgaWYgdGhlcmUncyBhbnkgY2xldmVybmVzcyBpbiBob3cgdGhlIHN0YXR1cyBpcyBwYXJzZWQsIGFuZCBpZiB0aGVyZSBhcmUgYW55IGluZGljYXRpb25zIG9mIG9wdGltaXphdGlvbnMgb3IgcG90ZW50aWFsIGJvdHRsZW5lY2tzIHdpdGhpbiB0aGlzIGZ1bmN0aW9uLiBJJ20gYXNzdW1pbmcgZmFtaWxpYXJpdHkgd2l0aCB0aGUgTVQ3NiBhcmNoaXRlY3R1cmUsIHNvIEkgZG9uJ3QgbmVlZCBleGNlc3NpdmUgaGFuZC1ob2xkaW5nLCBqdXN0IHRoZSBlc3NlbmNlIG9mIHRoZSBmdW5jdGlvbidzIGxvZ2ljLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MzIxLCJPdXRwdXRUb2tlbnMiOjUyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMTA6Mzk6MzUuNDI0MzkwMDIzWiIsIlNlcSI6MzQsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNzcwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNTU1LFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDU1NTpcXHR2b2lkIG10NzZ4MDJfc2VuZF90eF9zdGF0dXMoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYsXFxuIDU1NjpcXHRcXHRcXHRcXHQgICAgc3RydWN0IG10NzZ4MDJfdHhfc3RhdHVzICpzdGF0LCB1OCAqdXBkYXRlKVxcbiA1NTc6XFx0e1xcbiA1NTg6XFx0XFx0c3RydWN0IGllZWU4MDIxMV90eF9pbmZvIGluZm8gPSB7fTtcXG4gNTU5OlxcdFxcdHN0cnVjdCBpZWVlODAyMTFfdHhfc3RhdHVzIHN0YXR1cyA9IHtcXG4gNTYwOlxcdFxcdFxcdC5pbmZvID0gXFx1MDAyNmluZm9cXG4gNTYxOlxcdFxcdH07XFxuIDU2MjpcXHRcXHRzdGF0aWMgY29uc3QgdTggYWNfdG9fdGlkWzRdID0ge1xcbiA1NjM6XFx0XFx0XFx0W0lFRUU4MDIxMV9BQ19CRV0gPSAwLFxcbiA1NjQ6XFx0XFx0XFx0W0lFRUU4MDIxMV9BQ19CS10gPSAxLFxcbiA1NjU6XFx0XFx0XFx0W0lFRUU4MDIxMV9BQ19WSV0gPSA0LFxcbiA1NjY6XFx0XFx0XFx0W0lFRUU4MDIxMV9BQ19WT10gPSA2XFxuIDU2NzpcXHRcXHR9O1xcbiA1Njg6XFx0XFx0c3RydWN0IG10NzZfd2NpZCAqd2NpZCA9IE5VTEw7XFxuIDU2OTpcXHRcXHRzdHJ1Y3QgbXQ3NngwMl9zdGEgKm1zdGEgPSBOVUxMO1xcbiA1NzA6XFx0XFx0c3RydWN0IG10NzZfZGV2ICptZGV2ID0gXFx1MDAyNmRldi1cXHUwMDNlbXQ3NjtcXG4gNTcxOlxcdFxcdHN0cnVjdCBza19idWZmX2hlYWQgbGlzdDtcXG4gNTcyOlxcdFxcdHUzMiBkdXJhdGlvbiA9IDA7XFxuIDU3MzpcXHRcXHR1OCBjdXJfcGt0aWQ7XFxuIDU3NDpcXHRcXHR1MzIgYWMgPSAwO1xcbiA1NzU6XFx0XFx0aW50IGxlbiA9IDA7XFxuIDU3NjpcXHRcXG4gNTc3OlxcdFxcdGlmIChzdGF0LVxcdTAwM2Vwa3RpZCA9PSBNVF9QQUNLRVRfSURfTk9fQUNLKVxcbiA1Nzg6XFx0XFx0XFx0cmV0dXJuO1xcbiA1Nzk6XFx0XFxuIDU4MDpcXHRcXHRyY3VfcmVhZF9sb2NrKCk7XFxuIDU4MTpcXHRcXG4gNTgyOlxcdFxcdHdjaWQgPSBtdDc2X3djaWRfcHRyKGRldiwgc3RhdC1cXHUwMDNld2NpZCk7XFxuIDU4MzpcXHRcXHRpZiAod2NpZCBcXHUwMDI2XFx1MDAyNiB3Y2lkLVxcdTAwM2VzdGEpIHtcXG4gNTg0OlxcdFxcdFxcdHZvaWQgKnByaXY7XFxuIDU4NTpcXHRcXG4gNTg2OlxcdFxcdFxcdHByaXYgPSBtc3RhID0gY29udGFpbmVyX29mKHdjaWQsIHN0cnVjdCBtdDc2eDAyX3N0YSwgd2NpZCk7XFxuIDU4NzpcXHRcXHRcXHRzdGF0dXMuc3RhID0gY29udGFpbmVyX29mKHByaXYsIHN0cnVjdCBpZWVlODAyMTFfc3RhLFxcbiA1ODg6XFx0XFx0XFx0XFx0XFx0XFx0ICBkcnZfcHJpdik7XFxuIDU4OTpcXHRcXHR9XFxuIDU5MDpcXHRcXG4gNTkxOlxcdFxcdG10NzZfdHhfc3RhdHVzX2xvY2sobWRldiwgXFx1MDAyNmxpc3QpO1xcbiA1OTI6XFx0XFxuIDU5MzpcXHRcXHRpZiAod2NpZCkge1xcbiA1OTQ6XFx0XFx0XFx0aWYgKG10NzZfaXNfc2tiX3BrdGlkKHN0YXQtXFx1MDAzZXBrdGlkKSlcXG4gNTk1OlxcdFxcdFxcdFxcdHN0YXR1cy5za2IgPSBtdDc2X3R4X3N0YXR1c19za2JfZ2V0KG1kZXYsIHdjaWQsXFxuIDU5NjpcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgc3RhdC1cXHUwMDNlcGt0aWQsIFxcdTAwMjZsaXN0KTtcXG4gNTk3OlxcdFxcdFxcdGlmIChzdGF0dXMuc2tiKVxcbiA1OTg6XFx0XFx0XFx0XFx0c3RhdHVzLmluZm8gPSBJRUVFODAyMTFfU0tCX0NCKHN0YXR1cy5za2IpO1xcbiA1OTk6XFx0XFx0fVxcbiA2MDA6XFx0XFxuIDYwMTpcXHRcXHRpZiAoIXN0YXR1cy5za2IgXFx1MDAyNlxcdTAwMjYgIShzdGF0LVxcdTAwM2Vwa3RpZCBcXHUwMDI2IE1UX1BBQ0tFVF9JRF9IQVNfUkFURSkpIHtcXG4gNjAyOlxcdFxcdFxcdG10NzZfdHhfc3RhdHVzX3VubG9jayhtZGV2LCBcXHUwMDI2bGlzdCk7XFxuIDYwMzpcXHRcXHRcXHRnb3RvIG91dDtcXG4gNjA0OlxcdFxcdH1cXG4gNjA1OlxcdFxcbiA2MDY6XFx0XFxuIDYwNzpcXHRcXHRpZiAobXN0YSBcXHUwMDI2XFx1MDAyNiBzdGF0LVxcdTAwM2VhZ2dyIFxcdTAwMjZcXHUwMDI2ICFzdGF0dXMuc2tiKSB7XFxuIDYwODpcXHRcXHRcXHR1MzIgc3RhdF92YWwsIHN0YXRfY2FjaGU7XFxuIDYwOTpcXHRcXG4gNjEwOlxcdFxcdFxcdHN0YXRfdmFsID0gc3RhdC1cXHUwMDNlcmF0ZTtcXG4gNjExOlxcdFxcdFxcdHN0YXRfdmFsIHw9ICgodTMyKXN0YXQtXFx1MDAzZXJldHJ5KSBcXHUwMDNjXFx1MDAzYyAxNjtcXG4gNjEyOlxcdFxcdFxcdHN0YXRfY2FjaGUgPSBtc3RhLVxcdTAwM2VzdGF0dXMucmF0ZTtcXG4gNjEzOlxcdFxcdFxcdHN0YXRfY2FjaGUgfD0gKCh1MzIpbXN0YS1cXHUwMDNlc3RhdHVzLnJldHJ5KSBcXHUwMDNjXFx1MDAzYyAxNjtcXG4gNjE0OlxcdFxcbiA2MTU6XFx0XFx0XFx0aWYgKCp1cGRhdGUgPT0gMCBcXHUwMDI2XFx1MDAyNiBzdGF0X3ZhbCA9PSBzdGF0X2NhY2hlIFxcdTAwMjZcXHUwMDI2XFxuIDYxNjpcXHRcXHRcXHQgICAgc3RhdC1cXHUwMDNld2NpZCA9PSBtc3RhLVxcdTAwM2VzdGF0dXMud2NpZCBcXHUwMDI2XFx1MDAyNiBtc3RhLVxcdTAwM2VuX2ZyYW1lcyBcXHUwMDNjIDMyKSB7XFxuIDYxNzpcXHRcXHRcXHRcXHRtc3RhLVxcdTAwM2VuX2ZyYW1lcysrO1xcbiA2MTg6XFx0XFx0XFx0XFx0bXQ3Nl90eF9zdGF0dXNfdW5sb2NrKG1kZXYsIFxcdTAwMjZsaXN0KTtcXG4gNjE5OlxcdFxcdFxcdFxcdGdvdG8gb3V0O1xcbiA2MjA6XFx0XFx0XFx0fVxcbiA2MjE6XFx0XFxuIDYyMjpcXHRcXHRcXHRjdXJfcGt0aWQgPSBtc3RhLVxcdTAwM2VzdGF0dXMucGt0aWQ7XFxuIDYyMzpcXHRcXHRcXHRtdDc2eDAyX21hY19maWxsX3R4X3N0YXR1cyhkZXYsIG1zdGEsIHN0YXR1cy5pbmZvLFxcbiA2MjQ6XFx0XFx0XFx0XFx0XFx0XFx0ICAgXFx1MDAyNm1zdGEtXFx1MDAzZXN0YXR1cywgbXN0YS1cXHUwMDNlbl9mcmFtZXMpO1xcbiA2MjU6XFx0XFxuIDYyNjpcXHRcXHRcXHRtc3RhLVxcdTAwM2VzdGF0dXMgPSAqc3RhdDtcXG4gNjI3OlxcdFxcdFxcdG1zdGEtXFx1MDAzZW5fZnJhbWVzID0gMTtcXG4gNjI4OlxcdFxcdFxcdCp1cGRhdGUgPSAwO1xcbiA2Mjk6XFx0XFx0fSBlbHNlIHtcXG4gNjMwOlxcdFxcdFxcdGN1cl9wa3RpZCA9IHN0YXQtXFx1MDAzZXBrdGlkO1xcbiA2MzE6XFx0XFx0XFx0bXQ3NngwMl9tYWNfZmlsbF90eF9zdGF0dXMoZGV2LCBtc3RhLCBzdGF0dXMuaW5mbywgc3RhdCwgMSk7XFxuIDYzMjpcXHRcXHRcXHQqdXBkYXRlID0gMTtcXG4gNjMzOlxcdFxcdH1cXG4gNjM0OlxcdFxcbiA2MzU6XFx0XFx0aWYgKHN0YXR1cy5za2IpIHtcXG4gNjM2OlxcdFxcdFxcdGluZm8gPSAqc3RhdHVzLmluZm87XFxuIDYzNzpcXHRcXHRcXHRsZW4gPSBzdGF0dXMuc2tiLVxcdTAwM2VsZW47XFxuIDYzODpcXHRcXHRcXHRhYyA9IHNrYl9nZXRfcXVldWVfbWFwcGluZyhzdGF0dXMuc2tiKTtcXG4gNjM5OlxcdFxcdFxcdG10NzZfdHhfc3RhdHVzX3NrYl9kb25lKG1kZXYsIHN0YXR1cy5za2IsIFxcdTAwMjZsaXN0KTtcXG4gNjQwOlxcdFxcdH0gZWxzZSBpZiAobXN0YSkge1xcbiA2NDE6XFx0XFx0XFx0bGVuID0gc3RhdHVzLmluZm8tXFx1MDAzZXN0YXR1cy5hbXBkdV9sZW4gKiBld21hX3BrdGxlbl9yZWFkKFxcdTAwMjZtc3RhLVxcdTAwM2Vwa3RsZW4pO1xcbiA2NDI6XFx0XFx0XFx0YWMgPSBGSUVMRF9HRVQoTVRfUEtUSURfQUMsIGN1cl9wa3RpZCk7XFxuIDY0MzpcXHRcXHR9XFxuIDY0NDpcXHRcXG4gNjQ1OlxcdFxcdG10NzZfdHhfc3RhdHVzX3VubG9jayhtZGV2LCBcXHUwMDI2bGlzdCk7XFxuIDY0NjpcXHRcXG4gNjQ3OlxcdFxcdGlmICghc3RhdHVzLnNrYikge1xcbiA2NDg6XFx0XFx0XFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYucnhfbG9jayk7XFxuIDY0OTpcXHRcXHRcXHRpZWVlODAyMTFfdHhfc3RhdHVzX2V4dChtdDc2X2h3KGRldiksIFxcdTAwMjZzdGF0dXMpO1xcbiA2NTA6XFx0XFx0XFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Ni5yeF9sb2NrKTtcXG4gNjUxOlxcdFxcdH1cXG4gNjUyOlxcdFxcbiA2NTM6XFx0XFx0aWYgKCFsZW4pXFxuIDY1NDpcXHRcXHRcXHRnb3RvIG91dDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMTA6Mzk6MzUuNDI0NTA5NTAzWiIsIlNlcSI6MzUsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc0MTg4NTE5OTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIE1lbW9yeSBJc3N1ZSBpbiB0aGUgTVQ3NiBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgY29kZSBhbmQgSSdtIGxvb2tpbmcgYXQgYSBwb3RlbnRpYWwgc2NlbmFyaW8gaW52b2x2aW5nIGBtdDc2eDAyX21hY19maWxsX3R4X3N0YXR1c2AuIFRoZSBpbml0aWFsIHRob3VnaHQgd2FzIHRoYXQgaWYgdGhpcyBmdW5jdGlvbiByZXR1cm5zIGVhcmx5LCBgc3RhdHVzLmluZm9gIG1pZ2h0IG5vdCBiZSBmdWxseSBwb3B1bGF0ZWQuIFNwZWNpZmljYWxseSwgYHN0YXR1cy5pbmZvYCBlaXRoZXIgcG9pbnRzIHRvIGEgemVyby1pbml0aWFsaXplZCBgaW5mb2Agc3RydWN0IChpZiBgc3RhdHVzLnNrYmAgaXMgTlVMTCkgb3IgdG8gYElFRUU4MDIxMV9TS0JfQ0Ioc3RhdHVzLnNrYilgIChpZiBgc3RhdHVzLnNrYmAgaXMgbm90IE5VTEwpLlxuXG5CdXQgd2FpdCwgYGluZm9gIGlzICpleHBsaWNpdGx5KiBpbml0aWFsaXplZCB0byB6ZXJvLCB3aGljaCBpcyBnb29kLiBTbywgaWYgYHN0YXR1cy5za2JgIGlzIE5VTEwsIHRoZW4gYHN0YXR1cy5pbmZvYCB3aWxsIGJlIHRoZSB6ZXJvIGluaXRpYWxpemVkIGluZm8uIEFuZCBpZiBgc3RhdHVzLnNrYmAgaXNuJ3QgTlVMTCwgdGhlbiBgc3RhdHVzLmluZm9gIHBvaW50cyB0byB0aGUgY29udHJvbCBibG9jayBvZiB0aGUgU0tCLCB3aGljaCBpcyBhc3N1bWVkIHRvIGJlIGluaXRpYWxpemVkIHdoZW4gdGhlIHNrYiB3YXMgY3JlYXRlZC4gVGhlbiBgaWVlZTgwMjExX3R4X3N0YXR1c19leHRgIGdldHMgY2FsbGVkLiBOb3csIEkgaGF2ZSB0byBlbnN1cmUgdGhhdCBpZiBgbXQ3NngwMl9tYWNfZmlsbF90eF9zdGF0dXNgIGRvZXMgYmFpbCBvdXQgZWFybHksIGl0IGRvZXNuJ3QgbGVhdmUgc29tZXRoaW5nIHVuaW5pdGlhbGl6ZWQuXG5cblRoZSBjb25jZXJuIHdhcyBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyByZWFkLiBCdXQsIGdpdmVuIHRoYXQgYGluZm9gIGlzIHplcm9lZCwgYW5kIHRoZSBgSUVFRTgwMjExX1NLQl9DQmAgaXMgYXNzdW1lZCB0byBiZSBpbml0aWFsaXplZC4gVGhlcmUgaXMgbm90IGFuIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzc3VlIGluIHRoZSBjb2RlIGFzIGRlc2NyaWJlZC5cblxuVGhlIHJlYWwgcHJvYmxlbSwgdGhvdWdoLCBhcHBlYXJzIHRvIGJlIGFuIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzLCB3aGljaCBpcyBzb21ldGhpbmcgSSdtIHZlcnkgZmFtaWxpYXIgd2l0aC4gSXQncyBoYXBwZW5pbmcgaW4gYG1hYzgwMjExL21pbnN0cmVsX2h0YCwgc3BlY2lmaWNhbGx5IGJlY2F1c2Ugb2YgYW4gaW52YWxpZCBgaWR4YCB2YWx1ZS4gVGhlIGNvbW1lbnQgZXZlbiBjb25maXJtcyBpdCwgbWVudGlvbmluZyB0aGF0IHRoZSBcIlJhdyBoYXJkd2FyZSBUWC1zdGF0dXMgaW5kZXggaXMgdW52YWxpZGF0ZWQ7IGEgc3RhbGUgb3IgY29ycnVwdCB2YWx1ZSBoZXJlIG92ZXJmbG93cyBtYWM4MDIxMS9taW5zdHJlbF9odCdzIHBlci1ncm91cCByYXRlIGFycmF5XCIuIFRoaXMgaXMgYSB0ZXh0Ym9vayBleGFtcGxlIG9mIGEgYnVmZmVyIG92ZXJmbG93LCBhbmQgS0FTQU4gc2hvdWxkIGhhdmUgbm8gcHJvYmxlbSBjYXRjaGluZyB0aGlzLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgbXQ3NngwMl9tYWNfZmlsbF90eF9zdGF0dXNgIGl0c2VsZiB0byBzZWUgaWYgdGhlIHJvb3QgY2F1c2UgY2FuIGJlIHVuY292ZXJlZC4gQnV0IHRoZSBjb3JlIGlzc3VlIGlzIGNsZWFybHkgdGhlIGFycmF5IGFjY2Vzcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjQyMywiT3V0cHV0VG9rZW5zIjo1MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzNCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDEwOjM5OjQyLjg0MzM2Mzg5WiIsIlNlcSI6MzYsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NzU3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNDg3LFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDQ4NzpcXHRzdGF0aWMgdm9pZFxcbiA0ODg6XFx0bXQ3NngwMl9tYWNfZmlsbF90eF9zdGF0dXMoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYsIHN0cnVjdCBtdDc2eDAyX3N0YSAqbXN0YSxcXG4gNDg5OlxcdFxcdFxcdFxcdCAgIHN0cnVjdCBpZWVlODAyMTFfdHhfaW5mbyAqaW5mbyxcXG4gNDkwOlxcdFxcdFxcdFxcdCAgIHN0cnVjdCBtdDc2eDAyX3R4X3N0YXR1cyAqc3QsIGludCBuX2ZyYW1lcylcXG4gNDkxOlxcdHtcXG4gNDkyOlxcdFxcdHN0cnVjdCBpZWVlODAyMTFfdHhfcmF0ZSAqcmF0ZSA9IGluZm8tXFx1MDAzZXN0YXR1cy5yYXRlcztcXG4gNDkzOlxcdFxcdHN0cnVjdCBpZWVlODAyMTFfdHhfcmF0ZSBsYXN0X3JhdGU7XFxuIDQ5NDpcXHRcXHR1MTYgZmlyc3RfcmF0ZTtcXG4gNDk1OlxcdFxcdGludCByZXRyeSA9IHN0LVxcdTAwM2VyZXRyeTtcXG4gNDk2OlxcdFxcdGludCBwaHk7XFxuIDQ5NzpcXHRcXHRpbnQgaTtcXG4gNDk4OlxcdFxcbiA0OTk6XFx0XFx0aWYgKCFuX2ZyYW1lcylcXG4gNTAwOlxcdFxcdFxcdHJldHVybjtcXG4gNTAxOlxcdFxcbiA1MDI6XFx0XFx0cGh5ID0gRklFTERfR0VUKE1UX1JYV0lfUkFURV9QSFksIHN0LVxcdTAwM2VyYXRlKTtcXG4gNTAzOlxcdFxcbiA1MDQ6XFx0XFx0aWYgKHN0LVxcdTAwM2Vwa3RpZCBcXHUwMDI2IE1UX1BBQ0tFVF9JRF9IQVNfUkFURSkge1xcbiA1MDU6XFx0XFx0XFx0Zmlyc3RfcmF0ZSA9IHN0LVxcdTAwM2VyYXRlIFxcdTAwMjYgfk1UX1BLVElEX1JBVEU7XFxuIDUwNjpcXHRcXHRcXHRmaXJzdF9yYXRlIHw9IHN0LVxcdTAwM2Vwa3RpZCBcXHUwMDI2IE1UX1BLVElEX1JBVEU7XFxuIDUwNzpcXHRcXG4gNTA4OlxcdFxcdFxcdGlmIChtdDc2eDAyX21hY19wcm9jZXNzX3R4X3JhdGUoXFx1MDAyNnJhdGVbMF0sIGZpcnN0X3JhdGUsXFxuIDUwOTpcXHRcXHRcXHRcXHRcXHRcXHRcXHRkZXYtXFx1MDAzZW1waHkuY2hhbmRlZi5jaGFuLVxcdTAwM2ViYW5kKSlcXG4gNTEwOlxcdFxcdFxcdFxcdHJldHVybjtcXG4gNTExOlxcdFxcdH0gZWxzZSBpZiAocmF0ZVswXS5pZHggXFx1MDAzYyAwKSB7XFxuIDUxMjpcXHRcXHRcXHRpZiAoIW1zdGEpXFxuIDUxMzpcXHRcXHRcXHRcXHRyZXR1cm47XFxuIDUxNDpcXHRcXG4gNTE1OlxcdFxcdFxcdGlmIChtdDc2eDAyX21hY19wcm9jZXNzX3R4X3JhdGUoXFx1MDAyNnJhdGVbMF0sIG1zdGEtXFx1MDAzZXdjaWQudHhfaW5mbyxcXG4gNTE2OlxcdFxcdFxcdFxcdFxcdFxcdFxcdGRldi1cXHUwMDNlbXBoeS5jaGFuZGVmLmNoYW4tXFx1MDAzZWJhbmQpKVxcbiA1MTc6XFx0XFx0XFx0XFx0cmV0dXJuO1xcbiA1MTg6XFx0XFx0fVxcbiA1MTk6XFx0XFxuIDUyMDpcXHRcXHRpZiAobXQ3NngwMl9tYWNfcHJvY2Vzc190eF9yYXRlKFxcdTAwMjZsYXN0X3JhdGUsIHN0LVxcdTAwM2VyYXRlLFxcbiA1MjE6XFx0XFx0XFx0XFx0XFx0XFx0ZGV2LVxcdTAwM2VtcGh5LmNoYW5kZWYuY2hhbi1cXHUwMDNlYmFuZCkpXFxuIDUyMjpcXHRcXHRcXHRyZXR1cm47XFxuIDUyMzpcXHRcXG4gNTI0OlxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBUlJBWV9TSVpFKGluZm8tXFx1MDAzZXN0YXR1cy5yYXRlcyk7IGkrKykge1xcbiA1MjU6XFx0XFx0XFx0cmV0cnktLTtcXG4gNTI2OlxcdFxcdFxcdGlmIChpICsgMSA9PSBBUlJBWV9TSVpFKGluZm8tXFx1MDAzZXN0YXR1cy5yYXRlcykpIHtcXG4gNTI3OlxcdFxcdFxcdFxcdGluZm8tXFx1MDAzZXN0YXR1cy5yYXRlc1tpXSA9IGxhc3RfcmF0ZTtcXG4gNTI4OlxcdFxcdFxcdFxcdGluZm8tXFx1MDAzZXN0YXR1cy5yYXRlc1tpXS5jb3VudCA9IG1heF90KGludCwgcmV0cnksIDEpO1xcbiA1Mjk6XFx0XFx0XFx0XFx0YnJlYWs7XFxuIDUzMDpcXHRcXHRcXHR9XFxuIDUzMTpcXHRcXG4gNTMyOlxcdFxcdFxcdG10NzZ4MDJfdHhfcmF0ZV9mYWxsYmFjayhpbmZvLVxcdTAwM2VzdGF0dXMucmF0ZXMsIGksIHBoeSk7XFxuIDUzMzpcXHRcXHRcXHRpZiAoaW5mby1cXHUwMDNlc3RhdHVzLnJhdGVzW2ldLmlkeCA9PSBsYXN0X3JhdGUuaWR4KVxcbiA1MzQ6XFx0XFx0XFx0XFx0YnJlYWs7XFxuIDUzNTpcXHRcXHR9XFxuIDUzNjpcXHRcXG4gNTM3OlxcdFxcdGlmIChpICsgMSBcXHUwMDNjIEFSUkFZX1NJWkUoaW5mby1cXHUwMDNlc3RhdHVzLnJhdGVzKSkge1xcbiA1Mzg6XFx0XFx0XFx0aW5mby1cXHUwMDNlc3RhdHVzLnJhdGVzW2kgKyAxXS5pZHggPSAtMTtcXG4gNTM5OlxcdFxcdFxcdGluZm8tXFx1MDAzZXN0YXR1cy5yYXRlc1tpICsgMV0uY291bnQgPSAwO1xcbiA1NDA6XFx0XFx0fVxcbiA1NDE6XFx0XFxuIDU0MjpcXHRcXHRpbmZvLVxcdTAwM2VzdGF0dXMuYW1wZHVfbGVuID0gbl9mcmFtZXM7XFxuIDU0MzpcXHRcXHRpbmZvLVxcdTAwM2VzdGF0dXMuYW1wZHVfYWNrX2xlbiA9IHN0LVxcdTAwM2VzdWNjZXNzID8gbl9mcmFtZXMgOiAwO1xcbiA1NDQ6XFx0XFxuIDU0NTpcXHRcXHRpZiAoc3QtXFx1MDAzZWFnZ3IpXFxuIDU0NjpcXHRcXHRcXHRpbmZvLVxcdTAwM2VmbGFncyB8PSBJRUVFODAyMTFfVFhfQ1RMX0FNUERVIHxcXG4gNTQ3OlxcdFxcdFxcdFxcdCAgICAgICBJRUVFODAyMTFfVFhfU1RBVF9BTVBEVTtcXG4gNTQ4OlxcdFxcbiA1NDk6XFx0XFx0aWYgKCFzdC1cXHUwMDNlYWNrX3JlcSlcXG4gNTUwOlxcdFxcdFxcdGluZm8tXFx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9UWF9DVExfTk9fQUNLO1xcbiA1NTE6XFx0XFx0ZWxzZSBpZiAoc3QtXFx1MDAzZXN1Y2Nlc3MpXFxuIDU1MjpcXHRcXHRcXHRpbmZvLVxcdTAwM2VmbGFncyB8PSBJRUVFODAyMTFfVFhfU1RBVF9BQ0s7XFxuIDU1MzpcXHR9XFxuIDU1NDpcXHRcXG4gNTU1OlxcdHZvaWQgbXQ3NngwMl9zZW5kX3R4X3N0YXR1cyhzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldixcXG4gNTU2OlxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgbXQ3NngwMl90eF9zdGF0dXMgKnN0YXQsIHU4ICp1cGRhdGUpXFxuIDU1NzpcXHR7XFxuIDU1ODpcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX3R4X2luZm8gaW5mbyA9IHt9O1xcbiA1NTk6XFx0XFx0c3RydWN0IGllZWU4MDIxMV90eF9zdGF0dXMgc3RhdHVzID0ge1xcbiA1NjA6XFx0XFx0XFx0LmluZm8gPSBcXHUwMDI2aW5mb1xcbiA1NjE6XFx0XFx0fTtcXG4gNTYyOlxcdFxcdHN0YXRpYyBjb25zdCB1OCBhY190b190aWRbNF0gPSB7XFxuIDU2MzpcXHRcXHRcXHRbSUVFRTgwMjExX0FDX0JFXSA9IDAsXFxuIDU2NDpcXHRcXHRcXHRbSUVFRTgwMjExX0FDX0JLXSA9IDEsXFxuIDU2NTpcXHRcXHRcXHRbSUVFRTgwMjExX0FDX1ZJXSA9IDQsXFxuIDU2NjpcXHRcXHRcXHRbSUVFRTgwMjExX0FDX1ZPXSA9IDZcXG4gNTY3OlxcdFxcdH07XFxuIDU2ODpcXHRcXHRzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkID0gTlVMTDtcXG4gNTY5OlxcdFxcdHN0cnVjdCBtdDc2eDAyX3N0YSAqbXN0YSA9IE5VTEw7XFxuIDU3MDpcXHRcXHRzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYgPSBcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2O1xcbiA1NzE6XFx0XFx0c3RydWN0IHNrX2J1ZmZfaGVhZCBsaXN0O1xcbiA1NzI6XFx0XFx0dTMyIGR1cmF0aW9uID0gMDtcXG4gNTczOlxcdFxcdHU4IGN1cl9wa3RpZDtcXG4gNTc0OlxcdFxcdHUzMiBhYyA9IDA7XFxuIDU3NTpcXHRcXHRpbnQgbGVuID0gMDtcXG4gNTc2OlxcdFxcbiA1Nzc6XFx0XFx0aWYgKHN0YXQtXFx1MDAzZXBrdGlkID09IE1UX1BBQ0tFVF9JRF9OT19BQ0spXFxuIDU3ODpcXHRcXHRcXHRyZXR1cm47XFxuIDU3OTpcXHRcXG4gNTgwOlxcdFxcdHJjdV9yZWFkX2xvY2soKTtcXG4gNTgxOlxcdFxcbiA1ODI6XFx0XFx0d2NpZCA9IG10NzZfd2NpZF9wdHIoZGV2LCBzdGF0LVxcdTAwM2V3Y2lkKTtcXG4gNTgzOlxcdFxcdGlmICh3Y2lkIFxcdTAwMjZcXHUwMDI2IHdjaWQtXFx1MDAzZXN0YSkge1xcbiA1ODQ6XFx0XFx0XFx0dm9pZCAqcHJpdjtcXG4gNTg1OlxcdFxcbiA1ODY6XFx0XFx0XFx0cHJpdiA9IG1zdGEgPSBjb250YWluZXJfb2Yod2NpZCwgc3RydWN0IG10NzZ4MDJfc3RhLCB3Y2lkKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMTA6Mzk6NDIuODQzNTEyODdaIiwiU2VxIjozNywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjM5NTIzNjE2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBUWCBTdGF0dXMgSXNzdWUqKlxuXG5Pa2F5LCBzbyBoZXJlJ3MgdGhlIGRlYWwuIEl0IGxvb2tzIGxpa2Ugd2UgaGF2ZSBhIHBvdGVudGlhbCBwcm9ibGVtIHdpdGggdGhlIGBtdDc2eDAyX21hY19maWxsX3R4X3N0YXR1c2AgZnVuY3Rpb24uIEl0IHNlZW1zIHRoYXQgaWYgdGhpcyBmdW5jdGlvbiBiYWlscyBvdXQgZWFybHksIHRoZSBgaW5mb2Agc3RydWN0dXJlIG1pZ2h0IG5vdCBiZSBmdWxseSBwb3B1bGF0ZWQuIEhvd2V2ZXIsIGBpbmZvYCAqaXMqIHplcm8taW5pdGlhbGl6ZWQgaW4gYG10NzZ4MDJfc2VuZF90eF9zdGF0dXNgLCBzbyB0aGF04oCZcyBhIG1pdGlnYXRpbmcgZmFjdG9yLiBBbmQsIGlmIGBzdGF0dXMuc2tiYCBpc24ndCBOVUxMLCB0aGVuIGBpbmZvYCBnZXRzIGl0cyBkYXRhIGZyb20gYElFRUU4MDIxMV9TS0JfQ0Ioc3RhdHVzLnNrYilgLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzLCBcIklzIHRoZXJlIGFuIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWQgbHVya2luZyBpbiBoZXJlIHNvbWV3aGVyZT9cIlxuXG5CdXQgYWZ0ZXIgYSBjbG9zZXIgbG9vaywgbm8sIHRoYXQncyBub3QgaXQuIFRoZSByb290IGNhdXNlIGlzIGEgY2xhc3NpYyBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2VzcywgdHJpZ2dlcmVkIGJ5IGEgY29ycnVwdGVkIG9yIHN0YWxlIGhhcmR3YXJlIFRYLXN0YXR1cyBpbmRleC4gVGhlIGV4aXN0aW5nIGNvZGUgaXNuJ3QgdmFsaWRhdGluZyB0aGlzIGluZGV4LCBhbmQgdGhhdCdzIHRoZSB2dWxuZXJhYmlsaXR5LiBUaGUgcHJvcG9zZWQgcGF0Y2ggYWRkcmVzc2VzIHRoaXMgYnkgYWRkaW5nIGJvdW5kcyBjaGVja2luZywgcHJldmVudGluZyB0aGlzIE9PQiBhY2Nlc3MgZnJvbSBoYXBwZW5pbmcgaW4gdGhlIGZpcnN0IHBsYWNlLlxuXG5HaXZlbiB0aGUgbmF0dXJlIG9mIHRoZSBidWcsIEkgc2VlIG5vIHJlYXNvbiB0byBiZWxpZXZlIEtNU0FOIGlzIG5lZWRlZCBoZXJlLiBUaGUgcHJvYmxlbSBpcyBhIHNpbXBsZSBhcnJheSBib3VuZHMgdmlvbGF0aW9uLiBLQVNBTiBpcyBwZXJmZWN0bHkgY2FwYWJsZSBvZiBjYXRjaGluZyB0aGF0IHR5cGUgb2YgZXJyb3IuIFdlIGFyZSBub3QgZGVhbGluZyB3aXRoIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGFueSBpbmZvIGxlYWtzIGhlcmUuIFRoZSBmaXggaXMgYSBjbGVhbiBib3VuZHMgY2hlY2ssIGFuZCB0aGF04oCZcyBwcmVjaXNlbHkgd2hhdCBLQVNBTiBleGNlbHMgYXQgZGV0ZWN0aW5nLiBUaGlzIGlzIGEgc3RyYWlnaHRmb3J3YXJkIEtBU0FOIGlzc3VlLiBTbywgSSdtIGNvbmZpZGVudCB3ZSBjYW4gcHJvY2VlZCB3aXRob3V0IHRoZSBjb21wbGV4aXR5IG9mIEtNU0FOLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MTI1LCJPdXRwdXRUb2tlbnMiOjExMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDEwOjM5OjQ5LjIzODc1MTY0M1oiLCJTZXEiOjM4LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzOTQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3MgYnVnIGNhdXNlZCBieSBhbiB1bnZhbGlkYXRlZCBoYXJkd2FyZSBUWC1zdGF0dXMgaW5kZXggb3ZlcmZsb3dpbmcgdGhlIG1hYzgwMjExL21pbnN0cmVsX2h0IHBlci1ncm91cCByYXRlIGFycmF5LiBPdXQtb2YtYm91bmRzIGFjY2Vzc2VzIGFyZSByZWxpYWJseSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBtb2RpZnkgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBpbmZvLWxlYWtzLCBvciBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4gdG8gZGV0ZWN0LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzIGJ1ZyBjYXVzZWQgYnkgYW4gdW52YWxpZGF0ZWQgaGFyZHdhcmUgVFgtc3RhdHVzIGluZGV4IG92ZXJmbG93aW5nIHRoZSBtYWM4MDIxMS9taW5zdHJlbF9odCBwZXItZ3JvdXAgcmF0ZSBhcnJheS4gT3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBhcmUgcmVsaWFibHkgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgbW9kaWZ5IGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgaW5mby1sZWFrcywgb3IgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOIHRvIGRldGVjdC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowsj85k[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-26 09:36:10 +0000 UTC FinishedAt: 2026-08-26 10:39:51 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MT76x0U", "MT76x2U" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MT76x0U", "MT76x2U" ], "series_id": "9f71526c-bd84-41f5-8a35-7cda311f8eb4" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mt76x02_send_tx_status", "mt76x02_tx_status_data" ], "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+CgkJCTx0ZD4yMDI2LzA4LzI2IDEwOjIxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MThtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNVDc2eDBVJiMzNDssCiAgICAmIzM0O01UNzZ4MlUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttdDc2eDAyX3NlbmRfdHhfc3RhdHVzJiMzNDssCiAgICAmIzM0O210NzZ4MDJfdHhfc3RhdHVzX2RhdGEmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2VzcyBidWcgY2F1c2VkIGJ5IGFuIHVudmFsaWRhdGVkIGhhcmR3YXJlIFRYLXN0YXR1cyBpbmRleCBvdmVyZmxvd2luZyB0aGUgbWFjODAyMTEvbWluc3RyZWxfaHQgcGVyLWdyb3VwIHJhdGUgYXJyYXkuIE91dC1vZi1ib3VuZHMgYWNjZXNzZXMgYXJlIHJlbGlhYmx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIG1vZGlmeSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIGluZm8tbGVha3MsIG9yIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTiB0byBkZXRlY3QuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIHRvIGBtdDc2eDAyX21hY19wcm9jZXNzX3R4X3JhdGVgIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3MgaW4gbWFjODAyMTEvbWluc3RyZWxfaHQuIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSBVU0IgZnV6emluZyBvZiB0aGUgbWVkaWF0ZWsgbXQ3NngwdSBhbmQgbXQ3NngydSBkcml2ZXJzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDEwOjIxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMTFjNmY4NWIwZGE1YmY5NDcwZjU5NGQ5ZTkwZjk3MGJjZWNjMzUyOFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDI2IDEwOjIxOjExIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuY1xuaW5kZXggMTRlZTViM2I5NGQzMS4uZDc3MzU2YTJlYzgwMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5jXG5AQCAtMzAyLDEwICYjNDM7MzAyLDIyIEBAIG10NzZ4MDJfbWFjX3Byb2Nlc3NfdHhfcmF0ZShzdHJ1Y3QgaWVlZTgwMjExX3R4X3JhdGUgKnR4cmF0ZSwgdTE2IHJhdGUsXG4gXHRcdHR4cmF0ZS1cdTAwM2VmbGFncyB8PSBJRUVFODAyMTFfVFhfUkNfR1JFRU5fRklFTEQ7XG4gXHRcdGZhbGx0aHJvdWdoO1xuIFx0Y2FzZSBNVF9QSFlfVFlQRV9IVDpcbiYjNDM7XHRcdC8qIFJhdyBoYXJkd2FyZSBUWC1zdGF0dXMgaW5kZXggaXMgdW52YWxpZGF0ZWQ7IGEgc3RhbGUgb3JcbiYjNDM7XHRcdCAqIGNvcnJ1cHQgdmFsdWUgaGVyZSBvdmVyZmxvd3MgbWFjODAyMTEvbWluc3RyZWxfaHQmIzM5O3NcbiYjNDM7XHRcdCAqIHBlci1ncm91cCByYXRlIGFycmF5IChNQ1NfR1JPVVBfUkFURVMgPT0gMTApIGFuZCBjcmFzaGVzLlxuJiM0MztcdFx0ICogVmFsaWQgODAyLjExbiBNQ1MgaW5kaWNlcyBhcmUgMC0zMSAoZm91ciBzdHJlYW1zIHggOCkuXG4mIzQzO1x0XHQgKi9cbiYjNDM7XHRcdGlmIChpZHggXHUwMDNlIDMxKVxuJiM0MztcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdFx0dHhyYXRlLVx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9UWF9SQ19NQ1M7XG4gXHRcdHR4cmF0ZS1cdTAwM2VpZHggPSBpZHg7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBNVF9QSFlfVFlQRV9WSFQ6XG4mIzQzO1x0XHQvKiBTYW1lIG92ZXJmbG93IHJpc2sgZm9yIFZIVDogbWFjODAyMTEgZXhwZWN0cyB0aGUgTUNTXG4mIzQzO1x0XHQgKiBuaWJibGUgKGJpdHMgMzowKSBpbiByYW5nZSAwLTksIG5zcyBwYWNrZWQgYWJvdmUgaXQuXG4mIzQzO1x0XHQgKi9cbiYjNDM7XHRcdGlmICgoaWR4IFx1MDAyNiAweGYpIFx1MDAzZSA5KVxuJiM0MztcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdFx0dHhyYXRlLVx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9UWF9SQ19WSFRfTUNTO1xuIFx0XHR0eHJhdGUtXHUwMDNlaWR4ID0gaWR4O1xuIFx0XHRicmVhaztcbkBAIC00OTMsMTggJiM0Mzs1MDUsMjEgQEAgbXQ3NngwMl9tYWNfZmlsbF90eF9zdGF0dXMoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYsIHN0cnVjdCBtdDc2eDAyX3N0YSAqbXN0YSxcbiBcdFx0Zmlyc3RfcmF0ZSA9IHN0LVx1MDAzZXJhdGUgXHUwMDI2IH5NVF9QS1RJRF9SQVRFO1xuIFx0XHRmaXJzdF9yYXRlIHw9IHN0LVx1MDAzZXBrdGlkIFx1MDAyNiBNVF9QS1RJRF9SQVRFO1xuIFxuLVx0XHRtdDc2eDAyX21hY19wcm9jZXNzX3R4X3JhdGUoXHUwMDI2cmF0ZVswXSwgZmlyc3RfcmF0ZSxcbi1cdFx0XHRcdFx0ICAgIGRldi1cdTAwM2VtcGh5LmNoYW5kZWYuY2hhbi1cdTAwM2ViYW5kKTtcbiYjNDM7XHRcdGlmIChtdDc2eDAyX21hY19wcm9jZXNzX3R4X3JhdGUoXHUwMDI2cmF0ZVswXSwgZmlyc3RfcmF0ZSxcbiYjNDM7XHRcdFx0XHRcdFx0ZGV2LVx1MDAzZW1waHkuY2hhbmRlZi5jaGFuLVx1MDAzZWJhbmQpKVxuJiM0MztcdFx0XHRyZXR1cm47XG4gXHR9IGVsc2UgaWYgKHJhdGVbMF0uaWR4IFx1MDAzYyAwKSB7XG4gXHRcdGlmICghbXN0YSlcbiBcdFx0XHRyZXR1cm47XG4gXG4tXHRcdG10NzZ4MDJfbWFjX3Byb2Nlc3NfdHhfcmF0ZShcdTAwMjZyYXRlWzBdLCBtc3RhLVx1MDAzZXdjaWQudHhfaW5mbyxcbi1cdFx0XHRcdFx0ICAgIGRldi1cdTAwM2VtcGh5LmNoYW5kZWYuY2hhbi1cdTAwM2ViYW5kKTtcbiYjNDM7XHRcdGlmIChtdDc2eDAyX21hY19wcm9jZXNzX3R4X3JhdGUoXHUwMDI2cmF0ZVswXSwgbXN0YS1cdTAwM2V3Y2lkLnR4X2luZm8sXG4mIzQzO1x0XHRcdFx0XHRcdGRldi1cdTAwM2VtcGh5LmNoYW5kZWYuY2hhbi1cdTAwM2ViYW5kKSlcbiYjNDM7XHRcdFx0cmV0dXJuO1xuIFx0fVxuIFxuLVx0bXQ3NngwMl9tYWNfcHJvY2Vzc190eF9yYXRlKFx1MDAyNmxhc3RfcmF0ZSwgc3QtXHUwMDNlcmF0ZSxcbi1cdFx0XHRcdCAgICBkZXYtXHUwMDNlbXBoeS5jaGFuZGVmLmNoYW4tXHUwMDNlYmFuZCk7XG4mIzQzO1x0aWYgKG10NzZ4MDJfbWFjX3Byb2Nlc3NfdHhfcmF0ZShcdTAwMjZsYXN0X3JhdGUsIHN0LVx1MDAzZXJhdGUsXG4mIzQzO1x0XHRcdFx0XHRkZXYtXHUwMDNlbXBoeS5jaGFuZGVmLmNoYW4tXHUwMDNlYmFuZCkpXG4mIzQzO1x0XHRyZXR1cm47XG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKGluZm8tXHUwMDNlc3RhdHVzLnJhdGVzKTsgaSYjNDM7JiM0MzspIHtcbiBcdFx0cmV0cnktLTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAxMDoyMTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xOG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01UNzZ4MFUmIzM0OywKICAgICYjMzQ7TVQ3NngyVSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O210NzZ4MDJfc2VuZF90eF9zdGF0dXMmIzM0OywKICAgICYjMzQ7bXQ3NngwMl90eF9zdGF0dXNfZGF0YSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyB0byBgbXQ3NngwMl9tYWNfcHJvY2Vzc190eF9yYXRlYCB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzIGluIG1hYzgwMjExL21pbnN0cmVsX2h0LiBUaGlzIGlzIHJlYWNoYWJsZSB2aWEgVVNCIGZ1enppbmcgb2YgdGhlIG1lZGlhdGVrIG10NzZ4MHUgYW5kIG10NzZ4MnUgZHJpdmVycy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDExYzZmODViMGRhNWJmOTQ3MGY1OTRkOWU5MGY5NzBiY2VjYzM1MjgKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEF1ZyAyNiAxMDoyMToxMSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuYwppbmRleCAxNGVlNWIzYjk0ZDMxLi5kNzczNTZhMmVjODAzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5jCkBAIC0zMDIsMTAgJiM0MzszMDIsMjIgQEAgbXQ3NngwMl9tYWNfcHJvY2Vzc190eF9yYXRlKHN0cnVjdCBpZWVlODAyMTFfdHhfcmF0ZSAqdHhyYXRlLCB1MTYgcmF0ZSwKIAkJdHhyYXRlLSZndDtmbGFncyB8PSBJRUVFODAyMTFfVFhfUkNfR1JFRU5fRklFTEQ7CiAJCWZhbGx0aHJvdWdoOwogCWNhc2UgTVRfUEhZX1RZUEVfSFQ6CiYjNDM7CQkvKiBSYXcgaGFyZHdhcmUgVFgtc3RhdHVzIGluZGV4IGlzIHVudmFsaWRhdGVkOyBhIHN0YWxlIG9yCiYjNDM7CQkgKiBjb3JydXB0IHZhbHVlIGhlcmUgb3ZlcmZsb3dzIG1hYzgwMjExL21pbnN0cmVsX2h0JiMzOTtzCiYjNDM7CQkgKiBwZXItZ3JvdXAgcmF0ZSBhcnJheSAoTUNTX0dST1VQX1JBVEVTID09IDEwKSBhbmQgY3Jhc2hlcy4KJiM0MzsJCSAqIFZhbGlkIDgwMi4xMW4gTUNTIGluZGljZXMgYXJlIDAtMzEgKGZvdXIgc3RyZWFtcyB4IDgpLgomIzQzOwkJICovCiYjNDM7CQlpZiAoaWR4ICZndDsgMzEpCiYjNDM7CQkJcmV0dXJuIC1FSU5WQUw7CiAJCXR4cmF0ZS0mZ3Q7ZmxhZ3MgfD0gSUVFRTgwMjExX1RYX1JDX01DUzsKIAkJdHhyYXRlLSZndDtpZHggPSBpZHg7CiAJCWJyZWFrOwogCWNhc2UgTVRfUEhZX1RZUEVfVkhUOgomIzQzOwkJLyogU2FtZSBvdmVyZmxvdyByaXNrIGZvciBWSFQ6IG1hYzgwMjExIGV4cGVjdHMgdGhlIE1DUwomIzQzOwkJICogbmliYmxlIChiaXRzIDM6MCkgaW4gcmFuZ2UgMC05LCBuc3MgcGFja2VkIGFib3ZlIGl0LgomIzQzOwkJICovCiYjNDM7CQlpZiAoKGlkeCAmYW1wOyAweGYpICZndDsgOSkKJiM0MzsJCQlyZXR1cm4gLUVJTlZBTDsKIAkJdHhyYXRlLSZndDtmbGFncyB8PSBJRUVFODAyMTFfVFhfUkNfVkhUX01DUzsKIAkJdHhyYXRlLSZndDtpZHggPSBpZHg7CiAJCWJyZWFrOwpAQCAtNDkzLDE4ICYjNDM7NTA1LDIxIEBAIG10NzZ4MDJfbWFjX2ZpbGxfdHhfc3RhdHVzKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2LCBzdHJ1Y3QgbXQ3NngwMl9zdGEgKm1zdGEsCiAJCWZpcnN0X3JhdGUgPSBzdC0mZ3Q7cmF0ZSAmYW1wOyB+TVRfUEtUSURfUkFURTsKIAkJZmlyc3RfcmF0ZSB8PSBzdC0mZ3Q7cGt0aWQgJmFtcDsgTVRfUEtUSURfUkFURTsKIAotCQltdDc2eDAyX21hY19wcm9jZXNzX3R4X3JhdGUoJmFtcDtyYXRlWzBdLCBmaXJzdF9yYXRlLAotCQkJCQkgICAgZGV2LSZndDttcGh5LmNoYW5kZWYuY2hhbi0mZ3Q7YmFuZCk7CiYjNDM7CQlpZiAobXQ3NngwMl9tYWNfcHJvY2Vzc190eF9yYXRlKCZhbXA7cmF0ZVswXSwgZmlyc3RfcmF0ZSwKJiM0MzsJCQkJCQlkZXYtJmd0O21waHkuY2hhbmRlZi5jaGFuLSZndDtiYW5kKSkKJiM0MzsJCQlyZXR1cm47CiAJfSBlbHNlIGlmIChyYXRlWzBdLmlkeCAmbHQ7IDApIHsKIAkJaWYgKCFtc3RhKQogCQkJcmV0dXJuOwogCi0JCW10NzZ4MDJfbWFjX3Byb2Nlc3NfdHhfcmF0ZSgmYW1wO3JhdGVbMF0sIG1zdGEtJmd0O3djaWQudHhfaW5mbywKLQkJCQkJICAgIGRldi0mZ3Q7bXBoeS5jaGFuZGVmLmNoYW4tJmd0O2JhbmQpOwomIzQzOwkJaWYgKG10NzZ4MDJfbWFjX3Byb2Nlc3NfdHhfcmF0ZSgmYW1wO3JhdGVbMF0sIG1zdGEtJmd0O3djaWQudHhfaW5mbywKJiM0MzsJCQkJCQlkZXYtJmd0O21waHkuY2hhbmRlZi5jaGFuLSZndDtiYW5kKSkKJiM0MzsJCQlyZXR1cm47CiAJfQogCi0JbXQ3NngwMl9tYWNfcHJvY2Vzc190eF9yYXRlKCZhbXA7bGFzdF9yYXRlLCBzdC0mZ3Q7cmF0ZSwKLQkJCQkgICAgZGV2LSZndDttcGh5LmNoYW5kZWYuY2hhbi0mZ3Q7YmFuZCk7CiYjNDM7CWlmIChtdDc2eDAyX21hY19wcm9jZXNzX3R4X3JhdGUoJmFtcDtsYXN0X3JhdGUsIHN0LSZndDtyYXRlLAomIzQzOwkJCQkJZGV2LSZndDttcGh5LmNoYW5kZWYuY2hhbi0mZ3Q7YmFuZCkpCiYjNDM7CQlyZXR1cm47CiAKIAlmb3IgKGkgPSAwOyBpICZsdDsgQVJSQVlfU0laRShpbmZvLSZndDtzdGF0dXMucmF0ZXMpOyBpJiM0MzsmIzQzOykgewogCQlyZXRyeS0tOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAxMDoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzQyCgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMjk4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggd2l0aGluIHRoZSBgbXQ3NngwMl9tYWMuY2AgZmlsZSBvZiB0aGUgTWVkaWFUZWsgd2lyZWxlc3MgZHJpdmVyLiBJdCYjMzk7cyBmb2N1c2VkIG9uIGJvdW5kcyBjaGVja2luZyBmb3IgdGhlIGBpZHhgIHZhcmlhYmxlIHdoZW4gZGVhbGluZyB3aXRoIEhUIGFuZCBWSFQgUEhZIHR5cGVzIGluIHRoZSBgbXQ3NngwMl9tYWNfcHJvY2Vzc190eF9yYXRlYCBmdW5jdGlvbi4gSWYgYGlkeGAgaXMgb3V0IG9mIGJvdW5kcywgaXQgbm93IHJldHVybnMgYC1FSU5WQUxgLCB3aGljaCBpcyBnb29kIHByYWN0aWNlLiBUaGUgc2Vjb25kIHBhcnQgbW9kaWZpZXMgYG10NzZ4MDJfbWFjX2ZpbGxfdHhfc3RhdHVzYCB0byBjaGVjayB0aGUgcmVzdWx0IG9mIHRoZSBmb3JtZXIgZnVuY3Rpb24gYW5kIHJldHVybiBlYXJseSwgdGhlcmVieSBhdm9pZGluZyBmdXJ0aGVyIHByb2Nlc3NpbmcgaWYgc29tZXRoaW5nIGdvZXMgd3Jvbmcgd2l0aCB0aGUgcmF0ZSBzZWxlY3Rpb24uIFRoaXMgc3VnZ2VzdHMgdGhlIGludGVudGlvbiBvZiB0aGUgcGF0Y2ggaXMgdG8gZW5oYW5jZSByb2J1c3RuZXNzLCBwb3RlbnRpYWxseSB0byBtaXRpZ2F0ZSBhZ2FpbnN0IHNvbWUgZm9ybSBvZiBvdXQtb2YtYm91bmRzIGFjY2Vzcy4KCk15IGltbWVkaWF0ZSB0aG91Z2h0cyBnbyB0byBmdXp6aW5nIHBvdGVudGlhbC4gU2luY2UgaXQmIzM5O3MgYSB3aXJlbGVzcyBkcml2ZXIsIGBtYWM4MDIxMV9od3NpbWAgY29tZXMgdG8gbWluZCBhcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIEhvd2V2ZXIsIHRoaXMgaXMgc3BlY2lmaWNhbGx5IGZvciBNZWRpYVRlayYjMzk7cyBoYXJkd2FyZSwgc28gSSYjMzk7bSB3b25kZXJpbmcgaWYgYSB0eXBpY2FsIGhhcmR3YXJlLWFnbm9zdGljIHNldHVwIHdpbGwgc3VmZmljZS4gTXkgcGFzdCBleHBlcmllbmNlIHN1Z2dlc3RzIHRoYXQgdGhlc2Ugc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVycyBhcmUgdXN1YWxseSB0cmlja2llciB0byB0ZXN0IHdpdGhvdXQgdGhlIGFjdHVhbCBoYXJkd2FyZSBpbiBwbGFjZS4gQnV0IGNvdWxkIEkgdmlydHVhbGl6ZSBpdCBpbiBRRU1VPyBBbmQsIGEgdGhvdWdodCBqdXN0IHBvcHBlZCB1cDogaXMgdGhpcyBkcml2ZXIgYSBVU0IgZHJpdmVyPyBVU0IgZHJpdmVycyBhcmUgZWFzaWVyIHRvIGZ1enogc2luY2Ugd2UgY2FuIHV0aWxpemUgYSBkdW1teSBIQ0Qgb3IgdmhjaSB0byB0ZXN0IHRoZW0uIExldCBtZSBjaGVjayBpZiB0aGVzZSBmdW5jdGlvbnMsIGBtdDc2eDAyX21hY19maWxsX3R4X3N0YXR1c2Agb3IgYG10NzZ4MDJfbWFjX3Byb2Nlc3NfdHhfcmF0ZWAsIGhhdmUgYW55IFVTQiBjb25uZWN0aW9ucy4gQSBxdWljayBjb2RlIHNlYXJjaCBzaG91bGQgY2xhcmlmeSB0aGF0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDEwOjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzZ4MDJfbWFjX2ZpbGxfdHhfc3RhdHVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuYz00ODc9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuYzo0ODg6bXQ3NngwMl9tYWNfZmlsbF90eF9zdGF0dXMoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYsIHN0cnVjdCBtdDc2eDAyX3N0YSAqbXN0YSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuYy00ODktXHRcdFx0ICAgc3RydWN0IGllZWU4MDIxMV90eF9pbmZvICppbmZvLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuYz01NTU9dm9pZCBtdDc2eDAyX3NlbmRfdHhfc3RhdHVzKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuYy02MjItXHRcdGN1cl9wa3RpZCA9IG1zdGEtXHUwMDNlc3RhdHVzLnBrdGlkO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5jOjYyMzpcdFx0bXQ3NngwMl9tYWNfZmlsbF90eF9zdGF0dXMoZGV2LCBtc3RhLCBzdGF0dXMuaW5mbyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuYy02MjQtXHRcdFx0XHRcdCAgIFx1MDAyNm1zdGEtXHUwMDNlc3RhdHVzLCBtc3RhLVx1MDAzZW5fZnJhbWVzKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmMtNjMwLVx0XHRjdXJfcGt0aWQgPSBzdGF0LVx1MDAzZXBrdGlkO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5jOjYzMTpcdFx0bXQ3NngwMl9tYWNfZmlsbF90eF9zdGF0dXMoZGV2LCBtc3RhLCBzdGF0dXMuaW5mbywgc3RhdCwgMSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmMtNjMyLVx0XHQqdXBkYXRlID0gMTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAxMDoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzOTI3CgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIG10NzZ4MDJfbWFjLmMgRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIGBtdDc2eDAyX21hYy5jYCBkcml2ZXIuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gZmlndXJlIG91dCBpdHMgdXNhZ2UgLSB3aGljaCBoYXJkd2FyZSBwbGF0Zm9ybXMgYW5kIGFzc29jaWF0ZWQgZHJpdmVycyBhcmUgbGV2ZXJhZ2luZyB0aGlzIHBhcnRpY3VsYXIgTUFDIGxheWVyIG1vZHVsZS4gSSYjMzk7bSB0aGlua2luZyBvZiBxdWlja2x5IGlkZW50aWZ5aW5nIGFsbCB0aGUgY2FsbGluZyBkcml2ZXJzIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlIGFuZCBwb3RlbnRpYWwgaW1wYWN0IG9mIGFueSBjaGFuZ2VzIEkgbWlnaHQgbWFrZSwgb3IgaXNzdWVzIEkgbWlnaHQgZW5jb3VudGVyLiBJcyBpdCBqdXN0IGEgbmljaGUgY2FyZCBvciBpcyBpdCBzb21ldGhpbmcgbW9yZSB3aWRlbHkgdXNlZD8gSSBuZWVkIHRvIGJ1aWxkIGEgbWVudGFsIG1hcCBvZiB0aGUgZGVwZW5kZW5jeSB0cmVlLiBJJiMzOTtsbCBuZWVkIHRvIGtub3cgd2hpY2ggcGxhdGZvcm1zIGFyZSB1c2luZyB0aGlzIGFuZCB3aHkgdGhpcyBwYXJ0aWN1bGFyIGRyaXZlciB3YXMgdXNlZCBvdmVyIG90aGVycy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAxMDoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc2eDAyX3NlbmRfdHhfc3RhdHVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuYz00ODg9bXQ3NngwMl9tYWNfZmlsbF90eF9zdGF0dXMoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYsIHN0cnVjdCBtdDc2eDAyX3N0YSAqbXN0YSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmMtNTU0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5jOjU1NTp2b2lkIG10NzZ4MDJfc2VuZF90eF9zdGF0dXMoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmMtNTU2LVx0XHRcdCAgICBzdHJ1Y3QgbXQ3NngwMl90eF9zdGF0dXMgKnN0YXQsIHU4ICp1cGRhdGUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5jPTg5MT12b2lkIG10NzZ4MDJfbWFjX3BvbGxfdHhfc3RhdHVzKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2LCBib29sIGlycSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmMtOTEyLVx0XHRpZiAoIWlycSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5jOjkxMzpcdFx0XHRtdDc2eDAyX3NlbmRfdHhfc3RhdHVzKGRldiwgXHUwMDI2c3RhdCwgXHUwMDI2dXBkYXRlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuYy05MTQtXHRcdFx0Y29udGludWU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5oPTE4Mz1ib29sIG10NzZ4MDJfbWFjX2xvYWRfdHhfc3RhdHVzKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5oLTE4NC1cdFx0XHRcdHN0cnVjdCBtdDc2eDAyX3R4X3N0YXR1cyAqc3RhdCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmg6MTg1OnZvaWQgbXQ3NngwMl9zZW5kX3R4X3N0YXR1cyhzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuaC0xODYtXHRcdFx0ICAgIHN0cnVjdCBtdDc2eDAyX3R4X3N0YXR1cyAqc3RhdCwgdTggKnVwZGF0ZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21taW8uYz0xMzA9c3RhdGljIHZvaWQgbXQ3NngwMl9wcm9jZXNzX3R4X3N0YXR1c19maWZvKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tbWlvLmMtMTM1LVx0d2hpbGUgKGtmaWZvX2dldChcdTAwMjZkZXYtXHUwMDNldHhzdGF0dXNfZmlmbywgXHUwMDI2c3RhdCkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbW1pby5jOjEzNjpcdFx0bXQ3NngwMl9zZW5kX3R4X3N0YXR1cyhkZXYsIFx1MDAyNnN0YXQsIFx1MDAyNnVwZGF0ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbW1pby5jLTEzNy19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3R4cnguYz0xMjM9Ym9vbCBtdDc2eDAyX3R4X3N0YXR1c19kYXRhKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdTggKnVwZGF0ZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdHhyeC5jLTEzMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl90eHJ4LmM6MTMxOlx0bXQ3NngwMl9zZW5kX3R4X3N0YXR1cyhkZXYsIFx1MDAyNnN0YXQsIHVwZGF0ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdHhyeC5jLTEzMi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAxMDoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTA2CgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBNVDc2eDAyIFVTQiBEcml2ZXIgSW1wbGVtZW50YXRpb24qKgoKT2theSwgc28gdGhlIE1UNzZ4MDIgbGlicmFyeSBpcyBwcmV0dHkgdWJpcXVpdG91cyBmb3IgdGhhdCBkZXZpY2UgZmFtaWx5LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCBpZiB0aGVyZSYjMzk7cyBhIHdlbGwtZXN0YWJsaXNoZWQgVVNCIGRyaXZlciB0aGF0IGxldmVyYWdlcyB0aGlzLiBGaW5kaW5nIG9uZSB3b3VsZCBkZWZpbml0ZWx5IHN0cmVhbWxpbmUgbXkgY3VycmVudCBwcm9qZWN0LiBJdCYjMzk7cyBhIG5hdHVyYWwgcXVlc3Rpb24gdG8gcG9zZSB3aGVuIHdvcmtpbmcgd2l0aCB0aGVzZSB0eXBlcyBvZiBkZXZpY2VzOyB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgc3lzdGVtIGNvbXBvbmVudHMgaW50ZXJhY3QgaXMga2V5IHRvIGEgc29saWQgaW1wbGVtZW50YXRpb24uIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGluIGFuZCBzZWUgd2hhdCYjMzk7cyBvdXQgdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMTA6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3NngwMl91c2ImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZT0zMT1tdDc2eDAyLWxpYi15IDo9IG10NzZ4MDJfdXRpbC5vIG10NzZ4MDJfbWFjLm8gbXQ3NngwMl9tY3UubyBcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGUtMzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlOjM2Om10NzZ4MDItdXNiLXkgOj0gbXQ3NngwMl91c2JfbWN1Lm8gbXQ3NngwMl91c2JfY29yZS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlLTM3LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTExLSNpbmNsdWRlIFwmIzM0O21jdS5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzoxMjojaW5jbHVkZSBcJiMzNDsuLi9tdDc2eDAyX3VzYi5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0xMy1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2JfbWN1LmMtMTAtI2luY2x1ZGUgXCYjMzQ7bWN1LmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYl9tY3UuYzoxMTojaW5jbHVkZSBcJiMzNDsuLi9tdDc2eDAyX3VzYi5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2JfbWN1LmMtMTItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9jb3JlLmMtNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfY29yZS5jOjY6I2luY2x1ZGUgXCYjMzQ7bXQ3NngwMl91c2IuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9jb3JlLmMtNy1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX21jdS5jLTEwLSNpbmNsdWRlIFwmIzM0O210NzZ4MDJfbWN1LmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfbWN1LmM6MTE6I2luY2x1ZGUgXCYjMzQ7bXQ3NngwMl91c2IuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9tY3UuYy0xMi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2IuYy04LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvdXNiLmM6OTojaW5jbHVkZSBcJiMzNDsuLi9tdDc2eDAyX3VzYi5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2IuYy0xMC0jaW5jbHVkZSBcJiMzNDttdDc2eDJ1LmhcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2JfaW5pdC5jLTEwLSNpbmNsdWRlIFwmIzM0Oy4uL210NzZ4MDJfcGh5LmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3VzYl9pbml0LmM6MTE6I2luY2x1ZGUgXCYjMzQ7Li4vbXQ3NngwMl91c2IuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvdXNiX2luaXQuYy0xMi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2JfbWFpbi5jLTYtI2luY2x1ZGUgXCYjMzQ7bXQ3NngydS5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2JfbWFpbi5jOjc6I2luY2x1ZGUgXCYjMzQ7Li4vbXQ3NngwMl91c2IuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvdXNiX21haW4uYy04LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3VzYl9tY3UuYy05LSNpbmNsdWRlIFwmIzM0O2VlcHJvbS5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2JfbWN1LmM6MTA6I2luY2x1ZGUgXCYjMzQ7Li4vbXQ3NngwMl91c2IuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvdXNiX21jdS5jLTExLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDEwOjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYzMTgKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiAxNjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgTVQ3NngwMiBEcml2ZXI6IEEgUHJvbWlzaW5nIFRhcmdldCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlIGBtdDc2eDAyYCBkcml2ZXIsIGFuZCBpdCYjMzk7cyBjbGVhciB0aGF0IGl0JiMzOTtzIGxldmVyYWdlZCBieSBgbXQ3NngwdWAgYW5kIGBtdDc2eDJ1YCwgYm90aCBVU0IgZHJpdmVycy4gVGhhdCYjMzk7cyBnb29kIG5ld3M7IFVTQiBkcml2ZXJzIGFyZSBhY2Nlc3NpYmxlIGZvciBmdXp6aW5nIHZpYSBzeXprYWxsZXImIzM5O3MgVVNCIGZ1enppbmcgY2FwYWJpbGl0aWVzIHVzaW5nIGBkdW1teV9oY2RgIG9yIGB2aGNpYC4gVGhpcyBtZWFucyB0aGUgY29kZSAqaXMqIHJlYWNoYWJsZSBhbmQgbGlrZWx5IHdvcnRoIHRoZSBlZmZvcnQuCgpNeSBpbml0aWFsIGZvY3VzIGlzIG9uIHRoZSBgbXQ3NngwMl9tYWNfZmlsbF90eF9zdGF0dXNgIGZ1bmN0aW9uLiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIGNhbGxlZCB3aXRoaW4gYG10NzZ4MDJfc2VuZF90eF9zdGF0dXNgLCB3aGljaCwgaW4gdHVybiwgaXMgY2FsbGVkIGZyb20gZWl0aGVyIGBtdDc2eDAyX3R4X3N0YXR1c19kYXRhYCBvciBgbXQ3NngwMl9wcm9jZXNzX3R4X3N0YXR1c19maWZvYC4gTm93LCB0aGUgY3J1Y2lhbCBzdGVwIGlzIHRvIHRyYWNlIGJhY2sgdG8gd2hlcmUgYG10NzZ4MDJfdHhfc3RhdHVzX2RhdGFgIGlzIGFjdHVhbGx5IGludm9rZWQuIFRoYXQmIzM5O3Mgd2hlcmUgSSBuZWVkIHRvIGZvY3VzIG15IGFuYWx5c2lzIHRvIHVuZGVyc3RhbmQgaG93IHRvIGdldCB0byB0aGUgY29yZSBmdW5jdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMTA6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3NngwMl90eF9zdGF0dXNfZGF0YSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYz0yMTM9c3RhdGljIGludCBtdDc2eDB1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50Zixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0yMjMtXHRcdC50eF9jb21wbGV0ZV9za2IgPSBtdDc2eDAydV90eF9jb21wbGV0ZV9za2IsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzoyMjQ6XHRcdC50eF9zdGF0dXNfZGF0YSA9IG10NzZ4MDJfdHhfc3RhdHVzX2RhdGEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0yMjUtXHRcdC5yeF9za2IgPSBtdDc2eDAyX3F1ZXVlX3J4X3NrYixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDIuaD0xODg9dm9pZCBtdDc2eDAyX3JlbW92ZV9oZHJfcGFkKHN0cnVjdCBza19idWZmICpza2IsIGludCBsZW4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyLmg6MTg5OmJvb2wgbXQ3NngwMl90eF9zdGF0dXNfZGF0YShzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHU4ICp1cGRhdGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyLmgtMTkwLXZvaWQgbXQ3NngwMl9xdWV1ZV9yeF9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LCBlbnVtIG10NzZfcnhxX2lkIHEsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3R4cnguYz0xMjE9RVhQT1JUX1NZTUJPTF9HUEwobXQ3NngwMl90eF9zZXRfdHhwd3JfYXV0byk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdHhyeC5jLTEyMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl90eHJ4LmM6MTIzOmJvb2wgbXQ3NngwMl90eF9zdGF0dXNfZGF0YShzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHU4ICp1cGRhdGUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdHhyeC5jLTEyNC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3R4cnguYy0xMzQtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3R4cnguYzoxMzU6RVhQT1JUX1NZTUJPTF9HUEwobXQ3NngwMl90eF9zdGF0dXNfZGF0YSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdHhyeC5jLTEzNi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2IuYz0zMj1zdGF0aWMgaW50IG10NzZ4MnVfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvdXNiLmMtNDItXHRcdC50eF9jb21wbGV0ZV9za2IgPSBtdDc2eDAydV90eF9jb21wbGV0ZV9za2IsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2IuYzo0MzpcdFx0LnR4X3N0YXR1c19kYXRhID0gbXQ3NngwMl90eF9zdGF0dXNfZGF0YSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3VzYi5jLTQ0LVx0XHQucnhfc2tiID0gbXQ3NngwMl9xdWV1ZV9yeF9za2IsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDEwOjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc2MzEKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiA1MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSYjMzk7bSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIE1UNzZ4MDIgVFggU3RhdHVzIEZ1bmN0aW9uKioKCk9rYXksIHNvIEkgc2VlIHRoaXMgYG10NzZ4MDJfdHhfc3RhdHVzX2RhdGFgIGZ1bmN0aW9uLiBUaGF0IG5hbWUgcmluZ3MgYSBiZWxsOyBpdCYjMzk7cyB0aGUgYC50eF9zdGF0dXNfZGF0YWAgY2FsbGJhY2sgd2l0aGluIGBtdDc2X2RyaXZlcl9vcHNgLCByaWdodD8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUgYmV0dGVyLiBNeSBmaXJzdCBzdGVwIGlzIHRvIGZpZ3VyZSBvdXQgdGhlIGNhbGxpbmcgY29udGV4dCDigJMgd2hlcmUgaXMgdGhhdCBjYWxsYmFjayBhY3R1YWxseSAqdXNlZCo/IFRpbWUgdG8gdHJhY2UgaXRzIGludm9jYXRpb24gcG9pbnRzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgbG9naWMgZmxvdyBoZXJlLiBJJiMzOTtsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhhdCBgLnR4X3N0YXR1c19kYXRhYCBmaWVsZCB3aXRoaW4gYG10NzZfZHJpdmVyX29wc2AgaXMgYWN0dWFsbHkgKmNhbGxlZCouIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgZHJpdmVyIHByb2Nlc3NlcyB0cmFuc21pdCBzdGF0dXMgaW5mb3JtYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDEwOjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3R4X3N0YXR1c19kYXRhJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTU0Mz1zdHJ1Y3QgbXQ3Nl9kcml2ZXJfb3BzIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC01NjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDo1NjI6XHRib29sICgqdHhfc3RhdHVzX2RhdGEpKHN0cnVjdCBtdDc2X2RldiAqZGV2LCB1OCAqdXBkYXRlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTU2My1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tdDc2MTUuaD01NDM9aW50IG10NzY2M191c2Jfc2Rpb190eF9wcmVwYXJlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKnR4d2lfcHRyLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L210NzYxNS5oLTU0Ni1cdFx0XHRcdCAgIHN0cnVjdCBtdDc2X3R4X2luZm8gKnR4X2luZm8pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbXQ3NjE1Lmg6NTQ3OmJvb2wgbXQ3NjYzX3VzYl9zZGlvX3R4X3N0YXR1c19kYXRhKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdTggKnVwZGF0ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tdDc2MTUuaC01NDgtdm9pZCBtdDc2NjNfdXNiX3NkaW9fdHhfY29tcGxldGVfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9zZGlvLmM9NzY9c3RhdGljIGludCBtdDc2NjNzX3Byb2JlKHN0cnVjdCBzZGlvX2Z1bmMgKmZ1bmMsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvc2Rpby5jLTgzLVx0XHQudHhfY29tcGxldGVfc2tiID0gbXQ3NjYzX3VzYl9zZGlvX3R4X2NvbXBsZXRlX3NrYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3NkaW8uYzo4NDpcdFx0LnR4X3N0YXR1c19kYXRhID0gbXQ3NjYzX3VzYl9zZGlvX3R4X3N0YXR1c19kYXRhLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvc2Rpby5jLTg1LVx0XHQucnhfc2tiID0gbXQ3NjE1X3F1ZXVlX3J4X3NrYixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYz0xMTI9c3RhdGljIGludCBtdDc2NjN1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50Zixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0xMTktXHRcdC50eF9jb21wbGV0ZV9za2IgPSBtdDc2NjNfdXNiX3NkaW9fdHhfY29tcGxldGVfc2tiLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmM6MTIwOlx0XHQudHhfc3RhdHVzX2RhdGEgPSBtdDc2NjNfdXNiX3NkaW9fdHhfc3RhdHVzX2RhdGEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0xMjEtXHRcdC5yeF9za2IgPSBtdDc2MTVfcXVldWVfcnhfc2tiLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmM9MTMxPXN0YXRpYyB2b2lkIG10NzY2M191c2Jfc2Rpb19yYXRlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmMtMTU1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYzoxNTY6Ym9vbCBtdDc2NjNfdXNiX3NkaW9fdHhfc3RhdHVzX2RhdGEoc3RydWN0IG10NzZfZGV2ICptZGV2LCB1OCAqdXBkYXRlKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0xNTcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmMtMTY1LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmM6MTY2OkVYUE9SVF9TWU1CT0xfR1BMKG10NzY2M191c2Jfc2Rpb190eF9zdGF0dXNfZGF0YSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTE2Ny1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYz0yMTM9c3RhdGljIGludCBtdDc2eDB1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50Zixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0yMjMtXHRcdC50eF9jb21wbGV0ZV9za2IgPSBtdDc2eDAydV90eF9jb21wbGV0ZV9za2IsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzoyMjQ6XHRcdC50eF9zdGF0dXNfZGF0YSA9IG10NzZ4MDJfdHhfc3RhdHVzX2RhdGEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0yMjUtXHRcdC5yeF9za2IgPSBtdDc2eDAyX3F1ZXVlX3J4X3NrYixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDIuaD0xODg9dm9pZCBtdDc2eDAyX3JlbW92ZV9oZHJfcGFkKHN0cnVjdCBza19idWZmICpza2IsIGludCBsZW4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyLmg6MTg5OmJvb2wgbXQ3NngwMl90eF9zdGF0dXNfZGF0YShzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHU4ICp1cGRhdGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyLmgtMTkwLXZvaWQgbXQ3NngwMl9xdWV1ZV9yeF9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LCBlbnVtIG10NzZfcnhxX2lkIHEsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3R4cnguYz0xMjE9RVhQT1JUX1NZTUJPTF9HUEwobXQ3NngwMl90eF9zZXRfdHhwd3JfYXV0byk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdHhyeC5jLTEyMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl90eHJ4LmM6MTIzOmJvb2wgbXQ3NngwMl90eF9zdGF0dXNfZGF0YShzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHU4ICp1cGRhdGUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdHhyeC5jLTEyNC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3R4cnguYy0xMzQtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3R4cnguYzoxMzU6RVhQT1JUX1NZTUJPTF9HUEwobXQ3NngwMl90eF9zdGF0dXNfZGF0YSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdHhyeC5jLTEzNi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2IuYz0zMj1zdGF0aWMgaW50IG10NzZ4MnVfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvdXNiLmMtNDItXHRcdC50eF9jb21wbGV0ZV9za2IgPSBtdDc2eDAydV90eF9jb21wbGV0ZV9za2IsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2IuYzo0MzpcdFx0LnR4X3N0YXR1c19kYXRhID0gbXQ3NngwMl90eF9zdGF0dXNfZGF0YSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3VzYi5jLTQ0LVx0XHQucnhfc2tiID0gbXQ3NngwMl9xdWV1ZV9yeF9za2IsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM9ODQwPUVYUE9SVF9TWU1CT0xfR1BMKG10NzkyMV91c2Jfc2Rpb190eF9jb21wbGV0ZV9za2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtODQxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6ODQyOmJvb2wgbXQ3OTIxX3VzYl9zZGlvX3R4X3N0YXR1c19kYXRhKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdTggKnVwZGF0ZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTg0My17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtODUxLX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjg1MjpFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjFfdXNiX3NkaW9fdHhfc3RhdHVzX2RhdGEpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtODUzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL210NzkyMS5oPTMzMj12b2lkIG10NzkyMV91c2Jfc2Rpb190eF9jb21wbGV0ZV9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbXQ3OTIxLmgtMzMzLVx0XHRcdFx0ICAgICBzdHJ1Y3QgbXQ3Nl9xdWV1ZV9lbnRyeSAqZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tdDc5MjEuaDozMzQ6Ym9vbCBtdDc5MjFfdXNiX3NkaW9fdHhfc3RhdHVzX2RhdGEoc3RydWN0IG10NzZfZGV2ICptZGV2LCB1OCAqdXBkYXRlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL210NzkyMS5oLTMzNS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvLmM9OTA9c3RhdGljIGludCBtdDc5MjFzX3Byb2JlKHN0cnVjdCBzZGlvX2Z1bmMgKmZ1bmMsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpby5jLTEwMC1cdFx0LnR4X2NvbXBsZXRlX3NrYiA9IG10NzkyMV91c2Jfc2Rpb190eF9jb21wbGV0ZV9za2IsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvLmM6MTAxOlx0XHQudHhfc3RhdHVzX2RhdGEgPSBtdDc5MjFfdXNiX3NkaW9fdHhfc3RhdHVzX2RhdGEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvLmMtMTAyLVx0XHQucnhfc2tiID0gbXQ3OTIxX3F1ZXVlX3J4X3NrYixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYz0xNTA9c3RhdGljIGludCBtdDc5MjF1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50Zixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0xNjEtXHRcdC50eF9jb21wbGV0ZV9za2IgPSBtdDc5MjFfdXNiX3NkaW9fdHhfY29tcGxldGVfc2tiLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM6MTYyOlx0XHQudHhfc3RhdHVzX2RhdGEgPSBtdDc5MjFfdXNiX3NkaW9fdHhfc3RhdHVzX2RhdGEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0xNjMtXHRcdC5yeF9za2IgPSBtdDc5MjFfcXVldWVfcnhfc2tiLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jPTE0ODI9RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTI1X3VzYl9zZGlvX3R4X2NvbXBsZXRlX3NrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNDgzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTQ4NDpib29sIG10NzkyNV91c2Jfc2Rpb190eF9zdGF0dXNfZGF0YShzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHU4ICp1cGRhdGUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNDg1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNDkzLX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjE0OTQ6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTI1X3VzYl9zZGlvX3R4X3N0YXR1c19kYXRhKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0OTUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1Lmg9MzY2PXZvaWQgbXQ3OTI1X3VzYl9zZGlvX3R4X2NvbXBsZXRlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaC0zNjctXHRcdFx0XHQgICAgIHN0cnVjdCBtdDc2X3F1ZXVlX2VudHJ5ICplKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oOjM2ODpib29sIG10NzkyNV91c2Jfc2Rpb190eF9zdGF0dXNfZGF0YShzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHU4ICp1cGRhdGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmgtMzY5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jPTE0Mz1zdGF0aWMgaW50IG10NzkyNXVfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVzYl9pbnRmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTE1NC1cdFx0LnR4X2NvbXBsZXRlX3NrYiA9IG10NzkyNV91c2Jfc2Rpb190eF9jb21wbGV0ZV9za2IsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzoxNTU6XHRcdC50eF9zdGF0dXNfZGF0YSA9IG10NzkyNV91c2Jfc2Rpb190eF9zdGF0dXNfZGF0YSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTE1Ni1cdFx0LnJ4X3NrYiA9IG10NzkyNV9xdWV1ZV9yeF9za2IsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9zZGlvLmM9NDYxPXN0YXRpYyB2b2lkIG10NzZzX3N0YXR1c193b3JrZXIoc3RydWN0IG10NzZfd29ya2VyICp3KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvc2Rpby5jLTQ4MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvc2Rpby5jOjQ4MTpcdFx0aWYgKGRldi1cdTAwM2VkcnYtXHUwMDNldHhfc3RhdHVzX2RhdGEgXHUwMDI2XHUwMDI2IG5kYXRhX2ZyYW1lcyBcdTAwM2UgMCBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvc2Rpby5jLTQ4Mi1cdFx0ICAgICF0ZXN0X2FuZF9zZXRfYml0KE1UNzZfUkVBRElOR19TVEFUUywgXHUwMDI2ZGV2LVx1MDAzZXBoeS5zdGF0ZSkgXHUwMDI2XHUwMDI2XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9zZGlvLmMtNDkwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9zZGlvLmM6NDkxOnN0YXRpYyB2b2lkIG10NzZzX3R4X3N0YXR1c19kYXRhKHN0cnVjdCBtdDc2X3dvcmtlciAqd29ya2VyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9zZGlvLmMtNDkyLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3NkaW8uYy01MDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3NkaW8uYzo1MDY6XHRcdGlmICghZGV2LVx1MDAzZWRydi1cdTAwM2V0eF9zdGF0dXNfZGF0YShkZXYsIFx1MDAyNnVwZGF0ZSkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3NkaW8uYy01MDctXHRcdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9zZGlvLmM9NjM1PWludCBtdDc2c19pbml0KHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3Qgc2Rpb19mdW5jICpmdW5jLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvc2Rpby5jLTY1MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvc2Rpby5jOjY1MjpcdGVyciA9IG10NzZfd29ya2VyX3NldHVwKGRldi1cdTAwM2VodywgXHUwMDI2c2Rpby1cdTAwM2VzdGF0X3dvcmtlciwgbXQ3NnNfdHhfc3RhdHVzX2RhdGEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3NkaW8uYy02NTMtXHRcdFx0XHRcJiMzNDtzZGlvLXN0YVwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni91c2IuYz03NTk9c3RhdGljIHZvaWQgbXQ3NnVfc3RhdHVzX3dvcmtlcihzdHJ1Y3QgbXQ3Nl93b3JrZXIgKncpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni91c2IuYy03OTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3VzYi5jOjc5MTpcdGlmIChkZXYtXHUwMDNlZHJ2LVx1MDAzZXR4X3N0YXR1c19kYXRhIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni91c2IuYy03OTItXHQgICAgIXRlc3RfYW5kX3NldF9iaXQoTVQ3Nl9SRUFESU5HX1NUQVRTLCBcdTAwMjZkZXYtXHUwMDNlcGh5LnN0YXRlKSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3VzYi5jLTc5NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdXNiLmM6Nzk2OnN0YXRpYyB2b2lkIG10NzZ1X3R4X3N0YXR1c19kYXRhKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdXNiLmMtNzk3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3VzYi5jLTgwOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdXNiLmM6ODEwOlx0XHRpZiAoIWRldi1cdTAwM2VkcnYtXHUwMDNldHhfc3RhdHVzX2RhdGEoZGV2LCBcdTAwMjZ1cGRhdGUpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni91c2IuYy04MTEtXHRcdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni91c2IuYz0xMDc2PWludCBfX210NzZ1X2luaXQoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdXNiLmMtMTA4Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdXNiLmM6MTA4MzpcdElOSVRfV09SSyhcdTAwMjZ1c2ItXHUwMDNlc3RhdF93b3JrLCBtdDc2dV90eF9zdGF0dXNfZGF0YSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3VzYi5jLTEwODQtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDEwOjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyNDM4CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogMTE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBEcml2ZXIgQ29uZmlndXJhdGlvbiBmb3IgTVQ3NngwMiBGdW5jdGlvbmFsaXR5KioKCk9rYXksIHNvIEkmIzM5O20gc2VlaW5nIHRoYXQgYG10NzZ4MDJfdHhfc3RhdHVzX2RhdGFgIGdldHMgdXRpbGl6ZWQgaW4gYm90aCBgbXQ3NngwdV9wcm9iZWAgYW5kIGBtdDc2eDJ1X3Byb2JlYC4gVGhhdCBzdWdnZXN0cyBzb21lIHNoYXJlZCBkYXRhIHN0cnVjdHVyZSBvciBmdW5jdGlvbiByZWxhdGVkIHRvIHRyYW5zbWl0IHN0YXR1cyBpcyBiZWluZyB1c2VkIGFjcm9zcyB0aGVzZSBzbGlnaHRseSBkaWZmZXJlbnQgTWVkaWF0ZWsgVVNCIHdpcmVsZXNzIGRldmljZSB2YXJpYW50cy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGxldCYjMzk7cyBuYWlsIGRvd24gcHJlY2lzZWx5IHdoaWNoIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBnb3Zlcm4gdGhlIGluY2x1c2lvbiBvZiB0aGVzZSBwcm9iZSBmdW5jdGlvbnMuIFRoZSBjb2RlIGluZGljYXRlcyB0aGF0IHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGBDT05GSUdfTVQ3NngwVWAgYW5kIGBDT05GSUdfTVQ3NngyVWAuIFJpZ2h0LCB0aGF0IG1ha2VzIHNlbnNlLiBOb3cgSSBuZWVkIHRvIHF1aWNrbHkgY29uZmlybSB0aGlzIGluIHRoZSByZWxldmFudCBLY29uZmlnIGZpbGVzLiBUaW1lIHRvIGNoZWNrIHRob3NlLCBzcGVjaWZpY2FsbHksIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnYCBhbmQgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL0tjb25maWdgIHRvIHNlZSB0aGUgY29uZGl0aW9ucyB1bmRlciB3aGljaCB0aG9zZSBjb25maWcgc3ltYm9scyBhcmUgYWN0dWFsbHkgZGVmaW5lZCBhbmQgaG93IHRoZXkgcmVsYXRlIHRvIHRoZSBicm9hZGVyIGRyaXZlciBjb25maWd1cmF0aW9uLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGVzZSBkcml2ZXIgY29tcG9uZW50cyBpbnRlZ3JhdGUgaW50byB0aGUgb3ZlcmFsbCBNVDc2IGZyYW1ld29yay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMTA6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1UNzZ4MFUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZz0yPWNvbmZpZyBNVDc2eDBfQ09NTU9OXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZy01LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZzo2OmNvbmZpZyBNVDc2eDBVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnLTctXHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc2eDBVIChVU0IpIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMTA6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI5ODQKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiA3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqRGVwZW5kZW5jeSBDaGVjazogQSBOZWNlc3NhcnkgRXZpbCAoQnV0IGEgVml0YWwgT25lKSoqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gdGFrZSBhIGhhcmQgbG9vayBhdCB0aG9zZSBkZXBlbmRlbmNpZXMuIEl0JiMzOTtzIGEgZnVuZGFtZW50YWwgc3RlcCwgcmVhbGx5LiBJIGtub3cgSSBrbm93IHRoZSBjb2RlIHByZXR0eSB3ZWxsLCBidXQgY29tcGxhY2VuY3kgaXMgYSBkYW5nZXJvdXMgZ2FtZSB3aGVuIHlvdSYjMzk7cmUgZGVhbGluZyB3aXRoIGV4dGVybmFsIGxpYnJhcmllcyBhbmQgZnJhbWV3b3Jrcy4gSXQmIzM5O3MgdG9vIGVhc3kgdG8gYXNzdW1lIGV2ZXJ5dGhpbmcmIzM5O3Mga29zaGVyLCB0aGF0IHRoZSB2ZXJzaW9ucyBhcmUgY29tcGF0aWJsZSwgYW5kIHRoYXQgdGhlIHRyYW5zaXRpdmUgZGVwZW5kZW5jaWVzIGFyZSBhbGwgcGxheWluZyBuaWNlbHkuCgpMZXQmIzM5O3Mgc3RhcnQgYnkgbWFwcGluZyB0aGVtIG91dC4uLiBJJiMzOTtsbCBuZWVkIHRvIGdvIHRocm91Z2ggdGhlIHByb2plY3Qgc3RydWN0dXJlLCBsb29rIGF0IHRoZSBwYWNrYWdlIG1hbmFnZXJzLCBkaWcgaW50byB0aGUgYnVpbGQgY29uZmlndXJhdGlvbnMuLi4gSSBuZWVkIGEgY2xlYXIgcGljdHVyZS4gSXMgdGhlcmUgYW55dGhpbmcgdGhhdCBzZWVtcyBvdXQgb2YgcGxhY2U/IElzIHRoZXJlIGEga25vd24gdnVsbmVyYWJpbGl0eSBpbiB0aGUgdmVyc2lvbiBJJiMzOTttIHVzaW5nIHRoYXQgSSYjMzk7ZCBuZWVkIHRvIGNvbnNpZGVyPyBBcmUgdGhlcmUgYW55IG9idmlvdXMgY29uZmxpY3RzIHdhaXRpbmcgdG8gYml0ZSBtZSBsYXRlciBkb3duIHRoZSBsaW5lPyBJIG5lZWQgdG8gY2hlY2sgZm9yIGFueSBkZXByZWNhdGVkIHZlcnNpb25zLgoKVGhpcyBpc27igJl0IGp1c3QgYWJvdXQgbWFraW5nIHN1cmUgZXZlcnl0aGluZyAqd29ya3MqIGF0IHRoZSBtb21lbnQ7IGl0JiMzOTtzIGFib3V0IHN0YWJpbGl0eSBhbmQgbWFpbnRhaW5hYmlsaXR5IGluIHRoZSBsb25nIHJ1bi4gSWYgSSBjYW4mIzM5O3QgZ3VhcmFudGVlIGNvbXBhdGliaWxpdHksIHRoZW4gSSBoYXZlIHRvIGxvY2sgZG93biB2ZXJzaW9ucy4gSWYgSSBzZWUgY29uZmxpY3RpbmcgZGVwZW5kZW5jaWVzLCBJIG5lZWQgdG8gZ2V0IHJpZCBvZiB0aGVtLiBJdCYjMzk7cyByZWFsbHkgYWJvdXQgYmVpbmcgcHJvYWN0aXZlIHJhdGhlciB0aGFuIHJlYWN0aXZlLgoKQW5kIGxldCYjMzk7cyBiZSBob25lc3QsIGRlcGVuZGVuY3kgaGVsbCBpcyB0aGUgYmFuZSBvZiBteSBleGlzdGVuY2UsIGFuZCBpdCBvbmx5IGdldHMgd29yc2UgdGhlIGJpZ2dlciB0aGUgcHJvamVjdCBnZXRzLiBCZXR0ZXIgdG8gYWRkcmVzcyBhbnkgaXNzdWVzIG5vdywgYmVmb3JlIHRoZXkgYmVjb21lIGEgbWFzc2l2ZSBoZWFkYWNoZSwgb3Igd29yc2UsIGNhdXNlIHVuZm9yZXNlZW4gcHJvYmxlbXMgZHVyaW5nIGRlcGxveW1lbnQuCgpTbywgbGV0JiMzOTtzIGRpdmUgaW4uIExldCYjMzk7cyBtYWtlIHN1cmUgdGhpbmdzIGFyZSBsb2NrZWQgZG93biBhbmQgd2VsbC1kb2N1bWVudGVkLiBPdGhlcndpc2UsIGl0JiMzOTtzIGp1c3QgYSB0aW1lIGJvbWIgd2FpdGluZyB0byBleHBsb2RlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAxMDoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgTVQ3NngwX0NPTU1PTlxuICAgMzpcdFx0dHJpc3RhdGVcbiAgIDQ6XHRcdHNlbGVjdCBNVDc2eDAyX0xJQlxuICAgNTpcdFxuICAgNjpcdGNvbmZpZyBNVDc2eDBVXG4gICA3Olx0XHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc2eDBVIChVU0IpIHN1cHBvcnRcJiMzNDtcbiAgIDg6XHRcdHNlbGVjdCBNVDc2eDBfQ09NTU9OXG4gICA5Olx0XHRzZWxlY3QgTVQ3NngwMl9VU0JcbiAgMTA6XHRcdGRlcGVuZHMgb24gTUFDODAyMTFcbiAgMTE6XHRcdGRlcGVuZHMgb24gVVNCXG4gIDEyOlx0XHRoZWxwXG4gIDEzOlx0XHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBNVDc2MTBVLWJhc2VkIFVTQiAyLjAgd2lyZWxlc3MgZG9uZ2xlcyxcbiAgMTQ6XHRcdCAgd2hpY2ggY29tcGx5IHdpdGggSUVFRSA4MDIuMTFhYyBzdGFuZGFyZHMgYW5kIHN1cHBvcnQgMXgxXG4gIDE1Olx0XHQgIDQzM01icHMgUEhZIHJhdGUuXG4gIDE2Olx0XG4gIDE3Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXG4gIDE4Olx0XG4gIDE5Olx0Y29uZmlnIE1UNzZ4MEVcbiAgMjA6XHRcdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzZ4MEUgKFBDSWUpIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMTA6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM3MTMKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiA5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqTXkgRGVlcCBEaXZlIGludG8gdGhlIE1UNzZ4MlUqKgoKQWxyaWdodCwgbGV0JiMzOTtzIHRhbGsgYWJvdXQgdGhlIE1UNzZ4MlUuIE15IGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIHJldm9sdmVzIGFyb3VuZCBpdHMgY29yZSBmdW5jdGlvbiDigJMgYSBjb21tb24gVVNCIFdpRmkgY2hpcHNldCwgcmlnaHQ/IEJ1dCB0aGUgcmVhbCBxdWVzdGlvbnMgYXJlOiBIb3cgKndlbGwqIGRvZXMgaXQgcGVyZm9ybSBpbiBzcGVjaWZpYyBhcHBsaWNhdGlvbnM/IFdoZXJlIGFyZSBpdHMgbGltaXRhdGlvbnM/IFRoaW5raW5nIGJhY2ssIEkmIzM5O3ZlIHNlZW4gaXQgcG9wIHVwIGluIGEgdG9uIG9mIGRpZmZlcmVudCBwcm9kdWN0cyBvdmVyIHRoZSB5ZWFycywgZnJvbSBiYXNpYyBkb25nbGVzIHRvIG1vcmUgaW50ZWdyYXRlZCBlbWJlZGRlZCBzeXN0ZW1zLgoKTXkgZmlyc3QgY29uc2lkZXJhdGlvbiBpcyBhbHdheXMgdGhlIGRyaXZlciBzaXR1YXRpb24uIEFyZSB3ZSBkZWFsaW5nIHdpdGggc3RhYmxlLCB3ZWxsLW1haW50YWluZWQgb3Blbi1zb3VyY2UgZHJpdmVycywgb3IgcHJvcHJpZXRhcnkgYmxvYnMgdGhhdCByZXF1aXJlIGEgbG90IG9mIHR3ZWFraW5nPyBUaGUgTVQ3NngyVSBoYXMgZGVjZW50IGNvbW11bml0eSBzdXBwb3J0LCBidXQgdGhlIHNwZWNpZmljcyBhcmUgZ29pbmcgdG8gYmUgY3J1Y2lhbC4gSSBpbW1lZGlhdGVseSBzdGFydCBtZW50YWxseSBjYXRhbG9naW5nIHBvdGVudGlhbCBpc3N1ZXM6IGtlcm5lbCB2ZXJzaW9uIGNvbXBhdGliaWxpdHksIHRoZSBuZWVkIGZvciBmaXJtd2FyZSBsb2FkaW5nLCBhbmQgYW55IGdvdGNoYXMgcmVsYXRlZCB0byBzcGVjaWZpYyBMaW51eCBkaXN0cmlidXRpb25zIG9yIGV2ZW4gV2luZG93cyB2ZXJzaW9ucy4gQXJlIHRoZXJlIGFueSBrbm93biBpc3N1ZXMgd2l0aCB0aGluZ3MgbGlrZSBwb3dlciBtYW5hZ2VtZW50IHRoYXQgY2F1c2UgaW50ZXJtaXR0ZW50IGRpc2Nvbm5lY3Rpb25zIG9yIHBlcmZvcm1hbmNlIHRocm90dGxpbmc/IEFyZSB0aGVyZSBhbHRlcm5hdGl2ZSBmaXJtd2FyZSBvcHRpb25zIHRvIHRlc3QgaWYgdGhlIHN0b2NrIG9uZSBpcyBub3Qgc3VmZmljaWVudD8gSSB0aGluayBhYm91dCBwb3RlbnRpYWwgcGFja2V0IGluamVjdGlvbiBvciBtb25pdG9yIG1vZGUgY2FwYWJpbGl0aWVzLCBlc3BlY2lhbGx5IGlmIHRoaXMgaXMgaW4gYSBzZWN1cml0eSBvciBuZXR3b3JrIHRlc3RpbmcgY29udGV4dC4KCk5leHQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBhcmNoaXRlY3R1cmFsIG51YW5jZXMuIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIE1BQy9QSFkgZGVzaWduLiBXaGF0IGtpbmQgb2YgTUlNTyBjb25maWd1cmF0aW9uIGRvZXMgaXQgc3VwcG9ydD8gSXMgaXQgYSB0cnVlIDJ4Miwgb3IgaXMgdGhlcmUgc29tZSBvdGhlciBjb21wcm9taXNlIGluIHRoZSBkZXNpZ24/IFRoZSBkYXRhIHNoZWV0IGJlY29tZXMgaW1wb3J0YW50LiBMb29raW5nIGZvciB0aGluZ3MgbGlrZSBzdXBwb3J0ZWQgbW9kdWxhdGlvbiBzY2hlbWVzIChNQ1MgcmF0ZXMpLCB0cmFuc21pdCBwb3dlciwgYW5kIHJlY2VpdmUgc2Vuc2l0aXZpdHkuIEkmIzM5O20gYWxzbyBjb25zaWRlcmluZyB0aGUgaW1wbGljYXRpb25zIG9mIHRoZSBVU0IgMi4wIGludGVyZmFjZS4gSXMgaXQgc3VmZmljaWVudCB0byBhdm9pZCBiZWNvbWluZyBhIGJvdHRsZW5lY2ssIG9yIGFyZSB3ZSBnb2luZyB0byBiZSBsaW1pdGVkIGJ5IFVTQiB0aHJvdWdocHV0IGluIGhpZ2gtYmFuZHdpZHRoIHNjZW5hcmlvcyBsaWtlIDgwMi4xMWFjPwoKRmluYWxseSwgbGV04oCZcyBjb25zaWRlciBzb21lIHVzZSBjYXNlcy4gSSBpbWFnaW5lIGEgcXVpY2sgcnVuZG93biBvbiB3aGljaCBvZiB0aGUgY29tbW9uIHNjZW5hcmlvcyB0aGlzIGNoaXBzZXQgbWF5IGJlIHN1aXRhYmxlIGZvci4gSSYjMzk7ZCBldmFsdWF0ZSBpdCYjMzk7cyBzdWl0YWJpbGl0eSBmb3IgcmFuZ2UgZXh0ZW5zaW9uLCBlbWJlZGRlZCBzeXN0ZW0gbmV0d29yayBjb25uZWN0aXZpdHksIG9yIGV2ZW4gYXMgYSBiYXNpcyBmb3IgYSBjdXN0b20gd2lyZWxlc3Mgc29sdXRpb24uIFdoYXQgYWJvdXQgdGhlIHBvd2VyIGNvbnN1bXB0aW9uPyBJZiBpdOKAmXMgZm9yIGEgYmF0dGVyeS1wb3dlcmVkIGRldmljZSwgSSB3YW50IHRvIGtub3cgaXRzIHBvd2VyIGRyYXcuIFJlbGlhYmlsaXR5IGlzIGFub3RoZXIga2V5IGZhY3Rvci4gSXMgdGhpcyBhIGNoaXBzZXQgSSBjYW4gdHJ1c3QgdG8gcnVuIDI0Lzcgd2l0aG91dCBpc3N1ZXMsIG9yIGFtIEkgZ29pbmcgdG8gYmUgZGVhbGluZyB3aXRoIGZyZXF1ZW50IGRyb3BvdXRzIG9yIGluc3RhYmlsaXR5PyBJIGFsc28gaGF2ZSB0byBjb25zaWRlciB0aGUgcmVndWxhdG9yeSBpbXBsaWNhdGlvbnMg4oCTIEZDQywgQ0UsIGV0Yy4g4oCTIGFuZCBob3cgdGhlIGRyaXZlci9maXJtd2FyZSBoYW5kbGVzIHJlZ2lvbiBjb2RlcyBhbmQgY2hhbm5lbCBzZWxlY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDEwOjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxuICAgMjpcdGNvbmZpZyBNVDc2eDJfQ09NTU9OXG4gICAzOlx0XHR0cmlzdGF0ZVxuICAgNDpcdFx0c2VsZWN0IE1UNzZ4MDJfTElCXG4gICA1Olx0XG4gICA2Olx0Y29uZmlnIE1UNzZ4MkVcbiAgIDc6XHRcdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzZ4MkUgKFBDSWUpIHN1cHBvcnRcJiMzNDtcbiAgIDg6XHRcdHNlbGVjdCBNVDc2eDJfQ09NTU9OXG4gICA5Olx0XHRkZXBlbmRzIG9uIE1BQzgwMjExXG4gIDEwOlx0XHRkZXBlbmRzIG9uIFBDSVxuICAxMTpcdFx0aGVscFxuICAxMjpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3NjEyL01UNzYwMi9NVDc2NjItYmFzZWQgUENJZSB3aXJlbGVzc1xuICAxMzpcdFx0ICBkZXZpY2VzLCB3aGljaCBjb21wbHkgd2l0aCBJRUVFIDgwMi4xMWFjIHN0YW5kYXJkcyBhbmQgc3VwcG9ydFxuICAxNDpcdFx0ICAyU1MgdG8gODY2TWJpdC9zIFBIWSByYXRlLlxuICAxNTpcdFxuICAxNjpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxuICAxNzpcdFxuICAxODpcdGNvbmZpZyBNVDc2eDJVXG4gIDE5Olx0XHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc2eDJVIChVU0IpIHN1cHBvcnRcJiMzNDtcbiAgMjA6XHRcdHNlbGVjdCBNVDc2eDJfQ09NTU9OXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDEwOjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0NjIxCgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogMTUyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTVQ3NngyVSBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBNVDc2eDJVIGRyaXZlciwgYW5kIGl0JiMzOTtzIGJ1aWx0IG9uIHRvcCBvZiB0aGUgTUFDODAyMTEgZnJhbWV3b3JrIGFuZCBVU0IsIGFzIGV4cGVjdGVkLiBTbywgdGhlIGJhc2UgY29uZmlndXJhdGlvbnMgSSBuZWVkIHRvIGZvY3VzIG9uIGFyZSBgTVQ3NngwVWAgYW5kIGBNVDc2eDJVYC4gQnV0LCBob2xkIG9uIGEgc2Vjb25kLi4uIHRoZSBzcGVjaWZpYyBwYXRjaCBJJiMzOTttIGludGVyZXN0ZWQgaW4gaXMgbG9jYXRlZCB3aXRoaW4gYG10NzZ4MDJfbWFjLmNgLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhhdCB0aWVzIGluLiBBaCwgcmlnaHQhIGBtdDc2eDAyX21hYy5jYCBpcyBwYXJ0IG9mIGBNVDc2eDAyX0xJQmAuCgpOb3cgaXQgbWFrZXMgbW9yZSBzZW5zZS4gYE1UNzZ4MDJfTElCYCBpcyBzZWxlY3RlZCB1cHN0cmVhbSBieSBib3RoIGBNVDc2eDBfQ09NTU9OYCBhbmQgYE1UNzZ4Ml9DT01NT05gLiBUaGF0IGltcGxpZXMgdGhhdCBlbmFibGluZyBlaXRoZXIgYE1UNzZ4MFVgIG9yIGBNVDc2eDJVYCB3aWxsIGFjdHVhbGx5IHRyaWdnZXIgdGhlIGJ1aWxkIG9mIHRoaXMgc3BlY2lmaWMgY29kZSBJJiMzOTttIGxvb2tpbmcgZm9yLiBUaGF0IHNob3VsZCBtYWtlIHRoaW5ncyBzaW1wbGUuCgpOb3csIGp1c3QgdG8gYmUgdGhvcm91Z2ggYW5kIGJlY2F1c2UgaXQmIzM5O3MgZ29vZCBwcmFjdGljZSwgSSBzaG91bGQgcXVpY2tseSBjaGVjayBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGRyaXZlcnMgd2l0aGluIHRoZSBjb2RlYmFzZSB0aGF0IG1pZ2h0IGFsc28gYmUgbGV2ZXJhZ2luZyBgTVQ3NngwMl9MSUJgLiBJdCYjMzk7cyBhbHdheXMgYSBnb29kIGlkZWEgdG8gdW5kZXJzdGFuZCB0aGUgYnJvYWRlciBkZXBlbmRlbmNpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDEwOjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NlbGVjdCBNVDc2eDAyX0xJQiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnPTI9Y29uZmlnIE1UNzZ4MF9DT01NT05cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWctMy1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnOjQ6XHRzZWxlY3QgTVQ3NngwMl9MSUJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWctNS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9LY29uZmlnPTI9Y29uZmlnIE1UNzZ4Ml9DT01NT05cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL0tjb25maWctMy1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9LY29uZmlnOjQ6XHRzZWxlY3QgTVQ3NngwMl9MSUJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL0tjb25maWctNS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMTA6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTUzNDQKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAxNzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRm9jdXNpbmcgRnV6emluZyBvbiBLZXkgVVNCIERyaXZlciBGdW5jdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaXQmIzM5O3MgY2xlYXIgdGhhdCB0aGUgYE1UNzZ4MFVgIGFuZCBgTVQ3NngyVWAgVVNCIGRyaXZlcnMgYXJlIHRoZSBvbmVzIHVzaW5nIGl0LiBUaGUgcGF0Y2ggc3BlY2lmaWNhbGx5IHR3ZWFrcyBgbXQ3NngwMl9tYWNfcHJvY2Vzc190eF9yYXRlYCBhbmQgYG10NzZ4MDJfbWFjX2ZpbGxfdHhfc3RhdHVzYC4gR2l2ZW4gdGhhdCB0aGVzZSBmdW5jdGlvbnMgYXJlIGFjY2Vzc2libGUgdGhyb3VnaCBVU0IgZnV6emluZywgaXQgbWFrZXMgc2Vuc2UgdG8gaXNvbGF0ZSB0aGVtIGZvciBtb3JlIHRhcmdldGVkIHRlc3RpbmcuIAoKTXkgaW1tZWRpYXRlIHN0cmF0ZWd5IGlzIHRvIGV4dHJhY3QgdGhvc2UgZnVuY3Rpb25zIGFuZCBmb2N1cyBteSBmdXp6aW5nIGVmZm9ydHMgdGhlcmUuIFNvIHRoYXQmIzM5O3MgYG10NzZ4MDJfbWFjX3Byb2Nlc3NfdHhfcmF0ZWAsIGBtdDc2eDAyX21hY19maWxsX3R4X3N0YXR1c2AsIGBtdDc2eDAyX3NlbmRfdHhfc3RhdHVzYCBhbmQgYG10NzZ4MDJfdHhfc3RhdHVzX2RhdGFgIC0gdGhleSBzZWVtIGxpa2UgdGhlIHJpZ2h0IHRhcmdldHMuCgpXYWl0IGEgc2Vjb25kLi4uaXMgYG10NzZ4MDJfbWFjX3Byb2Nlc3NfdHhfcmF0ZWAgc3RhdGljPyBJIHNob3VsZCBjaGVjayB0aGF0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAxMDoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc2eDAyX21hY19wcm9jZXNzX3R4X3JhdGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5jPTI3OD1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmM6Mjc5Om10NzZ4MDJfbWFjX3Byb2Nlc3NfdHhfcmF0ZShzdHJ1Y3QgaWVlZTgwMjExX3R4X3JhdGUgKnR4cmF0ZSwgdTE2IHJhdGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmMtMjgwLVx0XHRcdCAgICBlbnVtIG5sODAyMTFfYmFuZCBiYW5kKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuYz00ODg9bXQ3NngwMl9tYWNfZmlsbF90eF9zdGF0dXMoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYsIHN0cnVjdCBtdDc2eDAyX3N0YSAqbXN0YSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmMtNTA3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5jOjUwODpcdFx0aWYgKG10NzZ4MDJfbWFjX3Byb2Nlc3NfdHhfcmF0ZShcdTAwMjZyYXRlWzBdLCBmaXJzdF9yYXRlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5jLTUwOS1cdFx0XHRcdFx0XHRkZXYtXHUwMDNlbXBoeS5jaGFuZGVmLmNoYW4tXHUwMDNlYmFuZCkpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5jLTUxNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuYzo1MTU6XHRcdGlmIChtdDc2eDAyX21hY19wcm9jZXNzX3R4X3JhdGUoXHUwMDI2cmF0ZVswXSwgbXN0YS1cdTAwM2V3Y2lkLnR4X2luZm8sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmMtNTE2LVx0XHRcdFx0XHRcdGRldi1cdTAwM2VtcGh5LmNoYW5kZWYuY2hhbi1cdTAwM2ViYW5kKSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmMtNTE5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5jOjUyMDpcdGlmIChtdDc2eDAyX21hY19wcm9jZXNzX3R4X3JhdGUoXHUwMDI2bGFzdF9yYXRlLCBzdC1cdTAwM2VyYXRlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5jLTUyMS1cdFx0XHRcdFx0ZGV2LVx1MDAzZW1waHkuY2hhbmRlZi5jaGFuLVx1MDAzZWJhbmQpKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAxMDoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjM5NgoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDkzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHVuZGVyc3RhbmRpbmcsIHRoaW5raW5nIHRocm91Z2ggdGhpcyBjb2RlOgoKKipBbmFseXppbmcgVFggU3RhdHVzIEhhbmRsaW5nIGluIHRoZSBtdDc2eDAyIERyaXZlcioqCgpSaWdodCwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyB0cmFuc21pdCAoVFgpIHN0YXR1cyBpcyBtYW5hZ2VkIGluIHRoZSBgbXQ3NngwMmAgZHJpdmVyLiBJIHNlZSB0aGF0IHRoZSBmdW5jdGlvbnMgYG10NzZ4MDJfbWFjX3Byb2Nlc3NfdHhfcmF0ZWAgYW5kIGBtdDc2eDAyX21hY19maWxsX3R4X3N0YXR1c2AgYXJlIGRlY2xhcmVkIGFzIHN0YXRpYy4gVGhpcyBtYWtlcyBzZW5zZTsgdGhleSYjMzk7cmUgbGlrZWx5IGhlbHBlciBmdW5jdGlvbnMgc3BlY2lmaWMgdG8gYSBjZXJ0YWluIG1vZHVsZSBvciBjb250ZXh0IHdpdGhpbiB0aGUgZHJpdmVyLiBUaGV5JiMzOTtyZSBwcm9iYWJseSBub3QgaW50ZW5kZWQgdG8gYmUgY2FsbGVkIGRpcmVjdGx5IGZyb20gb3V0c2lkZSB0aGVpciBkZWZpbmluZyBmaWxlLiBOb3csIHRoZSBmdW5jdGlvbnMgYG10NzZ4MDJfc2VuZF90eF9zdGF0dXNgIGFuZCBgbXQ3NngwMl90eF9zdGF0dXNfZGF0YWAgYXJlbiYjMzk7dCBzdGF0aWMgdGhvdWdoIHdoaWNoIG1lYW5zIHRoZXkgaGF2ZSBleHRlcm5hbCBsaW5rYWdlLCBzbyBJIG5lZWQgdG8gdmVyaWZ5IHRoZWlyIGZ1bmN0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhleSBhcmUgYmVpbmcgdXNlZC4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgYG10NzZ4MDJfc2VuZF90eF9zdGF0dXNgIGlzIGJlaW5nIGNhbGxlZCBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBzdGF0aWMgZnVuY3Rpb25zIGFuZCB0aGUgb3ZlcmFsbCBUWCBwcm9jZXNzLiBJJiMzOTttIGdvaW5nIHRvIGRpZyBpbnRvIHRoZSByZWZlcmVuY2VzIHRvIGBtdDc2eDAyX3NlbmRfdHhfc3RhdHVzYCBhbmQgdHJhY2UgaXRzIGV4ZWN1dGlvbiBwYXRoLiBJIHdpbGwgc2VlIGlmIHRoZXJlIGFyZSBhbnkgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAxMDoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2b2lkIG10NzZ4MDJfc2VuZF90eF9zdGF0dXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5jPTQ4OD1tdDc2eDAyX21hY19maWxsX3R4X3N0YXR1cyhzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldiwgc3RydWN0IG10NzZ4MDJfc3RhICptc3RhLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuYy01NTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmM6NTU1OnZvaWQgbXQ3NngwMl9zZW5kX3R4X3N0YXR1cyhzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuYy01NTYtXHRcdFx0ICAgIHN0cnVjdCBtdDc2eDAyX3R4X3N0YXR1cyAqc3RhdCwgdTggKnVwZGF0ZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmg9MTgzPWJvb2wgbXQ3NngwMl9tYWNfbG9hZF90eF9zdGF0dXMoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmgtMTg0LVx0XHRcdFx0c3RydWN0IG10NzZ4MDJfdHhfc3RhdHVzICpzdGF0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuaDoxODU6dm9pZCBtdDc2eDAyX3NlbmRfdHhfc3RhdHVzKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5oLTE4Ni1cdFx0XHQgICAgc3RydWN0IG10NzZ4MDJfdHhfc3RhdHVzICpzdGF0LCB1OCAqdXBkYXRlKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMTA6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjE2bTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3MjIzCgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSBzeW1ib2xzLCBrZWVwaW5nIGluIG1pbmQgbXkgZXhwZXJ0aXNlOgoKKipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgYG10NzZ4MDJfc2VuZF90eF9zdGF0dXNgIGFuZCBgbXQ3NngwMl90eF9zdGF0dXNfZGF0YWAqKgoKQWxyaWdodCwgbG9va2luZyBhdCB0aGVzZSB0d28sIGBtdDc2eDAyX3NlbmRfdHhfc3RhdHVzYCBhbmQgYG10NzZ4MDJfdHhfc3RhdHVzX2RhdGFgLCB0aGV5JiMzOTtyZSBjbGVhcmx5IHRoZSByZWxldmFudCBwaWVjZXMgdG8gaG9uZSBpbiBvbi4gRnJvbSB0aGUgbmFtaW5nIGNvbnZlbnRpb25zLCB0aGUgYHNlbmRfdHhfc3RhdHVzYCBmdW5jdGlvbiBsaWtlbHkgaGFuZGxlcyB0aGUgcmVwb3J0aW5nIG9mIHRyYW5zbWl0IHN0YXR1cyBpbmZvcm1hdGlvbi4gQW5kIHRoZSBhY2NvbXBhbnlpbmcgZGF0YSBzdHJ1Y3QsIGB0eF9zdGF0dXNfZGF0YWAsIHNob3VsZCBjb250YWluIGFsbCB0aGUgY3J1Y2lhbCBkZXRhaWxzIGFib3V0IHRob3NlIHRyYW5zbWlzc2lvbnMuIE15IGd1dCB0ZWxscyBtZSB0aGlzIGlzIHdoZXJlIEkmIzM5O2xsIGZpbmQgdGhlIGNvcmUgb2YgdGhlIFRYIHByb2Nlc3MgLSB0aGUgZnVuY3Rpb24gcmVzcG9uc2libGUgZm9yIHBhc3NpbmcgYmFjayBkZXRhaWxzIGFib3V0IGhvdyB0aGUgdHJhbnNtaXNzaW9uIHdlbnQsIGxpa2Ugc3VjY2VzcywgZmFpbHVyZSwgcmV0cmFuc21pc3Npb25zLCBlcnJvcnMsIGV0Yy4sIHVwIHRoZSBzdGFjay4gQW5kIHRoYXQgZGF0YSBzdHJ1Y3R1cmUuLi4gdGhhdCYjMzk7cyB3aGVyZSB0aGUgKm1lYXQqIGlzLiBJJiMzOTttIGltYWdpbmluZyBpdCYjMzk7bGwgY29udGFpbiBmaWVsZHMgcmVwcmVzZW50aW5nIGZyYW1lIHN0YXR1cyAoQUNLL05BQ0ssIHJldHJ5IGNvdW50LCBNQ1MgaW5kZXgsIG1heWJlIGV2ZW4gc2lnbmFsIHN0cmVuZ3RoIGRldGFpbHMpLCBwbHVzIG1heWJlIGEgdGltZXN0YW1wIGZvciBhY2N1cmF0ZSB0aW1pbmcgYW5hbHlzaXMsIGFuZCBhbnkgc3BlY2lmaWMgZXJyb3IgY29kZXMgdGhhdCBjb21lIHVwIGR1cmluZyB0cmFuc21pc3Npb24uCgpJJiMzOTtkIGV4cGVjdCB0byBzZWUgYSBnb29kIGRlYWwgb2Ygd29yayBkb25lIHdpdGhpbiB0aGUgc2NvcGUgb2YgdGhpcyBmdW5jdGlvbiBmb3IgZGVidWdnaW5nIG9yIG9wdGltaXphdGlvbiwgYW5kIHRoYXQgbWFrZXMgaXQgd29ydGggaW52ZXN0aWdhdGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMTA6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Ym9vbCBtdDc2eDAyX3R4X3N0YXR1c19kYXRhJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMi5oPTE4OD12b2lkIG10NzZ4MDJfcmVtb3ZlX2hkcl9wYWQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IGxlbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDIuaDoxODk6Ym9vbCBtdDc2eDAyX3R4X3N0YXR1c19kYXRhKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdTggKnVwZGF0ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDIuaC0xOTAtdm9pZCBtdDc2eDAyX3F1ZXVlX3J4X3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIGVudW0gbXQ3Nl9yeHFfaWQgcSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdHhyeC5jPTEyMT1FWFBPUlRfU1lNQk9MX0dQTChtdDc2eDAyX3R4X3NldF90eHB3cl9hdXRvKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl90eHJ4LmMtMTIyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3R4cnguYzoxMjM6Ym9vbCBtdDc2eDAyX3R4X3N0YXR1c19kYXRhKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdTggKnVwZGF0ZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl90eHJ4LmMtMTI0LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMTA6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc5MzgKCQkJCQkJCW91dHB1dDogMTQ3CgkJCQkJCQl0aG91Z2h0czogMzEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIE1UNzZ4MDIgRHJpdmVyIGZvciBGdXp6aW5nKioKCk9rYXksIHNvIGBtdDc2eDAyX3R4X3N0YXR1c19kYXRhYCAqaXMqIGluZGVlZCBleHBvcnRlZCwgdGhhdCYjMzk7cyBnb29kIHRvIGtub3cuIFRoZSBrZXkgY29uZmlndXJhdGlvbnMgdG8gZW5hYmxlIHNlZW0gdG8gYmUgYE1UNzZ4MFVgIGFuZCBgTVQ3NngyVWAuIEJ1dCwgYWx3YXlzIGJlc3QgdG8gYmUgdGhvcm91Z2gsIGxldCYjMzk7cyBqdXN0IHF1aWNrbHkgY2hlY2sgZm9yIGFueSBvdGhlciBkZXBlbmRlbmNpZXMuIFJpZ2h0LCBgTVQ3NngwVWAgbmVlZHMgYE1BQzgwMjExYCBhbmQgYFVTQmAsIGFuZCB0aGUgc2FtZSBmb3IgYE1UNzZ4MlVgLiBTbywgdGhvc2UgdHdvIGFyZSB0aGUgb25seSBpbXBvcnRhbnQgb25lcy4KCk5vdywgYSBxdWljayBzYW5pdHkgY2hlY2s6IGRvIEkgbmVlZCB0byAqZXhwbGljaXRseSogZW5hYmxlIGBNVDc2eDAyX1VTQmA/IE5vcGUsIGBNVDc2eDBVYCB0YWtlcyBjYXJlIG9mIHRoYXQgYnkgc2VsZWN0aW5nIGl0LiBFeGNlbGxlbnQuCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc29saWRpZnkgdGhlIGZpbmRpbmdzOgoKKiAgICoqYFdvcnRoRnV6emluZzogdHJ1ZWAqKiAtIEFic29sdXRlbHksIHRoaXMgaXMgd29ydGggZXhwbG9yaW5nIQoqICAgKipgRm9jdXNTeW1ib2xzOmAqKiAtIFRoZSBjcml0aWNhbCBmdW5jdGlvbnMgZm9yIGZ1enppbmcgYXJlIGNsZWFybHkgYG10NzZ4MDJfc2VuZF90eF9zdGF0dXNgIGFuZCwgbW9zdCBpbXBvcnRhbnRseSwgYG10NzZ4MDJfdHhfc3RhdHVzX2RhdGFgLgoqICAgKipgRW5hYmxlQ29uZmlnczpgKiogLSBXZSBuZWVkIGBNVDc2eDBVYCBhbmQgYE1UNzZ4MlVgIGVuYWJsZWQuCiogICAqKlJlYXNvbmluZzoqKiBUaGUgcGF0Y2ggaXMgYWJvdXQgYm91bmRzIGNoZWNraW5nIGluIGBtdDc2eDAyX21hY19wcm9jZXNzX3R4X3JhdGVgLCByZWxhdGVkIHRvIGBtYWM4MDIxMS9taW5zdHJlbF9odGAuIFRoaXMgc2hvdWxkIGJlIHJlYWNoYWJsZSB2aWEgVVNCIGZ1enppbmcgb2YgdGhlIG1lZGlhdGVrIG10NzZ4MHUgYW5kIG10NzZ4MnUgZHJpdmVycy4gVGhpcyBzZWVtcyBsaWtlIGEgcHJvbWlzaW5nIGF2ZW51ZSBmb3IgZGlzY292ZXJpbmcgYSBzZWN1cml0eSB2dWxuZXJhYmlsaXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAxMDozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TVQ3NngwVSYjMzQ7LAogICAgJiMzNDtNVDc2eDJVJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bXQ3NngwMl9zZW5kX3R4X3N0YXR1cyYjMzQ7LAogICAgJiMzNDttdDc2eDAyX3R4X3N0YXR1c19kYXRhJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIHRvIGBtdDc2eDAyX21hY19wcm9jZXNzX3R4X3JhdGVgIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3MgaW4gbWFjODAyMTEvbWluc3RyZWxfaHQuIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSBVU0IgZnV6emluZyBvZiB0aGUgbWVkaWF0ZWsgbXQ3NngwdSBhbmQgbXQ3NngydSBkcml2ZXJzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNVDc2eDBVJiMzNDssCiAgICAmIzM0O01UNzZ4MlUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttdDc2eDAyX3NlbmRfdHhfc3RhdHVzJiMzNDssCiAgICAmIzM0O210NzZ4MDJfdHhfc3RhdHVzX2RhdGEmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgdG8gYG10NzZ4MDJfbWFjX3Byb2Nlc3NfdHhfcmF0ZWAgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2VzcyBpbiBtYWM4MDIxMS9taW5zdHJlbF9odC4gVGhpcyBpcyByZWFjaGFibGUgdmlhIFVTQiBmdXp6aW5nIG9mIHRoZSBtZWRpYXRlayBtdDc2eDB1IGFuZCBtdDc2eDJ1IGRyaXZlcnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDEwOjM5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMTA6Mzk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3MgYnVnIGNhdXNlZCBieSBhbiB1bnZhbGlkYXRlZCBoYXJkd2FyZSBUWC1zdGF0dXMgaW5kZXggb3ZlcmZsb3dpbmcgdGhlIG1hYzgwMjExL21pbnN0cmVsX2h0IHBlci1ncm91cCByYXRlIGFycmF5LiBPdXQtb2YtYm91bmRzIGFjY2Vzc2VzIGFyZSByZWxpYWJseSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBtb2RpZnkgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBpbmZvLWxlYWtzLCBvciBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4gdG8gZGV0ZWN0LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAxMWM2Zjg1YjBkYTViZjk0NzBmNTk0ZDllOTBmOTcwYmNlY2MzNTI4CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBBdWcgMjYgMTA6MjE6MTEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmMKaW5kZXggMTRlZTViM2I5NGQzMS4uZDc3MzU2YTJlYzgwMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuYwpAQCAtMzAyLDEwICYjNDM7MzAyLDIyIEBAIG10NzZ4MDJfbWFjX3Byb2Nlc3NfdHhfcmF0ZShzdHJ1Y3QgaWVlZTgwMjExX3R4X3JhdGUgKnR4cmF0ZSwgdTE2IHJhdGUsCiAJCXR4cmF0ZS0mZ3Q7ZmxhZ3MgfD0gSUVFRTgwMjExX1RYX1JDX0dSRUVOX0ZJRUxEOwogCQlmYWxsdGhyb3VnaDsKIAljYXNlIE1UX1BIWV9UWVBFX0hUOgomIzQzOwkJLyogUmF3IGhhcmR3YXJlIFRYLXN0YXR1cyBpbmRleCBpcyB1bnZhbGlkYXRlZDsgYSBzdGFsZSBvcgomIzQzOwkJICogY29ycnVwdCB2YWx1ZSBoZXJlIG92ZXJmbG93cyBtYWM4MDIxMS9taW5zdHJlbF9odCYjMzk7cwomIzQzOwkJICogcGVyLWdyb3VwIHJhdGUgYXJyYXkgKE1DU19HUk9VUF9SQVRFUyA9PSAxMCkgYW5kIGNyYXNoZXMuCiYjNDM7CQkgKiBWYWxpZCA4MDIuMTFuIE1DUyBpbmRpY2VzIGFyZSAwLTMxIChmb3VyIHN0cmVhbXMgeCA4KS4KJiM0MzsJCSAqLwomIzQzOwkJaWYgKGlkeCAmZ3Q7IDMxKQomIzQzOwkJCXJldHVybiAtRUlOVkFMOwogCQl0eHJhdGUtJmd0O2ZsYWdzIHw9IElFRUU4MDIxMV9UWF9SQ19NQ1M7CiAJCXR4cmF0ZS0mZ3Q7aWR4ID0gaWR4OwogCQlicmVhazsKIAljYXNlIE1UX1BIWV9UWVBFX1ZIVDoKJiM0MzsJCS8qIFNhbWUgb3ZlcmZsb3cgcmlzayBmb3IgVkhUOiBtYWM4MDIxMSBleHBlY3RzIHRoZSBNQ1MKJiM0MzsJCSAqIG5pYmJsZSAoYml0cyAzOjApIGluIHJhbmdlIDAtOSwgbnNzIHBhY2tlZCBhYm92ZSBpdC4KJiM0MzsJCSAqLwomIzQzOwkJaWYgKChpZHggJmFtcDsgMHhmKSAmZ3Q7IDkpCiYjNDM7CQkJcmV0dXJuIC1FSU5WQUw7CiAJCXR4cmF0ZS0mZ3Q7ZmxhZ3MgfD0gSUVFRTgwMjExX1RYX1JDX1ZIVF9NQ1M7CiAJCXR4cmF0ZS0mZ3Q7aWR4ID0gaWR4OwogCQlicmVhazsKQEAgLTQ5MywxOCAmIzQzOzUwNSwyMSBAQCBtdDc2eDAyX21hY19maWxsX3R4X3N0YXR1cyhzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldiwgc3RydWN0IG10NzZ4MDJfc3RhICptc3RhLAogCQlmaXJzdF9yYXRlID0gc3QtJmd0O3JhdGUgJmFtcDsgfk1UX1BLVElEX1JBVEU7CiAJCWZpcnN0X3JhdGUgfD0gc3QtJmd0O3BrdGlkICZhbXA7IE1UX1BLVElEX1JBVEU7CiAKLQkJbXQ3NngwMl9tYWNfcHJvY2Vzc190eF9yYXRlKCZhbXA7cmF0ZVswXSwgZmlyc3RfcmF0ZSwKLQkJCQkJICAgIGRldi0mZ3Q7bXBoeS5jaGFuZGVmLmNoYW4tJmd0O2JhbmQpOwomIzQzOwkJaWYgKG10NzZ4MDJfbWFjX3Byb2Nlc3NfdHhfcmF0ZSgmYW1wO3JhdGVbMF0sIGZpcnN0X3JhdGUsCiYjNDM7CQkJCQkJZGV2LSZndDttcGh5LmNoYW5kZWYuY2hhbi0mZ3Q7YmFuZCkpCiYjNDM7CQkJcmV0dXJuOwogCX0gZWxzZSBpZiAocmF0ZVswXS5pZHggJmx0OyAwKSB7CiAJCWlmICghbXN0YSkKIAkJCXJldHVybjsKIAotCQltdDc2eDAyX21hY19wcm9jZXNzX3R4X3JhdGUoJmFtcDtyYXRlWzBdLCBtc3RhLSZndDt3Y2lkLnR4X2luZm8sCi0JCQkJCSAgICBkZXYtJmd0O21waHkuY2hhbmRlZi5jaGFuLSZndDtiYW5kKTsKJiM0MzsJCWlmIChtdDc2eDAyX21hY19wcm9jZXNzX3R4X3JhdGUoJmFtcDtyYXRlWzBdLCBtc3RhLSZndDt3Y2lkLnR4X2luZm8sCiYjNDM7CQkJCQkJZGV2LSZndDttcGh5LmNoYW5kZWYuY2hhbi0mZ3Q7YmFuZCkpCiYjNDM7CQkJcmV0dXJuOwogCX0KIAotCW10NzZ4MDJfbWFjX3Byb2Nlc3NfdHhfcmF0ZSgmYW1wO2xhc3RfcmF0ZSwgc3QtJmd0O3JhdGUsCi0JCQkJICAgIGRldi0mZ3Q7bXBoeS5jaGFuZGVmLmNoYW4tJmd0O2JhbmQpOwomIzQzOwlpZiAobXQ3NngwMl9tYWNfcHJvY2Vzc190eF9yYXRlKCZhbXA7bGFzdF9yYXRlLCBzdC0mZ3Q7cmF0ZSwKJiM0MzsJCQkJCWRldi0mZ3Q7bXBoeS5jaGFuZGVmLmNoYW4tJmd0O2JhbmQpKQomIzQzOwkJcmV0dXJuOwogCiAJZm9yIChpID0gMDsgaSAmbHQ7IEFSUkFZX1NJWkUoaW5mby0mZ3Q7c3RhdHVzLnJhdGVzKTsgaSYjNDM7JiM0MzspIHsKIAkJcmV0cnktLTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDEwOjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3MzkKCQkJCQkJCW91dHB1dDogNTcKCQkJCQkJCXRob3VnaHRzOiA2MTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgV2lyZWxlc3MgRHJpdmVyIFBhdGNoIGZvciBQb3RlbnRpYWwgSXNzdWVzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciB0aGUgTWVkaWF0ZWsgTVQ3NngwMiB3aXJlbGVzcyBkcml2ZXIuIEl0IHNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQsIGFkZGluZyBib3VuZHMgY2hlY2tpbmcgdG8gdGhlIGBtdDc2eDAyX21hY19wcm9jZXNzX3R4X3JhdGVgIGZ1bmN0aW9uLiBTcGVjaWZpY2FsbHksIHRoZXkmIzM5O3JlIGd1YXJkaW5nIGFnYWluc3QgaW52YWxpZCBgaWR4YCB2YWx1ZXMsIHByZXZlbnRpbmcgaXQgZnJvbSBleGNlZWRpbmcgMzEgZm9yIEhUIFBIWSB0eXBlcyBhbmQgOSBmb3IgVkhUIFBIWSB0eXBlcy4gVGhpcyBmdW5jdGlvbiYjMzk7cyBhbHNvIGJlaW5nIGhhbmRsZWQgaW4gYG10NzZ4MDJfbWFjX2ZpbGxfdHhfc3RhdHVzYCBzbyB0aGF0IGZ1bmN0aW9uIHJldHVybnMgaWYgYW4gZXJyb3IgaXMgY2F1Z2h0LgoKVGhlIGNvbW1lbnQgY2xlYXJseSBpbmRpY2F0ZXMgdGhlIHJhdGlvbmFsZTogYSBwb3RlbnRpYWxseSBzdGFsZSBvciBjb3JydXB0IGluZGV4IHZhbHVlIGZyb20gdGhlIGhhcmR3YXJlIFRYIHN0YXR1cyBjYW4gbGVhZCB0byBhbiBvdXQtb2YtYm91bmRzIGFjY2VzcyBpbiB0aGUgbWFjODAyMTEvbWluc3RyZWxfaHQgcmF0ZSBhcnJheSwgdWx0aW1hdGVseSBjYXVzaW5nIGEgY3Jhc2guIFRoaXMgbWFrZXMgcGVyZmVjdCBzZW5zZTsgdGhvc2UgaW5kaWNlcyBhcmUgZGlyZWN0bHkgdXNlZCB0byBhY2Nlc3MgbWVtb3J5LiBUaGlzIGlzIGV4YWN0bHkgdGhlIGtpbmQgb2YgdGhpbmcgS0FTQU4gaXMgZGVzaWduZWQgdG8gY2F0Y2gg4oCTIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMuCgpOb3csIG15IGluaXRpYWwgdGhvdWdodCBpcywgdGhpcyBpcyBqdXN0IGEgYm91bmRzIGNoZWNrOyBpdCBwcmV2ZW50cyB0aGUgY3Jhc2guIEtNU0FOIGlzbiYjMzk7dCByZWFsbHkgcmVsZXZhbnQgaGVyZSwgYmVjYXVzZSBpdCBmb2N1c2VzIG9uIGRldGVjdGluZyB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgYW5kIHRoaXMgaXMgY2xlYXJseSBhYm91dCBhbiBhcnJheSBvdmVyZmxvdy4gVGhlIHBhdGNoIGFwcGVhcnMgdG8gZWxpbWluYXRlIGEgdnVsbmVyYWJpbGl0eSBkdWUgdG8gaW52YWxpZCBpbmRleCB2YWx1ZXMuCgpCdXQsIEkgbmVlZCB0byBiZSB0aG9yb3VnaC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueXRoaW5nLiBJIG5lZWQgdG8gY2hlY2sgZm9yIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzc3Vlcy4KClRoZSBmdW5jdGlvbiBgbXQ3NngwMl9tYWNfZmlsbF90eF9zdGF0dXNgIGlzIHZvaWQsIGJ1dCBpdCBwb3B1bGF0ZXMgYSBgc3RydWN0IG10NzZfdHhfc3RhdHVzICppbmZvYC4gSWYgdGhlIGZ1bmN0aW9uIHJldHVybnMgZWFybHksIGRvZXMgaXQgbGVhdmUgc29tZXRoaW5nIHVuaW5pdGlhbGl6ZWQgdGhhdCYjMzk7cyBsYXRlciB1c2VkPyBJdCYjMzk7cyBmaWxsaW5nIGEgYHN0cnVjdCBtdDc2X3R4X3N0YXR1c2AgdGhhdCB3aWxsIGJlIHVzZWQgbGF0ZXIuIExldCBtZSBjaGVjayB0aGUgY2FsbGVycyBvZiBgbXQ3NngwMl9tYWNfZmlsbF90eF9zdGF0dXNgLCBtYWtlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhbnl0aGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMTA6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3NngwMl9tYWNfZmlsbF90eF9zdGF0dXMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5jPTQ4Nz1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5jOjQ4ODptdDc2eDAyX21hY19maWxsX3R4X3N0YXR1cyhzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldiwgc3RydWN0IG10NzZ4MDJfc3RhICptc3RhLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5jLTQ4OS1cdFx0XHQgICBzdHJ1Y3QgaWVlZTgwMjExX3R4X2luZm8gKmluZm8sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5jPTU1NT12b2lkIG10NzZ4MDJfc2VuZF90eF9zdGF0dXMoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5jLTYyMi1cdFx0Y3VyX3BrdGlkID0gbXN0YS1cdTAwM2VzdGF0dXMucGt0aWQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmM6NjIzOlx0XHRtdDc2eDAyX21hY19maWxsX3R4X3N0YXR1cyhkZXYsIG1zdGEsIHN0YXR1cy5pbmZvLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5jLTYyNC1cdFx0XHRcdFx0ICAgXHUwMDI2bXN0YS1cdTAwM2VzdGF0dXMsIG1zdGEtXHUwMDNlbl9mcmFtZXMpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuYy02MzAtXHRcdGN1cl9wa3RpZCA9IHN0YXQtXHUwMDNlcGt0aWQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmM6NjMxOlx0XHRtdDc2eDAyX21hY19maWxsX3R4X3N0YXR1cyhkZXYsIG1zdGEsIHN0YXR1cy5pbmZvLCBzdGF0LCAxKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuYy02MzItXHRcdCp1cGRhdGUgPSAxO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAxMDozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MzIxCgkJCQkJCQlvdXRwdXQ6IDUyCgkJCQkJCQl0aG91Z2h0czogNDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBob3cgSSYjMzk7ZCBhcHByb2FjaCBzdW1tYXJpemluZyB0aGUgcHJvbXB0LCBnaXZlbiBteSBhc3N1bWVkIGV4cGVydGlzZToKCioqRXhhbWluaW5nIGBtdDc2eDAyX3NlbmRfdHhfc3RhdHVzYCoqCgpSaWdodCwgbGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGdvaW5nIG9uIHdpdGggYG10NzZ4MDJfc2VuZF90eF9zdGF0dXNgIHdpdGhpbiB0aGUgTWVkaWF0ZWsgTVQ3NngwMiB3aXJlbGVzcyBkcml2ZXIsIHNwZWNpZmljYWxseSBpbiBgbXQ3Ni9tdDc2eDAyX21hYy5jYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBkcml2ZXIgaGFuZGxlcyB0cmFuc21pdCBzdGF0dXMgdXBkYXRlcywgYW5kIHRoaXMgaXMgd2hlcmUgdGhhdCBmdW5jdGlvbiBsaXZlcy4gTXkgaW1tZWRpYXRlIGdvYWwgaXMgdG8gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGUgVFggc3RhdHVzIGNhbGxiYWNrcyBhcmUgcHJvY2Vzc2VkLCBob3cgdGhleSBpbnRlcmFjdCB3aXRoIHRoZSBoYXJkd2FyZSByZWdpc3RlcnMsIGFuZCBob3cgdGhlIGRyaXZlciB1bHRpbWF0ZWx5IHJlbGF5cyB0aGlzIGluZm9ybWF0aW9uIHRvIHRoZSBuZXR3b3JraW5nIHN0YWNrLiBJJiMzOTtsbCBuZWVkIHRvIGZvY3VzIG9uIHdoYXQgZXZlbnRzIGNhbiBpbnRlcnJ1cHQgdGhhdCByb3V0aW5lLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zLCBpbnRlcnJ1cHQtaGFuZGxpbmcgbnVhbmNlcywgYW5kIGFueSBpbmRpY2F0aW9ucyBvZiBob3cgdGhpcyBmdW5jdGlvbiBjb250cmlidXRlcyB0byB0aHJvdWdocHV0IGFuZCBlcnJvciBoYW5kbGluZy4gSSYjMzk7bGwgd2FudCB0byBxdWlja2x5IHNlZSBob3cgaXQgYWxpZ25zIHdpdGggdGhlIG92ZXJhbGwgTVQ3NiBhcmNoaXRlY3R1cmUsIGVzcGVjaWFsbHkgYW55IGludGVyYWN0aW9ucyB3aXRoIHRoZSBETUEgZW5naW5lIG9yIHRoZSBoYXJkd2FyZSBxdWV1ZSBtYW5hZ2VtZW50LiBMZXQmIzM5O3Mgc2VlIGlmIHRoZXJlJiMzOTtzIGFueSBjbGV2ZXJuZXNzIGluIGhvdyB0aGUgc3RhdHVzIGlzIHBhcnNlZCwgYW5kIGlmIHRoZXJlIGFyZSBhbnkgaW5kaWNhdGlvbnMgb2Ygb3B0aW1pemF0aW9ucyBvciBwb3RlbnRpYWwgYm90dGxlbmVja3Mgd2l0aGluIHRoaXMgZnVuY3Rpb24uIEkmIzM5O20gYXNzdW1pbmcgZmFtaWxpYXJpdHkgd2l0aCB0aGUgTVQ3NiBhcmNoaXRlY3R1cmUsIHNvIEkgZG9uJiMzOTt0IG5lZWQgZXhjZXNzaXZlIGhhbmQtaG9sZGluZywganVzdCB0aGUgZXNzZW5jZSBvZiB0aGUgZnVuY3Rpb24mIzM5O3MgbG9naWMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDEwOjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNTU1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNTU1Olx0dm9pZCBtdDc2eDAyX3NlbmRfdHhfc3RhdHVzKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2LFxuIDU1NjpcdFx0XHRcdCAgICBzdHJ1Y3QgbXQ3NngwMl90eF9zdGF0dXMgKnN0YXQsIHU4ICp1cGRhdGUpXG4gNTU3Olx0e1xuIDU1ODpcdFx0c3RydWN0IGllZWU4MDIxMV90eF9pbmZvIGluZm8gPSB7fTtcbiA1NTk6XHRcdHN0cnVjdCBpZWVlODAyMTFfdHhfc3RhdHVzIHN0YXR1cyA9IHtcbiA1NjA6XHRcdFx0LmluZm8gPSBcdTAwMjZpbmZvXG4gNTYxOlx0XHR9O1xuIDU2MjpcdFx0c3RhdGljIGNvbnN0IHU4IGFjX3RvX3RpZFs0XSA9IHtcbiA1NjM6XHRcdFx0W0lFRUU4MDIxMV9BQ19CRV0gPSAwLFxuIDU2NDpcdFx0XHRbSUVFRTgwMjExX0FDX0JLXSA9IDEsXG4gNTY1Olx0XHRcdFtJRUVFODAyMTFfQUNfVkldID0gNCxcbiA1NjY6XHRcdFx0W0lFRUU4MDIxMV9BQ19WT10gPSA2XG4gNTY3Olx0XHR9O1xuIDU2ODpcdFx0c3RydWN0IG10NzZfd2NpZCAqd2NpZCA9IE5VTEw7XG4gNTY5Olx0XHRzdHJ1Y3QgbXQ3NngwMl9zdGEgKm1zdGEgPSBOVUxMO1xuIDU3MDpcdFx0c3RydWN0IG10NzZfZGV2ICptZGV2ID0gXHUwMDI2ZGV2LVx1MDAzZW10NzY7XG4gNTcxOlx0XHRzdHJ1Y3Qgc2tfYnVmZl9oZWFkIGxpc3Q7XG4gNTcyOlx0XHR1MzIgZHVyYXRpb24gPSAwO1xuIDU3MzpcdFx0dTggY3VyX3BrdGlkO1xuIDU3NDpcdFx0dTMyIGFjID0gMDtcbiA1NzU6XHRcdGludCBsZW4gPSAwO1xuIDU3NjpcdFxuIDU3NzpcdFx0aWYgKHN0YXQtXHUwMDNlcGt0aWQgPT0gTVRfUEFDS0VUX0lEX05PX0FDSylcbiA1Nzg6XHRcdFx0cmV0dXJuO1xuIDU3OTpcdFxuIDU4MDpcdFx0cmN1X3JlYWRfbG9jaygpO1xuIDU4MTpcdFxuIDU4MjpcdFx0d2NpZCA9IG10NzZfd2NpZF9wdHIoZGV2LCBzdGF0LVx1MDAzZXdjaWQpO1xuIDU4MzpcdFx0aWYgKHdjaWQgXHUwMDI2XHUwMDI2IHdjaWQtXHUwMDNlc3RhKSB7XG4gNTg0Olx0XHRcdHZvaWQgKnByaXY7XG4gNTg1Olx0XG4gNTg2Olx0XHRcdHByaXYgPSBtc3RhID0gY29udGFpbmVyX29mKHdjaWQsIHN0cnVjdCBtdDc2eDAyX3N0YSwgd2NpZCk7XG4gNTg3Olx0XHRcdHN0YXR1cy5zdGEgPSBjb250YWluZXJfb2YocHJpdiwgc3RydWN0IGllZWU4MDIxMV9zdGEsXG4gNTg4Olx0XHRcdFx0XHRcdCAgZHJ2X3ByaXYpO1xuIDU4OTpcdFx0fVxuIDU5MDpcdFxuIDU5MTpcdFx0bXQ3Nl90eF9zdGF0dXNfbG9jayhtZGV2LCBcdTAwMjZsaXN0KTtcbiA1OTI6XHRcbiA1OTM6XHRcdGlmICh3Y2lkKSB7XG4gNTk0Olx0XHRcdGlmIChtdDc2X2lzX3NrYl9wa3RpZChzdGF0LVx1MDAzZXBrdGlkKSlcbiA1OTU6XHRcdFx0XHRzdGF0dXMuc2tiID0gbXQ3Nl90eF9zdGF0dXNfc2tiX2dldChtZGV2LCB3Y2lkLFxuIDU5NjpcdFx0XHRcdFx0XHRcdFx0ICAgIHN0YXQtXHUwMDNlcGt0aWQsIFx1MDAyNmxpc3QpO1xuIDU5NzpcdFx0XHRpZiAoc3RhdHVzLnNrYilcbiA1OTg6XHRcdFx0XHRzdGF0dXMuaW5mbyA9IElFRUU4MDIxMV9TS0JfQ0Ioc3RhdHVzLnNrYik7XG4gNTk5Olx0XHR9XG4gNjAwOlx0XG4gNjAxOlx0XHRpZiAoIXN0YXR1cy5za2IgXHUwMDI2XHUwMDI2ICEoc3RhdC1cdTAwM2Vwa3RpZCBcdTAwMjYgTVRfUEFDS0VUX0lEX0hBU19SQVRFKSkge1xuIDYwMjpcdFx0XHRtdDc2X3R4X3N0YXR1c191bmxvY2sobWRldiwgXHUwMDI2bGlzdCk7XG4gNjAzOlx0XHRcdGdvdG8gb3V0O1xuIDYwNDpcdFx0fVxuIDYwNTpcdFxuIDYwNjpcdFxuIDYwNzpcdFx0aWYgKG1zdGEgXHUwMDI2XHUwMDI2IHN0YXQtXHUwMDNlYWdnciBcdTAwMjZcdTAwMjYgIXN0YXR1cy5za2IpIHtcbiA2MDg6XHRcdFx0dTMyIHN0YXRfdmFsLCBzdGF0X2NhY2hlO1xuIDYwOTpcdFxuIDYxMDpcdFx0XHRzdGF0X3ZhbCA9IHN0YXQtXHUwMDNlcmF0ZTtcbiA2MTE6XHRcdFx0c3RhdF92YWwgfD0gKCh1MzIpc3RhdC1cdTAwM2VyZXRyeSkgXHUwMDNjXHUwMDNjIDE2O1xuIDYxMjpcdFx0XHRzdGF0X2NhY2hlID0gbXN0YS1cdTAwM2VzdGF0dXMucmF0ZTtcbiA2MTM6XHRcdFx0c3RhdF9jYWNoZSB8PSAoKHUzMiltc3RhLVx1MDAzZXN0YXR1cy5yZXRyeSkgXHUwMDNjXHUwMDNjIDE2O1xuIDYxNDpcdFxuIDYxNTpcdFx0XHRpZiAoKnVwZGF0ZSA9PSAwIFx1MDAyNlx1MDAyNiBzdGF0X3ZhbCA9PSBzdGF0X2NhY2hlIFx1MDAyNlx1MDAyNlxuIDYxNjpcdFx0XHQgICAgc3RhdC1cdTAwM2V3Y2lkID09IG1zdGEtXHUwMDNlc3RhdHVzLndjaWQgXHUwMDI2XHUwMDI2IG1zdGEtXHUwMDNlbl9mcmFtZXMgXHUwMDNjIDMyKSB7XG4gNjE3Olx0XHRcdFx0bXN0YS1cdTAwM2VuX2ZyYW1lcyYjNDM7JiM0Mzs7XG4gNjE4Olx0XHRcdFx0bXQ3Nl90eF9zdGF0dXNfdW5sb2NrKG1kZXYsIFx1MDAyNmxpc3QpO1xuIDYxOTpcdFx0XHRcdGdvdG8gb3V0O1xuIDYyMDpcdFx0XHR9XG4gNjIxOlx0XG4gNjIyOlx0XHRcdGN1cl9wa3RpZCA9IG1zdGEtXHUwMDNlc3RhdHVzLnBrdGlkO1xuIDYyMzpcdFx0XHRtdDc2eDAyX21hY19maWxsX3R4X3N0YXR1cyhkZXYsIG1zdGEsIHN0YXR1cy5pbmZvLFxuIDYyNDpcdFx0XHRcdFx0XHQgICBcdTAwMjZtc3RhLVx1MDAzZXN0YXR1cywgbXN0YS1cdTAwM2VuX2ZyYW1lcyk7XG4gNjI1Olx0XG4gNjI2Olx0XHRcdG1zdGEtXHUwMDNlc3RhdHVzID0gKnN0YXQ7XG4gNjI3Olx0XHRcdG1zdGEtXHUwMDNlbl9mcmFtZXMgPSAxO1xuIDYyODpcdFx0XHQqdXBkYXRlID0gMDtcbiA2Mjk6XHRcdH0gZWxzZSB7XG4gNjMwOlx0XHRcdGN1cl9wa3RpZCA9IHN0YXQtXHUwMDNlcGt0aWQ7XG4gNjMxOlx0XHRcdG10NzZ4MDJfbWFjX2ZpbGxfdHhfc3RhdHVzKGRldiwgbXN0YSwgc3RhdHVzLmluZm8sIHN0YXQsIDEpO1xuIDYzMjpcdFx0XHQqdXBkYXRlID0gMTtcbiA2MzM6XHRcdH1cbiA2MzQ6XHRcbiA2MzU6XHRcdGlmIChzdGF0dXMuc2tiKSB7XG4gNjM2Olx0XHRcdGluZm8gPSAqc3RhdHVzLmluZm87XG4gNjM3Olx0XHRcdGxlbiA9IHN0YXR1cy5za2ItXHUwMDNlbGVuO1xuIDYzODpcdFx0XHRhYyA9IHNrYl9nZXRfcXVldWVfbWFwcGluZyhzdGF0dXMuc2tiKTtcbiA2Mzk6XHRcdFx0bXQ3Nl90eF9zdGF0dXNfc2tiX2RvbmUobWRldiwgc3RhdHVzLnNrYiwgXHUwMDI2bGlzdCk7XG4gNjQwOlx0XHR9IGVsc2UgaWYgKG1zdGEpIHtcbiA2NDE6XHRcdFx0bGVuID0gc3RhdHVzLmluZm8tXHUwMDNlc3RhdHVzLmFtcGR1X2xlbiAqIGV3bWFfcGt0bGVuX3JlYWQoXHUwMDI2bXN0YS1cdTAwM2Vwa3RsZW4pO1xuIDY0MjpcdFx0XHRhYyA9IEZJRUxEX0dFVChNVF9QS1RJRF9BQywgY3VyX3BrdGlkKTtcbiA2NDM6XHRcdH1cbiA2NDQ6XHRcbiA2NDU6XHRcdG10NzZfdHhfc3RhdHVzX3VubG9jayhtZGV2LCBcdTAwMjZsaXN0KTtcbiA2NDY6XHRcbiA2NDc6XHRcdGlmICghc3RhdHVzLnNrYikge1xuIDY0ODpcdFx0XHRzcGluX2xvY2tfYmgoXHUwMDI2ZGV2LVx1MDAzZW10NzYucnhfbG9jayk7XG4gNjQ5Olx0XHRcdGllZWU4MDIxMV90eF9zdGF0dXNfZXh0KG10NzZfaHcoZGV2KSwgXHUwMDI2c3RhdHVzKTtcbiA2NTA6XHRcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2ZGV2LVx1MDAzZW10NzYucnhfbG9jayk7XG4gNjUxOlx0XHR9XG4gNjUyOlx0XG4gNjUzOlx0XHRpZiAoIWxlbilcbiA2NTQ6XHRcdFx0Z290byBvdXQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDEwOjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY0MjMKCQkJCQkJCW91dHB1dDogNTIKCQkJCQkJCXRob3VnaHRzOiA0MzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIE1lbW9yeSBJc3N1ZSBpbiB0aGUgTVQ3NiBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBjb2RlIGFuZCBJJiMzOTttIGxvb2tpbmcgYXQgYSBwb3RlbnRpYWwgc2NlbmFyaW8gaW52b2x2aW5nIGBtdDc2eDAyX21hY19maWxsX3R4X3N0YXR1c2AuIFRoZSBpbml0aWFsIHRob3VnaHQgd2FzIHRoYXQgaWYgdGhpcyBmdW5jdGlvbiByZXR1cm5zIGVhcmx5LCBgc3RhdHVzLmluZm9gIG1pZ2h0IG5vdCBiZSBmdWxseSBwb3B1bGF0ZWQuIFNwZWNpZmljYWxseSwgYHN0YXR1cy5pbmZvYCBlaXRoZXIgcG9pbnRzIHRvIGEgemVyby1pbml0aWFsaXplZCBgaW5mb2Agc3RydWN0IChpZiBgc3RhdHVzLnNrYmAgaXMgTlVMTCkgb3IgdG8gYElFRUU4MDIxMV9TS0JfQ0Ioc3RhdHVzLnNrYilgIChpZiBgc3RhdHVzLnNrYmAgaXMgbm90IE5VTEwpLgoKQnV0IHdhaXQsIGBpbmZvYCBpcyAqZXhwbGljaXRseSogaW5pdGlhbGl6ZWQgdG8gemVybywgd2hpY2ggaXMgZ29vZC4gU28sIGlmIGBzdGF0dXMuc2tiYCBpcyBOVUxMLCB0aGVuIGBzdGF0dXMuaW5mb2Agd2lsbCBiZSB0aGUgemVybyBpbml0aWFsaXplZCBpbmZvLiBBbmQgaWYgYHN0YXR1cy5za2JgIGlzbiYjMzk7dCBOVUxMLCB0aGVuIGBzdGF0dXMuaW5mb2AgcG9pbnRzIHRvIHRoZSBjb250cm9sIGJsb2NrIG9mIHRoZSBTS0IsIHdoaWNoIGlzIGFzc3VtZWQgdG8gYmUgaW5pdGlhbGl6ZWQgd2hlbiB0aGUgc2tiIHdhcyBjcmVhdGVkLiBUaGVuIGBpZWVlODAyMTFfdHhfc3RhdHVzX2V4dGAgZ2V0cyBjYWxsZWQuIE5vdywgSSBoYXZlIHRvIGVuc3VyZSB0aGF0IGlmIGBtdDc2eDAyX21hY19maWxsX3R4X3N0YXR1c2AgZG9lcyBiYWlsIG91dCBlYXJseSwgaXQgZG9lc24mIzM5O3QgbGVhdmUgc29tZXRoaW5nIHVuaW5pdGlhbGl6ZWQuCgpUaGUgY29uY2VybiB3YXMgcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCBtZW1vcnkgYmVpbmcgcmVhZC4gQnV0LCBnaXZlbiB0aGF0IGBpbmZvYCBpcyB6ZXJvZWQsIGFuZCB0aGUgYElFRUU4MDIxMV9TS0JfQ0JgIGlzIGFzc3VtZWQgdG8gYmUgaW5pdGlhbGl6ZWQuIFRoZXJlIGlzIG5vdCBhbiB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZSBpbiB0aGUgY29kZSBhcyBkZXNjcmliZWQuCgpUaGUgcmVhbCBwcm9ibGVtLCB0aG91Z2gsIGFwcGVhcnMgdG8gYmUgYW4gb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3MsIHdoaWNoIGlzIHNvbWV0aGluZyBJJiMzOTttIHZlcnkgZmFtaWxpYXIgd2l0aC4gSXQmIzM5O3MgaGFwcGVuaW5nIGluIGBtYWM4MDIxMS9taW5zdHJlbF9odGAsIHNwZWNpZmljYWxseSBiZWNhdXNlIG9mIGFuIGludmFsaWQgYGlkeGAgdmFsdWUuIFRoZSBjb21tZW50IGV2ZW4gY29uZmlybXMgaXQsIG1lbnRpb25pbmcgdGhhdCB0aGUgJiMzNDtSYXcgaGFyZHdhcmUgVFgtc3RhdHVzIGluZGV4IGlzIHVudmFsaWRhdGVkOyBhIHN0YWxlIG9yIGNvcnJ1cHQgdmFsdWUgaGVyZSBvdmVyZmxvd3MgbWFjODAyMTEvbWluc3RyZWxfaHQmIzM5O3MgcGVyLWdyb3VwIHJhdGUgYXJyYXkmIzM0Oy4gVGhpcyBpcyBhIHRleHRib29rIGV4YW1wbGUgb2YgYSBidWZmZXIgb3ZlcmZsb3csIGFuZCBLQVNBTiBzaG91bGQgaGF2ZSBubyBwcm9ibGVtIGNhdGNoaW5nIHRoaXMuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgbXQ3NngwMl9tYWNfZmlsbF90eF9zdGF0dXNgIGl0c2VsZiB0byBzZWUgaWYgdGhlIHJvb3QgY2F1c2UgY2FuIGJlIHVuY292ZXJlZC4gQnV0IHRoZSBjb3JlIGlzc3VlIGlzIGNsZWFybHkgdGhlIGFycmF5IGFjY2Vzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMTA6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0ODcsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA0ODc6XHRzdGF0aWMgdm9pZFxuIDQ4ODpcdG10NzZ4MDJfbWFjX2ZpbGxfdHhfc3RhdHVzKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2LCBzdHJ1Y3QgbXQ3NngwMl9zdGEgKm1zdGEsXG4gNDg5Olx0XHRcdFx0ICAgc3RydWN0IGllZWU4MDIxMV90eF9pbmZvICppbmZvLFxuIDQ5MDpcdFx0XHRcdCAgIHN0cnVjdCBtdDc2eDAyX3R4X3N0YXR1cyAqc3QsIGludCBuX2ZyYW1lcylcbiA0OTE6XHR7XG4gNDkyOlx0XHRzdHJ1Y3QgaWVlZTgwMjExX3R4X3JhdGUgKnJhdGUgPSBpbmZvLVx1MDAzZXN0YXR1cy5yYXRlcztcbiA0OTM6XHRcdHN0cnVjdCBpZWVlODAyMTFfdHhfcmF0ZSBsYXN0X3JhdGU7XG4gNDk0Olx0XHR1MTYgZmlyc3RfcmF0ZTtcbiA0OTU6XHRcdGludCByZXRyeSA9IHN0LVx1MDAzZXJldHJ5O1xuIDQ5NjpcdFx0aW50IHBoeTtcbiA0OTc6XHRcdGludCBpO1xuIDQ5ODpcdFxuIDQ5OTpcdFx0aWYgKCFuX2ZyYW1lcylcbiA1MDA6XHRcdFx0cmV0dXJuO1xuIDUwMTpcdFxuIDUwMjpcdFx0cGh5ID0gRklFTERfR0VUKE1UX1JYV0lfUkFURV9QSFksIHN0LVx1MDAzZXJhdGUpO1xuIDUwMzpcdFxuIDUwNDpcdFx0aWYgKHN0LVx1MDAzZXBrdGlkIFx1MDAyNiBNVF9QQUNLRVRfSURfSEFTX1JBVEUpIHtcbiA1MDU6XHRcdFx0Zmlyc3RfcmF0ZSA9IHN0LVx1MDAzZXJhdGUgXHUwMDI2IH5NVF9QS1RJRF9SQVRFO1xuIDUwNjpcdFx0XHRmaXJzdF9yYXRlIHw9IHN0LVx1MDAzZXBrdGlkIFx1MDAyNiBNVF9QS1RJRF9SQVRFO1xuIDUwNzpcdFxuIDUwODpcdFx0XHRpZiAobXQ3NngwMl9tYWNfcHJvY2Vzc190eF9yYXRlKFx1MDAyNnJhdGVbMF0sIGZpcnN0X3JhdGUsXG4gNTA5Olx0XHRcdFx0XHRcdFx0ZGV2LVx1MDAzZW1waHkuY2hhbmRlZi5jaGFuLVx1MDAzZWJhbmQpKVxuIDUxMDpcdFx0XHRcdHJldHVybjtcbiA1MTE6XHRcdH0gZWxzZSBpZiAocmF0ZVswXS5pZHggXHUwMDNjIDApIHtcbiA1MTI6XHRcdFx0aWYgKCFtc3RhKVxuIDUxMzpcdFx0XHRcdHJldHVybjtcbiA1MTQ6XHRcbiA1MTU6XHRcdFx0aWYgKG10NzZ4MDJfbWFjX3Byb2Nlc3NfdHhfcmF0ZShcdTAwMjZyYXRlWzBdLCBtc3RhLVx1MDAzZXdjaWQudHhfaW5mbyxcbiA1MTY6XHRcdFx0XHRcdFx0XHRkZXYtXHUwMDNlbXBoeS5jaGFuZGVmLmNoYW4tXHUwMDNlYmFuZCkpXG4gNTE3Olx0XHRcdFx0cmV0dXJuO1xuIDUxODpcdFx0fVxuIDUxOTpcdFxuIDUyMDpcdFx0aWYgKG10NzZ4MDJfbWFjX3Byb2Nlc3NfdHhfcmF0ZShcdTAwMjZsYXN0X3JhdGUsIHN0LVx1MDAzZXJhdGUsXG4gNTIxOlx0XHRcdFx0XHRcdGRldi1cdTAwM2VtcGh5LmNoYW5kZWYuY2hhbi1cdTAwM2ViYW5kKSlcbiA1MjI6XHRcdFx0cmV0dXJuO1xuIDUyMzpcdFxuIDUyNDpcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShpbmZvLVx1MDAzZXN0YXR1cy5yYXRlcyk7IGkmIzQzOyYjNDM7KSB7XG4gNTI1Olx0XHRcdHJldHJ5LS07XG4gNTI2Olx0XHRcdGlmIChpICYjNDM7IDEgPT0gQVJSQVlfU0laRShpbmZvLVx1MDAzZXN0YXR1cy5yYXRlcykpIHtcbiA1Mjc6XHRcdFx0XHRpbmZvLVx1MDAzZXN0YXR1cy5yYXRlc1tpXSA9IGxhc3RfcmF0ZTtcbiA1Mjg6XHRcdFx0XHRpbmZvLVx1MDAzZXN0YXR1cy5yYXRlc1tpXS5jb3VudCA9IG1heF90KGludCwgcmV0cnksIDEpO1xuIDUyOTpcdFx0XHRcdGJyZWFrO1xuIDUzMDpcdFx0XHR9XG4gNTMxOlx0XG4gNTMyOlx0XHRcdG10NzZ4MDJfdHhfcmF0ZV9mYWxsYmFjayhpbmZvLVx1MDAzZXN0YXR1cy5yYXRlcywgaSwgcGh5KTtcbiA1MzM6XHRcdFx0aWYgKGluZm8tXHUwMDNlc3RhdHVzLnJhdGVzW2ldLmlkeCA9PSBsYXN0X3JhdGUuaWR4KVxuIDUzNDpcdFx0XHRcdGJyZWFrO1xuIDUzNTpcdFx0fVxuIDUzNjpcdFxuIDUzNzpcdFx0aWYgKGkgJiM0MzsgMSBcdTAwM2MgQVJSQVlfU0laRShpbmZvLVx1MDAzZXN0YXR1cy5yYXRlcykpIHtcbiA1Mzg6XHRcdFx0aW5mby1cdTAwM2VzdGF0dXMucmF0ZXNbaSAmIzQzOyAxXS5pZHggPSAtMTtcbiA1Mzk6XHRcdFx0aW5mby1cdTAwM2VzdGF0dXMucmF0ZXNbaSAmIzQzOyAxXS5jb3VudCA9IDA7XG4gNTQwOlx0XHR9XG4gNTQxOlx0XG4gNTQyOlx0XHRpbmZvLVx1MDAzZXN0YXR1cy5hbXBkdV9sZW4gPSBuX2ZyYW1lcztcbiA1NDM6XHRcdGluZm8tXHUwMDNlc3RhdHVzLmFtcGR1X2Fja19sZW4gPSBzdC1cdTAwM2VzdWNjZXNzID8gbl9mcmFtZXMgOiAwO1xuIDU0NDpcdFxuIDU0NTpcdFx0aWYgKHN0LVx1MDAzZWFnZ3IpXG4gNTQ2Olx0XHRcdGluZm8tXHUwMDNlZmxhZ3MgfD0gSUVFRTgwMjExX1RYX0NUTF9BTVBEVSB8XG4gNTQ3Olx0XHRcdFx0ICAgICAgIElFRUU4MDIxMV9UWF9TVEFUX0FNUERVO1xuIDU0ODpcdFxuIDU0OTpcdFx0aWYgKCFzdC1cdTAwM2VhY2tfcmVxKVxuIDU1MDpcdFx0XHRpbmZvLVx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9UWF9DVExfTk9fQUNLO1xuIDU1MTpcdFx0ZWxzZSBpZiAoc3QtXHUwMDNlc3VjY2VzcylcbiA1NTI6XHRcdFx0aW5mby1cdTAwM2VmbGFncyB8PSBJRUVFODAyMTFfVFhfU1RBVF9BQ0s7XG4gNTUzOlx0fVxuIDU1NDpcdFxuIDU1NTpcdHZvaWQgbXQ3NngwMl9zZW5kX3R4X3N0YXR1cyhzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldixcbiA1NTY6XHRcdFx0XHQgICAgc3RydWN0IG10NzZ4MDJfdHhfc3RhdHVzICpzdGF0LCB1OCAqdXBkYXRlKVxuIDU1NzpcdHtcbiA1NTg6XHRcdHN0cnVjdCBpZWVlODAyMTFfdHhfaW5mbyBpbmZvID0ge307XG4gNTU5Olx0XHRzdHJ1Y3QgaWVlZTgwMjExX3R4X3N0YXR1cyBzdGF0dXMgPSB7XG4gNTYwOlx0XHRcdC5pbmZvID0gXHUwMDI2aW5mb1xuIDU2MTpcdFx0fTtcbiA1NjI6XHRcdHN0YXRpYyBjb25zdCB1OCBhY190b190aWRbNF0gPSB7XG4gNTYzOlx0XHRcdFtJRUVFODAyMTFfQUNfQkVdID0gMCxcbiA1NjQ6XHRcdFx0W0lFRUU4MDIxMV9BQ19CS10gPSAxLFxuIDU2NTpcdFx0XHRbSUVFRTgwMjExX0FDX1ZJXSA9IDQsXG4gNTY2Olx0XHRcdFtJRUVFODAyMTFfQUNfVk9dID0gNlxuIDU2NzpcdFx0fTtcbiA1Njg6XHRcdHN0cnVjdCBtdDc2X3djaWQgKndjaWQgPSBOVUxMO1xuIDU2OTpcdFx0c3RydWN0IG10NzZ4MDJfc3RhICptc3RhID0gTlVMTDtcbiA1NzA6XHRcdHN0cnVjdCBtdDc2X2RldiAqbWRldiA9IFx1MDAyNmRldi1cdTAwM2VtdDc2O1xuIDU3MTpcdFx0c3RydWN0IHNrX2J1ZmZfaGVhZCBsaXN0O1xuIDU3MjpcdFx0dTMyIGR1cmF0aW9uID0gMDtcbiA1NzM6XHRcdHU4IGN1cl9wa3RpZDtcbiA1NzQ6XHRcdHUzMiBhYyA9IDA7XG4gNTc1Olx0XHRpbnQgbGVuID0gMDtcbiA1NzY6XHRcbiA1Nzc6XHRcdGlmIChzdGF0LVx1MDAzZXBrdGlkID09IE1UX1BBQ0tFVF9JRF9OT19BQ0spXG4gNTc4Olx0XHRcdHJldHVybjtcbiA1Nzk6XHRcbiA1ODA6XHRcdHJjdV9yZWFkX2xvY2soKTtcbiA1ODE6XHRcbiA1ODI6XHRcdHdjaWQgPSBtdDc2X3djaWRfcHRyKGRldiwgc3RhdC1cdTAwM2V3Y2lkKTtcbiA1ODM6XHRcdGlmICh3Y2lkIFx1MDAyNlx1MDAyNiB3Y2lkLVx1MDAzZXN0YSkge1xuIDU4NDpcdFx0XHR2b2lkICpwcml2O1xuIDU4NTpcdFxuIDU4NjpcdFx0XHRwcml2ID0gbXN0YSA9IGNvbnRhaW5lcl9vZih3Y2lkLCBzdHJ1Y3QgbXQ3NngwMl9zdGEsIHdjaWQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAxMDozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MTI1CgkJCQkJCQlvdXRwdXQ6IDExMQoJCQkJCQkJdGhvdWdodHM6IDI2NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBUWCBTdGF0dXMgSXNzdWUqKgoKT2theSwgc28gaGVyZSYjMzk7cyB0aGUgZGVhbC4gSXQgbG9va3MgbGlrZSB3ZSBoYXZlIGEgcG90ZW50aWFsIHByb2JsZW0gd2l0aCB0aGUgYG10NzZ4MDJfbWFjX2ZpbGxfdHhfc3RhdHVzYCBmdW5jdGlvbi4gSXQgc2VlbXMgdGhhdCBpZiB0aGlzIGZ1bmN0aW9uIGJhaWxzIG91dCBlYXJseSwgdGhlIGBpbmZvYCBzdHJ1Y3R1cmUgbWlnaHQgbm90IGJlIGZ1bGx5IHBvcHVsYXRlZC4gSG93ZXZlciwgYGluZm9gICppcyogemVyby1pbml0aWFsaXplZCBpbiBgbXQ3NngwMl9zZW5kX3R4X3N0YXR1c2AsIHNvIHRoYXTigJlzIGEgbWl0aWdhdGluZyBmYWN0b3IuIEFuZCwgaWYgYHN0YXR1cy5za2JgIGlzbiYjMzk7dCBOVUxMLCB0aGVuIGBpbmZvYCBnZXRzIGl0cyBkYXRhIGZyb20gYElFRUU4MDIxMV9TS0JfQ0Ioc3RhdHVzLnNrYilgLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzLCAmIzM0O0lzIHRoZXJlIGFuIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWQgbHVya2luZyBpbiBoZXJlIHNvbWV3aGVyZT8mIzM0OwoKQnV0IGFmdGVyIGEgY2xvc2VyIGxvb2ssIG5vLCB0aGF0JiMzOTtzIG5vdCBpdC4gVGhlIHJvb3QgY2F1c2UgaXMgYSBjbGFzc2ljIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzLCB0cmlnZ2VyZWQgYnkgYSBjb3JydXB0ZWQgb3Igc3RhbGUgaGFyZHdhcmUgVFgtc3RhdHVzIGluZGV4LiBUaGUgZXhpc3RpbmcgY29kZSBpc24mIzM5O3QgdmFsaWRhdGluZyB0aGlzIGluZGV4LCBhbmQgdGhhdCYjMzk7cyB0aGUgdnVsbmVyYWJpbGl0eS4gVGhlIHByb3Bvc2VkIHBhdGNoIGFkZHJlc3NlcyB0aGlzIGJ5IGFkZGluZyBib3VuZHMgY2hlY2tpbmcsIHByZXZlbnRpbmcgdGhpcyBPT0IgYWNjZXNzIGZyb20gaGFwcGVuaW5nIGluIHRoZSBmaXJzdCBwbGFjZS4KCkdpdmVuIHRoZSBuYXR1cmUgb2YgdGhlIGJ1ZywgSSBzZWUgbm8gcmVhc29uIHRvIGJlbGlldmUgS01TQU4gaXMgbmVlZGVkIGhlcmUuIFRoZSBwcm9ibGVtIGlzIGEgc2ltcGxlIGFycmF5IGJvdW5kcyB2aW9sYXRpb24uIEtBU0FOIGlzIHBlcmZlY3RseSBjYXBhYmxlIG9mIGNhdGNoaW5nIHRoYXQgdHlwZSBvZiBlcnJvci4gV2UgYXJlIG5vdCBkZWFsaW5nIHdpdGggdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgYW55IGluZm8gbGVha3MgaGVyZS4gVGhlIGZpeCBpcyBhIGNsZWFuIGJvdW5kcyBjaGVjaywgYW5kIHRoYXTigJlzIHByZWNpc2VseSB3aGF0IEtBU0FOIGV4Y2VscyBhdCBkZXRlY3RpbmcuIFRoaXMgaXMgYSBzdHJhaWdodGZvcndhcmQgS0FTQU4gaXNzdWUuIFNvLCBJJiMzOTttIGNvbmZpZGVudCB3ZSBjYW4gcHJvY2VlZCB3aXRob3V0IHRoZSBjb21wbGV4aXR5IG9mIEtNU0FOLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAxMDozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2VzcyBidWcgY2F1c2VkIGJ5IGFuIHVudmFsaWRhdGVkIGhhcmR3YXJlIFRYLXN0YXR1cyBpbmRleCBvdmVyZmxvd2luZyB0aGUgbWFjODAyMTEvbWluc3RyZWxfaHQgcGVyLWdyb3VwIHJhdGUgYXJyYXkuIE91dC1vZi1ib3VuZHMgYWNjZXNzZXMgYXJlIHJlbGlhYmx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIG1vZGlmeSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIGluZm8tbGVha3MsIG9yIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTiB0byBkZXRlY3QuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2VzcyBidWcgY2F1c2VkIGJ5IGFuIHVudmFsaWRhdGVkIGhhcmR3YXJlIFRYLXN0YXR1cyBpbmRleCBvdmVyZmxvd2luZyB0aGUgbWFjODAyMTEvbWluc3RyZWxfaHQgcGVyLWdyb3VwIHJhdGUgYXJyYXkuIE91dC1vZi1ib3VuZHMgYWNjZXNzZXMgYXJlIHJlbGlhYmx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIG1vZGlmeSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIGluZm8tbGVha3MsIG9yIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTiB0byBkZXRlY3QuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDEwOjIxOjEzLjEwNzMxMjM2N1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMTYxMzE0NzEyNjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTVQ3NngwVVwiLFxuICAgIFwiTVQ3NngyVVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm10NzZ4MDJfc2VuZF90eF9zdGF0dXNcIixcbiAgICBcIm10NzZ4MDJfdHhfc3RhdHVzX2RhdGFcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzIGJ1ZyBjYXVzZWQgYnkgYW4gdW52YWxpZGF0ZWQgaGFyZHdhcmUgVFgtc3RhdHVzIGluZGV4IG92ZXJmbG93aW5nIHRoZSBtYWM4MDIxMS9taW5zdHJlbF9odCBwZXItZ3JvdXAgcmF0ZSBhcnJheS4gT3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBhcmUgcmVsaWFibHkgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgbW9kaWZ5IGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgaW5mby1sZWFrcywgb3IgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOIHRvIGRldGVjdC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyB0byBgbXQ3NngwMl9tYWNfcHJvY2Vzc190eF9yYXRlYCB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzIGluIG1hYzgwMjExL21pbnN0cmVsX2h0LiBUaGlzIGlzIHJlYWNoYWJsZSB2aWEgVVNCIGZ1enppbmcgb2YgdGhlIG1lZGlhdGVrIG10NzZ4MHUgYW5kIG10NzZ4MnUgZHJpdmVycy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMTA6MjE6MTMuMTA3MzE5NTE3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTIzMjQ1NzY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMTFjNmY4NWIwZGE1YmY5NDcwZjU5NGQ5ZTkwZjk3MGJjZWNjMzUyOFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEF1ZyAyNiAxMDoyMToxMSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmNcXG5pbmRleCAxNGVlNWIzYjk0ZDMxLi5kNzczNTZhMmVjODAzIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuY1xcbkBAIC0zMDIsMTAgKzMwMiwyMiBAQCBtdDc2eDAyX21hY19wcm9jZXNzX3R4X3JhdGUoc3RydWN0IGllZWU4MDIxMV90eF9yYXRlICp0eHJhdGUsIHUxNiByYXRlLFxcbiBcXHRcXHR0eHJhdGUtXFx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9UWF9SQ19HUkVFTl9GSUVMRDtcXG4gXFx0XFx0ZmFsbHRocm91Z2g7XFxuIFxcdGNhc2UgTVRfUEhZX1RZUEVfSFQ6XFxuK1xcdFxcdC8qIFJhdyBoYXJkd2FyZSBUWC1zdGF0dXMgaW5kZXggaXMgdW52YWxpZGF0ZWQ7IGEgc3RhbGUgb3JcXG4rXFx0XFx0ICogY29ycnVwdCB2YWx1ZSBoZXJlIG92ZXJmbG93cyBtYWM4MDIxMS9taW5zdHJlbF9odCdzXFxuK1xcdFxcdCAqIHBlci1ncm91cCByYXRlIGFycmF5IChNQ1NfR1JPVVBfUkFURVMgPT0gMTApIGFuZCBjcmFzaGVzLlxcbitcXHRcXHQgKiBWYWxpZCA4MDIuMTFuIE1DUyBpbmRpY2VzIGFyZSAwLTMxIChmb3VyIHN0cmVhbXMgeCA4KS5cXG4rXFx0XFx0ICovXFxuK1xcdFxcdGlmIChpZHggXFx1MDAzZSAzMSlcXG4rXFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcdFxcdHR4cmF0ZS1cXHUwMDNlZmxhZ3MgfD0gSUVFRTgwMjExX1RYX1JDX01DUztcXG4gXFx0XFx0dHhyYXRlLVxcdTAwM2VpZHggPSBpZHg7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIE1UX1BIWV9UWVBFX1ZIVDpcXG4rXFx0XFx0LyogU2FtZSBvdmVyZmxvdyByaXNrIGZvciBWSFQ6IG1hYzgwMjExIGV4cGVjdHMgdGhlIE1DU1xcbitcXHRcXHQgKiBuaWJibGUgKGJpdHMgMzowKSBpbiByYW5nZSAwLTksIG5zcyBwYWNrZWQgYWJvdmUgaXQuXFxuK1xcdFxcdCAqL1xcbitcXHRcXHRpZiAoKGlkeCBcXHUwMDI2IDB4ZikgXFx1MDAzZSA5KVxcbitcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFx0XFx0dHhyYXRlLVxcdTAwM2VmbGFncyB8PSBJRUVFODAyMTFfVFhfUkNfVkhUX01DUztcXG4gXFx0XFx0dHhyYXRlLVxcdTAwM2VpZHggPSBpZHg7XFxuIFxcdFxcdGJyZWFrO1xcbkBAIC00OTMsMTggKzUwNSwyMSBAQCBtdDc2eDAyX21hY19maWxsX3R4X3N0YXR1cyhzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldiwgc3RydWN0IG10NzZ4MDJfc3RhICptc3RhLFxcbiBcXHRcXHRmaXJzdF9yYXRlID0gc3QtXFx1MDAzZXJhdGUgXFx1MDAyNiB+TVRfUEtUSURfUkFURTtcXG4gXFx0XFx0Zmlyc3RfcmF0ZSB8PSBzdC1cXHUwMDNlcGt0aWQgXFx1MDAyNiBNVF9QS1RJRF9SQVRFO1xcbiBcXG4tXFx0XFx0bXQ3NngwMl9tYWNfcHJvY2Vzc190eF9yYXRlKFxcdTAwMjZyYXRlWzBdLCBmaXJzdF9yYXRlLFxcbi1cXHRcXHRcXHRcXHRcXHQgICAgZGV2LVxcdTAwM2VtcGh5LmNoYW5kZWYuY2hhbi1cXHUwMDNlYmFuZCk7XFxuK1xcdFxcdGlmIChtdDc2eDAyX21hY19wcm9jZXNzX3R4X3JhdGUoXFx1MDAyNnJhdGVbMF0sIGZpcnN0X3JhdGUsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdGRldi1cXHUwMDNlbXBoeS5jaGFuZGVmLmNoYW4tXFx1MDAzZWJhbmQpKVxcbitcXHRcXHRcXHRyZXR1cm47XFxuIFxcdH0gZWxzZSBpZiAocmF0ZVswXS5pZHggXFx1MDAzYyAwKSB7XFxuIFxcdFxcdGlmICghbXN0YSlcXG4gXFx0XFx0XFx0cmV0dXJuO1xcbiBcXG4tXFx0XFx0bXQ3NngwMl9tYWNfcHJvY2Vzc190eF9yYXRlKFxcdTAwMjZyYXRlWzBdLCBtc3RhLVxcdTAwM2V3Y2lkLnR4X2luZm8sXFxuLVxcdFxcdFxcdFxcdFxcdCAgICBkZXYtXFx1MDAzZW1waHkuY2hhbmRlZi5jaGFuLVxcdTAwM2ViYW5kKTtcXG4rXFx0XFx0aWYgKG10NzZ4MDJfbWFjX3Byb2Nlc3NfdHhfcmF0ZShcXHUwMDI2cmF0ZVswXSwgbXN0YS1cXHUwMDNld2NpZC50eF9pbmZvLFxcbitcXHRcXHRcXHRcXHRcXHRcXHRkZXYtXFx1MDAzZW1waHkuY2hhbmRlZi5jaGFuLVxcdTAwM2ViYW5kKSlcXG4rXFx0XFx0XFx0cmV0dXJuO1xcbiBcXHR9XFxuIFxcbi1cXHRtdDc2eDAyX21hY19wcm9jZXNzX3R4X3JhdGUoXFx1MDAyNmxhc3RfcmF0ZSwgc3QtXFx1MDAzZXJhdGUsXFxuLVxcdFxcdFxcdFxcdCAgICBkZXYtXFx1MDAzZW1waHkuY2hhbmRlZi5jaGFuLVxcdTAwM2ViYW5kKTtcXG4rXFx0aWYgKG10NzZ4MDJfbWFjX3Byb2Nlc3NfdHhfcmF0ZShcXHUwMDI2bGFzdF9yYXRlLCBzdC1cXHUwMDNlcmF0ZSxcXG4rXFx0XFx0XFx0XFx0XFx0ZGV2LVxcdTAwM2VtcGh5LmNoYW5kZWYuY2hhbi1cXHUwMDNlYmFuZCkpXFxuK1xcdFxcdHJldHVybjtcXG4gXFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBUlJBWV9TSVpFKGluZm8tXFx1MDAzZXN0YXR1cy5yYXRlcyk7IGkrKykge1xcbiBcXHRcXHRyZXRyeS0tO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQxMDoyMToxNC42MzEwNzQ0ODNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxMDg3Nzg3NzczNTk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1UNzZ4MFVcIixcbiAgICBcIk1UNzZ4MlVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtdDc2eDAyX3NlbmRfdHhfc3RhdHVzXCIsXG4gICAgXCJtdDc2eDAyX3R4X3N0YXR1c19kYXRhXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgdG8gYG10NzZ4MDJfbWFjX3Byb2Nlc3NfdHhfcmF0ZWAgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2VzcyBpbiBtYWM4MDIxMS9taW5zdHJlbF9odC4gVGhpcyBpcyByZWFjaGFibGUgdmlhIFVTQiBmdXp6aW5nIG9mIHRoZSBtZWRpYXRlayBtdDc2eDB1IGFuZCBtdDc2eDJ1IGRyaXZlcnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDExYzZmODViMGRhNWJmOTQ3MGY1OTRkOWU5MGY5NzBiY2VjYzM1MjhcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyAyNiAxMDoyMToxMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuY1xuaW5kZXggMTRlZTViM2I5NGQzMS4uZDc3MzU2YTJlYzgwMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5jXG5AQCAtMzAyLDEwICszMDIsMjIgQEAgbXQ3NngwMl9tYWNfcHJvY2Vzc190eF9yYXRlKHN0cnVjdCBpZWVlODAyMTFfdHhfcmF0ZSAqdHhyYXRlLCB1MTYgcmF0ZSxcbiBcdFx0dHhyYXRlLVx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9UWF9SQ19HUkVFTl9GSUVMRDtcbiBcdFx0ZmFsbHRocm91Z2g7XG4gXHRjYXNlIE1UX1BIWV9UWVBFX0hUOlxuK1x0XHQvKiBSYXcgaGFyZHdhcmUgVFgtc3RhdHVzIGluZGV4IGlzIHVudmFsaWRhdGVkOyBhIHN0YWxlIG9yXG4rXHRcdCAqIGNvcnJ1cHQgdmFsdWUgaGVyZSBvdmVyZmxvd3MgbWFjODAyMTEvbWluc3RyZWxfaHQnc1xuK1x0XHQgKiBwZXItZ3JvdXAgcmF0ZSBhcnJheSAoTUNTX0dST1VQX1JBVEVTID09IDEwKSBhbmQgY3Jhc2hlcy5cbitcdFx0ICogVmFsaWQgODAyLjExbiBNQ1MgaW5kaWNlcyBhcmUgMC0zMSAoZm91ciBzdHJlYW1zIHggOCkuXG4rXHRcdCAqL1xuK1x0XHRpZiAoaWR4IFx1MDAzZSAzMSlcbitcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdFx0dHhyYXRlLVx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9UWF9SQ19NQ1M7XG4gXHRcdHR4cmF0ZS1cdTAwM2VpZHggPSBpZHg7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBNVF9QSFlfVFlQRV9WSFQ6XG4rXHRcdC8qIFNhbWUgb3ZlcmZsb3cgcmlzayBmb3IgVkhUOiBtYWM4MDIxMSBleHBlY3RzIHRoZSBNQ1NcbitcdFx0ICogbmliYmxlIChiaXRzIDM6MCkgaW4gcmFuZ2UgMC05LCBuc3MgcGFja2VkIGFib3ZlIGl0LlxuK1x0XHQgKi9cbitcdFx0aWYgKChpZHggXHUwMDI2IDB4ZikgXHUwMDNlIDkpXG4rXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHRcdHR4cmF0ZS1cdTAwM2VmbGFncyB8PSBJRUVFODAyMTFfVFhfUkNfVkhUX01DUztcbiBcdFx0dHhyYXRlLVx1MDAzZWlkeCA9IGlkeDtcbiBcdFx0YnJlYWs7XG5AQCAtNDkzLDE4ICs1MDUsMjEgQEAgbXQ3NngwMl9tYWNfZmlsbF90eF9zdGF0dXMoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYsIHN0cnVjdCBtdDc2eDAyX3N0YSAqbXN0YSxcbiBcdFx0Zmlyc3RfcmF0ZSA9IHN0LVx1MDAzZXJhdGUgXHUwMDI2IH5NVF9QS1RJRF9SQVRFO1xuIFx0XHRmaXJzdF9yYXRlIHw9IHN0LVx1MDAzZXBrdGlkIFx1MDAyNiBNVF9QS1RJRF9SQVRFO1xuIFxuLVx0XHRtdDc2eDAyX21hY19wcm9jZXNzX3R4X3JhdGUoXHUwMDI2cmF0ZVswXSwgZmlyc3RfcmF0ZSxcbi1cdFx0XHRcdFx0ICAgIGRldi1cdTAwM2VtcGh5LmNoYW5kZWYuY2hhbi1cdTAwM2ViYW5kKTtcbitcdFx0aWYgKG10NzZ4MDJfbWFjX3Byb2Nlc3NfdHhfcmF0ZShcdTAwMjZyYXRlWzBdLCBmaXJzdF9yYXRlLFxuK1x0XHRcdFx0XHRcdGRldi1cdTAwM2VtcGh5LmNoYW5kZWYuY2hhbi1cdTAwM2ViYW5kKSlcbitcdFx0XHRyZXR1cm47XG4gXHR9IGVsc2UgaWYgKHJhdGVbMF0uaWR4IFx1MDAzYyAwKSB7XG4gXHRcdGlmICghbXN0YSlcbiBcdFx0XHRyZXR1cm47XG4gXG4tXHRcdG10NzZ4MDJfbWFjX3Byb2Nlc3NfdHhfcmF0ZShcdTAwMjZyYXRlWzBdLCBtc3RhLVx1MDAzZXdjaWQudHhfaW5mbyxcbi1cdFx0XHRcdFx0ICAgIGRldi1cdTAwM2VtcGh5LmNoYW5kZWYuY2hhbi1cdTAwM2ViYW5kKTtcbitcdFx0aWYgKG10NzZ4MDJfbWFjX3Byb2Nlc3NfdHhfcmF0ZShcdTAwMjZyYXRlWzBdLCBtc3RhLVx1MDAzZXdjaWQudHhfaW5mbyxcbitcdFx0XHRcdFx0XHRkZXYtXHUwMDNlbXBoeS5jaGFuZGVmLmNoYW4tXHUwMDNlYmFuZCkpXG4rXHRcdFx0cmV0dXJuO1xuIFx0fVxuIFxuLVx0bXQ3NngwMl9tYWNfcHJvY2Vzc190eF9yYXRlKFx1MDAyNmxhc3RfcmF0ZSwgc3QtXHUwMDNlcmF0ZSxcbi1cdFx0XHRcdCAgICBkZXYtXHUwMDNlbXBoeS5jaGFuZGVmLmNoYW4tXHUwMDNlYmFuZCk7XG4rXHRpZiAobXQ3NngwMl9tYWNfcHJvY2Vzc190eF9yYXRlKFx1MDAyNmxhc3RfcmF0ZSwgc3QtXHUwMDNlcmF0ZSxcbitcdFx0XHRcdFx0ZGV2LVx1MDAzZW1waHkuY2hhbmRlZi5jaGFuLVx1MDAzZWJhbmQpKVxuK1x0XHRyZXR1cm47XG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKGluZm8tXHUwMDNlc3RhdHVzLnJhdGVzKTsgaSsrKSB7XG4gXHRcdHJldHJ5LS07XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQxMDoyMToxNC42MzEwNzY3NTNaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2ODY3MjgwODExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHdpdGhpbiB0aGUgYG10NzZ4MDJfbWFjLmNgIGZpbGUgb2YgdGhlIE1lZGlhVGVrIHdpcmVsZXNzIGRyaXZlci4gSXQncyBmb2N1c2VkIG9uIGJvdW5kcyBjaGVja2luZyBmb3IgdGhlIGBpZHhgIHZhcmlhYmxlIHdoZW4gZGVhbGluZyB3aXRoIEhUIGFuZCBWSFQgUEhZIHR5cGVzIGluIHRoZSBgbXQ3NngwMl9tYWNfcHJvY2Vzc190eF9yYXRlYCBmdW5jdGlvbi4gSWYgYGlkeGAgaXMgb3V0IG9mIGJvdW5kcywgaXQgbm93IHJldHVybnMgYC1FSU5WQUxgLCB3aGljaCBpcyBnb29kIHByYWN0aWNlLiBUaGUgc2Vjb25kIHBhcnQgbW9kaWZpZXMgYG10NzZ4MDJfbWFjX2ZpbGxfdHhfc3RhdHVzYCB0byBjaGVjayB0aGUgcmVzdWx0IG9mIHRoZSBmb3JtZXIgZnVuY3Rpb24gYW5kIHJldHVybiBlYXJseSwgdGhlcmVieSBhdm9pZGluZyBmdXJ0aGVyIHByb2Nlc3NpbmcgaWYgc29tZXRoaW5nIGdvZXMgd3Jvbmcgd2l0aCB0aGUgcmF0ZSBzZWxlY3Rpb24uIFRoaXMgc3VnZ2VzdHMgdGhlIGludGVudGlvbiBvZiB0aGUgcGF0Y2ggaXMgdG8gZW5oYW5jZSByb2J1c3RuZXNzLCBwb3RlbnRpYWxseSB0byBtaXRpZ2F0ZSBhZ2FpbnN0IHNvbWUgZm9ybSBvZiBvdXQtb2YtYm91bmRzIGFjY2Vzcy5cblxuTXkgaW1tZWRpYXRlIHRob3VnaHRzIGdvIHRvIGZ1enppbmcgcG90ZW50aWFsLiBTaW5jZSBpdCdzIGEgd2lyZWxlc3MgZHJpdmVyLCBgbWFjODAyMTFfaHdzaW1gIGNvbWVzIHRvIG1pbmQgYXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBIb3dldmVyLCB0aGlzIGlzIHNwZWNpZmljYWxseSBmb3IgTWVkaWFUZWsncyBoYXJkd2FyZSwgc28gSSdtIHdvbmRlcmluZyBpZiBhIHR5cGljYWwgaGFyZHdhcmUtYWdub3N0aWMgc2V0dXAgd2lsbCBzdWZmaWNlLiBNeSBwYXN0IGV4cGVyaWVuY2Ugc3VnZ2VzdHMgdGhhdCB0aGVzZSBzcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXJzIGFyZSB1c3VhbGx5IHRyaWNraWVyIHRvIHRlc3Qgd2l0aG91dCB0aGUgYWN0dWFsIGhhcmR3YXJlIGluIHBsYWNlLiBCdXQgY291bGQgSSB2aXJ0dWFsaXplIGl0IGluIFFFTVU/IEFuZCwgYSB0aG91Z2h0IGp1c3QgcG9wcGVkIHVwOiBpcyB0aGlzIGRyaXZlciBhIFVTQiBkcml2ZXI/IFVTQiBkcml2ZXJzIGFyZSBlYXNpZXIgdG8gZnV6eiBzaW5jZSB3ZSBjYW4gdXRpbGl6ZSBhIGR1bW15IEhDRCBvciB2aGNpIHRvIHRlc3QgdGhlbS4gTGV0IG1lIGNoZWNrIGlmIHRoZXNlIGZ1bmN0aW9ucywgYG10NzZ4MDJfbWFjX2ZpbGxfdHhfc3RhdHVzYCBvciBgbXQ3NngwMl9tYWNfcHJvY2Vzc190eF9yYXRlYCwgaGF2ZSBhbnkgVVNCIGNvbm5lY3Rpb25zLiBBIHF1aWNrIGNvZGUgc2VhcmNoIHNob3VsZCBjbGFyaWZ5IHRoYXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3NDIsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOTgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQxMDoyMToyMS40OTgzNjAwNzRaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE5NDM5MTkyNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc2eDAyX21hY19maWxsX3R4X3N0YXR1c1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmM9NDg3PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5jOjQ4ODptdDc2eDAyX21hY19maWxsX3R4X3N0YXR1cyhzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldiwgc3RydWN0IG10NzZ4MDJfc3RhICptc3RhLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuYy00ODktXFx0XFx0XFx0ICAgc3RydWN0IGllZWU4MDIxMV90eF9pbmZvICppbmZvLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5jPTU1NT12b2lkIG10NzZ4MDJfc2VuZF90eF9zdGF0dXMoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmMtNjIyLVxcdFxcdGN1cl9wa3RpZCA9IG1zdGEtXFx1MDAzZXN0YXR1cy5wa3RpZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmM6NjIzOlxcdFxcdG10NzZ4MDJfbWFjX2ZpbGxfdHhfc3RhdHVzKGRldiwgbXN0YSwgc3RhdHVzLmluZm8sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5jLTYyNC1cXHRcXHRcXHRcXHRcXHQgICBcXHUwMDI2bXN0YS1cXHUwMDNlc3RhdHVzLCBtc3RhLVxcdTAwM2VuX2ZyYW1lcyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmMtNjMwLVxcdFxcdGN1cl9wa3RpZCA9IHN0YXQtXFx1MDAzZXBrdGlkO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuYzo2MzE6XFx0XFx0bXQ3NngwMl9tYWNfZmlsbF90eF9zdGF0dXMoZGV2LCBtc3RhLCBzdGF0dXMuaW5mbywgc3RhdCwgMSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5jLTYzMi1cXHRcXHQqdXBkYXRlID0gMTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMTA6MjE6MjMuNjkyNzU3MzA5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTI1ODIyNjI4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIG10NzZ4MDJfbWFjLmMgRGVwZW5kZW5jaWVzKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoZSBgbXQ3NngwMl9tYWMuY2AgZHJpdmVyLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGZpZ3VyZSBvdXQgaXRzIHVzYWdlIC0gd2hpY2ggaGFyZHdhcmUgcGxhdGZvcm1zIGFuZCBhc3NvY2lhdGVkIGRyaXZlcnMgYXJlIGxldmVyYWdpbmcgdGhpcyBwYXJ0aWN1bGFyIE1BQyBsYXllciBtb2R1bGUuIEknbSB0aGlua2luZyBvZiBxdWlja2x5IGlkZW50aWZ5aW5nIGFsbCB0aGUgY2FsbGluZyBkcml2ZXJzIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlIGFuZCBwb3RlbnRpYWwgaW1wYWN0IG9mIGFueSBjaGFuZ2VzIEkgbWlnaHQgbWFrZSwgb3IgaXNzdWVzIEkgbWlnaHQgZW5jb3VudGVyLiBJcyBpdCBqdXN0IGEgbmljaGUgY2FyZCBvciBpcyBpdCBzb21ldGhpbmcgbW9yZSB3aWRlbHkgdXNlZD8gSSBuZWVkIHRvIGJ1aWxkIGEgbWVudGFsIG1hcCBvZiB0aGUgZGVwZW5kZW5jeSB0cmVlLiBJJ2xsIG5lZWQgdG8ga25vdyB3aGljaCBwbGF0Zm9ybXMgYXJlIHVzaW5nIHRoaXMgYW5kIHdoeSB0aGlzIHBhcnRpY3VsYXIgZHJpdmVyIHdhcyB1c2VkIG92ZXIgb3RoZXJzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTI3LCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMTA6MjE6MjguOTUwOTg1NTg2WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMDAxNTc4MTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3NngwMl9zZW5kX3R4X3N0YXR1c1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmM9NDg4PW10NzZ4MDJfbWFjX2ZpbGxfdHhfc3RhdHVzKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2LCBzdHJ1Y3QgbXQ3NngwMl9zdGEgKm1zdGEsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmMtNTU0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuYzo1NTU6dm9pZCBtdDc2eDAyX3NlbmRfdHhfc3RhdHVzKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuYy01NTYtXFx0XFx0XFx0ICAgIHN0cnVjdCBtdDc2eDAyX3R4X3N0YXR1cyAqc3RhdCwgdTggKnVwZGF0ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuYz04OTE9dm9pZCBtdDc2eDAyX21hY19wb2xsX3R4X3N0YXR1cyhzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldiwgYm9vbCBpcnEpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmMtOTEyLVxcdFxcdGlmICghaXJxKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5jOjkxMzpcXHRcXHRcXHRtdDc2eDAyX3NlbmRfdHhfc3RhdHVzKGRldiwgXFx1MDAyNnN0YXQsIFxcdTAwMjZ1cGRhdGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuYy05MTQtXFx0XFx0XFx0Y29udGludWU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmg9MTgzPWJvb2wgbXQ3NngwMl9tYWNfbG9hZF90eF9zdGF0dXMoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5oLTE4NC1cXHRcXHRcXHRcXHRzdHJ1Y3QgbXQ3NngwMl90eF9zdGF0dXMgKnN0YXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuaDoxODU6dm9pZCBtdDc2eDAyX3NlbmRfdHhfc3RhdHVzKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuaC0xODYtXFx0XFx0XFx0ICAgIHN0cnVjdCBtdDc2eDAyX3R4X3N0YXR1cyAqc3RhdCwgdTggKnVwZGF0ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbW1pby5jPTEzMD1zdGF0aWMgdm9pZCBtdDc2eDAyX3Byb2Nlc3NfdHhfc3RhdHVzX2ZpZm8oc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbW1pby5jLTEzNS1cXHR3aGlsZSAoa2ZpZm9fZ2V0KFxcdTAwMjZkZXYtXFx1MDAzZXR4c3RhdHVzX2ZpZm8sIFxcdTAwMjZzdGF0KSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbW1pby5jOjEzNjpcXHRcXHRtdDc2eDAyX3NlbmRfdHhfc3RhdHVzKGRldiwgXFx1MDAyNnN0YXQsIFxcdTAwMjZ1cGRhdGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tbWlvLmMtMTM3LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl90eHJ4LmM9MTIzPWJvb2wgbXQ3NngwMl90eF9zdGF0dXNfZGF0YShzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHU4ICp1cGRhdGUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdHhyeC5jLTEzMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdHhyeC5jOjEzMTpcXHRtdDc2eDAyX3NlbmRfdHhfc3RhdHVzKGRldiwgXFx1MDAyNnN0YXQsIHVwZGF0ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3R4cnguYy0xMzItXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDEwOjIxOjMxLjE1MTE0OTg1MVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxOTYxMTU2MDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyBNVDc2eDAyIFVTQiBEcml2ZXIgSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCBzbyB0aGUgTVQ3NngwMiBsaWJyYXJ5IGlzIHByZXR0eSB1YmlxdWl0b3VzIGZvciB0aGF0IGRldmljZSBmYW1pbHkuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IGlmIHRoZXJlJ3MgYSB3ZWxsLWVzdGFibGlzaGVkIFVTQiBkcml2ZXIgdGhhdCBsZXZlcmFnZXMgdGhpcy4gRmluZGluZyBvbmUgd291bGQgZGVmaW5pdGVseSBzdHJlYW1saW5lIG15IGN1cnJlbnQgcHJvamVjdC4gSXQncyBhIG5hdHVyYWwgcXVlc3Rpb24gdG8gcG9zZSB3aGVuIHdvcmtpbmcgd2l0aCB0aGVzZSB0eXBlcyBvZiBkZXZpY2VzOyB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgc3lzdGVtIGNvbXBvbmVudHMgaW50ZXJhY3QgaXMga2V5IHRvIGEgc29saWQgaW1wbGVtZW50YXRpb24uIEknbGwgbmVlZCB0byBkaWcgaW4gYW5kIHNlZSB3aGF0J3Mgb3V0IHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MTA2LCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMTA6MjE6MzUuMzQ3MjY3MzI0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MTYzNTQ0ODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3NngwMl91c2JcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZT0zMT1tdDc2eDAyLWxpYi15IDo9IG10NzZ4MDJfdXRpbC5vIG10NzZ4MDJfbWFjLm8gbXQ3NngwMl9tY3UubyBcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlLTM1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGU6MzY6bXQ3NngwMi11c2IteSA6PSBtdDc2eDAyX3VzYl9tY3UubyBtdDc2eDAyX3VzYl9jb3JlLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlLTM3LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMTEtI2luY2x1ZGUgXFxcIm1jdS5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jOjEyOiNpbmNsdWRlIFxcXCIuLi9tdDc2eDAyX3VzYi5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTEzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiX21jdS5jLTEwLSNpbmNsdWRlIFxcXCJtY3UuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2JfbWN1LmM6MTE6I2luY2x1ZGUgXFxcIi4uL210NzZ4MDJfdXNiLmhcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiX21jdS5jLTEyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9jb3JlLmMtNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX2NvcmUuYzo2OiNpbmNsdWRlIFxcXCJtdDc2eDAyX3VzYi5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfY29yZS5jLTctXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX21jdS5jLTEwLSNpbmNsdWRlIFxcXCJtdDc2eDAyX21jdS5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfbWN1LmM6MTE6I2luY2x1ZGUgXFxcIm10NzZ4MDJfdXNiLmhcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9tY3UuYy0xMi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3VzYi5jLTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvdXNiLmM6OTojaW5jbHVkZSBcXFwiLi4vbXQ3NngwMl91c2IuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2IuYy0xMC0jaW5jbHVkZSBcXFwibXQ3NngydS5oXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvdXNiX2luaXQuYy0xMC0jaW5jbHVkZSBcXFwiLi4vbXQ3NngwMl9waHkuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2JfaW5pdC5jOjExOiNpbmNsdWRlIFxcXCIuLi9tdDc2eDAyX3VzYi5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3VzYl9pbml0LmMtMTItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2JfbWFpbi5jLTYtI2luY2x1ZGUgXFxcIm10NzZ4MnUuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2JfbWFpbi5jOjc6I2luY2x1ZGUgXFxcIi4uL210NzZ4MDJfdXNiLmhcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvdXNiX21haW4uYy04LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvdXNiX21jdS5jLTktI2luY2x1ZGUgXFxcImVlcHJvbS5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3VzYl9tY3UuYzoxMDojaW5jbHVkZSBcXFwiLi4vbXQ3NngwMl91c2IuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2JfbWN1LmMtMTEtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDEwOjIxOjM3LjI2MzYyNjY2M1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYwNzE0ODg1NzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyB0aGUgTVQ3NngwMiBEcml2ZXI6IEEgUHJvbWlzaW5nIFRhcmdldCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZSBgbXQ3NngwMmAgZHJpdmVyLCBhbmQgaXQncyBjbGVhciB0aGF0IGl0J3MgbGV2ZXJhZ2VkIGJ5IGBtdDc2eDB1YCBhbmQgYG10NzZ4MnVgLCBib3RoIFVTQiBkcml2ZXJzLiBUaGF0J3MgZ29vZCBuZXdzOyBVU0IgZHJpdmVycyBhcmUgYWNjZXNzaWJsZSBmb3IgZnV6emluZyB2aWEgc3l6a2FsbGVyJ3MgVVNCIGZ1enppbmcgY2FwYWJpbGl0aWVzIHVzaW5nIGBkdW1teV9oY2RgIG9yIGB2aGNpYC4gVGhpcyBtZWFucyB0aGUgY29kZSAqaXMqIHJlYWNoYWJsZSBhbmQgbGlrZWx5IHdvcnRoIHRoZSBlZmZvcnQuXG5cbk15IGluaXRpYWwgZm9jdXMgaXMgb24gdGhlIGBtdDc2eDAyX21hY19maWxsX3R4X3N0YXR1c2AgZnVuY3Rpb24uIEl0IGxvb2tzIGxpa2UgaXQncyBjYWxsZWQgd2l0aGluIGBtdDc2eDAyX3NlbmRfdHhfc3RhdHVzYCwgd2hpY2gsIGluIHR1cm4sIGlzIGNhbGxlZCBmcm9tIGVpdGhlciBgbXQ3NngwMl90eF9zdGF0dXNfZGF0YWAgb3IgYG10NzZ4MDJfcHJvY2Vzc190eF9zdGF0dXNfZmlmb2AuIE5vdywgdGhlIGNydWNpYWwgc3RlcCBpcyB0byB0cmFjZSBiYWNrIHRvIHdoZXJlIGBtdDc2eDAyX3R4X3N0YXR1c19kYXRhYCBpcyBhY3R1YWxseSBpbnZva2VkLiBUaGF0J3Mgd2hlcmUgSSBuZWVkIHRvIGZvY3VzIG15IGFuYWx5c2lzIHRvIHVuZGVyc3RhbmQgaG93IHRvIGdldCB0byB0aGUgY29yZSBmdW5jdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NjMxOCwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQxMDoyMTo0My4zMzUxMTcxMjdaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxNjEwNzY1MTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3NngwMl90eF9zdGF0dXNfZGF0YVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYz0yMTM9c3RhdGljIGludCBtdDc2eDB1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50ZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTIyMy1cXHRcXHQudHhfY29tcGxldGVfc2tiID0gbXQ3NngwMnVfdHhfY29tcGxldGVfc2tiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jOjIyNDpcXHRcXHQudHhfc3RhdHVzX2RhdGEgPSBtdDc2eDAyX3R4X3N0YXR1c19kYXRhLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTIyNS1cXHRcXHQucnhfc2tiID0gbXQ3NngwMl9xdWV1ZV9yeF9za2IsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDIuaD0xODg9dm9pZCBtdDc2eDAyX3JlbW92ZV9oZHJfcGFkKHN0cnVjdCBza19idWZmICpza2IsIGludCBsZW4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMi5oOjE4OTpib29sIG10NzZ4MDJfdHhfc3RhdHVzX2RhdGEoc3RydWN0IG10NzZfZGV2ICptZGV2LCB1OCAqdXBkYXRlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDIuaC0xOTAtdm9pZCBtdDc2eDAyX3F1ZXVlX3J4X3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIGVudW0gbXQ3Nl9yeHFfaWQgcSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl90eHJ4LmM9MTIxPUVYUE9SVF9TWU1CT0xfR1BMKG10NzZ4MDJfdHhfc2V0X3R4cHdyX2F1dG8pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl90eHJ4LmMtMTIyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl90eHJ4LmM6MTIzOmJvb2wgbXQ3NngwMl90eF9zdGF0dXNfZGF0YShzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHU4ICp1cGRhdGUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3R4cnguYy0xMjQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3R4cnguYy0xMzQtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl90eHJ4LmM6MTM1OkVYUE9SVF9TWU1CT0xfR1BMKG10NzZ4MDJfdHhfc3RhdHVzX2RhdGEpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl90eHJ4LmMtMTM2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvdXNiLmM9MzI9c3RhdGljIGludCBtdDc2eDJ1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvdXNiLmMtNDItXFx0XFx0LnR4X2NvbXBsZXRlX3NrYiA9IG10NzZ4MDJ1X3R4X2NvbXBsZXRlX3NrYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2IuYzo0MzpcXHRcXHQudHhfc3RhdHVzX2RhdGEgPSBtdDc2eDAyX3R4X3N0YXR1c19kYXRhLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3VzYi5jLTQ0LVxcdFxcdC5yeF9za2IgPSBtdDc2eDAyX3F1ZXVlX3J4X3NrYixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMTA6MjE6NDUuNDk2MjA0MjkzWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0NTgxNTg1MjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNVDc2eDAyIFRYIFN0YXR1cyBGdW5jdGlvbioqXG5cbk9rYXksIHNvIEkgc2VlIHRoaXMgYG10NzZ4MDJfdHhfc3RhdHVzX2RhdGFgIGZ1bmN0aW9uLiBUaGF0IG5hbWUgcmluZ3MgYSBiZWxsOyBpdCdzIHRoZSBgLnR4X3N0YXR1c19kYXRhYCBjYWxsYmFjayB3aXRoaW4gYG10NzZfZHJpdmVyX29wc2AsIHJpZ2h0PyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSBiZXR0ZXIuIE15IGZpcnN0IHN0ZXAgaXMgdG8gZmlndXJlIG91dCB0aGUgY2FsbGluZyBjb250ZXh0IOKAkyB3aGVyZSBpcyB0aGF0IGNhbGxiYWNrIGFjdHVhbGx5ICp1c2VkKj8gVGltZSB0byB0cmFjZSBpdHMgaW52b2NhdGlvbiBwb2ludHMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBsb2dpYyBmbG93IGhlcmUuIEknbGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoYXQgYC50eF9zdGF0dXNfZGF0YWAgZmllbGQgd2l0aGluIGBtdDc2X2RyaXZlcl9vcHNgIGlzIGFjdHVhbGx5ICpjYWxsZWQqLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGRyaXZlciBwcm9jZXNzZXMgdHJhbnNtaXQgc3RhdHVzIGluZm9ybWF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NjMxLCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMTA6MjE6NDguOTU0MzY0NzY4WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTg2Njk0ODU1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInR4X3N0YXR1c19kYXRhXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTU0Mz1zdHJ1Y3QgbXQ3Nl9kcml2ZXJfb3BzIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTU2MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDo1NjI6XFx0Ym9vbCAoKnR4X3N0YXR1c19kYXRhKShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgdTggKnVwZGF0ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtNTYzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbXQ3NjE1Lmg9NTQzPWludCBtdDc2NjNfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LCB2b2lkICp0eHdpX3B0cixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L210NzYxNS5oLTU0Ni1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgbXQ3Nl90eF9pbmZvICp0eF9pbmZvKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tdDc2MTUuaDo1NDc6Ym9vbCBtdDc2NjNfdXNiX3NkaW9fdHhfc3RhdHVzX2RhdGEoc3RydWN0IG10NzZfZGV2ICptZGV2LCB1OCAqdXBkYXRlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tdDc2MTUuaC01NDgtdm9pZCBtdDc2NjNfdXNiX3NkaW9fdHhfY29tcGxldGVfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3NkaW8uYz03Nj1zdGF0aWMgaW50IG10NzY2M3NfcHJvYmUoc3RydWN0IHNkaW9fZnVuYyAqZnVuYyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3NkaW8uYy04My1cXHRcXHQudHhfY29tcGxldGVfc2tiID0gbXQ3NjYzX3VzYl9zZGlvX3R4X2NvbXBsZXRlX3NrYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9zZGlvLmM6ODQ6XFx0XFx0LnR4X3N0YXR1c19kYXRhID0gbXQ3NjYzX3VzYl9zZGlvX3R4X3N0YXR1c19kYXRhLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3NkaW8uYy04NS1cXHRcXHQucnhfc2tiID0gbXQ3NjE1X3F1ZXVlX3J4X3NrYixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jPTExMj1zdGF0aWMgaW50IG10NzY2M3VfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVzYl9pbnRmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtMTE5LVxcdFxcdC50eF9jb21wbGV0ZV9za2IgPSBtdDc2NjNfdXNiX3NkaW9fdHhfY29tcGxldGVfc2tiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjEyMDpcXHRcXHQudHhfc3RhdHVzX2RhdGEgPSBtdDc2NjNfdXNiX3NkaW9fdHhfc3RhdHVzX2RhdGEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtMTIxLVxcdFxcdC5yeF9za2IgPSBtdDc2MTVfcXVldWVfcnhfc2tiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYz0xMzE9c3RhdGljIHZvaWQgbXQ3NjYzX3VzYl9zZGlvX3JhdGVfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTE1NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jOjE1Njpib29sIG10NzY2M191c2Jfc2Rpb190eF9zdGF0dXNfZGF0YShzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHU4ICp1cGRhdGUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0xNTcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0xNjUtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmM6MTY2OkVYUE9SVF9TWU1CT0xfR1BMKG10NzY2M191c2Jfc2Rpb190eF9zdGF0dXNfZGF0YSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0xNjctXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYz0yMTM9c3RhdGljIGludCBtdDc2eDB1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50ZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTIyMy1cXHRcXHQudHhfY29tcGxldGVfc2tiID0gbXQ3NngwMnVfdHhfY29tcGxldGVfc2tiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jOjIyNDpcXHRcXHQudHhfc3RhdHVzX2RhdGEgPSBtdDc2eDAyX3R4X3N0YXR1c19kYXRhLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTIyNS1cXHRcXHQucnhfc2tiID0gbXQ3NngwMl9xdWV1ZV9yeF9za2IsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDIuaD0xODg9dm9pZCBtdDc2eDAyX3JlbW92ZV9oZHJfcGFkKHN0cnVjdCBza19idWZmICpza2IsIGludCBsZW4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMi5oOjE4OTpib29sIG10NzZ4MDJfdHhfc3RhdHVzX2RhdGEoc3RydWN0IG10NzZfZGV2ICptZGV2LCB1OCAqdXBkYXRlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDIuaC0xOTAtdm9pZCBtdDc2eDAyX3F1ZXVlX3J4X3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIGVudW0gbXQ3Nl9yeHFfaWQgcSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl90eHJ4LmM9MTIxPUVYUE9SVF9TWU1CT0xfR1BMKG10NzZ4MDJfdHhfc2V0X3R4cHdyX2F1dG8pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl90eHJ4LmMtMTIyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl90eHJ4LmM6MTIzOmJvb2wgbXQ3NngwMl90eF9zdGF0dXNfZGF0YShzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHU4ICp1cGRhdGUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3R4cnguYy0xMjQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3R4cnguYy0xMzQtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl90eHJ4LmM6MTM1OkVYUE9SVF9TWU1CT0xfR1BMKG10NzZ4MDJfdHhfc3RhdHVzX2RhdGEpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl90eHJ4LmMtMTM2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvdXNiLmM9MzI9c3RhdGljIGludCBtdDc2eDJ1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvdXNiLmMtNDItXFx0XFx0LnR4X2NvbXBsZXRlX3NrYiA9IG10NzZ4MDJ1X3R4X2NvbXBsZXRlX3NrYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2IuYzo0MzpcXHRcXHQudHhfc3RhdHVzX2RhdGEgPSBtdDc2eDAyX3R4X3N0YXR1c19kYXRhLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3VzYi5jLTQ0LVxcdFxcdC5yeF9za2IgPSBtdDc2eDAyX3F1ZXVlX3J4X3NrYixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jPTg0MD1FWFBPUlRfU1lNQk9MX0dQTChtdDc5MjFfdXNiX3NkaW9fdHhfY29tcGxldGVfc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy04NDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6ODQyOmJvb2wgbXQ3OTIxX3VzYl9zZGlvX3R4X3N0YXR1c19kYXRhKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdTggKnVwZGF0ZSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy04NDMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtODUxLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo4NTI6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTIxX3VzYl9zZGlvX3R4X3N0YXR1c19kYXRhKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy04NTMtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tdDc5MjEuaD0zMzI9dm9pZCBtdDc5MjFfdXNiX3NkaW9fdHhfY29tcGxldGVfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tdDc5MjEuaC0zMzMtXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgbXQ3Nl9xdWV1ZV9lbnRyeSAqZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbXQ3OTIxLmg6MzM0OmJvb2wgbXQ3OTIxX3VzYl9zZGlvX3R4X3N0YXR1c19kYXRhKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdTggKnVwZGF0ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbXQ3OTIxLmgtMzM1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpby5jPTkwPXN0YXRpYyBpbnQgbXQ3OTIxc19wcm9iZShzdHJ1Y3Qgc2Rpb19mdW5jICpmdW5jLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpby5jLTEwMC1cXHRcXHQudHhfY29tcGxldGVfc2tiID0gbXQ3OTIxX3VzYl9zZGlvX3R4X2NvbXBsZXRlX3NrYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvLmM6MTAxOlxcdFxcdC50eF9zdGF0dXNfZGF0YSA9IG10NzkyMV91c2Jfc2Rpb190eF9zdGF0dXNfZGF0YSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvLmMtMTAyLVxcdFxcdC5yeF9za2IgPSBtdDc5MjFfcXVldWVfcnhfc2tiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM9MTUwPXN0YXRpYyBpbnQgbXQ3OTIxdV9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdXNiX2ludGYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0xNjEtXFx0XFx0LnR4X2NvbXBsZXRlX3NrYiA9IG10NzkyMV91c2Jfc2Rpb190eF9jb21wbGV0ZV9za2IsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM6MTYyOlxcdFxcdC50eF9zdGF0dXNfZGF0YSA9IG10NzkyMV91c2Jfc2Rpb190eF9zdGF0dXNfZGF0YSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0xNjMtXFx0XFx0LnJ4X3NrYiA9IG10NzkyMV9xdWV1ZV9yeF9za2IsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYz0xNDgyPUVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV91c2Jfc2Rpb190eF9jb21wbGV0ZV9za2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0ODMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTQ4NDpib29sIG10NzkyNV91c2Jfc2Rpb190eF9zdGF0dXNfZGF0YShzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHU4ICp1cGRhdGUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQ4NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNDkzLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxNDk0OkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV91c2Jfc2Rpb190eF9zdGF0dXNfZGF0YSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQ5NS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oPTM2Nj12b2lkIG10NzkyNV91c2Jfc2Rpb190eF9jb21wbGV0ZV9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oLTM2Ny1cXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBtdDc2X3F1ZXVlX2VudHJ5ICplKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaDozNjg6Ym9vbCBtdDc5MjVfdXNiX3NkaW9fdHhfc3RhdHVzX2RhdGEoc3RydWN0IG10NzZfZGV2ICptZGV2LCB1OCAqdXBkYXRlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaC0zNjktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYz0xNDM9c3RhdGljIGludCBtdDc5MjV1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50ZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTE1NC1cXHRcXHQudHhfY29tcGxldGVfc2tiID0gbXQ3OTI1X3VzYl9zZGlvX3R4X2NvbXBsZXRlX3NrYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzoxNTU6XFx0XFx0LnR4X3N0YXR1c19kYXRhID0gbXQ3OTI1X3VzYl9zZGlvX3R4X3N0YXR1c19kYXRhLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTE1Ni1cXHRcXHQucnhfc2tiID0gbXQ3OTI1X3F1ZXVlX3J4X3NrYixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvc2Rpby5jPTQ2MT1zdGF0aWMgdm9pZCBtdDc2c19zdGF0dXNfd29ya2VyKHN0cnVjdCBtdDc2X3dvcmtlciAqdylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvc2Rpby5jLTQ4MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3NkaW8uYzo0ODE6XFx0XFx0aWYgKGRldi1cXHUwMDNlZHJ2LVxcdTAwM2V0eF9zdGF0dXNfZGF0YSBcXHUwMDI2XFx1MDAyNiBuZGF0YV9mcmFtZXMgXFx1MDAzZSAwIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9zZGlvLmMtNDgyLVxcdFxcdCAgICAhdGVzdF9hbmRfc2V0X2JpdChNVDc2X1JFQURJTkdfU1RBVFMsIFxcdTAwMjZkZXYtXFx1MDAzZXBoeS5zdGF0ZSkgXFx1MDAyNlxcdTAwMjZcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvc2Rpby5jLTQ5MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3NkaW8uYzo0OTE6c3RhdGljIHZvaWQgbXQ3NnNfdHhfc3RhdHVzX2RhdGEoc3RydWN0IG10NzZfd29ya2VyICp3b3JrZXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9zZGlvLmMtNDkyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvc2Rpby5jLTUwNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3NkaW8uYzo1MDY6XFx0XFx0aWYgKCFkZXYtXFx1MDAzZWRydi1cXHUwMDNldHhfc3RhdHVzX2RhdGEoZGV2LCBcXHUwMDI2dXBkYXRlKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3NkaW8uYy01MDctXFx0XFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3NkaW8uYz02MzU9aW50IG10NzZzX2luaXQoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBzZGlvX2Z1bmMgKmZ1bmMsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3NkaW8uYy02NTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9zZGlvLmM6NjUyOlxcdGVyciA9IG10NzZfd29ya2VyX3NldHVwKGRldi1cXHUwMDNlaHcsIFxcdTAwMjZzZGlvLVxcdTAwM2VzdGF0X3dvcmtlciwgbXQ3NnNfdHhfc3RhdHVzX2RhdGEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9zZGlvLmMtNjUzLVxcdFxcdFxcdFxcdFxcXCJzZGlvLXN0YVxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni91c2IuYz03NTk9c3RhdGljIHZvaWQgbXQ3NnVfc3RhdHVzX3dvcmtlcihzdHJ1Y3QgbXQ3Nl93b3JrZXIgKncpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3VzYi5jLTc5MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3VzYi5jOjc5MTpcXHRpZiAoZGV2LVxcdTAwM2VkcnYtXFx1MDAzZXR4X3N0YXR1c19kYXRhIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni91c2IuYy03OTItXFx0ICAgICF0ZXN0X2FuZF9zZXRfYml0KE1UNzZfUkVBRElOR19TVEFUUywgXFx1MDAyNmRldi1cXHUwMDNlcGh5LnN0YXRlKSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdXNiLmMtNzk1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdXNiLmM6Nzk2OnN0YXRpYyB2b2lkIG10NzZ1X3R4X3N0YXR1c19kYXRhKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3VzYi5jLTc5Ny17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3VzYi5jLTgwOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3VzYi5jOjgxMDpcXHRcXHRpZiAoIWRldi1cXHUwMDNlZHJ2LVxcdTAwM2V0eF9zdGF0dXNfZGF0YShkZXYsIFxcdTAwMjZ1cGRhdGUpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdXNiLmMtODExLVxcdFxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni91c2IuYz0xMDc2PWludCBfX210NzZ1X2luaXQoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni91c2IuYy0xMDgyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdXNiLmM6MTA4MzpcXHRJTklUX1dPUksoXFx1MDAyNnVzYi1cXHUwMDNlc3RhdF93b3JrLCBtdDc2dV90eF9zdGF0dXNfZGF0YSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni91c2IuYy0xMDg0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQxMDoyMTo1MS4xNDEwNjM2MjNaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDMzMTQyMTE3MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgRHJpdmVyIENvbmZpZ3VyYXRpb24gZm9yIE1UNzZ4MDIgRnVuY3Rpb25hbGl0eSoqXG5cbk9rYXksIHNvIEknbSBzZWVpbmcgdGhhdCBgbXQ3NngwMl90eF9zdGF0dXNfZGF0YWAgZ2V0cyB1dGlsaXplZCBpbiBib3RoIGBtdDc2eDB1X3Byb2JlYCBhbmQgYG10NzZ4MnVfcHJvYmVgLiBUaGF0IHN1Z2dlc3RzIHNvbWUgc2hhcmVkIGRhdGEgc3RydWN0dXJlIG9yIGZ1bmN0aW9uIHJlbGF0ZWQgdG8gdHJhbnNtaXQgc3RhdHVzIGlzIGJlaW5nIHVzZWQgYWNyb3NzIHRoZXNlIHNsaWdodGx5IGRpZmZlcmVudCBNZWRpYXRlayBVU0Igd2lyZWxlc3MgZGV2aWNlIHZhcmlhbnRzLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgbGV0J3MgbmFpbCBkb3duIHByZWNpc2VseSB3aGljaCBjb25maWd1cmF0aW9uIG9wdGlvbnMgZ292ZXJuIHRoZSBpbmNsdXNpb24gb2YgdGhlc2UgcHJvYmUgZnVuY3Rpb25zLiBUaGUgY29kZSBpbmRpY2F0ZXMgdGhhdCB3ZSdyZSB0YWxraW5nIGFib3V0IGBDT05GSUdfTVQ3NngwVWAgYW5kIGBDT05GSUdfTVQ3NngyVWAuIFJpZ2h0LCB0aGF0IG1ha2VzIHNlbnNlLiBOb3cgSSBuZWVkIHRvIHF1aWNrbHkgY29uZmlybSB0aGlzIGluIHRoZSByZWxldmFudCBLY29uZmlnIGZpbGVzLiBUaW1lIHRvIGNoZWNrIHRob3NlLCBzcGVjaWZpY2FsbHksIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnYCBhbmQgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL0tjb25maWdgIHRvIHNlZSB0aGUgY29uZGl0aW9ucyB1bmRlciB3aGljaCB0aG9zZSBjb25maWcgc3ltYm9scyBhcmUgYWN0dWFsbHkgZGVmaW5lZCBhbmQgaG93IHRoZXkgcmVsYXRlIHRvIHRoZSBicm9hZGVyIGRyaXZlciBjb25maWd1cmF0aW9uLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGVzZSBkcml2ZXIgY29tcG9uZW50cyBpbnRlZ3JhdGUgaW50byB0aGUgb3ZlcmFsbCBNVDc2IGZyYW1ld29yay5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI0MzgsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMTA6MjE6NTUuNDcyNDg4NDg0WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDcwMzIwNjc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNVDc2eDBVXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWc9Mj1jb25maWcgTVQ3NngwX0NPTU1PTlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZy01LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWc6Njpjb25maWcgTVQ3NngwVVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWctNy1cXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3NngwVSAoVVNCKSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQxMDoyMTo1Ny41NDI4MTMwMTJaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQ0MDg3Nzc3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipEZXBlbmRlbmN5IENoZWNrOiBBIE5lY2Vzc2FyeSBFdmlsIChCdXQgYSBWaXRhbCBPbmUpKipcblxuQWxyaWdodCwgdGltZSB0byBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHRha2UgYSBoYXJkIGxvb2sgYXQgdGhvc2UgZGVwZW5kZW5jaWVzLiBJdCdzIGEgZnVuZGFtZW50YWwgc3RlcCwgcmVhbGx5LiBJIGtub3cgSSBrbm93IHRoZSBjb2RlIHByZXR0eSB3ZWxsLCBidXQgY29tcGxhY2VuY3kgaXMgYSBkYW5nZXJvdXMgZ2FtZSB3aGVuIHlvdSdyZSBkZWFsaW5nIHdpdGggZXh0ZXJuYWwgbGlicmFyaWVzIGFuZCBmcmFtZXdvcmtzLiBJdCdzIHRvbyBlYXN5IHRvIGFzc3VtZSBldmVyeXRoaW5nJ3Mga29zaGVyLCB0aGF0IHRoZSB2ZXJzaW9ucyBhcmUgY29tcGF0aWJsZSwgYW5kIHRoYXQgdGhlIHRyYW5zaXRpdmUgZGVwZW5kZW5jaWVzIGFyZSBhbGwgcGxheWluZyBuaWNlbHkuXG5cbkxldCdzIHN0YXJ0IGJ5IG1hcHBpbmcgdGhlbSBvdXQuLi4gSSdsbCBuZWVkIHRvIGdvIHRocm91Z2ggdGhlIHByb2plY3Qgc3RydWN0dXJlLCBsb29rIGF0IHRoZSBwYWNrYWdlIG1hbmFnZXJzLCBkaWcgaW50byB0aGUgYnVpbGQgY29uZmlndXJhdGlvbnMuLi4gSSBuZWVkIGEgY2xlYXIgcGljdHVyZS4gSXMgdGhlcmUgYW55dGhpbmcgdGhhdCBzZWVtcyBvdXQgb2YgcGxhY2U/IElzIHRoZXJlIGEga25vd24gdnVsbmVyYWJpbGl0eSBpbiB0aGUgdmVyc2lvbiBJJ20gdXNpbmcgdGhhdCBJJ2QgbmVlZCB0byBjb25zaWRlcj8gQXJlIHRoZXJlIGFueSBvYnZpb3VzIGNvbmZsaWN0cyB3YWl0aW5nIHRvIGJpdGUgbWUgbGF0ZXIgZG93biB0aGUgbGluZT8gSSBuZWVkIHRvIGNoZWNrIGZvciBhbnkgZGVwcmVjYXRlZCB2ZXJzaW9ucy5cblxuVGhpcyBpc27igJl0IGp1c3QgYWJvdXQgbWFraW5nIHN1cmUgZXZlcnl0aGluZyAqd29ya3MqIGF0IHRoZSBtb21lbnQ7IGl0J3MgYWJvdXQgc3RhYmlsaXR5IGFuZCBtYWludGFpbmFiaWxpdHkgaW4gdGhlIGxvbmcgcnVuLiBJZiBJIGNhbid0IGd1YXJhbnRlZSBjb21wYXRpYmlsaXR5LCB0aGVuIEkgaGF2ZSB0byBsb2NrIGRvd24gdmVyc2lvbnMuIElmIEkgc2VlIGNvbmZsaWN0aW5nIGRlcGVuZGVuY2llcywgSSBuZWVkIHRvIGdldCByaWQgb2YgdGhlbS4gSXQncyByZWFsbHkgYWJvdXQgYmVpbmcgcHJvYWN0aXZlIHJhdGhlciB0aGFuIHJlYWN0aXZlLlxuXG5BbmQgbGV0J3MgYmUgaG9uZXN0LCBkZXBlbmRlbmN5IGhlbGwgaXMgdGhlIGJhbmUgb2YgbXkgZXhpc3RlbmNlLCBhbmQgaXQgb25seSBnZXRzIHdvcnNlIHRoZSBiaWdnZXIgdGhlIHByb2plY3QgZ2V0cy4gQmV0dGVyIHRvIGFkZHJlc3MgYW55IGlzc3VlcyBub3csIGJlZm9yZSB0aGV5IGJlY29tZSBhIG1hc3NpdmUgaGVhZGFjaGUsIG9yIHdvcnNlLCBjYXVzZSB1bmZvcmVzZWVuIHByb2JsZW1zIGR1cmluZyBkZXBsb3ltZW50LlxuXG5TbywgbGV0J3MgZGl2ZSBpbi4gTGV0J3MgbWFrZSBzdXJlIHRoaW5ncyBhcmUgbG9ja2VkIGRvd24gYW5kIHdlbGwtZG9jdW1lbnRlZC4gT3RoZXJ3aXNlLCBpdCdzIGp1c3QgYSB0aW1lIGJvbWIgd2FpdGluZyB0byBleHBsb2RlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjk4NCwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMTA6MjI6MDEuOTgzNjk0MjkxWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgwNDYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBNVDc2eDBfQ09NTU9OXFxuICAgMzpcXHRcXHR0cmlzdGF0ZVxcbiAgIDQ6XFx0XFx0c2VsZWN0IE1UNzZ4MDJfTElCXFxuICAgNTpcXHRcXG4gICA2OlxcdGNvbmZpZyBNVDc2eDBVXFxuICAgNzpcXHRcXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3NngwVSAoVVNCKSBzdXBwb3J0XFxcIlxcbiAgIDg6XFx0XFx0c2VsZWN0IE1UNzZ4MF9DT01NT05cXG4gICA5OlxcdFxcdHNlbGVjdCBNVDc2eDAyX1VTQlxcbiAgMTA6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxcbiAgMTE6XFx0XFx0ZGVwZW5kcyBvbiBVU0JcXG4gIDEyOlxcdFxcdGhlbHBcXG4gIDEzOlxcdFxcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIE1UNzYxMFUtYmFzZWQgVVNCIDIuMCB3aXJlbGVzcyBkb25nbGVzLFxcbiAgMTQ6XFx0XFx0ICB3aGljaCBjb21wbHkgd2l0aCBJRUVFIDgwMi4xMWFjIHN0YW5kYXJkcyBhbmQgc3VwcG9ydCAxeDFcXG4gIDE1OlxcdFxcdCAgNDMzTWJwcyBQSFkgcmF0ZS5cXG4gIDE2OlxcdFxcbiAgMTc6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxcbiAgMTg6XFx0XFxuICAxOTpcXHRjb25maWcgTVQ3NngwRVxcbiAgMjA6XFx0XFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzZ4MEUgKFBDSWUpIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDEwOjIyOjAxLjk4Mzc3NjQxMVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NzUwODM5MTE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKk15IERlZXAgRGl2ZSBpbnRvIHRoZSBNVDc2eDJVKipcblxuQWxyaWdodCwgbGV0J3MgdGFsayBhYm91dCB0aGUgTVQ3NngyVS4gTXkgaW5pdGlhbCB0aG91Z2h0IHByb2Nlc3MgcmV2b2x2ZXMgYXJvdW5kIGl0cyBjb3JlIGZ1bmN0aW9uIOKAkyBhIGNvbW1vbiBVU0IgV2lGaSBjaGlwc2V0LCByaWdodD8gQnV0IHRoZSByZWFsIHF1ZXN0aW9ucyBhcmU6IEhvdyAqd2VsbCogZG9lcyBpdCBwZXJmb3JtIGluIHNwZWNpZmljIGFwcGxpY2F0aW9ucz8gV2hlcmUgYXJlIGl0cyBsaW1pdGF0aW9ucz8gVGhpbmtpbmcgYmFjaywgSSd2ZSBzZWVuIGl0IHBvcCB1cCBpbiBhIHRvbiBvZiBkaWZmZXJlbnQgcHJvZHVjdHMgb3ZlciB0aGUgeWVhcnMsIGZyb20gYmFzaWMgZG9uZ2xlcyB0byBtb3JlIGludGVncmF0ZWQgZW1iZWRkZWQgc3lzdGVtcy5cblxuTXkgZmlyc3QgY29uc2lkZXJhdGlvbiBpcyBhbHdheXMgdGhlIGRyaXZlciBzaXR1YXRpb24uIEFyZSB3ZSBkZWFsaW5nIHdpdGggc3RhYmxlLCB3ZWxsLW1haW50YWluZWQgb3Blbi1zb3VyY2UgZHJpdmVycywgb3IgcHJvcHJpZXRhcnkgYmxvYnMgdGhhdCByZXF1aXJlIGEgbG90IG9mIHR3ZWFraW5nPyBUaGUgTVQ3NngyVSBoYXMgZGVjZW50IGNvbW11bml0eSBzdXBwb3J0LCBidXQgdGhlIHNwZWNpZmljcyBhcmUgZ29pbmcgdG8gYmUgY3J1Y2lhbC4gSSBpbW1lZGlhdGVseSBzdGFydCBtZW50YWxseSBjYXRhbG9naW5nIHBvdGVudGlhbCBpc3N1ZXM6IGtlcm5lbCB2ZXJzaW9uIGNvbXBhdGliaWxpdHksIHRoZSBuZWVkIGZvciBmaXJtd2FyZSBsb2FkaW5nLCBhbmQgYW55IGdvdGNoYXMgcmVsYXRlZCB0byBzcGVjaWZpYyBMaW51eCBkaXN0cmlidXRpb25zIG9yIGV2ZW4gV2luZG93cyB2ZXJzaW9ucy4gQXJlIHRoZXJlIGFueSBrbm93biBpc3N1ZXMgd2l0aCB0aGluZ3MgbGlrZSBwb3dlciBtYW5hZ2VtZW50IHRoYXQgY2F1c2UgaW50ZXJtaXR0ZW50IGRpc2Nvbm5lY3Rpb25zIG9yIHBlcmZvcm1hbmNlIHRocm90dGxpbmc/IEFyZSB0aGVyZSBhbHRlcm5hdGl2ZSBmaXJtd2FyZSBvcHRpb25zIHRvIHRlc3QgaWYgdGhlIHN0b2NrIG9uZSBpcyBub3Qgc3VmZmljaWVudD8gSSB0aGluayBhYm91dCBwb3RlbnRpYWwgcGFja2V0IGluamVjdGlvbiBvciBtb25pdG9yIG1vZGUgY2FwYWJpbGl0aWVzLCBlc3BlY2lhbGx5IGlmIHRoaXMgaXMgaW4gYSBzZWN1cml0eSBvciBuZXR3b3JrIHRlc3RpbmcgY29udGV4dC5cblxuTmV4dCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGFyY2hpdGVjdHVyYWwgbnVhbmNlcy4gSSdtIHRoaW5raW5nIGFib3V0IHRoZSBNQUMvUEhZIGRlc2lnbi4gV2hhdCBraW5kIG9mIE1JTU8gY29uZmlndXJhdGlvbiBkb2VzIGl0IHN1cHBvcnQ/IElzIGl0IGEgdHJ1ZSAyeDIsIG9yIGlzIHRoZXJlIHNvbWUgb3RoZXIgY29tcHJvbWlzZSBpbiB0aGUgZGVzaWduPyBUaGUgZGF0YSBzaGVldCBiZWNvbWVzIGltcG9ydGFudC4gTG9va2luZyBmb3IgdGhpbmdzIGxpa2Ugc3VwcG9ydGVkIG1vZHVsYXRpb24gc2NoZW1lcyAoTUNTIHJhdGVzKSwgdHJhbnNtaXQgcG93ZXIsIGFuZCByZWNlaXZlIHNlbnNpdGl2aXR5LiBJJ20gYWxzbyBjb25zaWRlcmluZyB0aGUgaW1wbGljYXRpb25zIG9mIHRoZSBVU0IgMi4wIGludGVyZmFjZS4gSXMgaXQgc3VmZmljaWVudCB0byBhdm9pZCBiZWNvbWluZyBhIGJvdHRsZW5lY2ssIG9yIGFyZSB3ZSBnb2luZyB0byBiZSBsaW1pdGVkIGJ5IFVTQiB0aHJvdWdocHV0IGluIGhpZ2gtYmFuZHdpZHRoIHNjZW5hcmlvcyBsaWtlIDgwMi4xMWFjP1xuXG5GaW5hbGx5LCBsZXTigJlzIGNvbnNpZGVyIHNvbWUgdXNlIGNhc2VzLiBJIGltYWdpbmUgYSBxdWljayBydW5kb3duIG9uIHdoaWNoIG9mIHRoZSBjb21tb24gc2NlbmFyaW9zIHRoaXMgY2hpcHNldCBtYXkgYmUgc3VpdGFibGUgZm9yLiBJJ2QgZXZhbHVhdGUgaXQncyBzdWl0YWJpbGl0eSBmb3IgcmFuZ2UgZXh0ZW5zaW9uLCBlbWJlZGRlZCBzeXN0ZW0gbmV0d29yayBjb25uZWN0aXZpdHksIG9yIGV2ZW4gYXMgYSBiYXNpcyBmb3IgYSBjdXN0b20gd2lyZWxlc3Mgc29sdXRpb24uIFdoYXQgYWJvdXQgdGhlIHBvd2VyIGNvbnN1bXB0aW9uPyBJZiBpdOKAmXMgZm9yIGEgYmF0dGVyeS1wb3dlcmVkIGRldmljZSwgSSB3YW50IHRvIGtub3cgaXRzIHBvd2VyIGRyYXcuIFJlbGlhYmlsaXR5IGlzIGFub3RoZXIga2V5IGZhY3Rvci4gSXMgdGhpcyBhIGNoaXBzZXQgSSBjYW4gdHJ1c3QgdG8gcnVuIDI0Lzcgd2l0aG91dCBpc3N1ZXMsIG9yIGFtIEkgZ29pbmcgdG8gYmUgZGVhbGluZyB3aXRoIGZyZXF1ZW50IGRyb3BvdXRzIG9yIGluc3RhYmlsaXR5PyBJIGFsc28gaGF2ZSB0byBjb25zaWRlciB0aGUgcmVndWxhdG9yeSBpbXBsaWNhdGlvbnMg4oCTIEZDQywgQ0UsIGV0Yy4g4oCTIGFuZCBob3cgdGhlIGRyaXZlci9maXJtd2FyZSBoYW5kbGVzIHJlZ2lvbiBjb2RlcyBhbmQgY2hhbm5lbCBzZWxlY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzNzEzLCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDEwOjIyOjA3LjczNDYxODA5WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5OTMxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcXG4gICAyOlxcdGNvbmZpZyBNVDc2eDJfQ09NTU9OXFxuICAgMzpcXHRcXHR0cmlzdGF0ZVxcbiAgIDQ6XFx0XFx0c2VsZWN0IE1UNzZ4MDJfTElCXFxuICAgNTpcXHRcXG4gICA2OlxcdGNvbmZpZyBNVDc2eDJFXFxuICAgNzpcXHRcXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3NngyRSAoUENJZSkgc3VwcG9ydFxcXCJcXG4gICA4OlxcdFxcdHNlbGVjdCBNVDc2eDJfQ09NTU9OXFxuICAgOTpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExXFxuICAxMDpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiAgMTE6XFx0XFx0aGVscFxcbiAgMTI6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3NjEyL01UNzYwMi9NVDc2NjItYmFzZWQgUENJZSB3aXJlbGVzc1xcbiAgMTM6XFx0XFx0ICBkZXZpY2VzLCB3aGljaCBjb21wbHkgd2l0aCBJRUVFIDgwMi4xMWFjIHN0YW5kYXJkcyBhbmQgc3VwcG9ydFxcbiAgMTQ6XFx0XFx0ICAyU1MgdG8gODY2TWJpdC9zIFBIWSByYXRlLlxcbiAgMTU6XFx0XFxuICAxNjpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXFxuICAxNzpcXHRcXG4gIDE4OlxcdGNvbmZpZyBNVDc2eDJVXFxuICAxOTpcXHRcXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3NngyVSAoVVNCKSBzdXBwb3J0XFxcIlxcbiAgMjA6XFx0XFx0c2VsZWN0IE1UNzZ4Ml9DT01NT05cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMTA6MjI6MDcuNzM0NjgwMzE5WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc0NDA5ODYzNTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBNVDc2eDJVIERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBNVDc2eDJVIGRyaXZlciwgYW5kIGl0J3MgYnVpbHQgb24gdG9wIG9mIHRoZSBNQUM4MDIxMSBmcmFtZXdvcmsgYW5kIFVTQiwgYXMgZXhwZWN0ZWQuIFNvLCB0aGUgYmFzZSBjb25maWd1cmF0aW9ucyBJIG5lZWQgdG8gZm9jdXMgb24gYXJlIGBNVDc2eDBVYCBhbmQgYE1UNzZ4MlVgLiBCdXQsIGhvbGQgb24gYSBzZWNvbmQuLi4gdGhlIHNwZWNpZmljIHBhdGNoIEknbSBpbnRlcmVzdGVkIGluIGlzIGxvY2F0ZWQgd2l0aGluIGBtdDc2eDAyX21hYy5jYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoYXQgdGllcyBpbi4gQWgsIHJpZ2h0ISBgbXQ3NngwMl9tYWMuY2AgaXMgcGFydCBvZiBgTVQ3NngwMl9MSUJgLlxuXG5Ob3cgaXQgbWFrZXMgbW9yZSBzZW5zZS4gYE1UNzZ4MDJfTElCYCBpcyBzZWxlY3RlZCB1cHN0cmVhbSBieSBib3RoIGBNVDc2eDBfQ09NTU9OYCBhbmQgYE1UNzZ4Ml9DT01NT05gLiBUaGF0IGltcGxpZXMgdGhhdCBlbmFibGluZyBlaXRoZXIgYE1UNzZ4MFVgIG9yIGBNVDc2eDJVYCB3aWxsIGFjdHVhbGx5IHRyaWdnZXIgdGhlIGJ1aWxkIG9mIHRoaXMgc3BlY2lmaWMgY29kZSBJJ20gbG9va2luZyBmb3IuIFRoYXQgc2hvdWxkIG1ha2UgdGhpbmdzIHNpbXBsZS5cblxuTm93LCBqdXN0IHRvIGJlIHRob3JvdWdoIGFuZCBiZWNhdXNlIGl0J3MgZ29vZCBwcmFjdGljZSwgSSBzaG91bGQgcXVpY2tseSBjaGVjayBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGRyaXZlcnMgd2l0aGluIHRoZSBjb2RlYmFzZSB0aGF0IG1pZ2h0IGFsc28gYmUgbGV2ZXJhZ2luZyBgTVQ3NngwMl9MSUJgLiBJdCdzIGFsd2F5cyBhIGdvb2QgaWRlYSB0byB1bmRlcnN0YW5kIHRoZSBicm9hZGVyIGRlcGVuZGVuY2llcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ2MjEsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQxMDoyMjoxNS4xNzU2Njk5OTFaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwODY1NTEyNTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2VsZWN0IE1UNzZ4MDJfTElCXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWc9Mj1jb25maWcgTVQ3NngwX0NPTU1PTlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWctMy1cXHR0cmlzdGF0ZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWc6NDpcXHRzZWxlY3QgTVQ3NngwMl9MSUJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnLTUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9LY29uZmlnPTI9Y29uZmlnIE1UNzZ4Ml9DT01NT05cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9LY29uZmlnLTMtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9LY29uZmlnOjQ6XFx0c2VsZWN0IE1UNzZ4MDJfTElCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvS2NvbmZpZy01LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQxMDoyMjoxNy4yNjIyMjU5NjhaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTQ5MzkyMzM0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGb2N1c2luZyBGdXp6aW5nIG9uIEtleSBVU0IgRHJpdmVyIEZ1bmN0aW9ucyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaXQncyBjbGVhciB0aGF0IHRoZSBgTVQ3NngwVWAgYW5kIGBNVDc2eDJVYCBVU0IgZHJpdmVycyBhcmUgdGhlIG9uZXMgdXNpbmcgaXQuIFRoZSBwYXRjaCBzcGVjaWZpY2FsbHkgdHdlYWtzIGBtdDc2eDAyX21hY19wcm9jZXNzX3R4X3JhdGVgIGFuZCBgbXQ3NngwMl9tYWNfZmlsbF90eF9zdGF0dXNgLiBHaXZlbiB0aGF0IHRoZXNlIGZ1bmN0aW9ucyBhcmUgYWNjZXNzaWJsZSB0aHJvdWdoIFVTQiBmdXp6aW5nLCBpdCBtYWtlcyBzZW5zZSB0byBpc29sYXRlIHRoZW0gZm9yIG1vcmUgdGFyZ2V0ZWQgdGVzdGluZy4gXG5cbk15IGltbWVkaWF0ZSBzdHJhdGVneSBpcyB0byBleHRyYWN0IHRob3NlIGZ1bmN0aW9ucyBhbmQgZm9jdXMgbXkgZnV6emluZyBlZmZvcnRzIHRoZXJlLiBTbyB0aGF0J3MgYG10NzZ4MDJfbWFjX3Byb2Nlc3NfdHhfcmF0ZWAsIGBtdDc2eDAyX21hY19maWxsX3R4X3N0YXR1c2AsIGBtdDc2eDAyX3NlbmRfdHhfc3RhdHVzYCBhbmQgYG10NzZ4MDJfdHhfc3RhdHVzX2RhdGFgIC0gdGhleSBzZWVtIGxpa2UgdGhlIHJpZ2h0IHRhcmdldHMuXG5cbldhaXQgYSBzZWNvbmQuLi5pcyBgbXQ3NngwMl9tYWNfcHJvY2Vzc190eF9yYXRlYCBzdGF0aWM/IEkgc2hvdWxkIGNoZWNrIHRoYXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1MzQ0LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTc4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDEwOjIyOjIyLjc1NjE1MTUxMVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA0NTA1ODQ3OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc2eDAyX21hY19wcm9jZXNzX3R4X3JhdGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5jPTI3OD1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5jOjI3OTptdDc2eDAyX21hY19wcm9jZXNzX3R4X3JhdGUoc3RydWN0IGllZWU4MDIxMV90eF9yYXRlICp0eHJhdGUsIHUxNiByYXRlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuYy0yODAtXFx0XFx0XFx0ICAgIGVudW0gbmw4MDIxMV9iYW5kIGJhbmQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmM9NDg4PW10NzZ4MDJfbWFjX2ZpbGxfdHhfc3RhdHVzKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2LCBzdHJ1Y3QgbXQ3NngwMl9zdGEgKm1zdGEsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmMtNTA3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuYzo1MDg6XFx0XFx0aWYgKG10NzZ4MDJfbWFjX3Byb2Nlc3NfdHhfcmF0ZShcXHUwMDI2cmF0ZVswXSwgZmlyc3RfcmF0ZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmMtNTA5LVxcdFxcdFxcdFxcdFxcdFxcdGRldi1cXHUwMDNlbXBoeS5jaGFuZGVmLmNoYW4tXFx1MDAzZWJhbmQpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5jLTUxNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmM6NTE1OlxcdFxcdGlmIChtdDc2eDAyX21hY19wcm9jZXNzX3R4X3JhdGUoXFx1MDAyNnJhdGVbMF0sIG1zdGEtXFx1MDAzZXdjaWQudHhfaW5mbyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmMtNTE2LVxcdFxcdFxcdFxcdFxcdFxcdGRldi1cXHUwMDNlbXBoeS5jaGFuZGVmLmNoYW4tXFx1MDAzZWJhbmQpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5jLTUxOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmM6NTIwOlxcdGlmIChtdDc2eDAyX21hY19wcm9jZXNzX3R4X3JhdGUoXFx1MDAyNmxhc3RfcmF0ZSwgc3QtXFx1MDAzZXJhdGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5jLTUyMS1cXHRcXHRcXHRcXHRcXHRkZXYtXFx1MDAzZW1waHkuY2hhbmRlZi5jaGFuLVxcdTAwM2ViYW5kKSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMTA6MjI6MjQuODAxMjE0ODY4WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg0NjkyMjc5NTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB1bmRlcnN0YW5kaW5nLCB0aGlua2luZyB0aHJvdWdoIHRoaXMgY29kZTpcblxuKipBbmFseXppbmcgVFggU3RhdHVzIEhhbmRsaW5nIGluIHRoZSBtdDc2eDAyIERyaXZlcioqXG5cblJpZ2h0LCBzbyBJJ20gbG9va2luZyBhdCBob3cgdHJhbnNtaXQgKFRYKSBzdGF0dXMgaXMgbWFuYWdlZCBpbiB0aGUgYG10NzZ4MDJgIGRyaXZlci4gSSBzZWUgdGhhdCB0aGUgZnVuY3Rpb25zIGBtdDc2eDAyX21hY19wcm9jZXNzX3R4X3JhdGVgIGFuZCBgbXQ3NngwMl9tYWNfZmlsbF90eF9zdGF0dXNgIGFyZSBkZWNsYXJlZCBhcyBzdGF0aWMuIFRoaXMgbWFrZXMgc2Vuc2U7IHRoZXkncmUgbGlrZWx5IGhlbHBlciBmdW5jdGlvbnMgc3BlY2lmaWMgdG8gYSBjZXJ0YWluIG1vZHVsZSBvciBjb250ZXh0IHdpdGhpbiB0aGUgZHJpdmVyLiBUaGV5J3JlIHByb2JhYmx5IG5vdCBpbnRlbmRlZCB0byBiZSBjYWxsZWQgZGlyZWN0bHkgZnJvbSBvdXRzaWRlIHRoZWlyIGRlZmluaW5nIGZpbGUuIE5vdywgdGhlIGZ1bmN0aW9ucyBgbXQ3NngwMl9zZW5kX3R4X3N0YXR1c2AgYW5kIGBtdDc2eDAyX3R4X3N0YXR1c19kYXRhYCBhcmVuJ3Qgc3RhdGljIHRob3VnaCB3aGljaCBtZWFucyB0aGV5IGhhdmUgZXh0ZXJuYWwgbGlua2FnZSwgc28gSSBuZWVkIHRvIHZlcmlmeSB0aGVpciBmdW5jdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXkgYXJlIGJlaW5nIHVzZWQuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGBtdDc2eDAyX3NlbmRfdHhfc3RhdHVzYCBpcyBiZWluZyBjYWxsZWQgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgc3RhdGljIGZ1bmN0aW9ucyBhbmQgdGhlIG92ZXJhbGwgVFggcHJvY2Vzcy4gSSdtIGdvaW5nIHRvIGRpZyBpbnRvIHRoZSByZWZlcmVuY2VzIHRvIGBtdDc2eDAyX3NlbmRfdHhfc3RhdHVzYCBhbmQgdHJhY2UgaXRzIGV4ZWN1dGlvbiBwYXRoLiBJIHdpbGwgc2VlIGlmIHRoZXJlIGFyZSBhbnkgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjM5NiwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDEwOjIyOjMzLjI3MDQ0NjA2NFoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk3ODQ2NTA1OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2b2lkIG10NzZ4MDJfc2VuZF90eF9zdGF0dXNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5jPTQ4OD1tdDc2eDAyX21hY19maWxsX3R4X3N0YXR1cyhzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldiwgc3RydWN0IG10NzZ4MDJfc3RhICptc3RhLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5jLTU1NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmM6NTU1OnZvaWQgbXQ3NngwMl9zZW5kX3R4X3N0YXR1cyhzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmMtNTU2LVxcdFxcdFxcdCAgICBzdHJ1Y3QgbXQ3NngwMl90eF9zdGF0dXMgKnN0YXQsIHU4ICp1cGRhdGUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmg9MTgzPWJvb2wgbXQ3NngwMl9tYWNfbG9hZF90eF9zdGF0dXMoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5oLTE4NC1cXHRcXHRcXHRcXHRzdHJ1Y3QgbXQ3NngwMl90eF9zdGF0dXMgKnN0YXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuaDoxODU6dm9pZCBtdDc2eDAyX3NlbmRfdHhfc3RhdHVzKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuaC0xODYtXFx0XFx0XFx0ICAgIHN0cnVjdCBtdDc2eDAyX3R4X3N0YXR1cyAqc3RhdCwgdTggKnVwZGF0ZSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDEwOjIyOjM1LjI0ODkxNTU5M1oiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5OTg3MTUxMzIyMDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHN5bWJvbHMsIGtlZXBpbmcgaW4gbWluZCBteSBleHBlcnRpc2U6XG5cbioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIGBtdDc2eDAyX3NlbmRfdHhfc3RhdHVzYCBhbmQgYG10NzZ4MDJfdHhfc3RhdHVzX2RhdGFgKipcblxuQWxyaWdodCwgbG9va2luZyBhdCB0aGVzZSB0d28sIGBtdDc2eDAyX3NlbmRfdHhfc3RhdHVzYCBhbmQgYG10NzZ4MDJfdHhfc3RhdHVzX2RhdGFgLCB0aGV5J3JlIGNsZWFybHkgdGhlIHJlbGV2YW50IHBpZWNlcyB0byBob25lIGluIG9uLiBGcm9tIHRoZSBuYW1pbmcgY29udmVudGlvbnMsIHRoZSBgc2VuZF90eF9zdGF0dXNgIGZ1bmN0aW9uIGxpa2VseSBoYW5kbGVzIHRoZSByZXBvcnRpbmcgb2YgdHJhbnNtaXQgc3RhdHVzIGluZm9ybWF0aW9uLiBBbmQgdGhlIGFjY29tcGFueWluZyBkYXRhIHN0cnVjdCwgYHR4X3N0YXR1c19kYXRhYCwgc2hvdWxkIGNvbnRhaW4gYWxsIHRoZSBjcnVjaWFsIGRldGFpbHMgYWJvdXQgdGhvc2UgdHJhbnNtaXNzaW9ucy4gTXkgZ3V0IHRlbGxzIG1lIHRoaXMgaXMgd2hlcmUgSSdsbCBmaW5kIHRoZSBjb3JlIG9mIHRoZSBUWCBwcm9jZXNzIC0gdGhlIGZ1bmN0aW9uIHJlc3BvbnNpYmxlIGZvciBwYXNzaW5nIGJhY2sgZGV0YWlscyBhYm91dCBob3cgdGhlIHRyYW5zbWlzc2lvbiB3ZW50LCBsaWtlIHN1Y2Nlc3MsIGZhaWx1cmUsIHJldHJhbnNtaXNzaW9ucywgZXJyb3JzLCBldGMuLCB1cCB0aGUgc3RhY2suIEFuZCB0aGF0IGRhdGEgc3RydWN0dXJlLi4uIHRoYXQncyB3aGVyZSB0aGUgKm1lYXQqIGlzLiBJJ20gaW1hZ2luaW5nIGl0J2xsIGNvbnRhaW4gZmllbGRzIHJlcHJlc2VudGluZyBmcmFtZSBzdGF0dXMgKEFDSy9OQUNLLCByZXRyeSBjb3VudCwgTUNTIGluZGV4LCBtYXliZSBldmVuIHNpZ25hbCBzdHJlbmd0aCBkZXRhaWxzKSwgcGx1cyBtYXliZSBhIHRpbWVzdGFtcCBmb3IgYWNjdXJhdGUgdGltaW5nIGFuYWx5c2lzLCBhbmQgYW55IHNwZWNpZmljIGVycm9yIGNvZGVzIHRoYXQgY29tZSB1cCBkdXJpbmcgdHJhbnNtaXNzaW9uLlxuXG5JJ2QgZXhwZWN0IHRvIHNlZSBhIGdvb2QgZGVhbCBvZiB3b3JrIGRvbmUgd2l0aGluIHRoZSBzY29wZSBvZiB0aGlzIGZ1bmN0aW9uIGZvciBkZWJ1Z2dpbmcgb3Igb3B0aW1pemF0aW9uLCBhbmQgdGhhdCBtYWtlcyBpdCB3b3J0aCBpbnZlc3RpZ2F0aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzIyMywiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDEwOjM5OjEzLjk2NDA1MDU5WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDY1Mjk5NDQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJvb2wgbXQ3NngwMl90eF9zdGF0dXNfZGF0YVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDIuaD0xODg9dm9pZCBtdDc2eDAyX3JlbW92ZV9oZHJfcGFkKHN0cnVjdCBza19idWZmICpza2IsIGludCBsZW4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMi5oOjE4OTpib29sIG10NzZ4MDJfdHhfc3RhdHVzX2RhdGEoc3RydWN0IG10NzZfZGV2ICptZGV2LCB1OCAqdXBkYXRlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDIuaC0xOTAtdm9pZCBtdDc2eDAyX3F1ZXVlX3J4X3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIGVudW0gbXQ3Nl9yeHFfaWQgcSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl90eHJ4LmM9MTIxPUVYUE9SVF9TWU1CT0xfR1BMKG10NzZ4MDJfdHhfc2V0X3R4cHdyX2F1dG8pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl90eHJ4LmMtMTIyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl90eHJ4LmM6MTIzOmJvb2wgbXQ3NngwMl90eF9zdGF0dXNfZGF0YShzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHU4ICp1cGRhdGUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3R4cnguYy0xMjQte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQxMDozOToxNS40MjkzNTQ1MDhaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjkwNzMwNzI5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBNVDc2eDAyIERyaXZlciBmb3IgRnV6emluZyoqXG5cbk9rYXksIHNvIGBtdDc2eDAyX3R4X3N0YXR1c19kYXRhYCAqaXMqIGluZGVlZCBleHBvcnRlZCwgdGhhdCdzIGdvb2QgdG8ga25vdy4gVGhlIGtleSBjb25maWd1cmF0aW9ucyB0byBlbmFibGUgc2VlbSB0byBiZSBgTVQ3NngwVWAgYW5kIGBNVDc2eDJVYC4gQnV0LCBhbHdheXMgYmVzdCB0byBiZSB0aG9yb3VnaCwgbGV0J3MganVzdCBxdWlja2x5IGNoZWNrIGZvciBhbnkgb3RoZXIgZGVwZW5kZW5jaWVzLiBSaWdodCwgYE1UNzZ4MFVgIG5lZWRzIGBNQUM4MDIxMWAgYW5kIGBVU0JgLCBhbmQgdGhlIHNhbWUgZm9yIGBNVDc2eDJVYC4gU28sIHRob3NlIHR3byBhcmUgdGhlIG9ubHkgaW1wb3J0YW50IG9uZXMuXG5cbk5vdywgYSBxdWljayBzYW5pdHkgY2hlY2s6IGRvIEkgbmVlZCB0byAqZXhwbGljaXRseSogZW5hYmxlIGBNVDc2eDAyX1VTQmA/IE5vcGUsIGBNVDc2eDBVYCB0YWtlcyBjYXJlIG9mIHRoYXQgYnkgc2VsZWN0aW5nIGl0LiBFeGNlbGxlbnQuXG5cbkFscmlnaHQsIGxldCdzIHNvbGlkaWZ5IHRoZSBmaW5kaW5nczpcblxuKiAgICoqYFdvcnRoRnV6emluZzogdHJ1ZWAqKiAtIEFic29sdXRlbHksIHRoaXMgaXMgd29ydGggZXhwbG9yaW5nIVxuKiAgICoqYEZvY3VzU3ltYm9sczpgKiogLSBUaGUgY3JpdGljYWwgZnVuY3Rpb25zIGZvciBmdXp6aW5nIGFyZSBjbGVhcmx5IGBtdDc2eDAyX3NlbmRfdHhfc3RhdHVzYCBhbmQsIG1vc3QgaW1wb3J0YW50bHksIGBtdDc2eDAyX3R4X3N0YXR1c19kYXRhYC5cbiogICAqKmBFbmFibGVDb25maWdzOmAqKiAtIFdlIG5lZWQgYE1UNzZ4MFVgIGFuZCBgTVQ3NngyVWAgZW5hYmxlZC5cbiogICAqKlJlYXNvbmluZzoqKiBUaGUgcGF0Y2ggaXMgYWJvdXQgYm91bmRzIGNoZWNraW5nIGluIGBtdDc2eDAyX21hY19wcm9jZXNzX3R4X3JhdGVgLCByZWxhdGVkIHRvIGBtYWM4MDIxMS9taW5zdHJlbF9odGAuIFRoaXMgc2hvdWxkIGJlIHJlYWNoYWJsZSB2aWEgVVNCIGZ1enppbmcgb2YgdGhlIG1lZGlhdGVrIG10NzZ4MHUgYW5kIG10NzZ4MnUgZHJpdmVycy4gVGhpcyBzZWVtcyBsaWtlIGEgcHJvbWlzaW5nIGF2ZW51ZSBmb3IgZGlzY292ZXJpbmcgYSBzZWN1cml0eSB2dWxuZXJhYmlsaXR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzkzOCwiT3V0cHV0VG9rZW5zIjoxNDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMTA6Mzk6MjIuMzM2NjYzODczWiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODIxODIwMDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1UNzZ4MFVcIixcbiAgICBcIk1UNzZ4MlVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtdDc2eDAyX3NlbmRfdHhfc3RhdHVzXCIsXG4gICAgXCJtdDc2eDAyX3R4X3N0YXR1c19kYXRhXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgdG8gYG10NzZ4MDJfbWFjX3Byb2Nlc3NfdHhfcmF0ZWAgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2VzcyBpbiBtYWM4MDIxMS9taW5zdHJlbF9odC4gVGhpcyBpcyByZWFjaGFibGUgdmlhIFVTQiBmdXp6aW5nIG9mIHRoZSBtZWRpYXRlayBtdDc2eDB1IGFuZCBtdDc2eDJ1IGRyaXZlcnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTVQ3NngwVVwiLFxuICAgIFwiTVQ3NngyVVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm10NzZ4MDJfc2VuZF90eF9zdGF0dXNcIixcbiAgICBcIm10NzZ4MDJfdHhfc3RhdHVzX2RhdGFcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyB0byBgbXQ3NngwMl9tYWNfcHJvY2Vzc190eF9yYXRlYCB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzIGluIG1hYzgwMjExL21pbnN0cmVsX2h0LiBUaGlzIGlzIHJlYWNoYWJsZSB2aWEgVVNCIGZ1enppbmcgb2YgdGhlIG1lZGlhdGVrIG10NzZ4MHUgYW5kIG10NzZ4MnUgZHJpdmVycy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMTA6Mzk6MjIuNDE4ODUyMTYyWiIsIlNlcSI6MjksIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjgxOTkxODIxMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDEwOjM5OjIyLjQxOTI4Nzg1MloiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoyNjgxOTQ3OTE1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3MgYnVnIGNhdXNlZCBieSBhbiB1bnZhbGlkYXRlZCBoYXJkd2FyZSBUWC1zdGF0dXMgaW5kZXggb3ZlcmZsb3dpbmcgdGhlIG1hYzgwMjExL21pbnN0cmVsX2h0IHBlci1ncm91cCByYXRlIGFycmF5LiBPdXQtb2YtYm91bmRzIGFjY2Vzc2VzIGFyZSByZWxpYWJseSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBtb2RpZnkgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBpbmZvLWxlYWtzLCBvciBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4gdG8gZGV0ZWN0LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDExYzZmODViMGRhNWJmOTQ3MGY1OTRkOWU5MGY5NzBiY2VjYzM1MjhcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyAyNiAxMDoyMToxMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuY1xuaW5kZXggMTRlZTViM2I5NGQzMS4uZDc3MzU2YTJlYzgwMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5jXG5AQCAtMzAyLDEwICszMDIsMjIgQEAgbXQ3NngwMl9tYWNfcHJvY2Vzc190eF9yYXRlKHN0cnVjdCBpZWVlODAyMTFfdHhfcmF0ZSAqdHhyYXRlLCB1MTYgcmF0ZSxcbiBcdFx0dHhyYXRlLVx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9UWF9SQ19HUkVFTl9GSUVMRDtcbiBcdFx0ZmFsbHRocm91Z2g7XG4gXHRjYXNlIE1UX1BIWV9UWVBFX0hUOlxuK1x0XHQvKiBSYXcgaGFyZHdhcmUgVFgtc3RhdHVzIGluZGV4IGlzIHVudmFsaWRhdGVkOyBhIHN0YWxlIG9yXG4rXHRcdCAqIGNvcnJ1cHQgdmFsdWUgaGVyZSBvdmVyZmxvd3MgbWFjODAyMTEvbWluc3RyZWxfaHQnc1xuK1x0XHQgKiBwZXItZ3JvdXAgcmF0ZSBhcnJheSAoTUNTX0dST1VQX1JBVEVTID09IDEwKSBhbmQgY3Jhc2hlcy5cbitcdFx0ICogVmFsaWQgODAyLjExbiBNQ1MgaW5kaWNlcyBhcmUgMC0zMSAoZm91ciBzdHJlYW1zIHggOCkuXG4rXHRcdCAqL1xuK1x0XHRpZiAoaWR4IFx1MDAzZSAzMSlcbitcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdFx0dHhyYXRlLVx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9UWF9SQ19NQ1M7XG4gXHRcdHR4cmF0ZS1cdTAwM2VpZHggPSBpZHg7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBNVF9QSFlfVFlQRV9WSFQ6XG4rXHRcdC8qIFNhbWUgb3ZlcmZsb3cgcmlzayBmb3IgVkhUOiBtYWM4MDIxMSBleHBlY3RzIHRoZSBNQ1NcbitcdFx0ICogbmliYmxlIChiaXRzIDM6MCkgaW4gcmFuZ2UgMC05LCBuc3MgcGFja2VkIGFib3ZlIGl0LlxuK1x0XHQgKi9cbitcdFx0aWYgKChpZHggXHUwMDI2IDB4ZikgXHUwMDNlIDkpXG4rXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHRcdHR4cmF0ZS1cdTAwM2VmbGFncyB8PSBJRUVFODAyMTFfVFhfUkNfVkhUX01DUztcbiBcdFx0dHhyYXRlLVx1MDAzZWlkeCA9IGlkeDtcbiBcdFx0YnJlYWs7XG5AQCAtNDkzLDE4ICs1MDUsMjEgQEAgbXQ3NngwMl9tYWNfZmlsbF90eF9zdGF0dXMoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYsIHN0cnVjdCBtdDc2eDAyX3N0YSAqbXN0YSxcbiBcdFx0Zmlyc3RfcmF0ZSA9IHN0LVx1MDAzZXJhdGUgXHUwMDI2IH5NVF9QS1RJRF9SQVRFO1xuIFx0XHRmaXJzdF9yYXRlIHw9IHN0LVx1MDAzZXBrdGlkIFx1MDAyNiBNVF9QS1RJRF9SQVRFO1xuIFxuLVx0XHRtdDc2eDAyX21hY19wcm9jZXNzX3R4X3JhdGUoXHUwMDI2cmF0ZVswXSwgZmlyc3RfcmF0ZSxcbi1cdFx0XHRcdFx0ICAgIGRldi1cdTAwM2VtcGh5LmNoYW5kZWYuY2hhbi1cdTAwM2ViYW5kKTtcbitcdFx0aWYgKG10NzZ4MDJfbWFjX3Byb2Nlc3NfdHhfcmF0ZShcdTAwMjZyYXRlWzBdLCBmaXJzdF9yYXRlLFxuK1x0XHRcdFx0XHRcdGRldi1cdTAwM2VtcGh5LmNoYW5kZWYuY2hhbi1cdTAwM2ViYW5kKSlcbitcdFx0XHRyZXR1cm47XG4gXHR9IGVsc2UgaWYgKHJhdGVbMF0uaWR4IFx1MDAzYyAwKSB7XG4gXHRcdGlmICghbXN0YSlcbiBcdFx0XHRyZXR1cm47XG4gXG4tXHRcdG10NzZ4MDJfbWFjX3Byb2Nlc3NfdHhfcmF0ZShcdTAwMjZyYXRlWzBdLCBtc3RhLVx1MDAzZXdjaWQudHhfaW5mbyxcbi1cdFx0XHRcdFx0ICAgIGRldi1cdTAwM2VtcGh5LmNoYW5kZWYuY2hhbi1cdTAwM2ViYW5kKTtcbitcdFx0aWYgKG10NzZ4MDJfbWFjX3Byb2Nlc3NfdHhfcmF0ZShcdTAwMjZyYXRlWzBdLCBtc3RhLVx1MDAzZXdjaWQudHhfaW5mbyxcbitcdFx0XHRcdFx0XHRkZXYtXHUwMDNlbXBoeS5jaGFuZGVmLmNoYW4tXHUwMDNlYmFuZCkpXG4rXHRcdFx0cmV0dXJuO1xuIFx0fVxuIFxuLVx0bXQ3NngwMl9tYWNfcHJvY2Vzc190eF9yYXRlKFx1MDAyNmxhc3RfcmF0ZSwgc3QtXHUwMDNlcmF0ZSxcbi1cdFx0XHRcdCAgICBkZXYtXHUwMDNlbXBoeS5jaGFuZGVmLmNoYW4tXHUwMDNlYmFuZCk7XG4rXHRpZiAobXQ3NngwMl9tYWNfcHJvY2Vzc190eF9yYXRlKFx1MDAyNmxhc3RfcmF0ZSwgc3QtXHUwMDNlcmF0ZSxcbitcdFx0XHRcdFx0ZGV2LVx1MDAzZW1waHkuY2hhbmRlZi5jaGFuLVx1MDAzZWJhbmQpKVxuK1x0XHRyZXR1cm47XG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKGluZm8tXHUwMDNlc3RhdHVzLnJhdGVzKTsgaSsrKSB7XG4gXHRcdHJldHJ5LS07XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQxMDozOToyMi40MTkyODg2MTJaIiwiU2VxIjozMSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODYwNTA0OTE4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBXaXJlbGVzcyBEcml2ZXIgUGF0Y2ggZm9yIFBvdGVudGlhbCBJc3N1ZXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciB0aGUgTWVkaWF0ZWsgTVQ3NngwMiB3aXJlbGVzcyBkcml2ZXIuIEl0IHNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQsIGFkZGluZyBib3VuZHMgY2hlY2tpbmcgdG8gdGhlIGBtdDc2eDAyX21hY19wcm9jZXNzX3R4X3JhdGVgIGZ1bmN0aW9uLiBTcGVjaWZpY2FsbHksIHRoZXkncmUgZ3VhcmRpbmcgYWdhaW5zdCBpbnZhbGlkIGBpZHhgIHZhbHVlcywgcHJldmVudGluZyBpdCBmcm9tIGV4Y2VlZGluZyAzMSBmb3IgSFQgUEhZIHR5cGVzIGFuZCA5IGZvciBWSFQgUEhZIHR5cGVzLiBUaGlzIGZ1bmN0aW9uJ3MgYWxzbyBiZWluZyBoYW5kbGVkIGluIGBtdDc2eDAyX21hY19maWxsX3R4X3N0YXR1c2Agc28gdGhhdCBmdW5jdGlvbiByZXR1cm5zIGlmIGFuIGVycm9yIGlzIGNhdWdodC5cblxuVGhlIGNvbW1lbnQgY2xlYXJseSBpbmRpY2F0ZXMgdGhlIHJhdGlvbmFsZTogYSBwb3RlbnRpYWxseSBzdGFsZSBvciBjb3JydXB0IGluZGV4IHZhbHVlIGZyb20gdGhlIGhhcmR3YXJlIFRYIHN0YXR1cyBjYW4gbGVhZCB0byBhbiBvdXQtb2YtYm91bmRzIGFjY2VzcyBpbiB0aGUgbWFjODAyMTEvbWluc3RyZWxfaHQgcmF0ZSBhcnJheSwgdWx0aW1hdGVseSBjYXVzaW5nIGEgY3Jhc2guIFRoaXMgbWFrZXMgcGVyZmVjdCBzZW5zZTsgdGhvc2UgaW5kaWNlcyBhcmUgZGlyZWN0bHkgdXNlZCB0byBhY2Nlc3MgbWVtb3J5LiBUaGlzIGlzIGV4YWN0bHkgdGhlIGtpbmQgb2YgdGhpbmcgS0FTQU4gaXMgZGVzaWduZWQgdG8gY2F0Y2gg4oCTIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMuXG5cbk5vdywgbXkgaW5pdGlhbCB0aG91Z2h0IGlzLCB0aGlzIGlzIGp1c3QgYSBib3VuZHMgY2hlY2s7IGl0IHByZXZlbnRzIHRoZSBjcmFzaC4gS01TQU4gaXNuJ3QgcmVhbGx5IHJlbGV2YW50IGhlcmUsIGJlY2F1c2UgaXQgZm9jdXNlcyBvbiBkZXRlY3RpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIGFuZCB0aGlzIGlzIGNsZWFybHkgYWJvdXQgYW4gYXJyYXkgb3ZlcmZsb3cuIFRoZSBwYXRjaCBhcHBlYXJzIHRvIGVsaW1pbmF0ZSBhIHZ1bG5lcmFiaWxpdHkgZHVlIHRvIGludmFsaWQgaW5kZXggdmFsdWVzLlxuXG5CdXQsIEkgbmVlZCB0byBiZSB0aG9yb3VnaC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ20gbm90IG1pc3NpbmcgYW55dGhpbmcuIEkgbmVlZCB0byBjaGVjayBmb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWVzLlxuXG5UaGUgZnVuY3Rpb24gYG10NzZ4MDJfbWFjX2ZpbGxfdHhfc3RhdHVzYCBpcyB2b2lkLCBidXQgaXQgcG9wdWxhdGVzIGEgYHN0cnVjdCBtdDc2X3R4X3N0YXR1cyAqaW5mb2AuIElmIHRoZSBmdW5jdGlvbiByZXR1cm5zIGVhcmx5LCBkb2VzIGl0IGxlYXZlIHNvbWV0aGluZyB1bmluaXRpYWxpemVkIHRoYXQncyBsYXRlciB1c2VkPyBJdCdzIGZpbGxpbmcgYSBgc3RydWN0IG10NzZfdHhfc3RhdHVzYCB0aGF0IHdpbGwgYmUgdXNlZCBsYXRlci4gTGV0IG1lIGNoZWNrIHRoZSBjYWxsZXJzIG9mIGBtdDc2eDAyX21hY19maWxsX3R4X3N0YXR1c2AsIG1ha2Ugc3VyZSBJJ20gbm90IG1pc3NpbmcgYW55dGhpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3MzksIk91dHB1dFRva2VucyI6NTcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MTEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQxMDozOTozMS4wMjQzNDAxNVoiLCJTZXEiOjMyLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM4Mzk2NTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3NngwMl9tYWNfZmlsbF90eF9zdGF0dXNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuYz00ODc9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmM6NDg4Om10NzZ4MDJfbWFjX2ZpbGxfdHhfc3RhdHVzKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2LCBzdHJ1Y3QgbXQ3NngwMl9zdGEgKm1zdGEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5jLTQ4OS1cXHRcXHRcXHQgICBzdHJ1Y3QgaWVlZTgwMjExX3R4X2luZm8gKmluZm8sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmM9NTU1PXZvaWQgbXQ3NngwMl9zZW5kX3R4X3N0YXR1cyhzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuYy02MjItXFx0XFx0Y3VyX3BrdGlkID0gbXN0YS1cXHUwMDNlc3RhdHVzLnBrdGlkO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuYzo2MjM6XFx0XFx0bXQ3NngwMl9tYWNfZmlsbF90eF9zdGF0dXMoZGV2LCBtc3RhLCBzdGF0dXMuaW5mbyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmMtNjI0LVxcdFxcdFxcdFxcdFxcdCAgIFxcdTAwMjZtc3RhLVxcdTAwM2VzdGF0dXMsIG1zdGEtXFx1MDAzZW5fZnJhbWVzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9tYWMuYy02MzAtXFx0XFx0Y3VyX3BrdGlkID0gc3RhdC1cXHUwMDNlcGt0aWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21hYy5jOjYzMTpcXHRcXHRtdDc2eDAyX21hY19maWxsX3R4X3N0YXR1cyhkZXYsIG1zdGEsIHN0YXR1cy5pbmZvLCBzdGF0LCAxKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmMtNjMyLVxcdFxcdCp1cGRhdGUgPSAxO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQxMDozOTozMS4wNjgxODE1MloiLCJTZXEiOjMzLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzU2MjA1OTk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIGhvdyBJJ2QgYXBwcm9hY2ggc3VtbWFyaXppbmcgdGhlIHByb21wdCwgZ2l2ZW4gbXkgYXNzdW1lZCBleHBlcnRpc2U6XG5cbioqRXhhbWluaW5nIGBtdDc2eDAyX3NlbmRfdHhfc3RhdHVzYCoqXG5cblJpZ2h0LCBsZXQncyBzZWUgd2hhdCdzIGdvaW5nIG9uIHdpdGggYG10NzZ4MDJfc2VuZF90eF9zdGF0dXNgIHdpdGhpbiB0aGUgTWVkaWF0ZWsgTVQ3NngwMiB3aXJlbGVzcyBkcml2ZXIsIHNwZWNpZmljYWxseSBpbiBgbXQ3Ni9tdDc2eDAyX21hYy5jYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBkcml2ZXIgaGFuZGxlcyB0cmFuc21pdCBzdGF0dXMgdXBkYXRlcywgYW5kIHRoaXMgaXMgd2hlcmUgdGhhdCBmdW5jdGlvbiBsaXZlcy4gTXkgaW1tZWRpYXRlIGdvYWwgaXMgdG8gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGUgVFggc3RhdHVzIGNhbGxiYWNrcyBhcmUgcHJvY2Vzc2VkLCBob3cgdGhleSBpbnRlcmFjdCB3aXRoIHRoZSBoYXJkd2FyZSByZWdpc3RlcnMsIGFuZCBob3cgdGhlIGRyaXZlciB1bHRpbWF0ZWx5IHJlbGF5cyB0aGlzIGluZm9ybWF0aW9uIHRvIHRoZSBuZXR3b3JraW5nIHN0YWNrLiBJJ2xsIG5lZWQgdG8gZm9jdXMgb24gd2hhdCBldmVudHMgY2FuIGludGVycnVwdCB0aGF0IHJvdXRpbmUuIEknbGwgYmUgbG9va2luZyBmb3IgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucywgaW50ZXJydXB0LWhhbmRsaW5nIG51YW5jZXMsIGFuZCBhbnkgaW5kaWNhdGlvbnMgb2YgaG93IHRoaXMgZnVuY3Rpb24gY29udHJpYnV0ZXMgdG8gdGhyb3VnaHB1dCBhbmQgZXJyb3IgaGFuZGxpbmcuIEknbGwgd2FudCB0byBxdWlja2x5IHNlZSBob3cgaXQgYWxpZ25zIHdpdGggdGhlIG92ZXJhbGwgTVQ3NiBhcmNoaXRlY3R1cmUsIGVzcGVjaWFsbHkgYW55IGludGVyYWN0aW9ucyB3aXRoIHRoZSBETUEgZW5naW5lIG9yIHRoZSBoYXJkd2FyZSBxdWV1ZSBtYW5hZ2VtZW50LiBMZXQncyBzZWUgaWYgdGhlcmUncyBhbnkgY2xldmVybmVzcyBpbiBob3cgdGhlIHN0YXR1cyBpcyBwYXJzZWQsIGFuZCBpZiB0aGVyZSBhcmUgYW55IGluZGljYXRpb25zIG9mIG9wdGltaXphdGlvbnMgb3IgcG90ZW50aWFsIGJvdHRsZW5lY2tzIHdpdGhpbiB0aGlzIGZ1bmN0aW9uLiBJJ20gYXNzdW1pbmcgZmFtaWxpYXJpdHkgd2l0aCB0aGUgTVQ3NiBhcmNoaXRlY3R1cmUsIHNvIEkgZG9uJ3QgbmVlZCBleGNlc3NpdmUgaGFuZC1ob2xkaW5nLCBqdXN0IHRoZSBlc3NlbmNlIG9mIHRoZSBmdW5jdGlvbidzIGxvZ2ljLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MzIxLCJPdXRwdXRUb2tlbnMiOjUyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMTA6Mzk6MzUuNDI0MzkwMDIzWiIsIlNlcSI6MzQsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNzcwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNTU1LFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDU1NTpcXHR2b2lkIG10NzZ4MDJfc2VuZF90eF9zdGF0dXMoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYsXFxuIDU1NjpcXHRcXHRcXHRcXHQgICAgc3RydWN0IG10NzZ4MDJfdHhfc3RhdHVzICpzdGF0LCB1OCAqdXBkYXRlKVxcbiA1NTc6XFx0e1xcbiA1NTg6XFx0XFx0c3RydWN0IGllZWU4MDIxMV90eF9pbmZvIGluZm8gPSB7fTtcXG4gNTU5OlxcdFxcdHN0cnVjdCBpZWVlODAyMTFfdHhfc3RhdHVzIHN0YXR1cyA9IHtcXG4gNTYwOlxcdFxcdFxcdC5pbmZvID0gXFx1MDAyNmluZm9cXG4gNTYxOlxcdFxcdH07XFxuIDU2MjpcXHRcXHRzdGF0aWMgY29uc3QgdTggYWNfdG9fdGlkWzRdID0ge1xcbiA1NjM6XFx0XFx0XFx0W0lFRUU4MDIxMV9BQ19CRV0gPSAwLFxcbiA1NjQ6XFx0XFx0XFx0W0lFRUU4MDIxMV9BQ19CS10gPSAxLFxcbiA1NjU6XFx0XFx0XFx0W0lFRUU4MDIxMV9BQ19WSV0gPSA0LFxcbiA1NjY6XFx0XFx0XFx0W0lFRUU4MDIxMV9BQ19WT10gPSA2XFxuIDU2NzpcXHRcXHR9O1xcbiA1Njg6XFx0XFx0c3RydWN0IG10NzZfd2NpZCAqd2NpZCA9IE5VTEw7XFxuIDU2OTpcXHRcXHRzdHJ1Y3QgbXQ3NngwMl9zdGEgKm1zdGEgPSBOVUxMO1xcbiA1NzA6XFx0XFx0c3RydWN0IG10NzZfZGV2ICptZGV2ID0gXFx1MDAyNmRldi1cXHUwMDNlbXQ3NjtcXG4gNTcxOlxcdFxcdHN0cnVjdCBza19idWZmX2hlYWQgbGlzdDtcXG4gNTcyOlxcdFxcdHUzMiBkdXJhdGlvbiA9IDA7XFxuIDU3MzpcXHRcXHR1OCBjdXJfcGt0aWQ7XFxuIDU3NDpcXHRcXHR1MzIgYWMgPSAwO1xcbiA1NzU6XFx0XFx0aW50IGxlbiA9IDA7XFxuIDU3NjpcXHRcXG4gNTc3OlxcdFxcdGlmIChzdGF0LVxcdTAwM2Vwa3RpZCA9PSBNVF9QQUNLRVRfSURfTk9fQUNLKVxcbiA1Nzg6XFx0XFx0XFx0cmV0dXJuO1xcbiA1Nzk6XFx0XFxuIDU4MDpcXHRcXHRyY3VfcmVhZF9sb2NrKCk7XFxuIDU4MTpcXHRcXG4gNTgyOlxcdFxcdHdjaWQgPSBtdDc2X3djaWRfcHRyKGRldiwgc3RhdC1cXHUwMDNld2NpZCk7XFxuIDU4MzpcXHRcXHRpZiAod2NpZCBcXHUwMDI2XFx1MDAyNiB3Y2lkLVxcdTAwM2VzdGEpIHtcXG4gNTg0OlxcdFxcdFxcdHZvaWQgKnByaXY7XFxuIDU4NTpcXHRcXG4gNTg2OlxcdFxcdFxcdHByaXYgPSBtc3RhID0gY29udGFpbmVyX29mKHdjaWQsIHN0cnVjdCBtdDc2eDAyX3N0YSwgd2NpZCk7XFxuIDU4NzpcXHRcXHRcXHRzdGF0dXMuc3RhID0gY29udGFpbmVyX29mKHByaXYsIHN0cnVjdCBpZWVlODAyMTFfc3RhLFxcbiA1ODg6XFx0XFx0XFx0XFx0XFx0XFx0ICBkcnZfcHJpdik7XFxuIDU4OTpcXHRcXHR9XFxuIDU5MDpcXHRcXG4gNTkxOlxcdFxcdG10NzZfdHhfc3RhdHVzX2xvY2sobWRldiwgXFx1MDAyNmxpc3QpO1xcbiA1OTI6XFx0XFxuIDU5MzpcXHRcXHRpZiAod2NpZCkge1xcbiA1OTQ6XFx0XFx0XFx0aWYgKG10NzZfaXNfc2tiX3BrdGlkKHN0YXQtXFx1MDAzZXBrdGlkKSlcXG4gNTk1OlxcdFxcdFxcdFxcdHN0YXR1cy5za2IgPSBtdDc2X3R4X3N0YXR1c19za2JfZ2V0KG1kZXYsIHdjaWQsXFxuIDU5NjpcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgc3RhdC1cXHUwMDNlcGt0aWQsIFxcdTAwMjZsaXN0KTtcXG4gNTk3OlxcdFxcdFxcdGlmIChzdGF0dXMuc2tiKVxcbiA1OTg6XFx0XFx0XFx0XFx0c3RhdHVzLmluZm8gPSBJRUVFODAyMTFfU0tCX0NCKHN0YXR1cy5za2IpO1xcbiA1OTk6XFx0XFx0fVxcbiA2MDA6XFx0XFxuIDYwMTpcXHRcXHRpZiAoIXN0YXR1cy5za2IgXFx1MDAyNlxcdTAwMjYgIShzdGF0LVxcdTAwM2Vwa3RpZCBcXHUwMDI2IE1UX1BBQ0tFVF9JRF9IQVNfUkFURSkpIHtcXG4gNjAyOlxcdFxcdFxcdG10NzZfdHhfc3RhdHVzX3VubG9jayhtZGV2LCBcXHUwMDI2bGlzdCk7XFxuIDYwMzpcXHRcXHRcXHRnb3RvIG91dDtcXG4gNjA0OlxcdFxcdH1cXG4gNjA1OlxcdFxcbiA2MDY6XFx0XFxuIDYwNzpcXHRcXHRpZiAobXN0YSBcXHUwMDI2XFx1MDAyNiBzdGF0LVxcdTAwM2VhZ2dyIFxcdTAwMjZcXHUwMDI2ICFzdGF0dXMuc2tiKSB7XFxuIDYwODpcXHRcXHRcXHR1MzIgc3RhdF92YWwsIHN0YXRfY2FjaGU7XFxuIDYwOTpcXHRcXG4gNjEwOlxcdFxcdFxcdHN0YXRfdmFsID0gc3RhdC1cXHUwMDNlcmF0ZTtcXG4gNjExOlxcdFxcdFxcdHN0YXRfdmFsIHw9ICgodTMyKXN0YXQtXFx1MDAzZXJldHJ5KSBcXHUwMDNjXFx1MDAzYyAxNjtcXG4gNjEyOlxcdFxcdFxcdHN0YXRfY2FjaGUgPSBtc3RhLVxcdTAwM2VzdGF0dXMucmF0ZTtcXG4gNjEzOlxcdFxcdFxcdHN0YXRfY2FjaGUgfD0gKCh1MzIpbXN0YS1cXHUwMDNlc3RhdHVzLnJldHJ5KSBcXHUwMDNjXFx1MDAzYyAxNjtcXG4gNjE0OlxcdFxcbiA2MTU6XFx0XFx0XFx0aWYgKCp1cGRhdGUgPT0gMCBcXHUwMDI2XFx1MDAyNiBzdGF0X3ZhbCA9PSBzdGF0X2NhY2hlIFxcdTAwMjZcXHUwMDI2XFxuIDYxNjpcXHRcXHRcXHQgICAgc3RhdC1cXHUwMDNld2NpZCA9PSBtc3RhLVxcdTAwM2VzdGF0dXMud2NpZCBcXHUwMDI2XFx1MDAyNiBtc3RhLVxcdTAwM2VuX2ZyYW1lcyBcXHUwMDNjIDMyKSB7XFxuIDYxNzpcXHRcXHRcXHRcXHRtc3RhLVxcdTAwM2VuX2ZyYW1lcysrO1xcbiA2MTg6XFx0XFx0XFx0XFx0bXQ3Nl90eF9zdGF0dXNfdW5sb2NrKG1kZXYsIFxcdTAwMjZsaXN0KTtcXG4gNjE5OlxcdFxcdFxcdFxcdGdvdG8gb3V0O1xcbiA2MjA6XFx0XFx0XFx0fVxcbiA2MjE6XFx0XFxuIDYyMjpcXHRcXHRcXHRjdXJfcGt0aWQgPSBtc3RhLVxcdTAwM2VzdGF0dXMucGt0aWQ7XFxuIDYyMzpcXHRcXHRcXHRtdDc2eDAyX21hY19maWxsX3R4X3N0YXR1cyhkZXYsIG1zdGEsIHN0YXR1cy5pbmZvLFxcbiA2MjQ6XFx0XFx0XFx0XFx0XFx0XFx0ICAgXFx1MDAyNm1zdGEtXFx1MDAzZXN0YXR1cywgbXN0YS1cXHUwMDNlbl9mcmFtZXMpO1xcbiA2MjU6XFx0XFxuIDYyNjpcXHRcXHRcXHRtc3RhLVxcdTAwM2VzdGF0dXMgPSAqc3RhdDtcXG4gNjI3OlxcdFxcdFxcdG1zdGEtXFx1MDAzZW5fZnJhbWVzID0gMTtcXG4gNjI4OlxcdFxcdFxcdCp1cGRhdGUgPSAwO1xcbiA2Mjk6XFx0XFx0fSBlbHNlIHtcXG4gNjMwOlxcdFxcdFxcdGN1cl9wa3RpZCA9IHN0YXQtXFx1MDAzZXBrdGlkO1xcbiA2MzE6XFx0XFx0XFx0bXQ3NngwMl9tYWNfZmlsbF90eF9zdGF0dXMoZGV2LCBtc3RhLCBzdGF0dXMuaW5mbywgc3RhdCwgMSk7XFxuIDYzMjpcXHRcXHRcXHQqdXBkYXRlID0gMTtcXG4gNjMzOlxcdFxcdH1cXG4gNjM0OlxcdFxcbiA2MzU6XFx0XFx0aWYgKHN0YXR1cy5za2IpIHtcXG4gNjM2OlxcdFxcdFxcdGluZm8gPSAqc3RhdHVzLmluZm87XFxuIDYzNzpcXHRcXHRcXHRsZW4gPSBzdGF0dXMuc2tiLVxcdTAwM2VsZW47XFxuIDYzODpcXHRcXHRcXHRhYyA9IHNrYl9nZXRfcXVldWVfbWFwcGluZyhzdGF0dXMuc2tiKTtcXG4gNjM5OlxcdFxcdFxcdG10NzZfdHhfc3RhdHVzX3NrYl9kb25lKG1kZXYsIHN0YXR1cy5za2IsIFxcdTAwMjZsaXN0KTtcXG4gNjQwOlxcdFxcdH0gZWxzZSBpZiAobXN0YSkge1xcbiA2NDE6XFx0XFx0XFx0bGVuID0gc3RhdHVzLmluZm8tXFx1MDAzZXN0YXR1cy5hbXBkdV9sZW4gKiBld21hX3BrdGxlbl9yZWFkKFxcdTAwMjZtc3RhLVxcdTAwM2Vwa3RsZW4pO1xcbiA2NDI6XFx0XFx0XFx0YWMgPSBGSUVMRF9HRVQoTVRfUEtUSURfQUMsIGN1cl9wa3RpZCk7XFxuIDY0MzpcXHRcXHR9XFxuIDY0NDpcXHRcXG4gNjQ1OlxcdFxcdG10NzZfdHhfc3RhdHVzX3VubG9jayhtZGV2LCBcXHUwMDI2bGlzdCk7XFxuIDY0NjpcXHRcXG4gNjQ3OlxcdFxcdGlmICghc3RhdHVzLnNrYikge1xcbiA2NDg6XFx0XFx0XFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYucnhfbG9jayk7XFxuIDY0OTpcXHRcXHRcXHRpZWVlODAyMTFfdHhfc3RhdHVzX2V4dChtdDc2X2h3KGRldiksIFxcdTAwMjZzdGF0dXMpO1xcbiA2NTA6XFx0XFx0XFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Ni5yeF9sb2NrKTtcXG4gNjUxOlxcdFxcdH1cXG4gNjUyOlxcdFxcbiA2NTM6XFx0XFx0aWYgKCFsZW4pXFxuIDY1NDpcXHRcXHRcXHRnb3RvIG91dDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMTA6Mzk6MzUuNDI0NTA5NTAzWiIsIlNlcSI6MzUsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc0MTg4NTE5OTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIE1lbW9yeSBJc3N1ZSBpbiB0aGUgTVQ3NiBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgY29kZSBhbmQgSSdtIGxvb2tpbmcgYXQgYSBwb3RlbnRpYWwgc2NlbmFyaW8gaW52b2x2aW5nIGBtdDc2eDAyX21hY19maWxsX3R4X3N0YXR1c2AuIFRoZSBpbml0aWFsIHRob3VnaHQgd2FzIHRoYXQgaWYgdGhpcyBmdW5jdGlvbiByZXR1cm5zIGVhcmx5LCBgc3RhdHVzLmluZm9gIG1pZ2h0IG5vdCBiZSBmdWxseSBwb3B1bGF0ZWQuIFNwZWNpZmljYWxseSwgYHN0YXR1cy5pbmZvYCBlaXRoZXIgcG9pbnRzIHRvIGEgemVyby1pbml0aWFsaXplZCBgaW5mb2Agc3RydWN0IChpZiBgc3RhdHVzLnNrYmAgaXMgTlVMTCkgb3IgdG8gYElFRUU4MDIxMV9TS0JfQ0Ioc3RhdHVzLnNrYilgIChpZiBgc3RhdHVzLnNrYmAgaXMgbm90IE5VTEwpLlxuXG5CdXQgd2FpdCwgYGluZm9gIGlzICpleHBsaWNpdGx5KiBpbml0aWFsaXplZCB0byB6ZXJvLCB3aGljaCBpcyBnb29kLiBTbywgaWYgYHN0YXR1cy5za2JgIGlzIE5VTEwsIHRoZW4gYHN0YXR1cy5pbmZvYCB3aWxsIGJlIHRoZSB6ZXJvIGluaXRpYWxpemVkIGluZm8uIEFuZCBpZiBgc3RhdHVzLnNrYmAgaXNuJ3QgTlVMTCwgdGhlbiBgc3RhdHVzLmluZm9gIHBvaW50cyB0byB0aGUgY29udHJvbCBibG9jayBvZiB0aGUgU0tCLCB3aGljaCBpcyBhc3N1bWVkIHRvIGJlIGluaXRpYWxpemVkIHdoZW4gdGhlIHNrYiB3YXMgY3JlYXRlZC4gVGhlbiBgaWVlZTgwMjExX3R4X3N0YXR1c19leHRgIGdldHMgY2FsbGVkLiBOb3csIEkgaGF2ZSB0byBlbnN1cmUgdGhhdCBpZiBgbXQ3NngwMl9tYWNfZmlsbF90eF9zdGF0dXNgIGRvZXMgYmFpbCBvdXQgZWFybHksIGl0IGRvZXNuJ3QgbGVhdmUgc29tZXRoaW5nIHVuaW5pdGlhbGl6ZWQuXG5cblRoZSBjb25jZXJuIHdhcyBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyByZWFkLiBCdXQsIGdpdmVuIHRoYXQgYGluZm9gIGlzIHplcm9lZCwgYW5kIHRoZSBgSUVFRTgwMjExX1NLQl9DQmAgaXMgYXNzdW1lZCB0byBiZSBpbml0aWFsaXplZC4gVGhlcmUgaXMgbm90IGFuIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzc3VlIGluIHRoZSBjb2RlIGFzIGRlc2NyaWJlZC5cblxuVGhlIHJlYWwgcHJvYmxlbSwgdGhvdWdoLCBhcHBlYXJzIHRvIGJlIGFuIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzLCB3aGljaCBpcyBzb21ldGhpbmcgSSdtIHZlcnkgZmFtaWxpYXIgd2l0aC4gSXQncyBoYXBwZW5pbmcgaW4gYG1hYzgwMjExL21pbnN0cmVsX2h0YCwgc3BlY2lmaWNhbGx5IGJlY2F1c2Ugb2YgYW4gaW52YWxpZCBgaWR4YCB2YWx1ZS4gVGhlIGNvbW1lbnQgZXZlbiBjb25maXJtcyBpdCwgbWVudGlvbmluZyB0aGF0IHRoZSBcIlJhdyBoYXJkd2FyZSBUWC1zdGF0dXMgaW5kZXggaXMgdW52YWxpZGF0ZWQ7IGEgc3RhbGUgb3IgY29ycnVwdCB2YWx1ZSBoZXJlIG92ZXJmbG93cyBtYWM4MDIxMS9taW5zdHJlbF9odCdzIHBlci1ncm91cCByYXRlIGFycmF5XCIuIFRoaXMgaXMgYSB0ZXh0Ym9vayBleGFtcGxlIG9mIGEgYnVmZmVyIG92ZXJmbG93LCBhbmQgS0FTQU4gc2hvdWxkIGhhdmUgbm8gcHJvYmxlbSBjYXRjaGluZyB0aGlzLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgbXQ3NngwMl9tYWNfZmlsbF90eF9zdGF0dXNgIGl0c2VsZiB0byBzZWUgaWYgdGhlIHJvb3QgY2F1c2UgY2FuIGJlIHVuY292ZXJlZC4gQnV0IHRoZSBjb3JlIGlzc3VlIGlzIGNsZWFybHkgdGhlIGFycmF5IGFjY2Vzcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjQyMywiT3V0cHV0VG9rZW5zIjo1MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzNCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDEwOjM5OjQyLjg0MzM2Mzg5WiIsIlNlcSI6MzYsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NzU3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWFjLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNDg3LFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDQ4NzpcXHRzdGF0aWMgdm9pZFxcbiA0ODg6XFx0bXQ3NngwMl9tYWNfZmlsbF90eF9zdGF0dXMoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYsIHN0cnVjdCBtdDc2eDAyX3N0YSAqbXN0YSxcXG4gNDg5OlxcdFxcdFxcdFxcdCAgIHN0cnVjdCBpZWVlODAyMTFfdHhfaW5mbyAqaW5mbyxcXG4gNDkwOlxcdFxcdFxcdFxcdCAgIHN0cnVjdCBtdDc2eDAyX3R4X3N0YXR1cyAqc3QsIGludCBuX2ZyYW1lcylcXG4gNDkxOlxcdHtcXG4gNDkyOlxcdFxcdHN0cnVjdCBpZWVlODAyMTFfdHhfcmF0ZSAqcmF0ZSA9IGluZm8tXFx1MDAzZXN0YXR1cy5yYXRlcztcXG4gNDkzOlxcdFxcdHN0cnVjdCBpZWVlODAyMTFfdHhfcmF0ZSBsYXN0X3JhdGU7XFxuIDQ5NDpcXHRcXHR1MTYgZmlyc3RfcmF0ZTtcXG4gNDk1OlxcdFxcdGludCByZXRyeSA9IHN0LVxcdTAwM2VyZXRyeTtcXG4gNDk2OlxcdFxcdGludCBwaHk7XFxuIDQ5NzpcXHRcXHRpbnQgaTtcXG4gNDk4OlxcdFxcbiA0OTk6XFx0XFx0aWYgKCFuX2ZyYW1lcylcXG4gNTAwOlxcdFxcdFxcdHJldHVybjtcXG4gNTAxOlxcdFxcbiA1MDI6XFx0XFx0cGh5ID0gRklFTERfR0VUKE1UX1JYV0lfUkFURV9QSFksIHN0LVxcdTAwM2VyYXRlKTtcXG4gNTAzOlxcdFxcbiA1MDQ6XFx0XFx0aWYgKHN0LVxcdTAwM2Vwa3RpZCBcXHUwMDI2IE1UX1BBQ0tFVF9JRF9IQVNfUkFURSkge1xcbiA1MDU6XFx0XFx0XFx0Zmlyc3RfcmF0ZSA9IHN0LVxcdTAwM2VyYXRlIFxcdTAwMjYgfk1UX1BLVElEX1JBVEU7XFxuIDUwNjpcXHRcXHRcXHRmaXJzdF9yYXRlIHw9IHN0LVxcdTAwM2Vwa3RpZCBcXHUwMDI2IE1UX1BLVElEX1JBVEU7XFxuIDUwNzpcXHRcXG4gNTA4OlxcdFxcdFxcdGlmIChtdDc2eDAyX21hY19wcm9jZXNzX3R4X3JhdGUoXFx1MDAyNnJhdGVbMF0sIGZpcnN0X3JhdGUsXFxuIDUwOTpcXHRcXHRcXHRcXHRcXHRcXHRcXHRkZXYtXFx1MDAzZW1waHkuY2hhbmRlZi5jaGFuLVxcdTAwM2ViYW5kKSlcXG4gNTEwOlxcdFxcdFxcdFxcdHJldHVybjtcXG4gNTExOlxcdFxcdH0gZWxzZSBpZiAocmF0ZVswXS5pZHggXFx1MDAzYyAwKSB7XFxuIDUxMjpcXHRcXHRcXHRpZiAoIW1zdGEpXFxuIDUxMzpcXHRcXHRcXHRcXHRyZXR1cm47XFxuIDUxNDpcXHRcXG4gNTE1OlxcdFxcdFxcdGlmIChtdDc2eDAyX21hY19wcm9jZXNzX3R4X3JhdGUoXFx1MDAyNnJhdGVbMF0sIG1zdGEtXFx1MDAzZXdjaWQudHhfaW5mbyxcXG4gNTE2OlxcdFxcdFxcdFxcdFxcdFxcdFxcdGRldi1cXHUwMDNlbXBoeS5jaGFuZGVmLmNoYW4tXFx1MDAzZWJhbmQpKVxcbiA1MTc6XFx0XFx0XFx0XFx0cmV0dXJuO1xcbiA1MTg6XFx0XFx0fVxcbiA1MTk6XFx0XFxuIDUyMDpcXHRcXHRpZiAobXQ3NngwMl9tYWNfcHJvY2Vzc190eF9yYXRlKFxcdTAwMjZsYXN0X3JhdGUsIHN0LVxcdTAwM2VyYXRlLFxcbiA1MjE6XFx0XFx0XFx0XFx0XFx0XFx0ZGV2LVxcdTAwM2VtcGh5LmNoYW5kZWYuY2hhbi1cXHUwMDNlYmFuZCkpXFxuIDUyMjpcXHRcXHRcXHRyZXR1cm47XFxuIDUyMzpcXHRcXG4gNTI0OlxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBUlJBWV9TSVpFKGluZm8tXFx1MDAzZXN0YXR1cy5yYXRlcyk7IGkrKykge1xcbiA1MjU6XFx0XFx0XFx0cmV0cnktLTtcXG4gNTI2OlxcdFxcdFxcdGlmIChpICsgMSA9PSBBUlJBWV9TSVpFKGluZm8tXFx1MDAzZXN0YXR1cy5yYXRlcykpIHtcXG4gNTI3OlxcdFxcdFxcdFxcdGluZm8tXFx1MDAzZXN0YXR1cy5yYXRlc1tpXSA9IGxhc3RfcmF0ZTtcXG4gNTI4OlxcdFxcdFxcdFxcdGluZm8tXFx1MDAzZXN0YXR1cy5yYXRlc1tpXS5jb3VudCA9IG1heF90KGludCwgcmV0cnksIDEpO1xcbiA1Mjk6XFx0XFx0XFx0XFx0YnJlYWs7XFxuIDUzMDpcXHRcXHRcXHR9XFxuIDUzMTpcXHRcXG4gNTMyOlxcdFxcdFxcdG10NzZ4MDJfdHhfcmF0ZV9mYWxsYmFjayhpbmZvLVxcdTAwM2VzdGF0dXMucmF0ZXMsIGksIHBoeSk7XFxuIDUzMzpcXHRcXHRcXHRpZiAoaW5mby1cXHUwMDNlc3RhdHVzLnJhdGVzW2ldLmlkeCA9PSBsYXN0X3JhdGUuaWR4KVxcbiA1MzQ6XFx0XFx0XFx0XFx0YnJlYWs7XFxuIDUzNTpcXHRcXHR9XFxuIDUzNjpcXHRcXG4gNTM3OlxcdFxcdGlmIChpICsgMSBcXHUwMDNjIEFSUkFZX1NJWkUoaW5mby1cXHUwMDNlc3RhdHVzLnJhdGVzKSkge1xcbiA1Mzg6XFx0XFx0XFx0aW5mby1cXHUwMDNlc3RhdHVzLnJhdGVzW2kgKyAxXS5pZHggPSAtMTtcXG4gNTM5OlxcdFxcdFxcdGluZm8tXFx1MDAzZXN0YXR1cy5yYXRlc1tpICsgMV0uY291bnQgPSAwO1xcbiA1NDA6XFx0XFx0fVxcbiA1NDE6XFx0XFxuIDU0MjpcXHRcXHRpbmZvLVxcdTAwM2VzdGF0dXMuYW1wZHVfbGVuID0gbl9mcmFtZXM7XFxuIDU0MzpcXHRcXHRpbmZvLVxcdTAwM2VzdGF0dXMuYW1wZHVfYWNrX2xlbiA9IHN0LVxcdTAwM2VzdWNjZXNzID8gbl9mcmFtZXMgOiAwO1xcbiA1NDQ6XFx0XFxuIDU0NTpcXHRcXHRpZiAoc3QtXFx1MDAzZWFnZ3IpXFxuIDU0NjpcXHRcXHRcXHRpbmZvLVxcdTAwM2VmbGFncyB8PSBJRUVFODAyMTFfVFhfQ1RMX0FNUERVIHxcXG4gNTQ3OlxcdFxcdFxcdFxcdCAgICAgICBJRUVFODAyMTFfVFhfU1RBVF9BTVBEVTtcXG4gNTQ4OlxcdFxcbiA1NDk6XFx0XFx0aWYgKCFzdC1cXHUwMDNlYWNrX3JlcSlcXG4gNTUwOlxcdFxcdFxcdGluZm8tXFx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9UWF9DVExfTk9fQUNLO1xcbiA1NTE6XFx0XFx0ZWxzZSBpZiAoc3QtXFx1MDAzZXN1Y2Nlc3MpXFxuIDU1MjpcXHRcXHRcXHRpbmZvLVxcdTAwM2VmbGFncyB8PSBJRUVFODAyMTFfVFhfU1RBVF9BQ0s7XFxuIDU1MzpcXHR9XFxuIDU1NDpcXHRcXG4gNTU1OlxcdHZvaWQgbXQ3NngwMl9zZW5kX3R4X3N0YXR1cyhzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldixcXG4gNTU2OlxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgbXQ3NngwMl90eF9zdGF0dXMgKnN0YXQsIHU4ICp1cGRhdGUpXFxuIDU1NzpcXHR7XFxuIDU1ODpcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX3R4X2luZm8gaW5mbyA9IHt9O1xcbiA1NTk6XFx0XFx0c3RydWN0IGllZWU4MDIxMV90eF9zdGF0dXMgc3RhdHVzID0ge1xcbiA1NjA6XFx0XFx0XFx0LmluZm8gPSBcXHUwMDI2aW5mb1xcbiA1NjE6XFx0XFx0fTtcXG4gNTYyOlxcdFxcdHN0YXRpYyBjb25zdCB1OCBhY190b190aWRbNF0gPSB7XFxuIDU2MzpcXHRcXHRcXHRbSUVFRTgwMjExX0FDX0JFXSA9IDAsXFxuIDU2NDpcXHRcXHRcXHRbSUVFRTgwMjExX0FDX0JLXSA9IDEsXFxuIDU2NTpcXHRcXHRcXHRbSUVFRTgwMjExX0FDX1ZJXSA9IDQsXFxuIDU2NjpcXHRcXHRcXHRbSUVFRTgwMjExX0FDX1ZPXSA9IDZcXG4gNTY3OlxcdFxcdH07XFxuIDU2ODpcXHRcXHRzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkID0gTlVMTDtcXG4gNTY5OlxcdFxcdHN0cnVjdCBtdDc2eDAyX3N0YSAqbXN0YSA9IE5VTEw7XFxuIDU3MDpcXHRcXHRzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYgPSBcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2O1xcbiA1NzE6XFx0XFx0c3RydWN0IHNrX2J1ZmZfaGVhZCBsaXN0O1xcbiA1NzI6XFx0XFx0dTMyIGR1cmF0aW9uID0gMDtcXG4gNTczOlxcdFxcdHU4IGN1cl9wa3RpZDtcXG4gNTc0OlxcdFxcdHUzMiBhYyA9IDA7XFxuIDU3NTpcXHRcXHRpbnQgbGVuID0gMDtcXG4gNTc2OlxcdFxcbiA1Nzc6XFx0XFx0aWYgKHN0YXQtXFx1MDAzZXBrdGlkID09IE1UX1BBQ0tFVF9JRF9OT19BQ0spXFxuIDU3ODpcXHRcXHRcXHRyZXR1cm47XFxuIDU3OTpcXHRcXG4gNTgwOlxcdFxcdHJjdV9yZWFkX2xvY2soKTtcXG4gNTgxOlxcdFxcbiA1ODI6XFx0XFx0d2NpZCA9IG10NzZfd2NpZF9wdHIoZGV2LCBzdGF0LVxcdTAwM2V3Y2lkKTtcXG4gNTgzOlxcdFxcdGlmICh3Y2lkIFxcdTAwMjZcXHUwMDI2IHdjaWQtXFx1MDAzZXN0YSkge1xcbiA1ODQ6XFx0XFx0XFx0dm9pZCAqcHJpdjtcXG4gNTg1OlxcdFxcbiA1ODY6XFx0XFx0XFx0cHJpdiA9IG1zdGEgPSBjb250YWluZXJfb2Yod2NpZCwgc3RydWN0IG10NzZ4MDJfc3RhLCB3Y2lkKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMTA6Mzk6NDIuODQzNTEyODdaIiwiU2VxIjozNywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjM5NTIzNjE2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBUWCBTdGF0dXMgSXNzdWUqKlxuXG5Pa2F5LCBzbyBoZXJlJ3MgdGhlIGRlYWwuIEl0IGxvb2tzIGxpa2Ugd2UgaGF2ZSBhIHBvdGVudGlhbCBwcm9ibGVtIHdpdGggdGhlIGBtdDc2eDAyX21hY19maWxsX3R4X3N0YXR1c2AgZnVuY3Rpb24uIEl0IHNlZW1zIHRoYXQgaWYgdGhpcyBmdW5jdGlvbiBiYWlscyBvdXQgZWFybHksIHRoZSBgaW5mb2Agc3RydWN0dXJlIG1pZ2h0IG5vdCBiZSBmdWxseSBwb3B1bGF0ZWQuIEhvd2V2ZXIsIGBpbmZvYCAqaXMqIHplcm8taW5pdGlhbGl6ZWQgaW4gYG10NzZ4MDJfc2VuZF90eF9zdGF0dXNgLCBzbyB0aGF04oCZcyBhIG1pdGlnYXRpbmcgZmFjdG9yLiBBbmQsIGlmIGBzdGF0dXMuc2tiYCBpc24ndCBOVUxMLCB0aGVuIGBpbmZvYCBnZXRzIGl0cyBkYXRhIGZyb20gYElFRUU4MDIxMV9TS0JfQ0Ioc3RhdHVzLnNrYilgLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzLCBcIklzIHRoZXJlIGFuIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWQgbHVya2luZyBpbiBoZXJlIHNvbWV3aGVyZT9cIlxuXG5CdXQgYWZ0ZXIgYSBjbG9zZXIgbG9vaywgbm8sIHRoYXQncyBub3QgaXQuIFRoZSByb290IGNhdXNlIGlzIGEgY2xhc3NpYyBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2VzcywgdHJpZ2dlcmVkIGJ5IGEgY29ycnVwdGVkIG9yIHN0YWxlIGhhcmR3YXJlIFRYLXN0YXR1cyBpbmRleC4gVGhlIGV4aXN0aW5nIGNvZGUgaXNuJ3QgdmFsaWRhdGluZyB0aGlzIGluZGV4LCBhbmQgdGhhdCdzIHRoZSB2dWxuZXJhYmlsaXR5LiBUaGUgcHJvcG9zZWQgcGF0Y2ggYWRkcmVzc2VzIHRoaXMgYnkgYWRkaW5nIGJvdW5kcyBjaGVja2luZywgcHJldmVudGluZyB0aGlzIE9PQiBhY2Nlc3MgZnJvbSBoYXBwZW5pbmcgaW4gdGhlIGZpcnN0IHBsYWNlLlxuXG5HaXZlbiB0aGUgbmF0dXJlIG9mIHRoZSBidWcsIEkgc2VlIG5vIHJlYXNvbiB0byBiZWxpZXZlIEtNU0FOIGlzIG5lZWRlZCBoZXJlLiBUaGUgcHJvYmxlbSBpcyBhIHNpbXBsZSBhcnJheSBib3VuZHMgdmlvbGF0aW9uLiBLQVNBTiBpcyBwZXJmZWN0bHkgY2FwYWJsZSBvZiBjYXRjaGluZyB0aGF0IHR5cGUgb2YgZXJyb3IuIFdlIGFyZSBub3QgZGVhbGluZyB3aXRoIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGFueSBpbmZvIGxlYWtzIGhlcmUuIFRoZSBmaXggaXMgYSBjbGVhbiBib3VuZHMgY2hlY2ssIGFuZCB0aGF04oCZcyBwcmVjaXNlbHkgd2hhdCBLQVNBTiBleGNlbHMgYXQgZGV0ZWN0aW5nLiBUaGlzIGlzIGEgc3RyYWlnaHRmb3J3YXJkIEtBU0FOIGlzc3VlLiBTbywgSSdtIGNvbmZpZGVudCB3ZSBjYW4gcHJvY2VlZCB3aXRob3V0IHRoZSBjb21wbGV4aXR5IG9mIEtNU0FOLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MTI1LCJPdXRwdXRUb2tlbnMiOjExMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDEwOjM5OjQ5LjIzODc1MTY0M1oiLCJTZXEiOjM4LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzOTQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3MgYnVnIGNhdXNlZCBieSBhbiB1bnZhbGlkYXRlZCBoYXJkd2FyZSBUWC1zdGF0dXMgaW5kZXggb3ZlcmZsb3dpbmcgdGhlIG1hYzgwMjExL21pbnN0cmVsX2h0IHBlci1ncm91cCByYXRlIGFycmF5LiBPdXQtb2YtYm91bmRzIGFjY2Vzc2VzIGFyZSByZWxpYWJseSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBtb2RpZnkgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBpbmZvLWxlYWtzLCBvciBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4gdG8gZGV0ZWN0LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzIGJ1ZyBjYXVzZWQgYnkgYW4gdW52YWxpZGF0ZWQgaGFyZHdhcmUgVFgtc3RhdHVzIGluZGV4IG92ZXJmbG93aW5nIHRoZSBtYWM4MDIxMS9taW5zdHJlbF9odCBwZXItZ3JvdXAgcmF0ZSBhcnJheS4gT3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBhcmUgcmVsaWFibHkgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgbW9kaWZ5IGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgaW5mby1sZWFrcywgb3IgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOIHRvIGRldGVjdC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowsj85k[1] Phase: Succeeded StartedAt: 2026-08-26 10:40:19 +0000 UTC FinishedAt: 2026-08-26 10:40:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsj85k[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-26 10:40:19 +0000 UTC FinishedAt: 2026-08-26 10:40:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsj85k[2] Phase: Succeeded StartedAt: 2026-08-26 10:40:19 +0000 UTC FinishedAt: 2026-08-26 11:23:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsj85k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76x02_send_tx_status","mt76x02_tx_status_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U"],"series_id":"9f71526c-bd84-41f5-8a35-7cda311f8eb4","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-26 10:40:19 +0000 UTC FinishedAt: 2026-08-26 11:23:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76x02_send_tx_status","mt76x02_tx_status_data"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U"],"series_id":"9f71526c-bd84-41f5-8a35-7cda311f8eb4","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowsj85k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76x02_send_tx_status","mt76x02_tx_status_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U"],"series_id":"9f71526c-bd84-41f5-8a35-7cda311f8eb4","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-26 10:40:19 +0000 UTC FinishedAt: 2026-08-26 10:40:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsj85k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76x02_send_tx_status","mt76x02_tx_status_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U"],"series_id":"9f71526c-bd84-41f5-8a35-7cda311f8eb4","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-26 10:40:19 +0000 UTC FinishedAt: 2026-08-26 10:40:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflowsj85k/series-workflowsj85k-convert-artifact-2987163259/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsj85k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76x02_send_tx_status","mt76x02_tx_status_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U"],"series_id":"9f71526c-bd84-41f5-8a35-7cda311f8eb4","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-26 10:40:29 +0000 UTC FinishedAt: 2026-08-26 10:57:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsj85k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76x02_send_tx_status","mt76x02_tx_status_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U"],"series_id":"9f71526c-bd84-41f5-8a35-7cda311f8eb4","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-26 10:40:29 +0000 UTC FinishedAt: 2026-08-26 10:57:51 +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:*5bb6f6be-60ef-42b6-beaf-13601fc7f241,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-workflowsj85k/series-workflowsj85k-convert-artifact-2987163259/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": "832ddb8a-8b03-4435-916f-16d2992d0f46", "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-workflowsj85k/series-workflowsj85k-build-action-3322883513/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsj85k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76x02_send_tx_status","mt76x02_tx_status_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U"],"series_id":"9f71526c-bd84-41f5-8a35-7cda311f8eb4","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-26 10:40:29 +0000 UTC FinishedAt: 2026-08-26 10:57:41 +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:*5bb6f6be-60ef-42b6-beaf-13601fc7f241,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-workflowsj85k/series-workflowsj85k-convert-artifact-2987163259/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": "832ddb8a-8b03-4435-916f-16d2992d0f46", "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-workflowsj85k/series-workflowsj85k-build-action-3322883513/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsj85k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76x02_send_tx_status","mt76x02_tx_status_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U"],"series_id":"9f71526c-bd84-41f5-8a35-7cda311f8eb4","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-26 10:57:51 +0000 UTC FinishedAt: 2026-08-26 10:57:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsj85k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76x02_send_tx_status","mt76x02_tx_status_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U"],"series_id":"9f71526c-bd84-41f5-8a35-7cda311f8eb4","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-26 10:57:51 +0000 UTC FinishedAt: 2026-08-26 10:57:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsj85k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76x02_send_tx_status","mt76x02_tx_status_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U"],"series_id":"9f71526c-bd84-41f5-8a35-7cda311f8eb4","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-26 10:57:51 +0000 UTC FinishedAt: 2026-08-26 10:58:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsj85k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76x02_send_tx_status","mt76x02_tx_status_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U"],"series_id":"9f71526c-bd84-41f5-8a35-7cda311f8eb4","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-26 10:57:51 +0000 UTC FinishedAt: 2026-08-26 10:57:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U"],"series_id":"9f71526c-bd84-41f5-8a35-7cda311f8eb4","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflowsj85k/series-workflowsj85k-convert-artifact-3535385042/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsj85k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76x02_send_tx_status","mt76x02_tx_status_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U"],"series_id":"9f71526c-bd84-41f5-8a35-7cda311f8eb4","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-26 10:58:01 +0000 UTC FinishedAt: 2026-08-26 11:00:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsj85k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76x02_send_tx_status","mt76x02_tx_status_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U"],"series_id":"9f71526c-bd84-41f5-8a35-7cda311f8eb4","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-26 10:58:01 +0000 UTC FinishedAt: 2026-08-26 10:59:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*832ddb8a-8b03-4435-916f-16d2992d0f46,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-workflowsj85k/series-workflowsj85k-build-action-3322883513/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-workflowsj85k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76x02_send_tx_status","mt76x02_tx_status_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U"],"series_id":"9f71526c-bd84-41f5-8a35-7cda311f8eb4","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-26 11:00:08 +0000 UTC FinishedAt: 2026-08-26 11:00:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsj85k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76x02_send_tx_status","mt76x02_tx_status_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U"],"series_id":"9f71526c-bd84-41f5-8a35-7cda311f8eb4","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-26 11:00:08 +0000 UTC FinishedAt: 2026-08-26 11:00:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsj85k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76x02_send_tx_status","mt76x02_tx_status_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U"],"series_id":"9f71526c-bd84-41f5-8a35-7cda311f8eb4","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-26 11:00:08 +0000 UTC FinishedAt: 2026-08-26 11:15:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsj85k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76x02_send_tx_status","mt76x02_tx_status_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U"],"series_id":"9f71526c-bd84-41f5-8a35-7cda311f8eb4","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-26 11:00:08 +0000 UTC FinishedAt: 2026-08-26 11:15:53 +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:*5bb6f6be-60ef-42b6-beaf-13601fc7f241,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-workflowsj85k/series-workflowsj85k-convert-artifact-3535385042/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": "1ad66ed8-b5ff-459e-83c9-4e88e36bf541", "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-workflowsj85k/series-workflowsj85k-build-action-387461222/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsj85k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76x02_send_tx_status","mt76x02_tx_status_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U"],"series_id":"9f71526c-bd84-41f5-8a35-7cda311f8eb4","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-26 11:00:08 +0000 UTC FinishedAt: 2026-08-26 11:15:43 +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:*5bb6f6be-60ef-42b6-beaf-13601fc7f241,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-workflowsj85k/series-workflowsj85k-convert-artifact-3535385042/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": "1ad66ed8-b5ff-459e-83c9-4e88e36bf541", "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-workflowsj85k/series-workflowsj85k-build-action-387461222/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsj85k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76x02_send_tx_status","mt76x02_tx_status_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U"],"series_id":"9f71526c-bd84-41f5-8a35-7cda311f8eb4","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-26 11:15:53 +0000 UTC FinishedAt: 2026-08-26 11:15:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsj85k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76x02_send_tx_status","mt76x02_tx_status_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U"],"series_id":"9f71526c-bd84-41f5-8a35-7cda311f8eb4","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-26 11:15:53 +0000 UTC FinishedAt: 2026-08-26 11:15:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsj85k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76x02_send_tx_status","mt76x02_tx_status_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U"],"series_id":"9f71526c-bd84-41f5-8a35-7cda311f8eb4","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-26 11:15:53 +0000 UTC FinishedAt: 2026-08-26 11:18:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsj85k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76x02_send_tx_status","mt76x02_tx_status_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U"],"series_id":"9f71526c-bd84-41f5-8a35-7cda311f8eb4","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-26 11:15:53 +0000 UTC FinishedAt: 2026-08-26 11:18:01 +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:*1ad66ed8-b5ff-459e-83c9-4e88e36bf541,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-workflowsj85k/series-workflowsj85k-build-action-387461222/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-workflowsj85k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76x02_send_tx_status","mt76x02_tx_status_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U"],"series_id":"9f71526c-bd84-41f5-8a35-7cda311f8eb4","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-26 11:18:10 +0000 UTC FinishedAt: 2026-08-26 11:23:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsj85k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76x02_send_tx_status","mt76x02_tx_status_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U"],"series_id":"9f71526c-bd84-41f5-8a35-7cda311f8eb4","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-26 11:18:10 +0000 UTC FinishedAt: 2026-08-26 11:23:10 +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":["mt76x02_send_tx_status","mt76x02_tx_status_data"],"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:*832ddb8a-8b03-4435-916f-16d2992d0f46,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*1ad66ed8-b5ff-459e-83c9-4e88e36bf541,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-workflowsj85k/series-workflowsj85k-build-action-3322883513/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-workflowsj85k/series-workflowsj85k-build-action-387461222/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowsj85k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76x02_send_tx_status","mt76x02_tx_status_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U"],"series_id":"9f71526c-bd84-41f5-8a35-7cda311f8eb4","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-26 11:18:10 +0000 UTC FinishedAt: 2026-08-26 11:18:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsj85k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76x02_send_tx_status","mt76x02_tx_status_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U"],"series_id":"9f71526c-bd84-41f5-8a35-7cda311f8eb4","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-26 11:18:10 +0000 UTC FinishedAt: 2026-08-26 11:18:15 +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":["mt76x02_send_tx_status","mt76x02_tx_status_data"],"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-workflowsj85k/series-workflowsj85k-convert-artifact-545920807/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsj85k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76x02_send_tx_status","mt76x02_tx_status_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U"],"series_id":"9f71526c-bd84-41f5-8a35-7cda311f8eb4","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-26 11:18:10 +0000 UTC FinishedAt: 2026-08-26 11:18:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsj85k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76x02_send_tx_status","mt76x02_tx_status_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U"],"series_id":"9f71526c-bd84-41f5-8a35-7cda311f8eb4","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-26 11:18:10 +0000 UTC FinishedAt: 2026-08-26 11:18:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsj85k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76x02_send_tx_status","mt76x02_tx_status_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U"],"series_id":"9f71526c-bd84-41f5-8a35-7cda311f8eb4","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-26 11:18:10 +0000 UTC FinishedAt: 2026-08-26 11:18:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsj85k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76x02_send_tx_status","mt76x02_tx_status_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U"],"series_id":"9f71526c-bd84-41f5-8a35-7cda311f8eb4","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-26 11:18:20 +0000 UTC FinishedAt: 2026-08-26 11:23:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsj85k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76x02_send_tx_status","mt76x02_tx_status_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U"],"series_id":"9f71526c-bd84-41f5-8a35-7cda311f8eb4","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-26 11:18:20 +0000 UTC FinishedAt: 2026-08-26 11:22:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*832ddb8a-8b03-4435-916f-16d2992d0f46,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*1ad66ed8-b5ff-459e-83c9-4e88e36bf541,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-workflowsj85k/series-workflowsj85k-build-action-3322883513/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-workflowsj85k/series-workflowsj85k-build-action-387461222/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-workflowsj85k/series-workflowsj85k-convert-artifact-545920807/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,}