Name: series-workflow7tqm5 Phase: Succeeded StartedAt: 2026-08-10 10:47:54 +0000 UTC FinishedAt: 2026-08-10 12:23:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7tqm5[0] Phase: Succeeded StartedAt: 2026-08-10 10:47:54 +0000 UTC FinishedAt: 2026-08-10 11:36:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7tqm5[0].run-triage Phase: Succeeded StartedAt: 2026-08-10 10:47:54 +0000 UTC FinishedAt: 2026-08-10 11:36:36 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "5ec42d57655c690234c14aece6dd3f209778c1d8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "5ec42d57655c690234c14aece6dd3f209778c1d8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "9b62e092-d765-42e6-bb6a-f55426aac042" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "vgic_get_irq", "vgic_get_vcpu_irq", "kvm_vgic_inject_irq" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDExOjM0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3ZnaWNfZ2V0X2lycSYjMzQ7LAogICAgJiMzNDt2Z2ljX2dldF92Y3B1X2lycSYjMzQ7LAogICAgJiMzNDtrdm1fdmdpY19pbmplY3RfaXJxJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgbWVtb3J5IGxlYWsgaW4gdmdpYy1pbml0LmMsIGFuIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzIGFuZCBpbmNvcnJlY3QgaW5kZXggY2FsY3VsYXRpb24gaW4gdmdpYy5jLCBhIHVzZS1hZnRlci1mcmVlL2RhbmdsaW5nIHBvaW50ZXIgaXNzdWUgaW4gaXJxLWdpYy12NS1pcnMuYyBieSBjbGVhcmluZyBwZXItY3B1IHBvaW50ZXJzIGJlZm9yZSBmcmVlaW5nLCBhbmQgYWRkcyBhIG1pc3NpbmcgaW5zdHJ1Y3Rpb24gc3luY2hyb25pemF0aW9uIGJhcnJpZXIgKGlzYikgaW4gaXJxLWdpYy12NS5jLiBOb25lIG9mIHRoZXNlIGNoYW5nZXMgaW52b2x2ZSB1bmluaXRpYWxpemVkIG1lbW9yeSwgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIG9yIGluZm8tbGVha3MgdG8gdXNlciBzcGFjZS4gVGhlIGJ1Z3MgZml4ZWQgKE9PQiwgVUFGLCBtZW1vcnkgbGVha3MpIGFyZSB3ZWxsIHdpdGhpbiB0aGUgc2NvcGUgb2YgS0FTQU4gYW5kIEtNRU1MRUFLLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGNyaXRpY2FsIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzZXMgaW4gS1ZNIFZHSUMgSVJRIGhhbmRsaW5nIChgdmdpY19nZXRfaXJxYCwgYHZnaWNfZ2V0X3ZjcHVfaXJxYCksIGEgbWVtb3J5IGxlYWsgaW4gVkdJQyBpbml0aWFsaXphdGlvbiwgYW5kIGFkZHMgYSBtaXNzaW5nIG1lbW9yeSBiYXJyaWVyIGluIHRoZSBHSUN2NSBkcml2ZXIuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gcmVhY2hhYmxlIGNvcmUgdmlydHVhbGl6YXRpb24gYW5kIGludGVycnVwdCBjb250cm9sbGVyIGNvZGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTE6MzQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA2MmNiNWRjY2Q1ZmM2YTU2ZjIyODFlMDBkOTNjM2Q2N2Q2NjY3MTM2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMTAgMTE6MzQ6MzYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuYyBiL2FyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pbml0LmNcbmluZGV4IDkwNzA1Nzg4MWIyNmEuLjY1ZTIwM2Q2YTJjZjQgMTAwNjQ0XG4tLS0gYS9hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaW5pdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaW5pdC5jXG5AQCAtNzg3LDcgJiM0Mzs3ODcsOCBAQCBpbnQga3ZtX3ZnaWNfaHlwX2luaXQodm9pZClcbiBcbiBcdGlmIChoYXNfbWFzayBcdTAwMjZcdTAwMjYgIWdpY19rdm1faW5mby1cdTAwM2VtYWludF9pcnEpIHtcbiBcdFx0a3ZtX2VycihcJiMzNDtObyB2Z2ljIG1haW50ZW5hbmNlIGlycVxcblwmIzM0Oyk7XG4tXHRcdHJldHVybiAtRU5YSU87XG4mIzQzO1x0XHRyZXQgPSAtRU5YSU87XG4mIzQzO1x0XHRnb3RvIG91dF9mcmVlO1xuIFx0fVxuIFxuIFx0LypcbkBAIC04MjAsNiAmIzQzOzgyMSw3IEBAIGludCBrdm1fdmdpY19oeXBfaW5pdCh2b2lkKVxuIFxuIFx0a3ZtX3ZnaWNfZ2xvYmFsX3N0YXRlLm1haW50X2lycSA9IGdpY19rdm1faW5mby1cdTAwM2VtYWludF9pcnE7XG4gXG4mIzQzO291dF9mcmVlOlxuIFx0a2ZyZWUoZ2ljX2t2bV9pbmZvKTtcbiBcdGdpY19rdm1faW5mbyA9IE5VTEw7XG4gXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmMgYi9hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuY1xuaW5kZXggNzRiYWNlMTBhMjJlZC4uYjI1MzAzZDk5MTlmZCAxMDA2NDRcbi0tLSBhL2FyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuY1xuQEAgLTkzLDggJiM0Mzs5Myw5IEBAIHN0cnVjdCB2Z2ljX2lycSAqdmdpY19nZXRfaXJxKHN0cnVjdCBrdm0gKmt2bSwgdTMyIGludGlkKVxuIFx0LyogU1BJcyAqL1xuIFx0aWYgKGludGlkIFx1MDAzZT0gVkdJQ19OUl9QUklWQVRFX0lSUVMgXHUwMDI2XHUwMDI2XG4gXHQgICAgaW50aWQgXHUwMDNjIChrdm0tXHUwMDNlYXJjaC52Z2ljLm5yX3NwaXMgJiM0MzsgVkdJQ19OUl9QUklWQVRFX0lSUVMpKSB7XG4tXHRcdGludGlkID0gYXJyYXlfaW5kZXhfbm9zcGVjKGludGlkLCBrdm0tXHUwMDNlYXJjaC52Z2ljLm5yX3NwaXMgJiM0MzsgVkdJQ19OUl9QUklWQVRFX0lSUVMpO1xuLVx0XHRyZXR1cm4gXHUwMDI2a3ZtLVx1MDAzZWFyY2gudmdpYy5zcGlzW2ludGlkIC0gVkdJQ19OUl9QUklWQVRFX0lSUVNdO1xuJiM0MztcdFx0aW50aWQgLT0gVkdJQ19OUl9QUklWQVRFX0lSUVM7XG4mIzQzO1x0XHRpbnRpZCA9IGFycmF5X2luZGV4X25vc3BlYyhpbnRpZCwga3ZtLVx1MDAzZWFyY2gudmdpYy5ucl9zcGlzKTtcbiYjNDM7XHRcdHJldHVybiBcdTAwMjZrdm0tXHUwMDNlYXJjaC52Z2ljLnNwaXNbaW50aWRdO1xuIFx0fVxuIFxuIFx0LyogTFBJcyAqL1xuQEAgLTExNyw2ICYjNDM7MTE4LDggQEAgc3RydWN0IHZnaWNfaXJxICp2Z2ljX2dldF92Y3B1X2lycShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBpbnRpZClcbiBcdFx0c3dpdGNoICh0eXBlKSB7XG4gXHRcdGNhc2UgS1ZNX0RFVl9UWVBFX0FSTV9WR0lDX1Y1OlxuIFx0XHRcdGludGlkID0gdmdpY192NV9nZXRfaHdpcnFfaWQoaW50aWQpO1xuJiM0MztcdFx0XHRpZiAoaW50aWQgXHUwMDNlPSBWR0lDX1Y1X05SX1BSSVZBVEVfSVJRUylcbiYjNDM7XHRcdFx0XHRyZXR1cm4gTlVMTDtcbiBcdFx0XHRpbnRpZCA9IGFycmF5X2luZGV4X25vc3BlYyhpbnRpZCwgVkdJQ19WNV9OUl9QUklWQVRFX0lSUVMpO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHRkZWZhdWx0OlxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jIGIvZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmNcbmluZGV4IGYzZmNlMGIxZTI1ZDkuLjY3OTQwZWE5ZTM5YjcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmNcbkBAIC02NTEsNiAmIzQzOzY1MSwxOSBAQCBzdGF0aWMgaW50IF9faW5pdCBnaWN2NV9pcnNfb2ZfaW5pdF9hZmZpbml0eShzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUsXG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBcbiYjNDM7c3RhdGljIHZvaWQgX19pbml0IGdpY3Y1X2lyc19jbGVhcl9hZmZpbml0eShzdHJ1Y3QgZ2ljdjVfaXJzX2NoaXBfZGF0YSAqaXJzX2RhdGEpXG4mIzQzO3tcbiYjNDM7XHRpbnQgY3B1O1xuJiM0MztcbiYjNDM7XHRmb3JfZWFjaF9wb3NzaWJsZV9jcHUoY3B1KSB7XG4mIzQzO1x0XHRpZiAocGVyX2NwdShwZXJfY3B1X2lyc19kYXRhLCBjcHUpID09IGlyc19kYXRhKSB7XG4mIzQzO1x0XHRcdHBlcl9jcHUoY3B1X2lhZmZpZCwgY3B1KS5pYWZmaWQgPSAwO1xuJiM0MztcdFx0XHRwZXJfY3B1KGNwdV9pYWZmaWQsIGNwdSkudmFsaWQgPSBmYWxzZTtcbiYjNDM7XHRcdFx0cGVyX2NwdShwZXJfY3B1X2lyc19kYXRhLCBjcHUpID0gTlVMTDtcbiYjNDM7XHRcdH1cbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHZvaWQgaXJzX3NldHVwX3ByaV9iaXRzKHUzMiBpZHIxKVxuIHtcbiBcdHN3aXRjaCAoRklFTERfR0VUKEdJQ1Y1X0lSU19JRFIxX1BSSU9SSVRZX0JJVFMsIGlkcjEpKSB7XG5AQCAtNzczLDYgJiM0Mzs3ODYsNyBAQCBzdGF0aWMgaW50IF9faW5pdCBnaWN2NV9pcnNfb2ZfaW5pdChzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUpXG4gXHRyZXR1cm4gcmV0O1xuIFxuIG91dF9pb21lbTpcbiYjNDM7XHRnaWN2NV9pcnNfY2xlYXJfYWZmaW5pdHkoaXJzX2RhdGEpO1xuIFx0aW91bm1hcChpcnNfYmFzZSk7XG4gb3V0X2VycjpcbiBcdGtmcmVlKGlyc19kYXRhKTtcbkBAIC03ODcsNiAmIzQzOzgwMSw3IEBAIHZvaWQgX19pbml0IGdpY3Y1X2lyc19yZW1vdmUodm9pZClcbiBcdGdpY3Y1X2RlaW5pdF9scGlzKCk7XG4gXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoaXJzX2RhdGEsIHRtcF9kYXRhLCBcdTAwMjZpcnNfbm9kZXMsIGVudHJ5KSB7XG4mIzQzO1x0XHRnaWN2NV9pcnNfY2xlYXJfYWZmaW5pdHkoaXJzX2RhdGEpO1xuIFx0XHRpb3VubWFwKGlyc19kYXRhLVx1MDAzZWlyc19iYXNlKTtcbiBcdFx0bGlzdF9kZWwoXHUwMDI2aXJzX2RhdGEtXHUwMDNlZW50cnkpO1xuIFx0XHRrZnJlZShpcnNfZGF0YSk7XG5AQCAtOTUxLDYgJiM0Mzs5NjYsNyBAQCBzdGF0aWMgaW50IF9faW5pdCBnaWNfYWNwaV9wYXJzZV9tYWR0X2lycyh1bmlvbiBhY3BpX3N1YnRhYmxlX2hlYWRlcnMgKmhlYWRlcixcbiBcdHJldHVybiAwO1xuIFxuIG91dF9tYXA6XG4mIzQzO1x0Z2ljdjVfaXJzX2NsZWFyX2FmZmluaXR5KGlyc19kYXRhKTtcbiBcdGlvdW5tYXAoaXJzX2Jhc2UpO1xuIG91dF9yZWxlYXNlOlxuIFx0cmVsZWFzZV9tZW1fcmVnaW9uKHItXHUwMDNlc3RhcnQsIHJlc291cmNlX3NpemUocikpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LmMgYi9kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS5jXG5pbmRleCBlOWQxNzk1MjM1YTY2Li42YTk5YzU0MWI1NTliIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUuY1xuQEAgLTk4Myw2ICYjNDM7OTgzLDcgQEAgc3RhdGljIHZvaWQgZ2ljdjVfY3B1X2Rpc2FibGVfaW50ZXJydXB0cyh2b2lkKVxuIFxuIFx0Y3IwID0gRklFTERfUFJFUChJQ0NfQ1IwX0VMMV9FTiwgMCk7XG4gXHR3cml0ZV9zeXNyZWdfcyhjcjAsIFNZU19JQ0NfQ1IwX0VMMSk7XG4mIzQzO1x0aXNiKCk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIGdpY3Y1X2NwdV9lbmFibGVfaW50ZXJydXB0cyh2b2lkKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDExOjM0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2Z2ljX2dldF9pcnEmIzM0OywKICAgICYjMzQ7dmdpY19nZXRfdmNwdV9pcnEmIzM0OywKICAgICYjMzQ7a3ZtX3ZnaWNfaW5qZWN0X2lycSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBjcml0aWNhbCBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2Vzc2VzIGluIEtWTSBWR0lDIElSUSBoYW5kbGluZyAoYHZnaWNfZ2V0X2lycWAsIGB2Z2ljX2dldF92Y3B1X2lycWApLCBhIG1lbW9yeSBsZWFrIGluIFZHSUMgaW5pdGlhbGl6YXRpb24sIGFuZCBhZGRzIGEgbWlzc2luZyBtZW1vcnkgYmFycmllciBpbiB0aGUgR0lDdjUgZHJpdmVyLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHJlYWNoYWJsZSBjb3JlIHZpcnR1YWxpemF0aW9uIGFuZCBpbnRlcnJ1cHQgY29udHJvbGxlciBjb2RlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNjJjYjVkY2NkNWZjNmE1NmYyMjgxZTAwZDkzYzNkNjdkNjY2NzEzNgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDEwIDExOjM0OjM2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuYyBiL2FyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pbml0LmMKaW5kZXggOTA3MDU3ODgxYjI2YS4uNjVlMjAzZDZhMmNmNCAxMDA2NDQKLS0tIGEvYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaW5pdC5jCkBAIC03ODcsNyAmIzQzOzc4Nyw4IEBAIGludCBrdm1fdmdpY19oeXBfaW5pdCh2b2lkKQogCiAJaWYgKGhhc19tYXNrICZhbXA7JmFtcDsgIWdpY19rdm1faW5mby0mZ3Q7bWFpbnRfaXJxKSB7CiAJCWt2bV9lcnIoJiMzNDtObyB2Z2ljIG1haW50ZW5hbmNlIGlycVxuJiMzNDspOwotCQlyZXR1cm4gLUVOWElPOwomIzQzOwkJcmV0ID0gLUVOWElPOwomIzQzOwkJZ290byBvdXRfZnJlZTsKIAl9CiAKIAkvKgpAQCAtODIwLDYgJiM0Mzs4MjEsNyBAQCBpbnQga3ZtX3ZnaWNfaHlwX2luaXQodm9pZCkKIAogCWt2bV92Z2ljX2dsb2JhbF9zdGF0ZS5tYWludF9pcnEgPSBnaWNfa3ZtX2luZm8tJmd0O21haW50X2lycTsKIAomIzQzO291dF9mcmVlOgogCWtmcmVlKGdpY19rdm1faW5mbyk7CiAJZ2ljX2t2bV9pbmZvID0gTlVMTDsKIApkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmMgYi9hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYwppbmRleCA3NGJhY2UxMGEyMmVkLi5iMjUzMDNkOTkxOWZkIDEwMDY0NAotLS0gYS9hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYwpAQCAtOTMsOCAmIzQzOzkzLDkgQEAgc3RydWN0IHZnaWNfaXJxICp2Z2ljX2dldF9pcnEoc3RydWN0IGt2bSAqa3ZtLCB1MzIgaW50aWQpCiAJLyogU1BJcyAqLwogCWlmIChpbnRpZCAmZ3Q7PSBWR0lDX05SX1BSSVZBVEVfSVJRUyAmYW1wOyZhbXA7CiAJICAgIGludGlkICZsdDsgKGt2bS0mZ3Q7YXJjaC52Z2ljLm5yX3NwaXMgJiM0MzsgVkdJQ19OUl9QUklWQVRFX0lSUVMpKSB7Ci0JCWludGlkID0gYXJyYXlfaW5kZXhfbm9zcGVjKGludGlkLCBrdm0tJmd0O2FyY2gudmdpYy5ucl9zcGlzICYjNDM7IFZHSUNfTlJfUFJJVkFURV9JUlFTKTsKLQkJcmV0dXJuICZhbXA7a3ZtLSZndDthcmNoLnZnaWMuc3Bpc1tpbnRpZCAtIFZHSUNfTlJfUFJJVkFURV9JUlFTXTsKJiM0MzsJCWludGlkIC09IFZHSUNfTlJfUFJJVkFURV9JUlFTOwomIzQzOwkJaW50aWQgPSBhcnJheV9pbmRleF9ub3NwZWMoaW50aWQsIGt2bS0mZ3Q7YXJjaC52Z2ljLm5yX3NwaXMpOwomIzQzOwkJcmV0dXJuICZhbXA7a3ZtLSZndDthcmNoLnZnaWMuc3Bpc1tpbnRpZF07CiAJfQogCiAJLyogTFBJcyAqLwpAQCAtMTE3LDYgJiM0MzsxMTgsOCBAQCBzdHJ1Y3QgdmdpY19pcnEgKnZnaWNfZ2V0X3ZjcHVfaXJxKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTMyIGludGlkKQogCQlzd2l0Y2ggKHR5cGUpIHsKIAkJY2FzZSBLVk1fREVWX1RZUEVfQVJNX1ZHSUNfVjU6CiAJCQlpbnRpZCA9IHZnaWNfdjVfZ2V0X2h3aXJxX2lkKGludGlkKTsKJiM0MzsJCQlpZiAoaW50aWQgJmd0Oz0gVkdJQ19WNV9OUl9QUklWQVRFX0lSUVMpCiYjNDM7CQkJCXJldHVybiBOVUxMOwogCQkJaW50aWQgPSBhcnJheV9pbmRleF9ub3NwZWMoaW50aWQsIFZHSUNfVjVfTlJfUFJJVkFURV9JUlFTKTsKIAkJCWJyZWFrOwogCQlkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMgYi9kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYwppbmRleCBmM2ZjZTBiMWUyNWQ5Li42Nzk0MGVhOWUzOWI3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYwpAQCAtNjUxLDYgJiM0Mzs2NTEsMTkgQEAgc3RhdGljIGludCBfX2luaXQgZ2ljdjVfaXJzX29mX2luaXRfYWZmaW5pdHkoc3RydWN0IGRldmljZV9ub2RlICpub2RlLAogCXJldHVybiByZXQ7CiB9CiAKJiM0MztzdGF0aWMgdm9pZCBfX2luaXQgZ2ljdjVfaXJzX2NsZWFyX2FmZmluaXR5KHN0cnVjdCBnaWN2NV9pcnNfY2hpcF9kYXRhICppcnNfZGF0YSkKJiM0Mzt7CiYjNDM7CWludCBjcHU7CiYjNDM7CiYjNDM7CWZvcl9lYWNoX3Bvc3NpYmxlX2NwdShjcHUpIHsKJiM0MzsJCWlmIChwZXJfY3B1KHBlcl9jcHVfaXJzX2RhdGEsIGNwdSkgPT0gaXJzX2RhdGEpIHsKJiM0MzsJCQlwZXJfY3B1KGNwdV9pYWZmaWQsIGNwdSkuaWFmZmlkID0gMDsKJiM0MzsJCQlwZXJfY3B1KGNwdV9pYWZmaWQsIGNwdSkudmFsaWQgPSBmYWxzZTsKJiM0MzsJCQlwZXJfY3B1KHBlcl9jcHVfaXJzX2RhdGEsIGNwdSkgPSBOVUxMOwomIzQzOwkJfQomIzQzOwl9CiYjNDM7fQomIzQzOwogc3RhdGljIHZvaWQgaXJzX3NldHVwX3ByaV9iaXRzKHUzMiBpZHIxKQogewogCXN3aXRjaCAoRklFTERfR0VUKEdJQ1Y1X0lSU19JRFIxX1BSSU9SSVRZX0JJVFMsIGlkcjEpKSB7CkBAIC03NzMsNiAmIzQzOzc4Niw3IEBAIHN0YXRpYyBpbnQgX19pbml0IGdpY3Y1X2lyc19vZl9pbml0KHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSkKIAlyZXR1cm4gcmV0OwogCiBvdXRfaW9tZW06CiYjNDM7CWdpY3Y1X2lyc19jbGVhcl9hZmZpbml0eShpcnNfZGF0YSk7CiAJaW91bm1hcChpcnNfYmFzZSk7CiBvdXRfZXJyOgogCWtmcmVlKGlyc19kYXRhKTsKQEAgLTc4Nyw2ICYjNDM7ODAxLDcgQEAgdm9pZCBfX2luaXQgZ2ljdjVfaXJzX3JlbW92ZSh2b2lkKQogCWdpY3Y1X2RlaW5pdF9scGlzKCk7CiAKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoaXJzX2RhdGEsIHRtcF9kYXRhLCAmYW1wO2lyc19ub2RlcywgZW50cnkpIHsKJiM0MzsJCWdpY3Y1X2lyc19jbGVhcl9hZmZpbml0eShpcnNfZGF0YSk7CiAJCWlvdW5tYXAoaXJzX2RhdGEtJmd0O2lyc19iYXNlKTsKIAkJbGlzdF9kZWwoJmFtcDtpcnNfZGF0YS0mZ3Q7ZW50cnkpOwogCQlrZnJlZShpcnNfZGF0YSk7CkBAIC05NTEsNiAmIzQzOzk2Niw3IEBAIHN0YXRpYyBpbnQgX19pbml0IGdpY19hY3BpX3BhcnNlX21hZHRfaXJzKHVuaW9uIGFjcGlfc3VidGFibGVfaGVhZGVycyAqaGVhZGVyLAogCXJldHVybiAwOwogCiBvdXRfbWFwOgomIzQzOwlnaWN2NV9pcnNfY2xlYXJfYWZmaW5pdHkoaXJzX2RhdGEpOwogCWlvdW5tYXAoaXJzX2Jhc2UpOwogb3V0X3JlbGVhc2U6CiAJcmVsZWFzZV9tZW1fcmVnaW9uKHItJmd0O3N0YXJ0LCByZXNvdXJjZV9zaXplKHIpKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LmMgYi9kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS5jCmluZGV4IGU5ZDE3OTUyMzVhNjYuLjZhOTljNTQxYjU1OWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUuYwpAQCAtOTgzLDYgJiM0Mzs5ODMsNyBAQCBzdGF0aWMgdm9pZCBnaWN2NV9jcHVfZGlzYWJsZV9pbnRlcnJ1cHRzKHZvaWQpCiAKIAljcjAgPSBGSUVMRF9QUkVQKElDQ19DUjBfRUwxX0VOLCAwKTsKIAl3cml0ZV9zeXNyZWdfcyhjcjAsIFNZU19JQ0NfQ1IwX0VMMSk7CiYjNDM7CWlzYigpOwogfQogCiBzdGF0aWMgdm9pZCBnaWN2NV9jcHVfZW5hYmxlX2ludGVycnVwdHModm9pZCkKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTE6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzU1OAoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDE3NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgVGhpcyBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIEkgc2VlIGl0JiMzOTtzIHRvdWNoaW5nIHNvbWUgY3JpdGljYWwgYXJlYXM6IGBhcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaW5pdC5jYCwgYGFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jYCwgYGRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jYCwgYW5kIGBkcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS5jYC4gTXkgc3BpZGV5IHNlbnNlcyBhcmUgYWxyZWFkeSB0aW5nbGluZzsgYW55IG1vZGlmaWNhdGlvbiB0byB0aGUgS1ZNIFZHSUMgYW5kIEdJQyBkcml2ZXJzIG5lZWRzIGNhcmVmdWwgcmV2aWV3LiBUaGUgZGVzY3JpcHRpb24gbWVudGlvbnMgaXQmIzM5O3MgZml4aW5nIG1lbW9yeSBsZWFrcywgcG90ZW50aWFsIGFycmF5IGluZGV4IG91dC1vZi1ib3VuZHMgZXJyb3JzLCBhbmQgaW50cm9kdWNpbmcgYW4gYGlzYigpYCBpbnN0cnVjdGlvbi4gU29saWQgZnVuY3Rpb25hbCBjaGFuZ2VzLCBidXQgSSBuZWVkIHRvIGRpdmUgZGVlcGVyLgoKTWVtb3J5IGxlYWtzIGFuZCBib3VuZHMgY2hlY2tzIGFyZSBhbHdheXMgZ29vZCB0byBzZWUgYWRkcmVzc2VkLCBlc3BlY2lhbGx5IGluIGtlcm5lbCBjb2RlLiBBbiBgaXNiKClgIGltcGxpZXMgbWVtb3J5IGJhcnJpZXIgaW1wbGljYXRpb25zLCB3aGljaCBpcyBpbXBvcnRhbnQgZm9yIGludGVycnVwdCBoYW5kbGluZy4gQWxsIG9mIHRoZXNlIGZpeGVzIHJlcXVpcmUgdGhvcm91Z2ggdGVzdGluZy4KClRoZSByZWZlcmVuY2UgdG8gR0lDdjUgcGlxdWVzIG15IGludGVyZXN0LiBHSUN2NSwgcmVhbGx5PyBJIHNob3VsZCBwcm9iYWJseSB2ZXJpZnkgdGhhdCBgZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUuY2AgKmFjdHVhbGx5KiBleGlzdHMgaW4gdGhlIGtlcm5lbCBhbmQgaXNuJiMzOTt0IHNvbWUgc3RhbGUgZmlsZS4gQSBxdWljayBjaGVjayBvZiB0aGUga2VybmVsIHRyZWUgaXMgaW4gb3JkZXIgYmVmb3JlIHByb2NlZWRpbmcgYW55IGZ1cnRoZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTE6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Z2ljdjUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2lycWNoaXAvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxNjQ1IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy0yNS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjI2OnN0YXRpYyBERUZJTkVfUEVSX0NQVV9SRUFEX01PU1RMWShzdHJ1Y3QgZ2ljdjVfaXJzX2NoaXBfZGF0YSAqLCBwZXJfY3B1X2lyc19kYXRhKTtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTI3LXN0YXRpYyBMSVNUX0hFQUQoaXJzX25vZGVzKTtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTI4LVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6Mjk6c3RhdGljIHUzMiBpcnNfcmVhZGxfcmVsYXhlZChzdHJ1Y3QgZ2ljdjVfaXJzX2NoaXBfZGF0YSAqaXJzX2RhdGEsXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy0zMC1cdFx0XHQgICAgIGNvbnN0IHUzMiByZWdfb2Zmc2V0KVxuLS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTM0LVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6MzU6c3RhdGljIHZvaWQgaXJzX3dyaXRlbF9yZWxheGVkKHN0cnVjdCBnaWN2NV9pcnNfY2hpcF9kYXRhICppcnNfZGF0YSxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTM2LVx0XHRcdCAgICAgICBjb25zdCB1MzIgdmFsLCBjb25zdCB1MzIgcmVnX29mZnNldClcbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy00MC1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjQxOnN0YXRpYyB1NjQgaXJzX3JlYWRxX3JlbGF4ZWQoc3RydWN0IGdpY3Y1X2lyc19jaGlwX2RhdGEgKmlyc19kYXRhLFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNDItXHRcdFx0ICAgICBjb25zdCB1MzIgcmVnX29mZnNldClcbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy00Ni1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjQ3OnN0YXRpYyB2b2lkIGlyc193cml0ZXFfcmVsYXhlZChzdHJ1Y3QgZ2ljdjVfaXJzX2NoaXBfZGF0YSAqaXJzX2RhdGEsXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy00OC1cdFx0XHQgICAgICAgY29uc3QgdTY0IHZhbCwgY29uc3QgdTMyIHJlZ19vZmZzZXQpXG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNTMtLypcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjU0OiAqIFRoZSBwb2xsaW5nIHdhaXQgKGluIGdpY3Y1X3dhaXRfZm9yX29wX3NfYXRvbWljKCkpIG9uIGEgR0lDIHJlZ2lzdGVyXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy01NS0gKiBwcm92aWRlcyB0aGUgbWVtb3J5IGJhcnJpZXJzICh0aHJvdWdoIE1NSU8gYWNjZXNzb3JzKVxuLS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTU3LSAqL1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6NTg6c3RhdGljIGludCBnaWN2NV9pcnNfaXN0X3N5bmNocm9uaXNlKHN0cnVjdCBnaWN2NV9pcnNfY2hpcF9kYXRhICppcnNfZGF0YSlcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTU5LXtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjYwOlx0cmV0dXJuIGdpY3Y1X3dhaXRfZm9yX29wX2F0b21pYyhpcnNfZGF0YS1cdTAwM2VpcnNfYmFzZSwgR0lDVjVfSVJTX0lTVF9TVEFUVVNSLFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNjEtXHRcdFx0XHRcdEdJQ1Y1X0lSU19JU1RfU1RBVFVTUl9JRExFLCBOVUxMKTtcbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy02My1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjY0OnN0YXRpYyBpbnQgX19pbml0IGdpY3Y1X2lyc19pbml0X2lzdF9saW5lYXIoc3RydWN0IGdpY3Y1X2lyc19jaGlwX2RhdGEgKmlyc19kYXRhLFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNjUtXHRcdFx0XHRcdCAgICB1bnNpZ25lZCBpbnQgbHBpX2lkX2JpdHMsXG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtMTEwLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6MTExOlx0Z2ljdjVfZ2xvYmFsX2RhdGEuaXN0LmwyID0gZmFsc2U7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy0xMTItXG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtMTE2LVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6MTE3Olx0cmV0ID0gZ2ljdjVfaXJzX2lzdF9zeW5jaHJvbmlzZShpcnNfZGF0YSk7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy0xMTgtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtMTI2LVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6MTI3OnN0YXRpYyBpbnQgX19pbml0IGdpY3Y1X2lyc19pbml0X2lzdF90d29fbGV2ZWwoc3RydWN0IGdpY3Y1X2lyc19jaGlwX2RhdGEgKmlyc19kYXRhLFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtMTI4LVx0XHRcdFx0XHQgICAgICAgdW5zaWduZWQgaW50IGxwaV9pZF9iaXRzLFxuLS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTE2NC1cdCAqL1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6MTY1Olx0Z2ljdjVfZ2xvYmFsX2RhdGEuaXN0LmwyX3NpemUgPSBCSVQoMTEgJiM0MzsgKDIgKiBsMnN6KSAmIzQzOyAxKTtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjE2NjpcdGdpY3Y1X2dsb2JhbF9kYXRhLmlzdC5sMl9iaXRzID0gKDEwIC0gaXN0c3opICYjNDM7ICgyICogbDJzeik7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzoxNjc6XHRnaWN2NV9nbG9iYWxfZGF0YS5pc3QubDFpc3RfYWRkciA9IGwxaXN0O1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6MTY4Olx0Z2ljdjVfZ2xvYmFsX2RhdGEuaXN0LmwyID0gdHJ1ZTtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTE2OS1cbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy0xNzMtXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzoxNzQ6XHRyZXQgPSBnaWN2NV9pcnNfaXN0X3N5bmNocm9uaXNlKGlyc19kYXRhKTtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTE3NS1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy0xODgtICovXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzoxODk6aW50IGdpY3Y1X2lyc19pc3RlX2FsbG9jKGNvbnN0IHUzMiBscGkpXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy0xOTAte1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6MTkxOlx0c3RydWN0IGdpY3Y1X2lyc19jaGlwX2RhdGEgKmlyc19kYXRhO1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtMTkyLVx0dW5zaWduZWQgaW50IGluZGV4O1xuLS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTE5OC1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjE5OTpcdGlmICghZ2ljdjVfZ2xvYmFsX2RhdGEuaXN0LmwyKVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtMjAwLVx0XHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy0yMDUtXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzoyMDY6XHRsMnNpemUgPSBnaWN2NV9nbG9iYWxfZGF0YS5pc3QubDJfc2l6ZTtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjIwNzpcdGwyYml0cyA9IGdpY3Y1X2dsb2JhbF9kYXRhLmlzdC5sMl9iaXRzO1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6MjA4Olx0bDFpc3QgPSBnaWN2NV9nbG9iYWxfZGF0YS5pc3QubDFpc3RfYWRkcjtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTIwOS1cdGluZGV4ID0gbHBpIFx1MDAzZVx1MDAzZSBsMmJpdHM7XG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtMjMxLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6MjMyOlx0cmV0ID0gZ2ljdjVfaXJzX2lzdF9zeW5jaHJvbmlzZShpcnNfZGF0YSk7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy0yMzMtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtMjQ1LVx0XHQvKlxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6MjQ2Olx0XHQgKiBnaWN2NV9pcnNfaXN0X3N5bmNocm9uaXNlKCkgaW5jbHVkZXMgbWVtb3J5XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy0yNDctXHRcdCAqIGJhcnJpZXJzIChNTUlPIGFjY2Vzc29ycykgcmVxdWlyZWQgdG8gZ3VhcmFudGVlIHRoYXQgdGhlXG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtMjY4LSAqL1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6MjY5OnN0YXRpYyB1bnNpZ25lZCBpbnQgZ2ljdjVfaXJzX2wyX3N6KHUzMiBpZHIyKVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtMjcwLXtcbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy0yOTEtXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzoyOTI6c3RhdGljIGludCBfX2luaXQgZ2ljdjVfaXJzX2luaXRfaXN0KHN0cnVjdCBnaWN2NV9pcnNfY2hpcF9kYXRhICppcnNfZGF0YSlcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTI5My17XG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtMzMwLVx0ICovXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzozMzE6XHRscGlfaWRfYml0cyA9IG1pbihscGlfaWRfYml0cywgZ2ljdjVfZ2xvYmFsX2RhdGEuY3B1aWZfaWRfYml0cyk7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy0zMzItXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy0zMzMtXHRpZiAodHdvX2xldmVscylcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjMzNDpcdFx0bDJzeiA9IGdpY3Y1X2lyc19sMl9zeihpZHIyKTtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTMzNS1cbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy0zNTMtXHRpZiAodHdvX2xldmVscyBcdTAwMjZcdTAwMjYgKGxwaV9pZF9iaXRzIFx1MDAzZSAoKDEwIC0gbDJfaXN0ZV9zeikgJiM0MzsgKDIgKiBsMnN6KSkpKSB7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzozNTQ6XHRcdHJldCA9IGdpY3Y1X2lyc19pbml0X2lzdF90d29fbGV2ZWwoaXJzX2RhdGEsIGxwaV9pZF9iaXRzLFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtMzU1LVx0XHRcdFx0XHRcdCAgIGwyX2lzdGVfc3osIGwyc3opO1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtMzU2LVx0fSBlbHNlIHtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjM1NzpcdFx0cmV0ID0gZ2ljdjVfaXJzX2luaXRfaXN0X2xpbmVhcihpcnNfZGF0YSwgbHBpX2lkX2JpdHMsXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy0zNTgtXHRcdFx0XHRcdFx0bDJfaXN0ZV9zeik7XG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtMzYyLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6MzYzOlx0Z2ljdjVfaW5pdF9scGlzKEJJVChscGlfaWRfYml0cykpO1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtMzY0LVxuLS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jPTM3Mz1zdGF0aWMgREVGSU5FX1BFUl9DUFUoc3RydWN0IGlhZmZpZF9lbnRyeSwgY3B1X2lhZmZpZCk7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy0zNzQtXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzozNzU6aW50IGdpY3Y1X2lyc19jcHVfdG9faWFmZmlkKGludCBjcHVpZCwgdTE2ICppYWZmaWQpXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy0zNzYte1xuLS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTM4Ni1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjM4NzpzdHJ1Y3QgZ2ljdjVfaXJzX2NoaXBfZGF0YSAqZ2ljdjVfaXJzX2xvb2t1cF9ieV9zcGlfaWQodTMyIHNwaV9pZClcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTM4OC17XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzozODk6XHRzdHJ1Y3QgZ2ljdjVfaXJzX2NoaXBfZGF0YSAqaXJzX2RhdGE7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy0zOTAtXHR1MzIgbWluLCBtYXg7XG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNDA0LVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6NDA1OnN0YXRpYyBpbnQgZ2ljdjVfaXJzX3dhaXRfZm9yX3NwaV9vcChzdHJ1Y3QgZ2ljdjVfaXJzX2NoaXBfZGF0YSAqaXJzX2RhdGEpXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy00MDYte1xuLS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTQwOS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjQxMDpcdHJldCA9IGdpY3Y1X3dhaXRfZm9yX29wX2F0b21pYyhpcnNfZGF0YS1cdTAwM2VpcnNfYmFzZSwgR0lDVjVfSVJTX1NQSV9TVEFUVVNSLFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNDExLVx0XHRcdFx0ICAgICAgIEdJQ1Y1X0lSU19TUElfU1RBVFVTUl9JRExFLCBcdTAwMjZzdGF0dXNyKTtcbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy00MTctXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo0MTg6c3RhdGljIGludCBnaWN2NV9pcnNfd2FpdF9mb3JfaXJzX3BlKHN0cnVjdCBnaWN2NV9pcnNfY2hpcF9kYXRhICppcnNfZGF0YSxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTQxOS1cdFx0XHRcdCAgICAgYm9vbCBzZWxyKVxuLS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTQyNC1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjQyNTpcdHJldCA9IGdpY3Y1X3dhaXRfZm9yX29wX2F0b21pYyhpcnNfZGF0YS1cdTAwM2VpcnNfYmFzZSwgR0lDVjVfSVJTX1BFX1NUQVRVU1IsXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy00MjYtXHRcdFx0XHQgICAgICAgR0lDVjVfSVJTX1BFX1NUQVRVU1JfSURMRSwgXHUwMDI2c3RhdHVzcik7XG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNDM1LVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6NDM2OnN0YXRpYyBpbnQgZ2ljdjVfaXJzX3dhaXRfZm9yX3BlX3NlbHIoc3RydWN0IGdpY3Y1X2lyc19jaGlwX2RhdGEgKmlyc19kYXRhKVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNDM3LXtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjQzODpcdHJldHVybiBnaWN2NV9pcnNfd2FpdF9mb3JfaXJzX3BlKGlyc19kYXRhLCB0cnVlKTtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTQzOS19XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy00NDAtXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo0NDE6c3RhdGljIGludCBnaWN2NV9pcnNfd2FpdF9mb3JfcGVfY3IwKHN0cnVjdCBnaWN2NV9pcnNfY2hpcF9kYXRhICppcnNfZGF0YSlcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTQ0Mi17XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo0NDM6XHRyZXR1cm4gZ2ljdjVfaXJzX3dhaXRfZm9yX2lyc19wZShpcnNfZGF0YSwgZmFsc2UpO1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNDQ0LX1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTQ0NS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjQ0NjppbnQgZ2ljdjVfc3BpX2lycV9zZXRfdHlwZShzdHJ1Y3QgaXJxX2RhdGEgKmQsIHVuc2lnbmVkIGludCB0eXBlKVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNDQ3LXtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjQ0ODpcdHN0cnVjdCBnaWN2NV9pcnNfY2hpcF9kYXRhICppcnNfZGF0YSA9IGQtXHUwMDNlY2hpcF9kYXRhO1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNDQ5LVx0dTMyIHNlbHIsIGNmZ3I7XG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNDc0LVx0aXJzX3dyaXRlbF9yZWxheGVkKGlyc19kYXRhLCBzZWxyLCBHSUNWNV9JUlNfU1BJX1NFTFIpO1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6NDc1Olx0cmV0ID0gZ2ljdjVfaXJzX3dhaXRfZm9yX3NwaV9vcChpcnNfZGF0YSk7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy00NzYtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTQ4MS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjQ4MjpcdHJldHVybiBnaWN2NV9pcnNfd2FpdF9mb3Jfc3BpX29wKGlyc19kYXRhKTtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTQ4My19XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy00ODQtXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo0ODU6c3RhdGljIGludCBnaWN2NV9pcnNfd2FpdF9mb3JfaWRsZShzdHJ1Y3QgZ2ljdjVfaXJzX2NoaXBfZGF0YSAqaXJzX2RhdGEpXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy00ODYte1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6NDg3Olx0cmV0dXJuIGdpY3Y1X3dhaXRfZm9yX29wX2F0b21pYyhpcnNfZGF0YS1cdTAwM2VpcnNfYmFzZSwgR0lDVjVfSVJTX0NSMCxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTQ4OC1cdFx0XHRcdFx0R0lDVjVfSVJTX0NSMF9JRExFLCBOVUxMKTtcbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy00OTAtXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo0OTE6dm9pZCBnaWN2NV9pcnNfc3luY3Iodm9pZClcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTQ5Mi17XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo0OTM6XHRzdHJ1Y3QgZ2ljdjVfaXJzX2NoaXBfZGF0YSAqaXJzX2RhdGE7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy00OTQtXHR1MzIgc3luY3I7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy00OTUtXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo0OTY6XHRpcnNfZGF0YSA9IGxpc3RfZmlyc3RfZW50cnlfb3JfbnVsbChcdTAwMjZpcnNfbm9kZXMsIHN0cnVjdCBnaWN2NV9pcnNfY2hpcF9kYXRhLCBlbnRyeSk7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy00OTctXHRpZiAoV0FSTl9PTl9PTkNFKCFpcnNfZGF0YSkpXG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNTAyLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6NTAzOlx0Z2ljdjVfd2FpdF9mb3Jfb3AoaXJzX2RhdGEtXHUwMDNlaXJzX2Jhc2UsIEdJQ1Y1X0lSU19TWU5DX1NUQVRVU1IsXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy01MDQtXHRcdFx0ICBHSUNWNV9JUlNfU1lOQ19TVEFUVVNSX0lETEUpO1xuLS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTUwNi1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjUwNzppbnQgZ2ljdjVfaXJzX3JlZ2lzdGVyX2NwdShpbnQgY3B1aWQpXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy01MDgte1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6NTA5Olx0c3RydWN0IGdpY3Y1X2lyc19jaGlwX2RhdGEgKmlyc19kYXRhO1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNTEwLVx0dTMyIHNlbHIsIGNyMDtcbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy01MTMtXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo1MTQ6XHRyZXQgPSBnaWN2NV9pcnNfY3B1X3RvX2lhZmZpZChjcHVpZCwgXHUwMDI2aWFmZmlkKTtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTUxNS1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy01MjgtXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo1Mjk6XHRyZXQgPSBnaWN2NV9pcnNfd2FpdF9mb3JfcGVfc2VscihpcnNfZGF0YSk7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy01MzAtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNTM3LVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6NTM4Olx0cmV0ID0gZ2ljdjVfaXJzX3dhaXRfZm9yX3BlX2NyMChpcnNfZGF0YSk7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy01MzktXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTU0Ni1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjU0NzpzdGF0aWMgdm9pZCBfX2luaXQgZ2ljdjVfaXJzX2luaXRfYmFzZXMoc3RydWN0IGdpY3Y1X2lyc19jaGlwX2RhdGEgKmlyc19kYXRhLFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNTQ4LVx0XHRcdFx0XHR2b2lkIF9faW9tZW0gKmlyc19iYXNlLFxuLS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTU5MS1cdGlyc193cml0ZWxfcmVsYXhlZChpcnNfZGF0YSwgY3IwLCBHSUNWNV9JUlNfQ1IwKTtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjU5MjpcdGdpY3Y1X2lyc193YWl0X2Zvcl9pZGxlKGlyc19kYXRhKTtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTU5My19XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy01OTQtXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo1OTU6c3RhdGljIGludCBfX2luaXQgZ2ljdjVfaXJzX29mX2luaXRfYWZmaW5pdHkoc3RydWN0IGRldmljZV9ub2RlICpub2RlLFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6NTk2Olx0XHRcdFx0XHQgICAgIHN0cnVjdCBnaWN2NV9pcnNfY2hpcF9kYXRhICppcnNfZGF0YSxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTU5Ny1cdFx0XHRcdFx0ICAgICB1OCBpYWZmaWRfYml0cylcbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy02NTMtXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo2NTQ6c3RhdGljIHZvaWQgX19pbml0IGdpY3Y1X2lyc19jbGVhcl9hZmZpbml0eShzdHJ1Y3QgZ2ljdjVfaXJzX2NoaXBfZGF0YSAqaXJzX2RhdGEpXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy02NTUte1xuLS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jPTY2Nz1zdGF0aWMgdm9pZCBpcnNfc2V0dXBfcHJpX2JpdHModTMyIGlkcjEpXG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNjcwLVx0Y2FzZSBHSUNWNV9JUlNfSURSMV9QUklPUklUWV9CSVRTXzFCSVRTOlxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6NjcxOlx0XHRnaWN2NV9nbG9iYWxfZGF0YS5pcnNfcHJpX2JpdHMgPSAxO1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNjcyLVx0XHRicmVhaztcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTY3My1cdGNhc2UgR0lDVjVfSVJTX0lEUjFfUFJJT1JJVFlfQklUU18yQklUUzpcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjY3NDpcdFx0Z2ljdjVfZ2xvYmFsX2RhdGEuaXJzX3ByaV9iaXRzID0gMjtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTY3NS1cdFx0YnJlYWs7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy02NzYtXHRjYXNlIEdJQ1Y1X0lSU19JRFIxX1BSSU9SSVRZX0JJVFNfM0JJVFM6XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo2Nzc6XHRcdGdpY3Y1X2dsb2JhbF9kYXRhLmlyc19wcmlfYml0cyA9IDM7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy02NzgtXHRcdGJyZWFrO1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNjc5LVx0Y2FzZSBHSUNWNV9JUlNfSURSMV9QUklPUklUWV9CSVRTXzRCSVRTOlxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6NjgwOlx0XHRnaWN2NV9nbG9iYWxfZGF0YS5pcnNfcHJpX2JpdHMgPSA0O1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNjgxLVx0XHRicmVhaztcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTY4Mi1cdGNhc2UgR0lDVjVfSVJTX0lEUjFfUFJJT1JJVFlfQklUU181QklUUzpcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjY4MzpcdFx0Z2ljdjVfZ2xvYmFsX2RhdGEuaXJzX3ByaV9iaXRzID0gNTtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTY4NC1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNjg3LVx0XHRcdEZJRUxEX0dFVChHSUNWNV9JUlNfSURSMV9QUklPUklUWV9CSVRTLCBpZHIxKSk7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo2ODg6XHRcdGdpY3Y1X2dsb2JhbF9kYXRhLmlyc19wcmlfYml0cyA9IDE7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy02ODktXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTY5Mi1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjY5MzpzdGF0aWMgaW50IF9faW5pdCBnaWN2NV9pcnNfaW5pdChzdHJ1Y3QgZ2ljdjVfaXJzX2NoaXBfZGF0YSAqaXJzX2RhdGEpXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy02OTQte1xuLS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTcxNC1cdFx0aWRyID0gaXJzX3JlYWRsX3JlbGF4ZWQoaXJzX2RhdGEsIEdJQ1Y1X0lSU19JRFIwKTtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjcxNTpcdFx0Z2ljdjVfZ2xvYmFsX2RhdGEudmlydF9jYXBhYmxlID0gISFGSUVMRF9HRVQoR0lDVjVfSVJTX0lEUjBfVklSVCwgaWRyKTtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTcxNi1cbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy03MjItXHRcdHNwaV9jb3VudCA9IEZJRUxEX0dFVChHSUNWNV9JUlNfSURSNV9TUElfUkFOR0UsIGlkcik7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo3MjM6XHRcdGdpY3Y1X2dsb2JhbF9kYXRhLmdsb2JhbF9zcGlfY291bnQgPSBzcGlfY291bnQ7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy03MjQtXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo3MjU6XHRcdGdpY3Y1X2luaXRfbHBpX2RvbWFpbigpO1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNzI2LVxuLS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTczNC1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjczNTpzdGF0aWMgaW50IF9faW5pdCBnaWN2NV9pcnNfb2ZfaW5pdChzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUpXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy03MzYte1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6NzM3Olx0c3RydWN0IGdpY3Y1X2lyc19jaGlwX2RhdGEgKmlyc19kYXRhO1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNzM4LVx0dm9pZCBfX2lvbWVtICppcnNfYmFzZTtcbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy03NjItXHRpcnNfZGF0YS1cdTAwM2Vmd25vZGUgPSBvZl9md25vZGVfaGFuZGxlKG5vZGUpO1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6NzYzOlx0Z2ljdjVfaXJzX2luaXRfYmFzZXMoaXJzX2RhdGEsIGlyc19iYXNlLCBvZl9wcm9wZXJ0eV9yZWFkX2Jvb2wobm9kZSwgXCYjMzQ7ZG1hLW5vbmNvaGVyZW50XCYjMzQ7KSk7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy03NjQtXG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNzY3LVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6NzY4Olx0cmV0ID0gZ2ljdjVfaXJzX29mX2luaXRfYWZmaW5pdHkobm9kZSwgaXJzX2RhdGEsIGlhZmZpZF9iaXRzKTtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTc2OS1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy03NzMtXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo3NzQ6XHRyZXQgPSBnaWN2NV9pcnNfaW5pdChpcnNfZGF0YSk7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy03NzUtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTc4OC1vdXRfaW9tZW06XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo3ODk6XHRnaWN2NV9pcnNfY2xlYXJfYWZmaW5pdHkoaXJzX2RhdGEpO1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNzkwLVx0aW91bm1hcChpcnNfYmFzZSk7XG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNzk1LVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6Nzk2OnZvaWQgX19pbml0IGdpY3Y1X2lyc19yZW1vdmUodm9pZClcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTc5Ny17XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo3OTg6XHRzdHJ1Y3QgZ2ljdjVfaXJzX2NoaXBfZGF0YSAqaXJzX2RhdGEsICp0bXBfZGF0YTtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTc5OS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjgwMDpcdGdpY3Y1X2ZyZWVfbHBpX2RvbWFpbigpO1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6ODAxOlx0Z2ljdjVfZGVpbml0X2xwaXMoKTtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTgwMi1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTgwMy1cdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShpcnNfZGF0YSwgdG1wX2RhdGEsIFx1MDAyNmlyc19ub2RlcywgZW50cnkpIHtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjgwNDpcdFx0Z2ljdjVfaXJzX2NsZWFyX2FmZmluaXR5KGlyc19kYXRhKTtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTgwNS1cdFx0aW91bm1hcChpcnNfZGF0YS1cdTAwM2VpcnNfYmFzZSk7XG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtODEwLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6ODExOmludCBfX2luaXQgZ2ljdjVfaXJzX2VuYWJsZSh2b2lkKVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtODEyLXtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjgxMzpcdHN0cnVjdCBnaWN2NV9pcnNfY2hpcF9kYXRhICppcnNfZGF0YTtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTgxNC1cdGludCByZXQ7XG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtODE2LVx0aXJzX2RhdGEgPSBsaXN0X2ZpcnN0X2VudHJ5X29yX251bGwoXHUwMDI2aXJzX25vZGVzLFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6ODE3Olx0XHRcdFx0XHQgICAgc3RydWN0IGdpY3Y1X2lyc19jaGlwX2RhdGEsIGVudHJ5KTtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTgxOC1cdGlmICghaXJzX2RhdGEpXG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtODIwLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6ODIxOlx0cmV0ID0gZ2ljdjVfaXJzX2luaXRfaXN0KGlyc19kYXRhKTtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTgyMi1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy04MjktXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo4MzA6dm9pZCBfX2luaXQgZ2ljdjVfaXJzX2l0c19wcm9iZSh2b2lkKVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtODMxLXtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjgzMjpcdHN0cnVjdCBnaWN2NV9pcnNfY2hpcF9kYXRhICppcnNfZGF0YTtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTgzMy1cbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy04MzUtXHRcdGxpc3RfZm9yX2VhY2hfZW50cnkoaXJzX2RhdGEsIFx1MDAyNmlyc19ub2RlcywgZW50cnkpXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo4MzY6XHRcdFx0Z2ljdjVfaXRzX29mX3Byb2JlKHRvX29mX25vZGUoaXJzX2RhdGEtXHUwMDNlZndub2RlKSk7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy04MzctXHRlbHNlXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo4Mzg6XHRcdGdpY3Y1X2l0c19hY3BpX3Byb2JlKCk7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy04MzktfVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtODQwLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6ODQxOmludCBfX2luaXQgZ2ljdjVfaXJzX29mX3Byb2JlKHN0cnVjdCBkZXZpY2Vfbm9kZSAqcGFyZW50KVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtODQyLXtcbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy04NDktXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo4NTA6XHRcdHJldCA9IGdpY3Y1X2lyc19vZl9pbml0KG5wKTtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTg1MS1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy04NjAtI2RlZmluZSBBQ1BJX0dJQ1Y1X0lSU19NRU1fU0laRSAoU1pfNjRLKVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6ODYxOnN0YXRpYyBzdHJ1Y3QgZ2ljdjVfaXJzX2NoaXBfZGF0YSAqY3VycmVudF9pcnNfZGF0YSBfX2luaXRkYXRhO1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtODYyLXN0YXRpYyBpbnQgY3VycmVudF9pcnNpZCBfX2luaXRkYXRhID0gLTE7XG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM9ODY1PXN0YXRpYyBpbnQgX19pbml0IGdpY19hY3BpX3BhcnNlX2lhZmZpZCh1bmlvbiBhY3BpX3N1YnRhYmxlX2hlYWRlcnMgKmhlYWRlcixcbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy04OTQtXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo4OTU6c3RhdGljIGludCBfX2luaXQgZ2ljdjVfaXJzX2FjcGlfaW5pdF9hZmZpbml0eSh1MzIgaXJzaWQsIHN0cnVjdCBnaWN2NV9pcnNfY2hpcF9kYXRhICppcnNfZGF0YSlcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTg5Ni17XG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM9OTIxPXN0YXRpYyBpbnQgX19pbml0IGdpY19hY3BpX3BhcnNlX21hZHRfaXJzKHVuaW9uIGFjcGlfc3VidGFibGVfaGVhZGVycyAqaGVhZGVyLFxuLS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTkyMy17XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo5MjQ6XHRzdHJ1Y3QgYWNwaV9tYWR0X2dpY3Y1X2lycyAqaXJzID0gKHN0cnVjdCBhY3BpX21hZHRfZ2ljdjVfaXJzICopaGVhZGVyO1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6OTI1Olx0c3RydWN0IGdpY3Y1X2lyc19jaGlwX2RhdGEgKmlyc19kYXRhO1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtOTI2LVx0dm9pZCBfX2lvbWVtICppcnNfYmFzZTtcbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy05NTAtXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo5NTE6XHRnaWN2NV9pcnNfaW5pdF9iYXNlcyhpcnNfZGF0YSwgaXJzX2Jhc2UsIGlycy1cdTAwM2VmbGFncyBcdTAwMjYgQUNQSV9NQURUX0lSU19OT05fQ09IRVJFTlQpO1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtOTUyLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6OTUzOlx0Z2ljdjVfaXJzX2FjcGlfaW5pdF9hZmZpbml0eShpcnMtXHUwMDNlaXJzX2lkLCBpcnNfZGF0YSk7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy05NTQtXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo5NTU6XHRyZXQgPSBnaWN2NV9pcnNfaW5pdChpcnNfZGF0YSk7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy05NTYtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTk2OC1vdXRfbWFwOlxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6OTY5Olx0Z2ljdjVfaXJzX2NsZWFyX2FmZmluaXR5KGlyc19kYXRhKTtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTk3MC1cdGlvdW5tYXAoaXJzX2Jhc2UpO1xuLS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTk3Ny1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjk3ODppbnQgX19pbml0IGdpY3Y1X2lyc19hY3BpX3Byb2JlKHZvaWQpXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy05Nzkte1xuLS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTI3LVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmM6Mjg6c3RydWN0IGdpY3Y1X2l0c19jaGlwX2RhdGEge1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtMjktXHRzdHJ1Y3RcdHhhcnJheVx0XHRcdGl0c19kZXZpY2VzO1xuLS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTMxLVx0c3RydWN0XHRmd25vZGVfaGFuZGxlXHRcdCpmd25vZGU7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzozMjpcdHN0cnVjdCBnaWN2NV9pdHNfZGV2dGFiX2NmZ1x0ZGV2dGFiX2NmZ3I7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy0zMy1cdHZvaWRcdF9faW9tZW1cdFx0XHQqaXRzX2Jhc2U7XG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtMzctXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzozODpzdHJ1Y3QgZ2ljdjVfaXRzX2RldiB7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzozOTpcdHN0cnVjdCBnaWN2NV9pdHNfY2hpcF9kYXRhXHQqaXRzX25vZGU7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzo0MDpcdHN0cnVjdCBnaWN2NV9pdHNfaXR0X2NmZ1x0aXR0X2NmZztcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTQxLVx0dW5zaWduZWQgbG9uZ1x0XHRcdCpldmVudF9tYXA7XG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtNDYtXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzo0NzpzdGF0aWMgdTMyIGl0c19yZWFkbF9yZWxheGVkKHN0cnVjdCBnaWN2NV9pdHNfY2hpcF9kYXRhICppdHNfbm9kZSwgY29uc3QgdTMyIHJlZ19vZmZzZXQpXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy00OC17XG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtNTEtXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzo1MjpzdGF0aWMgdm9pZCBpdHNfd3JpdGVsX3JlbGF4ZWQoc3RydWN0IGdpY3Y1X2l0c19jaGlwX2RhdGEgKml0c19ub2RlLCBjb25zdCB1MzIgdmFsLFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtNTMtXHRcdFx0ICAgICAgIGNvbnN0IHUzMiByZWdfb2Zmc2V0KVxuLS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTU3LVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmM6NTg6c3RhdGljIHZvaWQgaXRzX3dyaXRlcV9yZWxheGVkKHN0cnVjdCBnaWN2NV9pdHNfY2hpcF9kYXRhICppdHNfbm9kZSwgY29uc3QgdTY0IHZhbCxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTU5LVx0XHRcdCAgICAgICBjb25zdCB1MzIgcmVnX29mZnNldClcbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy02My1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jOjY0OnN0YXRpYyB2b2lkIGdpY3Y1X2l0c19kY2FjaGVfY2xlYW4oc3RydWN0IGdpY3Y1X2l0c19jaGlwX2RhdGEgKml0cywgdm9pZCAqc3RhcnQsXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy02NS1cdFx0XHRcdCAgIHNpemVfdCBzeilcbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy03NC1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jOjc1OnN0YXRpYyB2b2lkIGl0c193cml0ZV90YWJsZV9lbnRyeShzdHJ1Y3QgZ2ljdjVfaXRzX2NoaXBfZGF0YSAqaXRzLCBfX2xlNjQgKmVudHJ5LFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtNzYtXHRcdFx0XHQgIHU2NCB2YWwpXG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtNzgtXHRXUklURV9PTkNFKCplbnRyeSwgY3B1X3RvX2xlNjQodmFsKSk7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzo3OTpcdGdpY3Y1X2l0c19kY2FjaGVfY2xlYW4oaXRzLCBlbnRyeSwgc2l6ZW9mKCplbnRyeSkpO1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtODAtfVxuLS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTg0LVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmM6ODU6c3RhdGljIGludCBnaWN2NV9pdHNfY2FjaGVfc3luYyhzdHJ1Y3QgZ2ljdjVfaXRzX2NoaXBfZGF0YSAqaXRzKVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtODYte1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmM6ODc6XHRyZXR1cm4gZ2ljdjVfd2FpdF9mb3Jfb3BfYXRvbWljKGl0cy1cdTAwM2VpdHNfYmFzZSwgR0lDVjVfSVRTX1NUQVRVU1IsXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy04OC1cdFx0XHRcdFx0R0lDVjVfSVRTX1NUQVRVU1JfSURMRSwgTlVMTCk7XG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtOTAtXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzo5MTpzdGF0aWMgdm9pZCBnaWN2NV9pdHNfc3luY3Ioc3RydWN0IGdpY3Y1X2l0c19jaGlwX2RhdGEgKml0cyxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jOjkyOlx0XHRcdCAgICBzdHJ1Y3QgZ2ljdjVfaXRzX2RldiAqaXRzX2RldilcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTkzLXtcbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy0xMDAtXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzoxMDE6XHRnaWN2NV93YWl0X2Zvcl9vcChpdHMtXHUwMDNlaXRzX2Jhc2UsIEdJQ1Y1X0lUU19TWU5DX1NUQVRVU1IsIEdJQ1Y1X0lUU19TWU5DX1NUQVRVU1JfSURMRSk7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy0xMDItfVxuLS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTEwOC1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jOjEwOTpzdGF0aWMgdW5zaWduZWQgaW50IGdpY3Y1X2l0c19sMnN6X3RvX2wyX2JpdHModW5zaWduZWQgaW50IHN6KVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtMTEwLXtcbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy0xMjEtXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzoxMjI6c3RhdGljIGludCBnaWN2NV9pdHNfaXR0X2NhY2hlX2ludihzdHJ1Y3QgZ2ljdjVfaXRzX2NoaXBfZGF0YSAqaXRzLCB1MzIgZGV2aWNlX2lkLFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtMTIzLVx0XHRcdFx0ICAgdTE2IGV2ZW50X2lkKVxuLS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTEzNS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jOjEzNjpcdHJldHVybiBnaWN2NV9pdHNfY2FjaGVfc3luYyhpdHMpO1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtMTM3LX1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTEzOC1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jOjEzOTpzdGF0aWMgdm9pZCBnaWN2NV9pdHNfZnJlZV9pdHRfbGluZWFyKHN0cnVjdCBnaWN2NV9pdHNfZGV2ICppdHNfZGV2KVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtMTQwLXtcbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy0xNDMtXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzoxNDQ6c3RhdGljIHZvaWQgZ2ljdjVfaXRzX2ZyZWVfaXR0X3R3b19sZXZlbChzdHJ1Y3QgZ2ljdjVfaXRzX2RldiAqaXRzX2RldilcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTE0NS17XG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtMTU0LVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmM6MTU1OnN0YXRpYyB2b2lkIGdpY3Y1X2l0c19mcmVlX2l0dChzdHJ1Y3QgZ2ljdjVfaXRzX2RldiAqaXRzX2RldilcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTE1Ni17XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy0xNTctXHRpZiAoIWl0c19kZXYtXHUwMDNlaXR0X2NmZy5sMml0dClcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jOjE1ODpcdFx0Z2ljdjVfaXRzX2ZyZWVfaXR0X2xpbmVhcihpdHNfZGV2KTtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTE1OS1cdGVsc2VcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jOjE2MDpcdFx0Z2ljdjVfaXRzX2ZyZWVfaXR0X3R3b19sZXZlbChpdHNfZGV2KTtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTE2MS19XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy0xNjItXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzoxNjM6c3RhdGljIGludCBnaWN2NV9pdHNfY3JlYXRlX2l0dF9saW5lYXIoc3RydWN0IGdpY3Y1X2l0c19jaGlwX2RhdGEgKml0cyxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jOjE2NDpcdFx0XHRcdCAgICAgICBzdHJ1Y3QgZ2ljdjVfaXRzX2RldiAqaXRzX2RldixcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTE2NS1cdFx0XHRcdCAgICAgICB1bnNpZ25lZCBpbnQgZXZlbnRfaWRfYml0cylcbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy0xNzgtXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzoxNzk6XHRnaWN2NV9pdHNfZGNhY2hlX2NsZWFuKGl0cywgaXR0LCBudW1fZW50cyAqIHNpemVvZigqaXR0KSk7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy0xODAtXG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtMTg4LSAqL1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmM6MTg5OnN0YXRpYyBpbnQgZ2ljdjVfaXRzX2NyZWF0ZV9pdHRfdHdvX2xldmVsKHN0cnVjdCBnaWN2NV9pdHNfY2hpcF9kYXRhICppdHMsXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzoxOTA6XHRcdFx0XHRcdCAgc3RydWN0IGdpY3Y1X2l0c19kZXYgKml0c19kZXYsXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy0xOTEtXHRcdFx0XHRcdCAgdW5zaWduZWQgaW50IGV2ZW50X2lkX2JpdHMsXG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtMjAwLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmM6MjAxOlx0cmV0ID0gZ2ljdjVfaXRzX2wyc3pfdG9fbDJfYml0cyhpdHRfbDJzeik7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy0yMDItXHRpZiAocmV0IFx1MDAzZT0gZXZlbnRfaWRfYml0cykge1xuLS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTI1NC1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jOjI1NTpcdFx0Z2ljdjVfaXRzX2RjYWNoZV9jbGVhbihpdHMsIGl0dF9sMiwgbDJzeik7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy0yNTYtXG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtMjYzLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmM6MjY0Olx0Z2ljdjVfaXRzX2RjYWNoZV9jbGVhbihpdHMsIGl0dF9sMSwgbnVtX2VudHMgKiBzaXplb2YoKml0dF9sMSkpO1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtMjY1LVxuLS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTI4NC0gKi9cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jOjI4NTpzdGF0aWMgYm9vbCBnaWN2NV9pdHNfbDJzel90d29fbGV2ZWwoYm9vbCBkZXZ0YWIsIHUzMiBpdHNfaWRyMSwgdTggaWRfYml0cywgdTggKnN6KVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtMjg2LXtcbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy0zMzItXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzozMzM6XHRsMl9iaXRzID0gZ2ljdjVfaXRzX2wyc3pfdG9fbDJfYml0cyhsMl9zeik7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy0zMzQtXG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtMzQyLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmM6MzQzOnN0YXRpYyBfX2xlNjQgKmdpY3Y1X2l0c19kZXZpY2VfZ2V0X2l0dGVfcmVmKHN0cnVjdCBnaWN2NV9pdHNfZGV2ICppdHNfZGV2LFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtMzQ0LVx0XHRcdFx0XHQgICAgIHUxNiBldmVudF9pZClcbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy0zNTQtXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzozNTU6XHRsMl9iaXRzID0gZ2ljdjVfaXRzX2wyc3pfdG9fbDJfYml0cyhpdHNfZGV2LVx1MDAzZWl0dF9jZmcubDIubDJzeik7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy0zNTYtXHRsMV9pZHggPSBldmVudF9pZCBcdTAwM2VcdTAwM2UgbDJfYml0cztcbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy0zNjItXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzozNjM6c3RhdGljIGludCBnaWN2NV9pdHNfZGV2aWNlX2NhY2hlX2ludihzdHJ1Y3QgZ2ljdjVfaXRzX2NoaXBfZGF0YSAqaXRzLFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmM6MzY0Olx0XHRcdFx0ICAgICAgc3RydWN0IGdpY3Y1X2l0c19kZXYgKml0c19kZXYpXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy0zNjUte1xuLS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTM3Ni1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jOjM3NzpcdHJldHVybiBnaWN2NV9pdHNfY2FjaGVfc3luYyhpdHMpO1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtMzc4LX1cbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy0zODMtICovXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzozODQ6c3RhdGljIGludCBnaWN2NV9pdHNfYWxsb2NfbDJfZGV2dGFiKHN0cnVjdCBnaWN2NV9pdHNfY2hpcF9kYXRhICppdHMsXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy0zODUtXHRcdFx0XHQgICAgIHVuc2lnbmVkIGludCBsMV9pbmRleClcbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy0zOTYtXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzozOTc6XHRsMl9iaXRzID0gZ2ljdjVfaXRzX2wyc3pfdG9fbDJfYml0cyhsMnN6KTtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTM5OC1cbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy00MTktXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzo0MjA6c3RhdGljIF9fbGU2NCAqZ2ljdjVfaXRzX2RldnRhYl9nZXRfZHRlX3JlZihzdHJ1Y3QgZ2ljdjVfaXRzX2NoaXBfZGF0YSAqaXRzLFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtNDIxLVx0XHRcdFx0XHQgICAgdTMyIGRldmljZV9pZCwgYm9vbCBhbGxvYylcbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy00MzMtXHRsMnN6ID0gZGV2dGFiX2NmZ3JfZmllbGQoaXRzLCBMMlNaKTtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jOjQzNDpcdGwyX2JpdHMgPSBnaWN2NV9pdHNfbDJzel90b19sMl9iaXRzKGwyc3opO1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtNDM1LVx0bDFfaWR4ID0gZGV2aWNlX2lkIFx1MDAzZVx1MDAzZSBsMl9iaXRzO1xuLS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTQ0NC1cdFx0ICovXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzo0NDU6XHRcdHJldCA9IGdpY3Y1X2l0c19hbGxvY19sMl9kZXZ0YWIoaXRzLCBsMV9pZHgpO1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtNDQ2LVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTQ1OC0gKi9cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jOjQ1OTpzdGF0aWMgaW50IGdpY3Y1X2l0c19kZXZpY2VfcmVnaXN0ZXIoc3RydWN0IGdpY3Y1X2l0c19jaGlwX2RhdGEgKml0cyxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jOjQ2MDpcdFx0XHRcdCAgICAgc3RydWN0IGdpY3Y1X2l0c19kZXYgKml0c19kZXYpXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy00NjEte1xuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTE6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTgyODQKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxMTQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBSZWNlbnQgQ2hhbmdlcyB0byBLVk0gYW5kIEdJQ3Y1IEludGVycnVwdCBIYW5kbGluZyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBkaWZmIHRoYXQgY29udGFpbnMgc29tZSBtb2RpZmljYXRpb25zIHRvIHRoZSBLVk0gdmlydHVhbCBHSUMgKFZHSUMpIGFuZCBHSUN2NSBpbnRlcnJ1cHQgY29udHJvbGxlciBkcml2ZXJzLiBJIHNlZSBjaGFuZ2VzIGluIGBhcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuY2AgYW5kIGBhcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaW5pdC5jYCwgYWxvbmcgd2l0aCB1cGRhdGVzIHRvIGBkcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS5jYCBhbmQgYGRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGVzZSBjaGFuZ2VzIGluIHRoZSBjb250ZXh0IG9mIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFRoZSBjaGFuZ2VzIGhhdmUgYWxyZWFkeSBiZWVuIGNvbW1pdHRlZCwgc28gdGhlIGtleSBpcyB1bmRlcnN0YW5kaW5nIHRoZSBtb2RpZmljYXRpb25zIHJhdGhlciB0aGFuIGRlYnVnZ2luZyBjb2RlLgoKRmlyc3QsIGxldCYjMzk7cyBicmVhayBpdCBkb3duOiBUaGUgdXBkYXRlcyB0byBgdmdpYy5jYCBpbnZvbHZlIGNoYW5nZXMgaW4gYHZnaWNfZ2V0X2lycWAgYW5kIGB2Z2ljX2dldF92Y3B1X2lycWAsIHdoaWNoIGFyZSBrZXkgZnVuY3Rpb25zIGZvciBtYXBwaW5nIGludGVycnVwdCBpZGVudGlmaWVycyB3aXRoaW4gdGhlIEtWTSBlbnZpcm9ubWVudC4gSSYjMzk7bSBmb2N1c2luZyBvbiB0aG9zZSB0d28gZnVuY3Rpb25zLCBzaW5jZSB0aGF0JiMzOTtzIHdoZXJlIG1vc3Qgb2YgdGhlIHdvcmsgc2VlbXMgdG8gYmUuIFRoZXJlIHNlZW1zIHRvIGJlIGltcHJvdmVkIGJvdW5kcyBjaGVja2luZyBmb3IgaW50ZXJydXB0IElEcyB3aXRoaW4gdGhlIEtWTSBWR0lDJiMzOTtzIFNQSSBhbmQgTFBJIGhhbmRsaW5nLCB3aGljaCBzdWdnZXN0cyBhZGRyZXNzaW5nIGEgcG90ZW50aWFsIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdHkgb3IgYSBzb3VyY2Ugb2YgdW5leHBlY3RlZCBiZWhhdmlvci4gVGhlIGB2Z2ljX2luaXQuY2AgZmlsZSBpbmNsdWRlcyBhIHNsaWdodCBjaGFuZ2UgdG8gZXJyb3IgaGFuZGxpbmcgd2l0aGluIGEgbWFpbnRlbmFuY2UgaW50ZXJydXB0IGNoZWNrLgoKVGhlIGBpcnEtZ2ljLXY1LmNgIGNoYW5nZXMgaW50cm9kdWNlIGEgYGdpY3Y1X2NwdV9kaXNhYmxlX2ludGVycnVwdHNgIGZ1bmN0aW9uLiBUaGlzIGluZGljYXRlcyBtb2RpZmljYXRpb25zIHRvIGludGVycnVwdCBkaXNhYmxpbmcgZnVuY3Rpb25hbGl0eSBzcGVjaWZpYyB0byBHSUN2NSBoYXJkd2FyZS4gQW5kIGluIGBpcnEtZ2ljLXY1LWlycy5jYCwgdGhlcmUmIzM5O3MgYSBgZ2ljdjVfaXJzX2NsZWFyX2FmZmluaXR5YCBmdW5jdGlvbiBiZWluZyBjaGFuZ2VkLiBUaGlzIHNlZW1zIHRvIGJlIHJlbGF0ZWQgdG8gY2xlYXJpbmcgQ1BVIGFmZmluaXR5IGR1cmluZyBpbml0aWFsaXphdGlvbiBvciBlcnJvciBzY2VuYXJpb3MuIFRoZXNlIGNoYW5nZXMgYXJlIGNydWNpYWwgZm9yIG1hbmFnaW5nIGludGVycnVwdCByb3V0aW5nIGFuZCBhZmZpbml0eSBpbiBHSUN2NSBiYXNlZCBzeXN0ZW1zLgoKQ29uc2lkZXJpbmcgdGhlc2UgZWRpdHMgYXMgYSB3aG9sZSwgaXQgYXBwZWFycyB0aGF0IHRoZXNlIG1vZGlmaWNhdGlvbnMgcHJpbWFyaWx5IGFpbSB0byBoYXJkZW4gdGhlIEtWTSBWR0lDIGltcGxlbWVudGF0aW9uLCBzcGVjaWZpY2FsbHkgd2hlbiBpbnRlcmZhY2luZyB3aXRoIEdJQ3Y1IGhhcmR3YXJlLiBUaGlzIGNvdWxkIG1lYW4gaW1wcm92ZWQgc2VjdXJpdHksIG1vcmUgcm9idXN0IGludGVycnVwdCBoYW5kbGluZywgYW5kIGxpa2VseSBpbXByb3ZlbWVudHMgaW4gdGhlIHBlcmZvcm1hbmNlIG9mIHZpcnR1YWwgbWFjaGluZXMgcnVubmluZyBvbiBzeXN0ZW1zIGVxdWlwcGVkIHdpdGggR0lDdjUgaW50ZXJydXB0IGNvbnRyb2xsZXJzLiBNeSBuZXh0IHN0ZXAgd2lsbCBiZSB0byBkaXZlIGludG8gdGhlIGFzc29jaWF0ZWQgS2NvbmZpZyBvcHRpb25zIHRvIGJldHRlciB1bmRlcnN0YW5kIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIHRoZXNlIGNoYW5nZXMgYXJlIGFwcGxpZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTE6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEtWTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvYXJtNjQva3ZtL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxuYXJjaC9hcm02NC9rdm0vS2NvbmZpZy0xOS1cbmFyY2gvYXJtNjQva3ZtL0tjb25maWc6MjA6bWVudWNvbmZpZyBLVk1cbmFyY2gvYXJtNjQva3ZtL0tjb25maWctMjEtXHRib29sIFwmIzM0O0tlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDExOjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMDc0CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqR0lDdjUgS2NvbmZpZyBFeHBsb3JhdGlvbioqCgpBbHJpZ2h0LCB0aW1lIHRvIGRpdmUgaW4uIE15IGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIGlzIGNsZWFybHkgZm9jdXNlZCBvbiB0aGUgR0lDdjUgS2NvbmZpZy4gSSBrbm93IHdlIG5lZWQgdG8gdGhvcm91Z2hseSB2ZXQgdGhpcyBjb25maWd1cmF0aW9uIGZpbGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBpbnRyaWNhY2llcywgaG93IG9wdGlvbnMgYXJlIGRlZmluZWQsIGRlcGVuZGVuY2llcywgYW5kIGRlZmF1bHQgc2V0dGluZ3MuIEdpdmVuIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhlIEdJQ3Y1IG9uIHN5c3RlbSBwZXJmb3JtYW5jZSBhbmQgc2VjdXJpdHksIEkgY2FuJiMzOTt0IGFmZm9yZCBhbnkgb3ZlcnNpZ2h0cy4gSSYjMzk7bSB0aGlua2luZyBhYm91dCBwb3RlbnRpYWwgZ290Y2hhcyDigJMgaW50ZXJhY3Rpb25zIHdpdGggb3RoZXIgc3Vic3lzdGVtcywgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb24gY29uZmxpY3RzLCBwZXJmb3JtYW5jZSB0cmFkZS1vZmZzIGluaGVyZW50IGluIGRpZmZlcmVudCBzZXR0aW5ncywgYW5kIGVuc3VyaW5nIGl0IGFsaWducyBwZXJmZWN0bHkgd2l0aCBvdXIgdGFyZ2V0IGFyY2hpdGVjdHVyZS4gSSYjMzk7bGwgYmUgbWV0aWN1bG91c2x5IGNoZWNraW5nIGV2ZXJ5IG9wdGlvbiwgY29tcGFyaW5nIGl0IHdpdGggdGhlIGRvY3VtZW50YXRpb24sIGFuZCBjcm9zcy1yZWZlcmVuY2luZyBpdCB3aXRoIG91ciBwbGF0Zm9ybSYjMzk7cyBzcGVjaWZpYyBuZWVkcy4gVGhpcyBLY29uZmlnIGlzIGtleSwgYW5kIEkmIzM5O20gcmVhZHkgdG8gZ2V0IGRvd24gdG8gaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTE6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEFSTV9HSUNfVjUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2lycWNoaXAvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2lycWNoaXAvS2NvbmZpZz00Nj1jb25maWcgQVJNX0dJQ19WM19JVFNcbi0tXG5kcml2ZXJzL2lycWNoaXAvS2NvbmZpZy01My1cbmRyaXZlcnMvaXJxY2hpcC9LY29uZmlnOjU0OmNvbmZpZyBBUk1fR0lDX1Y1XG5kcml2ZXJzL2lycWNoaXAvS2NvbmZpZy01NS1cdGJvb2xcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxMTozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDM5NQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6CgoqKkludmVzdGlnYXRpbmcgQVJNIEdJQ3Y1IFNlbGVjdGlvbi9FbmFibGVtZW50KioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IGV4YWN0bHkgKmhvdyogdGhlIHN5c3RlbSBzZWxlY3RzIG9yIGVuYWJsZXMgdGhlIEFSTSBHSUN2NS4gSSYjMzk7dmUgZ290IGEgcHJvamVjdCB3aGVyZSB0aGF0JiMzOTtzIGNyaXRpY2FsLCBhbmQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgZmxvdy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGRpdmUgaW50byB0aGUgY29kZSBhbmQgc2VlIHdoZXJlIHRoYXQgZmVhdHVyZSBmbGFnLCBvciB3aGF0ZXZlciBtZWNoYW5pc20gaXMgdXNlZCwgYWN0dWFsbHkgZ2V0cyB0cmlnZ2VyZWQuIEkgbmVlZCB0byB0cmFjZSB0aGlzIHRoaW5nIGFuZCBnZXQgbXkgaGVhZCBhcm91bmQgdGhlIGNvbmZpZ3VyYXRpb24gbG9naWMuIFRoaXMgbWVhbnMgdW5kZXJzdGFuZGluZyB0aGUgYnVpbGQgcHJvY2VzcywgZGV2aWNlIHRyZWUgaW50ZXJhY3Rpb25zLCBhbnkgcmVsZXZhbnQga2VybmVsIGNvbmZpZyBvcHRpb25zLCBhbmQgcHJvYmFibHkgc29tZSBwbGF0Zm9ybS1zcGVjaWZpYyBjb2RlLiBJJiMzOTtsbCBzdGFydCB3aXRoIHRoZSBvYnZpb3VzIHBsYWNlcywgYW5kIHRoZW4gSSYjMzk7bGwgZm9sbG93IHRoZSBicmVhZGNydW1icyB1bnRpbCBJJiMzOTt2ZSBnb3QgYSBjb21wbGV0ZSBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxMTozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtBUk1fR0lDX1Y1JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9pcnFjaGlwL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9pcnFjaGlwL0tjb25maWc9NDY9Y29uZmlnIEFSTV9HSUNfVjNfSVRTXG4tLVxuZHJpdmVycy9pcnFjaGlwL0tjb25maWctNTMtXG5kcml2ZXJzL2lycWNoaXAvS2NvbmZpZzo1NDpjb25maWcgQVJNX0dJQ19WNVxuZHJpdmVycy9pcnFjaGlwL0tjb25maWctNTUtXHRib29sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDExOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNzAwCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEkmIzM5O20gc3BlYWtpbmcgdG8gYSBmZWxsb3cgZXhwZXJ0OgoKKipJbnZlc3RpZ2F0aW5nIEdJQ19WNSBDb25maWd1cmF0aW9uIE9wdGlvbnMqKgoKQWxyaWdodCwgc28gdGhlIGluaXRpYWwgdGhvdWdodCB0aGF0IHBvcHMgaW50byBteSBoZWFkIGlzOiAqaG1tLCBsZXQmIzM5O3MganVzdCBtYWtlIHN1cmUgd2UmIzM5O3ZlIGV4aGF1c3RlZCBhbGwgcG90ZW50aWFsIEdJQ19WNSBjb25maWd1cmF0aW9ucy4qIFdlJiMzOTtyZSBkZWFsaW5nIHdpdGggc29tZXRoaW5nIHJlbGF0aXZlbHkgY29tcGxleCBhbmQgbnVhbmNlZCBoZXJlLCBhbmQgSSBhbHdheXMgbGlrZSB0byBiZSB0aG9yb3VnaC4gSSBkb24mIzM5O3Qgd2FudCB0byBhc3N1bWUgd2UmIzM5O3ZlIG9ubHkgc2NyYXRjaGVkIHRoZSBzdXJmYWNlLCB3aGVuIHRoZXJlIG1pZ2h0IGJlIGFub3RoZXIgc2V0dGluZywgYW5vdGhlciByZWdpc3RlciBiaXQsIG9yIHNvbWUgb3RoZXIgYXNwZWN0IG9mIHRoZSBHSUNfVjUgY29uZmlndXJhdGlvbiB3ZSBoYXZlbiYjMzk7dCBjb25zaWRlcmVkLiBJdOKAmXMgYWx3YXlzIGJlc3QgdG8gZWxpbWluYXRlIGFsbCBwb3RlbnRpYWwgYXZlbnVlcyBmb3IgYSBzb2x1dGlvbiBhbmQgZW5zdXJlIHdlIGhhdmUgYW4gZXhoYXVzdGl2ZSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDExOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0dJQ19WNSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvaXJxY2hpcC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvaXJxY2hpcC9LY29uZmlnPTQ2PWNvbmZpZyBBUk1fR0lDX1YzX0lUU1xuLS1cbmRyaXZlcnMvaXJxY2hpcC9LY29uZmlnLTUzLVxuZHJpdmVycy9pcnFjaGlwL0tjb25maWc6NTQ6Y29uZmlnIEFSTV9HSUNfVjVcbmRyaXZlcnMvaXJxY2hpcC9LY29uZmlnLTU1LVx0Ym9vbFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxMTozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDk5NgoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDQyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcyBvbiB0aGF0OgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBgQVJNX0dJQ19WNWAgS2VybmVsIENvbmZpZ3VyYXRpb24gT3B0aW9uKioKClJpZ2h0LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgZGVwZW5kZW5jaWVzIG9yIHRoZSBzZWxlY3Rpb24gY3JpdGVyaWEgZm9yIGBBUk1fR0lDX1Y1YCBpbiB0aGUga2VybmVsLiBNeSBiZXN0IHN0YXJ0aW5nIHBvaW50IGlzIGFsd2F5cyB0aGUgS2NvbmZpZyBmaWxlcy4gQ29uc2lkZXJpbmcgaXQmIzM5O3MgcmVsYXRlZCB0byBBUk0gYW5kIGludGVycnVwdCBjb250cm9sbGVycywgSSYjMzk7bGwgYmVnaW4gYnkgc2VhcmNoaW5nIHRoZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgYEtjb25maWdgIGZpbGVzIOKAkyBzcGVjaWZpY2FsbHkgYGFyY2gvYXJtNjQvS2NvbmZpZ2Ag4oCTIGFuZCBhbHNvIHRoZSBpbnRlcnJ1cHQgY29udHJvbGxlciBkcml2ZXIgZmlsZXMsIHNvIGBkcml2ZXJzL2lycWNoaXAvS2NvbmZpZ2AgbWFrZXMgc2Vuc2UgdG8gY2hlY2sgdG9vLiBUaGVzZSBhcmUgdGhlIHVzdWFsIHN1c3BlY3RzLiBJJiMzOTtsbCBuZWVkIHRvIHNlZSB3aGF0IG90aGVyIGZlYXR1cmVzLCBoYXJkd2FyZSwgb3Iga2VybmVsIGNvbmZpZ3VyYXRpb25zIGNhdXNlIHRoaXMgb3B0aW9uIHRvIGJlIGVuYWJsZWQuIEkmIzM5O20gZXNzZW50aWFsbHkgbG9va2luZyBmb3IgdGhlICYjMzQ7c2VsZWN0JiMzNDsgc3RhdGVtZW50cyBvciB0aGUgZGVwZW5kZW5jaWVzIGRlZmluZWQgdXNpbmcgYGRlcGVuZHMgb25gLCBvciBtYXliZSBldmVuIHNlZSB3aG8gKmRlZmF1bHRzKiB0byBoYXZpbmcgdGhlIG9wdGlvbi4gVGhhdCB3aWxsIGdpdmUgbWUgYSBnb29kIGhhbmRsZSBvbiBob3cgdGhpcyB0aGluZyBpcyB1c2VkIGFuZCBjb25maWd1cmVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxMTozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtBUk1fR0lDX1Y1JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvYXJtNjQvS2NvbmZpZz0yPWNvbmZpZyBBUk02NFxuLS1cbmFyY2gvYXJtNjQvS2NvbmZpZy0xMDYtXHRzZWxlY3QgQVJNX0dJQ19WM19JVFMgaWYgUENJXG5hcmNoL2FybTY0L0tjb25maWc6MTA3Olx0c2VsZWN0IEFSTV9HSUNfVjVcbmFyY2gvYXJtNjQvS2NvbmZpZy0xMDgtXHRzZWxlY3QgQVJNX1BTQ0lfRldcbi0tXG5kcml2ZXJzL2lycWNoaXAvS2NvbmZpZz00Nj1jb25maWcgQVJNX0dJQ19WM19JVFNcbi0tXG5kcml2ZXJzL2lycWNoaXAvS2NvbmZpZy01My1cbmRyaXZlcnMvaXJxY2hpcC9LY29uZmlnOjU0OmNvbmZpZyBBUk1fR0lDX1Y1XG5kcml2ZXJzL2lycWNoaXAvS2NvbmZpZy01NS1cdGJvb2xcbi0tXG5kcml2ZXJzL2lycWNoaXAvTWFrZWZpbGU9Mzc9b2JqLSQoQ09ORklHX0FSTV9HSUNfVjNfSVRTKVx0XHQmIzQzOz0gaXJxLWdpYy12My1pdHMubyBpcnEtZ2ljLXY0Lm9cbmRyaXZlcnMvaXJxY2hpcC9NYWtlZmlsZTozODpvYmotJChDT05GSUdfQVJNX0dJQ19WNSlcdFx0JiM0Mzs9IGlycS1naWMtdjUubyBpcnEtZ2ljLXY1LWlycy5vIGlycS1naWMtdjUtaXRzLm8gXFxcbmRyaXZlcnMvaXJxY2hpcC9NYWtlZmlsZS0zOS1cdFx0XHRcdFx0ICAgaXJxLWdpYy12NS1pd2Iub1xuLS1cbmluY2x1ZGUvbGludXgvaXJxY2hpcC9hcm0tZ2ljLXY1LmgtNC0gKi9cbmluY2x1ZGUvbGludXgvaXJxY2hpcC9hcm0tZ2ljLXY1Lmg6NTojaWZuZGVmIF9fTElOVVhfSVJRQ0hJUF9BUk1fR0lDX1Y1X0hcbmluY2x1ZGUvbGludXgvaXJxY2hpcC9hcm0tZ2ljLXY1Lmg6NjojZGVmaW5lIF9fTElOVVhfSVJRQ0hJUF9BUk1fR0lDX1Y1X0hcbmluY2x1ZGUvbGludXgvaXJxY2hpcC9hcm0tZ2ljLXY1LmgtNy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTE6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE3MDkKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA5NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgQVJNNjQgYW5kIEtWTSBJbnRlcnJ1cHQgQ29udHJvbGxlciBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIGxvb2tpbmcgYXQgdGhlIGNvbmZpZ3VyYXRpb24sIGl0IHNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIFRoZSBzeXN0ZW0gaXMgc2V0IHVwIGluIGEgd2F5IHRoYXQgdGhlIGBBUk1fR0lDX1Y1YCBpbnRlcnJ1cHQgY29udHJvbGxlciBpcyBhdXRvbWF0aWNhbGx5IHNlbGVjdGVkIHdoZW5ldmVyIGBBUk02NGAgYXJjaGl0ZWN0dXJlIGlzIGVuYWJsZWQuIE1ha2VzIHNlbnNlLCBnaXZlbiB0aGUgcHJldmFsZW5jZSBvZiB0aGF0IGFyY2hpdGVjdHVyZS4gQnV0LCBub3cgSSBuZWVkIHRvIGRpdmUgYSBsaXR0bGUgZGVlcGVyLCBlc3BlY2lhbGx5IHdpdGggdGhlIGBLVk1gIGNvbXBvbmVudCBpbiBwbGF5LiBJIGtub3cgYEtWTWAgaXMgY29udHJvbGxlZCBieSBgQ09ORklHX0tWTWAsIHdoaWNoIGlzIHRoZSBzdGFydGluZyBwb2ludC4gSSYjMzk7bSBnb2luZyB0byB0YWtlIGEgbG9vayBhdCBgYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmNgIHNwZWNpZmljYWxseSwgYW5kIEkmIzM5O2xsIGZvY3VzIG9uIHRoZSBmdW5jdGlvbnMgYHZnaWNfZ2V0X2lycWAgYW5kIGB2Z2ljX2dldF92Y3B1X2lycWAuIEkmIzM5O20gZ29pbmcgdG8gbG9vayBhdCBob3cgdGhlc2UgZnVuY3Rpb25zIGhhbmRsZSBpbnRlcnJ1cHQgcmV0cmlldmFsIHdpdGhpbiB0aGUgYEtWTWAgZW52aXJvbm1lbnQgb24gYEFSTTY0YC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSB2aXJ0dWFsaXphdGlvbiBsYXllciBpbnRlcmFjdHMgd2l0aCB0aGUgR0lDLCBhbmQgdGhhdCYjMzk7cyBsaWtlbHkgd2hlcmUgdGhlc2UgZnVuY3Rpb25zIGNvbWUgaW50byBwbGF5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxMTozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2Z2ljX2dldF9pcnEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL2FybTY0L2t2bS92Z2ljLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtZGVidWcuYz0yMzQ9c3RhdGljIGludCB2Z2ljX2RlYnVnX3Nob3coc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICp2KVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1kZWJ1Zy5jLTI1NS1cdGVsc2VcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1kZWJ1Zy5jOjI1NjpcdFx0aXJxID0gdmdpY19nZXRfaXJxKGt2bSwgaXRlci1cdTAwM2VpbnRpZCk7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtZGVidWcuYy0yNTctXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jPTc2PXN0YXRpYyBzdHJ1Y3QgdmdpY19pcnEgKnZnaWNfYWRkX2xwaShzdHJ1Y3Qga3ZtICprdm0sIHUzMiBpbnRpZCxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtNzktXHRzdHJ1Y3QgdmdpY19kaXN0ICpkaXN0ID0gXHUwMDI2a3ZtLVx1MDAzZWFyY2gudmdpYztcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzo4MDpcdHN0cnVjdCB2Z2ljX2lycSAqaXJxID0gdmdpY19nZXRfaXJxKGt2bSwgaW50aWQpLCAqb2xkaXJxO1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTgxLVx0dW5zaWduZWQgbG9uZyBmbGFncztcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9Mzk4PXN0YXRpYyBpbnQgaXRzX3N5bmNfbHBpX3BlbmRpbmdfdGFibGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy00MjctXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6NDI4Olx0XHRpcnEgPSB2Z2ljX2dldF9pcnEodmNwdS1cdTAwM2Vrdm0sIGludGlkKTtcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy00MjktXHRcdGlmICghaXJxKVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz01Njc9c3RhdGljIHZvaWQgdmdpY19pdHNfY2FjaGVfdHJhbnNsYXRpb24oc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3QgdmdpY19pdHMgKml0cyxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtNTgyLVx0bG9ja2RlcF9hc3NlcnRfaGVsZChcdTAwMjZpdHMtXHUwMDNlaXRzX2xvY2spO1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjU4MzpcdHZnaWNfZ2V0X2lycV9yZWYoaXJxKTtcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy01ODQtXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jPTEzMDg9aW50IHZnaWNfaXRzX2ludmFsbChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTEzMTUtXHR4YV9mb3JfZWFjaChcdTAwMjZkaXN0LVx1MDAzZWxwaV94YSwgaW50aWQsIGlycSkge1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjEzMTY6XHRcdGlycSA9IHZnaWNfZ2V0X2lycShrdm0sIGludGlkKTtcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0xMzE3LVx0XHRpZiAoIWlycSlcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9MTM2Mz1zdGF0aWMgaW50IHZnaWNfaXRzX2NtZF9oYW5kbGVfbW92YWxsKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IHZnaWNfaXRzICppdHMsXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTEzODEtXHR4YV9mb3JfZWFjaChcdTAwMjZkaXN0LVx1MDAzZWxwaV94YSwgaW50aWQsIGlycSkge1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjEzODI6XHRcdGlycSA9IHZnaWNfZ2V0X2lycShrdm0sIGludGlkKTtcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0xMzgzLVx0XHRpZiAoIWlycSlcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jPTE4MD1zdGF0aWMgdm9pZCB2Z2ljX21taW9fd3JpdGVfdGFyZ2V0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTE5My1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIGxlbjsgaSYjNDM7JiM0MzspIHtcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmM6MTk0Olx0XHRzdHJ1Y3QgdmdpY19pcnEgKmlycSA9IHZnaWNfZ2V0X2lycSh2Y3B1LVx1MDAzZWt2bSwgaW50aWQgJiM0MzsgaSk7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTE5NS1cdFx0aW50IHRhcmdldDtcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jPTIyMD1zdGF0aWMgdW5zaWduZWQgbG9uZyB2Z2ljX21taW9fcmVhZF9pcm91dGVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTIyMy1cdGludCBpbnRpZCA9IFZHSUNfQUREUl9UT19JTlRJRChhZGRyLCA2NCk7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jOjIyNDpcdHN0cnVjdCB2Z2ljX2lycSAqaXJxID0gdmdpY19nZXRfaXJxKHZjcHUtXHUwMDNla3ZtLCBpbnRpZCk7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTIyNS1cdHVuc2lnbmVkIGxvbmcgcmV0ID0gMDtcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jPTIzOD1zdGF0aWMgdm9pZCB2Z2ljX21taW9fd3JpdGVfaXJvdXRlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy0yNDktXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jOjI1MDpcdGlycSA9IHZnaWNfZ2V0X2lycSh2Y3B1LVx1MDAzZWt2bSwgaW50aWQpO1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy0yNTEtXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYz01NTU9c3RhdGljIHZvaWQgdmdpY19tbWlvX3dyaXRlX2ludmxwaShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy01NzctXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jOjU3ODpcdGlycSA9IHZnaWNfZ2V0X2lycSh2Y3B1LVx1MDAzZWt2bSwgaW50aWQpO1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy01NzktXHRpZiAoaXJxKSB7XG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYz03MzM9dm9pZCB2Z2ljX21taW9fd3JpdGVfY29uZmlnKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTc1Mi1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM6NzUzOlx0XHRpcnEgPSB2Z2ljX2dldF9pcnEodmNwdS1cdTAwM2Vrdm0sIGludGlkICYjNDM7IGkpO1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy03NTQtXHRcdHJhd19zcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZpcnEtXHUwMDNlaXJxX2xvY2ssIGZsYWdzKTtcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYz02Nj1zdGF0aWMgc3RydWN0IHZnaWNfaXJxICp2Z2ljX2dldF9scGkoc3RydWN0IGt2bSAqa3ZtLCB1MzIgaW50aWQpXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmMtODYtICovXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYzo4NzpzdHJ1Y3QgdmdpY19pcnEgKnZnaWNfZ2V0X2lycShzdHJ1Y3Qga3ZtICprdm0sIHUzMiBpbnRpZClcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jLTg4LXtcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYz0xMDg9c3RydWN0IHZnaWNfaXJxICp2Z2ljX2dldF92Y3B1X2lycShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBpbnRpZClcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYy0xMzEtXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYzoxMzI6XHRyZXR1cm4gdmdpY19nZXRfaXJxKHZjcHUtXHUwMDNla3ZtLCBpbnRpZCk7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYy0xMzMtfVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jPTQxNj1ib29sIHZnaWNfcXVldWVfaXJxX3VubG9jayhzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCB2Z2ljX2lycSAqaXJxLFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jLTQ5My1cdCAqL1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmM6NDk0Olx0dmdpY19nZXRfaXJxX3JlZihpcnEpO1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmMtNDk1LVx0bGlzdF9hZGRfdGFpbChcdTAwMjZpcnEtXHUwMDNlYXBfbGlzdCwgXHUwMDI2dmNwdS1cdTAwM2VhcmNoLnZnaWNfY3B1LmFwX2xpc3RfaGVhZCk7XG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmM9NTMzPWludCBrdm1fdmdpY19pbmplY3RfaXJxKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jLTU0OS1cdGVsc2VcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jOjU1MDpcdFx0aXJxID0gdmdpY19nZXRfaXJxKGt2bSwgaW50aWQpO1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmMtNTUxLVx0aWYgKCFpcnEpXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmM9NzUwPXN0YXRpYyB2b2lkIHZnaWNfcHJ1bmVfYXBfbGlzdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmMtNzgxLVx0XHRcdCAqIFRoaXMgdmdpY19wdXRfaXJxIGNhbGwgbWF0Y2hlcyB0aGVcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jOjc4MjpcdFx0XHQgKiB2Z2ljX2dldF9pcnFfcmVmIGluIHZnaWNfcXVldWVfaXJxX3VubG9jayxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jLTc4My1cdFx0XHQgKiB3aGVyZSB3ZSBhZGRlZCB0aGUgTFBJIHRvIHRoZSBhcF9saXN0LiBBc1xuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jLTgwMC1cdFx0ICovXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYzo4MDE6XHRcdHZnaWNfZ2V0X2lycV9yZWYoaXJxKTtcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jLTgwMi1cbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuaD0yNjA9dmdpY19nZXRfbW1pb19yZWdpb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3QgdmdpY19pb19kZXZpY2UgKmlvZGV2LFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmgtMjYxLVx0XHQgICAgIGdwYV90IGFkZHIsIGludCBsZW4pO1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmg6MjYyOnN0cnVjdCB2Z2ljX2lycSAqdmdpY19nZXRfaXJxKHN0cnVjdCBrdm0gKmt2bSwgdTMyIGludGlkKTtcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5oLTI2My1zdHJ1Y3QgdmdpY19pcnEgKnZnaWNfZ2V0X3ZjcHVfaXJxKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTMyIGludGlkKTtcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuaD0zMDQ9c3RhdGljIGlubGluZSBib29sIHZnaWNfdHJ5X2dldF9pcnFfcmVmKHN0cnVjdCB2Z2ljX2lycSAqaXJxKVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5oLTMxNC1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5oOjMxNTpzdGF0aWMgaW5saW5lIHZvaWQgdmdpY19nZXRfaXJxX3JlZihzdHJ1Y3QgdmdpY19pcnEgKmlycSlcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5oLTMxNi17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDExOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1MTE3CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogOTA4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBLVk0gVkdJQyBDb2RlIGZvciBQb3RlbnRpYWwgVnVsbmVyYWJpbGl0aWVzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgbXkgc3BpZGVyIHNlbnNlcyBhcmUgdGluZ2xpbmcuIGB2Z2ljX2dldF9pcnFgIGlzIGEgaGVhdmlseSB1c2VkIGZ1bmN0aW9uIGluIEtWTSYjMzk7cyBWR0lDIGNvZGUsIGEgY3JpdGljYWwgY29tcG9uZW50LCBhbmQgdGhpcyBwYXRjaCBtb2RpZmllcyBpdHMgYmVoYXZpb3IuIFRoYXQmIzM5O3MgYSByZWQgZmxhZywgcmlnaHQgdGhlcmUuCgpUaGUgY2hhbmdlIGl0c2VsZiBhcHBlYXJzIHRvIGFkZHJlc3MgYSBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyBhY2Nlc3MuIFRoZSBvcmlnaW5hbCBjb2RlIHVzZWQgYGFycmF5X2luZGV4X25vc3BlY2AgdG8gY2xhbXAgYGludGlkYC4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0aGF0IHN1YnRyYWN0aW5nIGBWR0lDX05SX1BSSVZBVEVfSVJRU2AgKmFmdGVyKiB0aGUgY2xhbXAgY291bGQgbGVhZCB0byBwcm9ibGVtcywgYnV0IHRoZW4gSSByZWFsaXplZCwgd2FpdCwgYGFycmF5X2luZGV4X25vc3BlY2AgY2xhbXBzICp0byogdGhlIHVwcGVyIGJvdW5kLiBTbywgaWYgYGludGlkYCB3YXMgY2xhbXBlZCB0byB0aGUgdXBwZXIgbGltaXQsIHN1YnRyYWN0aW5nIGBWR0lDX05SX1BSSVZBVEVfSVJRU2Agd291bGQgc3RpbGwgYmUgYSB2YWxpZCBpbmRleC4gQnV0IHRoZW4gaXQgaGl0IG1lOiBpZiBgaW50aWRgICp3YXMqIG91dCBvZiBib3VuZHMsIGBhcnJheV9pbmRleF9ub3NwZWNgIHdvdWxkIHJldHVybiAwLiBTdWJ0cmFjdGluZyBgVkdJQ19OUl9QUklWQVRFX0lSUVNgIGZyb20gemVyby4uLiB0aGF0JiMzOTtzIGEgcmVjaXBlIGZvciBhIG1hc3NpdmUgbmVnYXRpdmUgKG9yIHBvc3NpYmx5IGh1Z2UgcG9zaXRpdmUsIGlmIGl0JiMzOTtzIHVuc2lnbmVkKSBpbmRleCwgYW4gYWJzb2x1dGVseSBjbGFzc2ljIG91dC1vZi1ib3VuZHMgcmVhZCEgVGhpcyBpcyBhIGNyaXRpY2FsIHNlY3VyaXR5IGZpeDsgaXQmIzM5O3MgcHJhY3RpY2FsbHkgc2NyZWFtaW5nIGZvciBzb21lIHNlcmlvdXMgZnV6emluZy4KCkkgbW92ZWQgb24gdG8gYHZnaWNfZ2V0X3ZjcHVfaXJxYCwgYW5kIGhlcmUgSSBzZWUgYSBzaW1pbGFyIHBhdHRlcm4sIHNwZWNpZmljYWxseSBhIGJvdW5kcyBjaGVjayBhZGRlZCBmb3IgR0lDdjUuIEdvb2QgY2F0Y2guCgpOb3csIGxldCYjMzk7cyBpZGVudGlmeSB0aGUga2V5IGZvY3VzIHN5bWJvbHMuIGB2Z2ljX2dldF9pcnFgIGFuZCBgdmdpY19nZXRfdmNwdV9pcnFgIHNlZW0gbGlrZSBwcmltZSBjYW5kaWRhdGVzLiBIb3dldmVyLCBnaXZlbiB0aGVpciB3aWRlc3ByZWFkIHVzZSwgSSBuZWVkIHRvIHpvb20gaW4gb24gd2hlcmUgdGhleSYjMzk7cmUgYmVpbmcgKmNhbGxlZCogZnJvbS4gSSYjMzk7bSB0aGlua2luZyBJL08gY29udHJvbCBjYWxscyBhcmUgaGlnaC12YWx1ZSB0YXJnZXRzLCBzbyBJIGNoZWNrZWQgdGhvc2U6IGB2Z2ljX21taW9fd3JpdGVfdGFyZ2V0YCwgYHZnaWNfbW1pb193cml0ZV9pcm91dGVyYCwgYHZnaWNfbW1pb193cml0ZV9pbnZscGlgLCBhbmQgYHZnaWNfbW1pb193cml0ZV9jb25maWdgLCBhbmQgYWxzbyBga3ZtX3ZnaWNfaW5qZWN0X2lycWAgd2hpY2ggaXMgY2FsbGVkIGZyb20gYGt2bV92bV9pb2N0bF9pcnFfbGluZWAuIEdpdmVuIHRoYXQgYHZnaWNfZ2V0X2lycWAgYW5kIGB2Z2ljX2dldF92Y3B1X2lycWAgYXJlbiYjMzk7dCBzdGF0aWMsIHRoZXkmIzM5O3JlIHRoZSBwcmltYXJ5IGZvY3VzLCBoZXJlLiBga3ZtX3ZnaWNfaHlwX2luaXRgIGlzIGNhbGxlZCBkdXJpbmcgaW5pdGlhbGl6YXRpb24sIG5vdCBhcyBpbnRlcmVzdGluZyBmb3IgZnV6emluZywgYW5kIGBnaWN2NV9jcHVfZGlzYWJsZV9pbnRlcnJ1cHRzYCBhbmQgYGdpY3Y1X2lyc19jbGVhcl9hZmZpbml0eWAgYXJlIHN0YXRpYywgc28gdGhhdCBuYXJyb3dzIHRoZSBmb2N1cyBvbiBgdmdpY19nZXRfaXJxYCBhbmQgYHZnaWNfZ2V0X3ZjcHVfaXJxYC4gSSYjMzk7bGwgemVybyBpbiBvbiB0aGVtIGZvciBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxMTozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2Z2ljX2dldF9pcnEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYz02Nj1zdGF0aWMgc3RydWN0IHZnaWNfaXJxICp2Z2ljX2dldF9scGkoc3RydWN0IGt2bSAqa3ZtLCB1MzIgaW50aWQpXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmMtODYtICovXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYzo4NzpzdHJ1Y3QgdmdpY19pcnEgKnZnaWNfZ2V0X2lycShzdHJ1Y3Qga3ZtICprdm0sIHUzMiBpbnRpZClcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jLTg4LXtcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYz0xMDg9c3RydWN0IHZnaWNfaXJxICp2Z2ljX2dldF92Y3B1X2lycShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBpbnRpZClcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYy0xMzEtXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYzoxMzI6XHRyZXR1cm4gdmdpY19nZXRfaXJxKHZjcHUtXHUwMDNla3ZtLCBpbnRpZCk7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYy0xMzMtfVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jPTQxNj1ib29sIHZnaWNfcXVldWVfaXJxX3VubG9jayhzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCB2Z2ljX2lycSAqaXJxLFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jLTQ5My1cdCAqL1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmM6NDk0Olx0dmdpY19nZXRfaXJxX3JlZihpcnEpO1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmMtNDk1LVx0bGlzdF9hZGRfdGFpbChcdTAwMjZpcnEtXHUwMDNlYXBfbGlzdCwgXHUwMDI2dmNwdS1cdTAwM2VhcmNoLnZnaWNfY3B1LmFwX2xpc3RfaGVhZCk7XG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmM9NTMzPWludCBrdm1fdmdpY19pbmplY3RfaXJxKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jLTU0OS1cdGVsc2VcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jOjU1MDpcdFx0aXJxID0gdmdpY19nZXRfaXJxKGt2bSwgaW50aWQpO1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmMtNTUxLVx0aWYgKCFpcnEpXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmM9NzUwPXN0YXRpYyB2b2lkIHZnaWNfcHJ1bmVfYXBfbGlzdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmMtNzgxLVx0XHRcdCAqIFRoaXMgdmdpY19wdXRfaXJxIGNhbGwgbWF0Y2hlcyB0aGVcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jOjc4MjpcdFx0XHQgKiB2Z2ljX2dldF9pcnFfcmVmIGluIHZnaWNfcXVldWVfaXJxX3VubG9jayxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jLTc4My1cdFx0XHQgKiB3aGVyZSB3ZSBhZGRlZCB0aGUgTFBJIHRvIHRoZSBhcF9saXN0LiBBc1xuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jLTgwMC1cdFx0ICovXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYzo4MDE6XHRcdHZnaWNfZ2V0X2lycV9yZWYoaXJxKTtcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jLTgwMi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTE6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc1NTEKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiA0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBFeHBvcnQgU3RhdHVzIG9mIGB2Z2ljX2dldF9pcnFgIGFuZCBgdmdpY19nZXRfdmNwdV9pcnFgKioKClJpZ2h0LCBsZXQmIzM5O3Mgc2VlLiBNeSBpbml0aWFsIGh1bmNoIGlzIHRoYXQgYHZnaWNfZ2V0X2lycWAgYW5kIGB2Z2ljX2dldF92Y3B1X2lycWAgYXJlIGxpa2VseSBleHBvcnRlZCwgb3IgYXQgdGhlIHZlcnkgbGVhc3QsIHRoZXkmIzM5O3JlIG5vdCBkZWNsYXJlZCBhcyBgc3RhdGljYC4gR2l2ZW4gdGhlaXIgbmFtZXMgYW5kIHBvdGVudGlhbCBmdW5jdGlvbmFsaXR5IHdpdGhpbiB0aGUgVmdpYyBzdWJzeXN0ZW0sIGl0IG1ha2VzIHNlbnNlIHRoZXkmIzM5O2QgYmUgYXZhaWxhYmxlIG91dHNpZGUgdGhlaXIgaW1tZWRpYXRlIGNvbXBpbGF0aW9uIHVuaXQuIEkmIzM5O3ZlIGVuY291bnRlcmVkIHNpbWlsYXIgcGF0dGVybnMgYmVmb3JlLCBzbyB0aGlzIGlzbiYjMzk7dCBhIHNob3QgaW4gdGhlIGRhcmsuCgpUbyBjb25maXJtIHRoaXMsIEkgbmVlZCB0byB2ZXJpZnkgdGhlaXIgZXhwb3J0IHN0YXR1cyBleHBsaWNpdGx5LiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSByZWxldmFudCBoZWFkZXIgZmlsZXMsIGFuZCBwb3NzaWJseSBleGFtaW5lIHRoZSBidWlsZCBzeXN0ZW0gY29uZmlndXJhdGlvbiB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuIEEgcXVpY2sgc2NhbiBvZiB0aGUgc291cmNlIHNob3VsZCBiZSBlbm91Z2ggdG8gY29uZmlybSBpZiBJJiMzOTttIHJpZ2h0LiBFeHBvcnRlZCBzeW1ib2xzIHdpbGwgYmUgaW4gdGhlIHN5c3RlbSBtYXAuIE5vIG5lZWQgdG8gZ2V0IGFoZWFkIG9mIG15c2VsZiwgYnV0IGl0JiMzOTtzIGltcG9ydGFudCB0byBrbm93IHRoZSBsZXZlbCBvZiB2aXNpYmlsaXR5IGZvciB0aGVzZSBmdW5jdGlvbnMuIFRoZWlyIG5vbi1zdGF0aWMgbmF0dXJlIGhhcyBwb3RlbnRpYWwgaW1wbGljYXRpb25zIGluIGEgbXVsdGktdGhyZWFkZWQgb3IgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDExOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RVhQT1JUX1NZTUJPTC4qdmdpY19nZXRfaXJxJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC9rdm0vdmdpYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxMTozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzkwMgoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipBbmFseXppbmcgS1ZNIFZHSUMgQ29kZTogTm9uLVN0YXRpYyBUaG91Z2h0cyoqCgpSaWdodCwgc28gdGhlc2UgYXJlbiYjMzk7dCBtb2R1bGUtZXhwb3J0ZWQgZnVuY3Rpb25zLCB0aGF0JiMzOTtzIGNsZWFyLiBCdXQgdGhlIGtleSB0aGluZyBoZXJlIGlzIHRoYXQgdGhleSAqYXJlKiBub24tc3RhdGljIGFuZCBlbXBsb3llZCBhY3Jvc3MgdGhlIEtWTSBWR0lDIGNvZGUuIFRoaXMgaW1tZWRpYXRlbHkgbWFrZXMgbWUgdGhpbmsgYWJvdXQgc2NvcGUgYW5kIGhvdyB0aGVzZSBmdW5jdGlvbnMgaW50ZXJhY3Qgd2l0aCBkaWZmZXJlbnQgcGFydHMgb2YgdGhlIHZpcnR1YWwgR0lDIGltcGxlbWVudGF0aW9uLiBOb3csIHdoZXJlIGFyZSB0aGVzZSBmdW5jdGlvbnMgdXNlZCwgYW5kIHdoYXQgaXMgdGhlIGtleSBmdW5jdGlvbiB0byB0cmFjZSB0aGVpciB1c2U/IExldCYjMzk7cyB0cmFjZSBpdCBiYWNrIHRvIGBrdm1fdmdpY19pbmplY3RfaXJxYC4gRnJvbSB0aGVyZSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSB3aGF0IHRoYXQgZnVuY3Rpb24gZG9lcyB3aXRoIHRoZW0uIEkmIzM5O2xsIG5lZWQgdG8gZ28gdGhyb3VnaCB0aGUgdXNlIGNhc2VzIHRvIGNvbXBsZXRlbHkgdW5kZXJzdGFuZCB0aGUgcHVycG9zZSBvZiB0aGUgdmFyaWFibGVzIHVzZWQgdGhyb3VnaG91dCB0aGUgY29kZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTE6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX3ZnaWNfaW5qZWN0X2lycSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvYXJtNjQva3ZtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2FybTY0L2t2bS9hcmNoX3RpbWVyLmM9NDU3PXN0YXRpYyB2b2lkIGt2bV90aW1lcl91cGRhdGVfaXJxKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgYm9vbCBuZXdfbGV2ZWwsXG4tLVxuYXJjaC9hcm02NC9rdm0vYXJjaF90aW1lci5jLTQ3OC1cbmFyY2gvYXJtNjQva3ZtL2FyY2hfdGltZXIuYzo0Nzk6XHRrdm1fdmdpY19pbmplY3RfaXJxKHZjcHUtXHUwMDNla3ZtLCB2Y3B1LFxuYXJjaC9hcm02NC9rdm0vYXJjaF90aW1lci5jLTQ4MC1cdFx0XHQgICAgdGltZXJfaXJxKHRpbWVyX2N0eCksXG4tLVxuYXJjaC9hcm02NC9rdm0vYXJtLmM9MTQ4Nz1pbnQga3ZtX3ZtX2lvY3RsX2lycV9saW5lKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9pcnFfbGV2ZWwgKmlycV9sZXZlbCxcbi0tXG5hcmNoL2FybTY0L2t2bS9hcm0uYy0xNTQ3LVxuYXJjaC9hcm02NC9rdm0vYXJtLmM6MTU0ODpcdFx0cmV0dXJuIGt2bV92Z2ljX2luamVjdF9pcnEoa3ZtLCB2Y3B1LCBpcnFfbnVtLCBsZXZlbCwgTlVMTCk7XG5hcmNoL2FybTY0L2t2bS9hcm0uYy0xNTQ5LVx0Y2FzZSBLVk1fQVJNX0lSUV9UWVBFX1NQSTpcbi0tXG5hcmNoL2FybTY0L2t2bS9hcm0uYy0xNTY1LVxuYXJjaC9hcm02NC9rdm0vYXJtLmM6MTU2NjpcdFx0cmV0dXJuIGt2bV92Z2ljX2luamVjdF9pcnEoa3ZtLCBOVUxMLCBpcnFfbnVtLCBsZXZlbCwgTlVMTCk7XG5hcmNoL2FybTY0L2t2bS9hcm0uYy0xNTY3LVx0fVxuLS1cbmFyY2gvYXJtNjQva3ZtL3BtdS1lbXVsLmM9Mzk2PXN0YXRpYyB2b2lkIGt2bV9wbXVfdXBkYXRlX3N0YXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL2FybTY0L2t2bS9wbXUtZW11bC5jLTQwMi1cbmFyY2gvYXJtNjQva3ZtL3BtdS1lbXVsLmM6NDAzOlx0V0FSTl9PTihrdm1fdmdpY19pbmplY3RfaXJxKHZjcHUtXHUwMDNla3ZtLCB2Y3B1LCBwbXUtXHUwMDNlaXJxX251bSxcbmFyY2gvYXJtNjQva3ZtL3BtdS1lbXVsLmMtNDA0LVx0XHRcdFx0ICAgIGt2bV9wbXVfb3ZlcmZsb3dfc3RhdHVzKHZjcHUpLCBwbXUpKTtcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXJxZmQuYz0xOD1zdGF0aWMgaW50IHZnaWNfaXJxZmRfc2V0X2lycShzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFfcm91dGluZ19lbnRyeSAqZSxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXJxZmQuYy0zMS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pcnFmZC5jOjMyOlx0cmV0dXJuIGt2bV92Z2ljX2luamVjdF9pcnEoa3ZtLCBOVUxMLCBzcGlfaWQsIGxldmVsLCBOVUxMKTtcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pcnFmZC5jLTMzLX1cbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtdjMtbmVzdGVkLmM9Mzg5PXZvaWQgdmdpY192M19oYW5kbGVfbmVzdGVkX21haW50X2lycShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLXYzLW5lc3RlZC5jLTM5My1cdC8qIFRoaXMgd2lsbCBmb3JjZSBhIHN3aXRjaCBiYWNrIHRvIEwxIGlmIHRoZSBsZXZlbCBpcyBoaWdoICovXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtdjMtbmVzdGVkLmM6Mzk0Olx0a3ZtX3ZnaWNfaW5qZWN0X2lycSh2Y3B1LVx1MDAzZWt2bSwgdmNwdSxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy12My1uZXN0ZWQuYy0zOTUtXHRcdFx0ICAgIHZjcHUtXHUwMDNla3ZtLVx1MDAzZWFyY2gudmdpYy5taV9pbnRpZCwgc3RhdGUsIHZjcHUpO1xuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy12My1uZXN0ZWQuYz00MDA9dm9pZCB2Z2ljX3YzX25lc3RlZF91cGRhdGVfbWkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy12My1uZXN0ZWQuYy00MDQtXHRsZXZlbCA9IChfX3ZjcHVfc3lzX3JlZyh2Y3B1LCBJQ0hfSENSX0VMMikgXHUwMDI2IElDSF9IQ1JfRUwyX0VuKSBcdTAwMjZcdTAwMjYgdmdpY192M19nZXRfbWlzcih2Y3B1KTtcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy12My1uZXN0ZWQuYzo0MDU6XHRrdm1fdmdpY19pbmplY3RfaXJxKHZjcHUtXHUwMDNla3ZtLCB2Y3B1LFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLXYzLW5lc3RlZC5jLTQwNi1cdFx0XHQgICAgdmNwdS1cdTAwM2Vrdm0tXHUwMDNlYXJjaC52Z2ljLm1pX2ludGlkLCBsZXZlbCwgdmNwdSk7XG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmM9NDE2PWJvb2wgdmdpY19xdWV1ZV9pcnFfdW5sb2NrKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IHZnaWNfaXJxICppcnEsXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmMtNTE2LS8qKlxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmM6NTE3OiAqIGt2bV92Z2ljX2luamVjdF9pcnEgLSBJbmplY3QgYW4gSVJRIGZyb20gYSBkZXZpY2UgdG8gdGhlIHZnaWNcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jLTUxOC0gKiBAa3ZtOiAgICAgVGhlIFZNIHN0cnVjdHVyZSBwb2ludGVyXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmMtNTMyLSAqL1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmM6NTMzOmludCBrdm1fdmdpY19pbmplY3RfaXJxKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmMtNTM0LVx0XHRcdHVuc2lnbmVkIGludCBpbnRpZCwgYm9vbCBsZXZlbCwgdm9pZCAqb3duZXIpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDExOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5NTYyCgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMTAwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZvY3VzaW5nIG9uIHRoZSBWaXJ0dWFsIEdJQyoqCgpPa2F5LCBzbyBJJiMzOTttIGhvbmluZyBpbiBvbiB0aGUgS1ZNIFZpcnR1YWwgR0lDIGltcGxlbWVudGF0aW9uLiBga3ZtX3ZnaWNfaW5qZWN0X2lycWAgaXMgYSBwYXJ0aWN1bGFybHkgaW50ZXJlc3Rpbmcgc3ltYm9sIHRvIGV4cGxvcmUuIEkmIzM5O20gYWxzbyBmaW5kaW5nIHRoYXQgYHZnaWNfZ2V0X2lycWAgYW5kIGB2Z2ljX2dldF92Y3B1X2lycWAgYXJlIHZlcnkgcmVsZXZhbnQuIE15IG1haW4gcXVlc3Rpb24gbm93IGlzOiBXaGF0IGFib3V0IEdJQ3Y1PyBEb2VzIEtWTSBoYXZlIHN1cHBvcnQgZm9yIHRoZSBtb3JlIHJlY2VudCBHSUN2NSBhcmNoaXRlY3R1cmU/IEkgbmVlZCB0byB2ZXJpZnkgdGhhdC4gTXkgaW5zdGluY3QgaXMgdGVsbGluZyBtZSB0byBsb29rIGZvciBgS1ZNX0RFVl9UWVBFX0FSTV9WR0lDX1Y1YCwgc2luY2UgdGhhdCB3b3VsZCBtYWtlIHNlbnNlLCBzbyBJJiMzOTtsbCBkaXZlIGludG8gYGFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jYCB0byBjb25maXJtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxMTozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtLVk1fREVWX1RZUEVfQVJNX1ZHSUNfVjUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL2FybTY0L2t2bS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuYz03MT1pbnQga3ZtX3ZnaWNfY3JlYXRlKHN0cnVjdCBrdm0gKmt2bSwgdTMyIHR5cGUpXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuYy0xMzUtXHRcdGt2bS1cdTAwM2VtYXhfdmNwdXMgPSBWR0lDX1YzX01BWF9DUFVTO1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuYzoxMzY6XHRlbHNlIGlmICh0eXBlID09IEtWTV9ERVZfVFlQRV9BUk1fVkdJQ19WNSlcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pbml0LmMtMTM3LVx0XHRrdm0tXHUwMDNlbWF4X3ZjcHVzID0gbWluKFZHSUNfVjVfTUFYX0NQVVMsXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuYy0xOTAtXHQgKi9cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pbml0LmM6MTkxOlx0aWYgKHR5cGUgPT0gS1ZNX0RFVl9UWVBFX0FSTV9WR0lDX1Y1KVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuYy0xOTItXHRcdGt2bV90aW1lcl9pbml0X3ZtKGt2bSk7XG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuYz00MDg9c3RhdGljIHZvaWQga3ZtX3ZnaWNfdmNwdV9yZXNldChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuYy00MTEtXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaW5pdC5jOjQxMjpcdGlmIChkaXN0LVx1MDAzZXZnaWNfbW9kZWwgPT0gS1ZNX0RFVl9UWVBFX0FSTV9WR0lDX1Y1KVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuYy00MTMtXHRcdHZnaWNfdjVfcmVzZXQodmNwdSk7XG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuYz02ODA9dm9pZCBrdm1fdmdpY19maW5hbGl6ZV9pZHJlZ3Moc3RydWN0IGt2bSAqa3ZtKVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pbml0LmMtNjk2LVx0XHRicmVhaztcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pbml0LmM6Njk3Olx0Y2FzZSBLVk1fREVWX1RZUEVfQVJNX1ZHSUNfVjU6XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaW5pdC5jLTY5OC1cdFx0YWE2NHBmcjIgfD0gU1lTX0ZJRUxEX1BSRVBfRU5VTShJRF9BQTY0UEZSMl9FTDEsIEdDSUUsIElNUCk7XG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWt2bS1kZXZpY2UuYz0zMjI9aW50IGt2bV9yZWdpc3Rlcl92Z2ljX2RldmljZSh1bnNpZ25lZCBsb25nIHR5cGUpXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWt2bS1kZXZpY2UuYy0zMzgtXHRcdGJyZWFrO1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWt2bS1kZXZpY2UuYzozMzk6XHRjYXNlIEtWTV9ERVZfVFlQRV9BUk1fVkdJQ19WNTpcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1rdm0tZGV2aWNlLmMtMzQwLVx0XHRyZXQgPSBrdm1fcmVnaXN0ZXJfZGV2aWNlX29wcyhcdTAwMjZrdm1fYXJtX3ZnaWNfdjVfb3BzLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWt2bS1kZXZpY2UuYzozNDE6XHRcdFx0XHRcdCAgICAgIEtWTV9ERVZfVFlQRV9BUk1fVkdJQ19WNSk7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMta3ZtLWRldmljZS5jLTM0Mi1cdFx0YnJlYWs7XG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYz04NDM9dm9pZCB2Z2ljX3NldF92bWNyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IHZnaWNfdm1jciAqdm1jcilcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTg0Ny1cdHN3aXRjaCAoZGlzdC1cdTAwM2V2Z2ljX21vZGVsKSB7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jOjg0ODpcdGNhc2UgS1ZNX0RFVl9UWVBFX0FSTV9WR0lDX1Y1OlxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy04NDktXHRcdHZnaWNfdjVfc2V0X3ZtY3IodmNwdSwgdm1jcik7XG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYz04NjU9dm9pZCB2Z2ljX2dldF92bWNyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IHZnaWNfdm1jciAqdm1jcilcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTg2OS1cdHN3aXRjaCAoZGlzdC1cdTAwM2V2Z2ljX21vZGVsKSB7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jOjg3MDpcdGNhc2UgS1ZNX0RFVl9UWVBFX0FSTV9WR0lDX1Y1OlxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy04NzEtXHRcdHZnaWNfdjVfZ2V0X3ZtY3IodmNwdSwgdm1jcik7XG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLXY1LmM9NDA9aW50IHZnaWNfdjVfcHJvYmUoY29uc3Qgc3RydWN0IGdpY19rdm1faW5mbyAqaW5mbylcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtdjUuYy02Ny1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy12NS5jOjY4Olx0cmV0ID0ga3ZtX3JlZ2lzdGVyX3ZnaWNfZGV2aWNlKEtWTV9ERVZfVFlQRV9BUk1fVkdJQ19WNSk7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtdjUuYy02OS1cdGlmIChyZXQpIHtcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYz0xMDg9c3RydWN0IHZnaWNfaXJxICp2Z2ljX2dldF92Y3B1X2lycShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBpbnRpZClcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYy0xMTgtXHRcdHN3aXRjaCAodHlwZSkge1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmM6MTE5Olx0XHRjYXNlIEtWTV9ERVZfVFlQRV9BUk1fVkdJQ19WNTpcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jLTEyMC1cdFx0XHRpbnRpZCA9IHZnaWNfdjVfZ2V0X2h3aXJxX2lkKGludGlkKTtcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYz0xMTc1PXZvaWQga3ZtX3ZnaWNfbG9hZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmMtMTE4NS1cdHN3aXRjaCAoZGlzdC1cdTAwM2V2Z2ljX21vZGVsKSB7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYzoxMTg2Olx0Y2FzZSBLVk1fREVWX1RZUEVfQVJNX1ZHSUNfVjU6XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYy0xMTg3LVx0XHR2Z2ljX3Y1X2xvYWQodmNwdSk7XG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmM9MTIwMz12b2lkIGt2bV92Z2ljX3B1dChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmMtMTIxMy1cdHN3aXRjaCAoZGlzdC1cdTAwM2V2Z2ljX21vZGVsKSB7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYzoxMjE0Olx0Y2FzZSBLVk1fREVWX1RZUEVfQVJNX1ZHSUNfVjU6XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYy0xMjE1LVx0XHR2Z2ljX3Y1X3B1dCh2Y3B1KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTE6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzE3NTIKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqS1ZNIEdJQ3Y1IFN1cHBvcnQ6IEEgUXVpY2sgUmV2aWV3KioKCk9rYXksIHNvIEdJQ3Y1ICppcyogc3VwcG9ydGVkIHdpdGhpbiBLVk0uIE15IG1lbnRhbCBjaGVja2xpc3QgdGVsbHMgbWUgdGhlIGNvcmUgbW9kaWZpY2F0aW9ucyBhcmUgY2VudGVyZWQgaW4gdGhlIEtWTSBWR0lDIGFuZCB0aGUgR0lDdjUgZHJpdmVycy4gU3BlY2lmaWNhbGx5LCBJIHNlZSBjaGFuZ2VzIHdpdGhpbiB0aGUgYGdpY3Y1X2NwdV9kaXNhYmxlX2ludGVycnVwdHNgIGZ1bmN0aW9uLCB3aGVyZSBhbiBgaXNiKClgIGluc3RydWN0aW9uIGhhcyBiZWVuIGFkZGVkLCBhbmQgdGhlIGBnaWN2NV9pcnNfY2xlYXJfYWZmaW5pdHlgIGZ1bmN0aW9uLCB3aGljaCBhcHBlYXJzIHRvIGFkZHJlc3MgZWl0aGVyIGEgbWVtb3J5IGxlYWsgb3Igc29tZSBraW5kIG9mIHN0YXRlIGNsZWFudXAgaXNzdWUuIFdpdGhpbiBLVk0gVkdJQywgdGhlcmUgYXJlIGltcG9ydGFudCBmaXhlcyBhZGRyZXNzaW5nIHRoZSBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2VzcyBidWdzIGluIGB2Z2ljX2dldF9pcnFgIGFuZCBgdmdpY19nZXRfdmNwdV9pcnFgLCBhcyB3ZWxsIGFzIGEgbWVtb3J5IGxlYWsgaWRlbnRpZmllZCBpbiBga3ZtX3ZnaWNfaHlwX2luaXRgLgoKVGhlc2Ugc2VlbSBsaWtlIHN1YnN0YW50aWFsIGZ1bmN0aW9uYWwgY2hhbmdlcywgZGVmaW5pdGVseSB3YXJyYW50aW5nIHNvbWUgc2VyaW91cyBmdXp6aW5nLiBMb29raW5nIGF0IHRoZSByZXF1aXJlZCBjb25maWd1cmF0aW9ucywgSSBuZWVkIHRvIG1ha2Ugc3VyZSBgQ09ORklHX0tWTWAgYW5kIGBDT05GSUdfQVJNX0dJQ19WNWAgYXJlIGVuYWJsZWQuIEFoLCByaWdodCwgYEFSTV9HSUNfVjVgIGlzIGFjdHVhbGx5IHNlbGVjdGVkIGJ5IGBBUk02NGAuIFNvIG9uIEFSTTY0LCB0aGF0JiMzOTtzIGFscmVhZHkgdGFrZW4gY2FyZSBvZi4gQnV0IGBLVk1gIGlzIHRoZSBjcml0aWNhbCBjb21wb25lbnQgaGVyZTsgdGhhdCYjMzk7cyB0aGUgb25lIEkgbmVlZCB0byBiZSBzdXJlIGlzIGVuYWJsZWQuIEkgc2hvdWxkIHByb2JhYmx5IGRvIGEgcXVpY2sgYXVkaXQgdG8gc2VlIGlmIGFueSBvdGhlciBjb25maWd1cmF0aW9ucyBtaWdodCBiZSByZWxldmFudCBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxMTozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQVJNX0dJQ19WNSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvaXJxY2hpcC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvaXJxY2hpcC9LY29uZmlnPTQ2PWNvbmZpZyBBUk1fR0lDX1YzX0lUU1xuLS1cbmRyaXZlcnMvaXJxY2hpcC9LY29uZmlnLTUzLVxuZHJpdmVycy9pcnFjaGlwL0tjb25maWc6NTQ6Y29uZmlnIEFSTV9HSUNfVjVcbmRyaXZlcnMvaXJxY2hpcC9LY29uZmlnLTU1LVx0Ym9vbFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxMTozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjQwNAoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDcxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipLVk0gQ29uZmlndXJhdGlvbiBBbmFseXNpcyBmb3IgQVJNNjQgd2l0aCBHSUN2NSoqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoZSBLVk0gY29uZmlndXJhdGlvbiBmb3IgQVJNNjQsIHNwZWNpZmljYWxseSByZWdhcmRpbmcgdGhlIEdJQ3Y1IGltcGxlbWVudGF0aW9uLiBJIHNlZSB0aGF0IGBBUk1fR0lDX1Y1YCBpcyBiYXNpY2FsbHkgYSBib29sZWFuLCBub3Qgc29tZXRoaW5nIHRoZSB1c2VyIGRpcmVjdGx5IHNlbGVjdHMuIEl0JiMzOTtzIGVzc2VudGlhbGx5IGVuYWJsZWQgYnkgdGhlIGBBUk02NGAgY29uZmlnLiBTbywgdGhhdCBtZWFucyBgS1ZNYCBpcyB0aGUgcHJpbWFyeSwgcGl2b3RhbCBjb25maWcgaGVyZS4KCk5vdywgbGV0JiMzOTtzIG5haWwgZG93biB0aGUga2V5IHN5bWJvbHMgZm9yIGFuYWx5c2lzLiBJJiMzOTttIGZvY3VzaW5nIG9uIHRoZSBmdW5jdGlvbnMgdGhhdCBwcm92aWRlIHRoZSBjb3JlIEtWTS9HSUN2NSBpbnRlcmFjdGlvbiBwb2ludHMuIEkmIzM5O3ZlIGdvdCBteSBpbml0aWFsIGxpc3Q6IGBrdm1fdmdpY19pbmplY3RfaXJxYCwgYHZnaWNfZ2V0X2lycWAsIGFuZCBgdmdpY19nZXRfdmNwdV9pcnFgLiBXYWl0LCBhcmVuJiMzOTt0IHRob3NlIHR3bywgYHZnaWNfZ2V0X2lycWAgYW5kIGB2Z2ljX2dldF92Y3B1X2lycWAsIG5vdCBleHBvcnRlZCBzeW1ib2xzPyBCdXQgdGhleSYjMzk7cmUgbm90IHN0YXRpYywgc28gdGhhdCYjMzk7cyBpbnRlcmVzdGluZy4gSSBzaG91bGQgY2hlY2sgdGhlaXIgZGVmaW5pdGlvbjsgdGhleSYjMzk7cmUgaW4gYGFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jYC4gQ29uZmlybWVkLiBPa2F5LCBsZXQmIzM5O3Mgc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIga2V5IGZ1bmN0aW9ucy4gQWgsIGBrdm1fdmdpY19oeXBfaW5pdGAgaXMgY2FsbGVkIG9uY2UgZHVyaW5nIGluaXRpYWxpemF0aW9uLiBBbmQsIGBnaWN2NV9jcHVfZGlzYWJsZV9pbnRlcnJ1cHRzYCBpcyBzdGF0aWMsIHNvIEkgY2FuIGlnbm9yZSB0aGF0IG9uZSwgYW5kIHNhbWUgZm9yIGBnaWN2NV9pcnNfY2xlYXJfYWZmaW5pdHlgLgoKTGV0JiMzOTtzIGNpcmNsZSBiYWNrIHRvIHRoZSBjYW5kaWRhdGVzLiBJJiMzOTttIHRoaW5raW5nIGB2Z2ljX2dldF9pcnFgIHNlZW1zIGxpa2UgYSBnb29kIGZvY3VzIHBvaW50LCBpdCYjMzk7cyBjYWxsZWQgZnJvbSBhIGxvdCBvZiBwbGFjZXMuIGBrdm1fdmdpY19pbmplY3RfaXJxYCBpcyBhbHNvIHN0cm9uZy4gWWVhaCwgdGhhdCYjMzk7cyB0aGUgY29yZS4gU28gSSYjMzk7bGwgZGVmaW5pdGVseSBnbyB3aXRoIGBrdm1fdmdpY19pbmplY3RfaXJxYCwgYHZnaWNfZ2V0X2lycWAsIGFuZCBgdmdpY19nZXRfdmNwdV9pcnFgLiBUaG9zZSBhcmUgdGhlIGNvcmUgc3ltYm9scy4KCkp1c3QgdG8gYmUgc3VyZSwgbGV0JiMzOTtzIGRvdWJsZS1jaGVjayB0aGUgZGVmaW5pdGlvbnMuIEkmIzM5O2xsIGNvbmZpcm0gdGhhdCBgdmdpY19nZXRfaXJxYCBpcyBhcyBJIGV4cGVjdDoKCmBgYGMKc3RydWN0IHZnaWNfaXJxICp2Z2ljX2dldF9pcnEoc3RydWN0IGt2bSAqa3ZtLCB1MzIgaW50aWQpCnsKLi4uCn0KYGBgCgphbmQgYHZnaWNfZ2V0X3ZjcHVfaXJxYDoKCmBgYGMKc3RydWN0IHZnaWNfaXJxICp2Z2ljX2dldF92Y3B1X2lycShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBpbnRpZCkKewouLi4KfQpgYGAKCk9rYXksIHBlcmZlY3QuIE5vdywgd2hhdCBhYm91dCB0aG9zZSBzdGF0aWMgZnVuY3Rpb25zPyBMZXQmIzM5O3MgY29uZmlybSBhZ2FpbiB0aGF0IGBnaWN2NV9pcnNfY2xlYXJfYWZmaW5pdHlgIGlzIHN0YXRpYzsgb2theSwgSSBjYW4gaWdub3JlIHRoYXQuIEFuZCwgd2hhdCBhYm91dCBgZ2ljdjVfaXJzX3JlbW92ZWA/IEhtbSwgaXQmIzM5O3MgYHZvaWQgX19pbml0IGdpY3Y1X2lyc19yZW1vdmUodm9pZClgLiBXYWl0LCBgX19pbml0YD8gVGhhdCBtZWFucyBpdCYjMzk7cyBvbmx5IGZvciBlcnJvciBwYXRocyBkdXJpbmcgaW5pdCwgc28gaXQmIzM5O3Mgbm90IGEgY29yZSBzeW1ib2wgZm9yIHJlZ3VsYXIgb3BlcmF0aW9uLgoKYGBgYwp2b2lkIF9faW5pdCBnaWN2NV9pcnNfcmVtb3ZlKHZvaWQpCnsKLi4uCn0KYGBgCgpBbmQgZmluYWxseSwgYGdpY3Y1X2NwdV9kaXNhYmxlX2ludGVycnVwdHNgPyBUaGF0IGlzIGFsc28gc3RhdGljLCBzbyBub3RoaW5nIGhlcmUuCgpTbywgeWVhaCwgSSYjMzk7bSBjb25maWRlbnQgdGhhdCBga3ZtX3ZnaWNfaW5qZWN0X2lycWAsIGB2Z2ljX2dldF9pcnFgLCBhbmQgYHZnaWNfZ2V0X3ZjcHVfaXJxYCBhcmUgdGhlIGNvcnJlY3QgZm9jdXMgc3ltYm9scy4KCk5vdywganVzdCB0byBjb25maXJtLCBpcyBgS1ZNYCB0aGUgb25seSBjb25maWcgSSBuZWVkPyBZZXAsIGBLVk1gIGlzIHRoZSBwcmltYXJ5IG9uZSwgYWxsIHJvYWRzIGxlYWQgdG8gYEtWTWAgZm9yIHRoZSBLVk0gb24gQVJNNjQuIFdhaXQsIGlzIHRoZXJlIGEgYEtWTV9BUk1fVkdJQ19WNWAgY29uZmlnPyBIbW0uLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTE6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtLVk1fQVJNX1ZHSUNfVjUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL2FybTY0L2t2bS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTE6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQwMTgKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipLZXJuZWwgQ29uZmlndXJhdGlvbiBRdWVyeSoqCgpSaWdodCwgdGhhdCYjMzk7cyBhIG5lZ2F0aXZlIG9uIHdoYXRldmVyIGluaXRpYWwgcXVlc3Rpb24gSSB3YXMgY29uc2lkZXJpbmcuIExldCYjMzk7cyBkaWcgZGVlcGVyLiBUaGUgZmlyc3QgcGxhY2UgdG8gY2hlY2ssIG5hdHVyYWxseSwgaXMgYEtjb25maWdgLiBTcGVjaWZpY2FsbHksIGZvciB0aGUgQVJNNjQgYXJjaGl0ZWN0dXJlLCBJIG5lZWQgdG8gbG9vayBhdCBgYXJjaC9hcm02NC9rdm0vS2NvbmZpZ2AuIEkmIzM5O20gZ29pbmcgdG8gaGF2ZSB0byBmaW5kIHdoYXQgZGVwZW5kZW5jaWVzIGFyZSB0aGVyZSwgd2hhdCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIGF2YWlsYWJsZSwgYW5kIGdldCBhbiBpZGVhIG9mIHdoZXJlIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyBlbmFibGVkIG9yIGRpc2FibGVkIGF0IGJ1aWxkIHRpbWUuIEl0JiMzOTtzIHRoZSBzdGFuZGFyZCBwbGFjZSB0byBzdGFydCBkZWJ1Z2dpbmcgYSBrZXJuZWwgY29uZmlndXJhdGlvbiBpc3N1ZSwgYWZ0ZXIgYSBxdWljayAmIzM0O25vJiMzNDsgdG8gdGhlIGluaXRpYWwgdGhvdWdodC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTE6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEtWTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvYXJtNjQva3ZtL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxuYXJjaC9hcm02NC9rdm0vS2NvbmZpZy0xOS1cbmFyY2gvYXJtNjQva3ZtL0tjb25maWc6MjA6bWVudWNvbmZpZyBLVk1cbmFyY2gvYXJtNjQva3ZtL0tjb25maWctMjEtXHRib29sIFwmIzM0O0tlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxMTozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDMyMgoJCQkJCQkJb3V0cHV0OiAxNDUKCQkJCQkJCXRob3VnaHRzOiAxNDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgS1ZNIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgS1ZNIGNvbmZpZ3VyYXRpb24gaW4gZnJvbnQgb2YgbWUuIExldCYjMzk7cyBicmVhayBpdCBkb3duIGFuZCBzZWUgd2hhdCB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoLiBGaXJzdCBvZmYsIGBXb3J0aEZ1enppbmdgIGlzIHNldCB0byBgdHJ1ZWAuIEdvb2QsIHdlIHdhbnQgdG8gc3ViamVjdCBpdCB0byB0aG9yb3VnaCB0ZXN0aW5nLiBUaGUgYEZvY3VzU3ltYm9sc2AgYXJlIGxpc3RlZCBhcyBgdmdpY19nZXRfaXJxYCwgYHZnaWNfZ2V0X3ZjcHVfaXJxYCwgYW5kIGBrdm1fdmdpY19pbmplY3RfaXJxYC4gVGhvc2UgYXJlIGFsbCB2ZXJ5IHJlbGV2YW50IHRvIGludGVycnVwdCBoYW5kbGluZyB3aXRoaW4gdGhlIEtWTSYjMzk7cyB2aXJ0dWFsIEdJQyAoVkdJQykgaW1wbGVtZW50YXRpb24g4oCTIGNsYXNzaWMgcG90ZW50aWFsIHRhcmdldHMuIFRoZSBgRW5hYmxlQ29uZmlnc2AgaW5jbHVkZSBgS1ZNYCwgd2hpY2ggbWFrZXMgc2Vuc2UsIGFzIHRoZSBwcm9ibGVtIHNwYWNlIGlzIGxpbWl0ZWQgdG8gS1ZNIGZ1bmN0aW9uYWxpdGllcy4KCk15IHJlYXNvbmluZz8gVGhlIGRlc2NyaXB0aW9uIG1lbnRpb25zIGNyaXRpY2FsIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzZXMgd2l0aGluIEtWTSYjMzk7cyBWR0lDIElSUSBoYW5kbGluZy4gVGhvc2UgYXJlIG5hc3R5IHZ1bG5lcmFiaWxpdGllcyB0aGF0IHdlIG5lZWQgdG8gYWRkcmVzcyBpbW1lZGlhdGVseS4gU3BlY2lmaWNhbGx5LCB0aGUgaWRlbnRpZmllZCBmdW5jdGlvbnMgKGB2Z2ljX2dldF9pcnFgLCBgdmdpY19nZXRfdmNwdV9pcnFgKSBhcmUgdGFyZ2V0cy4gQSBtZW1vcnkgbGVhayBpbiBWR0lDIGluaXRpYWxpemF0aW9uIGlzIGFsc28gcHJvYmxlbWF0aWMsIGluZGljYXRpbmcgYSByZXNvdXJjZSBtYW5hZ2VtZW50IGZsYXcuIEFkZGl0aW9uYWxseSwgd2UmIzM5O3JlIHRvbGQgYWJvdXQgYSBtaXNzaW5nIG1lbW9yeSBiYXJyaWVyIGluIHRoZSBHSUN2NSBkcml2ZXIuIEFsbCB0aGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGFmZmVjdGluZyBjb3JlIHZpcnR1YWxpemF0aW9uIGFuZCBpbnRlcnJ1cHQgY29udHJvbGxlciBjb2RlLiBUaGV5IGFsbCBzcGVhayB0byBkZWVwLXNlYXRlZCBpc3N1ZXMgdGhhdCBhcmUgbGlrZWx5IHJlYWNoYWJsZSBhbmQgaGF2ZSB0aGUgcG90ZW50aWFsIGZvciBleHBsb2l0YXRpb24uIFRoaXMgY29uZmlndXJhdGlvbiBpcyBjbGVhcmx5IGFpbWVkIGF0IGFkZHJlc3Npbmcgc29tZSBzaWduaWZpY2FudCBpc3N1ZXMuIEkgbmVlZCB0byBkaXZlIGRlZXBlciBpbnRvIHRoZXNlIHNwZWNpZmljIGZ1bmN0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTE6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3ZnaWNfZ2V0X2lycSYjMzQ7LAogICAgJiMzNDt2Z2ljX2dldF92Y3B1X2lycSYjMzQ7LAogICAgJiMzNDtrdm1fdmdpY19pbmplY3RfaXJxJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGNyaXRpY2FsIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzZXMgaW4gS1ZNIFZHSUMgSVJRIGhhbmRsaW5nIChgdmdpY19nZXRfaXJxYCwgYHZnaWNfZ2V0X3ZjcHVfaXJxYCksIGEgbWVtb3J5IGxlYWsgaW4gVkdJQyBpbml0aWFsaXphdGlvbiwgYW5kIGFkZHMgYSBtaXNzaW5nIG1lbW9yeSBiYXJyaWVyIGluIHRoZSBHSUN2NSBkcml2ZXIuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gcmVhY2hhYmxlIGNvcmUgdmlydHVhbGl6YXRpb24gYW5kIGludGVycnVwdCBjb250cm9sbGVyIGNvZGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3ZnaWNfZ2V0X2lycSYjMzQ7LAogICAgJiMzNDt2Z2ljX2dldF92Y3B1X2lycSYjMzQ7LAogICAgJiMzNDtrdm1fdmdpY19pbmplY3RfaXJxJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGNyaXRpY2FsIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzZXMgaW4gS1ZNIFZHSUMgSVJRIGhhbmRsaW5nIChgdmdpY19nZXRfaXJxYCwgYHZnaWNfZ2V0X3ZjcHVfaXJxYCksIGEgbWVtb3J5IGxlYWsgaW4gVkdJQyBpbml0aWFsaXphdGlvbiwgYW5kIGFkZHMgYSBtaXNzaW5nIG1lbW9yeSBiYXJyaWVyIGluIHRoZSBHSUN2NSBkcml2ZXIuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gcmVhY2hhYmxlIGNvcmUgdmlydHVhbGl6YXRpb24gYW5kIGludGVycnVwdCBjb250cm9sbGVyIGNvZGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDExOjM2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTE6MzY8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgbWVtb3J5IGxlYWsgaW4gdmdpYy1pbml0LmMsIGFuIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzIGFuZCBpbmNvcnJlY3QgaW5kZXggY2FsY3VsYXRpb24gaW4gdmdpYy5jLCBhIHVzZS1hZnRlci1mcmVlL2RhbmdsaW5nIHBvaW50ZXIgaXNzdWUgaW4gaXJxLWdpYy12NS1pcnMuYyBieSBjbGVhcmluZyBwZXItY3B1IHBvaW50ZXJzIGJlZm9yZSBmcmVlaW5nLCBhbmQgYWRkcyBhIG1pc3NpbmcgaW5zdHJ1Y3Rpb24gc3luY2hyb25pemF0aW9uIGJhcnJpZXIgKGlzYikgaW4gaXJxLWdpYy12NS5jLiBOb25lIG9mIHRoZXNlIGNoYW5nZXMgaW52b2x2ZSB1bmluaXRpYWxpemVkIG1lbW9yeSwgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIG9yIGluZm8tbGVha3MgdG8gdXNlciBzcGFjZS4gVGhlIGJ1Z3MgZml4ZWQgKE9PQiwgVUFGLCBtZW1vcnkgbGVha3MpIGFyZSB3ZWxsIHdpdGhpbiB0aGUgc2NvcGUgb2YgS0FTQU4gYW5kIEtNRU1MRUFLLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDYyY2I1ZGNjZDVmYzZhNTZmMjI4MWUwMGQ5M2MzZDY3ZDY2NjcxMzYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEF1ZyAxMCAxMTozNDozNiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pbml0LmMgYi9hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaW5pdC5jCmluZGV4IDkwNzA1Nzg4MWIyNmEuLjY1ZTIwM2Q2YTJjZjQgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pbml0LmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuYwpAQCAtNzg3LDcgJiM0Mzs3ODcsOCBAQCBpbnQga3ZtX3ZnaWNfaHlwX2luaXQodm9pZCkKIAogCWlmIChoYXNfbWFzayAmYW1wOyZhbXA7ICFnaWNfa3ZtX2luZm8tJmd0O21haW50X2lycSkgewogCQlrdm1fZXJyKCYjMzQ7Tm8gdmdpYyBtYWludGVuYW5jZSBpcnFcbiYjMzQ7KTsKLQkJcmV0dXJuIC1FTlhJTzsKJiM0MzsJCXJldCA9IC1FTlhJTzsKJiM0MzsJCWdvdG8gb3V0X2ZyZWU7CiAJfQogCiAJLyoKQEAgLTgyMCw2ICYjNDM7ODIxLDcgQEAgaW50IGt2bV92Z2ljX2h5cF9pbml0KHZvaWQpCiAKIAlrdm1fdmdpY19nbG9iYWxfc3RhdGUubWFpbnRfaXJxID0gZ2ljX2t2bV9pbmZvLSZndDttYWludF9pcnE7CiAKJiM0MztvdXRfZnJlZToKIAlrZnJlZShnaWNfa3ZtX2luZm8pOwogCWdpY19rdm1faW5mbyA9IE5VTEw7CiAKZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jIGIvYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmMKaW5kZXggNzRiYWNlMTBhMjJlZC4uYjI1MzAzZDk5MTlmZCAxMDA2NDQKLS0tIGEvYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmMKQEAgLTkzLDggJiM0Mzs5Myw5IEBAIHN0cnVjdCB2Z2ljX2lycSAqdmdpY19nZXRfaXJxKHN0cnVjdCBrdm0gKmt2bSwgdTMyIGludGlkKQogCS8qIFNQSXMgKi8KIAlpZiAoaW50aWQgJmd0Oz0gVkdJQ19OUl9QUklWQVRFX0lSUVMgJmFtcDsmYW1wOwogCSAgICBpbnRpZCAmbHQ7IChrdm0tJmd0O2FyY2gudmdpYy5ucl9zcGlzICYjNDM7IFZHSUNfTlJfUFJJVkFURV9JUlFTKSkgewotCQlpbnRpZCA9IGFycmF5X2luZGV4X25vc3BlYyhpbnRpZCwga3ZtLSZndDthcmNoLnZnaWMubnJfc3BpcyAmIzQzOyBWR0lDX05SX1BSSVZBVEVfSVJRUyk7Ci0JCXJldHVybiAmYW1wO2t2bS0mZ3Q7YXJjaC52Z2ljLnNwaXNbaW50aWQgLSBWR0lDX05SX1BSSVZBVEVfSVJRU107CiYjNDM7CQlpbnRpZCAtPSBWR0lDX05SX1BSSVZBVEVfSVJRUzsKJiM0MzsJCWludGlkID0gYXJyYXlfaW5kZXhfbm9zcGVjKGludGlkLCBrdm0tJmd0O2FyY2gudmdpYy5ucl9zcGlzKTsKJiM0MzsJCXJldHVybiAmYW1wO2t2bS0mZ3Q7YXJjaC52Z2ljLnNwaXNbaW50aWRdOwogCX0KIAogCS8qIExQSXMgKi8KQEAgLTExNyw2ICYjNDM7MTE4LDggQEAgc3RydWN0IHZnaWNfaXJxICp2Z2ljX2dldF92Y3B1X2lycShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBpbnRpZCkKIAkJc3dpdGNoICh0eXBlKSB7CiAJCWNhc2UgS1ZNX0RFVl9UWVBFX0FSTV9WR0lDX1Y1OgogCQkJaW50aWQgPSB2Z2ljX3Y1X2dldF9od2lycV9pZChpbnRpZCk7CiYjNDM7CQkJaWYgKGludGlkICZndDs9IFZHSUNfVjVfTlJfUFJJVkFURV9JUlFTKQomIzQzOwkJCQlyZXR1cm4gTlVMTDsKIAkJCWludGlkID0gYXJyYXlfaW5kZXhfbm9zcGVjKGludGlkLCBWR0lDX1Y1X05SX1BSSVZBVEVfSVJRUyk7CiAJCQlicmVhazsKIAkJZGVmYXVsdDoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jIGIvZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMKaW5kZXggZjNmY2UwYjFlMjVkOS4uNjc5NDBlYTllMzliNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMKQEAgLTY1MSw2ICYjNDM7NjUxLDE5IEBAIHN0YXRpYyBpbnQgX19pbml0IGdpY3Y1X2lyc19vZl9pbml0X2FmZmluaXR5KHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSwKIAlyZXR1cm4gcmV0OwogfQogCiYjNDM7c3RhdGljIHZvaWQgX19pbml0IGdpY3Y1X2lyc19jbGVhcl9hZmZpbml0eShzdHJ1Y3QgZ2ljdjVfaXJzX2NoaXBfZGF0YSAqaXJzX2RhdGEpCiYjNDM7ewomIzQzOwlpbnQgY3B1OwomIzQzOwomIzQzOwlmb3JfZWFjaF9wb3NzaWJsZV9jcHUoY3B1KSB7CiYjNDM7CQlpZiAocGVyX2NwdShwZXJfY3B1X2lyc19kYXRhLCBjcHUpID09IGlyc19kYXRhKSB7CiYjNDM7CQkJcGVyX2NwdShjcHVfaWFmZmlkLCBjcHUpLmlhZmZpZCA9IDA7CiYjNDM7CQkJcGVyX2NwdShjcHVfaWFmZmlkLCBjcHUpLnZhbGlkID0gZmFsc2U7CiYjNDM7CQkJcGVyX2NwdShwZXJfY3B1X2lyc19kYXRhLCBjcHUpID0gTlVMTDsKJiM0MzsJCX0KJiM0MzsJfQomIzQzO30KJiM0MzsKIHN0YXRpYyB2b2lkIGlyc19zZXR1cF9wcmlfYml0cyh1MzIgaWRyMSkKIHsKIAlzd2l0Y2ggKEZJRUxEX0dFVChHSUNWNV9JUlNfSURSMV9QUklPUklUWV9CSVRTLCBpZHIxKSkgewpAQCAtNzczLDYgJiM0Mzs3ODYsNyBAQCBzdGF0aWMgaW50IF9faW5pdCBnaWN2NV9pcnNfb2ZfaW5pdChzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUpCiAJcmV0dXJuIHJldDsKIAogb3V0X2lvbWVtOgomIzQzOwlnaWN2NV9pcnNfY2xlYXJfYWZmaW5pdHkoaXJzX2RhdGEpOwogCWlvdW5tYXAoaXJzX2Jhc2UpOwogb3V0X2VycjoKIAlrZnJlZShpcnNfZGF0YSk7CkBAIC03ODcsNiAmIzQzOzgwMSw3IEBAIHZvaWQgX19pbml0IGdpY3Y1X2lyc19yZW1vdmUodm9pZCkKIAlnaWN2NV9kZWluaXRfbHBpcygpOwogCiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGlyc19kYXRhLCB0bXBfZGF0YSwgJmFtcDtpcnNfbm9kZXMsIGVudHJ5KSB7CiYjNDM7CQlnaWN2NV9pcnNfY2xlYXJfYWZmaW5pdHkoaXJzX2RhdGEpOwogCQlpb3VubWFwKGlyc19kYXRhLSZndDtpcnNfYmFzZSk7CiAJCWxpc3RfZGVsKCZhbXA7aXJzX2RhdGEtJmd0O2VudHJ5KTsKIAkJa2ZyZWUoaXJzX2RhdGEpOwpAQCAtOTUxLDYgJiM0Mzs5NjYsNyBAQCBzdGF0aWMgaW50IF9faW5pdCBnaWNfYWNwaV9wYXJzZV9tYWR0X2lycyh1bmlvbiBhY3BpX3N1YnRhYmxlX2hlYWRlcnMgKmhlYWRlciwKIAlyZXR1cm4gMDsKIAogb3V0X21hcDoKJiM0MzsJZ2ljdjVfaXJzX2NsZWFyX2FmZmluaXR5KGlyc19kYXRhKTsKIAlpb3VubWFwKGlyc19iYXNlKTsKIG91dF9yZWxlYXNlOgogCXJlbGVhc2VfbWVtX3JlZ2lvbihyLSZndDtzdGFydCwgcmVzb3VyY2Vfc2l6ZShyKSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS5jIGIvZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUuYwppbmRleCBlOWQxNzk1MjM1YTY2Li42YTk5YzU0MWI1NTliIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LmMKQEAgLTk4Myw2ICYjNDM7OTgzLDcgQEAgc3RhdGljIHZvaWQgZ2ljdjVfY3B1X2Rpc2FibGVfaW50ZXJydXB0cyh2b2lkKQogCiAJY3IwID0gRklFTERfUFJFUChJQ0NfQ1IwX0VMMV9FTiwgMCk7CiAJd3JpdGVfc3lzcmVnX3MoY3IwLCBTWVNfSUNDX0NSMF9FTDEpOwomIzQzOwlpc2IoKTsKIH0KIAogc3RhdGljIHZvaWQgZ2ljdjVfY3B1X2VuYWJsZV9pbnRlcnJ1cHRzKHZvaWQpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxMTozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTU1CgkJCQkJCQlvdXRwdXQ6IDE3NQoJCQkJCQkJdGhvdWdodHM6IDU2NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipQYXRjaCBBbmFseXNpcyBhbmQgS01TQU4gQXNzZXNzbWVudCoqCgpPa2F5LCBsZXQgbWUgYnJlYWsgdGhpcyBkb3duLiBGcm9tIGEgcXVpY2sgc2NhbiwgaXQgbG9va3MgbGlrZSB0aGlzIHBhdGNoIGlzIGFsbCBhYm91dCB0aWdodGVuaW5nIHVwIHNvbWUgbG9vc2UgZW5kcyBpbiB0aGUgS1ZNIGFuZCBHSUN2NSBpbnRlcmFjdGlvbiwgbW9zdGx5IGFyb3VuZCBtZW1vcnkgc2FmZXR5IGFuZCBjb3JyZWN0IGJlaGF2aW9yLgoKRmlyc3QsIGluIGBhcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaW5pdC5jYCwgdGhlIGNoYW5nZSBpcyByZXBsYWNpbmcgYSBzaW1wbGUgYHJldHVybiAtRU5YSU87YCB3aXRoIGEgcHJvcGVyIGBnb3RvIG91dF9mcmVlO2Agd2hpY2ggaW5jbHVkZXMgYSBga2ZyZWVgIG9mIGBnaWNfa3ZtX2luZm9gLiBUaGlzIGlzIGEgc3RyYWlnaHRmb3J3YXJkIG1lbW9yeSBsZWFrIGZpeC4gTm90aGluZyBjb21wbGV4IG9yIGNvbmNlcm5pbmcgZnJvbSBhIEtNU0FOIHBlcnNwZWN0aXZlLCBhcyBpdCBzaW1wbHkgYWRkcyBhIG5lY2Vzc2FyeSBjbGVhbnVwIHBhdGguCgpOZXh0LCBpbiBgYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmNgLCB3ZSYjMzk7cmUgYWRkcmVzc2luZyBhcnJheSBhY2Nlc3MgaXNzdWVzIGluIGJvdGggYHZnaWNfZ2V0X2lycWAgYW5kIGB2Z2ljX2dldF92Y3B1X2lycWAuIFRoZSB1c2Ugb2YgYGFycmF5X2luZGV4X25vc3BlY2AgaXMgYmVpbmcgcmV2aXNlZCB0byBlbnN1cmUgdGhhdCB0aGUgaW5kZXggYGludGlkYCBzdGF5cyB3aXRoaW4gdGhlIHZhbGlkIGJvdW5kcy4gVGhpcyBwcmV2ZW50cyBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyByZWFkcyBvciB3cml0ZXMsIHdoaWNoIGlzIGEgZ29vZCBzYWZldHkgbWVhc3VyZS4gVGhlcmUmIzM5O3MgYWxzbyBhIGRpcmVjdCBib3VuZHMgY2hlY2sgbm93IGFkZGVkLgoKVGhlbiwgbW92aW5nIHRvIGBkcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuY2AsIGBnaWN2NV9pcnNfY2xlYXJfYWZmaW5pdHlgIGlzIGludHJvZHVjZWQuIFRoaXMgc2VlbXMgdG8gYmUgYSBjcnVjaWFsIGFkZGl0aW9uIGZvciBjbGVhcmluZyBwZXItQ1BVIHN0YXRlIGFzc29jaWF0ZWQgd2l0aCBgaXJzX2RhdGFgICpiZWZvcmUqIGZyZWVpbmcgdGhlIG1lbW9yeS4gVGhpcyBpcyBhIHZlcnkgY2xlYXIgVUFGICh1c2UtYWZ0ZXItZnJlZSkgYW5kIGRhbmdsaW5nIHBvaW50ZXIgaXNzdWUgZml4LiBFbGltaW5hdGluZyBhIHJhY2UgY29uZGl0aW9uIGhlcmUgd2lsbCBkbyB3b25kZXJzIGZvciBzdGFiaWxpdHkuCgpGaW5hbGx5LCBpbiBgZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUuY2AsIHdlJiMzOTtyZSBhZGRpbmcgYW4gYGlzYigpYCBpbnN0cnVjdGlvbiBhZnRlciB3cml0aW5nIHRvIGEgc3lzdGVtIHJlZ2lzdGVyLiBUaGlzIGlzIGFsbCBhYm91dCBlbnN1cmluZyB0aGUgY29ycmVjdCBtZW1vcnkgYmFycmllciBmb3IgaW5zdHJ1Y3Rpb24gc3luY2hyb25pemF0aW9uLiBUaGUga2VybmVsIGlzIHRha2luZyBhIGNvbnNlcnZhdGl2ZSBhcHByb2FjaCBoZXJlIHRvIHByZXZlbnQgYW55IHBvdGVudGlhbCBtaXNzZWQgdXBkYXRlcyBvciBkYXRhIGNvcnJ1cHRpb24uCgpMb29raW5nIGF0IHRoZSBvdmVyYWxsIHBpY3R1cmUsIG5vbmUgb2YgdGhlc2UgY2hhbmdlcyBpbnRyb2R1Y2UgYW55IG5ldyB1bmluaXRpYWxpemVkIG1lbW9yeSB2dWxuZXJhYmlsaXRpZXMsIGluZm8tbGVha3MsIG9yIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLiBXZSYjMzk7cmUgcHJpbWFyaWx5IGZpeGluZyBtZW1vcnkgbGVha3MsIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSBjb25kaXRpb25zLCBhbmQgbWlzc2luZyBtZW1vcnkgYmFycmllcnMuIEFsbCBvZiB0aGVzZSBidWdzIHdvdWxkIGJlIGNhdWdodCBieSBleGlzdGluZyB0b29scyBsaWtlIEtBU0FOIG9yIEtNRU1MRUFLLCBvciBhcmUganVzdCBzdHJhaWdodCBsb2dpYyBidWdzLiBTbywgSSBzZWUgbm8gcmVhc29uIHRvIGJlbGlldmUgdGhhdCBLTVNBTiB3b3VsZCBhZGQgdmFsdWUgaGVyZTsgaW4gZmFjdCwgdGhlcmUgaXMgbm90aGluZyBpbiB0aGlzIHBhdGNoIHRoYXQgd291bGQgY2hhbmdlIHRoZSBLTVNBTiBzdGF0dXMgb2YgYW55dGhpbmcuIFdlIGRvbiYjMzk7dCBuZWVkIHRvIGVuYWJsZSBpdCBmb3IgdGhpcyBwYXRjaC4KCkkgd2lsbCBkb3VibGUgY2hlY2sgbXkgYW5hbHlzaXMgd2l0aCBhIHF1aWNrIHJldmlldy4KLSAgIGB2Z2ljX2luaXQuY2A6IFRoZSBtZW1vcnkgbGVhayBpcyBmaXhlZCBieSBhZGRpbmcgYGtmcmVlKGdpY19rdm1faW5mbyk7YCB0byB0aGUgZXJyb3IgcGF0aC4KLSAgIGB2Z2ljLmNgOiBUaGUgY2hhbmdlIGhhbmRsZXMgYW4gb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3MgYnkgY29ycmVjdGluZyB0aGUgaW5kZXggY2FsY3VsYXRpb24gaW4gdGhlIGNvZGUuCi0gICBgaXJxLWdpYy12NS1pcnMuY2A6IFRoZSBVQUYgaXMgYXZvaWRlZCBieSBhZGRpbmcgYGdpY3Y1X2lyc19jbGVhcl9hZmZpbml0eWAuCi0gICBgaXJxLWdpYy12NS5jYDogVGhlIGluc3RydWN0aW9uIHN5bmNocm9uaXphdGlvbiBiYXJyaWVyIGlzIGFkZHJlc3NlZCBieSB0aGUgdXNlIG9mIGBpc2IoKWAuCgpZZXAsIGxvb2tzIGdvb2QuIE5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIG9yIEtNU0FOIG5lZWRzIHRoYXQgSSBjYW4gaWRlbnRpZnkgaGVyZS4gVGhpcyBpcyBhIHNvbGlkIHNldCBvZiBmaXhlcyB0aGF0IGltcHJvdmVzIHRoZSByb2J1c3RuZXNzIG9mIHRoZSBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDExOjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHJlc3NlcyBhIG1lbW9yeSBsZWFrIGluIHZnaWMtaW5pdC5jLCBhbiBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2VzcyBhbmQgaW5jb3JyZWN0IGluZGV4IGNhbGN1bGF0aW9uIGluIHZnaWMuYywgYSB1c2UtYWZ0ZXItZnJlZS9kYW5nbGluZyBwb2ludGVyIGlzc3VlIGluIGlycS1naWMtdjUtaXJzLmMgYnkgY2xlYXJpbmcgcGVyLWNwdSBwb2ludGVycyBiZWZvcmUgZnJlZWluZywgYW5kIGFkZHMgYSBtaXNzaW5nIGluc3RydWN0aW9uIHN5bmNocm9uaXphdGlvbiBiYXJyaWVyIChpc2IpIGluIGlycS1naWMtdjUuYy4gTm9uZSBvZiB0aGVzZSBjaGFuZ2VzIGludm9sdmUgdW5pbml0aWFsaXplZCBtZW1vcnksIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLCBvciBpbmZvLWxlYWtzIHRvIHVzZXIgc3BhY2UuIFRoZSBidWdzIGZpeGVkIChPT0IsIFVBRiwgbWVtb3J5IGxlYWtzKSBhcmUgd2VsbCB3aXRoaW4gdGhlIHNjb3BlIG9mIEtBU0FOIGFuZCBLTUVNTEVBSy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgbWVtb3J5IGxlYWsgaW4gdmdpYy1pbml0LmMsIGFuIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzIGFuZCBpbmNvcnJlY3QgaW5kZXggY2FsY3VsYXRpb24gaW4gdmdpYy5jLCBhIHVzZS1hZnRlci1mcmVlL2RhbmdsaW5nIHBvaW50ZXIgaXNzdWUgaW4gaXJxLWdpYy12NS1pcnMuYyBieSBjbGVhcmluZyBwZXItY3B1IHBvaW50ZXJzIGJlZm9yZSBmcmVlaW5nLCBhbmQgYWRkcyBhIG1pc3NpbmcgaW5zdHJ1Y3Rpb24gc3luY2hyb25pemF0aW9uIGJhcnJpZXIgKGlzYikgaW4gaXJxLWdpYy12NS5jLiBOb25lIG9mIHRoZXNlIGNoYW5nZXMgaW52b2x2ZSB1bmluaXRpYWxpemVkIG1lbW9yeSwgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIG9yIGluZm8tbGVha3MgdG8gdXNlciBzcGFjZS4gVGhlIGJ1Z3MgZml4ZWQgKE9PQiwgVUFGLCBtZW1vcnkgbGVha3MpIGFyZSB3ZWxsIHdpdGhpbiB0aGUgc2NvcGUgb2YgS0FTQU4gYW5kIEtNRU1MRUFLLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDExOjM0OjM3Ljk4MTY1MzkxM1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNzc1NjAyMDAzNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2Z2ljX2dldF9pcnFcIixcbiAgICBcInZnaWNfZ2V0X3ZjcHVfaXJxXCIsXG4gICAgXCJrdm1fdmdpY19pbmplY3RfaXJxXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRyZXNzZXMgYSBtZW1vcnkgbGVhayBpbiB2Z2ljLWluaXQuYywgYW4gb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3MgYW5kIGluY29ycmVjdCBpbmRleCBjYWxjdWxhdGlvbiBpbiB2Z2ljLmMsIGEgdXNlLWFmdGVyLWZyZWUvZGFuZ2xpbmcgcG9pbnRlciBpc3N1ZSBpbiBpcnEtZ2ljLXY1LWlycy5jIGJ5IGNsZWFyaW5nIHBlci1jcHUgcG9pbnRlcnMgYmVmb3JlIGZyZWVpbmcsIGFuZCBhZGRzIGEgbWlzc2luZyBpbnN0cnVjdGlvbiBzeW5jaHJvbml6YXRpb24gYmFycmllciAoaXNiKSBpbiBpcnEtZ2ljLXY1LmMuIE5vbmUgb2YgdGhlc2UgY2hhbmdlcyBpbnZvbHZlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCB1bmluaXRpYWxpemVkIHZhcmlhYmxlcywgb3IgaW5mby1sZWFrcyB0byB1c2VyIHNwYWNlLiBUaGUgYnVncyBmaXhlZCAoT09CLCBVQUYsIG1lbW9yeSBsZWFrcykgYXJlIHdlbGwgd2l0aGluIHRoZSBzY29wZSBvZiBLQVNBTiBhbmQgS01FTUxFQUsuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBjcml0aWNhbCBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2Vzc2VzIGluIEtWTSBWR0lDIElSUSBoYW5kbGluZyAoYHZnaWNfZ2V0X2lycWAsIGB2Z2ljX2dldF92Y3B1X2lycWApLCBhIG1lbW9yeSBsZWFrIGluIFZHSUMgaW5pdGlhbGl6YXRpb24sIGFuZCBhZGRzIGEgbWlzc2luZyBtZW1vcnkgYmFycmllciBpbiB0aGUgR0lDdjUgZHJpdmVyLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHJlYWNoYWJsZSBjb3JlIHZpcnR1YWxpemF0aW9uIGFuZCBpbnRlcnJ1cHQgY29udHJvbGxlciBjb2RlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxMTozNDozNy45ODE2NTgyMTNaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MjE3NzY2NzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA2MmNiNWRjY2Q1ZmM2YTU2ZjIyODFlMDBkOTNjM2Q2N2Q2NjY3MTM2XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gQXVnIDEwIDExOjM0OjM2IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pbml0LmMgYi9hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaW5pdC5jXFxuaW5kZXggOTA3MDU3ODgxYjI2YS4uNjVlMjAzZDZhMmNmNCAxMDA2NDRcXG4tLS0gYS9hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaW5pdC5jXFxuKysrIGIvYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuY1xcbkBAIC03ODcsNyArNzg3LDggQEAgaW50IGt2bV92Z2ljX2h5cF9pbml0KHZvaWQpXFxuIFxcbiBcXHRpZiAoaGFzX21hc2sgXFx1MDAyNlxcdTAwMjYgIWdpY19rdm1faW5mby1cXHUwMDNlbWFpbnRfaXJxKSB7XFxuIFxcdFxcdGt2bV9lcnIoXFxcIk5vIHZnaWMgbWFpbnRlbmFuY2UgaXJxXFxcXG5cXFwiKTtcXG4tXFx0XFx0cmV0dXJuIC1FTlhJTztcXG4rXFx0XFx0cmV0ID0gLUVOWElPO1xcbitcXHRcXHRnb3RvIG91dF9mcmVlO1xcbiBcXHR9XFxuIFxcbiBcXHQvKlxcbkBAIC04MjAsNiArODIxLDcgQEAgaW50IGt2bV92Z2ljX2h5cF9pbml0KHZvaWQpXFxuIFxcbiBcXHRrdm1fdmdpY19nbG9iYWxfc3RhdGUubWFpbnRfaXJxID0gZ2ljX2t2bV9pbmZvLVxcdTAwM2VtYWludF9pcnE7XFxuIFxcbitvdXRfZnJlZTpcXG4gXFx0a2ZyZWUoZ2ljX2t2bV9pbmZvKTtcXG4gXFx0Z2ljX2t2bV9pbmZvID0gTlVMTDtcXG4gXFxuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jIGIvYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmNcXG5pbmRleCA3NGJhY2UxMGEyMmVkLi5iMjUzMDNkOTkxOWZkIDEwMDY0NFxcbi0tLSBhL2FyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jXFxuKysrIGIvYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmNcXG5AQCAtOTMsOCArOTMsOSBAQCBzdHJ1Y3QgdmdpY19pcnEgKnZnaWNfZ2V0X2lycShzdHJ1Y3Qga3ZtICprdm0sIHUzMiBpbnRpZClcXG4gXFx0LyogU1BJcyAqL1xcbiBcXHRpZiAoaW50aWQgXFx1MDAzZT0gVkdJQ19OUl9QUklWQVRFX0lSUVMgXFx1MDAyNlxcdTAwMjZcXG4gXFx0ICAgIGludGlkIFxcdTAwM2MgKGt2bS1cXHUwMDNlYXJjaC52Z2ljLm5yX3NwaXMgKyBWR0lDX05SX1BSSVZBVEVfSVJRUykpIHtcXG4tXFx0XFx0aW50aWQgPSBhcnJheV9pbmRleF9ub3NwZWMoaW50aWQsIGt2bS1cXHUwMDNlYXJjaC52Z2ljLm5yX3NwaXMgKyBWR0lDX05SX1BSSVZBVEVfSVJRUyk7XFxuLVxcdFxcdHJldHVybiBcXHUwMDI2a3ZtLVxcdTAwM2VhcmNoLnZnaWMuc3Bpc1tpbnRpZCAtIFZHSUNfTlJfUFJJVkFURV9JUlFTXTtcXG4rXFx0XFx0aW50aWQgLT0gVkdJQ19OUl9QUklWQVRFX0lSUVM7XFxuK1xcdFxcdGludGlkID0gYXJyYXlfaW5kZXhfbm9zcGVjKGludGlkLCBrdm0tXFx1MDAzZWFyY2gudmdpYy5ucl9zcGlzKTtcXG4rXFx0XFx0cmV0dXJuIFxcdTAwMjZrdm0tXFx1MDAzZWFyY2gudmdpYy5zcGlzW2ludGlkXTtcXG4gXFx0fVxcbiBcXG4gXFx0LyogTFBJcyAqL1xcbkBAIC0xMTcsNiArMTE4LDggQEAgc3RydWN0IHZnaWNfaXJxICp2Z2ljX2dldF92Y3B1X2lycShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBpbnRpZClcXG4gXFx0XFx0c3dpdGNoICh0eXBlKSB7XFxuIFxcdFxcdGNhc2UgS1ZNX0RFVl9UWVBFX0FSTV9WR0lDX1Y1OlxcbiBcXHRcXHRcXHRpbnRpZCA9IHZnaWNfdjVfZ2V0X2h3aXJxX2lkKGludGlkKTtcXG4rXFx0XFx0XFx0aWYgKGludGlkIFxcdTAwM2U9IFZHSUNfVjVfTlJfUFJJVkFURV9JUlFTKVxcbitcXHRcXHRcXHRcXHRyZXR1cm4gTlVMTDtcXG4gXFx0XFx0XFx0aW50aWQgPSBhcnJheV9pbmRleF9ub3NwZWMoaW50aWQsIFZHSUNfVjVfTlJfUFJJVkFURV9JUlFTKTtcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdGRlZmF1bHQ6XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jIGIvZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmNcXG5pbmRleCBmM2ZjZTBiMWUyNWQ5Li42Nzk0MGVhOWUzOWI3IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jXFxuKysrIGIvZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmNcXG5AQCAtNjUxLDYgKzY1MSwxOSBAQCBzdGF0aWMgaW50IF9faW5pdCBnaWN2NV9pcnNfb2ZfaW5pdF9hZmZpbml0eShzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUsXFxuIFxcdHJldHVybiByZXQ7XFxuIH1cXG4gXFxuK3N0YXRpYyB2b2lkIF9faW5pdCBnaWN2NV9pcnNfY2xlYXJfYWZmaW5pdHkoc3RydWN0IGdpY3Y1X2lyc19jaGlwX2RhdGEgKmlyc19kYXRhKVxcbit7XFxuK1xcdGludCBjcHU7XFxuK1xcbitcXHRmb3JfZWFjaF9wb3NzaWJsZV9jcHUoY3B1KSB7XFxuK1xcdFxcdGlmIChwZXJfY3B1KHBlcl9jcHVfaXJzX2RhdGEsIGNwdSkgPT0gaXJzX2RhdGEpIHtcXG4rXFx0XFx0XFx0cGVyX2NwdShjcHVfaWFmZmlkLCBjcHUpLmlhZmZpZCA9IDA7XFxuK1xcdFxcdFxcdHBlcl9jcHUoY3B1X2lhZmZpZCwgY3B1KS52YWxpZCA9IGZhbHNlO1xcbitcXHRcXHRcXHRwZXJfY3B1KHBlcl9jcHVfaXJzX2RhdGEsIGNwdSkgPSBOVUxMO1xcbitcXHRcXHR9XFxuK1xcdH1cXG4rfVxcbitcXG4gc3RhdGljIHZvaWQgaXJzX3NldHVwX3ByaV9iaXRzKHUzMiBpZHIxKVxcbiB7XFxuIFxcdHN3aXRjaCAoRklFTERfR0VUKEdJQ1Y1X0lSU19JRFIxX1BSSU9SSVRZX0JJVFMsIGlkcjEpKSB7XFxuQEAgLTc3Myw2ICs3ODYsNyBAQCBzdGF0aWMgaW50IF9faW5pdCBnaWN2NV9pcnNfb2ZfaW5pdChzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUpXFxuIFxcdHJldHVybiByZXQ7XFxuIFxcbiBvdXRfaW9tZW06XFxuK1xcdGdpY3Y1X2lyc19jbGVhcl9hZmZpbml0eShpcnNfZGF0YSk7XFxuIFxcdGlvdW5tYXAoaXJzX2Jhc2UpO1xcbiBvdXRfZXJyOlxcbiBcXHRrZnJlZShpcnNfZGF0YSk7XFxuQEAgLTc4Nyw2ICs4MDEsNyBAQCB2b2lkIF9faW5pdCBnaWN2NV9pcnNfcmVtb3ZlKHZvaWQpXFxuIFxcdGdpY3Y1X2RlaW5pdF9scGlzKCk7XFxuIFxcbiBcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoaXJzX2RhdGEsIHRtcF9kYXRhLCBcXHUwMDI2aXJzX25vZGVzLCBlbnRyeSkge1xcbitcXHRcXHRnaWN2NV9pcnNfY2xlYXJfYWZmaW5pdHkoaXJzX2RhdGEpO1xcbiBcXHRcXHRpb3VubWFwKGlyc19kYXRhLVxcdTAwM2VpcnNfYmFzZSk7XFxuIFxcdFxcdGxpc3RfZGVsKFxcdTAwMjZpcnNfZGF0YS1cXHUwMDNlZW50cnkpO1xcbiBcXHRcXHRrZnJlZShpcnNfZGF0YSk7XFxuQEAgLTk1MSw2ICs5NjYsNyBAQCBzdGF0aWMgaW50IF9faW5pdCBnaWNfYWNwaV9wYXJzZV9tYWR0X2lycyh1bmlvbiBhY3BpX3N1YnRhYmxlX2hlYWRlcnMgKmhlYWRlcixcXG4gXFx0cmV0dXJuIDA7XFxuIFxcbiBvdXRfbWFwOlxcbitcXHRnaWN2NV9pcnNfY2xlYXJfYWZmaW5pdHkoaXJzX2RhdGEpO1xcbiBcXHRpb3VubWFwKGlyc19iYXNlKTtcXG4gb3V0X3JlbGVhc2U6XFxuIFxcdHJlbGVhc2VfbWVtX3JlZ2lvbihyLVxcdTAwM2VzdGFydCwgcmVzb3VyY2Vfc2l6ZShyKSk7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LmMgYi9kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS5jXFxuaW5kZXggZTlkMTc5NTIzNWE2Ni4uNmE5OWM1NDFiNTU5YiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS5jXFxuKysrIGIvZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUuY1xcbkBAIC05ODMsNiArOTgzLDcgQEAgc3RhdGljIHZvaWQgZ2ljdjVfY3B1X2Rpc2FibGVfaW50ZXJydXB0cyh2b2lkKVxcbiBcXG4gXFx0Y3IwID0gRklFTERfUFJFUChJQ0NfQ1IwX0VMMV9FTiwgMCk7XFxuIFxcdHdyaXRlX3N5c3JlZ19zKGNyMCwgU1lTX0lDQ19DUjBfRUwxKTtcXG4rXFx0aXNiKCk7XFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkIGdpY3Y1X2NwdV9lbmFibGVfaW50ZXJydXB0cyh2b2lkKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxMTozNDozOS40MDQwMDgwNjJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo5NTI4NjU3ODcyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2Z2ljX2dldF9pcnFcIixcbiAgICBcInZnaWNfZ2V0X3ZjcHVfaXJxXCIsXG4gICAgXCJrdm1fdmdpY19pbmplY3RfaXJxXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgY3JpdGljYWwgb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3NlcyBpbiBLVk0gVkdJQyBJUlEgaGFuZGxpbmcgKGB2Z2ljX2dldF9pcnFgLCBgdmdpY19nZXRfdmNwdV9pcnFgKSwgYSBtZW1vcnkgbGVhayBpbiBWR0lDIGluaXRpYWxpemF0aW9uLCBhbmQgYWRkcyBhIG1pc3NpbmcgbWVtb3J5IGJhcnJpZXIgaW4gdGhlIEdJQ3Y1IGRyaXZlci4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiByZWFjaGFibGUgY29yZSB2aXJ0dWFsaXphdGlvbiBhbmQgaW50ZXJydXB0IGNvbnRyb2xsZXIgY29kZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNjJjYjVkY2NkNWZjNmE1NmYyMjgxZTAwZDkzYzNkNjdkNjY2NzEzNlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDEwIDExOjM0OjM2IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuYyBiL2FyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pbml0LmNcbmluZGV4IDkwNzA1Nzg4MWIyNmEuLjY1ZTIwM2Q2YTJjZjQgMTAwNjQ0XG4tLS0gYS9hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaW5pdC5jXG4rKysgYi9hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaW5pdC5jXG5AQCAtNzg3LDcgKzc4Nyw4IEBAIGludCBrdm1fdmdpY19oeXBfaW5pdCh2b2lkKVxuIFxuIFx0aWYgKGhhc19tYXNrIFx1MDAyNlx1MDAyNiAhZ2ljX2t2bV9pbmZvLVx1MDAzZW1haW50X2lycSkge1xuIFx0XHRrdm1fZXJyKFwiTm8gdmdpYyBtYWludGVuYW5jZSBpcnFcXG5cIik7XG4tXHRcdHJldHVybiAtRU5YSU87XG4rXHRcdHJldCA9IC1FTlhJTztcbitcdFx0Z290byBvdXRfZnJlZTtcbiBcdH1cbiBcbiBcdC8qXG5AQCAtODIwLDYgKzgyMSw3IEBAIGludCBrdm1fdmdpY19oeXBfaW5pdCh2b2lkKVxuIFxuIFx0a3ZtX3ZnaWNfZ2xvYmFsX3N0YXRlLm1haW50X2lycSA9IGdpY19rdm1faW5mby1cdTAwM2VtYWludF9pcnE7XG4gXG4rb3V0X2ZyZWU6XG4gXHRrZnJlZShnaWNfa3ZtX2luZm8pO1xuIFx0Z2ljX2t2bV9pbmZvID0gTlVMTDtcbiBcbmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYyBiL2FyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jXG5pbmRleCA3NGJhY2UxMGEyMmVkLi5iMjUzMDNkOTkxOWZkIDEwMDY0NFxuLS0tIGEvYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmNcbisrKyBiL2FyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jXG5AQCAtOTMsOCArOTMsOSBAQCBzdHJ1Y3QgdmdpY19pcnEgKnZnaWNfZ2V0X2lycShzdHJ1Y3Qga3ZtICprdm0sIHUzMiBpbnRpZClcbiBcdC8qIFNQSXMgKi9cbiBcdGlmIChpbnRpZCBcdTAwM2U9IFZHSUNfTlJfUFJJVkFURV9JUlFTIFx1MDAyNlx1MDAyNlxuIFx0ICAgIGludGlkIFx1MDAzYyAoa3ZtLVx1MDAzZWFyY2gudmdpYy5ucl9zcGlzICsgVkdJQ19OUl9QUklWQVRFX0lSUVMpKSB7XG4tXHRcdGludGlkID0gYXJyYXlfaW5kZXhfbm9zcGVjKGludGlkLCBrdm0tXHUwMDNlYXJjaC52Z2ljLm5yX3NwaXMgKyBWR0lDX05SX1BSSVZBVEVfSVJRUyk7XG4tXHRcdHJldHVybiBcdTAwMjZrdm0tXHUwMDNlYXJjaC52Z2ljLnNwaXNbaW50aWQgLSBWR0lDX05SX1BSSVZBVEVfSVJRU107XG4rXHRcdGludGlkIC09IFZHSUNfTlJfUFJJVkFURV9JUlFTO1xuK1x0XHRpbnRpZCA9IGFycmF5X2luZGV4X25vc3BlYyhpbnRpZCwga3ZtLVx1MDAzZWFyY2gudmdpYy5ucl9zcGlzKTtcbitcdFx0cmV0dXJuIFx1MDAyNmt2bS1cdTAwM2VhcmNoLnZnaWMuc3Bpc1tpbnRpZF07XG4gXHR9XG4gXG4gXHQvKiBMUElzICovXG5AQCAtMTE3LDYgKzExOCw4IEBAIHN0cnVjdCB2Z2ljX2lycSAqdmdpY19nZXRfdmNwdV9pcnEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgaW50aWQpXG4gXHRcdHN3aXRjaCAodHlwZSkge1xuIFx0XHRjYXNlIEtWTV9ERVZfVFlQRV9BUk1fVkdJQ19WNTpcbiBcdFx0XHRpbnRpZCA9IHZnaWNfdjVfZ2V0X2h3aXJxX2lkKGludGlkKTtcbitcdFx0XHRpZiAoaW50aWQgXHUwMDNlPSBWR0lDX1Y1X05SX1BSSVZBVEVfSVJRUylcbitcdFx0XHRcdHJldHVybiBOVUxMO1xuIFx0XHRcdGludGlkID0gYXJyYXlfaW5kZXhfbm9zcGVjKGludGlkLCBWR0lDX1Y1X05SX1BSSVZBVEVfSVJRUyk7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdGRlZmF1bHQ6XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMgYi9kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuY1xuaW5kZXggZjNmY2UwYjFlMjVkOS4uNjc5NDBlYTllMzliNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jXG4rKysgYi9kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuY1xuQEAgLTY1MSw2ICs2NTEsMTkgQEAgc3RhdGljIGludCBfX2luaXQgZ2ljdjVfaXJzX29mX2luaXRfYWZmaW5pdHkoc3RydWN0IGRldmljZV9ub2RlICpub2RlLFxuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG4rc3RhdGljIHZvaWQgX19pbml0IGdpY3Y1X2lyc19jbGVhcl9hZmZpbml0eShzdHJ1Y3QgZ2ljdjVfaXJzX2NoaXBfZGF0YSAqaXJzX2RhdGEpXG4re1xuK1x0aW50IGNwdTtcbitcbitcdGZvcl9lYWNoX3Bvc3NpYmxlX2NwdShjcHUpIHtcbitcdFx0aWYgKHBlcl9jcHUocGVyX2NwdV9pcnNfZGF0YSwgY3B1KSA9PSBpcnNfZGF0YSkge1xuK1x0XHRcdHBlcl9jcHUoY3B1X2lhZmZpZCwgY3B1KS5pYWZmaWQgPSAwO1xuK1x0XHRcdHBlcl9jcHUoY3B1X2lhZmZpZCwgY3B1KS52YWxpZCA9IGZhbHNlO1xuK1x0XHRcdHBlcl9jcHUocGVyX2NwdV9pcnNfZGF0YSwgY3B1KSA9IE5VTEw7XG4rXHRcdH1cbitcdH1cbit9XG4rXG4gc3RhdGljIHZvaWQgaXJzX3NldHVwX3ByaV9iaXRzKHUzMiBpZHIxKVxuIHtcbiBcdHN3aXRjaCAoRklFTERfR0VUKEdJQ1Y1X0lSU19JRFIxX1BSSU9SSVRZX0JJVFMsIGlkcjEpKSB7XG5AQCAtNzczLDYgKzc4Niw3IEBAIHN0YXRpYyBpbnQgX19pbml0IGdpY3Y1X2lyc19vZl9pbml0KHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSlcbiBcdHJldHVybiByZXQ7XG4gXG4gb3V0X2lvbWVtOlxuK1x0Z2ljdjVfaXJzX2NsZWFyX2FmZmluaXR5KGlyc19kYXRhKTtcbiBcdGlvdW5tYXAoaXJzX2Jhc2UpO1xuIG91dF9lcnI6XG4gXHRrZnJlZShpcnNfZGF0YSk7XG5AQCAtNzg3LDYgKzgwMSw3IEBAIHZvaWQgX19pbml0IGdpY3Y1X2lyc19yZW1vdmUodm9pZClcbiBcdGdpY3Y1X2RlaW5pdF9scGlzKCk7XG4gXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoaXJzX2RhdGEsIHRtcF9kYXRhLCBcdTAwMjZpcnNfbm9kZXMsIGVudHJ5KSB7XG4rXHRcdGdpY3Y1X2lyc19jbGVhcl9hZmZpbml0eShpcnNfZGF0YSk7XG4gXHRcdGlvdW5tYXAoaXJzX2RhdGEtXHUwMDNlaXJzX2Jhc2UpO1xuIFx0XHRsaXN0X2RlbChcdTAwMjZpcnNfZGF0YS1cdTAwM2VlbnRyeSk7XG4gXHRcdGtmcmVlKGlyc19kYXRhKTtcbkBAIC05NTEsNiArOTY2LDcgQEAgc3RhdGljIGludCBfX2luaXQgZ2ljX2FjcGlfcGFyc2VfbWFkdF9pcnModW5pb24gYWNwaV9zdWJ0YWJsZV9oZWFkZXJzICpoZWFkZXIsXG4gXHRyZXR1cm4gMDtcbiBcbiBvdXRfbWFwOlxuK1x0Z2ljdjVfaXJzX2NsZWFyX2FmZmluaXR5KGlyc19kYXRhKTtcbiBcdGlvdW5tYXAoaXJzX2Jhc2UpO1xuIG91dF9yZWxlYXNlOlxuIFx0cmVsZWFzZV9tZW1fcmVnaW9uKHItXHUwMDNlc3RhcnQsIHJlc291cmNlX3NpemUocikpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LmMgYi9kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS5jXG5pbmRleCBlOWQxNzk1MjM1YTY2Li42YTk5YzU0MWI1NTliIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUuY1xuKysrIGIvZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUuY1xuQEAgLTk4Myw2ICs5ODMsNyBAQCBzdGF0aWMgdm9pZCBnaWN2NV9jcHVfZGlzYWJsZV9pbnRlcnJ1cHRzKHZvaWQpXG4gXG4gXHRjcjAgPSBGSUVMRF9QUkVQKElDQ19DUjBfRUwxX0VOLCAwKTtcbiBcdHdyaXRlX3N5c3JlZ19zKGNyMCwgU1lTX0lDQ19DUjBfRUwxKTtcbitcdGlzYigpO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBnaWN2NV9jcHVfZW5hYmxlX2ludGVycnVwdHModm9pZClcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDExOjM0OjM5LjQwNDAwOTUwMloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwOTY5MjkxNDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFRoaXMgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgSSBzZWUgaXQncyB0b3VjaGluZyBzb21lIGNyaXRpY2FsIGFyZWFzOiBgYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuY2AsIGBhcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuY2AsIGBkcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuY2AsIGFuZCBgZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUuY2AuIE15IHNwaWRleSBzZW5zZXMgYXJlIGFscmVhZHkgdGluZ2xpbmc7IGFueSBtb2RpZmljYXRpb24gdG8gdGhlIEtWTSBWR0lDIGFuZCBHSUMgZHJpdmVycyBuZWVkcyBjYXJlZnVsIHJldmlldy4gVGhlIGRlc2NyaXB0aW9uIG1lbnRpb25zIGl0J3MgZml4aW5nIG1lbW9yeSBsZWFrcywgcG90ZW50aWFsIGFycmF5IGluZGV4IG91dC1vZi1ib3VuZHMgZXJyb3JzLCBhbmQgaW50cm9kdWNpbmcgYW4gYGlzYigpYCBpbnN0cnVjdGlvbi4gU29saWQgZnVuY3Rpb25hbCBjaGFuZ2VzLCBidXQgSSBuZWVkIHRvIGRpdmUgZGVlcGVyLlxuXG5NZW1vcnkgbGVha3MgYW5kIGJvdW5kcyBjaGVja3MgYXJlIGFsd2F5cyBnb29kIHRvIHNlZSBhZGRyZXNzZWQsIGVzcGVjaWFsbHkgaW4ga2VybmVsIGNvZGUuIEFuIGBpc2IoKWAgaW1wbGllcyBtZW1vcnkgYmFycmllciBpbXBsaWNhdGlvbnMsIHdoaWNoIGlzIGltcG9ydGFudCBmb3IgaW50ZXJydXB0IGhhbmRsaW5nLiBBbGwgb2YgdGhlc2UgZml4ZXMgcmVxdWlyZSB0aG9yb3VnaCB0ZXN0aW5nLlxuXG5UaGUgcmVmZXJlbmNlIHRvIEdJQ3Y1IHBpcXVlcyBteSBpbnRlcmVzdC4gR0lDdjUsIHJlYWxseT8gSSBzaG91bGQgcHJvYmFibHkgdmVyaWZ5IHRoYXQgYGRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LmNgICphY3R1YWxseSogZXhpc3RzIGluIHRoZSBrZXJuZWwgYW5kIGlzbid0IHNvbWUgc3RhbGUgZmlsZS4gQSBxdWljayBjaGVjayBvZiB0aGUga2VybmVsIHRyZWUgaXMgaW4gb3JkZXIgYmVmb3JlIHByb2NlZWRpbmcgYW55IGZ1cnRoZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1NTgsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzYsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxMTozNDo0NC41MDA5NDE0OTJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODAwMjAyNjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZ2ljdjVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9pcnFjaGlwL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDE2NDUgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTI1LVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjI2OnN0YXRpYyBERUZJTkVfUEVSX0NQVV9SRUFEX01PU1RMWShzdHJ1Y3QgZ2ljdjVfaXJzX2NoaXBfZGF0YSAqLCBwZXJfY3B1X2lyc19kYXRhKTtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy0yNy1zdGF0aWMgTElTVF9IRUFEKGlyc19ub2Rlcyk7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtMjgtXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6Mjk6c3RhdGljIHUzMiBpcnNfcmVhZGxfcmVsYXhlZChzdHJ1Y3QgZ2ljdjVfaXJzX2NoaXBfZGF0YSAqaXJzX2RhdGEsXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtMzAtXFx0XFx0XFx0ICAgICBjb25zdCB1MzIgcmVnX29mZnNldClcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTM0LVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjM1OnN0YXRpYyB2b2lkIGlyc193cml0ZWxfcmVsYXhlZChzdHJ1Y3QgZ2ljdjVfaXJzX2NoaXBfZGF0YSAqaXJzX2RhdGEsXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtMzYtXFx0XFx0XFx0ICAgICAgIGNvbnN0IHUzMiB2YWwsIGNvbnN0IHUzMiByZWdfb2Zmc2V0KVxcbi0tXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNDAtXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6NDE6c3RhdGljIHU2NCBpcnNfcmVhZHFfcmVsYXhlZChzdHJ1Y3QgZ2ljdjVfaXJzX2NoaXBfZGF0YSAqaXJzX2RhdGEsXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNDItXFx0XFx0XFx0ICAgICBjb25zdCB1MzIgcmVnX29mZnNldClcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTQ2LVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjQ3OnN0YXRpYyB2b2lkIGlyc193cml0ZXFfcmVsYXhlZChzdHJ1Y3QgZ2ljdjVfaXJzX2NoaXBfZGF0YSAqaXJzX2RhdGEsXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNDgtXFx0XFx0XFx0ICAgICAgIGNvbnN0IHU2NCB2YWwsIGNvbnN0IHUzMiByZWdfb2Zmc2V0KVxcbi0tXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNTMtLypcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo1NDogKiBUaGUgcG9sbGluZyB3YWl0IChpbiBnaWN2NV93YWl0X2Zvcl9vcF9zX2F0b21pYygpKSBvbiBhIEdJQyByZWdpc3RlclxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTU1LSAqIHByb3ZpZGVzIHRoZSBtZW1vcnkgYmFycmllcnMgKHRocm91Z2ggTU1JTyBhY2Nlc3NvcnMpXFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy01Ny0gKi9cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo1ODpzdGF0aWMgaW50IGdpY3Y1X2lyc19pc3Rfc3luY2hyb25pc2Uoc3RydWN0IGdpY3Y1X2lyc19jaGlwX2RhdGEgKmlyc19kYXRhKVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTU5LXtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo2MDpcXHRyZXR1cm4gZ2ljdjVfd2FpdF9mb3Jfb3BfYXRvbWljKGlyc19kYXRhLVxcdTAwM2VpcnNfYmFzZSwgR0lDVjVfSVJTX0lTVF9TVEFUVVNSLFxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTYxLVxcdFxcdFxcdFxcdFxcdEdJQ1Y1X0lSU19JU1RfU1RBVFVTUl9JRExFLCBOVUxMKTtcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTYzLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjY0OnN0YXRpYyBpbnQgX19pbml0IGdpY3Y1X2lyc19pbml0X2lzdF9saW5lYXIoc3RydWN0IGdpY3Y1X2lyc19jaGlwX2RhdGEgKmlyc19kYXRhLFxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTY1LVxcdFxcdFxcdFxcdFxcdCAgICB1bnNpZ25lZCBpbnQgbHBpX2lkX2JpdHMsXFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy0xMTAtXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6MTExOlxcdGdpY3Y1X2dsb2JhbF9kYXRhLmlzdC5sMiA9IGZhbHNlO1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTExMi1cXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTExNi1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzoxMTc6XFx0cmV0ID0gZ2ljdjVfaXJzX2lzdF9zeW5jaHJvbmlzZShpcnNfZGF0YSk7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtMTE4LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTEyNi1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzoxMjc6c3RhdGljIGludCBfX2luaXQgZ2ljdjVfaXJzX2luaXRfaXN0X3R3b19sZXZlbChzdHJ1Y3QgZ2ljdjVfaXJzX2NoaXBfZGF0YSAqaXJzX2RhdGEsXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtMTI4LVxcdFxcdFxcdFxcdFxcdCAgICAgICB1bnNpZ25lZCBpbnQgbHBpX2lkX2JpdHMsXFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy0xNjQtXFx0ICovXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6MTY1OlxcdGdpY3Y1X2dsb2JhbF9kYXRhLmlzdC5sMl9zaXplID0gQklUKDExICsgKDIgKiBsMnN6KSArIDEpO1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjE2NjpcXHRnaWN2NV9nbG9iYWxfZGF0YS5pc3QubDJfYml0cyA9ICgxMCAtIGlzdHN6KSArICgyICogbDJzeik7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6MTY3OlxcdGdpY3Y1X2dsb2JhbF9kYXRhLmlzdC5sMWlzdF9hZGRyID0gbDFpc3Q7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6MTY4OlxcdGdpY3Y1X2dsb2JhbF9kYXRhLmlzdC5sMiA9IHRydWU7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtMTY5LVxcbi0tXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtMTczLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjE3NDpcXHRyZXQgPSBnaWN2NV9pcnNfaXN0X3N5bmNocm9uaXNlKGlyc19kYXRhKTtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy0xNzUtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtMTg4LSAqL1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjE4OTppbnQgZ2ljdjVfaXJzX2lzdGVfYWxsb2MoY29uc3QgdTMyIGxwaSlcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy0xOTAte1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjE5MTpcXHRzdHJ1Y3QgZ2ljdjVfaXJzX2NoaXBfZGF0YSAqaXJzX2RhdGE7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtMTkyLVxcdHVuc2lnbmVkIGludCBpbmRleDtcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTE5OC1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzoxOTk6XFx0aWYgKCFnaWN2NV9nbG9iYWxfZGF0YS5pc3QubDIpXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtMjAwLVxcdFxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtMjA1LVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjIwNjpcXHRsMnNpemUgPSBnaWN2NV9nbG9iYWxfZGF0YS5pc3QubDJfc2l6ZTtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzoyMDc6XFx0bDJiaXRzID0gZ2ljdjVfZ2xvYmFsX2RhdGEuaXN0LmwyX2JpdHM7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6MjA4OlxcdGwxaXN0ID0gZ2ljdjVfZ2xvYmFsX2RhdGEuaXN0LmwxaXN0X2FkZHI7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtMjA5LVxcdGluZGV4ID0gbHBpIFxcdTAwM2VcXHUwMDNlIGwyYml0cztcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTIzMS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzoyMzI6XFx0cmV0ID0gZ2ljdjVfaXJzX2lzdF9zeW5jaHJvbmlzZShpcnNfZGF0YSk7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtMjMzLVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTI0NS1cXHRcXHQvKlxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjI0NjpcXHRcXHQgKiBnaWN2NV9pcnNfaXN0X3N5bmNocm9uaXNlKCkgaW5jbHVkZXMgbWVtb3J5XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtMjQ3LVxcdFxcdCAqIGJhcnJpZXJzIChNTUlPIGFjY2Vzc29ycykgcmVxdWlyZWQgdG8gZ3VhcmFudGVlIHRoYXQgdGhlXFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy0yNjgtICovXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6MjY5OnN0YXRpYyB1bnNpZ25lZCBpbnQgZ2ljdjVfaXJzX2wyX3N6KHUzMiBpZHIyKVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTI3MC17XFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy0yOTEtXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6MjkyOnN0YXRpYyBpbnQgX19pbml0IGdpY3Y1X2lyc19pbml0X2lzdChzdHJ1Y3QgZ2ljdjVfaXJzX2NoaXBfZGF0YSAqaXJzX2RhdGEpXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtMjkzLXtcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTMzMC1cXHQgKi9cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzozMzE6XFx0bHBpX2lkX2JpdHMgPSBtaW4obHBpX2lkX2JpdHMsIGdpY3Y1X2dsb2JhbF9kYXRhLmNwdWlmX2lkX2JpdHMpO1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTMzMi1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy0zMzMtXFx0aWYgKHR3b19sZXZlbHMpXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6MzM0OlxcdFxcdGwyc3ogPSBnaWN2NV9pcnNfbDJfc3ooaWRyMik7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtMzM1LVxcbi0tXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtMzUzLVxcdGlmICh0d29fbGV2ZWxzIFxcdTAwMjZcXHUwMDI2IChscGlfaWRfYml0cyBcXHUwMDNlICgoMTAgLSBsMl9pc3RlX3N6KSArICgyICogbDJzeikpKSkge1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjM1NDpcXHRcXHRyZXQgPSBnaWN2NV9pcnNfaW5pdF9pc3RfdHdvX2xldmVsKGlyc19kYXRhLCBscGlfaWRfYml0cyxcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy0zNTUtXFx0XFx0XFx0XFx0XFx0XFx0ICAgbDJfaXN0ZV9zeiwgbDJzeik7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtMzU2LVxcdH0gZWxzZSB7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6MzU3OlxcdFxcdHJldCA9IGdpY3Y1X2lyc19pbml0X2lzdF9saW5lYXIoaXJzX2RhdGEsIGxwaV9pZF9iaXRzLFxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTM1OC1cXHRcXHRcXHRcXHRcXHRcXHRsMl9pc3RlX3N6KTtcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTM2Mi1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzozNjM6XFx0Z2ljdjVfaW5pdF9scGlzKEJJVChscGlfaWRfYml0cykpO1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTM2NC1cXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jPTM3Mz1zdGF0aWMgREVGSU5FX1BFUl9DUFUoc3RydWN0IGlhZmZpZF9lbnRyeSwgY3B1X2lhZmZpZCk7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtMzc0LVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjM3NTppbnQgZ2ljdjVfaXJzX2NwdV90b19pYWZmaWQoaW50IGNwdWlkLCB1MTYgKmlhZmZpZClcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy0zNzYte1xcbi0tXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtMzg2LVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjM4NzpzdHJ1Y3QgZ2ljdjVfaXJzX2NoaXBfZGF0YSAqZ2ljdjVfaXJzX2xvb2t1cF9ieV9zcGlfaWQodTMyIHNwaV9pZClcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy0zODgte1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjM4OTpcXHRzdHJ1Y3QgZ2ljdjVfaXJzX2NoaXBfZGF0YSAqaXJzX2RhdGE7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtMzkwLVxcdHUzMiBtaW4sIG1heDtcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTQwNC1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo0MDU6c3RhdGljIGludCBnaWN2NV9pcnNfd2FpdF9mb3Jfc3BpX29wKHN0cnVjdCBnaWN2NV9pcnNfY2hpcF9kYXRhICppcnNfZGF0YSlcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy00MDYte1xcbi0tXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNDA5LVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjQxMDpcXHRyZXQgPSBnaWN2NV93YWl0X2Zvcl9vcF9hdG9taWMoaXJzX2RhdGEtXFx1MDAzZWlyc19iYXNlLCBHSUNWNV9JUlNfU1BJX1NUQVRVU1IsXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNDExLVxcdFxcdFxcdFxcdCAgICAgICBHSUNWNV9JUlNfU1BJX1NUQVRVU1JfSURMRSwgXFx1MDAyNnN0YXR1c3IpO1xcbi0tXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNDE3LVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjQxODpzdGF0aWMgaW50IGdpY3Y1X2lyc193YWl0X2Zvcl9pcnNfcGUoc3RydWN0IGdpY3Y1X2lyc19jaGlwX2RhdGEgKmlyc19kYXRhLFxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTQxOS1cXHRcXHRcXHRcXHQgICAgIGJvb2wgc2VscilcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTQyNC1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo0MjU6XFx0cmV0ID0gZ2ljdjVfd2FpdF9mb3Jfb3BfYXRvbWljKGlyc19kYXRhLVxcdTAwM2VpcnNfYmFzZSwgR0lDVjVfSVJTX1BFX1NUQVRVU1IsXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNDI2LVxcdFxcdFxcdFxcdCAgICAgICBHSUNWNV9JUlNfUEVfU1RBVFVTUl9JRExFLCBcXHUwMDI2c3RhdHVzcik7XFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy00MzUtXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6NDM2OnN0YXRpYyBpbnQgZ2ljdjVfaXJzX3dhaXRfZm9yX3BlX3NlbHIoc3RydWN0IGdpY3Y1X2lyc19jaGlwX2RhdGEgKmlyc19kYXRhKVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTQzNy17XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6NDM4OlxcdHJldHVybiBnaWN2NV9pcnNfd2FpdF9mb3JfaXJzX3BlKGlyc19kYXRhLCB0cnVlKTtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy00MzktfVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTQ0MC1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo0NDE6c3RhdGljIGludCBnaWN2NV9pcnNfd2FpdF9mb3JfcGVfY3IwKHN0cnVjdCBnaWN2NV9pcnNfY2hpcF9kYXRhICppcnNfZGF0YSlcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy00NDIte1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjQ0MzpcXHRyZXR1cm4gZ2ljdjVfaXJzX3dhaXRfZm9yX2lyc19wZShpcnNfZGF0YSwgZmFsc2UpO1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTQ0NC19XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNDQ1LVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjQ0NjppbnQgZ2ljdjVfc3BpX2lycV9zZXRfdHlwZShzdHJ1Y3QgaXJxX2RhdGEgKmQsIHVuc2lnbmVkIGludCB0eXBlKVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTQ0Ny17XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6NDQ4OlxcdHN0cnVjdCBnaWN2NV9pcnNfY2hpcF9kYXRhICppcnNfZGF0YSA9IGQtXFx1MDAzZWNoaXBfZGF0YTtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy00NDktXFx0dTMyIHNlbHIsIGNmZ3I7XFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy00NzQtXFx0aXJzX3dyaXRlbF9yZWxheGVkKGlyc19kYXRhLCBzZWxyLCBHSUNWNV9JUlNfU1BJX1NFTFIpO1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjQ3NTpcXHRyZXQgPSBnaWN2NV9pcnNfd2FpdF9mb3Jfc3BpX29wKGlyc19kYXRhKTtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy00NzYtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTQ4MS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo0ODI6XFx0cmV0dXJuIGdpY3Y1X2lyc193YWl0X2Zvcl9zcGlfb3AoaXJzX2RhdGEpO1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTQ4My19XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNDg0LVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjQ4NTpzdGF0aWMgaW50IGdpY3Y1X2lyc193YWl0X2Zvcl9pZGxlKHN0cnVjdCBnaWN2NV9pcnNfY2hpcF9kYXRhICppcnNfZGF0YSlcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy00ODYte1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjQ4NzpcXHRyZXR1cm4gZ2ljdjVfd2FpdF9mb3Jfb3BfYXRvbWljKGlyc19kYXRhLVxcdTAwM2VpcnNfYmFzZSwgR0lDVjVfSVJTX0NSMCxcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy00ODgtXFx0XFx0XFx0XFx0XFx0R0lDVjVfSVJTX0NSMF9JRExFLCBOVUxMKTtcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTQ5MC1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo0OTE6dm9pZCBnaWN2NV9pcnNfc3luY3Iodm9pZClcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy00OTIte1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjQ5MzpcXHRzdHJ1Y3QgZ2ljdjVfaXJzX2NoaXBfZGF0YSAqaXJzX2RhdGE7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNDk0LVxcdHUzMiBzeW5jcjtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy00OTUtXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6NDk2OlxcdGlyc19kYXRhID0gbGlzdF9maXJzdF9lbnRyeV9vcl9udWxsKFxcdTAwMjZpcnNfbm9kZXMsIHN0cnVjdCBnaWN2NV9pcnNfY2hpcF9kYXRhLCBlbnRyeSk7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNDk3LVxcdGlmIChXQVJOX09OX09OQ0UoIWlyc19kYXRhKSlcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTUwMi1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo1MDM6XFx0Z2ljdjVfd2FpdF9mb3Jfb3AoaXJzX2RhdGEtXFx1MDAzZWlyc19iYXNlLCBHSUNWNV9JUlNfU1lOQ19TVEFUVVNSLFxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTUwNC1cXHRcXHRcXHQgIEdJQ1Y1X0lSU19TWU5DX1NUQVRVU1JfSURMRSk7XFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy01MDYtXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6NTA3OmludCBnaWN2NV9pcnNfcmVnaXN0ZXJfY3B1KGludCBjcHVpZClcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy01MDgte1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjUwOTpcXHRzdHJ1Y3QgZ2ljdjVfaXJzX2NoaXBfZGF0YSAqaXJzX2RhdGE7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNTEwLVxcdHUzMiBzZWxyLCBjcjA7XFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy01MTMtXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6NTE0OlxcdHJldCA9IGdpY3Y1X2lyc19jcHVfdG9faWFmZmlkKGNwdWlkLCBcXHUwMDI2aWFmZmlkKTtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy01MTUtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNTI4LVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjUyOTpcXHRyZXQgPSBnaWN2NV9pcnNfd2FpdF9mb3JfcGVfc2VscihpcnNfZGF0YSk7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNTMwLVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTUzNy1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo1Mzg6XFx0cmV0ID0gZ2ljdjVfaXJzX3dhaXRfZm9yX3BlX2NyMChpcnNfZGF0YSk7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNTM5LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy01NDYtXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6NTQ3OnN0YXRpYyB2b2lkIF9faW5pdCBnaWN2NV9pcnNfaW5pdF9iYXNlcyhzdHJ1Y3QgZ2ljdjVfaXJzX2NoaXBfZGF0YSAqaXJzX2RhdGEsXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNTQ4LVxcdFxcdFxcdFxcdFxcdHZvaWQgX19pb21lbSAqaXJzX2Jhc2UsXFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy01OTEtXFx0aXJzX3dyaXRlbF9yZWxheGVkKGlyc19kYXRhLCBjcjAsIEdJQ1Y1X0lSU19DUjApO1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjU5MjpcXHRnaWN2NV9pcnNfd2FpdF9mb3JfaWRsZShpcnNfZGF0YSk7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNTkzLX1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy01OTQtXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6NTk1OnN0YXRpYyBpbnQgX19pbml0IGdpY3Y1X2lyc19vZl9pbml0X2FmZmluaXR5KHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSxcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo1OTY6XFx0XFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgZ2ljdjVfaXJzX2NoaXBfZGF0YSAqaXJzX2RhdGEsXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNTk3LVxcdFxcdFxcdFxcdFxcdCAgICAgdTggaWFmZmlkX2JpdHMpXFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy02NTMtXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6NjU0OnN0YXRpYyB2b2lkIF9faW5pdCBnaWN2NV9pcnNfY2xlYXJfYWZmaW5pdHkoc3RydWN0IGdpY3Y1X2lyc19jaGlwX2RhdGEgKmlyc19kYXRhKVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTY1NS17XFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYz02Njc9c3RhdGljIHZvaWQgaXJzX3NldHVwX3ByaV9iaXRzKHUzMiBpZHIxKVxcbi0tXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNjcwLVxcdGNhc2UgR0lDVjVfSVJTX0lEUjFfUFJJT1JJVFlfQklUU18xQklUUzpcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo2NzE6XFx0XFx0Z2ljdjVfZ2xvYmFsX2RhdGEuaXJzX3ByaV9iaXRzID0gMTtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy02NzItXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNjczLVxcdGNhc2UgR0lDVjVfSVJTX0lEUjFfUFJJT1JJVFlfQklUU18yQklUUzpcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo2NzQ6XFx0XFx0Z2ljdjVfZ2xvYmFsX2RhdGEuaXJzX3ByaV9iaXRzID0gMjtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy02NzUtXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNjc2LVxcdGNhc2UgR0lDVjVfSVJTX0lEUjFfUFJJT1JJVFlfQklUU18zQklUUzpcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo2Nzc6XFx0XFx0Z2ljdjVfZ2xvYmFsX2RhdGEuaXJzX3ByaV9iaXRzID0gMztcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy02NzgtXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNjc5LVxcdGNhc2UgR0lDVjVfSVJTX0lEUjFfUFJJT1JJVFlfQklUU180QklUUzpcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo2ODA6XFx0XFx0Z2ljdjVfZ2xvYmFsX2RhdGEuaXJzX3ByaV9iaXRzID0gNDtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy02ODEtXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNjgyLVxcdGNhc2UgR0lDVjVfSVJTX0lEUjFfUFJJT1JJVFlfQklUU181QklUUzpcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo2ODM6XFx0XFx0Z2ljdjVfZ2xvYmFsX2RhdGEuaXJzX3ByaV9iaXRzID0gNTtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy02ODQtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy02ODctXFx0XFx0XFx0RklFTERfR0VUKEdJQ1Y1X0lSU19JRFIxX1BSSU9SSVRZX0JJVFMsIGlkcjEpKTtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo2ODg6XFx0XFx0Z2ljdjVfZ2xvYmFsX2RhdGEuaXJzX3ByaV9iaXRzID0gMTtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy02ODktXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy02OTItXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6NjkzOnN0YXRpYyBpbnQgX19pbml0IGdpY3Y1X2lyc19pbml0KHN0cnVjdCBnaWN2NV9pcnNfY2hpcF9kYXRhICppcnNfZGF0YSlcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy02OTQte1xcbi0tXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNzE0LVxcdFxcdGlkciA9IGlyc19yZWFkbF9yZWxheGVkKGlyc19kYXRhLCBHSUNWNV9JUlNfSURSMCk7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6NzE1OlxcdFxcdGdpY3Y1X2dsb2JhbF9kYXRhLnZpcnRfY2FwYWJsZSA9ICEhRklFTERfR0VUKEdJQ1Y1X0lSU19JRFIwX1ZJUlQsIGlkcik7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNzE2LVxcbi0tXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNzIyLVxcdFxcdHNwaV9jb3VudCA9IEZJRUxEX0dFVChHSUNWNV9JUlNfSURSNV9TUElfUkFOR0UsIGlkcik7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6NzIzOlxcdFxcdGdpY3Y1X2dsb2JhbF9kYXRhLmdsb2JhbF9zcGlfY291bnQgPSBzcGlfY291bnQ7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNzI0LVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjcyNTpcXHRcXHRnaWN2NV9pbml0X2xwaV9kb21haW4oKTtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy03MjYtXFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy03MzQtXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6NzM1OnN0YXRpYyBpbnQgX19pbml0IGdpY3Y1X2lyc19vZl9pbml0KHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSlcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy03MzYte1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjczNzpcXHRzdHJ1Y3QgZ2ljdjVfaXJzX2NoaXBfZGF0YSAqaXJzX2RhdGE7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNzM4LVxcdHZvaWQgX19pb21lbSAqaXJzX2Jhc2U7XFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy03NjItXFx0aXJzX2RhdGEtXFx1MDAzZWZ3bm9kZSA9IG9mX2Z3bm9kZV9oYW5kbGUobm9kZSk7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6NzYzOlxcdGdpY3Y1X2lyc19pbml0X2Jhc2VzKGlyc19kYXRhLCBpcnNfYmFzZSwgb2ZfcHJvcGVydHlfcmVhZF9ib29sKG5vZGUsIFxcXCJkbWEtbm9uY29oZXJlbnRcXFwiKSk7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNzY0LVxcbi0tXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNzY3LVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjc2ODpcXHRyZXQgPSBnaWN2NV9pcnNfb2ZfaW5pdF9hZmZpbml0eShub2RlLCBpcnNfZGF0YSwgaWFmZmlkX2JpdHMpO1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTc2OS1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy03NzMtXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6Nzc0OlxcdHJldCA9IGdpY3Y1X2lyc19pbml0KGlyc19kYXRhKTtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy03NzUtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTc4OC1vdXRfaW9tZW06XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6Nzg5OlxcdGdpY3Y1X2lyc19jbGVhcl9hZmZpbml0eShpcnNfZGF0YSk7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNzkwLVxcdGlvdW5tYXAoaXJzX2Jhc2UpO1xcbi0tXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNzk1LVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjc5Njp2b2lkIF9faW5pdCBnaWN2NV9pcnNfcmVtb3ZlKHZvaWQpXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNzk3LXtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo3OTg6XFx0c3RydWN0IGdpY3Y1X2lyc19jaGlwX2RhdGEgKmlyc19kYXRhLCAqdG1wX2RhdGE7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNzk5LVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjgwMDpcXHRnaWN2NV9mcmVlX2xwaV9kb21haW4oKTtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo4MDE6XFx0Z2ljdjVfZGVpbml0X2xwaXMoKTtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy04MDItXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtODAzLVxcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShpcnNfZGF0YSwgdG1wX2RhdGEsIFxcdTAwMjZpcnNfbm9kZXMsIGVudHJ5KSB7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6ODA0OlxcdFxcdGdpY3Y1X2lyc19jbGVhcl9hZmZpbml0eShpcnNfZGF0YSk7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtODA1LVxcdFxcdGlvdW5tYXAoaXJzX2RhdGEtXFx1MDAzZWlyc19iYXNlKTtcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTgxMC1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo4MTE6aW50IF9faW5pdCBnaWN2NV9pcnNfZW5hYmxlKHZvaWQpXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtODEyLXtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo4MTM6XFx0c3RydWN0IGdpY3Y1X2lyc19jaGlwX2RhdGEgKmlyc19kYXRhO1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTgxNC1cXHRpbnQgcmV0O1xcbi0tXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtODE2LVxcdGlyc19kYXRhID0gbGlzdF9maXJzdF9lbnRyeV9vcl9udWxsKFxcdTAwMjZpcnNfbm9kZXMsXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6ODE3OlxcdFxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgZ2ljdjVfaXJzX2NoaXBfZGF0YSwgZW50cnkpO1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTgxOC1cXHRpZiAoIWlyc19kYXRhKVxcbi0tXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtODIwLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjgyMTpcXHRyZXQgPSBnaWN2NV9pcnNfaW5pdF9pc3QoaXJzX2RhdGEpO1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTgyMi1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy04MjktXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6ODMwOnZvaWQgX19pbml0IGdpY3Y1X2lyc19pdHNfcHJvYmUodm9pZClcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy04MzEte1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjgzMjpcXHRzdHJ1Y3QgZ2ljdjVfaXJzX2NoaXBfZGF0YSAqaXJzX2RhdGE7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtODMzLVxcbi0tXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtODM1LVxcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnkoaXJzX2RhdGEsIFxcdTAwMjZpcnNfbm9kZXMsIGVudHJ5KVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjgzNjpcXHRcXHRcXHRnaWN2NV9pdHNfb2ZfcHJvYmUodG9fb2Zfbm9kZShpcnNfZGF0YS1cXHUwMDNlZndub2RlKSk7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtODM3LVxcdGVsc2VcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo4Mzg6XFx0XFx0Z2ljdjVfaXRzX2FjcGlfcHJvYmUoKTtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy04MzktfVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTg0MC1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo4NDE6aW50IF9faW5pdCBnaWN2NV9pcnNfb2ZfcHJvYmUoc3RydWN0IGRldmljZV9ub2RlICpwYXJlbnQpXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtODQyLXtcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTg0OS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo4NTA6XFx0XFx0cmV0ID0gZ2ljdjVfaXJzX29mX2luaXQobnApO1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTg1MS1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtODYwLSNkZWZpbmUgQUNQSV9HSUNWNV9JUlNfTUVNX1NJWkUgKFNaXzY0SylcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo4NjE6c3RhdGljIHN0cnVjdCBnaWN2NV9pcnNfY2hpcF9kYXRhICpjdXJyZW50X2lyc19kYXRhIF9faW5pdGRhdGE7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtODYyLXN0YXRpYyBpbnQgY3VycmVudF9pcnNpZCBfX2luaXRkYXRhID0gLTE7XFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYz04NjU9c3RhdGljIGludCBfX2luaXQgZ2ljX2FjcGlfcGFyc2VfaWFmZmlkKHVuaW9uIGFjcGlfc3VidGFibGVfaGVhZGVycyAqaGVhZGVyLFxcbi0tXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtODk0LVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjg5NTpzdGF0aWMgaW50IF9faW5pdCBnaWN2NV9pcnNfYWNwaV9pbml0X2FmZmluaXR5KHUzMiBpcnNpZCwgc3RydWN0IGdpY3Y1X2lyc19jaGlwX2RhdGEgKmlyc19kYXRhKVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTg5Ni17XFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYz05MjE9c3RhdGljIGludCBfX2luaXQgZ2ljX2FjcGlfcGFyc2VfbWFkdF9pcnModW5pb24gYWNwaV9zdWJ0YWJsZV9oZWFkZXJzICpoZWFkZXIsXFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy05MjMte1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjkyNDpcXHRzdHJ1Y3QgYWNwaV9tYWR0X2dpY3Y1X2lycyAqaXJzID0gKHN0cnVjdCBhY3BpX21hZHRfZ2ljdjVfaXJzICopaGVhZGVyO1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjkyNTpcXHRzdHJ1Y3QgZ2ljdjVfaXJzX2NoaXBfZGF0YSAqaXJzX2RhdGE7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtOTI2LVxcdHZvaWQgX19pb21lbSAqaXJzX2Jhc2U7XFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy05NTAtXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6OTUxOlxcdGdpY3Y1X2lyc19pbml0X2Jhc2VzKGlyc19kYXRhLCBpcnNfYmFzZSwgaXJzLVxcdTAwM2VmbGFncyBcXHUwMDI2IEFDUElfTUFEVF9JUlNfTk9OX0NPSEVSRU5UKTtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy05NTItXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6OTUzOlxcdGdpY3Y1X2lyc19hY3BpX2luaXRfYWZmaW5pdHkoaXJzLVxcdTAwM2VpcnNfaWQsIGlyc19kYXRhKTtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy05NTQtXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6OTU1OlxcdHJldCA9IGdpY3Y1X2lyc19pbml0KGlyc19kYXRhKTtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy05NTYtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTk2OC1vdXRfbWFwOlxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjk2OTpcXHRnaWN2NV9pcnNfY2xlYXJfYWZmaW5pdHkoaXJzX2RhdGEpO1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTk3MC1cXHRpb3VubWFwKGlyc19iYXNlKTtcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTk3Ny1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo5Nzg6aW50IF9faW5pdCBnaWN2NV9pcnNfYWNwaV9wcm9iZSh2b2lkKVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTk3OS17XFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy0yNy1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzoyODpzdHJ1Y3QgZ2ljdjVfaXRzX2NoaXBfZGF0YSB7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtMjktXFx0c3RydWN0XFx0eGFycmF5XFx0XFx0XFx0aXRzX2RldmljZXM7XFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy0zMS1cXHRzdHJ1Y3RcXHRmd25vZGVfaGFuZGxlXFx0XFx0KmZ3bm9kZTtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzozMjpcXHRzdHJ1Y3QgZ2ljdjVfaXRzX2RldnRhYl9jZmdcXHRkZXZ0YWJfY2ZncjtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy0zMy1cXHR2b2lkXFx0X19pb21lbVxcdFxcdFxcdCppdHNfYmFzZTtcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTM3LVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jOjM4OnN0cnVjdCBnaWN2NV9pdHNfZGV2IHtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzozOTpcXHRzdHJ1Y3QgZ2ljdjVfaXRzX2NoaXBfZGF0YVxcdCppdHNfbm9kZTtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzo0MDpcXHRzdHJ1Y3QgZ2ljdjVfaXRzX2l0dF9jZmdcXHRpdHRfY2ZnO1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTQxLVxcdHVuc2lnbmVkIGxvbmdcXHRcXHRcXHQqZXZlbnRfbWFwO1xcbi0tXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtNDYtXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmM6NDc6c3RhdGljIHUzMiBpdHNfcmVhZGxfcmVsYXhlZChzdHJ1Y3QgZ2ljdjVfaXRzX2NoaXBfZGF0YSAqaXRzX25vZGUsIGNvbnN0IHUzMiByZWdfb2Zmc2V0KVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTQ4LXtcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTUxLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jOjUyOnN0YXRpYyB2b2lkIGl0c193cml0ZWxfcmVsYXhlZChzdHJ1Y3QgZ2ljdjVfaXRzX2NoaXBfZGF0YSAqaXRzX25vZGUsIGNvbnN0IHUzMiB2YWwsXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtNTMtXFx0XFx0XFx0ICAgICAgIGNvbnN0IHUzMiByZWdfb2Zmc2V0KVxcbi0tXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtNTctXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmM6NTg6c3RhdGljIHZvaWQgaXRzX3dyaXRlcV9yZWxheGVkKHN0cnVjdCBnaWN2NV9pdHNfY2hpcF9kYXRhICppdHNfbm9kZSwgY29uc3QgdTY0IHZhbCxcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy01OS1cXHRcXHRcXHQgICAgICAgY29uc3QgdTMyIHJlZ19vZmZzZXQpXFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy02My1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzo2NDpzdGF0aWMgdm9pZCBnaWN2NV9pdHNfZGNhY2hlX2NsZWFuKHN0cnVjdCBnaWN2NV9pdHNfY2hpcF9kYXRhICppdHMsIHZvaWQgKnN0YXJ0LFxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTY1LVxcdFxcdFxcdFxcdCAgIHNpemVfdCBzeilcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTc0LVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jOjc1OnN0YXRpYyB2b2lkIGl0c193cml0ZV90YWJsZV9lbnRyeShzdHJ1Y3QgZ2ljdjVfaXRzX2NoaXBfZGF0YSAqaXRzLCBfX2xlNjQgKmVudHJ5LFxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTc2LVxcdFxcdFxcdFxcdCAgdTY0IHZhbClcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTc4LVxcdFdSSVRFX09OQ0UoKmVudHJ5LCBjcHVfdG9fbGU2NCh2YWwpKTtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzo3OTpcXHRnaWN2NV9pdHNfZGNhY2hlX2NsZWFuKGl0cywgZW50cnksIHNpemVvZigqZW50cnkpKTtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy04MC19XFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy04NC1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzo4NTpzdGF0aWMgaW50IGdpY3Y1X2l0c19jYWNoZV9zeW5jKHN0cnVjdCBnaWN2NV9pdHNfY2hpcF9kYXRhICppdHMpXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtODYte1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jOjg3OlxcdHJldHVybiBnaWN2NV93YWl0X2Zvcl9vcF9hdG9taWMoaXRzLVxcdTAwM2VpdHNfYmFzZSwgR0lDVjVfSVRTX1NUQVRVU1IsXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtODgtXFx0XFx0XFx0XFx0XFx0R0lDVjVfSVRTX1NUQVRVU1JfSURMRSwgTlVMTCk7XFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy05MC1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzo5MTpzdGF0aWMgdm9pZCBnaWN2NV9pdHNfc3luY3Ioc3RydWN0IGdpY3Y1X2l0c19jaGlwX2RhdGEgKml0cyxcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzo5MjpcXHRcXHRcXHQgICAgc3RydWN0IGdpY3Y1X2l0c19kZXYgKml0c19kZXYpXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtOTMte1xcbi0tXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtMTAwLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jOjEwMTpcXHRnaWN2NV93YWl0X2Zvcl9vcChpdHMtXFx1MDAzZWl0c19iYXNlLCBHSUNWNV9JVFNfU1lOQ19TVEFUVVNSLCBHSUNWNV9JVFNfU1lOQ19TVEFUVVNSX0lETEUpO1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTEwMi19XFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy0xMDgtXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmM6MTA5OnN0YXRpYyB1bnNpZ25lZCBpbnQgZ2ljdjVfaXRzX2wyc3pfdG9fbDJfYml0cyh1bnNpZ25lZCBpbnQgc3opXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtMTEwLXtcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTEyMS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzoxMjI6c3RhdGljIGludCBnaWN2NV9pdHNfaXR0X2NhY2hlX2ludihzdHJ1Y3QgZ2ljdjVfaXRzX2NoaXBfZGF0YSAqaXRzLCB1MzIgZGV2aWNlX2lkLFxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTEyMy1cXHRcXHRcXHRcXHQgICB1MTYgZXZlbnRfaWQpXFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy0xMzUtXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmM6MTM2OlxcdHJldHVybiBnaWN2NV9pdHNfY2FjaGVfc3luYyhpdHMpO1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTEzNy19XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtMTM4LVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jOjEzOTpzdGF0aWMgdm9pZCBnaWN2NV9pdHNfZnJlZV9pdHRfbGluZWFyKHN0cnVjdCBnaWN2NV9pdHNfZGV2ICppdHNfZGV2KVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTE0MC17XFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy0xNDMtXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmM6MTQ0OnN0YXRpYyB2b2lkIGdpY3Y1X2l0c19mcmVlX2l0dF90d29fbGV2ZWwoc3RydWN0IGdpY3Y1X2l0c19kZXYgKml0c19kZXYpXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtMTQ1LXtcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTE1NC1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzoxNTU6c3RhdGljIHZvaWQgZ2ljdjVfaXRzX2ZyZWVfaXR0KHN0cnVjdCBnaWN2NV9pdHNfZGV2ICppdHNfZGV2KVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTE1Ni17XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtMTU3LVxcdGlmICghaXRzX2Rldi1cXHUwMDNlaXR0X2NmZy5sMml0dClcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzoxNTg6XFx0XFx0Z2ljdjVfaXRzX2ZyZWVfaXR0X2xpbmVhcihpdHNfZGV2KTtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy0xNTktXFx0ZWxzZVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jOjE2MDpcXHRcXHRnaWN2NV9pdHNfZnJlZV9pdHRfdHdvX2xldmVsKGl0c19kZXYpO1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTE2MS19XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtMTYyLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jOjE2MzpzdGF0aWMgaW50IGdpY3Y1X2l0c19jcmVhdGVfaXR0X2xpbmVhcihzdHJ1Y3QgZ2ljdjVfaXRzX2NoaXBfZGF0YSAqaXRzLFxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jOjE2NDpcXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IGdpY3Y1X2l0c19kZXYgKml0c19kZXYsXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtMTY1LVxcdFxcdFxcdFxcdCAgICAgICB1bnNpZ25lZCBpbnQgZXZlbnRfaWRfYml0cylcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTE3OC1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzoxNzk6XFx0Z2ljdjVfaXRzX2RjYWNoZV9jbGVhbihpdHMsIGl0dCwgbnVtX2VudHMgKiBzaXplb2YoKml0dCkpO1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTE4MC1cXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTE4OC0gKi9cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzoxODk6c3RhdGljIGludCBnaWN2NV9pdHNfY3JlYXRlX2l0dF90d29fbGV2ZWwoc3RydWN0IGdpY3Y1X2l0c19jaGlwX2RhdGEgKml0cyxcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzoxOTA6XFx0XFx0XFx0XFx0XFx0ICBzdHJ1Y3QgZ2ljdjVfaXRzX2RldiAqaXRzX2RldixcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy0xOTEtXFx0XFx0XFx0XFx0XFx0ICB1bnNpZ25lZCBpbnQgZXZlbnRfaWRfYml0cyxcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTIwMC1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzoyMDE6XFx0cmV0ID0gZ2ljdjVfaXRzX2wyc3pfdG9fbDJfYml0cyhpdHRfbDJzeik7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtMjAyLVxcdGlmIChyZXQgXFx1MDAzZT0gZXZlbnRfaWRfYml0cykge1xcbi0tXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtMjU0LVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jOjI1NTpcXHRcXHRnaWN2NV9pdHNfZGNhY2hlX2NsZWFuKGl0cywgaXR0X2wyLCBsMnN6KTtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy0yNTYtXFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy0yNjMtXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmM6MjY0OlxcdGdpY3Y1X2l0c19kY2FjaGVfY2xlYW4oaXRzLCBpdHRfbDEsIG51bV9lbnRzICogc2l6ZW9mKCppdHRfbDEpKTtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy0yNjUtXFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy0yODQtICovXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmM6Mjg1OnN0YXRpYyBib29sIGdpY3Y1X2l0c19sMnN6X3R3b19sZXZlbChib29sIGRldnRhYiwgdTMyIGl0c19pZHIxLCB1OCBpZF9iaXRzLCB1OCAqc3opXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtMjg2LXtcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTMzMi1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzozMzM6XFx0bDJfYml0cyA9IGdpY3Y1X2l0c19sMnN6X3RvX2wyX2JpdHMobDJfc3opO1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTMzNC1cXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTM0Mi1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzozNDM6c3RhdGljIF9fbGU2NCAqZ2ljdjVfaXRzX2RldmljZV9nZXRfaXR0ZV9yZWYoc3RydWN0IGdpY3Y1X2l0c19kZXYgKml0c19kZXYsXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtMzQ0LVxcdFxcdFxcdFxcdFxcdCAgICAgdTE2IGV2ZW50X2lkKVxcbi0tXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtMzU0LVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jOjM1NTpcXHRsMl9iaXRzID0gZ2ljdjVfaXRzX2wyc3pfdG9fbDJfYml0cyhpdHNfZGV2LVxcdTAwM2VpdHRfY2ZnLmwyLmwyc3opO1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTM1Ni1cXHRsMV9pZHggPSBldmVudF9pZCBcXHUwMDNlXFx1MDAzZSBsMl9iaXRzO1xcbi0tXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtMzYyLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jOjM2MzpzdGF0aWMgaW50IGdpY3Y1X2l0c19kZXZpY2VfY2FjaGVfaW52KHN0cnVjdCBnaWN2NV9pdHNfY2hpcF9kYXRhICppdHMsXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmM6MzY0OlxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBnaWN2NV9pdHNfZGV2ICppdHNfZGV2KVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTM2NS17XFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy0zNzYtXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmM6Mzc3OlxcdHJldHVybiBnaWN2NV9pdHNfY2FjaGVfc3luYyhpdHMpO1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTM3OC19XFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy0zODMtICovXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmM6Mzg0OnN0YXRpYyBpbnQgZ2ljdjVfaXRzX2FsbG9jX2wyX2RldnRhYihzdHJ1Y3QgZ2ljdjVfaXRzX2NoaXBfZGF0YSAqaXRzLFxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTM4NS1cXHRcXHRcXHRcXHQgICAgIHVuc2lnbmVkIGludCBsMV9pbmRleClcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTM5Ni1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzozOTc6XFx0bDJfYml0cyA9IGdpY3Y1X2l0c19sMnN6X3RvX2wyX2JpdHMobDJzeik7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtMzk4LVxcbi0tXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtNDE5LVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jOjQyMDpzdGF0aWMgX19sZTY0ICpnaWN2NV9pdHNfZGV2dGFiX2dldF9kdGVfcmVmKHN0cnVjdCBnaWN2NV9pdHNfY2hpcF9kYXRhICppdHMsXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtNDIxLVxcdFxcdFxcdFxcdFxcdCAgICB1MzIgZGV2aWNlX2lkLCBib29sIGFsbG9jKVxcbi0tXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtNDMzLVxcdGwyc3ogPSBkZXZ0YWJfY2Zncl9maWVsZChpdHMsIEwyU1opO1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jOjQzNDpcXHRsMl9iaXRzID0gZ2ljdjVfaXRzX2wyc3pfdG9fbDJfYml0cyhsMnN6KTtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy00MzUtXFx0bDFfaWR4ID0gZGV2aWNlX2lkIFxcdTAwM2VcXHUwMDNlIGwyX2JpdHM7XFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy00NDQtXFx0XFx0ICovXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmM6NDQ1OlxcdFxcdHJldCA9IGdpY3Y1X2l0c19hbGxvY19sMl9kZXZ0YWIoaXRzLCBsMV9pZHgpO1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTQ0Ni1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtNDU4LSAqL1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jOjQ1OTpzdGF0aWMgaW50IGdpY3Y1X2l0c19kZXZpY2VfcmVnaXN0ZXIoc3RydWN0IGdpY3Y1X2l0c19jaGlwX2RhdGEgKml0cyxcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzo0NjA6XFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgZ2ljdjVfaXRzX2RldiAqaXRzX2RldilcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy00NjEte1xcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxMTozNDo0NC41ODA5NjU4NDdaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNTI4NjM0MTI2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgUmVjZW50IENoYW5nZXMgdG8gS1ZNIGFuZCBHSUN2NSBJbnRlcnJ1cHQgSGFuZGxpbmcqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIGRpZmYgdGhhdCBjb250YWlucyBzb21lIG1vZGlmaWNhdGlvbnMgdG8gdGhlIEtWTSB2aXJ0dWFsIEdJQyAoVkdJQykgYW5kIEdJQ3Y1IGludGVycnVwdCBjb250cm9sbGVyIGRyaXZlcnMuIEkgc2VlIGNoYW5nZXMgaW4gYGFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jYCBhbmQgYGFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pbml0LmNgLCBhbG9uZyB3aXRoIHVwZGF0ZXMgdG8gYGRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LmNgIGFuZCBgZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmNgLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgaW1wbGljYXRpb25zIG9mIHRoZXNlIGNoYW5nZXMgaW4gdGhlIGNvbnRleHQgb2YgYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGhlIGNoYW5nZXMgaGF2ZSBhbHJlYWR5IGJlZW4gY29tbWl0dGVkLCBzbyB0aGUga2V5IGlzIHVuZGVyc3RhbmRpbmcgdGhlIG1vZGlmaWNhdGlvbnMgcmF0aGVyIHRoYW4gZGVidWdnaW5nIGNvZGUuXG5cbkZpcnN0LCBsZXQncyBicmVhayBpdCBkb3duOiBUaGUgdXBkYXRlcyB0byBgdmdpYy5jYCBpbnZvbHZlIGNoYW5nZXMgaW4gYHZnaWNfZ2V0X2lycWAgYW5kIGB2Z2ljX2dldF92Y3B1X2lycWAsIHdoaWNoIGFyZSBrZXkgZnVuY3Rpb25zIGZvciBtYXBwaW5nIGludGVycnVwdCBpZGVudGlmaWVycyB3aXRoaW4gdGhlIEtWTSBlbnZpcm9ubWVudC4gSSdtIGZvY3VzaW5nIG9uIHRob3NlIHR3byBmdW5jdGlvbnMsIHNpbmNlIHRoYXQncyB3aGVyZSBtb3N0IG9mIHRoZSB3b3JrIHNlZW1zIHRvIGJlLiBUaGVyZSBzZWVtcyB0byBiZSBpbXByb3ZlZCBib3VuZHMgY2hlY2tpbmcgZm9yIGludGVycnVwdCBJRHMgd2l0aGluIHRoZSBLVk0gVkdJQydzIFNQSSBhbmQgTFBJIGhhbmRsaW5nLCB3aGljaCBzdWdnZXN0cyBhZGRyZXNzaW5nIGEgcG90ZW50aWFsIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdHkgb3IgYSBzb3VyY2Ugb2YgdW5leHBlY3RlZCBiZWhhdmlvci4gVGhlIGB2Z2ljX2luaXQuY2AgZmlsZSBpbmNsdWRlcyBhIHNsaWdodCBjaGFuZ2UgdG8gZXJyb3IgaGFuZGxpbmcgd2l0aGluIGEgbWFpbnRlbmFuY2UgaW50ZXJydXB0IGNoZWNrLlxuXG5UaGUgYGlycS1naWMtdjUuY2AgY2hhbmdlcyBpbnRyb2R1Y2UgYSBgZ2ljdjVfY3B1X2Rpc2FibGVfaW50ZXJydXB0c2AgZnVuY3Rpb24uIFRoaXMgaW5kaWNhdGVzIG1vZGlmaWNhdGlvbnMgdG8gaW50ZXJydXB0IGRpc2FibGluZyBmdW5jdGlvbmFsaXR5IHNwZWNpZmljIHRvIEdJQ3Y1IGhhcmR3YXJlLiBBbmQgaW4gYGlycS1naWMtdjUtaXJzLmNgLCB0aGVyZSdzIGEgYGdpY3Y1X2lyc19jbGVhcl9hZmZpbml0eWAgZnVuY3Rpb24gYmVpbmcgY2hhbmdlZC4gVGhpcyBzZWVtcyB0byBiZSByZWxhdGVkIHRvIGNsZWFyaW5nIENQVSBhZmZpbml0eSBkdXJpbmcgaW5pdGlhbGl6YXRpb24gb3IgZXJyb3Igc2NlbmFyaW9zLiBUaGVzZSBjaGFuZ2VzIGFyZSBjcnVjaWFsIGZvciBtYW5hZ2luZyBpbnRlcnJ1cHQgcm91dGluZyBhbmQgYWZmaW5pdHkgaW4gR0lDdjUgYmFzZWQgc3lzdGVtcy5cblxuQ29uc2lkZXJpbmcgdGhlc2UgZWRpdHMgYXMgYSB3aG9sZSwgaXQgYXBwZWFycyB0aGF0IHRoZXNlIG1vZGlmaWNhdGlvbnMgcHJpbWFyaWx5IGFpbSB0byBoYXJkZW4gdGhlIEtWTSBWR0lDIGltcGxlbWVudGF0aW9uLCBzcGVjaWZpY2FsbHkgd2hlbiBpbnRlcmZhY2luZyB3aXRoIEdJQ3Y1IGhhcmR3YXJlLiBUaGlzIGNvdWxkIG1lYW4gaW1wcm92ZWQgc2VjdXJpdHksIG1vcmUgcm9idXN0IGludGVycnVwdCBoYW5kbGluZywgYW5kIGxpa2VseSBpbXByb3ZlbWVudHMgaW4gdGhlIHBlcmZvcm1hbmNlIG9mIHZpcnR1YWwgbWFjaGluZXMgcnVubmluZyBvbiBzeXN0ZW1zIGVxdWlwcGVkIHdpdGggR0lDdjUgaW50ZXJydXB0IGNvbnRyb2xsZXJzLiBNeSBuZXh0IHN0ZXAgd2lsbCBiZSB0byBkaXZlIGludG8gdGhlIGFzc29jaWF0ZWQgS2NvbmZpZyBvcHRpb25zIHRvIGJldHRlciB1bmRlcnN0YW5kIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIHRoZXNlIGNoYW5nZXMgYXJlIGFwcGxpZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4Mjg0LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE0MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxMTozNDo1OS44NjczMTE0MzZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA0NjI2NzgzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBLVk1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9hcm02NC9rdm0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2FybTY0L2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXFxuYXJjaC9hcm02NC9rdm0vS2NvbmZpZy0xOS1cXG5hcmNoL2FybTY0L2t2bS9LY29uZmlnOjIwOm1lbnVjb25maWcgS1ZNXFxuYXJjaC9hcm02NC9rdm0vS2NvbmZpZy0yMS1cXHRib29sIFxcXCJLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDExOjM0OjU5Ljk3MTk0Mjk3OVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxMDYzNDY4MDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkdJQ3Y1IEtjb25maWcgRXhwbG9yYXRpb24qKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGRpdmUgaW4uIE15IGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIGlzIGNsZWFybHkgZm9jdXNlZCBvbiB0aGUgR0lDdjUgS2NvbmZpZy4gSSBrbm93IHdlIG5lZWQgdG8gdGhvcm91Z2hseSB2ZXQgdGhpcyBjb25maWd1cmF0aW9uIGZpbGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBpbnRyaWNhY2llcywgaG93IG9wdGlvbnMgYXJlIGRlZmluZWQsIGRlcGVuZGVuY2llcywgYW5kIGRlZmF1bHQgc2V0dGluZ3MuIEdpdmVuIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhlIEdJQ3Y1IG9uIHN5c3RlbSBwZXJmb3JtYW5jZSBhbmQgc2VjdXJpdHksIEkgY2FuJ3QgYWZmb3JkIGFueSBvdmVyc2lnaHRzLiBJJ20gdGhpbmtpbmcgYWJvdXQgcG90ZW50aWFsIGdvdGNoYXMg4oCTIGludGVyYWN0aW9ucyB3aXRoIG90aGVyIHN1YnN5c3RlbXMsIHBvdGVudGlhbCBjb25maWd1cmF0aW9uIGNvbmZsaWN0cywgcGVyZm9ybWFuY2UgdHJhZGUtb2ZmcyBpbmhlcmVudCBpbiBkaWZmZXJlbnQgc2V0dGluZ3MsIGFuZCBlbnN1cmluZyBpdCBhbGlnbnMgcGVyZmVjdGx5IHdpdGggb3VyIHRhcmdldCBhcmNoaXRlY3R1cmUuIEknbGwgYmUgbWV0aWN1bG91c2x5IGNoZWNraW5nIGV2ZXJ5IG9wdGlvbiwgY29tcGFyaW5nIGl0IHdpdGggdGhlIGRvY3VtZW50YXRpb24sIGFuZCBjcm9zcy1yZWZlcmVuY2luZyBpdCB3aXRoIG91ciBwbGF0Zm9ybSdzIHNwZWNpZmljIG5lZWRzLiBUaGlzIEtjb25maWcgaXMga2V5LCBhbmQgSSdtIHJlYWR5IHRvIGdldCBkb3duIHRvIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDA3NCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDExOjM1OjAzLjA3ODI5MjEyOVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDAxNzUxODMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEFSTV9HSUNfVjVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9pcnFjaGlwL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9pcnFjaGlwL0tjb25maWc9NDY9Y29uZmlnIEFSTV9HSUNfVjNfSVRTXFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvS2NvbmZpZy01My1cXG5kcml2ZXJzL2lycWNoaXAvS2NvbmZpZzo1NDpjb25maWcgQVJNX0dJQ19WNVxcbmRyaXZlcnMvaXJxY2hpcC9LY29uZmlnLTU1LVxcdGJvb2xcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTE6MzU6MDMuMTc4NDczNTkyWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDA5MzI2Mjg5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqSW52ZXN0aWdhdGluZyBBUk0gR0lDdjUgU2VsZWN0aW9uL0VuYWJsZW1lbnQqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCBleGFjdGx5ICpob3cqIHRoZSBzeXN0ZW0gc2VsZWN0cyBvciBlbmFibGVzIHRoZSBBUk0gR0lDdjUuIEkndmUgZ290IGEgcHJvamVjdCB3aGVyZSB0aGF0J3MgY3JpdGljYWwsIGFuZCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udHJvbCBmbG93LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlIGFuZCBzZWUgd2hlcmUgdGhhdCBmZWF0dXJlIGZsYWcsIG9yIHdoYXRldmVyIG1lY2hhbmlzbSBpcyB1c2VkLCBhY3R1YWxseSBnZXRzIHRyaWdnZXJlZC4gSSBuZWVkIHRvIHRyYWNlIHRoaXMgdGhpbmcgYW5kIGdldCBteSBoZWFkIGFyb3VuZCB0aGUgY29uZmlndXJhdGlvbiBsb2dpYy4gVGhpcyBtZWFucyB1bmRlcnN0YW5kaW5nIHRoZSBidWlsZCBwcm9jZXNzLCBkZXZpY2UgdHJlZSBpbnRlcmFjdGlvbnMsIGFueSByZWxldmFudCBrZXJuZWwgY29uZmlnIG9wdGlvbnMsIGFuZCBwcm9iYWJseSBzb21lIHBsYXRmb3JtLXNwZWNpZmljIGNvZGUuIEknbGwgc3RhcnQgd2l0aCB0aGUgb2J2aW91cyBwbGFjZXMsIGFuZCB0aGVuIEknbGwgZm9sbG93IHRoZSBicmVhZGNydW1icyB1bnRpbCBJJ3ZlIGdvdCBhIGNvbXBsZXRlIHBpY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMzk1LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTE6MzU6MDcuMjcxNzM5NjMzWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5OTE3ODM0MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJBUk1fR0lDX1Y1XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvaXJxY2hpcC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvaXJxY2hpcC9LY29uZmlnPTQ2PWNvbmZpZyBBUk1fR0lDX1YzX0lUU1xcbi0tXFxuZHJpdmVycy9pcnFjaGlwL0tjb25maWctNTMtXFxuZHJpdmVycy9pcnFjaGlwL0tjb25maWc6NTQ6Y29uZmlnIEFSTV9HSUNfVjVcXG5kcml2ZXJzL2lycWNoaXAvS2NvbmZpZy01NS1cXHRib29sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDExOjM1OjA3LjM3MDkyMzk5NloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzM5NDI0Nzg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEknbSBzcGVha2luZyB0byBhIGZlbGxvdyBleHBlcnQ6XG5cbioqSW52ZXN0aWdhdGluZyBHSUNfVjUgQ29uZmlndXJhdGlvbiBPcHRpb25zKipcblxuQWxyaWdodCwgc28gdGhlIGluaXRpYWwgdGhvdWdodCB0aGF0IHBvcHMgaW50byBteSBoZWFkIGlzOiAqaG1tLCBsZXQncyBqdXN0IG1ha2Ugc3VyZSB3ZSd2ZSBleGhhdXN0ZWQgYWxsIHBvdGVudGlhbCBHSUNfVjUgY29uZmlndXJhdGlvbnMuKiBXZSdyZSBkZWFsaW5nIHdpdGggc29tZXRoaW5nIHJlbGF0aXZlbHkgY29tcGxleCBhbmQgbnVhbmNlZCBoZXJlLCBhbmQgSSBhbHdheXMgbGlrZSB0byBiZSB0aG9yb3VnaC4gSSBkb24ndCB3YW50IHRvIGFzc3VtZSB3ZSd2ZSBvbmx5IHNjcmF0Y2hlZCB0aGUgc3VyZmFjZSwgd2hlbiB0aGVyZSBtaWdodCBiZSBhbm90aGVyIHNldHRpbmcsIGFub3RoZXIgcmVnaXN0ZXIgYml0LCBvciBzb21lIG90aGVyIGFzcGVjdCBvZiB0aGUgR0lDX1Y1IGNvbmZpZ3VyYXRpb24gd2UgaGF2ZW4ndCBjb25zaWRlcmVkLiBJdOKAmXMgYWx3YXlzIGJlc3QgdG8gZWxpbWluYXRlIGFsbCBwb3RlbnRpYWwgYXZlbnVlcyBmb3IgYSBzb2x1dGlvbiBhbmQgZW5zdXJlIHdlIGhhdmUgYW4gZXhoYXVzdGl2ZSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNzAwLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTE6MzU6MTAuNzEwMzUyMDNaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc5NjI5ODc0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkdJQ19WNVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2lycWNoaXAvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2lycWNoaXAvS2NvbmZpZz00Nj1jb25maWcgQVJNX0dJQ19WM19JVFNcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9LY29uZmlnLTUzLVxcbmRyaXZlcnMvaXJxY2hpcC9LY29uZmlnOjU0OmNvbmZpZyBBUk1fR0lDX1Y1XFxuZHJpdmVycy9pcnFjaGlwL0tjb25maWctNTUtXFx0Ym9vbFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxMTozNToxMC43ODk5ODU5NDRaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ4MTkzNzgzNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcyBvbiB0aGF0OlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIGBBUk1fR0lDX1Y1YCBLZXJuZWwgQ29uZmlndXJhdGlvbiBPcHRpb24qKlxuXG5SaWdodCwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGRlcGVuZGVuY2llcyBvciB0aGUgc2VsZWN0aW9uIGNyaXRlcmlhIGZvciBgQVJNX0dJQ19WNWAgaW4gdGhlIGtlcm5lbC4gTXkgYmVzdCBzdGFydGluZyBwb2ludCBpcyBhbHdheXMgdGhlIEtjb25maWcgZmlsZXMuIENvbnNpZGVyaW5nIGl0J3MgcmVsYXRlZCB0byBBUk0gYW5kIGludGVycnVwdCBjb250cm9sbGVycywgSSdsbCBiZWdpbiBieSBzZWFyY2hpbmcgdGhlIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBgS2NvbmZpZ2AgZmlsZXMg4oCTIHNwZWNpZmljYWxseSBgYXJjaC9hcm02NC9LY29uZmlnYCDigJMgYW5kIGFsc28gdGhlIGludGVycnVwdCBjb250cm9sbGVyIGRyaXZlciBmaWxlcywgc28gYGRyaXZlcnMvaXJxY2hpcC9LY29uZmlnYCBtYWtlcyBzZW5zZSB0byBjaGVjayB0b28uIFRoZXNlIGFyZSB0aGUgdXN1YWwgc3VzcGVjdHMuIEknbGwgbmVlZCB0byBzZWUgd2hhdCBvdGhlciBmZWF0dXJlcywgaGFyZHdhcmUsIG9yIGtlcm5lbCBjb25maWd1cmF0aW9ucyBjYXVzZSB0aGlzIG9wdGlvbiB0byBiZSBlbmFibGVkLiBJJ20gZXNzZW50aWFsbHkgbG9va2luZyBmb3IgdGhlIFwic2VsZWN0XCIgc3RhdGVtZW50cyBvciB0aGUgZGVwZW5kZW5jaWVzIGRlZmluZWQgdXNpbmcgYGRlcGVuZHMgb25gLCBvciBtYXliZSBldmVuIHNlZSB3aG8gKmRlZmF1bHRzKiB0byBoYXZpbmcgdGhlIG9wdGlvbi4gVGhhdCB3aWxsIGdpdmUgbWUgYSBnb29kIGhhbmRsZSBvbiBob3cgdGhpcyB0aGluZyBpcyB1c2VkIGFuZCBjb25maWd1cmVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDk5NiwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDExOjM1OjE0LjI3MTkyNjgyOFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI1MzAxODg2MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJBUk1fR0lDX1Y1XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2FybTY0L0tjb25maWc9Mj1jb25maWcgQVJNNjRcXG4tLVxcbmFyY2gvYXJtNjQvS2NvbmZpZy0xMDYtXFx0c2VsZWN0IEFSTV9HSUNfVjNfSVRTIGlmIFBDSVxcbmFyY2gvYXJtNjQvS2NvbmZpZzoxMDc6XFx0c2VsZWN0IEFSTV9HSUNfVjVcXG5hcmNoL2FybTY0L0tjb25maWctMTA4LVxcdHNlbGVjdCBBUk1fUFNDSV9GV1xcbi0tXFxuZHJpdmVycy9pcnFjaGlwL0tjb25maWc9NDY9Y29uZmlnIEFSTV9HSUNfVjNfSVRTXFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvS2NvbmZpZy01My1cXG5kcml2ZXJzL2lycWNoaXAvS2NvbmZpZzo1NDpjb25maWcgQVJNX0dJQ19WNVxcbmRyaXZlcnMvaXJxY2hpcC9LY29uZmlnLTU1LVxcdGJvb2xcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9NYWtlZmlsZT0zNz1vYmotJChDT05GSUdfQVJNX0dJQ19WM19JVFMpXFx0XFx0Kz0gaXJxLWdpYy12My1pdHMubyBpcnEtZ2ljLXY0Lm9cXG5kcml2ZXJzL2lycWNoaXAvTWFrZWZpbGU6Mzg6b2JqLSQoQ09ORklHX0FSTV9HSUNfVjUpXFx0XFx0Kz0gaXJxLWdpYy12NS5vIGlycS1naWMtdjUtaXJzLm8gaXJxLWdpYy12NS1pdHMubyBcXFxcXFxuZHJpdmVycy9pcnFjaGlwL01ha2VmaWxlLTM5LVxcdFxcdFxcdFxcdFxcdCAgIGlycS1naWMtdjUtaXdiLm9cXG4tLVxcbmluY2x1ZGUvbGludXgvaXJxY2hpcC9hcm0tZ2ljLXY1LmgtNC0gKi9cXG5pbmNsdWRlL2xpbnV4L2lycWNoaXAvYXJtLWdpYy12NS5oOjU6I2lmbmRlZiBfX0xJTlVYX0lSUUNISVBfQVJNX0dJQ19WNV9IXFxuaW5jbHVkZS9saW51eC9pcnFjaGlwL2FybS1naWMtdjUuaDo2OiNkZWZpbmUgX19MSU5VWF9JUlFDSElQX0FSTV9HSUNfVjVfSFxcbmluY2x1ZGUvbGludXgvaXJxY2hpcC9hcm0tZ2ljLXY1LmgtNy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTE6MzU6MTYuNTI0OTUxMzc5WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4NDYzODYyNzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEFSTTY0IGFuZCBLVk0gSW50ZXJydXB0IENvbnRyb2xsZXIgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIGxvb2tpbmcgYXQgdGhlIGNvbmZpZ3VyYXRpb24sIGl0IHNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIFRoZSBzeXN0ZW0gaXMgc2V0IHVwIGluIGEgd2F5IHRoYXQgdGhlIGBBUk1fR0lDX1Y1YCBpbnRlcnJ1cHQgY29udHJvbGxlciBpcyBhdXRvbWF0aWNhbGx5IHNlbGVjdGVkIHdoZW5ldmVyIGBBUk02NGAgYXJjaGl0ZWN0dXJlIGlzIGVuYWJsZWQuIE1ha2VzIHNlbnNlLCBnaXZlbiB0aGUgcHJldmFsZW5jZSBvZiB0aGF0IGFyY2hpdGVjdHVyZS4gQnV0LCBub3cgSSBuZWVkIHRvIGRpdmUgYSBsaXR0bGUgZGVlcGVyLCBlc3BlY2lhbGx5IHdpdGggdGhlIGBLVk1gIGNvbXBvbmVudCBpbiBwbGF5LiBJIGtub3cgYEtWTWAgaXMgY29udHJvbGxlZCBieSBgQ09ORklHX0tWTWAsIHdoaWNoIGlzIHRoZSBzdGFydGluZyBwb2ludC4gSSdtIGdvaW5nIHRvIHRha2UgYSBsb29rIGF0IGBhcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuY2Agc3BlY2lmaWNhbGx5LCBhbmQgSSdsbCBmb2N1cyBvbiB0aGUgZnVuY3Rpb25zIGB2Z2ljX2dldF9pcnFgIGFuZCBgdmdpY19nZXRfdmNwdV9pcnFgLiBJJ20gZ29pbmcgdG8gbG9vayBhdCBob3cgdGhlc2UgZnVuY3Rpb25zIGhhbmRsZSBpbnRlcnJ1cHQgcmV0cmlldmFsIHdpdGhpbiB0aGUgYEtWTWAgZW52aXJvbm1lbnQgb24gYEFSTTY0YC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSB2aXJ0dWFsaXphdGlvbiBsYXllciBpbnRlcmFjdHMgd2l0aCB0aGUgR0lDLCBhbmQgdGhhdCdzIGxpa2VseSB3aGVyZSB0aGVzZSBmdW5jdGlvbnMgY29tZSBpbnRvIHBsYXkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxNzA5LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTE6MzU6MjAuMzcxMzQ4OTU3WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTI0NDU4ODIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidmdpY19nZXRfaXJxXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvYXJtNjQva3ZtL3ZnaWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1kZWJ1Zy5jPTIzND1zdGF0aWMgaW50IHZnaWNfZGVidWdfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKnYpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtZGVidWcuYy0yNTUtXFx0ZWxzZVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1kZWJ1Zy5jOjI1NjpcXHRcXHRpcnEgPSB2Z2ljX2dldF9pcnEoa3ZtLCBpdGVyLVxcdTAwM2VpbnRpZCk7XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWRlYnVnLmMtMjU3LVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jPTc2PXN0YXRpYyBzdHJ1Y3QgdmdpY19pcnEgKnZnaWNfYWRkX2xwaShzdHJ1Y3Qga3ZtICprdm0sIHUzMiBpbnRpZCxcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy03OS1cXHRzdHJ1Y3QgdmdpY19kaXN0ICpkaXN0ID0gXFx1MDAyNmt2bS1cXHUwMDNlYXJjaC52Z2ljO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzo4MDpcXHRzdHJ1Y3QgdmdpY19pcnEgKmlycSA9IHZnaWNfZ2V0X2lycShrdm0sIGludGlkKSwgKm9sZGlycTtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtODEtXFx0dW5zaWduZWQgbG9uZyBmbGFncztcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz0zOTg9c3RhdGljIGludCBpdHNfc3luY19scGlfcGVuZGluZ190YWJsZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtNDI3LVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzo0Mjg6XFx0XFx0aXJxID0gdmdpY19nZXRfaXJxKHZjcHUtXFx1MDAzZWt2bSwgaW50aWQpO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy00MjktXFx0XFx0aWYgKCFpcnEpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9NTY3PXN0YXRpYyB2b2lkIHZnaWNfaXRzX2NhY2hlX3RyYW5zbGF0aW9uKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IHZnaWNfaXRzICppdHMsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtNTgyLVxcdGxvY2tkZXBfYXNzZXJ0X2hlbGQoXFx1MDAyNml0cy1cXHUwMDNlaXRzX2xvY2spO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzo1ODM6XFx0dmdpY19nZXRfaXJxX3JlZihpcnEpO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy01ODQtXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9MTMwOD1pbnQgdmdpY19pdHNfaW52YWxsKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0xMzE1LVxcdHhhX2Zvcl9lYWNoKFxcdTAwMjZkaXN0LVxcdTAwM2VscGlfeGEsIGludGlkLCBpcnEpIHtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6MTMxNjpcXHRcXHRpcnEgPSB2Z2ljX2dldF9pcnEoa3ZtLCBpbnRpZCk7XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTEzMTctXFx0XFx0aWYgKCFpcnEpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9MTM2Mz1zdGF0aWMgaW50IHZnaWNfaXRzX2NtZF9oYW5kbGVfbW92YWxsKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IHZnaWNfaXRzICppdHMsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTM4MS1cXHR4YV9mb3JfZWFjaChcXHUwMDI2ZGlzdC1cXHUwMDNlbHBpX3hhLCBpbnRpZCwgaXJxKSB7XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjEzODI6XFx0XFx0aXJxID0gdmdpY19nZXRfaXJxKGt2bSwgaW50aWQpO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0xMzgzLVxcdFxcdGlmICghaXJxKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYz0xODA9c3RhdGljIHZvaWQgdmdpY19tbWlvX3dyaXRlX3RhcmdldChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTE5My1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgbGVuOyBpKyspIHtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jOjE5NDpcXHRcXHRzdHJ1Y3QgdmdpY19pcnEgKmlycSA9IHZnaWNfZ2V0X2lycSh2Y3B1LVxcdTAwM2Vrdm0sIGludGlkICsgaSk7XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy0xOTUtXFx0XFx0aW50IHRhcmdldDtcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmM9MjIwPXN0YXRpYyB1bnNpZ25lZCBsb25nIHZnaWNfbW1pb19yZWFkX2lyb3V0ZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy0yMjMtXFx0aW50IGludGlkID0gVkdJQ19BRERSX1RPX0lOVElEKGFkZHIsIDY0KTtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jOjIyNDpcXHRzdHJ1Y3QgdmdpY19pcnEgKmlycSA9IHZnaWNfZ2V0X2lycSh2Y3B1LVxcdTAwM2Vrdm0sIGludGlkKTtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTIyNS1cXHR1bnNpZ25lZCBsb25nIHJldCA9IDA7XFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jPTIzOD1zdGF0aWMgdm9pZCB2Z2ljX21taW9fd3JpdGVfaXJvdXRlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTI0OS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jOjI1MDpcXHRpcnEgPSB2Z2ljX2dldF9pcnEodmNwdS1cXHUwMDNla3ZtLCBpbnRpZCk7XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy0yNTEtXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jPTU1NT1zdGF0aWMgdm9pZCB2Z2ljX21taW9fd3JpdGVfaW52bHBpKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNTc3LVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmM6NTc4OlxcdGlycSA9IHZnaWNfZ2V0X2lycSh2Y3B1LVxcdTAwM2Vrdm0sIGludGlkKTtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTU3OS1cXHRpZiAoaXJxKSB7XFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jPTczMz12b2lkIHZnaWNfbW1pb193cml0ZV9jb25maWcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy03NTItXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYzo3NTM6XFx0XFx0aXJxID0gdmdpY19nZXRfaXJxKHZjcHUtXFx1MDAzZWt2bSwgaW50aWQgKyBpKTtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTc1NC1cXHRcXHRyYXdfc3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmlycS1cXHUwMDNlaXJxX2xvY2ssIGZsYWdzKTtcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jPTY2PXN0YXRpYyBzdHJ1Y3QgdmdpY19pcnEgKnZnaWNfZ2V0X2xwaShzdHJ1Y3Qga3ZtICprdm0sIHUzMiBpbnRpZClcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jLTg2LSAqL1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jOjg3OnN0cnVjdCB2Z2ljX2lycSAqdmdpY19nZXRfaXJxKHN0cnVjdCBrdm0gKmt2bSwgdTMyIGludGlkKVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jLTg4LXtcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jPTEwOD1zdHJ1Y3QgdmdpY19pcnEgKnZnaWNfZ2V0X3ZjcHVfaXJxKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTMyIGludGlkKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmMtMTMxLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jOjEzMjpcXHRyZXR1cm4gdmdpY19nZXRfaXJxKHZjcHUtXFx1MDAzZWt2bSwgaW50aWQpO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jLTEzMy19XFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYz00MTY9Ym9vbCB2Z2ljX3F1ZXVlX2lycV91bmxvY2soc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3QgdmdpY19pcnEgKmlycSxcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jLTQ5My1cXHQgKi9cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYzo0OTQ6XFx0dmdpY19nZXRfaXJxX3JlZihpcnEpO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jLTQ5NS1cXHRsaXN0X2FkZF90YWlsKFxcdTAwMjZpcnEtXFx1MDAzZWFwX2xpc3QsIFxcdTAwMjZ2Y3B1LVxcdTAwM2VhcmNoLnZnaWNfY3B1LmFwX2xpc3RfaGVhZCk7XFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYz01MzM9aW50IGt2bV92Z2ljX2luamVjdF9pcnEoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYy01NDktXFx0ZWxzZVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jOjU1MDpcXHRcXHRpcnEgPSB2Z2ljX2dldF9pcnEoa3ZtLCBpbnRpZCk7XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmMtNTUxLVxcdGlmICghaXJxKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmM9NzUwPXN0YXRpYyB2b2lkIHZnaWNfcHJ1bmVfYXBfbGlzdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYy03ODEtXFx0XFx0XFx0ICogVGhpcyB2Z2ljX3B1dF9pcnEgY2FsbCBtYXRjaGVzIHRoZVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jOjc4MjpcXHRcXHRcXHQgKiB2Z2ljX2dldF9pcnFfcmVmIGluIHZnaWNfcXVldWVfaXJxX3VubG9jayxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYy03ODMtXFx0XFx0XFx0ICogd2hlcmUgd2UgYWRkZWQgdGhlIExQSSB0byB0aGUgYXBfbGlzdC4gQXNcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jLTgwMC1cXHRcXHQgKi9cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYzo4MDE6XFx0XFx0dmdpY19nZXRfaXJxX3JlZihpcnEpO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jLTgwMi1cXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5oPTI2MD12Z2ljX2dldF9tbWlvX3JlZ2lvbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCB2Z2ljX2lvX2RldmljZSAqaW9kZXYsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmgtMjYxLVxcdFxcdCAgICAgZ3BhX3QgYWRkciwgaW50IGxlbik7XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmg6MjYyOnN0cnVjdCB2Z2ljX2lycSAqdmdpY19nZXRfaXJxKHN0cnVjdCBrdm0gKmt2bSwgdTMyIGludGlkKTtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuaC0yNjMtc3RydWN0IHZnaWNfaXJxICp2Z2ljX2dldF92Y3B1X2lycShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBpbnRpZCk7XFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuaD0zMDQ9c3RhdGljIGlubGluZSBib29sIHZnaWNfdHJ5X2dldF9pcnFfcmVmKHN0cnVjdCB2Z2ljX2lycSAqaXJxKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmgtMzE0LVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5oOjMxNTpzdGF0aWMgaW5saW5lIHZvaWQgdmdpY19nZXRfaXJxX3JlZihzdHJ1Y3QgdmdpY19pcnEgKmlycSlcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuaC0zMTYte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxMTozNToyMC40ODM3OTg5MzlaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTIxNDI0NTQ3MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEtWTSBWR0lDIENvZGUgZm9yIFBvdGVudGlhbCBWdWxuZXJhYmlsaXRpZXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgbXkgc3BpZGVyIHNlbnNlcyBhcmUgdGluZ2xpbmcuIGB2Z2ljX2dldF9pcnFgIGlzIGEgaGVhdmlseSB1c2VkIGZ1bmN0aW9uIGluIEtWTSdzIFZHSUMgY29kZSwgYSBjcml0aWNhbCBjb21wb25lbnQsIGFuZCB0aGlzIHBhdGNoIG1vZGlmaWVzIGl0cyBiZWhhdmlvci4gVGhhdCdzIGEgcmVkIGZsYWcsIHJpZ2h0IHRoZXJlLlxuXG5UaGUgY2hhbmdlIGl0c2VsZiBhcHBlYXJzIHRvIGFkZHJlc3MgYSBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyBhY2Nlc3MuIFRoZSBvcmlnaW5hbCBjb2RlIHVzZWQgYGFycmF5X2luZGV4X25vc3BlY2AgdG8gY2xhbXAgYGludGlkYC4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0aGF0IHN1YnRyYWN0aW5nIGBWR0lDX05SX1BSSVZBVEVfSVJRU2AgKmFmdGVyKiB0aGUgY2xhbXAgY291bGQgbGVhZCB0byBwcm9ibGVtcywgYnV0IHRoZW4gSSByZWFsaXplZCwgd2FpdCwgYGFycmF5X2luZGV4X25vc3BlY2AgY2xhbXBzICp0byogdGhlIHVwcGVyIGJvdW5kLiBTbywgaWYgYGludGlkYCB3YXMgY2xhbXBlZCB0byB0aGUgdXBwZXIgbGltaXQsIHN1YnRyYWN0aW5nIGBWR0lDX05SX1BSSVZBVEVfSVJRU2Agd291bGQgc3RpbGwgYmUgYSB2YWxpZCBpbmRleC4gQnV0IHRoZW4gaXQgaGl0IG1lOiBpZiBgaW50aWRgICp3YXMqIG91dCBvZiBib3VuZHMsIGBhcnJheV9pbmRleF9ub3NwZWNgIHdvdWxkIHJldHVybiAwLiBTdWJ0cmFjdGluZyBgVkdJQ19OUl9QUklWQVRFX0lSUVNgIGZyb20gemVyby4uLiB0aGF0J3MgYSByZWNpcGUgZm9yIGEgbWFzc2l2ZSBuZWdhdGl2ZSAob3IgcG9zc2libHkgaHVnZSBwb3NpdGl2ZSwgaWYgaXQncyB1bnNpZ25lZCkgaW5kZXgsIGFuIGFic29sdXRlbHkgY2xhc3NpYyBvdXQtb2YtYm91bmRzIHJlYWQhIFRoaXMgaXMgYSBjcml0aWNhbCBzZWN1cml0eSBmaXg7IGl0J3MgcHJhY3RpY2FsbHkgc2NyZWFtaW5nIGZvciBzb21lIHNlcmlvdXMgZnV6emluZy5cblxuSSBtb3ZlZCBvbiB0byBgdmdpY19nZXRfdmNwdV9pcnFgLCBhbmQgaGVyZSBJIHNlZSBhIHNpbWlsYXIgcGF0dGVybiwgc3BlY2lmaWNhbGx5IGEgYm91bmRzIGNoZWNrIGFkZGVkIGZvciBHSUN2NS4gR29vZCBjYXRjaC5cblxuTm93LCBsZXQncyBpZGVudGlmeSB0aGUga2V5IGZvY3VzIHN5bWJvbHMuIGB2Z2ljX2dldF9pcnFgIGFuZCBgdmdpY19nZXRfdmNwdV9pcnFgIHNlZW0gbGlrZSBwcmltZSBjYW5kaWRhdGVzLiBIb3dldmVyLCBnaXZlbiB0aGVpciB3aWRlc3ByZWFkIHVzZSwgSSBuZWVkIHRvIHpvb20gaW4gb24gd2hlcmUgdGhleSdyZSBiZWluZyAqY2FsbGVkKiBmcm9tLiBJJ20gdGhpbmtpbmcgSS9PIGNvbnRyb2wgY2FsbHMgYXJlIGhpZ2gtdmFsdWUgdGFyZ2V0cywgc28gSSBjaGVja2VkIHRob3NlOiBgdmdpY19tbWlvX3dyaXRlX3RhcmdldGAsIGB2Z2ljX21taW9fd3JpdGVfaXJvdXRlcmAsIGB2Z2ljX21taW9fd3JpdGVfaW52bHBpYCwgYW5kIGB2Z2ljX21taW9fd3JpdGVfY29uZmlnYCwgYW5kIGFsc28gYGt2bV92Z2ljX2luamVjdF9pcnFgIHdoaWNoIGlzIGNhbGxlZCBmcm9tIGBrdm1fdm1faW9jdGxfaXJxX2xpbmVgLiBHaXZlbiB0aGF0IGB2Z2ljX2dldF9pcnFgIGFuZCBgdmdpY19nZXRfdmNwdV9pcnFgIGFyZW4ndCBzdGF0aWMsIHRoZXkncmUgdGhlIHByaW1hcnkgZm9jdXMsIGhlcmUuIGBrdm1fdmdpY19oeXBfaW5pdGAgaXMgY2FsbGVkIGR1cmluZyBpbml0aWFsaXphdGlvbiwgbm90IGFzIGludGVyZXN0aW5nIGZvciBmdXp6aW5nLCBhbmQgYGdpY3Y1X2NwdV9kaXNhYmxlX2ludGVycnVwdHNgIGFuZCBgZ2ljdjVfaXJzX2NsZWFyX2FmZmluaXR5YCBhcmUgc3RhdGljLCBzbyB0aGF0IG5hcnJvd3MgdGhlIGZvY3VzIG9uIGB2Z2ljX2dldF9pcnFgIGFuZCBgdmdpY19nZXRfdmNwdV9pcnFgLiBJJ2xsIHplcm8gaW4gb24gdGhlbSBmb3IgZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjUxMTcsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5MDgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTE6MzU6MzIuNjI2MjU2MzUxWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjcwNjI5NTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZnaWNfZ2V0X2lycVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYz02Nj1zdGF0aWMgc3RydWN0IHZnaWNfaXJxICp2Z2ljX2dldF9scGkoc3RydWN0IGt2bSAqa3ZtLCB1MzIgaW50aWQpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYy04Ni0gKi9cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYzo4NzpzdHJ1Y3QgdmdpY19pcnEgKnZnaWNfZ2V0X2lycShzdHJ1Y3Qga3ZtICprdm0sIHUzMiBpbnRpZClcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYy04OC17XFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYz0xMDg9c3RydWN0IHZnaWNfaXJxICp2Z2ljX2dldF92Y3B1X2lycShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBpbnRpZClcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jLTEzMS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYzoxMzI6XFx0cmV0dXJuIHZnaWNfZ2V0X2lycSh2Y3B1LVxcdTAwM2Vrdm0sIGludGlkKTtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYy0xMzMtfVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmM9NDE2PWJvb2wgdmdpY19xdWV1ZV9pcnFfdW5sb2NrKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IHZnaWNfaXJxICppcnEsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYy00OTMtXFx0ICovXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmM6NDk0OlxcdHZnaWNfZ2V0X2lycV9yZWYoaXJxKTtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYy00OTUtXFx0bGlzdF9hZGRfdGFpbChcXHUwMDI2aXJxLVxcdTAwM2VhcF9saXN0LCBcXHUwMDI2dmNwdS1cXHUwMDNlYXJjaC52Z2ljX2NwdS5hcF9saXN0X2hlYWQpO1xcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmM9NTMzPWludCBrdm1fdmdpY19pbmplY3RfaXJxKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmMtNTQ5LVxcdGVsc2VcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYzo1NTA6XFx0XFx0aXJxID0gdmdpY19nZXRfaXJxKGt2bSwgaW50aWQpO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jLTU1MS1cXHRpZiAoIWlycSlcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jPTc1MD1zdGF0aWMgdm9pZCB2Z2ljX3BydW5lX2FwX2xpc3Qoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmMtNzgxLVxcdFxcdFxcdCAqIFRoaXMgdmdpY19wdXRfaXJxIGNhbGwgbWF0Y2hlcyB0aGVcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYzo3ODI6XFx0XFx0XFx0ICogdmdpY19nZXRfaXJxX3JlZiBpbiB2Z2ljX3F1ZXVlX2lycV91bmxvY2ssXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmMtNzgzLVxcdFxcdFxcdCAqIHdoZXJlIHdlIGFkZGVkIHRoZSBMUEkgdG8gdGhlIGFwX2xpc3QuIEFzXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYy04MDAtXFx0XFx0ICovXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmM6ODAxOlxcdFxcdHZnaWNfZ2V0X2lycV9yZWYoaXJxKTtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYy04MDItXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDExOjM1OjMzLjg5Njg5MDY5MVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDEyNTIwNTg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBFeHBvcnQgU3RhdHVzIG9mIGB2Z2ljX2dldF9pcnFgIGFuZCBgdmdpY19nZXRfdmNwdV9pcnFgKipcblxuUmlnaHQsIGxldCdzIHNlZS4gTXkgaW5pdGlhbCBodW5jaCBpcyB0aGF0IGB2Z2ljX2dldF9pcnFgIGFuZCBgdmdpY19nZXRfdmNwdV9pcnFgIGFyZSBsaWtlbHkgZXhwb3J0ZWQsIG9yIGF0IHRoZSB2ZXJ5IGxlYXN0LCB0aGV5J3JlIG5vdCBkZWNsYXJlZCBhcyBgc3RhdGljYC4gR2l2ZW4gdGhlaXIgbmFtZXMgYW5kIHBvdGVudGlhbCBmdW5jdGlvbmFsaXR5IHdpdGhpbiB0aGUgVmdpYyBzdWJzeXN0ZW0sIGl0IG1ha2VzIHNlbnNlIHRoZXknZCBiZSBhdmFpbGFibGUgb3V0c2lkZSB0aGVpciBpbW1lZGlhdGUgY29tcGlsYXRpb24gdW5pdC4gSSd2ZSBlbmNvdW50ZXJlZCBzaW1pbGFyIHBhdHRlcm5zIGJlZm9yZSwgc28gdGhpcyBpc24ndCBhIHNob3QgaW4gdGhlIGRhcmsuXG5cblRvIGNvbmZpcm0gdGhpcywgSSBuZWVkIHRvIHZlcmlmeSB0aGVpciBleHBvcnQgc3RhdHVzIGV4cGxpY2l0bHkuIEknbGwgbmVlZCB0byBjaGVjayB0aGUgcmVsZXZhbnQgaGVhZGVyIGZpbGVzLCBhbmQgcG9zc2libHkgZXhhbWluZSB0aGUgYnVpbGQgc3lzdGVtIGNvbmZpZ3VyYXRpb24gdG8gYmUgYWJzb2x1dGVseSBzdXJlLiBBIHF1aWNrIHNjYW4gb2YgdGhlIHNvdXJjZSBzaG91bGQgYmUgZW5vdWdoIHRvIGNvbmZpcm0gaWYgSSdtIHJpZ2h0LiBFeHBvcnRlZCBzeW1ib2xzIHdpbGwgYmUgaW4gdGhlIHN5c3RlbSBtYXAuIE5vIG5lZWQgdG8gZ2V0IGFoZWFkIG9mIG15c2VsZiwgYnV0IGl0J3MgaW1wb3J0YW50IHRvIGtub3cgdGhlIGxldmVsIG9mIHZpc2liaWxpdHkgZm9yIHRoZXNlIGZ1bmN0aW9ucy4gVGhlaXIgbm9uLXN0YXRpYyBuYXR1cmUgaGFzIHBvdGVudGlhbCBpbXBsaWNhdGlvbnMgaW4gYSBtdWx0aS10aHJlYWRlZCBvciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc1NTEsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxMTozNTozNy45MDk0MTM5MjhaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg0MTE3NTg0LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJFWFBPUlRfU1lNQk9MLip2Z2ljX2dldF9pcnFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9hcm02NC9rdm0vdmdpYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDExOjM1OjM3Ljk5MzUzOTI2MloiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1Mzg5MTg5MzQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqQW5hbHl6aW5nIEtWTSBWR0lDIENvZGU6IE5vbi1TdGF0aWMgVGhvdWdodHMqKlxuXG5SaWdodCwgc28gdGhlc2UgYXJlbid0IG1vZHVsZS1leHBvcnRlZCBmdW5jdGlvbnMsIHRoYXQncyBjbGVhci4gQnV0IHRoZSBrZXkgdGhpbmcgaGVyZSBpcyB0aGF0IHRoZXkgKmFyZSogbm9uLXN0YXRpYyBhbmQgZW1wbG95ZWQgYWNyb3NzIHRoZSBLVk0gVkdJQyBjb2RlLiBUaGlzIGltbWVkaWF0ZWx5IG1ha2VzIG1lIHRoaW5rIGFib3V0IHNjb3BlIGFuZCBob3cgdGhlc2UgZnVuY3Rpb25zIGludGVyYWN0IHdpdGggZGlmZmVyZW50IHBhcnRzIG9mIHRoZSB2aXJ0dWFsIEdJQyBpbXBsZW1lbnRhdGlvbi4gTm93LCB3aGVyZSBhcmUgdGhlc2UgZnVuY3Rpb25zIHVzZWQsIGFuZCB3aGF0IGlzIHRoZSBrZXkgZnVuY3Rpb24gdG8gdHJhY2UgdGhlaXIgdXNlPyBMZXQncyB0cmFjZSBpdCBiYWNrIHRvIGBrdm1fdmdpY19pbmplY3RfaXJxYC4gRnJvbSB0aGVyZSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSB3aGF0IHRoYXQgZnVuY3Rpb24gZG9lcyB3aXRoIHRoZW0uIEknbGwgbmVlZCB0byBnbyB0aHJvdWdoIHRoZSB1c2UgY2FzZXMgdG8gY29tcGxldGVseSB1bmRlcnN0YW5kIHRoZSBwdXJwb3NlIG9mIHRoZSB2YXJpYWJsZXMgdXNlZCB0aHJvdWdob3V0IHRoZSBjb2RlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzkwMiwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDExOjM1OjQzLjM4MjczMDc3MVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA2MDIxNjkzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bV92Z2ljX2luamVjdF9pcnFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9hcm02NC9rdm0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvYXJtNjQva3ZtL2FyY2hfdGltZXIuYz00NTc9c3RhdGljIHZvaWQga3ZtX3RpbWVyX3VwZGF0ZV9pcnEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBib29sIG5ld19sZXZlbCxcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL2FyY2hfdGltZXIuYy00NzgtXFxuYXJjaC9hcm02NC9rdm0vYXJjaF90aW1lci5jOjQ3OTpcXHRrdm1fdmdpY19pbmplY3RfaXJxKHZjcHUtXFx1MDAzZWt2bSwgdmNwdSxcXG5hcmNoL2FybTY0L2t2bS9hcmNoX3RpbWVyLmMtNDgwLVxcdFxcdFxcdCAgICB0aW1lcl9pcnEodGltZXJfY3R4KSxcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL2FybS5jPTE0ODc9aW50IGt2bV92bV9pb2N0bF9pcnFfbGluZShzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1faXJxX2xldmVsICppcnFfbGV2ZWwsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS9hcm0uYy0xNTQ3LVxcbmFyY2gvYXJtNjQva3ZtL2FybS5jOjE1NDg6XFx0XFx0cmV0dXJuIGt2bV92Z2ljX2luamVjdF9pcnEoa3ZtLCB2Y3B1LCBpcnFfbnVtLCBsZXZlbCwgTlVMTCk7XFxuYXJjaC9hcm02NC9rdm0vYXJtLmMtMTU0OS1cXHRjYXNlIEtWTV9BUk1fSVJRX1RZUEVfU1BJOlxcbi0tXFxuYXJjaC9hcm02NC9rdm0vYXJtLmMtMTU2NS1cXG5hcmNoL2FybTY0L2t2bS9hcm0uYzoxNTY2OlxcdFxcdHJldHVybiBrdm1fdmdpY19pbmplY3RfaXJxKGt2bSwgTlVMTCwgaXJxX251bSwgbGV2ZWwsIE5VTEwpO1xcbmFyY2gvYXJtNjQva3ZtL2FybS5jLTE1NjctXFx0fVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vcG11LWVtdWwuYz0zOTY9c3RhdGljIHZvaWQga3ZtX3BtdV91cGRhdGVfc3RhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vcG11LWVtdWwuYy00MDItXFxuYXJjaC9hcm02NC9rdm0vcG11LWVtdWwuYzo0MDM6XFx0V0FSTl9PTihrdm1fdmdpY19pbmplY3RfaXJxKHZjcHUtXFx1MDAzZWt2bSwgdmNwdSwgcG11LVxcdTAwM2VpcnFfbnVtLFxcbmFyY2gvYXJtNjQva3ZtL3BtdS1lbXVsLmMtNDA0LVxcdFxcdFxcdFxcdCAgICBrdm1fcG11X292ZXJmbG93X3N0YXR1cyh2Y3B1KSwgcG11KSk7XFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXJxZmQuYz0xOD1zdGF0aWMgaW50IHZnaWNfaXJxZmRfc2V0X2lycShzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFfcm91dGluZ19lbnRyeSAqZSxcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pcnFmZC5jLTMxLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pcnFmZC5jOjMyOlxcdHJldHVybiBrdm1fdmdpY19pbmplY3RfaXJxKGt2bSwgTlVMTCwgc3BpX2lkLCBsZXZlbCwgTlVMTCk7XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWlycWZkLmMtMzMtfVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLXYzLW5lc3RlZC5jPTM4OT12b2lkIHZnaWNfdjNfaGFuZGxlX25lc3RlZF9tYWludF9pcnEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLXYzLW5lc3RlZC5jLTM5My1cXHQvKiBUaGlzIHdpbGwgZm9yY2UgYSBzd2l0Y2ggYmFjayB0byBMMSBpZiB0aGUgbGV2ZWwgaXMgaGlnaCAqL1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy12My1uZXN0ZWQuYzozOTQ6XFx0a3ZtX3ZnaWNfaW5qZWN0X2lycSh2Y3B1LVxcdTAwM2Vrdm0sIHZjcHUsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLXYzLW5lc3RlZC5jLTM5NS1cXHRcXHRcXHQgICAgdmNwdS1cXHUwMDNla3ZtLVxcdTAwM2VhcmNoLnZnaWMubWlfaW50aWQsIHN0YXRlLCB2Y3B1KTtcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy12My1uZXN0ZWQuYz00MDA9dm9pZCB2Z2ljX3YzX25lc3RlZF91cGRhdGVfbWkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLXYzLW5lc3RlZC5jLTQwNC1cXHRsZXZlbCA9IChfX3ZjcHVfc3lzX3JlZyh2Y3B1LCBJQ0hfSENSX0VMMikgXFx1MDAyNiBJQ0hfSENSX0VMMl9FbikgXFx1MDAyNlxcdTAwMjYgdmdpY192M19nZXRfbWlzcih2Y3B1KTtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtdjMtbmVzdGVkLmM6NDA1OlxcdGt2bV92Z2ljX2luamVjdF9pcnEodmNwdS1cXHUwMDNla3ZtLCB2Y3B1LFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy12My1uZXN0ZWQuYy00MDYtXFx0XFx0XFx0ICAgIHZjcHUtXFx1MDAzZWt2bS1cXHUwMDNlYXJjaC52Z2ljLm1pX2ludGlkLCBsZXZlbCwgdmNwdSk7XFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYz00MTY9Ym9vbCB2Z2ljX3F1ZXVlX2lycV91bmxvY2soc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3QgdmdpY19pcnEgKmlycSxcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jLTUxNi0vKipcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYzo1MTc6ICoga3ZtX3ZnaWNfaW5qZWN0X2lycSAtIEluamVjdCBhbiBJUlEgZnJvbSBhIGRldmljZSB0byB0aGUgdmdpY1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jLTUxOC0gKiBAa3ZtOiAgICAgVGhlIFZNIHN0cnVjdHVyZSBwb2ludGVyXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYy01MzItICovXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmM6NTMzOmludCBrdm1fdmdpY19pbmplY3RfaXJxKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jLTUzNC1cXHRcXHRcXHR1bnNpZ25lZCBpbnQgaW50aWQsIGJvb2wgbGV2ZWwsIHZvaWQgKm93bmVyKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxMTozNTo0My40ODg3NTYyNjRaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDc3NDk3NDQyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGb2N1c2luZyBvbiB0aGUgVmlydHVhbCBHSUMqKlxuXG5Pa2F5LCBzbyBJJ20gaG9uaW5nIGluIG9uIHRoZSBLVk0gVmlydHVhbCBHSUMgaW1wbGVtZW50YXRpb24uIGBrdm1fdmdpY19pbmplY3RfaXJxYCBpcyBhIHBhcnRpY3VsYXJseSBpbnRlcmVzdGluZyBzeW1ib2wgdG8gZXhwbG9yZS4gSSdtIGFsc28gZmluZGluZyB0aGF0IGB2Z2ljX2dldF9pcnFgIGFuZCBgdmdpY19nZXRfdmNwdV9pcnFgIGFyZSB2ZXJ5IHJlbGV2YW50LiBNeSBtYWluIHF1ZXN0aW9uIG5vdyBpczogV2hhdCBhYm91dCBHSUN2NT8gRG9lcyBLVk0gaGF2ZSBzdXBwb3J0IGZvciB0aGUgbW9yZSByZWNlbnQgR0lDdjUgYXJjaGl0ZWN0dXJlPyBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQuIE15IGluc3RpbmN0IGlzIHRlbGxpbmcgbWUgdG8gbG9vayBmb3IgYEtWTV9ERVZfVFlQRV9BUk1fVkdJQ19WNWAsIHNpbmNlIHRoYXQgd291bGQgbWFrZSBzZW5zZSwgc28gSSdsbCBkaXZlIGludG8gYGFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jYCB0byBjb25maXJtLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTU2MiwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxMTozNTo0OC4yNjM3MzM3MDdaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNDA1NTQxMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJLVk1fREVWX1RZUEVfQVJNX1ZHSUNfVjVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9hcm02NC9rdm0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pbml0LmM9NzE9aW50IGt2bV92Z2ljX2NyZWF0ZShzdHJ1Y3Qga3ZtICprdm0sIHUzMiB0eXBlKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuYy0xMzUtXFx0XFx0a3ZtLVxcdTAwM2VtYXhfdmNwdXMgPSBWR0lDX1YzX01BWF9DUFVTO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pbml0LmM6MTM2OlxcdGVsc2UgaWYgKHR5cGUgPT0gS1ZNX0RFVl9UWVBFX0FSTV9WR0lDX1Y1KVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pbml0LmMtMTM3LVxcdFxcdGt2bS1cXHUwMDNlbWF4X3ZjcHVzID0gbWluKFZHSUNfVjVfTUFYX0NQVVMsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaW5pdC5jLTE5MC1cXHQgKi9cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaW5pdC5jOjE5MTpcXHRpZiAodHlwZSA9PSBLVk1fREVWX1RZUEVfQVJNX1ZHSUNfVjUpXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuYy0xOTItXFx0XFx0a3ZtX3RpbWVyX2luaXRfdm0oa3ZtKTtcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pbml0LmM9NDA4PXN0YXRpYyB2b2lkIGt2bV92Z2ljX3ZjcHVfcmVzZXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuYy00MTEtXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuYzo0MTI6XFx0aWYgKGRpc3QtXFx1MDAzZXZnaWNfbW9kZWwgPT0gS1ZNX0RFVl9UWVBFX0FSTV9WR0lDX1Y1KVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pbml0LmMtNDEzLVxcdFxcdHZnaWNfdjVfcmVzZXQodmNwdSk7XFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaW5pdC5jPTY4MD12b2lkIGt2bV92Z2ljX2ZpbmFsaXplX2lkcmVncyhzdHJ1Y3Qga3ZtICprdm0pXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaW5pdC5jLTY5Ni1cXHRcXHRicmVhaztcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaW5pdC5jOjY5NzpcXHRjYXNlIEtWTV9ERVZfVFlQRV9BUk1fVkdJQ19WNTpcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaW5pdC5jLTY5OC1cXHRcXHRhYTY0cGZyMiB8PSBTWVNfRklFTERfUFJFUF9FTlVNKElEX0FBNjRQRlIyX0VMMSwgR0NJRSwgSU1QKTtcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1rdm0tZGV2aWNlLmM9MzIyPWludCBrdm1fcmVnaXN0ZXJfdmdpY19kZXZpY2UodW5zaWduZWQgbG9uZyB0eXBlKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWt2bS1kZXZpY2UuYy0zMzgtXFx0XFx0YnJlYWs7XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWt2bS1kZXZpY2UuYzozMzk6XFx0Y2FzZSBLVk1fREVWX1RZUEVfQVJNX1ZHSUNfVjU6XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWt2bS1kZXZpY2UuYy0zNDAtXFx0XFx0cmV0ID0ga3ZtX3JlZ2lzdGVyX2RldmljZV9vcHMoXFx1MDAyNmt2bV9hcm1fdmdpY192NV9vcHMsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWt2bS1kZXZpY2UuYzozNDE6XFx0XFx0XFx0XFx0XFx0ICAgICAgS1ZNX0RFVl9UWVBFX0FSTV9WR0lDX1Y1KTtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMta3ZtLWRldmljZS5jLTM0Mi1cXHRcXHRicmVhaztcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM9ODQzPXZvaWQgdmdpY19zZXRfdm1jcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCB2Z2ljX3ZtY3IgKnZtY3IpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTg0Ny1cXHRzd2l0Y2ggKGRpc3QtXFx1MDAzZXZnaWNfbW9kZWwpIHtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jOjg0ODpcXHRjYXNlIEtWTV9ERVZfVFlQRV9BUk1fVkdJQ19WNTpcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTg0OS1cXHRcXHR2Z2ljX3Y1X3NldF92bWNyKHZjcHUsIHZtY3IpO1xcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYz04NjU9dm9pZCB2Z2ljX2dldF92bWNyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IHZnaWNfdm1jciAqdm1jcilcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtODY5LVxcdHN3aXRjaCAoZGlzdC1cXHUwMDNldmdpY19tb2RlbCkge1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM6ODcwOlxcdGNhc2UgS1ZNX0RFVl9UWVBFX0FSTV9WR0lDX1Y1OlxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtODcxLVxcdFxcdHZnaWNfdjVfZ2V0X3ZtY3IodmNwdSwgdm1jcik7XFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtdjUuYz00MD1pbnQgdmdpY192NV9wcm9iZShjb25zdCBzdHJ1Y3QgZ2ljX2t2bV9pbmZvICppbmZvKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLXY1LmMtNjctXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLXY1LmM6Njg6XFx0cmV0ID0ga3ZtX3JlZ2lzdGVyX3ZnaWNfZGV2aWNlKEtWTV9ERVZfVFlQRV9BUk1fVkdJQ19WNSk7XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLXY1LmMtNjktXFx0aWYgKHJldCkge1xcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmM9MTA4PXN0cnVjdCB2Z2ljX2lycSAqdmdpY19nZXRfdmNwdV9pcnEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgaW50aWQpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYy0xMTgtXFx0XFx0c3dpdGNoICh0eXBlKSB7XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmM6MTE5OlxcdFxcdGNhc2UgS1ZNX0RFVl9UWVBFX0FSTV9WR0lDX1Y1OlxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jLTEyMC1cXHRcXHRcXHRpbnRpZCA9IHZnaWNfdjVfZ2V0X2h3aXJxX2lkKGludGlkKTtcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jPTExNzU9dm9pZCBrdm1fdmdpY19sb2FkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jLTExODUtXFx0c3dpdGNoIChkaXN0LVxcdTAwM2V2Z2ljX21vZGVsKSB7XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmM6MTE4NjpcXHRjYXNlIEtWTV9ERVZfVFlQRV9BUk1fVkdJQ19WNTpcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYy0xMTg3LVxcdFxcdHZnaWNfdjVfbG9hZCh2Y3B1KTtcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jPTEyMDM9dm9pZCBrdm1fdmdpY19wdXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmMtMTIxMy1cXHRzd2l0Y2ggKGRpc3QtXFx1MDAzZXZnaWNfbW9kZWwpIHtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYzoxMjE0OlxcdGNhc2UgS1ZNX0RFVl9UWVBFX0FSTV9WR0lDX1Y1OlxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jLTEyMTUtXFx0XFx0dmdpY192NV9wdXQodmNwdSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDExOjM1OjQ4LjM3Nzc5Mjg0OFoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1OTAxMjQwOTAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKktWTSBHSUN2NSBTdXBwb3J0OiBBIFF1aWNrIFJldmlldyoqXG5cbk9rYXksIHNvIEdJQ3Y1ICppcyogc3VwcG9ydGVkIHdpdGhpbiBLVk0uIE15IG1lbnRhbCBjaGVja2xpc3QgdGVsbHMgbWUgdGhlIGNvcmUgbW9kaWZpY2F0aW9ucyBhcmUgY2VudGVyZWQgaW4gdGhlIEtWTSBWR0lDIGFuZCB0aGUgR0lDdjUgZHJpdmVycy4gU3BlY2lmaWNhbGx5LCBJIHNlZSBjaGFuZ2VzIHdpdGhpbiB0aGUgYGdpY3Y1X2NwdV9kaXNhYmxlX2ludGVycnVwdHNgIGZ1bmN0aW9uLCB3aGVyZSBhbiBgaXNiKClgIGluc3RydWN0aW9uIGhhcyBiZWVuIGFkZGVkLCBhbmQgdGhlIGBnaWN2NV9pcnNfY2xlYXJfYWZmaW5pdHlgIGZ1bmN0aW9uLCB3aGljaCBhcHBlYXJzIHRvIGFkZHJlc3MgZWl0aGVyIGEgbWVtb3J5IGxlYWsgb3Igc29tZSBraW5kIG9mIHN0YXRlIGNsZWFudXAgaXNzdWUuIFdpdGhpbiBLVk0gVkdJQywgdGhlcmUgYXJlIGltcG9ydGFudCBmaXhlcyBhZGRyZXNzaW5nIHRoZSBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2VzcyBidWdzIGluIGB2Z2ljX2dldF9pcnFgIGFuZCBgdmdpY19nZXRfdmNwdV9pcnFgLCBhcyB3ZWxsIGFzIGEgbWVtb3J5IGxlYWsgaWRlbnRpZmllZCBpbiBga3ZtX3ZnaWNfaHlwX2luaXRgLlxuXG5UaGVzZSBzZWVtIGxpa2Ugc3Vic3RhbnRpYWwgZnVuY3Rpb25hbCBjaGFuZ2VzLCBkZWZpbml0ZWx5IHdhcnJhbnRpbmcgc29tZSBzZXJpb3VzIGZ1enppbmcuIExvb2tpbmcgYXQgdGhlIHJlcXVpcmVkIGNvbmZpZ3VyYXRpb25zLCBJIG5lZWQgdG8gbWFrZSBzdXJlIGBDT05GSUdfS1ZNYCBhbmQgYENPTkZJR19BUk1fR0lDX1Y1YCBhcmUgZW5hYmxlZC4gQWgsIHJpZ2h0LCBgQVJNX0dJQ19WNWAgaXMgYWN0dWFsbHkgc2VsZWN0ZWQgYnkgYEFSTTY0YC4gU28gb24gQVJNNjQsIHRoYXQncyBhbHJlYWR5IHRha2VuIGNhcmUgb2YuIEJ1dCBgS1ZNYCBpcyB0aGUgY3JpdGljYWwgY29tcG9uZW50IGhlcmU7IHRoYXQncyB0aGUgb25lIEkgbmVlZCB0byBiZSBzdXJlIGlzIGVuYWJsZWQuIEkgc2hvdWxkIHByb2JhYmx5IGRvIGEgcXVpY2sgYXVkaXQgdG8gc2VlIGlmIGFueSBvdGhlciBjb25maWd1cmF0aW9ucyBtaWdodCBiZSByZWxldmFudCBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTc1MiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxMTozNTo1NC4yNzkwMzY2MzJaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwODEzMzY4MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQVJNX0dJQ19WNVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2lycWNoaXAvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2lycWNoaXAvS2NvbmZpZz00Nj1jb25maWcgQVJNX0dJQ19WM19JVFNcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9LY29uZmlnLTUzLVxcbmRyaXZlcnMvaXJxY2hpcC9LY29uZmlnOjU0OmNvbmZpZyBBUk1fR0lDX1Y1XFxuZHJpdmVycy9pcnFjaGlwL0tjb25maWctNTUtXFx0Ym9vbFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxMTozNTo1NC4zODcxNzQxMzRaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTA3NTk3OTIyMzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqS1ZNIENvbmZpZ3VyYXRpb24gQW5hbHlzaXMgZm9yIEFSTTY0IHdpdGggR0lDdjUqKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gdGhlIEtWTSBjb25maWd1cmF0aW9uIGZvciBBUk02NCwgc3BlY2lmaWNhbGx5IHJlZ2FyZGluZyB0aGUgR0lDdjUgaW1wbGVtZW50YXRpb24uIEkgc2VlIHRoYXQgYEFSTV9HSUNfVjVgIGlzIGJhc2ljYWxseSBhIGJvb2xlYW4sIG5vdCBzb21ldGhpbmcgdGhlIHVzZXIgZGlyZWN0bHkgc2VsZWN0cy4gSXQncyBlc3NlbnRpYWxseSBlbmFibGVkIGJ5IHRoZSBgQVJNNjRgIGNvbmZpZy4gU28sIHRoYXQgbWVhbnMgYEtWTWAgaXMgdGhlIHByaW1hcnksIHBpdm90YWwgY29uZmlnIGhlcmUuXG5cbk5vdywgbGV0J3MgbmFpbCBkb3duIHRoZSBrZXkgc3ltYm9scyBmb3IgYW5hbHlzaXMuIEknbSBmb2N1c2luZyBvbiB0aGUgZnVuY3Rpb25zIHRoYXQgcHJvdmlkZSB0aGUgY29yZSBLVk0vR0lDdjUgaW50ZXJhY3Rpb24gcG9pbnRzLiBJJ3ZlIGdvdCBteSBpbml0aWFsIGxpc3Q6IGBrdm1fdmdpY19pbmplY3RfaXJxYCwgYHZnaWNfZ2V0X2lycWAsIGFuZCBgdmdpY19nZXRfdmNwdV9pcnFgLiBXYWl0LCBhcmVuJ3QgdGhvc2UgdHdvLCBgdmdpY19nZXRfaXJxYCBhbmQgYHZnaWNfZ2V0X3ZjcHVfaXJxYCwgbm90IGV4cG9ydGVkIHN5bWJvbHM/IEJ1dCB0aGV5J3JlIG5vdCBzdGF0aWMsIHNvIHRoYXQncyBpbnRlcmVzdGluZy4gSSBzaG91bGQgY2hlY2sgdGhlaXIgZGVmaW5pdGlvbjsgdGhleSdyZSBpbiBgYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmNgLiBDb25maXJtZWQuIE9rYXksIGxldCdzIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGtleSBmdW5jdGlvbnMuIEFoLCBga3ZtX3ZnaWNfaHlwX2luaXRgIGlzIGNhbGxlZCBvbmNlIGR1cmluZyBpbml0aWFsaXphdGlvbi4gQW5kLCBgZ2ljdjVfY3B1X2Rpc2FibGVfaW50ZXJydXB0c2AgaXMgc3RhdGljLCBzbyBJIGNhbiBpZ25vcmUgdGhhdCBvbmUsIGFuZCBzYW1lIGZvciBgZ2ljdjVfaXJzX2NsZWFyX2FmZmluaXR5YC5cblxuTGV0J3MgY2lyY2xlIGJhY2sgdG8gdGhlIGNhbmRpZGF0ZXMuIEknbSB0aGlua2luZyBgdmdpY19nZXRfaXJxYCBzZWVtcyBsaWtlIGEgZ29vZCBmb2N1cyBwb2ludCwgaXQncyBjYWxsZWQgZnJvbSBhIGxvdCBvZiBwbGFjZXMuIGBrdm1fdmdpY19pbmplY3RfaXJxYCBpcyBhbHNvIHN0cm9uZy4gWWVhaCwgdGhhdCdzIHRoZSBjb3JlLiBTbyBJJ2xsIGRlZmluaXRlbHkgZ28gd2l0aCBga3ZtX3ZnaWNfaW5qZWN0X2lycWAsIGB2Z2ljX2dldF9pcnFgLCBhbmQgYHZnaWNfZ2V0X3ZjcHVfaXJxYC4gVGhvc2UgYXJlIHRoZSBjb3JlIHN5bWJvbHMuXG5cbkp1c3QgdG8gYmUgc3VyZSwgbGV0J3MgZG91YmxlLWNoZWNrIHRoZSBkZWZpbml0aW9ucy4gSSdsbCBjb25maXJtIHRoYXQgYHZnaWNfZ2V0X2lycWAgaXMgYXMgSSBleHBlY3Q6XG5cbmBgYGNcbnN0cnVjdCB2Z2ljX2lycSAqdmdpY19nZXRfaXJxKHN0cnVjdCBrdm0gKmt2bSwgdTMyIGludGlkKVxue1xuLi4uXG59XG5gYGBcblxuYW5kIGB2Z2ljX2dldF92Y3B1X2lycWA6XG5cbmBgYGNcbnN0cnVjdCB2Z2ljX2lycSAqdmdpY19nZXRfdmNwdV9pcnEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgaW50aWQpXG57XG4uLi5cbn1cbmBgYFxuXG5Pa2F5LCBwZXJmZWN0LiBOb3csIHdoYXQgYWJvdXQgdGhvc2Ugc3RhdGljIGZ1bmN0aW9ucz8gTGV0J3MgY29uZmlybSBhZ2FpbiB0aGF0IGBnaWN2NV9pcnNfY2xlYXJfYWZmaW5pdHlgIGlzIHN0YXRpYzsgb2theSwgSSBjYW4gaWdub3JlIHRoYXQuIEFuZCwgd2hhdCBhYm91dCBgZ2ljdjVfaXJzX3JlbW92ZWA/IEhtbSwgaXQncyBgdm9pZCBfX2luaXQgZ2ljdjVfaXJzX3JlbW92ZSh2b2lkKWAuIFdhaXQsIGBfX2luaXRgPyBUaGF0IG1lYW5zIGl0J3Mgb25seSBmb3IgZXJyb3IgcGF0aHMgZHVyaW5nIGluaXQsIHNvIGl0J3Mgbm90IGEgY29yZSBzeW1ib2wgZm9yIHJlZ3VsYXIgb3BlcmF0aW9uLlxuXG5gYGBjXG52b2lkIF9faW5pdCBnaWN2NV9pcnNfcmVtb3ZlKHZvaWQpXG57XG4uLi5cbn1cbmBgYFxuXG5BbmQgZmluYWxseSwgYGdpY3Y1X2NwdV9kaXNhYmxlX2ludGVycnVwdHNgPyBUaGF0IGlzIGFsc28gc3RhdGljLCBzbyBub3RoaW5nIGhlcmUuXG5cblNvLCB5ZWFoLCBJJ20gY29uZmlkZW50IHRoYXQgYGt2bV92Z2ljX2luamVjdF9pcnFgLCBgdmdpY19nZXRfaXJxYCwgYW5kIGB2Z2ljX2dldF92Y3B1X2lycWAgYXJlIHRoZSBjb3JyZWN0IGZvY3VzIHN5bWJvbHMuXG5cbk5vdywganVzdCB0byBjb25maXJtLCBpcyBgS1ZNYCB0aGUgb25seSBjb25maWcgSSBuZWVkPyBZZXAsIGBLVk1gIGlzIHRoZSBwcmltYXJ5IG9uZSwgYWxsIHJvYWRzIGxlYWQgdG8gYEtWTWAgZm9yIHRoZSBLVk0gb24gQVJNNjQuIFdhaXQsIGlzIHRoZXJlIGEgYEtWTV9BUk1fVkdJQ19WNWAgY29uZmlnPyBIbW0uLi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzI0MDQsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTE6MzY6MDUuMTQ2OTY5MTI1WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5ODA0MDE0MywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiS1ZNX0FSTV9WR0lDX1Y1XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvYXJtNjQva3ZtL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDExOjM2OjA1LjI0NTAxOTc3OFoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzMzMzcxMTQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipLZXJuZWwgQ29uZmlndXJhdGlvbiBRdWVyeSoqXG5cblJpZ2h0LCB0aGF0J3MgYSBuZWdhdGl2ZSBvbiB3aGF0ZXZlciBpbml0aWFsIHF1ZXN0aW9uIEkgd2FzIGNvbnNpZGVyaW5nLiBMZXQncyBkaWcgZGVlcGVyLiBUaGUgZmlyc3QgcGxhY2UgdG8gY2hlY2ssIG5hdHVyYWxseSwgaXMgYEtjb25maWdgLiBTcGVjaWZpY2FsbHksIGZvciB0aGUgQVJNNjQgYXJjaGl0ZWN0dXJlLCBJIG5lZWQgdG8gbG9vayBhdCBgYXJjaC9hcm02NC9rdm0vS2NvbmZpZ2AuIEknbSBnb2luZyB0byBoYXZlIHRvIGZpbmQgd2hhdCBkZXBlbmRlbmNpZXMgYXJlIHRoZXJlLCB3aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgYXZhaWxhYmxlLCBhbmQgZ2V0IGFuIGlkZWEgb2Ygd2hlcmUgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIGVuYWJsZWQgb3IgZGlzYWJsZWQgYXQgYnVpbGQgdGltZS4gSXQncyB0aGUgc3RhbmRhcmQgcGxhY2UgdG8gc3RhcnQgZGVidWdnaW5nIGEga2VybmVsIGNvbmZpZ3VyYXRpb24gaXNzdWUsIGFmdGVyIGEgcXVpY2sgXCJub1wiIHRvIHRoZSBpbml0aWFsIHRob3VnaHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0MDE4LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTE6MzY6MDguNTc4MzkzMTgzWiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MzY2NjEyMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgS1ZNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvYXJtNjQva3ZtL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9hcm02NC9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxcbmFyY2gvYXJtNjQva3ZtL0tjb25maWctMTktXFxuYXJjaC9hcm02NC9rdm0vS2NvbmZpZzoyMDptZW51Y29uZmlnIEtWTVxcbmFyY2gvYXJtNjQva3ZtL0tjb25maWctMjEtXFx0Ym9vbCBcXFwiS2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxMTozNjowOC42NzIwNjU1ODZaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTg5MjYwNjI3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBLVk0gQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgS1ZNIGNvbmZpZ3VyYXRpb24gaW4gZnJvbnQgb2YgbWUuIExldCdzIGJyZWFrIGl0IGRvd24gYW5kIHNlZSB3aGF0IHdlJ3JlIGRlYWxpbmcgd2l0aC4gRmlyc3Qgb2ZmLCBgV29ydGhGdXp6aW5nYCBpcyBzZXQgdG8gYHRydWVgLiBHb29kLCB3ZSB3YW50IHRvIHN1YmplY3QgaXQgdG8gdGhvcm91Z2ggdGVzdGluZy4gVGhlIGBGb2N1c1N5bWJvbHNgIGFyZSBsaXN0ZWQgYXMgYHZnaWNfZ2V0X2lycWAsIGB2Z2ljX2dldF92Y3B1X2lycWAsIGFuZCBga3ZtX3ZnaWNfaW5qZWN0X2lycWAuIFRob3NlIGFyZSBhbGwgdmVyeSByZWxldmFudCB0byBpbnRlcnJ1cHQgaGFuZGxpbmcgd2l0aGluIHRoZSBLVk0ncyB2aXJ0dWFsIEdJQyAoVkdJQykgaW1wbGVtZW50YXRpb24g4oCTIGNsYXNzaWMgcG90ZW50aWFsIHRhcmdldHMuIFRoZSBgRW5hYmxlQ29uZmlnc2AgaW5jbHVkZSBgS1ZNYCwgd2hpY2ggbWFrZXMgc2Vuc2UsIGFzIHRoZSBwcm9ibGVtIHNwYWNlIGlzIGxpbWl0ZWQgdG8gS1ZNIGZ1bmN0aW9uYWxpdGllcy5cblxuTXkgcmVhc29uaW5nPyBUaGUgZGVzY3JpcHRpb24gbWVudGlvbnMgY3JpdGljYWwgb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3NlcyB3aXRoaW4gS1ZNJ3MgVkdJQyBJUlEgaGFuZGxpbmcuIFRob3NlIGFyZSBuYXN0eSB2dWxuZXJhYmlsaXRpZXMgdGhhdCB3ZSBuZWVkIHRvIGFkZHJlc3MgaW1tZWRpYXRlbHkuIFNwZWNpZmljYWxseSwgdGhlIGlkZW50aWZpZWQgZnVuY3Rpb25zIChgdmdpY19nZXRfaXJxYCwgYHZnaWNfZ2V0X3ZjcHVfaXJxYCkgYXJlIHRhcmdldHMuIEEgbWVtb3J5IGxlYWsgaW4gVkdJQyBpbml0aWFsaXphdGlvbiBpcyBhbHNvIHByb2JsZW1hdGljLCBpbmRpY2F0aW5nIGEgcmVzb3VyY2UgbWFuYWdlbWVudCBmbGF3LiBBZGRpdGlvbmFsbHksIHdlJ3JlIHRvbGQgYWJvdXQgYSBtaXNzaW5nIG1lbW9yeSBiYXJyaWVyIGluIHRoZSBHSUN2NSBkcml2ZXIuIEFsbCB0aGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGFmZmVjdGluZyBjb3JlIHZpcnR1YWxpemF0aW9uIGFuZCBpbnRlcnJ1cHQgY29udHJvbGxlciBjb2RlLiBUaGV5IGFsbCBzcGVhayB0byBkZWVwLXNlYXRlZCBpc3N1ZXMgdGhhdCBhcmUgbGlrZWx5IHJlYWNoYWJsZSBhbmQgaGF2ZSB0aGUgcG90ZW50aWFsIGZvciBleHBsb2l0YXRpb24uIFRoaXMgY29uZmlndXJhdGlvbiBpcyBjbGVhcmx5IGFpbWVkIGF0IGFkZHJlc3Npbmcgc29tZSBzaWduaWZpY2FudCBpc3N1ZXMuIEkgbmVlZCB0byBkaXZlIGRlZXBlciBpbnRvIHRoZXNlIHNwZWNpZmljIGZ1bmN0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQzMjIsIk91dHB1dFRva2VucyI6MTQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQ2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDExOjM2OjE0LjU2NDY3NDY3OVoiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNTkwOTA3MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidmdpY19nZXRfaXJxXCIsXG4gICAgXCJ2Z2ljX2dldF92Y3B1X2lycVwiLFxuICAgIFwia3ZtX3ZnaWNfaW5qZWN0X2lycVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGNyaXRpY2FsIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzZXMgaW4gS1ZNIFZHSUMgSVJRIGhhbmRsaW5nIChgdmdpY19nZXRfaXJxYCwgYHZnaWNfZ2V0X3ZjcHVfaXJxYCksIGEgbWVtb3J5IGxlYWsgaW4gVkdJQyBpbml0aWFsaXphdGlvbiwgYW5kIGFkZHMgYSBtaXNzaW5nIG1lbW9yeSBiYXJyaWVyIGluIHRoZSBHSUN2NSBkcml2ZXIuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gcmVhY2hhYmxlIGNvcmUgdmlydHVhbGl6YXRpb24gYW5kIGludGVycnVwdCBjb250cm9sbGVyIGNvZGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidmdpY19nZXRfaXJxXCIsXG4gICAgXCJ2Z2ljX2dldF92Y3B1X2lycVwiLFxuICAgIFwia3ZtX3ZnaWNfaW5qZWN0X2lycVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGNyaXRpY2FsIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzZXMgaW4gS1ZNIFZHSUMgSVJRIGhhbmRsaW5nIChgdmdpY19nZXRfaXJxYCwgYHZnaWNfZ2V0X3ZjcHVfaXJxYCksIGEgbWVtb3J5IGxlYWsgaW4gVkdJQyBpbml0aWFsaXphdGlvbiwgYW5kIGFkZHMgYSBtaXNzaW5nIG1lbW9yeSBiYXJyaWVyIGluIHRoZSBHSUN2NSBkcml2ZXIuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gcmVhY2hhYmxlIGNvcmUgdmlydHVhbGl6YXRpb24gYW5kIGludGVycnVwdCBjb250cm9sbGVyIGNvZGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDExOjM2OjE0LjY5MDU5MTQ5WiIsIlNlcSI6MzMsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTA0NzA2OTM1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDExOjM2OjE0LjY5MTA2ODkwMVoiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxMTA0NjU4NjMyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgbWVtb3J5IGxlYWsgaW4gdmdpYy1pbml0LmMsIGFuIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzIGFuZCBpbmNvcnJlY3QgaW5kZXggY2FsY3VsYXRpb24gaW4gdmdpYy5jLCBhIHVzZS1hZnRlci1mcmVlL2RhbmdsaW5nIHBvaW50ZXIgaXNzdWUgaW4gaXJxLWdpYy12NS1pcnMuYyBieSBjbGVhcmluZyBwZXItY3B1IHBvaW50ZXJzIGJlZm9yZSBmcmVlaW5nLCBhbmQgYWRkcyBhIG1pc3NpbmcgaW5zdHJ1Y3Rpb24gc3luY2hyb25pemF0aW9uIGJhcnJpZXIgKGlzYikgaW4gaXJxLWdpYy12NS5jLiBOb25lIG9mIHRoZXNlIGNoYW5nZXMgaW52b2x2ZSB1bmluaXRpYWxpemVkIG1lbW9yeSwgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIG9yIGluZm8tbGVha3MgdG8gdXNlciBzcGFjZS4gVGhlIGJ1Z3MgZml4ZWQgKE9PQiwgVUFGLCBtZW1vcnkgbGVha3MpIGFyZSB3ZWxsIHdpdGhpbiB0aGUgc2NvcGUgb2YgS0FTQU4gYW5kIEtNRU1MRUFLLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNjJjYjVkY2NkNWZjNmE1NmYyMjgxZTAwZDkzYzNkNjdkNjY2NzEzNlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDEwIDExOjM0OjM2IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuYyBiL2FyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pbml0LmNcbmluZGV4IDkwNzA1Nzg4MWIyNmEuLjY1ZTIwM2Q2YTJjZjQgMTAwNjQ0XG4tLS0gYS9hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaW5pdC5jXG4rKysgYi9hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaW5pdC5jXG5AQCAtNzg3LDcgKzc4Nyw4IEBAIGludCBrdm1fdmdpY19oeXBfaW5pdCh2b2lkKVxuIFxuIFx0aWYgKGhhc19tYXNrIFx1MDAyNlx1MDAyNiAhZ2ljX2t2bV9pbmZvLVx1MDAzZW1haW50X2lycSkge1xuIFx0XHRrdm1fZXJyKFwiTm8gdmdpYyBtYWludGVuYW5jZSBpcnFcXG5cIik7XG4tXHRcdHJldHVybiAtRU5YSU87XG4rXHRcdHJldCA9IC1FTlhJTztcbitcdFx0Z290byBvdXRfZnJlZTtcbiBcdH1cbiBcbiBcdC8qXG5AQCAtODIwLDYgKzgyMSw3IEBAIGludCBrdm1fdmdpY19oeXBfaW5pdCh2b2lkKVxuIFxuIFx0a3ZtX3ZnaWNfZ2xvYmFsX3N0YXRlLm1haW50X2lycSA9IGdpY19rdm1faW5mby1cdTAwM2VtYWludF9pcnE7XG4gXG4rb3V0X2ZyZWU6XG4gXHRrZnJlZShnaWNfa3ZtX2luZm8pO1xuIFx0Z2ljX2t2bV9pbmZvID0gTlVMTDtcbiBcbmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYyBiL2FyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jXG5pbmRleCA3NGJhY2UxMGEyMmVkLi5iMjUzMDNkOTkxOWZkIDEwMDY0NFxuLS0tIGEvYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmNcbisrKyBiL2FyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jXG5AQCAtOTMsOCArOTMsOSBAQCBzdHJ1Y3QgdmdpY19pcnEgKnZnaWNfZ2V0X2lycShzdHJ1Y3Qga3ZtICprdm0sIHUzMiBpbnRpZClcbiBcdC8qIFNQSXMgKi9cbiBcdGlmIChpbnRpZCBcdTAwM2U9IFZHSUNfTlJfUFJJVkFURV9JUlFTIFx1MDAyNlx1MDAyNlxuIFx0ICAgIGludGlkIFx1MDAzYyAoa3ZtLVx1MDAzZWFyY2gudmdpYy5ucl9zcGlzICsgVkdJQ19OUl9QUklWQVRFX0lSUVMpKSB7XG4tXHRcdGludGlkID0gYXJyYXlfaW5kZXhfbm9zcGVjKGludGlkLCBrdm0tXHUwMDNlYXJjaC52Z2ljLm5yX3NwaXMgKyBWR0lDX05SX1BSSVZBVEVfSVJRUyk7XG4tXHRcdHJldHVybiBcdTAwMjZrdm0tXHUwMDNlYXJjaC52Z2ljLnNwaXNbaW50aWQgLSBWR0lDX05SX1BSSVZBVEVfSVJRU107XG4rXHRcdGludGlkIC09IFZHSUNfTlJfUFJJVkFURV9JUlFTO1xuK1x0XHRpbnRpZCA9IGFycmF5X2luZGV4X25vc3BlYyhpbnRpZCwga3ZtLVx1MDAzZWFyY2gudmdpYy5ucl9zcGlzKTtcbitcdFx0cmV0dXJuIFx1MDAyNmt2bS1cdTAwM2VhcmNoLnZnaWMuc3Bpc1tpbnRpZF07XG4gXHR9XG4gXG4gXHQvKiBMUElzICovXG5AQCAtMTE3LDYgKzExOCw4IEBAIHN0cnVjdCB2Z2ljX2lycSAqdmdpY19nZXRfdmNwdV9pcnEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgaW50aWQpXG4gXHRcdHN3aXRjaCAodHlwZSkge1xuIFx0XHRjYXNlIEtWTV9ERVZfVFlQRV9BUk1fVkdJQ19WNTpcbiBcdFx0XHRpbnRpZCA9IHZnaWNfdjVfZ2V0X2h3aXJxX2lkKGludGlkKTtcbitcdFx0XHRpZiAoaW50aWQgXHUwMDNlPSBWR0lDX1Y1X05SX1BSSVZBVEVfSVJRUylcbitcdFx0XHRcdHJldHVybiBOVUxMO1xuIFx0XHRcdGludGlkID0gYXJyYXlfaW5kZXhfbm9zcGVjKGludGlkLCBWR0lDX1Y1X05SX1BSSVZBVEVfSVJRUyk7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdGRlZmF1bHQ6XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMgYi9kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuY1xuaW5kZXggZjNmY2UwYjFlMjVkOS4uNjc5NDBlYTllMzliNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jXG4rKysgYi9kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuY1xuQEAgLTY1MSw2ICs2NTEsMTkgQEAgc3RhdGljIGludCBfX2luaXQgZ2ljdjVfaXJzX29mX2luaXRfYWZmaW5pdHkoc3RydWN0IGRldmljZV9ub2RlICpub2RlLFxuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG4rc3RhdGljIHZvaWQgX19pbml0IGdpY3Y1X2lyc19jbGVhcl9hZmZpbml0eShzdHJ1Y3QgZ2ljdjVfaXJzX2NoaXBfZGF0YSAqaXJzX2RhdGEpXG4re1xuK1x0aW50IGNwdTtcbitcbitcdGZvcl9lYWNoX3Bvc3NpYmxlX2NwdShjcHUpIHtcbitcdFx0aWYgKHBlcl9jcHUocGVyX2NwdV9pcnNfZGF0YSwgY3B1KSA9PSBpcnNfZGF0YSkge1xuK1x0XHRcdHBlcl9jcHUoY3B1X2lhZmZpZCwgY3B1KS5pYWZmaWQgPSAwO1xuK1x0XHRcdHBlcl9jcHUoY3B1X2lhZmZpZCwgY3B1KS52YWxpZCA9IGZhbHNlO1xuK1x0XHRcdHBlcl9jcHUocGVyX2NwdV9pcnNfZGF0YSwgY3B1KSA9IE5VTEw7XG4rXHRcdH1cbitcdH1cbit9XG4rXG4gc3RhdGljIHZvaWQgaXJzX3NldHVwX3ByaV9iaXRzKHUzMiBpZHIxKVxuIHtcbiBcdHN3aXRjaCAoRklFTERfR0VUKEdJQ1Y1X0lSU19JRFIxX1BSSU9SSVRZX0JJVFMsIGlkcjEpKSB7XG5AQCAtNzczLDYgKzc4Niw3IEBAIHN0YXRpYyBpbnQgX19pbml0IGdpY3Y1X2lyc19vZl9pbml0KHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSlcbiBcdHJldHVybiByZXQ7XG4gXG4gb3V0X2lvbWVtOlxuK1x0Z2ljdjVfaXJzX2NsZWFyX2FmZmluaXR5KGlyc19kYXRhKTtcbiBcdGlvdW5tYXAoaXJzX2Jhc2UpO1xuIG91dF9lcnI6XG4gXHRrZnJlZShpcnNfZGF0YSk7XG5AQCAtNzg3LDYgKzgwMSw3IEBAIHZvaWQgX19pbml0IGdpY3Y1X2lyc19yZW1vdmUodm9pZClcbiBcdGdpY3Y1X2RlaW5pdF9scGlzKCk7XG4gXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoaXJzX2RhdGEsIHRtcF9kYXRhLCBcdTAwMjZpcnNfbm9kZXMsIGVudHJ5KSB7XG4rXHRcdGdpY3Y1X2lyc19jbGVhcl9hZmZpbml0eShpcnNfZGF0YSk7XG4gXHRcdGlvdW5tYXAoaXJzX2RhdGEtXHUwMDNlaXJzX2Jhc2UpO1xuIFx0XHRsaXN0X2RlbChcdTAwMjZpcnNfZGF0YS1cdTAwM2VlbnRyeSk7XG4gXHRcdGtmcmVlKGlyc19kYXRhKTtcbkBAIC05NTEsNiArOTY2LDcgQEAgc3RhdGljIGludCBfX2luaXQgZ2ljX2FjcGlfcGFyc2VfbWFkdF9pcnModW5pb24gYWNwaV9zdWJ0YWJsZV9oZWFkZXJzICpoZWFkZXIsXG4gXHRyZXR1cm4gMDtcbiBcbiBvdXRfbWFwOlxuK1x0Z2ljdjVfaXJzX2NsZWFyX2FmZmluaXR5KGlyc19kYXRhKTtcbiBcdGlvdW5tYXAoaXJzX2Jhc2UpO1xuIG91dF9yZWxlYXNlOlxuIFx0cmVsZWFzZV9tZW1fcmVnaW9uKHItXHUwMDNlc3RhcnQsIHJlc291cmNlX3NpemUocikpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LmMgYi9kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS5jXG5pbmRleCBlOWQxNzk1MjM1YTY2Li42YTk5YzU0MWI1NTliIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUuY1xuKysrIGIvZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUuY1xuQEAgLTk4Myw2ICs5ODMsNyBAQCBzdGF0aWMgdm9pZCBnaWN2NV9jcHVfZGlzYWJsZV9pbnRlcnJ1cHRzKHZvaWQpXG4gXG4gXHRjcjAgPSBGSUVMRF9QUkVQKElDQ19DUjBfRUwxX0VOLCAwKTtcbiBcdHdyaXRlX3N5c3JlZ19zKGNyMCwgU1lTX0lDQ19DUjBfRUwxKTtcbitcdGlzYigpO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBnaWN2NV9jcHVfZW5hYmxlX2ludGVycnVwdHModm9pZClcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDExOjM2OjE0LjY5MTA2OTc4MVoiLCJTZXEiOjM1LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTA0NjU1MTM5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipQYXRjaCBBbmFseXNpcyBhbmQgS01TQU4gQXNzZXNzbWVudCoqXG5cbk9rYXksIGxldCBtZSBicmVhayB0aGlzIGRvd24uIEZyb20gYSBxdWljayBzY2FuLCBpdCBsb29rcyBsaWtlIHRoaXMgcGF0Y2ggaXMgYWxsIGFib3V0IHRpZ2h0ZW5pbmcgdXAgc29tZSBsb29zZSBlbmRzIGluIHRoZSBLVk0gYW5kIEdJQ3Y1IGludGVyYWN0aW9uLCBtb3N0bHkgYXJvdW5kIG1lbW9yeSBzYWZldHkgYW5kIGNvcnJlY3QgYmVoYXZpb3IuXG5cbkZpcnN0LCBpbiBgYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuY2AsIHRoZSBjaGFuZ2UgaXMgcmVwbGFjaW5nIGEgc2ltcGxlIGByZXR1cm4gLUVOWElPO2Agd2l0aCBhIHByb3BlciBgZ290byBvdXRfZnJlZTtgIHdoaWNoIGluY2x1ZGVzIGEgYGtmcmVlYCBvZiBgZ2ljX2t2bV9pbmZvYC4gVGhpcyBpcyBhIHN0cmFpZ2h0Zm9yd2FyZCBtZW1vcnkgbGVhayBmaXguIE5vdGhpbmcgY29tcGxleCBvciBjb25jZXJuaW5nIGZyb20gYSBLTVNBTiBwZXJzcGVjdGl2ZSwgYXMgaXQgc2ltcGx5IGFkZHMgYSBuZWNlc3NhcnkgY2xlYW51cCBwYXRoLlxuXG5OZXh0LCBpbiBgYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmNgLCB3ZSdyZSBhZGRyZXNzaW5nIGFycmF5IGFjY2VzcyBpc3N1ZXMgaW4gYm90aCBgdmdpY19nZXRfaXJxYCBhbmQgYHZnaWNfZ2V0X3ZjcHVfaXJxYC4gVGhlIHVzZSBvZiBgYXJyYXlfaW5kZXhfbm9zcGVjYCBpcyBiZWluZyByZXZpc2VkIHRvIGVuc3VyZSB0aGF0IHRoZSBpbmRleCBgaW50aWRgIHN0YXlzIHdpdGhpbiB0aGUgdmFsaWQgYm91bmRzLiBUaGlzIHByZXZlbnRzIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIHJlYWRzIG9yIHdyaXRlcywgd2hpY2ggaXMgYSBnb29kIHNhZmV0eSBtZWFzdXJlLiBUaGVyZSdzIGFsc28gYSBkaXJlY3QgYm91bmRzIGNoZWNrIG5vdyBhZGRlZC5cblxuVGhlbiwgbW92aW5nIHRvIGBkcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuY2AsIGBnaWN2NV9pcnNfY2xlYXJfYWZmaW5pdHlgIGlzIGludHJvZHVjZWQuIFRoaXMgc2VlbXMgdG8gYmUgYSBjcnVjaWFsIGFkZGl0aW9uIGZvciBjbGVhcmluZyBwZXItQ1BVIHN0YXRlIGFzc29jaWF0ZWQgd2l0aCBgaXJzX2RhdGFgICpiZWZvcmUqIGZyZWVpbmcgdGhlIG1lbW9yeS4gVGhpcyBpcyBhIHZlcnkgY2xlYXIgVUFGICh1c2UtYWZ0ZXItZnJlZSkgYW5kIGRhbmdsaW5nIHBvaW50ZXIgaXNzdWUgZml4LiBFbGltaW5hdGluZyBhIHJhY2UgY29uZGl0aW9uIGhlcmUgd2lsbCBkbyB3b25kZXJzIGZvciBzdGFiaWxpdHkuXG5cbkZpbmFsbHksIGluIGBkcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS5jYCwgd2UncmUgYWRkaW5nIGFuIGBpc2IoKWAgaW5zdHJ1Y3Rpb24gYWZ0ZXIgd3JpdGluZyB0byBhIHN5c3RlbSByZWdpc3Rlci4gVGhpcyBpcyBhbGwgYWJvdXQgZW5zdXJpbmcgdGhlIGNvcnJlY3QgbWVtb3J5IGJhcnJpZXIgZm9yIGluc3RydWN0aW9uIHN5bmNocm9uaXphdGlvbi4gVGhlIGtlcm5lbCBpcyB0YWtpbmcgYSBjb25zZXJ2YXRpdmUgYXBwcm9hY2ggaGVyZSB0byBwcmV2ZW50IGFueSBwb3RlbnRpYWwgbWlzc2VkIHVwZGF0ZXMgb3IgZGF0YSBjb3JydXB0aW9uLlxuXG5Mb29raW5nIGF0IHRoZSBvdmVyYWxsIHBpY3R1cmUsIG5vbmUgb2YgdGhlc2UgY2hhbmdlcyBpbnRyb2R1Y2UgYW55IG5ldyB1bmluaXRpYWxpemVkIG1lbW9yeSB2dWxuZXJhYmlsaXRpZXMsIGluZm8tbGVha3MsIG9yIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLiBXZSdyZSBwcmltYXJpbHkgZml4aW5nIG1lbW9yeSBsZWFrcywgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlIGNvbmRpdGlvbnMsIGFuZCBtaXNzaW5nIG1lbW9yeSBiYXJyaWVycy4gQWxsIG9mIHRoZXNlIGJ1Z3Mgd291bGQgYmUgY2F1Z2h0IGJ5IGV4aXN0aW5nIHRvb2xzIGxpa2UgS0FTQU4gb3IgS01FTUxFQUssIG9yIGFyZSBqdXN0IHN0cmFpZ2h0IGxvZ2ljIGJ1Z3MuIFNvLCBJIHNlZSBubyByZWFzb24gdG8gYmVsaWV2ZSB0aGF0IEtNU0FOIHdvdWxkIGFkZCB2YWx1ZSBoZXJlOyBpbiBmYWN0LCB0aGVyZSBpcyBub3RoaW5nIGluIHRoaXMgcGF0Y2ggdGhhdCB3b3VsZCBjaGFuZ2UgdGhlIEtNU0FOIHN0YXR1cyBvZiBhbnl0aGluZy4gV2UgZG9uJ3QgbmVlZCB0byBlbmFibGUgaXQgZm9yIHRoaXMgcGF0Y2guXG5cbkkgd2lsbCBkb3VibGUgY2hlY2sgbXkgYW5hbHlzaXMgd2l0aCBhIHF1aWNrIHJldmlldy5cbi0gICBgdmdpY19pbml0LmNgOiBUaGUgbWVtb3J5IGxlYWsgaXMgZml4ZWQgYnkgYWRkaW5nIGBrZnJlZShnaWNfa3ZtX2luZm8pO2AgdG8gdGhlIGVycm9yIHBhdGguXG4tICAgYHZnaWMuY2A6IFRoZSBjaGFuZ2UgaGFuZGxlcyBhbiBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2VzcyBieSBjb3JyZWN0aW5nIHRoZSBpbmRleCBjYWxjdWxhdGlvbiBpbiB0aGUgY29kZS5cbi0gICBgaXJxLWdpYy12NS1pcnMuY2A6IFRoZSBVQUYgaXMgYXZvaWRlZCBieSBhZGRpbmcgYGdpY3Y1X2lyc19jbGVhcl9hZmZpbml0eWAuXG4tICAgYGlycS1naWMtdjUuY2A6IFRoZSBpbnN0cnVjdGlvbiBzeW5jaHJvbml6YXRpb24gYmFycmllciBpcyBhZGRyZXNzZWQgYnkgdGhlIHVzZSBvZiBgaXNiKClgLlxuXG5ZZXAsIGxvb2tzIGdvb2QuIE5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIG9yIEtNU0FOIG5lZWRzIHRoYXQgSSBjYW4gaWRlbnRpZnkgaGVyZS4gVGhpcyBpcyBhIHNvbGlkIHNldCBvZiBmaXhlcyB0aGF0IGltcHJvdmVzIHRoZSByb2J1c3RuZXNzIG9mIHRoZSBzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1NTUsIk91dHB1dFRva2VucyI6MTc1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTY0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTE6MzY6MjUuNzM3NjI1NjRaIiwiU2VxIjozNiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzQ1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHJlc3NlcyBhIG1lbW9yeSBsZWFrIGluIHZnaWMtaW5pdC5jLCBhbiBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2VzcyBhbmQgaW5jb3JyZWN0IGluZGV4IGNhbGN1bGF0aW9uIGluIHZnaWMuYywgYSB1c2UtYWZ0ZXItZnJlZS9kYW5nbGluZyBwb2ludGVyIGlzc3VlIGluIGlycS1naWMtdjUtaXJzLmMgYnkgY2xlYXJpbmcgcGVyLWNwdSBwb2ludGVycyBiZWZvcmUgZnJlZWluZywgYW5kIGFkZHMgYSBtaXNzaW5nIGluc3RydWN0aW9uIHN5bmNocm9uaXphdGlvbiBiYXJyaWVyIChpc2IpIGluIGlycS1naWMtdjUuYy4gTm9uZSBvZiB0aGVzZSBjaGFuZ2VzIGludm9sdmUgdW5pbml0aWFsaXplZCBtZW1vcnksIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLCBvciBpbmZvLWxlYWtzIHRvIHVzZXIgc3BhY2UuIFRoZSBidWdzIGZpeGVkIChPT0IsIFVBRiwgbWVtb3J5IGxlYWtzKSBhcmUgd2VsbCB3aXRoaW4gdGhlIHNjb3BlIG9mIEtBU0FOIGFuZCBLTUVNTEVBSy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHJlc3NlcyBhIG1lbW9yeSBsZWFrIGluIHZnaWMtaW5pdC5jLCBhbiBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2VzcyBhbmQgaW5jb3JyZWN0IGluZGV4IGNhbGN1bGF0aW9uIGluIHZnaWMuYywgYSB1c2UtYWZ0ZXItZnJlZS9kYW5nbGluZyBwb2ludGVyIGlzc3VlIGluIGlycS1naWMtdjUtaXJzLmMgYnkgY2xlYXJpbmcgcGVyLWNwdSBwb2ludGVycyBiZWZvcmUgZnJlZWluZywgYW5kIGFkZHMgYSBtaXNzaW5nIGluc3RydWN0aW9uIHN5bmNocm9uaXphdGlvbiBiYXJyaWVyIChpc2IpIGluIGlycS1naWMtdjUuYy4gTm9uZSBvZiB0aGVzZSBjaGFuZ2VzIGludm9sdmUgdW5pbml0aWFsaXplZCBtZW1vcnksIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLCBvciBpbmZvLWxlYWtzIHRvIHVzZXIgc3BhY2UuIFRoZSBidWdzIGZpeGVkIChPT0IsIFVBRiwgbWVtb3J5IGxlYWtzKSBhcmUgd2VsbCB3aXRoaW4gdGhlIHNjb3BlIG9mIEtBU0FOIGFuZCBLTUVNTEVBSy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow7tqm5[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-10 10:47:54 +0000 UTC FinishedAt: 2026-08-10 11:36:27 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "5ec42d57655c690234c14aece6dd3f209778c1d8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "5ec42d57655c690234c14aece6dd3f209778c1d8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "9b62e092-d765-42e6-bb6a-f55426aac042" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "vgic_get_irq", "vgic_get_vcpu_irq", "kvm_vgic_inject_irq" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDExOjM0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3ZnaWNfZ2V0X2lycSYjMzQ7LAogICAgJiMzNDt2Z2ljX2dldF92Y3B1X2lycSYjMzQ7LAogICAgJiMzNDtrdm1fdmdpY19pbmplY3RfaXJxJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgbWVtb3J5IGxlYWsgaW4gdmdpYy1pbml0LmMsIGFuIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzIGFuZCBpbmNvcnJlY3QgaW5kZXggY2FsY3VsYXRpb24gaW4gdmdpYy5jLCBhIHVzZS1hZnRlci1mcmVlL2RhbmdsaW5nIHBvaW50ZXIgaXNzdWUgaW4gaXJxLWdpYy12NS1pcnMuYyBieSBjbGVhcmluZyBwZXItY3B1IHBvaW50ZXJzIGJlZm9yZSBmcmVlaW5nLCBhbmQgYWRkcyBhIG1pc3NpbmcgaW5zdHJ1Y3Rpb24gc3luY2hyb25pemF0aW9uIGJhcnJpZXIgKGlzYikgaW4gaXJxLWdpYy12NS5jLiBOb25lIG9mIHRoZXNlIGNoYW5nZXMgaW52b2x2ZSB1bmluaXRpYWxpemVkIG1lbW9yeSwgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIG9yIGluZm8tbGVha3MgdG8gdXNlciBzcGFjZS4gVGhlIGJ1Z3MgZml4ZWQgKE9PQiwgVUFGLCBtZW1vcnkgbGVha3MpIGFyZSB3ZWxsIHdpdGhpbiB0aGUgc2NvcGUgb2YgS0FTQU4gYW5kIEtNRU1MRUFLLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGNyaXRpY2FsIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzZXMgaW4gS1ZNIFZHSUMgSVJRIGhhbmRsaW5nIChgdmdpY19nZXRfaXJxYCwgYHZnaWNfZ2V0X3ZjcHVfaXJxYCksIGEgbWVtb3J5IGxlYWsgaW4gVkdJQyBpbml0aWFsaXphdGlvbiwgYW5kIGFkZHMgYSBtaXNzaW5nIG1lbW9yeSBiYXJyaWVyIGluIHRoZSBHSUN2NSBkcml2ZXIuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gcmVhY2hhYmxlIGNvcmUgdmlydHVhbGl6YXRpb24gYW5kIGludGVycnVwdCBjb250cm9sbGVyIGNvZGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTE6MzQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA2MmNiNWRjY2Q1ZmM2YTU2ZjIyODFlMDBkOTNjM2Q2N2Q2NjY3MTM2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMTAgMTE6MzQ6MzYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuYyBiL2FyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pbml0LmNcbmluZGV4IDkwNzA1Nzg4MWIyNmEuLjY1ZTIwM2Q2YTJjZjQgMTAwNjQ0XG4tLS0gYS9hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaW5pdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaW5pdC5jXG5AQCAtNzg3LDcgJiM0Mzs3ODcsOCBAQCBpbnQga3ZtX3ZnaWNfaHlwX2luaXQodm9pZClcbiBcbiBcdGlmIChoYXNfbWFzayBcdTAwMjZcdTAwMjYgIWdpY19rdm1faW5mby1cdTAwM2VtYWludF9pcnEpIHtcbiBcdFx0a3ZtX2VycihcJiMzNDtObyB2Z2ljIG1haW50ZW5hbmNlIGlycVxcblwmIzM0Oyk7XG4tXHRcdHJldHVybiAtRU5YSU87XG4mIzQzO1x0XHRyZXQgPSAtRU5YSU87XG4mIzQzO1x0XHRnb3RvIG91dF9mcmVlO1xuIFx0fVxuIFxuIFx0LypcbkBAIC04MjAsNiAmIzQzOzgyMSw3IEBAIGludCBrdm1fdmdpY19oeXBfaW5pdCh2b2lkKVxuIFxuIFx0a3ZtX3ZnaWNfZ2xvYmFsX3N0YXRlLm1haW50X2lycSA9IGdpY19rdm1faW5mby1cdTAwM2VtYWludF9pcnE7XG4gXG4mIzQzO291dF9mcmVlOlxuIFx0a2ZyZWUoZ2ljX2t2bV9pbmZvKTtcbiBcdGdpY19rdm1faW5mbyA9IE5VTEw7XG4gXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmMgYi9hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuY1xuaW5kZXggNzRiYWNlMTBhMjJlZC4uYjI1MzAzZDk5MTlmZCAxMDA2NDRcbi0tLSBhL2FyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuY1xuQEAgLTkzLDggJiM0Mzs5Myw5IEBAIHN0cnVjdCB2Z2ljX2lycSAqdmdpY19nZXRfaXJxKHN0cnVjdCBrdm0gKmt2bSwgdTMyIGludGlkKVxuIFx0LyogU1BJcyAqL1xuIFx0aWYgKGludGlkIFx1MDAzZT0gVkdJQ19OUl9QUklWQVRFX0lSUVMgXHUwMDI2XHUwMDI2XG4gXHQgICAgaW50aWQgXHUwMDNjIChrdm0tXHUwMDNlYXJjaC52Z2ljLm5yX3NwaXMgJiM0MzsgVkdJQ19OUl9QUklWQVRFX0lSUVMpKSB7XG4tXHRcdGludGlkID0gYXJyYXlfaW5kZXhfbm9zcGVjKGludGlkLCBrdm0tXHUwMDNlYXJjaC52Z2ljLm5yX3NwaXMgJiM0MzsgVkdJQ19OUl9QUklWQVRFX0lSUVMpO1xuLVx0XHRyZXR1cm4gXHUwMDI2a3ZtLVx1MDAzZWFyY2gudmdpYy5zcGlzW2ludGlkIC0gVkdJQ19OUl9QUklWQVRFX0lSUVNdO1xuJiM0MztcdFx0aW50aWQgLT0gVkdJQ19OUl9QUklWQVRFX0lSUVM7XG4mIzQzO1x0XHRpbnRpZCA9IGFycmF5X2luZGV4X25vc3BlYyhpbnRpZCwga3ZtLVx1MDAzZWFyY2gudmdpYy5ucl9zcGlzKTtcbiYjNDM7XHRcdHJldHVybiBcdTAwMjZrdm0tXHUwMDNlYXJjaC52Z2ljLnNwaXNbaW50aWRdO1xuIFx0fVxuIFxuIFx0LyogTFBJcyAqL1xuQEAgLTExNyw2ICYjNDM7MTE4LDggQEAgc3RydWN0IHZnaWNfaXJxICp2Z2ljX2dldF92Y3B1X2lycShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBpbnRpZClcbiBcdFx0c3dpdGNoICh0eXBlKSB7XG4gXHRcdGNhc2UgS1ZNX0RFVl9UWVBFX0FSTV9WR0lDX1Y1OlxuIFx0XHRcdGludGlkID0gdmdpY192NV9nZXRfaHdpcnFfaWQoaW50aWQpO1xuJiM0MztcdFx0XHRpZiAoaW50aWQgXHUwMDNlPSBWR0lDX1Y1X05SX1BSSVZBVEVfSVJRUylcbiYjNDM7XHRcdFx0XHRyZXR1cm4gTlVMTDtcbiBcdFx0XHRpbnRpZCA9IGFycmF5X2luZGV4X25vc3BlYyhpbnRpZCwgVkdJQ19WNV9OUl9QUklWQVRFX0lSUVMpO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHRkZWZhdWx0OlxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jIGIvZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmNcbmluZGV4IGYzZmNlMGIxZTI1ZDkuLjY3OTQwZWE5ZTM5YjcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmNcbkBAIC02NTEsNiAmIzQzOzY1MSwxOSBAQCBzdGF0aWMgaW50IF9faW5pdCBnaWN2NV9pcnNfb2ZfaW5pdF9hZmZpbml0eShzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUsXG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBcbiYjNDM7c3RhdGljIHZvaWQgX19pbml0IGdpY3Y1X2lyc19jbGVhcl9hZmZpbml0eShzdHJ1Y3QgZ2ljdjVfaXJzX2NoaXBfZGF0YSAqaXJzX2RhdGEpXG4mIzQzO3tcbiYjNDM7XHRpbnQgY3B1O1xuJiM0MztcbiYjNDM7XHRmb3JfZWFjaF9wb3NzaWJsZV9jcHUoY3B1KSB7XG4mIzQzO1x0XHRpZiAocGVyX2NwdShwZXJfY3B1X2lyc19kYXRhLCBjcHUpID09IGlyc19kYXRhKSB7XG4mIzQzO1x0XHRcdHBlcl9jcHUoY3B1X2lhZmZpZCwgY3B1KS5pYWZmaWQgPSAwO1xuJiM0MztcdFx0XHRwZXJfY3B1KGNwdV9pYWZmaWQsIGNwdSkudmFsaWQgPSBmYWxzZTtcbiYjNDM7XHRcdFx0cGVyX2NwdShwZXJfY3B1X2lyc19kYXRhLCBjcHUpID0gTlVMTDtcbiYjNDM7XHRcdH1cbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHZvaWQgaXJzX3NldHVwX3ByaV9iaXRzKHUzMiBpZHIxKVxuIHtcbiBcdHN3aXRjaCAoRklFTERfR0VUKEdJQ1Y1X0lSU19JRFIxX1BSSU9SSVRZX0JJVFMsIGlkcjEpKSB7XG5AQCAtNzczLDYgJiM0Mzs3ODYsNyBAQCBzdGF0aWMgaW50IF9faW5pdCBnaWN2NV9pcnNfb2ZfaW5pdChzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUpXG4gXHRyZXR1cm4gcmV0O1xuIFxuIG91dF9pb21lbTpcbiYjNDM7XHRnaWN2NV9pcnNfY2xlYXJfYWZmaW5pdHkoaXJzX2RhdGEpO1xuIFx0aW91bm1hcChpcnNfYmFzZSk7XG4gb3V0X2VycjpcbiBcdGtmcmVlKGlyc19kYXRhKTtcbkBAIC03ODcsNiAmIzQzOzgwMSw3IEBAIHZvaWQgX19pbml0IGdpY3Y1X2lyc19yZW1vdmUodm9pZClcbiBcdGdpY3Y1X2RlaW5pdF9scGlzKCk7XG4gXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoaXJzX2RhdGEsIHRtcF9kYXRhLCBcdTAwMjZpcnNfbm9kZXMsIGVudHJ5KSB7XG4mIzQzO1x0XHRnaWN2NV9pcnNfY2xlYXJfYWZmaW5pdHkoaXJzX2RhdGEpO1xuIFx0XHRpb3VubWFwKGlyc19kYXRhLVx1MDAzZWlyc19iYXNlKTtcbiBcdFx0bGlzdF9kZWwoXHUwMDI2aXJzX2RhdGEtXHUwMDNlZW50cnkpO1xuIFx0XHRrZnJlZShpcnNfZGF0YSk7XG5AQCAtOTUxLDYgJiM0Mzs5NjYsNyBAQCBzdGF0aWMgaW50IF9faW5pdCBnaWNfYWNwaV9wYXJzZV9tYWR0X2lycyh1bmlvbiBhY3BpX3N1YnRhYmxlX2hlYWRlcnMgKmhlYWRlcixcbiBcdHJldHVybiAwO1xuIFxuIG91dF9tYXA6XG4mIzQzO1x0Z2ljdjVfaXJzX2NsZWFyX2FmZmluaXR5KGlyc19kYXRhKTtcbiBcdGlvdW5tYXAoaXJzX2Jhc2UpO1xuIG91dF9yZWxlYXNlOlxuIFx0cmVsZWFzZV9tZW1fcmVnaW9uKHItXHUwMDNlc3RhcnQsIHJlc291cmNlX3NpemUocikpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LmMgYi9kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS5jXG5pbmRleCBlOWQxNzk1MjM1YTY2Li42YTk5YzU0MWI1NTliIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUuY1xuQEAgLTk4Myw2ICYjNDM7OTgzLDcgQEAgc3RhdGljIHZvaWQgZ2ljdjVfY3B1X2Rpc2FibGVfaW50ZXJydXB0cyh2b2lkKVxuIFxuIFx0Y3IwID0gRklFTERfUFJFUChJQ0NfQ1IwX0VMMV9FTiwgMCk7XG4gXHR3cml0ZV9zeXNyZWdfcyhjcjAsIFNZU19JQ0NfQ1IwX0VMMSk7XG4mIzQzO1x0aXNiKCk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIGdpY3Y1X2NwdV9lbmFibGVfaW50ZXJydXB0cyh2b2lkKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDExOjM0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2Z2ljX2dldF9pcnEmIzM0OywKICAgICYjMzQ7dmdpY19nZXRfdmNwdV9pcnEmIzM0OywKICAgICYjMzQ7a3ZtX3ZnaWNfaW5qZWN0X2lycSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBjcml0aWNhbCBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2Vzc2VzIGluIEtWTSBWR0lDIElSUSBoYW5kbGluZyAoYHZnaWNfZ2V0X2lycWAsIGB2Z2ljX2dldF92Y3B1X2lycWApLCBhIG1lbW9yeSBsZWFrIGluIFZHSUMgaW5pdGlhbGl6YXRpb24sIGFuZCBhZGRzIGEgbWlzc2luZyBtZW1vcnkgYmFycmllciBpbiB0aGUgR0lDdjUgZHJpdmVyLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHJlYWNoYWJsZSBjb3JlIHZpcnR1YWxpemF0aW9uIGFuZCBpbnRlcnJ1cHQgY29udHJvbGxlciBjb2RlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNjJjYjVkY2NkNWZjNmE1NmYyMjgxZTAwZDkzYzNkNjdkNjY2NzEzNgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDEwIDExOjM0OjM2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuYyBiL2FyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pbml0LmMKaW5kZXggOTA3MDU3ODgxYjI2YS4uNjVlMjAzZDZhMmNmNCAxMDA2NDQKLS0tIGEvYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaW5pdC5jCkBAIC03ODcsNyAmIzQzOzc4Nyw4IEBAIGludCBrdm1fdmdpY19oeXBfaW5pdCh2b2lkKQogCiAJaWYgKGhhc19tYXNrICZhbXA7JmFtcDsgIWdpY19rdm1faW5mby0mZ3Q7bWFpbnRfaXJxKSB7CiAJCWt2bV9lcnIoJiMzNDtObyB2Z2ljIG1haW50ZW5hbmNlIGlycVxuJiMzNDspOwotCQlyZXR1cm4gLUVOWElPOwomIzQzOwkJcmV0ID0gLUVOWElPOwomIzQzOwkJZ290byBvdXRfZnJlZTsKIAl9CiAKIAkvKgpAQCAtODIwLDYgJiM0Mzs4MjEsNyBAQCBpbnQga3ZtX3ZnaWNfaHlwX2luaXQodm9pZCkKIAogCWt2bV92Z2ljX2dsb2JhbF9zdGF0ZS5tYWludF9pcnEgPSBnaWNfa3ZtX2luZm8tJmd0O21haW50X2lycTsKIAomIzQzO291dF9mcmVlOgogCWtmcmVlKGdpY19rdm1faW5mbyk7CiAJZ2ljX2t2bV9pbmZvID0gTlVMTDsKIApkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmMgYi9hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYwppbmRleCA3NGJhY2UxMGEyMmVkLi5iMjUzMDNkOTkxOWZkIDEwMDY0NAotLS0gYS9hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYwpAQCAtOTMsOCAmIzQzOzkzLDkgQEAgc3RydWN0IHZnaWNfaXJxICp2Z2ljX2dldF9pcnEoc3RydWN0IGt2bSAqa3ZtLCB1MzIgaW50aWQpCiAJLyogU1BJcyAqLwogCWlmIChpbnRpZCAmZ3Q7PSBWR0lDX05SX1BSSVZBVEVfSVJRUyAmYW1wOyZhbXA7CiAJICAgIGludGlkICZsdDsgKGt2bS0mZ3Q7YXJjaC52Z2ljLm5yX3NwaXMgJiM0MzsgVkdJQ19OUl9QUklWQVRFX0lSUVMpKSB7Ci0JCWludGlkID0gYXJyYXlfaW5kZXhfbm9zcGVjKGludGlkLCBrdm0tJmd0O2FyY2gudmdpYy5ucl9zcGlzICYjNDM7IFZHSUNfTlJfUFJJVkFURV9JUlFTKTsKLQkJcmV0dXJuICZhbXA7a3ZtLSZndDthcmNoLnZnaWMuc3Bpc1tpbnRpZCAtIFZHSUNfTlJfUFJJVkFURV9JUlFTXTsKJiM0MzsJCWludGlkIC09IFZHSUNfTlJfUFJJVkFURV9JUlFTOwomIzQzOwkJaW50aWQgPSBhcnJheV9pbmRleF9ub3NwZWMoaW50aWQsIGt2bS0mZ3Q7YXJjaC52Z2ljLm5yX3NwaXMpOwomIzQzOwkJcmV0dXJuICZhbXA7a3ZtLSZndDthcmNoLnZnaWMuc3Bpc1tpbnRpZF07CiAJfQogCiAJLyogTFBJcyAqLwpAQCAtMTE3LDYgJiM0MzsxMTgsOCBAQCBzdHJ1Y3QgdmdpY19pcnEgKnZnaWNfZ2V0X3ZjcHVfaXJxKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTMyIGludGlkKQogCQlzd2l0Y2ggKHR5cGUpIHsKIAkJY2FzZSBLVk1fREVWX1RZUEVfQVJNX1ZHSUNfVjU6CiAJCQlpbnRpZCA9IHZnaWNfdjVfZ2V0X2h3aXJxX2lkKGludGlkKTsKJiM0MzsJCQlpZiAoaW50aWQgJmd0Oz0gVkdJQ19WNV9OUl9QUklWQVRFX0lSUVMpCiYjNDM7CQkJCXJldHVybiBOVUxMOwogCQkJaW50aWQgPSBhcnJheV9pbmRleF9ub3NwZWMoaW50aWQsIFZHSUNfVjVfTlJfUFJJVkFURV9JUlFTKTsKIAkJCWJyZWFrOwogCQlkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMgYi9kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYwppbmRleCBmM2ZjZTBiMWUyNWQ5Li42Nzk0MGVhOWUzOWI3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYwpAQCAtNjUxLDYgJiM0Mzs2NTEsMTkgQEAgc3RhdGljIGludCBfX2luaXQgZ2ljdjVfaXJzX29mX2luaXRfYWZmaW5pdHkoc3RydWN0IGRldmljZV9ub2RlICpub2RlLAogCXJldHVybiByZXQ7CiB9CiAKJiM0MztzdGF0aWMgdm9pZCBfX2luaXQgZ2ljdjVfaXJzX2NsZWFyX2FmZmluaXR5KHN0cnVjdCBnaWN2NV9pcnNfY2hpcF9kYXRhICppcnNfZGF0YSkKJiM0Mzt7CiYjNDM7CWludCBjcHU7CiYjNDM7CiYjNDM7CWZvcl9lYWNoX3Bvc3NpYmxlX2NwdShjcHUpIHsKJiM0MzsJCWlmIChwZXJfY3B1KHBlcl9jcHVfaXJzX2RhdGEsIGNwdSkgPT0gaXJzX2RhdGEpIHsKJiM0MzsJCQlwZXJfY3B1KGNwdV9pYWZmaWQsIGNwdSkuaWFmZmlkID0gMDsKJiM0MzsJCQlwZXJfY3B1KGNwdV9pYWZmaWQsIGNwdSkudmFsaWQgPSBmYWxzZTsKJiM0MzsJCQlwZXJfY3B1KHBlcl9jcHVfaXJzX2RhdGEsIGNwdSkgPSBOVUxMOwomIzQzOwkJfQomIzQzOwl9CiYjNDM7fQomIzQzOwogc3RhdGljIHZvaWQgaXJzX3NldHVwX3ByaV9iaXRzKHUzMiBpZHIxKQogewogCXN3aXRjaCAoRklFTERfR0VUKEdJQ1Y1X0lSU19JRFIxX1BSSU9SSVRZX0JJVFMsIGlkcjEpKSB7CkBAIC03NzMsNiAmIzQzOzc4Niw3IEBAIHN0YXRpYyBpbnQgX19pbml0IGdpY3Y1X2lyc19vZl9pbml0KHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSkKIAlyZXR1cm4gcmV0OwogCiBvdXRfaW9tZW06CiYjNDM7CWdpY3Y1X2lyc19jbGVhcl9hZmZpbml0eShpcnNfZGF0YSk7CiAJaW91bm1hcChpcnNfYmFzZSk7CiBvdXRfZXJyOgogCWtmcmVlKGlyc19kYXRhKTsKQEAgLTc4Nyw2ICYjNDM7ODAxLDcgQEAgdm9pZCBfX2luaXQgZ2ljdjVfaXJzX3JlbW92ZSh2b2lkKQogCWdpY3Y1X2RlaW5pdF9scGlzKCk7CiAKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoaXJzX2RhdGEsIHRtcF9kYXRhLCAmYW1wO2lyc19ub2RlcywgZW50cnkpIHsKJiM0MzsJCWdpY3Y1X2lyc19jbGVhcl9hZmZpbml0eShpcnNfZGF0YSk7CiAJCWlvdW5tYXAoaXJzX2RhdGEtJmd0O2lyc19iYXNlKTsKIAkJbGlzdF9kZWwoJmFtcDtpcnNfZGF0YS0mZ3Q7ZW50cnkpOwogCQlrZnJlZShpcnNfZGF0YSk7CkBAIC05NTEsNiAmIzQzOzk2Niw3IEBAIHN0YXRpYyBpbnQgX19pbml0IGdpY19hY3BpX3BhcnNlX21hZHRfaXJzKHVuaW9uIGFjcGlfc3VidGFibGVfaGVhZGVycyAqaGVhZGVyLAogCXJldHVybiAwOwogCiBvdXRfbWFwOgomIzQzOwlnaWN2NV9pcnNfY2xlYXJfYWZmaW5pdHkoaXJzX2RhdGEpOwogCWlvdW5tYXAoaXJzX2Jhc2UpOwogb3V0X3JlbGVhc2U6CiAJcmVsZWFzZV9tZW1fcmVnaW9uKHItJmd0O3N0YXJ0LCByZXNvdXJjZV9zaXplKHIpKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LmMgYi9kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS5jCmluZGV4IGU5ZDE3OTUyMzVhNjYuLjZhOTljNTQxYjU1OWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUuYwpAQCAtOTgzLDYgJiM0Mzs5ODMsNyBAQCBzdGF0aWMgdm9pZCBnaWN2NV9jcHVfZGlzYWJsZV9pbnRlcnJ1cHRzKHZvaWQpCiAKIAljcjAgPSBGSUVMRF9QUkVQKElDQ19DUjBfRUwxX0VOLCAwKTsKIAl3cml0ZV9zeXNyZWdfcyhjcjAsIFNZU19JQ0NfQ1IwX0VMMSk7CiYjNDM7CWlzYigpOwogfQogCiBzdGF0aWMgdm9pZCBnaWN2NV9jcHVfZW5hYmxlX2ludGVycnVwdHModm9pZCkKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTE6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzU1OAoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDE3NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgVGhpcyBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIEkgc2VlIGl0JiMzOTtzIHRvdWNoaW5nIHNvbWUgY3JpdGljYWwgYXJlYXM6IGBhcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaW5pdC5jYCwgYGFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jYCwgYGRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jYCwgYW5kIGBkcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS5jYC4gTXkgc3BpZGV5IHNlbnNlcyBhcmUgYWxyZWFkeSB0aW5nbGluZzsgYW55IG1vZGlmaWNhdGlvbiB0byB0aGUgS1ZNIFZHSUMgYW5kIEdJQyBkcml2ZXJzIG5lZWRzIGNhcmVmdWwgcmV2aWV3LiBUaGUgZGVzY3JpcHRpb24gbWVudGlvbnMgaXQmIzM5O3MgZml4aW5nIG1lbW9yeSBsZWFrcywgcG90ZW50aWFsIGFycmF5IGluZGV4IG91dC1vZi1ib3VuZHMgZXJyb3JzLCBhbmQgaW50cm9kdWNpbmcgYW4gYGlzYigpYCBpbnN0cnVjdGlvbi4gU29saWQgZnVuY3Rpb25hbCBjaGFuZ2VzLCBidXQgSSBuZWVkIHRvIGRpdmUgZGVlcGVyLgoKTWVtb3J5IGxlYWtzIGFuZCBib3VuZHMgY2hlY2tzIGFyZSBhbHdheXMgZ29vZCB0byBzZWUgYWRkcmVzc2VkLCBlc3BlY2lhbGx5IGluIGtlcm5lbCBjb2RlLiBBbiBgaXNiKClgIGltcGxpZXMgbWVtb3J5IGJhcnJpZXIgaW1wbGljYXRpb25zLCB3aGljaCBpcyBpbXBvcnRhbnQgZm9yIGludGVycnVwdCBoYW5kbGluZy4gQWxsIG9mIHRoZXNlIGZpeGVzIHJlcXVpcmUgdGhvcm91Z2ggdGVzdGluZy4KClRoZSByZWZlcmVuY2UgdG8gR0lDdjUgcGlxdWVzIG15IGludGVyZXN0LiBHSUN2NSwgcmVhbGx5PyBJIHNob3VsZCBwcm9iYWJseSB2ZXJpZnkgdGhhdCBgZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUuY2AgKmFjdHVhbGx5KiBleGlzdHMgaW4gdGhlIGtlcm5lbCBhbmQgaXNuJiMzOTt0IHNvbWUgc3RhbGUgZmlsZS4gQSBxdWljayBjaGVjayBvZiB0aGUga2VybmVsIHRyZWUgaXMgaW4gb3JkZXIgYmVmb3JlIHByb2NlZWRpbmcgYW55IGZ1cnRoZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTE6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Z2ljdjUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2lycWNoaXAvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxNjQ1IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy0yNS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjI2OnN0YXRpYyBERUZJTkVfUEVSX0NQVV9SRUFEX01PU1RMWShzdHJ1Y3QgZ2ljdjVfaXJzX2NoaXBfZGF0YSAqLCBwZXJfY3B1X2lyc19kYXRhKTtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTI3LXN0YXRpYyBMSVNUX0hFQUQoaXJzX25vZGVzKTtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTI4LVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6Mjk6c3RhdGljIHUzMiBpcnNfcmVhZGxfcmVsYXhlZChzdHJ1Y3QgZ2ljdjVfaXJzX2NoaXBfZGF0YSAqaXJzX2RhdGEsXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy0zMC1cdFx0XHQgICAgIGNvbnN0IHUzMiByZWdfb2Zmc2V0KVxuLS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTM0LVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6MzU6c3RhdGljIHZvaWQgaXJzX3dyaXRlbF9yZWxheGVkKHN0cnVjdCBnaWN2NV9pcnNfY2hpcF9kYXRhICppcnNfZGF0YSxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTM2LVx0XHRcdCAgICAgICBjb25zdCB1MzIgdmFsLCBjb25zdCB1MzIgcmVnX29mZnNldClcbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy00MC1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjQxOnN0YXRpYyB1NjQgaXJzX3JlYWRxX3JlbGF4ZWQoc3RydWN0IGdpY3Y1X2lyc19jaGlwX2RhdGEgKmlyc19kYXRhLFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNDItXHRcdFx0ICAgICBjb25zdCB1MzIgcmVnX29mZnNldClcbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy00Ni1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjQ3OnN0YXRpYyB2b2lkIGlyc193cml0ZXFfcmVsYXhlZChzdHJ1Y3QgZ2ljdjVfaXJzX2NoaXBfZGF0YSAqaXJzX2RhdGEsXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy00OC1cdFx0XHQgICAgICAgY29uc3QgdTY0IHZhbCwgY29uc3QgdTMyIHJlZ19vZmZzZXQpXG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNTMtLypcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjU0OiAqIFRoZSBwb2xsaW5nIHdhaXQgKGluIGdpY3Y1X3dhaXRfZm9yX29wX3NfYXRvbWljKCkpIG9uIGEgR0lDIHJlZ2lzdGVyXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy01NS0gKiBwcm92aWRlcyB0aGUgbWVtb3J5IGJhcnJpZXJzICh0aHJvdWdoIE1NSU8gYWNjZXNzb3JzKVxuLS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTU3LSAqL1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6NTg6c3RhdGljIGludCBnaWN2NV9pcnNfaXN0X3N5bmNocm9uaXNlKHN0cnVjdCBnaWN2NV9pcnNfY2hpcF9kYXRhICppcnNfZGF0YSlcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTU5LXtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjYwOlx0cmV0dXJuIGdpY3Y1X3dhaXRfZm9yX29wX2F0b21pYyhpcnNfZGF0YS1cdTAwM2VpcnNfYmFzZSwgR0lDVjVfSVJTX0lTVF9TVEFUVVNSLFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNjEtXHRcdFx0XHRcdEdJQ1Y1X0lSU19JU1RfU1RBVFVTUl9JRExFLCBOVUxMKTtcbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy02My1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjY0OnN0YXRpYyBpbnQgX19pbml0IGdpY3Y1X2lyc19pbml0X2lzdF9saW5lYXIoc3RydWN0IGdpY3Y1X2lyc19jaGlwX2RhdGEgKmlyc19kYXRhLFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNjUtXHRcdFx0XHRcdCAgICB1bnNpZ25lZCBpbnQgbHBpX2lkX2JpdHMsXG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtMTEwLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6MTExOlx0Z2ljdjVfZ2xvYmFsX2RhdGEuaXN0LmwyID0gZmFsc2U7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy0xMTItXG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtMTE2LVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6MTE3Olx0cmV0ID0gZ2ljdjVfaXJzX2lzdF9zeW5jaHJvbmlzZShpcnNfZGF0YSk7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy0xMTgtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtMTI2LVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6MTI3OnN0YXRpYyBpbnQgX19pbml0IGdpY3Y1X2lyc19pbml0X2lzdF90d29fbGV2ZWwoc3RydWN0IGdpY3Y1X2lyc19jaGlwX2RhdGEgKmlyc19kYXRhLFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtMTI4LVx0XHRcdFx0XHQgICAgICAgdW5zaWduZWQgaW50IGxwaV9pZF9iaXRzLFxuLS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTE2NC1cdCAqL1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6MTY1Olx0Z2ljdjVfZ2xvYmFsX2RhdGEuaXN0LmwyX3NpemUgPSBCSVQoMTEgJiM0MzsgKDIgKiBsMnN6KSAmIzQzOyAxKTtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjE2NjpcdGdpY3Y1X2dsb2JhbF9kYXRhLmlzdC5sMl9iaXRzID0gKDEwIC0gaXN0c3opICYjNDM7ICgyICogbDJzeik7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzoxNjc6XHRnaWN2NV9nbG9iYWxfZGF0YS5pc3QubDFpc3RfYWRkciA9IGwxaXN0O1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6MTY4Olx0Z2ljdjVfZ2xvYmFsX2RhdGEuaXN0LmwyID0gdHJ1ZTtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTE2OS1cbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy0xNzMtXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzoxNzQ6XHRyZXQgPSBnaWN2NV9pcnNfaXN0X3N5bmNocm9uaXNlKGlyc19kYXRhKTtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTE3NS1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy0xODgtICovXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzoxODk6aW50IGdpY3Y1X2lyc19pc3RlX2FsbG9jKGNvbnN0IHUzMiBscGkpXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy0xOTAte1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6MTkxOlx0c3RydWN0IGdpY3Y1X2lyc19jaGlwX2RhdGEgKmlyc19kYXRhO1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtMTkyLVx0dW5zaWduZWQgaW50IGluZGV4O1xuLS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTE5OC1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjE5OTpcdGlmICghZ2ljdjVfZ2xvYmFsX2RhdGEuaXN0LmwyKVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtMjAwLVx0XHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy0yMDUtXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzoyMDY6XHRsMnNpemUgPSBnaWN2NV9nbG9iYWxfZGF0YS5pc3QubDJfc2l6ZTtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjIwNzpcdGwyYml0cyA9IGdpY3Y1X2dsb2JhbF9kYXRhLmlzdC5sMl9iaXRzO1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6MjA4Olx0bDFpc3QgPSBnaWN2NV9nbG9iYWxfZGF0YS5pc3QubDFpc3RfYWRkcjtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTIwOS1cdGluZGV4ID0gbHBpIFx1MDAzZVx1MDAzZSBsMmJpdHM7XG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtMjMxLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6MjMyOlx0cmV0ID0gZ2ljdjVfaXJzX2lzdF9zeW5jaHJvbmlzZShpcnNfZGF0YSk7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy0yMzMtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtMjQ1LVx0XHQvKlxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6MjQ2Olx0XHQgKiBnaWN2NV9pcnNfaXN0X3N5bmNocm9uaXNlKCkgaW5jbHVkZXMgbWVtb3J5XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy0yNDctXHRcdCAqIGJhcnJpZXJzIChNTUlPIGFjY2Vzc29ycykgcmVxdWlyZWQgdG8gZ3VhcmFudGVlIHRoYXQgdGhlXG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtMjY4LSAqL1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6MjY5OnN0YXRpYyB1bnNpZ25lZCBpbnQgZ2ljdjVfaXJzX2wyX3N6KHUzMiBpZHIyKVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtMjcwLXtcbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy0yOTEtXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzoyOTI6c3RhdGljIGludCBfX2luaXQgZ2ljdjVfaXJzX2luaXRfaXN0KHN0cnVjdCBnaWN2NV9pcnNfY2hpcF9kYXRhICppcnNfZGF0YSlcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTI5My17XG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtMzMwLVx0ICovXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzozMzE6XHRscGlfaWRfYml0cyA9IG1pbihscGlfaWRfYml0cywgZ2ljdjVfZ2xvYmFsX2RhdGEuY3B1aWZfaWRfYml0cyk7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy0zMzItXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy0zMzMtXHRpZiAodHdvX2xldmVscylcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjMzNDpcdFx0bDJzeiA9IGdpY3Y1X2lyc19sMl9zeihpZHIyKTtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTMzNS1cbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy0zNTMtXHRpZiAodHdvX2xldmVscyBcdTAwMjZcdTAwMjYgKGxwaV9pZF9iaXRzIFx1MDAzZSAoKDEwIC0gbDJfaXN0ZV9zeikgJiM0MzsgKDIgKiBsMnN6KSkpKSB7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzozNTQ6XHRcdHJldCA9IGdpY3Y1X2lyc19pbml0X2lzdF90d29fbGV2ZWwoaXJzX2RhdGEsIGxwaV9pZF9iaXRzLFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtMzU1LVx0XHRcdFx0XHRcdCAgIGwyX2lzdGVfc3osIGwyc3opO1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtMzU2LVx0fSBlbHNlIHtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjM1NzpcdFx0cmV0ID0gZ2ljdjVfaXJzX2luaXRfaXN0X2xpbmVhcihpcnNfZGF0YSwgbHBpX2lkX2JpdHMsXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy0zNTgtXHRcdFx0XHRcdFx0bDJfaXN0ZV9zeik7XG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtMzYyLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6MzYzOlx0Z2ljdjVfaW5pdF9scGlzKEJJVChscGlfaWRfYml0cykpO1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtMzY0LVxuLS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jPTM3Mz1zdGF0aWMgREVGSU5FX1BFUl9DUFUoc3RydWN0IGlhZmZpZF9lbnRyeSwgY3B1X2lhZmZpZCk7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy0zNzQtXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzozNzU6aW50IGdpY3Y1X2lyc19jcHVfdG9faWFmZmlkKGludCBjcHVpZCwgdTE2ICppYWZmaWQpXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy0zNzYte1xuLS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTM4Ni1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjM4NzpzdHJ1Y3QgZ2ljdjVfaXJzX2NoaXBfZGF0YSAqZ2ljdjVfaXJzX2xvb2t1cF9ieV9zcGlfaWQodTMyIHNwaV9pZClcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTM4OC17XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzozODk6XHRzdHJ1Y3QgZ2ljdjVfaXJzX2NoaXBfZGF0YSAqaXJzX2RhdGE7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy0zOTAtXHR1MzIgbWluLCBtYXg7XG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNDA0LVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6NDA1OnN0YXRpYyBpbnQgZ2ljdjVfaXJzX3dhaXRfZm9yX3NwaV9vcChzdHJ1Y3QgZ2ljdjVfaXJzX2NoaXBfZGF0YSAqaXJzX2RhdGEpXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy00MDYte1xuLS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTQwOS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjQxMDpcdHJldCA9IGdpY3Y1X3dhaXRfZm9yX29wX2F0b21pYyhpcnNfZGF0YS1cdTAwM2VpcnNfYmFzZSwgR0lDVjVfSVJTX1NQSV9TVEFUVVNSLFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNDExLVx0XHRcdFx0ICAgICAgIEdJQ1Y1X0lSU19TUElfU1RBVFVTUl9JRExFLCBcdTAwMjZzdGF0dXNyKTtcbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy00MTctXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo0MTg6c3RhdGljIGludCBnaWN2NV9pcnNfd2FpdF9mb3JfaXJzX3BlKHN0cnVjdCBnaWN2NV9pcnNfY2hpcF9kYXRhICppcnNfZGF0YSxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTQxOS1cdFx0XHRcdCAgICAgYm9vbCBzZWxyKVxuLS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTQyNC1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjQyNTpcdHJldCA9IGdpY3Y1X3dhaXRfZm9yX29wX2F0b21pYyhpcnNfZGF0YS1cdTAwM2VpcnNfYmFzZSwgR0lDVjVfSVJTX1BFX1NUQVRVU1IsXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy00MjYtXHRcdFx0XHQgICAgICAgR0lDVjVfSVJTX1BFX1NUQVRVU1JfSURMRSwgXHUwMDI2c3RhdHVzcik7XG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNDM1LVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6NDM2OnN0YXRpYyBpbnQgZ2ljdjVfaXJzX3dhaXRfZm9yX3BlX3NlbHIoc3RydWN0IGdpY3Y1X2lyc19jaGlwX2RhdGEgKmlyc19kYXRhKVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNDM3LXtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjQzODpcdHJldHVybiBnaWN2NV9pcnNfd2FpdF9mb3JfaXJzX3BlKGlyc19kYXRhLCB0cnVlKTtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTQzOS19XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy00NDAtXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo0NDE6c3RhdGljIGludCBnaWN2NV9pcnNfd2FpdF9mb3JfcGVfY3IwKHN0cnVjdCBnaWN2NV9pcnNfY2hpcF9kYXRhICppcnNfZGF0YSlcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTQ0Mi17XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo0NDM6XHRyZXR1cm4gZ2ljdjVfaXJzX3dhaXRfZm9yX2lyc19wZShpcnNfZGF0YSwgZmFsc2UpO1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNDQ0LX1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTQ0NS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjQ0NjppbnQgZ2ljdjVfc3BpX2lycV9zZXRfdHlwZShzdHJ1Y3QgaXJxX2RhdGEgKmQsIHVuc2lnbmVkIGludCB0eXBlKVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNDQ3LXtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjQ0ODpcdHN0cnVjdCBnaWN2NV9pcnNfY2hpcF9kYXRhICppcnNfZGF0YSA9IGQtXHUwMDNlY2hpcF9kYXRhO1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNDQ5LVx0dTMyIHNlbHIsIGNmZ3I7XG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNDc0LVx0aXJzX3dyaXRlbF9yZWxheGVkKGlyc19kYXRhLCBzZWxyLCBHSUNWNV9JUlNfU1BJX1NFTFIpO1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6NDc1Olx0cmV0ID0gZ2ljdjVfaXJzX3dhaXRfZm9yX3NwaV9vcChpcnNfZGF0YSk7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy00NzYtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTQ4MS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjQ4MjpcdHJldHVybiBnaWN2NV9pcnNfd2FpdF9mb3Jfc3BpX29wKGlyc19kYXRhKTtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTQ4My19XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy00ODQtXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo0ODU6c3RhdGljIGludCBnaWN2NV9pcnNfd2FpdF9mb3JfaWRsZShzdHJ1Y3QgZ2ljdjVfaXJzX2NoaXBfZGF0YSAqaXJzX2RhdGEpXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy00ODYte1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6NDg3Olx0cmV0dXJuIGdpY3Y1X3dhaXRfZm9yX29wX2F0b21pYyhpcnNfZGF0YS1cdTAwM2VpcnNfYmFzZSwgR0lDVjVfSVJTX0NSMCxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTQ4OC1cdFx0XHRcdFx0R0lDVjVfSVJTX0NSMF9JRExFLCBOVUxMKTtcbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy00OTAtXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo0OTE6dm9pZCBnaWN2NV9pcnNfc3luY3Iodm9pZClcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTQ5Mi17XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo0OTM6XHRzdHJ1Y3QgZ2ljdjVfaXJzX2NoaXBfZGF0YSAqaXJzX2RhdGE7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy00OTQtXHR1MzIgc3luY3I7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy00OTUtXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo0OTY6XHRpcnNfZGF0YSA9IGxpc3RfZmlyc3RfZW50cnlfb3JfbnVsbChcdTAwMjZpcnNfbm9kZXMsIHN0cnVjdCBnaWN2NV9pcnNfY2hpcF9kYXRhLCBlbnRyeSk7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy00OTctXHRpZiAoV0FSTl9PTl9PTkNFKCFpcnNfZGF0YSkpXG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNTAyLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6NTAzOlx0Z2ljdjVfd2FpdF9mb3Jfb3AoaXJzX2RhdGEtXHUwMDNlaXJzX2Jhc2UsIEdJQ1Y1X0lSU19TWU5DX1NUQVRVU1IsXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy01MDQtXHRcdFx0ICBHSUNWNV9JUlNfU1lOQ19TVEFUVVNSX0lETEUpO1xuLS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTUwNi1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjUwNzppbnQgZ2ljdjVfaXJzX3JlZ2lzdGVyX2NwdShpbnQgY3B1aWQpXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy01MDgte1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6NTA5Olx0c3RydWN0IGdpY3Y1X2lyc19jaGlwX2RhdGEgKmlyc19kYXRhO1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNTEwLVx0dTMyIHNlbHIsIGNyMDtcbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy01MTMtXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo1MTQ6XHRyZXQgPSBnaWN2NV9pcnNfY3B1X3RvX2lhZmZpZChjcHVpZCwgXHUwMDI2aWFmZmlkKTtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTUxNS1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy01MjgtXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo1Mjk6XHRyZXQgPSBnaWN2NV9pcnNfd2FpdF9mb3JfcGVfc2VscihpcnNfZGF0YSk7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy01MzAtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNTM3LVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6NTM4Olx0cmV0ID0gZ2ljdjVfaXJzX3dhaXRfZm9yX3BlX2NyMChpcnNfZGF0YSk7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy01MzktXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTU0Ni1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjU0NzpzdGF0aWMgdm9pZCBfX2luaXQgZ2ljdjVfaXJzX2luaXRfYmFzZXMoc3RydWN0IGdpY3Y1X2lyc19jaGlwX2RhdGEgKmlyc19kYXRhLFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNTQ4LVx0XHRcdFx0XHR2b2lkIF9faW9tZW0gKmlyc19iYXNlLFxuLS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTU5MS1cdGlyc193cml0ZWxfcmVsYXhlZChpcnNfZGF0YSwgY3IwLCBHSUNWNV9JUlNfQ1IwKTtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjU5MjpcdGdpY3Y1X2lyc193YWl0X2Zvcl9pZGxlKGlyc19kYXRhKTtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTU5My19XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy01OTQtXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo1OTU6c3RhdGljIGludCBfX2luaXQgZ2ljdjVfaXJzX29mX2luaXRfYWZmaW5pdHkoc3RydWN0IGRldmljZV9ub2RlICpub2RlLFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6NTk2Olx0XHRcdFx0XHQgICAgIHN0cnVjdCBnaWN2NV9pcnNfY2hpcF9kYXRhICppcnNfZGF0YSxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTU5Ny1cdFx0XHRcdFx0ICAgICB1OCBpYWZmaWRfYml0cylcbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy02NTMtXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo2NTQ6c3RhdGljIHZvaWQgX19pbml0IGdpY3Y1X2lyc19jbGVhcl9hZmZpbml0eShzdHJ1Y3QgZ2ljdjVfaXJzX2NoaXBfZGF0YSAqaXJzX2RhdGEpXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy02NTUte1xuLS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jPTY2Nz1zdGF0aWMgdm9pZCBpcnNfc2V0dXBfcHJpX2JpdHModTMyIGlkcjEpXG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNjcwLVx0Y2FzZSBHSUNWNV9JUlNfSURSMV9QUklPUklUWV9CSVRTXzFCSVRTOlxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6NjcxOlx0XHRnaWN2NV9nbG9iYWxfZGF0YS5pcnNfcHJpX2JpdHMgPSAxO1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNjcyLVx0XHRicmVhaztcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTY3My1cdGNhc2UgR0lDVjVfSVJTX0lEUjFfUFJJT1JJVFlfQklUU18yQklUUzpcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjY3NDpcdFx0Z2ljdjVfZ2xvYmFsX2RhdGEuaXJzX3ByaV9iaXRzID0gMjtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTY3NS1cdFx0YnJlYWs7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy02NzYtXHRjYXNlIEdJQ1Y1X0lSU19JRFIxX1BSSU9SSVRZX0JJVFNfM0JJVFM6XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo2Nzc6XHRcdGdpY3Y1X2dsb2JhbF9kYXRhLmlyc19wcmlfYml0cyA9IDM7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy02NzgtXHRcdGJyZWFrO1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNjc5LVx0Y2FzZSBHSUNWNV9JUlNfSURSMV9QUklPUklUWV9CSVRTXzRCSVRTOlxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6NjgwOlx0XHRnaWN2NV9nbG9iYWxfZGF0YS5pcnNfcHJpX2JpdHMgPSA0O1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNjgxLVx0XHRicmVhaztcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTY4Mi1cdGNhc2UgR0lDVjVfSVJTX0lEUjFfUFJJT1JJVFlfQklUU181QklUUzpcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjY4MzpcdFx0Z2ljdjVfZ2xvYmFsX2RhdGEuaXJzX3ByaV9iaXRzID0gNTtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTY4NC1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNjg3LVx0XHRcdEZJRUxEX0dFVChHSUNWNV9JUlNfSURSMV9QUklPUklUWV9CSVRTLCBpZHIxKSk7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo2ODg6XHRcdGdpY3Y1X2dsb2JhbF9kYXRhLmlyc19wcmlfYml0cyA9IDE7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy02ODktXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTY5Mi1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjY5MzpzdGF0aWMgaW50IF9faW5pdCBnaWN2NV9pcnNfaW5pdChzdHJ1Y3QgZ2ljdjVfaXJzX2NoaXBfZGF0YSAqaXJzX2RhdGEpXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy02OTQte1xuLS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTcxNC1cdFx0aWRyID0gaXJzX3JlYWRsX3JlbGF4ZWQoaXJzX2RhdGEsIEdJQ1Y1X0lSU19JRFIwKTtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjcxNTpcdFx0Z2ljdjVfZ2xvYmFsX2RhdGEudmlydF9jYXBhYmxlID0gISFGSUVMRF9HRVQoR0lDVjVfSVJTX0lEUjBfVklSVCwgaWRyKTtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTcxNi1cbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy03MjItXHRcdHNwaV9jb3VudCA9IEZJRUxEX0dFVChHSUNWNV9JUlNfSURSNV9TUElfUkFOR0UsIGlkcik7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo3MjM6XHRcdGdpY3Y1X2dsb2JhbF9kYXRhLmdsb2JhbF9zcGlfY291bnQgPSBzcGlfY291bnQ7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy03MjQtXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo3MjU6XHRcdGdpY3Y1X2luaXRfbHBpX2RvbWFpbigpO1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNzI2LVxuLS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTczNC1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjczNTpzdGF0aWMgaW50IF9faW5pdCBnaWN2NV9pcnNfb2ZfaW5pdChzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUpXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy03MzYte1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6NzM3Olx0c3RydWN0IGdpY3Y1X2lyc19jaGlwX2RhdGEgKmlyc19kYXRhO1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNzM4LVx0dm9pZCBfX2lvbWVtICppcnNfYmFzZTtcbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy03NjItXHRpcnNfZGF0YS1cdTAwM2Vmd25vZGUgPSBvZl9md25vZGVfaGFuZGxlKG5vZGUpO1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6NzYzOlx0Z2ljdjVfaXJzX2luaXRfYmFzZXMoaXJzX2RhdGEsIGlyc19iYXNlLCBvZl9wcm9wZXJ0eV9yZWFkX2Jvb2wobm9kZSwgXCYjMzQ7ZG1hLW5vbmNvaGVyZW50XCYjMzQ7KSk7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy03NjQtXG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNzY3LVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6NzY4Olx0cmV0ID0gZ2ljdjVfaXJzX29mX2luaXRfYWZmaW5pdHkobm9kZSwgaXJzX2RhdGEsIGlhZmZpZF9iaXRzKTtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTc2OS1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy03NzMtXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo3NzQ6XHRyZXQgPSBnaWN2NV9pcnNfaW5pdChpcnNfZGF0YSk7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy03NzUtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTc4OC1vdXRfaW9tZW06XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo3ODk6XHRnaWN2NV9pcnNfY2xlYXJfYWZmaW5pdHkoaXJzX2RhdGEpO1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNzkwLVx0aW91bm1hcChpcnNfYmFzZSk7XG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNzk1LVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6Nzk2OnZvaWQgX19pbml0IGdpY3Y1X2lyc19yZW1vdmUodm9pZClcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTc5Ny17XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo3OTg6XHRzdHJ1Y3QgZ2ljdjVfaXJzX2NoaXBfZGF0YSAqaXJzX2RhdGEsICp0bXBfZGF0YTtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTc5OS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjgwMDpcdGdpY3Y1X2ZyZWVfbHBpX2RvbWFpbigpO1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6ODAxOlx0Z2ljdjVfZGVpbml0X2xwaXMoKTtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTgwMi1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTgwMy1cdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShpcnNfZGF0YSwgdG1wX2RhdGEsIFx1MDAyNmlyc19ub2RlcywgZW50cnkpIHtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjgwNDpcdFx0Z2ljdjVfaXJzX2NsZWFyX2FmZmluaXR5KGlyc19kYXRhKTtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTgwNS1cdFx0aW91bm1hcChpcnNfZGF0YS1cdTAwM2VpcnNfYmFzZSk7XG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtODEwLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6ODExOmludCBfX2luaXQgZ2ljdjVfaXJzX2VuYWJsZSh2b2lkKVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtODEyLXtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjgxMzpcdHN0cnVjdCBnaWN2NV9pcnNfY2hpcF9kYXRhICppcnNfZGF0YTtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTgxNC1cdGludCByZXQ7XG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtODE2LVx0aXJzX2RhdGEgPSBsaXN0X2ZpcnN0X2VudHJ5X29yX251bGwoXHUwMDI2aXJzX25vZGVzLFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6ODE3Olx0XHRcdFx0XHQgICAgc3RydWN0IGdpY3Y1X2lyc19jaGlwX2RhdGEsIGVudHJ5KTtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTgxOC1cdGlmICghaXJzX2RhdGEpXG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtODIwLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6ODIxOlx0cmV0ID0gZ2ljdjVfaXJzX2luaXRfaXN0KGlyc19kYXRhKTtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTgyMi1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy04MjktXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo4MzA6dm9pZCBfX2luaXQgZ2ljdjVfaXJzX2l0c19wcm9iZSh2b2lkKVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtODMxLXtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjgzMjpcdHN0cnVjdCBnaWN2NV9pcnNfY2hpcF9kYXRhICppcnNfZGF0YTtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTgzMy1cbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy04MzUtXHRcdGxpc3RfZm9yX2VhY2hfZW50cnkoaXJzX2RhdGEsIFx1MDAyNmlyc19ub2RlcywgZW50cnkpXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo4MzY6XHRcdFx0Z2ljdjVfaXRzX29mX3Byb2JlKHRvX29mX25vZGUoaXJzX2RhdGEtXHUwMDNlZndub2RlKSk7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy04MzctXHRlbHNlXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo4Mzg6XHRcdGdpY3Y1X2l0c19hY3BpX3Byb2JlKCk7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy04MzktfVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtODQwLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6ODQxOmludCBfX2luaXQgZ2ljdjVfaXJzX29mX3Byb2JlKHN0cnVjdCBkZXZpY2Vfbm9kZSAqcGFyZW50KVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtODQyLXtcbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy04NDktXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo4NTA6XHRcdHJldCA9IGdpY3Y1X2lyc19vZl9pbml0KG5wKTtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTg1MS1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy04NjAtI2RlZmluZSBBQ1BJX0dJQ1Y1X0lSU19NRU1fU0laRSAoU1pfNjRLKVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6ODYxOnN0YXRpYyBzdHJ1Y3QgZ2ljdjVfaXJzX2NoaXBfZGF0YSAqY3VycmVudF9pcnNfZGF0YSBfX2luaXRkYXRhO1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtODYyLXN0YXRpYyBpbnQgY3VycmVudF9pcnNpZCBfX2luaXRkYXRhID0gLTE7XG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM9ODY1PXN0YXRpYyBpbnQgX19pbml0IGdpY19hY3BpX3BhcnNlX2lhZmZpZCh1bmlvbiBhY3BpX3N1YnRhYmxlX2hlYWRlcnMgKmhlYWRlcixcbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy04OTQtXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo4OTU6c3RhdGljIGludCBfX2luaXQgZ2ljdjVfaXJzX2FjcGlfaW5pdF9hZmZpbml0eSh1MzIgaXJzaWQsIHN0cnVjdCBnaWN2NV9pcnNfY2hpcF9kYXRhICppcnNfZGF0YSlcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTg5Ni17XG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM9OTIxPXN0YXRpYyBpbnQgX19pbml0IGdpY19hY3BpX3BhcnNlX21hZHRfaXJzKHVuaW9uIGFjcGlfc3VidGFibGVfaGVhZGVycyAqaGVhZGVyLFxuLS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTkyMy17XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo5MjQ6XHRzdHJ1Y3QgYWNwaV9tYWR0X2dpY3Y1X2lycyAqaXJzID0gKHN0cnVjdCBhY3BpX21hZHRfZ2ljdjVfaXJzICopaGVhZGVyO1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6OTI1Olx0c3RydWN0IGdpY3Y1X2lyc19jaGlwX2RhdGEgKmlyc19kYXRhO1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtOTI2LVx0dm9pZCBfX2lvbWVtICppcnNfYmFzZTtcbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy05NTAtXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo5NTE6XHRnaWN2NV9pcnNfaW5pdF9iYXNlcyhpcnNfZGF0YSwgaXJzX2Jhc2UsIGlycy1cdTAwM2VmbGFncyBcdTAwMjYgQUNQSV9NQURUX0lSU19OT05fQ09IRVJFTlQpO1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtOTUyLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6OTUzOlx0Z2ljdjVfaXJzX2FjcGlfaW5pdF9hZmZpbml0eShpcnMtXHUwMDNlaXJzX2lkLCBpcnNfZGF0YSk7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy05NTQtXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo5NTU6XHRyZXQgPSBnaWN2NV9pcnNfaW5pdChpcnNfZGF0YSk7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy05NTYtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTk2OC1vdXRfbWFwOlxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6OTY5Olx0Z2ljdjVfaXJzX2NsZWFyX2FmZmluaXR5KGlyc19kYXRhKTtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTk3MC1cdGlvdW5tYXAoaXJzX2Jhc2UpO1xuLS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTk3Ny1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjk3ODppbnQgX19pbml0IGdpY3Y1X2lyc19hY3BpX3Byb2JlKHZvaWQpXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy05Nzkte1xuLS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTI3LVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmM6Mjg6c3RydWN0IGdpY3Y1X2l0c19jaGlwX2RhdGEge1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtMjktXHRzdHJ1Y3RcdHhhcnJheVx0XHRcdGl0c19kZXZpY2VzO1xuLS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTMxLVx0c3RydWN0XHRmd25vZGVfaGFuZGxlXHRcdCpmd25vZGU7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzozMjpcdHN0cnVjdCBnaWN2NV9pdHNfZGV2dGFiX2NmZ1x0ZGV2dGFiX2NmZ3I7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy0zMy1cdHZvaWRcdF9faW9tZW1cdFx0XHQqaXRzX2Jhc2U7XG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtMzctXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzozODpzdHJ1Y3QgZ2ljdjVfaXRzX2RldiB7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzozOTpcdHN0cnVjdCBnaWN2NV9pdHNfY2hpcF9kYXRhXHQqaXRzX25vZGU7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzo0MDpcdHN0cnVjdCBnaWN2NV9pdHNfaXR0X2NmZ1x0aXR0X2NmZztcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTQxLVx0dW5zaWduZWQgbG9uZ1x0XHRcdCpldmVudF9tYXA7XG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtNDYtXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzo0NzpzdGF0aWMgdTMyIGl0c19yZWFkbF9yZWxheGVkKHN0cnVjdCBnaWN2NV9pdHNfY2hpcF9kYXRhICppdHNfbm9kZSwgY29uc3QgdTMyIHJlZ19vZmZzZXQpXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy00OC17XG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtNTEtXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzo1MjpzdGF0aWMgdm9pZCBpdHNfd3JpdGVsX3JlbGF4ZWQoc3RydWN0IGdpY3Y1X2l0c19jaGlwX2RhdGEgKml0c19ub2RlLCBjb25zdCB1MzIgdmFsLFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtNTMtXHRcdFx0ICAgICAgIGNvbnN0IHUzMiByZWdfb2Zmc2V0KVxuLS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTU3LVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmM6NTg6c3RhdGljIHZvaWQgaXRzX3dyaXRlcV9yZWxheGVkKHN0cnVjdCBnaWN2NV9pdHNfY2hpcF9kYXRhICppdHNfbm9kZSwgY29uc3QgdTY0IHZhbCxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTU5LVx0XHRcdCAgICAgICBjb25zdCB1MzIgcmVnX29mZnNldClcbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy02My1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jOjY0OnN0YXRpYyB2b2lkIGdpY3Y1X2l0c19kY2FjaGVfY2xlYW4oc3RydWN0IGdpY3Y1X2l0c19jaGlwX2RhdGEgKml0cywgdm9pZCAqc3RhcnQsXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy02NS1cdFx0XHRcdCAgIHNpemVfdCBzeilcbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy03NC1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jOjc1OnN0YXRpYyB2b2lkIGl0c193cml0ZV90YWJsZV9lbnRyeShzdHJ1Y3QgZ2ljdjVfaXRzX2NoaXBfZGF0YSAqaXRzLCBfX2xlNjQgKmVudHJ5LFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtNzYtXHRcdFx0XHQgIHU2NCB2YWwpXG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtNzgtXHRXUklURV9PTkNFKCplbnRyeSwgY3B1X3RvX2xlNjQodmFsKSk7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzo3OTpcdGdpY3Y1X2l0c19kY2FjaGVfY2xlYW4oaXRzLCBlbnRyeSwgc2l6ZW9mKCplbnRyeSkpO1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtODAtfVxuLS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTg0LVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmM6ODU6c3RhdGljIGludCBnaWN2NV9pdHNfY2FjaGVfc3luYyhzdHJ1Y3QgZ2ljdjVfaXRzX2NoaXBfZGF0YSAqaXRzKVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtODYte1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmM6ODc6XHRyZXR1cm4gZ2ljdjVfd2FpdF9mb3Jfb3BfYXRvbWljKGl0cy1cdTAwM2VpdHNfYmFzZSwgR0lDVjVfSVRTX1NUQVRVU1IsXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy04OC1cdFx0XHRcdFx0R0lDVjVfSVRTX1NUQVRVU1JfSURMRSwgTlVMTCk7XG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtOTAtXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzo5MTpzdGF0aWMgdm9pZCBnaWN2NV9pdHNfc3luY3Ioc3RydWN0IGdpY3Y1X2l0c19jaGlwX2RhdGEgKml0cyxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jOjkyOlx0XHRcdCAgICBzdHJ1Y3QgZ2ljdjVfaXRzX2RldiAqaXRzX2RldilcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTkzLXtcbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy0xMDAtXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzoxMDE6XHRnaWN2NV93YWl0X2Zvcl9vcChpdHMtXHUwMDNlaXRzX2Jhc2UsIEdJQ1Y1X0lUU19TWU5DX1NUQVRVU1IsIEdJQ1Y1X0lUU19TWU5DX1NUQVRVU1JfSURMRSk7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy0xMDItfVxuLS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTEwOC1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jOjEwOTpzdGF0aWMgdW5zaWduZWQgaW50IGdpY3Y1X2l0c19sMnN6X3RvX2wyX2JpdHModW5zaWduZWQgaW50IHN6KVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtMTEwLXtcbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy0xMjEtXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzoxMjI6c3RhdGljIGludCBnaWN2NV9pdHNfaXR0X2NhY2hlX2ludihzdHJ1Y3QgZ2ljdjVfaXRzX2NoaXBfZGF0YSAqaXRzLCB1MzIgZGV2aWNlX2lkLFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtMTIzLVx0XHRcdFx0ICAgdTE2IGV2ZW50X2lkKVxuLS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTEzNS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jOjEzNjpcdHJldHVybiBnaWN2NV9pdHNfY2FjaGVfc3luYyhpdHMpO1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtMTM3LX1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTEzOC1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jOjEzOTpzdGF0aWMgdm9pZCBnaWN2NV9pdHNfZnJlZV9pdHRfbGluZWFyKHN0cnVjdCBnaWN2NV9pdHNfZGV2ICppdHNfZGV2KVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtMTQwLXtcbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy0xNDMtXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzoxNDQ6c3RhdGljIHZvaWQgZ2ljdjVfaXRzX2ZyZWVfaXR0X3R3b19sZXZlbChzdHJ1Y3QgZ2ljdjVfaXRzX2RldiAqaXRzX2RldilcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTE0NS17XG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtMTU0LVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmM6MTU1OnN0YXRpYyB2b2lkIGdpY3Y1X2l0c19mcmVlX2l0dChzdHJ1Y3QgZ2ljdjVfaXRzX2RldiAqaXRzX2RldilcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTE1Ni17XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy0xNTctXHRpZiAoIWl0c19kZXYtXHUwMDNlaXR0X2NmZy5sMml0dClcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jOjE1ODpcdFx0Z2ljdjVfaXRzX2ZyZWVfaXR0X2xpbmVhcihpdHNfZGV2KTtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTE1OS1cdGVsc2VcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jOjE2MDpcdFx0Z2ljdjVfaXRzX2ZyZWVfaXR0X3R3b19sZXZlbChpdHNfZGV2KTtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTE2MS19XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy0xNjItXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzoxNjM6c3RhdGljIGludCBnaWN2NV9pdHNfY3JlYXRlX2l0dF9saW5lYXIoc3RydWN0IGdpY3Y1X2l0c19jaGlwX2RhdGEgKml0cyxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jOjE2NDpcdFx0XHRcdCAgICAgICBzdHJ1Y3QgZ2ljdjVfaXRzX2RldiAqaXRzX2RldixcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTE2NS1cdFx0XHRcdCAgICAgICB1bnNpZ25lZCBpbnQgZXZlbnRfaWRfYml0cylcbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy0xNzgtXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzoxNzk6XHRnaWN2NV9pdHNfZGNhY2hlX2NsZWFuKGl0cywgaXR0LCBudW1fZW50cyAqIHNpemVvZigqaXR0KSk7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy0xODAtXG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtMTg4LSAqL1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmM6MTg5OnN0YXRpYyBpbnQgZ2ljdjVfaXRzX2NyZWF0ZV9pdHRfdHdvX2xldmVsKHN0cnVjdCBnaWN2NV9pdHNfY2hpcF9kYXRhICppdHMsXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzoxOTA6XHRcdFx0XHRcdCAgc3RydWN0IGdpY3Y1X2l0c19kZXYgKml0c19kZXYsXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy0xOTEtXHRcdFx0XHRcdCAgdW5zaWduZWQgaW50IGV2ZW50X2lkX2JpdHMsXG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtMjAwLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmM6MjAxOlx0cmV0ID0gZ2ljdjVfaXRzX2wyc3pfdG9fbDJfYml0cyhpdHRfbDJzeik7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy0yMDItXHRpZiAocmV0IFx1MDAzZT0gZXZlbnRfaWRfYml0cykge1xuLS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTI1NC1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jOjI1NTpcdFx0Z2ljdjVfaXRzX2RjYWNoZV9jbGVhbihpdHMsIGl0dF9sMiwgbDJzeik7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy0yNTYtXG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtMjYzLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmM6MjY0Olx0Z2ljdjVfaXRzX2RjYWNoZV9jbGVhbihpdHMsIGl0dF9sMSwgbnVtX2VudHMgKiBzaXplb2YoKml0dF9sMSkpO1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtMjY1LVxuLS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTI4NC0gKi9cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jOjI4NTpzdGF0aWMgYm9vbCBnaWN2NV9pdHNfbDJzel90d29fbGV2ZWwoYm9vbCBkZXZ0YWIsIHUzMiBpdHNfaWRyMSwgdTggaWRfYml0cywgdTggKnN6KVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtMjg2LXtcbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy0zMzItXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzozMzM6XHRsMl9iaXRzID0gZ2ljdjVfaXRzX2wyc3pfdG9fbDJfYml0cyhsMl9zeik7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy0zMzQtXG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtMzQyLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmM6MzQzOnN0YXRpYyBfX2xlNjQgKmdpY3Y1X2l0c19kZXZpY2VfZ2V0X2l0dGVfcmVmKHN0cnVjdCBnaWN2NV9pdHNfZGV2ICppdHNfZGV2LFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtMzQ0LVx0XHRcdFx0XHQgICAgIHUxNiBldmVudF9pZClcbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy0zNTQtXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzozNTU6XHRsMl9iaXRzID0gZ2ljdjVfaXRzX2wyc3pfdG9fbDJfYml0cyhpdHNfZGV2LVx1MDAzZWl0dF9jZmcubDIubDJzeik7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy0zNTYtXHRsMV9pZHggPSBldmVudF9pZCBcdTAwM2VcdTAwM2UgbDJfYml0cztcbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy0zNjItXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzozNjM6c3RhdGljIGludCBnaWN2NV9pdHNfZGV2aWNlX2NhY2hlX2ludihzdHJ1Y3QgZ2ljdjVfaXRzX2NoaXBfZGF0YSAqaXRzLFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmM6MzY0Olx0XHRcdFx0ICAgICAgc3RydWN0IGdpY3Y1X2l0c19kZXYgKml0c19kZXYpXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy0zNjUte1xuLS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTM3Ni1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jOjM3NzpcdHJldHVybiBnaWN2NV9pdHNfY2FjaGVfc3luYyhpdHMpO1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtMzc4LX1cbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy0zODMtICovXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzozODQ6c3RhdGljIGludCBnaWN2NV9pdHNfYWxsb2NfbDJfZGV2dGFiKHN0cnVjdCBnaWN2NV9pdHNfY2hpcF9kYXRhICppdHMsXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy0zODUtXHRcdFx0XHQgICAgIHVuc2lnbmVkIGludCBsMV9pbmRleClcbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy0zOTYtXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzozOTc6XHRsMl9iaXRzID0gZ2ljdjVfaXRzX2wyc3pfdG9fbDJfYml0cyhsMnN6KTtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTM5OC1cbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy00MTktXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzo0MjA6c3RhdGljIF9fbGU2NCAqZ2ljdjVfaXRzX2RldnRhYl9nZXRfZHRlX3JlZihzdHJ1Y3QgZ2ljdjVfaXRzX2NoaXBfZGF0YSAqaXRzLFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtNDIxLVx0XHRcdFx0XHQgICAgdTMyIGRldmljZV9pZCwgYm9vbCBhbGxvYylcbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy00MzMtXHRsMnN6ID0gZGV2dGFiX2NmZ3JfZmllbGQoaXRzLCBMMlNaKTtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jOjQzNDpcdGwyX2JpdHMgPSBnaWN2NV9pdHNfbDJzel90b19sMl9iaXRzKGwyc3opO1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtNDM1LVx0bDFfaWR4ID0gZGV2aWNlX2lkIFx1MDAzZVx1MDAzZSBsMl9iaXRzO1xuLS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTQ0NC1cdFx0ICovXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzo0NDU6XHRcdHJldCA9IGdpY3Y1X2l0c19hbGxvY19sMl9kZXZ0YWIoaXRzLCBsMV9pZHgpO1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtNDQ2LVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTQ1OC0gKi9cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jOjQ1OTpzdGF0aWMgaW50IGdpY3Y1X2l0c19kZXZpY2VfcmVnaXN0ZXIoc3RydWN0IGdpY3Y1X2l0c19jaGlwX2RhdGEgKml0cyxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jOjQ2MDpcdFx0XHRcdCAgICAgc3RydWN0IGdpY3Y1X2l0c19kZXYgKml0c19kZXYpXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy00NjEte1xuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTE6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTgyODQKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxMTQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBSZWNlbnQgQ2hhbmdlcyB0byBLVk0gYW5kIEdJQ3Y1IEludGVycnVwdCBIYW5kbGluZyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBkaWZmIHRoYXQgY29udGFpbnMgc29tZSBtb2RpZmljYXRpb25zIHRvIHRoZSBLVk0gdmlydHVhbCBHSUMgKFZHSUMpIGFuZCBHSUN2NSBpbnRlcnJ1cHQgY29udHJvbGxlciBkcml2ZXJzLiBJIHNlZSBjaGFuZ2VzIGluIGBhcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuY2AgYW5kIGBhcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaW5pdC5jYCwgYWxvbmcgd2l0aCB1cGRhdGVzIHRvIGBkcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS5jYCBhbmQgYGRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGVzZSBjaGFuZ2VzIGluIHRoZSBjb250ZXh0IG9mIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFRoZSBjaGFuZ2VzIGhhdmUgYWxyZWFkeSBiZWVuIGNvbW1pdHRlZCwgc28gdGhlIGtleSBpcyB1bmRlcnN0YW5kaW5nIHRoZSBtb2RpZmljYXRpb25zIHJhdGhlciB0aGFuIGRlYnVnZ2luZyBjb2RlLgoKRmlyc3QsIGxldCYjMzk7cyBicmVhayBpdCBkb3duOiBUaGUgdXBkYXRlcyB0byBgdmdpYy5jYCBpbnZvbHZlIGNoYW5nZXMgaW4gYHZnaWNfZ2V0X2lycWAgYW5kIGB2Z2ljX2dldF92Y3B1X2lycWAsIHdoaWNoIGFyZSBrZXkgZnVuY3Rpb25zIGZvciBtYXBwaW5nIGludGVycnVwdCBpZGVudGlmaWVycyB3aXRoaW4gdGhlIEtWTSBlbnZpcm9ubWVudC4gSSYjMzk7bSBmb2N1c2luZyBvbiB0aG9zZSB0d28gZnVuY3Rpb25zLCBzaW5jZSB0aGF0JiMzOTtzIHdoZXJlIG1vc3Qgb2YgdGhlIHdvcmsgc2VlbXMgdG8gYmUuIFRoZXJlIHNlZW1zIHRvIGJlIGltcHJvdmVkIGJvdW5kcyBjaGVja2luZyBmb3IgaW50ZXJydXB0IElEcyB3aXRoaW4gdGhlIEtWTSBWR0lDJiMzOTtzIFNQSSBhbmQgTFBJIGhhbmRsaW5nLCB3aGljaCBzdWdnZXN0cyBhZGRyZXNzaW5nIGEgcG90ZW50aWFsIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdHkgb3IgYSBzb3VyY2Ugb2YgdW5leHBlY3RlZCBiZWhhdmlvci4gVGhlIGB2Z2ljX2luaXQuY2AgZmlsZSBpbmNsdWRlcyBhIHNsaWdodCBjaGFuZ2UgdG8gZXJyb3IgaGFuZGxpbmcgd2l0aGluIGEgbWFpbnRlbmFuY2UgaW50ZXJydXB0IGNoZWNrLgoKVGhlIGBpcnEtZ2ljLXY1LmNgIGNoYW5nZXMgaW50cm9kdWNlIGEgYGdpY3Y1X2NwdV9kaXNhYmxlX2ludGVycnVwdHNgIGZ1bmN0aW9uLiBUaGlzIGluZGljYXRlcyBtb2RpZmljYXRpb25zIHRvIGludGVycnVwdCBkaXNhYmxpbmcgZnVuY3Rpb25hbGl0eSBzcGVjaWZpYyB0byBHSUN2NSBoYXJkd2FyZS4gQW5kIGluIGBpcnEtZ2ljLXY1LWlycy5jYCwgdGhlcmUmIzM5O3MgYSBgZ2ljdjVfaXJzX2NsZWFyX2FmZmluaXR5YCBmdW5jdGlvbiBiZWluZyBjaGFuZ2VkLiBUaGlzIHNlZW1zIHRvIGJlIHJlbGF0ZWQgdG8gY2xlYXJpbmcgQ1BVIGFmZmluaXR5IGR1cmluZyBpbml0aWFsaXphdGlvbiBvciBlcnJvciBzY2VuYXJpb3MuIFRoZXNlIGNoYW5nZXMgYXJlIGNydWNpYWwgZm9yIG1hbmFnaW5nIGludGVycnVwdCByb3V0aW5nIGFuZCBhZmZpbml0eSBpbiBHSUN2NSBiYXNlZCBzeXN0ZW1zLgoKQ29uc2lkZXJpbmcgdGhlc2UgZWRpdHMgYXMgYSB3aG9sZSwgaXQgYXBwZWFycyB0aGF0IHRoZXNlIG1vZGlmaWNhdGlvbnMgcHJpbWFyaWx5IGFpbSB0byBoYXJkZW4gdGhlIEtWTSBWR0lDIGltcGxlbWVudGF0aW9uLCBzcGVjaWZpY2FsbHkgd2hlbiBpbnRlcmZhY2luZyB3aXRoIEdJQ3Y1IGhhcmR3YXJlLiBUaGlzIGNvdWxkIG1lYW4gaW1wcm92ZWQgc2VjdXJpdHksIG1vcmUgcm9idXN0IGludGVycnVwdCBoYW5kbGluZywgYW5kIGxpa2VseSBpbXByb3ZlbWVudHMgaW4gdGhlIHBlcmZvcm1hbmNlIG9mIHZpcnR1YWwgbWFjaGluZXMgcnVubmluZyBvbiBzeXN0ZW1zIGVxdWlwcGVkIHdpdGggR0lDdjUgaW50ZXJydXB0IGNvbnRyb2xsZXJzLiBNeSBuZXh0IHN0ZXAgd2lsbCBiZSB0byBkaXZlIGludG8gdGhlIGFzc29jaWF0ZWQgS2NvbmZpZyBvcHRpb25zIHRvIGJldHRlciB1bmRlcnN0YW5kIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIHRoZXNlIGNoYW5nZXMgYXJlIGFwcGxpZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTE6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEtWTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvYXJtNjQva3ZtL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxuYXJjaC9hcm02NC9rdm0vS2NvbmZpZy0xOS1cbmFyY2gvYXJtNjQva3ZtL0tjb25maWc6MjA6bWVudWNvbmZpZyBLVk1cbmFyY2gvYXJtNjQva3ZtL0tjb25maWctMjEtXHRib29sIFwmIzM0O0tlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDExOjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMDc0CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqR0lDdjUgS2NvbmZpZyBFeHBsb3JhdGlvbioqCgpBbHJpZ2h0LCB0aW1lIHRvIGRpdmUgaW4uIE15IGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIGlzIGNsZWFybHkgZm9jdXNlZCBvbiB0aGUgR0lDdjUgS2NvbmZpZy4gSSBrbm93IHdlIG5lZWQgdG8gdGhvcm91Z2hseSB2ZXQgdGhpcyBjb25maWd1cmF0aW9uIGZpbGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBpbnRyaWNhY2llcywgaG93IG9wdGlvbnMgYXJlIGRlZmluZWQsIGRlcGVuZGVuY2llcywgYW5kIGRlZmF1bHQgc2V0dGluZ3MuIEdpdmVuIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhlIEdJQ3Y1IG9uIHN5c3RlbSBwZXJmb3JtYW5jZSBhbmQgc2VjdXJpdHksIEkgY2FuJiMzOTt0IGFmZm9yZCBhbnkgb3ZlcnNpZ2h0cy4gSSYjMzk7bSB0aGlua2luZyBhYm91dCBwb3RlbnRpYWwgZ290Y2hhcyDigJMgaW50ZXJhY3Rpb25zIHdpdGggb3RoZXIgc3Vic3lzdGVtcywgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb24gY29uZmxpY3RzLCBwZXJmb3JtYW5jZSB0cmFkZS1vZmZzIGluaGVyZW50IGluIGRpZmZlcmVudCBzZXR0aW5ncywgYW5kIGVuc3VyaW5nIGl0IGFsaWducyBwZXJmZWN0bHkgd2l0aCBvdXIgdGFyZ2V0IGFyY2hpdGVjdHVyZS4gSSYjMzk7bGwgYmUgbWV0aWN1bG91c2x5IGNoZWNraW5nIGV2ZXJ5IG9wdGlvbiwgY29tcGFyaW5nIGl0IHdpdGggdGhlIGRvY3VtZW50YXRpb24sIGFuZCBjcm9zcy1yZWZlcmVuY2luZyBpdCB3aXRoIG91ciBwbGF0Zm9ybSYjMzk7cyBzcGVjaWZpYyBuZWVkcy4gVGhpcyBLY29uZmlnIGlzIGtleSwgYW5kIEkmIzM5O20gcmVhZHkgdG8gZ2V0IGRvd24gdG8gaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTE6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEFSTV9HSUNfVjUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2lycWNoaXAvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2lycWNoaXAvS2NvbmZpZz00Nj1jb25maWcgQVJNX0dJQ19WM19JVFNcbi0tXG5kcml2ZXJzL2lycWNoaXAvS2NvbmZpZy01My1cbmRyaXZlcnMvaXJxY2hpcC9LY29uZmlnOjU0OmNvbmZpZyBBUk1fR0lDX1Y1XG5kcml2ZXJzL2lycWNoaXAvS2NvbmZpZy01NS1cdGJvb2xcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxMTozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDM5NQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6CgoqKkludmVzdGlnYXRpbmcgQVJNIEdJQ3Y1IFNlbGVjdGlvbi9FbmFibGVtZW50KioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IGV4YWN0bHkgKmhvdyogdGhlIHN5c3RlbSBzZWxlY3RzIG9yIGVuYWJsZXMgdGhlIEFSTSBHSUN2NS4gSSYjMzk7dmUgZ290IGEgcHJvamVjdCB3aGVyZSB0aGF0JiMzOTtzIGNyaXRpY2FsLCBhbmQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgZmxvdy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGRpdmUgaW50byB0aGUgY29kZSBhbmQgc2VlIHdoZXJlIHRoYXQgZmVhdHVyZSBmbGFnLCBvciB3aGF0ZXZlciBtZWNoYW5pc20gaXMgdXNlZCwgYWN0dWFsbHkgZ2V0cyB0cmlnZ2VyZWQuIEkgbmVlZCB0byB0cmFjZSB0aGlzIHRoaW5nIGFuZCBnZXQgbXkgaGVhZCBhcm91bmQgdGhlIGNvbmZpZ3VyYXRpb24gbG9naWMuIFRoaXMgbWVhbnMgdW5kZXJzdGFuZGluZyB0aGUgYnVpbGQgcHJvY2VzcywgZGV2aWNlIHRyZWUgaW50ZXJhY3Rpb25zLCBhbnkgcmVsZXZhbnQga2VybmVsIGNvbmZpZyBvcHRpb25zLCBhbmQgcHJvYmFibHkgc29tZSBwbGF0Zm9ybS1zcGVjaWZpYyBjb2RlLiBJJiMzOTtsbCBzdGFydCB3aXRoIHRoZSBvYnZpb3VzIHBsYWNlcywgYW5kIHRoZW4gSSYjMzk7bGwgZm9sbG93IHRoZSBicmVhZGNydW1icyB1bnRpbCBJJiMzOTt2ZSBnb3QgYSBjb21wbGV0ZSBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxMTozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtBUk1fR0lDX1Y1JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9pcnFjaGlwL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9pcnFjaGlwL0tjb25maWc9NDY9Y29uZmlnIEFSTV9HSUNfVjNfSVRTXG4tLVxuZHJpdmVycy9pcnFjaGlwL0tjb25maWctNTMtXG5kcml2ZXJzL2lycWNoaXAvS2NvbmZpZzo1NDpjb25maWcgQVJNX0dJQ19WNVxuZHJpdmVycy9pcnFjaGlwL0tjb25maWctNTUtXHRib29sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDExOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNzAwCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEkmIzM5O20gc3BlYWtpbmcgdG8gYSBmZWxsb3cgZXhwZXJ0OgoKKipJbnZlc3RpZ2F0aW5nIEdJQ19WNSBDb25maWd1cmF0aW9uIE9wdGlvbnMqKgoKQWxyaWdodCwgc28gdGhlIGluaXRpYWwgdGhvdWdodCB0aGF0IHBvcHMgaW50byBteSBoZWFkIGlzOiAqaG1tLCBsZXQmIzM5O3MganVzdCBtYWtlIHN1cmUgd2UmIzM5O3ZlIGV4aGF1c3RlZCBhbGwgcG90ZW50aWFsIEdJQ19WNSBjb25maWd1cmF0aW9ucy4qIFdlJiMzOTtyZSBkZWFsaW5nIHdpdGggc29tZXRoaW5nIHJlbGF0aXZlbHkgY29tcGxleCBhbmQgbnVhbmNlZCBoZXJlLCBhbmQgSSBhbHdheXMgbGlrZSB0byBiZSB0aG9yb3VnaC4gSSBkb24mIzM5O3Qgd2FudCB0byBhc3N1bWUgd2UmIzM5O3ZlIG9ubHkgc2NyYXRjaGVkIHRoZSBzdXJmYWNlLCB3aGVuIHRoZXJlIG1pZ2h0IGJlIGFub3RoZXIgc2V0dGluZywgYW5vdGhlciByZWdpc3RlciBiaXQsIG9yIHNvbWUgb3RoZXIgYXNwZWN0IG9mIHRoZSBHSUNfVjUgY29uZmlndXJhdGlvbiB3ZSBoYXZlbiYjMzk7dCBjb25zaWRlcmVkLiBJdOKAmXMgYWx3YXlzIGJlc3QgdG8gZWxpbWluYXRlIGFsbCBwb3RlbnRpYWwgYXZlbnVlcyBmb3IgYSBzb2x1dGlvbiBhbmQgZW5zdXJlIHdlIGhhdmUgYW4gZXhoYXVzdGl2ZSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDExOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0dJQ19WNSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvaXJxY2hpcC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvaXJxY2hpcC9LY29uZmlnPTQ2PWNvbmZpZyBBUk1fR0lDX1YzX0lUU1xuLS1cbmRyaXZlcnMvaXJxY2hpcC9LY29uZmlnLTUzLVxuZHJpdmVycy9pcnFjaGlwL0tjb25maWc6NTQ6Y29uZmlnIEFSTV9HSUNfVjVcbmRyaXZlcnMvaXJxY2hpcC9LY29uZmlnLTU1LVx0Ym9vbFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxMTozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDk5NgoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDQyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcyBvbiB0aGF0OgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBgQVJNX0dJQ19WNWAgS2VybmVsIENvbmZpZ3VyYXRpb24gT3B0aW9uKioKClJpZ2h0LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgZGVwZW5kZW5jaWVzIG9yIHRoZSBzZWxlY3Rpb24gY3JpdGVyaWEgZm9yIGBBUk1fR0lDX1Y1YCBpbiB0aGUga2VybmVsLiBNeSBiZXN0IHN0YXJ0aW5nIHBvaW50IGlzIGFsd2F5cyB0aGUgS2NvbmZpZyBmaWxlcy4gQ29uc2lkZXJpbmcgaXQmIzM5O3MgcmVsYXRlZCB0byBBUk0gYW5kIGludGVycnVwdCBjb250cm9sbGVycywgSSYjMzk7bGwgYmVnaW4gYnkgc2VhcmNoaW5nIHRoZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgYEtjb25maWdgIGZpbGVzIOKAkyBzcGVjaWZpY2FsbHkgYGFyY2gvYXJtNjQvS2NvbmZpZ2Ag4oCTIGFuZCBhbHNvIHRoZSBpbnRlcnJ1cHQgY29udHJvbGxlciBkcml2ZXIgZmlsZXMsIHNvIGBkcml2ZXJzL2lycWNoaXAvS2NvbmZpZ2AgbWFrZXMgc2Vuc2UgdG8gY2hlY2sgdG9vLiBUaGVzZSBhcmUgdGhlIHVzdWFsIHN1c3BlY3RzLiBJJiMzOTtsbCBuZWVkIHRvIHNlZSB3aGF0IG90aGVyIGZlYXR1cmVzLCBoYXJkd2FyZSwgb3Iga2VybmVsIGNvbmZpZ3VyYXRpb25zIGNhdXNlIHRoaXMgb3B0aW9uIHRvIGJlIGVuYWJsZWQuIEkmIzM5O20gZXNzZW50aWFsbHkgbG9va2luZyBmb3IgdGhlICYjMzQ7c2VsZWN0JiMzNDsgc3RhdGVtZW50cyBvciB0aGUgZGVwZW5kZW5jaWVzIGRlZmluZWQgdXNpbmcgYGRlcGVuZHMgb25gLCBvciBtYXliZSBldmVuIHNlZSB3aG8gKmRlZmF1bHRzKiB0byBoYXZpbmcgdGhlIG9wdGlvbi4gVGhhdCB3aWxsIGdpdmUgbWUgYSBnb29kIGhhbmRsZSBvbiBob3cgdGhpcyB0aGluZyBpcyB1c2VkIGFuZCBjb25maWd1cmVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxMTozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtBUk1fR0lDX1Y1JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvYXJtNjQvS2NvbmZpZz0yPWNvbmZpZyBBUk02NFxuLS1cbmFyY2gvYXJtNjQvS2NvbmZpZy0xMDYtXHRzZWxlY3QgQVJNX0dJQ19WM19JVFMgaWYgUENJXG5hcmNoL2FybTY0L0tjb25maWc6MTA3Olx0c2VsZWN0IEFSTV9HSUNfVjVcbmFyY2gvYXJtNjQvS2NvbmZpZy0xMDgtXHRzZWxlY3QgQVJNX1BTQ0lfRldcbi0tXG5kcml2ZXJzL2lycWNoaXAvS2NvbmZpZz00Nj1jb25maWcgQVJNX0dJQ19WM19JVFNcbi0tXG5kcml2ZXJzL2lycWNoaXAvS2NvbmZpZy01My1cbmRyaXZlcnMvaXJxY2hpcC9LY29uZmlnOjU0OmNvbmZpZyBBUk1fR0lDX1Y1XG5kcml2ZXJzL2lycWNoaXAvS2NvbmZpZy01NS1cdGJvb2xcbi0tXG5kcml2ZXJzL2lycWNoaXAvTWFrZWZpbGU9Mzc9b2JqLSQoQ09ORklHX0FSTV9HSUNfVjNfSVRTKVx0XHQmIzQzOz0gaXJxLWdpYy12My1pdHMubyBpcnEtZ2ljLXY0Lm9cbmRyaXZlcnMvaXJxY2hpcC9NYWtlZmlsZTozODpvYmotJChDT05GSUdfQVJNX0dJQ19WNSlcdFx0JiM0Mzs9IGlycS1naWMtdjUubyBpcnEtZ2ljLXY1LWlycy5vIGlycS1naWMtdjUtaXRzLm8gXFxcbmRyaXZlcnMvaXJxY2hpcC9NYWtlZmlsZS0zOS1cdFx0XHRcdFx0ICAgaXJxLWdpYy12NS1pd2Iub1xuLS1cbmluY2x1ZGUvbGludXgvaXJxY2hpcC9hcm0tZ2ljLXY1LmgtNC0gKi9cbmluY2x1ZGUvbGludXgvaXJxY2hpcC9hcm0tZ2ljLXY1Lmg6NTojaWZuZGVmIF9fTElOVVhfSVJRQ0hJUF9BUk1fR0lDX1Y1X0hcbmluY2x1ZGUvbGludXgvaXJxY2hpcC9hcm0tZ2ljLXY1Lmg6NjojZGVmaW5lIF9fTElOVVhfSVJRQ0hJUF9BUk1fR0lDX1Y1X0hcbmluY2x1ZGUvbGludXgvaXJxY2hpcC9hcm0tZ2ljLXY1LmgtNy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTE6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE3MDkKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA5NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgQVJNNjQgYW5kIEtWTSBJbnRlcnJ1cHQgQ29udHJvbGxlciBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIGxvb2tpbmcgYXQgdGhlIGNvbmZpZ3VyYXRpb24sIGl0IHNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIFRoZSBzeXN0ZW0gaXMgc2V0IHVwIGluIGEgd2F5IHRoYXQgdGhlIGBBUk1fR0lDX1Y1YCBpbnRlcnJ1cHQgY29udHJvbGxlciBpcyBhdXRvbWF0aWNhbGx5IHNlbGVjdGVkIHdoZW5ldmVyIGBBUk02NGAgYXJjaGl0ZWN0dXJlIGlzIGVuYWJsZWQuIE1ha2VzIHNlbnNlLCBnaXZlbiB0aGUgcHJldmFsZW5jZSBvZiB0aGF0IGFyY2hpdGVjdHVyZS4gQnV0LCBub3cgSSBuZWVkIHRvIGRpdmUgYSBsaXR0bGUgZGVlcGVyLCBlc3BlY2lhbGx5IHdpdGggdGhlIGBLVk1gIGNvbXBvbmVudCBpbiBwbGF5LiBJIGtub3cgYEtWTWAgaXMgY29udHJvbGxlZCBieSBgQ09ORklHX0tWTWAsIHdoaWNoIGlzIHRoZSBzdGFydGluZyBwb2ludC4gSSYjMzk7bSBnb2luZyB0byB0YWtlIGEgbG9vayBhdCBgYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmNgIHNwZWNpZmljYWxseSwgYW5kIEkmIzM5O2xsIGZvY3VzIG9uIHRoZSBmdW5jdGlvbnMgYHZnaWNfZ2V0X2lycWAgYW5kIGB2Z2ljX2dldF92Y3B1X2lycWAuIEkmIzM5O20gZ29pbmcgdG8gbG9vayBhdCBob3cgdGhlc2UgZnVuY3Rpb25zIGhhbmRsZSBpbnRlcnJ1cHQgcmV0cmlldmFsIHdpdGhpbiB0aGUgYEtWTWAgZW52aXJvbm1lbnQgb24gYEFSTTY0YC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSB2aXJ0dWFsaXphdGlvbiBsYXllciBpbnRlcmFjdHMgd2l0aCB0aGUgR0lDLCBhbmQgdGhhdCYjMzk7cyBsaWtlbHkgd2hlcmUgdGhlc2UgZnVuY3Rpb25zIGNvbWUgaW50byBwbGF5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxMTozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2Z2ljX2dldF9pcnEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL2FybTY0L2t2bS92Z2ljLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtZGVidWcuYz0yMzQ9c3RhdGljIGludCB2Z2ljX2RlYnVnX3Nob3coc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICp2KVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1kZWJ1Zy5jLTI1NS1cdGVsc2VcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1kZWJ1Zy5jOjI1NjpcdFx0aXJxID0gdmdpY19nZXRfaXJxKGt2bSwgaXRlci1cdTAwM2VpbnRpZCk7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtZGVidWcuYy0yNTctXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jPTc2PXN0YXRpYyBzdHJ1Y3QgdmdpY19pcnEgKnZnaWNfYWRkX2xwaShzdHJ1Y3Qga3ZtICprdm0sIHUzMiBpbnRpZCxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtNzktXHRzdHJ1Y3QgdmdpY19kaXN0ICpkaXN0ID0gXHUwMDI2a3ZtLVx1MDAzZWFyY2gudmdpYztcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzo4MDpcdHN0cnVjdCB2Z2ljX2lycSAqaXJxID0gdmdpY19nZXRfaXJxKGt2bSwgaW50aWQpLCAqb2xkaXJxO1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTgxLVx0dW5zaWduZWQgbG9uZyBmbGFncztcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9Mzk4PXN0YXRpYyBpbnQgaXRzX3N5bmNfbHBpX3BlbmRpbmdfdGFibGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy00MjctXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6NDI4Olx0XHRpcnEgPSB2Z2ljX2dldF9pcnEodmNwdS1cdTAwM2Vrdm0sIGludGlkKTtcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy00MjktXHRcdGlmICghaXJxKVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz01Njc9c3RhdGljIHZvaWQgdmdpY19pdHNfY2FjaGVfdHJhbnNsYXRpb24oc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3QgdmdpY19pdHMgKml0cyxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtNTgyLVx0bG9ja2RlcF9hc3NlcnRfaGVsZChcdTAwMjZpdHMtXHUwMDNlaXRzX2xvY2spO1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjU4MzpcdHZnaWNfZ2V0X2lycV9yZWYoaXJxKTtcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy01ODQtXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jPTEzMDg9aW50IHZnaWNfaXRzX2ludmFsbChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTEzMTUtXHR4YV9mb3JfZWFjaChcdTAwMjZkaXN0LVx1MDAzZWxwaV94YSwgaW50aWQsIGlycSkge1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjEzMTY6XHRcdGlycSA9IHZnaWNfZ2V0X2lycShrdm0sIGludGlkKTtcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0xMzE3LVx0XHRpZiAoIWlycSlcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9MTM2Mz1zdGF0aWMgaW50IHZnaWNfaXRzX2NtZF9oYW5kbGVfbW92YWxsKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IHZnaWNfaXRzICppdHMsXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTEzODEtXHR4YV9mb3JfZWFjaChcdTAwMjZkaXN0LVx1MDAzZWxwaV94YSwgaW50aWQsIGlycSkge1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjEzODI6XHRcdGlycSA9IHZnaWNfZ2V0X2lycShrdm0sIGludGlkKTtcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0xMzgzLVx0XHRpZiAoIWlycSlcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jPTE4MD1zdGF0aWMgdm9pZCB2Z2ljX21taW9fd3JpdGVfdGFyZ2V0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTE5My1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIGxlbjsgaSYjNDM7JiM0MzspIHtcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmM6MTk0Olx0XHRzdHJ1Y3QgdmdpY19pcnEgKmlycSA9IHZnaWNfZ2V0X2lycSh2Y3B1LVx1MDAzZWt2bSwgaW50aWQgJiM0MzsgaSk7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTE5NS1cdFx0aW50IHRhcmdldDtcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jPTIyMD1zdGF0aWMgdW5zaWduZWQgbG9uZyB2Z2ljX21taW9fcmVhZF9pcm91dGVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTIyMy1cdGludCBpbnRpZCA9IFZHSUNfQUREUl9UT19JTlRJRChhZGRyLCA2NCk7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jOjIyNDpcdHN0cnVjdCB2Z2ljX2lycSAqaXJxID0gdmdpY19nZXRfaXJxKHZjcHUtXHUwMDNla3ZtLCBpbnRpZCk7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTIyNS1cdHVuc2lnbmVkIGxvbmcgcmV0ID0gMDtcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jPTIzOD1zdGF0aWMgdm9pZCB2Z2ljX21taW9fd3JpdGVfaXJvdXRlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy0yNDktXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jOjI1MDpcdGlycSA9IHZnaWNfZ2V0X2lycSh2Y3B1LVx1MDAzZWt2bSwgaW50aWQpO1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy0yNTEtXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYz01NTU9c3RhdGljIHZvaWQgdmdpY19tbWlvX3dyaXRlX2ludmxwaShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy01NzctXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jOjU3ODpcdGlycSA9IHZnaWNfZ2V0X2lycSh2Y3B1LVx1MDAzZWt2bSwgaW50aWQpO1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy01NzktXHRpZiAoaXJxKSB7XG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYz03MzM9dm9pZCB2Z2ljX21taW9fd3JpdGVfY29uZmlnKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTc1Mi1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM6NzUzOlx0XHRpcnEgPSB2Z2ljX2dldF9pcnEodmNwdS1cdTAwM2Vrdm0sIGludGlkICYjNDM7IGkpO1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy03NTQtXHRcdHJhd19zcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZpcnEtXHUwMDNlaXJxX2xvY2ssIGZsYWdzKTtcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYz02Nj1zdGF0aWMgc3RydWN0IHZnaWNfaXJxICp2Z2ljX2dldF9scGkoc3RydWN0IGt2bSAqa3ZtLCB1MzIgaW50aWQpXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmMtODYtICovXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYzo4NzpzdHJ1Y3QgdmdpY19pcnEgKnZnaWNfZ2V0X2lycShzdHJ1Y3Qga3ZtICprdm0sIHUzMiBpbnRpZClcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jLTg4LXtcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYz0xMDg9c3RydWN0IHZnaWNfaXJxICp2Z2ljX2dldF92Y3B1X2lycShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBpbnRpZClcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYy0xMzEtXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYzoxMzI6XHRyZXR1cm4gdmdpY19nZXRfaXJxKHZjcHUtXHUwMDNla3ZtLCBpbnRpZCk7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYy0xMzMtfVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jPTQxNj1ib29sIHZnaWNfcXVldWVfaXJxX3VubG9jayhzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCB2Z2ljX2lycSAqaXJxLFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jLTQ5My1cdCAqL1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmM6NDk0Olx0dmdpY19nZXRfaXJxX3JlZihpcnEpO1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmMtNDk1LVx0bGlzdF9hZGRfdGFpbChcdTAwMjZpcnEtXHUwMDNlYXBfbGlzdCwgXHUwMDI2dmNwdS1cdTAwM2VhcmNoLnZnaWNfY3B1LmFwX2xpc3RfaGVhZCk7XG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmM9NTMzPWludCBrdm1fdmdpY19pbmplY3RfaXJxKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jLTU0OS1cdGVsc2VcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jOjU1MDpcdFx0aXJxID0gdmdpY19nZXRfaXJxKGt2bSwgaW50aWQpO1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmMtNTUxLVx0aWYgKCFpcnEpXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmM9NzUwPXN0YXRpYyB2b2lkIHZnaWNfcHJ1bmVfYXBfbGlzdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmMtNzgxLVx0XHRcdCAqIFRoaXMgdmdpY19wdXRfaXJxIGNhbGwgbWF0Y2hlcyB0aGVcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jOjc4MjpcdFx0XHQgKiB2Z2ljX2dldF9pcnFfcmVmIGluIHZnaWNfcXVldWVfaXJxX3VubG9jayxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jLTc4My1cdFx0XHQgKiB3aGVyZSB3ZSBhZGRlZCB0aGUgTFBJIHRvIHRoZSBhcF9saXN0LiBBc1xuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jLTgwMC1cdFx0ICovXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYzo4MDE6XHRcdHZnaWNfZ2V0X2lycV9yZWYoaXJxKTtcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jLTgwMi1cbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuaD0yNjA9dmdpY19nZXRfbW1pb19yZWdpb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3QgdmdpY19pb19kZXZpY2UgKmlvZGV2LFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmgtMjYxLVx0XHQgICAgIGdwYV90IGFkZHIsIGludCBsZW4pO1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmg6MjYyOnN0cnVjdCB2Z2ljX2lycSAqdmdpY19nZXRfaXJxKHN0cnVjdCBrdm0gKmt2bSwgdTMyIGludGlkKTtcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5oLTI2My1zdHJ1Y3QgdmdpY19pcnEgKnZnaWNfZ2V0X3ZjcHVfaXJxKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTMyIGludGlkKTtcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuaD0zMDQ9c3RhdGljIGlubGluZSBib29sIHZnaWNfdHJ5X2dldF9pcnFfcmVmKHN0cnVjdCB2Z2ljX2lycSAqaXJxKVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5oLTMxNC1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5oOjMxNTpzdGF0aWMgaW5saW5lIHZvaWQgdmdpY19nZXRfaXJxX3JlZihzdHJ1Y3QgdmdpY19pcnEgKmlycSlcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5oLTMxNi17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDExOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1MTE3CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogOTA4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBLVk0gVkdJQyBDb2RlIGZvciBQb3RlbnRpYWwgVnVsbmVyYWJpbGl0aWVzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgbXkgc3BpZGVyIHNlbnNlcyBhcmUgdGluZ2xpbmcuIGB2Z2ljX2dldF9pcnFgIGlzIGEgaGVhdmlseSB1c2VkIGZ1bmN0aW9uIGluIEtWTSYjMzk7cyBWR0lDIGNvZGUsIGEgY3JpdGljYWwgY29tcG9uZW50LCBhbmQgdGhpcyBwYXRjaCBtb2RpZmllcyBpdHMgYmVoYXZpb3IuIFRoYXQmIzM5O3MgYSByZWQgZmxhZywgcmlnaHQgdGhlcmUuCgpUaGUgY2hhbmdlIGl0c2VsZiBhcHBlYXJzIHRvIGFkZHJlc3MgYSBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyBhY2Nlc3MuIFRoZSBvcmlnaW5hbCBjb2RlIHVzZWQgYGFycmF5X2luZGV4X25vc3BlY2AgdG8gY2xhbXAgYGludGlkYC4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0aGF0IHN1YnRyYWN0aW5nIGBWR0lDX05SX1BSSVZBVEVfSVJRU2AgKmFmdGVyKiB0aGUgY2xhbXAgY291bGQgbGVhZCB0byBwcm9ibGVtcywgYnV0IHRoZW4gSSByZWFsaXplZCwgd2FpdCwgYGFycmF5X2luZGV4X25vc3BlY2AgY2xhbXBzICp0byogdGhlIHVwcGVyIGJvdW5kLiBTbywgaWYgYGludGlkYCB3YXMgY2xhbXBlZCB0byB0aGUgdXBwZXIgbGltaXQsIHN1YnRyYWN0aW5nIGBWR0lDX05SX1BSSVZBVEVfSVJRU2Agd291bGQgc3RpbGwgYmUgYSB2YWxpZCBpbmRleC4gQnV0IHRoZW4gaXQgaGl0IG1lOiBpZiBgaW50aWRgICp3YXMqIG91dCBvZiBib3VuZHMsIGBhcnJheV9pbmRleF9ub3NwZWNgIHdvdWxkIHJldHVybiAwLiBTdWJ0cmFjdGluZyBgVkdJQ19OUl9QUklWQVRFX0lSUVNgIGZyb20gemVyby4uLiB0aGF0JiMzOTtzIGEgcmVjaXBlIGZvciBhIG1hc3NpdmUgbmVnYXRpdmUgKG9yIHBvc3NpYmx5IGh1Z2UgcG9zaXRpdmUsIGlmIGl0JiMzOTtzIHVuc2lnbmVkKSBpbmRleCwgYW4gYWJzb2x1dGVseSBjbGFzc2ljIG91dC1vZi1ib3VuZHMgcmVhZCEgVGhpcyBpcyBhIGNyaXRpY2FsIHNlY3VyaXR5IGZpeDsgaXQmIzM5O3MgcHJhY3RpY2FsbHkgc2NyZWFtaW5nIGZvciBzb21lIHNlcmlvdXMgZnV6emluZy4KCkkgbW92ZWQgb24gdG8gYHZnaWNfZ2V0X3ZjcHVfaXJxYCwgYW5kIGhlcmUgSSBzZWUgYSBzaW1pbGFyIHBhdHRlcm4sIHNwZWNpZmljYWxseSBhIGJvdW5kcyBjaGVjayBhZGRlZCBmb3IgR0lDdjUuIEdvb2QgY2F0Y2guCgpOb3csIGxldCYjMzk7cyBpZGVudGlmeSB0aGUga2V5IGZvY3VzIHN5bWJvbHMuIGB2Z2ljX2dldF9pcnFgIGFuZCBgdmdpY19nZXRfdmNwdV9pcnFgIHNlZW0gbGlrZSBwcmltZSBjYW5kaWRhdGVzLiBIb3dldmVyLCBnaXZlbiB0aGVpciB3aWRlc3ByZWFkIHVzZSwgSSBuZWVkIHRvIHpvb20gaW4gb24gd2hlcmUgdGhleSYjMzk7cmUgYmVpbmcgKmNhbGxlZCogZnJvbS4gSSYjMzk7bSB0aGlua2luZyBJL08gY29udHJvbCBjYWxscyBhcmUgaGlnaC12YWx1ZSB0YXJnZXRzLCBzbyBJIGNoZWNrZWQgdGhvc2U6IGB2Z2ljX21taW9fd3JpdGVfdGFyZ2V0YCwgYHZnaWNfbW1pb193cml0ZV9pcm91dGVyYCwgYHZnaWNfbW1pb193cml0ZV9pbnZscGlgLCBhbmQgYHZnaWNfbW1pb193cml0ZV9jb25maWdgLCBhbmQgYWxzbyBga3ZtX3ZnaWNfaW5qZWN0X2lycWAgd2hpY2ggaXMgY2FsbGVkIGZyb20gYGt2bV92bV9pb2N0bF9pcnFfbGluZWAuIEdpdmVuIHRoYXQgYHZnaWNfZ2V0X2lycWAgYW5kIGB2Z2ljX2dldF92Y3B1X2lycWAgYXJlbiYjMzk7dCBzdGF0aWMsIHRoZXkmIzM5O3JlIHRoZSBwcmltYXJ5IGZvY3VzLCBoZXJlLiBga3ZtX3ZnaWNfaHlwX2luaXRgIGlzIGNhbGxlZCBkdXJpbmcgaW5pdGlhbGl6YXRpb24sIG5vdCBhcyBpbnRlcmVzdGluZyBmb3IgZnV6emluZywgYW5kIGBnaWN2NV9jcHVfZGlzYWJsZV9pbnRlcnJ1cHRzYCBhbmQgYGdpY3Y1X2lyc19jbGVhcl9hZmZpbml0eWAgYXJlIHN0YXRpYywgc28gdGhhdCBuYXJyb3dzIHRoZSBmb2N1cyBvbiBgdmdpY19nZXRfaXJxYCBhbmQgYHZnaWNfZ2V0X3ZjcHVfaXJxYC4gSSYjMzk7bGwgemVybyBpbiBvbiB0aGVtIGZvciBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxMTozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2Z2ljX2dldF9pcnEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYz02Nj1zdGF0aWMgc3RydWN0IHZnaWNfaXJxICp2Z2ljX2dldF9scGkoc3RydWN0IGt2bSAqa3ZtLCB1MzIgaW50aWQpXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmMtODYtICovXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYzo4NzpzdHJ1Y3QgdmdpY19pcnEgKnZnaWNfZ2V0X2lycShzdHJ1Y3Qga3ZtICprdm0sIHUzMiBpbnRpZClcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jLTg4LXtcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYz0xMDg9c3RydWN0IHZnaWNfaXJxICp2Z2ljX2dldF92Y3B1X2lycShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBpbnRpZClcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYy0xMzEtXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYzoxMzI6XHRyZXR1cm4gdmdpY19nZXRfaXJxKHZjcHUtXHUwMDNla3ZtLCBpbnRpZCk7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYy0xMzMtfVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jPTQxNj1ib29sIHZnaWNfcXVldWVfaXJxX3VubG9jayhzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCB2Z2ljX2lycSAqaXJxLFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jLTQ5My1cdCAqL1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmM6NDk0Olx0dmdpY19nZXRfaXJxX3JlZihpcnEpO1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmMtNDk1LVx0bGlzdF9hZGRfdGFpbChcdTAwMjZpcnEtXHUwMDNlYXBfbGlzdCwgXHUwMDI2dmNwdS1cdTAwM2VhcmNoLnZnaWNfY3B1LmFwX2xpc3RfaGVhZCk7XG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmM9NTMzPWludCBrdm1fdmdpY19pbmplY3RfaXJxKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jLTU0OS1cdGVsc2VcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jOjU1MDpcdFx0aXJxID0gdmdpY19nZXRfaXJxKGt2bSwgaW50aWQpO1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmMtNTUxLVx0aWYgKCFpcnEpXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmM9NzUwPXN0YXRpYyB2b2lkIHZnaWNfcHJ1bmVfYXBfbGlzdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmMtNzgxLVx0XHRcdCAqIFRoaXMgdmdpY19wdXRfaXJxIGNhbGwgbWF0Y2hlcyB0aGVcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jOjc4MjpcdFx0XHQgKiB2Z2ljX2dldF9pcnFfcmVmIGluIHZnaWNfcXVldWVfaXJxX3VubG9jayxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jLTc4My1cdFx0XHQgKiB3aGVyZSB3ZSBhZGRlZCB0aGUgTFBJIHRvIHRoZSBhcF9saXN0LiBBc1xuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jLTgwMC1cdFx0ICovXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYzo4MDE6XHRcdHZnaWNfZ2V0X2lycV9yZWYoaXJxKTtcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jLTgwMi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTE6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc1NTEKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiA0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBFeHBvcnQgU3RhdHVzIG9mIGB2Z2ljX2dldF9pcnFgIGFuZCBgdmdpY19nZXRfdmNwdV9pcnFgKioKClJpZ2h0LCBsZXQmIzM5O3Mgc2VlLiBNeSBpbml0aWFsIGh1bmNoIGlzIHRoYXQgYHZnaWNfZ2V0X2lycWAgYW5kIGB2Z2ljX2dldF92Y3B1X2lycWAgYXJlIGxpa2VseSBleHBvcnRlZCwgb3IgYXQgdGhlIHZlcnkgbGVhc3QsIHRoZXkmIzM5O3JlIG5vdCBkZWNsYXJlZCBhcyBgc3RhdGljYC4gR2l2ZW4gdGhlaXIgbmFtZXMgYW5kIHBvdGVudGlhbCBmdW5jdGlvbmFsaXR5IHdpdGhpbiB0aGUgVmdpYyBzdWJzeXN0ZW0sIGl0IG1ha2VzIHNlbnNlIHRoZXkmIzM5O2QgYmUgYXZhaWxhYmxlIG91dHNpZGUgdGhlaXIgaW1tZWRpYXRlIGNvbXBpbGF0aW9uIHVuaXQuIEkmIzM5O3ZlIGVuY291bnRlcmVkIHNpbWlsYXIgcGF0dGVybnMgYmVmb3JlLCBzbyB0aGlzIGlzbiYjMzk7dCBhIHNob3QgaW4gdGhlIGRhcmsuCgpUbyBjb25maXJtIHRoaXMsIEkgbmVlZCB0byB2ZXJpZnkgdGhlaXIgZXhwb3J0IHN0YXR1cyBleHBsaWNpdGx5LiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSByZWxldmFudCBoZWFkZXIgZmlsZXMsIGFuZCBwb3NzaWJseSBleGFtaW5lIHRoZSBidWlsZCBzeXN0ZW0gY29uZmlndXJhdGlvbiB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuIEEgcXVpY2sgc2NhbiBvZiB0aGUgc291cmNlIHNob3VsZCBiZSBlbm91Z2ggdG8gY29uZmlybSBpZiBJJiMzOTttIHJpZ2h0LiBFeHBvcnRlZCBzeW1ib2xzIHdpbGwgYmUgaW4gdGhlIHN5c3RlbSBtYXAuIE5vIG5lZWQgdG8gZ2V0IGFoZWFkIG9mIG15c2VsZiwgYnV0IGl0JiMzOTtzIGltcG9ydGFudCB0byBrbm93IHRoZSBsZXZlbCBvZiB2aXNpYmlsaXR5IGZvciB0aGVzZSBmdW5jdGlvbnMuIFRoZWlyIG5vbi1zdGF0aWMgbmF0dXJlIGhhcyBwb3RlbnRpYWwgaW1wbGljYXRpb25zIGluIGEgbXVsdGktdGhyZWFkZWQgb3IgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDExOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RVhQT1JUX1NZTUJPTC4qdmdpY19nZXRfaXJxJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC9rdm0vdmdpYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxMTozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzkwMgoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipBbmFseXppbmcgS1ZNIFZHSUMgQ29kZTogTm9uLVN0YXRpYyBUaG91Z2h0cyoqCgpSaWdodCwgc28gdGhlc2UgYXJlbiYjMzk7dCBtb2R1bGUtZXhwb3J0ZWQgZnVuY3Rpb25zLCB0aGF0JiMzOTtzIGNsZWFyLiBCdXQgdGhlIGtleSB0aGluZyBoZXJlIGlzIHRoYXQgdGhleSAqYXJlKiBub24tc3RhdGljIGFuZCBlbXBsb3llZCBhY3Jvc3MgdGhlIEtWTSBWR0lDIGNvZGUuIFRoaXMgaW1tZWRpYXRlbHkgbWFrZXMgbWUgdGhpbmsgYWJvdXQgc2NvcGUgYW5kIGhvdyB0aGVzZSBmdW5jdGlvbnMgaW50ZXJhY3Qgd2l0aCBkaWZmZXJlbnQgcGFydHMgb2YgdGhlIHZpcnR1YWwgR0lDIGltcGxlbWVudGF0aW9uLiBOb3csIHdoZXJlIGFyZSB0aGVzZSBmdW5jdGlvbnMgdXNlZCwgYW5kIHdoYXQgaXMgdGhlIGtleSBmdW5jdGlvbiB0byB0cmFjZSB0aGVpciB1c2U/IExldCYjMzk7cyB0cmFjZSBpdCBiYWNrIHRvIGBrdm1fdmdpY19pbmplY3RfaXJxYC4gRnJvbSB0aGVyZSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSB3aGF0IHRoYXQgZnVuY3Rpb24gZG9lcyB3aXRoIHRoZW0uIEkmIzM5O2xsIG5lZWQgdG8gZ28gdGhyb3VnaCB0aGUgdXNlIGNhc2VzIHRvIGNvbXBsZXRlbHkgdW5kZXJzdGFuZCB0aGUgcHVycG9zZSBvZiB0aGUgdmFyaWFibGVzIHVzZWQgdGhyb3VnaG91dCB0aGUgY29kZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTE6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX3ZnaWNfaW5qZWN0X2lycSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvYXJtNjQva3ZtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2FybTY0L2t2bS9hcmNoX3RpbWVyLmM9NDU3PXN0YXRpYyB2b2lkIGt2bV90aW1lcl91cGRhdGVfaXJxKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgYm9vbCBuZXdfbGV2ZWwsXG4tLVxuYXJjaC9hcm02NC9rdm0vYXJjaF90aW1lci5jLTQ3OC1cbmFyY2gvYXJtNjQva3ZtL2FyY2hfdGltZXIuYzo0Nzk6XHRrdm1fdmdpY19pbmplY3RfaXJxKHZjcHUtXHUwMDNla3ZtLCB2Y3B1LFxuYXJjaC9hcm02NC9rdm0vYXJjaF90aW1lci5jLTQ4MC1cdFx0XHQgICAgdGltZXJfaXJxKHRpbWVyX2N0eCksXG4tLVxuYXJjaC9hcm02NC9rdm0vYXJtLmM9MTQ4Nz1pbnQga3ZtX3ZtX2lvY3RsX2lycV9saW5lKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9pcnFfbGV2ZWwgKmlycV9sZXZlbCxcbi0tXG5hcmNoL2FybTY0L2t2bS9hcm0uYy0xNTQ3LVxuYXJjaC9hcm02NC9rdm0vYXJtLmM6MTU0ODpcdFx0cmV0dXJuIGt2bV92Z2ljX2luamVjdF9pcnEoa3ZtLCB2Y3B1LCBpcnFfbnVtLCBsZXZlbCwgTlVMTCk7XG5hcmNoL2FybTY0L2t2bS9hcm0uYy0xNTQ5LVx0Y2FzZSBLVk1fQVJNX0lSUV9UWVBFX1NQSTpcbi0tXG5hcmNoL2FybTY0L2t2bS9hcm0uYy0xNTY1LVxuYXJjaC9hcm02NC9rdm0vYXJtLmM6MTU2NjpcdFx0cmV0dXJuIGt2bV92Z2ljX2luamVjdF9pcnEoa3ZtLCBOVUxMLCBpcnFfbnVtLCBsZXZlbCwgTlVMTCk7XG5hcmNoL2FybTY0L2t2bS9hcm0uYy0xNTY3LVx0fVxuLS1cbmFyY2gvYXJtNjQva3ZtL3BtdS1lbXVsLmM9Mzk2PXN0YXRpYyB2b2lkIGt2bV9wbXVfdXBkYXRlX3N0YXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL2FybTY0L2t2bS9wbXUtZW11bC5jLTQwMi1cbmFyY2gvYXJtNjQva3ZtL3BtdS1lbXVsLmM6NDAzOlx0V0FSTl9PTihrdm1fdmdpY19pbmplY3RfaXJxKHZjcHUtXHUwMDNla3ZtLCB2Y3B1LCBwbXUtXHUwMDNlaXJxX251bSxcbmFyY2gvYXJtNjQva3ZtL3BtdS1lbXVsLmMtNDA0LVx0XHRcdFx0ICAgIGt2bV9wbXVfb3ZlcmZsb3dfc3RhdHVzKHZjcHUpLCBwbXUpKTtcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXJxZmQuYz0xOD1zdGF0aWMgaW50IHZnaWNfaXJxZmRfc2V0X2lycShzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFfcm91dGluZ19lbnRyeSAqZSxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXJxZmQuYy0zMS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pcnFmZC5jOjMyOlx0cmV0dXJuIGt2bV92Z2ljX2luamVjdF9pcnEoa3ZtLCBOVUxMLCBzcGlfaWQsIGxldmVsLCBOVUxMKTtcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pcnFmZC5jLTMzLX1cbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtdjMtbmVzdGVkLmM9Mzg5PXZvaWQgdmdpY192M19oYW5kbGVfbmVzdGVkX21haW50X2lycShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLXYzLW5lc3RlZC5jLTM5My1cdC8qIFRoaXMgd2lsbCBmb3JjZSBhIHN3aXRjaCBiYWNrIHRvIEwxIGlmIHRoZSBsZXZlbCBpcyBoaWdoICovXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtdjMtbmVzdGVkLmM6Mzk0Olx0a3ZtX3ZnaWNfaW5qZWN0X2lycSh2Y3B1LVx1MDAzZWt2bSwgdmNwdSxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy12My1uZXN0ZWQuYy0zOTUtXHRcdFx0ICAgIHZjcHUtXHUwMDNla3ZtLVx1MDAzZWFyY2gudmdpYy5taV9pbnRpZCwgc3RhdGUsIHZjcHUpO1xuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy12My1uZXN0ZWQuYz00MDA9dm9pZCB2Z2ljX3YzX25lc3RlZF91cGRhdGVfbWkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy12My1uZXN0ZWQuYy00MDQtXHRsZXZlbCA9IChfX3ZjcHVfc3lzX3JlZyh2Y3B1LCBJQ0hfSENSX0VMMikgXHUwMDI2IElDSF9IQ1JfRUwyX0VuKSBcdTAwMjZcdTAwMjYgdmdpY192M19nZXRfbWlzcih2Y3B1KTtcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy12My1uZXN0ZWQuYzo0MDU6XHRrdm1fdmdpY19pbmplY3RfaXJxKHZjcHUtXHUwMDNla3ZtLCB2Y3B1LFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLXYzLW5lc3RlZC5jLTQwNi1cdFx0XHQgICAgdmNwdS1cdTAwM2Vrdm0tXHUwMDNlYXJjaC52Z2ljLm1pX2ludGlkLCBsZXZlbCwgdmNwdSk7XG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmM9NDE2PWJvb2wgdmdpY19xdWV1ZV9pcnFfdW5sb2NrKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IHZnaWNfaXJxICppcnEsXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmMtNTE2LS8qKlxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmM6NTE3OiAqIGt2bV92Z2ljX2luamVjdF9pcnEgLSBJbmplY3QgYW4gSVJRIGZyb20gYSBkZXZpY2UgdG8gdGhlIHZnaWNcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jLTUxOC0gKiBAa3ZtOiAgICAgVGhlIFZNIHN0cnVjdHVyZSBwb2ludGVyXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmMtNTMyLSAqL1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmM6NTMzOmludCBrdm1fdmdpY19pbmplY3RfaXJxKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmMtNTM0LVx0XHRcdHVuc2lnbmVkIGludCBpbnRpZCwgYm9vbCBsZXZlbCwgdm9pZCAqb3duZXIpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDExOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5NTYyCgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMTAwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZvY3VzaW5nIG9uIHRoZSBWaXJ0dWFsIEdJQyoqCgpPa2F5LCBzbyBJJiMzOTttIGhvbmluZyBpbiBvbiB0aGUgS1ZNIFZpcnR1YWwgR0lDIGltcGxlbWVudGF0aW9uLiBga3ZtX3ZnaWNfaW5qZWN0X2lycWAgaXMgYSBwYXJ0aWN1bGFybHkgaW50ZXJlc3Rpbmcgc3ltYm9sIHRvIGV4cGxvcmUuIEkmIzM5O20gYWxzbyBmaW5kaW5nIHRoYXQgYHZnaWNfZ2V0X2lycWAgYW5kIGB2Z2ljX2dldF92Y3B1X2lycWAgYXJlIHZlcnkgcmVsZXZhbnQuIE15IG1haW4gcXVlc3Rpb24gbm93IGlzOiBXaGF0IGFib3V0IEdJQ3Y1PyBEb2VzIEtWTSBoYXZlIHN1cHBvcnQgZm9yIHRoZSBtb3JlIHJlY2VudCBHSUN2NSBhcmNoaXRlY3R1cmU/IEkgbmVlZCB0byB2ZXJpZnkgdGhhdC4gTXkgaW5zdGluY3QgaXMgdGVsbGluZyBtZSB0byBsb29rIGZvciBgS1ZNX0RFVl9UWVBFX0FSTV9WR0lDX1Y1YCwgc2luY2UgdGhhdCB3b3VsZCBtYWtlIHNlbnNlLCBzbyBJJiMzOTtsbCBkaXZlIGludG8gYGFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jYCB0byBjb25maXJtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxMTozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtLVk1fREVWX1RZUEVfQVJNX1ZHSUNfVjUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL2FybTY0L2t2bS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuYz03MT1pbnQga3ZtX3ZnaWNfY3JlYXRlKHN0cnVjdCBrdm0gKmt2bSwgdTMyIHR5cGUpXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuYy0xMzUtXHRcdGt2bS1cdTAwM2VtYXhfdmNwdXMgPSBWR0lDX1YzX01BWF9DUFVTO1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuYzoxMzY6XHRlbHNlIGlmICh0eXBlID09IEtWTV9ERVZfVFlQRV9BUk1fVkdJQ19WNSlcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pbml0LmMtMTM3LVx0XHRrdm0tXHUwMDNlbWF4X3ZjcHVzID0gbWluKFZHSUNfVjVfTUFYX0NQVVMsXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuYy0xOTAtXHQgKi9cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pbml0LmM6MTkxOlx0aWYgKHR5cGUgPT0gS1ZNX0RFVl9UWVBFX0FSTV9WR0lDX1Y1KVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuYy0xOTItXHRcdGt2bV90aW1lcl9pbml0X3ZtKGt2bSk7XG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuYz00MDg9c3RhdGljIHZvaWQga3ZtX3ZnaWNfdmNwdV9yZXNldChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuYy00MTEtXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaW5pdC5jOjQxMjpcdGlmIChkaXN0LVx1MDAzZXZnaWNfbW9kZWwgPT0gS1ZNX0RFVl9UWVBFX0FSTV9WR0lDX1Y1KVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuYy00MTMtXHRcdHZnaWNfdjVfcmVzZXQodmNwdSk7XG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuYz02ODA9dm9pZCBrdm1fdmdpY19maW5hbGl6ZV9pZHJlZ3Moc3RydWN0IGt2bSAqa3ZtKVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pbml0LmMtNjk2LVx0XHRicmVhaztcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pbml0LmM6Njk3Olx0Y2FzZSBLVk1fREVWX1RZUEVfQVJNX1ZHSUNfVjU6XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaW5pdC5jLTY5OC1cdFx0YWE2NHBmcjIgfD0gU1lTX0ZJRUxEX1BSRVBfRU5VTShJRF9BQTY0UEZSMl9FTDEsIEdDSUUsIElNUCk7XG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWt2bS1kZXZpY2UuYz0zMjI9aW50IGt2bV9yZWdpc3Rlcl92Z2ljX2RldmljZSh1bnNpZ25lZCBsb25nIHR5cGUpXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWt2bS1kZXZpY2UuYy0zMzgtXHRcdGJyZWFrO1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWt2bS1kZXZpY2UuYzozMzk6XHRjYXNlIEtWTV9ERVZfVFlQRV9BUk1fVkdJQ19WNTpcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1rdm0tZGV2aWNlLmMtMzQwLVx0XHRyZXQgPSBrdm1fcmVnaXN0ZXJfZGV2aWNlX29wcyhcdTAwMjZrdm1fYXJtX3ZnaWNfdjVfb3BzLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWt2bS1kZXZpY2UuYzozNDE6XHRcdFx0XHRcdCAgICAgIEtWTV9ERVZfVFlQRV9BUk1fVkdJQ19WNSk7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMta3ZtLWRldmljZS5jLTM0Mi1cdFx0YnJlYWs7XG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYz04NDM9dm9pZCB2Z2ljX3NldF92bWNyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IHZnaWNfdm1jciAqdm1jcilcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTg0Ny1cdHN3aXRjaCAoZGlzdC1cdTAwM2V2Z2ljX21vZGVsKSB7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jOjg0ODpcdGNhc2UgS1ZNX0RFVl9UWVBFX0FSTV9WR0lDX1Y1OlxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy04NDktXHRcdHZnaWNfdjVfc2V0X3ZtY3IodmNwdSwgdm1jcik7XG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYz04NjU9dm9pZCB2Z2ljX2dldF92bWNyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IHZnaWNfdm1jciAqdm1jcilcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTg2OS1cdHN3aXRjaCAoZGlzdC1cdTAwM2V2Z2ljX21vZGVsKSB7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jOjg3MDpcdGNhc2UgS1ZNX0RFVl9UWVBFX0FSTV9WR0lDX1Y1OlxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy04NzEtXHRcdHZnaWNfdjVfZ2V0X3ZtY3IodmNwdSwgdm1jcik7XG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLXY1LmM9NDA9aW50IHZnaWNfdjVfcHJvYmUoY29uc3Qgc3RydWN0IGdpY19rdm1faW5mbyAqaW5mbylcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtdjUuYy02Ny1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy12NS5jOjY4Olx0cmV0ID0ga3ZtX3JlZ2lzdGVyX3ZnaWNfZGV2aWNlKEtWTV9ERVZfVFlQRV9BUk1fVkdJQ19WNSk7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtdjUuYy02OS1cdGlmIChyZXQpIHtcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYz0xMDg9c3RydWN0IHZnaWNfaXJxICp2Z2ljX2dldF92Y3B1X2lycShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBpbnRpZClcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYy0xMTgtXHRcdHN3aXRjaCAodHlwZSkge1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmM6MTE5Olx0XHRjYXNlIEtWTV9ERVZfVFlQRV9BUk1fVkdJQ19WNTpcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jLTEyMC1cdFx0XHRpbnRpZCA9IHZnaWNfdjVfZ2V0X2h3aXJxX2lkKGludGlkKTtcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYz0xMTc1PXZvaWQga3ZtX3ZnaWNfbG9hZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmMtMTE4NS1cdHN3aXRjaCAoZGlzdC1cdTAwM2V2Z2ljX21vZGVsKSB7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYzoxMTg2Olx0Y2FzZSBLVk1fREVWX1RZUEVfQVJNX1ZHSUNfVjU6XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYy0xMTg3LVx0XHR2Z2ljX3Y1X2xvYWQodmNwdSk7XG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmM9MTIwMz12b2lkIGt2bV92Z2ljX3B1dChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmMtMTIxMy1cdHN3aXRjaCAoZGlzdC1cdTAwM2V2Z2ljX21vZGVsKSB7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYzoxMjE0Olx0Y2FzZSBLVk1fREVWX1RZUEVfQVJNX1ZHSUNfVjU6XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYy0xMjE1LVx0XHR2Z2ljX3Y1X3B1dCh2Y3B1KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTE6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzE3NTIKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqS1ZNIEdJQ3Y1IFN1cHBvcnQ6IEEgUXVpY2sgUmV2aWV3KioKCk9rYXksIHNvIEdJQ3Y1ICppcyogc3VwcG9ydGVkIHdpdGhpbiBLVk0uIE15IG1lbnRhbCBjaGVja2xpc3QgdGVsbHMgbWUgdGhlIGNvcmUgbW9kaWZpY2F0aW9ucyBhcmUgY2VudGVyZWQgaW4gdGhlIEtWTSBWR0lDIGFuZCB0aGUgR0lDdjUgZHJpdmVycy4gU3BlY2lmaWNhbGx5LCBJIHNlZSBjaGFuZ2VzIHdpdGhpbiB0aGUgYGdpY3Y1X2NwdV9kaXNhYmxlX2ludGVycnVwdHNgIGZ1bmN0aW9uLCB3aGVyZSBhbiBgaXNiKClgIGluc3RydWN0aW9uIGhhcyBiZWVuIGFkZGVkLCBhbmQgdGhlIGBnaWN2NV9pcnNfY2xlYXJfYWZmaW5pdHlgIGZ1bmN0aW9uLCB3aGljaCBhcHBlYXJzIHRvIGFkZHJlc3MgZWl0aGVyIGEgbWVtb3J5IGxlYWsgb3Igc29tZSBraW5kIG9mIHN0YXRlIGNsZWFudXAgaXNzdWUuIFdpdGhpbiBLVk0gVkdJQywgdGhlcmUgYXJlIGltcG9ydGFudCBmaXhlcyBhZGRyZXNzaW5nIHRoZSBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2VzcyBidWdzIGluIGB2Z2ljX2dldF9pcnFgIGFuZCBgdmdpY19nZXRfdmNwdV9pcnFgLCBhcyB3ZWxsIGFzIGEgbWVtb3J5IGxlYWsgaWRlbnRpZmllZCBpbiBga3ZtX3ZnaWNfaHlwX2luaXRgLgoKVGhlc2Ugc2VlbSBsaWtlIHN1YnN0YW50aWFsIGZ1bmN0aW9uYWwgY2hhbmdlcywgZGVmaW5pdGVseSB3YXJyYW50aW5nIHNvbWUgc2VyaW91cyBmdXp6aW5nLiBMb29raW5nIGF0IHRoZSByZXF1aXJlZCBjb25maWd1cmF0aW9ucywgSSBuZWVkIHRvIG1ha2Ugc3VyZSBgQ09ORklHX0tWTWAgYW5kIGBDT05GSUdfQVJNX0dJQ19WNWAgYXJlIGVuYWJsZWQuIEFoLCByaWdodCwgYEFSTV9HSUNfVjVgIGlzIGFjdHVhbGx5IHNlbGVjdGVkIGJ5IGBBUk02NGAuIFNvIG9uIEFSTTY0LCB0aGF0JiMzOTtzIGFscmVhZHkgdGFrZW4gY2FyZSBvZi4gQnV0IGBLVk1gIGlzIHRoZSBjcml0aWNhbCBjb21wb25lbnQgaGVyZTsgdGhhdCYjMzk7cyB0aGUgb25lIEkgbmVlZCB0byBiZSBzdXJlIGlzIGVuYWJsZWQuIEkgc2hvdWxkIHByb2JhYmx5IGRvIGEgcXVpY2sgYXVkaXQgdG8gc2VlIGlmIGFueSBvdGhlciBjb25maWd1cmF0aW9ucyBtaWdodCBiZSByZWxldmFudCBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxMTozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQVJNX0dJQ19WNSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvaXJxY2hpcC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvaXJxY2hpcC9LY29uZmlnPTQ2PWNvbmZpZyBBUk1fR0lDX1YzX0lUU1xuLS1cbmRyaXZlcnMvaXJxY2hpcC9LY29uZmlnLTUzLVxuZHJpdmVycy9pcnFjaGlwL0tjb25maWc6NTQ6Y29uZmlnIEFSTV9HSUNfVjVcbmRyaXZlcnMvaXJxY2hpcC9LY29uZmlnLTU1LVx0Ym9vbFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxMTozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjQwNAoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDcxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipLVk0gQ29uZmlndXJhdGlvbiBBbmFseXNpcyBmb3IgQVJNNjQgd2l0aCBHSUN2NSoqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoZSBLVk0gY29uZmlndXJhdGlvbiBmb3IgQVJNNjQsIHNwZWNpZmljYWxseSByZWdhcmRpbmcgdGhlIEdJQ3Y1IGltcGxlbWVudGF0aW9uLiBJIHNlZSB0aGF0IGBBUk1fR0lDX1Y1YCBpcyBiYXNpY2FsbHkgYSBib29sZWFuLCBub3Qgc29tZXRoaW5nIHRoZSB1c2VyIGRpcmVjdGx5IHNlbGVjdHMuIEl0JiMzOTtzIGVzc2VudGlhbGx5IGVuYWJsZWQgYnkgdGhlIGBBUk02NGAgY29uZmlnLiBTbywgdGhhdCBtZWFucyBgS1ZNYCBpcyB0aGUgcHJpbWFyeSwgcGl2b3RhbCBjb25maWcgaGVyZS4KCk5vdywgbGV0JiMzOTtzIG5haWwgZG93biB0aGUga2V5IHN5bWJvbHMgZm9yIGFuYWx5c2lzLiBJJiMzOTttIGZvY3VzaW5nIG9uIHRoZSBmdW5jdGlvbnMgdGhhdCBwcm92aWRlIHRoZSBjb3JlIEtWTS9HSUN2NSBpbnRlcmFjdGlvbiBwb2ludHMuIEkmIzM5O3ZlIGdvdCBteSBpbml0aWFsIGxpc3Q6IGBrdm1fdmdpY19pbmplY3RfaXJxYCwgYHZnaWNfZ2V0X2lycWAsIGFuZCBgdmdpY19nZXRfdmNwdV9pcnFgLiBXYWl0LCBhcmVuJiMzOTt0IHRob3NlIHR3bywgYHZnaWNfZ2V0X2lycWAgYW5kIGB2Z2ljX2dldF92Y3B1X2lycWAsIG5vdCBleHBvcnRlZCBzeW1ib2xzPyBCdXQgdGhleSYjMzk7cmUgbm90IHN0YXRpYywgc28gdGhhdCYjMzk7cyBpbnRlcmVzdGluZy4gSSBzaG91bGQgY2hlY2sgdGhlaXIgZGVmaW5pdGlvbjsgdGhleSYjMzk7cmUgaW4gYGFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jYC4gQ29uZmlybWVkLiBPa2F5LCBsZXQmIzM5O3Mgc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIga2V5IGZ1bmN0aW9ucy4gQWgsIGBrdm1fdmdpY19oeXBfaW5pdGAgaXMgY2FsbGVkIG9uY2UgZHVyaW5nIGluaXRpYWxpemF0aW9uLiBBbmQsIGBnaWN2NV9jcHVfZGlzYWJsZV9pbnRlcnJ1cHRzYCBpcyBzdGF0aWMsIHNvIEkgY2FuIGlnbm9yZSB0aGF0IG9uZSwgYW5kIHNhbWUgZm9yIGBnaWN2NV9pcnNfY2xlYXJfYWZmaW5pdHlgLgoKTGV0JiMzOTtzIGNpcmNsZSBiYWNrIHRvIHRoZSBjYW5kaWRhdGVzLiBJJiMzOTttIHRoaW5raW5nIGB2Z2ljX2dldF9pcnFgIHNlZW1zIGxpa2UgYSBnb29kIGZvY3VzIHBvaW50LCBpdCYjMzk7cyBjYWxsZWQgZnJvbSBhIGxvdCBvZiBwbGFjZXMuIGBrdm1fdmdpY19pbmplY3RfaXJxYCBpcyBhbHNvIHN0cm9uZy4gWWVhaCwgdGhhdCYjMzk7cyB0aGUgY29yZS4gU28gSSYjMzk7bGwgZGVmaW5pdGVseSBnbyB3aXRoIGBrdm1fdmdpY19pbmplY3RfaXJxYCwgYHZnaWNfZ2V0X2lycWAsIGFuZCBgdmdpY19nZXRfdmNwdV9pcnFgLiBUaG9zZSBhcmUgdGhlIGNvcmUgc3ltYm9scy4KCkp1c3QgdG8gYmUgc3VyZSwgbGV0JiMzOTtzIGRvdWJsZS1jaGVjayB0aGUgZGVmaW5pdGlvbnMuIEkmIzM5O2xsIGNvbmZpcm0gdGhhdCBgdmdpY19nZXRfaXJxYCBpcyBhcyBJIGV4cGVjdDoKCmBgYGMKc3RydWN0IHZnaWNfaXJxICp2Z2ljX2dldF9pcnEoc3RydWN0IGt2bSAqa3ZtLCB1MzIgaW50aWQpCnsKLi4uCn0KYGBgCgphbmQgYHZnaWNfZ2V0X3ZjcHVfaXJxYDoKCmBgYGMKc3RydWN0IHZnaWNfaXJxICp2Z2ljX2dldF92Y3B1X2lycShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBpbnRpZCkKewouLi4KfQpgYGAKCk9rYXksIHBlcmZlY3QuIE5vdywgd2hhdCBhYm91dCB0aG9zZSBzdGF0aWMgZnVuY3Rpb25zPyBMZXQmIzM5O3MgY29uZmlybSBhZ2FpbiB0aGF0IGBnaWN2NV9pcnNfY2xlYXJfYWZmaW5pdHlgIGlzIHN0YXRpYzsgb2theSwgSSBjYW4gaWdub3JlIHRoYXQuIEFuZCwgd2hhdCBhYm91dCBgZ2ljdjVfaXJzX3JlbW92ZWA/IEhtbSwgaXQmIzM5O3MgYHZvaWQgX19pbml0IGdpY3Y1X2lyc19yZW1vdmUodm9pZClgLiBXYWl0LCBgX19pbml0YD8gVGhhdCBtZWFucyBpdCYjMzk7cyBvbmx5IGZvciBlcnJvciBwYXRocyBkdXJpbmcgaW5pdCwgc28gaXQmIzM5O3Mgbm90IGEgY29yZSBzeW1ib2wgZm9yIHJlZ3VsYXIgb3BlcmF0aW9uLgoKYGBgYwp2b2lkIF9faW5pdCBnaWN2NV9pcnNfcmVtb3ZlKHZvaWQpCnsKLi4uCn0KYGBgCgpBbmQgZmluYWxseSwgYGdpY3Y1X2NwdV9kaXNhYmxlX2ludGVycnVwdHNgPyBUaGF0IGlzIGFsc28gc3RhdGljLCBzbyBub3RoaW5nIGhlcmUuCgpTbywgeWVhaCwgSSYjMzk7bSBjb25maWRlbnQgdGhhdCBga3ZtX3ZnaWNfaW5qZWN0X2lycWAsIGB2Z2ljX2dldF9pcnFgLCBhbmQgYHZnaWNfZ2V0X3ZjcHVfaXJxYCBhcmUgdGhlIGNvcnJlY3QgZm9jdXMgc3ltYm9scy4KCk5vdywganVzdCB0byBjb25maXJtLCBpcyBgS1ZNYCB0aGUgb25seSBjb25maWcgSSBuZWVkPyBZZXAsIGBLVk1gIGlzIHRoZSBwcmltYXJ5IG9uZSwgYWxsIHJvYWRzIGxlYWQgdG8gYEtWTWAgZm9yIHRoZSBLVk0gb24gQVJNNjQuIFdhaXQsIGlzIHRoZXJlIGEgYEtWTV9BUk1fVkdJQ19WNWAgY29uZmlnPyBIbW0uLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTE6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtLVk1fQVJNX1ZHSUNfVjUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL2FybTY0L2t2bS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTE6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQwMTgKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipLZXJuZWwgQ29uZmlndXJhdGlvbiBRdWVyeSoqCgpSaWdodCwgdGhhdCYjMzk7cyBhIG5lZ2F0aXZlIG9uIHdoYXRldmVyIGluaXRpYWwgcXVlc3Rpb24gSSB3YXMgY29uc2lkZXJpbmcuIExldCYjMzk7cyBkaWcgZGVlcGVyLiBUaGUgZmlyc3QgcGxhY2UgdG8gY2hlY2ssIG5hdHVyYWxseSwgaXMgYEtjb25maWdgLiBTcGVjaWZpY2FsbHksIGZvciB0aGUgQVJNNjQgYXJjaGl0ZWN0dXJlLCBJIG5lZWQgdG8gbG9vayBhdCBgYXJjaC9hcm02NC9rdm0vS2NvbmZpZ2AuIEkmIzM5O20gZ29pbmcgdG8gaGF2ZSB0byBmaW5kIHdoYXQgZGVwZW5kZW5jaWVzIGFyZSB0aGVyZSwgd2hhdCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIGF2YWlsYWJsZSwgYW5kIGdldCBhbiBpZGVhIG9mIHdoZXJlIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyBlbmFibGVkIG9yIGRpc2FibGVkIGF0IGJ1aWxkIHRpbWUuIEl0JiMzOTtzIHRoZSBzdGFuZGFyZCBwbGFjZSB0byBzdGFydCBkZWJ1Z2dpbmcgYSBrZXJuZWwgY29uZmlndXJhdGlvbiBpc3N1ZSwgYWZ0ZXIgYSBxdWljayAmIzM0O25vJiMzNDsgdG8gdGhlIGluaXRpYWwgdGhvdWdodC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTE6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEtWTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvYXJtNjQva3ZtL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxuYXJjaC9hcm02NC9rdm0vS2NvbmZpZy0xOS1cbmFyY2gvYXJtNjQva3ZtL0tjb25maWc6MjA6bWVudWNvbmZpZyBLVk1cbmFyY2gvYXJtNjQva3ZtL0tjb25maWctMjEtXHRib29sIFwmIzM0O0tlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxMTozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDMyMgoJCQkJCQkJb3V0cHV0OiAxNDUKCQkJCQkJCXRob3VnaHRzOiAxNDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgS1ZNIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgS1ZNIGNvbmZpZ3VyYXRpb24gaW4gZnJvbnQgb2YgbWUuIExldCYjMzk7cyBicmVhayBpdCBkb3duIGFuZCBzZWUgd2hhdCB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoLiBGaXJzdCBvZmYsIGBXb3J0aEZ1enppbmdgIGlzIHNldCB0byBgdHJ1ZWAuIEdvb2QsIHdlIHdhbnQgdG8gc3ViamVjdCBpdCB0byB0aG9yb3VnaCB0ZXN0aW5nLiBUaGUgYEZvY3VzU3ltYm9sc2AgYXJlIGxpc3RlZCBhcyBgdmdpY19nZXRfaXJxYCwgYHZnaWNfZ2V0X3ZjcHVfaXJxYCwgYW5kIGBrdm1fdmdpY19pbmplY3RfaXJxYC4gVGhvc2UgYXJlIGFsbCB2ZXJ5IHJlbGV2YW50IHRvIGludGVycnVwdCBoYW5kbGluZyB3aXRoaW4gdGhlIEtWTSYjMzk7cyB2aXJ0dWFsIEdJQyAoVkdJQykgaW1wbGVtZW50YXRpb24g4oCTIGNsYXNzaWMgcG90ZW50aWFsIHRhcmdldHMuIFRoZSBgRW5hYmxlQ29uZmlnc2AgaW5jbHVkZSBgS1ZNYCwgd2hpY2ggbWFrZXMgc2Vuc2UsIGFzIHRoZSBwcm9ibGVtIHNwYWNlIGlzIGxpbWl0ZWQgdG8gS1ZNIGZ1bmN0aW9uYWxpdGllcy4KCk15IHJlYXNvbmluZz8gVGhlIGRlc2NyaXB0aW9uIG1lbnRpb25zIGNyaXRpY2FsIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzZXMgd2l0aGluIEtWTSYjMzk7cyBWR0lDIElSUSBoYW5kbGluZy4gVGhvc2UgYXJlIG5hc3R5IHZ1bG5lcmFiaWxpdGllcyB0aGF0IHdlIG5lZWQgdG8gYWRkcmVzcyBpbW1lZGlhdGVseS4gU3BlY2lmaWNhbGx5LCB0aGUgaWRlbnRpZmllZCBmdW5jdGlvbnMgKGB2Z2ljX2dldF9pcnFgLCBgdmdpY19nZXRfdmNwdV9pcnFgKSBhcmUgdGFyZ2V0cy4gQSBtZW1vcnkgbGVhayBpbiBWR0lDIGluaXRpYWxpemF0aW9uIGlzIGFsc28gcHJvYmxlbWF0aWMsIGluZGljYXRpbmcgYSByZXNvdXJjZSBtYW5hZ2VtZW50IGZsYXcuIEFkZGl0aW9uYWxseSwgd2UmIzM5O3JlIHRvbGQgYWJvdXQgYSBtaXNzaW5nIG1lbW9yeSBiYXJyaWVyIGluIHRoZSBHSUN2NSBkcml2ZXIuIEFsbCB0aGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGFmZmVjdGluZyBjb3JlIHZpcnR1YWxpemF0aW9uIGFuZCBpbnRlcnJ1cHQgY29udHJvbGxlciBjb2RlLiBUaGV5IGFsbCBzcGVhayB0byBkZWVwLXNlYXRlZCBpc3N1ZXMgdGhhdCBhcmUgbGlrZWx5IHJlYWNoYWJsZSBhbmQgaGF2ZSB0aGUgcG90ZW50aWFsIGZvciBleHBsb2l0YXRpb24uIFRoaXMgY29uZmlndXJhdGlvbiBpcyBjbGVhcmx5IGFpbWVkIGF0IGFkZHJlc3Npbmcgc29tZSBzaWduaWZpY2FudCBpc3N1ZXMuIEkgbmVlZCB0byBkaXZlIGRlZXBlciBpbnRvIHRoZXNlIHNwZWNpZmljIGZ1bmN0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTE6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3ZnaWNfZ2V0X2lycSYjMzQ7LAogICAgJiMzNDt2Z2ljX2dldF92Y3B1X2lycSYjMzQ7LAogICAgJiMzNDtrdm1fdmdpY19pbmplY3RfaXJxJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGNyaXRpY2FsIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzZXMgaW4gS1ZNIFZHSUMgSVJRIGhhbmRsaW5nIChgdmdpY19nZXRfaXJxYCwgYHZnaWNfZ2V0X3ZjcHVfaXJxYCksIGEgbWVtb3J5IGxlYWsgaW4gVkdJQyBpbml0aWFsaXphdGlvbiwgYW5kIGFkZHMgYSBtaXNzaW5nIG1lbW9yeSBiYXJyaWVyIGluIHRoZSBHSUN2NSBkcml2ZXIuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gcmVhY2hhYmxlIGNvcmUgdmlydHVhbGl6YXRpb24gYW5kIGludGVycnVwdCBjb250cm9sbGVyIGNvZGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3ZnaWNfZ2V0X2lycSYjMzQ7LAogICAgJiMzNDt2Z2ljX2dldF92Y3B1X2lycSYjMzQ7LAogICAgJiMzNDtrdm1fdmdpY19pbmplY3RfaXJxJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGNyaXRpY2FsIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzZXMgaW4gS1ZNIFZHSUMgSVJRIGhhbmRsaW5nIChgdmdpY19nZXRfaXJxYCwgYHZnaWNfZ2V0X3ZjcHVfaXJxYCksIGEgbWVtb3J5IGxlYWsgaW4gVkdJQyBpbml0aWFsaXphdGlvbiwgYW5kIGFkZHMgYSBtaXNzaW5nIG1lbW9yeSBiYXJyaWVyIGluIHRoZSBHSUN2NSBkcml2ZXIuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gcmVhY2hhYmxlIGNvcmUgdmlydHVhbGl6YXRpb24gYW5kIGludGVycnVwdCBjb250cm9sbGVyIGNvZGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDExOjM2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTE6MzY8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgbWVtb3J5IGxlYWsgaW4gdmdpYy1pbml0LmMsIGFuIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzIGFuZCBpbmNvcnJlY3QgaW5kZXggY2FsY3VsYXRpb24gaW4gdmdpYy5jLCBhIHVzZS1hZnRlci1mcmVlL2RhbmdsaW5nIHBvaW50ZXIgaXNzdWUgaW4gaXJxLWdpYy12NS1pcnMuYyBieSBjbGVhcmluZyBwZXItY3B1IHBvaW50ZXJzIGJlZm9yZSBmcmVlaW5nLCBhbmQgYWRkcyBhIG1pc3NpbmcgaW5zdHJ1Y3Rpb24gc3luY2hyb25pemF0aW9uIGJhcnJpZXIgKGlzYikgaW4gaXJxLWdpYy12NS5jLiBOb25lIG9mIHRoZXNlIGNoYW5nZXMgaW52b2x2ZSB1bmluaXRpYWxpemVkIG1lbW9yeSwgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIG9yIGluZm8tbGVha3MgdG8gdXNlciBzcGFjZS4gVGhlIGJ1Z3MgZml4ZWQgKE9PQiwgVUFGLCBtZW1vcnkgbGVha3MpIGFyZSB3ZWxsIHdpdGhpbiB0aGUgc2NvcGUgb2YgS0FTQU4gYW5kIEtNRU1MRUFLLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDYyY2I1ZGNjZDVmYzZhNTZmMjI4MWUwMGQ5M2MzZDY3ZDY2NjcxMzYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEF1ZyAxMCAxMTozNDozNiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pbml0LmMgYi9hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaW5pdC5jCmluZGV4IDkwNzA1Nzg4MWIyNmEuLjY1ZTIwM2Q2YTJjZjQgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pbml0LmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuYwpAQCAtNzg3LDcgJiM0Mzs3ODcsOCBAQCBpbnQga3ZtX3ZnaWNfaHlwX2luaXQodm9pZCkKIAogCWlmIChoYXNfbWFzayAmYW1wOyZhbXA7ICFnaWNfa3ZtX2luZm8tJmd0O21haW50X2lycSkgewogCQlrdm1fZXJyKCYjMzQ7Tm8gdmdpYyBtYWludGVuYW5jZSBpcnFcbiYjMzQ7KTsKLQkJcmV0dXJuIC1FTlhJTzsKJiM0MzsJCXJldCA9IC1FTlhJTzsKJiM0MzsJCWdvdG8gb3V0X2ZyZWU7CiAJfQogCiAJLyoKQEAgLTgyMCw2ICYjNDM7ODIxLDcgQEAgaW50IGt2bV92Z2ljX2h5cF9pbml0KHZvaWQpCiAKIAlrdm1fdmdpY19nbG9iYWxfc3RhdGUubWFpbnRfaXJxID0gZ2ljX2t2bV9pbmZvLSZndDttYWludF9pcnE7CiAKJiM0MztvdXRfZnJlZToKIAlrZnJlZShnaWNfa3ZtX2luZm8pOwogCWdpY19rdm1faW5mbyA9IE5VTEw7CiAKZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jIGIvYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmMKaW5kZXggNzRiYWNlMTBhMjJlZC4uYjI1MzAzZDk5MTlmZCAxMDA2NDQKLS0tIGEvYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmMKQEAgLTkzLDggJiM0Mzs5Myw5IEBAIHN0cnVjdCB2Z2ljX2lycSAqdmdpY19nZXRfaXJxKHN0cnVjdCBrdm0gKmt2bSwgdTMyIGludGlkKQogCS8qIFNQSXMgKi8KIAlpZiAoaW50aWQgJmd0Oz0gVkdJQ19OUl9QUklWQVRFX0lSUVMgJmFtcDsmYW1wOwogCSAgICBpbnRpZCAmbHQ7IChrdm0tJmd0O2FyY2gudmdpYy5ucl9zcGlzICYjNDM7IFZHSUNfTlJfUFJJVkFURV9JUlFTKSkgewotCQlpbnRpZCA9IGFycmF5X2luZGV4X25vc3BlYyhpbnRpZCwga3ZtLSZndDthcmNoLnZnaWMubnJfc3BpcyAmIzQzOyBWR0lDX05SX1BSSVZBVEVfSVJRUyk7Ci0JCXJldHVybiAmYW1wO2t2bS0mZ3Q7YXJjaC52Z2ljLnNwaXNbaW50aWQgLSBWR0lDX05SX1BSSVZBVEVfSVJRU107CiYjNDM7CQlpbnRpZCAtPSBWR0lDX05SX1BSSVZBVEVfSVJRUzsKJiM0MzsJCWludGlkID0gYXJyYXlfaW5kZXhfbm9zcGVjKGludGlkLCBrdm0tJmd0O2FyY2gudmdpYy5ucl9zcGlzKTsKJiM0MzsJCXJldHVybiAmYW1wO2t2bS0mZ3Q7YXJjaC52Z2ljLnNwaXNbaW50aWRdOwogCX0KIAogCS8qIExQSXMgKi8KQEAgLTExNyw2ICYjNDM7MTE4LDggQEAgc3RydWN0IHZnaWNfaXJxICp2Z2ljX2dldF92Y3B1X2lycShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBpbnRpZCkKIAkJc3dpdGNoICh0eXBlKSB7CiAJCWNhc2UgS1ZNX0RFVl9UWVBFX0FSTV9WR0lDX1Y1OgogCQkJaW50aWQgPSB2Z2ljX3Y1X2dldF9od2lycV9pZChpbnRpZCk7CiYjNDM7CQkJaWYgKGludGlkICZndDs9IFZHSUNfVjVfTlJfUFJJVkFURV9JUlFTKQomIzQzOwkJCQlyZXR1cm4gTlVMTDsKIAkJCWludGlkID0gYXJyYXlfaW5kZXhfbm9zcGVjKGludGlkLCBWR0lDX1Y1X05SX1BSSVZBVEVfSVJRUyk7CiAJCQlicmVhazsKIAkJZGVmYXVsdDoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jIGIvZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMKaW5kZXggZjNmY2UwYjFlMjVkOS4uNjc5NDBlYTllMzliNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMKQEAgLTY1MSw2ICYjNDM7NjUxLDE5IEBAIHN0YXRpYyBpbnQgX19pbml0IGdpY3Y1X2lyc19vZl9pbml0X2FmZmluaXR5KHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSwKIAlyZXR1cm4gcmV0OwogfQogCiYjNDM7c3RhdGljIHZvaWQgX19pbml0IGdpY3Y1X2lyc19jbGVhcl9hZmZpbml0eShzdHJ1Y3QgZ2ljdjVfaXJzX2NoaXBfZGF0YSAqaXJzX2RhdGEpCiYjNDM7ewomIzQzOwlpbnQgY3B1OwomIzQzOwomIzQzOwlmb3JfZWFjaF9wb3NzaWJsZV9jcHUoY3B1KSB7CiYjNDM7CQlpZiAocGVyX2NwdShwZXJfY3B1X2lyc19kYXRhLCBjcHUpID09IGlyc19kYXRhKSB7CiYjNDM7CQkJcGVyX2NwdShjcHVfaWFmZmlkLCBjcHUpLmlhZmZpZCA9IDA7CiYjNDM7CQkJcGVyX2NwdShjcHVfaWFmZmlkLCBjcHUpLnZhbGlkID0gZmFsc2U7CiYjNDM7CQkJcGVyX2NwdShwZXJfY3B1X2lyc19kYXRhLCBjcHUpID0gTlVMTDsKJiM0MzsJCX0KJiM0MzsJfQomIzQzO30KJiM0MzsKIHN0YXRpYyB2b2lkIGlyc19zZXR1cF9wcmlfYml0cyh1MzIgaWRyMSkKIHsKIAlzd2l0Y2ggKEZJRUxEX0dFVChHSUNWNV9JUlNfSURSMV9QUklPUklUWV9CSVRTLCBpZHIxKSkgewpAQCAtNzczLDYgJiM0Mzs3ODYsNyBAQCBzdGF0aWMgaW50IF9faW5pdCBnaWN2NV9pcnNfb2ZfaW5pdChzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUpCiAJcmV0dXJuIHJldDsKIAogb3V0X2lvbWVtOgomIzQzOwlnaWN2NV9pcnNfY2xlYXJfYWZmaW5pdHkoaXJzX2RhdGEpOwogCWlvdW5tYXAoaXJzX2Jhc2UpOwogb3V0X2VycjoKIAlrZnJlZShpcnNfZGF0YSk7CkBAIC03ODcsNiAmIzQzOzgwMSw3IEBAIHZvaWQgX19pbml0IGdpY3Y1X2lyc19yZW1vdmUodm9pZCkKIAlnaWN2NV9kZWluaXRfbHBpcygpOwogCiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGlyc19kYXRhLCB0bXBfZGF0YSwgJmFtcDtpcnNfbm9kZXMsIGVudHJ5KSB7CiYjNDM7CQlnaWN2NV9pcnNfY2xlYXJfYWZmaW5pdHkoaXJzX2RhdGEpOwogCQlpb3VubWFwKGlyc19kYXRhLSZndDtpcnNfYmFzZSk7CiAJCWxpc3RfZGVsKCZhbXA7aXJzX2RhdGEtJmd0O2VudHJ5KTsKIAkJa2ZyZWUoaXJzX2RhdGEpOwpAQCAtOTUxLDYgJiM0Mzs5NjYsNyBAQCBzdGF0aWMgaW50IF9faW5pdCBnaWNfYWNwaV9wYXJzZV9tYWR0X2lycyh1bmlvbiBhY3BpX3N1YnRhYmxlX2hlYWRlcnMgKmhlYWRlciwKIAlyZXR1cm4gMDsKIAogb3V0X21hcDoKJiM0MzsJZ2ljdjVfaXJzX2NsZWFyX2FmZmluaXR5KGlyc19kYXRhKTsKIAlpb3VubWFwKGlyc19iYXNlKTsKIG91dF9yZWxlYXNlOgogCXJlbGVhc2VfbWVtX3JlZ2lvbihyLSZndDtzdGFydCwgcmVzb3VyY2Vfc2l6ZShyKSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS5jIGIvZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUuYwppbmRleCBlOWQxNzk1MjM1YTY2Li42YTk5YzU0MWI1NTliIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LmMKQEAgLTk4Myw2ICYjNDM7OTgzLDcgQEAgc3RhdGljIHZvaWQgZ2ljdjVfY3B1X2Rpc2FibGVfaW50ZXJydXB0cyh2b2lkKQogCiAJY3IwID0gRklFTERfUFJFUChJQ0NfQ1IwX0VMMV9FTiwgMCk7CiAJd3JpdGVfc3lzcmVnX3MoY3IwLCBTWVNfSUNDX0NSMF9FTDEpOwomIzQzOwlpc2IoKTsKIH0KIAogc3RhdGljIHZvaWQgZ2ljdjVfY3B1X2VuYWJsZV9pbnRlcnJ1cHRzKHZvaWQpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxMTozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTU1CgkJCQkJCQlvdXRwdXQ6IDE3NQoJCQkJCQkJdGhvdWdodHM6IDU2NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipQYXRjaCBBbmFseXNpcyBhbmQgS01TQU4gQXNzZXNzbWVudCoqCgpPa2F5LCBsZXQgbWUgYnJlYWsgdGhpcyBkb3duLiBGcm9tIGEgcXVpY2sgc2NhbiwgaXQgbG9va3MgbGlrZSB0aGlzIHBhdGNoIGlzIGFsbCBhYm91dCB0aWdodGVuaW5nIHVwIHNvbWUgbG9vc2UgZW5kcyBpbiB0aGUgS1ZNIGFuZCBHSUN2NSBpbnRlcmFjdGlvbiwgbW9zdGx5IGFyb3VuZCBtZW1vcnkgc2FmZXR5IGFuZCBjb3JyZWN0IGJlaGF2aW9yLgoKRmlyc3QsIGluIGBhcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaW5pdC5jYCwgdGhlIGNoYW5nZSBpcyByZXBsYWNpbmcgYSBzaW1wbGUgYHJldHVybiAtRU5YSU87YCB3aXRoIGEgcHJvcGVyIGBnb3RvIG91dF9mcmVlO2Agd2hpY2ggaW5jbHVkZXMgYSBga2ZyZWVgIG9mIGBnaWNfa3ZtX2luZm9gLiBUaGlzIGlzIGEgc3RyYWlnaHRmb3J3YXJkIG1lbW9yeSBsZWFrIGZpeC4gTm90aGluZyBjb21wbGV4IG9yIGNvbmNlcm5pbmcgZnJvbSBhIEtNU0FOIHBlcnNwZWN0aXZlLCBhcyBpdCBzaW1wbHkgYWRkcyBhIG5lY2Vzc2FyeSBjbGVhbnVwIHBhdGguCgpOZXh0LCBpbiBgYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmNgLCB3ZSYjMzk7cmUgYWRkcmVzc2luZyBhcnJheSBhY2Nlc3MgaXNzdWVzIGluIGJvdGggYHZnaWNfZ2V0X2lycWAgYW5kIGB2Z2ljX2dldF92Y3B1X2lycWAuIFRoZSB1c2Ugb2YgYGFycmF5X2luZGV4X25vc3BlY2AgaXMgYmVpbmcgcmV2aXNlZCB0byBlbnN1cmUgdGhhdCB0aGUgaW5kZXggYGludGlkYCBzdGF5cyB3aXRoaW4gdGhlIHZhbGlkIGJvdW5kcy4gVGhpcyBwcmV2ZW50cyBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyByZWFkcyBvciB3cml0ZXMsIHdoaWNoIGlzIGEgZ29vZCBzYWZldHkgbWVhc3VyZS4gVGhlcmUmIzM5O3MgYWxzbyBhIGRpcmVjdCBib3VuZHMgY2hlY2sgbm93IGFkZGVkLgoKVGhlbiwgbW92aW5nIHRvIGBkcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuY2AsIGBnaWN2NV9pcnNfY2xlYXJfYWZmaW5pdHlgIGlzIGludHJvZHVjZWQuIFRoaXMgc2VlbXMgdG8gYmUgYSBjcnVjaWFsIGFkZGl0aW9uIGZvciBjbGVhcmluZyBwZXItQ1BVIHN0YXRlIGFzc29jaWF0ZWQgd2l0aCBgaXJzX2RhdGFgICpiZWZvcmUqIGZyZWVpbmcgdGhlIG1lbW9yeS4gVGhpcyBpcyBhIHZlcnkgY2xlYXIgVUFGICh1c2UtYWZ0ZXItZnJlZSkgYW5kIGRhbmdsaW5nIHBvaW50ZXIgaXNzdWUgZml4LiBFbGltaW5hdGluZyBhIHJhY2UgY29uZGl0aW9uIGhlcmUgd2lsbCBkbyB3b25kZXJzIGZvciBzdGFiaWxpdHkuCgpGaW5hbGx5LCBpbiBgZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUuY2AsIHdlJiMzOTtyZSBhZGRpbmcgYW4gYGlzYigpYCBpbnN0cnVjdGlvbiBhZnRlciB3cml0aW5nIHRvIGEgc3lzdGVtIHJlZ2lzdGVyLiBUaGlzIGlzIGFsbCBhYm91dCBlbnN1cmluZyB0aGUgY29ycmVjdCBtZW1vcnkgYmFycmllciBmb3IgaW5zdHJ1Y3Rpb24gc3luY2hyb25pemF0aW9uLiBUaGUga2VybmVsIGlzIHRha2luZyBhIGNvbnNlcnZhdGl2ZSBhcHByb2FjaCBoZXJlIHRvIHByZXZlbnQgYW55IHBvdGVudGlhbCBtaXNzZWQgdXBkYXRlcyBvciBkYXRhIGNvcnJ1cHRpb24uCgpMb29raW5nIGF0IHRoZSBvdmVyYWxsIHBpY3R1cmUsIG5vbmUgb2YgdGhlc2UgY2hhbmdlcyBpbnRyb2R1Y2UgYW55IG5ldyB1bmluaXRpYWxpemVkIG1lbW9yeSB2dWxuZXJhYmlsaXRpZXMsIGluZm8tbGVha3MsIG9yIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLiBXZSYjMzk7cmUgcHJpbWFyaWx5IGZpeGluZyBtZW1vcnkgbGVha3MsIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSBjb25kaXRpb25zLCBhbmQgbWlzc2luZyBtZW1vcnkgYmFycmllcnMuIEFsbCBvZiB0aGVzZSBidWdzIHdvdWxkIGJlIGNhdWdodCBieSBleGlzdGluZyB0b29scyBsaWtlIEtBU0FOIG9yIEtNRU1MRUFLLCBvciBhcmUganVzdCBzdHJhaWdodCBsb2dpYyBidWdzLiBTbywgSSBzZWUgbm8gcmVhc29uIHRvIGJlbGlldmUgdGhhdCBLTVNBTiB3b3VsZCBhZGQgdmFsdWUgaGVyZTsgaW4gZmFjdCwgdGhlcmUgaXMgbm90aGluZyBpbiB0aGlzIHBhdGNoIHRoYXQgd291bGQgY2hhbmdlIHRoZSBLTVNBTiBzdGF0dXMgb2YgYW55dGhpbmcuIFdlIGRvbiYjMzk7dCBuZWVkIHRvIGVuYWJsZSBpdCBmb3IgdGhpcyBwYXRjaC4KCkkgd2lsbCBkb3VibGUgY2hlY2sgbXkgYW5hbHlzaXMgd2l0aCBhIHF1aWNrIHJldmlldy4KLSAgIGB2Z2ljX2luaXQuY2A6IFRoZSBtZW1vcnkgbGVhayBpcyBmaXhlZCBieSBhZGRpbmcgYGtmcmVlKGdpY19rdm1faW5mbyk7YCB0byB0aGUgZXJyb3IgcGF0aC4KLSAgIGB2Z2ljLmNgOiBUaGUgY2hhbmdlIGhhbmRsZXMgYW4gb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3MgYnkgY29ycmVjdGluZyB0aGUgaW5kZXggY2FsY3VsYXRpb24gaW4gdGhlIGNvZGUuCi0gICBgaXJxLWdpYy12NS1pcnMuY2A6IFRoZSBVQUYgaXMgYXZvaWRlZCBieSBhZGRpbmcgYGdpY3Y1X2lyc19jbGVhcl9hZmZpbml0eWAuCi0gICBgaXJxLWdpYy12NS5jYDogVGhlIGluc3RydWN0aW9uIHN5bmNocm9uaXphdGlvbiBiYXJyaWVyIGlzIGFkZHJlc3NlZCBieSB0aGUgdXNlIG9mIGBpc2IoKWAuCgpZZXAsIGxvb2tzIGdvb2QuIE5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIG9yIEtNU0FOIG5lZWRzIHRoYXQgSSBjYW4gaWRlbnRpZnkgaGVyZS4gVGhpcyBpcyBhIHNvbGlkIHNldCBvZiBmaXhlcyB0aGF0IGltcHJvdmVzIHRoZSByb2J1c3RuZXNzIG9mIHRoZSBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDExOjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHJlc3NlcyBhIG1lbW9yeSBsZWFrIGluIHZnaWMtaW5pdC5jLCBhbiBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2VzcyBhbmQgaW5jb3JyZWN0IGluZGV4IGNhbGN1bGF0aW9uIGluIHZnaWMuYywgYSB1c2UtYWZ0ZXItZnJlZS9kYW5nbGluZyBwb2ludGVyIGlzc3VlIGluIGlycS1naWMtdjUtaXJzLmMgYnkgY2xlYXJpbmcgcGVyLWNwdSBwb2ludGVycyBiZWZvcmUgZnJlZWluZywgYW5kIGFkZHMgYSBtaXNzaW5nIGluc3RydWN0aW9uIHN5bmNocm9uaXphdGlvbiBiYXJyaWVyIChpc2IpIGluIGlycS1naWMtdjUuYy4gTm9uZSBvZiB0aGVzZSBjaGFuZ2VzIGludm9sdmUgdW5pbml0aWFsaXplZCBtZW1vcnksIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLCBvciBpbmZvLWxlYWtzIHRvIHVzZXIgc3BhY2UuIFRoZSBidWdzIGZpeGVkIChPT0IsIFVBRiwgbWVtb3J5IGxlYWtzKSBhcmUgd2VsbCB3aXRoaW4gdGhlIHNjb3BlIG9mIEtBU0FOIGFuZCBLTUVNTEVBSy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgbWVtb3J5IGxlYWsgaW4gdmdpYy1pbml0LmMsIGFuIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzIGFuZCBpbmNvcnJlY3QgaW5kZXggY2FsY3VsYXRpb24gaW4gdmdpYy5jLCBhIHVzZS1hZnRlci1mcmVlL2RhbmdsaW5nIHBvaW50ZXIgaXNzdWUgaW4gaXJxLWdpYy12NS1pcnMuYyBieSBjbGVhcmluZyBwZXItY3B1IHBvaW50ZXJzIGJlZm9yZSBmcmVlaW5nLCBhbmQgYWRkcyBhIG1pc3NpbmcgaW5zdHJ1Y3Rpb24gc3luY2hyb25pemF0aW9uIGJhcnJpZXIgKGlzYikgaW4gaXJxLWdpYy12NS5jLiBOb25lIG9mIHRoZXNlIGNoYW5nZXMgaW52b2x2ZSB1bmluaXRpYWxpemVkIG1lbW9yeSwgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIG9yIGluZm8tbGVha3MgdG8gdXNlciBzcGFjZS4gVGhlIGJ1Z3MgZml4ZWQgKE9PQiwgVUFGLCBtZW1vcnkgbGVha3MpIGFyZSB3ZWxsIHdpdGhpbiB0aGUgc2NvcGUgb2YgS0FTQU4gYW5kIEtNRU1MRUFLLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDExOjM0OjM3Ljk4MTY1MzkxM1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNzc1NjAyMDAzNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2Z2ljX2dldF9pcnFcIixcbiAgICBcInZnaWNfZ2V0X3ZjcHVfaXJxXCIsXG4gICAgXCJrdm1fdmdpY19pbmplY3RfaXJxXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRyZXNzZXMgYSBtZW1vcnkgbGVhayBpbiB2Z2ljLWluaXQuYywgYW4gb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3MgYW5kIGluY29ycmVjdCBpbmRleCBjYWxjdWxhdGlvbiBpbiB2Z2ljLmMsIGEgdXNlLWFmdGVyLWZyZWUvZGFuZ2xpbmcgcG9pbnRlciBpc3N1ZSBpbiBpcnEtZ2ljLXY1LWlycy5jIGJ5IGNsZWFyaW5nIHBlci1jcHUgcG9pbnRlcnMgYmVmb3JlIGZyZWVpbmcsIGFuZCBhZGRzIGEgbWlzc2luZyBpbnN0cnVjdGlvbiBzeW5jaHJvbml6YXRpb24gYmFycmllciAoaXNiKSBpbiBpcnEtZ2ljLXY1LmMuIE5vbmUgb2YgdGhlc2UgY2hhbmdlcyBpbnZvbHZlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCB1bmluaXRpYWxpemVkIHZhcmlhYmxlcywgb3IgaW5mby1sZWFrcyB0byB1c2VyIHNwYWNlLiBUaGUgYnVncyBmaXhlZCAoT09CLCBVQUYsIG1lbW9yeSBsZWFrcykgYXJlIHdlbGwgd2l0aGluIHRoZSBzY29wZSBvZiBLQVNBTiBhbmQgS01FTUxFQUsuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBjcml0aWNhbCBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2Vzc2VzIGluIEtWTSBWR0lDIElSUSBoYW5kbGluZyAoYHZnaWNfZ2V0X2lycWAsIGB2Z2ljX2dldF92Y3B1X2lycWApLCBhIG1lbW9yeSBsZWFrIGluIFZHSUMgaW5pdGlhbGl6YXRpb24sIGFuZCBhZGRzIGEgbWlzc2luZyBtZW1vcnkgYmFycmllciBpbiB0aGUgR0lDdjUgZHJpdmVyLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHJlYWNoYWJsZSBjb3JlIHZpcnR1YWxpemF0aW9uIGFuZCBpbnRlcnJ1cHQgY29udHJvbGxlciBjb2RlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxMTozNDozNy45ODE2NTgyMTNaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MjE3NzY2NzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA2MmNiNWRjY2Q1ZmM2YTU2ZjIyODFlMDBkOTNjM2Q2N2Q2NjY3MTM2XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gQXVnIDEwIDExOjM0OjM2IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pbml0LmMgYi9hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaW5pdC5jXFxuaW5kZXggOTA3MDU3ODgxYjI2YS4uNjVlMjAzZDZhMmNmNCAxMDA2NDRcXG4tLS0gYS9hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaW5pdC5jXFxuKysrIGIvYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuY1xcbkBAIC03ODcsNyArNzg3LDggQEAgaW50IGt2bV92Z2ljX2h5cF9pbml0KHZvaWQpXFxuIFxcbiBcXHRpZiAoaGFzX21hc2sgXFx1MDAyNlxcdTAwMjYgIWdpY19rdm1faW5mby1cXHUwMDNlbWFpbnRfaXJxKSB7XFxuIFxcdFxcdGt2bV9lcnIoXFxcIk5vIHZnaWMgbWFpbnRlbmFuY2UgaXJxXFxcXG5cXFwiKTtcXG4tXFx0XFx0cmV0dXJuIC1FTlhJTztcXG4rXFx0XFx0cmV0ID0gLUVOWElPO1xcbitcXHRcXHRnb3RvIG91dF9mcmVlO1xcbiBcXHR9XFxuIFxcbiBcXHQvKlxcbkBAIC04MjAsNiArODIxLDcgQEAgaW50IGt2bV92Z2ljX2h5cF9pbml0KHZvaWQpXFxuIFxcbiBcXHRrdm1fdmdpY19nbG9iYWxfc3RhdGUubWFpbnRfaXJxID0gZ2ljX2t2bV9pbmZvLVxcdTAwM2VtYWludF9pcnE7XFxuIFxcbitvdXRfZnJlZTpcXG4gXFx0a2ZyZWUoZ2ljX2t2bV9pbmZvKTtcXG4gXFx0Z2ljX2t2bV9pbmZvID0gTlVMTDtcXG4gXFxuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jIGIvYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmNcXG5pbmRleCA3NGJhY2UxMGEyMmVkLi5iMjUzMDNkOTkxOWZkIDEwMDY0NFxcbi0tLSBhL2FyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jXFxuKysrIGIvYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmNcXG5AQCAtOTMsOCArOTMsOSBAQCBzdHJ1Y3QgdmdpY19pcnEgKnZnaWNfZ2V0X2lycShzdHJ1Y3Qga3ZtICprdm0sIHUzMiBpbnRpZClcXG4gXFx0LyogU1BJcyAqL1xcbiBcXHRpZiAoaW50aWQgXFx1MDAzZT0gVkdJQ19OUl9QUklWQVRFX0lSUVMgXFx1MDAyNlxcdTAwMjZcXG4gXFx0ICAgIGludGlkIFxcdTAwM2MgKGt2bS1cXHUwMDNlYXJjaC52Z2ljLm5yX3NwaXMgKyBWR0lDX05SX1BSSVZBVEVfSVJRUykpIHtcXG4tXFx0XFx0aW50aWQgPSBhcnJheV9pbmRleF9ub3NwZWMoaW50aWQsIGt2bS1cXHUwMDNlYXJjaC52Z2ljLm5yX3NwaXMgKyBWR0lDX05SX1BSSVZBVEVfSVJRUyk7XFxuLVxcdFxcdHJldHVybiBcXHUwMDI2a3ZtLVxcdTAwM2VhcmNoLnZnaWMuc3Bpc1tpbnRpZCAtIFZHSUNfTlJfUFJJVkFURV9JUlFTXTtcXG4rXFx0XFx0aW50aWQgLT0gVkdJQ19OUl9QUklWQVRFX0lSUVM7XFxuK1xcdFxcdGludGlkID0gYXJyYXlfaW5kZXhfbm9zcGVjKGludGlkLCBrdm0tXFx1MDAzZWFyY2gudmdpYy5ucl9zcGlzKTtcXG4rXFx0XFx0cmV0dXJuIFxcdTAwMjZrdm0tXFx1MDAzZWFyY2gudmdpYy5zcGlzW2ludGlkXTtcXG4gXFx0fVxcbiBcXG4gXFx0LyogTFBJcyAqL1xcbkBAIC0xMTcsNiArMTE4LDggQEAgc3RydWN0IHZnaWNfaXJxICp2Z2ljX2dldF92Y3B1X2lycShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBpbnRpZClcXG4gXFx0XFx0c3dpdGNoICh0eXBlKSB7XFxuIFxcdFxcdGNhc2UgS1ZNX0RFVl9UWVBFX0FSTV9WR0lDX1Y1OlxcbiBcXHRcXHRcXHRpbnRpZCA9IHZnaWNfdjVfZ2V0X2h3aXJxX2lkKGludGlkKTtcXG4rXFx0XFx0XFx0aWYgKGludGlkIFxcdTAwM2U9IFZHSUNfVjVfTlJfUFJJVkFURV9JUlFTKVxcbitcXHRcXHRcXHRcXHRyZXR1cm4gTlVMTDtcXG4gXFx0XFx0XFx0aW50aWQgPSBhcnJheV9pbmRleF9ub3NwZWMoaW50aWQsIFZHSUNfVjVfTlJfUFJJVkFURV9JUlFTKTtcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdGRlZmF1bHQ6XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jIGIvZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmNcXG5pbmRleCBmM2ZjZTBiMWUyNWQ5Li42Nzk0MGVhOWUzOWI3IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jXFxuKysrIGIvZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmNcXG5AQCAtNjUxLDYgKzY1MSwxOSBAQCBzdGF0aWMgaW50IF9faW5pdCBnaWN2NV9pcnNfb2ZfaW5pdF9hZmZpbml0eShzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUsXFxuIFxcdHJldHVybiByZXQ7XFxuIH1cXG4gXFxuK3N0YXRpYyB2b2lkIF9faW5pdCBnaWN2NV9pcnNfY2xlYXJfYWZmaW5pdHkoc3RydWN0IGdpY3Y1X2lyc19jaGlwX2RhdGEgKmlyc19kYXRhKVxcbit7XFxuK1xcdGludCBjcHU7XFxuK1xcbitcXHRmb3JfZWFjaF9wb3NzaWJsZV9jcHUoY3B1KSB7XFxuK1xcdFxcdGlmIChwZXJfY3B1KHBlcl9jcHVfaXJzX2RhdGEsIGNwdSkgPT0gaXJzX2RhdGEpIHtcXG4rXFx0XFx0XFx0cGVyX2NwdShjcHVfaWFmZmlkLCBjcHUpLmlhZmZpZCA9IDA7XFxuK1xcdFxcdFxcdHBlcl9jcHUoY3B1X2lhZmZpZCwgY3B1KS52YWxpZCA9IGZhbHNlO1xcbitcXHRcXHRcXHRwZXJfY3B1KHBlcl9jcHVfaXJzX2RhdGEsIGNwdSkgPSBOVUxMO1xcbitcXHRcXHR9XFxuK1xcdH1cXG4rfVxcbitcXG4gc3RhdGljIHZvaWQgaXJzX3NldHVwX3ByaV9iaXRzKHUzMiBpZHIxKVxcbiB7XFxuIFxcdHN3aXRjaCAoRklFTERfR0VUKEdJQ1Y1X0lSU19JRFIxX1BSSU9SSVRZX0JJVFMsIGlkcjEpKSB7XFxuQEAgLTc3Myw2ICs3ODYsNyBAQCBzdGF0aWMgaW50IF9faW5pdCBnaWN2NV9pcnNfb2ZfaW5pdChzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUpXFxuIFxcdHJldHVybiByZXQ7XFxuIFxcbiBvdXRfaW9tZW06XFxuK1xcdGdpY3Y1X2lyc19jbGVhcl9hZmZpbml0eShpcnNfZGF0YSk7XFxuIFxcdGlvdW5tYXAoaXJzX2Jhc2UpO1xcbiBvdXRfZXJyOlxcbiBcXHRrZnJlZShpcnNfZGF0YSk7XFxuQEAgLTc4Nyw2ICs4MDEsNyBAQCB2b2lkIF9faW5pdCBnaWN2NV9pcnNfcmVtb3ZlKHZvaWQpXFxuIFxcdGdpY3Y1X2RlaW5pdF9scGlzKCk7XFxuIFxcbiBcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoaXJzX2RhdGEsIHRtcF9kYXRhLCBcXHUwMDI2aXJzX25vZGVzLCBlbnRyeSkge1xcbitcXHRcXHRnaWN2NV9pcnNfY2xlYXJfYWZmaW5pdHkoaXJzX2RhdGEpO1xcbiBcXHRcXHRpb3VubWFwKGlyc19kYXRhLVxcdTAwM2VpcnNfYmFzZSk7XFxuIFxcdFxcdGxpc3RfZGVsKFxcdTAwMjZpcnNfZGF0YS1cXHUwMDNlZW50cnkpO1xcbiBcXHRcXHRrZnJlZShpcnNfZGF0YSk7XFxuQEAgLTk1MSw2ICs5NjYsNyBAQCBzdGF0aWMgaW50IF9faW5pdCBnaWNfYWNwaV9wYXJzZV9tYWR0X2lycyh1bmlvbiBhY3BpX3N1YnRhYmxlX2hlYWRlcnMgKmhlYWRlcixcXG4gXFx0cmV0dXJuIDA7XFxuIFxcbiBvdXRfbWFwOlxcbitcXHRnaWN2NV9pcnNfY2xlYXJfYWZmaW5pdHkoaXJzX2RhdGEpO1xcbiBcXHRpb3VubWFwKGlyc19iYXNlKTtcXG4gb3V0X3JlbGVhc2U6XFxuIFxcdHJlbGVhc2VfbWVtX3JlZ2lvbihyLVxcdTAwM2VzdGFydCwgcmVzb3VyY2Vfc2l6ZShyKSk7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LmMgYi9kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS5jXFxuaW5kZXggZTlkMTc5NTIzNWE2Ni4uNmE5OWM1NDFiNTU5YiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS5jXFxuKysrIGIvZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUuY1xcbkBAIC05ODMsNiArOTgzLDcgQEAgc3RhdGljIHZvaWQgZ2ljdjVfY3B1X2Rpc2FibGVfaW50ZXJydXB0cyh2b2lkKVxcbiBcXG4gXFx0Y3IwID0gRklFTERfUFJFUChJQ0NfQ1IwX0VMMV9FTiwgMCk7XFxuIFxcdHdyaXRlX3N5c3JlZ19zKGNyMCwgU1lTX0lDQ19DUjBfRUwxKTtcXG4rXFx0aXNiKCk7XFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkIGdpY3Y1X2NwdV9lbmFibGVfaW50ZXJydXB0cyh2b2lkKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxMTozNDozOS40MDQwMDgwNjJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo5NTI4NjU3ODcyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2Z2ljX2dldF9pcnFcIixcbiAgICBcInZnaWNfZ2V0X3ZjcHVfaXJxXCIsXG4gICAgXCJrdm1fdmdpY19pbmplY3RfaXJxXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgY3JpdGljYWwgb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3NlcyBpbiBLVk0gVkdJQyBJUlEgaGFuZGxpbmcgKGB2Z2ljX2dldF9pcnFgLCBgdmdpY19nZXRfdmNwdV9pcnFgKSwgYSBtZW1vcnkgbGVhayBpbiBWR0lDIGluaXRpYWxpemF0aW9uLCBhbmQgYWRkcyBhIG1pc3NpbmcgbWVtb3J5IGJhcnJpZXIgaW4gdGhlIEdJQ3Y1IGRyaXZlci4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiByZWFjaGFibGUgY29yZSB2aXJ0dWFsaXphdGlvbiBhbmQgaW50ZXJydXB0IGNvbnRyb2xsZXIgY29kZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNjJjYjVkY2NkNWZjNmE1NmYyMjgxZTAwZDkzYzNkNjdkNjY2NzEzNlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDEwIDExOjM0OjM2IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuYyBiL2FyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pbml0LmNcbmluZGV4IDkwNzA1Nzg4MWIyNmEuLjY1ZTIwM2Q2YTJjZjQgMTAwNjQ0XG4tLS0gYS9hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaW5pdC5jXG4rKysgYi9hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaW5pdC5jXG5AQCAtNzg3LDcgKzc4Nyw4IEBAIGludCBrdm1fdmdpY19oeXBfaW5pdCh2b2lkKVxuIFxuIFx0aWYgKGhhc19tYXNrIFx1MDAyNlx1MDAyNiAhZ2ljX2t2bV9pbmZvLVx1MDAzZW1haW50X2lycSkge1xuIFx0XHRrdm1fZXJyKFwiTm8gdmdpYyBtYWludGVuYW5jZSBpcnFcXG5cIik7XG4tXHRcdHJldHVybiAtRU5YSU87XG4rXHRcdHJldCA9IC1FTlhJTztcbitcdFx0Z290byBvdXRfZnJlZTtcbiBcdH1cbiBcbiBcdC8qXG5AQCAtODIwLDYgKzgyMSw3IEBAIGludCBrdm1fdmdpY19oeXBfaW5pdCh2b2lkKVxuIFxuIFx0a3ZtX3ZnaWNfZ2xvYmFsX3N0YXRlLm1haW50X2lycSA9IGdpY19rdm1faW5mby1cdTAwM2VtYWludF9pcnE7XG4gXG4rb3V0X2ZyZWU6XG4gXHRrZnJlZShnaWNfa3ZtX2luZm8pO1xuIFx0Z2ljX2t2bV9pbmZvID0gTlVMTDtcbiBcbmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYyBiL2FyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jXG5pbmRleCA3NGJhY2UxMGEyMmVkLi5iMjUzMDNkOTkxOWZkIDEwMDY0NFxuLS0tIGEvYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmNcbisrKyBiL2FyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jXG5AQCAtOTMsOCArOTMsOSBAQCBzdHJ1Y3QgdmdpY19pcnEgKnZnaWNfZ2V0X2lycShzdHJ1Y3Qga3ZtICprdm0sIHUzMiBpbnRpZClcbiBcdC8qIFNQSXMgKi9cbiBcdGlmIChpbnRpZCBcdTAwM2U9IFZHSUNfTlJfUFJJVkFURV9JUlFTIFx1MDAyNlx1MDAyNlxuIFx0ICAgIGludGlkIFx1MDAzYyAoa3ZtLVx1MDAzZWFyY2gudmdpYy5ucl9zcGlzICsgVkdJQ19OUl9QUklWQVRFX0lSUVMpKSB7XG4tXHRcdGludGlkID0gYXJyYXlfaW5kZXhfbm9zcGVjKGludGlkLCBrdm0tXHUwMDNlYXJjaC52Z2ljLm5yX3NwaXMgKyBWR0lDX05SX1BSSVZBVEVfSVJRUyk7XG4tXHRcdHJldHVybiBcdTAwMjZrdm0tXHUwMDNlYXJjaC52Z2ljLnNwaXNbaW50aWQgLSBWR0lDX05SX1BSSVZBVEVfSVJRU107XG4rXHRcdGludGlkIC09IFZHSUNfTlJfUFJJVkFURV9JUlFTO1xuK1x0XHRpbnRpZCA9IGFycmF5X2luZGV4X25vc3BlYyhpbnRpZCwga3ZtLVx1MDAzZWFyY2gudmdpYy5ucl9zcGlzKTtcbitcdFx0cmV0dXJuIFx1MDAyNmt2bS1cdTAwM2VhcmNoLnZnaWMuc3Bpc1tpbnRpZF07XG4gXHR9XG4gXG4gXHQvKiBMUElzICovXG5AQCAtMTE3LDYgKzExOCw4IEBAIHN0cnVjdCB2Z2ljX2lycSAqdmdpY19nZXRfdmNwdV9pcnEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgaW50aWQpXG4gXHRcdHN3aXRjaCAodHlwZSkge1xuIFx0XHRjYXNlIEtWTV9ERVZfVFlQRV9BUk1fVkdJQ19WNTpcbiBcdFx0XHRpbnRpZCA9IHZnaWNfdjVfZ2V0X2h3aXJxX2lkKGludGlkKTtcbitcdFx0XHRpZiAoaW50aWQgXHUwMDNlPSBWR0lDX1Y1X05SX1BSSVZBVEVfSVJRUylcbitcdFx0XHRcdHJldHVybiBOVUxMO1xuIFx0XHRcdGludGlkID0gYXJyYXlfaW5kZXhfbm9zcGVjKGludGlkLCBWR0lDX1Y1X05SX1BSSVZBVEVfSVJRUyk7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdGRlZmF1bHQ6XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMgYi9kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuY1xuaW5kZXggZjNmY2UwYjFlMjVkOS4uNjc5NDBlYTllMzliNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jXG4rKysgYi9kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuY1xuQEAgLTY1MSw2ICs2NTEsMTkgQEAgc3RhdGljIGludCBfX2luaXQgZ2ljdjVfaXJzX29mX2luaXRfYWZmaW5pdHkoc3RydWN0IGRldmljZV9ub2RlICpub2RlLFxuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG4rc3RhdGljIHZvaWQgX19pbml0IGdpY3Y1X2lyc19jbGVhcl9hZmZpbml0eShzdHJ1Y3QgZ2ljdjVfaXJzX2NoaXBfZGF0YSAqaXJzX2RhdGEpXG4re1xuK1x0aW50IGNwdTtcbitcbitcdGZvcl9lYWNoX3Bvc3NpYmxlX2NwdShjcHUpIHtcbitcdFx0aWYgKHBlcl9jcHUocGVyX2NwdV9pcnNfZGF0YSwgY3B1KSA9PSBpcnNfZGF0YSkge1xuK1x0XHRcdHBlcl9jcHUoY3B1X2lhZmZpZCwgY3B1KS5pYWZmaWQgPSAwO1xuK1x0XHRcdHBlcl9jcHUoY3B1X2lhZmZpZCwgY3B1KS52YWxpZCA9IGZhbHNlO1xuK1x0XHRcdHBlcl9jcHUocGVyX2NwdV9pcnNfZGF0YSwgY3B1KSA9IE5VTEw7XG4rXHRcdH1cbitcdH1cbit9XG4rXG4gc3RhdGljIHZvaWQgaXJzX3NldHVwX3ByaV9iaXRzKHUzMiBpZHIxKVxuIHtcbiBcdHN3aXRjaCAoRklFTERfR0VUKEdJQ1Y1X0lSU19JRFIxX1BSSU9SSVRZX0JJVFMsIGlkcjEpKSB7XG5AQCAtNzczLDYgKzc4Niw3IEBAIHN0YXRpYyBpbnQgX19pbml0IGdpY3Y1X2lyc19vZl9pbml0KHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSlcbiBcdHJldHVybiByZXQ7XG4gXG4gb3V0X2lvbWVtOlxuK1x0Z2ljdjVfaXJzX2NsZWFyX2FmZmluaXR5KGlyc19kYXRhKTtcbiBcdGlvdW5tYXAoaXJzX2Jhc2UpO1xuIG91dF9lcnI6XG4gXHRrZnJlZShpcnNfZGF0YSk7XG5AQCAtNzg3LDYgKzgwMSw3IEBAIHZvaWQgX19pbml0IGdpY3Y1X2lyc19yZW1vdmUodm9pZClcbiBcdGdpY3Y1X2RlaW5pdF9scGlzKCk7XG4gXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoaXJzX2RhdGEsIHRtcF9kYXRhLCBcdTAwMjZpcnNfbm9kZXMsIGVudHJ5KSB7XG4rXHRcdGdpY3Y1X2lyc19jbGVhcl9hZmZpbml0eShpcnNfZGF0YSk7XG4gXHRcdGlvdW5tYXAoaXJzX2RhdGEtXHUwMDNlaXJzX2Jhc2UpO1xuIFx0XHRsaXN0X2RlbChcdTAwMjZpcnNfZGF0YS1cdTAwM2VlbnRyeSk7XG4gXHRcdGtmcmVlKGlyc19kYXRhKTtcbkBAIC05NTEsNiArOTY2LDcgQEAgc3RhdGljIGludCBfX2luaXQgZ2ljX2FjcGlfcGFyc2VfbWFkdF9pcnModW5pb24gYWNwaV9zdWJ0YWJsZV9oZWFkZXJzICpoZWFkZXIsXG4gXHRyZXR1cm4gMDtcbiBcbiBvdXRfbWFwOlxuK1x0Z2ljdjVfaXJzX2NsZWFyX2FmZmluaXR5KGlyc19kYXRhKTtcbiBcdGlvdW5tYXAoaXJzX2Jhc2UpO1xuIG91dF9yZWxlYXNlOlxuIFx0cmVsZWFzZV9tZW1fcmVnaW9uKHItXHUwMDNlc3RhcnQsIHJlc291cmNlX3NpemUocikpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LmMgYi9kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS5jXG5pbmRleCBlOWQxNzk1MjM1YTY2Li42YTk5YzU0MWI1NTliIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUuY1xuKysrIGIvZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUuY1xuQEAgLTk4Myw2ICs5ODMsNyBAQCBzdGF0aWMgdm9pZCBnaWN2NV9jcHVfZGlzYWJsZV9pbnRlcnJ1cHRzKHZvaWQpXG4gXG4gXHRjcjAgPSBGSUVMRF9QUkVQKElDQ19DUjBfRUwxX0VOLCAwKTtcbiBcdHdyaXRlX3N5c3JlZ19zKGNyMCwgU1lTX0lDQ19DUjBfRUwxKTtcbitcdGlzYigpO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBnaWN2NV9jcHVfZW5hYmxlX2ludGVycnVwdHModm9pZClcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDExOjM0OjM5LjQwNDAwOTUwMloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwOTY5MjkxNDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFRoaXMgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgSSBzZWUgaXQncyB0b3VjaGluZyBzb21lIGNyaXRpY2FsIGFyZWFzOiBgYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuY2AsIGBhcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuY2AsIGBkcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuY2AsIGFuZCBgZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUuY2AuIE15IHNwaWRleSBzZW5zZXMgYXJlIGFscmVhZHkgdGluZ2xpbmc7IGFueSBtb2RpZmljYXRpb24gdG8gdGhlIEtWTSBWR0lDIGFuZCBHSUMgZHJpdmVycyBuZWVkcyBjYXJlZnVsIHJldmlldy4gVGhlIGRlc2NyaXB0aW9uIG1lbnRpb25zIGl0J3MgZml4aW5nIG1lbW9yeSBsZWFrcywgcG90ZW50aWFsIGFycmF5IGluZGV4IG91dC1vZi1ib3VuZHMgZXJyb3JzLCBhbmQgaW50cm9kdWNpbmcgYW4gYGlzYigpYCBpbnN0cnVjdGlvbi4gU29saWQgZnVuY3Rpb25hbCBjaGFuZ2VzLCBidXQgSSBuZWVkIHRvIGRpdmUgZGVlcGVyLlxuXG5NZW1vcnkgbGVha3MgYW5kIGJvdW5kcyBjaGVja3MgYXJlIGFsd2F5cyBnb29kIHRvIHNlZSBhZGRyZXNzZWQsIGVzcGVjaWFsbHkgaW4ga2VybmVsIGNvZGUuIEFuIGBpc2IoKWAgaW1wbGllcyBtZW1vcnkgYmFycmllciBpbXBsaWNhdGlvbnMsIHdoaWNoIGlzIGltcG9ydGFudCBmb3IgaW50ZXJydXB0IGhhbmRsaW5nLiBBbGwgb2YgdGhlc2UgZml4ZXMgcmVxdWlyZSB0aG9yb3VnaCB0ZXN0aW5nLlxuXG5UaGUgcmVmZXJlbmNlIHRvIEdJQ3Y1IHBpcXVlcyBteSBpbnRlcmVzdC4gR0lDdjUsIHJlYWxseT8gSSBzaG91bGQgcHJvYmFibHkgdmVyaWZ5IHRoYXQgYGRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LmNgICphY3R1YWxseSogZXhpc3RzIGluIHRoZSBrZXJuZWwgYW5kIGlzbid0IHNvbWUgc3RhbGUgZmlsZS4gQSBxdWljayBjaGVjayBvZiB0aGUga2VybmVsIHRyZWUgaXMgaW4gb3JkZXIgYmVmb3JlIHByb2NlZWRpbmcgYW55IGZ1cnRoZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1NTgsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzYsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxMTozNDo0NC41MDA5NDE0OTJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODAwMjAyNjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZ2ljdjVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9pcnFjaGlwL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDE2NDUgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTI1LVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjI2OnN0YXRpYyBERUZJTkVfUEVSX0NQVV9SRUFEX01PU1RMWShzdHJ1Y3QgZ2ljdjVfaXJzX2NoaXBfZGF0YSAqLCBwZXJfY3B1X2lyc19kYXRhKTtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy0yNy1zdGF0aWMgTElTVF9IRUFEKGlyc19ub2Rlcyk7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtMjgtXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6Mjk6c3RhdGljIHUzMiBpcnNfcmVhZGxfcmVsYXhlZChzdHJ1Y3QgZ2ljdjVfaXJzX2NoaXBfZGF0YSAqaXJzX2RhdGEsXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtMzAtXFx0XFx0XFx0ICAgICBjb25zdCB1MzIgcmVnX29mZnNldClcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTM0LVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjM1OnN0YXRpYyB2b2lkIGlyc193cml0ZWxfcmVsYXhlZChzdHJ1Y3QgZ2ljdjVfaXJzX2NoaXBfZGF0YSAqaXJzX2RhdGEsXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtMzYtXFx0XFx0XFx0ICAgICAgIGNvbnN0IHUzMiB2YWwsIGNvbnN0IHUzMiByZWdfb2Zmc2V0KVxcbi0tXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNDAtXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6NDE6c3RhdGljIHU2NCBpcnNfcmVhZHFfcmVsYXhlZChzdHJ1Y3QgZ2ljdjVfaXJzX2NoaXBfZGF0YSAqaXJzX2RhdGEsXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNDItXFx0XFx0XFx0ICAgICBjb25zdCB1MzIgcmVnX29mZnNldClcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTQ2LVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjQ3OnN0YXRpYyB2b2lkIGlyc193cml0ZXFfcmVsYXhlZChzdHJ1Y3QgZ2ljdjVfaXJzX2NoaXBfZGF0YSAqaXJzX2RhdGEsXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNDgtXFx0XFx0XFx0ICAgICAgIGNvbnN0IHU2NCB2YWwsIGNvbnN0IHUzMiByZWdfb2Zmc2V0KVxcbi0tXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNTMtLypcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo1NDogKiBUaGUgcG9sbGluZyB3YWl0IChpbiBnaWN2NV93YWl0X2Zvcl9vcF9zX2F0b21pYygpKSBvbiBhIEdJQyByZWdpc3RlclxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTU1LSAqIHByb3ZpZGVzIHRoZSBtZW1vcnkgYmFycmllcnMgKHRocm91Z2ggTU1JTyBhY2Nlc3NvcnMpXFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy01Ny0gKi9cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo1ODpzdGF0aWMgaW50IGdpY3Y1X2lyc19pc3Rfc3luY2hyb25pc2Uoc3RydWN0IGdpY3Y1X2lyc19jaGlwX2RhdGEgKmlyc19kYXRhKVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTU5LXtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo2MDpcXHRyZXR1cm4gZ2ljdjVfd2FpdF9mb3Jfb3BfYXRvbWljKGlyc19kYXRhLVxcdTAwM2VpcnNfYmFzZSwgR0lDVjVfSVJTX0lTVF9TVEFUVVNSLFxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTYxLVxcdFxcdFxcdFxcdFxcdEdJQ1Y1X0lSU19JU1RfU1RBVFVTUl9JRExFLCBOVUxMKTtcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTYzLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjY0OnN0YXRpYyBpbnQgX19pbml0IGdpY3Y1X2lyc19pbml0X2lzdF9saW5lYXIoc3RydWN0IGdpY3Y1X2lyc19jaGlwX2RhdGEgKmlyc19kYXRhLFxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTY1LVxcdFxcdFxcdFxcdFxcdCAgICB1bnNpZ25lZCBpbnQgbHBpX2lkX2JpdHMsXFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy0xMTAtXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6MTExOlxcdGdpY3Y1X2dsb2JhbF9kYXRhLmlzdC5sMiA9IGZhbHNlO1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTExMi1cXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTExNi1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzoxMTc6XFx0cmV0ID0gZ2ljdjVfaXJzX2lzdF9zeW5jaHJvbmlzZShpcnNfZGF0YSk7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtMTE4LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTEyNi1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzoxMjc6c3RhdGljIGludCBfX2luaXQgZ2ljdjVfaXJzX2luaXRfaXN0X3R3b19sZXZlbChzdHJ1Y3QgZ2ljdjVfaXJzX2NoaXBfZGF0YSAqaXJzX2RhdGEsXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtMTI4LVxcdFxcdFxcdFxcdFxcdCAgICAgICB1bnNpZ25lZCBpbnQgbHBpX2lkX2JpdHMsXFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy0xNjQtXFx0ICovXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6MTY1OlxcdGdpY3Y1X2dsb2JhbF9kYXRhLmlzdC5sMl9zaXplID0gQklUKDExICsgKDIgKiBsMnN6KSArIDEpO1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjE2NjpcXHRnaWN2NV9nbG9iYWxfZGF0YS5pc3QubDJfYml0cyA9ICgxMCAtIGlzdHN6KSArICgyICogbDJzeik7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6MTY3OlxcdGdpY3Y1X2dsb2JhbF9kYXRhLmlzdC5sMWlzdF9hZGRyID0gbDFpc3Q7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6MTY4OlxcdGdpY3Y1X2dsb2JhbF9kYXRhLmlzdC5sMiA9IHRydWU7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtMTY5LVxcbi0tXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtMTczLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjE3NDpcXHRyZXQgPSBnaWN2NV9pcnNfaXN0X3N5bmNocm9uaXNlKGlyc19kYXRhKTtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy0xNzUtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtMTg4LSAqL1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjE4OTppbnQgZ2ljdjVfaXJzX2lzdGVfYWxsb2MoY29uc3QgdTMyIGxwaSlcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy0xOTAte1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjE5MTpcXHRzdHJ1Y3QgZ2ljdjVfaXJzX2NoaXBfZGF0YSAqaXJzX2RhdGE7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtMTkyLVxcdHVuc2lnbmVkIGludCBpbmRleDtcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTE5OC1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzoxOTk6XFx0aWYgKCFnaWN2NV9nbG9iYWxfZGF0YS5pc3QubDIpXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtMjAwLVxcdFxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtMjA1LVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjIwNjpcXHRsMnNpemUgPSBnaWN2NV9nbG9iYWxfZGF0YS5pc3QubDJfc2l6ZTtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzoyMDc6XFx0bDJiaXRzID0gZ2ljdjVfZ2xvYmFsX2RhdGEuaXN0LmwyX2JpdHM7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6MjA4OlxcdGwxaXN0ID0gZ2ljdjVfZ2xvYmFsX2RhdGEuaXN0LmwxaXN0X2FkZHI7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtMjA5LVxcdGluZGV4ID0gbHBpIFxcdTAwM2VcXHUwMDNlIGwyYml0cztcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTIzMS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzoyMzI6XFx0cmV0ID0gZ2ljdjVfaXJzX2lzdF9zeW5jaHJvbmlzZShpcnNfZGF0YSk7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtMjMzLVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTI0NS1cXHRcXHQvKlxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjI0NjpcXHRcXHQgKiBnaWN2NV9pcnNfaXN0X3N5bmNocm9uaXNlKCkgaW5jbHVkZXMgbWVtb3J5XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtMjQ3LVxcdFxcdCAqIGJhcnJpZXJzIChNTUlPIGFjY2Vzc29ycykgcmVxdWlyZWQgdG8gZ3VhcmFudGVlIHRoYXQgdGhlXFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy0yNjgtICovXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6MjY5OnN0YXRpYyB1bnNpZ25lZCBpbnQgZ2ljdjVfaXJzX2wyX3N6KHUzMiBpZHIyKVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTI3MC17XFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy0yOTEtXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6MjkyOnN0YXRpYyBpbnQgX19pbml0IGdpY3Y1X2lyc19pbml0X2lzdChzdHJ1Y3QgZ2ljdjVfaXJzX2NoaXBfZGF0YSAqaXJzX2RhdGEpXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtMjkzLXtcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTMzMC1cXHQgKi9cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzozMzE6XFx0bHBpX2lkX2JpdHMgPSBtaW4obHBpX2lkX2JpdHMsIGdpY3Y1X2dsb2JhbF9kYXRhLmNwdWlmX2lkX2JpdHMpO1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTMzMi1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy0zMzMtXFx0aWYgKHR3b19sZXZlbHMpXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6MzM0OlxcdFxcdGwyc3ogPSBnaWN2NV9pcnNfbDJfc3ooaWRyMik7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtMzM1LVxcbi0tXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtMzUzLVxcdGlmICh0d29fbGV2ZWxzIFxcdTAwMjZcXHUwMDI2IChscGlfaWRfYml0cyBcXHUwMDNlICgoMTAgLSBsMl9pc3RlX3N6KSArICgyICogbDJzeikpKSkge1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjM1NDpcXHRcXHRyZXQgPSBnaWN2NV9pcnNfaW5pdF9pc3RfdHdvX2xldmVsKGlyc19kYXRhLCBscGlfaWRfYml0cyxcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy0zNTUtXFx0XFx0XFx0XFx0XFx0XFx0ICAgbDJfaXN0ZV9zeiwgbDJzeik7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtMzU2LVxcdH0gZWxzZSB7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6MzU3OlxcdFxcdHJldCA9IGdpY3Y1X2lyc19pbml0X2lzdF9saW5lYXIoaXJzX2RhdGEsIGxwaV9pZF9iaXRzLFxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTM1OC1cXHRcXHRcXHRcXHRcXHRcXHRsMl9pc3RlX3N6KTtcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTM2Mi1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzozNjM6XFx0Z2ljdjVfaW5pdF9scGlzKEJJVChscGlfaWRfYml0cykpO1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTM2NC1cXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jPTM3Mz1zdGF0aWMgREVGSU5FX1BFUl9DUFUoc3RydWN0IGlhZmZpZF9lbnRyeSwgY3B1X2lhZmZpZCk7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtMzc0LVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjM3NTppbnQgZ2ljdjVfaXJzX2NwdV90b19pYWZmaWQoaW50IGNwdWlkLCB1MTYgKmlhZmZpZClcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy0zNzYte1xcbi0tXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtMzg2LVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjM4NzpzdHJ1Y3QgZ2ljdjVfaXJzX2NoaXBfZGF0YSAqZ2ljdjVfaXJzX2xvb2t1cF9ieV9zcGlfaWQodTMyIHNwaV9pZClcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy0zODgte1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjM4OTpcXHRzdHJ1Y3QgZ2ljdjVfaXJzX2NoaXBfZGF0YSAqaXJzX2RhdGE7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtMzkwLVxcdHUzMiBtaW4sIG1heDtcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTQwNC1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo0MDU6c3RhdGljIGludCBnaWN2NV9pcnNfd2FpdF9mb3Jfc3BpX29wKHN0cnVjdCBnaWN2NV9pcnNfY2hpcF9kYXRhICppcnNfZGF0YSlcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy00MDYte1xcbi0tXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNDA5LVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjQxMDpcXHRyZXQgPSBnaWN2NV93YWl0X2Zvcl9vcF9hdG9taWMoaXJzX2RhdGEtXFx1MDAzZWlyc19iYXNlLCBHSUNWNV9JUlNfU1BJX1NUQVRVU1IsXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNDExLVxcdFxcdFxcdFxcdCAgICAgICBHSUNWNV9JUlNfU1BJX1NUQVRVU1JfSURMRSwgXFx1MDAyNnN0YXR1c3IpO1xcbi0tXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNDE3LVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjQxODpzdGF0aWMgaW50IGdpY3Y1X2lyc193YWl0X2Zvcl9pcnNfcGUoc3RydWN0IGdpY3Y1X2lyc19jaGlwX2RhdGEgKmlyc19kYXRhLFxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTQxOS1cXHRcXHRcXHRcXHQgICAgIGJvb2wgc2VscilcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTQyNC1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo0MjU6XFx0cmV0ID0gZ2ljdjVfd2FpdF9mb3Jfb3BfYXRvbWljKGlyc19kYXRhLVxcdTAwM2VpcnNfYmFzZSwgR0lDVjVfSVJTX1BFX1NUQVRVU1IsXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNDI2LVxcdFxcdFxcdFxcdCAgICAgICBHSUNWNV9JUlNfUEVfU1RBVFVTUl9JRExFLCBcXHUwMDI2c3RhdHVzcik7XFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy00MzUtXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6NDM2OnN0YXRpYyBpbnQgZ2ljdjVfaXJzX3dhaXRfZm9yX3BlX3NlbHIoc3RydWN0IGdpY3Y1X2lyc19jaGlwX2RhdGEgKmlyc19kYXRhKVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTQzNy17XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6NDM4OlxcdHJldHVybiBnaWN2NV9pcnNfd2FpdF9mb3JfaXJzX3BlKGlyc19kYXRhLCB0cnVlKTtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy00MzktfVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTQ0MC1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo0NDE6c3RhdGljIGludCBnaWN2NV9pcnNfd2FpdF9mb3JfcGVfY3IwKHN0cnVjdCBnaWN2NV9pcnNfY2hpcF9kYXRhICppcnNfZGF0YSlcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy00NDIte1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjQ0MzpcXHRyZXR1cm4gZ2ljdjVfaXJzX3dhaXRfZm9yX2lyc19wZShpcnNfZGF0YSwgZmFsc2UpO1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTQ0NC19XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNDQ1LVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjQ0NjppbnQgZ2ljdjVfc3BpX2lycV9zZXRfdHlwZShzdHJ1Y3QgaXJxX2RhdGEgKmQsIHVuc2lnbmVkIGludCB0eXBlKVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTQ0Ny17XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6NDQ4OlxcdHN0cnVjdCBnaWN2NV9pcnNfY2hpcF9kYXRhICppcnNfZGF0YSA9IGQtXFx1MDAzZWNoaXBfZGF0YTtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy00NDktXFx0dTMyIHNlbHIsIGNmZ3I7XFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy00NzQtXFx0aXJzX3dyaXRlbF9yZWxheGVkKGlyc19kYXRhLCBzZWxyLCBHSUNWNV9JUlNfU1BJX1NFTFIpO1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjQ3NTpcXHRyZXQgPSBnaWN2NV9pcnNfd2FpdF9mb3Jfc3BpX29wKGlyc19kYXRhKTtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy00NzYtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTQ4MS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo0ODI6XFx0cmV0dXJuIGdpY3Y1X2lyc193YWl0X2Zvcl9zcGlfb3AoaXJzX2RhdGEpO1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTQ4My19XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNDg0LVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjQ4NTpzdGF0aWMgaW50IGdpY3Y1X2lyc193YWl0X2Zvcl9pZGxlKHN0cnVjdCBnaWN2NV9pcnNfY2hpcF9kYXRhICppcnNfZGF0YSlcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy00ODYte1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjQ4NzpcXHRyZXR1cm4gZ2ljdjVfd2FpdF9mb3Jfb3BfYXRvbWljKGlyc19kYXRhLVxcdTAwM2VpcnNfYmFzZSwgR0lDVjVfSVJTX0NSMCxcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy00ODgtXFx0XFx0XFx0XFx0XFx0R0lDVjVfSVJTX0NSMF9JRExFLCBOVUxMKTtcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTQ5MC1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo0OTE6dm9pZCBnaWN2NV9pcnNfc3luY3Iodm9pZClcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy00OTIte1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjQ5MzpcXHRzdHJ1Y3QgZ2ljdjVfaXJzX2NoaXBfZGF0YSAqaXJzX2RhdGE7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNDk0LVxcdHUzMiBzeW5jcjtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy00OTUtXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6NDk2OlxcdGlyc19kYXRhID0gbGlzdF9maXJzdF9lbnRyeV9vcl9udWxsKFxcdTAwMjZpcnNfbm9kZXMsIHN0cnVjdCBnaWN2NV9pcnNfY2hpcF9kYXRhLCBlbnRyeSk7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNDk3LVxcdGlmIChXQVJOX09OX09OQ0UoIWlyc19kYXRhKSlcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTUwMi1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo1MDM6XFx0Z2ljdjVfd2FpdF9mb3Jfb3AoaXJzX2RhdGEtXFx1MDAzZWlyc19iYXNlLCBHSUNWNV9JUlNfU1lOQ19TVEFUVVNSLFxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTUwNC1cXHRcXHRcXHQgIEdJQ1Y1X0lSU19TWU5DX1NUQVRVU1JfSURMRSk7XFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy01MDYtXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6NTA3OmludCBnaWN2NV9pcnNfcmVnaXN0ZXJfY3B1KGludCBjcHVpZClcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy01MDgte1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjUwOTpcXHRzdHJ1Y3QgZ2ljdjVfaXJzX2NoaXBfZGF0YSAqaXJzX2RhdGE7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNTEwLVxcdHUzMiBzZWxyLCBjcjA7XFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy01MTMtXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6NTE0OlxcdHJldCA9IGdpY3Y1X2lyc19jcHVfdG9faWFmZmlkKGNwdWlkLCBcXHUwMDI2aWFmZmlkKTtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy01MTUtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNTI4LVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjUyOTpcXHRyZXQgPSBnaWN2NV9pcnNfd2FpdF9mb3JfcGVfc2VscihpcnNfZGF0YSk7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNTMwLVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTUzNy1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo1Mzg6XFx0cmV0ID0gZ2ljdjVfaXJzX3dhaXRfZm9yX3BlX2NyMChpcnNfZGF0YSk7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNTM5LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy01NDYtXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6NTQ3OnN0YXRpYyB2b2lkIF9faW5pdCBnaWN2NV9pcnNfaW5pdF9iYXNlcyhzdHJ1Y3QgZ2ljdjVfaXJzX2NoaXBfZGF0YSAqaXJzX2RhdGEsXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNTQ4LVxcdFxcdFxcdFxcdFxcdHZvaWQgX19pb21lbSAqaXJzX2Jhc2UsXFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy01OTEtXFx0aXJzX3dyaXRlbF9yZWxheGVkKGlyc19kYXRhLCBjcjAsIEdJQ1Y1X0lSU19DUjApO1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjU5MjpcXHRnaWN2NV9pcnNfd2FpdF9mb3JfaWRsZShpcnNfZGF0YSk7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNTkzLX1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy01OTQtXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6NTk1OnN0YXRpYyBpbnQgX19pbml0IGdpY3Y1X2lyc19vZl9pbml0X2FmZmluaXR5KHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSxcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo1OTY6XFx0XFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgZ2ljdjVfaXJzX2NoaXBfZGF0YSAqaXJzX2RhdGEsXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNTk3LVxcdFxcdFxcdFxcdFxcdCAgICAgdTggaWFmZmlkX2JpdHMpXFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy02NTMtXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6NjU0OnN0YXRpYyB2b2lkIF9faW5pdCBnaWN2NV9pcnNfY2xlYXJfYWZmaW5pdHkoc3RydWN0IGdpY3Y1X2lyc19jaGlwX2RhdGEgKmlyc19kYXRhKVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTY1NS17XFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYz02Njc9c3RhdGljIHZvaWQgaXJzX3NldHVwX3ByaV9iaXRzKHUzMiBpZHIxKVxcbi0tXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNjcwLVxcdGNhc2UgR0lDVjVfSVJTX0lEUjFfUFJJT1JJVFlfQklUU18xQklUUzpcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo2NzE6XFx0XFx0Z2ljdjVfZ2xvYmFsX2RhdGEuaXJzX3ByaV9iaXRzID0gMTtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy02NzItXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNjczLVxcdGNhc2UgR0lDVjVfSVJTX0lEUjFfUFJJT1JJVFlfQklUU18yQklUUzpcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo2NzQ6XFx0XFx0Z2ljdjVfZ2xvYmFsX2RhdGEuaXJzX3ByaV9iaXRzID0gMjtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy02NzUtXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNjc2LVxcdGNhc2UgR0lDVjVfSVJTX0lEUjFfUFJJT1JJVFlfQklUU18zQklUUzpcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo2Nzc6XFx0XFx0Z2ljdjVfZ2xvYmFsX2RhdGEuaXJzX3ByaV9iaXRzID0gMztcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy02NzgtXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNjc5LVxcdGNhc2UgR0lDVjVfSVJTX0lEUjFfUFJJT1JJVFlfQklUU180QklUUzpcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo2ODA6XFx0XFx0Z2ljdjVfZ2xvYmFsX2RhdGEuaXJzX3ByaV9iaXRzID0gNDtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy02ODEtXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNjgyLVxcdGNhc2UgR0lDVjVfSVJTX0lEUjFfUFJJT1JJVFlfQklUU181QklUUzpcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo2ODM6XFx0XFx0Z2ljdjVfZ2xvYmFsX2RhdGEuaXJzX3ByaV9iaXRzID0gNTtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy02ODQtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy02ODctXFx0XFx0XFx0RklFTERfR0VUKEdJQ1Y1X0lSU19JRFIxX1BSSU9SSVRZX0JJVFMsIGlkcjEpKTtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo2ODg6XFx0XFx0Z2ljdjVfZ2xvYmFsX2RhdGEuaXJzX3ByaV9iaXRzID0gMTtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy02ODktXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy02OTItXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6NjkzOnN0YXRpYyBpbnQgX19pbml0IGdpY3Y1X2lyc19pbml0KHN0cnVjdCBnaWN2NV9pcnNfY2hpcF9kYXRhICppcnNfZGF0YSlcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy02OTQte1xcbi0tXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNzE0LVxcdFxcdGlkciA9IGlyc19yZWFkbF9yZWxheGVkKGlyc19kYXRhLCBHSUNWNV9JUlNfSURSMCk7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6NzE1OlxcdFxcdGdpY3Y1X2dsb2JhbF9kYXRhLnZpcnRfY2FwYWJsZSA9ICEhRklFTERfR0VUKEdJQ1Y1X0lSU19JRFIwX1ZJUlQsIGlkcik7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNzE2LVxcbi0tXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNzIyLVxcdFxcdHNwaV9jb3VudCA9IEZJRUxEX0dFVChHSUNWNV9JUlNfSURSNV9TUElfUkFOR0UsIGlkcik7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6NzIzOlxcdFxcdGdpY3Y1X2dsb2JhbF9kYXRhLmdsb2JhbF9zcGlfY291bnQgPSBzcGlfY291bnQ7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNzI0LVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjcyNTpcXHRcXHRnaWN2NV9pbml0X2xwaV9kb21haW4oKTtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy03MjYtXFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy03MzQtXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6NzM1OnN0YXRpYyBpbnQgX19pbml0IGdpY3Y1X2lyc19vZl9pbml0KHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSlcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy03MzYte1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjczNzpcXHRzdHJ1Y3QgZ2ljdjVfaXJzX2NoaXBfZGF0YSAqaXJzX2RhdGE7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNzM4LVxcdHZvaWQgX19pb21lbSAqaXJzX2Jhc2U7XFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy03NjItXFx0aXJzX2RhdGEtXFx1MDAzZWZ3bm9kZSA9IG9mX2Z3bm9kZV9oYW5kbGUobm9kZSk7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6NzYzOlxcdGdpY3Y1X2lyc19pbml0X2Jhc2VzKGlyc19kYXRhLCBpcnNfYmFzZSwgb2ZfcHJvcGVydHlfcmVhZF9ib29sKG5vZGUsIFxcXCJkbWEtbm9uY29oZXJlbnRcXFwiKSk7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNzY0LVxcbi0tXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNzY3LVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjc2ODpcXHRyZXQgPSBnaWN2NV9pcnNfb2ZfaW5pdF9hZmZpbml0eShub2RlLCBpcnNfZGF0YSwgaWFmZmlkX2JpdHMpO1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTc2OS1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy03NzMtXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6Nzc0OlxcdHJldCA9IGdpY3Y1X2lyc19pbml0KGlyc19kYXRhKTtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy03NzUtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTc4OC1vdXRfaW9tZW06XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6Nzg5OlxcdGdpY3Y1X2lyc19jbGVhcl9hZmZpbml0eShpcnNfZGF0YSk7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNzkwLVxcdGlvdW5tYXAoaXJzX2Jhc2UpO1xcbi0tXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNzk1LVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjc5Njp2b2lkIF9faW5pdCBnaWN2NV9pcnNfcmVtb3ZlKHZvaWQpXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNzk3LXtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo3OTg6XFx0c3RydWN0IGdpY3Y1X2lyc19jaGlwX2RhdGEgKmlyc19kYXRhLCAqdG1wX2RhdGE7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtNzk5LVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjgwMDpcXHRnaWN2NV9mcmVlX2xwaV9kb21haW4oKTtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo4MDE6XFx0Z2ljdjVfZGVpbml0X2xwaXMoKTtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy04MDItXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtODAzLVxcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShpcnNfZGF0YSwgdG1wX2RhdGEsIFxcdTAwMjZpcnNfbm9kZXMsIGVudHJ5KSB7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6ODA0OlxcdFxcdGdpY3Y1X2lyc19jbGVhcl9hZmZpbml0eShpcnNfZGF0YSk7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtODA1LVxcdFxcdGlvdW5tYXAoaXJzX2RhdGEtXFx1MDAzZWlyc19iYXNlKTtcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTgxMC1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo4MTE6aW50IF9faW5pdCBnaWN2NV9pcnNfZW5hYmxlKHZvaWQpXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtODEyLXtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo4MTM6XFx0c3RydWN0IGdpY3Y1X2lyc19jaGlwX2RhdGEgKmlyc19kYXRhO1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTgxNC1cXHRpbnQgcmV0O1xcbi0tXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtODE2LVxcdGlyc19kYXRhID0gbGlzdF9maXJzdF9lbnRyeV9vcl9udWxsKFxcdTAwMjZpcnNfbm9kZXMsXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6ODE3OlxcdFxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgZ2ljdjVfaXJzX2NoaXBfZGF0YSwgZW50cnkpO1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTgxOC1cXHRpZiAoIWlyc19kYXRhKVxcbi0tXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtODIwLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjgyMTpcXHRyZXQgPSBnaWN2NV9pcnNfaW5pdF9pc3QoaXJzX2RhdGEpO1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTgyMi1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy04MjktXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6ODMwOnZvaWQgX19pbml0IGdpY3Y1X2lyc19pdHNfcHJvYmUodm9pZClcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy04MzEte1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjgzMjpcXHRzdHJ1Y3QgZ2ljdjVfaXJzX2NoaXBfZGF0YSAqaXJzX2RhdGE7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtODMzLVxcbi0tXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtODM1LVxcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnkoaXJzX2RhdGEsIFxcdTAwMjZpcnNfbm9kZXMsIGVudHJ5KVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjgzNjpcXHRcXHRcXHRnaWN2NV9pdHNfb2ZfcHJvYmUodG9fb2Zfbm9kZShpcnNfZGF0YS1cXHUwMDNlZndub2RlKSk7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtODM3LVxcdGVsc2VcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo4Mzg6XFx0XFx0Z2ljdjVfaXRzX2FjcGlfcHJvYmUoKTtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy04MzktfVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTg0MC1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo4NDE6aW50IF9faW5pdCBnaWN2NV9pcnNfb2ZfcHJvYmUoc3RydWN0IGRldmljZV9ub2RlICpwYXJlbnQpXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtODQyLXtcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTg0OS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo4NTA6XFx0XFx0cmV0ID0gZ2ljdjVfaXJzX29mX2luaXQobnApO1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTg1MS1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtODYwLSNkZWZpbmUgQUNQSV9HSUNWNV9JUlNfTUVNX1NJWkUgKFNaXzY0SylcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo4NjE6c3RhdGljIHN0cnVjdCBnaWN2NV9pcnNfY2hpcF9kYXRhICpjdXJyZW50X2lyc19kYXRhIF9faW5pdGRhdGE7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtODYyLXN0YXRpYyBpbnQgY3VycmVudF9pcnNpZCBfX2luaXRkYXRhID0gLTE7XFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYz04NjU9c3RhdGljIGludCBfX2luaXQgZ2ljX2FjcGlfcGFyc2VfaWFmZmlkKHVuaW9uIGFjcGlfc3VidGFibGVfaGVhZGVycyAqaGVhZGVyLFxcbi0tXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtODk0LVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjg5NTpzdGF0aWMgaW50IF9faW5pdCBnaWN2NV9pcnNfYWNwaV9pbml0X2FmZmluaXR5KHUzMiBpcnNpZCwgc3RydWN0IGdpY3Y1X2lyc19jaGlwX2RhdGEgKmlyc19kYXRhKVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTg5Ni17XFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYz05MjE9c3RhdGljIGludCBfX2luaXQgZ2ljX2FjcGlfcGFyc2VfbWFkdF9pcnModW5pb24gYWNwaV9zdWJ0YWJsZV9oZWFkZXJzICpoZWFkZXIsXFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy05MjMte1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjkyNDpcXHRzdHJ1Y3QgYWNwaV9tYWR0X2dpY3Y1X2lycyAqaXJzID0gKHN0cnVjdCBhY3BpX21hZHRfZ2ljdjVfaXJzICopaGVhZGVyO1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjkyNTpcXHRzdHJ1Y3QgZ2ljdjVfaXJzX2NoaXBfZGF0YSAqaXJzX2RhdGE7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMtOTI2LVxcdHZvaWQgX19pb21lbSAqaXJzX2Jhc2U7XFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy05NTAtXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6OTUxOlxcdGdpY3Y1X2lyc19pbml0X2Jhc2VzKGlyc19kYXRhLCBpcnNfYmFzZSwgaXJzLVxcdTAwM2VmbGFncyBcXHUwMDI2IEFDUElfTUFEVF9JUlNfTk9OX0NPSEVSRU5UKTtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy05NTItXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6OTUzOlxcdGdpY3Y1X2lyc19hY3BpX2luaXRfYWZmaW5pdHkoaXJzLVxcdTAwM2VpcnNfaWQsIGlyc19kYXRhKTtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy05NTQtXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmM6OTU1OlxcdHJldCA9IGdpY3Y1X2lyc19pbml0KGlyc19kYXRhKTtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYy05NTYtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTk2OC1vdXRfbWFwOlxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jOjk2OTpcXHRnaWN2NV9pcnNfY2xlYXJfYWZmaW5pdHkoaXJzX2RhdGEpO1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTk3MC1cXHRpb3VubWFwKGlyc19iYXNlKTtcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTk3Ny1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuYzo5Nzg6aW50IF9faW5pdCBnaWN2NV9pcnNfYWNwaV9wcm9iZSh2b2lkKVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jLTk3OS17XFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy0yNy1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzoyODpzdHJ1Y3QgZ2ljdjVfaXRzX2NoaXBfZGF0YSB7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtMjktXFx0c3RydWN0XFx0eGFycmF5XFx0XFx0XFx0aXRzX2RldmljZXM7XFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy0zMS1cXHRzdHJ1Y3RcXHRmd25vZGVfaGFuZGxlXFx0XFx0KmZ3bm9kZTtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzozMjpcXHRzdHJ1Y3QgZ2ljdjVfaXRzX2RldnRhYl9jZmdcXHRkZXZ0YWJfY2ZncjtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy0zMy1cXHR2b2lkXFx0X19pb21lbVxcdFxcdFxcdCppdHNfYmFzZTtcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTM3LVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jOjM4OnN0cnVjdCBnaWN2NV9pdHNfZGV2IHtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzozOTpcXHRzdHJ1Y3QgZ2ljdjVfaXRzX2NoaXBfZGF0YVxcdCppdHNfbm9kZTtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzo0MDpcXHRzdHJ1Y3QgZ2ljdjVfaXRzX2l0dF9jZmdcXHRpdHRfY2ZnO1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTQxLVxcdHVuc2lnbmVkIGxvbmdcXHRcXHRcXHQqZXZlbnRfbWFwO1xcbi0tXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtNDYtXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmM6NDc6c3RhdGljIHUzMiBpdHNfcmVhZGxfcmVsYXhlZChzdHJ1Y3QgZ2ljdjVfaXRzX2NoaXBfZGF0YSAqaXRzX25vZGUsIGNvbnN0IHUzMiByZWdfb2Zmc2V0KVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTQ4LXtcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTUxLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jOjUyOnN0YXRpYyB2b2lkIGl0c193cml0ZWxfcmVsYXhlZChzdHJ1Y3QgZ2ljdjVfaXRzX2NoaXBfZGF0YSAqaXRzX25vZGUsIGNvbnN0IHUzMiB2YWwsXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtNTMtXFx0XFx0XFx0ICAgICAgIGNvbnN0IHUzMiByZWdfb2Zmc2V0KVxcbi0tXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtNTctXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmM6NTg6c3RhdGljIHZvaWQgaXRzX3dyaXRlcV9yZWxheGVkKHN0cnVjdCBnaWN2NV9pdHNfY2hpcF9kYXRhICppdHNfbm9kZSwgY29uc3QgdTY0IHZhbCxcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy01OS1cXHRcXHRcXHQgICAgICAgY29uc3QgdTMyIHJlZ19vZmZzZXQpXFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy02My1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzo2NDpzdGF0aWMgdm9pZCBnaWN2NV9pdHNfZGNhY2hlX2NsZWFuKHN0cnVjdCBnaWN2NV9pdHNfY2hpcF9kYXRhICppdHMsIHZvaWQgKnN0YXJ0LFxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTY1LVxcdFxcdFxcdFxcdCAgIHNpemVfdCBzeilcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTc0LVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jOjc1OnN0YXRpYyB2b2lkIGl0c193cml0ZV90YWJsZV9lbnRyeShzdHJ1Y3QgZ2ljdjVfaXRzX2NoaXBfZGF0YSAqaXRzLCBfX2xlNjQgKmVudHJ5LFxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTc2LVxcdFxcdFxcdFxcdCAgdTY0IHZhbClcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTc4LVxcdFdSSVRFX09OQ0UoKmVudHJ5LCBjcHVfdG9fbGU2NCh2YWwpKTtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzo3OTpcXHRnaWN2NV9pdHNfZGNhY2hlX2NsZWFuKGl0cywgZW50cnksIHNpemVvZigqZW50cnkpKTtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy04MC19XFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy04NC1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzo4NTpzdGF0aWMgaW50IGdpY3Y1X2l0c19jYWNoZV9zeW5jKHN0cnVjdCBnaWN2NV9pdHNfY2hpcF9kYXRhICppdHMpXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtODYte1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jOjg3OlxcdHJldHVybiBnaWN2NV93YWl0X2Zvcl9vcF9hdG9taWMoaXRzLVxcdTAwM2VpdHNfYmFzZSwgR0lDVjVfSVRTX1NUQVRVU1IsXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtODgtXFx0XFx0XFx0XFx0XFx0R0lDVjVfSVRTX1NUQVRVU1JfSURMRSwgTlVMTCk7XFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy05MC1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzo5MTpzdGF0aWMgdm9pZCBnaWN2NV9pdHNfc3luY3Ioc3RydWN0IGdpY3Y1X2l0c19jaGlwX2RhdGEgKml0cyxcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzo5MjpcXHRcXHRcXHQgICAgc3RydWN0IGdpY3Y1X2l0c19kZXYgKml0c19kZXYpXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtOTMte1xcbi0tXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtMTAwLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jOjEwMTpcXHRnaWN2NV93YWl0X2Zvcl9vcChpdHMtXFx1MDAzZWl0c19iYXNlLCBHSUNWNV9JVFNfU1lOQ19TVEFUVVNSLCBHSUNWNV9JVFNfU1lOQ19TVEFUVVNSX0lETEUpO1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTEwMi19XFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy0xMDgtXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmM6MTA5OnN0YXRpYyB1bnNpZ25lZCBpbnQgZ2ljdjVfaXRzX2wyc3pfdG9fbDJfYml0cyh1bnNpZ25lZCBpbnQgc3opXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtMTEwLXtcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTEyMS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzoxMjI6c3RhdGljIGludCBnaWN2NV9pdHNfaXR0X2NhY2hlX2ludihzdHJ1Y3QgZ2ljdjVfaXRzX2NoaXBfZGF0YSAqaXRzLCB1MzIgZGV2aWNlX2lkLFxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTEyMy1cXHRcXHRcXHRcXHQgICB1MTYgZXZlbnRfaWQpXFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy0xMzUtXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmM6MTM2OlxcdHJldHVybiBnaWN2NV9pdHNfY2FjaGVfc3luYyhpdHMpO1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTEzNy19XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtMTM4LVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jOjEzOTpzdGF0aWMgdm9pZCBnaWN2NV9pdHNfZnJlZV9pdHRfbGluZWFyKHN0cnVjdCBnaWN2NV9pdHNfZGV2ICppdHNfZGV2KVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTE0MC17XFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy0xNDMtXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmM6MTQ0OnN0YXRpYyB2b2lkIGdpY3Y1X2l0c19mcmVlX2l0dF90d29fbGV2ZWwoc3RydWN0IGdpY3Y1X2l0c19kZXYgKml0c19kZXYpXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtMTQ1LXtcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTE1NC1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzoxNTU6c3RhdGljIHZvaWQgZ2ljdjVfaXRzX2ZyZWVfaXR0KHN0cnVjdCBnaWN2NV9pdHNfZGV2ICppdHNfZGV2KVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTE1Ni17XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtMTU3LVxcdGlmICghaXRzX2Rldi1cXHUwMDNlaXR0X2NmZy5sMml0dClcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzoxNTg6XFx0XFx0Z2ljdjVfaXRzX2ZyZWVfaXR0X2xpbmVhcihpdHNfZGV2KTtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy0xNTktXFx0ZWxzZVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jOjE2MDpcXHRcXHRnaWN2NV9pdHNfZnJlZV9pdHRfdHdvX2xldmVsKGl0c19kZXYpO1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTE2MS19XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtMTYyLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jOjE2MzpzdGF0aWMgaW50IGdpY3Y1X2l0c19jcmVhdGVfaXR0X2xpbmVhcihzdHJ1Y3QgZ2ljdjVfaXRzX2NoaXBfZGF0YSAqaXRzLFxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jOjE2NDpcXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IGdpY3Y1X2l0c19kZXYgKml0c19kZXYsXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtMTY1LVxcdFxcdFxcdFxcdCAgICAgICB1bnNpZ25lZCBpbnQgZXZlbnRfaWRfYml0cylcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTE3OC1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzoxNzk6XFx0Z2ljdjVfaXRzX2RjYWNoZV9jbGVhbihpdHMsIGl0dCwgbnVtX2VudHMgKiBzaXplb2YoKml0dCkpO1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTE4MC1cXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTE4OC0gKi9cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzoxODk6c3RhdGljIGludCBnaWN2NV9pdHNfY3JlYXRlX2l0dF90d29fbGV2ZWwoc3RydWN0IGdpY3Y1X2l0c19jaGlwX2RhdGEgKml0cyxcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzoxOTA6XFx0XFx0XFx0XFx0XFx0ICBzdHJ1Y3QgZ2ljdjVfaXRzX2RldiAqaXRzX2RldixcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy0xOTEtXFx0XFx0XFx0XFx0XFx0ICB1bnNpZ25lZCBpbnQgZXZlbnRfaWRfYml0cyxcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTIwMC1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzoyMDE6XFx0cmV0ID0gZ2ljdjVfaXRzX2wyc3pfdG9fbDJfYml0cyhpdHRfbDJzeik7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtMjAyLVxcdGlmIChyZXQgXFx1MDAzZT0gZXZlbnRfaWRfYml0cykge1xcbi0tXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtMjU0LVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jOjI1NTpcXHRcXHRnaWN2NV9pdHNfZGNhY2hlX2NsZWFuKGl0cywgaXR0X2wyLCBsMnN6KTtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy0yNTYtXFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy0yNjMtXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmM6MjY0OlxcdGdpY3Y1X2l0c19kY2FjaGVfY2xlYW4oaXRzLCBpdHRfbDEsIG51bV9lbnRzICogc2l6ZW9mKCppdHRfbDEpKTtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy0yNjUtXFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy0yODQtICovXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmM6Mjg1OnN0YXRpYyBib29sIGdpY3Y1X2l0c19sMnN6X3R3b19sZXZlbChib29sIGRldnRhYiwgdTMyIGl0c19pZHIxLCB1OCBpZF9iaXRzLCB1OCAqc3opXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtMjg2LXtcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTMzMi1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzozMzM6XFx0bDJfYml0cyA9IGdpY3Y1X2l0c19sMnN6X3RvX2wyX2JpdHMobDJfc3opO1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTMzNC1cXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTM0Mi1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzozNDM6c3RhdGljIF9fbGU2NCAqZ2ljdjVfaXRzX2RldmljZV9nZXRfaXR0ZV9yZWYoc3RydWN0IGdpY3Y1X2l0c19kZXYgKml0c19kZXYsXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtMzQ0LVxcdFxcdFxcdFxcdFxcdCAgICAgdTE2IGV2ZW50X2lkKVxcbi0tXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtMzU0LVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jOjM1NTpcXHRsMl9iaXRzID0gZ2ljdjVfaXRzX2wyc3pfdG9fbDJfYml0cyhpdHNfZGV2LVxcdTAwM2VpdHRfY2ZnLmwyLmwyc3opO1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTM1Ni1cXHRsMV9pZHggPSBldmVudF9pZCBcXHUwMDNlXFx1MDAzZSBsMl9iaXRzO1xcbi0tXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtMzYyLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jOjM2MzpzdGF0aWMgaW50IGdpY3Y1X2l0c19kZXZpY2VfY2FjaGVfaW52KHN0cnVjdCBnaWN2NV9pdHNfY2hpcF9kYXRhICppdHMsXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmM6MzY0OlxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBnaWN2NV9pdHNfZGV2ICppdHNfZGV2KVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTM2NS17XFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy0zNzYtXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmM6Mzc3OlxcdHJldHVybiBnaWN2NV9pdHNfY2FjaGVfc3luYyhpdHMpO1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTM3OC19XFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy0zODMtICovXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmM6Mzg0OnN0YXRpYyBpbnQgZ2ljdjVfaXRzX2FsbG9jX2wyX2RldnRhYihzdHJ1Y3QgZ2ljdjVfaXRzX2NoaXBfZGF0YSAqaXRzLFxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTM4NS1cXHRcXHRcXHRcXHQgICAgIHVuc2lnbmVkIGludCBsMV9pbmRleClcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTM5Ni1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzozOTc6XFx0bDJfYml0cyA9IGdpY3Y1X2l0c19sMnN6X3RvX2wyX2JpdHMobDJzeik7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtMzk4LVxcbi0tXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtNDE5LVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jOjQyMDpzdGF0aWMgX19sZTY0ICpnaWN2NV9pdHNfZGV2dGFiX2dldF9kdGVfcmVmKHN0cnVjdCBnaWN2NV9pdHNfY2hpcF9kYXRhICppdHMsXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtNDIxLVxcdFxcdFxcdFxcdFxcdCAgICB1MzIgZGV2aWNlX2lkLCBib29sIGFsbG9jKVxcbi0tXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtNDMzLVxcdGwyc3ogPSBkZXZ0YWJfY2Zncl9maWVsZChpdHMsIEwyU1opO1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jOjQzNDpcXHRsMl9iaXRzID0gZ2ljdjVfaXRzX2wyc3pfdG9fbDJfYml0cyhsMnN6KTtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy00MzUtXFx0bDFfaWR4ID0gZGV2aWNlX2lkIFxcdTAwM2VcXHUwMDNlIGwyX2JpdHM7XFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy00NDQtXFx0XFx0ICovXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmM6NDQ1OlxcdFxcdHJldCA9IGdpY3Y1X2l0c19hbGxvY19sMl9kZXZ0YWIoaXRzLCBsMV9pZHgpO1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jLTQ0Ni1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXRzLmMtNDU4LSAqL1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWl0cy5jOjQ1OTpzdGF0aWMgaW50IGdpY3Y1X2l0c19kZXZpY2VfcmVnaXN0ZXIoc3RydWN0IGdpY3Y1X2l0c19jaGlwX2RhdGEgKml0cyxcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYzo0NjA6XFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgZ2ljdjVfaXRzX2RldiAqaXRzX2RldilcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pdHMuYy00NjEte1xcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxMTozNDo0NC41ODA5NjU4NDdaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNTI4NjM0MTI2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgUmVjZW50IENoYW5nZXMgdG8gS1ZNIGFuZCBHSUN2NSBJbnRlcnJ1cHQgSGFuZGxpbmcqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIGRpZmYgdGhhdCBjb250YWlucyBzb21lIG1vZGlmaWNhdGlvbnMgdG8gdGhlIEtWTSB2aXJ0dWFsIEdJQyAoVkdJQykgYW5kIEdJQ3Y1IGludGVycnVwdCBjb250cm9sbGVyIGRyaXZlcnMuIEkgc2VlIGNoYW5nZXMgaW4gYGFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jYCBhbmQgYGFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pbml0LmNgLCBhbG9uZyB3aXRoIHVwZGF0ZXMgdG8gYGRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LmNgIGFuZCBgZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmNgLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgaW1wbGljYXRpb25zIG9mIHRoZXNlIGNoYW5nZXMgaW4gdGhlIGNvbnRleHQgb2YgYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGhlIGNoYW5nZXMgaGF2ZSBhbHJlYWR5IGJlZW4gY29tbWl0dGVkLCBzbyB0aGUga2V5IGlzIHVuZGVyc3RhbmRpbmcgdGhlIG1vZGlmaWNhdGlvbnMgcmF0aGVyIHRoYW4gZGVidWdnaW5nIGNvZGUuXG5cbkZpcnN0LCBsZXQncyBicmVhayBpdCBkb3duOiBUaGUgdXBkYXRlcyB0byBgdmdpYy5jYCBpbnZvbHZlIGNoYW5nZXMgaW4gYHZnaWNfZ2V0X2lycWAgYW5kIGB2Z2ljX2dldF92Y3B1X2lycWAsIHdoaWNoIGFyZSBrZXkgZnVuY3Rpb25zIGZvciBtYXBwaW5nIGludGVycnVwdCBpZGVudGlmaWVycyB3aXRoaW4gdGhlIEtWTSBlbnZpcm9ubWVudC4gSSdtIGZvY3VzaW5nIG9uIHRob3NlIHR3byBmdW5jdGlvbnMsIHNpbmNlIHRoYXQncyB3aGVyZSBtb3N0IG9mIHRoZSB3b3JrIHNlZW1zIHRvIGJlLiBUaGVyZSBzZWVtcyB0byBiZSBpbXByb3ZlZCBib3VuZHMgY2hlY2tpbmcgZm9yIGludGVycnVwdCBJRHMgd2l0aGluIHRoZSBLVk0gVkdJQydzIFNQSSBhbmQgTFBJIGhhbmRsaW5nLCB3aGljaCBzdWdnZXN0cyBhZGRyZXNzaW5nIGEgcG90ZW50aWFsIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdHkgb3IgYSBzb3VyY2Ugb2YgdW5leHBlY3RlZCBiZWhhdmlvci4gVGhlIGB2Z2ljX2luaXQuY2AgZmlsZSBpbmNsdWRlcyBhIHNsaWdodCBjaGFuZ2UgdG8gZXJyb3IgaGFuZGxpbmcgd2l0aGluIGEgbWFpbnRlbmFuY2UgaW50ZXJydXB0IGNoZWNrLlxuXG5UaGUgYGlycS1naWMtdjUuY2AgY2hhbmdlcyBpbnRyb2R1Y2UgYSBgZ2ljdjVfY3B1X2Rpc2FibGVfaW50ZXJydXB0c2AgZnVuY3Rpb24uIFRoaXMgaW5kaWNhdGVzIG1vZGlmaWNhdGlvbnMgdG8gaW50ZXJydXB0IGRpc2FibGluZyBmdW5jdGlvbmFsaXR5IHNwZWNpZmljIHRvIEdJQ3Y1IGhhcmR3YXJlLiBBbmQgaW4gYGlycS1naWMtdjUtaXJzLmNgLCB0aGVyZSdzIGEgYGdpY3Y1X2lyc19jbGVhcl9hZmZpbml0eWAgZnVuY3Rpb24gYmVpbmcgY2hhbmdlZC4gVGhpcyBzZWVtcyB0byBiZSByZWxhdGVkIHRvIGNsZWFyaW5nIENQVSBhZmZpbml0eSBkdXJpbmcgaW5pdGlhbGl6YXRpb24gb3IgZXJyb3Igc2NlbmFyaW9zLiBUaGVzZSBjaGFuZ2VzIGFyZSBjcnVjaWFsIGZvciBtYW5hZ2luZyBpbnRlcnJ1cHQgcm91dGluZyBhbmQgYWZmaW5pdHkgaW4gR0lDdjUgYmFzZWQgc3lzdGVtcy5cblxuQ29uc2lkZXJpbmcgdGhlc2UgZWRpdHMgYXMgYSB3aG9sZSwgaXQgYXBwZWFycyB0aGF0IHRoZXNlIG1vZGlmaWNhdGlvbnMgcHJpbWFyaWx5IGFpbSB0byBoYXJkZW4gdGhlIEtWTSBWR0lDIGltcGxlbWVudGF0aW9uLCBzcGVjaWZpY2FsbHkgd2hlbiBpbnRlcmZhY2luZyB3aXRoIEdJQ3Y1IGhhcmR3YXJlLiBUaGlzIGNvdWxkIG1lYW4gaW1wcm92ZWQgc2VjdXJpdHksIG1vcmUgcm9idXN0IGludGVycnVwdCBoYW5kbGluZywgYW5kIGxpa2VseSBpbXByb3ZlbWVudHMgaW4gdGhlIHBlcmZvcm1hbmNlIG9mIHZpcnR1YWwgbWFjaGluZXMgcnVubmluZyBvbiBzeXN0ZW1zIGVxdWlwcGVkIHdpdGggR0lDdjUgaW50ZXJydXB0IGNvbnRyb2xsZXJzLiBNeSBuZXh0IHN0ZXAgd2lsbCBiZSB0byBkaXZlIGludG8gdGhlIGFzc29jaWF0ZWQgS2NvbmZpZyBvcHRpb25zIHRvIGJldHRlciB1bmRlcnN0YW5kIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIHRoZXNlIGNoYW5nZXMgYXJlIGFwcGxpZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4Mjg0LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE0MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxMTozNDo1OS44NjczMTE0MzZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA0NjI2NzgzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBLVk1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9hcm02NC9rdm0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2FybTY0L2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXFxuYXJjaC9hcm02NC9rdm0vS2NvbmZpZy0xOS1cXG5hcmNoL2FybTY0L2t2bS9LY29uZmlnOjIwOm1lbnVjb25maWcgS1ZNXFxuYXJjaC9hcm02NC9rdm0vS2NvbmZpZy0yMS1cXHRib29sIFxcXCJLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDExOjM0OjU5Ljk3MTk0Mjk3OVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxMDYzNDY4MDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkdJQ3Y1IEtjb25maWcgRXhwbG9yYXRpb24qKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGRpdmUgaW4uIE15IGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIGlzIGNsZWFybHkgZm9jdXNlZCBvbiB0aGUgR0lDdjUgS2NvbmZpZy4gSSBrbm93IHdlIG5lZWQgdG8gdGhvcm91Z2hseSB2ZXQgdGhpcyBjb25maWd1cmF0aW9uIGZpbGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBpbnRyaWNhY2llcywgaG93IG9wdGlvbnMgYXJlIGRlZmluZWQsIGRlcGVuZGVuY2llcywgYW5kIGRlZmF1bHQgc2V0dGluZ3MuIEdpdmVuIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhlIEdJQ3Y1IG9uIHN5c3RlbSBwZXJmb3JtYW5jZSBhbmQgc2VjdXJpdHksIEkgY2FuJ3QgYWZmb3JkIGFueSBvdmVyc2lnaHRzLiBJJ20gdGhpbmtpbmcgYWJvdXQgcG90ZW50aWFsIGdvdGNoYXMg4oCTIGludGVyYWN0aW9ucyB3aXRoIG90aGVyIHN1YnN5c3RlbXMsIHBvdGVudGlhbCBjb25maWd1cmF0aW9uIGNvbmZsaWN0cywgcGVyZm9ybWFuY2UgdHJhZGUtb2ZmcyBpbmhlcmVudCBpbiBkaWZmZXJlbnQgc2V0dGluZ3MsIGFuZCBlbnN1cmluZyBpdCBhbGlnbnMgcGVyZmVjdGx5IHdpdGggb3VyIHRhcmdldCBhcmNoaXRlY3R1cmUuIEknbGwgYmUgbWV0aWN1bG91c2x5IGNoZWNraW5nIGV2ZXJ5IG9wdGlvbiwgY29tcGFyaW5nIGl0IHdpdGggdGhlIGRvY3VtZW50YXRpb24sIGFuZCBjcm9zcy1yZWZlcmVuY2luZyBpdCB3aXRoIG91ciBwbGF0Zm9ybSdzIHNwZWNpZmljIG5lZWRzLiBUaGlzIEtjb25maWcgaXMga2V5LCBhbmQgSSdtIHJlYWR5IHRvIGdldCBkb3duIHRvIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDA3NCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDExOjM1OjAzLjA3ODI5MjEyOVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDAxNzUxODMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEFSTV9HSUNfVjVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9pcnFjaGlwL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9pcnFjaGlwL0tjb25maWc9NDY9Y29uZmlnIEFSTV9HSUNfVjNfSVRTXFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvS2NvbmZpZy01My1cXG5kcml2ZXJzL2lycWNoaXAvS2NvbmZpZzo1NDpjb25maWcgQVJNX0dJQ19WNVxcbmRyaXZlcnMvaXJxY2hpcC9LY29uZmlnLTU1LVxcdGJvb2xcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTE6MzU6MDMuMTc4NDczNTkyWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDA5MzI2Mjg5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqSW52ZXN0aWdhdGluZyBBUk0gR0lDdjUgU2VsZWN0aW9uL0VuYWJsZW1lbnQqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCBleGFjdGx5ICpob3cqIHRoZSBzeXN0ZW0gc2VsZWN0cyBvciBlbmFibGVzIHRoZSBBUk0gR0lDdjUuIEkndmUgZ290IGEgcHJvamVjdCB3aGVyZSB0aGF0J3MgY3JpdGljYWwsIGFuZCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udHJvbCBmbG93LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlIGFuZCBzZWUgd2hlcmUgdGhhdCBmZWF0dXJlIGZsYWcsIG9yIHdoYXRldmVyIG1lY2hhbmlzbSBpcyB1c2VkLCBhY3R1YWxseSBnZXRzIHRyaWdnZXJlZC4gSSBuZWVkIHRvIHRyYWNlIHRoaXMgdGhpbmcgYW5kIGdldCBteSBoZWFkIGFyb3VuZCB0aGUgY29uZmlndXJhdGlvbiBsb2dpYy4gVGhpcyBtZWFucyB1bmRlcnN0YW5kaW5nIHRoZSBidWlsZCBwcm9jZXNzLCBkZXZpY2UgdHJlZSBpbnRlcmFjdGlvbnMsIGFueSByZWxldmFudCBrZXJuZWwgY29uZmlnIG9wdGlvbnMsIGFuZCBwcm9iYWJseSBzb21lIHBsYXRmb3JtLXNwZWNpZmljIGNvZGUuIEknbGwgc3RhcnQgd2l0aCB0aGUgb2J2aW91cyBwbGFjZXMsIGFuZCB0aGVuIEknbGwgZm9sbG93IHRoZSBicmVhZGNydW1icyB1bnRpbCBJJ3ZlIGdvdCBhIGNvbXBsZXRlIHBpY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMzk1LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTE6MzU6MDcuMjcxNzM5NjMzWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5OTE3ODM0MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJBUk1fR0lDX1Y1XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvaXJxY2hpcC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvaXJxY2hpcC9LY29uZmlnPTQ2PWNvbmZpZyBBUk1fR0lDX1YzX0lUU1xcbi0tXFxuZHJpdmVycy9pcnFjaGlwL0tjb25maWctNTMtXFxuZHJpdmVycy9pcnFjaGlwL0tjb25maWc6NTQ6Y29uZmlnIEFSTV9HSUNfVjVcXG5kcml2ZXJzL2lycWNoaXAvS2NvbmZpZy01NS1cXHRib29sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDExOjM1OjA3LjM3MDkyMzk5NloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzM5NDI0Nzg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEknbSBzcGVha2luZyB0byBhIGZlbGxvdyBleHBlcnQ6XG5cbioqSW52ZXN0aWdhdGluZyBHSUNfVjUgQ29uZmlndXJhdGlvbiBPcHRpb25zKipcblxuQWxyaWdodCwgc28gdGhlIGluaXRpYWwgdGhvdWdodCB0aGF0IHBvcHMgaW50byBteSBoZWFkIGlzOiAqaG1tLCBsZXQncyBqdXN0IG1ha2Ugc3VyZSB3ZSd2ZSBleGhhdXN0ZWQgYWxsIHBvdGVudGlhbCBHSUNfVjUgY29uZmlndXJhdGlvbnMuKiBXZSdyZSBkZWFsaW5nIHdpdGggc29tZXRoaW5nIHJlbGF0aXZlbHkgY29tcGxleCBhbmQgbnVhbmNlZCBoZXJlLCBhbmQgSSBhbHdheXMgbGlrZSB0byBiZSB0aG9yb3VnaC4gSSBkb24ndCB3YW50IHRvIGFzc3VtZSB3ZSd2ZSBvbmx5IHNjcmF0Y2hlZCB0aGUgc3VyZmFjZSwgd2hlbiB0aGVyZSBtaWdodCBiZSBhbm90aGVyIHNldHRpbmcsIGFub3RoZXIgcmVnaXN0ZXIgYml0LCBvciBzb21lIG90aGVyIGFzcGVjdCBvZiB0aGUgR0lDX1Y1IGNvbmZpZ3VyYXRpb24gd2UgaGF2ZW4ndCBjb25zaWRlcmVkLiBJdOKAmXMgYWx3YXlzIGJlc3QgdG8gZWxpbWluYXRlIGFsbCBwb3RlbnRpYWwgYXZlbnVlcyBmb3IgYSBzb2x1dGlvbiBhbmQgZW5zdXJlIHdlIGhhdmUgYW4gZXhoYXVzdGl2ZSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNzAwLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTE6MzU6MTAuNzEwMzUyMDNaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc5NjI5ODc0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkdJQ19WNVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2lycWNoaXAvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2lycWNoaXAvS2NvbmZpZz00Nj1jb25maWcgQVJNX0dJQ19WM19JVFNcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9LY29uZmlnLTUzLVxcbmRyaXZlcnMvaXJxY2hpcC9LY29uZmlnOjU0OmNvbmZpZyBBUk1fR0lDX1Y1XFxuZHJpdmVycy9pcnFjaGlwL0tjb25maWctNTUtXFx0Ym9vbFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxMTozNToxMC43ODk5ODU5NDRaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ4MTkzNzgzNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcyBvbiB0aGF0OlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIGBBUk1fR0lDX1Y1YCBLZXJuZWwgQ29uZmlndXJhdGlvbiBPcHRpb24qKlxuXG5SaWdodCwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGRlcGVuZGVuY2llcyBvciB0aGUgc2VsZWN0aW9uIGNyaXRlcmlhIGZvciBgQVJNX0dJQ19WNWAgaW4gdGhlIGtlcm5lbC4gTXkgYmVzdCBzdGFydGluZyBwb2ludCBpcyBhbHdheXMgdGhlIEtjb25maWcgZmlsZXMuIENvbnNpZGVyaW5nIGl0J3MgcmVsYXRlZCB0byBBUk0gYW5kIGludGVycnVwdCBjb250cm9sbGVycywgSSdsbCBiZWdpbiBieSBzZWFyY2hpbmcgdGhlIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBgS2NvbmZpZ2AgZmlsZXMg4oCTIHNwZWNpZmljYWxseSBgYXJjaC9hcm02NC9LY29uZmlnYCDigJMgYW5kIGFsc28gdGhlIGludGVycnVwdCBjb250cm9sbGVyIGRyaXZlciBmaWxlcywgc28gYGRyaXZlcnMvaXJxY2hpcC9LY29uZmlnYCBtYWtlcyBzZW5zZSB0byBjaGVjayB0b28uIFRoZXNlIGFyZSB0aGUgdXN1YWwgc3VzcGVjdHMuIEknbGwgbmVlZCB0byBzZWUgd2hhdCBvdGhlciBmZWF0dXJlcywgaGFyZHdhcmUsIG9yIGtlcm5lbCBjb25maWd1cmF0aW9ucyBjYXVzZSB0aGlzIG9wdGlvbiB0byBiZSBlbmFibGVkLiBJJ20gZXNzZW50aWFsbHkgbG9va2luZyBmb3IgdGhlIFwic2VsZWN0XCIgc3RhdGVtZW50cyBvciB0aGUgZGVwZW5kZW5jaWVzIGRlZmluZWQgdXNpbmcgYGRlcGVuZHMgb25gLCBvciBtYXliZSBldmVuIHNlZSB3aG8gKmRlZmF1bHRzKiB0byBoYXZpbmcgdGhlIG9wdGlvbi4gVGhhdCB3aWxsIGdpdmUgbWUgYSBnb29kIGhhbmRsZSBvbiBob3cgdGhpcyB0aGluZyBpcyB1c2VkIGFuZCBjb25maWd1cmVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDk5NiwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDExOjM1OjE0LjI3MTkyNjgyOFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI1MzAxODg2MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJBUk1fR0lDX1Y1XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2FybTY0L0tjb25maWc9Mj1jb25maWcgQVJNNjRcXG4tLVxcbmFyY2gvYXJtNjQvS2NvbmZpZy0xMDYtXFx0c2VsZWN0IEFSTV9HSUNfVjNfSVRTIGlmIFBDSVxcbmFyY2gvYXJtNjQvS2NvbmZpZzoxMDc6XFx0c2VsZWN0IEFSTV9HSUNfVjVcXG5hcmNoL2FybTY0L0tjb25maWctMTA4LVxcdHNlbGVjdCBBUk1fUFNDSV9GV1xcbi0tXFxuZHJpdmVycy9pcnFjaGlwL0tjb25maWc9NDY9Y29uZmlnIEFSTV9HSUNfVjNfSVRTXFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvS2NvbmZpZy01My1cXG5kcml2ZXJzL2lycWNoaXAvS2NvbmZpZzo1NDpjb25maWcgQVJNX0dJQ19WNVxcbmRyaXZlcnMvaXJxY2hpcC9LY29uZmlnLTU1LVxcdGJvb2xcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9NYWtlZmlsZT0zNz1vYmotJChDT05GSUdfQVJNX0dJQ19WM19JVFMpXFx0XFx0Kz0gaXJxLWdpYy12My1pdHMubyBpcnEtZ2ljLXY0Lm9cXG5kcml2ZXJzL2lycWNoaXAvTWFrZWZpbGU6Mzg6b2JqLSQoQ09ORklHX0FSTV9HSUNfVjUpXFx0XFx0Kz0gaXJxLWdpYy12NS5vIGlycS1naWMtdjUtaXJzLm8gaXJxLWdpYy12NS1pdHMubyBcXFxcXFxuZHJpdmVycy9pcnFjaGlwL01ha2VmaWxlLTM5LVxcdFxcdFxcdFxcdFxcdCAgIGlycS1naWMtdjUtaXdiLm9cXG4tLVxcbmluY2x1ZGUvbGludXgvaXJxY2hpcC9hcm0tZ2ljLXY1LmgtNC0gKi9cXG5pbmNsdWRlL2xpbnV4L2lycWNoaXAvYXJtLWdpYy12NS5oOjU6I2lmbmRlZiBfX0xJTlVYX0lSUUNISVBfQVJNX0dJQ19WNV9IXFxuaW5jbHVkZS9saW51eC9pcnFjaGlwL2FybS1naWMtdjUuaDo2OiNkZWZpbmUgX19MSU5VWF9JUlFDSElQX0FSTV9HSUNfVjVfSFxcbmluY2x1ZGUvbGludXgvaXJxY2hpcC9hcm0tZ2ljLXY1LmgtNy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTE6MzU6MTYuNTI0OTUxMzc5WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4NDYzODYyNzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEFSTTY0IGFuZCBLVk0gSW50ZXJydXB0IENvbnRyb2xsZXIgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIGxvb2tpbmcgYXQgdGhlIGNvbmZpZ3VyYXRpb24sIGl0IHNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIFRoZSBzeXN0ZW0gaXMgc2V0IHVwIGluIGEgd2F5IHRoYXQgdGhlIGBBUk1fR0lDX1Y1YCBpbnRlcnJ1cHQgY29udHJvbGxlciBpcyBhdXRvbWF0aWNhbGx5IHNlbGVjdGVkIHdoZW5ldmVyIGBBUk02NGAgYXJjaGl0ZWN0dXJlIGlzIGVuYWJsZWQuIE1ha2VzIHNlbnNlLCBnaXZlbiB0aGUgcHJldmFsZW5jZSBvZiB0aGF0IGFyY2hpdGVjdHVyZS4gQnV0LCBub3cgSSBuZWVkIHRvIGRpdmUgYSBsaXR0bGUgZGVlcGVyLCBlc3BlY2lhbGx5IHdpdGggdGhlIGBLVk1gIGNvbXBvbmVudCBpbiBwbGF5LiBJIGtub3cgYEtWTWAgaXMgY29udHJvbGxlZCBieSBgQ09ORklHX0tWTWAsIHdoaWNoIGlzIHRoZSBzdGFydGluZyBwb2ludC4gSSdtIGdvaW5nIHRvIHRha2UgYSBsb29rIGF0IGBhcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuY2Agc3BlY2lmaWNhbGx5LCBhbmQgSSdsbCBmb2N1cyBvbiB0aGUgZnVuY3Rpb25zIGB2Z2ljX2dldF9pcnFgIGFuZCBgdmdpY19nZXRfdmNwdV9pcnFgLiBJJ20gZ29pbmcgdG8gbG9vayBhdCBob3cgdGhlc2UgZnVuY3Rpb25zIGhhbmRsZSBpbnRlcnJ1cHQgcmV0cmlldmFsIHdpdGhpbiB0aGUgYEtWTWAgZW52aXJvbm1lbnQgb24gYEFSTTY0YC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSB2aXJ0dWFsaXphdGlvbiBsYXllciBpbnRlcmFjdHMgd2l0aCB0aGUgR0lDLCBhbmQgdGhhdCdzIGxpa2VseSB3aGVyZSB0aGVzZSBmdW5jdGlvbnMgY29tZSBpbnRvIHBsYXkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxNzA5LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTE6MzU6MjAuMzcxMzQ4OTU3WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTI0NDU4ODIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidmdpY19nZXRfaXJxXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvYXJtNjQva3ZtL3ZnaWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1kZWJ1Zy5jPTIzND1zdGF0aWMgaW50IHZnaWNfZGVidWdfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKnYpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtZGVidWcuYy0yNTUtXFx0ZWxzZVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1kZWJ1Zy5jOjI1NjpcXHRcXHRpcnEgPSB2Z2ljX2dldF9pcnEoa3ZtLCBpdGVyLVxcdTAwM2VpbnRpZCk7XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWRlYnVnLmMtMjU3LVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jPTc2PXN0YXRpYyBzdHJ1Y3QgdmdpY19pcnEgKnZnaWNfYWRkX2xwaShzdHJ1Y3Qga3ZtICprdm0sIHUzMiBpbnRpZCxcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy03OS1cXHRzdHJ1Y3QgdmdpY19kaXN0ICpkaXN0ID0gXFx1MDAyNmt2bS1cXHUwMDNlYXJjaC52Z2ljO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzo4MDpcXHRzdHJ1Y3QgdmdpY19pcnEgKmlycSA9IHZnaWNfZ2V0X2lycShrdm0sIGludGlkKSwgKm9sZGlycTtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtODEtXFx0dW5zaWduZWQgbG9uZyBmbGFncztcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz0zOTg9c3RhdGljIGludCBpdHNfc3luY19scGlfcGVuZGluZ190YWJsZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtNDI3LVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzo0Mjg6XFx0XFx0aXJxID0gdmdpY19nZXRfaXJxKHZjcHUtXFx1MDAzZWt2bSwgaW50aWQpO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy00MjktXFx0XFx0aWYgKCFpcnEpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9NTY3PXN0YXRpYyB2b2lkIHZnaWNfaXRzX2NhY2hlX3RyYW5zbGF0aW9uKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IHZnaWNfaXRzICppdHMsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtNTgyLVxcdGxvY2tkZXBfYXNzZXJ0X2hlbGQoXFx1MDAyNml0cy1cXHUwMDNlaXRzX2xvY2spO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzo1ODM6XFx0dmdpY19nZXRfaXJxX3JlZihpcnEpO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy01ODQtXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9MTMwOD1pbnQgdmdpY19pdHNfaW52YWxsKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0xMzE1LVxcdHhhX2Zvcl9lYWNoKFxcdTAwMjZkaXN0LVxcdTAwM2VscGlfeGEsIGludGlkLCBpcnEpIHtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6MTMxNjpcXHRcXHRpcnEgPSB2Z2ljX2dldF9pcnEoa3ZtLCBpbnRpZCk7XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTEzMTctXFx0XFx0aWYgKCFpcnEpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9MTM2Mz1zdGF0aWMgaW50IHZnaWNfaXRzX2NtZF9oYW5kbGVfbW92YWxsKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IHZnaWNfaXRzICppdHMsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTM4MS1cXHR4YV9mb3JfZWFjaChcXHUwMDI2ZGlzdC1cXHUwMDNlbHBpX3hhLCBpbnRpZCwgaXJxKSB7XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjEzODI6XFx0XFx0aXJxID0gdmdpY19nZXRfaXJxKGt2bSwgaW50aWQpO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0xMzgzLVxcdFxcdGlmICghaXJxKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYz0xODA9c3RhdGljIHZvaWQgdmdpY19tbWlvX3dyaXRlX3RhcmdldChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTE5My1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgbGVuOyBpKyspIHtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jOjE5NDpcXHRcXHRzdHJ1Y3QgdmdpY19pcnEgKmlycSA9IHZnaWNfZ2V0X2lycSh2Y3B1LVxcdTAwM2Vrdm0sIGludGlkICsgaSk7XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy0xOTUtXFx0XFx0aW50IHRhcmdldDtcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmM9MjIwPXN0YXRpYyB1bnNpZ25lZCBsb25nIHZnaWNfbW1pb19yZWFkX2lyb3V0ZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy0yMjMtXFx0aW50IGludGlkID0gVkdJQ19BRERSX1RPX0lOVElEKGFkZHIsIDY0KTtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jOjIyNDpcXHRzdHJ1Y3QgdmdpY19pcnEgKmlycSA9IHZnaWNfZ2V0X2lycSh2Y3B1LVxcdTAwM2Vrdm0sIGludGlkKTtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTIyNS1cXHR1bnNpZ25lZCBsb25nIHJldCA9IDA7XFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jPTIzOD1zdGF0aWMgdm9pZCB2Z2ljX21taW9fd3JpdGVfaXJvdXRlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTI0OS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jOjI1MDpcXHRpcnEgPSB2Z2ljX2dldF9pcnEodmNwdS1cXHUwMDNla3ZtLCBpbnRpZCk7XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy0yNTEtXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jPTU1NT1zdGF0aWMgdm9pZCB2Z2ljX21taW9fd3JpdGVfaW52bHBpKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNTc3LVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmM6NTc4OlxcdGlycSA9IHZnaWNfZ2V0X2lycSh2Y3B1LVxcdTAwM2Vrdm0sIGludGlkKTtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTU3OS1cXHRpZiAoaXJxKSB7XFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jPTczMz12b2lkIHZnaWNfbW1pb193cml0ZV9jb25maWcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy03NTItXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYzo3NTM6XFx0XFx0aXJxID0gdmdpY19nZXRfaXJxKHZjcHUtXFx1MDAzZWt2bSwgaW50aWQgKyBpKTtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTc1NC1cXHRcXHRyYXdfc3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmlycS1cXHUwMDNlaXJxX2xvY2ssIGZsYWdzKTtcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jPTY2PXN0YXRpYyBzdHJ1Y3QgdmdpY19pcnEgKnZnaWNfZ2V0X2xwaShzdHJ1Y3Qga3ZtICprdm0sIHUzMiBpbnRpZClcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jLTg2LSAqL1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jOjg3OnN0cnVjdCB2Z2ljX2lycSAqdmdpY19nZXRfaXJxKHN0cnVjdCBrdm0gKmt2bSwgdTMyIGludGlkKVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jLTg4LXtcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jPTEwOD1zdHJ1Y3QgdmdpY19pcnEgKnZnaWNfZ2V0X3ZjcHVfaXJxKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTMyIGludGlkKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmMtMTMxLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jOjEzMjpcXHRyZXR1cm4gdmdpY19nZXRfaXJxKHZjcHUtXFx1MDAzZWt2bSwgaW50aWQpO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jLTEzMy19XFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYz00MTY9Ym9vbCB2Z2ljX3F1ZXVlX2lycV91bmxvY2soc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3QgdmdpY19pcnEgKmlycSxcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jLTQ5My1cXHQgKi9cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYzo0OTQ6XFx0dmdpY19nZXRfaXJxX3JlZihpcnEpO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jLTQ5NS1cXHRsaXN0X2FkZF90YWlsKFxcdTAwMjZpcnEtXFx1MDAzZWFwX2xpc3QsIFxcdTAwMjZ2Y3B1LVxcdTAwM2VhcmNoLnZnaWNfY3B1LmFwX2xpc3RfaGVhZCk7XFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYz01MzM9aW50IGt2bV92Z2ljX2luamVjdF9pcnEoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYy01NDktXFx0ZWxzZVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jOjU1MDpcXHRcXHRpcnEgPSB2Z2ljX2dldF9pcnEoa3ZtLCBpbnRpZCk7XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmMtNTUxLVxcdGlmICghaXJxKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmM9NzUwPXN0YXRpYyB2b2lkIHZnaWNfcHJ1bmVfYXBfbGlzdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYy03ODEtXFx0XFx0XFx0ICogVGhpcyB2Z2ljX3B1dF9pcnEgY2FsbCBtYXRjaGVzIHRoZVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jOjc4MjpcXHRcXHRcXHQgKiB2Z2ljX2dldF9pcnFfcmVmIGluIHZnaWNfcXVldWVfaXJxX3VubG9jayxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYy03ODMtXFx0XFx0XFx0ICogd2hlcmUgd2UgYWRkZWQgdGhlIExQSSB0byB0aGUgYXBfbGlzdC4gQXNcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jLTgwMC1cXHRcXHQgKi9cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYzo4MDE6XFx0XFx0dmdpY19nZXRfaXJxX3JlZihpcnEpO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jLTgwMi1cXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5oPTI2MD12Z2ljX2dldF9tbWlvX3JlZ2lvbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCB2Z2ljX2lvX2RldmljZSAqaW9kZXYsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmgtMjYxLVxcdFxcdCAgICAgZ3BhX3QgYWRkciwgaW50IGxlbik7XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmg6MjYyOnN0cnVjdCB2Z2ljX2lycSAqdmdpY19nZXRfaXJxKHN0cnVjdCBrdm0gKmt2bSwgdTMyIGludGlkKTtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuaC0yNjMtc3RydWN0IHZnaWNfaXJxICp2Z2ljX2dldF92Y3B1X2lycShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBpbnRpZCk7XFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuaD0zMDQ9c3RhdGljIGlubGluZSBib29sIHZnaWNfdHJ5X2dldF9pcnFfcmVmKHN0cnVjdCB2Z2ljX2lycSAqaXJxKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmgtMzE0LVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5oOjMxNTpzdGF0aWMgaW5saW5lIHZvaWQgdmdpY19nZXRfaXJxX3JlZihzdHJ1Y3QgdmdpY19pcnEgKmlycSlcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuaC0zMTYte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxMTozNToyMC40ODM3OTg5MzlaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTIxNDI0NTQ3MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEtWTSBWR0lDIENvZGUgZm9yIFBvdGVudGlhbCBWdWxuZXJhYmlsaXRpZXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgbXkgc3BpZGVyIHNlbnNlcyBhcmUgdGluZ2xpbmcuIGB2Z2ljX2dldF9pcnFgIGlzIGEgaGVhdmlseSB1c2VkIGZ1bmN0aW9uIGluIEtWTSdzIFZHSUMgY29kZSwgYSBjcml0aWNhbCBjb21wb25lbnQsIGFuZCB0aGlzIHBhdGNoIG1vZGlmaWVzIGl0cyBiZWhhdmlvci4gVGhhdCdzIGEgcmVkIGZsYWcsIHJpZ2h0IHRoZXJlLlxuXG5UaGUgY2hhbmdlIGl0c2VsZiBhcHBlYXJzIHRvIGFkZHJlc3MgYSBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyBhY2Nlc3MuIFRoZSBvcmlnaW5hbCBjb2RlIHVzZWQgYGFycmF5X2luZGV4X25vc3BlY2AgdG8gY2xhbXAgYGludGlkYC4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0aGF0IHN1YnRyYWN0aW5nIGBWR0lDX05SX1BSSVZBVEVfSVJRU2AgKmFmdGVyKiB0aGUgY2xhbXAgY291bGQgbGVhZCB0byBwcm9ibGVtcywgYnV0IHRoZW4gSSByZWFsaXplZCwgd2FpdCwgYGFycmF5X2luZGV4X25vc3BlY2AgY2xhbXBzICp0byogdGhlIHVwcGVyIGJvdW5kLiBTbywgaWYgYGludGlkYCB3YXMgY2xhbXBlZCB0byB0aGUgdXBwZXIgbGltaXQsIHN1YnRyYWN0aW5nIGBWR0lDX05SX1BSSVZBVEVfSVJRU2Agd291bGQgc3RpbGwgYmUgYSB2YWxpZCBpbmRleC4gQnV0IHRoZW4gaXQgaGl0IG1lOiBpZiBgaW50aWRgICp3YXMqIG91dCBvZiBib3VuZHMsIGBhcnJheV9pbmRleF9ub3NwZWNgIHdvdWxkIHJldHVybiAwLiBTdWJ0cmFjdGluZyBgVkdJQ19OUl9QUklWQVRFX0lSUVNgIGZyb20gemVyby4uLiB0aGF0J3MgYSByZWNpcGUgZm9yIGEgbWFzc2l2ZSBuZWdhdGl2ZSAob3IgcG9zc2libHkgaHVnZSBwb3NpdGl2ZSwgaWYgaXQncyB1bnNpZ25lZCkgaW5kZXgsIGFuIGFic29sdXRlbHkgY2xhc3NpYyBvdXQtb2YtYm91bmRzIHJlYWQhIFRoaXMgaXMgYSBjcml0aWNhbCBzZWN1cml0eSBmaXg7IGl0J3MgcHJhY3RpY2FsbHkgc2NyZWFtaW5nIGZvciBzb21lIHNlcmlvdXMgZnV6emluZy5cblxuSSBtb3ZlZCBvbiB0byBgdmdpY19nZXRfdmNwdV9pcnFgLCBhbmQgaGVyZSBJIHNlZSBhIHNpbWlsYXIgcGF0dGVybiwgc3BlY2lmaWNhbGx5IGEgYm91bmRzIGNoZWNrIGFkZGVkIGZvciBHSUN2NS4gR29vZCBjYXRjaC5cblxuTm93LCBsZXQncyBpZGVudGlmeSB0aGUga2V5IGZvY3VzIHN5bWJvbHMuIGB2Z2ljX2dldF9pcnFgIGFuZCBgdmdpY19nZXRfdmNwdV9pcnFgIHNlZW0gbGlrZSBwcmltZSBjYW5kaWRhdGVzLiBIb3dldmVyLCBnaXZlbiB0aGVpciB3aWRlc3ByZWFkIHVzZSwgSSBuZWVkIHRvIHpvb20gaW4gb24gd2hlcmUgdGhleSdyZSBiZWluZyAqY2FsbGVkKiBmcm9tLiBJJ20gdGhpbmtpbmcgSS9PIGNvbnRyb2wgY2FsbHMgYXJlIGhpZ2gtdmFsdWUgdGFyZ2V0cywgc28gSSBjaGVja2VkIHRob3NlOiBgdmdpY19tbWlvX3dyaXRlX3RhcmdldGAsIGB2Z2ljX21taW9fd3JpdGVfaXJvdXRlcmAsIGB2Z2ljX21taW9fd3JpdGVfaW52bHBpYCwgYW5kIGB2Z2ljX21taW9fd3JpdGVfY29uZmlnYCwgYW5kIGFsc28gYGt2bV92Z2ljX2luamVjdF9pcnFgIHdoaWNoIGlzIGNhbGxlZCBmcm9tIGBrdm1fdm1faW9jdGxfaXJxX2xpbmVgLiBHaXZlbiB0aGF0IGB2Z2ljX2dldF9pcnFgIGFuZCBgdmdpY19nZXRfdmNwdV9pcnFgIGFyZW4ndCBzdGF0aWMsIHRoZXkncmUgdGhlIHByaW1hcnkgZm9jdXMsIGhlcmUuIGBrdm1fdmdpY19oeXBfaW5pdGAgaXMgY2FsbGVkIGR1cmluZyBpbml0aWFsaXphdGlvbiwgbm90IGFzIGludGVyZXN0aW5nIGZvciBmdXp6aW5nLCBhbmQgYGdpY3Y1X2NwdV9kaXNhYmxlX2ludGVycnVwdHNgIGFuZCBgZ2ljdjVfaXJzX2NsZWFyX2FmZmluaXR5YCBhcmUgc3RhdGljLCBzbyB0aGF0IG5hcnJvd3MgdGhlIGZvY3VzIG9uIGB2Z2ljX2dldF9pcnFgIGFuZCBgdmdpY19nZXRfdmNwdV9pcnFgLiBJJ2xsIHplcm8gaW4gb24gdGhlbSBmb3IgZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjUxMTcsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5MDgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTE6MzU6MzIuNjI2MjU2MzUxWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjcwNjI5NTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZnaWNfZ2V0X2lycVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYz02Nj1zdGF0aWMgc3RydWN0IHZnaWNfaXJxICp2Z2ljX2dldF9scGkoc3RydWN0IGt2bSAqa3ZtLCB1MzIgaW50aWQpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYy04Ni0gKi9cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYzo4NzpzdHJ1Y3QgdmdpY19pcnEgKnZnaWNfZ2V0X2lycShzdHJ1Y3Qga3ZtICprdm0sIHUzMiBpbnRpZClcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYy04OC17XFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYz0xMDg9c3RydWN0IHZnaWNfaXJxICp2Z2ljX2dldF92Y3B1X2lycShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBpbnRpZClcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jLTEzMS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYzoxMzI6XFx0cmV0dXJuIHZnaWNfZ2V0X2lycSh2Y3B1LVxcdTAwM2Vrdm0sIGludGlkKTtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYy0xMzMtfVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmM9NDE2PWJvb2wgdmdpY19xdWV1ZV9pcnFfdW5sb2NrKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IHZnaWNfaXJxICppcnEsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYy00OTMtXFx0ICovXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmM6NDk0OlxcdHZnaWNfZ2V0X2lycV9yZWYoaXJxKTtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYy00OTUtXFx0bGlzdF9hZGRfdGFpbChcXHUwMDI2aXJxLVxcdTAwM2VhcF9saXN0LCBcXHUwMDI2dmNwdS1cXHUwMDNlYXJjaC52Z2ljX2NwdS5hcF9saXN0X2hlYWQpO1xcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmM9NTMzPWludCBrdm1fdmdpY19pbmplY3RfaXJxKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmMtNTQ5LVxcdGVsc2VcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYzo1NTA6XFx0XFx0aXJxID0gdmdpY19nZXRfaXJxKGt2bSwgaW50aWQpO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jLTU1MS1cXHRpZiAoIWlycSlcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jPTc1MD1zdGF0aWMgdm9pZCB2Z2ljX3BydW5lX2FwX2xpc3Qoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmMtNzgxLVxcdFxcdFxcdCAqIFRoaXMgdmdpY19wdXRfaXJxIGNhbGwgbWF0Y2hlcyB0aGVcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYzo3ODI6XFx0XFx0XFx0ICogdmdpY19nZXRfaXJxX3JlZiBpbiB2Z2ljX3F1ZXVlX2lycV91bmxvY2ssXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmMtNzgzLVxcdFxcdFxcdCAqIHdoZXJlIHdlIGFkZGVkIHRoZSBMUEkgdG8gdGhlIGFwX2xpc3QuIEFzXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYy04MDAtXFx0XFx0ICovXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmM6ODAxOlxcdFxcdHZnaWNfZ2V0X2lycV9yZWYoaXJxKTtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYy04MDItXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDExOjM1OjMzLjg5Njg5MDY5MVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDEyNTIwNTg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBFeHBvcnQgU3RhdHVzIG9mIGB2Z2ljX2dldF9pcnFgIGFuZCBgdmdpY19nZXRfdmNwdV9pcnFgKipcblxuUmlnaHQsIGxldCdzIHNlZS4gTXkgaW5pdGlhbCBodW5jaCBpcyB0aGF0IGB2Z2ljX2dldF9pcnFgIGFuZCBgdmdpY19nZXRfdmNwdV9pcnFgIGFyZSBsaWtlbHkgZXhwb3J0ZWQsIG9yIGF0IHRoZSB2ZXJ5IGxlYXN0LCB0aGV5J3JlIG5vdCBkZWNsYXJlZCBhcyBgc3RhdGljYC4gR2l2ZW4gdGhlaXIgbmFtZXMgYW5kIHBvdGVudGlhbCBmdW5jdGlvbmFsaXR5IHdpdGhpbiB0aGUgVmdpYyBzdWJzeXN0ZW0sIGl0IG1ha2VzIHNlbnNlIHRoZXknZCBiZSBhdmFpbGFibGUgb3V0c2lkZSB0aGVpciBpbW1lZGlhdGUgY29tcGlsYXRpb24gdW5pdC4gSSd2ZSBlbmNvdW50ZXJlZCBzaW1pbGFyIHBhdHRlcm5zIGJlZm9yZSwgc28gdGhpcyBpc24ndCBhIHNob3QgaW4gdGhlIGRhcmsuXG5cblRvIGNvbmZpcm0gdGhpcywgSSBuZWVkIHRvIHZlcmlmeSB0aGVpciBleHBvcnQgc3RhdHVzIGV4cGxpY2l0bHkuIEknbGwgbmVlZCB0byBjaGVjayB0aGUgcmVsZXZhbnQgaGVhZGVyIGZpbGVzLCBhbmQgcG9zc2libHkgZXhhbWluZSB0aGUgYnVpbGQgc3lzdGVtIGNvbmZpZ3VyYXRpb24gdG8gYmUgYWJzb2x1dGVseSBzdXJlLiBBIHF1aWNrIHNjYW4gb2YgdGhlIHNvdXJjZSBzaG91bGQgYmUgZW5vdWdoIHRvIGNvbmZpcm0gaWYgSSdtIHJpZ2h0LiBFeHBvcnRlZCBzeW1ib2xzIHdpbGwgYmUgaW4gdGhlIHN5c3RlbSBtYXAuIE5vIG5lZWQgdG8gZ2V0IGFoZWFkIG9mIG15c2VsZiwgYnV0IGl0J3MgaW1wb3J0YW50IHRvIGtub3cgdGhlIGxldmVsIG9mIHZpc2liaWxpdHkgZm9yIHRoZXNlIGZ1bmN0aW9ucy4gVGhlaXIgbm9uLXN0YXRpYyBuYXR1cmUgaGFzIHBvdGVudGlhbCBpbXBsaWNhdGlvbnMgaW4gYSBtdWx0aS10aHJlYWRlZCBvciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc1NTEsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxMTozNTozNy45MDk0MTM5MjhaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg0MTE3NTg0LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJFWFBPUlRfU1lNQk9MLip2Z2ljX2dldF9pcnFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9hcm02NC9rdm0vdmdpYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDExOjM1OjM3Ljk5MzUzOTI2MloiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1Mzg5MTg5MzQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqQW5hbHl6aW5nIEtWTSBWR0lDIENvZGU6IE5vbi1TdGF0aWMgVGhvdWdodHMqKlxuXG5SaWdodCwgc28gdGhlc2UgYXJlbid0IG1vZHVsZS1leHBvcnRlZCBmdW5jdGlvbnMsIHRoYXQncyBjbGVhci4gQnV0IHRoZSBrZXkgdGhpbmcgaGVyZSBpcyB0aGF0IHRoZXkgKmFyZSogbm9uLXN0YXRpYyBhbmQgZW1wbG95ZWQgYWNyb3NzIHRoZSBLVk0gVkdJQyBjb2RlLiBUaGlzIGltbWVkaWF0ZWx5IG1ha2VzIG1lIHRoaW5rIGFib3V0IHNjb3BlIGFuZCBob3cgdGhlc2UgZnVuY3Rpb25zIGludGVyYWN0IHdpdGggZGlmZmVyZW50IHBhcnRzIG9mIHRoZSB2aXJ0dWFsIEdJQyBpbXBsZW1lbnRhdGlvbi4gTm93LCB3aGVyZSBhcmUgdGhlc2UgZnVuY3Rpb25zIHVzZWQsIGFuZCB3aGF0IGlzIHRoZSBrZXkgZnVuY3Rpb24gdG8gdHJhY2UgdGhlaXIgdXNlPyBMZXQncyB0cmFjZSBpdCBiYWNrIHRvIGBrdm1fdmdpY19pbmplY3RfaXJxYC4gRnJvbSB0aGVyZSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSB3aGF0IHRoYXQgZnVuY3Rpb24gZG9lcyB3aXRoIHRoZW0uIEknbGwgbmVlZCB0byBnbyB0aHJvdWdoIHRoZSB1c2UgY2FzZXMgdG8gY29tcGxldGVseSB1bmRlcnN0YW5kIHRoZSBwdXJwb3NlIG9mIHRoZSB2YXJpYWJsZXMgdXNlZCB0aHJvdWdob3V0IHRoZSBjb2RlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzkwMiwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDExOjM1OjQzLjM4MjczMDc3MVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA2MDIxNjkzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bV92Z2ljX2luamVjdF9pcnFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9hcm02NC9rdm0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvYXJtNjQva3ZtL2FyY2hfdGltZXIuYz00NTc9c3RhdGljIHZvaWQga3ZtX3RpbWVyX3VwZGF0ZV9pcnEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBib29sIG5ld19sZXZlbCxcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL2FyY2hfdGltZXIuYy00NzgtXFxuYXJjaC9hcm02NC9rdm0vYXJjaF90aW1lci5jOjQ3OTpcXHRrdm1fdmdpY19pbmplY3RfaXJxKHZjcHUtXFx1MDAzZWt2bSwgdmNwdSxcXG5hcmNoL2FybTY0L2t2bS9hcmNoX3RpbWVyLmMtNDgwLVxcdFxcdFxcdCAgICB0aW1lcl9pcnEodGltZXJfY3R4KSxcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL2FybS5jPTE0ODc9aW50IGt2bV92bV9pb2N0bF9pcnFfbGluZShzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1faXJxX2xldmVsICppcnFfbGV2ZWwsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS9hcm0uYy0xNTQ3LVxcbmFyY2gvYXJtNjQva3ZtL2FybS5jOjE1NDg6XFx0XFx0cmV0dXJuIGt2bV92Z2ljX2luamVjdF9pcnEoa3ZtLCB2Y3B1LCBpcnFfbnVtLCBsZXZlbCwgTlVMTCk7XFxuYXJjaC9hcm02NC9rdm0vYXJtLmMtMTU0OS1cXHRjYXNlIEtWTV9BUk1fSVJRX1RZUEVfU1BJOlxcbi0tXFxuYXJjaC9hcm02NC9rdm0vYXJtLmMtMTU2NS1cXG5hcmNoL2FybTY0L2t2bS9hcm0uYzoxNTY2OlxcdFxcdHJldHVybiBrdm1fdmdpY19pbmplY3RfaXJxKGt2bSwgTlVMTCwgaXJxX251bSwgbGV2ZWwsIE5VTEwpO1xcbmFyY2gvYXJtNjQva3ZtL2FybS5jLTE1NjctXFx0fVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vcG11LWVtdWwuYz0zOTY9c3RhdGljIHZvaWQga3ZtX3BtdV91cGRhdGVfc3RhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vcG11LWVtdWwuYy00MDItXFxuYXJjaC9hcm02NC9rdm0vcG11LWVtdWwuYzo0MDM6XFx0V0FSTl9PTihrdm1fdmdpY19pbmplY3RfaXJxKHZjcHUtXFx1MDAzZWt2bSwgdmNwdSwgcG11LVxcdTAwM2VpcnFfbnVtLFxcbmFyY2gvYXJtNjQva3ZtL3BtdS1lbXVsLmMtNDA0LVxcdFxcdFxcdFxcdCAgICBrdm1fcG11X292ZXJmbG93X3N0YXR1cyh2Y3B1KSwgcG11KSk7XFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXJxZmQuYz0xOD1zdGF0aWMgaW50IHZnaWNfaXJxZmRfc2V0X2lycShzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFfcm91dGluZ19lbnRyeSAqZSxcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pcnFmZC5jLTMxLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pcnFmZC5jOjMyOlxcdHJldHVybiBrdm1fdmdpY19pbmplY3RfaXJxKGt2bSwgTlVMTCwgc3BpX2lkLCBsZXZlbCwgTlVMTCk7XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWlycWZkLmMtMzMtfVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLXYzLW5lc3RlZC5jPTM4OT12b2lkIHZnaWNfdjNfaGFuZGxlX25lc3RlZF9tYWludF9pcnEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLXYzLW5lc3RlZC5jLTM5My1cXHQvKiBUaGlzIHdpbGwgZm9yY2UgYSBzd2l0Y2ggYmFjayB0byBMMSBpZiB0aGUgbGV2ZWwgaXMgaGlnaCAqL1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy12My1uZXN0ZWQuYzozOTQ6XFx0a3ZtX3ZnaWNfaW5qZWN0X2lycSh2Y3B1LVxcdTAwM2Vrdm0sIHZjcHUsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLXYzLW5lc3RlZC5jLTM5NS1cXHRcXHRcXHQgICAgdmNwdS1cXHUwMDNla3ZtLVxcdTAwM2VhcmNoLnZnaWMubWlfaW50aWQsIHN0YXRlLCB2Y3B1KTtcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy12My1uZXN0ZWQuYz00MDA9dm9pZCB2Z2ljX3YzX25lc3RlZF91cGRhdGVfbWkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLXYzLW5lc3RlZC5jLTQwNC1cXHRsZXZlbCA9IChfX3ZjcHVfc3lzX3JlZyh2Y3B1LCBJQ0hfSENSX0VMMikgXFx1MDAyNiBJQ0hfSENSX0VMMl9FbikgXFx1MDAyNlxcdTAwMjYgdmdpY192M19nZXRfbWlzcih2Y3B1KTtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtdjMtbmVzdGVkLmM6NDA1OlxcdGt2bV92Z2ljX2luamVjdF9pcnEodmNwdS1cXHUwMDNla3ZtLCB2Y3B1LFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy12My1uZXN0ZWQuYy00MDYtXFx0XFx0XFx0ICAgIHZjcHUtXFx1MDAzZWt2bS1cXHUwMDNlYXJjaC52Z2ljLm1pX2ludGlkLCBsZXZlbCwgdmNwdSk7XFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYz00MTY9Ym9vbCB2Z2ljX3F1ZXVlX2lycV91bmxvY2soc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3QgdmdpY19pcnEgKmlycSxcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jLTUxNi0vKipcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYzo1MTc6ICoga3ZtX3ZnaWNfaW5qZWN0X2lycSAtIEluamVjdCBhbiBJUlEgZnJvbSBhIGRldmljZSB0byB0aGUgdmdpY1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jLTUxOC0gKiBAa3ZtOiAgICAgVGhlIFZNIHN0cnVjdHVyZSBwb2ludGVyXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYy01MzItICovXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmM6NTMzOmludCBrdm1fdmdpY19pbmplY3RfaXJxKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jLTUzNC1cXHRcXHRcXHR1bnNpZ25lZCBpbnQgaW50aWQsIGJvb2wgbGV2ZWwsIHZvaWQgKm93bmVyKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxMTozNTo0My40ODg3NTYyNjRaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDc3NDk3NDQyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGb2N1c2luZyBvbiB0aGUgVmlydHVhbCBHSUMqKlxuXG5Pa2F5LCBzbyBJJ20gaG9uaW5nIGluIG9uIHRoZSBLVk0gVmlydHVhbCBHSUMgaW1wbGVtZW50YXRpb24uIGBrdm1fdmdpY19pbmplY3RfaXJxYCBpcyBhIHBhcnRpY3VsYXJseSBpbnRlcmVzdGluZyBzeW1ib2wgdG8gZXhwbG9yZS4gSSdtIGFsc28gZmluZGluZyB0aGF0IGB2Z2ljX2dldF9pcnFgIGFuZCBgdmdpY19nZXRfdmNwdV9pcnFgIGFyZSB2ZXJ5IHJlbGV2YW50LiBNeSBtYWluIHF1ZXN0aW9uIG5vdyBpczogV2hhdCBhYm91dCBHSUN2NT8gRG9lcyBLVk0gaGF2ZSBzdXBwb3J0IGZvciB0aGUgbW9yZSByZWNlbnQgR0lDdjUgYXJjaGl0ZWN0dXJlPyBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQuIE15IGluc3RpbmN0IGlzIHRlbGxpbmcgbWUgdG8gbG9vayBmb3IgYEtWTV9ERVZfVFlQRV9BUk1fVkdJQ19WNWAsIHNpbmNlIHRoYXQgd291bGQgbWFrZSBzZW5zZSwgc28gSSdsbCBkaXZlIGludG8gYGFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jYCB0byBjb25maXJtLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTU2MiwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxMTozNTo0OC4yNjM3MzM3MDdaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNDA1NTQxMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJLVk1fREVWX1RZUEVfQVJNX1ZHSUNfVjVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9hcm02NC9rdm0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pbml0LmM9NzE9aW50IGt2bV92Z2ljX2NyZWF0ZShzdHJ1Y3Qga3ZtICprdm0sIHUzMiB0eXBlKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuYy0xMzUtXFx0XFx0a3ZtLVxcdTAwM2VtYXhfdmNwdXMgPSBWR0lDX1YzX01BWF9DUFVTO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pbml0LmM6MTM2OlxcdGVsc2UgaWYgKHR5cGUgPT0gS1ZNX0RFVl9UWVBFX0FSTV9WR0lDX1Y1KVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pbml0LmMtMTM3LVxcdFxcdGt2bS1cXHUwMDNlbWF4X3ZjcHVzID0gbWluKFZHSUNfVjVfTUFYX0NQVVMsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaW5pdC5jLTE5MC1cXHQgKi9cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaW5pdC5jOjE5MTpcXHRpZiAodHlwZSA9PSBLVk1fREVWX1RZUEVfQVJNX1ZHSUNfVjUpXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuYy0xOTItXFx0XFx0a3ZtX3RpbWVyX2luaXRfdm0oa3ZtKTtcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pbml0LmM9NDA4PXN0YXRpYyB2b2lkIGt2bV92Z2ljX3ZjcHVfcmVzZXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuYy00MTEtXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuYzo0MTI6XFx0aWYgKGRpc3QtXFx1MDAzZXZnaWNfbW9kZWwgPT0gS1ZNX0RFVl9UWVBFX0FSTV9WR0lDX1Y1KVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pbml0LmMtNDEzLVxcdFxcdHZnaWNfdjVfcmVzZXQodmNwdSk7XFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaW5pdC5jPTY4MD12b2lkIGt2bV92Z2ljX2ZpbmFsaXplX2lkcmVncyhzdHJ1Y3Qga3ZtICprdm0pXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaW5pdC5jLTY5Ni1cXHRcXHRicmVhaztcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaW5pdC5jOjY5NzpcXHRjYXNlIEtWTV9ERVZfVFlQRV9BUk1fVkdJQ19WNTpcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaW5pdC5jLTY5OC1cXHRcXHRhYTY0cGZyMiB8PSBTWVNfRklFTERfUFJFUF9FTlVNKElEX0FBNjRQRlIyX0VMMSwgR0NJRSwgSU1QKTtcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1rdm0tZGV2aWNlLmM9MzIyPWludCBrdm1fcmVnaXN0ZXJfdmdpY19kZXZpY2UodW5zaWduZWQgbG9uZyB0eXBlKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWt2bS1kZXZpY2UuYy0zMzgtXFx0XFx0YnJlYWs7XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWt2bS1kZXZpY2UuYzozMzk6XFx0Y2FzZSBLVk1fREVWX1RZUEVfQVJNX1ZHSUNfVjU6XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWt2bS1kZXZpY2UuYy0zNDAtXFx0XFx0cmV0ID0ga3ZtX3JlZ2lzdGVyX2RldmljZV9vcHMoXFx1MDAyNmt2bV9hcm1fdmdpY192NV9vcHMsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWt2bS1kZXZpY2UuYzozNDE6XFx0XFx0XFx0XFx0XFx0ICAgICAgS1ZNX0RFVl9UWVBFX0FSTV9WR0lDX1Y1KTtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMta3ZtLWRldmljZS5jLTM0Mi1cXHRcXHRicmVhaztcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM9ODQzPXZvaWQgdmdpY19zZXRfdm1jcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCB2Z2ljX3ZtY3IgKnZtY3IpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTg0Ny1cXHRzd2l0Y2ggKGRpc3QtXFx1MDAzZXZnaWNfbW9kZWwpIHtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jOjg0ODpcXHRjYXNlIEtWTV9ERVZfVFlQRV9BUk1fVkdJQ19WNTpcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTg0OS1cXHRcXHR2Z2ljX3Y1X3NldF92bWNyKHZjcHUsIHZtY3IpO1xcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYz04NjU9dm9pZCB2Z2ljX2dldF92bWNyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IHZnaWNfdm1jciAqdm1jcilcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtODY5LVxcdHN3aXRjaCAoZGlzdC1cXHUwMDNldmdpY19tb2RlbCkge1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM6ODcwOlxcdGNhc2UgS1ZNX0RFVl9UWVBFX0FSTV9WR0lDX1Y1OlxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtODcxLVxcdFxcdHZnaWNfdjVfZ2V0X3ZtY3IodmNwdSwgdm1jcik7XFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtdjUuYz00MD1pbnQgdmdpY192NV9wcm9iZShjb25zdCBzdHJ1Y3QgZ2ljX2t2bV9pbmZvICppbmZvKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLXY1LmMtNjctXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLXY1LmM6Njg6XFx0cmV0ID0ga3ZtX3JlZ2lzdGVyX3ZnaWNfZGV2aWNlKEtWTV9ERVZfVFlQRV9BUk1fVkdJQ19WNSk7XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLXY1LmMtNjktXFx0aWYgKHJldCkge1xcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmM9MTA4PXN0cnVjdCB2Z2ljX2lycSAqdmdpY19nZXRfdmNwdV9pcnEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgaW50aWQpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYy0xMTgtXFx0XFx0c3dpdGNoICh0eXBlKSB7XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmM6MTE5OlxcdFxcdGNhc2UgS1ZNX0RFVl9UWVBFX0FSTV9WR0lDX1Y1OlxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jLTEyMC1cXHRcXHRcXHRpbnRpZCA9IHZnaWNfdjVfZ2V0X2h3aXJxX2lkKGludGlkKTtcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jPTExNzU9dm9pZCBrdm1fdmdpY19sb2FkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jLTExODUtXFx0c3dpdGNoIChkaXN0LVxcdTAwM2V2Z2ljX21vZGVsKSB7XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmM6MTE4NjpcXHRjYXNlIEtWTV9ERVZfVFlQRV9BUk1fVkdJQ19WNTpcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYy0xMTg3LVxcdFxcdHZnaWNfdjVfbG9hZCh2Y3B1KTtcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jPTEyMDM9dm9pZCBrdm1fdmdpY19wdXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmMtMTIxMy1cXHRzd2l0Y2ggKGRpc3QtXFx1MDAzZXZnaWNfbW9kZWwpIHtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYzoxMjE0OlxcdGNhc2UgS1ZNX0RFVl9UWVBFX0FSTV9WR0lDX1Y1OlxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jLTEyMTUtXFx0XFx0dmdpY192NV9wdXQodmNwdSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDExOjM1OjQ4LjM3Nzc5Mjg0OFoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1OTAxMjQwOTAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKktWTSBHSUN2NSBTdXBwb3J0OiBBIFF1aWNrIFJldmlldyoqXG5cbk9rYXksIHNvIEdJQ3Y1ICppcyogc3VwcG9ydGVkIHdpdGhpbiBLVk0uIE15IG1lbnRhbCBjaGVja2xpc3QgdGVsbHMgbWUgdGhlIGNvcmUgbW9kaWZpY2F0aW9ucyBhcmUgY2VudGVyZWQgaW4gdGhlIEtWTSBWR0lDIGFuZCB0aGUgR0lDdjUgZHJpdmVycy4gU3BlY2lmaWNhbGx5LCBJIHNlZSBjaGFuZ2VzIHdpdGhpbiB0aGUgYGdpY3Y1X2NwdV9kaXNhYmxlX2ludGVycnVwdHNgIGZ1bmN0aW9uLCB3aGVyZSBhbiBgaXNiKClgIGluc3RydWN0aW9uIGhhcyBiZWVuIGFkZGVkLCBhbmQgdGhlIGBnaWN2NV9pcnNfY2xlYXJfYWZmaW5pdHlgIGZ1bmN0aW9uLCB3aGljaCBhcHBlYXJzIHRvIGFkZHJlc3MgZWl0aGVyIGEgbWVtb3J5IGxlYWsgb3Igc29tZSBraW5kIG9mIHN0YXRlIGNsZWFudXAgaXNzdWUuIFdpdGhpbiBLVk0gVkdJQywgdGhlcmUgYXJlIGltcG9ydGFudCBmaXhlcyBhZGRyZXNzaW5nIHRoZSBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2VzcyBidWdzIGluIGB2Z2ljX2dldF9pcnFgIGFuZCBgdmdpY19nZXRfdmNwdV9pcnFgLCBhcyB3ZWxsIGFzIGEgbWVtb3J5IGxlYWsgaWRlbnRpZmllZCBpbiBga3ZtX3ZnaWNfaHlwX2luaXRgLlxuXG5UaGVzZSBzZWVtIGxpa2Ugc3Vic3RhbnRpYWwgZnVuY3Rpb25hbCBjaGFuZ2VzLCBkZWZpbml0ZWx5IHdhcnJhbnRpbmcgc29tZSBzZXJpb3VzIGZ1enppbmcuIExvb2tpbmcgYXQgdGhlIHJlcXVpcmVkIGNvbmZpZ3VyYXRpb25zLCBJIG5lZWQgdG8gbWFrZSBzdXJlIGBDT05GSUdfS1ZNYCBhbmQgYENPTkZJR19BUk1fR0lDX1Y1YCBhcmUgZW5hYmxlZC4gQWgsIHJpZ2h0LCBgQVJNX0dJQ19WNWAgaXMgYWN0dWFsbHkgc2VsZWN0ZWQgYnkgYEFSTTY0YC4gU28gb24gQVJNNjQsIHRoYXQncyBhbHJlYWR5IHRha2VuIGNhcmUgb2YuIEJ1dCBgS1ZNYCBpcyB0aGUgY3JpdGljYWwgY29tcG9uZW50IGhlcmU7IHRoYXQncyB0aGUgb25lIEkgbmVlZCB0byBiZSBzdXJlIGlzIGVuYWJsZWQuIEkgc2hvdWxkIHByb2JhYmx5IGRvIGEgcXVpY2sgYXVkaXQgdG8gc2VlIGlmIGFueSBvdGhlciBjb25maWd1cmF0aW9ucyBtaWdodCBiZSByZWxldmFudCBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTc1MiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxMTozNTo1NC4yNzkwMzY2MzJaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwODEzMzY4MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQVJNX0dJQ19WNVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2lycWNoaXAvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2lycWNoaXAvS2NvbmZpZz00Nj1jb25maWcgQVJNX0dJQ19WM19JVFNcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9LY29uZmlnLTUzLVxcbmRyaXZlcnMvaXJxY2hpcC9LY29uZmlnOjU0OmNvbmZpZyBBUk1fR0lDX1Y1XFxuZHJpdmVycy9pcnFjaGlwL0tjb25maWctNTUtXFx0Ym9vbFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxMTozNTo1NC4zODcxNzQxMzRaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTA3NTk3OTIyMzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqS1ZNIENvbmZpZ3VyYXRpb24gQW5hbHlzaXMgZm9yIEFSTTY0IHdpdGggR0lDdjUqKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gdGhlIEtWTSBjb25maWd1cmF0aW9uIGZvciBBUk02NCwgc3BlY2lmaWNhbGx5IHJlZ2FyZGluZyB0aGUgR0lDdjUgaW1wbGVtZW50YXRpb24uIEkgc2VlIHRoYXQgYEFSTV9HSUNfVjVgIGlzIGJhc2ljYWxseSBhIGJvb2xlYW4sIG5vdCBzb21ldGhpbmcgdGhlIHVzZXIgZGlyZWN0bHkgc2VsZWN0cy4gSXQncyBlc3NlbnRpYWxseSBlbmFibGVkIGJ5IHRoZSBgQVJNNjRgIGNvbmZpZy4gU28sIHRoYXQgbWVhbnMgYEtWTWAgaXMgdGhlIHByaW1hcnksIHBpdm90YWwgY29uZmlnIGhlcmUuXG5cbk5vdywgbGV0J3MgbmFpbCBkb3duIHRoZSBrZXkgc3ltYm9scyBmb3IgYW5hbHlzaXMuIEknbSBmb2N1c2luZyBvbiB0aGUgZnVuY3Rpb25zIHRoYXQgcHJvdmlkZSB0aGUgY29yZSBLVk0vR0lDdjUgaW50ZXJhY3Rpb24gcG9pbnRzLiBJJ3ZlIGdvdCBteSBpbml0aWFsIGxpc3Q6IGBrdm1fdmdpY19pbmplY3RfaXJxYCwgYHZnaWNfZ2V0X2lycWAsIGFuZCBgdmdpY19nZXRfdmNwdV9pcnFgLiBXYWl0LCBhcmVuJ3QgdGhvc2UgdHdvLCBgdmdpY19nZXRfaXJxYCBhbmQgYHZnaWNfZ2V0X3ZjcHVfaXJxYCwgbm90IGV4cG9ydGVkIHN5bWJvbHM/IEJ1dCB0aGV5J3JlIG5vdCBzdGF0aWMsIHNvIHRoYXQncyBpbnRlcmVzdGluZy4gSSBzaG91bGQgY2hlY2sgdGhlaXIgZGVmaW5pdGlvbjsgdGhleSdyZSBpbiBgYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmNgLiBDb25maXJtZWQuIE9rYXksIGxldCdzIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGtleSBmdW5jdGlvbnMuIEFoLCBga3ZtX3ZnaWNfaHlwX2luaXRgIGlzIGNhbGxlZCBvbmNlIGR1cmluZyBpbml0aWFsaXphdGlvbi4gQW5kLCBgZ2ljdjVfY3B1X2Rpc2FibGVfaW50ZXJydXB0c2AgaXMgc3RhdGljLCBzbyBJIGNhbiBpZ25vcmUgdGhhdCBvbmUsIGFuZCBzYW1lIGZvciBgZ2ljdjVfaXJzX2NsZWFyX2FmZmluaXR5YC5cblxuTGV0J3MgY2lyY2xlIGJhY2sgdG8gdGhlIGNhbmRpZGF0ZXMuIEknbSB0aGlua2luZyBgdmdpY19nZXRfaXJxYCBzZWVtcyBsaWtlIGEgZ29vZCBmb2N1cyBwb2ludCwgaXQncyBjYWxsZWQgZnJvbSBhIGxvdCBvZiBwbGFjZXMuIGBrdm1fdmdpY19pbmplY3RfaXJxYCBpcyBhbHNvIHN0cm9uZy4gWWVhaCwgdGhhdCdzIHRoZSBjb3JlLiBTbyBJJ2xsIGRlZmluaXRlbHkgZ28gd2l0aCBga3ZtX3ZnaWNfaW5qZWN0X2lycWAsIGB2Z2ljX2dldF9pcnFgLCBhbmQgYHZnaWNfZ2V0X3ZjcHVfaXJxYC4gVGhvc2UgYXJlIHRoZSBjb3JlIHN5bWJvbHMuXG5cbkp1c3QgdG8gYmUgc3VyZSwgbGV0J3MgZG91YmxlLWNoZWNrIHRoZSBkZWZpbml0aW9ucy4gSSdsbCBjb25maXJtIHRoYXQgYHZnaWNfZ2V0X2lycWAgaXMgYXMgSSBleHBlY3Q6XG5cbmBgYGNcbnN0cnVjdCB2Z2ljX2lycSAqdmdpY19nZXRfaXJxKHN0cnVjdCBrdm0gKmt2bSwgdTMyIGludGlkKVxue1xuLi4uXG59XG5gYGBcblxuYW5kIGB2Z2ljX2dldF92Y3B1X2lycWA6XG5cbmBgYGNcbnN0cnVjdCB2Z2ljX2lycSAqdmdpY19nZXRfdmNwdV9pcnEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgaW50aWQpXG57XG4uLi5cbn1cbmBgYFxuXG5Pa2F5LCBwZXJmZWN0LiBOb3csIHdoYXQgYWJvdXQgdGhvc2Ugc3RhdGljIGZ1bmN0aW9ucz8gTGV0J3MgY29uZmlybSBhZ2FpbiB0aGF0IGBnaWN2NV9pcnNfY2xlYXJfYWZmaW5pdHlgIGlzIHN0YXRpYzsgb2theSwgSSBjYW4gaWdub3JlIHRoYXQuIEFuZCwgd2hhdCBhYm91dCBgZ2ljdjVfaXJzX3JlbW92ZWA/IEhtbSwgaXQncyBgdm9pZCBfX2luaXQgZ2ljdjVfaXJzX3JlbW92ZSh2b2lkKWAuIFdhaXQsIGBfX2luaXRgPyBUaGF0IG1lYW5zIGl0J3Mgb25seSBmb3IgZXJyb3IgcGF0aHMgZHVyaW5nIGluaXQsIHNvIGl0J3Mgbm90IGEgY29yZSBzeW1ib2wgZm9yIHJlZ3VsYXIgb3BlcmF0aW9uLlxuXG5gYGBjXG52b2lkIF9faW5pdCBnaWN2NV9pcnNfcmVtb3ZlKHZvaWQpXG57XG4uLi5cbn1cbmBgYFxuXG5BbmQgZmluYWxseSwgYGdpY3Y1X2NwdV9kaXNhYmxlX2ludGVycnVwdHNgPyBUaGF0IGlzIGFsc28gc3RhdGljLCBzbyBub3RoaW5nIGhlcmUuXG5cblNvLCB5ZWFoLCBJJ20gY29uZmlkZW50IHRoYXQgYGt2bV92Z2ljX2luamVjdF9pcnFgLCBgdmdpY19nZXRfaXJxYCwgYW5kIGB2Z2ljX2dldF92Y3B1X2lycWAgYXJlIHRoZSBjb3JyZWN0IGZvY3VzIHN5bWJvbHMuXG5cbk5vdywganVzdCB0byBjb25maXJtLCBpcyBgS1ZNYCB0aGUgb25seSBjb25maWcgSSBuZWVkPyBZZXAsIGBLVk1gIGlzIHRoZSBwcmltYXJ5IG9uZSwgYWxsIHJvYWRzIGxlYWQgdG8gYEtWTWAgZm9yIHRoZSBLVk0gb24gQVJNNjQuIFdhaXQsIGlzIHRoZXJlIGEgYEtWTV9BUk1fVkdJQ19WNWAgY29uZmlnPyBIbW0uLi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzI0MDQsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTE6MzY6MDUuMTQ2OTY5MTI1WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5ODA0MDE0MywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiS1ZNX0FSTV9WR0lDX1Y1XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvYXJtNjQva3ZtL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDExOjM2OjA1LjI0NTAxOTc3OFoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzMzMzcxMTQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipLZXJuZWwgQ29uZmlndXJhdGlvbiBRdWVyeSoqXG5cblJpZ2h0LCB0aGF0J3MgYSBuZWdhdGl2ZSBvbiB3aGF0ZXZlciBpbml0aWFsIHF1ZXN0aW9uIEkgd2FzIGNvbnNpZGVyaW5nLiBMZXQncyBkaWcgZGVlcGVyLiBUaGUgZmlyc3QgcGxhY2UgdG8gY2hlY2ssIG5hdHVyYWxseSwgaXMgYEtjb25maWdgLiBTcGVjaWZpY2FsbHksIGZvciB0aGUgQVJNNjQgYXJjaGl0ZWN0dXJlLCBJIG5lZWQgdG8gbG9vayBhdCBgYXJjaC9hcm02NC9rdm0vS2NvbmZpZ2AuIEknbSBnb2luZyB0byBoYXZlIHRvIGZpbmQgd2hhdCBkZXBlbmRlbmNpZXMgYXJlIHRoZXJlLCB3aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgYXZhaWxhYmxlLCBhbmQgZ2V0IGFuIGlkZWEgb2Ygd2hlcmUgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIGVuYWJsZWQgb3IgZGlzYWJsZWQgYXQgYnVpbGQgdGltZS4gSXQncyB0aGUgc3RhbmRhcmQgcGxhY2UgdG8gc3RhcnQgZGVidWdnaW5nIGEga2VybmVsIGNvbmZpZ3VyYXRpb24gaXNzdWUsIGFmdGVyIGEgcXVpY2sgXCJub1wiIHRvIHRoZSBpbml0aWFsIHRob3VnaHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0MDE4LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTE6MzY6MDguNTc4MzkzMTgzWiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MzY2NjEyMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgS1ZNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvYXJtNjQva3ZtL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9hcm02NC9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxcbmFyY2gvYXJtNjQva3ZtL0tjb25maWctMTktXFxuYXJjaC9hcm02NC9rdm0vS2NvbmZpZzoyMDptZW51Y29uZmlnIEtWTVxcbmFyY2gvYXJtNjQva3ZtL0tjb25maWctMjEtXFx0Ym9vbCBcXFwiS2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxMTozNjowOC42NzIwNjU1ODZaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTg5MjYwNjI3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBLVk0gQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgS1ZNIGNvbmZpZ3VyYXRpb24gaW4gZnJvbnQgb2YgbWUuIExldCdzIGJyZWFrIGl0IGRvd24gYW5kIHNlZSB3aGF0IHdlJ3JlIGRlYWxpbmcgd2l0aC4gRmlyc3Qgb2ZmLCBgV29ydGhGdXp6aW5nYCBpcyBzZXQgdG8gYHRydWVgLiBHb29kLCB3ZSB3YW50IHRvIHN1YmplY3QgaXQgdG8gdGhvcm91Z2ggdGVzdGluZy4gVGhlIGBGb2N1c1N5bWJvbHNgIGFyZSBsaXN0ZWQgYXMgYHZnaWNfZ2V0X2lycWAsIGB2Z2ljX2dldF92Y3B1X2lycWAsIGFuZCBga3ZtX3ZnaWNfaW5qZWN0X2lycWAuIFRob3NlIGFyZSBhbGwgdmVyeSByZWxldmFudCB0byBpbnRlcnJ1cHQgaGFuZGxpbmcgd2l0aGluIHRoZSBLVk0ncyB2aXJ0dWFsIEdJQyAoVkdJQykgaW1wbGVtZW50YXRpb24g4oCTIGNsYXNzaWMgcG90ZW50aWFsIHRhcmdldHMuIFRoZSBgRW5hYmxlQ29uZmlnc2AgaW5jbHVkZSBgS1ZNYCwgd2hpY2ggbWFrZXMgc2Vuc2UsIGFzIHRoZSBwcm9ibGVtIHNwYWNlIGlzIGxpbWl0ZWQgdG8gS1ZNIGZ1bmN0aW9uYWxpdGllcy5cblxuTXkgcmVhc29uaW5nPyBUaGUgZGVzY3JpcHRpb24gbWVudGlvbnMgY3JpdGljYWwgb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3NlcyB3aXRoaW4gS1ZNJ3MgVkdJQyBJUlEgaGFuZGxpbmcuIFRob3NlIGFyZSBuYXN0eSB2dWxuZXJhYmlsaXRpZXMgdGhhdCB3ZSBuZWVkIHRvIGFkZHJlc3MgaW1tZWRpYXRlbHkuIFNwZWNpZmljYWxseSwgdGhlIGlkZW50aWZpZWQgZnVuY3Rpb25zIChgdmdpY19nZXRfaXJxYCwgYHZnaWNfZ2V0X3ZjcHVfaXJxYCkgYXJlIHRhcmdldHMuIEEgbWVtb3J5IGxlYWsgaW4gVkdJQyBpbml0aWFsaXphdGlvbiBpcyBhbHNvIHByb2JsZW1hdGljLCBpbmRpY2F0aW5nIGEgcmVzb3VyY2UgbWFuYWdlbWVudCBmbGF3LiBBZGRpdGlvbmFsbHksIHdlJ3JlIHRvbGQgYWJvdXQgYSBtaXNzaW5nIG1lbW9yeSBiYXJyaWVyIGluIHRoZSBHSUN2NSBkcml2ZXIuIEFsbCB0aGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGFmZmVjdGluZyBjb3JlIHZpcnR1YWxpemF0aW9uIGFuZCBpbnRlcnJ1cHQgY29udHJvbGxlciBjb2RlLiBUaGV5IGFsbCBzcGVhayB0byBkZWVwLXNlYXRlZCBpc3N1ZXMgdGhhdCBhcmUgbGlrZWx5IHJlYWNoYWJsZSBhbmQgaGF2ZSB0aGUgcG90ZW50aWFsIGZvciBleHBsb2l0YXRpb24uIFRoaXMgY29uZmlndXJhdGlvbiBpcyBjbGVhcmx5IGFpbWVkIGF0IGFkZHJlc3Npbmcgc29tZSBzaWduaWZpY2FudCBpc3N1ZXMuIEkgbmVlZCB0byBkaXZlIGRlZXBlciBpbnRvIHRoZXNlIHNwZWNpZmljIGZ1bmN0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQzMjIsIk91dHB1dFRva2VucyI6MTQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQ2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDExOjM2OjE0LjU2NDY3NDY3OVoiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNTkwOTA3MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidmdpY19nZXRfaXJxXCIsXG4gICAgXCJ2Z2ljX2dldF92Y3B1X2lycVwiLFxuICAgIFwia3ZtX3ZnaWNfaW5qZWN0X2lycVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGNyaXRpY2FsIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzZXMgaW4gS1ZNIFZHSUMgSVJRIGhhbmRsaW5nIChgdmdpY19nZXRfaXJxYCwgYHZnaWNfZ2V0X3ZjcHVfaXJxYCksIGEgbWVtb3J5IGxlYWsgaW4gVkdJQyBpbml0aWFsaXphdGlvbiwgYW5kIGFkZHMgYSBtaXNzaW5nIG1lbW9yeSBiYXJyaWVyIGluIHRoZSBHSUN2NSBkcml2ZXIuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gcmVhY2hhYmxlIGNvcmUgdmlydHVhbGl6YXRpb24gYW5kIGludGVycnVwdCBjb250cm9sbGVyIGNvZGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidmdpY19nZXRfaXJxXCIsXG4gICAgXCJ2Z2ljX2dldF92Y3B1X2lycVwiLFxuICAgIFwia3ZtX3ZnaWNfaW5qZWN0X2lycVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGNyaXRpY2FsIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzZXMgaW4gS1ZNIFZHSUMgSVJRIGhhbmRsaW5nIChgdmdpY19nZXRfaXJxYCwgYHZnaWNfZ2V0X3ZjcHVfaXJxYCksIGEgbWVtb3J5IGxlYWsgaW4gVkdJQyBpbml0aWFsaXphdGlvbiwgYW5kIGFkZHMgYSBtaXNzaW5nIG1lbW9yeSBiYXJyaWVyIGluIHRoZSBHSUN2NSBkcml2ZXIuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gcmVhY2hhYmxlIGNvcmUgdmlydHVhbGl6YXRpb24gYW5kIGludGVycnVwdCBjb250cm9sbGVyIGNvZGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDExOjM2OjE0LjY5MDU5MTQ5WiIsIlNlcSI6MzMsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTA0NzA2OTM1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDExOjM2OjE0LjY5MTA2ODkwMVoiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxMTA0NjU4NjMyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgbWVtb3J5IGxlYWsgaW4gdmdpYy1pbml0LmMsIGFuIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzIGFuZCBpbmNvcnJlY3QgaW5kZXggY2FsY3VsYXRpb24gaW4gdmdpYy5jLCBhIHVzZS1hZnRlci1mcmVlL2RhbmdsaW5nIHBvaW50ZXIgaXNzdWUgaW4gaXJxLWdpYy12NS1pcnMuYyBieSBjbGVhcmluZyBwZXItY3B1IHBvaW50ZXJzIGJlZm9yZSBmcmVlaW5nLCBhbmQgYWRkcyBhIG1pc3NpbmcgaW5zdHJ1Y3Rpb24gc3luY2hyb25pemF0aW9uIGJhcnJpZXIgKGlzYikgaW4gaXJxLWdpYy12NS5jLiBOb25lIG9mIHRoZXNlIGNoYW5nZXMgaW52b2x2ZSB1bmluaXRpYWxpemVkIG1lbW9yeSwgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIG9yIGluZm8tbGVha3MgdG8gdXNlciBzcGFjZS4gVGhlIGJ1Z3MgZml4ZWQgKE9PQiwgVUFGLCBtZW1vcnkgbGVha3MpIGFyZSB3ZWxsIHdpdGhpbiB0aGUgc2NvcGUgb2YgS0FTQU4gYW5kIEtNRU1MRUFLLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNjJjYjVkY2NkNWZjNmE1NmYyMjgxZTAwZDkzYzNkNjdkNjY2NzEzNlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDEwIDExOjM0OjM2IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuYyBiL2FyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pbml0LmNcbmluZGV4IDkwNzA1Nzg4MWIyNmEuLjY1ZTIwM2Q2YTJjZjQgMTAwNjQ0XG4tLS0gYS9hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaW5pdC5jXG4rKysgYi9hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaW5pdC5jXG5AQCAtNzg3LDcgKzc4Nyw4IEBAIGludCBrdm1fdmdpY19oeXBfaW5pdCh2b2lkKVxuIFxuIFx0aWYgKGhhc19tYXNrIFx1MDAyNlx1MDAyNiAhZ2ljX2t2bV9pbmZvLVx1MDAzZW1haW50X2lycSkge1xuIFx0XHRrdm1fZXJyKFwiTm8gdmdpYyBtYWludGVuYW5jZSBpcnFcXG5cIik7XG4tXHRcdHJldHVybiAtRU5YSU87XG4rXHRcdHJldCA9IC1FTlhJTztcbitcdFx0Z290byBvdXRfZnJlZTtcbiBcdH1cbiBcbiBcdC8qXG5AQCAtODIwLDYgKzgyMSw3IEBAIGludCBrdm1fdmdpY19oeXBfaW5pdCh2b2lkKVxuIFxuIFx0a3ZtX3ZnaWNfZ2xvYmFsX3N0YXRlLm1haW50X2lycSA9IGdpY19rdm1faW5mby1cdTAwM2VtYWludF9pcnE7XG4gXG4rb3V0X2ZyZWU6XG4gXHRrZnJlZShnaWNfa3ZtX2luZm8pO1xuIFx0Z2ljX2t2bV9pbmZvID0gTlVMTDtcbiBcbmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuYyBiL2FyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jXG5pbmRleCA3NGJhY2UxMGEyMmVkLi5iMjUzMDNkOTkxOWZkIDEwMDY0NFxuLS0tIGEvYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmNcbisrKyBiL2FyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5jXG5AQCAtOTMsOCArOTMsOSBAQCBzdHJ1Y3QgdmdpY19pcnEgKnZnaWNfZ2V0X2lycShzdHJ1Y3Qga3ZtICprdm0sIHUzMiBpbnRpZClcbiBcdC8qIFNQSXMgKi9cbiBcdGlmIChpbnRpZCBcdTAwM2U9IFZHSUNfTlJfUFJJVkFURV9JUlFTIFx1MDAyNlx1MDAyNlxuIFx0ICAgIGludGlkIFx1MDAzYyAoa3ZtLVx1MDAzZWFyY2gudmdpYy5ucl9zcGlzICsgVkdJQ19OUl9QUklWQVRFX0lSUVMpKSB7XG4tXHRcdGludGlkID0gYXJyYXlfaW5kZXhfbm9zcGVjKGludGlkLCBrdm0tXHUwMDNlYXJjaC52Z2ljLm5yX3NwaXMgKyBWR0lDX05SX1BSSVZBVEVfSVJRUyk7XG4tXHRcdHJldHVybiBcdTAwMjZrdm0tXHUwMDNlYXJjaC52Z2ljLnNwaXNbaW50aWQgLSBWR0lDX05SX1BSSVZBVEVfSVJRU107XG4rXHRcdGludGlkIC09IFZHSUNfTlJfUFJJVkFURV9JUlFTO1xuK1x0XHRpbnRpZCA9IGFycmF5X2luZGV4X25vc3BlYyhpbnRpZCwga3ZtLVx1MDAzZWFyY2gudmdpYy5ucl9zcGlzKTtcbitcdFx0cmV0dXJuIFx1MDAyNmt2bS1cdTAwM2VhcmNoLnZnaWMuc3Bpc1tpbnRpZF07XG4gXHR9XG4gXG4gXHQvKiBMUElzICovXG5AQCAtMTE3LDYgKzExOCw4IEBAIHN0cnVjdCB2Z2ljX2lycSAqdmdpY19nZXRfdmNwdV9pcnEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgaW50aWQpXG4gXHRcdHN3aXRjaCAodHlwZSkge1xuIFx0XHRjYXNlIEtWTV9ERVZfVFlQRV9BUk1fVkdJQ19WNTpcbiBcdFx0XHRpbnRpZCA9IHZnaWNfdjVfZ2V0X2h3aXJxX2lkKGludGlkKTtcbitcdFx0XHRpZiAoaW50aWQgXHUwMDNlPSBWR0lDX1Y1X05SX1BSSVZBVEVfSVJRUylcbitcdFx0XHRcdHJldHVybiBOVUxMO1xuIFx0XHRcdGludGlkID0gYXJyYXlfaW5kZXhfbm9zcGVjKGludGlkLCBWR0lDX1Y1X05SX1BSSVZBVEVfSVJRUyk7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdGRlZmF1bHQ6XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUtaXJzLmMgYi9kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuY1xuaW5kZXggZjNmY2UwYjFlMjVkOS4uNjc5NDBlYTllMzliNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LWlycy5jXG4rKysgYi9kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuY1xuQEAgLTY1MSw2ICs2NTEsMTkgQEAgc3RhdGljIGludCBfX2luaXQgZ2ljdjVfaXJzX29mX2luaXRfYWZmaW5pdHkoc3RydWN0IGRldmljZV9ub2RlICpub2RlLFxuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG4rc3RhdGljIHZvaWQgX19pbml0IGdpY3Y1X2lyc19jbGVhcl9hZmZpbml0eShzdHJ1Y3QgZ2ljdjVfaXJzX2NoaXBfZGF0YSAqaXJzX2RhdGEpXG4re1xuK1x0aW50IGNwdTtcbitcbitcdGZvcl9lYWNoX3Bvc3NpYmxlX2NwdShjcHUpIHtcbitcdFx0aWYgKHBlcl9jcHUocGVyX2NwdV9pcnNfZGF0YSwgY3B1KSA9PSBpcnNfZGF0YSkge1xuK1x0XHRcdHBlcl9jcHUoY3B1X2lhZmZpZCwgY3B1KS5pYWZmaWQgPSAwO1xuK1x0XHRcdHBlcl9jcHUoY3B1X2lhZmZpZCwgY3B1KS52YWxpZCA9IGZhbHNlO1xuK1x0XHRcdHBlcl9jcHUocGVyX2NwdV9pcnNfZGF0YSwgY3B1KSA9IE5VTEw7XG4rXHRcdH1cbitcdH1cbit9XG4rXG4gc3RhdGljIHZvaWQgaXJzX3NldHVwX3ByaV9iaXRzKHUzMiBpZHIxKVxuIHtcbiBcdHN3aXRjaCAoRklFTERfR0VUKEdJQ1Y1X0lSU19JRFIxX1BSSU9SSVRZX0JJVFMsIGlkcjEpKSB7XG5AQCAtNzczLDYgKzc4Niw3IEBAIHN0YXRpYyBpbnQgX19pbml0IGdpY3Y1X2lyc19vZl9pbml0KHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSlcbiBcdHJldHVybiByZXQ7XG4gXG4gb3V0X2lvbWVtOlxuK1x0Z2ljdjVfaXJzX2NsZWFyX2FmZmluaXR5KGlyc19kYXRhKTtcbiBcdGlvdW5tYXAoaXJzX2Jhc2UpO1xuIG91dF9lcnI6XG4gXHRrZnJlZShpcnNfZGF0YSk7XG5AQCAtNzg3LDYgKzgwMSw3IEBAIHZvaWQgX19pbml0IGdpY3Y1X2lyc19yZW1vdmUodm9pZClcbiBcdGdpY3Y1X2RlaW5pdF9scGlzKCk7XG4gXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoaXJzX2RhdGEsIHRtcF9kYXRhLCBcdTAwMjZpcnNfbm9kZXMsIGVudHJ5KSB7XG4rXHRcdGdpY3Y1X2lyc19jbGVhcl9hZmZpbml0eShpcnNfZGF0YSk7XG4gXHRcdGlvdW5tYXAoaXJzX2RhdGEtXHUwMDNlaXJzX2Jhc2UpO1xuIFx0XHRsaXN0X2RlbChcdTAwMjZpcnNfZGF0YS1cdTAwM2VlbnRyeSk7XG4gXHRcdGtmcmVlKGlyc19kYXRhKTtcbkBAIC05NTEsNiArOTY2LDcgQEAgc3RhdGljIGludCBfX2luaXQgZ2ljX2FjcGlfcGFyc2VfbWFkdF9pcnModW5pb24gYWNwaV9zdWJ0YWJsZV9oZWFkZXJzICpoZWFkZXIsXG4gXHRyZXR1cm4gMDtcbiBcbiBvdXRfbWFwOlxuK1x0Z2ljdjVfaXJzX2NsZWFyX2FmZmluaXR5KGlyc19kYXRhKTtcbiBcdGlvdW5tYXAoaXJzX2Jhc2UpO1xuIG91dF9yZWxlYXNlOlxuIFx0cmVsZWFzZV9tZW1fcmVnaW9uKHItXHUwMDNlc3RhcnQsIHJlc291cmNlX3NpemUocikpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXY1LmMgYi9kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS5jXG5pbmRleCBlOWQxNzk1MjM1YTY2Li42YTk5YzU0MWI1NTliIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUuY1xuKysrIGIvZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjUuY1xuQEAgLTk4Myw2ICs5ODMsNyBAQCBzdGF0aWMgdm9pZCBnaWN2NV9jcHVfZGlzYWJsZV9pbnRlcnJ1cHRzKHZvaWQpXG4gXG4gXHRjcjAgPSBGSUVMRF9QUkVQKElDQ19DUjBfRUwxX0VOLCAwKTtcbiBcdHdyaXRlX3N5c3JlZ19zKGNyMCwgU1lTX0lDQ19DUjBfRUwxKTtcbitcdGlzYigpO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBnaWN2NV9jcHVfZW5hYmxlX2ludGVycnVwdHModm9pZClcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDExOjM2OjE0LjY5MTA2OTc4MVoiLCJTZXEiOjM1LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTA0NjU1MTM5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipQYXRjaCBBbmFseXNpcyBhbmQgS01TQU4gQXNzZXNzbWVudCoqXG5cbk9rYXksIGxldCBtZSBicmVhayB0aGlzIGRvd24uIEZyb20gYSBxdWljayBzY2FuLCBpdCBsb29rcyBsaWtlIHRoaXMgcGF0Y2ggaXMgYWxsIGFib3V0IHRpZ2h0ZW5pbmcgdXAgc29tZSBsb29zZSBlbmRzIGluIHRoZSBLVk0gYW5kIEdJQ3Y1IGludGVyYWN0aW9uLCBtb3N0bHkgYXJvdW5kIG1lbW9yeSBzYWZldHkgYW5kIGNvcnJlY3QgYmVoYXZpb3IuXG5cbkZpcnN0LCBpbiBgYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuY2AsIHRoZSBjaGFuZ2UgaXMgcmVwbGFjaW5nIGEgc2ltcGxlIGByZXR1cm4gLUVOWElPO2Agd2l0aCBhIHByb3BlciBgZ290byBvdXRfZnJlZTtgIHdoaWNoIGluY2x1ZGVzIGEgYGtmcmVlYCBvZiBgZ2ljX2t2bV9pbmZvYC4gVGhpcyBpcyBhIHN0cmFpZ2h0Zm9yd2FyZCBtZW1vcnkgbGVhayBmaXguIE5vdGhpbmcgY29tcGxleCBvciBjb25jZXJuaW5nIGZyb20gYSBLTVNBTiBwZXJzcGVjdGl2ZSwgYXMgaXQgc2ltcGx5IGFkZHMgYSBuZWNlc3NhcnkgY2xlYW51cCBwYXRoLlxuXG5OZXh0LCBpbiBgYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmNgLCB3ZSdyZSBhZGRyZXNzaW5nIGFycmF5IGFjY2VzcyBpc3N1ZXMgaW4gYm90aCBgdmdpY19nZXRfaXJxYCBhbmQgYHZnaWNfZ2V0X3ZjcHVfaXJxYC4gVGhlIHVzZSBvZiBgYXJyYXlfaW5kZXhfbm9zcGVjYCBpcyBiZWluZyByZXZpc2VkIHRvIGVuc3VyZSB0aGF0IHRoZSBpbmRleCBgaW50aWRgIHN0YXlzIHdpdGhpbiB0aGUgdmFsaWQgYm91bmRzLiBUaGlzIHByZXZlbnRzIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIHJlYWRzIG9yIHdyaXRlcywgd2hpY2ggaXMgYSBnb29kIHNhZmV0eSBtZWFzdXJlLiBUaGVyZSdzIGFsc28gYSBkaXJlY3QgYm91bmRzIGNoZWNrIG5vdyBhZGRlZC5cblxuVGhlbiwgbW92aW5nIHRvIGBkcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS1pcnMuY2AsIGBnaWN2NV9pcnNfY2xlYXJfYWZmaW5pdHlgIGlzIGludHJvZHVjZWQuIFRoaXMgc2VlbXMgdG8gYmUgYSBjcnVjaWFsIGFkZGl0aW9uIGZvciBjbGVhcmluZyBwZXItQ1BVIHN0YXRlIGFzc29jaWF0ZWQgd2l0aCBgaXJzX2RhdGFgICpiZWZvcmUqIGZyZWVpbmcgdGhlIG1lbW9yeS4gVGhpcyBpcyBhIHZlcnkgY2xlYXIgVUFGICh1c2UtYWZ0ZXItZnJlZSkgYW5kIGRhbmdsaW5nIHBvaW50ZXIgaXNzdWUgZml4LiBFbGltaW5hdGluZyBhIHJhY2UgY29uZGl0aW9uIGhlcmUgd2lsbCBkbyB3b25kZXJzIGZvciBzdGFiaWxpdHkuXG5cbkZpbmFsbHksIGluIGBkcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12NS5jYCwgd2UncmUgYWRkaW5nIGFuIGBpc2IoKWAgaW5zdHJ1Y3Rpb24gYWZ0ZXIgd3JpdGluZyB0byBhIHN5c3RlbSByZWdpc3Rlci4gVGhpcyBpcyBhbGwgYWJvdXQgZW5zdXJpbmcgdGhlIGNvcnJlY3QgbWVtb3J5IGJhcnJpZXIgZm9yIGluc3RydWN0aW9uIHN5bmNocm9uaXphdGlvbi4gVGhlIGtlcm5lbCBpcyB0YWtpbmcgYSBjb25zZXJ2YXRpdmUgYXBwcm9hY2ggaGVyZSB0byBwcmV2ZW50IGFueSBwb3RlbnRpYWwgbWlzc2VkIHVwZGF0ZXMgb3IgZGF0YSBjb3JydXB0aW9uLlxuXG5Mb29raW5nIGF0IHRoZSBvdmVyYWxsIHBpY3R1cmUsIG5vbmUgb2YgdGhlc2UgY2hhbmdlcyBpbnRyb2R1Y2UgYW55IG5ldyB1bmluaXRpYWxpemVkIG1lbW9yeSB2dWxuZXJhYmlsaXRpZXMsIGluZm8tbGVha3MsIG9yIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLiBXZSdyZSBwcmltYXJpbHkgZml4aW5nIG1lbW9yeSBsZWFrcywgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlIGNvbmRpdGlvbnMsIGFuZCBtaXNzaW5nIG1lbW9yeSBiYXJyaWVycy4gQWxsIG9mIHRoZXNlIGJ1Z3Mgd291bGQgYmUgY2F1Z2h0IGJ5IGV4aXN0aW5nIHRvb2xzIGxpa2UgS0FTQU4gb3IgS01FTUxFQUssIG9yIGFyZSBqdXN0IHN0cmFpZ2h0IGxvZ2ljIGJ1Z3MuIFNvLCBJIHNlZSBubyByZWFzb24gdG8gYmVsaWV2ZSB0aGF0IEtNU0FOIHdvdWxkIGFkZCB2YWx1ZSBoZXJlOyBpbiBmYWN0LCB0aGVyZSBpcyBub3RoaW5nIGluIHRoaXMgcGF0Y2ggdGhhdCB3b3VsZCBjaGFuZ2UgdGhlIEtNU0FOIHN0YXR1cyBvZiBhbnl0aGluZy4gV2UgZG9uJ3QgbmVlZCB0byBlbmFibGUgaXQgZm9yIHRoaXMgcGF0Y2guXG5cbkkgd2lsbCBkb3VibGUgY2hlY2sgbXkgYW5hbHlzaXMgd2l0aCBhIHF1aWNrIHJldmlldy5cbi0gICBgdmdpY19pbml0LmNgOiBUaGUgbWVtb3J5IGxlYWsgaXMgZml4ZWQgYnkgYWRkaW5nIGBrZnJlZShnaWNfa3ZtX2luZm8pO2AgdG8gdGhlIGVycm9yIHBhdGguXG4tICAgYHZnaWMuY2A6IFRoZSBjaGFuZ2UgaGFuZGxlcyBhbiBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2VzcyBieSBjb3JyZWN0aW5nIHRoZSBpbmRleCBjYWxjdWxhdGlvbiBpbiB0aGUgY29kZS5cbi0gICBgaXJxLWdpYy12NS1pcnMuY2A6IFRoZSBVQUYgaXMgYXZvaWRlZCBieSBhZGRpbmcgYGdpY3Y1X2lyc19jbGVhcl9hZmZpbml0eWAuXG4tICAgYGlycS1naWMtdjUuY2A6IFRoZSBpbnN0cnVjdGlvbiBzeW5jaHJvbml6YXRpb24gYmFycmllciBpcyBhZGRyZXNzZWQgYnkgdGhlIHVzZSBvZiBgaXNiKClgLlxuXG5ZZXAsIGxvb2tzIGdvb2QuIE5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIG9yIEtNU0FOIG5lZWRzIHRoYXQgSSBjYW4gaWRlbnRpZnkgaGVyZS4gVGhpcyBpcyBhIHNvbGlkIHNldCBvZiBmaXhlcyB0aGF0IGltcHJvdmVzIHRoZSByb2J1c3RuZXNzIG9mIHRoZSBzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1NTUsIk91dHB1dFRva2VucyI6MTc1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTY0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTE6MzY6MjUuNzM3NjI1NjRaIiwiU2VxIjozNiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzQ1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHJlc3NlcyBhIG1lbW9yeSBsZWFrIGluIHZnaWMtaW5pdC5jLCBhbiBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2VzcyBhbmQgaW5jb3JyZWN0IGluZGV4IGNhbGN1bGF0aW9uIGluIHZnaWMuYywgYSB1c2UtYWZ0ZXItZnJlZS9kYW5nbGluZyBwb2ludGVyIGlzc3VlIGluIGlycS1naWMtdjUtaXJzLmMgYnkgY2xlYXJpbmcgcGVyLWNwdSBwb2ludGVycyBiZWZvcmUgZnJlZWluZywgYW5kIGFkZHMgYSBtaXNzaW5nIGluc3RydWN0aW9uIHN5bmNocm9uaXphdGlvbiBiYXJyaWVyIChpc2IpIGluIGlycS1naWMtdjUuYy4gTm9uZSBvZiB0aGVzZSBjaGFuZ2VzIGludm9sdmUgdW5pbml0aWFsaXplZCBtZW1vcnksIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLCBvciBpbmZvLWxlYWtzIHRvIHVzZXIgc3BhY2UuIFRoZSBidWdzIGZpeGVkIChPT0IsIFVBRiwgbWVtb3J5IGxlYWtzKSBhcmUgd2VsbCB3aXRoaW4gdGhlIHNjb3BlIG9mIEtBU0FOIGFuZCBLTUVNTEVBSy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHJlc3NlcyBhIG1lbW9yeSBsZWFrIGluIHZnaWMtaW5pdC5jLCBhbiBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2VzcyBhbmQgaW5jb3JyZWN0IGluZGV4IGNhbGN1bGF0aW9uIGluIHZnaWMuYywgYSB1c2UtYWZ0ZXItZnJlZS9kYW5nbGluZyBwb2ludGVyIGlzc3VlIGluIGlycS1naWMtdjUtaXJzLmMgYnkgY2xlYXJpbmcgcGVyLWNwdSBwb2ludGVycyBiZWZvcmUgZnJlZWluZywgYW5kIGFkZHMgYSBtaXNzaW5nIGluc3RydWN0aW9uIHN5bmNocm9uaXphdGlvbiBiYXJyaWVyIChpc2IpIGluIGlycS1naWMtdjUuYy4gTm9uZSBvZiB0aGVzZSBjaGFuZ2VzIGludm9sdmUgdW5pbml0aWFsaXplZCBtZW1vcnksIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLCBvciBpbmZvLWxlYWtzIHRvIHVzZXIgc3BhY2UuIFRoZSBidWdzIGZpeGVkIChPT0IsIFVBRiwgbWVtb3J5IGxlYWtzKSBhcmUgd2VsbCB3aXRoaW4gdGhlIHNjb3BlIG9mIEtBU0FOIGFuZCBLTUVNTEVBSy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow7tqm5[1] Phase: Succeeded StartedAt: 2026-08-10 11:36:36 +0000 UTC FinishedAt: 2026-08-10 11:36:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7tqm5[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-10 11:36:36 +0000 UTC FinishedAt: 2026-08-10 11:36:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7tqm5[2] Phase: Succeeded StartedAt: 2026-08-10 11:36:36 +0000 UTC FinishedAt: 2026-08-10 12:23:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7tqm5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5ec42d57655c690234c14aece6dd3f209778c1d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vgic_get_irq","vgic_get_vcpu_irq","kvm_vgic_inject_irq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5ec42d57655c690234c14aece6dd3f209778c1d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9b62e092-d765-42e6-bb6a-f55426aac042","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-10 11:36:36 +0000 UTC FinishedAt: 2026-08-10 12:23:15 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"5ec42d57655c690234c14aece6dd3f209778c1d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vgic_get_irq","vgic_get_vcpu_irq","kvm_vgic_inject_irq"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"5ec42d57655c690234c14aece6dd3f209778c1d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9b62e092-d765-42e6-bb6a-f55426aac042","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow7tqm5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5ec42d57655c690234c14aece6dd3f209778c1d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vgic_get_irq","vgic_get_vcpu_irq","kvm_vgic_inject_irq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5ec42d57655c690234c14aece6dd3f209778c1d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9b62e092-d765-42e6-bb6a-f55426aac042","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-10 11:36:36 +0000 UTC FinishedAt: 2026-08-10 11:36:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7tqm5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5ec42d57655c690234c14aece6dd3f209778c1d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vgic_get_irq","vgic_get_vcpu_irq","kvm_vgic_inject_irq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5ec42d57655c690234c14aece6dd3f209778c1d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9b62e092-d765-42e6-bb6a-f55426aac042","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-10 11:36:36 +0000 UTC FinishedAt: 2026-08-10 11:36:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"5ec42d57655c690234c14aece6dd3f209778c1d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},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-workflow7tqm5/series-workflow7tqm5-convert-artifact-3844256783/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7tqm5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5ec42d57655c690234c14aece6dd3f209778c1d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vgic_get_irq","vgic_get_vcpu_irq","kvm_vgic_inject_irq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5ec42d57655c690234c14aece6dd3f209778c1d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9b62e092-d765-42e6-bb6a-f55426aac042","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-10 11:36:47 +0000 UTC FinishedAt: 2026-08-10 11:55:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7tqm5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5ec42d57655c690234c14aece6dd3f209778c1d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vgic_get_irq","vgic_get_vcpu_irq","kvm_vgic_inject_irq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5ec42d57655c690234c14aece6dd3f209778c1d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9b62e092-d765-42e6-bb6a-f55426aac042","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-10 11:36:47 +0000 UTC FinishedAt: 2026-08-10 11:55:14 +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:*676aafba-b1d8-4c6b-9d13-65a99d680f71,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-workflow7tqm5/series-workflow7tqm5-convert-artifact-3844256783/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": "6a65e3f0-7765-4ca5-a52e-56b2ed5f0f9d", "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-workflow7tqm5/series-workflow7tqm5-build-action-2488312149/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7tqm5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5ec42d57655c690234c14aece6dd3f209778c1d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vgic_get_irq","vgic_get_vcpu_irq","kvm_vgic_inject_irq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5ec42d57655c690234c14aece6dd3f209778c1d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9b62e092-d765-42e6-bb6a-f55426aac042","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-10 11:36:47 +0000 UTC FinishedAt: 2026-08-10 11:55:04 +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:*676aafba-b1d8-4c6b-9d13-65a99d680f71,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-workflow7tqm5/series-workflow7tqm5-convert-artifact-3844256783/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": "6a65e3f0-7765-4ca5-a52e-56b2ed5f0f9d", "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-workflow7tqm5/series-workflow7tqm5-build-action-2488312149/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7tqm5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5ec42d57655c690234c14aece6dd3f209778c1d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vgic_get_irq","vgic_get_vcpu_irq","kvm_vgic_inject_irq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5ec42d57655c690234c14aece6dd3f209778c1d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9b62e092-d765-42e6-bb6a-f55426aac042","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-10 11:55:14 +0000 UTC FinishedAt: 2026-08-10 11:55:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7tqm5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5ec42d57655c690234c14aece6dd3f209778c1d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vgic_get_irq","vgic_get_vcpu_irq","kvm_vgic_inject_irq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5ec42d57655c690234c14aece6dd3f209778c1d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9b62e092-d765-42e6-bb6a-f55426aac042","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-10 11:55:14 +0000 UTC FinishedAt: 2026-08-10 11:55:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7tqm5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5ec42d57655c690234c14aece6dd3f209778c1d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vgic_get_irq","vgic_get_vcpu_irq","kvm_vgic_inject_irq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5ec42d57655c690234c14aece6dd3f209778c1d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9b62e092-d765-42e6-bb6a-f55426aac042","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-10 11:55:14 +0000 UTC FinishedAt: 2026-08-10 11:55:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7tqm5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5ec42d57655c690234c14aece6dd3f209778c1d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vgic_get_irq","vgic_get_vcpu_irq","kvm_vgic_inject_irq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5ec42d57655c690234c14aece6dd3f209778c1d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9b62e092-d765-42e6-bb6a-f55426aac042","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-10 11:55:14 +0000 UTC FinishedAt: 2026-08-10 11:55:21 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"5ec42d57655c690234c14aece6dd3f209778c1d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9b62e092-d765-42e6-bb6a-f55426aac042","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},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-workflow7tqm5/series-workflow7tqm5-convert-artifact-4015810654/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7tqm5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5ec42d57655c690234c14aece6dd3f209778c1d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vgic_get_irq","vgic_get_vcpu_irq","kvm_vgic_inject_irq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5ec42d57655c690234c14aece6dd3f209778c1d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9b62e092-d765-42e6-bb6a-f55426aac042","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-10 11:55:24 +0000 UTC FinishedAt: 2026-08-10 11:57:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7tqm5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5ec42d57655c690234c14aece6dd3f209778c1d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vgic_get_irq","vgic_get_vcpu_irq","kvm_vgic_inject_irq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5ec42d57655c690234c14aece6dd3f209778c1d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9b62e092-d765-42e6-bb6a-f55426aac042","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-10 11:55:24 +0000 UTC FinishedAt: 2026-08-10 11:57:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*6a65e3f0-7765-4ca5-a52e-56b2ed5f0f9d,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-workflow7tqm5/series-workflow7tqm5-build-action-2488312149/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-workflow7tqm5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5ec42d57655c690234c14aece6dd3f209778c1d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vgic_get_irq","vgic_get_vcpu_irq","kvm_vgic_inject_irq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5ec42d57655c690234c14aece6dd3f209778c1d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9b62e092-d765-42e6-bb6a-f55426aac042","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-10 11:57:20 +0000 UTC FinishedAt: 2026-08-10 11:57:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7tqm5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5ec42d57655c690234c14aece6dd3f209778c1d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vgic_get_irq","vgic_get_vcpu_irq","kvm_vgic_inject_irq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5ec42d57655c690234c14aece6dd3f209778c1d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9b62e092-d765-42e6-bb6a-f55426aac042","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-10 11:57:20 +0000 UTC FinishedAt: 2026-08-10 11:57:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7tqm5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5ec42d57655c690234c14aece6dd3f209778c1d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vgic_get_irq","vgic_get_vcpu_irq","kvm_vgic_inject_irq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5ec42d57655c690234c14aece6dd3f209778c1d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9b62e092-d765-42e6-bb6a-f55426aac042","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-10 11:57:20 +0000 UTC FinishedAt: 2026-08-10 12:18:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7tqm5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5ec42d57655c690234c14aece6dd3f209778c1d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vgic_get_irq","vgic_get_vcpu_irq","kvm_vgic_inject_irq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5ec42d57655c690234c14aece6dd3f209778c1d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9b62e092-d765-42e6-bb6a-f55426aac042","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-10 11:57:20 +0000 UTC FinishedAt: 2026-08-10 12:18:28 +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:*676aafba-b1d8-4c6b-9d13-65a99d680f71,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-workflow7tqm5/series-workflow7tqm5-convert-artifact-4015810654/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": "3754b017-f0d7-4ad0-be87-f3f304e7a22a", "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-workflow7tqm5/series-workflow7tqm5-build-action-3527258418/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7tqm5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5ec42d57655c690234c14aece6dd3f209778c1d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vgic_get_irq","vgic_get_vcpu_irq","kvm_vgic_inject_irq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5ec42d57655c690234c14aece6dd3f209778c1d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9b62e092-d765-42e6-bb6a-f55426aac042","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-10 11:57:20 +0000 UTC FinishedAt: 2026-08-10 12:18:18 +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:*676aafba-b1d8-4c6b-9d13-65a99d680f71,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-workflow7tqm5/series-workflow7tqm5-convert-artifact-4015810654/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": "3754b017-f0d7-4ad0-be87-f3f304e7a22a", "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-workflow7tqm5/series-workflow7tqm5-build-action-3527258418/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7tqm5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5ec42d57655c690234c14aece6dd3f209778c1d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vgic_get_irq","vgic_get_vcpu_irq","kvm_vgic_inject_irq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5ec42d57655c690234c14aece6dd3f209778c1d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9b62e092-d765-42e6-bb6a-f55426aac042","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-10 12:18:28 +0000 UTC FinishedAt: 2026-08-10 12:18:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7tqm5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5ec42d57655c690234c14aece6dd3f209778c1d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vgic_get_irq","vgic_get_vcpu_irq","kvm_vgic_inject_irq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5ec42d57655c690234c14aece6dd3f209778c1d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9b62e092-d765-42e6-bb6a-f55426aac042","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-10 12:18:28 +0000 UTC FinishedAt: 2026-08-10 12:18:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7tqm5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5ec42d57655c690234c14aece6dd3f209778c1d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vgic_get_irq","vgic_get_vcpu_irq","kvm_vgic_inject_irq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5ec42d57655c690234c14aece6dd3f209778c1d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9b62e092-d765-42e6-bb6a-f55426aac042","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-10 12:18:28 +0000 UTC FinishedAt: 2026-08-10 12:20:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7tqm5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5ec42d57655c690234c14aece6dd3f209778c1d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vgic_get_irq","vgic_get_vcpu_irq","kvm_vgic_inject_irq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5ec42d57655c690234c14aece6dd3f209778c1d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9b62e092-d765-42e6-bb6a-f55426aac042","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-10 12:18:28 +0000 UTC FinishedAt: 2026-08-10 12:20:20 +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:*3754b017-f0d7-4ad0-be87-f3f304e7a22a,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-workflow7tqm5/series-workflow7tqm5-build-action-3527258418/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-workflow7tqm5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5ec42d57655c690234c14aece6dd3f209778c1d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vgic_get_irq","vgic_get_vcpu_irq","kvm_vgic_inject_irq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5ec42d57655c690234c14aece6dd3f209778c1d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9b62e092-d765-42e6-bb6a-f55426aac042","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-10 12:20:30 +0000 UTC FinishedAt: 2026-08-10 12:23:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7tqm5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5ec42d57655c690234c14aece6dd3f209778c1d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vgic_get_irq","vgic_get_vcpu_irq","kvm_vgic_inject_irq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5ec42d57655c690234c14aece6dd3f209778c1d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9b62e092-d765-42e6-bb6a-f55426aac042","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-10 12:20:30 +0000 UTC FinishedAt: 2026-08-10 12:23:15 +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-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vgic_get_irq","vgic_get_vcpu_irq","kvm_vgic_inject_irq"],"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:*6a65e3f0-7765-4ca5-a52e-56b2ed5f0f9d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*3754b017-f0d7-4ad0-be87-f3f304e7a22a,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-workflow7tqm5/series-workflow7tqm5-build-action-2488312149/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-workflow7tqm5/series-workflow7tqm5-build-action-3527258418/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow7tqm5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5ec42d57655c690234c14aece6dd3f209778c1d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vgic_get_irq","vgic_get_vcpu_irq","kvm_vgic_inject_irq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5ec42d57655c690234c14aece6dd3f209778c1d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9b62e092-d765-42e6-bb6a-f55426aac042","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-10 12:20:30 +0000 UTC FinishedAt: 2026-08-10 12:20:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7tqm5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5ec42d57655c690234c14aece6dd3f209778c1d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vgic_get_irq","vgic_get_vcpu_irq","kvm_vgic_inject_irq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5ec42d57655c690234c14aece6dd3f209778c1d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9b62e092-d765-42e6-bb6a-f55426aac042","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-10 12:20:30 +0000 UTC FinishedAt: 2026-08-10 12:20:35 +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-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vgic_get_irq","vgic_get_vcpu_irq","kvm_vgic_inject_irq"],"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-workflow7tqm5/series-workflow7tqm5-convert-artifact-1208129123/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7tqm5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5ec42d57655c690234c14aece6dd3f209778c1d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vgic_get_irq","vgic_get_vcpu_irq","kvm_vgic_inject_irq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5ec42d57655c690234c14aece6dd3f209778c1d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9b62e092-d765-42e6-bb6a-f55426aac042","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-10 12:20:30 +0000 UTC FinishedAt: 2026-08-10 12:20:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7tqm5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5ec42d57655c690234c14aece6dd3f209778c1d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vgic_get_irq","vgic_get_vcpu_irq","kvm_vgic_inject_irq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5ec42d57655c690234c14aece6dd3f209778c1d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9b62e092-d765-42e6-bb6a-f55426aac042","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-10 12:20:30 +0000 UTC FinishedAt: 2026-08-10 12:20:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7tqm5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5ec42d57655c690234c14aece6dd3f209778c1d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vgic_get_irq","vgic_get_vcpu_irq","kvm_vgic_inject_irq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5ec42d57655c690234c14aece6dd3f209778c1d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9b62e092-d765-42e6-bb6a-f55426aac042","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-10 12:20:30 +0000 UTC FinishedAt: 2026-08-10 12:20:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7tqm5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5ec42d57655c690234c14aece6dd3f209778c1d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vgic_get_irq","vgic_get_vcpu_irq","kvm_vgic_inject_irq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5ec42d57655c690234c14aece6dd3f209778c1d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9b62e092-d765-42e6-bb6a-f55426aac042","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-10 12:20:40 +0000 UTC FinishedAt: 2026-08-10 12:23:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7tqm5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5ec42d57655c690234c14aece6dd3f209778c1d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vgic_get_irq","vgic_get_vcpu_irq","kvm_vgic_inject_irq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5ec42d57655c690234c14aece6dd3f209778c1d8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9b62e092-d765-42e6-bb6a-f55426aac042","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-10 12:20:40 +0000 UTC FinishedAt: 2026-08-10 12:22:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*6a65e3f0-7765-4ca5-a52e-56b2ed5f0f9d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*3754b017-f0d7-4ad0-be87-f3f304e7a22a,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-workflow7tqm5/series-workflow7tqm5-build-action-2488312149/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-workflow7tqm5/series-workflow7tqm5-build-action-3527258418/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-workflow7tqm5/series-workflow7tqm5-convert-artifact-1208129123/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,}