Name: series-workflowxhdzb Phase: Succeeded StartedAt: 2026-08-03 18:44:56 +0000 UTC FinishedAt: 2026-08-03 19:56:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxhdzb[0] Phase: Succeeded StartedAt: 2026-08-03 18:44:56 +0000 UTC FinishedAt: 2026-08-03 19:07:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxhdzb[0].run-triage Phase: Succeeded StartedAt: 2026-08-03 18:44:56 +0000 UTC FinishedAt: 2026-08-03 19:07:39 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "415606a7be939835db9b0d6b711887586646346d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ZRAM", "ZRAM_BACKEND_LZ4", "ZRAM_BACKEND_LZ4HC", "ZRAM_BACKEND_ZSTD", "ZRAM_BACKEND_DEFLATE", "ZRAM_BACKEND_842", "ZRAM_BACKEND_LZO", "ZRAM_MULTI_COMP" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "415606a7be939835db9b0d6b711887586646346d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ZRAM", "ZRAM_BACKEND_LZ4", "ZRAM_BACKEND_LZ4HC", "ZRAM_BACKEND_ZSTD", "ZRAM_BACKEND_DEFLATE", "ZRAM_BACKEND_842", "ZRAM_BACKEND_LZO", "ZRAM_MULTI_COMP" ], "series_id": "b3f2e90d-84cc-4ed4-9d18-4944ecbedc9d" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "algorithm_params_store", "comp_algorithm_store", "recomp_algorithm_store", "disksize_store", "zcomp_create", "comp_params_store" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE5OjA2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1pSQU0mIzM0OywKICAgICYjMzQ7WlJBTV9CQUNLRU5EX0xaNCYjMzQ7LAogICAgJiMzNDtaUkFNX0JBQ0tFTkRfTFo0SEMmIzM0OywKICAgICYjMzQ7WlJBTV9CQUNLRU5EX1pTVEQmIzM0OywKICAgICYjMzQ7WlJBTV9CQUNLRU5EX0RFRkxBVEUmIzM0OywKICAgICYjMzQ7WlJBTV9CQUNLRU5EXzg0MiYjMzQ7LAogICAgJiMzNDtaUkFNX0JBQ0tFTkRfTFpPJiMzNDssCiAgICAmIzM0O1pSQU1fTVVMVElfQ09NUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2FsZ29yaXRobV9wYXJhbXNfc3RvcmUmIzM0OywKICAgICYjMzQ7Y29tcF9hbGdvcml0aG1fc3RvcmUmIzM0OywKICAgICYjMzQ7cmVjb21wX2FsZ29yaXRobV9zdG9yZSYjMzQ7LAogICAgJiMzNDtkaXNrc2l6ZV9zdG9yZSYjMzQ7LAogICAgJiMzNDt6Y29tcF9jcmVhdGUmIzM0OywKICAgICYjMzQ7Y29tcF9wYXJhbXNfc3RvcmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyB2YWxpZGF0aW9uIGZvciBjb21wcmVzc2lvbiBwYXJhbWV0ZXJzIChsaWtlIGRpY3Rpb25hcnkgc2l6ZSBhbmQgY29tcHJlc3Npb24gbGV2ZWwpIGluIHZhcmlvdXMgenJhbSBiYWNrZW5kcyAoODQyLCBkZWZsYXRlLCBsejQsIGx6NGhjLCBsem8sIGx6b3JsZSwgenN0ZCkuIEl0IGFsc28gbW9kaWZpZXMgdGhlIHN5c2ZzIGhhbmRsZXJzIGZvciB6cmFtIGNvbXByZXNzaW9uIGFsZ29yaXRobXMgdG8gcmVzZXQgcGFyYW1ldGVycyB3aGVuIHRoZSBhbGdvcml0aG0gaXMgY2hhbmdlZC4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgdGhlIGZ1bmN0aW9uYWwgbG9naWMgb2YgenJhbSBjb25maWd1cmF0aW9uIHZpYSBzeXNmcywgd2hpY2ggaXMgcmVhY2hhYmxlIGFuZCBjYW4gYmUgZnV6emVkIGJ5IHN5emthbGxlci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxOTowNjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGQ1ODQwMjhlODlmMjQ5MGU3ZjVmODVkZjUwZTUwN2QzNDBhYjVmYjlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAzIDE5OjA2OjI0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kXzg0Mi5jIGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfODQyLmNcbmluZGV4IDEwZDlkNWM2MGY1MzEuLjkxYTIyMzEzZmU4MmEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF84NDIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfODQyLmNcbkBAIC0xMyw2ICYjNDM7MTMsMTQgQEAgc3RhdGljIHZvaWQgcmVsZWFzZV9wYXJhbXNfODQyKHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcylcbiBcbiBzdGF0aWMgaW50IHNldHVwX3BhcmFtc184NDIoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKVxuIHtcbiYjNDM7XHRpZiAocGFyYW1zLVx1MDAzZWRpY3Rfc3opIHtcbiYjNDM7XHRcdHByX2VycihcJiMzNDs4NDI6IGRpY3Rpb25hcnkgaXMgbm90IHN1cHBvcnRlZFxcblwmIzM0Oyk7XG4mIzQzO1x0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4mIzQzO1x0fVxuJiM0MztcdGlmIChwYXJhbXMtXHUwMDNlbGV2ZWwgIT0gWkNPTVBfUEFSQU1fTk9UX1NFVCkge1xuJiM0MztcdFx0cHJfZXJyKFwmIzM0Ozg0MjogY29tcHJlc3Npb24gbGV2ZWwgaXMgbm90IHN1cHBvcnRlZFxcblwmIzM0Oyk7XG4mIzQzO1x0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4mIzQzO1x0fVxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2RlZmxhdGUuYyBiL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2RlZmxhdGUuY1xuaW5kZXggYjNmN2QwOGI0OWQ5My4uYjIwNzRjNDRiMmQwNCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2RlZmxhdGUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfZGVmbGF0ZS5jXG5AQCAtMjIsOCAmIzQzOzIyLDE5IEBAIHN0YXRpYyB2b2lkIGRlZmxhdGVfcmVsZWFzZV9wYXJhbXMoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKVxuIFxuIHN0YXRpYyBpbnQgZGVmbGF0ZV9zZXR1cF9wYXJhbXMoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKVxuIHtcbiYjNDM7XHRpZiAocGFyYW1zLVx1MDAzZWRpY3Rfc3opIHtcbiYjNDM7XHRcdHByX2VycihcJiMzNDtkZWZsYXRlOiBkaWN0aW9uYXJ5IGlzIG5vdCBzdXBwb3J0ZWRcXG5cJiMzNDspO1xuJiM0MztcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRpZiAocGFyYW1zLVx1MDAzZWxldmVsID09IFpDT01QX1BBUkFNX05PVF9TRVQpXG4gXHRcdHBhcmFtcy1cdTAwM2VsZXZlbCA9IFpfREVGQVVMVF9DT01QUkVTU0lPTjtcbiYjNDM7XHRlbHNlIGlmIChwYXJhbXMtXHUwMDNlbGV2ZWwgXHUwMDNjIFpfREVGQVVMVF9DT01QUkVTU0lPTiB8fFxuJiM0MztcdFx0IHBhcmFtcy1cdTAwM2VsZXZlbCBcdTAwM2UgWl9CRVNUX0NPTVBSRVNTSU9OKSB7XG4mIzQzO1x0XHRwcl9lcnIoXCYjMzQ7ZGVmbGF0ZTogaW52YWxpZCBjb21wcmVzc2lvbiBsZXZlbCAlZFxcblwmIzM0OywgcGFyYW1zLVx1MDAzZWxldmVsKTtcbiYjNDM7XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRpZiAocGFyYW1zLVx1MDAzZWRlZmxhdGUud2luYml0cyA9PSBaQ09NUF9QQVJBTV9OT1RfU0VUKSB7XG4gXHRcdHBhcmFtcy1cdTAwM2VkZWZsYXRlLndpbmJpdHMgPSBERUZMQVRFX0RFRl9XSU5CSVRTO1xuIFx0fSBlbHNlIHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sejQuYyBiL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6NC5jXG5pbmRleCBjNDQ5ZDUxMWJhODZmLi5mNGY1MTExMjIwYzc5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHo0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6NC5jXG5AQCAtMzAsNiAmIzQzOzMwLDEwIEBAIHN0YXRpYyBpbnQgbHo0X3NldHVwX3BhcmFtcyhzdHJ1Y3QgemNvbXBfcGFyYW1zICpwYXJhbXMpXG4gXG4gXHRpZiAocGFyYW1zLVx1MDAzZWxldmVsID09IFpDT01QX1BBUkFNX05PVF9TRVQpXG4gXHRcdHBhcmFtcy1cdTAwM2VsZXZlbCA9IExaNF9BQ0NFTEVSQVRJT05fREVGQVVMVDtcbiYjNDM7XHRlbHNlIGlmIChwYXJhbXMtXHUwMDNlbGV2ZWwgXHUwMDNjIExaNF9BQ0NFTEVSQVRJT05fREVGQVVMVCkge1xuJiM0MztcdFx0cHJfZXJyKFwmIzM0O2x6NDogaW52YWxpZCBjb21wcmVzc2lvbiBsZXZlbCAlZFxcblwmIzM0OywgcGFyYW1zLVx1MDAzZWxldmVsKTtcbiYjNDM7XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcdH1cbiBcbiBcdGlmICghcGFyYW1zLVx1MDAzZWRpY3QgfHwgIXBhcmFtcy1cdTAwM2VkaWN0X3N6KVxuIFx0XHRyZXR1cm4gMDtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sejRoYy5jIGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHo0aGMuY1xuaW5kZXggZjZhMzM2YWNmZTIwMi4uZDdjZDk3Yjg5OGJkNSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6NGhjLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6NGhjLmNcbkBAIC0yMCw2ICYjNDM7MjAsMTAgQEAgc3RhdGljIGludCBsejRoY19zZXR1cF9wYXJhbXMoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKVxuIHtcbiBcdGlmIChwYXJhbXMtXHUwMDNlbGV2ZWwgPT0gWkNPTVBfUEFSQU1fTk9UX1NFVClcbiBcdFx0cGFyYW1zLVx1MDAzZWxldmVsID0gTFo0SENfREVGQVVMVF9DTEVWRUw7XG4mIzQzO1x0ZWxzZSBpZiAocGFyYW1zLVx1MDAzZWxldmVsIFx1MDAzYyAxIHx8IHBhcmFtcy1cdTAwM2VsZXZlbCBcdTAwM2UgTFo0SENfTUFYX0NMRVZFTCkge1xuJiM0MztcdFx0cHJfZXJyKFwmIzM0O2x6NGhjOiBpbnZhbGlkIGNvbXByZXNzaW9uIGxldmVsICVkXFxuXCYjMzQ7LCBwYXJhbXMtXHUwMDNlbGV2ZWwpO1xuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1x0fVxuIFxuIFx0cmV0dXJuIDA7XG4gfVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6by5jIGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvLmNcbmluZGV4IDRjOTA2YmVhYWU2YjMuLmNkYmI4OWFhYTBkZWUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sem8uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvLmNcbkBAIC0xMiw2ICYjNDM7MTIsMTQgQEAgc3RhdGljIHZvaWQgbHpvX3JlbGVhc2VfcGFyYW1zKHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcylcbiBcbiBzdGF0aWMgaW50IGx6b19zZXR1cF9wYXJhbXMoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKVxuIHtcbiYjNDM7XHRpZiAocGFyYW1zLVx1MDAzZWRpY3Rfc3opIHtcbiYjNDM7XHRcdHByX2VycihcJiMzNDtsem86IGRpY3Rpb25hcnkgaXMgbm90IHN1cHBvcnRlZFxcblwmIzM0Oyk7XG4mIzQzO1x0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4mIzQzO1x0fVxuJiM0MztcdGlmIChwYXJhbXMtXHUwMDNlbGV2ZWwgIT0gWkNPTVBfUEFSQU1fTk9UX1NFVCkge1xuJiM0MztcdFx0cHJfZXJyKFwmIzM0O2x6bzogY29tcHJlc3Npb24gbGV2ZWwgaXMgbm90IHN1cHBvcnRlZFxcblwmIzM0Oyk7XG4mIzQzO1x0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4mIzQzO1x0fVxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6b3JsZS5jIGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvcmxlLmNcbmluZGV4IDEwNjQwYzk2Y2JmY2EuLjU4ZjdkZGY1YTU1ZjUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sem9ybGUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvcmxlLmNcbkBAIC0xMiw2ICYjNDM7MTIsMTQgQEAgc3RhdGljIHZvaWQgbHpvcmxlX3JlbGVhc2VfcGFyYW1zKHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcylcbiBcbiBzdGF0aWMgaW50IGx6b3JsZV9zZXR1cF9wYXJhbXMoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKVxuIHtcbiYjNDM7XHRpZiAocGFyYW1zLVx1MDAzZWRpY3Rfc3opIHtcbiYjNDM7XHRcdHByX2VycihcJiMzNDtsem8tcmxlOiBkaWN0aW9uYXJ5IGlzIG5vdCBzdXBwb3J0ZWRcXG5cJiMzNDspO1xuJiM0MztcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuJiM0MztcdH1cbiYjNDM7XHRpZiAocGFyYW1zLVx1MDAzZWxldmVsICE9IFpDT01QX1BBUkFNX05PVF9TRVQpIHtcbiYjNDM7XHRcdHByX2VycihcJiMzNDtsem8tcmxlOiBjb21wcmVzc2lvbiBsZXZlbCBpcyBub3Qgc3VwcG9ydGVkXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbiYjNDM7XHR9XG4gXHRyZXR1cm4gMDtcbiB9XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jIGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jXG5pbmRleCBkMDBiNTQ4MDU2ZGMyLi5lMDcxZmE1ODRmNmIwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF96c3RkLmNcbkBAIC02MCw2ICYjNDM7NjAsMTEgQEAgc3RhdGljIGludCB6c3RkX3NldHVwX3BhcmFtcyhzdHJ1Y3QgemNvbXBfcGFyYW1zICpwYXJhbXMpXG4gXHRwYXJhbXMtXHUwMDNlZHJ2X2RhdGEgPSB6cDtcbiBcdGlmIChwYXJhbXMtXHUwMDNlbGV2ZWwgPT0gWkNPTVBfUEFSQU1fTk9UX1NFVClcbiBcdFx0cGFyYW1zLVx1MDAzZWxldmVsID0genN0ZF9kZWZhdWx0X2NsZXZlbCgpO1xuJiM0MztcdGVsc2UgaWYgKHBhcmFtcy1cdTAwM2VsZXZlbCBcdTAwM2MgenN0ZF9taW5fY2xldmVsKCkgfHxcbiYjNDM7XHRcdCBwYXJhbXMtXHUwMDNlbGV2ZWwgXHUwMDNlIHpzdGRfbWF4X2NsZXZlbCgpKSB7XG4mIzQzO1x0XHRwcl9lcnIoXCYjMzQ7enN0ZDogaW52YWxpZCBjb21wcmVzc2lvbiBsZXZlbCAlZFxcblwmIzM0OywgcGFyYW1zLVx1MDAzZWxldmVsKTtcbiYjNDM7XHRcdGdvdG8gZXJyb3I7XG4mIzQzO1x0fVxuIFxuIFx0enAtXHUwMDNlY3BybSA9IHpzdGRfZ2V0X3BhcmFtcyhwYXJhbXMtXHUwMDNlbGV2ZWwsIFBBR0VfU0laRSk7XG4gXG5AQCAtODUsNyAmIzQzOzkwLDYgQEAgc3RhdGljIGludCB6c3RkX3NldHVwX3BhcmFtcyhzdHJ1Y3QgemNvbXBfcGFyYW1zICpwYXJhbXMpXG4gXHRyZXR1cm4gMDtcbiBcbiBlcnJvcjpcbi1cdHpzdGRfcmVsZWFzZV9wYXJhbXMocGFyYW1zKTtcbiBcdHJldHVybiAtRUlOVkFMO1xuIH1cbiBcbkBAIC0xNjEsNyAmIzQzOzE2NSw2IEBAIHN0YXRpYyBpbnQgenN0ZF9jcmVhdGUoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zLCBzdHJ1Y3QgemNvbXBfY3R4ICpjdHgpXG4gXHRyZXR1cm4gMDtcbiBcbiBlcnJvcjpcbi1cdHpzdGRfcmVsZWFzZV9wYXJhbXMocGFyYW1zKTtcbiBcdHpzdGRfZGVzdHJveShjdHgpO1xuIFx0cmV0dXJuIC1FSU5WQUw7XG4gfVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jIGIvZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmNcbmluZGV4IGNmYTk4ODQ2YWM0ODQuLmNjOTZiMThiZjY0N2MgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmNcbkBAIC0xNjUyLDYgJiM0MzsxNjUyLDE3IEBAIHN0YXRpYyB2b2lkIGNvbXBfYWxnb3JpdGhtX3NldChzdHJ1Y3QgenJhbSAqenJhbSwgdTMyIHByaW8sIGNvbnN0IGNoYXIgKmFsZylcbiBcdHpyYW0tXHUwMDNlY29tcF9hbGdzW3ByaW9dID0gYWxnO1xuIH1cbiBcbiYjNDM7c3RhdGljIHZvaWQgY29tcF9wYXJhbXNfcmVzZXQoc3RydWN0IHpyYW0gKnpyYW0sIHUzMiBwcmlvKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zID0gXHUwMDI2enJhbS1cdTAwM2VwYXJhbXNbcHJpb107XG4mIzQzO1xuJiM0MztcdHZmcmVlKHBhcmFtcy1cdTAwM2VkaWN0KTtcbiYjNDM7XHRwYXJhbXMtXHUwMDNlbGV2ZWwgPSBaQ09NUF9QQVJBTV9OT1RfU0VUO1xuJiM0MztcdHBhcmFtcy1cdTAwM2VkZWZsYXRlLndpbmJpdHMgPSBaQ09NUF9QQVJBTV9OT1RfU0VUO1xuJiM0MztcdHBhcmFtcy1cdTAwM2VkaWN0X3N6ID0gMDtcbiYjNDM7XHRwYXJhbXMtXHUwMDNlZGljdCA9IE5VTEw7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGludCBfX2NvbXBfYWxnb3JpdGhtX3N0b3JlKHN0cnVjdCB6cmFtICp6cmFtLCB1MzIgcHJpbywgY29uc3QgY2hhciAqYnVmKVxuIHtcbiBcdGNvbnN0IGNoYXIgKmFsZztcbkBAIC0xNjcyLDIwICYjNDM7MTY4MywxMCBAQCBzdGF0aWMgaW50IF9fY29tcF9hbGdvcml0aG1fc3RvcmUoc3RydWN0IHpyYW0gKnpyYW0sIHUzMiBwcmlvLCBjb25zdCBjaGFyICpidWYpXG4gXHR9XG4gXG4gXHRjb21wX2FsZ29yaXRobV9zZXQoenJhbSwgcHJpbywgYWxnKTtcbiYjNDM7XHRjb21wX3BhcmFtc19yZXNldCh6cmFtLCBwcmlvKTtcbiBcdHJldHVybiAwO1xuIH1cbiBcbi1zdGF0aWMgdm9pZCBjb21wX3BhcmFtc19yZXNldChzdHJ1Y3QgenJhbSAqenJhbSwgdTMyIHByaW8pXG4te1xuLVx0c3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zID0gXHUwMDI2enJhbS1cdTAwM2VwYXJhbXNbcHJpb107XG4tXG4tXHR2ZnJlZShwYXJhbXMtXHUwMDNlZGljdCk7XG4tXHRwYXJhbXMtXHUwMDNlbGV2ZWwgPSBaQ09NUF9QQVJBTV9OT1RfU0VUO1xuLVx0cGFyYW1zLVx1MDAzZWRlZmxhdGUud2luYml0cyA9IFpDT01QX1BBUkFNX05PVF9TRVQ7XG4tXHRwYXJhbXMtXHUwMDNlZGljdF9zeiA9IDA7XG4tXHRwYXJhbXMtXHUwMDNlZGljdCA9IE5VTEw7XG4tfVxuLVxuIHN0YXRpYyBpbnQgY29tcF9wYXJhbXNfc3RvcmUoc3RydWN0IHpyYW0gKnpyYW0sIHUzMiBwcmlvLCBzMzIgbGV2ZWwsXG4gXHRcdFx0ICAgICBjb25zdCBjaGFyICpkaWN0X3BhdGgsXG4gXHRcdFx0ICAgICBzdHJ1Y3QgZGVmbGF0ZV9wYXJhbXMgKmRlZmxhdGVfcGFyYW1zKVxuQEAgLTE3MDAsOCAmIzQzOzE3MDEsMTIgQEAgc3RhdGljIGludCBjb21wX3BhcmFtc19zdG9yZShzdHJ1Y3QgenJhbSAqenJhbSwgdTMyIHByaW8sIHMzMiBsZXZlbCxcbiBcdFx0XHRcdFx0XHRJTlRfTUFYLFxuIFx0XHRcdFx0XHRcdE5VTEwsXG4gXHRcdFx0XHRcdFx0UkVBRElOR19QT0xJQ1kpO1xuLVx0XHRpZiAoc3ogXHUwMDNjIDApXG4mIzQzO1x0XHRpZiAoc3ogXHUwMDNjPSAwKSB7XG4mIzQzO1x0XHRcdHByX2VycihcJiMzNDtmYWlsZWQgdG8gbG9hZCBkaWN0aW9uYXJ5ICVzIChlcnI9JXpkKVxcblwmIzM0OyxcbiYjNDM7XHRcdFx0ICAgICAgIGRpY3RfcGF0aCwgc3opO1xuJiM0MztcbiBcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHRcdH1cbiBcdH1cbiBcbiBcdHpyYW0tXHUwMDNlcGFyYW1zW3ByaW9dLmRpY3Rfc3ogPSBzejtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxOTowNjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7WlJBTSYjMzQ7LAogICAgJiMzNDtaUkFNX0JBQ0tFTkRfTFo0JiMzNDssCiAgICAmIzM0O1pSQU1fQkFDS0VORF9MWjRIQyYjMzQ7LAogICAgJiMzNDtaUkFNX0JBQ0tFTkRfWlNURCYjMzQ7LAogICAgJiMzNDtaUkFNX0JBQ0tFTkRfREVGTEFURSYjMzQ7LAogICAgJiMzNDtaUkFNX0JBQ0tFTkRfODQyJiMzNDssCiAgICAmIzM0O1pSQU1fQkFDS0VORF9MWk8mIzM0OywKICAgICYjMzQ7WlJBTV9NVUxUSV9DT01QJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YWxnb3JpdGhtX3BhcmFtc19zdG9yZSYjMzQ7LAogICAgJiMzNDtjb21wX2FsZ29yaXRobV9zdG9yZSYjMzQ7LAogICAgJiMzNDtyZWNvbXBfYWxnb3JpdGhtX3N0b3JlJiMzNDssCiAgICAmIzM0O2Rpc2tzaXplX3N0b3JlJiMzNDssCiAgICAmIzM0O3pjb21wX2NyZWF0ZSYjMzQ7LAogICAgJiMzNDtjb21wX3BhcmFtc19zdG9yZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIHZhbGlkYXRpb24gZm9yIGNvbXByZXNzaW9uIHBhcmFtZXRlcnMgKGxpa2UgZGljdGlvbmFyeSBzaXplIGFuZCBjb21wcmVzc2lvbiBsZXZlbCkgaW4gdmFyaW91cyB6cmFtIGJhY2tlbmRzICg4NDIsIGRlZmxhdGUsIGx6NCwgbHo0aGMsIGx6bywgbHpvcmxlLCB6c3RkKS4gSXQgYWxzbyBtb2RpZmllcyB0aGUgc3lzZnMgaGFuZGxlcnMgZm9yIHpyYW0gY29tcHJlc3Npb24gYWxnb3JpdGhtcyB0byByZXNldCBwYXJhbWV0ZXJzIHdoZW4gdGhlIGFsZ29yaXRobSBpcyBjaGFuZ2VkLiBUaGVzZSBjaGFuZ2VzIGFmZmVjdCB0aGUgZnVuY3Rpb25hbCBsb2dpYyBvZiB6cmFtIGNvbmZpZ3VyYXRpb24gdmlhIHN5c2ZzLCB3aGljaCBpcyByZWFjaGFibGUgYW5kIGNhbiBiZSBmdXp6ZWQgYnkgc3l6a2FsbGVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZDU4NDAyOGU4OWYyNDkwZTdmNWY4NWRmNTBlNTA3ZDM0MGFiNWZiOQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDMgMTk6MDY6MjQgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF84NDIuYyBiL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kXzg0Mi5jCmluZGV4IDEwZDlkNWM2MGY1MzEuLjkxYTIyMzEzZmU4MmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kXzg0Mi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kXzg0Mi5jCkBAIC0xMyw2ICYjNDM7MTMsMTQgQEAgc3RhdGljIHZvaWQgcmVsZWFzZV9wYXJhbXNfODQyKHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcykKIAogc3RhdGljIGludCBzZXR1cF9wYXJhbXNfODQyKHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcykKIHsKJiM0MzsJaWYgKHBhcmFtcy0mZ3Q7ZGljdF9zeikgewomIzQzOwkJcHJfZXJyKCYjMzQ7ODQyOiBkaWN0aW9uYXJ5IGlzIG5vdCBzdXBwb3J0ZWRcbiYjMzQ7KTsKJiM0MzsJCXJldHVybiAtRU9QTk9UU1VQUDsKJiM0MzsJfQomIzQzOwlpZiAocGFyYW1zLSZndDtsZXZlbCAhPSBaQ09NUF9QQVJBTV9OT1RfU0VUKSB7CiYjNDM7CQlwcl9lcnIoJiMzNDs4NDI6IGNvbXByZXNzaW9uIGxldmVsIGlzIG5vdCBzdXBwb3J0ZWRcbiYjMzQ7KTsKJiM0MzsJCXJldHVybiAtRU9QTk9UU1VQUDsKJiM0MzsJfQogCXJldHVybiAwOwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9kZWZsYXRlLmMgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9kZWZsYXRlLmMKaW5kZXggYjNmN2QwOGI0OWQ5My4uYjIwNzRjNDRiMmQwNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfZGVmbGF0ZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2RlZmxhdGUuYwpAQCAtMjIsOCAmIzQzOzIyLDE5IEBAIHN0YXRpYyB2b2lkIGRlZmxhdGVfcmVsZWFzZV9wYXJhbXMoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKQogCiBzdGF0aWMgaW50IGRlZmxhdGVfc2V0dXBfcGFyYW1zKHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcykKIHsKJiM0MzsJaWYgKHBhcmFtcy0mZ3Q7ZGljdF9zeikgewomIzQzOwkJcHJfZXJyKCYjMzQ7ZGVmbGF0ZTogZGljdGlvbmFyeSBpcyBub3Qgc3VwcG9ydGVkXG4mIzM0Oyk7CiYjNDM7CQlyZXR1cm4gLUVPUE5PVFNVUFA7CiYjNDM7CX0KJiM0MzsKIAlpZiAocGFyYW1zLSZndDtsZXZlbCA9PSBaQ09NUF9QQVJBTV9OT1RfU0VUKQogCQlwYXJhbXMtJmd0O2xldmVsID0gWl9ERUZBVUxUX0NPTVBSRVNTSU9OOwomIzQzOwllbHNlIGlmIChwYXJhbXMtJmd0O2xldmVsICZsdDsgWl9ERUZBVUxUX0NPTVBSRVNTSU9OIHx8CiYjNDM7CQkgcGFyYW1zLSZndDtsZXZlbCAmZ3Q7IFpfQkVTVF9DT01QUkVTU0lPTikgewomIzQzOwkJcHJfZXJyKCYjMzQ7ZGVmbGF0ZTogaW52YWxpZCBjb21wcmVzc2lvbiBsZXZlbCAlZFxuJiMzNDssIHBhcmFtcy0mZ3Q7bGV2ZWwpOwomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CX0KJiM0MzsKIAlpZiAocGFyYW1zLSZndDtkZWZsYXRlLndpbmJpdHMgPT0gWkNPTVBfUEFSQU1fTk9UX1NFVCkgewogCQlwYXJhbXMtJmd0O2RlZmxhdGUud2luYml0cyA9IERFRkxBVEVfREVGX1dJTkJJVFM7CiAJfSBlbHNlIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6NC5jIGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHo0LmMKaW5kZXggYzQ0OWQ1MTFiYTg2Zi4uZjRmNTExMTIyMGM3OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHo0LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHo0LmMKQEAgLTMwLDYgJiM0MzszMCwxMCBAQCBzdGF0aWMgaW50IGx6NF9zZXR1cF9wYXJhbXMoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKQogCiAJaWYgKHBhcmFtcy0mZ3Q7bGV2ZWwgPT0gWkNPTVBfUEFSQU1fTk9UX1NFVCkKIAkJcGFyYW1zLSZndDtsZXZlbCA9IExaNF9BQ0NFTEVSQVRJT05fREVGQVVMVDsKJiM0MzsJZWxzZSBpZiAocGFyYW1zLSZndDtsZXZlbCAmbHQ7IExaNF9BQ0NFTEVSQVRJT05fREVGQVVMVCkgewomIzQzOwkJcHJfZXJyKCYjMzQ7bHo0OiBpbnZhbGlkIGNvbXByZXNzaW9uIGxldmVsICVkXG4mIzM0OywgcGFyYW1zLSZndDtsZXZlbCk7CiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJfQogCiAJaWYgKCFwYXJhbXMtJmd0O2RpY3QgfHwgIXBhcmFtcy0mZ3Q7ZGljdF9zeikKIAkJcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sejRoYy5jIGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHo0aGMuYwppbmRleCBmNmEzMzZhY2ZlMjAyLi5kN2NkOTdiODk4YmQ1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sejRoYy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6NGhjLmMKQEAgLTIwLDYgJiM0MzsyMCwxMCBAQCBzdGF0aWMgaW50IGx6NGhjX3NldHVwX3BhcmFtcyhzdHJ1Y3QgemNvbXBfcGFyYW1zICpwYXJhbXMpCiB7CiAJaWYgKHBhcmFtcy0mZ3Q7bGV2ZWwgPT0gWkNPTVBfUEFSQU1fTk9UX1NFVCkKIAkJcGFyYW1zLSZndDtsZXZlbCA9IExaNEhDX0RFRkFVTFRfQ0xFVkVMOwomIzQzOwllbHNlIGlmIChwYXJhbXMtJmd0O2xldmVsICZsdDsgMSB8fCBwYXJhbXMtJmd0O2xldmVsICZndDsgTFo0SENfTUFYX0NMRVZFTCkgewomIzQzOwkJcHJfZXJyKCYjMzQ7bHo0aGM6IGludmFsaWQgY29tcHJlc3Npb24gbGV2ZWwgJWRcbiYjMzQ7LCBwYXJhbXMtJmd0O2xldmVsKTsKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwl9CiAKIAlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6by5jIGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvLmMKaW5kZXggNGM5MDZiZWFhZTZiMy4uY2RiYjg5YWFhMGRlZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvLmMKQEAgLTEyLDYgJiM0MzsxMiwxNCBAQCBzdGF0aWMgdm9pZCBsem9fcmVsZWFzZV9wYXJhbXMoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKQogCiBzdGF0aWMgaW50IGx6b19zZXR1cF9wYXJhbXMoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKQogewomIzQzOwlpZiAocGFyYW1zLSZndDtkaWN0X3N6KSB7CiYjNDM7CQlwcl9lcnIoJiMzNDtsem86IGRpY3Rpb25hcnkgaXMgbm90IHN1cHBvcnRlZFxuJiMzNDspOwomIzQzOwkJcmV0dXJuIC1FT1BOT1RTVVBQOwomIzQzOwl9CiYjNDM7CWlmIChwYXJhbXMtJmd0O2xldmVsICE9IFpDT01QX1BBUkFNX05PVF9TRVQpIHsKJiM0MzsJCXByX2VycigmIzM0O2x6bzogY29tcHJlc3Npb24gbGV2ZWwgaXMgbm90IHN1cHBvcnRlZFxuJiMzNDspOwomIzQzOwkJcmV0dXJuIC1FT1BOT1RTVVBQOwomIzQzOwl9CiAJcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6b3JsZS5jIGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvcmxlLmMKaW5kZXggMTA2NDBjOTZjYmZjYS4uNThmN2RkZjVhNTVmNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvcmxlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvcmxlLmMKQEAgLTEyLDYgJiM0MzsxMiwxNCBAQCBzdGF0aWMgdm9pZCBsem9ybGVfcmVsZWFzZV9wYXJhbXMoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKQogCiBzdGF0aWMgaW50IGx6b3JsZV9zZXR1cF9wYXJhbXMoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKQogewomIzQzOwlpZiAocGFyYW1zLSZndDtkaWN0X3N6KSB7CiYjNDM7CQlwcl9lcnIoJiMzNDtsem8tcmxlOiBkaWN0aW9uYXJ5IGlzIG5vdCBzdXBwb3J0ZWRcbiYjMzQ7KTsKJiM0MzsJCXJldHVybiAtRU9QTk9UU1VQUDsKJiM0MzsJfQomIzQzOwlpZiAocGFyYW1zLSZndDtsZXZlbCAhPSBaQ09NUF9QQVJBTV9OT1RfU0VUKSB7CiYjNDM7CQlwcl9lcnIoJiMzNDtsem8tcmxlOiBjb21wcmVzc2lvbiBsZXZlbCBpcyBub3Qgc3VwcG9ydGVkXG4mIzM0Oyk7CiYjNDM7CQlyZXR1cm4gLUVPUE5PVFNVUFA7CiYjNDM7CX0KIAlyZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jIGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jCmluZGV4IGQwMGI1NDgwNTZkYzIuLmUwNzFmYTU4NGY2YjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX3pzdGQuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF96c3RkLmMKQEAgLTYwLDYgJiM0Mzs2MCwxMSBAQCBzdGF0aWMgaW50IHpzdGRfc2V0dXBfcGFyYW1zKHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcykKIAlwYXJhbXMtJmd0O2Rydl9kYXRhID0genA7CiAJaWYgKHBhcmFtcy0mZ3Q7bGV2ZWwgPT0gWkNPTVBfUEFSQU1fTk9UX1NFVCkKIAkJcGFyYW1zLSZndDtsZXZlbCA9IHpzdGRfZGVmYXVsdF9jbGV2ZWwoKTsKJiM0MzsJZWxzZSBpZiAocGFyYW1zLSZndDtsZXZlbCAmbHQ7IHpzdGRfbWluX2NsZXZlbCgpIHx8CiYjNDM7CQkgcGFyYW1zLSZndDtsZXZlbCAmZ3Q7IHpzdGRfbWF4X2NsZXZlbCgpKSB7CiYjNDM7CQlwcl9lcnIoJiMzNDt6c3RkOiBpbnZhbGlkIGNvbXByZXNzaW9uIGxldmVsICVkXG4mIzM0OywgcGFyYW1zLSZndDtsZXZlbCk7CiYjNDM7CQlnb3RvIGVycm9yOwomIzQzOwl9CiAKIAl6cC0mZ3Q7Y3BybSA9IHpzdGRfZ2V0X3BhcmFtcyhwYXJhbXMtJmd0O2xldmVsLCBQQUdFX1NJWkUpOwogCkBAIC04NSw3ICYjNDM7OTAsNiBAQCBzdGF0aWMgaW50IHpzdGRfc2V0dXBfcGFyYW1zKHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcykKIAlyZXR1cm4gMDsKIAogZXJyb3I6Ci0JenN0ZF9yZWxlYXNlX3BhcmFtcyhwYXJhbXMpOwogCXJldHVybiAtRUlOVkFMOwogfQogCkBAIC0xNjEsNyAmIzQzOzE2NSw2IEBAIHN0YXRpYyBpbnQgenN0ZF9jcmVhdGUoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zLCBzdHJ1Y3QgemNvbXBfY3R4ICpjdHgpCiAJcmV0dXJuIDA7CiAKIGVycm9yOgotCXpzdGRfcmVsZWFzZV9wYXJhbXMocGFyYW1zKTsKIAl6c3RkX2Rlc3Ryb3koY3R4KTsKIAlyZXR1cm4gLUVJTlZBTDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jIGIvZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMKaW5kZXggY2ZhOTg4NDZhYzQ4NC4uY2M5NmIxOGJmNjQ3YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMKQEAgLTE2NTIsNiAmIzQzOzE2NTIsMTcgQEAgc3RhdGljIHZvaWQgY29tcF9hbGdvcml0aG1fc2V0KHN0cnVjdCB6cmFtICp6cmFtLCB1MzIgcHJpbywgY29uc3QgY2hhciAqYWxnKQogCXpyYW0tJmd0O2NvbXBfYWxnc1twcmlvXSA9IGFsZzsKIH0KIAomIzQzO3N0YXRpYyB2b2lkIGNvbXBfcGFyYW1zX3Jlc2V0KHN0cnVjdCB6cmFtICp6cmFtLCB1MzIgcHJpbykKJiM0Mzt7CiYjNDM7CXN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcyA9ICZhbXA7enJhbS0mZ3Q7cGFyYW1zW3ByaW9dOwomIzQzOwomIzQzOwl2ZnJlZShwYXJhbXMtJmd0O2RpY3QpOwomIzQzOwlwYXJhbXMtJmd0O2xldmVsID0gWkNPTVBfUEFSQU1fTk9UX1NFVDsKJiM0MzsJcGFyYW1zLSZndDtkZWZsYXRlLndpbmJpdHMgPSBaQ09NUF9QQVJBTV9OT1RfU0VUOwomIzQzOwlwYXJhbXMtJmd0O2RpY3Rfc3ogPSAwOwomIzQzOwlwYXJhbXMtJmd0O2RpY3QgPSBOVUxMOwomIzQzO30KJiM0MzsKIHN0YXRpYyBpbnQgX19jb21wX2FsZ29yaXRobV9zdG9yZShzdHJ1Y3QgenJhbSAqenJhbSwgdTMyIHByaW8sIGNvbnN0IGNoYXIgKmJ1ZikKIHsKIAljb25zdCBjaGFyICphbGc7CkBAIC0xNjcyLDIwICYjNDM7MTY4MywxMCBAQCBzdGF0aWMgaW50IF9fY29tcF9hbGdvcml0aG1fc3RvcmUoc3RydWN0IHpyYW0gKnpyYW0sIHUzMiBwcmlvLCBjb25zdCBjaGFyICpidWYpCiAJfQogCiAJY29tcF9hbGdvcml0aG1fc2V0KHpyYW0sIHByaW8sIGFsZyk7CiYjNDM7CWNvbXBfcGFyYW1zX3Jlc2V0KHpyYW0sIHByaW8pOwogCXJldHVybiAwOwogfQogCi1zdGF0aWMgdm9pZCBjb21wX3BhcmFtc19yZXNldChzdHJ1Y3QgenJhbSAqenJhbSwgdTMyIHByaW8pCi17Ci0Jc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zID0gJmFtcDt6cmFtLSZndDtwYXJhbXNbcHJpb107Ci0KLQl2ZnJlZShwYXJhbXMtJmd0O2RpY3QpOwotCXBhcmFtcy0mZ3Q7bGV2ZWwgPSBaQ09NUF9QQVJBTV9OT1RfU0VUOwotCXBhcmFtcy0mZ3Q7ZGVmbGF0ZS53aW5iaXRzID0gWkNPTVBfUEFSQU1fTk9UX1NFVDsKLQlwYXJhbXMtJmd0O2RpY3Rfc3ogPSAwOwotCXBhcmFtcy0mZ3Q7ZGljdCA9IE5VTEw7Ci19Ci0KIHN0YXRpYyBpbnQgY29tcF9wYXJhbXNfc3RvcmUoc3RydWN0IHpyYW0gKnpyYW0sIHUzMiBwcmlvLCBzMzIgbGV2ZWwsCiAJCQkgICAgIGNvbnN0IGNoYXIgKmRpY3RfcGF0aCwKIAkJCSAgICAgc3RydWN0IGRlZmxhdGVfcGFyYW1zICpkZWZsYXRlX3BhcmFtcykKQEAgLTE3MDAsOCAmIzQzOzE3MDEsMTIgQEAgc3RhdGljIGludCBjb21wX3BhcmFtc19zdG9yZShzdHJ1Y3QgenJhbSAqenJhbSwgdTMyIHByaW8sIHMzMiBsZXZlbCwKIAkJCQkJCUlOVF9NQVgsCiAJCQkJCQlOVUxMLAogCQkJCQkJUkVBRElOR19QT0xJQ1kpOwotCQlpZiAoc3ogJmx0OyAwKQomIzQzOwkJaWYgKHN6ICZsdDs9IDApIHsKJiM0MzsJCQlwcl9lcnIoJiMzNDtmYWlsZWQgdG8gbG9hZCBkaWN0aW9uYXJ5ICVzIChlcnI9JXpkKVxuJiMzNDssCiYjNDM7CQkJICAgICAgIGRpY3RfcGF0aCwgc3opOwomIzQzOwogCQkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CQl9CiAJfQogCiAJenJhbS0mZ3Q7cGFyYW1zW3ByaW9dLmRpY3Rfc3ogPSBzejsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTk6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDY1MAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE5MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFpSQU0gUGF0Y2ggU2VyaWVzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHNlcmllcyB0aGF0IHR3ZWFrcyB0aGUgYGRyaXZlcnMvYmxvY2svenJhbS9gIGNvZGUuIEZyb20gd2hhdCBJIGNhbiBzZWUsIGl0JiMzOTtzIGFsbCBhYm91dCBib2xzdGVyaW5nIHRoZSBjb21wcmVzc2lvbiBwYXJhbWV0ZXIgdmFsaWRhdGlvbiBhY3Jvc3MgdGhlIHZhcmlvdXMgenJhbSBiYWNrZW5kcyDigJMgODQyLCBkZWZsYXRlLCBsejQsIGx6NGhjLCBsem8sIGx6b3JsZSwgYW5kIHpzdGQuIEdvb2QsIHdlIG5lZWQgcm9idXN0IHZhbGlkYXRpb24uIEl0IGFsc28gbG9va3MgbGlrZSB0aGVyZSBoYXZlIGJlZW4gc29tZSB1cGRhdGVzIHRvIGBjb21wX3BhcmFtc19yZXNldGAgYW5kIGBfX2NvbXBfYWxnb3JpdGhtX3N0b3JlYCBpbiBgenJhbV9kcnYuY2AsIGVuc3VyaW5nIHRoYXQgdGhlc2UgcGFyYW1ldGVycyBnZXQgcmVzZXQgY29ycmVjdGx5IHdoZW4gdGhlIGNvbXByZXNzaW9uIGFsZ29yaXRobSBpcyBzd2l0Y2hlZC4gUGx1cywgdGhlcmUmIzM5O3MgYSBuaWNlIGFkZGl0aW9uIG9mIGFuIGVycm9yIGxvZyBpZiBkaWN0aW9uYXJ5IGxvYWRpbmcgZmFpbHMsIGFuZCBhIGNvcnJlY3Rpb24gZm9yIGEgY29tcGFyaXNvbjogbm93IGNoZWNraW5nIGZvciBgc3ogJmx0Oz0gMGAgaW5zdGVhZCBvZiBqdXN0IGBzeiAmbHQ7IDBgLgoKVGhlIGtleSBxdWVzdGlvbiBpcywgYXJlIHRoZXNlIGNoYW5nZXMgYWN0dWFsbHkgKnJlYWNoYWJsZSo/IEFuZCwgYXJlIHRoZXkgZXZlbiB3b3J0aCB0aGUgZWZmb3J0IHRvIGZ1eno/IFpyYW0gaXMgYSBibG9jayBkZXZpY2UsIGFuZCBmcm9tIG15IGV4cGVyaWVuY2UsIEkga25vdyBpdCYjMzk7cyBjb25maWd1cmVkIHZpYSBzeXNmcywgcmlnaHQ/IFdoaWNoLCBJIGFsc28ga25vdywgaXMgcGVyZmVjdCBmb3Igc3l6a2FsbGVyLCBzbyB0aGlzIGxvb2tzIHByb21pc2luZyEgSSBuZWVkIHRvIHF1aWNrbHkgaWRlbnRpZnkgdGhlIHJlbGV2YW50IHN5c2ZzIGhhbmRsZXJzIGZvciB6cmFtLiBUaGF0JiMzOTtzIHRoZSBmaXJzdCBzdGVwIGluIGRldGVybWluaW5nIGhvdyBlYXNpbHkgd2UgY2FuIHRyaWdnZXIgdGhlc2UgbmV3IHZhbGlkYXRpb24gY2hlY2tzIGFuZCBjb2RlIHBhdGhzLiBMZXQmIzM5O3Mgc2VlIGlmIHdlIGNhbiBnZXQgc29tZSBnb29kIGNvdmVyYWdlIGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTk6MDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X19jb21wX2FsZ29yaXRobV9zdG9yZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svenJhbS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM9MTY1NT1zdGF0aWMgdm9pZCBjb21wX3BhcmFtc19yZXNldChzdHJ1Y3QgenJhbSAqenJhbSwgdTMyIHByaW8pXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMTY2NS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjE2NjY6c3RhdGljIGludCBfX2NvbXBfYWxnb3JpdGhtX3N0b3JlKHN0cnVjdCB6cmFtICp6cmFtLCB1MzIgcHJpbywgY29uc3QgY2hhciAqYnVmKVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMTY2Ny17XG4tLVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM9MTgwOT1zdGF0aWMgc3NpemVfdCBjb21wX2FsZ29yaXRobV9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMTgxNi1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjE4MTc6XHRyZXQgPSBfX2NvbXBfYWxnb3JpdGhtX3N0b3JlKHpyYW0sIFpSQU1fUFJJTUFSWV9DT01QLCBidWYpO1xuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMTgxOC1cdHJldHVybiByZXQgPyByZXQgOiBsZW47XG4tLVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM9MTg0MT1zdGF0aWMgc3NpemVfdCByZWNvbXBfYWxnb3JpdGhtX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0xODc3LVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MTg3ODpcdHJldCA9IF9fY29tcF9hbGdvcml0aG1fc3RvcmUoenJhbSwgcHJpbywgYWxnKTtcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTE4NzktXHRyZXR1cm4gcmV0ID8gcmV0IDogbGVuO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE5OjA2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU1NjgKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgZnJvbSBteSBwZXJzcGVjdGl2ZToKCioqRGVlcCBEaXZlIGludG8gQWxnb3JpdGhtIFN0b3JhZ2UqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW50ZXJuYWwgZmxvdyBzdGFydHMgd2l0aCBgX19jb21wX2FsZ29yaXRobV9zdG9yZWAgYW5kIGl0JiMzOTtzIGJlaW5nIGNhbGxlZCBmcm9tIGJvdGggYGNvbXBfYWxnb3JpdGhtX3N0b3JlYCBhbmQgYHJlY29tcF9hbGdvcml0aG1fc3RvcmVgLiBUaGF0JiMzOTtzIHRoZSBjb3JlLiBNeSBpbnN0aW5jdCB0ZWxscyBtZSB0byBpbW1lZGlhdGVseSBpbnZlc3RpZ2F0ZSB0aGUgYGNvbXBfcGFyYW1zX3N0b3JlYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoZSBwYXJhbWV0ZXJzIGFyZSBiZWluZyBoYW5kbGVkLCBzdG9yZWQsIGFuZCBwb3RlbnRpYWxseSBpbmZsdWVuY2luZyB0aGlzIGVudGlyZSBzdG9yYWdlIHByb2Nlc3MgZm9yIGFsZ29yaXRobXMuIFRoaXMgZmVlbHMgbGlrZSBhIGNyaXRpY2FsIG5vZGUgdG8gdW5kZXJzdGFuZCB0aGUgZnVsbCBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE5OjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbXBfcGFyYW1zX3N0b3JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay96cmFtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0xNjY2PXN0YXRpYyBpbnQgX19jb21wX2FsZ29yaXRobV9zdG9yZShzdHJ1Y3QgenJhbSAqenJhbSwgdTMyIHByaW8sIGNvbnN0IGNoYXIgKmJ1Zilcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0xNjg5LVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MTY5MDpzdGF0aWMgaW50IGNvbXBfcGFyYW1zX3N0b3JlKHN0cnVjdCB6cmFtICp6cmFtLCB1MzIgcHJpbywgczMyIGxldmVsLFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMTY5MS1cdFx0XHQgICAgIGNvbnN0IGNoYXIgKmRpY3RfcGF0aCxcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0xNzE4PXN0YXRpYyBzc2l6ZV90IGFsZ29yaXRobV9wYXJhbXNfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTE3OTItXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzoxNzkzOlx0cmV0ID0gY29tcF9wYXJhbXNfc3RvcmUoenJhbSwgcHJpbywgbGV2ZWwsIGRpY3RfcGF0aCwgXHUwMDI2ZGVmbGF0ZV9wYXJhbXMpO1xuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMTc5NC1cdHJldHVybiByZXQgPyByZXQgOiBsZW47XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTk6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjA1OQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDQyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIEFsZ29yaXRobSBQYXJhbWV0ZXIgSGFuZGxpbmcqKgoKUmlnaHQsIHNvIGBhbGdvcml0aG1fcGFyYW1zX3N0b3JlYCBpcyB0aGUgc3lzZnMgaGFuZGxlciBmb3IgYGFsZ29yaXRobV9wYXJhbXNgLiBUaGF0IG1ha2VzIHNlbnNlOyBpdCYjMzk7cyB0aGUgaW50ZXJmYWNlIGZvciBleHRlcm5hbCBjb25maWd1cmF0aW9uLiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aG9zZSBwYXJhbWV0ZXJzIGFyZSBhY3R1YWxseSAqdXNlZCouIEkgc2hvdWxkIHJlYWxseSBkaWcgaW50byB0aGUgaW5pdGlhbGl6YXRpb24gcHJvY2VzcyBvZiB6Y29tcC4gTGV0JiMzOTtzIHNlZS4uLiAqenN0ZF9zZXR1cF9wYXJhbXMqIGFuZCBpdHMgaWxrIGFyZSBjYWxsZWQgZHVyaW5nIHpjb21wIGluaXRpYWxpemF0aW9uLiBUaG9zZSBmdW5jdGlvbnMgYXJlIGdvaW5nIHRvIGJlIGtleSwgSSBiZXQuIEkgbmVlZCB0byB0cmFjZSB0aGUgZmxvdyBmcm9tIHN5c2ZzIGlucHV0IHRocm91Z2ggdG8gdGhlIGFwcGxpY2F0aW9uIG9mIHRoZSBjb21wcmVzc2lvbi9kZWNvbXByZXNzaW9uIGFsZ29yaXRobSBwYXJhbWV0ZXJzLiBVbmRlcnN0YW5kaW5nIHRoZSBkZXBlbmRlbmNpZXMgd2lsbCByZWFsbHkgaW1wcm92ZSBteSBkZWJ1Z2dpbmcgc2tpbGxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE5OjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3pzdGRfc2V0dXBfcGFyYW1zJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay96cmFtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF96c3RkLmM9Mzg9c3RhdGljIHZvaWQgenN0ZF9yZWxlYXNlX3BhcmFtcyhzdHJ1Y3QgemNvbXBfcGFyYW1zICpwYXJhbXMpXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jLTUwLVxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jOjUxOnN0YXRpYyBpbnQgenN0ZF9zZXR1cF9wYXJhbXMoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKVxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jLTUyLXtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF96c3RkLmM9MjEyPWNvbnN0IHN0cnVjdCB6Y29tcF9vcHMgYmFja2VuZF96c3RkID0ge1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX3pzdGQuYy0yMTYtXHQuZGVzdHJveV9jdHhcdD0genN0ZF9kZXN0cm95LFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jOjIxNzpcdC5zZXR1cF9wYXJhbXNcdD0genN0ZF9zZXR1cF9wYXJhbXMsXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF96c3RkLmMtMjE4LVx0LnJlbGVhc2VfcGFyYW1zXHQ9IHpzdGRfcmVsZWFzZV9wYXJhbXMsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTk6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjU0MwoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipEaWdnaW5nIGludG8gdGhlIENvbXByZXNzaW9uIENvbnRleHQqKgoKT2theSwgc28gYHNldHVwX3BhcmFtc2AgZ2V0cyB0cmlnZ2VyZWQgd2hlbmV2ZXIgYSBjb21wcmVzc2lvbiBjb250ZXh0IGlzIHNwdW4gdXAsIHJpZ2h0PyBUaGF0JiMzOTtzIHRoZSBrZXkuIFRoYXQgdGVsbHMgbWUgYSBsb3QgYWJvdXQgaXRzIHBvdGVudGlhbCBpbXBhY3QuIExldCBtZSBzZWUuLi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlcmUgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aGluIHRoZSBjb2RlYmFzZS4gSXQmIzM5O3MgdGltZSB0byB0cmFjZSB0aGUgZXhlY3V0aW9uIHBhdGguIFRoaXMga2luZCBvZiBzZXR1cCBmdW5jdGlvbiBpcyB1c3VhbGx5IGNyaXRpY2FsIGZvciBpbml0aWFsIGNvbmZpZ3VyYXRpb24sIHJlc291cmNlIGFsbG9jYXRpb24sIG9yIHBhcmFtZXRlciB2YWxpZGF0aW9uIGZvciB0aGUgY29tcHJlc3Npb24gcHJvY2Vzcy4gVW5kZXJzdGFuZGluZyB0aGUgY2FsbCBzaXRlcyBvZiBgc2V0dXBfcGFyYW1zYCBpcyBjcnVjaWFsIGZvciBkZWJ1Z2dpbmcsIHBlcmZvcm1hbmNlIGFuYWx5c2lzLCBvciBhbnkgbW9kaWZpY2F0aW9uIG9mIGNvbXByZXNzaW9uIHBhcmFtZXRlcnMuIExldCYjMzk7cyBzZWUgd2hlcmUgdGhpcyBpcyB1c2VkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxOTowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZXR1cF9wYXJhbXMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL3pyYW0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kXzg0Mi5jPTEwPXN0YXRpYyB2b2lkIHJlbGVhc2VfcGFyYW1zXzg0MihzdHJ1Y3QgemNvbXBfcGFyYW1zICpwYXJhbXMpXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfODQyLmMtMTMtXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF84NDIuYzoxNDpzdGF0aWMgaW50IHNldHVwX3BhcmFtc184NDIoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKVxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfODQyLmMtMTUte1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kXzg0Mi5jPTYxPWNvbnN0IHN0cnVjdCB6Y29tcF9vcHMgYmFja2VuZF84NDIgPSB7XG4tLVxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfODQyLmMtNjUtXHQuZGVzdHJveV9jdHhcdD0gZGVzdHJveV84NDIsXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF84NDIuYzo2NjpcdC5zZXR1cF9wYXJhbXNcdD0gc2V0dXBfcGFyYW1zXzg0MixcbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kXzg0Mi5jLTY3LVx0LnJlbGVhc2VfcGFyYW1zXHQ9IHJlbGVhc2VfcGFyYW1zXzg0Mixcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9kZWZsYXRlLmM9MTk9c3RhdGljIHZvaWQgZGVmbGF0ZV9yZWxlYXNlX3BhcmFtcyhzdHJ1Y3QgemNvbXBfcGFyYW1zICpwYXJhbXMpXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfZGVmbGF0ZS5jLTIyLVxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfZGVmbGF0ZS5jOjIzOnN0YXRpYyBpbnQgZGVmbGF0ZV9zZXR1cF9wYXJhbXMoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKVxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfZGVmbGF0ZS5jLTI0LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9kZWZsYXRlLmM9MTU5PWNvbnN0IHN0cnVjdCB6Y29tcF9vcHMgYmFja2VuZF9kZWZsYXRlID0ge1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2RlZmxhdGUuYy0xNjMtXHQuZGVzdHJveV9jdHhcdD0gZGVmbGF0ZV9kZXN0cm95LFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfZGVmbGF0ZS5jOjE2NDpcdC5zZXR1cF9wYXJhbXNcdD0gZGVmbGF0ZV9zZXR1cF9wYXJhbXMsXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9kZWZsYXRlLmMtMTY1LVx0LnJlbGVhc2VfcGFyYW1zXHQ9IGRlZmxhdGVfcmVsZWFzZV9wYXJhbXMsXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHo0LmM9MTU9c3RhdGljIHZvaWQgbHo0X3JlbGVhc2VfcGFyYW1zKHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcylcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sejQuYy0yNS1cbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6NC5jOjI2OnN0YXRpYyBpbnQgbHo0X3NldHVwX3BhcmFtcyhzdHJ1Y3QgemNvbXBfcGFyYW1zICpwYXJhbXMpXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sejQuYy0yNy17XG4tLVxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHo0LmM9MTQ2PWNvbnN0IHN0cnVjdCB6Y29tcF9vcHMgYmFja2VuZF9sejQgPSB7XG4tLVxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHo0LmMtMTUwLVx0LmRlc3Ryb3lfY3R4XHQ9IGx6NF9kZXN0cm95LFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHo0LmM6MTUxOlx0LnNldHVwX3BhcmFtc1x0PSBsejRfc2V0dXBfcGFyYW1zLFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHo0LmMtMTUyLVx0LnJlbGVhc2VfcGFyYW1zXHQ9IGx6NF9yZWxlYXNlX3BhcmFtcyxcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sejRoYy5jPTE1PXN0YXRpYyB2b2lkIGx6NGhjX3JlbGVhc2VfcGFyYW1zKHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcylcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sejRoYy5jLTE4LVxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHo0aGMuYzoxOTpzdGF0aWMgaW50IGx6NGhjX3NldHVwX3BhcmFtcyhzdHJ1Y3QgemNvbXBfcGFyYW1zICpwYXJhbXMpXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sejRoYy5jLTIwLXtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sejRoYy5jPTEyND1jb25zdCBzdHJ1Y3QgemNvbXBfb3BzIGJhY2tlbmRfbHo0aGMgPSB7XG4tLVxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHo0aGMuYy0xMjgtXHQuZGVzdHJveV9jdHhcdD0gbHo0aGNfZGVzdHJveSxcbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6NGhjLmM6MTI5Olx0LnNldHVwX3BhcmFtc1x0PSBsejRoY19zZXR1cF9wYXJhbXMsXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sejRoYy5jLTEzMC1cdC5yZWxlYXNlX3BhcmFtc1x0PSBsejRoY19yZWxlYXNlX3BhcmFtcyxcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sem8uYz05PXN0YXRpYyB2b2lkIGx6b19yZWxlYXNlX3BhcmFtcyhzdHJ1Y3QgemNvbXBfcGFyYW1zICpwYXJhbXMpXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvLmMtMTItXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sem8uYzoxMzpzdGF0aWMgaW50IGx6b19zZXR1cF9wYXJhbXMoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKVxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvLmMtMTQte1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6by5jPTU5PWNvbnN0IHN0cnVjdCB6Y29tcF9vcHMgYmFja2VuZF9sem8gPSB7XG4tLVxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvLmMtNjMtXHQuZGVzdHJveV9jdHhcdD0gbHpvX2Rlc3Ryb3ksXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sem8uYzo2NDpcdC5zZXR1cF9wYXJhbXNcdD0gbHpvX3NldHVwX3BhcmFtcyxcbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6by5jLTY1LVx0LnJlbGVhc2VfcGFyYW1zXHQ9IGx6b19yZWxlYXNlX3BhcmFtcyxcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sem9ybGUuYz05PXN0YXRpYyB2b2lkIGx6b3JsZV9yZWxlYXNlX3BhcmFtcyhzdHJ1Y3QgemNvbXBfcGFyYW1zICpwYXJhbXMpXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvcmxlLmMtMTItXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sem9ybGUuYzoxMzpzdGF0aWMgaW50IGx6b3JsZV9zZXR1cF9wYXJhbXMoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKVxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvcmxlLmMtMTQte1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6b3JsZS5jPTU5PWNvbnN0IHN0cnVjdCB6Y29tcF9vcHMgYmFja2VuZF9sem9ybGUgPSB7XG4tLVxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvcmxlLmMtNjMtXHQuZGVzdHJveV9jdHhcdD0gbHpvcmxlX2Rlc3Ryb3ksXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sem9ybGUuYzo2NDpcdC5zZXR1cF9wYXJhbXNcdD0gbHpvcmxlX3NldHVwX3BhcmFtcyxcbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6b3JsZS5jLTY1LVx0LnJlbGVhc2VfcGFyYW1zXHQ9IGx6b3JsZV9yZWxlYXNlX3BhcmFtcyxcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF96c3RkLmM9Mzg9c3RhdGljIHZvaWQgenN0ZF9yZWxlYXNlX3BhcmFtcyhzdHJ1Y3QgemNvbXBfcGFyYW1zICpwYXJhbXMpXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jLTUwLVxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jOjUxOnN0YXRpYyBpbnQgenN0ZF9zZXR1cF9wYXJhbXMoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKVxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jLTUyLXtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF96c3RkLmM9MjEyPWNvbnN0IHN0cnVjdCB6Y29tcF9vcHMgYmFja2VuZF96c3RkID0ge1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX3pzdGQuYy0yMTYtXHQuZGVzdHJveV9jdHhcdD0genN0ZF9kZXN0cm95LFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jOjIxNzpcdC5zZXR1cF9wYXJhbXNcdD0genN0ZF9zZXR1cF9wYXJhbXMsXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF96c3RkLmMtMjE4LVx0LnJlbGVhc2VfcGFyYW1zXHQ9IHpzdGRfcmVsZWFzZV9wYXJhbXMsXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL3pjb21wLmM9MTk3PXN0YXRpYyBpbnQgemNvbXBfaW5pdChzdHJ1Y3QgemNvbXAgKmNvbXAsIHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcylcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuYy0yMDUtXHRjb21wLVx1MDAzZXBhcmFtcyA9IHBhcmFtcztcbmRyaXZlcnMvYmxvY2svenJhbS96Y29tcC5jOjIwNjpcdHJldCA9IGNvbXAtXHUwMDNlb3BzLVx1MDAzZXNldHVwX3BhcmFtcyhjb21wLVx1MDAzZXBhcmFtcyk7XG5kcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuYy0yMDctXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96Y29tcC5oPTU3PXN0cnVjdCB6Y29tcF9vcHMge1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96Y29tcC5oLTY1LVxuZHJpdmVycy9ibG9jay96cmFtL3pjb21wLmg6NjY6XHRpbnQgKCpzZXR1cF9wYXJhbXMpKHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcyk7XG5kcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuaC02Ny1cdHZvaWQgKCpyZWxlYXNlX3BhcmFtcykoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTk6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODcwOAoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOgoKKipUcmFjaW5nIHRoZSBJbml0aWFsaXphdGlvbiBTZXF1ZW5jZSoqCgpPa2F5LCBzbyBgemNvbXBfaW5pdGAgaXMgdGhlIGZ1bmN0aW9uIHRoYXQga2lja3MgdGhpbmdzIG9mZi4gTXkgZmlyc3QgaW5zdGluY3QsIGFzIGFsd2F5cywgaXMgdG8gZm9sbG93IHRoZSBmbG93LiBJIHNlZSBpdCBjYWxscyBgc2V0dXBfcGFyYW1zYC4gVGhhdCYjMzk7cyB0aGUgZXhwZWN0ZWQgb3JkZXIsIGluaXRpYWxpemVzIHBhcmFtZXRlcnMgZmlyc3QuIE5vdywgdGhlIHJlYWwgcXVlc3Rpb24gaXMsIHdoZXJlIGRvZXMgYHpjb21wX2luaXRgIGdldCBjYWxsZWQgKmZyb20qPyBUaGF0JiMzOTtzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmUgYW5kIGhvdyB0aGlzIGNvbXBvbmVudCBmaXRzIGludG8gdGhlIGJpZ2dlciBwaWN0dXJlLiBUaW1lIHRvIHRyYWNrIGRvd24gdGhlIGNhbGwgc2l0ZXMgZm9yIGB6Y29tcF9pbml0YCBhbmQgZ2V0IHRoZSBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxOTowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt6Y29tcF9pbml0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay96cmFtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuYz0xODY9aW50IHpjb21wX2NwdV9kZWFkKHVuc2lnbmVkIGludCBjcHUsIHN0cnVjdCBobGlzdF9ub2RlICpub2RlKVxuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96Y29tcC5jLTE5Ni1cbmRyaXZlcnMvYmxvY2svenJhbS96Y29tcC5jOjE5NzpzdGF0aWMgaW50IHpjb21wX2luaXQoc3RydWN0IHpjb21wICpjb21wLCBzdHJ1Y3QgemNvbXBfcGFyYW1zICpwYXJhbXMpXG5kcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuYy0xOTgte1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96Y29tcC5jPTIzMz1zdHJ1Y3QgemNvbXAgKnpjb21wX2NyZWF0ZShjb25zdCBjaGFyICphbGcsIHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcylcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuYy0yNTUtXG5kcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuYzoyNTY6XHRlcnJvciA9IHpjb21wX2luaXQoY29tcCwgcGFyYW1zKTtcbmRyaXZlcnMvYmxvY2svenJhbS96Y29tcC5jLTI1Ny1cdGlmIChlcnJvcikge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxOTowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MTM2CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gYXMgaWYgdGhleSB3ZXJlIG15IG93bjoKCioqRGl2aW5nIGludG8gdGhlIFotQ29tcG9uZW50IEluaXRpYWxpemF0aW9uKioKCkFscmlnaHQsIHNvIGB6Y29tcF9jcmVhdGVgIGlzIHRoZSBmdW5jdGlvbiB0aGF0IGtpY2tzIG9mZiB0aGUgei1jb21wb25lbnQmIzM5O3MgbGlmZSBjeWNsZS4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGNoZWNrIHRoZSBmdW5jdGlvbiBjYWxscyDigJMgaXQmIzM5O3MgYSBnb29kIGFwcHJvYWNoIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgY29tcG9uZW50IGlzIGFjdHVhbGx5IHVzZWQuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBub3RpbmcgdGhhdCBgemNvbXBfY3JlYXRlYCBkaXJlY3RseSBjYWxscyBgemNvbXBfaW5pdGAuIEl0IGlzIGNhbGxpbmcgYHpjb21wX2luaXRgLCBzbyB0aGF0IGdpdmVzIG1lIGEgY3J1Y2lhbCBzdGFydGluZyBwb2ludCDigJMgYHpjb21wX2luaXRgIGlzIHByZXN1bWFibHkgcmVzcG9uc2libGUgZm9yIHNvbWUgaW5pdGlhbCBzZXR1cCwgZGF0YSBhbGxvY2F0aW9uLCBvciBjb25maWd1cmF0aW9uLiBTbyBJIGFtIGdvaW5nIHRvIHNlZSB3aGVyZSBgemNvbXBfY3JlYXRlYCBnZXRzIGNhbGxlZCwgYXMgdGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgaGFuZGxlIG9uIGhvdyB0aGUgei1jb21wb25lbnQgaXMgYmVpbmcgaW50ZWdyYXRlZCBpbnRvIHRoZSBicm9hZGVyIHN5c3RlbSBhbmQgdW5kZXJzdGFuZGluZyB0aGUgY29udGV4dCB0aGF0IG5lY2Vzc2l0YXRlcyBpbml0aWFsaXphdGlvbi4gTGV0JiMzOTtzIHRyYWNlIHRob3NlIGNhbGxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxOTowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt6Y29tcF9jcmVhdGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL3pyYW0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svenJhbS96Y29tcC5jPTIyNT12b2lkIHpjb21wX2Rlc3Ryb3koc3RydWN0IHpjb21wICpjb21wKVxuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96Y29tcC5jLTIzMi1cbmRyaXZlcnMvYmxvY2svenJhbS96Y29tcC5jOjIzMzpzdHJ1Y3QgemNvbXAgKnpjb21wX2NyZWF0ZShjb25zdCBjaGFyICphbGcsIHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcylcbmRyaXZlcnMvYmxvY2svenJhbS96Y29tcC5jLTIzNC17XG4tLVxuZHJpdmVycy9ibG9jay96cmFtL3pjb21wLmg9ODM9Y29uc3QgY2hhciAqemNvbXBfbG9va3VwX2JhY2tlbmRfbmFtZShjb25zdCBjaGFyICpjb21wKTtcbmRyaXZlcnMvYmxvY2svenJhbS96Y29tcC5oLTg0LVxuZHJpdmVycy9ibG9jay96cmFtL3pjb21wLmg6ODU6c3RydWN0IHpjb21wICp6Y29tcF9jcmVhdGUoY29uc3QgY2hhciAqYWxnLCBzdHJ1Y3QgemNvbXBfcGFyYW1zICpwYXJhbXMpO1xuZHJpdmVycy9ibG9jay96cmFtL3pjb21wLmgtODYtdm9pZCB6Y29tcF9kZXN0cm95KHN0cnVjdCB6Y29tcCAqY29tcCk7XG4tLVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM9Mjg1Nj1zdGF0aWMgc3NpemVfdCBkaXNrc2l6ZV9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTI4ODItXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzoyODgzOlx0XHRjb21wID0gemNvbXBfY3JlYXRlKHpyYW0tXHUwMDNlY29tcF9hbGdzW3ByaW9dLFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMjg4NC1cdFx0XHRcdCAgICBcdTAwMjZ6cmFtLVx1MDAzZXBhcmFtc1twcmlvXSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE5OjA2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk3NjIKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAyNTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgWnJhbSYjMzk7cyBDb21wcmVzc2lvbiBDb250ZXh0IENyZWF0aW9uKioKCk9rYXksIHNvIGBkaXNrc2l6ZV9zdG9yZWAgaXMgdGhlIGtleSDigJMgaXQgY2FsbHMgYHpjb21wX2NyZWF0ZWAuIFRoYXQgdGVsbHMgbWUgc2V0dGluZyB0aGUgZGlzayBzaXplLCB3aGljaCBpcyBob3cgd2UgaW5pdGlhbGl6ZSB0aGUgenJhbSBkZXZpY2UsIGlzIHdoZXJlIHRoZSBjb21wcmVzc2lvbiBjb250ZXh0cyBnZXQgY3JlYXRlZC4gSW50ZXJlc3RpbmcuIE5vdywgbG9va2luZyBhdCB0aGUgc3lzZnMgaGFuZGxlcnMsIGBhbGdvcml0aG1fcGFyYW1zX3N0b3JlYCwgYGNvbXBfYWxnb3JpdGhtX3N0b3JlYCwgYHJlY29tcF9hbGdvcml0aG1fc3RvcmVgLCBhbmQgYGRpc2tzaXplX3N0b3JlYCBhcmUgYWxsIGRpcmVjdGx5IHJlYWNoYWJsZSBhbmQgcmlwZSBmb3IgZnV6emluZy4gR29vZC4KClRoZSBwYXRjaCBpbXBsZW1lbnRzIHZhbGlkYXRpb24sIHdoaWNoIGlzIGV4YWN0bHkgd2hhdCBJJiMzOTtkIGV4cGVjdC4gTm93LCBpbnZhbGlkIHBhcmFtZXRlcnMgc2hvdWxkIHRyaWdnZXIgYW4gYC1FT1BOT1RTVVBQYCBvciBgLUVJTlZBTGAgZXJyb3IuIFRoYXQmIzM5O3MgZ29vZCwgcHJlZGljdGFibGUgZnVuY3Rpb25hbCBsb2dpYyB0aGF0IEkgY2FuIGV4cGxvaXQgd2l0aCBmdXp6aW5nLiBNeSBpbW1lZGlhdGUgZm9jdXMgc3ltYm9scyBuZWVkIHRvIGJlIHRob3NlIHN5c2ZzIGhhbmRsZXJzIOKAkyBgYWxnb3JpdGhtX3BhcmFtc19zdG9yZWAsIGBjb21wX2FsZ29yaXRobV9zdG9yZWAsIGByZWNvbXBfYWxnb3JpdGhtX3N0b3JlYCwgYGRpc2tzaXplX3N0b3JlYCwgdGhlbiBgemNvbXBfY3JlYXRlYCBhbmQgYHpjb21wX2luaXRgLCBhbmQgYWxzbyBhbGwgdGhlIGBzZXR1cF9wYXJhbXNgIGZ1bmN0aW9uczogYHNldHVwX3BhcmFtc184NDJgLCBgZGVmbGF0ZV9zZXR1cF9wYXJhbXNgLCBgbHo0X3NldHVwX3BhcmFtc2AsIGBsejRoY19zZXR1cF9wYXJhbXNgLCBgbHpvX3NldHVwX3BhcmFtc2AsIGBsem9ybGVfc2V0dXBfcGFyYW1zYCwgYW5kIGB6c3RkX3NldHVwX3BhcmFtc2AuCgpUaW1lIHRvIGNoZWNrIHRoZSBLY29uZmlnIGFuZCBzZWUgd2hhdCBvcHRpb25zIGFyZSBhdmFpbGFibGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE5OjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBaUkFNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay96cmFtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjI6Y29uZmlnIFpSQU1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtDb21wcmVzc2VkIFJBTSBibG9jayBkZXZpY2Ugc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTE2LVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6MTc6Y29uZmlnIFpSQU1fQkFDS0VORF9MWjRcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTE4LVx0Ym9vbCBcJiMzNDtsejQgY29tcHJlc3Npb24gc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTIyLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6MjM6Y29uZmlnIFpSQU1fQkFDS0VORF9MWjRIQ1xuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMjQtXHRib29sIFwmIzM0O2x6NGhjIGNvbXByZXNzaW9uIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0yOC1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjI5OmNvbmZpZyBaUkFNX0JBQ0tFTkRfWlNURFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMzAtXHRib29sIFwmIzM0O3pzdGQgY29tcHJlc3Npb24gc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTM0LVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6MzU6Y29uZmlnIFpSQU1fQkFDS0VORF9ERUZMQVRFXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0zNi1cdGJvb2wgXCYjMzQ7ZGVmbGF0ZSBjb21wcmVzc2lvbiBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNDAtXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo0MTpjb25maWcgWlJBTV9CQUNLRU5EXzg0MlxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNDItXHRib29sIFwmIzM0Ozg0MiBjb21wcmVzc2lvbiBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNDYtXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo0Nzpjb25maWcgWlJBTV9CQUNLRU5EX0ZPUkNFX0xaT1xuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNDgtXHRkZXBlbmRzIG9uIFpSQU1cbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy01Mi1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjUzOmNvbmZpZyBaUkFNX0JBQ0tFTkRfTFpPXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy01NC1cdGJvb2wgXCYjMzQ7bHpvIGFuZCBsem8tcmxlIGNvbXByZXNzaW9uIHN1cHBvcnRcJiMzNDsgaWYgIVpSQU1fQkFDS0VORF9GT1JDRV9MWk9cbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZz02MD1jaG9pY2Vcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy02NC1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjY1OmNvbmZpZyBaUkFNX0RFRl9DT01QX0xaT1JMRVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNjYtXHRib29sIFwmIzM0O2x6by1ybGVcJiMzNDtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy02OC1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjY5OmNvbmZpZyBaUkFNX0RFRl9DT01QX0xaT1xuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNzAtXHRib29sIFwmIzM0O2x6b1wmIzM0O1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTcyLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6NzM6Y29uZmlnIFpSQU1fREVGX0NPTVBfTFo0XG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy03NC1cdGJvb2wgXCYjMzQ7bHo0XCYjMzQ7XG4tLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNzYtXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo3Nzpjb25maWcgWlJBTV9ERUZfQ09NUF9MWjRIQ1xuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNzgtXHRib29sIFwmIzM0O2x6NGhjXCYjMzQ7XG4tLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctODAtXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo4MTpjb25maWcgWlJBTV9ERUZfQ09NUF9aU1REXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy04Mi1cdGJvb2wgXCYjMzQ7enN0ZFwmIzM0O1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTg0LVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6ODU6Y29uZmlnIFpSQU1fREVGX0NPTVBfREVGTEFURVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctODYtXHRib29sIFwmIzM0O2RlZmxhdGVcJiMzNDtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy04OC1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjg5OmNvbmZpZyBaUkFNX0RFRl9DT01QXzg0MlxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctOTAtXHRib29sIFwmIzM0Ozg0MlwmIzM0O1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnPTkzPWVuZGNob2ljZVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctOTQtXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo5NTpjb25maWcgWlJBTV9ERUZfQ09NUFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctOTYtXHRzdHJpbmdcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xMDYtXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzoxMDc6Y29uZmlnIFpSQU1fV1JJVEVCQUNLXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xMDgtICAgICAgIGJvb2wgXCYjMzQ7V3JpdGUgYmFjayBpbmNvbXByZXNzaWJsZSBvciBpZGxlIHBhZ2UgdG8gYmFja2luZyBkZXZpY2VcJiMzNDtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xMjAtXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzoxMjE6Y29uZmlnIFpSQU1fVFJBQ0tfRU5UUllfQUNUSU1FXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xMjItXHRib29sIFwmIzM0O1RyYWNrIGFjY2VzcyB0aW1lIG9mIHpyYW0gZW50cmllc1wmIzM0O1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTEyOC1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjEyOTpjb25maWcgWlJBTV9NRU1PUllfVFJBQ0tJTkdcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTEzMC1cdGJvb2wgXCYjMzQ7VHJhY2sgelJhbSBibG9jayBzdGF0dXNcJiMzNDtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xMzktXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzoxNDA6Y29uZmlnIFpSQU1fTVVMVElfQ09NUFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMTQxLVx0Ym9vbCBcJiMzNDtFbmFibGUgbXVsdGlwbGUgY29tcHJlc3Npb24gc3RyZWFtc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxOTowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTY0NwoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDkwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipaUkFNIENvbmZpZ3VyYXRpb24gQ29uc2lkZXJhdGlvbnMqKgoKQWxyaWdodCwgSSYjMzk7bSB0aGlua2luZyB3ZSBuZWVkIHRvIHNlcmlvdXNseSBjb25zaWRlciBlbmFibGluZyBaUkFNLCB0aGF0JiMzOTtzIGEgZ2l2ZW4uIEJ1dCBqdXN0IGVuYWJsaW5nIFpSQU0gYWxvbmUgaXNuJiMzOTt0IGVub3VnaDsgd2UgbmVlZCB0byBvcHRpbWl6ZSBpdC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIG1ha2UgYWxsIGNvbXByZXNzaW9uIGJhY2tlbmRzIGF2YWlsYWJsZTogYExaNGAsIGBMWjRIQ2AsIGBaU1REYCwgYERFRkxBVEVgLCBgODQyYCwgYExaT2AgYW5kIGBaUkFNX01VTFRJX0NPTVBgLiBJIGtub3cgZWFjaCBoYXMgaXRzIG93biBzdHJlbmd0aHMgYW5kIHdlYWtuZXNzZXMgZGVwZW5kaW5nIG9uIHRoZSB3b3JrbG9hZCBhbmQgaGFyZHdhcmUsIHNvIGhhdmluZyB0aGVtIGFsbCBhdmFpbGFibGUgc2VlbXMgbGlrZSB0aGUgbW9zdCBzZW5zaWJsZSBhcHByb2FjaCB0byBtYXhpbWl6ZSBmbGV4aWJpbGl0eSwgZXNwZWNpYWxseSBpbiBhIGR5bmFtaWMgZW52aXJvbm1lbnQuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIGRlcGVuZGVuY2llcy4gVGhlcmUgY291bGQgYmUgb3RoZXIgZmFjdG9ycyB0aGF0IG5lZWQgdG8gYmUgaW4gcGxhY2UuIFdlIHdvdWxkbiYjMzk7dCB3YW50IHRvIGxlYXZlIG91dCBhbnkgbmVjZXNzYXJ5IGZlYXR1cmVzLiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhvc2UgYXJlIGFuZCBtYWtlIHN1cmUgZXZlcnl0aGluZyBpcyBpbiBwbGFjZSBmb3IgYSBwcm9wZXIgaW1wbGVtZW50YXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE5OjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlcGVuZHMgb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZz0yPWNvbmZpZyBaUkFNXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7Q29tcHJlc3NlZCBSQU0gYmxvY2sgZGV2aWNlIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjQ6XHRkZXBlbmRzIG9uIEJMT0NLIFx1MDAyNlx1MDAyNiBTWVNGUyBcdTAwMjZcdTAwMjYgTU1VXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy01LVx0c2VsZWN0IFpTTUFMTE9DXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc9MTc9Y29uZmlnIFpSQU1fQkFDS0VORF9MWjRcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTE4LVx0Ym9vbCBcJiMzNDtsejQgY29tcHJlc3Npb24gc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6MTk6XHRkZXBlbmRzIG9uIFpSQU1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTIwLVx0c2VsZWN0IExaNF9DT01QUkVTU1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnPTIzPWNvbmZpZyBaUkFNX0JBQ0tFTkRfTFo0SENcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTI0LVx0Ym9vbCBcJiMzNDtsejRoYyBjb21wcmVzc2lvbiBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzoyNTpcdGRlcGVuZHMgb24gWlJBTVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMjYtXHRzZWxlY3QgTFo0SENfQ09NUFJFU1Ncbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZz0yOT1jb25maWcgWlJBTV9CQUNLRU5EX1pTVERcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTMwLVx0Ym9vbCBcJiMzNDt6c3RkIGNvbXByZXNzaW9uIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjMxOlx0ZGVwZW5kcyBvbiBaUkFNXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0zMi1cdHNlbGVjdCBaU1REX0NPTVBSRVNTXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc9MzU9Y29uZmlnIFpSQU1fQkFDS0VORF9ERUZMQVRFXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0zNi1cdGJvb2wgXCYjMzQ7ZGVmbGF0ZSBjb21wcmVzc2lvbiBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzozNzpcdGRlcGVuZHMgb24gWlJBTVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMzgtXHRzZWxlY3QgWkxJQl9ERUZMQVRFXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc9NDE9Y29uZmlnIFpSQU1fQkFDS0VORF84NDJcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTQyLVx0Ym9vbCBcJiMzNDs4NDIgY29tcHJlc3Npb24gc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6NDM6XHRkZXBlbmRzIG9uIFpSQU1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTQ0LVx0c2VsZWN0IDg0Ml9DT01QUkVTU1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnPTQ3PWNvbmZpZyBaUkFNX0JBQ0tFTkRfRk9SQ0VfTFpPXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo0ODpcdGRlcGVuZHMgb24gWlJBTVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNDktXHRkZWZfYm9vbCAhWlJBTV9CQUNLRU5EX0xaNCBcdTAwMjZcdTAwMjYgIVpSQU1fQkFDS0VORF9MWjRIQyBcdTAwMjZcdTAwMjYgXFxcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZz01Mz1jb25maWcgWlJBTV9CQUNLRU5EX0xaT1xuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNTQtXHRib29sIFwmIzM0O2x6byBhbmQgbHpvLXJsZSBjb21wcmVzc2lvbiBzdXBwb3J0XCYjMzQ7IGlmICFaUkFNX0JBQ0tFTkRfRk9SQ0VfTFpPXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo1NTpcdGRlcGVuZHMgb24gWlJBTVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNTYtXHRkZWZhdWx0IFpSQU1fQkFDS0VORF9GT1JDRV9MWk9cbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZz02MD1jaG9pY2Vcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy02Mi1cdGRlZmF1bHQgWlJBTV9ERUZfQ09NUF9MWk9STEVcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjYzOlx0ZGVwZW5kcyBvbiBaUkFNXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy02NC1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnPTY1PWNvbmZpZyBaUkFNX0RFRl9DT01QX0xaT1JMRVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNjYtXHRib29sIFwmIzM0O2x6by1ybGVcJiMzNDtcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjY3Olx0ZGVwZW5kcyBvbiBaUkFNX0JBQ0tFTkRfTFpPXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy02OC1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnPTY5PWNvbmZpZyBaUkFNX0RFRl9DT01QX0xaT1xuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNzAtXHRib29sIFwmIzM0O2x6b1wmIzM0O1xuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6NzE6XHRkZXBlbmRzIG9uIFpSQU1fQkFDS0VORF9MWk9cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTcyLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc9NzM9Y29uZmlnIFpSQU1fREVGX0NPTVBfTFo0XG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy03NC1cdGJvb2wgXCYjMzQ7bHo0XCYjMzQ7XG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo3NTpcdGRlcGVuZHMgb24gWlJBTV9CQUNLRU5EX0xaNFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNzYtXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZz03Nz1jb25maWcgWlJBTV9ERUZfQ09NUF9MWjRIQ1xuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNzgtXHRib29sIFwmIzM0O2x6NGhjXCYjMzQ7XG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo3OTpcdGRlcGVuZHMgb24gWlJBTV9CQUNLRU5EX0xaNEhDXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy04MC1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnPTgxPWNvbmZpZyBaUkFNX0RFRl9DT01QX1pTVERcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTgyLVx0Ym9vbCBcJiMzNDt6c3RkXCYjMzQ7XG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo4MzpcdGRlcGVuZHMgb24gWlJBTV9CQUNLRU5EX1pTVERcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTg0LVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc9ODU9Y29uZmlnIFpSQU1fREVGX0NPTVBfREVGTEFURVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctODYtXHRib29sIFwmIzM0O2RlZmxhdGVcJiMzNDtcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjg3Olx0ZGVwZW5kcyBvbiBaUkFNX0JBQ0tFTkRfREVGTEFURVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctODgtXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZz04OT1jb25maWcgWlJBTV9ERUZfQ09NUF84NDJcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTkwLVx0Ym9vbCBcJiMzNDs4NDJcJiMzNDtcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjkxOlx0ZGVwZW5kcyBvbiBaUkFNX0JBQ0tFTkRfODQyXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy05Mi1cbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZz05NT1jb25maWcgWlJBTV9ERUZfQ09NUFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctOTYtXHRzdHJpbmdcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjk3Olx0ZGVwZW5kcyBvbiBaUkFNXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy05OC1cdGRlZmF1bHQgXCYjMzQ7bHpvLXJsZVwmIzM0OyBpZiBaUkFNX0RFRl9DT01QX0xaT1JMRVxuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnPTEwNz1jb25maWcgWlJBTV9XUklURUJBQ0tcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTEwOC0gICAgICAgYm9vbCBcJiMzNDtXcml0ZSBiYWNrIGluY29tcHJlc3NpYmxlIG9yIGlkbGUgcGFnZSB0byBiYWNraW5nIGRldmljZVwmIzM0O1xuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6MTA5OiAgICAgICBkZXBlbmRzIG9uIFpSQU1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTExMC0gICAgICAgaGVscFxuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnPTEyMT1jb25maWcgWlJBTV9UUkFDS19FTlRSWV9BQ1RJTUVcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTEyMi1cdGJvb2wgXCYjMzQ7VHJhY2sgYWNjZXNzIHRpbWUgb2YgenJhbSBlbnRyaWVzXCYjMzQ7XG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzoxMjM6XHRkZXBlbmRzIG9uIFpSQU1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTEyNC1cdGhlbHBcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZz0xMjk9Y29uZmlnIFpSQU1fTUVNT1JZX1RSQUNLSU5HXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xMzAtXHRib29sIFwmIzM0O1RyYWNrIHpSYW0gYmxvY2sgc3RhdHVzXCYjMzQ7XG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzoxMzE6XHRkZXBlbmRzIG9uIFpSQU0gXHUwMDI2XHUwMDI2IERFQlVHX0ZTXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xMzItXHRzZWxlY3QgWlJBTV9UUkFDS19FTlRSWV9BQ1RJTUVcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZz0xNDA9Y29uZmlnIFpSQU1fTVVMVElfQ09NUFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMTQxLVx0Ym9vbCBcJiMzNDtFbmFibGUgbXVsdGlwbGUgY29tcHJlc3Npb24gc3RyZWFtc1wmIzM0O1xuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6MTQyOlx0ZGVwZW5kcyBvbiBaUkFNXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xNDMtXHRoZWxwXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE5OjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzODI5CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlpSQU0gQ29uZmlndXJhdGlvbiBhbmQgU3ltYm9sIEFuYWx5c2lzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGUgWlJBTSBjb25maWd1cmF0aW9uLiBUaGUgYmFzZSBkZXBlbmRlbmNpZXPigJRgQkxPQ0tgLCBgU1lTRlNgLCBhbmQgYE1NVWDigJRhcmUgcHJldHR5IHN0YW5kYXJkIGFuZCBleHBlY3RlZC4gTm90aGluZyB0byB3b3JyeSBhYm91dCB0aGVyZS4gVGhlbiwgaXQmIzM5O3Mgc3VnZ2VzdGluZyBlbmFibGluZyBgWlJBTWAgaXRzZWxmLCBhbG9uZyB3aXRoIGEgc3VpdGUgb2YgY29tcHJlc3Npb24gYmFja2VuZHM6IGBaUkFNX0JBQ0tFTkRfTFo0YCwgYFpSQU1fQkFDS0VORF9MWjRIQ2AsIGBaUkFNX0JBQ0tFTkRfWlNURGAsIGBaUkFNX0JBQ0tFTkRfREVGTEFURWAsIGBaUkFNX0JBQ0tFTkRfODQyYCwgYFpSQU1fQkFDS0VORF9MWk9gLCBhbmQgYFpSQU1fTVVMVElfQ09NUGAuIEdvb2QsIHdlJiMzOTtyZSBjb3ZlcmluZyB0aGUgYmFzZXMgd2l0aCB0aG9zZSBvcHRpb25zLgoKTm93LCB0aGUgZm9jdXMgc3ltYm9scyBhcmUgd2hlcmUgaXQgZ2V0cyBpbnRlcmVzdGluZy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGFyY2hpdGVjdHVyZSBvZiB0aGVzZSBaUkFNIGRyaXZlcnMuIEkgc2VlOiBgYWxnb3JpdGhtX3BhcmFtc19zdG9yZWAsIGBjb21wX2FsZ29yaXRobV9zdG9yZWAsIGByZWNvbXBfYWxnb3JpdGhtX3N0b3JlYCwgYGRpc2tzaXplX3N0b3JlYCwgYHpjb21wX2NyZWF0ZWAsIGB6Y29tcF9pbml0YCwgYHNldHVwX3BhcmFtc184NDJgLCBgZGVmbGF0ZV9zZXR1cF9wYXJhbXNgLCBgbHo0X3NldHVwX3BhcmFtc2AsIGBsejRoY19zZXR1cF9wYXJhbXNgLCBgbHpvX3NldHVwX3BhcmFtc2AsIGBsem9ybGVfc2V0dXBfcGFyYW1zYCwgYHpzdGRfc2V0dXBfcGFyYW1zYCwgYW5kIGBjb21wX3BhcmFtc19zdG9yZWAuIFRoZXNlIGFsbCBsb29rIGxpa2UgcG90ZW50aWFsbHkgaW1wb3J0YW50IGVudHJ5IHBvaW50cyBmb3IgdGhlIGNvbXByZXNzaW9uIGFsZ29yaXRobXMgb3IgcGFyYW1ldGVyIHNldHRpbmcuCgpUaGUgcHJvbXB0IHNwZWNpZmljYWxseSBtZW50aW9ucyBwcmVmZXJyaW5nIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucy4gU28gSSBoYXZlIHRvIGZpZ3VyZSBvdXQgaWYgdGhlc2Ugc3ltYm9scyBtZWV0IHRoYXQgY3JpdGVyaWEuIFJpZ2h0IG9mZiB0aGUgYmF0LCBJIGtub3cgdGhhdCBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucyBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvbiYjMzk7dCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMuIExvb2tpbmcgYXQgdGhlIGBzZXR1cF9wYXJhbXNfODQyYCwgZXRjLiBmdW5jdGlvbnMsIHRoZXkmIzM5O3JlIHN0YXRpYyEgQnV0LCBhaCwgYSBjcnVjaWFsIGRldGFpbCDigJMgdGhleSYjMzk7cmUgKmFzc2lnbmVkIHRvIGEgZnVuY3Rpb24gcG9pbnRlciogaW4gYHpjb21wX29wc2AuIFRoYXQgbWVhbnMgdGhleSYjMzk7cmUgbm90IGlubGluZWQgYW5kIGRvIGhhdmUgZGlzdGluY3QgYWRkcmVzc2VzLiBUaGF0JiMzOTtzIGdvb2QuCgpUbyBiZSBleHRyYSBzYWZlLCB0aG91Z2gsIEkgd2lsbCBpbmNsdWRlIHRoZSBzeXNmcyBlbnRyeSBwb2ludHMgc2luY2UgdGhvc2UgYXJlIGRlZmluaXRlbHkgbm90IGlubGluZWQgYW5kIGFyZSB0aGUgY29yZSBlbnRyeSBwb2ludHMuCgpXYWl0IGEgbW9tZW50LCBJJiMzOTttIHNwb3R0aW5nIHNvbWV0aGluZyBlbHNlLiBUaGUgYGFsZ29yaXRobV9wYXJhbXNfc3RvcmVgLCBgY29tcF9hbGdvcml0aG1fc3RvcmVgLCBgcmVjb21wX2FsZ29yaXRobV9zdG9yZWAsIGBkaXNrc2l6ZV9zdG9yZWAgYXJlIGFsc28gc3RhdGljLiBMZXQgbWUgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCBieSBleGFtaW5pbmcgYGRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTk6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YWxnb3JpdGhtX3BhcmFtc19zdG9yZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svenJhbS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM9MTY5MD1zdGF0aWMgaW50IGNvbXBfcGFyYW1zX3N0b3JlKHN0cnVjdCB6cmFtICp6cmFtLCB1MzIgcHJpbywgczMyIGxldmVsLFxuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTE3MTctXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzoxNzE4OnN0YXRpYyBzc2l6ZV90IGFsZ29yaXRobV9wYXJhbXNfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMTcxOS1cdFx0XHRcdCAgICAgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxOTowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDk1NAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIGNvbnNpZGVyaW5nIG15IGV4cGVydGlzZToKCioqRXhhbWluaW5nIHRoZSBOYXR1cmUgb2YgVGhlc2UgQXR0cmlidXRlcyoqCgpBbHJpZ2h0LCBzbyB0aGVzZSBhdHRyaWJ1dGVzLCBhcyB0aGV5JiMzOTtyZSBkZXNjcmliZWQsIGFyZSBlc3NlbnRpYWxseSBzdGF0aWMuIFRoZXkmIzM5O3JlIG5vdCBkeW5hbWljYWxseSBnZW5lcmF0ZWQgb3IgZXZhbHVhdGVkIGF0IHJ1bnRpbWUuIFRoYXQmIzM5O3MgdGhlIGJhc2VsaW5lLiBIb3dldmVyLCB0aGUgZmFjdCB0aGF0IHRoZXkmIzM5O3JlIHRpZWQgdG8gbWFjcm9zIGxpa2UgYERFVklDRV9BVFRSX1dPYCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGV5JiMzOTtyZSBub3QgaW5saW5lZCwgd2hpY2ggaXMgYW4gaW1wb3J0YW50IGFyY2hpdGVjdHVyYWwgZGV0YWlsLiBUaGlzIG1lYW5zIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggcG90ZW50aWFsbHkgcHJlLWRlZmluZWQgc3RydWN0dXJlcyBvciBkZWNsYXJhdGlvbnMsIGxpa2VseSB3aXRoaW4gYSBoZWFkZXIgZmlsZSwgcmF0aGVyIHRoYW4gY29kZSBkaXJlY3RseSBpbnRlZ3JhdGVkIGludG8gdGhlIGZ1bmN0aW9ucyB0aGF0IHVzZSB0aGVtLgoKTXkgbmV4dCBzdGVwLCBhbmQgZnJhbmtseSwgbXkgcmVmbGV4IGF0IHRoaXMgcG9pbnQsIGlzIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGRlc2lnbi4gTGV0JiMzOTtzIGRlbHZlIGludG8gaG93IGFuZCB3aGVyZSBgREVWSUNFX0FUVFJgIGlzIGFjdHVhbGx5ICp1c2VkKi4gSSBuZWVkIHRvIHNlZSB0aGUgY29udGV4dC4gVGhlIHNwZWNpZmljIGF0dHJpYnV0ZXMgaW52b2x2ZWQgc2hvdWxkIGJlIHN0cmFpZ2h0Zm9yd2FyZCB0byBhbmFseXplLCBidXQgdGhlIGludGVyYWN0aW9ucyBlbmFibGVkIGJ5IHRoZXNlIGF0dHJpYnV0ZXMgYXJlIGNyaXRpY2FsIHRvIG92ZXJhbGwgc3lzdGVtIGJlaGF2aW9yLiBUaGlzIHdpbGwgbGV0IG1lIGlkZW50aWZ5IGFuZCB2ZXJpZnkgaG93IHRoZXNlIHN0YXRpYyBhdHRyaWJ1dGVzIGFyZSBiZWluZyB1dGlsaXplZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTk6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7REVWSUNFX0FUVFIuKmFsZ29yaXRobV9wYXJhbXMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL3pyYW0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jPTI5ODY9c3RhdGljIERFVklDRV9BVFRSX1dPKHJlY29tcHJlc3MpO1xuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMjk4Ny0jZW5kaWZcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjI5ODg6c3RhdGljIERFVklDRV9BVFRSX1dPKGFsZ29yaXRobV9wYXJhbXMpO1xuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMjk4OS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTk6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTUzNTQKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiA4MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0IG1lIGxheSBvdXQgbXkgdGhpbmtpbmcgaGVyZS4KCioqSW50ZXJuYWwgQ2hlY2tsaXN0IGZvciBWYXJpYWJsZSBTY29wZSBhbmQgRXhwb3J0aW5nKioKCkFscmlnaHQsIEkgcmVtZW1iZXIgbm93LCB0aGVzZSBmb2N1cyBzeW1ib2xzIGFyZSBkZWZpbml0ZWx5IHVzZWQgd2l0aGluIHRoZSBjb250ZXh0IG9mIGBERVZJQ0VfQVRUUl9XT2AuIFRoYXQmIzM5O3Mgd2hlcmUgdGhleSBjb21lIGludG8gcGxheS4gU28sIEkgbmVlZCB0byBtYWtlIHN1cmUgSSYjMzk7dmUgZ290IHRoZSBjb3JyZWN0IG9uZXMuIExldCBtZSBxdWlja2x5IHJ1biB0aHJvdWdoIHRoZW0gaW4gbXkgaGVhZDogYGFsZ29yaXRobV9wYXJhbXNfc3RvcmVgLCBgY29tcF9hbGdvcml0aG1fc3RvcmVgLCBgcmVjb21wX2FsZ29yaXRobV9zdG9yZWAsIGBkaXNrc2l6ZV9zdG9yZWAsIGFuZCBgemNvbXBfY3JlYXRlYC4gIFllcCwgdGhhdCBsb29rcyByaWdodC4KCk5vdywgYSBxdWljayBzaWRlIHRob3VnaHQsIEkgcmVhbGx5IHNob3VsZCBkb3VibGUgY2hlY2sgdGhlIHNjb3BlIG9mIGB6Y29tcF9jcmVhdGVgLiBJIG5lZWQgdG8gY29uZmlybSBpZiBpdCYjMzk7cyBleHBvcnRlZCBvciBpZiBpdCYjMzk7cyBnb3QgdGhlIGBzdGF0aWNgIG1vZGlmaWVyLiBObyBwb2ludCBpbiBtYWtpbmcgYXNzdW1wdGlvbnMgaGVyZSwgSSBzaG91bGQgZ2V0IHRoaXMgaW5mb3JtYXRpb24gdmVyaWZpZWQgYmVmb3JlIG1vdmluZyBvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTk6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7emNvbXBfY3JlYXRlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay96cmFtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuYz0yMjU9dm9pZCB6Y29tcF9kZXN0cm95KHN0cnVjdCB6Y29tcCAqY29tcClcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuYy0yMzItXG5kcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuYzoyMzM6c3RydWN0IHpjb21wICp6Y29tcF9jcmVhdGUoY29uc3QgY2hhciAqYWxnLCBzdHJ1Y3QgemNvbXBfcGFyYW1zICpwYXJhbXMpXG5kcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuYy0yMzQte1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96Y29tcC5oPTgzPWNvbnN0IGNoYXIgKnpjb21wX2xvb2t1cF9iYWNrZW5kX25hbWUoY29uc3QgY2hhciAqY29tcCk7XG5kcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuaC04NC1cbmRyaXZlcnMvYmxvY2svenJhbS96Y29tcC5oOjg1OnN0cnVjdCB6Y29tcCAqemNvbXBfY3JlYXRlKGNvbnN0IGNoYXIgKmFsZywgc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKTtcbmRyaXZlcnMvYmxvY2svenJhbS96Y29tcC5oLTg2LXZvaWQgemNvbXBfZGVzdHJveShzdHJ1Y3QgemNvbXAgKmNvbXApO1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jPTI4NTY9c3RhdGljIHNzaXplX3QgZGlza3NpemVfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0yODgyLVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6Mjg4MzpcdFx0Y29tcCA9IHpjb21wX2NyZWF0ZSh6cmFtLVx1MDAzZWNvbXBfYWxnc1twcmlvXSxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTI4ODQtXHRcdFx0XHQgICAgXHUwMDI2enJhbS1cdTAwM2VwYXJhbXNbcHJpb10pO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxOTowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjAxNQoJCQkJCQkJb3V0cHV0OiAyNTUKCQkJCQkJCXRob3VnaHRzOiAzMzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFpSQU0gQ29tcHJlc3Npb24gUGFyYW1ldGVyIFZhbGlkYXRpb24qKgoKT2theSwgc28gYHpjb21wX2NyZWF0ZWAgaXMgZGVmaW5pdGVseSBub24tc3RhdGljLCBnb29kLiBOb3csIGxldCYjMzk7cyBzZWUgYWJvdXQgYGNvbXBfcGFyYW1zX3N0b3JlYC4gQWgsIGl0ICppcyogc3RhdGljLiBCdXQsIHdhaXQsIGl0JiMzOTtzIGNhbGxlZCBieSBgYWxnb3JpdGhtX3BhcmFtc19zdG9yZWAuIFRoYXQgbWVhbnMgaXQmIzM5O3MgaW1wb3J0YW50IGZvciB0aGUgZGljdGlvbmFyeSBsb2FkaW5nIGxvZ2ljLCBzbyBJJiMzOTtsbCBhZGQgaXQgdG8gdGhlIGZvY3VzIHN5bWJvbHMgYXMgd2VsbCwgc2luY2UgaXQmIzM5O3Mga2V5IHRvIHdoYXQgd2UgYXJlIGFzc2Vzc2luZy4gSG1tLCB0aGUgc3RhdGljIG5hdHVyZSBvZiBgY29tcF9wYXJhbXNfc3RvcmVgIG1ha2VzIG1lIHRoaW5rIGFib3V0IHBvdGVudGlhbCBpbmxpbmluZy4gQnV0IGl0JiMzOTtzIGEgcmVhc29uYWJseSBsYXJnZSBmdW5jdGlvbiwgc28gaW5saW5pbmcgbWlnaHQgYmUgbGVzcyBsaWtlbHkuIEp1c3QgdG8gYmUgc2FmZSwgSSYjMzk7bGwgYWxzbyBhZGQgYGFsZ29yaXRobV9wYXJhbXNfc3RvcmVgLCBgY29tcF9hbGdvcml0aG1fc3RvcmVgLCBhbmQgYHJlY29tcF9hbGdvcml0aG1fc3RvcmVgLgoKQWxyaWdodCwgdGltZSB0byByZXZpc2l0IHRoZSBjb25maWd1cmF0aW9ucyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoOiBgWlJBTWAsIGBaUkFNX0JBQ0tFTkRfTFo0YCwgYFpSQU1fQkFDS0VORF9MWjRIQ2AsIGBaUkFNX0JBQ0tFTkRfWlNURGAsIGBaUkFNX0JBQ0tFTkRfREVGTEFURWAsIGBaUkFNX0JBQ0tFTkRfODQyYCwgYFpSQU1fQkFDS0VORF9MWk9gLCBhbmQgYFpSQU1fTVVMVElfQ09NUGAuIFRoZXNlIGFyZSBpbXBvcnRhbnQgYmVjYXVzZSBvZiB0aGUgcGF0Y2gmIzM5O3MgY2hhbmdlcy4KClRoZSBnaXN0IG9mIGl0IGlzIHRoaXM6IHRoZSBwYXRjaCBpbXBsZW1lbnRzIHZhbGlkYXRpb24gZm9yIGNvbXByZXNzaW9uIHBhcmFtZXRlcnMgbGlrZSBkaWN0aW9uYXJ5IHNpemUgYW5kIGNvbXByZXNzaW9uIGxldmVsIGFjcm9zcyBtdWx0aXBsZSB6cmFtIGJhY2tlbmRzICg4NDIsIGRlZmxhdGUsIGx6NCwgbHo0aGMsIGx6bywgbHpvcmxlLCBhbmQgenN0ZCkuIEl0IGFsc28gbW9kaWZpZXMgdGhlIHN5c2ZzIGhhbmRsZXJzIGZvciB6cmFtIGNvbXByZXNzaW9uIGFsZ29yaXRobXMgdG8gcmVzZXQgcGFyYW1ldGVycyB3aGVuIHRoZSBhbGdvcml0aG0gaXMgY2hhbmdlZC4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgdGhlIGNvcmUgZnVuY3Rpb25hbCBsb2dpYyBvZiBjb25maWd1cmluZyB6cmFtIGNvbXByZXNzaW9uIHZpYSBzeXNmcywgbWFraW5nIGl0IHJlYWNoYWJsZSBhbmQgYSBwcmltZSB0YXJnZXQgZm9yIGZ1enppbmcgdmlhIHN5emthbGxlci4KCkxldCYjMzk7cyBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE5OjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtaUkFNJiMzNDssCiAgICAmIzM0O1pSQU1fQkFDS0VORF9MWjQmIzM0OywKICAgICYjMzQ7WlJBTV9CQUNLRU5EX0xaNEhDJiMzNDssCiAgICAmIzM0O1pSQU1fQkFDS0VORF9aU1REJiMzNDssCiAgICAmIzM0O1pSQU1fQkFDS0VORF9ERUZMQVRFJiMzNDssCiAgICAmIzM0O1pSQU1fQkFDS0VORF84NDImIzM0OywKICAgICYjMzQ7WlJBTV9CQUNLRU5EX0xaTyYjMzQ7LAogICAgJiMzNDtaUkFNX01VTFRJX0NPTVAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthbGdvcml0aG1fcGFyYW1zX3N0b3JlJiMzNDssCiAgICAmIzM0O2NvbXBfYWxnb3JpdGhtX3N0b3JlJiMzNDssCiAgICAmIzM0O3JlY29tcF9hbGdvcml0aG1fc3RvcmUmIzM0OywKICAgICYjMzQ7ZGlza3NpemVfc3RvcmUmIzM0OywKICAgICYjMzQ7emNvbXBfY3JlYXRlJiMzNDssCiAgICAmIzM0O2NvbXBfcGFyYW1zX3N0b3JlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgdmFsaWRhdGlvbiBmb3IgY29tcHJlc3Npb24gcGFyYW1ldGVycyAobGlrZSBkaWN0aW9uYXJ5IHNpemUgYW5kIGNvbXByZXNzaW9uIGxldmVsKSBpbiB2YXJpb3VzIHpyYW0gYmFja2VuZHMgKDg0MiwgZGVmbGF0ZSwgbHo0LCBsejRoYywgbHpvLCBsem9ybGUsIHpzdGQpLiBJdCBhbHNvIG1vZGlmaWVzIHRoZSBzeXNmcyBoYW5kbGVycyBmb3IgenJhbSBjb21wcmVzc2lvbiBhbGdvcml0aG1zIHRvIHJlc2V0IHBhcmFtZXRlcnMgd2hlbiB0aGUgYWxnb3JpdGhtIGlzIGNoYW5nZWQuIFRoZXNlIGNoYW5nZXMgYWZmZWN0IHRoZSBmdW5jdGlvbmFsIGxvZ2ljIG9mIHpyYW0gY29uZmlndXJhdGlvbiB2aWEgc3lzZnMsIHdoaWNoIGlzIHJlYWNoYWJsZSBhbmQgY2FuIGJlIGZ1enplZCBieSBzeXprYWxsZXIuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1pSQU0mIzM0OywKICAgICYjMzQ7WlJBTV9CQUNLRU5EX0xaNCYjMzQ7LAogICAgJiMzNDtaUkFNX0JBQ0tFTkRfTFo0SEMmIzM0OywKICAgICYjMzQ7WlJBTV9CQUNLRU5EX1pTVEQmIzM0OywKICAgICYjMzQ7WlJBTV9CQUNLRU5EX0RFRkxBVEUmIzM0OywKICAgICYjMzQ7WlJBTV9CQUNLRU5EXzg0MiYjMzQ7LAogICAgJiMzNDtaUkFNX0JBQ0tFTkRfTFpPJiMzNDssCiAgICAmIzM0O1pSQU1fTVVMVElfQ09NUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2FsZ29yaXRobV9wYXJhbXNfc3RvcmUmIzM0OywKICAgICYjMzQ7Y29tcF9hbGdvcml0aG1fc3RvcmUmIzM0OywKICAgICYjMzQ7cmVjb21wX2FsZ29yaXRobV9zdG9yZSYjMzQ7LAogICAgJiMzNDtkaXNrc2l6ZV9zdG9yZSYjMzQ7LAogICAgJiMzNDt6Y29tcF9jcmVhdGUmIzM0OywKICAgICYjMzQ7Y29tcF9wYXJhbXNfc3RvcmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyB2YWxpZGF0aW9uIGZvciBjb21wcmVzc2lvbiBwYXJhbWV0ZXJzIChsaWtlIGRpY3Rpb25hcnkgc2l6ZSBhbmQgY29tcHJlc3Npb24gbGV2ZWwpIGluIHZhcmlvdXMgenJhbSBiYWNrZW5kcyAoODQyLCBkZWZsYXRlLCBsejQsIGx6NGhjLCBsem8sIGx6b3JsZSwgenN0ZCkuIEl0IGFsc28gbW9kaWZpZXMgdGhlIHN5c2ZzIGhhbmRsZXJzIGZvciB6cmFtIGNvbXByZXNzaW9uIGFsZ29yaXRobXMgdG8gcmVzZXQgcGFyYW1ldGVycyB3aGVuIHRoZSBhbGdvcml0aG0gaXMgY2hhbmdlZC4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgdGhlIGZ1bmN0aW9uYWwgbG9naWMgb2YgenJhbSBjb25maWd1cmF0aW9uIHZpYSBzeXNmcywgd2hpY2ggaXMgcmVhY2hhYmxlIGFuZCBjYW4gYmUgZnV6emVkIGJ5IHN5emthbGxlci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE5OjA2OjI1LjAwMzIwNDAwOVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYzMzQzNTk1Mjk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlpSQU1cIixcbiAgICBcIlpSQU1fQkFDS0VORF9MWjRcIixcbiAgICBcIlpSQU1fQkFDS0VORF9MWjRIQ1wiLFxuICAgIFwiWlJBTV9CQUNLRU5EX1pTVERcIixcbiAgICBcIlpSQU1fQkFDS0VORF9ERUZMQVRFXCIsXG4gICAgXCJaUkFNX0JBQ0tFTkRfODQyXCIsXG4gICAgXCJaUkFNX0JBQ0tFTkRfTFpPXCIsXG4gICAgXCJaUkFNX01VTFRJX0NPTVBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJhbGdvcml0aG1fcGFyYW1zX3N0b3JlXCIsXG4gICAgXCJjb21wX2FsZ29yaXRobV9zdG9yZVwiLFxuICAgIFwicmVjb21wX2FsZ29yaXRobV9zdG9yZVwiLFxuICAgIFwiZGlza3NpemVfc3RvcmVcIixcbiAgICBcInpjb21wX2NyZWF0ZVwiLFxuICAgIFwiY29tcF9wYXJhbXNfc3RvcmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHZhbGlkYXRpb24gZm9yIGNvbXByZXNzaW9uIHBhcmFtZXRlcnMgKGxpa2UgZGljdGlvbmFyeSBzaXplIGFuZCBjb21wcmVzc2lvbiBsZXZlbCkgaW4gdmFyaW91cyB6cmFtIGJhY2tlbmRzICg4NDIsIGRlZmxhdGUsIGx6NCwgbHo0aGMsIGx6bywgbHpvcmxlLCB6c3RkKS4gSXQgYWxzbyBtb2RpZmllcyB0aGUgc3lzZnMgaGFuZGxlcnMgZm9yIHpyYW0gY29tcHJlc3Npb24gYWxnb3JpdGhtcyB0byByZXNldCBwYXJhbWV0ZXJzIHdoZW4gdGhlIGFsZ29yaXRobSBpcyBjaGFuZ2VkLiBUaGVzZSBjaGFuZ2VzIGFmZmVjdCB0aGUgZnVuY3Rpb25hbCBsb2dpYyBvZiB6cmFtIGNvbmZpZ3VyYXRpb24gdmlhIHN5c2ZzLCB3aGljaCBpcyByZWFjaGFibGUgYW5kIGNhbiBiZSBmdXp6ZWQgYnkgc3l6a2FsbGVyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxOTowNjoyNS4wMDMyMTM3MDlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI5NTcxNzYwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGQ1ODQwMjhlODlmMjQ5MGU3ZjVmODVkZjUwZTUwN2QzNDBhYjVmYjlcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBBdWcgMyAxOTowNjoyNCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF84NDIuYyBiL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kXzg0Mi5jXFxuaW5kZXggMTBkOWQ1YzYwZjUzMS4uOTFhMjIzMTNmZTgyYSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF84NDIuY1xcbisrKyBiL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kXzg0Mi5jXFxuQEAgLTEzLDYgKzEzLDE0IEBAIHN0YXRpYyB2b2lkIHJlbGVhc2VfcGFyYW1zXzg0MihzdHJ1Y3QgemNvbXBfcGFyYW1zICpwYXJhbXMpXFxuIFxcbiBzdGF0aWMgaW50IHNldHVwX3BhcmFtc184NDIoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKVxcbiB7XFxuK1xcdGlmIChwYXJhbXMtXFx1MDAzZWRpY3Rfc3opIHtcXG4rXFx0XFx0cHJfZXJyKFxcXCI4NDI6IGRpY3Rpb25hcnkgaXMgbm90IHN1cHBvcnRlZFxcXFxuXFxcIik7XFxuK1xcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4rXFx0fVxcbitcXHRpZiAocGFyYW1zLVxcdTAwM2VsZXZlbCAhPSBaQ09NUF9QQVJBTV9OT1RfU0VUKSB7XFxuK1xcdFxcdHByX2VycihcXFwiODQyOiBjb21wcmVzc2lvbiBsZXZlbCBpcyBub3Qgc3VwcG9ydGVkXFxcXG5cXFwiKTtcXG4rXFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbitcXHR9XFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9kZWZsYXRlLmMgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9kZWZsYXRlLmNcXG5pbmRleCBiM2Y3ZDA4YjQ5ZDkzLi5iMjA3NGM0NGIyZDA0IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2RlZmxhdGUuY1xcbisrKyBiL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2RlZmxhdGUuY1xcbkBAIC0yMiw4ICsyMiwxOSBAQCBzdGF0aWMgdm9pZCBkZWZsYXRlX3JlbGVhc2VfcGFyYW1zKHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcylcXG4gXFxuIHN0YXRpYyBpbnQgZGVmbGF0ZV9zZXR1cF9wYXJhbXMoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKVxcbiB7XFxuK1xcdGlmIChwYXJhbXMtXFx1MDAzZWRpY3Rfc3opIHtcXG4rXFx0XFx0cHJfZXJyKFxcXCJkZWZsYXRlOiBkaWN0aW9uYXJ5IGlzIG5vdCBzdXBwb3J0ZWRcXFxcblxcXCIpO1xcbitcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuK1xcdH1cXG4rXFxuIFxcdGlmIChwYXJhbXMtXFx1MDAzZWxldmVsID09IFpDT01QX1BBUkFNX05PVF9TRVQpXFxuIFxcdFxcdHBhcmFtcy1cXHUwMDNlbGV2ZWwgPSBaX0RFRkFVTFRfQ09NUFJFU1NJT047XFxuK1xcdGVsc2UgaWYgKHBhcmFtcy1cXHUwMDNlbGV2ZWwgXFx1MDAzYyBaX0RFRkFVTFRfQ09NUFJFU1NJT04gfHxcXG4rXFx0XFx0IHBhcmFtcy1cXHUwMDNlbGV2ZWwgXFx1MDAzZSBaX0JFU1RfQ09NUFJFU1NJT04pIHtcXG4rXFx0XFx0cHJfZXJyKFxcXCJkZWZsYXRlOiBpbnZhbGlkIGNvbXByZXNzaW9uIGxldmVsICVkXFxcXG5cXFwiLCBwYXJhbXMtXFx1MDAzZWxldmVsKTtcXG4rXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcdH1cXG4rXFxuIFxcdGlmIChwYXJhbXMtXFx1MDAzZWRlZmxhdGUud2luYml0cyA9PSBaQ09NUF9QQVJBTV9OT1RfU0VUKSB7XFxuIFxcdFxcdHBhcmFtcy1cXHUwMDNlZGVmbGF0ZS53aW5iaXRzID0gREVGTEFURV9ERUZfV0lOQklUUztcXG4gXFx0fSBlbHNlIHtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHo0LmMgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sejQuY1xcbmluZGV4IGM0NDlkNTExYmE4NmYuLmY0ZjUxMTEyMjBjNzkgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHo0LmNcXG4rKysgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sejQuY1xcbkBAIC0zMCw2ICszMCwxMCBAQCBzdGF0aWMgaW50IGx6NF9zZXR1cF9wYXJhbXMoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKVxcbiBcXG4gXFx0aWYgKHBhcmFtcy1cXHUwMDNlbGV2ZWwgPT0gWkNPTVBfUEFSQU1fTk9UX1NFVClcXG4gXFx0XFx0cGFyYW1zLVxcdTAwM2VsZXZlbCA9IExaNF9BQ0NFTEVSQVRJT05fREVGQVVMVDtcXG4rXFx0ZWxzZSBpZiAocGFyYW1zLVxcdTAwM2VsZXZlbCBcXHUwMDNjIExaNF9BQ0NFTEVSQVRJT05fREVGQVVMVCkge1xcbitcXHRcXHRwcl9lcnIoXFxcImx6NDogaW52YWxpZCBjb21wcmVzc2lvbiBsZXZlbCAlZFxcXFxuXFxcIiwgcGFyYW1zLVxcdTAwM2VsZXZlbCk7XFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHR9XFxuIFxcbiBcXHRpZiAoIXBhcmFtcy1cXHUwMDNlZGljdCB8fCAhcGFyYW1zLVxcdTAwM2VkaWN0X3N6KVxcbiBcXHRcXHRyZXR1cm4gMDtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHo0aGMuYyBiL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6NGhjLmNcXG5pbmRleCBmNmEzMzZhY2ZlMjAyLi5kN2NkOTdiODk4YmQ1IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6NGhjLmNcXG4rKysgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sejRoYy5jXFxuQEAgLTIwLDYgKzIwLDEwIEBAIHN0YXRpYyBpbnQgbHo0aGNfc2V0dXBfcGFyYW1zKHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcylcXG4ge1xcbiBcXHRpZiAocGFyYW1zLVxcdTAwM2VsZXZlbCA9PSBaQ09NUF9QQVJBTV9OT1RfU0VUKVxcbiBcXHRcXHRwYXJhbXMtXFx1MDAzZWxldmVsID0gTFo0SENfREVGQVVMVF9DTEVWRUw7XFxuK1xcdGVsc2UgaWYgKHBhcmFtcy1cXHUwMDNlbGV2ZWwgXFx1MDAzYyAxIHx8IHBhcmFtcy1cXHUwMDNlbGV2ZWwgXFx1MDAzZSBMWjRIQ19NQVhfQ0xFVkVMKSB7XFxuK1xcdFxcdHByX2VycihcXFwibHo0aGM6IGludmFsaWQgY29tcHJlc3Npb24gbGV2ZWwgJWRcXFxcblxcXCIsIHBhcmFtcy1cXHUwMDNlbGV2ZWwpO1xcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFx0fVxcbiBcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvLmMgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sem8uY1xcbmluZGV4IDRjOTA2YmVhYWU2YjMuLmNkYmI4OWFhYTBkZWUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvLmNcXG4rKysgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sem8uY1xcbkBAIC0xMiw2ICsxMiwxNCBAQCBzdGF0aWMgdm9pZCBsem9fcmVsZWFzZV9wYXJhbXMoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKVxcbiBcXG4gc3RhdGljIGludCBsem9fc2V0dXBfcGFyYW1zKHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcylcXG4ge1xcbitcXHRpZiAocGFyYW1zLVxcdTAwM2VkaWN0X3N6KSB7XFxuK1xcdFxcdHByX2VycihcXFwibHpvOiBkaWN0aW9uYXJ5IGlzIG5vdCBzdXBwb3J0ZWRcXFxcblxcXCIpO1xcbitcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuK1xcdH1cXG4rXFx0aWYgKHBhcmFtcy1cXHUwMDNlbGV2ZWwgIT0gWkNPTVBfUEFSQU1fTk9UX1NFVCkge1xcbitcXHRcXHRwcl9lcnIoXFxcImx6bzogY29tcHJlc3Npb24gbGV2ZWwgaXMgbm90IHN1cHBvcnRlZFxcXFxuXFxcIik7XFxuK1xcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4rXFx0fVxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvcmxlLmMgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sem9ybGUuY1xcbmluZGV4IDEwNjQwYzk2Y2JmY2EuLjU4ZjdkZGY1YTU1ZjUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvcmxlLmNcXG4rKysgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sem9ybGUuY1xcbkBAIC0xMiw2ICsxMiwxNCBAQCBzdGF0aWMgdm9pZCBsem9ybGVfcmVsZWFzZV9wYXJhbXMoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKVxcbiBcXG4gc3RhdGljIGludCBsem9ybGVfc2V0dXBfcGFyYW1zKHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcylcXG4ge1xcbitcXHRpZiAocGFyYW1zLVxcdTAwM2VkaWN0X3N6KSB7XFxuK1xcdFxcdHByX2VycihcXFwibHpvLXJsZTogZGljdGlvbmFyeSBpcyBub3Qgc3VwcG9ydGVkXFxcXG5cXFwiKTtcXG4rXFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbitcXHR9XFxuK1xcdGlmIChwYXJhbXMtXFx1MDAzZWxldmVsICE9IFpDT01QX1BBUkFNX05PVF9TRVQpIHtcXG4rXFx0XFx0cHJfZXJyKFxcXCJsem8tcmxlOiBjb21wcmVzc2lvbiBsZXZlbCBpcyBub3Qgc3VwcG9ydGVkXFxcXG5cXFwiKTtcXG4rXFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbitcXHR9XFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF96c3RkLmMgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF96c3RkLmNcXG5pbmRleCBkMDBiNTQ4MDU2ZGMyLi5lMDcxZmE1ODRmNmIwIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX3pzdGQuY1xcbisrKyBiL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX3pzdGQuY1xcbkBAIC02MCw2ICs2MCwxMSBAQCBzdGF0aWMgaW50IHpzdGRfc2V0dXBfcGFyYW1zKHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcylcXG4gXFx0cGFyYW1zLVxcdTAwM2VkcnZfZGF0YSA9IHpwO1xcbiBcXHRpZiAocGFyYW1zLVxcdTAwM2VsZXZlbCA9PSBaQ09NUF9QQVJBTV9OT1RfU0VUKVxcbiBcXHRcXHRwYXJhbXMtXFx1MDAzZWxldmVsID0genN0ZF9kZWZhdWx0X2NsZXZlbCgpO1xcbitcXHRlbHNlIGlmIChwYXJhbXMtXFx1MDAzZWxldmVsIFxcdTAwM2MgenN0ZF9taW5fY2xldmVsKCkgfHxcXG4rXFx0XFx0IHBhcmFtcy1cXHUwMDNlbGV2ZWwgXFx1MDAzZSB6c3RkX21heF9jbGV2ZWwoKSkge1xcbitcXHRcXHRwcl9lcnIoXFxcInpzdGQ6IGludmFsaWQgY29tcHJlc3Npb24gbGV2ZWwgJWRcXFxcblxcXCIsIHBhcmFtcy1cXHUwMDNlbGV2ZWwpO1xcbitcXHRcXHRnb3RvIGVycm9yO1xcbitcXHR9XFxuIFxcbiBcXHR6cC1cXHUwMDNlY3BybSA9IHpzdGRfZ2V0X3BhcmFtcyhwYXJhbXMtXFx1MDAzZWxldmVsLCBQQUdFX1NJWkUpO1xcbiBcXG5AQCAtODUsNyArOTAsNiBAQCBzdGF0aWMgaW50IHpzdGRfc2V0dXBfcGFyYW1zKHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcylcXG4gXFx0cmV0dXJuIDA7XFxuIFxcbiBlcnJvcjpcXG4tXFx0enN0ZF9yZWxlYXNlX3BhcmFtcyhwYXJhbXMpO1xcbiBcXHRyZXR1cm4gLUVJTlZBTDtcXG4gfVxcbiBcXG5AQCAtMTYxLDcgKzE2NSw2IEBAIHN0YXRpYyBpbnQgenN0ZF9jcmVhdGUoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zLCBzdHJ1Y3QgemNvbXBfY3R4ICpjdHgpXFxuIFxcdHJldHVybiAwO1xcbiBcXG4gZXJyb3I6XFxuLVxcdHpzdGRfcmVsZWFzZV9wYXJhbXMocGFyYW1zKTtcXG4gXFx0enN0ZF9kZXN0cm95KGN0eCk7XFxuIFxcdHJldHVybiAtRUlOVkFMO1xcbiB9XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jIGIvZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmNcXG5pbmRleCBjZmE5ODg0NmFjNDg0Li5jYzk2YjE4YmY2NDdjIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jXFxuKysrIGIvZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmNcXG5AQCAtMTY1Miw2ICsxNjUyLDE3IEBAIHN0YXRpYyB2b2lkIGNvbXBfYWxnb3JpdGhtX3NldChzdHJ1Y3QgenJhbSAqenJhbSwgdTMyIHByaW8sIGNvbnN0IGNoYXIgKmFsZylcXG4gXFx0enJhbS1cXHUwMDNlY29tcF9hbGdzW3ByaW9dID0gYWxnO1xcbiB9XFxuIFxcbitzdGF0aWMgdm9pZCBjb21wX3BhcmFtc19yZXNldChzdHJ1Y3QgenJhbSAqenJhbSwgdTMyIHByaW8pXFxuK3tcXG4rXFx0c3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zID0gXFx1MDAyNnpyYW0tXFx1MDAzZXBhcmFtc1twcmlvXTtcXG4rXFxuK1xcdHZmcmVlKHBhcmFtcy1cXHUwMDNlZGljdCk7XFxuK1xcdHBhcmFtcy1cXHUwMDNlbGV2ZWwgPSBaQ09NUF9QQVJBTV9OT1RfU0VUO1xcbitcXHRwYXJhbXMtXFx1MDAzZWRlZmxhdGUud2luYml0cyA9IFpDT01QX1BBUkFNX05PVF9TRVQ7XFxuK1xcdHBhcmFtcy1cXHUwMDNlZGljdF9zeiA9IDA7XFxuK1xcdHBhcmFtcy1cXHUwMDNlZGljdCA9IE5VTEw7XFxuK31cXG4rXFxuIHN0YXRpYyBpbnQgX19jb21wX2FsZ29yaXRobV9zdG9yZShzdHJ1Y3QgenJhbSAqenJhbSwgdTMyIHByaW8sIGNvbnN0IGNoYXIgKmJ1ZilcXG4ge1xcbiBcXHRjb25zdCBjaGFyICphbGc7XFxuQEAgLTE2NzIsMjAgKzE2ODMsMTAgQEAgc3RhdGljIGludCBfX2NvbXBfYWxnb3JpdGhtX3N0b3JlKHN0cnVjdCB6cmFtICp6cmFtLCB1MzIgcHJpbywgY29uc3QgY2hhciAqYnVmKVxcbiBcXHR9XFxuIFxcbiBcXHRjb21wX2FsZ29yaXRobV9zZXQoenJhbSwgcHJpbywgYWxnKTtcXG4rXFx0Y29tcF9wYXJhbXNfcmVzZXQoenJhbSwgcHJpbyk7XFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbi1zdGF0aWMgdm9pZCBjb21wX3BhcmFtc19yZXNldChzdHJ1Y3QgenJhbSAqenJhbSwgdTMyIHByaW8pXFxuLXtcXG4tXFx0c3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zID0gXFx1MDAyNnpyYW0tXFx1MDAzZXBhcmFtc1twcmlvXTtcXG4tXFxuLVxcdHZmcmVlKHBhcmFtcy1cXHUwMDNlZGljdCk7XFxuLVxcdHBhcmFtcy1cXHUwMDNlbGV2ZWwgPSBaQ09NUF9QQVJBTV9OT1RfU0VUO1xcbi1cXHRwYXJhbXMtXFx1MDAzZWRlZmxhdGUud2luYml0cyA9IFpDT01QX1BBUkFNX05PVF9TRVQ7XFxuLVxcdHBhcmFtcy1cXHUwMDNlZGljdF9zeiA9IDA7XFxuLVxcdHBhcmFtcy1cXHUwMDNlZGljdCA9IE5VTEw7XFxuLX1cXG4tXFxuIHN0YXRpYyBpbnQgY29tcF9wYXJhbXNfc3RvcmUoc3RydWN0IHpyYW0gKnpyYW0sIHUzMiBwcmlvLCBzMzIgbGV2ZWwsXFxuIFxcdFxcdFxcdCAgICAgY29uc3QgY2hhciAqZGljdF9wYXRoLFxcbiBcXHRcXHRcXHQgICAgIHN0cnVjdCBkZWZsYXRlX3BhcmFtcyAqZGVmbGF0ZV9wYXJhbXMpXFxuQEAgLTE3MDAsOCArMTcwMSwxMiBAQCBzdGF0aWMgaW50IGNvbXBfcGFyYW1zX3N0b3JlKHN0cnVjdCB6cmFtICp6cmFtLCB1MzIgcHJpbywgczMyIGxldmVsLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRJTlRfTUFYLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHROVUxMLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRSRUFESU5HX1BPTElDWSk7XFxuLVxcdFxcdGlmIChzeiBcXHUwMDNjIDApXFxuK1xcdFxcdGlmIChzeiBcXHUwMDNjPSAwKSB7XFxuK1xcdFxcdFxcdHByX2VycihcXFwiZmFpbGVkIHRvIGxvYWQgZGljdGlvbmFyeSAlcyAoZXJyPSV6ZClcXFxcblxcXCIsXFxuK1xcdFxcdFxcdCAgICAgICBkaWN0X3BhdGgsIHN6KTtcXG4rXFxuIFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHRcXHR9XFxuIFxcdH1cXG4gXFxuIFxcdHpyYW0tXFx1MDAzZXBhcmFtc1twcmlvXS5kaWN0X3N6ID0gc3o7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE5OjA2OjI1LjI5OTkyODMwNFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjYzMDQ2ODYwNDU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlpSQU1cIixcbiAgICBcIlpSQU1fQkFDS0VORF9MWjRcIixcbiAgICBcIlpSQU1fQkFDS0VORF9MWjRIQ1wiLFxuICAgIFwiWlJBTV9CQUNLRU5EX1pTVERcIixcbiAgICBcIlpSQU1fQkFDS0VORF9ERUZMQVRFXCIsXG4gICAgXCJaUkFNX0JBQ0tFTkRfODQyXCIsXG4gICAgXCJaUkFNX0JBQ0tFTkRfTFpPXCIsXG4gICAgXCJaUkFNX01VTFRJX0NPTVBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJhbGdvcml0aG1fcGFyYW1zX3N0b3JlXCIsXG4gICAgXCJjb21wX2FsZ29yaXRobV9zdG9yZVwiLFxuICAgIFwicmVjb21wX2FsZ29yaXRobV9zdG9yZVwiLFxuICAgIFwiZGlza3NpemVfc3RvcmVcIixcbiAgICBcInpjb21wX2NyZWF0ZVwiLFxuICAgIFwiY29tcF9wYXJhbXNfc3RvcmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHZhbGlkYXRpb24gZm9yIGNvbXByZXNzaW9uIHBhcmFtZXRlcnMgKGxpa2UgZGljdGlvbmFyeSBzaXplIGFuZCBjb21wcmVzc2lvbiBsZXZlbCkgaW4gdmFyaW91cyB6cmFtIGJhY2tlbmRzICg4NDIsIGRlZmxhdGUsIGx6NCwgbHo0aGMsIGx6bywgbHpvcmxlLCB6c3RkKS4gSXQgYWxzbyBtb2RpZmllcyB0aGUgc3lzZnMgaGFuZGxlcnMgZm9yIHpyYW0gY29tcHJlc3Npb24gYWxnb3JpdGhtcyB0byByZXNldCBwYXJhbWV0ZXJzIHdoZW4gdGhlIGFsZ29yaXRobSBpcyBjaGFuZ2VkLiBUaGVzZSBjaGFuZ2VzIGFmZmVjdCB0aGUgZnVuY3Rpb25hbCBsb2dpYyBvZiB6cmFtIGNvbmZpZ3VyYXRpb24gdmlhIHN5c2ZzLCB3aGljaCBpcyByZWFjaGFibGUgYW5kIGNhbiBiZSBmdXp6ZWQgYnkgc3l6a2FsbGVyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBkNTg0MDI4ZTg5ZjI0OTBlN2Y1Zjg1ZGY1MGU1MDdkMzQwYWI1ZmI5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMyAxOTowNjoyNCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kXzg0Mi5jIGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfODQyLmNcbmluZGV4IDEwZDlkNWM2MGY1MzEuLjkxYTIyMzEzZmU4MmEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF84NDIuY1xuKysrIGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfODQyLmNcbkBAIC0xMyw2ICsxMywxNCBAQCBzdGF0aWMgdm9pZCByZWxlYXNlX3BhcmFtc184NDIoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKVxuIFxuIHN0YXRpYyBpbnQgc2V0dXBfcGFyYW1zXzg0MihzdHJ1Y3QgemNvbXBfcGFyYW1zICpwYXJhbXMpXG4ge1xuK1x0aWYgKHBhcmFtcy1cdTAwM2VkaWN0X3N6KSB7XG4rXHRcdHByX2VycihcIjg0MjogZGljdGlvbmFyeSBpcyBub3Qgc3VwcG9ydGVkXFxuXCIpO1xuK1x0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4rXHR9XG4rXHRpZiAocGFyYW1zLVx1MDAzZWxldmVsICE9IFpDT01QX1BBUkFNX05PVF9TRVQpIHtcbitcdFx0cHJfZXJyKFwiODQyOiBjb21wcmVzc2lvbiBsZXZlbCBpcyBub3Qgc3VwcG9ydGVkXFxuXCIpO1xuK1x0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4rXHR9XG4gXHRyZXR1cm4gMDtcbiB9XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfZGVmbGF0ZS5jIGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfZGVmbGF0ZS5jXG5pbmRleCBiM2Y3ZDA4YjQ5ZDkzLi5iMjA3NGM0NGIyZDA0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfZGVmbGF0ZS5jXG4rKysgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9kZWZsYXRlLmNcbkBAIC0yMiw4ICsyMiwxOSBAQCBzdGF0aWMgdm9pZCBkZWZsYXRlX3JlbGVhc2VfcGFyYW1zKHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcylcbiBcbiBzdGF0aWMgaW50IGRlZmxhdGVfc2V0dXBfcGFyYW1zKHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcylcbiB7XG4rXHRpZiAocGFyYW1zLVx1MDAzZWRpY3Rfc3opIHtcbitcdFx0cHJfZXJyKFwiZGVmbGF0ZTogZGljdGlvbmFyeSBpcyBub3Qgc3VwcG9ydGVkXFxuXCIpO1xuK1x0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4rXHR9XG4rXG4gXHRpZiAocGFyYW1zLVx1MDAzZWxldmVsID09IFpDT01QX1BBUkFNX05PVF9TRVQpXG4gXHRcdHBhcmFtcy1cdTAwM2VsZXZlbCA9IFpfREVGQVVMVF9DT01QUkVTU0lPTjtcbitcdGVsc2UgaWYgKHBhcmFtcy1cdTAwM2VsZXZlbCBcdTAwM2MgWl9ERUZBVUxUX0NPTVBSRVNTSU9OIHx8XG4rXHRcdCBwYXJhbXMtXHUwMDNlbGV2ZWwgXHUwMDNlIFpfQkVTVF9DT01QUkVTU0lPTikge1xuK1x0XHRwcl9lcnIoXCJkZWZsYXRlOiBpbnZhbGlkIGNvbXByZXNzaW9uIGxldmVsICVkXFxuXCIsIHBhcmFtcy1cdTAwM2VsZXZlbCk7XG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1x0fVxuK1xuIFx0aWYgKHBhcmFtcy1cdTAwM2VkZWZsYXRlLndpbmJpdHMgPT0gWkNPTVBfUEFSQU1fTk9UX1NFVCkge1xuIFx0XHRwYXJhbXMtXHUwMDNlZGVmbGF0ZS53aW5iaXRzID0gREVGTEFURV9ERUZfV0lOQklUUztcbiBcdH0gZWxzZSB7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHo0LmMgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sejQuY1xuaW5kZXggYzQ0OWQ1MTFiYTg2Zi4uZjRmNTExMTIyMGM3OSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6NC5jXG4rKysgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sejQuY1xuQEAgLTMwLDYgKzMwLDEwIEBAIHN0YXRpYyBpbnQgbHo0X3NldHVwX3BhcmFtcyhzdHJ1Y3QgemNvbXBfcGFyYW1zICpwYXJhbXMpXG4gXG4gXHRpZiAocGFyYW1zLVx1MDAzZWxldmVsID09IFpDT01QX1BBUkFNX05PVF9TRVQpXG4gXHRcdHBhcmFtcy1cdTAwM2VsZXZlbCA9IExaNF9BQ0NFTEVSQVRJT05fREVGQVVMVDtcbitcdGVsc2UgaWYgKHBhcmFtcy1cdTAwM2VsZXZlbCBcdTAwM2MgTFo0X0FDQ0VMRVJBVElPTl9ERUZBVUxUKSB7XG4rXHRcdHByX2VycihcImx6NDogaW52YWxpZCBjb21wcmVzc2lvbiBsZXZlbCAlZFxcblwiLCBwYXJhbXMtXHUwMDNlbGV2ZWwpO1xuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcdH1cbiBcbiBcdGlmICghcGFyYW1zLVx1MDAzZWRpY3QgfHwgIXBhcmFtcy1cdTAwM2VkaWN0X3N6KVxuIFx0XHRyZXR1cm4gMDtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sejRoYy5jIGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHo0aGMuY1xuaW5kZXggZjZhMzM2YWNmZTIwMi4uZDdjZDk3Yjg5OGJkNSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6NGhjLmNcbisrKyBiL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6NGhjLmNcbkBAIC0yMCw2ICsyMCwxMCBAQCBzdGF0aWMgaW50IGx6NGhjX3NldHVwX3BhcmFtcyhzdHJ1Y3QgemNvbXBfcGFyYW1zICpwYXJhbXMpXG4ge1xuIFx0aWYgKHBhcmFtcy1cdTAwM2VsZXZlbCA9PSBaQ09NUF9QQVJBTV9OT1RfU0VUKVxuIFx0XHRwYXJhbXMtXHUwMDNlbGV2ZWwgPSBMWjRIQ19ERUZBVUxUX0NMRVZFTDtcbitcdGVsc2UgaWYgKHBhcmFtcy1cdTAwM2VsZXZlbCBcdTAwM2MgMSB8fCBwYXJhbXMtXHUwMDNlbGV2ZWwgXHUwMDNlIExaNEhDX01BWF9DTEVWRUwpIHtcbitcdFx0cHJfZXJyKFwibHo0aGM6IGludmFsaWQgY29tcHJlc3Npb24gbGV2ZWwgJWRcXG5cIiwgcGFyYW1zLVx1MDAzZWxldmVsKTtcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHR9XG4gXG4gXHRyZXR1cm4gMDtcbiB9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvLmMgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sem8uY1xuaW5kZXggNGM5MDZiZWFhZTZiMy4uY2RiYjg5YWFhMGRlZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6by5jXG4rKysgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sem8uY1xuQEAgLTEyLDYgKzEyLDE0IEBAIHN0YXRpYyB2b2lkIGx6b19yZWxlYXNlX3BhcmFtcyhzdHJ1Y3QgemNvbXBfcGFyYW1zICpwYXJhbXMpXG4gXG4gc3RhdGljIGludCBsem9fc2V0dXBfcGFyYW1zKHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcylcbiB7XG4rXHRpZiAocGFyYW1zLVx1MDAzZWRpY3Rfc3opIHtcbitcdFx0cHJfZXJyKFwibHpvOiBkaWN0aW9uYXJ5IGlzIG5vdCBzdXBwb3J0ZWRcXG5cIik7XG4rXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbitcdH1cbitcdGlmIChwYXJhbXMtXHUwMDNlbGV2ZWwgIT0gWkNPTVBfUEFSQU1fTk9UX1NFVCkge1xuK1x0XHRwcl9lcnIoXCJsem86IGNvbXByZXNzaW9uIGxldmVsIGlzIG5vdCBzdXBwb3J0ZWRcXG5cIik7XG4rXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbitcdH1cbiBcdHJldHVybiAwO1xuIH1cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sem9ybGUuYyBiL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6b3JsZS5jXG5pbmRleCAxMDY0MGM5NmNiZmNhLi41OGY3ZGRmNWE1NWY1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvcmxlLmNcbisrKyBiL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6b3JsZS5jXG5AQCAtMTIsNiArMTIsMTQgQEAgc3RhdGljIHZvaWQgbHpvcmxlX3JlbGVhc2VfcGFyYW1zKHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcylcbiBcbiBzdGF0aWMgaW50IGx6b3JsZV9zZXR1cF9wYXJhbXMoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKVxuIHtcbitcdGlmIChwYXJhbXMtXHUwMDNlZGljdF9zeikge1xuK1x0XHRwcl9lcnIoXCJsem8tcmxlOiBkaWN0aW9uYXJ5IGlzIG5vdCBzdXBwb3J0ZWRcXG5cIik7XG4rXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbitcdH1cbitcdGlmIChwYXJhbXMtXHUwMDNlbGV2ZWwgIT0gWkNPTVBfUEFSQU1fTk9UX1NFVCkge1xuK1x0XHRwcl9lcnIoXCJsem8tcmxlOiBjb21wcmVzc2lvbiBsZXZlbCBpcyBub3Qgc3VwcG9ydGVkXFxuXCIpO1xuK1x0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4rXHR9XG4gXHRyZXR1cm4gMDtcbiB9XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jIGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jXG5pbmRleCBkMDBiNTQ4MDU2ZGMyLi5lMDcxZmE1ODRmNmIwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jXG4rKysgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF96c3RkLmNcbkBAIC02MCw2ICs2MCwxMSBAQCBzdGF0aWMgaW50IHpzdGRfc2V0dXBfcGFyYW1zKHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcylcbiBcdHBhcmFtcy1cdTAwM2VkcnZfZGF0YSA9IHpwO1xuIFx0aWYgKHBhcmFtcy1cdTAwM2VsZXZlbCA9PSBaQ09NUF9QQVJBTV9OT1RfU0VUKVxuIFx0XHRwYXJhbXMtXHUwMDNlbGV2ZWwgPSB6c3RkX2RlZmF1bHRfY2xldmVsKCk7XG4rXHRlbHNlIGlmIChwYXJhbXMtXHUwMDNlbGV2ZWwgXHUwMDNjIHpzdGRfbWluX2NsZXZlbCgpIHx8XG4rXHRcdCBwYXJhbXMtXHUwMDNlbGV2ZWwgXHUwMDNlIHpzdGRfbWF4X2NsZXZlbCgpKSB7XG4rXHRcdHByX2VycihcInpzdGQ6IGludmFsaWQgY29tcHJlc3Npb24gbGV2ZWwgJWRcXG5cIiwgcGFyYW1zLVx1MDAzZWxldmVsKTtcbitcdFx0Z290byBlcnJvcjtcbitcdH1cbiBcbiBcdHpwLVx1MDAzZWNwcm0gPSB6c3RkX2dldF9wYXJhbXMocGFyYW1zLVx1MDAzZWxldmVsLCBQQUdFX1NJWkUpO1xuIFxuQEAgLTg1LDcgKzkwLDYgQEAgc3RhdGljIGludCB6c3RkX3NldHVwX3BhcmFtcyhzdHJ1Y3QgemNvbXBfcGFyYW1zICpwYXJhbXMpXG4gXHRyZXR1cm4gMDtcbiBcbiBlcnJvcjpcbi1cdHpzdGRfcmVsZWFzZV9wYXJhbXMocGFyYW1zKTtcbiBcdHJldHVybiAtRUlOVkFMO1xuIH1cbiBcbkBAIC0xNjEsNyArMTY1LDYgQEAgc3RhdGljIGludCB6c3RkX2NyZWF0ZShzdHJ1Y3QgemNvbXBfcGFyYW1zICpwYXJhbXMsIHN0cnVjdCB6Y29tcF9jdHggKmN0eClcbiBcdHJldHVybiAwO1xuIFxuIGVycm9yOlxuLVx0enN0ZF9yZWxlYXNlX3BhcmFtcyhwYXJhbXMpO1xuIFx0enN0ZF9kZXN0cm95KGN0eCk7XG4gXHRyZXR1cm4gLUVJTlZBTDtcbiB9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMgYi9kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuY1xuaW5kZXggY2ZhOTg4NDZhYzQ4NC4uY2M5NmIxOGJmNjQ3YyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jXG4rKysgYi9kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuY1xuQEAgLTE2NTIsNiArMTY1MiwxNyBAQCBzdGF0aWMgdm9pZCBjb21wX2FsZ29yaXRobV9zZXQoc3RydWN0IHpyYW0gKnpyYW0sIHUzMiBwcmlvLCBjb25zdCBjaGFyICphbGcpXG4gXHR6cmFtLVx1MDAzZWNvbXBfYWxnc1twcmlvXSA9IGFsZztcbiB9XG4gXG4rc3RhdGljIHZvaWQgY29tcF9wYXJhbXNfcmVzZXQoc3RydWN0IHpyYW0gKnpyYW0sIHUzMiBwcmlvKVxuK3tcbitcdHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcyA9IFx1MDAyNnpyYW0tXHUwMDNlcGFyYW1zW3ByaW9dO1xuK1xuK1x0dmZyZWUocGFyYW1zLVx1MDAzZWRpY3QpO1xuK1x0cGFyYW1zLVx1MDAzZWxldmVsID0gWkNPTVBfUEFSQU1fTk9UX1NFVDtcbitcdHBhcmFtcy1cdTAwM2VkZWZsYXRlLndpbmJpdHMgPSBaQ09NUF9QQVJBTV9OT1RfU0VUO1xuK1x0cGFyYW1zLVx1MDAzZWRpY3Rfc3ogPSAwO1xuK1x0cGFyYW1zLVx1MDAzZWRpY3QgPSBOVUxMO1xuK31cbitcbiBzdGF0aWMgaW50IF9fY29tcF9hbGdvcml0aG1fc3RvcmUoc3RydWN0IHpyYW0gKnpyYW0sIHUzMiBwcmlvLCBjb25zdCBjaGFyICpidWYpXG4ge1xuIFx0Y29uc3QgY2hhciAqYWxnO1xuQEAgLTE2NzIsMjAgKzE2ODMsMTAgQEAgc3RhdGljIGludCBfX2NvbXBfYWxnb3JpdGhtX3N0b3JlKHN0cnVjdCB6cmFtICp6cmFtLCB1MzIgcHJpbywgY29uc3QgY2hhciAqYnVmKVxuIFx0fVxuIFxuIFx0Y29tcF9hbGdvcml0aG1fc2V0KHpyYW0sIHByaW8sIGFsZyk7XG4rXHRjb21wX3BhcmFtc19yZXNldCh6cmFtLCBwcmlvKTtcbiBcdHJldHVybiAwO1xuIH1cbiBcbi1zdGF0aWMgdm9pZCBjb21wX3BhcmFtc19yZXNldChzdHJ1Y3QgenJhbSAqenJhbSwgdTMyIHByaW8pXG4te1xuLVx0c3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zID0gXHUwMDI2enJhbS1cdTAwM2VwYXJhbXNbcHJpb107XG4tXG4tXHR2ZnJlZShwYXJhbXMtXHUwMDNlZGljdCk7XG4tXHRwYXJhbXMtXHUwMDNlbGV2ZWwgPSBaQ09NUF9QQVJBTV9OT1RfU0VUO1xuLVx0cGFyYW1zLVx1MDAzZWRlZmxhdGUud2luYml0cyA9IFpDT01QX1BBUkFNX05PVF9TRVQ7XG4tXHRwYXJhbXMtXHUwMDNlZGljdF9zeiA9IDA7XG4tXHRwYXJhbXMtXHUwMDNlZGljdCA9IE5VTEw7XG4tfVxuLVxuIHN0YXRpYyBpbnQgY29tcF9wYXJhbXNfc3RvcmUoc3RydWN0IHpyYW0gKnpyYW0sIHUzMiBwcmlvLCBzMzIgbGV2ZWwsXG4gXHRcdFx0ICAgICBjb25zdCBjaGFyICpkaWN0X3BhdGgsXG4gXHRcdFx0ICAgICBzdHJ1Y3QgZGVmbGF0ZV9wYXJhbXMgKmRlZmxhdGVfcGFyYW1zKVxuQEAgLTE3MDAsOCArMTcwMSwxMiBAQCBzdGF0aWMgaW50IGNvbXBfcGFyYW1zX3N0b3JlKHN0cnVjdCB6cmFtICp6cmFtLCB1MzIgcHJpbywgczMyIGxldmVsLFxuIFx0XHRcdFx0XHRcdElOVF9NQVgsXG4gXHRcdFx0XHRcdFx0TlVMTCxcbiBcdFx0XHRcdFx0XHRSRUFESU5HX1BPTElDWSk7XG4tXHRcdGlmIChzeiBcdTAwM2MgMClcbitcdFx0aWYgKHN6IFx1MDAzYz0gMCkge1xuK1x0XHRcdHByX2VycihcImZhaWxlZCB0byBsb2FkIGRpY3Rpb25hcnkgJXMgKGVycj0lemQpXFxuXCIsXG4rXHRcdFx0ICAgICAgIGRpY3RfcGF0aCwgc3opO1xuK1xuIFx0XHRcdHJldHVybiAtRUlOVkFMO1xuK1x0XHR9XG4gXHR9XG4gXG4gXHR6cmFtLVx1MDAzZXBhcmFtc1twcmlvXS5kaWN0X3N6ID0gc3o7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxOTowNjoyNS4yOTk5Mjk5MTVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MzU3OTY1MjQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgWlJBTSBQYXRjaCBTZXJpZXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHNlcmllcyB0aGF0IHR3ZWFrcyB0aGUgYGRyaXZlcnMvYmxvY2svenJhbS9gIGNvZGUuIEZyb20gd2hhdCBJIGNhbiBzZWUsIGl0J3MgYWxsIGFib3V0IGJvbHN0ZXJpbmcgdGhlIGNvbXByZXNzaW9uIHBhcmFtZXRlciB2YWxpZGF0aW9uIGFjcm9zcyB0aGUgdmFyaW91cyB6cmFtIGJhY2tlbmRzIOKAkyA4NDIsIGRlZmxhdGUsIGx6NCwgbHo0aGMsIGx6bywgbHpvcmxlLCBhbmQgenN0ZC4gR29vZCwgd2UgbmVlZCByb2J1c3QgdmFsaWRhdGlvbi4gSXQgYWxzbyBsb29rcyBsaWtlIHRoZXJlIGhhdmUgYmVlbiBzb21lIHVwZGF0ZXMgdG8gYGNvbXBfcGFyYW1zX3Jlc2V0YCBhbmQgYF9fY29tcF9hbGdvcml0aG1fc3RvcmVgIGluIGB6cmFtX2Rydi5jYCwgZW5zdXJpbmcgdGhhdCB0aGVzZSBwYXJhbWV0ZXJzIGdldCByZXNldCBjb3JyZWN0bHkgd2hlbiB0aGUgY29tcHJlc3Npb24gYWxnb3JpdGhtIGlzIHN3aXRjaGVkLiBQbHVzLCB0aGVyZSdzIGEgbmljZSBhZGRpdGlvbiBvZiBhbiBlcnJvciBsb2cgaWYgZGljdGlvbmFyeSBsb2FkaW5nIGZhaWxzLCBhbmQgYSBjb3JyZWN0aW9uIGZvciBhIGNvbXBhcmlzb246IG5vdyBjaGVja2luZyBmb3IgYHN6IFx1MDAzYz0gMGAgaW5zdGVhZCBvZiBqdXN0IGBzeiBcdTAwM2MgMGAuXG5cblRoZSBrZXkgcXVlc3Rpb24gaXMsIGFyZSB0aGVzZSBjaGFuZ2VzIGFjdHVhbGx5ICpyZWFjaGFibGUqPyBBbmQsIGFyZSB0aGV5IGV2ZW4gd29ydGggdGhlIGVmZm9ydCB0byBmdXp6PyBacmFtIGlzIGEgYmxvY2sgZGV2aWNlLCBhbmQgZnJvbSBteSBleHBlcmllbmNlLCBJIGtub3cgaXQncyBjb25maWd1cmVkIHZpYSBzeXNmcywgcmlnaHQ/IFdoaWNoLCBJIGFsc28ga25vdywgaXMgcGVyZmVjdCBmb3Igc3l6a2FsbGVyLCBzbyB0aGlzIGxvb2tzIHByb21pc2luZyEgSSBuZWVkIHRvIHF1aWNrbHkgaWRlbnRpZnkgdGhlIHJlbGV2YW50IHN5c2ZzIGhhbmRsZXJzIGZvciB6cmFtLiBUaGF0J3MgdGhlIGZpcnN0IHN0ZXAgaW4gZGV0ZXJtaW5pbmcgaG93IGVhc2lseSB3ZSBjYW4gdHJpZ2dlciB0aGVzZSBuZXcgdmFsaWRhdGlvbiBjaGVja3MgYW5kIGNvZGUgcGF0aHMuIExldCdzIHNlZSBpZiB3ZSBjYW4gZ2V0IHNvbWUgZ29vZCBjb3ZlcmFnZSBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjUwLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTkwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTk6MDY6MzAuNjU3ODk4MzMxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4MzYwMTM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9fY29tcF9hbGdvcml0aG1fc3RvcmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ibG9jay96cmFtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0xNjU1PXN0YXRpYyB2b2lkIGNvbXBfcGFyYW1zX3Jlc2V0KHN0cnVjdCB6cmFtICp6cmFtLCB1MzIgcHJpbylcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTE2NjUtXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MTY2NjpzdGF0aWMgaW50IF9fY29tcF9hbGdvcml0aG1fc3RvcmUoc3RydWN0IHpyYW0gKnpyYW0sIHUzMiBwcmlvLCBjb25zdCBjaGFyICpidWYpXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMTY2Ny17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0xODA5PXN0YXRpYyBzc2l6ZV90IGNvbXBfYWxnb3JpdGhtX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTE4MTYtXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MTgxNzpcXHRyZXQgPSBfX2NvbXBfYWxnb3JpdGhtX3N0b3JlKHpyYW0sIFpSQU1fUFJJTUFSWV9DT01QLCBidWYpO1xcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTE4MTgtXFx0cmV0dXJuIHJldCA/IHJldCA6IGxlbjtcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jPTE4NDE9c3RhdGljIHNzaXplX3QgcmVjb21wX2FsZ29yaXRobV9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0xODc3LVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjE4Nzg6XFx0cmV0ID0gX19jb21wX2FsZ29yaXRobV9zdG9yZSh6cmFtLCBwcmlvLCBhbGcpO1xcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTE4NzktXFx0cmV0dXJuIHJldCA/IHJldCA6IGxlbjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTk6MDY6MzAuNzA2MjY1NzlaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODUwODM3NjMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZyb20gbXkgcGVyc3BlY3RpdmU6XG5cbioqRGVlcCBEaXZlIGludG8gQWxnb3JpdGhtIFN0b3JhZ2UqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGludGVybmFsIGZsb3cgc3RhcnRzIHdpdGggYF9fY29tcF9hbGdvcml0aG1fc3RvcmVgIGFuZCBpdCdzIGJlaW5nIGNhbGxlZCBmcm9tIGJvdGggYGNvbXBfYWxnb3JpdGhtX3N0b3JlYCBhbmQgYHJlY29tcF9hbGdvcml0aG1fc3RvcmVgLiBUaGF0J3MgdGhlIGNvcmUuIE15IGluc3RpbmN0IHRlbGxzIG1lIHRvIGltbWVkaWF0ZWx5IGludmVzdGlnYXRlIHRoZSBgY29tcF9wYXJhbXNfc3RvcmVgLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhlIHBhcmFtZXRlcnMgYXJlIGJlaW5nIGhhbmRsZWQsIHN0b3JlZCwgYW5kIHBvdGVudGlhbGx5IGluZmx1ZW5jaW5nIHRoaXMgZW50aXJlIHN0b3JhZ2UgcHJvY2VzcyBmb3IgYWxnb3JpdGhtcy4gVGhpcyBmZWVscyBsaWtlIGEgY3JpdGljYWwgbm9kZSB0byB1bmRlcnN0YW5kIHRoZSBmdWxsIHBpY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1NjgsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxOTowNjozNC41NTcxMDU5OFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODU1NzIyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb21wX3BhcmFtc19zdG9yZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL3pyYW0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jPTE2NjY9c3RhdGljIGludCBfX2NvbXBfYWxnb3JpdGhtX3N0b3JlKHN0cnVjdCB6cmFtICp6cmFtLCB1MzIgcHJpbywgY29uc3QgY2hhciAqYnVmKVxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMTY4OS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzoxNjkwOnN0YXRpYyBpbnQgY29tcF9wYXJhbXNfc3RvcmUoc3RydWN0IHpyYW0gKnpyYW0sIHUzMiBwcmlvLCBzMzIgbGV2ZWwsXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMTY5MS1cXHRcXHRcXHQgICAgIGNvbnN0IGNoYXIgKmRpY3RfcGF0aCxcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jPTE3MTg9c3RhdGljIHNzaXplX3QgYWxnb3JpdGhtX3BhcmFtc19zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0xNzkyLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjE3OTM6XFx0cmV0ID0gY29tcF9wYXJhbXNfc3RvcmUoenJhbSwgcHJpbywgbGV2ZWwsIGRpY3RfcGF0aCwgXFx1MDAyNmRlZmxhdGVfcGFyYW1zKTtcXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0xNzk0LVxcdHJldHVybiByZXQgPyByZXQgOiBsZW47XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE5OjA2OjM0LjYwNTY3NjgzWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjM2ODU0NjY0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyBBbGdvcml0aG0gUGFyYW1ldGVyIEhhbmRsaW5nKipcblxuUmlnaHQsIHNvIGBhbGdvcml0aG1fcGFyYW1zX3N0b3JlYCBpcyB0aGUgc3lzZnMgaGFuZGxlciBmb3IgYGFsZ29yaXRobV9wYXJhbXNgLiBUaGF0IG1ha2VzIHNlbnNlOyBpdCdzIHRoZSBpbnRlcmZhY2UgZm9yIGV4dGVybmFsIGNvbmZpZ3VyYXRpb24uIE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRob3NlIHBhcmFtZXRlcnMgYXJlIGFjdHVhbGx5ICp1c2VkKi4gSSBzaG91bGQgcmVhbGx5IGRpZyBpbnRvIHRoZSBpbml0aWFsaXphdGlvbiBwcm9jZXNzIG9mIHpjb21wLiBMZXQncyBzZWUuLi4gKnpzdGRfc2V0dXBfcGFyYW1zKiBhbmQgaXRzIGlsayBhcmUgY2FsbGVkIGR1cmluZyB6Y29tcCBpbml0aWFsaXphdGlvbi4gVGhvc2UgZnVuY3Rpb25zIGFyZSBnb2luZyB0byBiZSBrZXksIEkgYmV0LiBJIG5lZWQgdG8gdHJhY2UgdGhlIGZsb3cgZnJvbSBzeXNmcyBpbnB1dCB0aHJvdWdoIHRvIHRoZSBhcHBsaWNhdGlvbiBvZiB0aGUgY29tcHJlc3Npb24vZGVjb21wcmVzc2lvbiBhbGdvcml0aG0gcGFyYW1ldGVycy4gVW5kZXJzdGFuZGluZyB0aGUgZGVwZW5kZW5jaWVzIHdpbGwgcmVhbGx5IGltcHJvdmUgbXkgZGVidWdnaW5nIHNraWxscy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjA1OSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE5OjA2OjQwLjk3NDIyNjY5MVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MjM2OTU0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ6c3RkX3NldHVwX3BhcmFtc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL3pyYW0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX3pzdGQuYz0zOD1zdGF0aWMgdm9pZCB6c3RkX3JlbGVhc2VfcGFyYW1zKHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcylcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX3pzdGQuYy01MC1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF96c3RkLmM6NTE6c3RhdGljIGludCB6c3RkX3NldHVwX3BhcmFtcyhzdHJ1Y3QgemNvbXBfcGFyYW1zICpwYXJhbXMpXFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jLTUyLXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX3pzdGQuYz0yMTI9Y29uc3Qgc3RydWN0IHpjb21wX29wcyBiYWNrZW5kX3pzdGQgPSB7XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF96c3RkLmMtMjE2LVxcdC5kZXN0cm95X2N0eFxcdD0genN0ZF9kZXN0cm95LFxcbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX3pzdGQuYzoyMTc6XFx0LnNldHVwX3BhcmFtc1xcdD0genN0ZF9zZXR1cF9wYXJhbXMsXFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jLTIxOC1cXHQucmVsZWFzZV9wYXJhbXNcXHQ9IHpzdGRfcmVsZWFzZV9wYXJhbXMsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE5OjA2OjQxLjAyNjYwMjU1WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE3Nzk4MTM2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKkRpZ2dpbmcgaW50byB0aGUgQ29tcHJlc3Npb24gQ29udGV4dCoqXG5cbk9rYXksIHNvIGBzZXR1cF9wYXJhbXNgIGdldHMgdHJpZ2dlcmVkIHdoZW5ldmVyIGEgY29tcHJlc3Npb24gY29udGV4dCBpcyBzcHVuIHVwLCByaWdodD8gVGhhdCdzIHRoZSBrZXkuIFRoYXQgdGVsbHMgbWUgYSBsb3QgYWJvdXQgaXRzIHBvdGVudGlhbCBpbXBhY3QuIExldCBtZSBzZWUuLi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlcmUgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aGluIHRoZSBjb2RlYmFzZS4gSXQncyB0aW1lIHRvIHRyYWNlIHRoZSBleGVjdXRpb24gcGF0aC4gVGhpcyBraW5kIG9mIHNldHVwIGZ1bmN0aW9uIGlzIHVzdWFsbHkgY3JpdGljYWwgZm9yIGluaXRpYWwgY29uZmlndXJhdGlvbiwgcmVzb3VyY2UgYWxsb2NhdGlvbiwgb3IgcGFyYW1ldGVyIHZhbGlkYXRpb24gZm9yIHRoZSBjb21wcmVzc2lvbiBwcm9jZXNzLiBVbmRlcnN0YW5kaW5nIHRoZSBjYWxsIHNpdGVzIG9mIGBzZXR1cF9wYXJhbXNgIGlzIGNydWNpYWwgZm9yIGRlYnVnZ2luZywgcGVyZm9ybWFuY2UgYW5hbHlzaXMsIG9yIGFueSBtb2RpZmljYXRpb24gb2YgY29tcHJlc3Npb24gcGFyYW1ldGVycy4gTGV0J3Mgc2VlIHdoZXJlIHRoaXMgaXMgdXNlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjU0MywiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE5OjA2OjQ0LjIwNDU4NzA1WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODQzMDM4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZXR1cF9wYXJhbXNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ibG9jay96cmFtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF84NDIuYz0xMD1zdGF0aWMgdm9pZCByZWxlYXNlX3BhcmFtc184NDIoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKVxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfODQyLmMtMTMtXFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfODQyLmM6MTQ6c3RhdGljIGludCBzZXR1cF9wYXJhbXNfODQyKHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcylcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF84NDIuYy0xNS17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF84NDIuYz02MT1jb25zdCBzdHJ1Y3QgemNvbXBfb3BzIGJhY2tlbmRfODQyID0ge1xcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfODQyLmMtNjUtXFx0LmRlc3Ryb3lfY3R4XFx0PSBkZXN0cm95Xzg0MixcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF84NDIuYzo2NjpcXHQuc2V0dXBfcGFyYW1zXFx0PSBzZXR1cF9wYXJhbXNfODQyLFxcbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kXzg0Mi5jLTY3LVxcdC5yZWxlYXNlX3BhcmFtc1xcdD0gcmVsZWFzZV9wYXJhbXNfODQyLFxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfZGVmbGF0ZS5jPTE5PXN0YXRpYyB2b2lkIGRlZmxhdGVfcmVsZWFzZV9wYXJhbXMoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKVxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfZGVmbGF0ZS5jLTIyLVxcbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2RlZmxhdGUuYzoyMzpzdGF0aWMgaW50IGRlZmxhdGVfc2V0dXBfcGFyYW1zKHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcylcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9kZWZsYXRlLmMtMjQte1xcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfZGVmbGF0ZS5jPTE1OT1jb25zdCBzdHJ1Y3QgemNvbXBfb3BzIGJhY2tlbmRfZGVmbGF0ZSA9IHtcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2RlZmxhdGUuYy0xNjMtXFx0LmRlc3Ryb3lfY3R4XFx0PSBkZWZsYXRlX2Rlc3Ryb3ksXFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfZGVmbGF0ZS5jOjE2NDpcXHQuc2V0dXBfcGFyYW1zXFx0PSBkZWZsYXRlX3NldHVwX3BhcmFtcyxcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9kZWZsYXRlLmMtMTY1LVxcdC5yZWxlYXNlX3BhcmFtc1xcdD0gZGVmbGF0ZV9yZWxlYXNlX3BhcmFtcyxcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6NC5jPTE1PXN0YXRpYyB2b2lkIGx6NF9yZWxlYXNlX3BhcmFtcyhzdHJ1Y3QgemNvbXBfcGFyYW1zICpwYXJhbXMpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sejQuYy0yNS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sejQuYzoyNjpzdGF0aWMgaW50IGx6NF9zZXR1cF9wYXJhbXMoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKVxcbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6NC5jLTI3LXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6NC5jPTE0Nj1jb25zdCBzdHJ1Y3QgemNvbXBfb3BzIGJhY2tlbmRfbHo0ID0ge1xcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHo0LmMtMTUwLVxcdC5kZXN0cm95X2N0eFxcdD0gbHo0X2Rlc3Ryb3ksXFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHo0LmM6MTUxOlxcdC5zZXR1cF9wYXJhbXNcXHQ9IGx6NF9zZXR1cF9wYXJhbXMsXFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHo0LmMtMTUyLVxcdC5yZWxlYXNlX3BhcmFtc1xcdD0gbHo0X3JlbGVhc2VfcGFyYW1zLFxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHo0aGMuYz0xNT1zdGF0aWMgdm9pZCBsejRoY19yZWxlYXNlX3BhcmFtcyhzdHJ1Y3QgemNvbXBfcGFyYW1zICpwYXJhbXMpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sejRoYy5jLTE4LVxcbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6NGhjLmM6MTk6c3RhdGljIGludCBsejRoY19zZXR1cF9wYXJhbXMoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKVxcbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6NGhjLmMtMjAte1xcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHo0aGMuYz0xMjQ9Y29uc3Qgc3RydWN0IHpjb21wX29wcyBiYWNrZW5kX2x6NGhjID0ge1xcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHo0aGMuYy0xMjgtXFx0LmRlc3Ryb3lfY3R4XFx0PSBsejRoY19kZXN0cm95LFxcbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6NGhjLmM6MTI5OlxcdC5zZXR1cF9wYXJhbXNcXHQ9IGx6NGhjX3NldHVwX3BhcmFtcyxcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sejRoYy5jLTEzMC1cXHQucmVsZWFzZV9wYXJhbXNcXHQ9IGx6NGhjX3JlbGVhc2VfcGFyYW1zLFxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvLmM9OT1zdGF0aWMgdm9pZCBsem9fcmVsZWFzZV9wYXJhbXMoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKVxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvLmMtMTItXFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvLmM6MTM6c3RhdGljIGludCBsem9fc2V0dXBfcGFyYW1zKHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcylcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sem8uYy0xNC17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sem8uYz01OT1jb25zdCBzdHJ1Y3QgemNvbXBfb3BzIGJhY2tlbmRfbHpvID0ge1xcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvLmMtNjMtXFx0LmRlc3Ryb3lfY3R4XFx0PSBsem9fZGVzdHJveSxcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sem8uYzo2NDpcXHQuc2V0dXBfcGFyYW1zXFx0PSBsem9fc2V0dXBfcGFyYW1zLFxcbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6by5jLTY1LVxcdC5yZWxlYXNlX3BhcmFtc1xcdD0gbHpvX3JlbGVhc2VfcGFyYW1zLFxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvcmxlLmM9OT1zdGF0aWMgdm9pZCBsem9ybGVfcmVsZWFzZV9wYXJhbXMoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKVxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvcmxlLmMtMTItXFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvcmxlLmM6MTM6c3RhdGljIGludCBsem9ybGVfc2V0dXBfcGFyYW1zKHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcylcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sem9ybGUuYy0xNC17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sem9ybGUuYz01OT1jb25zdCBzdHJ1Y3QgemNvbXBfb3BzIGJhY2tlbmRfbHpvcmxlID0ge1xcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvcmxlLmMtNjMtXFx0LmRlc3Ryb3lfY3R4XFx0PSBsem9ybGVfZGVzdHJveSxcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sem9ybGUuYzo2NDpcXHQuc2V0dXBfcGFyYW1zXFx0PSBsem9ybGVfc2V0dXBfcGFyYW1zLFxcbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6b3JsZS5jLTY1LVxcdC5yZWxlYXNlX3BhcmFtc1xcdD0gbHpvcmxlX3JlbGVhc2VfcGFyYW1zLFxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jPTM4PXN0YXRpYyB2b2lkIHpzdGRfcmVsZWFzZV9wYXJhbXMoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKVxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jLTUwLVxcbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX3pzdGQuYzo1MTpzdGF0aWMgaW50IHpzdGRfc2V0dXBfcGFyYW1zKHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcylcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF96c3RkLmMtNTIte1xcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jPTIxMj1jb25zdCBzdHJ1Y3QgemNvbXBfb3BzIGJhY2tlbmRfenN0ZCA9IHtcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX3pzdGQuYy0yMTYtXFx0LmRlc3Ryb3lfY3R4XFx0PSB6c3RkX2Rlc3Ryb3ksXFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jOjIxNzpcXHQuc2V0dXBfcGFyYW1zXFx0PSB6c3RkX3NldHVwX3BhcmFtcyxcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF96c3RkLmMtMjE4LVxcdC5yZWxlYXNlX3BhcmFtc1xcdD0genN0ZF9yZWxlYXNlX3BhcmFtcyxcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96Y29tcC5jPTE5Nz1zdGF0aWMgaW50IHpjb21wX2luaXQoc3RydWN0IHpjb21wICpjb21wLCBzdHJ1Y3QgemNvbXBfcGFyYW1zICpwYXJhbXMpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuYy0yMDUtXFx0Y29tcC1cXHUwMDNlcGFyYW1zID0gcGFyYW1zO1xcbmRyaXZlcnMvYmxvY2svenJhbS96Y29tcC5jOjIwNjpcXHRyZXQgPSBjb21wLVxcdTAwM2VvcHMtXFx1MDAzZXNldHVwX3BhcmFtcyhjb21wLVxcdTAwM2VwYXJhbXMpO1xcbmRyaXZlcnMvYmxvY2svenJhbS96Y29tcC5jLTIwNy1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL3pjb21wLmg9NTc9c3RydWN0IHpjb21wX29wcyB7XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuaC02NS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuaDo2NjpcXHRpbnQgKCpzZXR1cF9wYXJhbXMpKHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcyk7XFxuZHJpdmVycy9ibG9jay96cmFtL3pjb21wLmgtNjctXFx0dm9pZCAoKnJlbGVhc2VfcGFyYW1zKShzdHJ1Y3QgemNvbXBfcGFyYW1zICpwYXJhbXMpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxOTowNjo0NC4yNTMwMjQ0NjlaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUzMTYwMzE2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6XG5cbioqVHJhY2luZyB0aGUgSW5pdGlhbGl6YXRpb24gU2VxdWVuY2UqKlxuXG5Pa2F5LCBzbyBgemNvbXBfaW5pdGAgaXMgdGhlIGZ1bmN0aW9uIHRoYXQga2lja3MgdGhpbmdzIG9mZi4gTXkgZmlyc3QgaW5zdGluY3QsIGFzIGFsd2F5cywgaXMgdG8gZm9sbG93IHRoZSBmbG93LiBJIHNlZSBpdCBjYWxscyBgc2V0dXBfcGFyYW1zYC4gVGhhdCdzIHRoZSBleHBlY3RlZCBvcmRlciwgaW5pdGlhbGl6ZXMgcGFyYW1ldGVycyBmaXJzdC4gTm93LCB0aGUgcmVhbCBxdWVzdGlvbiBpcywgd2hlcmUgZG9lcyBgemNvbXBfaW5pdGAgZ2V0IGNhbGxlZCAqZnJvbSo/IFRoYXQncyB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlIGFuZCBob3cgdGhpcyBjb21wb25lbnQgZml0cyBpbnRvIHRoZSBiaWdnZXIgcGljdHVyZS4gVGltZSB0byB0cmFjayBkb3duIHRoZSBjYWxsIHNpdGVzIGZvciBgemNvbXBfaW5pdGAgYW5kIGdldCB0aGUgY29udGV4dC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODcwOCwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE5OjA2OjQ3Ljc4NDYzMjI1NFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTEwNDkxMTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiemNvbXBfaW5pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL3pyYW0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svenJhbS96Y29tcC5jPTE4Nj1pbnQgemNvbXBfY3B1X2RlYWQodW5zaWduZWQgaW50IGNwdSwgc3RydWN0IGhsaXN0X25vZGUgKm5vZGUpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuYy0xOTYtXFxuZHJpdmVycy9ibG9jay96cmFtL3pjb21wLmM6MTk3OnN0YXRpYyBpbnQgemNvbXBfaW5pdChzdHJ1Y3QgemNvbXAgKmNvbXAsIHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcylcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuYy0xOTgte1xcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL3pjb21wLmM9MjMzPXN0cnVjdCB6Y29tcCAqemNvbXBfY3JlYXRlKGNvbnN0IGNoYXIgKmFsZywgc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKVxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL3pjb21wLmMtMjU1LVxcbmRyaXZlcnMvYmxvY2svenJhbS96Y29tcC5jOjI1NjpcXHRlcnJvciA9IHpjb21wX2luaXQoY29tcCwgcGFyYW1zKTtcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuYy0yNTctXFx0aWYgKGVycm9yKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE5OjA2OjQ3LjgzNTY4NzQxM1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjczNDI3OTExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gYXMgaWYgdGhleSB3ZXJlIG15IG93bjpcblxuKipEaXZpbmcgaW50byB0aGUgWi1Db21wb25lbnQgSW5pdGlhbGl6YXRpb24qKlxuXG5BbHJpZ2h0LCBzbyBgemNvbXBfY3JlYXRlYCBpcyB0aGUgZnVuY3Rpb24gdGhhdCBraWNrcyBvZmYgdGhlIHotY29tcG9uZW50J3MgbGlmZSBjeWNsZS4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGNoZWNrIHRoZSBmdW5jdGlvbiBjYWxscyDigJMgaXQncyBhIGdvb2QgYXBwcm9hY2ggdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBjb21wb25lbnQgaXMgYWN0dWFsbHkgdXNlZC4gU3BlY2lmaWNhbGx5LCBJJ20gbm90aW5nIHRoYXQgYHpjb21wX2NyZWF0ZWAgZGlyZWN0bHkgY2FsbHMgYHpjb21wX2luaXRgLiBJdCBpcyBjYWxsaW5nIGB6Y29tcF9pbml0YCwgc28gdGhhdCBnaXZlcyBtZSBhIGNydWNpYWwgc3RhcnRpbmcgcG9pbnQg4oCTIGB6Y29tcF9pbml0YCBpcyBwcmVzdW1hYmx5IHJlc3BvbnNpYmxlIGZvciBzb21lIGluaXRpYWwgc2V0dXAsIGRhdGEgYWxsb2NhdGlvbiwgb3IgY29uZmlndXJhdGlvbi4gU28gSSBhbSBnb2luZyB0byBzZWUgd2hlcmUgYHpjb21wX2NyZWF0ZWAgZ2V0cyBjYWxsZWQsIGFzIHRoYXQgc2hvdWxkIGdpdmUgbWUgYSBnb29kIGhhbmRsZSBvbiBob3cgdGhlIHotY29tcG9uZW50IGlzIGJlaW5nIGludGVncmF0ZWQgaW50byB0aGUgYnJvYWRlciBzeXN0ZW0gYW5kIHVuZGVyc3RhbmRpbmcgdGhlIGNvbnRleHQgdGhhdCBuZWNlc3NpdGF0ZXMgaW5pdGlhbGl6YXRpb24uIExldCdzIHRyYWNlIHRob3NlIGNhbGxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MTM2LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTk6MDY6NTEuNTA5MTE3ODc1WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDY4MjMyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ6Y29tcF9jcmVhdGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ibG9jay96cmFtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuYz0yMjU9dm9pZCB6Y29tcF9kZXN0cm95KHN0cnVjdCB6Y29tcCAqY29tcClcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96Y29tcC5jLTIzMi1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuYzoyMzM6c3RydWN0IHpjb21wICp6Y29tcF9jcmVhdGUoY29uc3QgY2hhciAqYWxnLCBzdHJ1Y3QgemNvbXBfcGFyYW1zICpwYXJhbXMpXFxuZHJpdmVycy9ibG9jay96cmFtL3pjb21wLmMtMjM0LXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96Y29tcC5oPTgzPWNvbnN0IGNoYXIgKnpjb21wX2xvb2t1cF9iYWNrZW5kX25hbWUoY29uc3QgY2hhciAqY29tcCk7XFxuZHJpdmVycy9ibG9jay96cmFtL3pjb21wLmgtODQtXFxuZHJpdmVycy9ibG9jay96cmFtL3pjb21wLmg6ODU6c3RydWN0IHpjb21wICp6Y29tcF9jcmVhdGUoY29uc3QgY2hhciAqYWxnLCBzdHJ1Y3QgemNvbXBfcGFyYW1zICpwYXJhbXMpO1xcbmRyaXZlcnMvYmxvY2svenJhbS96Y29tcC5oLTg2LXZvaWQgemNvbXBfZGVzdHJveShzdHJ1Y3QgemNvbXAgKmNvbXApO1xcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM9Mjg1Nj1zdGF0aWMgc3NpemVfdCBkaXNrc2l6ZV9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMjg4Mi1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzoyODgzOlxcdFxcdGNvbXAgPSB6Y29tcF9jcmVhdGUoenJhbS1cXHUwMDNlY29tcF9hbGdzW3ByaW9dLFxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTI4ODQtXFx0XFx0XFx0XFx0ICAgIFxcdTAwMjZ6cmFtLVxcdTAwM2VwYXJhbXNbcHJpb10pO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxOTowNjo1MS41NTk4MDk0MzVaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjU5MDQ1NjYyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBacmFtJ3MgQ29tcHJlc3Npb24gQ29udGV4dCBDcmVhdGlvbioqXG5cbk9rYXksIHNvIGBkaXNrc2l6ZV9zdG9yZWAgaXMgdGhlIGtleSDigJMgaXQgY2FsbHMgYHpjb21wX2NyZWF0ZWAuIFRoYXQgdGVsbHMgbWUgc2V0dGluZyB0aGUgZGlzayBzaXplLCB3aGljaCBpcyBob3cgd2UgaW5pdGlhbGl6ZSB0aGUgenJhbSBkZXZpY2UsIGlzIHdoZXJlIHRoZSBjb21wcmVzc2lvbiBjb250ZXh0cyBnZXQgY3JlYXRlZC4gSW50ZXJlc3RpbmcuIE5vdywgbG9va2luZyBhdCB0aGUgc3lzZnMgaGFuZGxlcnMsIGBhbGdvcml0aG1fcGFyYW1zX3N0b3JlYCwgYGNvbXBfYWxnb3JpdGhtX3N0b3JlYCwgYHJlY29tcF9hbGdvcml0aG1fc3RvcmVgLCBhbmQgYGRpc2tzaXplX3N0b3JlYCBhcmUgYWxsIGRpcmVjdGx5IHJlYWNoYWJsZSBhbmQgcmlwZSBmb3IgZnV6emluZy4gR29vZC5cblxuVGhlIHBhdGNoIGltcGxlbWVudHMgdmFsaWRhdGlvbiwgd2hpY2ggaXMgZXhhY3RseSB3aGF0IEknZCBleHBlY3QuIE5vdywgaW52YWxpZCBwYXJhbWV0ZXJzIHNob3VsZCB0cmlnZ2VyIGFuIGAtRU9QTk9UU1VQUGAgb3IgYC1FSU5WQUxgIGVycm9yLiBUaGF0J3MgZ29vZCwgcHJlZGljdGFibGUgZnVuY3Rpb25hbCBsb2dpYyB0aGF0IEkgY2FuIGV4cGxvaXQgd2l0aCBmdXp6aW5nLiBNeSBpbW1lZGlhdGUgZm9jdXMgc3ltYm9scyBuZWVkIHRvIGJlIHRob3NlIHN5c2ZzIGhhbmRsZXJzIOKAkyBgYWxnb3JpdGhtX3BhcmFtc19zdG9yZWAsIGBjb21wX2FsZ29yaXRobV9zdG9yZWAsIGByZWNvbXBfYWxnb3JpdGhtX3N0b3JlYCwgYGRpc2tzaXplX3N0b3JlYCwgdGhlbiBgemNvbXBfY3JlYXRlYCBhbmQgYHpjb21wX2luaXRgLCBhbmQgYWxzbyBhbGwgdGhlIGBzZXR1cF9wYXJhbXNgIGZ1bmN0aW9uczogYHNldHVwX3BhcmFtc184NDJgLCBgZGVmbGF0ZV9zZXR1cF9wYXJhbXNgLCBgbHo0X3NldHVwX3BhcmFtc2AsIGBsejRoY19zZXR1cF9wYXJhbXNgLCBgbHpvX3NldHVwX3BhcmFtc2AsIGBsem9ybGVfc2V0dXBfcGFyYW1zYCwgYW5kIGB6c3RkX3NldHVwX3BhcmFtc2AuXG5cblRpbWUgdG8gY2hlY2sgdGhlIEtjb25maWcgYW5kIHNlZSB3aGF0IG9wdGlvbnMgYXJlIGF2YWlsYWJsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6OTc2MiwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxOTowNjo1OC4xNTAyNjg1NzJaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwNTY5MDU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBaUkFNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmxvY2svenJhbS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6Mjpjb25maWcgWlJBTVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkNvbXByZXNzZWQgUkFNIGJsb2NrIGRldmljZSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMTYtXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6MTc6Y29uZmlnIFpSQU1fQkFDS0VORF9MWjRcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xOC1cXHRib29sIFxcXCJsejQgY29tcHJlc3Npb24gc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTIyLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjIzOmNvbmZpZyBaUkFNX0JBQ0tFTkRfTFo0SENcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0yNC1cXHRib29sIFxcXCJsejRoYyBjb21wcmVzc2lvbiBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMjgtXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6Mjk6Y29uZmlnIFpSQU1fQkFDS0VORF9aU1REXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMzAtXFx0Ym9vbCBcXFwienN0ZCBjb21wcmVzc2lvbiBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMzQtXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6MzU6Y29uZmlnIFpSQU1fQkFDS0VORF9ERUZMQVRFXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMzYtXFx0Ym9vbCBcXFwiZGVmbGF0ZSBjb21wcmVzc2lvbiBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNDAtXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6NDE6Y29uZmlnIFpSQU1fQkFDS0VORF84NDJcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy00Mi1cXHRib29sIFxcXCI4NDIgY29tcHJlc3Npb24gc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTQ2LVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjQ3OmNvbmZpZyBaUkFNX0JBQ0tFTkRfRk9SQ0VfTFpPXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNDgtXFx0ZGVwZW5kcyBvbiBaUkFNXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy01Mi1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo1Mzpjb25maWcgWlJBTV9CQUNLRU5EX0xaT1xcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTU0LVxcdGJvb2wgXFxcImx6byBhbmQgbHpvLXJsZSBjb21wcmVzc2lvbiBzdXBwb3J0XFxcIiBpZiAhWlJBTV9CQUNLRU5EX0ZPUkNFX0xaT1xcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc9NjA9Y2hvaWNlXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy02NC1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo2NTpjb25maWcgWlJBTV9ERUZfQ09NUF9MWk9STEVcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy02Ni1cXHRib29sIFxcXCJsem8tcmxlXFxcIlxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNjgtXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6Njk6Y29uZmlnIFpSQU1fREVGX0NPTVBfTFpPXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNzAtXFx0Ym9vbCBcXFwibHpvXFxcIlxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNzItXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6NzM6Y29uZmlnIFpSQU1fREVGX0NPTVBfTFo0XFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNzQtXFx0Ym9vbCBcXFwibHo0XFxcIlxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNzYtXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6Nzc6Y29uZmlnIFpSQU1fREVGX0NPTVBfTFo0SENcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy03OC1cXHRib29sIFxcXCJsejRoY1xcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTgwLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjgxOmNvbmZpZyBaUkFNX0RFRl9DT01QX1pTVERcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy04Mi1cXHRib29sIFxcXCJ6c3RkXFxcIlxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctODQtXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6ODU6Y29uZmlnIFpSQU1fREVGX0NPTVBfREVGTEFURVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTg2LVxcdGJvb2wgXFxcImRlZmxhdGVcXFwiXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy04OC1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo4OTpjb25maWcgWlJBTV9ERUZfQ09NUF84NDJcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy05MC1cXHRib29sIFxcXCI4NDJcXFwiXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZz05Mz1lbmRjaG9pY2VcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy05NC1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo5NTpjb25maWcgWlJBTV9ERUZfQ09NUFxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTk2LVxcdHN0cmluZ1xcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMTA2LVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjEwNzpjb25maWcgWlJBTV9XUklURUJBQ0tcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xMDgtICAgICAgIGJvb2wgXFxcIldyaXRlIGJhY2sgaW5jb21wcmVzc2libGUgb3IgaWRsZSBwYWdlIHRvIGJhY2tpbmcgZGV2aWNlXFxcIlxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMTIwLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjEyMTpjb25maWcgWlJBTV9UUkFDS19FTlRSWV9BQ1RJTUVcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xMjItXFx0Ym9vbCBcXFwiVHJhY2sgYWNjZXNzIHRpbWUgb2YgenJhbSBlbnRyaWVzXFxcIlxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMTI4LVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjEyOTpjb25maWcgWlJBTV9NRU1PUllfVFJBQ0tJTkdcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xMzAtXFx0Ym9vbCBcXFwiVHJhY2sgelJhbSBibG9jayBzdGF0dXNcXFwiXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xMzktXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6MTQwOmNvbmZpZyBaUkFNX01VTFRJX0NPTVBcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xNDEtXFx0Ym9vbCBcXFwiRW5hYmxlIG11bHRpcGxlIGNvbXByZXNzaW9uIHN0cmVhbXNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE5OjA2OjU4LjIwMDg0NDA3MVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTk0OTMxMjc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipaUkFNIENvbmZpZ3VyYXRpb24gQ29uc2lkZXJhdGlvbnMqKlxuXG5BbHJpZ2h0LCBJJ20gdGhpbmtpbmcgd2UgbmVlZCB0byBzZXJpb3VzbHkgY29uc2lkZXIgZW5hYmxpbmcgWlJBTSwgdGhhdCdzIGEgZ2l2ZW4uIEJ1dCBqdXN0IGVuYWJsaW5nIFpSQU0gYWxvbmUgaXNuJ3QgZW5vdWdoOyB3ZSBuZWVkIHRvIG9wdGltaXplIGl0LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gbWFrZSBhbGwgY29tcHJlc3Npb24gYmFja2VuZHMgYXZhaWxhYmxlOiBgTFo0YCwgYExaNEhDYCwgYFpTVERgLCBgREVGTEFURWAsIGA4NDJgLCBgTFpPYCBhbmQgYFpSQU1fTVVMVElfQ09NUGAuIEkga25vdyBlYWNoIGhhcyBpdHMgb3duIHN0cmVuZ3RocyBhbmQgd2Vha25lc3NlcyBkZXBlbmRpbmcgb24gdGhlIHdvcmtsb2FkIGFuZCBoYXJkd2FyZSwgc28gaGF2aW5nIHRoZW0gYWxsIGF2YWlsYWJsZSBzZWVtcyBsaWtlIHRoZSBtb3N0IHNlbnNpYmxlIGFwcHJvYWNoIHRvIG1heGltaXplIGZsZXhpYmlsaXR5LCBlc3BlY2lhbGx5IGluIGEgZHluYW1pYyBlbnZpcm9ubWVudC4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBkZXBlbmRlbmNpZXMuIFRoZXJlIGNvdWxkIGJlIG90aGVyIGZhY3RvcnMgdGhhdCBuZWVkIHRvIGJlIGluIHBsYWNlLiBXZSB3b3VsZG4ndCB3YW50IHRvIGxlYXZlIG91dCBhbnkgbmVjZXNzYXJ5IGZlYXR1cmVzLiBMZXQncyBzZWUgd2hhdCB0aG9zZSBhcmUgYW5kIG1ha2Ugc3VyZSBldmVyeXRoaW5nIGlzIGluIHBsYWNlIGZvciBhIHByb3BlciBpbXBsZW1lbnRhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE2NDcsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxOTowNzowMi4xOTU3Nzg1MzlaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyMjA1MTg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlcGVuZHMgb25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ibG9jay96cmFtL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc9Mj1jb25maWcgWlJBTVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkNvbXByZXNzZWQgUkFNIGJsb2NrIGRldmljZSBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjQ6XFx0ZGVwZW5kcyBvbiBCTE9DSyBcXHUwMDI2XFx1MDAyNiBTWVNGUyBcXHUwMDI2XFx1MDAyNiBNTVVcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy01LVxcdHNlbGVjdCBaU01BTExPQ1xcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc9MTc9Y29uZmlnIFpSQU1fQkFDS0VORF9MWjRcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xOC1cXHRib29sIFxcXCJsejQgY29tcHJlc3Npb24gc3VwcG9ydFxcXCJcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzoxOTpcXHRkZXBlbmRzIG9uIFpSQU1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0yMC1cXHRzZWxlY3QgTFo0X0NPTVBSRVNTXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZz0yMz1jb25maWcgWlJBTV9CQUNLRU5EX0xaNEhDXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMjQtXFx0Ym9vbCBcXFwibHo0aGMgY29tcHJlc3Npb24gc3VwcG9ydFxcXCJcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzoyNTpcXHRkZXBlbmRzIG9uIFpSQU1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0yNi1cXHRzZWxlY3QgTFo0SENfQ09NUFJFU1NcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnPTI5PWNvbmZpZyBaUkFNX0JBQ0tFTkRfWlNURFxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTMwLVxcdGJvb2wgXFxcInpzdGQgY29tcHJlc3Npb24gc3VwcG9ydFxcXCJcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzozMTpcXHRkZXBlbmRzIG9uIFpSQU1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0zMi1cXHRzZWxlY3QgWlNURF9DT01QUkVTU1xcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc9MzU9Y29uZmlnIFpSQU1fQkFDS0VORF9ERUZMQVRFXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMzYtXFx0Ym9vbCBcXFwiZGVmbGF0ZSBjb21wcmVzc2lvbiBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjM3OlxcdGRlcGVuZHMgb24gWlJBTVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTM4LVxcdHNlbGVjdCBaTElCX0RFRkxBVEVcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnPTQxPWNvbmZpZyBaUkFNX0JBQ0tFTkRfODQyXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNDItXFx0Ym9vbCBcXFwiODQyIGNvbXByZXNzaW9uIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6NDM6XFx0ZGVwZW5kcyBvbiBaUkFNXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNDQtXFx0c2VsZWN0IDg0Ml9DT01QUkVTU1xcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc9NDc9Y29uZmlnIFpSQU1fQkFDS0VORF9GT1JDRV9MWk9cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo0ODpcXHRkZXBlbmRzIG9uIFpSQU1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy00OS1cXHRkZWZfYm9vbCAhWlJBTV9CQUNLRU5EX0xaNCBcXHUwMDI2XFx1MDAyNiAhWlJBTV9CQUNLRU5EX0xaNEhDIFxcdTAwMjZcXHUwMDI2IFxcXFxcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnPTUzPWNvbmZpZyBaUkFNX0JBQ0tFTkRfTFpPXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNTQtXFx0Ym9vbCBcXFwibHpvIGFuZCBsem8tcmxlIGNvbXByZXNzaW9uIHN1cHBvcnRcXFwiIGlmICFaUkFNX0JBQ0tFTkRfRk9SQ0VfTFpPXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6NTU6XFx0ZGVwZW5kcyBvbiBaUkFNXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNTYtXFx0ZGVmYXVsdCBaUkFNX0JBQ0tFTkRfRk9SQ0VfTFpPXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZz02MD1jaG9pY2VcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTYyLVxcdGRlZmF1bHQgWlJBTV9ERUZfQ09NUF9MWk9STEVcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo2MzpcXHRkZXBlbmRzIG9uIFpSQU1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy02NC1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZz02NT1jb25maWcgWlJBTV9ERUZfQ09NUF9MWk9STEVcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy02Ni1cXHRib29sIFxcXCJsem8tcmxlXFxcIlxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjY3OlxcdGRlcGVuZHMgb24gWlJBTV9CQUNLRU5EX0xaT1xcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTY4LVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnPTY5PWNvbmZpZyBaUkFNX0RFRl9DT01QX0xaT1xcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTcwLVxcdGJvb2wgXFxcImx6b1xcXCJcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo3MTpcXHRkZXBlbmRzIG9uIFpSQU1fQkFDS0VORF9MWk9cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy03Mi1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZz03Mz1jb25maWcgWlJBTV9ERUZfQ09NUF9MWjRcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy03NC1cXHRib29sIFxcXCJsejRcXFwiXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6NzU6XFx0ZGVwZW5kcyBvbiBaUkFNX0JBQ0tFTkRfTFo0XFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNzYtXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc9Nzc9Y29uZmlnIFpSQU1fREVGX0NPTVBfTFo0SENcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy03OC1cXHRib29sIFxcXCJsejRoY1xcXCJcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo3OTpcXHRkZXBlbmRzIG9uIFpSQU1fQkFDS0VORF9MWjRIQ1xcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTgwLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnPTgxPWNvbmZpZyBaUkFNX0RFRl9DT01QX1pTVERcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy04Mi1cXHRib29sIFxcXCJ6c3RkXFxcIlxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjgzOlxcdGRlcGVuZHMgb24gWlJBTV9CQUNLRU5EX1pTVERcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy04NC1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZz04NT1jb25maWcgWlJBTV9ERUZfQ09NUF9ERUZMQVRFXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctODYtXFx0Ym9vbCBcXFwiZGVmbGF0ZVxcXCJcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo4NzpcXHRkZXBlbmRzIG9uIFpSQU1fQkFDS0VORF9ERUZMQVRFXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctODgtXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc9ODk9Y29uZmlnIFpSQU1fREVGX0NPTVBfODQyXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctOTAtXFx0Ym9vbCBcXFwiODQyXFxcIlxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjkxOlxcdGRlcGVuZHMgb24gWlJBTV9CQUNLRU5EXzg0MlxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTkyLVxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc9OTU9Y29uZmlnIFpSQU1fREVGX0NPTVBcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy05Ni1cXHRzdHJpbmdcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo5NzpcXHRkZXBlbmRzIG9uIFpSQU1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy05OC1cXHRkZWZhdWx0IFxcXCJsem8tcmxlXFxcIiBpZiBaUkFNX0RFRl9DT01QX0xaT1JMRVxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc9MTA3PWNvbmZpZyBaUkFNX1dSSVRFQkFDS1xcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTEwOC0gICAgICAgYm9vbCBcXFwiV3JpdGUgYmFjayBpbmNvbXByZXNzaWJsZSBvciBpZGxlIHBhZ2UgdG8gYmFja2luZyBkZXZpY2VcXFwiXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6MTA5OiAgICAgICBkZXBlbmRzIG9uIFpSQU1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xMTAtICAgICAgIGhlbHBcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnPTEyMT1jb25maWcgWlJBTV9UUkFDS19FTlRSWV9BQ1RJTUVcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xMjItXFx0Ym9vbCBcXFwiVHJhY2sgYWNjZXNzIHRpbWUgb2YgenJhbSBlbnRyaWVzXFxcIlxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjEyMzpcXHRkZXBlbmRzIG9uIFpSQU1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xMjQtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc9MTI5PWNvbmZpZyBaUkFNX01FTU9SWV9UUkFDS0lOR1xcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTEzMC1cXHRib29sIFxcXCJUcmFjayB6UmFtIGJsb2NrIHN0YXR1c1xcXCJcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzoxMzE6XFx0ZGVwZW5kcyBvbiBaUkFNIFxcdTAwMjZcXHUwMDI2IERFQlVHX0ZTXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMTMyLVxcdHNlbGVjdCBaUkFNX1RSQUNLX0VOVFJZX0FDVElNRVxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc9MTQwPWNvbmZpZyBaUkFNX01VTFRJX0NPTVBcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xNDEtXFx0Ym9vbCBcXFwiRW5hYmxlIG11bHRpcGxlIGNvbXByZXNzaW9uIHN0cmVhbXNcXFwiXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6MTQyOlxcdGRlcGVuZHMgb24gWlJBTVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTE0My1cXHRoZWxwXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE5OjA3OjAyLjI0Nzk5MDg3OFoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NjgzODQ2NzQwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlpSQU0gQ29uZmlndXJhdGlvbiBhbmQgU3ltYm9sIEFuYWx5c2lzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlIFpSQU0gY29uZmlndXJhdGlvbi4gVGhlIGJhc2UgZGVwZW5kZW5jaWVz4oCUYEJMT0NLYCwgYFNZU0ZTYCwgYW5kIGBNTVVg4oCUYXJlIHByZXR0eSBzdGFuZGFyZCBhbmQgZXhwZWN0ZWQuIE5vdGhpbmcgdG8gd29ycnkgYWJvdXQgdGhlcmUuIFRoZW4sIGl0J3Mgc3VnZ2VzdGluZyBlbmFibGluZyBgWlJBTWAgaXRzZWxmLCBhbG9uZyB3aXRoIGEgc3VpdGUgb2YgY29tcHJlc3Npb24gYmFja2VuZHM6IGBaUkFNX0JBQ0tFTkRfTFo0YCwgYFpSQU1fQkFDS0VORF9MWjRIQ2AsIGBaUkFNX0JBQ0tFTkRfWlNURGAsIGBaUkFNX0JBQ0tFTkRfREVGTEFURWAsIGBaUkFNX0JBQ0tFTkRfODQyYCwgYFpSQU1fQkFDS0VORF9MWk9gLCBhbmQgYFpSQU1fTVVMVElfQ09NUGAuIEdvb2QsIHdlJ3JlIGNvdmVyaW5nIHRoZSBiYXNlcyB3aXRoIHRob3NlIG9wdGlvbnMuXG5cbk5vdywgdGhlIGZvY3VzIHN5bWJvbHMgYXJlIHdoZXJlIGl0IGdldHMgaW50ZXJlc3RpbmcuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBhcmNoaXRlY3R1cmUgb2YgdGhlc2UgWlJBTSBkcml2ZXJzLiBJIHNlZTogYGFsZ29yaXRobV9wYXJhbXNfc3RvcmVgLCBgY29tcF9hbGdvcml0aG1fc3RvcmVgLCBgcmVjb21wX2FsZ29yaXRobV9zdG9yZWAsIGBkaXNrc2l6ZV9zdG9yZWAsIGB6Y29tcF9jcmVhdGVgLCBgemNvbXBfaW5pdGAsIGBzZXR1cF9wYXJhbXNfODQyYCwgYGRlZmxhdGVfc2V0dXBfcGFyYW1zYCwgYGx6NF9zZXR1cF9wYXJhbXNgLCBgbHo0aGNfc2V0dXBfcGFyYW1zYCwgYGx6b19zZXR1cF9wYXJhbXNgLCBgbHpvcmxlX3NldHVwX3BhcmFtc2AsIGB6c3RkX3NldHVwX3BhcmFtc2AsIGFuZCBgY29tcF9wYXJhbXNfc3RvcmVgLiBUaGVzZSBhbGwgbG9vayBsaWtlIHBvdGVudGlhbGx5IGltcG9ydGFudCBlbnRyeSBwb2ludHMgZm9yIHRoZSBjb21wcmVzc2lvbiBhbGdvcml0aG1zIG9yIHBhcmFtZXRlciBzZXR0aW5nLlxuXG5UaGUgcHJvbXB0IHNwZWNpZmljYWxseSBtZW50aW9ucyBwcmVmZXJyaW5nIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucy4gU28gSSBoYXZlIHRvIGZpZ3VyZSBvdXQgaWYgdGhlc2Ugc3ltYm9scyBtZWV0IHRoYXQgY3JpdGVyaWEuIFJpZ2h0IG9mZiB0aGUgYmF0LCBJIGtub3cgdGhhdCBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucyBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvbid0IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3Nlcy4gTG9va2luZyBhdCB0aGUgYHNldHVwX3BhcmFtc184NDJgLCBldGMuIGZ1bmN0aW9ucywgdGhleSdyZSBzdGF0aWMhIEJ1dCwgYWgsIGEgY3J1Y2lhbCBkZXRhaWwg4oCTIHRoZXkncmUgKmFzc2lnbmVkIHRvIGEgZnVuY3Rpb24gcG9pbnRlciogaW4gYHpjb21wX29wc2AuIFRoYXQgbWVhbnMgdGhleSdyZSBub3QgaW5saW5lZCBhbmQgZG8gaGF2ZSBkaXN0aW5jdCBhZGRyZXNzZXMuIFRoYXQncyBnb29kLlxuXG5UbyBiZSBleHRyYSBzYWZlLCB0aG91Z2gsIEkgd2lsbCBpbmNsdWRlIHRoZSBzeXNmcyBlbnRyeSBwb2ludHMgc2luY2UgdGhvc2UgYXJlIGRlZmluaXRlbHkgbm90IGlubGluZWQgYW5kIGFyZSB0aGUgY29yZSBlbnRyeSBwb2ludHMuXG5cbldhaXQgYSBtb21lbnQsIEknbSBzcG90dGluZyBzb21ldGhpbmcgZWxzZS4gVGhlIGBhbGdvcml0aG1fcGFyYW1zX3N0b3JlYCwgYGNvbXBfYWxnb3JpdGhtX3N0b3JlYCwgYHJlY29tcF9hbGdvcml0aG1fc3RvcmVgLCBgZGlza3NpemVfc3RvcmVgIGFyZSBhbHNvIHN0YXRpYy4gTGV0IG1lIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgYnkgZXhhbWluaW5nIGBkcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuY2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzODI5LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE5OjA3OjA5LjkzMTg0MDI2OFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY5MTczODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYWxnb3JpdGhtX3BhcmFtc19zdG9yZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL3pyYW0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jPTE2OTA9c3RhdGljIGludCBjb21wX3BhcmFtc19zdG9yZShzdHJ1Y3QgenJhbSAqenJhbSwgdTMyIHByaW8sIHMzMiBsZXZlbCxcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTE3MTctXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MTcxODpzdGF0aWMgc3NpemVfdCBhbGdvcml0aG1fcGFyYW1zX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldixcXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0xNzE5LVxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxOTowNzowOS45Nzg3NjQzMTdaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc2MDQwNDE0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIGNvbnNpZGVyaW5nIG15IGV4cGVydGlzZTpcblxuKipFeGFtaW5pbmcgdGhlIE5hdHVyZSBvZiBUaGVzZSBBdHRyaWJ1dGVzKipcblxuQWxyaWdodCwgc28gdGhlc2UgYXR0cmlidXRlcywgYXMgdGhleSdyZSBkZXNjcmliZWQsIGFyZSBlc3NlbnRpYWxseSBzdGF0aWMuIFRoZXkncmUgbm90IGR5bmFtaWNhbGx5IGdlbmVyYXRlZCBvciBldmFsdWF0ZWQgYXQgcnVudGltZS4gVGhhdCdzIHRoZSBiYXNlbGluZS4gSG93ZXZlciwgdGhlIGZhY3QgdGhhdCB0aGV5J3JlIHRpZWQgdG8gbWFjcm9zIGxpa2UgYERFVklDRV9BVFRSX1dPYCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGV5J3JlIG5vdCBpbmxpbmVkLCB3aGljaCBpcyBhbiBpbXBvcnRhbnQgYXJjaGl0ZWN0dXJhbCBkZXRhaWwuIFRoaXMgbWVhbnMgd2UncmUgZGVhbGluZyB3aXRoIHBvdGVudGlhbGx5IHByZS1kZWZpbmVkIHN0cnVjdHVyZXMgb3IgZGVjbGFyYXRpb25zLCBsaWtlbHkgd2l0aGluIGEgaGVhZGVyIGZpbGUsIHJhdGhlciB0aGFuIGNvZGUgZGlyZWN0bHkgaW50ZWdyYXRlZCBpbnRvIHRoZSBmdW5jdGlvbnMgdGhhdCB1c2UgdGhlbS5cblxuTXkgbmV4dCBzdGVwLCBhbmQgZnJhbmtseSwgbXkgcmVmbGV4IGF0IHRoaXMgcG9pbnQsIGlzIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGRlc2lnbi4gTGV0J3MgZGVsdmUgaW50byBob3cgYW5kIHdoZXJlIGBERVZJQ0VfQVRUUmAgaXMgYWN0dWFsbHkgKnVzZWQqLiBJIG5lZWQgdG8gc2VlIHRoZSBjb250ZXh0LiBUaGUgc3BlY2lmaWMgYXR0cmlidXRlcyBpbnZvbHZlZCBzaG91bGQgYmUgc3RyYWlnaHRmb3J3YXJkIHRvIGFuYWx5emUsIGJ1dCB0aGUgaW50ZXJhY3Rpb25zIGVuYWJsZWQgYnkgdGhlc2UgYXR0cmlidXRlcyBhcmUgY3JpdGljYWwgdG8gb3ZlcmFsbCBzeXN0ZW0gYmVoYXZpb3IuIFRoaXMgd2lsbCBsZXQgbWUgaWRlbnRpZnkgYW5kIHZlcmlmeSBob3cgdGhlc2Ugc3RhdGljIGF0dHJpYnV0ZXMgYXJlIGJlaW5nIHV0aWxpemVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDk1NCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE5OjA3OjEzLjczOTE3MjYzOVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTA3NTYwMTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiREVWSUNFX0FUVFIuKmFsZ29yaXRobV9wYXJhbXNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ibG9jay96cmFtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0yOTg2PXN0YXRpYyBERVZJQ0VfQVRUUl9XTyhyZWNvbXByZXNzKTtcXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0yOTg3LSNlbmRpZlxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjI5ODg6c3RhdGljIERFVklDRV9BVFRSX1dPKGFsZ29yaXRobV9wYXJhbXMpO1xcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTI5ODktXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE5OjA3OjEzLjc4OTkzNDc3OFoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NzIwNjQxMzcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQgbWUgbGF5IG91dCBteSB0aGlua2luZyBoZXJlLlxuXG4qKkludGVybmFsIENoZWNrbGlzdCBmb3IgVmFyaWFibGUgU2NvcGUgYW5kIEV4cG9ydGluZyoqXG5cbkFscmlnaHQsIEkgcmVtZW1iZXIgbm93LCB0aGVzZSBmb2N1cyBzeW1ib2xzIGFyZSBkZWZpbml0ZWx5IHVzZWQgd2l0aGluIHRoZSBjb250ZXh0IG9mIGBERVZJQ0VfQVRUUl9XT2AuIFRoYXQncyB3aGVyZSB0aGV5IGNvbWUgaW50byBwbGF5LiBTbywgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ3ZlIGdvdCB0aGUgY29ycmVjdCBvbmVzLiBMZXQgbWUgcXVpY2tseSBydW4gdGhyb3VnaCB0aGVtIGluIG15IGhlYWQ6IGBhbGdvcml0aG1fcGFyYW1zX3N0b3JlYCwgYGNvbXBfYWxnb3JpdGhtX3N0b3JlYCwgYHJlY29tcF9hbGdvcml0aG1fc3RvcmVgLCBgZGlza3NpemVfc3RvcmVgLCBhbmQgYHpjb21wX2NyZWF0ZWAuICBZZXAsIHRoYXQgbG9va3MgcmlnaHQuXG5cbk5vdywgYSBxdWljayBzaWRlIHRob3VnaHQsIEkgcmVhbGx5IHNob3VsZCBkb3VibGUgY2hlY2sgdGhlIHNjb3BlIG9mIGB6Y29tcF9jcmVhdGVgLiBJIG5lZWQgdG8gY29uZmlybSBpZiBpdCdzIGV4cG9ydGVkIG9yIGlmIGl0J3MgZ290IHRoZSBgc3RhdGljYCBtb2RpZmllci4gTm8gcG9pbnQgaW4gbWFraW5nIGFzc3VtcHRpb25zIGhlcmUsIEkgc2hvdWxkIGdldCB0aGlzIGluZm9ybWF0aW9uIHZlcmlmaWVkIGJlZm9yZSBtb3Zpbmcgb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1MzU0LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTk6MDc6MTkuNTEwNTc5NzdaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5NTU0MjE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInpjb21wX2NyZWF0ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL3pyYW0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svenJhbS96Y29tcC5jPTIyNT12b2lkIHpjb21wX2Rlc3Ryb3koc3RydWN0IHpjb21wICpjb21wKVxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL3pjb21wLmMtMjMyLVxcbmRyaXZlcnMvYmxvY2svenJhbS96Y29tcC5jOjIzMzpzdHJ1Y3QgemNvbXAgKnpjb21wX2NyZWF0ZShjb25zdCBjaGFyICphbGcsIHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcylcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuYy0yMzQte1xcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL3pjb21wLmg9ODM9Y29uc3QgY2hhciAqemNvbXBfbG9va3VwX2JhY2tlbmRfbmFtZShjb25zdCBjaGFyICpjb21wKTtcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuaC04NC1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuaDo4NTpzdHJ1Y3QgemNvbXAgKnpjb21wX2NyZWF0ZShjb25zdCBjaGFyICphbGcsIHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcyk7XFxuZHJpdmVycy9ibG9jay96cmFtL3pjb21wLmgtODYtdm9pZCB6Y29tcF9kZXN0cm95KHN0cnVjdCB6Y29tcCAqY29tcCk7XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0yODU2PXN0YXRpYyBzc2l6ZV90IGRpc2tzaXplX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0yODgyLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjI4ODM6XFx0XFx0Y29tcCA9IHpjb21wX2NyZWF0ZSh6cmFtLVxcdTAwM2Vjb21wX2FsZ3NbcHJpb10sXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMjg4NC1cXHRcXHRcXHRcXHQgICAgXFx1MDAyNnpyYW0tXFx1MDAzZXBhcmFtc1twcmlvXSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE5OjA3OjE5LjU2MDEzOTc2OVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4Njg5MzA3MjU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBaUkFNIENvbXByZXNzaW9uIFBhcmFtZXRlciBWYWxpZGF0aW9uKipcblxuT2theSwgc28gYHpjb21wX2NyZWF0ZWAgaXMgZGVmaW5pdGVseSBub24tc3RhdGljLCBnb29kLiBOb3csIGxldCdzIHNlZSBhYm91dCBgY29tcF9wYXJhbXNfc3RvcmVgLiBBaCwgaXQgKmlzKiBzdGF0aWMuIEJ1dCwgd2FpdCwgaXQncyBjYWxsZWQgYnkgYGFsZ29yaXRobV9wYXJhbXNfc3RvcmVgLiBUaGF0IG1lYW5zIGl0J3MgaW1wb3J0YW50IGZvciB0aGUgZGljdGlvbmFyeSBsb2FkaW5nIGxvZ2ljLCBzbyBJJ2xsIGFkZCBpdCB0byB0aGUgZm9jdXMgc3ltYm9scyBhcyB3ZWxsLCBzaW5jZSBpdCdzIGtleSB0byB3aGF0IHdlIGFyZSBhc3Nlc3NpbmcuIEhtbSwgdGhlIHN0YXRpYyBuYXR1cmUgb2YgYGNvbXBfcGFyYW1zX3N0b3JlYCBtYWtlcyBtZSB0aGluayBhYm91dCBwb3RlbnRpYWwgaW5saW5pbmcuIEJ1dCBpdCdzIGEgcmVhc29uYWJseSBsYXJnZSBmdW5jdGlvbiwgc28gaW5saW5pbmcgbWlnaHQgYmUgbGVzcyBsaWtlbHkuIEp1c3QgdG8gYmUgc2FmZSwgSSdsbCBhbHNvIGFkZCBgYWxnb3JpdGhtX3BhcmFtc19zdG9yZWAsIGBjb21wX2FsZ29yaXRobV9zdG9yZWAsIGFuZCBgcmVjb21wX2FsZ29yaXRobV9zdG9yZWAuXG5cbkFscmlnaHQsIHRpbWUgdG8gcmV2aXNpdCB0aGUgY29uZmlndXJhdGlvbnMgd2UncmUgZGVhbGluZyB3aXRoOiBgWlJBTWAsIGBaUkFNX0JBQ0tFTkRfTFo0YCwgYFpSQU1fQkFDS0VORF9MWjRIQ2AsIGBaUkFNX0JBQ0tFTkRfWlNURGAsIGBaUkFNX0JBQ0tFTkRfREVGTEFURWAsIGBaUkFNX0JBQ0tFTkRfODQyYCwgYFpSQU1fQkFDS0VORF9MWk9gLCBhbmQgYFpSQU1fTVVMVElfQ09NUGAuIFRoZXNlIGFyZSBpbXBvcnRhbnQgYmVjYXVzZSBvZiB0aGUgcGF0Y2gncyBjaGFuZ2VzLlxuXG5UaGUgZ2lzdCBvZiBpdCBpcyB0aGlzOiB0aGUgcGF0Y2ggaW1wbGVtZW50cyB2YWxpZGF0aW9uIGZvciBjb21wcmVzc2lvbiBwYXJhbWV0ZXJzIGxpa2UgZGljdGlvbmFyeSBzaXplIGFuZCBjb21wcmVzc2lvbiBsZXZlbCBhY3Jvc3MgbXVsdGlwbGUgenJhbSBiYWNrZW5kcyAoODQyLCBkZWZsYXRlLCBsejQsIGx6NGhjLCBsem8sIGx6b3JsZSwgYW5kIHpzdGQpLiBJdCBhbHNvIG1vZGlmaWVzIHRoZSBzeXNmcyBoYW5kbGVycyBmb3IgenJhbSBjb21wcmVzc2lvbiBhbGdvcml0aG1zIHRvIHJlc2V0IHBhcmFtZXRlcnMgd2hlbiB0aGUgYWxnb3JpdGhtIGlzIGNoYW5nZWQuIFRoZXNlIGNoYW5nZXMgYWZmZWN0IHRoZSBjb3JlIGZ1bmN0aW9uYWwgbG9naWMgb2YgY29uZmlndXJpbmcgenJhbSBjb21wcmVzc2lvbiB2aWEgc3lzZnMsIG1ha2luZyBpdCByZWFjaGFibGUgYW5kIGEgcHJpbWUgdGFyZ2V0IGZvciBmdXp6aW5nIHZpYSBzeXprYWxsZXIuXG5cbkxldCdzIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTYwMTUsIk91dHB1dFRva2VucyI6MjU1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzM4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE5OjA3OjI4LjI0OTQ1MjM1NVoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk3MzMxNjE4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJaUkFNXCIsXG4gICAgXCJaUkFNX0JBQ0tFTkRfTFo0XCIsXG4gICAgXCJaUkFNX0JBQ0tFTkRfTFo0SENcIixcbiAgICBcIlpSQU1fQkFDS0VORF9aU1REXCIsXG4gICAgXCJaUkFNX0JBQ0tFTkRfREVGTEFURVwiLFxuICAgIFwiWlJBTV9CQUNLRU5EXzg0MlwiLFxuICAgIFwiWlJBTV9CQUNLRU5EX0xaT1wiLFxuICAgIFwiWlJBTV9NVUxUSV9DT01QXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYWxnb3JpdGhtX3BhcmFtc19zdG9yZVwiLFxuICAgIFwiY29tcF9hbGdvcml0aG1fc3RvcmVcIixcbiAgICBcInJlY29tcF9hbGdvcml0aG1fc3RvcmVcIixcbiAgICBcImRpc2tzaXplX3N0b3JlXCIsXG4gICAgXCJ6Y29tcF9jcmVhdGVcIixcbiAgICBcImNvbXBfcGFyYW1zX3N0b3JlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyB2YWxpZGF0aW9uIGZvciBjb21wcmVzc2lvbiBwYXJhbWV0ZXJzIChsaWtlIGRpY3Rpb25hcnkgc2l6ZSBhbmQgY29tcHJlc3Npb24gbGV2ZWwpIGluIHZhcmlvdXMgenJhbSBiYWNrZW5kcyAoODQyLCBkZWZsYXRlLCBsejQsIGx6NGhjLCBsem8sIGx6b3JsZSwgenN0ZCkuIEl0IGFsc28gbW9kaWZpZXMgdGhlIHN5c2ZzIGhhbmRsZXJzIGZvciB6cmFtIGNvbXByZXNzaW9uIGFsZ29yaXRobXMgdG8gcmVzZXQgcGFyYW1ldGVycyB3aGVuIHRoZSBhbGdvcml0aG0gaXMgY2hhbmdlZC4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgdGhlIGZ1bmN0aW9uYWwgbG9naWMgb2YgenJhbSBjb25maWd1cmF0aW9uIHZpYSBzeXNmcywgd2hpY2ggaXMgcmVhY2hhYmxlIGFuZCBjYW4gYmUgZnV6emVkIGJ5IHN5emthbGxlci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJaUkFNXCIsXG4gICAgXCJaUkFNX0JBQ0tFTkRfTFo0XCIsXG4gICAgXCJaUkFNX0JBQ0tFTkRfTFo0SENcIixcbiAgICBcIlpSQU1fQkFDS0VORF9aU1REXCIsXG4gICAgXCJaUkFNX0JBQ0tFTkRfREVGTEFURVwiLFxuICAgIFwiWlJBTV9CQUNLRU5EXzg0MlwiLFxuICAgIFwiWlJBTV9CQUNLRU5EX0xaT1wiLFxuICAgIFwiWlJBTV9NVUxUSV9DT01QXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYWxnb3JpdGhtX3BhcmFtc19zdG9yZVwiLFxuICAgIFwiY29tcF9hbGdvcml0aG1fc3RvcmVcIixcbiAgICBcInJlY29tcF9hbGdvcml0aG1fc3RvcmVcIixcbiAgICBcImRpc2tzaXplX3N0b3JlXCIsXG4gICAgXCJ6Y29tcF9jcmVhdGVcIixcbiAgICBcImNvbXBfcGFyYW1zX3N0b3JlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyB2YWxpZGF0aW9uIGZvciBjb21wcmVzc2lvbiBwYXJhbWV0ZXJzIChsaWtlIGRpY3Rpb25hcnkgc2l6ZSBhbmQgY29tcHJlc3Npb24gbGV2ZWwpIGluIHZhcmlvdXMgenJhbSBiYWNrZW5kcyAoODQyLCBkZWZsYXRlLCBsejQsIGx6NGhjLCBsem8sIGx6b3JsZSwgenN0ZCkuIEl0IGFsc28gbW9kaWZpZXMgdGhlIHN5c2ZzIGhhbmRsZXJzIGZvciB6cmFtIGNvbXByZXNzaW9uIGFsZ29yaXRobXMgdG8gcmVzZXQgcGFyYW1ldGVycyB3aGVuIHRoZSBhbGdvcml0aG0gaXMgY2hhbmdlZC4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgdGhlIGZ1bmN0aW9uYWwgbG9naWMgb2YgenJhbSBjb25maWd1cmF0aW9uIHZpYSBzeXNmcywgd2hpY2ggaXMgcmVhY2hhYmxlIGFuZCBjYW4gYmUgZnV6emVkIGJ5IHN5emthbGxlci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowxhdzb[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-03 18:44:56 +0000 UTC FinishedAt: 2026-08-03 19:07:29 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "415606a7be939835db9b0d6b711887586646346d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ZRAM", "ZRAM_BACKEND_LZ4", "ZRAM_BACKEND_LZ4HC", "ZRAM_BACKEND_ZSTD", "ZRAM_BACKEND_DEFLATE", "ZRAM_BACKEND_842", "ZRAM_BACKEND_LZO", "ZRAM_MULTI_COMP" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "415606a7be939835db9b0d6b711887586646346d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ZRAM", "ZRAM_BACKEND_LZ4", "ZRAM_BACKEND_LZ4HC", "ZRAM_BACKEND_ZSTD", "ZRAM_BACKEND_DEFLATE", "ZRAM_BACKEND_842", "ZRAM_BACKEND_LZO", "ZRAM_MULTI_COMP" ], "series_id": "b3f2e90d-84cc-4ed4-9d18-4944ecbedc9d" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "algorithm_params_store", "comp_algorithm_store", "recomp_algorithm_store", "disksize_store", "zcomp_create", "comp_params_store" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE5OjA2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1pSQU0mIzM0OywKICAgICYjMzQ7WlJBTV9CQUNLRU5EX0xaNCYjMzQ7LAogICAgJiMzNDtaUkFNX0JBQ0tFTkRfTFo0SEMmIzM0OywKICAgICYjMzQ7WlJBTV9CQUNLRU5EX1pTVEQmIzM0OywKICAgICYjMzQ7WlJBTV9CQUNLRU5EX0RFRkxBVEUmIzM0OywKICAgICYjMzQ7WlJBTV9CQUNLRU5EXzg0MiYjMzQ7LAogICAgJiMzNDtaUkFNX0JBQ0tFTkRfTFpPJiMzNDssCiAgICAmIzM0O1pSQU1fTVVMVElfQ09NUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2FsZ29yaXRobV9wYXJhbXNfc3RvcmUmIzM0OywKICAgICYjMzQ7Y29tcF9hbGdvcml0aG1fc3RvcmUmIzM0OywKICAgICYjMzQ7cmVjb21wX2FsZ29yaXRobV9zdG9yZSYjMzQ7LAogICAgJiMzNDtkaXNrc2l6ZV9zdG9yZSYjMzQ7LAogICAgJiMzNDt6Y29tcF9jcmVhdGUmIzM0OywKICAgICYjMzQ7Y29tcF9wYXJhbXNfc3RvcmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyB2YWxpZGF0aW9uIGZvciBjb21wcmVzc2lvbiBwYXJhbWV0ZXJzIChsaWtlIGRpY3Rpb25hcnkgc2l6ZSBhbmQgY29tcHJlc3Npb24gbGV2ZWwpIGluIHZhcmlvdXMgenJhbSBiYWNrZW5kcyAoODQyLCBkZWZsYXRlLCBsejQsIGx6NGhjLCBsem8sIGx6b3JsZSwgenN0ZCkuIEl0IGFsc28gbW9kaWZpZXMgdGhlIHN5c2ZzIGhhbmRsZXJzIGZvciB6cmFtIGNvbXByZXNzaW9uIGFsZ29yaXRobXMgdG8gcmVzZXQgcGFyYW1ldGVycyB3aGVuIHRoZSBhbGdvcml0aG0gaXMgY2hhbmdlZC4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgdGhlIGZ1bmN0aW9uYWwgbG9naWMgb2YgenJhbSBjb25maWd1cmF0aW9uIHZpYSBzeXNmcywgd2hpY2ggaXMgcmVhY2hhYmxlIGFuZCBjYW4gYmUgZnV6emVkIGJ5IHN5emthbGxlci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxOTowNjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGQ1ODQwMjhlODlmMjQ5MGU3ZjVmODVkZjUwZTUwN2QzNDBhYjVmYjlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAzIDE5OjA2OjI0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kXzg0Mi5jIGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfODQyLmNcbmluZGV4IDEwZDlkNWM2MGY1MzEuLjkxYTIyMzEzZmU4MmEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF84NDIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfODQyLmNcbkBAIC0xMyw2ICYjNDM7MTMsMTQgQEAgc3RhdGljIHZvaWQgcmVsZWFzZV9wYXJhbXNfODQyKHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcylcbiBcbiBzdGF0aWMgaW50IHNldHVwX3BhcmFtc184NDIoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKVxuIHtcbiYjNDM7XHRpZiAocGFyYW1zLVx1MDAzZWRpY3Rfc3opIHtcbiYjNDM7XHRcdHByX2VycihcJiMzNDs4NDI6IGRpY3Rpb25hcnkgaXMgbm90IHN1cHBvcnRlZFxcblwmIzM0Oyk7XG4mIzQzO1x0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4mIzQzO1x0fVxuJiM0MztcdGlmIChwYXJhbXMtXHUwMDNlbGV2ZWwgIT0gWkNPTVBfUEFSQU1fTk9UX1NFVCkge1xuJiM0MztcdFx0cHJfZXJyKFwmIzM0Ozg0MjogY29tcHJlc3Npb24gbGV2ZWwgaXMgbm90IHN1cHBvcnRlZFxcblwmIzM0Oyk7XG4mIzQzO1x0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4mIzQzO1x0fVxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2RlZmxhdGUuYyBiL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2RlZmxhdGUuY1xuaW5kZXggYjNmN2QwOGI0OWQ5My4uYjIwNzRjNDRiMmQwNCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2RlZmxhdGUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfZGVmbGF0ZS5jXG5AQCAtMjIsOCAmIzQzOzIyLDE5IEBAIHN0YXRpYyB2b2lkIGRlZmxhdGVfcmVsZWFzZV9wYXJhbXMoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKVxuIFxuIHN0YXRpYyBpbnQgZGVmbGF0ZV9zZXR1cF9wYXJhbXMoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKVxuIHtcbiYjNDM7XHRpZiAocGFyYW1zLVx1MDAzZWRpY3Rfc3opIHtcbiYjNDM7XHRcdHByX2VycihcJiMzNDtkZWZsYXRlOiBkaWN0aW9uYXJ5IGlzIG5vdCBzdXBwb3J0ZWRcXG5cJiMzNDspO1xuJiM0MztcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRpZiAocGFyYW1zLVx1MDAzZWxldmVsID09IFpDT01QX1BBUkFNX05PVF9TRVQpXG4gXHRcdHBhcmFtcy1cdTAwM2VsZXZlbCA9IFpfREVGQVVMVF9DT01QUkVTU0lPTjtcbiYjNDM7XHRlbHNlIGlmIChwYXJhbXMtXHUwMDNlbGV2ZWwgXHUwMDNjIFpfREVGQVVMVF9DT01QUkVTU0lPTiB8fFxuJiM0MztcdFx0IHBhcmFtcy1cdTAwM2VsZXZlbCBcdTAwM2UgWl9CRVNUX0NPTVBSRVNTSU9OKSB7XG4mIzQzO1x0XHRwcl9lcnIoXCYjMzQ7ZGVmbGF0ZTogaW52YWxpZCBjb21wcmVzc2lvbiBsZXZlbCAlZFxcblwmIzM0OywgcGFyYW1zLVx1MDAzZWxldmVsKTtcbiYjNDM7XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRpZiAocGFyYW1zLVx1MDAzZWRlZmxhdGUud2luYml0cyA9PSBaQ09NUF9QQVJBTV9OT1RfU0VUKSB7XG4gXHRcdHBhcmFtcy1cdTAwM2VkZWZsYXRlLndpbmJpdHMgPSBERUZMQVRFX0RFRl9XSU5CSVRTO1xuIFx0fSBlbHNlIHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sejQuYyBiL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6NC5jXG5pbmRleCBjNDQ5ZDUxMWJhODZmLi5mNGY1MTExMjIwYzc5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHo0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6NC5jXG5AQCAtMzAsNiAmIzQzOzMwLDEwIEBAIHN0YXRpYyBpbnQgbHo0X3NldHVwX3BhcmFtcyhzdHJ1Y3QgemNvbXBfcGFyYW1zICpwYXJhbXMpXG4gXG4gXHRpZiAocGFyYW1zLVx1MDAzZWxldmVsID09IFpDT01QX1BBUkFNX05PVF9TRVQpXG4gXHRcdHBhcmFtcy1cdTAwM2VsZXZlbCA9IExaNF9BQ0NFTEVSQVRJT05fREVGQVVMVDtcbiYjNDM7XHRlbHNlIGlmIChwYXJhbXMtXHUwMDNlbGV2ZWwgXHUwMDNjIExaNF9BQ0NFTEVSQVRJT05fREVGQVVMVCkge1xuJiM0MztcdFx0cHJfZXJyKFwmIzM0O2x6NDogaW52YWxpZCBjb21wcmVzc2lvbiBsZXZlbCAlZFxcblwmIzM0OywgcGFyYW1zLVx1MDAzZWxldmVsKTtcbiYjNDM7XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcdH1cbiBcbiBcdGlmICghcGFyYW1zLVx1MDAzZWRpY3QgfHwgIXBhcmFtcy1cdTAwM2VkaWN0X3N6KVxuIFx0XHRyZXR1cm4gMDtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sejRoYy5jIGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHo0aGMuY1xuaW5kZXggZjZhMzM2YWNmZTIwMi4uZDdjZDk3Yjg5OGJkNSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6NGhjLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6NGhjLmNcbkBAIC0yMCw2ICYjNDM7MjAsMTAgQEAgc3RhdGljIGludCBsejRoY19zZXR1cF9wYXJhbXMoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKVxuIHtcbiBcdGlmIChwYXJhbXMtXHUwMDNlbGV2ZWwgPT0gWkNPTVBfUEFSQU1fTk9UX1NFVClcbiBcdFx0cGFyYW1zLVx1MDAzZWxldmVsID0gTFo0SENfREVGQVVMVF9DTEVWRUw7XG4mIzQzO1x0ZWxzZSBpZiAocGFyYW1zLVx1MDAzZWxldmVsIFx1MDAzYyAxIHx8IHBhcmFtcy1cdTAwM2VsZXZlbCBcdTAwM2UgTFo0SENfTUFYX0NMRVZFTCkge1xuJiM0MztcdFx0cHJfZXJyKFwmIzM0O2x6NGhjOiBpbnZhbGlkIGNvbXByZXNzaW9uIGxldmVsICVkXFxuXCYjMzQ7LCBwYXJhbXMtXHUwMDNlbGV2ZWwpO1xuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1x0fVxuIFxuIFx0cmV0dXJuIDA7XG4gfVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6by5jIGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvLmNcbmluZGV4IDRjOTA2YmVhYWU2YjMuLmNkYmI4OWFhYTBkZWUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sem8uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvLmNcbkBAIC0xMiw2ICYjNDM7MTIsMTQgQEAgc3RhdGljIHZvaWQgbHpvX3JlbGVhc2VfcGFyYW1zKHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcylcbiBcbiBzdGF0aWMgaW50IGx6b19zZXR1cF9wYXJhbXMoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKVxuIHtcbiYjNDM7XHRpZiAocGFyYW1zLVx1MDAzZWRpY3Rfc3opIHtcbiYjNDM7XHRcdHByX2VycihcJiMzNDtsem86IGRpY3Rpb25hcnkgaXMgbm90IHN1cHBvcnRlZFxcblwmIzM0Oyk7XG4mIzQzO1x0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4mIzQzO1x0fVxuJiM0MztcdGlmIChwYXJhbXMtXHUwMDNlbGV2ZWwgIT0gWkNPTVBfUEFSQU1fTk9UX1NFVCkge1xuJiM0MztcdFx0cHJfZXJyKFwmIzM0O2x6bzogY29tcHJlc3Npb24gbGV2ZWwgaXMgbm90IHN1cHBvcnRlZFxcblwmIzM0Oyk7XG4mIzQzO1x0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4mIzQzO1x0fVxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6b3JsZS5jIGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvcmxlLmNcbmluZGV4IDEwNjQwYzk2Y2JmY2EuLjU4ZjdkZGY1YTU1ZjUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sem9ybGUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvcmxlLmNcbkBAIC0xMiw2ICYjNDM7MTIsMTQgQEAgc3RhdGljIHZvaWQgbHpvcmxlX3JlbGVhc2VfcGFyYW1zKHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcylcbiBcbiBzdGF0aWMgaW50IGx6b3JsZV9zZXR1cF9wYXJhbXMoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKVxuIHtcbiYjNDM7XHRpZiAocGFyYW1zLVx1MDAzZWRpY3Rfc3opIHtcbiYjNDM7XHRcdHByX2VycihcJiMzNDtsem8tcmxlOiBkaWN0aW9uYXJ5IGlzIG5vdCBzdXBwb3J0ZWRcXG5cJiMzNDspO1xuJiM0MztcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuJiM0MztcdH1cbiYjNDM7XHRpZiAocGFyYW1zLVx1MDAzZWxldmVsICE9IFpDT01QX1BBUkFNX05PVF9TRVQpIHtcbiYjNDM7XHRcdHByX2VycihcJiMzNDtsem8tcmxlOiBjb21wcmVzc2lvbiBsZXZlbCBpcyBub3Qgc3VwcG9ydGVkXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbiYjNDM7XHR9XG4gXHRyZXR1cm4gMDtcbiB9XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jIGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jXG5pbmRleCBkMDBiNTQ4MDU2ZGMyLi5lMDcxZmE1ODRmNmIwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF96c3RkLmNcbkBAIC02MCw2ICYjNDM7NjAsMTEgQEAgc3RhdGljIGludCB6c3RkX3NldHVwX3BhcmFtcyhzdHJ1Y3QgemNvbXBfcGFyYW1zICpwYXJhbXMpXG4gXHRwYXJhbXMtXHUwMDNlZHJ2X2RhdGEgPSB6cDtcbiBcdGlmIChwYXJhbXMtXHUwMDNlbGV2ZWwgPT0gWkNPTVBfUEFSQU1fTk9UX1NFVClcbiBcdFx0cGFyYW1zLVx1MDAzZWxldmVsID0genN0ZF9kZWZhdWx0X2NsZXZlbCgpO1xuJiM0MztcdGVsc2UgaWYgKHBhcmFtcy1cdTAwM2VsZXZlbCBcdTAwM2MgenN0ZF9taW5fY2xldmVsKCkgfHxcbiYjNDM7XHRcdCBwYXJhbXMtXHUwMDNlbGV2ZWwgXHUwMDNlIHpzdGRfbWF4X2NsZXZlbCgpKSB7XG4mIzQzO1x0XHRwcl9lcnIoXCYjMzQ7enN0ZDogaW52YWxpZCBjb21wcmVzc2lvbiBsZXZlbCAlZFxcblwmIzM0OywgcGFyYW1zLVx1MDAzZWxldmVsKTtcbiYjNDM7XHRcdGdvdG8gZXJyb3I7XG4mIzQzO1x0fVxuIFxuIFx0enAtXHUwMDNlY3BybSA9IHpzdGRfZ2V0X3BhcmFtcyhwYXJhbXMtXHUwMDNlbGV2ZWwsIFBBR0VfU0laRSk7XG4gXG5AQCAtODUsNyAmIzQzOzkwLDYgQEAgc3RhdGljIGludCB6c3RkX3NldHVwX3BhcmFtcyhzdHJ1Y3QgemNvbXBfcGFyYW1zICpwYXJhbXMpXG4gXHRyZXR1cm4gMDtcbiBcbiBlcnJvcjpcbi1cdHpzdGRfcmVsZWFzZV9wYXJhbXMocGFyYW1zKTtcbiBcdHJldHVybiAtRUlOVkFMO1xuIH1cbiBcbkBAIC0xNjEsNyAmIzQzOzE2NSw2IEBAIHN0YXRpYyBpbnQgenN0ZF9jcmVhdGUoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zLCBzdHJ1Y3QgemNvbXBfY3R4ICpjdHgpXG4gXHRyZXR1cm4gMDtcbiBcbiBlcnJvcjpcbi1cdHpzdGRfcmVsZWFzZV9wYXJhbXMocGFyYW1zKTtcbiBcdHpzdGRfZGVzdHJveShjdHgpO1xuIFx0cmV0dXJuIC1FSU5WQUw7XG4gfVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jIGIvZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmNcbmluZGV4IGNmYTk4ODQ2YWM0ODQuLmNjOTZiMThiZjY0N2MgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmNcbkBAIC0xNjUyLDYgJiM0MzsxNjUyLDE3IEBAIHN0YXRpYyB2b2lkIGNvbXBfYWxnb3JpdGhtX3NldChzdHJ1Y3QgenJhbSAqenJhbSwgdTMyIHByaW8sIGNvbnN0IGNoYXIgKmFsZylcbiBcdHpyYW0tXHUwMDNlY29tcF9hbGdzW3ByaW9dID0gYWxnO1xuIH1cbiBcbiYjNDM7c3RhdGljIHZvaWQgY29tcF9wYXJhbXNfcmVzZXQoc3RydWN0IHpyYW0gKnpyYW0sIHUzMiBwcmlvKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zID0gXHUwMDI2enJhbS1cdTAwM2VwYXJhbXNbcHJpb107XG4mIzQzO1xuJiM0MztcdHZmcmVlKHBhcmFtcy1cdTAwM2VkaWN0KTtcbiYjNDM7XHRwYXJhbXMtXHUwMDNlbGV2ZWwgPSBaQ09NUF9QQVJBTV9OT1RfU0VUO1xuJiM0MztcdHBhcmFtcy1cdTAwM2VkZWZsYXRlLndpbmJpdHMgPSBaQ09NUF9QQVJBTV9OT1RfU0VUO1xuJiM0MztcdHBhcmFtcy1cdTAwM2VkaWN0X3N6ID0gMDtcbiYjNDM7XHRwYXJhbXMtXHUwMDNlZGljdCA9IE5VTEw7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGludCBfX2NvbXBfYWxnb3JpdGhtX3N0b3JlKHN0cnVjdCB6cmFtICp6cmFtLCB1MzIgcHJpbywgY29uc3QgY2hhciAqYnVmKVxuIHtcbiBcdGNvbnN0IGNoYXIgKmFsZztcbkBAIC0xNjcyLDIwICYjNDM7MTY4MywxMCBAQCBzdGF0aWMgaW50IF9fY29tcF9hbGdvcml0aG1fc3RvcmUoc3RydWN0IHpyYW0gKnpyYW0sIHUzMiBwcmlvLCBjb25zdCBjaGFyICpidWYpXG4gXHR9XG4gXG4gXHRjb21wX2FsZ29yaXRobV9zZXQoenJhbSwgcHJpbywgYWxnKTtcbiYjNDM7XHRjb21wX3BhcmFtc19yZXNldCh6cmFtLCBwcmlvKTtcbiBcdHJldHVybiAwO1xuIH1cbiBcbi1zdGF0aWMgdm9pZCBjb21wX3BhcmFtc19yZXNldChzdHJ1Y3QgenJhbSAqenJhbSwgdTMyIHByaW8pXG4te1xuLVx0c3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zID0gXHUwMDI2enJhbS1cdTAwM2VwYXJhbXNbcHJpb107XG4tXG4tXHR2ZnJlZShwYXJhbXMtXHUwMDNlZGljdCk7XG4tXHRwYXJhbXMtXHUwMDNlbGV2ZWwgPSBaQ09NUF9QQVJBTV9OT1RfU0VUO1xuLVx0cGFyYW1zLVx1MDAzZWRlZmxhdGUud2luYml0cyA9IFpDT01QX1BBUkFNX05PVF9TRVQ7XG4tXHRwYXJhbXMtXHUwMDNlZGljdF9zeiA9IDA7XG4tXHRwYXJhbXMtXHUwMDNlZGljdCA9IE5VTEw7XG4tfVxuLVxuIHN0YXRpYyBpbnQgY29tcF9wYXJhbXNfc3RvcmUoc3RydWN0IHpyYW0gKnpyYW0sIHUzMiBwcmlvLCBzMzIgbGV2ZWwsXG4gXHRcdFx0ICAgICBjb25zdCBjaGFyICpkaWN0X3BhdGgsXG4gXHRcdFx0ICAgICBzdHJ1Y3QgZGVmbGF0ZV9wYXJhbXMgKmRlZmxhdGVfcGFyYW1zKVxuQEAgLTE3MDAsOCAmIzQzOzE3MDEsMTIgQEAgc3RhdGljIGludCBjb21wX3BhcmFtc19zdG9yZShzdHJ1Y3QgenJhbSAqenJhbSwgdTMyIHByaW8sIHMzMiBsZXZlbCxcbiBcdFx0XHRcdFx0XHRJTlRfTUFYLFxuIFx0XHRcdFx0XHRcdE5VTEwsXG4gXHRcdFx0XHRcdFx0UkVBRElOR19QT0xJQ1kpO1xuLVx0XHRpZiAoc3ogXHUwMDNjIDApXG4mIzQzO1x0XHRpZiAoc3ogXHUwMDNjPSAwKSB7XG4mIzQzO1x0XHRcdHByX2VycihcJiMzNDtmYWlsZWQgdG8gbG9hZCBkaWN0aW9uYXJ5ICVzIChlcnI9JXpkKVxcblwmIzM0OyxcbiYjNDM7XHRcdFx0ICAgICAgIGRpY3RfcGF0aCwgc3opO1xuJiM0MztcbiBcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHRcdH1cbiBcdH1cbiBcbiBcdHpyYW0tXHUwMDNlcGFyYW1zW3ByaW9dLmRpY3Rfc3ogPSBzejtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxOTowNjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7WlJBTSYjMzQ7LAogICAgJiMzNDtaUkFNX0JBQ0tFTkRfTFo0JiMzNDssCiAgICAmIzM0O1pSQU1fQkFDS0VORF9MWjRIQyYjMzQ7LAogICAgJiMzNDtaUkFNX0JBQ0tFTkRfWlNURCYjMzQ7LAogICAgJiMzNDtaUkFNX0JBQ0tFTkRfREVGTEFURSYjMzQ7LAogICAgJiMzNDtaUkFNX0JBQ0tFTkRfODQyJiMzNDssCiAgICAmIzM0O1pSQU1fQkFDS0VORF9MWk8mIzM0OywKICAgICYjMzQ7WlJBTV9NVUxUSV9DT01QJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YWxnb3JpdGhtX3BhcmFtc19zdG9yZSYjMzQ7LAogICAgJiMzNDtjb21wX2FsZ29yaXRobV9zdG9yZSYjMzQ7LAogICAgJiMzNDtyZWNvbXBfYWxnb3JpdGhtX3N0b3JlJiMzNDssCiAgICAmIzM0O2Rpc2tzaXplX3N0b3JlJiMzNDssCiAgICAmIzM0O3pjb21wX2NyZWF0ZSYjMzQ7LAogICAgJiMzNDtjb21wX3BhcmFtc19zdG9yZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIHZhbGlkYXRpb24gZm9yIGNvbXByZXNzaW9uIHBhcmFtZXRlcnMgKGxpa2UgZGljdGlvbmFyeSBzaXplIGFuZCBjb21wcmVzc2lvbiBsZXZlbCkgaW4gdmFyaW91cyB6cmFtIGJhY2tlbmRzICg4NDIsIGRlZmxhdGUsIGx6NCwgbHo0aGMsIGx6bywgbHpvcmxlLCB6c3RkKS4gSXQgYWxzbyBtb2RpZmllcyB0aGUgc3lzZnMgaGFuZGxlcnMgZm9yIHpyYW0gY29tcHJlc3Npb24gYWxnb3JpdGhtcyB0byByZXNldCBwYXJhbWV0ZXJzIHdoZW4gdGhlIGFsZ29yaXRobSBpcyBjaGFuZ2VkLiBUaGVzZSBjaGFuZ2VzIGFmZmVjdCB0aGUgZnVuY3Rpb25hbCBsb2dpYyBvZiB6cmFtIGNvbmZpZ3VyYXRpb24gdmlhIHN5c2ZzLCB3aGljaCBpcyByZWFjaGFibGUgYW5kIGNhbiBiZSBmdXp6ZWQgYnkgc3l6a2FsbGVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZDU4NDAyOGU4OWYyNDkwZTdmNWY4NWRmNTBlNTA3ZDM0MGFiNWZiOQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDMgMTk6MDY6MjQgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF84NDIuYyBiL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kXzg0Mi5jCmluZGV4IDEwZDlkNWM2MGY1MzEuLjkxYTIyMzEzZmU4MmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kXzg0Mi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kXzg0Mi5jCkBAIC0xMyw2ICYjNDM7MTMsMTQgQEAgc3RhdGljIHZvaWQgcmVsZWFzZV9wYXJhbXNfODQyKHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcykKIAogc3RhdGljIGludCBzZXR1cF9wYXJhbXNfODQyKHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcykKIHsKJiM0MzsJaWYgKHBhcmFtcy0mZ3Q7ZGljdF9zeikgewomIzQzOwkJcHJfZXJyKCYjMzQ7ODQyOiBkaWN0aW9uYXJ5IGlzIG5vdCBzdXBwb3J0ZWRcbiYjMzQ7KTsKJiM0MzsJCXJldHVybiAtRU9QTk9UU1VQUDsKJiM0MzsJfQomIzQzOwlpZiAocGFyYW1zLSZndDtsZXZlbCAhPSBaQ09NUF9QQVJBTV9OT1RfU0VUKSB7CiYjNDM7CQlwcl9lcnIoJiMzNDs4NDI6IGNvbXByZXNzaW9uIGxldmVsIGlzIG5vdCBzdXBwb3J0ZWRcbiYjMzQ7KTsKJiM0MzsJCXJldHVybiAtRU9QTk9UU1VQUDsKJiM0MzsJfQogCXJldHVybiAwOwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9kZWZsYXRlLmMgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9kZWZsYXRlLmMKaW5kZXggYjNmN2QwOGI0OWQ5My4uYjIwNzRjNDRiMmQwNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfZGVmbGF0ZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2RlZmxhdGUuYwpAQCAtMjIsOCAmIzQzOzIyLDE5IEBAIHN0YXRpYyB2b2lkIGRlZmxhdGVfcmVsZWFzZV9wYXJhbXMoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKQogCiBzdGF0aWMgaW50IGRlZmxhdGVfc2V0dXBfcGFyYW1zKHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcykKIHsKJiM0MzsJaWYgKHBhcmFtcy0mZ3Q7ZGljdF9zeikgewomIzQzOwkJcHJfZXJyKCYjMzQ7ZGVmbGF0ZTogZGljdGlvbmFyeSBpcyBub3Qgc3VwcG9ydGVkXG4mIzM0Oyk7CiYjNDM7CQlyZXR1cm4gLUVPUE5PVFNVUFA7CiYjNDM7CX0KJiM0MzsKIAlpZiAocGFyYW1zLSZndDtsZXZlbCA9PSBaQ09NUF9QQVJBTV9OT1RfU0VUKQogCQlwYXJhbXMtJmd0O2xldmVsID0gWl9ERUZBVUxUX0NPTVBSRVNTSU9OOwomIzQzOwllbHNlIGlmIChwYXJhbXMtJmd0O2xldmVsICZsdDsgWl9ERUZBVUxUX0NPTVBSRVNTSU9OIHx8CiYjNDM7CQkgcGFyYW1zLSZndDtsZXZlbCAmZ3Q7IFpfQkVTVF9DT01QUkVTU0lPTikgewomIzQzOwkJcHJfZXJyKCYjMzQ7ZGVmbGF0ZTogaW52YWxpZCBjb21wcmVzc2lvbiBsZXZlbCAlZFxuJiMzNDssIHBhcmFtcy0mZ3Q7bGV2ZWwpOwomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CX0KJiM0MzsKIAlpZiAocGFyYW1zLSZndDtkZWZsYXRlLndpbmJpdHMgPT0gWkNPTVBfUEFSQU1fTk9UX1NFVCkgewogCQlwYXJhbXMtJmd0O2RlZmxhdGUud2luYml0cyA9IERFRkxBVEVfREVGX1dJTkJJVFM7CiAJfSBlbHNlIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6NC5jIGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHo0LmMKaW5kZXggYzQ0OWQ1MTFiYTg2Zi4uZjRmNTExMTIyMGM3OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHo0LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHo0LmMKQEAgLTMwLDYgJiM0MzszMCwxMCBAQCBzdGF0aWMgaW50IGx6NF9zZXR1cF9wYXJhbXMoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKQogCiAJaWYgKHBhcmFtcy0mZ3Q7bGV2ZWwgPT0gWkNPTVBfUEFSQU1fTk9UX1NFVCkKIAkJcGFyYW1zLSZndDtsZXZlbCA9IExaNF9BQ0NFTEVSQVRJT05fREVGQVVMVDsKJiM0MzsJZWxzZSBpZiAocGFyYW1zLSZndDtsZXZlbCAmbHQ7IExaNF9BQ0NFTEVSQVRJT05fREVGQVVMVCkgewomIzQzOwkJcHJfZXJyKCYjMzQ7bHo0OiBpbnZhbGlkIGNvbXByZXNzaW9uIGxldmVsICVkXG4mIzM0OywgcGFyYW1zLSZndDtsZXZlbCk7CiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJfQogCiAJaWYgKCFwYXJhbXMtJmd0O2RpY3QgfHwgIXBhcmFtcy0mZ3Q7ZGljdF9zeikKIAkJcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sejRoYy5jIGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHo0aGMuYwppbmRleCBmNmEzMzZhY2ZlMjAyLi5kN2NkOTdiODk4YmQ1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sejRoYy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6NGhjLmMKQEAgLTIwLDYgJiM0MzsyMCwxMCBAQCBzdGF0aWMgaW50IGx6NGhjX3NldHVwX3BhcmFtcyhzdHJ1Y3QgemNvbXBfcGFyYW1zICpwYXJhbXMpCiB7CiAJaWYgKHBhcmFtcy0mZ3Q7bGV2ZWwgPT0gWkNPTVBfUEFSQU1fTk9UX1NFVCkKIAkJcGFyYW1zLSZndDtsZXZlbCA9IExaNEhDX0RFRkFVTFRfQ0xFVkVMOwomIzQzOwllbHNlIGlmIChwYXJhbXMtJmd0O2xldmVsICZsdDsgMSB8fCBwYXJhbXMtJmd0O2xldmVsICZndDsgTFo0SENfTUFYX0NMRVZFTCkgewomIzQzOwkJcHJfZXJyKCYjMzQ7bHo0aGM6IGludmFsaWQgY29tcHJlc3Npb24gbGV2ZWwgJWRcbiYjMzQ7LCBwYXJhbXMtJmd0O2xldmVsKTsKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwl9CiAKIAlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6by5jIGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvLmMKaW5kZXggNGM5MDZiZWFhZTZiMy4uY2RiYjg5YWFhMGRlZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvLmMKQEAgLTEyLDYgJiM0MzsxMiwxNCBAQCBzdGF0aWMgdm9pZCBsem9fcmVsZWFzZV9wYXJhbXMoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKQogCiBzdGF0aWMgaW50IGx6b19zZXR1cF9wYXJhbXMoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKQogewomIzQzOwlpZiAocGFyYW1zLSZndDtkaWN0X3N6KSB7CiYjNDM7CQlwcl9lcnIoJiMzNDtsem86IGRpY3Rpb25hcnkgaXMgbm90IHN1cHBvcnRlZFxuJiMzNDspOwomIzQzOwkJcmV0dXJuIC1FT1BOT1RTVVBQOwomIzQzOwl9CiYjNDM7CWlmIChwYXJhbXMtJmd0O2xldmVsICE9IFpDT01QX1BBUkFNX05PVF9TRVQpIHsKJiM0MzsJCXByX2VycigmIzM0O2x6bzogY29tcHJlc3Npb24gbGV2ZWwgaXMgbm90IHN1cHBvcnRlZFxuJiMzNDspOwomIzQzOwkJcmV0dXJuIC1FT1BOT1RTVVBQOwomIzQzOwl9CiAJcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6b3JsZS5jIGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvcmxlLmMKaW5kZXggMTA2NDBjOTZjYmZjYS4uNThmN2RkZjVhNTVmNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvcmxlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvcmxlLmMKQEAgLTEyLDYgJiM0MzsxMiwxNCBAQCBzdGF0aWMgdm9pZCBsem9ybGVfcmVsZWFzZV9wYXJhbXMoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKQogCiBzdGF0aWMgaW50IGx6b3JsZV9zZXR1cF9wYXJhbXMoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKQogewomIzQzOwlpZiAocGFyYW1zLSZndDtkaWN0X3N6KSB7CiYjNDM7CQlwcl9lcnIoJiMzNDtsem8tcmxlOiBkaWN0aW9uYXJ5IGlzIG5vdCBzdXBwb3J0ZWRcbiYjMzQ7KTsKJiM0MzsJCXJldHVybiAtRU9QTk9UU1VQUDsKJiM0MzsJfQomIzQzOwlpZiAocGFyYW1zLSZndDtsZXZlbCAhPSBaQ09NUF9QQVJBTV9OT1RfU0VUKSB7CiYjNDM7CQlwcl9lcnIoJiMzNDtsem8tcmxlOiBjb21wcmVzc2lvbiBsZXZlbCBpcyBub3Qgc3VwcG9ydGVkXG4mIzM0Oyk7CiYjNDM7CQlyZXR1cm4gLUVPUE5PVFNVUFA7CiYjNDM7CX0KIAlyZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jIGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jCmluZGV4IGQwMGI1NDgwNTZkYzIuLmUwNzFmYTU4NGY2YjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX3pzdGQuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF96c3RkLmMKQEAgLTYwLDYgJiM0Mzs2MCwxMSBAQCBzdGF0aWMgaW50IHpzdGRfc2V0dXBfcGFyYW1zKHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcykKIAlwYXJhbXMtJmd0O2Rydl9kYXRhID0genA7CiAJaWYgKHBhcmFtcy0mZ3Q7bGV2ZWwgPT0gWkNPTVBfUEFSQU1fTk9UX1NFVCkKIAkJcGFyYW1zLSZndDtsZXZlbCA9IHpzdGRfZGVmYXVsdF9jbGV2ZWwoKTsKJiM0MzsJZWxzZSBpZiAocGFyYW1zLSZndDtsZXZlbCAmbHQ7IHpzdGRfbWluX2NsZXZlbCgpIHx8CiYjNDM7CQkgcGFyYW1zLSZndDtsZXZlbCAmZ3Q7IHpzdGRfbWF4X2NsZXZlbCgpKSB7CiYjNDM7CQlwcl9lcnIoJiMzNDt6c3RkOiBpbnZhbGlkIGNvbXByZXNzaW9uIGxldmVsICVkXG4mIzM0OywgcGFyYW1zLSZndDtsZXZlbCk7CiYjNDM7CQlnb3RvIGVycm9yOwomIzQzOwl9CiAKIAl6cC0mZ3Q7Y3BybSA9IHpzdGRfZ2V0X3BhcmFtcyhwYXJhbXMtJmd0O2xldmVsLCBQQUdFX1NJWkUpOwogCkBAIC04NSw3ICYjNDM7OTAsNiBAQCBzdGF0aWMgaW50IHpzdGRfc2V0dXBfcGFyYW1zKHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcykKIAlyZXR1cm4gMDsKIAogZXJyb3I6Ci0JenN0ZF9yZWxlYXNlX3BhcmFtcyhwYXJhbXMpOwogCXJldHVybiAtRUlOVkFMOwogfQogCkBAIC0xNjEsNyAmIzQzOzE2NSw2IEBAIHN0YXRpYyBpbnQgenN0ZF9jcmVhdGUoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zLCBzdHJ1Y3QgemNvbXBfY3R4ICpjdHgpCiAJcmV0dXJuIDA7CiAKIGVycm9yOgotCXpzdGRfcmVsZWFzZV9wYXJhbXMocGFyYW1zKTsKIAl6c3RkX2Rlc3Ryb3koY3R4KTsKIAlyZXR1cm4gLUVJTlZBTDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jIGIvZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMKaW5kZXggY2ZhOTg4NDZhYzQ4NC4uY2M5NmIxOGJmNjQ3YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMKQEAgLTE2NTIsNiAmIzQzOzE2NTIsMTcgQEAgc3RhdGljIHZvaWQgY29tcF9hbGdvcml0aG1fc2V0KHN0cnVjdCB6cmFtICp6cmFtLCB1MzIgcHJpbywgY29uc3QgY2hhciAqYWxnKQogCXpyYW0tJmd0O2NvbXBfYWxnc1twcmlvXSA9IGFsZzsKIH0KIAomIzQzO3N0YXRpYyB2b2lkIGNvbXBfcGFyYW1zX3Jlc2V0KHN0cnVjdCB6cmFtICp6cmFtLCB1MzIgcHJpbykKJiM0Mzt7CiYjNDM7CXN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcyA9ICZhbXA7enJhbS0mZ3Q7cGFyYW1zW3ByaW9dOwomIzQzOwomIzQzOwl2ZnJlZShwYXJhbXMtJmd0O2RpY3QpOwomIzQzOwlwYXJhbXMtJmd0O2xldmVsID0gWkNPTVBfUEFSQU1fTk9UX1NFVDsKJiM0MzsJcGFyYW1zLSZndDtkZWZsYXRlLndpbmJpdHMgPSBaQ09NUF9QQVJBTV9OT1RfU0VUOwomIzQzOwlwYXJhbXMtJmd0O2RpY3Rfc3ogPSAwOwomIzQzOwlwYXJhbXMtJmd0O2RpY3QgPSBOVUxMOwomIzQzO30KJiM0MzsKIHN0YXRpYyBpbnQgX19jb21wX2FsZ29yaXRobV9zdG9yZShzdHJ1Y3QgenJhbSAqenJhbSwgdTMyIHByaW8sIGNvbnN0IGNoYXIgKmJ1ZikKIHsKIAljb25zdCBjaGFyICphbGc7CkBAIC0xNjcyLDIwICYjNDM7MTY4MywxMCBAQCBzdGF0aWMgaW50IF9fY29tcF9hbGdvcml0aG1fc3RvcmUoc3RydWN0IHpyYW0gKnpyYW0sIHUzMiBwcmlvLCBjb25zdCBjaGFyICpidWYpCiAJfQogCiAJY29tcF9hbGdvcml0aG1fc2V0KHpyYW0sIHByaW8sIGFsZyk7CiYjNDM7CWNvbXBfcGFyYW1zX3Jlc2V0KHpyYW0sIHByaW8pOwogCXJldHVybiAwOwogfQogCi1zdGF0aWMgdm9pZCBjb21wX3BhcmFtc19yZXNldChzdHJ1Y3QgenJhbSAqenJhbSwgdTMyIHByaW8pCi17Ci0Jc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zID0gJmFtcDt6cmFtLSZndDtwYXJhbXNbcHJpb107Ci0KLQl2ZnJlZShwYXJhbXMtJmd0O2RpY3QpOwotCXBhcmFtcy0mZ3Q7bGV2ZWwgPSBaQ09NUF9QQVJBTV9OT1RfU0VUOwotCXBhcmFtcy0mZ3Q7ZGVmbGF0ZS53aW5iaXRzID0gWkNPTVBfUEFSQU1fTk9UX1NFVDsKLQlwYXJhbXMtJmd0O2RpY3Rfc3ogPSAwOwotCXBhcmFtcy0mZ3Q7ZGljdCA9IE5VTEw7Ci19Ci0KIHN0YXRpYyBpbnQgY29tcF9wYXJhbXNfc3RvcmUoc3RydWN0IHpyYW0gKnpyYW0sIHUzMiBwcmlvLCBzMzIgbGV2ZWwsCiAJCQkgICAgIGNvbnN0IGNoYXIgKmRpY3RfcGF0aCwKIAkJCSAgICAgc3RydWN0IGRlZmxhdGVfcGFyYW1zICpkZWZsYXRlX3BhcmFtcykKQEAgLTE3MDAsOCAmIzQzOzE3MDEsMTIgQEAgc3RhdGljIGludCBjb21wX3BhcmFtc19zdG9yZShzdHJ1Y3QgenJhbSAqenJhbSwgdTMyIHByaW8sIHMzMiBsZXZlbCwKIAkJCQkJCUlOVF9NQVgsCiAJCQkJCQlOVUxMLAogCQkJCQkJUkVBRElOR19QT0xJQ1kpOwotCQlpZiAoc3ogJmx0OyAwKQomIzQzOwkJaWYgKHN6ICZsdDs9IDApIHsKJiM0MzsJCQlwcl9lcnIoJiMzNDtmYWlsZWQgdG8gbG9hZCBkaWN0aW9uYXJ5ICVzIChlcnI9JXpkKVxuJiMzNDssCiYjNDM7CQkJICAgICAgIGRpY3RfcGF0aCwgc3opOwomIzQzOwogCQkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CQl9CiAJfQogCiAJenJhbS0mZ3Q7cGFyYW1zW3ByaW9dLmRpY3Rfc3ogPSBzejsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTk6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDY1MAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE5MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFpSQU0gUGF0Y2ggU2VyaWVzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHNlcmllcyB0aGF0IHR3ZWFrcyB0aGUgYGRyaXZlcnMvYmxvY2svenJhbS9gIGNvZGUuIEZyb20gd2hhdCBJIGNhbiBzZWUsIGl0JiMzOTtzIGFsbCBhYm91dCBib2xzdGVyaW5nIHRoZSBjb21wcmVzc2lvbiBwYXJhbWV0ZXIgdmFsaWRhdGlvbiBhY3Jvc3MgdGhlIHZhcmlvdXMgenJhbSBiYWNrZW5kcyDigJMgODQyLCBkZWZsYXRlLCBsejQsIGx6NGhjLCBsem8sIGx6b3JsZSwgYW5kIHpzdGQuIEdvb2QsIHdlIG5lZWQgcm9idXN0IHZhbGlkYXRpb24uIEl0IGFsc28gbG9va3MgbGlrZSB0aGVyZSBoYXZlIGJlZW4gc29tZSB1cGRhdGVzIHRvIGBjb21wX3BhcmFtc19yZXNldGAgYW5kIGBfX2NvbXBfYWxnb3JpdGhtX3N0b3JlYCBpbiBgenJhbV9kcnYuY2AsIGVuc3VyaW5nIHRoYXQgdGhlc2UgcGFyYW1ldGVycyBnZXQgcmVzZXQgY29ycmVjdGx5IHdoZW4gdGhlIGNvbXByZXNzaW9uIGFsZ29yaXRobSBpcyBzd2l0Y2hlZC4gUGx1cywgdGhlcmUmIzM5O3MgYSBuaWNlIGFkZGl0aW9uIG9mIGFuIGVycm9yIGxvZyBpZiBkaWN0aW9uYXJ5IGxvYWRpbmcgZmFpbHMsIGFuZCBhIGNvcnJlY3Rpb24gZm9yIGEgY29tcGFyaXNvbjogbm93IGNoZWNraW5nIGZvciBgc3ogJmx0Oz0gMGAgaW5zdGVhZCBvZiBqdXN0IGBzeiAmbHQ7IDBgLgoKVGhlIGtleSBxdWVzdGlvbiBpcywgYXJlIHRoZXNlIGNoYW5nZXMgYWN0dWFsbHkgKnJlYWNoYWJsZSo/IEFuZCwgYXJlIHRoZXkgZXZlbiB3b3J0aCB0aGUgZWZmb3J0IHRvIGZ1eno/IFpyYW0gaXMgYSBibG9jayBkZXZpY2UsIGFuZCBmcm9tIG15IGV4cGVyaWVuY2UsIEkga25vdyBpdCYjMzk7cyBjb25maWd1cmVkIHZpYSBzeXNmcywgcmlnaHQ/IFdoaWNoLCBJIGFsc28ga25vdywgaXMgcGVyZmVjdCBmb3Igc3l6a2FsbGVyLCBzbyB0aGlzIGxvb2tzIHByb21pc2luZyEgSSBuZWVkIHRvIHF1aWNrbHkgaWRlbnRpZnkgdGhlIHJlbGV2YW50IHN5c2ZzIGhhbmRsZXJzIGZvciB6cmFtLiBUaGF0JiMzOTtzIHRoZSBmaXJzdCBzdGVwIGluIGRldGVybWluaW5nIGhvdyBlYXNpbHkgd2UgY2FuIHRyaWdnZXIgdGhlc2UgbmV3IHZhbGlkYXRpb24gY2hlY2tzIGFuZCBjb2RlIHBhdGhzLiBMZXQmIzM5O3Mgc2VlIGlmIHdlIGNhbiBnZXQgc29tZSBnb29kIGNvdmVyYWdlIGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTk6MDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X19jb21wX2FsZ29yaXRobV9zdG9yZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svenJhbS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM9MTY1NT1zdGF0aWMgdm9pZCBjb21wX3BhcmFtc19yZXNldChzdHJ1Y3QgenJhbSAqenJhbSwgdTMyIHByaW8pXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMTY2NS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjE2NjY6c3RhdGljIGludCBfX2NvbXBfYWxnb3JpdGhtX3N0b3JlKHN0cnVjdCB6cmFtICp6cmFtLCB1MzIgcHJpbywgY29uc3QgY2hhciAqYnVmKVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMTY2Ny17XG4tLVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM9MTgwOT1zdGF0aWMgc3NpemVfdCBjb21wX2FsZ29yaXRobV9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMTgxNi1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjE4MTc6XHRyZXQgPSBfX2NvbXBfYWxnb3JpdGhtX3N0b3JlKHpyYW0sIFpSQU1fUFJJTUFSWV9DT01QLCBidWYpO1xuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMTgxOC1cdHJldHVybiByZXQgPyByZXQgOiBsZW47XG4tLVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM9MTg0MT1zdGF0aWMgc3NpemVfdCByZWNvbXBfYWxnb3JpdGhtX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0xODc3LVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MTg3ODpcdHJldCA9IF9fY29tcF9hbGdvcml0aG1fc3RvcmUoenJhbSwgcHJpbywgYWxnKTtcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTE4NzktXHRyZXR1cm4gcmV0ID8gcmV0IDogbGVuO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE5OjA2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU1NjgKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgZnJvbSBteSBwZXJzcGVjdGl2ZToKCioqRGVlcCBEaXZlIGludG8gQWxnb3JpdGhtIFN0b3JhZ2UqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW50ZXJuYWwgZmxvdyBzdGFydHMgd2l0aCBgX19jb21wX2FsZ29yaXRobV9zdG9yZWAgYW5kIGl0JiMzOTtzIGJlaW5nIGNhbGxlZCBmcm9tIGJvdGggYGNvbXBfYWxnb3JpdGhtX3N0b3JlYCBhbmQgYHJlY29tcF9hbGdvcml0aG1fc3RvcmVgLiBUaGF0JiMzOTtzIHRoZSBjb3JlLiBNeSBpbnN0aW5jdCB0ZWxscyBtZSB0byBpbW1lZGlhdGVseSBpbnZlc3RpZ2F0ZSB0aGUgYGNvbXBfcGFyYW1zX3N0b3JlYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoZSBwYXJhbWV0ZXJzIGFyZSBiZWluZyBoYW5kbGVkLCBzdG9yZWQsIGFuZCBwb3RlbnRpYWxseSBpbmZsdWVuY2luZyB0aGlzIGVudGlyZSBzdG9yYWdlIHByb2Nlc3MgZm9yIGFsZ29yaXRobXMuIFRoaXMgZmVlbHMgbGlrZSBhIGNyaXRpY2FsIG5vZGUgdG8gdW5kZXJzdGFuZCB0aGUgZnVsbCBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE5OjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbXBfcGFyYW1zX3N0b3JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay96cmFtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0xNjY2PXN0YXRpYyBpbnQgX19jb21wX2FsZ29yaXRobV9zdG9yZShzdHJ1Y3QgenJhbSAqenJhbSwgdTMyIHByaW8sIGNvbnN0IGNoYXIgKmJ1Zilcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0xNjg5LVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MTY5MDpzdGF0aWMgaW50IGNvbXBfcGFyYW1zX3N0b3JlKHN0cnVjdCB6cmFtICp6cmFtLCB1MzIgcHJpbywgczMyIGxldmVsLFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMTY5MS1cdFx0XHQgICAgIGNvbnN0IGNoYXIgKmRpY3RfcGF0aCxcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0xNzE4PXN0YXRpYyBzc2l6ZV90IGFsZ29yaXRobV9wYXJhbXNfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTE3OTItXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzoxNzkzOlx0cmV0ID0gY29tcF9wYXJhbXNfc3RvcmUoenJhbSwgcHJpbywgbGV2ZWwsIGRpY3RfcGF0aCwgXHUwMDI2ZGVmbGF0ZV9wYXJhbXMpO1xuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMTc5NC1cdHJldHVybiByZXQgPyByZXQgOiBsZW47XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTk6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjA1OQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDQyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIEFsZ29yaXRobSBQYXJhbWV0ZXIgSGFuZGxpbmcqKgoKUmlnaHQsIHNvIGBhbGdvcml0aG1fcGFyYW1zX3N0b3JlYCBpcyB0aGUgc3lzZnMgaGFuZGxlciBmb3IgYGFsZ29yaXRobV9wYXJhbXNgLiBUaGF0IG1ha2VzIHNlbnNlOyBpdCYjMzk7cyB0aGUgaW50ZXJmYWNlIGZvciBleHRlcm5hbCBjb25maWd1cmF0aW9uLiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aG9zZSBwYXJhbWV0ZXJzIGFyZSBhY3R1YWxseSAqdXNlZCouIEkgc2hvdWxkIHJlYWxseSBkaWcgaW50byB0aGUgaW5pdGlhbGl6YXRpb24gcHJvY2VzcyBvZiB6Y29tcC4gTGV0JiMzOTtzIHNlZS4uLiAqenN0ZF9zZXR1cF9wYXJhbXMqIGFuZCBpdHMgaWxrIGFyZSBjYWxsZWQgZHVyaW5nIHpjb21wIGluaXRpYWxpemF0aW9uLiBUaG9zZSBmdW5jdGlvbnMgYXJlIGdvaW5nIHRvIGJlIGtleSwgSSBiZXQuIEkgbmVlZCB0byB0cmFjZSB0aGUgZmxvdyBmcm9tIHN5c2ZzIGlucHV0IHRocm91Z2ggdG8gdGhlIGFwcGxpY2F0aW9uIG9mIHRoZSBjb21wcmVzc2lvbi9kZWNvbXByZXNzaW9uIGFsZ29yaXRobSBwYXJhbWV0ZXJzLiBVbmRlcnN0YW5kaW5nIHRoZSBkZXBlbmRlbmNpZXMgd2lsbCByZWFsbHkgaW1wcm92ZSBteSBkZWJ1Z2dpbmcgc2tpbGxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE5OjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3pzdGRfc2V0dXBfcGFyYW1zJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay96cmFtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF96c3RkLmM9Mzg9c3RhdGljIHZvaWQgenN0ZF9yZWxlYXNlX3BhcmFtcyhzdHJ1Y3QgemNvbXBfcGFyYW1zICpwYXJhbXMpXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jLTUwLVxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jOjUxOnN0YXRpYyBpbnQgenN0ZF9zZXR1cF9wYXJhbXMoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKVxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jLTUyLXtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF96c3RkLmM9MjEyPWNvbnN0IHN0cnVjdCB6Y29tcF9vcHMgYmFja2VuZF96c3RkID0ge1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX3pzdGQuYy0yMTYtXHQuZGVzdHJveV9jdHhcdD0genN0ZF9kZXN0cm95LFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jOjIxNzpcdC5zZXR1cF9wYXJhbXNcdD0genN0ZF9zZXR1cF9wYXJhbXMsXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF96c3RkLmMtMjE4LVx0LnJlbGVhc2VfcGFyYW1zXHQ9IHpzdGRfcmVsZWFzZV9wYXJhbXMsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTk6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjU0MwoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipEaWdnaW5nIGludG8gdGhlIENvbXByZXNzaW9uIENvbnRleHQqKgoKT2theSwgc28gYHNldHVwX3BhcmFtc2AgZ2V0cyB0cmlnZ2VyZWQgd2hlbmV2ZXIgYSBjb21wcmVzc2lvbiBjb250ZXh0IGlzIHNwdW4gdXAsIHJpZ2h0PyBUaGF0JiMzOTtzIHRoZSBrZXkuIFRoYXQgdGVsbHMgbWUgYSBsb3QgYWJvdXQgaXRzIHBvdGVudGlhbCBpbXBhY3QuIExldCBtZSBzZWUuLi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlcmUgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aGluIHRoZSBjb2RlYmFzZS4gSXQmIzM5O3MgdGltZSB0byB0cmFjZSB0aGUgZXhlY3V0aW9uIHBhdGguIFRoaXMga2luZCBvZiBzZXR1cCBmdW5jdGlvbiBpcyB1c3VhbGx5IGNyaXRpY2FsIGZvciBpbml0aWFsIGNvbmZpZ3VyYXRpb24sIHJlc291cmNlIGFsbG9jYXRpb24sIG9yIHBhcmFtZXRlciB2YWxpZGF0aW9uIGZvciB0aGUgY29tcHJlc3Npb24gcHJvY2Vzcy4gVW5kZXJzdGFuZGluZyB0aGUgY2FsbCBzaXRlcyBvZiBgc2V0dXBfcGFyYW1zYCBpcyBjcnVjaWFsIGZvciBkZWJ1Z2dpbmcsIHBlcmZvcm1hbmNlIGFuYWx5c2lzLCBvciBhbnkgbW9kaWZpY2F0aW9uIG9mIGNvbXByZXNzaW9uIHBhcmFtZXRlcnMuIExldCYjMzk7cyBzZWUgd2hlcmUgdGhpcyBpcyB1c2VkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxOTowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZXR1cF9wYXJhbXMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL3pyYW0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kXzg0Mi5jPTEwPXN0YXRpYyB2b2lkIHJlbGVhc2VfcGFyYW1zXzg0MihzdHJ1Y3QgemNvbXBfcGFyYW1zICpwYXJhbXMpXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfODQyLmMtMTMtXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF84NDIuYzoxNDpzdGF0aWMgaW50IHNldHVwX3BhcmFtc184NDIoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKVxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfODQyLmMtMTUte1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kXzg0Mi5jPTYxPWNvbnN0IHN0cnVjdCB6Y29tcF9vcHMgYmFja2VuZF84NDIgPSB7XG4tLVxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfODQyLmMtNjUtXHQuZGVzdHJveV9jdHhcdD0gZGVzdHJveV84NDIsXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF84NDIuYzo2NjpcdC5zZXR1cF9wYXJhbXNcdD0gc2V0dXBfcGFyYW1zXzg0MixcbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kXzg0Mi5jLTY3LVx0LnJlbGVhc2VfcGFyYW1zXHQ9IHJlbGVhc2VfcGFyYW1zXzg0Mixcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9kZWZsYXRlLmM9MTk9c3RhdGljIHZvaWQgZGVmbGF0ZV9yZWxlYXNlX3BhcmFtcyhzdHJ1Y3QgemNvbXBfcGFyYW1zICpwYXJhbXMpXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfZGVmbGF0ZS5jLTIyLVxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfZGVmbGF0ZS5jOjIzOnN0YXRpYyBpbnQgZGVmbGF0ZV9zZXR1cF9wYXJhbXMoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKVxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfZGVmbGF0ZS5jLTI0LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9kZWZsYXRlLmM9MTU5PWNvbnN0IHN0cnVjdCB6Y29tcF9vcHMgYmFja2VuZF9kZWZsYXRlID0ge1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2RlZmxhdGUuYy0xNjMtXHQuZGVzdHJveV9jdHhcdD0gZGVmbGF0ZV9kZXN0cm95LFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfZGVmbGF0ZS5jOjE2NDpcdC5zZXR1cF9wYXJhbXNcdD0gZGVmbGF0ZV9zZXR1cF9wYXJhbXMsXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9kZWZsYXRlLmMtMTY1LVx0LnJlbGVhc2VfcGFyYW1zXHQ9IGRlZmxhdGVfcmVsZWFzZV9wYXJhbXMsXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHo0LmM9MTU9c3RhdGljIHZvaWQgbHo0X3JlbGVhc2VfcGFyYW1zKHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcylcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sejQuYy0yNS1cbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6NC5jOjI2OnN0YXRpYyBpbnQgbHo0X3NldHVwX3BhcmFtcyhzdHJ1Y3QgemNvbXBfcGFyYW1zICpwYXJhbXMpXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sejQuYy0yNy17XG4tLVxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHo0LmM9MTQ2PWNvbnN0IHN0cnVjdCB6Y29tcF9vcHMgYmFja2VuZF9sejQgPSB7XG4tLVxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHo0LmMtMTUwLVx0LmRlc3Ryb3lfY3R4XHQ9IGx6NF9kZXN0cm95LFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHo0LmM6MTUxOlx0LnNldHVwX3BhcmFtc1x0PSBsejRfc2V0dXBfcGFyYW1zLFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHo0LmMtMTUyLVx0LnJlbGVhc2VfcGFyYW1zXHQ9IGx6NF9yZWxlYXNlX3BhcmFtcyxcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sejRoYy5jPTE1PXN0YXRpYyB2b2lkIGx6NGhjX3JlbGVhc2VfcGFyYW1zKHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcylcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sejRoYy5jLTE4LVxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHo0aGMuYzoxOTpzdGF0aWMgaW50IGx6NGhjX3NldHVwX3BhcmFtcyhzdHJ1Y3QgemNvbXBfcGFyYW1zICpwYXJhbXMpXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sejRoYy5jLTIwLXtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sejRoYy5jPTEyND1jb25zdCBzdHJ1Y3QgemNvbXBfb3BzIGJhY2tlbmRfbHo0aGMgPSB7XG4tLVxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHo0aGMuYy0xMjgtXHQuZGVzdHJveV9jdHhcdD0gbHo0aGNfZGVzdHJveSxcbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6NGhjLmM6MTI5Olx0LnNldHVwX3BhcmFtc1x0PSBsejRoY19zZXR1cF9wYXJhbXMsXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sejRoYy5jLTEzMC1cdC5yZWxlYXNlX3BhcmFtc1x0PSBsejRoY19yZWxlYXNlX3BhcmFtcyxcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sem8uYz05PXN0YXRpYyB2b2lkIGx6b19yZWxlYXNlX3BhcmFtcyhzdHJ1Y3QgemNvbXBfcGFyYW1zICpwYXJhbXMpXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvLmMtMTItXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sem8uYzoxMzpzdGF0aWMgaW50IGx6b19zZXR1cF9wYXJhbXMoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKVxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvLmMtMTQte1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6by5jPTU5PWNvbnN0IHN0cnVjdCB6Y29tcF9vcHMgYmFja2VuZF9sem8gPSB7XG4tLVxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvLmMtNjMtXHQuZGVzdHJveV9jdHhcdD0gbHpvX2Rlc3Ryb3ksXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sem8uYzo2NDpcdC5zZXR1cF9wYXJhbXNcdD0gbHpvX3NldHVwX3BhcmFtcyxcbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6by5jLTY1LVx0LnJlbGVhc2VfcGFyYW1zXHQ9IGx6b19yZWxlYXNlX3BhcmFtcyxcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sem9ybGUuYz05PXN0YXRpYyB2b2lkIGx6b3JsZV9yZWxlYXNlX3BhcmFtcyhzdHJ1Y3QgemNvbXBfcGFyYW1zICpwYXJhbXMpXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvcmxlLmMtMTItXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sem9ybGUuYzoxMzpzdGF0aWMgaW50IGx6b3JsZV9zZXR1cF9wYXJhbXMoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKVxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvcmxlLmMtMTQte1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6b3JsZS5jPTU5PWNvbnN0IHN0cnVjdCB6Y29tcF9vcHMgYmFja2VuZF9sem9ybGUgPSB7XG4tLVxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvcmxlLmMtNjMtXHQuZGVzdHJveV9jdHhcdD0gbHpvcmxlX2Rlc3Ryb3ksXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sem9ybGUuYzo2NDpcdC5zZXR1cF9wYXJhbXNcdD0gbHpvcmxlX3NldHVwX3BhcmFtcyxcbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6b3JsZS5jLTY1LVx0LnJlbGVhc2VfcGFyYW1zXHQ9IGx6b3JsZV9yZWxlYXNlX3BhcmFtcyxcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF96c3RkLmM9Mzg9c3RhdGljIHZvaWQgenN0ZF9yZWxlYXNlX3BhcmFtcyhzdHJ1Y3QgemNvbXBfcGFyYW1zICpwYXJhbXMpXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jLTUwLVxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jOjUxOnN0YXRpYyBpbnQgenN0ZF9zZXR1cF9wYXJhbXMoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKVxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jLTUyLXtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF96c3RkLmM9MjEyPWNvbnN0IHN0cnVjdCB6Y29tcF9vcHMgYmFja2VuZF96c3RkID0ge1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX3pzdGQuYy0yMTYtXHQuZGVzdHJveV9jdHhcdD0genN0ZF9kZXN0cm95LFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jOjIxNzpcdC5zZXR1cF9wYXJhbXNcdD0genN0ZF9zZXR1cF9wYXJhbXMsXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF96c3RkLmMtMjE4LVx0LnJlbGVhc2VfcGFyYW1zXHQ9IHpzdGRfcmVsZWFzZV9wYXJhbXMsXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL3pjb21wLmM9MTk3PXN0YXRpYyBpbnQgemNvbXBfaW5pdChzdHJ1Y3QgemNvbXAgKmNvbXAsIHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcylcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuYy0yMDUtXHRjb21wLVx1MDAzZXBhcmFtcyA9IHBhcmFtcztcbmRyaXZlcnMvYmxvY2svenJhbS96Y29tcC5jOjIwNjpcdHJldCA9IGNvbXAtXHUwMDNlb3BzLVx1MDAzZXNldHVwX3BhcmFtcyhjb21wLVx1MDAzZXBhcmFtcyk7XG5kcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuYy0yMDctXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96Y29tcC5oPTU3PXN0cnVjdCB6Y29tcF9vcHMge1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96Y29tcC5oLTY1LVxuZHJpdmVycy9ibG9jay96cmFtL3pjb21wLmg6NjY6XHRpbnQgKCpzZXR1cF9wYXJhbXMpKHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcyk7XG5kcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuaC02Ny1cdHZvaWQgKCpyZWxlYXNlX3BhcmFtcykoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTk6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODcwOAoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOgoKKipUcmFjaW5nIHRoZSBJbml0aWFsaXphdGlvbiBTZXF1ZW5jZSoqCgpPa2F5LCBzbyBgemNvbXBfaW5pdGAgaXMgdGhlIGZ1bmN0aW9uIHRoYXQga2lja3MgdGhpbmdzIG9mZi4gTXkgZmlyc3QgaW5zdGluY3QsIGFzIGFsd2F5cywgaXMgdG8gZm9sbG93IHRoZSBmbG93LiBJIHNlZSBpdCBjYWxscyBgc2V0dXBfcGFyYW1zYC4gVGhhdCYjMzk7cyB0aGUgZXhwZWN0ZWQgb3JkZXIsIGluaXRpYWxpemVzIHBhcmFtZXRlcnMgZmlyc3QuIE5vdywgdGhlIHJlYWwgcXVlc3Rpb24gaXMsIHdoZXJlIGRvZXMgYHpjb21wX2luaXRgIGdldCBjYWxsZWQgKmZyb20qPyBUaGF0JiMzOTtzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmUgYW5kIGhvdyB0aGlzIGNvbXBvbmVudCBmaXRzIGludG8gdGhlIGJpZ2dlciBwaWN0dXJlLiBUaW1lIHRvIHRyYWNrIGRvd24gdGhlIGNhbGwgc2l0ZXMgZm9yIGB6Y29tcF9pbml0YCBhbmQgZ2V0IHRoZSBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxOTowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt6Y29tcF9pbml0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay96cmFtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuYz0xODY9aW50IHpjb21wX2NwdV9kZWFkKHVuc2lnbmVkIGludCBjcHUsIHN0cnVjdCBobGlzdF9ub2RlICpub2RlKVxuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96Y29tcC5jLTE5Ni1cbmRyaXZlcnMvYmxvY2svenJhbS96Y29tcC5jOjE5NzpzdGF0aWMgaW50IHpjb21wX2luaXQoc3RydWN0IHpjb21wICpjb21wLCBzdHJ1Y3QgemNvbXBfcGFyYW1zICpwYXJhbXMpXG5kcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuYy0xOTgte1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96Y29tcC5jPTIzMz1zdHJ1Y3QgemNvbXAgKnpjb21wX2NyZWF0ZShjb25zdCBjaGFyICphbGcsIHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcylcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuYy0yNTUtXG5kcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuYzoyNTY6XHRlcnJvciA9IHpjb21wX2luaXQoY29tcCwgcGFyYW1zKTtcbmRyaXZlcnMvYmxvY2svenJhbS96Y29tcC5jLTI1Ny1cdGlmIChlcnJvcikge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxOTowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MTM2CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gYXMgaWYgdGhleSB3ZXJlIG15IG93bjoKCioqRGl2aW5nIGludG8gdGhlIFotQ29tcG9uZW50IEluaXRpYWxpemF0aW9uKioKCkFscmlnaHQsIHNvIGB6Y29tcF9jcmVhdGVgIGlzIHRoZSBmdW5jdGlvbiB0aGF0IGtpY2tzIG9mZiB0aGUgei1jb21wb25lbnQmIzM5O3MgbGlmZSBjeWNsZS4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGNoZWNrIHRoZSBmdW5jdGlvbiBjYWxscyDigJMgaXQmIzM5O3MgYSBnb29kIGFwcHJvYWNoIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgY29tcG9uZW50IGlzIGFjdHVhbGx5IHVzZWQuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBub3RpbmcgdGhhdCBgemNvbXBfY3JlYXRlYCBkaXJlY3RseSBjYWxscyBgemNvbXBfaW5pdGAuIEl0IGlzIGNhbGxpbmcgYHpjb21wX2luaXRgLCBzbyB0aGF0IGdpdmVzIG1lIGEgY3J1Y2lhbCBzdGFydGluZyBwb2ludCDigJMgYHpjb21wX2luaXRgIGlzIHByZXN1bWFibHkgcmVzcG9uc2libGUgZm9yIHNvbWUgaW5pdGlhbCBzZXR1cCwgZGF0YSBhbGxvY2F0aW9uLCBvciBjb25maWd1cmF0aW9uLiBTbyBJIGFtIGdvaW5nIHRvIHNlZSB3aGVyZSBgemNvbXBfY3JlYXRlYCBnZXRzIGNhbGxlZCwgYXMgdGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgaGFuZGxlIG9uIGhvdyB0aGUgei1jb21wb25lbnQgaXMgYmVpbmcgaW50ZWdyYXRlZCBpbnRvIHRoZSBicm9hZGVyIHN5c3RlbSBhbmQgdW5kZXJzdGFuZGluZyB0aGUgY29udGV4dCB0aGF0IG5lY2Vzc2l0YXRlcyBpbml0aWFsaXphdGlvbi4gTGV0JiMzOTtzIHRyYWNlIHRob3NlIGNhbGxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxOTowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt6Y29tcF9jcmVhdGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL3pyYW0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svenJhbS96Y29tcC5jPTIyNT12b2lkIHpjb21wX2Rlc3Ryb3koc3RydWN0IHpjb21wICpjb21wKVxuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96Y29tcC5jLTIzMi1cbmRyaXZlcnMvYmxvY2svenJhbS96Y29tcC5jOjIzMzpzdHJ1Y3QgemNvbXAgKnpjb21wX2NyZWF0ZShjb25zdCBjaGFyICphbGcsIHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcylcbmRyaXZlcnMvYmxvY2svenJhbS96Y29tcC5jLTIzNC17XG4tLVxuZHJpdmVycy9ibG9jay96cmFtL3pjb21wLmg9ODM9Y29uc3QgY2hhciAqemNvbXBfbG9va3VwX2JhY2tlbmRfbmFtZShjb25zdCBjaGFyICpjb21wKTtcbmRyaXZlcnMvYmxvY2svenJhbS96Y29tcC5oLTg0LVxuZHJpdmVycy9ibG9jay96cmFtL3pjb21wLmg6ODU6c3RydWN0IHpjb21wICp6Y29tcF9jcmVhdGUoY29uc3QgY2hhciAqYWxnLCBzdHJ1Y3QgemNvbXBfcGFyYW1zICpwYXJhbXMpO1xuZHJpdmVycy9ibG9jay96cmFtL3pjb21wLmgtODYtdm9pZCB6Y29tcF9kZXN0cm95KHN0cnVjdCB6Y29tcCAqY29tcCk7XG4tLVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM9Mjg1Nj1zdGF0aWMgc3NpemVfdCBkaXNrc2l6ZV9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTI4ODItXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzoyODgzOlx0XHRjb21wID0gemNvbXBfY3JlYXRlKHpyYW0tXHUwMDNlY29tcF9hbGdzW3ByaW9dLFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMjg4NC1cdFx0XHRcdCAgICBcdTAwMjZ6cmFtLVx1MDAzZXBhcmFtc1twcmlvXSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE5OjA2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk3NjIKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAyNTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgWnJhbSYjMzk7cyBDb21wcmVzc2lvbiBDb250ZXh0IENyZWF0aW9uKioKCk9rYXksIHNvIGBkaXNrc2l6ZV9zdG9yZWAgaXMgdGhlIGtleSDigJMgaXQgY2FsbHMgYHpjb21wX2NyZWF0ZWAuIFRoYXQgdGVsbHMgbWUgc2V0dGluZyB0aGUgZGlzayBzaXplLCB3aGljaCBpcyBob3cgd2UgaW5pdGlhbGl6ZSB0aGUgenJhbSBkZXZpY2UsIGlzIHdoZXJlIHRoZSBjb21wcmVzc2lvbiBjb250ZXh0cyBnZXQgY3JlYXRlZC4gSW50ZXJlc3RpbmcuIE5vdywgbG9va2luZyBhdCB0aGUgc3lzZnMgaGFuZGxlcnMsIGBhbGdvcml0aG1fcGFyYW1zX3N0b3JlYCwgYGNvbXBfYWxnb3JpdGhtX3N0b3JlYCwgYHJlY29tcF9hbGdvcml0aG1fc3RvcmVgLCBhbmQgYGRpc2tzaXplX3N0b3JlYCBhcmUgYWxsIGRpcmVjdGx5IHJlYWNoYWJsZSBhbmQgcmlwZSBmb3IgZnV6emluZy4gR29vZC4KClRoZSBwYXRjaCBpbXBsZW1lbnRzIHZhbGlkYXRpb24sIHdoaWNoIGlzIGV4YWN0bHkgd2hhdCBJJiMzOTtkIGV4cGVjdC4gTm93LCBpbnZhbGlkIHBhcmFtZXRlcnMgc2hvdWxkIHRyaWdnZXIgYW4gYC1FT1BOT1RTVVBQYCBvciBgLUVJTlZBTGAgZXJyb3IuIFRoYXQmIzM5O3MgZ29vZCwgcHJlZGljdGFibGUgZnVuY3Rpb25hbCBsb2dpYyB0aGF0IEkgY2FuIGV4cGxvaXQgd2l0aCBmdXp6aW5nLiBNeSBpbW1lZGlhdGUgZm9jdXMgc3ltYm9scyBuZWVkIHRvIGJlIHRob3NlIHN5c2ZzIGhhbmRsZXJzIOKAkyBgYWxnb3JpdGhtX3BhcmFtc19zdG9yZWAsIGBjb21wX2FsZ29yaXRobV9zdG9yZWAsIGByZWNvbXBfYWxnb3JpdGhtX3N0b3JlYCwgYGRpc2tzaXplX3N0b3JlYCwgdGhlbiBgemNvbXBfY3JlYXRlYCBhbmQgYHpjb21wX2luaXRgLCBhbmQgYWxzbyBhbGwgdGhlIGBzZXR1cF9wYXJhbXNgIGZ1bmN0aW9uczogYHNldHVwX3BhcmFtc184NDJgLCBgZGVmbGF0ZV9zZXR1cF9wYXJhbXNgLCBgbHo0X3NldHVwX3BhcmFtc2AsIGBsejRoY19zZXR1cF9wYXJhbXNgLCBgbHpvX3NldHVwX3BhcmFtc2AsIGBsem9ybGVfc2V0dXBfcGFyYW1zYCwgYW5kIGB6c3RkX3NldHVwX3BhcmFtc2AuCgpUaW1lIHRvIGNoZWNrIHRoZSBLY29uZmlnIGFuZCBzZWUgd2hhdCBvcHRpb25zIGFyZSBhdmFpbGFibGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE5OjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBaUkFNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay96cmFtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjI6Y29uZmlnIFpSQU1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtDb21wcmVzc2VkIFJBTSBibG9jayBkZXZpY2Ugc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTE2LVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6MTc6Y29uZmlnIFpSQU1fQkFDS0VORF9MWjRcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTE4LVx0Ym9vbCBcJiMzNDtsejQgY29tcHJlc3Npb24gc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTIyLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6MjM6Y29uZmlnIFpSQU1fQkFDS0VORF9MWjRIQ1xuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMjQtXHRib29sIFwmIzM0O2x6NGhjIGNvbXByZXNzaW9uIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0yOC1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjI5OmNvbmZpZyBaUkFNX0JBQ0tFTkRfWlNURFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMzAtXHRib29sIFwmIzM0O3pzdGQgY29tcHJlc3Npb24gc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTM0LVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6MzU6Y29uZmlnIFpSQU1fQkFDS0VORF9ERUZMQVRFXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0zNi1cdGJvb2wgXCYjMzQ7ZGVmbGF0ZSBjb21wcmVzc2lvbiBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNDAtXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo0MTpjb25maWcgWlJBTV9CQUNLRU5EXzg0MlxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNDItXHRib29sIFwmIzM0Ozg0MiBjb21wcmVzc2lvbiBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNDYtXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo0Nzpjb25maWcgWlJBTV9CQUNLRU5EX0ZPUkNFX0xaT1xuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNDgtXHRkZXBlbmRzIG9uIFpSQU1cbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy01Mi1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjUzOmNvbmZpZyBaUkFNX0JBQ0tFTkRfTFpPXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy01NC1cdGJvb2wgXCYjMzQ7bHpvIGFuZCBsem8tcmxlIGNvbXByZXNzaW9uIHN1cHBvcnRcJiMzNDsgaWYgIVpSQU1fQkFDS0VORF9GT1JDRV9MWk9cbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZz02MD1jaG9pY2Vcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy02NC1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjY1OmNvbmZpZyBaUkFNX0RFRl9DT01QX0xaT1JMRVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNjYtXHRib29sIFwmIzM0O2x6by1ybGVcJiMzNDtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy02OC1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjY5OmNvbmZpZyBaUkFNX0RFRl9DT01QX0xaT1xuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNzAtXHRib29sIFwmIzM0O2x6b1wmIzM0O1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTcyLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6NzM6Y29uZmlnIFpSQU1fREVGX0NPTVBfTFo0XG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy03NC1cdGJvb2wgXCYjMzQ7bHo0XCYjMzQ7XG4tLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNzYtXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo3Nzpjb25maWcgWlJBTV9ERUZfQ09NUF9MWjRIQ1xuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNzgtXHRib29sIFwmIzM0O2x6NGhjXCYjMzQ7XG4tLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctODAtXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo4MTpjb25maWcgWlJBTV9ERUZfQ09NUF9aU1REXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy04Mi1cdGJvb2wgXCYjMzQ7enN0ZFwmIzM0O1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTg0LVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6ODU6Y29uZmlnIFpSQU1fREVGX0NPTVBfREVGTEFURVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctODYtXHRib29sIFwmIzM0O2RlZmxhdGVcJiMzNDtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy04OC1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjg5OmNvbmZpZyBaUkFNX0RFRl9DT01QXzg0MlxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctOTAtXHRib29sIFwmIzM0Ozg0MlwmIzM0O1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnPTkzPWVuZGNob2ljZVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctOTQtXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo5NTpjb25maWcgWlJBTV9ERUZfQ09NUFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctOTYtXHRzdHJpbmdcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xMDYtXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzoxMDc6Y29uZmlnIFpSQU1fV1JJVEVCQUNLXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xMDgtICAgICAgIGJvb2wgXCYjMzQ7V3JpdGUgYmFjayBpbmNvbXByZXNzaWJsZSBvciBpZGxlIHBhZ2UgdG8gYmFja2luZyBkZXZpY2VcJiMzNDtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xMjAtXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzoxMjE6Y29uZmlnIFpSQU1fVFJBQ0tfRU5UUllfQUNUSU1FXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xMjItXHRib29sIFwmIzM0O1RyYWNrIGFjY2VzcyB0aW1lIG9mIHpyYW0gZW50cmllc1wmIzM0O1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTEyOC1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjEyOTpjb25maWcgWlJBTV9NRU1PUllfVFJBQ0tJTkdcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTEzMC1cdGJvb2wgXCYjMzQ7VHJhY2sgelJhbSBibG9jayBzdGF0dXNcJiMzNDtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xMzktXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzoxNDA6Y29uZmlnIFpSQU1fTVVMVElfQ09NUFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMTQxLVx0Ym9vbCBcJiMzNDtFbmFibGUgbXVsdGlwbGUgY29tcHJlc3Npb24gc3RyZWFtc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxOTowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTY0NwoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDkwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipaUkFNIENvbmZpZ3VyYXRpb24gQ29uc2lkZXJhdGlvbnMqKgoKQWxyaWdodCwgSSYjMzk7bSB0aGlua2luZyB3ZSBuZWVkIHRvIHNlcmlvdXNseSBjb25zaWRlciBlbmFibGluZyBaUkFNLCB0aGF0JiMzOTtzIGEgZ2l2ZW4uIEJ1dCBqdXN0IGVuYWJsaW5nIFpSQU0gYWxvbmUgaXNuJiMzOTt0IGVub3VnaDsgd2UgbmVlZCB0byBvcHRpbWl6ZSBpdC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIG1ha2UgYWxsIGNvbXByZXNzaW9uIGJhY2tlbmRzIGF2YWlsYWJsZTogYExaNGAsIGBMWjRIQ2AsIGBaU1REYCwgYERFRkxBVEVgLCBgODQyYCwgYExaT2AgYW5kIGBaUkFNX01VTFRJX0NPTVBgLiBJIGtub3cgZWFjaCBoYXMgaXRzIG93biBzdHJlbmd0aHMgYW5kIHdlYWtuZXNzZXMgZGVwZW5kaW5nIG9uIHRoZSB3b3JrbG9hZCBhbmQgaGFyZHdhcmUsIHNvIGhhdmluZyB0aGVtIGFsbCBhdmFpbGFibGUgc2VlbXMgbGlrZSB0aGUgbW9zdCBzZW5zaWJsZSBhcHByb2FjaCB0byBtYXhpbWl6ZSBmbGV4aWJpbGl0eSwgZXNwZWNpYWxseSBpbiBhIGR5bmFtaWMgZW52aXJvbm1lbnQuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIGRlcGVuZGVuY2llcy4gVGhlcmUgY291bGQgYmUgb3RoZXIgZmFjdG9ycyB0aGF0IG5lZWQgdG8gYmUgaW4gcGxhY2UuIFdlIHdvdWxkbiYjMzk7dCB3YW50IHRvIGxlYXZlIG91dCBhbnkgbmVjZXNzYXJ5IGZlYXR1cmVzLiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhvc2UgYXJlIGFuZCBtYWtlIHN1cmUgZXZlcnl0aGluZyBpcyBpbiBwbGFjZSBmb3IgYSBwcm9wZXIgaW1wbGVtZW50YXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE5OjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlcGVuZHMgb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZz0yPWNvbmZpZyBaUkFNXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7Q29tcHJlc3NlZCBSQU0gYmxvY2sgZGV2aWNlIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjQ6XHRkZXBlbmRzIG9uIEJMT0NLIFx1MDAyNlx1MDAyNiBTWVNGUyBcdTAwMjZcdTAwMjYgTU1VXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy01LVx0c2VsZWN0IFpTTUFMTE9DXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc9MTc9Y29uZmlnIFpSQU1fQkFDS0VORF9MWjRcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTE4LVx0Ym9vbCBcJiMzNDtsejQgY29tcHJlc3Npb24gc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6MTk6XHRkZXBlbmRzIG9uIFpSQU1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTIwLVx0c2VsZWN0IExaNF9DT01QUkVTU1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnPTIzPWNvbmZpZyBaUkFNX0JBQ0tFTkRfTFo0SENcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTI0LVx0Ym9vbCBcJiMzNDtsejRoYyBjb21wcmVzc2lvbiBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzoyNTpcdGRlcGVuZHMgb24gWlJBTVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMjYtXHRzZWxlY3QgTFo0SENfQ09NUFJFU1Ncbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZz0yOT1jb25maWcgWlJBTV9CQUNLRU5EX1pTVERcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTMwLVx0Ym9vbCBcJiMzNDt6c3RkIGNvbXByZXNzaW9uIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjMxOlx0ZGVwZW5kcyBvbiBaUkFNXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0zMi1cdHNlbGVjdCBaU1REX0NPTVBSRVNTXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc9MzU9Y29uZmlnIFpSQU1fQkFDS0VORF9ERUZMQVRFXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0zNi1cdGJvb2wgXCYjMzQ7ZGVmbGF0ZSBjb21wcmVzc2lvbiBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzozNzpcdGRlcGVuZHMgb24gWlJBTVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMzgtXHRzZWxlY3QgWkxJQl9ERUZMQVRFXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc9NDE9Y29uZmlnIFpSQU1fQkFDS0VORF84NDJcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTQyLVx0Ym9vbCBcJiMzNDs4NDIgY29tcHJlc3Npb24gc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6NDM6XHRkZXBlbmRzIG9uIFpSQU1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTQ0LVx0c2VsZWN0IDg0Ml9DT01QUkVTU1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnPTQ3PWNvbmZpZyBaUkFNX0JBQ0tFTkRfRk9SQ0VfTFpPXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo0ODpcdGRlcGVuZHMgb24gWlJBTVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNDktXHRkZWZfYm9vbCAhWlJBTV9CQUNLRU5EX0xaNCBcdTAwMjZcdTAwMjYgIVpSQU1fQkFDS0VORF9MWjRIQyBcdTAwMjZcdTAwMjYgXFxcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZz01Mz1jb25maWcgWlJBTV9CQUNLRU5EX0xaT1xuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNTQtXHRib29sIFwmIzM0O2x6byBhbmQgbHpvLXJsZSBjb21wcmVzc2lvbiBzdXBwb3J0XCYjMzQ7IGlmICFaUkFNX0JBQ0tFTkRfRk9SQ0VfTFpPXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo1NTpcdGRlcGVuZHMgb24gWlJBTVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNTYtXHRkZWZhdWx0IFpSQU1fQkFDS0VORF9GT1JDRV9MWk9cbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZz02MD1jaG9pY2Vcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy02Mi1cdGRlZmF1bHQgWlJBTV9ERUZfQ09NUF9MWk9STEVcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjYzOlx0ZGVwZW5kcyBvbiBaUkFNXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy02NC1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnPTY1PWNvbmZpZyBaUkFNX0RFRl9DT01QX0xaT1JMRVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNjYtXHRib29sIFwmIzM0O2x6by1ybGVcJiMzNDtcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjY3Olx0ZGVwZW5kcyBvbiBaUkFNX0JBQ0tFTkRfTFpPXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy02OC1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnPTY5PWNvbmZpZyBaUkFNX0RFRl9DT01QX0xaT1xuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNzAtXHRib29sIFwmIzM0O2x6b1wmIzM0O1xuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6NzE6XHRkZXBlbmRzIG9uIFpSQU1fQkFDS0VORF9MWk9cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTcyLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc9NzM9Y29uZmlnIFpSQU1fREVGX0NPTVBfTFo0XG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy03NC1cdGJvb2wgXCYjMzQ7bHo0XCYjMzQ7XG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo3NTpcdGRlcGVuZHMgb24gWlJBTV9CQUNLRU5EX0xaNFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNzYtXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZz03Nz1jb25maWcgWlJBTV9ERUZfQ09NUF9MWjRIQ1xuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNzgtXHRib29sIFwmIzM0O2x6NGhjXCYjMzQ7XG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo3OTpcdGRlcGVuZHMgb24gWlJBTV9CQUNLRU5EX0xaNEhDXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy04MC1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnPTgxPWNvbmZpZyBaUkFNX0RFRl9DT01QX1pTVERcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTgyLVx0Ym9vbCBcJiMzNDt6c3RkXCYjMzQ7XG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo4MzpcdGRlcGVuZHMgb24gWlJBTV9CQUNLRU5EX1pTVERcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTg0LVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc9ODU9Y29uZmlnIFpSQU1fREVGX0NPTVBfREVGTEFURVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctODYtXHRib29sIFwmIzM0O2RlZmxhdGVcJiMzNDtcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjg3Olx0ZGVwZW5kcyBvbiBaUkFNX0JBQ0tFTkRfREVGTEFURVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctODgtXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZz04OT1jb25maWcgWlJBTV9ERUZfQ09NUF84NDJcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTkwLVx0Ym9vbCBcJiMzNDs4NDJcJiMzNDtcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjkxOlx0ZGVwZW5kcyBvbiBaUkFNX0JBQ0tFTkRfODQyXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy05Mi1cbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZz05NT1jb25maWcgWlJBTV9ERUZfQ09NUFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctOTYtXHRzdHJpbmdcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjk3Olx0ZGVwZW5kcyBvbiBaUkFNXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy05OC1cdGRlZmF1bHQgXCYjMzQ7bHpvLXJsZVwmIzM0OyBpZiBaUkFNX0RFRl9DT01QX0xaT1JMRVxuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnPTEwNz1jb25maWcgWlJBTV9XUklURUJBQ0tcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTEwOC0gICAgICAgYm9vbCBcJiMzNDtXcml0ZSBiYWNrIGluY29tcHJlc3NpYmxlIG9yIGlkbGUgcGFnZSB0byBiYWNraW5nIGRldmljZVwmIzM0O1xuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6MTA5OiAgICAgICBkZXBlbmRzIG9uIFpSQU1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTExMC0gICAgICAgaGVscFxuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnPTEyMT1jb25maWcgWlJBTV9UUkFDS19FTlRSWV9BQ1RJTUVcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTEyMi1cdGJvb2wgXCYjMzQ7VHJhY2sgYWNjZXNzIHRpbWUgb2YgenJhbSBlbnRyaWVzXCYjMzQ7XG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzoxMjM6XHRkZXBlbmRzIG9uIFpSQU1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTEyNC1cdGhlbHBcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZz0xMjk9Y29uZmlnIFpSQU1fTUVNT1JZX1RSQUNLSU5HXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xMzAtXHRib29sIFwmIzM0O1RyYWNrIHpSYW0gYmxvY2sgc3RhdHVzXCYjMzQ7XG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzoxMzE6XHRkZXBlbmRzIG9uIFpSQU0gXHUwMDI2XHUwMDI2IERFQlVHX0ZTXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xMzItXHRzZWxlY3QgWlJBTV9UUkFDS19FTlRSWV9BQ1RJTUVcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZz0xNDA9Y29uZmlnIFpSQU1fTVVMVElfQ09NUFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMTQxLVx0Ym9vbCBcJiMzNDtFbmFibGUgbXVsdGlwbGUgY29tcHJlc3Npb24gc3RyZWFtc1wmIzM0O1xuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6MTQyOlx0ZGVwZW5kcyBvbiBaUkFNXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xNDMtXHRoZWxwXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE5OjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzODI5CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlpSQU0gQ29uZmlndXJhdGlvbiBhbmQgU3ltYm9sIEFuYWx5c2lzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGUgWlJBTSBjb25maWd1cmF0aW9uLiBUaGUgYmFzZSBkZXBlbmRlbmNpZXPigJRgQkxPQ0tgLCBgU1lTRlNgLCBhbmQgYE1NVWDigJRhcmUgcHJldHR5IHN0YW5kYXJkIGFuZCBleHBlY3RlZC4gTm90aGluZyB0byB3b3JyeSBhYm91dCB0aGVyZS4gVGhlbiwgaXQmIzM5O3Mgc3VnZ2VzdGluZyBlbmFibGluZyBgWlJBTWAgaXRzZWxmLCBhbG9uZyB3aXRoIGEgc3VpdGUgb2YgY29tcHJlc3Npb24gYmFja2VuZHM6IGBaUkFNX0JBQ0tFTkRfTFo0YCwgYFpSQU1fQkFDS0VORF9MWjRIQ2AsIGBaUkFNX0JBQ0tFTkRfWlNURGAsIGBaUkFNX0JBQ0tFTkRfREVGTEFURWAsIGBaUkFNX0JBQ0tFTkRfODQyYCwgYFpSQU1fQkFDS0VORF9MWk9gLCBhbmQgYFpSQU1fTVVMVElfQ09NUGAuIEdvb2QsIHdlJiMzOTtyZSBjb3ZlcmluZyB0aGUgYmFzZXMgd2l0aCB0aG9zZSBvcHRpb25zLgoKTm93LCB0aGUgZm9jdXMgc3ltYm9scyBhcmUgd2hlcmUgaXQgZ2V0cyBpbnRlcmVzdGluZy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGFyY2hpdGVjdHVyZSBvZiB0aGVzZSBaUkFNIGRyaXZlcnMuIEkgc2VlOiBgYWxnb3JpdGhtX3BhcmFtc19zdG9yZWAsIGBjb21wX2FsZ29yaXRobV9zdG9yZWAsIGByZWNvbXBfYWxnb3JpdGhtX3N0b3JlYCwgYGRpc2tzaXplX3N0b3JlYCwgYHpjb21wX2NyZWF0ZWAsIGB6Y29tcF9pbml0YCwgYHNldHVwX3BhcmFtc184NDJgLCBgZGVmbGF0ZV9zZXR1cF9wYXJhbXNgLCBgbHo0X3NldHVwX3BhcmFtc2AsIGBsejRoY19zZXR1cF9wYXJhbXNgLCBgbHpvX3NldHVwX3BhcmFtc2AsIGBsem9ybGVfc2V0dXBfcGFyYW1zYCwgYHpzdGRfc2V0dXBfcGFyYW1zYCwgYW5kIGBjb21wX3BhcmFtc19zdG9yZWAuIFRoZXNlIGFsbCBsb29rIGxpa2UgcG90ZW50aWFsbHkgaW1wb3J0YW50IGVudHJ5IHBvaW50cyBmb3IgdGhlIGNvbXByZXNzaW9uIGFsZ29yaXRobXMgb3IgcGFyYW1ldGVyIHNldHRpbmcuCgpUaGUgcHJvbXB0IHNwZWNpZmljYWxseSBtZW50aW9ucyBwcmVmZXJyaW5nIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucy4gU28gSSBoYXZlIHRvIGZpZ3VyZSBvdXQgaWYgdGhlc2Ugc3ltYm9scyBtZWV0IHRoYXQgY3JpdGVyaWEuIFJpZ2h0IG9mZiB0aGUgYmF0LCBJIGtub3cgdGhhdCBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucyBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvbiYjMzk7dCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMuIExvb2tpbmcgYXQgdGhlIGBzZXR1cF9wYXJhbXNfODQyYCwgZXRjLiBmdW5jdGlvbnMsIHRoZXkmIzM5O3JlIHN0YXRpYyEgQnV0LCBhaCwgYSBjcnVjaWFsIGRldGFpbCDigJMgdGhleSYjMzk7cmUgKmFzc2lnbmVkIHRvIGEgZnVuY3Rpb24gcG9pbnRlciogaW4gYHpjb21wX29wc2AuIFRoYXQgbWVhbnMgdGhleSYjMzk7cmUgbm90IGlubGluZWQgYW5kIGRvIGhhdmUgZGlzdGluY3QgYWRkcmVzc2VzLiBUaGF0JiMzOTtzIGdvb2QuCgpUbyBiZSBleHRyYSBzYWZlLCB0aG91Z2gsIEkgd2lsbCBpbmNsdWRlIHRoZSBzeXNmcyBlbnRyeSBwb2ludHMgc2luY2UgdGhvc2UgYXJlIGRlZmluaXRlbHkgbm90IGlubGluZWQgYW5kIGFyZSB0aGUgY29yZSBlbnRyeSBwb2ludHMuCgpXYWl0IGEgbW9tZW50LCBJJiMzOTttIHNwb3R0aW5nIHNvbWV0aGluZyBlbHNlLiBUaGUgYGFsZ29yaXRobV9wYXJhbXNfc3RvcmVgLCBgY29tcF9hbGdvcml0aG1fc3RvcmVgLCBgcmVjb21wX2FsZ29yaXRobV9zdG9yZWAsIGBkaXNrc2l6ZV9zdG9yZWAgYXJlIGFsc28gc3RhdGljLiBMZXQgbWUgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCBieSBleGFtaW5pbmcgYGRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTk6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YWxnb3JpdGhtX3BhcmFtc19zdG9yZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svenJhbS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM9MTY5MD1zdGF0aWMgaW50IGNvbXBfcGFyYW1zX3N0b3JlKHN0cnVjdCB6cmFtICp6cmFtLCB1MzIgcHJpbywgczMyIGxldmVsLFxuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTE3MTctXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzoxNzE4OnN0YXRpYyBzc2l6ZV90IGFsZ29yaXRobV9wYXJhbXNfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMTcxOS1cdFx0XHRcdCAgICAgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxOTowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDk1NAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIGNvbnNpZGVyaW5nIG15IGV4cGVydGlzZToKCioqRXhhbWluaW5nIHRoZSBOYXR1cmUgb2YgVGhlc2UgQXR0cmlidXRlcyoqCgpBbHJpZ2h0LCBzbyB0aGVzZSBhdHRyaWJ1dGVzLCBhcyB0aGV5JiMzOTtyZSBkZXNjcmliZWQsIGFyZSBlc3NlbnRpYWxseSBzdGF0aWMuIFRoZXkmIzM5O3JlIG5vdCBkeW5hbWljYWxseSBnZW5lcmF0ZWQgb3IgZXZhbHVhdGVkIGF0IHJ1bnRpbWUuIFRoYXQmIzM5O3MgdGhlIGJhc2VsaW5lLiBIb3dldmVyLCB0aGUgZmFjdCB0aGF0IHRoZXkmIzM5O3JlIHRpZWQgdG8gbWFjcm9zIGxpa2UgYERFVklDRV9BVFRSX1dPYCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGV5JiMzOTtyZSBub3QgaW5saW5lZCwgd2hpY2ggaXMgYW4gaW1wb3J0YW50IGFyY2hpdGVjdHVyYWwgZGV0YWlsLiBUaGlzIG1lYW5zIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggcG90ZW50aWFsbHkgcHJlLWRlZmluZWQgc3RydWN0dXJlcyBvciBkZWNsYXJhdGlvbnMsIGxpa2VseSB3aXRoaW4gYSBoZWFkZXIgZmlsZSwgcmF0aGVyIHRoYW4gY29kZSBkaXJlY3RseSBpbnRlZ3JhdGVkIGludG8gdGhlIGZ1bmN0aW9ucyB0aGF0IHVzZSB0aGVtLgoKTXkgbmV4dCBzdGVwLCBhbmQgZnJhbmtseSwgbXkgcmVmbGV4IGF0IHRoaXMgcG9pbnQsIGlzIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGRlc2lnbi4gTGV0JiMzOTtzIGRlbHZlIGludG8gaG93IGFuZCB3aGVyZSBgREVWSUNFX0FUVFJgIGlzIGFjdHVhbGx5ICp1c2VkKi4gSSBuZWVkIHRvIHNlZSB0aGUgY29udGV4dC4gVGhlIHNwZWNpZmljIGF0dHJpYnV0ZXMgaW52b2x2ZWQgc2hvdWxkIGJlIHN0cmFpZ2h0Zm9yd2FyZCB0byBhbmFseXplLCBidXQgdGhlIGludGVyYWN0aW9ucyBlbmFibGVkIGJ5IHRoZXNlIGF0dHJpYnV0ZXMgYXJlIGNyaXRpY2FsIHRvIG92ZXJhbGwgc3lzdGVtIGJlaGF2aW9yLiBUaGlzIHdpbGwgbGV0IG1lIGlkZW50aWZ5IGFuZCB2ZXJpZnkgaG93IHRoZXNlIHN0YXRpYyBhdHRyaWJ1dGVzIGFyZSBiZWluZyB1dGlsaXplZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTk6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7REVWSUNFX0FUVFIuKmFsZ29yaXRobV9wYXJhbXMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL3pyYW0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jPTI5ODY9c3RhdGljIERFVklDRV9BVFRSX1dPKHJlY29tcHJlc3MpO1xuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMjk4Ny0jZW5kaWZcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjI5ODg6c3RhdGljIERFVklDRV9BVFRSX1dPKGFsZ29yaXRobV9wYXJhbXMpO1xuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMjk4OS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTk6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTUzNTQKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiA4MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0IG1lIGxheSBvdXQgbXkgdGhpbmtpbmcgaGVyZS4KCioqSW50ZXJuYWwgQ2hlY2tsaXN0IGZvciBWYXJpYWJsZSBTY29wZSBhbmQgRXhwb3J0aW5nKioKCkFscmlnaHQsIEkgcmVtZW1iZXIgbm93LCB0aGVzZSBmb2N1cyBzeW1ib2xzIGFyZSBkZWZpbml0ZWx5IHVzZWQgd2l0aGluIHRoZSBjb250ZXh0IG9mIGBERVZJQ0VfQVRUUl9XT2AuIFRoYXQmIzM5O3Mgd2hlcmUgdGhleSBjb21lIGludG8gcGxheS4gU28sIEkgbmVlZCB0byBtYWtlIHN1cmUgSSYjMzk7dmUgZ290IHRoZSBjb3JyZWN0IG9uZXMuIExldCBtZSBxdWlja2x5IHJ1biB0aHJvdWdoIHRoZW0gaW4gbXkgaGVhZDogYGFsZ29yaXRobV9wYXJhbXNfc3RvcmVgLCBgY29tcF9hbGdvcml0aG1fc3RvcmVgLCBgcmVjb21wX2FsZ29yaXRobV9zdG9yZWAsIGBkaXNrc2l6ZV9zdG9yZWAsIGFuZCBgemNvbXBfY3JlYXRlYC4gIFllcCwgdGhhdCBsb29rcyByaWdodC4KCk5vdywgYSBxdWljayBzaWRlIHRob3VnaHQsIEkgcmVhbGx5IHNob3VsZCBkb3VibGUgY2hlY2sgdGhlIHNjb3BlIG9mIGB6Y29tcF9jcmVhdGVgLiBJIG5lZWQgdG8gY29uZmlybSBpZiBpdCYjMzk7cyBleHBvcnRlZCBvciBpZiBpdCYjMzk7cyBnb3QgdGhlIGBzdGF0aWNgIG1vZGlmaWVyLiBObyBwb2ludCBpbiBtYWtpbmcgYXNzdW1wdGlvbnMgaGVyZSwgSSBzaG91bGQgZ2V0IHRoaXMgaW5mb3JtYXRpb24gdmVyaWZpZWQgYmVmb3JlIG1vdmluZyBvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTk6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7emNvbXBfY3JlYXRlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay96cmFtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuYz0yMjU9dm9pZCB6Y29tcF9kZXN0cm95KHN0cnVjdCB6Y29tcCAqY29tcClcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuYy0yMzItXG5kcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuYzoyMzM6c3RydWN0IHpjb21wICp6Y29tcF9jcmVhdGUoY29uc3QgY2hhciAqYWxnLCBzdHJ1Y3QgemNvbXBfcGFyYW1zICpwYXJhbXMpXG5kcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuYy0yMzQte1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96Y29tcC5oPTgzPWNvbnN0IGNoYXIgKnpjb21wX2xvb2t1cF9iYWNrZW5kX25hbWUoY29uc3QgY2hhciAqY29tcCk7XG5kcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuaC04NC1cbmRyaXZlcnMvYmxvY2svenJhbS96Y29tcC5oOjg1OnN0cnVjdCB6Y29tcCAqemNvbXBfY3JlYXRlKGNvbnN0IGNoYXIgKmFsZywgc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKTtcbmRyaXZlcnMvYmxvY2svenJhbS96Y29tcC5oLTg2LXZvaWQgemNvbXBfZGVzdHJveShzdHJ1Y3QgemNvbXAgKmNvbXApO1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jPTI4NTY9c3RhdGljIHNzaXplX3QgZGlza3NpemVfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0yODgyLVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6Mjg4MzpcdFx0Y29tcCA9IHpjb21wX2NyZWF0ZSh6cmFtLVx1MDAzZWNvbXBfYWxnc1twcmlvXSxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTI4ODQtXHRcdFx0XHQgICAgXHUwMDI2enJhbS1cdTAwM2VwYXJhbXNbcHJpb10pO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxOTowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjAxNQoJCQkJCQkJb3V0cHV0OiAyNTUKCQkJCQkJCXRob3VnaHRzOiAzMzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFpSQU0gQ29tcHJlc3Npb24gUGFyYW1ldGVyIFZhbGlkYXRpb24qKgoKT2theSwgc28gYHpjb21wX2NyZWF0ZWAgaXMgZGVmaW5pdGVseSBub24tc3RhdGljLCBnb29kLiBOb3csIGxldCYjMzk7cyBzZWUgYWJvdXQgYGNvbXBfcGFyYW1zX3N0b3JlYC4gQWgsIGl0ICppcyogc3RhdGljLiBCdXQsIHdhaXQsIGl0JiMzOTtzIGNhbGxlZCBieSBgYWxnb3JpdGhtX3BhcmFtc19zdG9yZWAuIFRoYXQgbWVhbnMgaXQmIzM5O3MgaW1wb3J0YW50IGZvciB0aGUgZGljdGlvbmFyeSBsb2FkaW5nIGxvZ2ljLCBzbyBJJiMzOTtsbCBhZGQgaXQgdG8gdGhlIGZvY3VzIHN5bWJvbHMgYXMgd2VsbCwgc2luY2UgaXQmIzM5O3Mga2V5IHRvIHdoYXQgd2UgYXJlIGFzc2Vzc2luZy4gSG1tLCB0aGUgc3RhdGljIG5hdHVyZSBvZiBgY29tcF9wYXJhbXNfc3RvcmVgIG1ha2VzIG1lIHRoaW5rIGFib3V0IHBvdGVudGlhbCBpbmxpbmluZy4gQnV0IGl0JiMzOTtzIGEgcmVhc29uYWJseSBsYXJnZSBmdW5jdGlvbiwgc28gaW5saW5pbmcgbWlnaHQgYmUgbGVzcyBsaWtlbHkuIEp1c3QgdG8gYmUgc2FmZSwgSSYjMzk7bGwgYWxzbyBhZGQgYGFsZ29yaXRobV9wYXJhbXNfc3RvcmVgLCBgY29tcF9hbGdvcml0aG1fc3RvcmVgLCBhbmQgYHJlY29tcF9hbGdvcml0aG1fc3RvcmVgLgoKQWxyaWdodCwgdGltZSB0byByZXZpc2l0IHRoZSBjb25maWd1cmF0aW9ucyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoOiBgWlJBTWAsIGBaUkFNX0JBQ0tFTkRfTFo0YCwgYFpSQU1fQkFDS0VORF9MWjRIQ2AsIGBaUkFNX0JBQ0tFTkRfWlNURGAsIGBaUkFNX0JBQ0tFTkRfREVGTEFURWAsIGBaUkFNX0JBQ0tFTkRfODQyYCwgYFpSQU1fQkFDS0VORF9MWk9gLCBhbmQgYFpSQU1fTVVMVElfQ09NUGAuIFRoZXNlIGFyZSBpbXBvcnRhbnQgYmVjYXVzZSBvZiB0aGUgcGF0Y2gmIzM5O3MgY2hhbmdlcy4KClRoZSBnaXN0IG9mIGl0IGlzIHRoaXM6IHRoZSBwYXRjaCBpbXBsZW1lbnRzIHZhbGlkYXRpb24gZm9yIGNvbXByZXNzaW9uIHBhcmFtZXRlcnMgbGlrZSBkaWN0aW9uYXJ5IHNpemUgYW5kIGNvbXByZXNzaW9uIGxldmVsIGFjcm9zcyBtdWx0aXBsZSB6cmFtIGJhY2tlbmRzICg4NDIsIGRlZmxhdGUsIGx6NCwgbHo0aGMsIGx6bywgbHpvcmxlLCBhbmQgenN0ZCkuIEl0IGFsc28gbW9kaWZpZXMgdGhlIHN5c2ZzIGhhbmRsZXJzIGZvciB6cmFtIGNvbXByZXNzaW9uIGFsZ29yaXRobXMgdG8gcmVzZXQgcGFyYW1ldGVycyB3aGVuIHRoZSBhbGdvcml0aG0gaXMgY2hhbmdlZC4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgdGhlIGNvcmUgZnVuY3Rpb25hbCBsb2dpYyBvZiBjb25maWd1cmluZyB6cmFtIGNvbXByZXNzaW9uIHZpYSBzeXNmcywgbWFraW5nIGl0IHJlYWNoYWJsZSBhbmQgYSBwcmltZSB0YXJnZXQgZm9yIGZ1enppbmcgdmlhIHN5emthbGxlci4KCkxldCYjMzk7cyBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE5OjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtaUkFNJiMzNDssCiAgICAmIzM0O1pSQU1fQkFDS0VORF9MWjQmIzM0OywKICAgICYjMzQ7WlJBTV9CQUNLRU5EX0xaNEhDJiMzNDssCiAgICAmIzM0O1pSQU1fQkFDS0VORF9aU1REJiMzNDssCiAgICAmIzM0O1pSQU1fQkFDS0VORF9ERUZMQVRFJiMzNDssCiAgICAmIzM0O1pSQU1fQkFDS0VORF84NDImIzM0OywKICAgICYjMzQ7WlJBTV9CQUNLRU5EX0xaTyYjMzQ7LAogICAgJiMzNDtaUkFNX01VTFRJX0NPTVAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthbGdvcml0aG1fcGFyYW1zX3N0b3JlJiMzNDssCiAgICAmIzM0O2NvbXBfYWxnb3JpdGhtX3N0b3JlJiMzNDssCiAgICAmIzM0O3JlY29tcF9hbGdvcml0aG1fc3RvcmUmIzM0OywKICAgICYjMzQ7ZGlza3NpemVfc3RvcmUmIzM0OywKICAgICYjMzQ7emNvbXBfY3JlYXRlJiMzNDssCiAgICAmIzM0O2NvbXBfcGFyYW1zX3N0b3JlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgdmFsaWRhdGlvbiBmb3IgY29tcHJlc3Npb24gcGFyYW1ldGVycyAobGlrZSBkaWN0aW9uYXJ5IHNpemUgYW5kIGNvbXByZXNzaW9uIGxldmVsKSBpbiB2YXJpb3VzIHpyYW0gYmFja2VuZHMgKDg0MiwgZGVmbGF0ZSwgbHo0LCBsejRoYywgbHpvLCBsem9ybGUsIHpzdGQpLiBJdCBhbHNvIG1vZGlmaWVzIHRoZSBzeXNmcyBoYW5kbGVycyBmb3IgenJhbSBjb21wcmVzc2lvbiBhbGdvcml0aG1zIHRvIHJlc2V0IHBhcmFtZXRlcnMgd2hlbiB0aGUgYWxnb3JpdGhtIGlzIGNoYW5nZWQuIFRoZXNlIGNoYW5nZXMgYWZmZWN0IHRoZSBmdW5jdGlvbmFsIGxvZ2ljIG9mIHpyYW0gY29uZmlndXJhdGlvbiB2aWEgc3lzZnMsIHdoaWNoIGlzIHJlYWNoYWJsZSBhbmQgY2FuIGJlIGZ1enplZCBieSBzeXprYWxsZXIuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1pSQU0mIzM0OywKICAgICYjMzQ7WlJBTV9CQUNLRU5EX0xaNCYjMzQ7LAogICAgJiMzNDtaUkFNX0JBQ0tFTkRfTFo0SEMmIzM0OywKICAgICYjMzQ7WlJBTV9CQUNLRU5EX1pTVEQmIzM0OywKICAgICYjMzQ7WlJBTV9CQUNLRU5EX0RFRkxBVEUmIzM0OywKICAgICYjMzQ7WlJBTV9CQUNLRU5EXzg0MiYjMzQ7LAogICAgJiMzNDtaUkFNX0JBQ0tFTkRfTFpPJiMzNDssCiAgICAmIzM0O1pSQU1fTVVMVElfQ09NUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2FsZ29yaXRobV9wYXJhbXNfc3RvcmUmIzM0OywKICAgICYjMzQ7Y29tcF9hbGdvcml0aG1fc3RvcmUmIzM0OywKICAgICYjMzQ7cmVjb21wX2FsZ29yaXRobV9zdG9yZSYjMzQ7LAogICAgJiMzNDtkaXNrc2l6ZV9zdG9yZSYjMzQ7LAogICAgJiMzNDt6Y29tcF9jcmVhdGUmIzM0OywKICAgICYjMzQ7Y29tcF9wYXJhbXNfc3RvcmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyB2YWxpZGF0aW9uIGZvciBjb21wcmVzc2lvbiBwYXJhbWV0ZXJzIChsaWtlIGRpY3Rpb25hcnkgc2l6ZSBhbmQgY29tcHJlc3Npb24gbGV2ZWwpIGluIHZhcmlvdXMgenJhbSBiYWNrZW5kcyAoODQyLCBkZWZsYXRlLCBsejQsIGx6NGhjLCBsem8sIGx6b3JsZSwgenN0ZCkuIEl0IGFsc28gbW9kaWZpZXMgdGhlIHN5c2ZzIGhhbmRsZXJzIGZvciB6cmFtIGNvbXByZXNzaW9uIGFsZ29yaXRobXMgdG8gcmVzZXQgcGFyYW1ldGVycyB3aGVuIHRoZSBhbGdvcml0aG0gaXMgY2hhbmdlZC4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgdGhlIGZ1bmN0aW9uYWwgbG9naWMgb2YgenJhbSBjb25maWd1cmF0aW9uIHZpYSBzeXNmcywgd2hpY2ggaXMgcmVhY2hhYmxlIGFuZCBjYW4gYmUgZnV6emVkIGJ5IHN5emthbGxlci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE5OjA2OjI1LjAwMzIwNDAwOVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYzMzQzNTk1Mjk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlpSQU1cIixcbiAgICBcIlpSQU1fQkFDS0VORF9MWjRcIixcbiAgICBcIlpSQU1fQkFDS0VORF9MWjRIQ1wiLFxuICAgIFwiWlJBTV9CQUNLRU5EX1pTVERcIixcbiAgICBcIlpSQU1fQkFDS0VORF9ERUZMQVRFXCIsXG4gICAgXCJaUkFNX0JBQ0tFTkRfODQyXCIsXG4gICAgXCJaUkFNX0JBQ0tFTkRfTFpPXCIsXG4gICAgXCJaUkFNX01VTFRJX0NPTVBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJhbGdvcml0aG1fcGFyYW1zX3N0b3JlXCIsXG4gICAgXCJjb21wX2FsZ29yaXRobV9zdG9yZVwiLFxuICAgIFwicmVjb21wX2FsZ29yaXRobV9zdG9yZVwiLFxuICAgIFwiZGlza3NpemVfc3RvcmVcIixcbiAgICBcInpjb21wX2NyZWF0ZVwiLFxuICAgIFwiY29tcF9wYXJhbXNfc3RvcmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHZhbGlkYXRpb24gZm9yIGNvbXByZXNzaW9uIHBhcmFtZXRlcnMgKGxpa2UgZGljdGlvbmFyeSBzaXplIGFuZCBjb21wcmVzc2lvbiBsZXZlbCkgaW4gdmFyaW91cyB6cmFtIGJhY2tlbmRzICg4NDIsIGRlZmxhdGUsIGx6NCwgbHo0aGMsIGx6bywgbHpvcmxlLCB6c3RkKS4gSXQgYWxzbyBtb2RpZmllcyB0aGUgc3lzZnMgaGFuZGxlcnMgZm9yIHpyYW0gY29tcHJlc3Npb24gYWxnb3JpdGhtcyB0byByZXNldCBwYXJhbWV0ZXJzIHdoZW4gdGhlIGFsZ29yaXRobSBpcyBjaGFuZ2VkLiBUaGVzZSBjaGFuZ2VzIGFmZmVjdCB0aGUgZnVuY3Rpb25hbCBsb2dpYyBvZiB6cmFtIGNvbmZpZ3VyYXRpb24gdmlhIHN5c2ZzLCB3aGljaCBpcyByZWFjaGFibGUgYW5kIGNhbiBiZSBmdXp6ZWQgYnkgc3l6a2FsbGVyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxOTowNjoyNS4wMDMyMTM3MDlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI5NTcxNzYwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGQ1ODQwMjhlODlmMjQ5MGU3ZjVmODVkZjUwZTUwN2QzNDBhYjVmYjlcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBBdWcgMyAxOTowNjoyNCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF84NDIuYyBiL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kXzg0Mi5jXFxuaW5kZXggMTBkOWQ1YzYwZjUzMS4uOTFhMjIzMTNmZTgyYSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF84NDIuY1xcbisrKyBiL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kXzg0Mi5jXFxuQEAgLTEzLDYgKzEzLDE0IEBAIHN0YXRpYyB2b2lkIHJlbGVhc2VfcGFyYW1zXzg0MihzdHJ1Y3QgemNvbXBfcGFyYW1zICpwYXJhbXMpXFxuIFxcbiBzdGF0aWMgaW50IHNldHVwX3BhcmFtc184NDIoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKVxcbiB7XFxuK1xcdGlmIChwYXJhbXMtXFx1MDAzZWRpY3Rfc3opIHtcXG4rXFx0XFx0cHJfZXJyKFxcXCI4NDI6IGRpY3Rpb25hcnkgaXMgbm90IHN1cHBvcnRlZFxcXFxuXFxcIik7XFxuK1xcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4rXFx0fVxcbitcXHRpZiAocGFyYW1zLVxcdTAwM2VsZXZlbCAhPSBaQ09NUF9QQVJBTV9OT1RfU0VUKSB7XFxuK1xcdFxcdHByX2VycihcXFwiODQyOiBjb21wcmVzc2lvbiBsZXZlbCBpcyBub3Qgc3VwcG9ydGVkXFxcXG5cXFwiKTtcXG4rXFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbitcXHR9XFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9kZWZsYXRlLmMgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9kZWZsYXRlLmNcXG5pbmRleCBiM2Y3ZDA4YjQ5ZDkzLi5iMjA3NGM0NGIyZDA0IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2RlZmxhdGUuY1xcbisrKyBiL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2RlZmxhdGUuY1xcbkBAIC0yMiw4ICsyMiwxOSBAQCBzdGF0aWMgdm9pZCBkZWZsYXRlX3JlbGVhc2VfcGFyYW1zKHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcylcXG4gXFxuIHN0YXRpYyBpbnQgZGVmbGF0ZV9zZXR1cF9wYXJhbXMoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKVxcbiB7XFxuK1xcdGlmIChwYXJhbXMtXFx1MDAzZWRpY3Rfc3opIHtcXG4rXFx0XFx0cHJfZXJyKFxcXCJkZWZsYXRlOiBkaWN0aW9uYXJ5IGlzIG5vdCBzdXBwb3J0ZWRcXFxcblxcXCIpO1xcbitcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuK1xcdH1cXG4rXFxuIFxcdGlmIChwYXJhbXMtXFx1MDAzZWxldmVsID09IFpDT01QX1BBUkFNX05PVF9TRVQpXFxuIFxcdFxcdHBhcmFtcy1cXHUwMDNlbGV2ZWwgPSBaX0RFRkFVTFRfQ09NUFJFU1NJT047XFxuK1xcdGVsc2UgaWYgKHBhcmFtcy1cXHUwMDNlbGV2ZWwgXFx1MDAzYyBaX0RFRkFVTFRfQ09NUFJFU1NJT04gfHxcXG4rXFx0XFx0IHBhcmFtcy1cXHUwMDNlbGV2ZWwgXFx1MDAzZSBaX0JFU1RfQ09NUFJFU1NJT04pIHtcXG4rXFx0XFx0cHJfZXJyKFxcXCJkZWZsYXRlOiBpbnZhbGlkIGNvbXByZXNzaW9uIGxldmVsICVkXFxcXG5cXFwiLCBwYXJhbXMtXFx1MDAzZWxldmVsKTtcXG4rXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcdH1cXG4rXFxuIFxcdGlmIChwYXJhbXMtXFx1MDAzZWRlZmxhdGUud2luYml0cyA9PSBaQ09NUF9QQVJBTV9OT1RfU0VUKSB7XFxuIFxcdFxcdHBhcmFtcy1cXHUwMDNlZGVmbGF0ZS53aW5iaXRzID0gREVGTEFURV9ERUZfV0lOQklUUztcXG4gXFx0fSBlbHNlIHtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHo0LmMgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sejQuY1xcbmluZGV4IGM0NDlkNTExYmE4NmYuLmY0ZjUxMTEyMjBjNzkgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHo0LmNcXG4rKysgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sejQuY1xcbkBAIC0zMCw2ICszMCwxMCBAQCBzdGF0aWMgaW50IGx6NF9zZXR1cF9wYXJhbXMoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKVxcbiBcXG4gXFx0aWYgKHBhcmFtcy1cXHUwMDNlbGV2ZWwgPT0gWkNPTVBfUEFSQU1fTk9UX1NFVClcXG4gXFx0XFx0cGFyYW1zLVxcdTAwM2VsZXZlbCA9IExaNF9BQ0NFTEVSQVRJT05fREVGQVVMVDtcXG4rXFx0ZWxzZSBpZiAocGFyYW1zLVxcdTAwM2VsZXZlbCBcXHUwMDNjIExaNF9BQ0NFTEVSQVRJT05fREVGQVVMVCkge1xcbitcXHRcXHRwcl9lcnIoXFxcImx6NDogaW52YWxpZCBjb21wcmVzc2lvbiBsZXZlbCAlZFxcXFxuXFxcIiwgcGFyYW1zLVxcdTAwM2VsZXZlbCk7XFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHR9XFxuIFxcbiBcXHRpZiAoIXBhcmFtcy1cXHUwMDNlZGljdCB8fCAhcGFyYW1zLVxcdTAwM2VkaWN0X3N6KVxcbiBcXHRcXHRyZXR1cm4gMDtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHo0aGMuYyBiL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6NGhjLmNcXG5pbmRleCBmNmEzMzZhY2ZlMjAyLi5kN2NkOTdiODk4YmQ1IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6NGhjLmNcXG4rKysgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sejRoYy5jXFxuQEAgLTIwLDYgKzIwLDEwIEBAIHN0YXRpYyBpbnQgbHo0aGNfc2V0dXBfcGFyYW1zKHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcylcXG4ge1xcbiBcXHRpZiAocGFyYW1zLVxcdTAwM2VsZXZlbCA9PSBaQ09NUF9QQVJBTV9OT1RfU0VUKVxcbiBcXHRcXHRwYXJhbXMtXFx1MDAzZWxldmVsID0gTFo0SENfREVGQVVMVF9DTEVWRUw7XFxuK1xcdGVsc2UgaWYgKHBhcmFtcy1cXHUwMDNlbGV2ZWwgXFx1MDAzYyAxIHx8IHBhcmFtcy1cXHUwMDNlbGV2ZWwgXFx1MDAzZSBMWjRIQ19NQVhfQ0xFVkVMKSB7XFxuK1xcdFxcdHByX2VycihcXFwibHo0aGM6IGludmFsaWQgY29tcHJlc3Npb24gbGV2ZWwgJWRcXFxcblxcXCIsIHBhcmFtcy1cXHUwMDNlbGV2ZWwpO1xcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFx0fVxcbiBcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvLmMgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sem8uY1xcbmluZGV4IDRjOTA2YmVhYWU2YjMuLmNkYmI4OWFhYTBkZWUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvLmNcXG4rKysgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sem8uY1xcbkBAIC0xMiw2ICsxMiwxNCBAQCBzdGF0aWMgdm9pZCBsem9fcmVsZWFzZV9wYXJhbXMoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKVxcbiBcXG4gc3RhdGljIGludCBsem9fc2V0dXBfcGFyYW1zKHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcylcXG4ge1xcbitcXHRpZiAocGFyYW1zLVxcdTAwM2VkaWN0X3N6KSB7XFxuK1xcdFxcdHByX2VycihcXFwibHpvOiBkaWN0aW9uYXJ5IGlzIG5vdCBzdXBwb3J0ZWRcXFxcblxcXCIpO1xcbitcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuK1xcdH1cXG4rXFx0aWYgKHBhcmFtcy1cXHUwMDNlbGV2ZWwgIT0gWkNPTVBfUEFSQU1fTk9UX1NFVCkge1xcbitcXHRcXHRwcl9lcnIoXFxcImx6bzogY29tcHJlc3Npb24gbGV2ZWwgaXMgbm90IHN1cHBvcnRlZFxcXFxuXFxcIik7XFxuK1xcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4rXFx0fVxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvcmxlLmMgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sem9ybGUuY1xcbmluZGV4IDEwNjQwYzk2Y2JmY2EuLjU4ZjdkZGY1YTU1ZjUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvcmxlLmNcXG4rKysgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sem9ybGUuY1xcbkBAIC0xMiw2ICsxMiwxNCBAQCBzdGF0aWMgdm9pZCBsem9ybGVfcmVsZWFzZV9wYXJhbXMoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKVxcbiBcXG4gc3RhdGljIGludCBsem9ybGVfc2V0dXBfcGFyYW1zKHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcylcXG4ge1xcbitcXHRpZiAocGFyYW1zLVxcdTAwM2VkaWN0X3N6KSB7XFxuK1xcdFxcdHByX2VycihcXFwibHpvLXJsZTogZGljdGlvbmFyeSBpcyBub3Qgc3VwcG9ydGVkXFxcXG5cXFwiKTtcXG4rXFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbitcXHR9XFxuK1xcdGlmIChwYXJhbXMtXFx1MDAzZWxldmVsICE9IFpDT01QX1BBUkFNX05PVF9TRVQpIHtcXG4rXFx0XFx0cHJfZXJyKFxcXCJsem8tcmxlOiBjb21wcmVzc2lvbiBsZXZlbCBpcyBub3Qgc3VwcG9ydGVkXFxcXG5cXFwiKTtcXG4rXFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbitcXHR9XFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF96c3RkLmMgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF96c3RkLmNcXG5pbmRleCBkMDBiNTQ4MDU2ZGMyLi5lMDcxZmE1ODRmNmIwIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX3pzdGQuY1xcbisrKyBiL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX3pzdGQuY1xcbkBAIC02MCw2ICs2MCwxMSBAQCBzdGF0aWMgaW50IHpzdGRfc2V0dXBfcGFyYW1zKHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcylcXG4gXFx0cGFyYW1zLVxcdTAwM2VkcnZfZGF0YSA9IHpwO1xcbiBcXHRpZiAocGFyYW1zLVxcdTAwM2VsZXZlbCA9PSBaQ09NUF9QQVJBTV9OT1RfU0VUKVxcbiBcXHRcXHRwYXJhbXMtXFx1MDAzZWxldmVsID0genN0ZF9kZWZhdWx0X2NsZXZlbCgpO1xcbitcXHRlbHNlIGlmIChwYXJhbXMtXFx1MDAzZWxldmVsIFxcdTAwM2MgenN0ZF9taW5fY2xldmVsKCkgfHxcXG4rXFx0XFx0IHBhcmFtcy1cXHUwMDNlbGV2ZWwgXFx1MDAzZSB6c3RkX21heF9jbGV2ZWwoKSkge1xcbitcXHRcXHRwcl9lcnIoXFxcInpzdGQ6IGludmFsaWQgY29tcHJlc3Npb24gbGV2ZWwgJWRcXFxcblxcXCIsIHBhcmFtcy1cXHUwMDNlbGV2ZWwpO1xcbitcXHRcXHRnb3RvIGVycm9yO1xcbitcXHR9XFxuIFxcbiBcXHR6cC1cXHUwMDNlY3BybSA9IHpzdGRfZ2V0X3BhcmFtcyhwYXJhbXMtXFx1MDAzZWxldmVsLCBQQUdFX1NJWkUpO1xcbiBcXG5AQCAtODUsNyArOTAsNiBAQCBzdGF0aWMgaW50IHpzdGRfc2V0dXBfcGFyYW1zKHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcylcXG4gXFx0cmV0dXJuIDA7XFxuIFxcbiBlcnJvcjpcXG4tXFx0enN0ZF9yZWxlYXNlX3BhcmFtcyhwYXJhbXMpO1xcbiBcXHRyZXR1cm4gLUVJTlZBTDtcXG4gfVxcbiBcXG5AQCAtMTYxLDcgKzE2NSw2IEBAIHN0YXRpYyBpbnQgenN0ZF9jcmVhdGUoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zLCBzdHJ1Y3QgemNvbXBfY3R4ICpjdHgpXFxuIFxcdHJldHVybiAwO1xcbiBcXG4gZXJyb3I6XFxuLVxcdHpzdGRfcmVsZWFzZV9wYXJhbXMocGFyYW1zKTtcXG4gXFx0enN0ZF9kZXN0cm95KGN0eCk7XFxuIFxcdHJldHVybiAtRUlOVkFMO1xcbiB9XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jIGIvZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmNcXG5pbmRleCBjZmE5ODg0NmFjNDg0Li5jYzk2YjE4YmY2NDdjIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jXFxuKysrIGIvZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmNcXG5AQCAtMTY1Miw2ICsxNjUyLDE3IEBAIHN0YXRpYyB2b2lkIGNvbXBfYWxnb3JpdGhtX3NldChzdHJ1Y3QgenJhbSAqenJhbSwgdTMyIHByaW8sIGNvbnN0IGNoYXIgKmFsZylcXG4gXFx0enJhbS1cXHUwMDNlY29tcF9hbGdzW3ByaW9dID0gYWxnO1xcbiB9XFxuIFxcbitzdGF0aWMgdm9pZCBjb21wX3BhcmFtc19yZXNldChzdHJ1Y3QgenJhbSAqenJhbSwgdTMyIHByaW8pXFxuK3tcXG4rXFx0c3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zID0gXFx1MDAyNnpyYW0tXFx1MDAzZXBhcmFtc1twcmlvXTtcXG4rXFxuK1xcdHZmcmVlKHBhcmFtcy1cXHUwMDNlZGljdCk7XFxuK1xcdHBhcmFtcy1cXHUwMDNlbGV2ZWwgPSBaQ09NUF9QQVJBTV9OT1RfU0VUO1xcbitcXHRwYXJhbXMtXFx1MDAzZWRlZmxhdGUud2luYml0cyA9IFpDT01QX1BBUkFNX05PVF9TRVQ7XFxuK1xcdHBhcmFtcy1cXHUwMDNlZGljdF9zeiA9IDA7XFxuK1xcdHBhcmFtcy1cXHUwMDNlZGljdCA9IE5VTEw7XFxuK31cXG4rXFxuIHN0YXRpYyBpbnQgX19jb21wX2FsZ29yaXRobV9zdG9yZShzdHJ1Y3QgenJhbSAqenJhbSwgdTMyIHByaW8sIGNvbnN0IGNoYXIgKmJ1ZilcXG4ge1xcbiBcXHRjb25zdCBjaGFyICphbGc7XFxuQEAgLTE2NzIsMjAgKzE2ODMsMTAgQEAgc3RhdGljIGludCBfX2NvbXBfYWxnb3JpdGhtX3N0b3JlKHN0cnVjdCB6cmFtICp6cmFtLCB1MzIgcHJpbywgY29uc3QgY2hhciAqYnVmKVxcbiBcXHR9XFxuIFxcbiBcXHRjb21wX2FsZ29yaXRobV9zZXQoenJhbSwgcHJpbywgYWxnKTtcXG4rXFx0Y29tcF9wYXJhbXNfcmVzZXQoenJhbSwgcHJpbyk7XFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbi1zdGF0aWMgdm9pZCBjb21wX3BhcmFtc19yZXNldChzdHJ1Y3QgenJhbSAqenJhbSwgdTMyIHByaW8pXFxuLXtcXG4tXFx0c3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zID0gXFx1MDAyNnpyYW0tXFx1MDAzZXBhcmFtc1twcmlvXTtcXG4tXFxuLVxcdHZmcmVlKHBhcmFtcy1cXHUwMDNlZGljdCk7XFxuLVxcdHBhcmFtcy1cXHUwMDNlbGV2ZWwgPSBaQ09NUF9QQVJBTV9OT1RfU0VUO1xcbi1cXHRwYXJhbXMtXFx1MDAzZWRlZmxhdGUud2luYml0cyA9IFpDT01QX1BBUkFNX05PVF9TRVQ7XFxuLVxcdHBhcmFtcy1cXHUwMDNlZGljdF9zeiA9IDA7XFxuLVxcdHBhcmFtcy1cXHUwMDNlZGljdCA9IE5VTEw7XFxuLX1cXG4tXFxuIHN0YXRpYyBpbnQgY29tcF9wYXJhbXNfc3RvcmUoc3RydWN0IHpyYW0gKnpyYW0sIHUzMiBwcmlvLCBzMzIgbGV2ZWwsXFxuIFxcdFxcdFxcdCAgICAgY29uc3QgY2hhciAqZGljdF9wYXRoLFxcbiBcXHRcXHRcXHQgICAgIHN0cnVjdCBkZWZsYXRlX3BhcmFtcyAqZGVmbGF0ZV9wYXJhbXMpXFxuQEAgLTE3MDAsOCArMTcwMSwxMiBAQCBzdGF0aWMgaW50IGNvbXBfcGFyYW1zX3N0b3JlKHN0cnVjdCB6cmFtICp6cmFtLCB1MzIgcHJpbywgczMyIGxldmVsLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRJTlRfTUFYLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHROVUxMLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRSRUFESU5HX1BPTElDWSk7XFxuLVxcdFxcdGlmIChzeiBcXHUwMDNjIDApXFxuK1xcdFxcdGlmIChzeiBcXHUwMDNjPSAwKSB7XFxuK1xcdFxcdFxcdHByX2VycihcXFwiZmFpbGVkIHRvIGxvYWQgZGljdGlvbmFyeSAlcyAoZXJyPSV6ZClcXFxcblxcXCIsXFxuK1xcdFxcdFxcdCAgICAgICBkaWN0X3BhdGgsIHN6KTtcXG4rXFxuIFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHRcXHR9XFxuIFxcdH1cXG4gXFxuIFxcdHpyYW0tXFx1MDAzZXBhcmFtc1twcmlvXS5kaWN0X3N6ID0gc3o7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE5OjA2OjI1LjI5OTkyODMwNFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjYzMDQ2ODYwNDU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlpSQU1cIixcbiAgICBcIlpSQU1fQkFDS0VORF9MWjRcIixcbiAgICBcIlpSQU1fQkFDS0VORF9MWjRIQ1wiLFxuICAgIFwiWlJBTV9CQUNLRU5EX1pTVERcIixcbiAgICBcIlpSQU1fQkFDS0VORF9ERUZMQVRFXCIsXG4gICAgXCJaUkFNX0JBQ0tFTkRfODQyXCIsXG4gICAgXCJaUkFNX0JBQ0tFTkRfTFpPXCIsXG4gICAgXCJaUkFNX01VTFRJX0NPTVBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJhbGdvcml0aG1fcGFyYW1zX3N0b3JlXCIsXG4gICAgXCJjb21wX2FsZ29yaXRobV9zdG9yZVwiLFxuICAgIFwicmVjb21wX2FsZ29yaXRobV9zdG9yZVwiLFxuICAgIFwiZGlza3NpemVfc3RvcmVcIixcbiAgICBcInpjb21wX2NyZWF0ZVwiLFxuICAgIFwiY29tcF9wYXJhbXNfc3RvcmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHZhbGlkYXRpb24gZm9yIGNvbXByZXNzaW9uIHBhcmFtZXRlcnMgKGxpa2UgZGljdGlvbmFyeSBzaXplIGFuZCBjb21wcmVzc2lvbiBsZXZlbCkgaW4gdmFyaW91cyB6cmFtIGJhY2tlbmRzICg4NDIsIGRlZmxhdGUsIGx6NCwgbHo0aGMsIGx6bywgbHpvcmxlLCB6c3RkKS4gSXQgYWxzbyBtb2RpZmllcyB0aGUgc3lzZnMgaGFuZGxlcnMgZm9yIHpyYW0gY29tcHJlc3Npb24gYWxnb3JpdGhtcyB0byByZXNldCBwYXJhbWV0ZXJzIHdoZW4gdGhlIGFsZ29yaXRobSBpcyBjaGFuZ2VkLiBUaGVzZSBjaGFuZ2VzIGFmZmVjdCB0aGUgZnVuY3Rpb25hbCBsb2dpYyBvZiB6cmFtIGNvbmZpZ3VyYXRpb24gdmlhIHN5c2ZzLCB3aGljaCBpcyByZWFjaGFibGUgYW5kIGNhbiBiZSBmdXp6ZWQgYnkgc3l6a2FsbGVyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBkNTg0MDI4ZTg5ZjI0OTBlN2Y1Zjg1ZGY1MGU1MDdkMzQwYWI1ZmI5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMyAxOTowNjoyNCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kXzg0Mi5jIGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfODQyLmNcbmluZGV4IDEwZDlkNWM2MGY1MzEuLjkxYTIyMzEzZmU4MmEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF84NDIuY1xuKysrIGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfODQyLmNcbkBAIC0xMyw2ICsxMywxNCBAQCBzdGF0aWMgdm9pZCByZWxlYXNlX3BhcmFtc184NDIoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKVxuIFxuIHN0YXRpYyBpbnQgc2V0dXBfcGFyYW1zXzg0MihzdHJ1Y3QgemNvbXBfcGFyYW1zICpwYXJhbXMpXG4ge1xuK1x0aWYgKHBhcmFtcy1cdTAwM2VkaWN0X3N6KSB7XG4rXHRcdHByX2VycihcIjg0MjogZGljdGlvbmFyeSBpcyBub3Qgc3VwcG9ydGVkXFxuXCIpO1xuK1x0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4rXHR9XG4rXHRpZiAocGFyYW1zLVx1MDAzZWxldmVsICE9IFpDT01QX1BBUkFNX05PVF9TRVQpIHtcbitcdFx0cHJfZXJyKFwiODQyOiBjb21wcmVzc2lvbiBsZXZlbCBpcyBub3Qgc3VwcG9ydGVkXFxuXCIpO1xuK1x0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4rXHR9XG4gXHRyZXR1cm4gMDtcbiB9XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfZGVmbGF0ZS5jIGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfZGVmbGF0ZS5jXG5pbmRleCBiM2Y3ZDA4YjQ5ZDkzLi5iMjA3NGM0NGIyZDA0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfZGVmbGF0ZS5jXG4rKysgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9kZWZsYXRlLmNcbkBAIC0yMiw4ICsyMiwxOSBAQCBzdGF0aWMgdm9pZCBkZWZsYXRlX3JlbGVhc2VfcGFyYW1zKHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcylcbiBcbiBzdGF0aWMgaW50IGRlZmxhdGVfc2V0dXBfcGFyYW1zKHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcylcbiB7XG4rXHRpZiAocGFyYW1zLVx1MDAzZWRpY3Rfc3opIHtcbitcdFx0cHJfZXJyKFwiZGVmbGF0ZTogZGljdGlvbmFyeSBpcyBub3Qgc3VwcG9ydGVkXFxuXCIpO1xuK1x0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4rXHR9XG4rXG4gXHRpZiAocGFyYW1zLVx1MDAzZWxldmVsID09IFpDT01QX1BBUkFNX05PVF9TRVQpXG4gXHRcdHBhcmFtcy1cdTAwM2VsZXZlbCA9IFpfREVGQVVMVF9DT01QUkVTU0lPTjtcbitcdGVsc2UgaWYgKHBhcmFtcy1cdTAwM2VsZXZlbCBcdTAwM2MgWl9ERUZBVUxUX0NPTVBSRVNTSU9OIHx8XG4rXHRcdCBwYXJhbXMtXHUwMDNlbGV2ZWwgXHUwMDNlIFpfQkVTVF9DT01QUkVTU0lPTikge1xuK1x0XHRwcl9lcnIoXCJkZWZsYXRlOiBpbnZhbGlkIGNvbXByZXNzaW9uIGxldmVsICVkXFxuXCIsIHBhcmFtcy1cdTAwM2VsZXZlbCk7XG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1x0fVxuK1xuIFx0aWYgKHBhcmFtcy1cdTAwM2VkZWZsYXRlLndpbmJpdHMgPT0gWkNPTVBfUEFSQU1fTk9UX1NFVCkge1xuIFx0XHRwYXJhbXMtXHUwMDNlZGVmbGF0ZS53aW5iaXRzID0gREVGTEFURV9ERUZfV0lOQklUUztcbiBcdH0gZWxzZSB7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHo0LmMgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sejQuY1xuaW5kZXggYzQ0OWQ1MTFiYTg2Zi4uZjRmNTExMTIyMGM3OSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6NC5jXG4rKysgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sejQuY1xuQEAgLTMwLDYgKzMwLDEwIEBAIHN0YXRpYyBpbnQgbHo0X3NldHVwX3BhcmFtcyhzdHJ1Y3QgemNvbXBfcGFyYW1zICpwYXJhbXMpXG4gXG4gXHRpZiAocGFyYW1zLVx1MDAzZWxldmVsID09IFpDT01QX1BBUkFNX05PVF9TRVQpXG4gXHRcdHBhcmFtcy1cdTAwM2VsZXZlbCA9IExaNF9BQ0NFTEVSQVRJT05fREVGQVVMVDtcbitcdGVsc2UgaWYgKHBhcmFtcy1cdTAwM2VsZXZlbCBcdTAwM2MgTFo0X0FDQ0VMRVJBVElPTl9ERUZBVUxUKSB7XG4rXHRcdHByX2VycihcImx6NDogaW52YWxpZCBjb21wcmVzc2lvbiBsZXZlbCAlZFxcblwiLCBwYXJhbXMtXHUwMDNlbGV2ZWwpO1xuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcdH1cbiBcbiBcdGlmICghcGFyYW1zLVx1MDAzZWRpY3QgfHwgIXBhcmFtcy1cdTAwM2VkaWN0X3N6KVxuIFx0XHRyZXR1cm4gMDtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sejRoYy5jIGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHo0aGMuY1xuaW5kZXggZjZhMzM2YWNmZTIwMi4uZDdjZDk3Yjg5OGJkNSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6NGhjLmNcbisrKyBiL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6NGhjLmNcbkBAIC0yMCw2ICsyMCwxMCBAQCBzdGF0aWMgaW50IGx6NGhjX3NldHVwX3BhcmFtcyhzdHJ1Y3QgemNvbXBfcGFyYW1zICpwYXJhbXMpXG4ge1xuIFx0aWYgKHBhcmFtcy1cdTAwM2VsZXZlbCA9PSBaQ09NUF9QQVJBTV9OT1RfU0VUKVxuIFx0XHRwYXJhbXMtXHUwMDNlbGV2ZWwgPSBMWjRIQ19ERUZBVUxUX0NMRVZFTDtcbitcdGVsc2UgaWYgKHBhcmFtcy1cdTAwM2VsZXZlbCBcdTAwM2MgMSB8fCBwYXJhbXMtXHUwMDNlbGV2ZWwgXHUwMDNlIExaNEhDX01BWF9DTEVWRUwpIHtcbitcdFx0cHJfZXJyKFwibHo0aGM6IGludmFsaWQgY29tcHJlc3Npb24gbGV2ZWwgJWRcXG5cIiwgcGFyYW1zLVx1MDAzZWxldmVsKTtcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHR9XG4gXG4gXHRyZXR1cm4gMDtcbiB9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvLmMgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sem8uY1xuaW5kZXggNGM5MDZiZWFhZTZiMy4uY2RiYjg5YWFhMGRlZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6by5jXG4rKysgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sem8uY1xuQEAgLTEyLDYgKzEyLDE0IEBAIHN0YXRpYyB2b2lkIGx6b19yZWxlYXNlX3BhcmFtcyhzdHJ1Y3QgemNvbXBfcGFyYW1zICpwYXJhbXMpXG4gXG4gc3RhdGljIGludCBsem9fc2V0dXBfcGFyYW1zKHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcylcbiB7XG4rXHRpZiAocGFyYW1zLVx1MDAzZWRpY3Rfc3opIHtcbitcdFx0cHJfZXJyKFwibHpvOiBkaWN0aW9uYXJ5IGlzIG5vdCBzdXBwb3J0ZWRcXG5cIik7XG4rXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbitcdH1cbitcdGlmIChwYXJhbXMtXHUwMDNlbGV2ZWwgIT0gWkNPTVBfUEFSQU1fTk9UX1NFVCkge1xuK1x0XHRwcl9lcnIoXCJsem86IGNvbXByZXNzaW9uIGxldmVsIGlzIG5vdCBzdXBwb3J0ZWRcXG5cIik7XG4rXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbitcdH1cbiBcdHJldHVybiAwO1xuIH1cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sem9ybGUuYyBiL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6b3JsZS5jXG5pbmRleCAxMDY0MGM5NmNiZmNhLi41OGY3ZGRmNWE1NWY1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvcmxlLmNcbisrKyBiL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6b3JsZS5jXG5AQCAtMTIsNiArMTIsMTQgQEAgc3RhdGljIHZvaWQgbHpvcmxlX3JlbGVhc2VfcGFyYW1zKHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcylcbiBcbiBzdGF0aWMgaW50IGx6b3JsZV9zZXR1cF9wYXJhbXMoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKVxuIHtcbitcdGlmIChwYXJhbXMtXHUwMDNlZGljdF9zeikge1xuK1x0XHRwcl9lcnIoXCJsem8tcmxlOiBkaWN0aW9uYXJ5IGlzIG5vdCBzdXBwb3J0ZWRcXG5cIik7XG4rXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbitcdH1cbitcdGlmIChwYXJhbXMtXHUwMDNlbGV2ZWwgIT0gWkNPTVBfUEFSQU1fTk9UX1NFVCkge1xuK1x0XHRwcl9lcnIoXCJsem8tcmxlOiBjb21wcmVzc2lvbiBsZXZlbCBpcyBub3Qgc3VwcG9ydGVkXFxuXCIpO1xuK1x0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4rXHR9XG4gXHRyZXR1cm4gMDtcbiB9XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jIGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jXG5pbmRleCBkMDBiNTQ4MDU2ZGMyLi5lMDcxZmE1ODRmNmIwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jXG4rKysgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF96c3RkLmNcbkBAIC02MCw2ICs2MCwxMSBAQCBzdGF0aWMgaW50IHpzdGRfc2V0dXBfcGFyYW1zKHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcylcbiBcdHBhcmFtcy1cdTAwM2VkcnZfZGF0YSA9IHpwO1xuIFx0aWYgKHBhcmFtcy1cdTAwM2VsZXZlbCA9PSBaQ09NUF9QQVJBTV9OT1RfU0VUKVxuIFx0XHRwYXJhbXMtXHUwMDNlbGV2ZWwgPSB6c3RkX2RlZmF1bHRfY2xldmVsKCk7XG4rXHRlbHNlIGlmIChwYXJhbXMtXHUwMDNlbGV2ZWwgXHUwMDNjIHpzdGRfbWluX2NsZXZlbCgpIHx8XG4rXHRcdCBwYXJhbXMtXHUwMDNlbGV2ZWwgXHUwMDNlIHpzdGRfbWF4X2NsZXZlbCgpKSB7XG4rXHRcdHByX2VycihcInpzdGQ6IGludmFsaWQgY29tcHJlc3Npb24gbGV2ZWwgJWRcXG5cIiwgcGFyYW1zLVx1MDAzZWxldmVsKTtcbitcdFx0Z290byBlcnJvcjtcbitcdH1cbiBcbiBcdHpwLVx1MDAzZWNwcm0gPSB6c3RkX2dldF9wYXJhbXMocGFyYW1zLVx1MDAzZWxldmVsLCBQQUdFX1NJWkUpO1xuIFxuQEAgLTg1LDcgKzkwLDYgQEAgc3RhdGljIGludCB6c3RkX3NldHVwX3BhcmFtcyhzdHJ1Y3QgemNvbXBfcGFyYW1zICpwYXJhbXMpXG4gXHRyZXR1cm4gMDtcbiBcbiBlcnJvcjpcbi1cdHpzdGRfcmVsZWFzZV9wYXJhbXMocGFyYW1zKTtcbiBcdHJldHVybiAtRUlOVkFMO1xuIH1cbiBcbkBAIC0xNjEsNyArMTY1LDYgQEAgc3RhdGljIGludCB6c3RkX2NyZWF0ZShzdHJ1Y3QgemNvbXBfcGFyYW1zICpwYXJhbXMsIHN0cnVjdCB6Y29tcF9jdHggKmN0eClcbiBcdHJldHVybiAwO1xuIFxuIGVycm9yOlxuLVx0enN0ZF9yZWxlYXNlX3BhcmFtcyhwYXJhbXMpO1xuIFx0enN0ZF9kZXN0cm95KGN0eCk7XG4gXHRyZXR1cm4gLUVJTlZBTDtcbiB9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMgYi9kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuY1xuaW5kZXggY2ZhOTg4NDZhYzQ4NC4uY2M5NmIxOGJmNjQ3YyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jXG4rKysgYi9kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuY1xuQEAgLTE2NTIsNiArMTY1MiwxNyBAQCBzdGF0aWMgdm9pZCBjb21wX2FsZ29yaXRobV9zZXQoc3RydWN0IHpyYW0gKnpyYW0sIHUzMiBwcmlvLCBjb25zdCBjaGFyICphbGcpXG4gXHR6cmFtLVx1MDAzZWNvbXBfYWxnc1twcmlvXSA9IGFsZztcbiB9XG4gXG4rc3RhdGljIHZvaWQgY29tcF9wYXJhbXNfcmVzZXQoc3RydWN0IHpyYW0gKnpyYW0sIHUzMiBwcmlvKVxuK3tcbitcdHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcyA9IFx1MDAyNnpyYW0tXHUwMDNlcGFyYW1zW3ByaW9dO1xuK1xuK1x0dmZyZWUocGFyYW1zLVx1MDAzZWRpY3QpO1xuK1x0cGFyYW1zLVx1MDAzZWxldmVsID0gWkNPTVBfUEFSQU1fTk9UX1NFVDtcbitcdHBhcmFtcy1cdTAwM2VkZWZsYXRlLndpbmJpdHMgPSBaQ09NUF9QQVJBTV9OT1RfU0VUO1xuK1x0cGFyYW1zLVx1MDAzZWRpY3Rfc3ogPSAwO1xuK1x0cGFyYW1zLVx1MDAzZWRpY3QgPSBOVUxMO1xuK31cbitcbiBzdGF0aWMgaW50IF9fY29tcF9hbGdvcml0aG1fc3RvcmUoc3RydWN0IHpyYW0gKnpyYW0sIHUzMiBwcmlvLCBjb25zdCBjaGFyICpidWYpXG4ge1xuIFx0Y29uc3QgY2hhciAqYWxnO1xuQEAgLTE2NzIsMjAgKzE2ODMsMTAgQEAgc3RhdGljIGludCBfX2NvbXBfYWxnb3JpdGhtX3N0b3JlKHN0cnVjdCB6cmFtICp6cmFtLCB1MzIgcHJpbywgY29uc3QgY2hhciAqYnVmKVxuIFx0fVxuIFxuIFx0Y29tcF9hbGdvcml0aG1fc2V0KHpyYW0sIHByaW8sIGFsZyk7XG4rXHRjb21wX3BhcmFtc19yZXNldCh6cmFtLCBwcmlvKTtcbiBcdHJldHVybiAwO1xuIH1cbiBcbi1zdGF0aWMgdm9pZCBjb21wX3BhcmFtc19yZXNldChzdHJ1Y3QgenJhbSAqenJhbSwgdTMyIHByaW8pXG4te1xuLVx0c3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zID0gXHUwMDI2enJhbS1cdTAwM2VwYXJhbXNbcHJpb107XG4tXG4tXHR2ZnJlZShwYXJhbXMtXHUwMDNlZGljdCk7XG4tXHRwYXJhbXMtXHUwMDNlbGV2ZWwgPSBaQ09NUF9QQVJBTV9OT1RfU0VUO1xuLVx0cGFyYW1zLVx1MDAzZWRlZmxhdGUud2luYml0cyA9IFpDT01QX1BBUkFNX05PVF9TRVQ7XG4tXHRwYXJhbXMtXHUwMDNlZGljdF9zeiA9IDA7XG4tXHRwYXJhbXMtXHUwMDNlZGljdCA9IE5VTEw7XG4tfVxuLVxuIHN0YXRpYyBpbnQgY29tcF9wYXJhbXNfc3RvcmUoc3RydWN0IHpyYW0gKnpyYW0sIHUzMiBwcmlvLCBzMzIgbGV2ZWwsXG4gXHRcdFx0ICAgICBjb25zdCBjaGFyICpkaWN0X3BhdGgsXG4gXHRcdFx0ICAgICBzdHJ1Y3QgZGVmbGF0ZV9wYXJhbXMgKmRlZmxhdGVfcGFyYW1zKVxuQEAgLTE3MDAsOCArMTcwMSwxMiBAQCBzdGF0aWMgaW50IGNvbXBfcGFyYW1zX3N0b3JlKHN0cnVjdCB6cmFtICp6cmFtLCB1MzIgcHJpbywgczMyIGxldmVsLFxuIFx0XHRcdFx0XHRcdElOVF9NQVgsXG4gXHRcdFx0XHRcdFx0TlVMTCxcbiBcdFx0XHRcdFx0XHRSRUFESU5HX1BPTElDWSk7XG4tXHRcdGlmIChzeiBcdTAwM2MgMClcbitcdFx0aWYgKHN6IFx1MDAzYz0gMCkge1xuK1x0XHRcdHByX2VycihcImZhaWxlZCB0byBsb2FkIGRpY3Rpb25hcnkgJXMgKGVycj0lemQpXFxuXCIsXG4rXHRcdFx0ICAgICAgIGRpY3RfcGF0aCwgc3opO1xuK1xuIFx0XHRcdHJldHVybiAtRUlOVkFMO1xuK1x0XHR9XG4gXHR9XG4gXG4gXHR6cmFtLVx1MDAzZXBhcmFtc1twcmlvXS5kaWN0X3N6ID0gc3o7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxOTowNjoyNS4yOTk5Mjk5MTVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MzU3OTY1MjQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgWlJBTSBQYXRjaCBTZXJpZXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHNlcmllcyB0aGF0IHR3ZWFrcyB0aGUgYGRyaXZlcnMvYmxvY2svenJhbS9gIGNvZGUuIEZyb20gd2hhdCBJIGNhbiBzZWUsIGl0J3MgYWxsIGFib3V0IGJvbHN0ZXJpbmcgdGhlIGNvbXByZXNzaW9uIHBhcmFtZXRlciB2YWxpZGF0aW9uIGFjcm9zcyB0aGUgdmFyaW91cyB6cmFtIGJhY2tlbmRzIOKAkyA4NDIsIGRlZmxhdGUsIGx6NCwgbHo0aGMsIGx6bywgbHpvcmxlLCBhbmQgenN0ZC4gR29vZCwgd2UgbmVlZCByb2J1c3QgdmFsaWRhdGlvbi4gSXQgYWxzbyBsb29rcyBsaWtlIHRoZXJlIGhhdmUgYmVlbiBzb21lIHVwZGF0ZXMgdG8gYGNvbXBfcGFyYW1zX3Jlc2V0YCBhbmQgYF9fY29tcF9hbGdvcml0aG1fc3RvcmVgIGluIGB6cmFtX2Rydi5jYCwgZW5zdXJpbmcgdGhhdCB0aGVzZSBwYXJhbWV0ZXJzIGdldCByZXNldCBjb3JyZWN0bHkgd2hlbiB0aGUgY29tcHJlc3Npb24gYWxnb3JpdGhtIGlzIHN3aXRjaGVkLiBQbHVzLCB0aGVyZSdzIGEgbmljZSBhZGRpdGlvbiBvZiBhbiBlcnJvciBsb2cgaWYgZGljdGlvbmFyeSBsb2FkaW5nIGZhaWxzLCBhbmQgYSBjb3JyZWN0aW9uIGZvciBhIGNvbXBhcmlzb246IG5vdyBjaGVja2luZyBmb3IgYHN6IFx1MDAzYz0gMGAgaW5zdGVhZCBvZiBqdXN0IGBzeiBcdTAwM2MgMGAuXG5cblRoZSBrZXkgcXVlc3Rpb24gaXMsIGFyZSB0aGVzZSBjaGFuZ2VzIGFjdHVhbGx5ICpyZWFjaGFibGUqPyBBbmQsIGFyZSB0aGV5IGV2ZW4gd29ydGggdGhlIGVmZm9ydCB0byBmdXp6PyBacmFtIGlzIGEgYmxvY2sgZGV2aWNlLCBhbmQgZnJvbSBteSBleHBlcmllbmNlLCBJIGtub3cgaXQncyBjb25maWd1cmVkIHZpYSBzeXNmcywgcmlnaHQ/IFdoaWNoLCBJIGFsc28ga25vdywgaXMgcGVyZmVjdCBmb3Igc3l6a2FsbGVyLCBzbyB0aGlzIGxvb2tzIHByb21pc2luZyEgSSBuZWVkIHRvIHF1aWNrbHkgaWRlbnRpZnkgdGhlIHJlbGV2YW50IHN5c2ZzIGhhbmRsZXJzIGZvciB6cmFtLiBUaGF0J3MgdGhlIGZpcnN0IHN0ZXAgaW4gZGV0ZXJtaW5pbmcgaG93IGVhc2lseSB3ZSBjYW4gdHJpZ2dlciB0aGVzZSBuZXcgdmFsaWRhdGlvbiBjaGVja3MgYW5kIGNvZGUgcGF0aHMuIExldCdzIHNlZSBpZiB3ZSBjYW4gZ2V0IHNvbWUgZ29vZCBjb3ZlcmFnZSBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjUwLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTkwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTk6MDY6MzAuNjU3ODk4MzMxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4MzYwMTM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9fY29tcF9hbGdvcml0aG1fc3RvcmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ibG9jay96cmFtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0xNjU1PXN0YXRpYyB2b2lkIGNvbXBfcGFyYW1zX3Jlc2V0KHN0cnVjdCB6cmFtICp6cmFtLCB1MzIgcHJpbylcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTE2NjUtXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MTY2NjpzdGF0aWMgaW50IF9fY29tcF9hbGdvcml0aG1fc3RvcmUoc3RydWN0IHpyYW0gKnpyYW0sIHUzMiBwcmlvLCBjb25zdCBjaGFyICpidWYpXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMTY2Ny17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0xODA5PXN0YXRpYyBzc2l6ZV90IGNvbXBfYWxnb3JpdGhtX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTE4MTYtXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MTgxNzpcXHRyZXQgPSBfX2NvbXBfYWxnb3JpdGhtX3N0b3JlKHpyYW0sIFpSQU1fUFJJTUFSWV9DT01QLCBidWYpO1xcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTE4MTgtXFx0cmV0dXJuIHJldCA/IHJldCA6IGxlbjtcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jPTE4NDE9c3RhdGljIHNzaXplX3QgcmVjb21wX2FsZ29yaXRobV9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0xODc3LVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjE4Nzg6XFx0cmV0ID0gX19jb21wX2FsZ29yaXRobV9zdG9yZSh6cmFtLCBwcmlvLCBhbGcpO1xcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTE4NzktXFx0cmV0dXJuIHJldCA/IHJldCA6IGxlbjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTk6MDY6MzAuNzA2MjY1NzlaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODUwODM3NjMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZyb20gbXkgcGVyc3BlY3RpdmU6XG5cbioqRGVlcCBEaXZlIGludG8gQWxnb3JpdGhtIFN0b3JhZ2UqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGludGVybmFsIGZsb3cgc3RhcnRzIHdpdGggYF9fY29tcF9hbGdvcml0aG1fc3RvcmVgIGFuZCBpdCdzIGJlaW5nIGNhbGxlZCBmcm9tIGJvdGggYGNvbXBfYWxnb3JpdGhtX3N0b3JlYCBhbmQgYHJlY29tcF9hbGdvcml0aG1fc3RvcmVgLiBUaGF0J3MgdGhlIGNvcmUuIE15IGluc3RpbmN0IHRlbGxzIG1lIHRvIGltbWVkaWF0ZWx5IGludmVzdGlnYXRlIHRoZSBgY29tcF9wYXJhbXNfc3RvcmVgLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhlIHBhcmFtZXRlcnMgYXJlIGJlaW5nIGhhbmRsZWQsIHN0b3JlZCwgYW5kIHBvdGVudGlhbGx5IGluZmx1ZW5jaW5nIHRoaXMgZW50aXJlIHN0b3JhZ2UgcHJvY2VzcyBmb3IgYWxnb3JpdGhtcy4gVGhpcyBmZWVscyBsaWtlIGEgY3JpdGljYWwgbm9kZSB0byB1bmRlcnN0YW5kIHRoZSBmdWxsIHBpY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1NjgsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxOTowNjozNC41NTcxMDU5OFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODU1NzIyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb21wX3BhcmFtc19zdG9yZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL3pyYW0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jPTE2NjY9c3RhdGljIGludCBfX2NvbXBfYWxnb3JpdGhtX3N0b3JlKHN0cnVjdCB6cmFtICp6cmFtLCB1MzIgcHJpbywgY29uc3QgY2hhciAqYnVmKVxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMTY4OS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzoxNjkwOnN0YXRpYyBpbnQgY29tcF9wYXJhbXNfc3RvcmUoc3RydWN0IHpyYW0gKnpyYW0sIHUzMiBwcmlvLCBzMzIgbGV2ZWwsXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMTY5MS1cXHRcXHRcXHQgICAgIGNvbnN0IGNoYXIgKmRpY3RfcGF0aCxcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jPTE3MTg9c3RhdGljIHNzaXplX3QgYWxnb3JpdGhtX3BhcmFtc19zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0xNzkyLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjE3OTM6XFx0cmV0ID0gY29tcF9wYXJhbXNfc3RvcmUoenJhbSwgcHJpbywgbGV2ZWwsIGRpY3RfcGF0aCwgXFx1MDAyNmRlZmxhdGVfcGFyYW1zKTtcXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0xNzk0LVxcdHJldHVybiByZXQgPyByZXQgOiBsZW47XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE5OjA2OjM0LjYwNTY3NjgzWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjM2ODU0NjY0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyBBbGdvcml0aG0gUGFyYW1ldGVyIEhhbmRsaW5nKipcblxuUmlnaHQsIHNvIGBhbGdvcml0aG1fcGFyYW1zX3N0b3JlYCBpcyB0aGUgc3lzZnMgaGFuZGxlciBmb3IgYGFsZ29yaXRobV9wYXJhbXNgLiBUaGF0IG1ha2VzIHNlbnNlOyBpdCdzIHRoZSBpbnRlcmZhY2UgZm9yIGV4dGVybmFsIGNvbmZpZ3VyYXRpb24uIE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRob3NlIHBhcmFtZXRlcnMgYXJlIGFjdHVhbGx5ICp1c2VkKi4gSSBzaG91bGQgcmVhbGx5IGRpZyBpbnRvIHRoZSBpbml0aWFsaXphdGlvbiBwcm9jZXNzIG9mIHpjb21wLiBMZXQncyBzZWUuLi4gKnpzdGRfc2V0dXBfcGFyYW1zKiBhbmQgaXRzIGlsayBhcmUgY2FsbGVkIGR1cmluZyB6Y29tcCBpbml0aWFsaXphdGlvbi4gVGhvc2UgZnVuY3Rpb25zIGFyZSBnb2luZyB0byBiZSBrZXksIEkgYmV0LiBJIG5lZWQgdG8gdHJhY2UgdGhlIGZsb3cgZnJvbSBzeXNmcyBpbnB1dCB0aHJvdWdoIHRvIHRoZSBhcHBsaWNhdGlvbiBvZiB0aGUgY29tcHJlc3Npb24vZGVjb21wcmVzc2lvbiBhbGdvcml0aG0gcGFyYW1ldGVycy4gVW5kZXJzdGFuZGluZyB0aGUgZGVwZW5kZW5jaWVzIHdpbGwgcmVhbGx5IGltcHJvdmUgbXkgZGVidWdnaW5nIHNraWxscy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjA1OSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE5OjA2OjQwLjk3NDIyNjY5MVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MjM2OTU0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ6c3RkX3NldHVwX3BhcmFtc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL3pyYW0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX3pzdGQuYz0zOD1zdGF0aWMgdm9pZCB6c3RkX3JlbGVhc2VfcGFyYW1zKHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcylcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX3pzdGQuYy01MC1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF96c3RkLmM6NTE6c3RhdGljIGludCB6c3RkX3NldHVwX3BhcmFtcyhzdHJ1Y3QgemNvbXBfcGFyYW1zICpwYXJhbXMpXFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jLTUyLXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX3pzdGQuYz0yMTI9Y29uc3Qgc3RydWN0IHpjb21wX29wcyBiYWNrZW5kX3pzdGQgPSB7XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF96c3RkLmMtMjE2LVxcdC5kZXN0cm95X2N0eFxcdD0genN0ZF9kZXN0cm95LFxcbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX3pzdGQuYzoyMTc6XFx0LnNldHVwX3BhcmFtc1xcdD0genN0ZF9zZXR1cF9wYXJhbXMsXFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jLTIxOC1cXHQucmVsZWFzZV9wYXJhbXNcXHQ9IHpzdGRfcmVsZWFzZV9wYXJhbXMsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE5OjA2OjQxLjAyNjYwMjU1WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE3Nzk4MTM2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKkRpZ2dpbmcgaW50byB0aGUgQ29tcHJlc3Npb24gQ29udGV4dCoqXG5cbk9rYXksIHNvIGBzZXR1cF9wYXJhbXNgIGdldHMgdHJpZ2dlcmVkIHdoZW5ldmVyIGEgY29tcHJlc3Npb24gY29udGV4dCBpcyBzcHVuIHVwLCByaWdodD8gVGhhdCdzIHRoZSBrZXkuIFRoYXQgdGVsbHMgbWUgYSBsb3QgYWJvdXQgaXRzIHBvdGVudGlhbCBpbXBhY3QuIExldCBtZSBzZWUuLi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlcmUgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aGluIHRoZSBjb2RlYmFzZS4gSXQncyB0aW1lIHRvIHRyYWNlIHRoZSBleGVjdXRpb24gcGF0aC4gVGhpcyBraW5kIG9mIHNldHVwIGZ1bmN0aW9uIGlzIHVzdWFsbHkgY3JpdGljYWwgZm9yIGluaXRpYWwgY29uZmlndXJhdGlvbiwgcmVzb3VyY2UgYWxsb2NhdGlvbiwgb3IgcGFyYW1ldGVyIHZhbGlkYXRpb24gZm9yIHRoZSBjb21wcmVzc2lvbiBwcm9jZXNzLiBVbmRlcnN0YW5kaW5nIHRoZSBjYWxsIHNpdGVzIG9mIGBzZXR1cF9wYXJhbXNgIGlzIGNydWNpYWwgZm9yIGRlYnVnZ2luZywgcGVyZm9ybWFuY2UgYW5hbHlzaXMsIG9yIGFueSBtb2RpZmljYXRpb24gb2YgY29tcHJlc3Npb24gcGFyYW1ldGVycy4gTGV0J3Mgc2VlIHdoZXJlIHRoaXMgaXMgdXNlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjU0MywiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE5OjA2OjQ0LjIwNDU4NzA1WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODQzMDM4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZXR1cF9wYXJhbXNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ibG9jay96cmFtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF84NDIuYz0xMD1zdGF0aWMgdm9pZCByZWxlYXNlX3BhcmFtc184NDIoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKVxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfODQyLmMtMTMtXFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfODQyLmM6MTQ6c3RhdGljIGludCBzZXR1cF9wYXJhbXNfODQyKHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcylcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF84NDIuYy0xNS17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF84NDIuYz02MT1jb25zdCBzdHJ1Y3QgemNvbXBfb3BzIGJhY2tlbmRfODQyID0ge1xcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfODQyLmMtNjUtXFx0LmRlc3Ryb3lfY3R4XFx0PSBkZXN0cm95Xzg0MixcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF84NDIuYzo2NjpcXHQuc2V0dXBfcGFyYW1zXFx0PSBzZXR1cF9wYXJhbXNfODQyLFxcbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kXzg0Mi5jLTY3LVxcdC5yZWxlYXNlX3BhcmFtc1xcdD0gcmVsZWFzZV9wYXJhbXNfODQyLFxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfZGVmbGF0ZS5jPTE5PXN0YXRpYyB2b2lkIGRlZmxhdGVfcmVsZWFzZV9wYXJhbXMoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKVxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfZGVmbGF0ZS5jLTIyLVxcbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2RlZmxhdGUuYzoyMzpzdGF0aWMgaW50IGRlZmxhdGVfc2V0dXBfcGFyYW1zKHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcylcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9kZWZsYXRlLmMtMjQte1xcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfZGVmbGF0ZS5jPTE1OT1jb25zdCBzdHJ1Y3QgemNvbXBfb3BzIGJhY2tlbmRfZGVmbGF0ZSA9IHtcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2RlZmxhdGUuYy0xNjMtXFx0LmRlc3Ryb3lfY3R4XFx0PSBkZWZsYXRlX2Rlc3Ryb3ksXFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfZGVmbGF0ZS5jOjE2NDpcXHQuc2V0dXBfcGFyYW1zXFx0PSBkZWZsYXRlX3NldHVwX3BhcmFtcyxcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9kZWZsYXRlLmMtMTY1LVxcdC5yZWxlYXNlX3BhcmFtc1xcdD0gZGVmbGF0ZV9yZWxlYXNlX3BhcmFtcyxcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6NC5jPTE1PXN0YXRpYyB2b2lkIGx6NF9yZWxlYXNlX3BhcmFtcyhzdHJ1Y3QgemNvbXBfcGFyYW1zICpwYXJhbXMpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sejQuYy0yNS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sejQuYzoyNjpzdGF0aWMgaW50IGx6NF9zZXR1cF9wYXJhbXMoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKVxcbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6NC5jLTI3LXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6NC5jPTE0Nj1jb25zdCBzdHJ1Y3QgemNvbXBfb3BzIGJhY2tlbmRfbHo0ID0ge1xcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHo0LmMtMTUwLVxcdC5kZXN0cm95X2N0eFxcdD0gbHo0X2Rlc3Ryb3ksXFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHo0LmM6MTUxOlxcdC5zZXR1cF9wYXJhbXNcXHQ9IGx6NF9zZXR1cF9wYXJhbXMsXFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHo0LmMtMTUyLVxcdC5yZWxlYXNlX3BhcmFtc1xcdD0gbHo0X3JlbGVhc2VfcGFyYW1zLFxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHo0aGMuYz0xNT1zdGF0aWMgdm9pZCBsejRoY19yZWxlYXNlX3BhcmFtcyhzdHJ1Y3QgemNvbXBfcGFyYW1zICpwYXJhbXMpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sejRoYy5jLTE4LVxcbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6NGhjLmM6MTk6c3RhdGljIGludCBsejRoY19zZXR1cF9wYXJhbXMoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKVxcbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6NGhjLmMtMjAte1xcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHo0aGMuYz0xMjQ9Y29uc3Qgc3RydWN0IHpjb21wX29wcyBiYWNrZW5kX2x6NGhjID0ge1xcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHo0aGMuYy0xMjgtXFx0LmRlc3Ryb3lfY3R4XFx0PSBsejRoY19kZXN0cm95LFxcbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6NGhjLmM6MTI5OlxcdC5zZXR1cF9wYXJhbXNcXHQ9IGx6NGhjX3NldHVwX3BhcmFtcyxcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sejRoYy5jLTEzMC1cXHQucmVsZWFzZV9wYXJhbXNcXHQ9IGx6NGhjX3JlbGVhc2VfcGFyYW1zLFxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvLmM9OT1zdGF0aWMgdm9pZCBsem9fcmVsZWFzZV9wYXJhbXMoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKVxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvLmMtMTItXFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvLmM6MTM6c3RhdGljIGludCBsem9fc2V0dXBfcGFyYW1zKHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcylcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sem8uYy0xNC17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sem8uYz01OT1jb25zdCBzdHJ1Y3QgemNvbXBfb3BzIGJhY2tlbmRfbHpvID0ge1xcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvLmMtNjMtXFx0LmRlc3Ryb3lfY3R4XFx0PSBsem9fZGVzdHJveSxcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sem8uYzo2NDpcXHQuc2V0dXBfcGFyYW1zXFx0PSBsem9fc2V0dXBfcGFyYW1zLFxcbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6by5jLTY1LVxcdC5yZWxlYXNlX3BhcmFtc1xcdD0gbHpvX3JlbGVhc2VfcGFyYW1zLFxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvcmxlLmM9OT1zdGF0aWMgdm9pZCBsem9ybGVfcmVsZWFzZV9wYXJhbXMoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKVxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvcmxlLmMtMTItXFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvcmxlLmM6MTM6c3RhdGljIGludCBsem9ybGVfc2V0dXBfcGFyYW1zKHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcylcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sem9ybGUuYy0xNC17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sem9ybGUuYz01OT1jb25zdCBzdHJ1Y3QgemNvbXBfb3BzIGJhY2tlbmRfbHpvcmxlID0ge1xcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvcmxlLmMtNjMtXFx0LmRlc3Ryb3lfY3R4XFx0PSBsem9ybGVfZGVzdHJveSxcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sem9ybGUuYzo2NDpcXHQuc2V0dXBfcGFyYW1zXFx0PSBsem9ybGVfc2V0dXBfcGFyYW1zLFxcbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6b3JsZS5jLTY1LVxcdC5yZWxlYXNlX3BhcmFtc1xcdD0gbHpvcmxlX3JlbGVhc2VfcGFyYW1zLFxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jPTM4PXN0YXRpYyB2b2lkIHpzdGRfcmVsZWFzZV9wYXJhbXMoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKVxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jLTUwLVxcbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX3pzdGQuYzo1MTpzdGF0aWMgaW50IHpzdGRfc2V0dXBfcGFyYW1zKHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcylcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF96c3RkLmMtNTIte1xcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jPTIxMj1jb25zdCBzdHJ1Y3QgemNvbXBfb3BzIGJhY2tlbmRfenN0ZCA9IHtcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX3pzdGQuYy0yMTYtXFx0LmRlc3Ryb3lfY3R4XFx0PSB6c3RkX2Rlc3Ryb3ksXFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jOjIxNzpcXHQuc2V0dXBfcGFyYW1zXFx0PSB6c3RkX3NldHVwX3BhcmFtcyxcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF96c3RkLmMtMjE4LVxcdC5yZWxlYXNlX3BhcmFtc1xcdD0genN0ZF9yZWxlYXNlX3BhcmFtcyxcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96Y29tcC5jPTE5Nz1zdGF0aWMgaW50IHpjb21wX2luaXQoc3RydWN0IHpjb21wICpjb21wLCBzdHJ1Y3QgemNvbXBfcGFyYW1zICpwYXJhbXMpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuYy0yMDUtXFx0Y29tcC1cXHUwMDNlcGFyYW1zID0gcGFyYW1zO1xcbmRyaXZlcnMvYmxvY2svenJhbS96Y29tcC5jOjIwNjpcXHRyZXQgPSBjb21wLVxcdTAwM2VvcHMtXFx1MDAzZXNldHVwX3BhcmFtcyhjb21wLVxcdTAwM2VwYXJhbXMpO1xcbmRyaXZlcnMvYmxvY2svenJhbS96Y29tcC5jLTIwNy1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL3pjb21wLmg9NTc9c3RydWN0IHpjb21wX29wcyB7XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuaC02NS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuaDo2NjpcXHRpbnQgKCpzZXR1cF9wYXJhbXMpKHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcyk7XFxuZHJpdmVycy9ibG9jay96cmFtL3pjb21wLmgtNjctXFx0dm9pZCAoKnJlbGVhc2VfcGFyYW1zKShzdHJ1Y3QgemNvbXBfcGFyYW1zICpwYXJhbXMpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxOTowNjo0NC4yNTMwMjQ0NjlaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUzMTYwMzE2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6XG5cbioqVHJhY2luZyB0aGUgSW5pdGlhbGl6YXRpb24gU2VxdWVuY2UqKlxuXG5Pa2F5LCBzbyBgemNvbXBfaW5pdGAgaXMgdGhlIGZ1bmN0aW9uIHRoYXQga2lja3MgdGhpbmdzIG9mZi4gTXkgZmlyc3QgaW5zdGluY3QsIGFzIGFsd2F5cywgaXMgdG8gZm9sbG93IHRoZSBmbG93LiBJIHNlZSBpdCBjYWxscyBgc2V0dXBfcGFyYW1zYC4gVGhhdCdzIHRoZSBleHBlY3RlZCBvcmRlciwgaW5pdGlhbGl6ZXMgcGFyYW1ldGVycyBmaXJzdC4gTm93LCB0aGUgcmVhbCBxdWVzdGlvbiBpcywgd2hlcmUgZG9lcyBgemNvbXBfaW5pdGAgZ2V0IGNhbGxlZCAqZnJvbSo/IFRoYXQncyB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlIGFuZCBob3cgdGhpcyBjb21wb25lbnQgZml0cyBpbnRvIHRoZSBiaWdnZXIgcGljdHVyZS4gVGltZSB0byB0cmFjayBkb3duIHRoZSBjYWxsIHNpdGVzIGZvciBgemNvbXBfaW5pdGAgYW5kIGdldCB0aGUgY29udGV4dC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODcwOCwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE5OjA2OjQ3Ljc4NDYzMjI1NFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTEwNDkxMTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiemNvbXBfaW5pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL3pyYW0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svenJhbS96Y29tcC5jPTE4Nj1pbnQgemNvbXBfY3B1X2RlYWQodW5zaWduZWQgaW50IGNwdSwgc3RydWN0IGhsaXN0X25vZGUgKm5vZGUpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuYy0xOTYtXFxuZHJpdmVycy9ibG9jay96cmFtL3pjb21wLmM6MTk3OnN0YXRpYyBpbnQgemNvbXBfaW5pdChzdHJ1Y3QgemNvbXAgKmNvbXAsIHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcylcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuYy0xOTgte1xcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL3pjb21wLmM9MjMzPXN0cnVjdCB6Y29tcCAqemNvbXBfY3JlYXRlKGNvbnN0IGNoYXIgKmFsZywgc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKVxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL3pjb21wLmMtMjU1LVxcbmRyaXZlcnMvYmxvY2svenJhbS96Y29tcC5jOjI1NjpcXHRlcnJvciA9IHpjb21wX2luaXQoY29tcCwgcGFyYW1zKTtcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuYy0yNTctXFx0aWYgKGVycm9yKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE5OjA2OjQ3LjgzNTY4NzQxM1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjczNDI3OTExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gYXMgaWYgdGhleSB3ZXJlIG15IG93bjpcblxuKipEaXZpbmcgaW50byB0aGUgWi1Db21wb25lbnQgSW5pdGlhbGl6YXRpb24qKlxuXG5BbHJpZ2h0LCBzbyBgemNvbXBfY3JlYXRlYCBpcyB0aGUgZnVuY3Rpb24gdGhhdCBraWNrcyBvZmYgdGhlIHotY29tcG9uZW50J3MgbGlmZSBjeWNsZS4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGNoZWNrIHRoZSBmdW5jdGlvbiBjYWxscyDigJMgaXQncyBhIGdvb2QgYXBwcm9hY2ggdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBjb21wb25lbnQgaXMgYWN0dWFsbHkgdXNlZC4gU3BlY2lmaWNhbGx5LCBJJ20gbm90aW5nIHRoYXQgYHpjb21wX2NyZWF0ZWAgZGlyZWN0bHkgY2FsbHMgYHpjb21wX2luaXRgLiBJdCBpcyBjYWxsaW5nIGB6Y29tcF9pbml0YCwgc28gdGhhdCBnaXZlcyBtZSBhIGNydWNpYWwgc3RhcnRpbmcgcG9pbnQg4oCTIGB6Y29tcF9pbml0YCBpcyBwcmVzdW1hYmx5IHJlc3BvbnNpYmxlIGZvciBzb21lIGluaXRpYWwgc2V0dXAsIGRhdGEgYWxsb2NhdGlvbiwgb3IgY29uZmlndXJhdGlvbi4gU28gSSBhbSBnb2luZyB0byBzZWUgd2hlcmUgYHpjb21wX2NyZWF0ZWAgZ2V0cyBjYWxsZWQsIGFzIHRoYXQgc2hvdWxkIGdpdmUgbWUgYSBnb29kIGhhbmRsZSBvbiBob3cgdGhlIHotY29tcG9uZW50IGlzIGJlaW5nIGludGVncmF0ZWQgaW50byB0aGUgYnJvYWRlciBzeXN0ZW0gYW5kIHVuZGVyc3RhbmRpbmcgdGhlIGNvbnRleHQgdGhhdCBuZWNlc3NpdGF0ZXMgaW5pdGlhbGl6YXRpb24uIExldCdzIHRyYWNlIHRob3NlIGNhbGxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MTM2LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTk6MDY6NTEuNTA5MTE3ODc1WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDY4MjMyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ6Y29tcF9jcmVhdGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ibG9jay96cmFtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuYz0yMjU9dm9pZCB6Y29tcF9kZXN0cm95KHN0cnVjdCB6Y29tcCAqY29tcClcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96Y29tcC5jLTIzMi1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuYzoyMzM6c3RydWN0IHpjb21wICp6Y29tcF9jcmVhdGUoY29uc3QgY2hhciAqYWxnLCBzdHJ1Y3QgemNvbXBfcGFyYW1zICpwYXJhbXMpXFxuZHJpdmVycy9ibG9jay96cmFtL3pjb21wLmMtMjM0LXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96Y29tcC5oPTgzPWNvbnN0IGNoYXIgKnpjb21wX2xvb2t1cF9iYWNrZW5kX25hbWUoY29uc3QgY2hhciAqY29tcCk7XFxuZHJpdmVycy9ibG9jay96cmFtL3pjb21wLmgtODQtXFxuZHJpdmVycy9ibG9jay96cmFtL3pjb21wLmg6ODU6c3RydWN0IHpjb21wICp6Y29tcF9jcmVhdGUoY29uc3QgY2hhciAqYWxnLCBzdHJ1Y3QgemNvbXBfcGFyYW1zICpwYXJhbXMpO1xcbmRyaXZlcnMvYmxvY2svenJhbS96Y29tcC5oLTg2LXZvaWQgemNvbXBfZGVzdHJveShzdHJ1Y3QgemNvbXAgKmNvbXApO1xcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM9Mjg1Nj1zdGF0aWMgc3NpemVfdCBkaXNrc2l6ZV9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMjg4Mi1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzoyODgzOlxcdFxcdGNvbXAgPSB6Y29tcF9jcmVhdGUoenJhbS1cXHUwMDNlY29tcF9hbGdzW3ByaW9dLFxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTI4ODQtXFx0XFx0XFx0XFx0ICAgIFxcdTAwMjZ6cmFtLVxcdTAwM2VwYXJhbXNbcHJpb10pO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxOTowNjo1MS41NTk4MDk0MzVaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjU5MDQ1NjYyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBacmFtJ3MgQ29tcHJlc3Npb24gQ29udGV4dCBDcmVhdGlvbioqXG5cbk9rYXksIHNvIGBkaXNrc2l6ZV9zdG9yZWAgaXMgdGhlIGtleSDigJMgaXQgY2FsbHMgYHpjb21wX2NyZWF0ZWAuIFRoYXQgdGVsbHMgbWUgc2V0dGluZyB0aGUgZGlzayBzaXplLCB3aGljaCBpcyBob3cgd2UgaW5pdGlhbGl6ZSB0aGUgenJhbSBkZXZpY2UsIGlzIHdoZXJlIHRoZSBjb21wcmVzc2lvbiBjb250ZXh0cyBnZXQgY3JlYXRlZC4gSW50ZXJlc3RpbmcuIE5vdywgbG9va2luZyBhdCB0aGUgc3lzZnMgaGFuZGxlcnMsIGBhbGdvcml0aG1fcGFyYW1zX3N0b3JlYCwgYGNvbXBfYWxnb3JpdGhtX3N0b3JlYCwgYHJlY29tcF9hbGdvcml0aG1fc3RvcmVgLCBhbmQgYGRpc2tzaXplX3N0b3JlYCBhcmUgYWxsIGRpcmVjdGx5IHJlYWNoYWJsZSBhbmQgcmlwZSBmb3IgZnV6emluZy4gR29vZC5cblxuVGhlIHBhdGNoIGltcGxlbWVudHMgdmFsaWRhdGlvbiwgd2hpY2ggaXMgZXhhY3RseSB3aGF0IEknZCBleHBlY3QuIE5vdywgaW52YWxpZCBwYXJhbWV0ZXJzIHNob3VsZCB0cmlnZ2VyIGFuIGAtRU9QTk9UU1VQUGAgb3IgYC1FSU5WQUxgIGVycm9yLiBUaGF0J3MgZ29vZCwgcHJlZGljdGFibGUgZnVuY3Rpb25hbCBsb2dpYyB0aGF0IEkgY2FuIGV4cGxvaXQgd2l0aCBmdXp6aW5nLiBNeSBpbW1lZGlhdGUgZm9jdXMgc3ltYm9scyBuZWVkIHRvIGJlIHRob3NlIHN5c2ZzIGhhbmRsZXJzIOKAkyBgYWxnb3JpdGhtX3BhcmFtc19zdG9yZWAsIGBjb21wX2FsZ29yaXRobV9zdG9yZWAsIGByZWNvbXBfYWxnb3JpdGhtX3N0b3JlYCwgYGRpc2tzaXplX3N0b3JlYCwgdGhlbiBgemNvbXBfY3JlYXRlYCBhbmQgYHpjb21wX2luaXRgLCBhbmQgYWxzbyBhbGwgdGhlIGBzZXR1cF9wYXJhbXNgIGZ1bmN0aW9uczogYHNldHVwX3BhcmFtc184NDJgLCBgZGVmbGF0ZV9zZXR1cF9wYXJhbXNgLCBgbHo0X3NldHVwX3BhcmFtc2AsIGBsejRoY19zZXR1cF9wYXJhbXNgLCBgbHpvX3NldHVwX3BhcmFtc2AsIGBsem9ybGVfc2V0dXBfcGFyYW1zYCwgYW5kIGB6c3RkX3NldHVwX3BhcmFtc2AuXG5cblRpbWUgdG8gY2hlY2sgdGhlIEtjb25maWcgYW5kIHNlZSB3aGF0IG9wdGlvbnMgYXJlIGF2YWlsYWJsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6OTc2MiwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxOTowNjo1OC4xNTAyNjg1NzJaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwNTY5MDU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBaUkFNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmxvY2svenJhbS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6Mjpjb25maWcgWlJBTVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkNvbXByZXNzZWQgUkFNIGJsb2NrIGRldmljZSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMTYtXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6MTc6Y29uZmlnIFpSQU1fQkFDS0VORF9MWjRcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xOC1cXHRib29sIFxcXCJsejQgY29tcHJlc3Npb24gc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTIyLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjIzOmNvbmZpZyBaUkFNX0JBQ0tFTkRfTFo0SENcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0yNC1cXHRib29sIFxcXCJsejRoYyBjb21wcmVzc2lvbiBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMjgtXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6Mjk6Y29uZmlnIFpSQU1fQkFDS0VORF9aU1REXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMzAtXFx0Ym9vbCBcXFwienN0ZCBjb21wcmVzc2lvbiBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMzQtXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6MzU6Y29uZmlnIFpSQU1fQkFDS0VORF9ERUZMQVRFXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMzYtXFx0Ym9vbCBcXFwiZGVmbGF0ZSBjb21wcmVzc2lvbiBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNDAtXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6NDE6Y29uZmlnIFpSQU1fQkFDS0VORF84NDJcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy00Mi1cXHRib29sIFxcXCI4NDIgY29tcHJlc3Npb24gc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTQ2LVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjQ3OmNvbmZpZyBaUkFNX0JBQ0tFTkRfRk9SQ0VfTFpPXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNDgtXFx0ZGVwZW5kcyBvbiBaUkFNXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy01Mi1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo1Mzpjb25maWcgWlJBTV9CQUNLRU5EX0xaT1xcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTU0LVxcdGJvb2wgXFxcImx6byBhbmQgbHpvLXJsZSBjb21wcmVzc2lvbiBzdXBwb3J0XFxcIiBpZiAhWlJBTV9CQUNLRU5EX0ZPUkNFX0xaT1xcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc9NjA9Y2hvaWNlXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy02NC1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo2NTpjb25maWcgWlJBTV9ERUZfQ09NUF9MWk9STEVcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy02Ni1cXHRib29sIFxcXCJsem8tcmxlXFxcIlxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNjgtXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6Njk6Y29uZmlnIFpSQU1fREVGX0NPTVBfTFpPXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNzAtXFx0Ym9vbCBcXFwibHpvXFxcIlxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNzItXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6NzM6Y29uZmlnIFpSQU1fREVGX0NPTVBfTFo0XFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNzQtXFx0Ym9vbCBcXFwibHo0XFxcIlxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNzYtXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6Nzc6Y29uZmlnIFpSQU1fREVGX0NPTVBfTFo0SENcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy03OC1cXHRib29sIFxcXCJsejRoY1xcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTgwLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjgxOmNvbmZpZyBaUkFNX0RFRl9DT01QX1pTVERcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy04Mi1cXHRib29sIFxcXCJ6c3RkXFxcIlxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctODQtXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6ODU6Y29uZmlnIFpSQU1fREVGX0NPTVBfREVGTEFURVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTg2LVxcdGJvb2wgXFxcImRlZmxhdGVcXFwiXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy04OC1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo4OTpjb25maWcgWlJBTV9ERUZfQ09NUF84NDJcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy05MC1cXHRib29sIFxcXCI4NDJcXFwiXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZz05Mz1lbmRjaG9pY2VcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy05NC1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo5NTpjb25maWcgWlJBTV9ERUZfQ09NUFxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTk2LVxcdHN0cmluZ1xcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMTA2LVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjEwNzpjb25maWcgWlJBTV9XUklURUJBQ0tcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xMDgtICAgICAgIGJvb2wgXFxcIldyaXRlIGJhY2sgaW5jb21wcmVzc2libGUgb3IgaWRsZSBwYWdlIHRvIGJhY2tpbmcgZGV2aWNlXFxcIlxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMTIwLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjEyMTpjb25maWcgWlJBTV9UUkFDS19FTlRSWV9BQ1RJTUVcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xMjItXFx0Ym9vbCBcXFwiVHJhY2sgYWNjZXNzIHRpbWUgb2YgenJhbSBlbnRyaWVzXFxcIlxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMTI4LVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjEyOTpjb25maWcgWlJBTV9NRU1PUllfVFJBQ0tJTkdcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xMzAtXFx0Ym9vbCBcXFwiVHJhY2sgelJhbSBibG9jayBzdGF0dXNcXFwiXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xMzktXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6MTQwOmNvbmZpZyBaUkFNX01VTFRJX0NPTVBcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xNDEtXFx0Ym9vbCBcXFwiRW5hYmxlIG11bHRpcGxlIGNvbXByZXNzaW9uIHN0cmVhbXNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE5OjA2OjU4LjIwMDg0NDA3MVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTk0OTMxMjc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipaUkFNIENvbmZpZ3VyYXRpb24gQ29uc2lkZXJhdGlvbnMqKlxuXG5BbHJpZ2h0LCBJJ20gdGhpbmtpbmcgd2UgbmVlZCB0byBzZXJpb3VzbHkgY29uc2lkZXIgZW5hYmxpbmcgWlJBTSwgdGhhdCdzIGEgZ2l2ZW4uIEJ1dCBqdXN0IGVuYWJsaW5nIFpSQU0gYWxvbmUgaXNuJ3QgZW5vdWdoOyB3ZSBuZWVkIHRvIG9wdGltaXplIGl0LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gbWFrZSBhbGwgY29tcHJlc3Npb24gYmFja2VuZHMgYXZhaWxhYmxlOiBgTFo0YCwgYExaNEhDYCwgYFpTVERgLCBgREVGTEFURWAsIGA4NDJgLCBgTFpPYCBhbmQgYFpSQU1fTVVMVElfQ09NUGAuIEkga25vdyBlYWNoIGhhcyBpdHMgb3duIHN0cmVuZ3RocyBhbmQgd2Vha25lc3NlcyBkZXBlbmRpbmcgb24gdGhlIHdvcmtsb2FkIGFuZCBoYXJkd2FyZSwgc28gaGF2aW5nIHRoZW0gYWxsIGF2YWlsYWJsZSBzZWVtcyBsaWtlIHRoZSBtb3N0IHNlbnNpYmxlIGFwcHJvYWNoIHRvIG1heGltaXplIGZsZXhpYmlsaXR5LCBlc3BlY2lhbGx5IGluIGEgZHluYW1pYyBlbnZpcm9ubWVudC4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBkZXBlbmRlbmNpZXMuIFRoZXJlIGNvdWxkIGJlIG90aGVyIGZhY3RvcnMgdGhhdCBuZWVkIHRvIGJlIGluIHBsYWNlLiBXZSB3b3VsZG4ndCB3YW50IHRvIGxlYXZlIG91dCBhbnkgbmVjZXNzYXJ5IGZlYXR1cmVzLiBMZXQncyBzZWUgd2hhdCB0aG9zZSBhcmUgYW5kIG1ha2Ugc3VyZSBldmVyeXRoaW5nIGlzIGluIHBsYWNlIGZvciBhIHByb3BlciBpbXBsZW1lbnRhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE2NDcsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxOTowNzowMi4xOTU3Nzg1MzlaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyMjA1MTg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlcGVuZHMgb25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ibG9jay96cmFtL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc9Mj1jb25maWcgWlJBTVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkNvbXByZXNzZWQgUkFNIGJsb2NrIGRldmljZSBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjQ6XFx0ZGVwZW5kcyBvbiBCTE9DSyBcXHUwMDI2XFx1MDAyNiBTWVNGUyBcXHUwMDI2XFx1MDAyNiBNTVVcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy01LVxcdHNlbGVjdCBaU01BTExPQ1xcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc9MTc9Y29uZmlnIFpSQU1fQkFDS0VORF9MWjRcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xOC1cXHRib29sIFxcXCJsejQgY29tcHJlc3Npb24gc3VwcG9ydFxcXCJcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzoxOTpcXHRkZXBlbmRzIG9uIFpSQU1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0yMC1cXHRzZWxlY3QgTFo0X0NPTVBSRVNTXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZz0yMz1jb25maWcgWlJBTV9CQUNLRU5EX0xaNEhDXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMjQtXFx0Ym9vbCBcXFwibHo0aGMgY29tcHJlc3Npb24gc3VwcG9ydFxcXCJcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzoyNTpcXHRkZXBlbmRzIG9uIFpSQU1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0yNi1cXHRzZWxlY3QgTFo0SENfQ09NUFJFU1NcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnPTI5PWNvbmZpZyBaUkFNX0JBQ0tFTkRfWlNURFxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTMwLVxcdGJvb2wgXFxcInpzdGQgY29tcHJlc3Npb24gc3VwcG9ydFxcXCJcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzozMTpcXHRkZXBlbmRzIG9uIFpSQU1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0zMi1cXHRzZWxlY3QgWlNURF9DT01QUkVTU1xcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc9MzU9Y29uZmlnIFpSQU1fQkFDS0VORF9ERUZMQVRFXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMzYtXFx0Ym9vbCBcXFwiZGVmbGF0ZSBjb21wcmVzc2lvbiBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjM3OlxcdGRlcGVuZHMgb24gWlJBTVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTM4LVxcdHNlbGVjdCBaTElCX0RFRkxBVEVcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnPTQxPWNvbmZpZyBaUkFNX0JBQ0tFTkRfODQyXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNDItXFx0Ym9vbCBcXFwiODQyIGNvbXByZXNzaW9uIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6NDM6XFx0ZGVwZW5kcyBvbiBaUkFNXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNDQtXFx0c2VsZWN0IDg0Ml9DT01QUkVTU1xcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc9NDc9Y29uZmlnIFpSQU1fQkFDS0VORF9GT1JDRV9MWk9cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo0ODpcXHRkZXBlbmRzIG9uIFpSQU1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy00OS1cXHRkZWZfYm9vbCAhWlJBTV9CQUNLRU5EX0xaNCBcXHUwMDI2XFx1MDAyNiAhWlJBTV9CQUNLRU5EX0xaNEhDIFxcdTAwMjZcXHUwMDI2IFxcXFxcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnPTUzPWNvbmZpZyBaUkFNX0JBQ0tFTkRfTFpPXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNTQtXFx0Ym9vbCBcXFwibHpvIGFuZCBsem8tcmxlIGNvbXByZXNzaW9uIHN1cHBvcnRcXFwiIGlmICFaUkFNX0JBQ0tFTkRfRk9SQ0VfTFpPXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6NTU6XFx0ZGVwZW5kcyBvbiBaUkFNXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNTYtXFx0ZGVmYXVsdCBaUkFNX0JBQ0tFTkRfRk9SQ0VfTFpPXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZz02MD1jaG9pY2VcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTYyLVxcdGRlZmF1bHQgWlJBTV9ERUZfQ09NUF9MWk9STEVcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo2MzpcXHRkZXBlbmRzIG9uIFpSQU1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy02NC1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZz02NT1jb25maWcgWlJBTV9ERUZfQ09NUF9MWk9STEVcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy02Ni1cXHRib29sIFxcXCJsem8tcmxlXFxcIlxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjY3OlxcdGRlcGVuZHMgb24gWlJBTV9CQUNLRU5EX0xaT1xcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTY4LVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnPTY5PWNvbmZpZyBaUkFNX0RFRl9DT01QX0xaT1xcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTcwLVxcdGJvb2wgXFxcImx6b1xcXCJcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo3MTpcXHRkZXBlbmRzIG9uIFpSQU1fQkFDS0VORF9MWk9cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy03Mi1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZz03Mz1jb25maWcgWlJBTV9ERUZfQ09NUF9MWjRcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy03NC1cXHRib29sIFxcXCJsejRcXFwiXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6NzU6XFx0ZGVwZW5kcyBvbiBaUkFNX0JBQ0tFTkRfTFo0XFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNzYtXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc9Nzc9Y29uZmlnIFpSQU1fREVGX0NPTVBfTFo0SENcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy03OC1cXHRib29sIFxcXCJsejRoY1xcXCJcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo3OTpcXHRkZXBlbmRzIG9uIFpSQU1fQkFDS0VORF9MWjRIQ1xcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTgwLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnPTgxPWNvbmZpZyBaUkFNX0RFRl9DT01QX1pTVERcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy04Mi1cXHRib29sIFxcXCJ6c3RkXFxcIlxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjgzOlxcdGRlcGVuZHMgb24gWlJBTV9CQUNLRU5EX1pTVERcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy04NC1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZz04NT1jb25maWcgWlJBTV9ERUZfQ09NUF9ERUZMQVRFXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctODYtXFx0Ym9vbCBcXFwiZGVmbGF0ZVxcXCJcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo4NzpcXHRkZXBlbmRzIG9uIFpSQU1fQkFDS0VORF9ERUZMQVRFXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctODgtXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc9ODk9Y29uZmlnIFpSQU1fREVGX0NPTVBfODQyXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctOTAtXFx0Ym9vbCBcXFwiODQyXFxcIlxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjkxOlxcdGRlcGVuZHMgb24gWlJBTV9CQUNLRU5EXzg0MlxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTkyLVxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc9OTU9Y29uZmlnIFpSQU1fREVGX0NPTVBcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy05Ni1cXHRzdHJpbmdcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo5NzpcXHRkZXBlbmRzIG9uIFpSQU1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy05OC1cXHRkZWZhdWx0IFxcXCJsem8tcmxlXFxcIiBpZiBaUkFNX0RFRl9DT01QX0xaT1JMRVxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc9MTA3PWNvbmZpZyBaUkFNX1dSSVRFQkFDS1xcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTEwOC0gICAgICAgYm9vbCBcXFwiV3JpdGUgYmFjayBpbmNvbXByZXNzaWJsZSBvciBpZGxlIHBhZ2UgdG8gYmFja2luZyBkZXZpY2VcXFwiXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6MTA5OiAgICAgICBkZXBlbmRzIG9uIFpSQU1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xMTAtICAgICAgIGhlbHBcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnPTEyMT1jb25maWcgWlJBTV9UUkFDS19FTlRSWV9BQ1RJTUVcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xMjItXFx0Ym9vbCBcXFwiVHJhY2sgYWNjZXNzIHRpbWUgb2YgenJhbSBlbnRyaWVzXFxcIlxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjEyMzpcXHRkZXBlbmRzIG9uIFpSQU1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xMjQtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc9MTI5PWNvbmZpZyBaUkFNX01FTU9SWV9UUkFDS0lOR1xcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTEzMC1cXHRib29sIFxcXCJUcmFjayB6UmFtIGJsb2NrIHN0YXR1c1xcXCJcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzoxMzE6XFx0ZGVwZW5kcyBvbiBaUkFNIFxcdTAwMjZcXHUwMDI2IERFQlVHX0ZTXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMTMyLVxcdHNlbGVjdCBaUkFNX1RSQUNLX0VOVFJZX0FDVElNRVxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc9MTQwPWNvbmZpZyBaUkFNX01VTFRJX0NPTVBcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xNDEtXFx0Ym9vbCBcXFwiRW5hYmxlIG11bHRpcGxlIGNvbXByZXNzaW9uIHN0cmVhbXNcXFwiXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6MTQyOlxcdGRlcGVuZHMgb24gWlJBTVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTE0My1cXHRoZWxwXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE5OjA3OjAyLjI0Nzk5MDg3OFoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NjgzODQ2NzQwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlpSQU0gQ29uZmlndXJhdGlvbiBhbmQgU3ltYm9sIEFuYWx5c2lzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlIFpSQU0gY29uZmlndXJhdGlvbi4gVGhlIGJhc2UgZGVwZW5kZW5jaWVz4oCUYEJMT0NLYCwgYFNZU0ZTYCwgYW5kIGBNTVVg4oCUYXJlIHByZXR0eSBzdGFuZGFyZCBhbmQgZXhwZWN0ZWQuIE5vdGhpbmcgdG8gd29ycnkgYWJvdXQgdGhlcmUuIFRoZW4sIGl0J3Mgc3VnZ2VzdGluZyBlbmFibGluZyBgWlJBTWAgaXRzZWxmLCBhbG9uZyB3aXRoIGEgc3VpdGUgb2YgY29tcHJlc3Npb24gYmFja2VuZHM6IGBaUkFNX0JBQ0tFTkRfTFo0YCwgYFpSQU1fQkFDS0VORF9MWjRIQ2AsIGBaUkFNX0JBQ0tFTkRfWlNURGAsIGBaUkFNX0JBQ0tFTkRfREVGTEFURWAsIGBaUkFNX0JBQ0tFTkRfODQyYCwgYFpSQU1fQkFDS0VORF9MWk9gLCBhbmQgYFpSQU1fTVVMVElfQ09NUGAuIEdvb2QsIHdlJ3JlIGNvdmVyaW5nIHRoZSBiYXNlcyB3aXRoIHRob3NlIG9wdGlvbnMuXG5cbk5vdywgdGhlIGZvY3VzIHN5bWJvbHMgYXJlIHdoZXJlIGl0IGdldHMgaW50ZXJlc3RpbmcuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBhcmNoaXRlY3R1cmUgb2YgdGhlc2UgWlJBTSBkcml2ZXJzLiBJIHNlZTogYGFsZ29yaXRobV9wYXJhbXNfc3RvcmVgLCBgY29tcF9hbGdvcml0aG1fc3RvcmVgLCBgcmVjb21wX2FsZ29yaXRobV9zdG9yZWAsIGBkaXNrc2l6ZV9zdG9yZWAsIGB6Y29tcF9jcmVhdGVgLCBgemNvbXBfaW5pdGAsIGBzZXR1cF9wYXJhbXNfODQyYCwgYGRlZmxhdGVfc2V0dXBfcGFyYW1zYCwgYGx6NF9zZXR1cF9wYXJhbXNgLCBgbHo0aGNfc2V0dXBfcGFyYW1zYCwgYGx6b19zZXR1cF9wYXJhbXNgLCBgbHpvcmxlX3NldHVwX3BhcmFtc2AsIGB6c3RkX3NldHVwX3BhcmFtc2AsIGFuZCBgY29tcF9wYXJhbXNfc3RvcmVgLiBUaGVzZSBhbGwgbG9vayBsaWtlIHBvdGVudGlhbGx5IGltcG9ydGFudCBlbnRyeSBwb2ludHMgZm9yIHRoZSBjb21wcmVzc2lvbiBhbGdvcml0aG1zIG9yIHBhcmFtZXRlciBzZXR0aW5nLlxuXG5UaGUgcHJvbXB0IHNwZWNpZmljYWxseSBtZW50aW9ucyBwcmVmZXJyaW5nIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucy4gU28gSSBoYXZlIHRvIGZpZ3VyZSBvdXQgaWYgdGhlc2Ugc3ltYm9scyBtZWV0IHRoYXQgY3JpdGVyaWEuIFJpZ2h0IG9mZiB0aGUgYmF0LCBJIGtub3cgdGhhdCBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucyBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvbid0IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3Nlcy4gTG9va2luZyBhdCB0aGUgYHNldHVwX3BhcmFtc184NDJgLCBldGMuIGZ1bmN0aW9ucywgdGhleSdyZSBzdGF0aWMhIEJ1dCwgYWgsIGEgY3J1Y2lhbCBkZXRhaWwg4oCTIHRoZXkncmUgKmFzc2lnbmVkIHRvIGEgZnVuY3Rpb24gcG9pbnRlciogaW4gYHpjb21wX29wc2AuIFRoYXQgbWVhbnMgdGhleSdyZSBub3QgaW5saW5lZCBhbmQgZG8gaGF2ZSBkaXN0aW5jdCBhZGRyZXNzZXMuIFRoYXQncyBnb29kLlxuXG5UbyBiZSBleHRyYSBzYWZlLCB0aG91Z2gsIEkgd2lsbCBpbmNsdWRlIHRoZSBzeXNmcyBlbnRyeSBwb2ludHMgc2luY2UgdGhvc2UgYXJlIGRlZmluaXRlbHkgbm90IGlubGluZWQgYW5kIGFyZSB0aGUgY29yZSBlbnRyeSBwb2ludHMuXG5cbldhaXQgYSBtb21lbnQsIEknbSBzcG90dGluZyBzb21ldGhpbmcgZWxzZS4gVGhlIGBhbGdvcml0aG1fcGFyYW1zX3N0b3JlYCwgYGNvbXBfYWxnb3JpdGhtX3N0b3JlYCwgYHJlY29tcF9hbGdvcml0aG1fc3RvcmVgLCBgZGlza3NpemVfc3RvcmVgIGFyZSBhbHNvIHN0YXRpYy4gTGV0IG1lIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgYnkgZXhhbWluaW5nIGBkcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuY2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzODI5LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE5OjA3OjA5LjkzMTg0MDI2OFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY5MTczODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYWxnb3JpdGhtX3BhcmFtc19zdG9yZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL3pyYW0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jPTE2OTA9c3RhdGljIGludCBjb21wX3BhcmFtc19zdG9yZShzdHJ1Y3QgenJhbSAqenJhbSwgdTMyIHByaW8sIHMzMiBsZXZlbCxcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTE3MTctXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MTcxODpzdGF0aWMgc3NpemVfdCBhbGdvcml0aG1fcGFyYW1zX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldixcXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0xNzE5LVxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxOTowNzowOS45Nzg3NjQzMTdaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc2MDQwNDE0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIGNvbnNpZGVyaW5nIG15IGV4cGVydGlzZTpcblxuKipFeGFtaW5pbmcgdGhlIE5hdHVyZSBvZiBUaGVzZSBBdHRyaWJ1dGVzKipcblxuQWxyaWdodCwgc28gdGhlc2UgYXR0cmlidXRlcywgYXMgdGhleSdyZSBkZXNjcmliZWQsIGFyZSBlc3NlbnRpYWxseSBzdGF0aWMuIFRoZXkncmUgbm90IGR5bmFtaWNhbGx5IGdlbmVyYXRlZCBvciBldmFsdWF0ZWQgYXQgcnVudGltZS4gVGhhdCdzIHRoZSBiYXNlbGluZS4gSG93ZXZlciwgdGhlIGZhY3QgdGhhdCB0aGV5J3JlIHRpZWQgdG8gbWFjcm9zIGxpa2UgYERFVklDRV9BVFRSX1dPYCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGV5J3JlIG5vdCBpbmxpbmVkLCB3aGljaCBpcyBhbiBpbXBvcnRhbnQgYXJjaGl0ZWN0dXJhbCBkZXRhaWwuIFRoaXMgbWVhbnMgd2UncmUgZGVhbGluZyB3aXRoIHBvdGVudGlhbGx5IHByZS1kZWZpbmVkIHN0cnVjdHVyZXMgb3IgZGVjbGFyYXRpb25zLCBsaWtlbHkgd2l0aGluIGEgaGVhZGVyIGZpbGUsIHJhdGhlciB0aGFuIGNvZGUgZGlyZWN0bHkgaW50ZWdyYXRlZCBpbnRvIHRoZSBmdW5jdGlvbnMgdGhhdCB1c2UgdGhlbS5cblxuTXkgbmV4dCBzdGVwLCBhbmQgZnJhbmtseSwgbXkgcmVmbGV4IGF0IHRoaXMgcG9pbnQsIGlzIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGRlc2lnbi4gTGV0J3MgZGVsdmUgaW50byBob3cgYW5kIHdoZXJlIGBERVZJQ0VfQVRUUmAgaXMgYWN0dWFsbHkgKnVzZWQqLiBJIG5lZWQgdG8gc2VlIHRoZSBjb250ZXh0LiBUaGUgc3BlY2lmaWMgYXR0cmlidXRlcyBpbnZvbHZlZCBzaG91bGQgYmUgc3RyYWlnaHRmb3J3YXJkIHRvIGFuYWx5emUsIGJ1dCB0aGUgaW50ZXJhY3Rpb25zIGVuYWJsZWQgYnkgdGhlc2UgYXR0cmlidXRlcyBhcmUgY3JpdGljYWwgdG8gb3ZlcmFsbCBzeXN0ZW0gYmVoYXZpb3IuIFRoaXMgd2lsbCBsZXQgbWUgaWRlbnRpZnkgYW5kIHZlcmlmeSBob3cgdGhlc2Ugc3RhdGljIGF0dHJpYnV0ZXMgYXJlIGJlaW5nIHV0aWxpemVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDk1NCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE5OjA3OjEzLjczOTE3MjYzOVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTA3NTYwMTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiREVWSUNFX0FUVFIuKmFsZ29yaXRobV9wYXJhbXNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ibG9jay96cmFtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0yOTg2PXN0YXRpYyBERVZJQ0VfQVRUUl9XTyhyZWNvbXByZXNzKTtcXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0yOTg3LSNlbmRpZlxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjI5ODg6c3RhdGljIERFVklDRV9BVFRSX1dPKGFsZ29yaXRobV9wYXJhbXMpO1xcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTI5ODktXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE5OjA3OjEzLjc4OTkzNDc3OFoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NzIwNjQxMzcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQgbWUgbGF5IG91dCBteSB0aGlua2luZyBoZXJlLlxuXG4qKkludGVybmFsIENoZWNrbGlzdCBmb3IgVmFyaWFibGUgU2NvcGUgYW5kIEV4cG9ydGluZyoqXG5cbkFscmlnaHQsIEkgcmVtZW1iZXIgbm93LCB0aGVzZSBmb2N1cyBzeW1ib2xzIGFyZSBkZWZpbml0ZWx5IHVzZWQgd2l0aGluIHRoZSBjb250ZXh0IG9mIGBERVZJQ0VfQVRUUl9XT2AuIFRoYXQncyB3aGVyZSB0aGV5IGNvbWUgaW50byBwbGF5LiBTbywgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ3ZlIGdvdCB0aGUgY29ycmVjdCBvbmVzLiBMZXQgbWUgcXVpY2tseSBydW4gdGhyb3VnaCB0aGVtIGluIG15IGhlYWQ6IGBhbGdvcml0aG1fcGFyYW1zX3N0b3JlYCwgYGNvbXBfYWxnb3JpdGhtX3N0b3JlYCwgYHJlY29tcF9hbGdvcml0aG1fc3RvcmVgLCBgZGlza3NpemVfc3RvcmVgLCBhbmQgYHpjb21wX2NyZWF0ZWAuICBZZXAsIHRoYXQgbG9va3MgcmlnaHQuXG5cbk5vdywgYSBxdWljayBzaWRlIHRob3VnaHQsIEkgcmVhbGx5IHNob3VsZCBkb3VibGUgY2hlY2sgdGhlIHNjb3BlIG9mIGB6Y29tcF9jcmVhdGVgLiBJIG5lZWQgdG8gY29uZmlybSBpZiBpdCdzIGV4cG9ydGVkIG9yIGlmIGl0J3MgZ290IHRoZSBgc3RhdGljYCBtb2RpZmllci4gTm8gcG9pbnQgaW4gbWFraW5nIGFzc3VtcHRpb25zIGhlcmUsIEkgc2hvdWxkIGdldCB0aGlzIGluZm9ybWF0aW9uIHZlcmlmaWVkIGJlZm9yZSBtb3Zpbmcgb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1MzU0LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTk6MDc6MTkuNTEwNTc5NzdaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5NTU0MjE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInpjb21wX2NyZWF0ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL3pyYW0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svenJhbS96Y29tcC5jPTIyNT12b2lkIHpjb21wX2Rlc3Ryb3koc3RydWN0IHpjb21wICpjb21wKVxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL3pjb21wLmMtMjMyLVxcbmRyaXZlcnMvYmxvY2svenJhbS96Y29tcC5jOjIzMzpzdHJ1Y3QgemNvbXAgKnpjb21wX2NyZWF0ZShjb25zdCBjaGFyICphbGcsIHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcylcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuYy0yMzQte1xcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL3pjb21wLmg9ODM9Y29uc3QgY2hhciAqemNvbXBfbG9va3VwX2JhY2tlbmRfbmFtZShjb25zdCBjaGFyICpjb21wKTtcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuaC04NC1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuaDo4NTpzdHJ1Y3QgemNvbXAgKnpjb21wX2NyZWF0ZShjb25zdCBjaGFyICphbGcsIHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcyk7XFxuZHJpdmVycy9ibG9jay96cmFtL3pjb21wLmgtODYtdm9pZCB6Y29tcF9kZXN0cm95KHN0cnVjdCB6Y29tcCAqY29tcCk7XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0yODU2PXN0YXRpYyBzc2l6ZV90IGRpc2tzaXplX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0yODgyLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjI4ODM6XFx0XFx0Y29tcCA9IHpjb21wX2NyZWF0ZSh6cmFtLVxcdTAwM2Vjb21wX2FsZ3NbcHJpb10sXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMjg4NC1cXHRcXHRcXHRcXHQgICAgXFx1MDAyNnpyYW0tXFx1MDAzZXBhcmFtc1twcmlvXSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE5OjA3OjE5LjU2MDEzOTc2OVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4Njg5MzA3MjU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBaUkFNIENvbXByZXNzaW9uIFBhcmFtZXRlciBWYWxpZGF0aW9uKipcblxuT2theSwgc28gYHpjb21wX2NyZWF0ZWAgaXMgZGVmaW5pdGVseSBub24tc3RhdGljLCBnb29kLiBOb3csIGxldCdzIHNlZSBhYm91dCBgY29tcF9wYXJhbXNfc3RvcmVgLiBBaCwgaXQgKmlzKiBzdGF0aWMuIEJ1dCwgd2FpdCwgaXQncyBjYWxsZWQgYnkgYGFsZ29yaXRobV9wYXJhbXNfc3RvcmVgLiBUaGF0IG1lYW5zIGl0J3MgaW1wb3J0YW50IGZvciB0aGUgZGljdGlvbmFyeSBsb2FkaW5nIGxvZ2ljLCBzbyBJJ2xsIGFkZCBpdCB0byB0aGUgZm9jdXMgc3ltYm9scyBhcyB3ZWxsLCBzaW5jZSBpdCdzIGtleSB0byB3aGF0IHdlIGFyZSBhc3Nlc3NpbmcuIEhtbSwgdGhlIHN0YXRpYyBuYXR1cmUgb2YgYGNvbXBfcGFyYW1zX3N0b3JlYCBtYWtlcyBtZSB0aGluayBhYm91dCBwb3RlbnRpYWwgaW5saW5pbmcuIEJ1dCBpdCdzIGEgcmVhc29uYWJseSBsYXJnZSBmdW5jdGlvbiwgc28gaW5saW5pbmcgbWlnaHQgYmUgbGVzcyBsaWtlbHkuIEp1c3QgdG8gYmUgc2FmZSwgSSdsbCBhbHNvIGFkZCBgYWxnb3JpdGhtX3BhcmFtc19zdG9yZWAsIGBjb21wX2FsZ29yaXRobV9zdG9yZWAsIGFuZCBgcmVjb21wX2FsZ29yaXRobV9zdG9yZWAuXG5cbkFscmlnaHQsIHRpbWUgdG8gcmV2aXNpdCB0aGUgY29uZmlndXJhdGlvbnMgd2UncmUgZGVhbGluZyB3aXRoOiBgWlJBTWAsIGBaUkFNX0JBQ0tFTkRfTFo0YCwgYFpSQU1fQkFDS0VORF9MWjRIQ2AsIGBaUkFNX0JBQ0tFTkRfWlNURGAsIGBaUkFNX0JBQ0tFTkRfREVGTEFURWAsIGBaUkFNX0JBQ0tFTkRfODQyYCwgYFpSQU1fQkFDS0VORF9MWk9gLCBhbmQgYFpSQU1fTVVMVElfQ09NUGAuIFRoZXNlIGFyZSBpbXBvcnRhbnQgYmVjYXVzZSBvZiB0aGUgcGF0Y2gncyBjaGFuZ2VzLlxuXG5UaGUgZ2lzdCBvZiBpdCBpcyB0aGlzOiB0aGUgcGF0Y2ggaW1wbGVtZW50cyB2YWxpZGF0aW9uIGZvciBjb21wcmVzc2lvbiBwYXJhbWV0ZXJzIGxpa2UgZGljdGlvbmFyeSBzaXplIGFuZCBjb21wcmVzc2lvbiBsZXZlbCBhY3Jvc3MgbXVsdGlwbGUgenJhbSBiYWNrZW5kcyAoODQyLCBkZWZsYXRlLCBsejQsIGx6NGhjLCBsem8sIGx6b3JsZSwgYW5kIHpzdGQpLiBJdCBhbHNvIG1vZGlmaWVzIHRoZSBzeXNmcyBoYW5kbGVycyBmb3IgenJhbSBjb21wcmVzc2lvbiBhbGdvcml0aG1zIHRvIHJlc2V0IHBhcmFtZXRlcnMgd2hlbiB0aGUgYWxnb3JpdGhtIGlzIGNoYW5nZWQuIFRoZXNlIGNoYW5nZXMgYWZmZWN0IHRoZSBjb3JlIGZ1bmN0aW9uYWwgbG9naWMgb2YgY29uZmlndXJpbmcgenJhbSBjb21wcmVzc2lvbiB2aWEgc3lzZnMsIG1ha2luZyBpdCByZWFjaGFibGUgYW5kIGEgcHJpbWUgdGFyZ2V0IGZvciBmdXp6aW5nIHZpYSBzeXprYWxsZXIuXG5cbkxldCdzIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTYwMTUsIk91dHB1dFRva2VucyI6MjU1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzM4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE5OjA3OjI4LjI0OTQ1MjM1NVoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk3MzMxNjE4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJaUkFNXCIsXG4gICAgXCJaUkFNX0JBQ0tFTkRfTFo0XCIsXG4gICAgXCJaUkFNX0JBQ0tFTkRfTFo0SENcIixcbiAgICBcIlpSQU1fQkFDS0VORF9aU1REXCIsXG4gICAgXCJaUkFNX0JBQ0tFTkRfREVGTEFURVwiLFxuICAgIFwiWlJBTV9CQUNLRU5EXzg0MlwiLFxuICAgIFwiWlJBTV9CQUNLRU5EX0xaT1wiLFxuICAgIFwiWlJBTV9NVUxUSV9DT01QXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYWxnb3JpdGhtX3BhcmFtc19zdG9yZVwiLFxuICAgIFwiY29tcF9hbGdvcml0aG1fc3RvcmVcIixcbiAgICBcInJlY29tcF9hbGdvcml0aG1fc3RvcmVcIixcbiAgICBcImRpc2tzaXplX3N0b3JlXCIsXG4gICAgXCJ6Y29tcF9jcmVhdGVcIixcbiAgICBcImNvbXBfcGFyYW1zX3N0b3JlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyB2YWxpZGF0aW9uIGZvciBjb21wcmVzc2lvbiBwYXJhbWV0ZXJzIChsaWtlIGRpY3Rpb25hcnkgc2l6ZSBhbmQgY29tcHJlc3Npb24gbGV2ZWwpIGluIHZhcmlvdXMgenJhbSBiYWNrZW5kcyAoODQyLCBkZWZsYXRlLCBsejQsIGx6NGhjLCBsem8sIGx6b3JsZSwgenN0ZCkuIEl0IGFsc28gbW9kaWZpZXMgdGhlIHN5c2ZzIGhhbmRsZXJzIGZvciB6cmFtIGNvbXByZXNzaW9uIGFsZ29yaXRobXMgdG8gcmVzZXQgcGFyYW1ldGVycyB3aGVuIHRoZSBhbGdvcml0aG0gaXMgY2hhbmdlZC4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgdGhlIGZ1bmN0aW9uYWwgbG9naWMgb2YgenJhbSBjb25maWd1cmF0aW9uIHZpYSBzeXNmcywgd2hpY2ggaXMgcmVhY2hhYmxlIGFuZCBjYW4gYmUgZnV6emVkIGJ5IHN5emthbGxlci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJaUkFNXCIsXG4gICAgXCJaUkFNX0JBQ0tFTkRfTFo0XCIsXG4gICAgXCJaUkFNX0JBQ0tFTkRfTFo0SENcIixcbiAgICBcIlpSQU1fQkFDS0VORF9aU1REXCIsXG4gICAgXCJaUkFNX0JBQ0tFTkRfREVGTEFURVwiLFxuICAgIFwiWlJBTV9CQUNLRU5EXzg0MlwiLFxuICAgIFwiWlJBTV9CQUNLRU5EX0xaT1wiLFxuICAgIFwiWlJBTV9NVUxUSV9DT01QXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYWxnb3JpdGhtX3BhcmFtc19zdG9yZVwiLFxuICAgIFwiY29tcF9hbGdvcml0aG1fc3RvcmVcIixcbiAgICBcInJlY29tcF9hbGdvcml0aG1fc3RvcmVcIixcbiAgICBcImRpc2tzaXplX3N0b3JlXCIsXG4gICAgXCJ6Y29tcF9jcmVhdGVcIixcbiAgICBcImNvbXBfcGFyYW1zX3N0b3JlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyB2YWxpZGF0aW9uIGZvciBjb21wcmVzc2lvbiBwYXJhbWV0ZXJzIChsaWtlIGRpY3Rpb25hcnkgc2l6ZSBhbmQgY29tcHJlc3Npb24gbGV2ZWwpIGluIHZhcmlvdXMgenJhbSBiYWNrZW5kcyAoODQyLCBkZWZsYXRlLCBsejQsIGx6NGhjLCBsem8sIGx6b3JsZSwgenN0ZCkuIEl0IGFsc28gbW9kaWZpZXMgdGhlIHN5c2ZzIGhhbmRsZXJzIGZvciB6cmFtIGNvbXByZXNzaW9uIGFsZ29yaXRobXMgdG8gcmVzZXQgcGFyYW1ldGVycyB3aGVuIHRoZSBhbGdvcml0aG0gaXMgY2hhbmdlZC4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgdGhlIGZ1bmN0aW9uYWwgbG9naWMgb2YgenJhbSBjb25maWd1cmF0aW9uIHZpYSBzeXNmcywgd2hpY2ggaXMgcmVhY2hhYmxlIGFuZCBjYW4gYmUgZnV6emVkIGJ5IHN5emthbGxlci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowxhdzb[1] Phase: Succeeded StartedAt: 2026-08-03 19:07:39 +0000 UTC FinishedAt: 2026-08-03 19:07:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxhdzb[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-03 19:07:39 +0000 UTC FinishedAt: 2026-08-03 19:07:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxhdzb[2] Phase: Succeeded StartedAt: 2026-08-03 19:07:39 +0000 UTC FinishedAt: 2026-08-03 19:56:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxhdzb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO","ZRAM_MULTI_COMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["algorithm_params_store","comp_algorithm_store","recomp_algorithm_store","disksize_store","zcomp_create","comp_params_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO","ZRAM_MULTI_COMP"],"series_id":"b3f2e90d-84cc-4ed4-9d18-4944ecbedc9d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN) Phase: Failed StartedAt: 2026-08-03 19:07:39 +0000 UTC FinishedAt: 2026-08-03 19:56:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO","ZRAM_MULTI_COMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["algorithm_params_store","comp_algorithm_store","recomp_algorithm_store","disksize_store","zcomp_create","comp_params_store"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO","ZRAM_MULTI_COMP"],"series_id":"b3f2e90d-84cc-4ed4-9d18-4944ecbedc9d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowxhdzb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO","ZRAM_MULTI_COMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["algorithm_params_store","comp_algorithm_store","recomp_algorithm_store","disksize_store","zcomp_create","comp_params_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO","ZRAM_MULTI_COMP"],"series_id":"b3f2e90d-84cc-4ed4-9d18-4944ecbedc9d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-03 19:07:39 +0000 UTC FinishedAt: 2026-08-03 19:07:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxhdzb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO","ZRAM_MULTI_COMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["algorithm_params_store","comp_algorithm_store","recomp_algorithm_store","disksize_store","zcomp_create","comp_params_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO","ZRAM_MULTI_COMP"],"series_id":"b3f2e90d-84cc-4ed4-9d18-4944ecbedc9d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-03 19:07:39 +0000 UTC FinishedAt: 2026-08-03 19:07:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO","ZRAM_MULTI_COMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflowxhdzb/series-workflowxhdzb-convert-artifact-3648688933/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxhdzb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO","ZRAM_MULTI_COMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["algorithm_params_store","comp_algorithm_store","recomp_algorithm_store","disksize_store","zcomp_create","comp_params_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO","ZRAM_MULTI_COMP"],"series_id":"b3f2e90d-84cc-4ed4-9d18-4944ecbedc9d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-03 19:07:49 +0000 UTC FinishedAt: 2026-08-03 19:24:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxhdzb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO","ZRAM_MULTI_COMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["algorithm_params_store","comp_algorithm_store","recomp_algorithm_store","disksize_store","zcomp_create","comp_params_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO","ZRAM_MULTI_COMP"],"series_id":"b3f2e90d-84cc-4ed4-9d18-4944ecbedc9d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-03 19:07:49 +0000 UTC FinishedAt: 2026-08-03 19:24:40 +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:*3fba1d40-3e02-4155-97fc-82d94462c35f,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-workflowxhdzb/series-workflowxhdzb-convert-artifact-3648688933/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": "8960e491-6a0b-4264-b93d-1bef882268e3", "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-workflowxhdzb/series-workflowxhdzb-build-action-3381555019/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxhdzb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO","ZRAM_MULTI_COMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["algorithm_params_store","comp_algorithm_store","recomp_algorithm_store","disksize_store","zcomp_create","comp_params_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO","ZRAM_MULTI_COMP"],"series_id":"b3f2e90d-84cc-4ed4-9d18-4944ecbedc9d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-03 19:07:49 +0000 UTC FinishedAt: 2026-08-03 19:24:30 +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:*3fba1d40-3e02-4155-97fc-82d94462c35f,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-workflowxhdzb/series-workflowxhdzb-convert-artifact-3648688933/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": "8960e491-6a0b-4264-b93d-1bef882268e3", "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-workflowxhdzb/series-workflowxhdzb-build-action-3381555019/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxhdzb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO","ZRAM_MULTI_COMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["algorithm_params_store","comp_algorithm_store","recomp_algorithm_store","disksize_store","zcomp_create","comp_params_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO","ZRAM_MULTI_COMP"],"series_id":"b3f2e90d-84cc-4ed4-9d18-4944ecbedc9d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-03 19:24:40 +0000 UTC FinishedAt: 2026-08-03 19:24:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxhdzb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO","ZRAM_MULTI_COMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["algorithm_params_store","comp_algorithm_store","recomp_algorithm_store","disksize_store","zcomp_create","comp_params_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO","ZRAM_MULTI_COMP"],"series_id":"b3f2e90d-84cc-4ed4-9d18-4944ecbedc9d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-03 19:24:40 +0000 UTC FinishedAt: 2026-08-03 19:24:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxhdzb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO","ZRAM_MULTI_COMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["algorithm_params_store","comp_algorithm_store","recomp_algorithm_store","disksize_store","zcomp_create","comp_params_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO","ZRAM_MULTI_COMP"],"series_id":"b3f2e90d-84cc-4ed4-9d18-4944ecbedc9d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-03 19:24:40 +0000 UTC FinishedAt: 2026-08-03 19:24:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxhdzb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO","ZRAM_MULTI_COMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["algorithm_params_store","comp_algorithm_store","recomp_algorithm_store","disksize_store","zcomp_create","comp_params_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO","ZRAM_MULTI_COMP"],"series_id":"b3f2e90d-84cc-4ed4-9d18-4944ecbedc9d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-03 19:24:40 +0000 UTC FinishedAt: 2026-08-03 19:24:45 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO","ZRAM_MULTI_COMP"],"series_id":"b3f2e90d-84cc-4ed4-9d18-4944ecbedc9d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflowxhdzb/series-workflowxhdzb-convert-artifact-2814513664/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxhdzb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO","ZRAM_MULTI_COMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["algorithm_params_store","comp_algorithm_store","recomp_algorithm_store","disksize_store","zcomp_create","comp_params_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO","ZRAM_MULTI_COMP"],"series_id":"b3f2e90d-84cc-4ed4-9d18-4944ecbedc9d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-03 19:24:50 +0000 UTC FinishedAt: 2026-08-03 19:56:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxhdzb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO","ZRAM_MULTI_COMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["algorithm_params_store","comp_algorithm_store","recomp_algorithm_store","disksize_store","zcomp_create","comp_params_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO","ZRAM_MULTI_COMP"],"series_id":"b3f2e90d-84cc-4ed4-9d18-4944ecbedc9d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-03 19:24:50 +0000 UTC FinishedAt: 2026-08-03 19:55:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*8960e491-6a0b-4264-b93d-1bef882268e3,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-workflowxhdzb/series-workflowxhdzb-build-action-3381555019/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": false },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-workflowxhdzb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO","ZRAM_MULTI_COMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["algorithm_params_store","comp_algorithm_store","recomp_algorithm_store","disksize_store","zcomp_create","comp_params_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO","ZRAM_MULTI_COMP"],"series_id":"b3f2e90d-84cc-4ed4-9d18-4944ecbedc9d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5] Phase: Failed StartedAt: 2026-08-03 19:56:02 +0000 UTC FinishedAt: 2026-08-03 19:56:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxhdzb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO","ZRAM_MULTI_COMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["algorithm_params_store","comp_algorithm_store","recomp_algorithm_store","disksize_store","zcomp_create","comp_params_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO","ZRAM_MULTI_COMP"],"series_id":"b3f2e90d-84cc-4ed4-9d18-4944ecbedc9d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Failed StartedAt: 2026-08-03 19:56:02 +0000 UTC FinishedAt: 2026-08-03 19:56:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}