Name: series-workflowhd82k Phase: Succeeded StartedAt: 2026-08-11 14:15:26 +0000 UTC FinishedAt: 2026-08-11 18:03:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhd82k[0] Phase: Succeeded StartedAt: 2026-08-11 14:15:26 +0000 UTC FinishedAt: 2026-08-11 14:18:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhd82k[0].run-triage Phase: Succeeded StartedAt: 2026-08-11 14:15:26 +0000 UTC FinishedAt: 2026-08-11 14:18:57 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "bcc44b6785f216eb939226ade6e3910baa30516b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "SLUB_KUNIT_TEST", "SLUB_DEBUG", "KUNIT" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "bcc44b6785f216eb939226ade6e3910baa30516b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "SLUB_KUNIT_TEST", "SLUB_DEBUG", "KUNIT" ], "series_id": "cf1ce7dd-9456-4a36-be8e-43c7cf4f3451" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDE0OjE4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NMVUJfS1VOSVRfVEVTVCYjMzQ7LAogICAgJiMzNDtTTFVCX0RFQlVHJiMzNDssCiAgICAmIzM0O0tVTklUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGRlZmluaXRpb24gb2YgYFpFUk9fU0laRV9QVFJgIGFuZCBgWkVST19PUl9OVUxMX1BUUmAgaW4gdGhlIHNsYWIgYWxsb2NhdG9yIGhlYWRlcnMgdG8gZW5zdXJlIHByb3BlciBhbGlnbm1lbnQgYW5kIHN0cmljdGVyIHBvaW50ZXIgY2hlY2tpbmcuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGFsbG9jYXRpb25zLCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSwgb3IgbG9naWMgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIEFueSBidWdzIHJlc3VsdGluZyBmcm9tIHRoZXNlIGNoYW5nZXMgd291bGQgbWFuaWZlc3QgYXMgaW52YWxpZCBwb2ludGVyIGRlcmVmZXJlbmNlcyBvciBtZW1vcnkgY29ycnVwdGlvbiwgd2hpY2ggYXJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBzdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgZGVmYXVsdCBidWcgZGV0ZWN0b3JzLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzZSBvciBpbmZvLWxlYWtzIHRoYXQgd291bGQgbmVjZXNzaXRhdGUgS01TQU4uJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIFpFUk9fT1JfTlVMTF9QVFIgdG8gc3RyaWN0bHkgY2hlY2sgZm9yIDAgb3IgWkVST19TSVpFX1BUUiwgbWVhbmluZyBzbWFsbCBpbnZhbGlkIHBvaW50ZXJzIChsaWtlIEVSUl9QVFIpIHBhc3NlZCB0byBrZnJlZSB3aWxsIG5vdyBjYXVzZSBhIGNyYXNoIGluc3RlYWQgb2YgYmVpbmcgc2lsZW50bHkgaWdub3JlZC4gVGhpcyBpcyBhIGNvcmUgYWxsb2NhdG9yIGNoYW5nZSB0aGF0IGNhbiBleHBvc2UgYnVncyBhY3Jvc3MgdGhlIGtlcm5lbC4gQSBrdW5pdCB0ZXN0IGlzIGFsc28gYWRkZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMTQ6MTg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA3NTM3YzYxMjhkNTlmMWYwNTVhMDg5NmRkYzVlYzBjZWY3NTRlZDkyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgMTEgMTQ6MTg6MDAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9zbGFiLmggYi9pbmNsdWRlL2xpbnV4L3NsYWIuaFxuaW5kZXggMzJjOWY4ZWQ3YWUyMC4uMDIzZTEwYWI3N2Y4ZCAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvc2xhYi5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3NsYWIuaFxuQEAgLTI1OSwxNiAmIzQzOzI1OSwyMyBAQCBlbnVtIF9zbGFiX2ZsYWdfYml0cyB7XG4gXG4gLypcbiAgKiBaRVJPX1NJWkVfUFRSIHdpbGwgYmUgcmV0dXJuZWQgZm9yIHplcm8gc2l6ZWQga21hbGxvYyByZXF1ZXN0cy5cbiYjNDM7ICogSXQgc2F0aXNmaWVzIHRoZSBhbGlnbm1lbnQgcHJvbWlzZWQgYnkgX19hc3N1bWVfa21hbGxvY19hbGlnbm1lbnRcbiYjNDM7ICogYW5kIGtlZXBzIHRoZSBoaXN0b3JpYyB2YWx1ZSAxNiB3aGVyZSB0aGF0IGlzIGFscmVhZHkgYWxpZ25lZC5cbiAgKlxuICAqIERlcmVmZXJlbmNpbmcgWkVST19TSVpFX1BUUiB3aWxsIGxlYWQgdG8gYSBkaXN0aW5jdCBhY2Nlc3MgZmF1bHQuXG4gICpcbiAgKiBaRVJPX1NJWkVfUFRSIGNhbiBiZSBwYXNzZWQgdG8ga2ZyZWUgdGhvdWdoIGluIHRoZSBzYW1lIHdheSB0aGF0IE5VTEwgY2FuLlxuICAqIEJvdGggbWFrZSBrZnJlZSBhIG5vLW9wLlxuICAqL1xuLSNkZWZpbmUgWkVST19TSVpFX1BUUiAoKHZvaWQgKikxNilcbiYjNDM7I2RlZmluZSBaRVJPX1NJWkVfUFRSICgodm9pZCAqKShBUkNIX0tNQUxMT0NfTUlOQUxJR04gXHUwMDNlIDE2ID8gXFxcbiYjNDM7XHRcdFx0XHRBUkNIX0tNQUxMT0NfTUlOQUxJR04gOiAxNikpXG4gXG4tI2RlZmluZSBaRVJPX09SX05VTExfUFRSKHgpICgodW5zaWduZWQgbG9uZykoeCkgXHUwMDNjPSBcXFxuLVx0XHRcdFx0KHVuc2lnbmVkIGxvbmcpWkVST19TSVpFX1BUUilcbiYjNDM7I2RlZmluZSBaRVJPX09SX05VTExfUFRSKHgpXHRcdFx0XHRcdFx0XFxcbiYjNDM7KHtcdFx0XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdHVuc2lnbmVkIGxvbmcgX196b25fcHRyID0gKHVuc2lnbmVkIGxvbmcpKHgpO1x0XHRcdFxcXG4mIzQzO1x0X196b25fcHRyID09IDAgfHxcdFx0XHRcdFx0XHRcXFxuJiM0MztcdF9fem9uX3B0ciA9PSAodW5zaWduZWQgbG9uZylaRVJPX1NJWkVfUFRSO1x0XHRcdFxcXG4mIzQzO30pXG4gXG4gI2luY2x1ZGUgXHUwMDNjbGludXgva2FzYW4uaFx1MDAzZVxuIFxuQEAgLTYyMiw2ICYjNDM7NjI5LDEzIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBrbWVtX2R1bXBfb2JqKHZvaWQgKm9iamVjdCkgeyByZXR1cm4gZmFsc2U7IH1cbiAjZGVmaW5lIEtNQUxMT0NfU0hJRlRfTE9XIGlsb2cyKEtNQUxMT0NfTUlOX1NJWkUpXG4gI2VuZGlmXG4gXG4mIzQzOy8qXG4mIzQzOyAqIEtlZXAgWkVST19TSVpFX1BUUiBhdCBtb3N0IDEyOCwgaS5lLiBiZWxvdyAweDEwMDogTElTVF9QT0lTT04xIGlzXG4mIzQzOyAqIDB4MTAwIHdoZW4gUE9JU09OX1BPSU5URVJfREVMVEEgaXMgMCwgYW5kIG5vIGFyY2hpdGVjdHVyZSBjdXJyZW50bHlcbiYjNDM7ICogaGFzIGFuIEFSQ0hfS01BTExPQ19NSU5BTElHTiBhYm92ZSAxMjguXG4mIzQzOyAqL1xuJiM0MztzdGF0aWNfYXNzZXJ0KEFSQ0hfS01BTExPQ19NSU5BTElHTiBcdTAwM2MgMHgxMDApO1xuJiM0MztcbiAvKlxuICAqIFNldHRpbmcgQVJDSF9TTEFCX01JTkFMSUdOIGluIGFyY2ggaGVhZGVycyBhbGxvd3MgYSBkaWZmZXJlbnQgYWxpZ25tZW50LlxuICAqIEludGVuZGVkIGZvciBhcmNoZXMgdGhhdCBnZXQgbWlzYWxpZ25tZW50IGZhdWx0cyBldmVuIGZvciA2NCBiaXQgaW50ZWdlclxuZGlmZiAtLWdpdCBhL2xpYi90ZXN0cy9zbHViX2t1bml0LmMgYi9saWIvdGVzdHMvc2x1Yl9rdW5pdC5jXG5pbmRleCBmYTZkMzFkYmNhMTY2Li5hMDJmYzZiNDAxZTNlIDEwMDY0NFxuLS0tIGEvbGliL3Rlc3RzL3NsdWJfa3VuaXQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbGliL3Rlc3RzL3NsdWJfa3VuaXQuY1xuQEAgLTM4MCw2ICYjNDM7MzgwLDQ4IEBAIHN0YXRpYyB2b2lkIHRlc3Rfa21hbGxvY19rZnJlZV9ub2xvY2soc3RydWN0IGt1bml0ICp0ZXN0KVxuIH1cbiAjZW5kaWZcbiBcbiYjNDM7c3RhdGljIHZvaWQgdGVzdF96ZXJvX3NpemVfYWxsb2Moc3RydWN0IGt1bml0ICp0ZXN0KVxuJiM0Mzt7XG4mIzQzO1x0dW5zaWduZWQgbG9uZyB6c3AgPSAodW5zaWduZWQgbG9uZylaRVJPX1NJWkVfUFRSO1xuJiM0MztcdHZvaWQgKnAsICpyO1xuJiM0MztcbiYjNDM7XHRzdGF0aWNfYXNzZXJ0KCh1bnNpZ25lZCBsb25nKVpFUk9fU0laRV9QVFIgJSBBUkNIX0tNQUxMT0NfTUlOQUxJR04gPT0gMCk7XG4mIzQzO1xuJiM0MztcdHAgPSBrbWFsbG9jKDAsIEdGUF9LRVJORUwpO1xuJiM0MztcdEtVTklUX0VYUEVDVF9QVFJfRVEodGVzdCwgcCwgWkVST19TSVpFX1BUUik7XG4mIzQzO1x0S1VOSVRfRVhQRUNUX0VRKHRlc3QsIGtzaXplKHApLCAwKTtcbiYjNDM7XHRrZnJlZShwKTtcbiYjNDM7XG4mIzQzO1x0S1VOSVRfRVhQRUNUX1BUUl9FUSh0ZXN0LCBremFsbG9jKDAsIEdGUF9LRVJORUwpLCBaRVJPX1NJWkVfUFRSKTtcbiYjNDM7XHRLVU5JVF9FWFBFQ1RfUFRSX0VRKHRlc3QsIGttYWxsb2NfYXJyYXkoMCwgOCwgR0ZQX0tFUk5FTCksIFpFUk9fU0laRV9QVFIpO1xuJiM0MztcdEtVTklUX0VYUEVDVF9QVFJfRVEodGVzdCwga2NhbGxvYyg0LCAwLCBHRlBfS0VSTkVMKSwgWkVST19TSVpFX1BUUik7XG4mIzQzO1xuJiM0MztcdHAgPSBrdm1hbGxvYygwLCBHRlBfS0VSTkVMKTtcbiYjNDM7XHRLVU5JVF9FWFBFQ1RfUFRSX0VRKHRlc3QsIHAsIFpFUk9fU0laRV9QVFIpO1xuJiM0MztcdGt2ZnJlZShwKTtcbiYjNDM7XG4mIzQzO1x0cCA9IGtyZWFsbG9jKE5VTEwsIDAsIEdGUF9LRVJORUwpO1xuJiM0MztcdEtVTklUX0VYUEVDVF9QVFJfRVEodGVzdCwgcCwgWkVST19TSVpFX1BUUik7XG4mIzQzO1x0ciA9IGtyZWFsbG9jKHAsIDY0LCBHRlBfS0VSTkVMKTtcbiYjNDM7XHRLVU5JVF9FWFBFQ1RfRkFMU0UodGVzdCwgWkVST19PUl9OVUxMX1BUUihyKSk7XG4mIzQzO1x0cCA9IGtyZWFsbG9jKHIsIDAsIEdGUF9LRVJORUwpO1xuJiM0MztcdEtVTklUX0VYUEVDVF9QVFJfRVEodGVzdCwgcCwgWkVST19TSVpFX1BUUik7XG4mIzQzO1x0a2ZyZWUocCk7XG4mIzQzO1xuJiM0MztcdC8qIE9ubHkgTlVMTCBhbmQgdGhlIHplcm8tc2l6ZSBzZW50aW5lbCBtYXRjaC4gKi9cbiYjNDM7XHRLVU5JVF9FWFBFQ1RfVFJVRSh0ZXN0LCBaRVJPX09SX05VTExfUFRSKE5VTEwpKTtcbiYjNDM7XHRLVU5JVF9FWFBFQ1RfVFJVRSh0ZXN0LCBaRVJPX09SX05VTExfUFRSKFpFUk9fU0laRV9QVFIpKTtcbiYjNDM7XHRLVU5JVF9FWFBFQ1RfRkFMU0UodGVzdCwgWkVST19PUl9OVUxMX1BUUigodm9pZCAqKTEpKTtcbiYjNDM7XHRLVU5JVF9FWFBFQ1RfRkFMU0UodGVzdCwgWkVST19PUl9OVUxMX1BUUigodm9pZCAqKSh6c3AgLSAxKSkpO1xuJiM0MztcdEtVTklUX0VYUEVDVF9GQUxTRSh0ZXN0LCBaRVJPX09SX05VTExfUFRSKCh2b2lkICopKHpzcCAmIzQzOyAxKSkpO1xuJiM0MztcdEtVTklUX0VYUEVDVF9GQUxTRSh0ZXN0LCBaRVJPX09SX05VTExfUFRSKCh2b2lkICopKHpzcCAqIDIpKSk7XG4mIzQzO1xuJiM0MztcdC8qIGZyZWVpbmcgdGhlIHNlbnRpbmVsIG11c3Qgc3RheSBhIG5vLW9wICovXG4mIzQzO1x0a2ZyZWUoWkVST19TSVpFX1BUUik7XG4mIzQzO1x0a2ZyZWVfc2Vuc2l0aXZlKFpFUk9fU0laRV9QVFIpO1xuJiM0MztcdGt2ZnJlZShaRVJPX1NJWkVfUFRSKTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgaW50IHRlc3RfaW5pdChzdHJ1Y3Qga3VuaXQgKnRlc3QpXG4ge1xuIFx0c2xhYl9lcnJvcnMgPSAwO1xuQEAgLTQwNCw2ICYjNDM7NDQ2LDcgQEAgc3RhdGljIHN0cnVjdCBrdW5pdF9jYXNlIHRlc3RfY2FzZXNbXSA9IHtcbiBcdEtVTklUX0NBU0UodGVzdF9rZnJlZV9yY3Vfd3FfZGVzdHJveSksXG4gXHRLVU5JVF9DQVNFKHRlc3RfbGVha19kZXN0cm95KSxcbiBcdEtVTklUX0NBU0UodGVzdF9rcmVhbGxvY19yZWR6b25lX3plcm9pbmcpLFxuJiM0MztcdEtVTklUX0NBU0UodGVzdF96ZXJvX3NpemVfYWxsb2MpLFxuICNpZmRlZiBDT05GSUdfUEVSRl9FVkVOVFNcbiBcdEtVTklUX0NBU0VfU0xPVyh0ZXN0X2ttYWxsb2Nfa2ZyZWVfbm9sb2NrKSxcbiAjZW5kaWZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAxNDoxODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7U0xVQl9LVU5JVF9URVNUJiMzNDssCiAgICAmIzM0O1NMVUJfREVCVUcmIzM0OywKICAgICYjMzQ7S1VOSVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgWkVST19PUl9OVUxMX1BUUiB0byBzdHJpY3RseSBjaGVjayBmb3IgMCBvciBaRVJPX1NJWkVfUFRSLCBtZWFuaW5nIHNtYWxsIGludmFsaWQgcG9pbnRlcnMgKGxpa2UgRVJSX1BUUikgcGFzc2VkIHRvIGtmcmVlIHdpbGwgbm93IGNhdXNlIGEgY3Jhc2ggaW5zdGVhZCBvZiBiZWluZyBzaWxlbnRseSBpZ25vcmVkLiBUaGlzIGlzIGEgY29yZSBhbGxvY2F0b3IgY2hhbmdlIHRoYXQgY2FuIGV4cG9zZSBidWdzIGFjcm9zcyB0aGUga2VybmVsLiBBIGt1bml0IHRlc3QgaXMgYWxzbyBhZGRlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDc1MzdjNjEyOGQ1OWYxZjA1NWEwODk2ZGRjNWVjMGNlZjc1NGVkOTIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEF1ZyAxMSAxNDoxODowMCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc2xhYi5oIGIvaW5jbHVkZS9saW51eC9zbGFiLmgKaW5kZXggMzJjOWY4ZWQ3YWUyMC4uMDIzZTEwYWI3N2Y4ZCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9zbGFiLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9zbGFiLmgKQEAgLTI1OSwxNiAmIzQzOzI1OSwyMyBAQCBlbnVtIF9zbGFiX2ZsYWdfYml0cyB7CiAKIC8qCiAgKiBaRVJPX1NJWkVfUFRSIHdpbGwgYmUgcmV0dXJuZWQgZm9yIHplcm8gc2l6ZWQga21hbGxvYyByZXF1ZXN0cy4KJiM0MzsgKiBJdCBzYXRpc2ZpZXMgdGhlIGFsaWdubWVudCBwcm9taXNlZCBieSBfX2Fzc3VtZV9rbWFsbG9jX2FsaWdubWVudAomIzQzOyAqIGFuZCBrZWVwcyB0aGUgaGlzdG9yaWMgdmFsdWUgMTYgd2hlcmUgdGhhdCBpcyBhbHJlYWR5IGFsaWduZWQuCiAgKgogICogRGVyZWZlcmVuY2luZyBaRVJPX1NJWkVfUFRSIHdpbGwgbGVhZCB0byBhIGRpc3RpbmN0IGFjY2VzcyBmYXVsdC4KICAqCiAgKiBaRVJPX1NJWkVfUFRSIGNhbiBiZSBwYXNzZWQgdG8ga2ZyZWUgdGhvdWdoIGluIHRoZSBzYW1lIHdheSB0aGF0IE5VTEwgY2FuLgogICogQm90aCBtYWtlIGtmcmVlIGEgbm8tb3AuCiAgKi8KLSNkZWZpbmUgWkVST19TSVpFX1BUUiAoKHZvaWQgKikxNikKJiM0MzsjZGVmaW5lIFpFUk9fU0laRV9QVFIgKCh2b2lkICopKEFSQ0hfS01BTExPQ19NSU5BTElHTiAmZ3Q7IDE2ID8gXAomIzQzOwkJCQlBUkNIX0tNQUxMT0NfTUlOQUxJR04gOiAxNikpCiAKLSNkZWZpbmUgWkVST19PUl9OVUxMX1BUUih4KSAoKHVuc2lnbmVkIGxvbmcpKHgpICZsdDs9IFwKLQkJCQkodW5zaWduZWQgbG9uZylaRVJPX1NJWkVfUFRSKQomIzQzOyNkZWZpbmUgWkVST19PUl9OVUxMX1BUUih4KQkJCQkJCVwKJiM0MzsoewkJCQkJCQkJCVwKJiM0MzsJdW5zaWduZWQgbG9uZyBfX3pvbl9wdHIgPSAodW5zaWduZWQgbG9uZykoeCk7CQkJXAomIzQzOwlfX3pvbl9wdHIgPT0gMCB8fAkJCQkJCVwKJiM0MzsJX196b25fcHRyID09ICh1bnNpZ25lZCBsb25nKVpFUk9fU0laRV9QVFI7CQkJXAomIzQzO30pCiAKICNpbmNsdWRlICZsdDtsaW51eC9rYXNhbi5oJmd0OwogCkBAIC02MjIsNiAmIzQzOzYyOSwxMyBAQCBzdGF0aWMgaW5saW5lIGJvb2wga21lbV9kdW1wX29iaih2b2lkICpvYmplY3QpIHsgcmV0dXJuIGZhbHNlOyB9CiAjZGVmaW5lIEtNQUxMT0NfU0hJRlRfTE9XIGlsb2cyKEtNQUxMT0NfTUlOX1NJWkUpCiAjZW5kaWYKIAomIzQzOy8qCiYjNDM7ICogS2VlcCBaRVJPX1NJWkVfUFRSIGF0IG1vc3QgMTI4LCBpLmUuIGJlbG93IDB4MTAwOiBMSVNUX1BPSVNPTjEgaXMKJiM0MzsgKiAweDEwMCB3aGVuIFBPSVNPTl9QT0lOVEVSX0RFTFRBIGlzIDAsIGFuZCBubyBhcmNoaXRlY3R1cmUgY3VycmVudGx5CiYjNDM7ICogaGFzIGFuIEFSQ0hfS01BTExPQ19NSU5BTElHTiBhYm92ZSAxMjguCiYjNDM7ICovCiYjNDM7c3RhdGljX2Fzc2VydChBUkNIX0tNQUxMT0NfTUlOQUxJR04gJmx0OyAweDEwMCk7CiYjNDM7CiAvKgogICogU2V0dGluZyBBUkNIX1NMQUJfTUlOQUxJR04gaW4gYXJjaCBoZWFkZXJzIGFsbG93cyBhIGRpZmZlcmVudCBhbGlnbm1lbnQuCiAgKiBJbnRlbmRlZCBmb3IgYXJjaGVzIHRoYXQgZ2V0IG1pc2FsaWdubWVudCBmYXVsdHMgZXZlbiBmb3IgNjQgYml0IGludGVnZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXN0cy9zbHViX2t1bml0LmMgYi9saWIvdGVzdHMvc2x1Yl9rdW5pdC5jCmluZGV4IGZhNmQzMWRiY2ExNjYuLmEwMmZjNmI0MDFlM2UgMTAwNjQ0Ci0tLSBhL2xpYi90ZXN0cy9zbHViX2t1bml0LmMKJiM0MzsmIzQzOyYjNDM7IGIvbGliL3Rlc3RzL3NsdWJfa3VuaXQuYwpAQCAtMzgwLDYgJiM0MzszODAsNDggQEAgc3RhdGljIHZvaWQgdGVzdF9rbWFsbG9jX2tmcmVlX25vbG9jayhzdHJ1Y3Qga3VuaXQgKnRlc3QpCiB9CiAjZW5kaWYKIAomIzQzO3N0YXRpYyB2b2lkIHRlc3RfemVyb19zaXplX2FsbG9jKHN0cnVjdCBrdW5pdCAqdGVzdCkKJiM0Mzt7CiYjNDM7CXVuc2lnbmVkIGxvbmcgenNwID0gKHVuc2lnbmVkIGxvbmcpWkVST19TSVpFX1BUUjsKJiM0MzsJdm9pZCAqcCwgKnI7CiYjNDM7CiYjNDM7CXN0YXRpY19hc3NlcnQoKHVuc2lnbmVkIGxvbmcpWkVST19TSVpFX1BUUiAlIEFSQ0hfS01BTExPQ19NSU5BTElHTiA9PSAwKTsKJiM0MzsKJiM0MzsJcCA9IGttYWxsb2MoMCwgR0ZQX0tFUk5FTCk7CiYjNDM7CUtVTklUX0VYUEVDVF9QVFJfRVEodGVzdCwgcCwgWkVST19TSVpFX1BUUik7CiYjNDM7CUtVTklUX0VYUEVDVF9FUSh0ZXN0LCBrc2l6ZShwKSwgMCk7CiYjNDM7CWtmcmVlKHApOwomIzQzOwomIzQzOwlLVU5JVF9FWFBFQ1RfUFRSX0VRKHRlc3QsIGt6YWxsb2MoMCwgR0ZQX0tFUk5FTCksIFpFUk9fU0laRV9QVFIpOwomIzQzOwlLVU5JVF9FWFBFQ1RfUFRSX0VRKHRlc3QsIGttYWxsb2NfYXJyYXkoMCwgOCwgR0ZQX0tFUk5FTCksIFpFUk9fU0laRV9QVFIpOwomIzQzOwlLVU5JVF9FWFBFQ1RfUFRSX0VRKHRlc3QsIGtjYWxsb2MoNCwgMCwgR0ZQX0tFUk5FTCksIFpFUk9fU0laRV9QVFIpOwomIzQzOwomIzQzOwlwID0ga3ZtYWxsb2MoMCwgR0ZQX0tFUk5FTCk7CiYjNDM7CUtVTklUX0VYUEVDVF9QVFJfRVEodGVzdCwgcCwgWkVST19TSVpFX1BUUik7CiYjNDM7CWt2ZnJlZShwKTsKJiM0MzsKJiM0MzsJcCA9IGtyZWFsbG9jKE5VTEwsIDAsIEdGUF9LRVJORUwpOwomIzQzOwlLVU5JVF9FWFBFQ1RfUFRSX0VRKHRlc3QsIHAsIFpFUk9fU0laRV9QVFIpOwomIzQzOwlyID0ga3JlYWxsb2MocCwgNjQsIEdGUF9LRVJORUwpOwomIzQzOwlLVU5JVF9FWFBFQ1RfRkFMU0UodGVzdCwgWkVST19PUl9OVUxMX1BUUihyKSk7CiYjNDM7CXAgPSBrcmVhbGxvYyhyLCAwLCBHRlBfS0VSTkVMKTsKJiM0MzsJS1VOSVRfRVhQRUNUX1BUUl9FUSh0ZXN0LCBwLCBaRVJPX1NJWkVfUFRSKTsKJiM0MzsJa2ZyZWUocCk7CiYjNDM7CiYjNDM7CS8qIE9ubHkgTlVMTCBhbmQgdGhlIHplcm8tc2l6ZSBzZW50aW5lbCBtYXRjaC4gKi8KJiM0MzsJS1VOSVRfRVhQRUNUX1RSVUUodGVzdCwgWkVST19PUl9OVUxMX1BUUihOVUxMKSk7CiYjNDM7CUtVTklUX0VYUEVDVF9UUlVFKHRlc3QsIFpFUk9fT1JfTlVMTF9QVFIoWkVST19TSVpFX1BUUikpOwomIzQzOwlLVU5JVF9FWFBFQ1RfRkFMU0UodGVzdCwgWkVST19PUl9OVUxMX1BUUigodm9pZCAqKTEpKTsKJiM0MzsJS1VOSVRfRVhQRUNUX0ZBTFNFKHRlc3QsIFpFUk9fT1JfTlVMTF9QVFIoKHZvaWQgKikoenNwIC0gMSkpKTsKJiM0MzsJS1VOSVRfRVhQRUNUX0ZBTFNFKHRlc3QsIFpFUk9fT1JfTlVMTF9QVFIoKHZvaWQgKikoenNwICYjNDM7IDEpKSk7CiYjNDM7CUtVTklUX0VYUEVDVF9GQUxTRSh0ZXN0LCBaRVJPX09SX05VTExfUFRSKCh2b2lkICopKHpzcCAqIDIpKSk7CiYjNDM7CiYjNDM7CS8qIGZyZWVpbmcgdGhlIHNlbnRpbmVsIG11c3Qgc3RheSBhIG5vLW9wICovCiYjNDM7CWtmcmVlKFpFUk9fU0laRV9QVFIpOwomIzQzOwlrZnJlZV9zZW5zaXRpdmUoWkVST19TSVpFX1BUUik7CiYjNDM7CWt2ZnJlZShaRVJPX1NJWkVfUFRSKTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgaW50IHRlc3RfaW5pdChzdHJ1Y3Qga3VuaXQgKnRlc3QpCiB7CiAJc2xhYl9lcnJvcnMgPSAwOwpAQCAtNDA0LDYgJiM0Mzs0NDYsNyBAQCBzdGF0aWMgc3RydWN0IGt1bml0X2Nhc2UgdGVzdF9jYXNlc1tdID0gewogCUtVTklUX0NBU0UodGVzdF9rZnJlZV9yY3Vfd3FfZGVzdHJveSksCiAJS1VOSVRfQ0FTRSh0ZXN0X2xlYWtfZGVzdHJveSksCiAJS1VOSVRfQ0FTRSh0ZXN0X2tyZWFsbG9jX3JlZHpvbmVfemVyb2luZyksCiYjNDM7CUtVTklUX0NBU0UodGVzdF96ZXJvX3NpemVfYWxsb2MpLAogI2lmZGVmIENPTkZJR19QRVJGX0VWRU5UUwogCUtVTklUX0NBU0VfU0xPVyh0ZXN0X2ttYWxsb2Nfa2ZyZWVfbm9sb2NrKSwKICNlbmRpZgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAxNDoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzE3CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogMzQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIENvcmUgS2VybmVsIENoYW5nZTogU2xhYiBBbGxvY2F0b3IgSGVhZGVycyoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBpbmNsdWRlL2xpbnV4L3NsYWIuaGAsIHNwZWNpZmljYWxseSB0d2Vha2luZyBob3cgYFpFUk9fU0laRV9QVFJgIGFuZCBgWkVST19PUl9OVUxMX1BUUih4KWAgYXJlIGRlZmluZWQuIFRoZSBmYWN0IHRoYXQgaXQmIzM5O3MgYWx0ZXJpbmcgdGhlc2UgY29yZSBzbGFiIGFsbG9jYXRvciBoZWFkZXJzIGltbWVkaWF0ZWx5IGdldHMgbXkgYXR0ZW50aW9uLiBUaGlzIGlzIGxvdy1sZXZlbCwgY3JpdGljYWwgc3R1ZmYuIEFuZCB0aGVyZSYjMzk7cyBhIG5ldyBLVW5pdCB0ZXN0LCBgdGVzdF96ZXJvX3NpemVfYWxsb2NgLCBhZGRlZC4gSW50ZXJlc3RpbmcuCgpUaGUgYFpFUk9fU0laRV9QVFJgIGNoYW5nZSBsb29rcyBsaWtlIGl0JiMzOTtzIG1ha2luZyBpdCBkeW5hbWljYWxseSBkZXBlbmRlbnQgb24gYEFSQ0hfS01BTExPQ19NSU5BTElHTmAgbm93LiBUaGUgYFpFUk9fT1JfTlVMTF9QVFIoeClgIGNoYW5nZSBpcyBtb3JlIGludGVyZXN0aW5nLiBJdCYjMzk7cyBub3cgYmVpbmcgc3RyaWN0IGFib3V0IGNoZWNraW5nIGZvciAqZXhhY3RseSogYDBgIG9yIGBaRVJPX1NJWkVfUFRSYCwgbm90IGxlc3MgdGhhbiBvciBlcXVhbCB0byBgWkVST19TSVpFX1BUUmAgYXMgYmVmb3JlLiBUaGF0JiMzOTtzIGEgZGVmaW5pdGUgYmVoYXZpb3IgY2hhbmdlLiBUaGlzIGNvdWxkIGludHJvZHVjZSBvciByZXNvbHZlIHN1YnRsZSBtZW1vcnktcmVsYXRlZCBidWdzLgoKVGhlIHF1ZXN0aW9uIGlzLCBkb2VzIHRoaXMgd2FycmFudCBmdXp6aW5nIGVmZm9ydD8gSXQmIzM5O3MgYSBtYWNybyBjaGFuZ2UsIGFuZCB0aGVzZSBtYWNyb3MgYXJlICpldmVyeXdoZXJlKi4gVGhlIHBvdGVudGlhbCBmdW5jdGlvbmFsIGltcGFjdCBpcyBkZWZpbml0ZWx5IHRoZXJlLiBXZSYjMzk7cmUgdGFsa2luZyBhYm91dCBhIGNoYW5nZSBpbiBob3cgbWVtb3J5IGFsbG9jYXRpb25zIGFyZSBoYW5kbGVkIGF0IGEgdmVyeSBiYXNpYyBsZXZlbC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHJpZ2h0IHRhcmdldC4KClNpbmNlIHRoaXMgaXMgc3VjaCBhIGdsb2JhbCBjaGFuZ2UsIHNwZWNpZmljIGZ1bmN0aW9uLWxldmVsIGZ1enppbmcgbWlnaHQgYmUgdHJpY2t5LiBUaGUgS1VuaXQgdGVzdCBpcyBoZWxwZnVsLCBidXQgc3l6a2FsbGVyIGRvZXNuJiMzOTt0IHR5cGljYWxseSBmdXp6IHRob3NlIGRpcmVjdGx5IHVubGVzcyBleHBsaWNpdGx5IGNvbmZpZ3VyZWQuIFRoZSByZWFsIHZhbHVlIGlzIGlkZW50aWZ5aW5nIHRoZSBhcmVhcyBtb3N0IGltcGFjdGVkIGJ5IHRoZSBuZXcgYFpFUk9fT1JfTlVMTF9QVFJgIGRlZmluaXRpb24uIEFoLCByaWdodC4gSXQmIzM5O3MgdXNlZCBpbiBga2ZyZWVgLCBga3NpemVgLCBhbmQgYGtyZWFsbG9jYCEgVGhvc2UgYXJlIGFsbCBwcmltZSB0YXJnZXRzLiBUaW1lIHRvIHRyYWNrIGRvd24gKmV4YWN0bHkqIHdoZXJlIGBaRVJPX09SX05VTExfUFRSYCBpcyBiZWluZyB1c2VkIHRocm91Z2hvdXQgdGhlIGNvZGViYXNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDE0OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1pFUk9fT1JfTlVMTF9QVFImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9kZXZpY2UuYz0xMTk9c3RhdGljIHZvaWQgKmhsX2RtYV9hbGxvY19jb21tb24oc3RydWN0IGhsX2RldmljZSAqaGRldiwgc2l6ZV90IHNpemUsIGRtYV9hZGRyX3QgKmRtYV9oYW5kbGUsXG4tLVxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9kZXZpY2UuYy0xMzMtXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL2RldmljZS5jOjEzNDpcdGlmICh0cmFjZV9oYWJhbmFsYWJzX2RtYV9hbGxvY19lbmFibGVkKCkgXHUwMDI2XHUwMDI2ICFaRVJPX09SX05VTExfUFRSKHB0cikpXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL2RldmljZS5jLTEzNS1cdFx0dHJhY2VfaGFiYW5hbGFic19kbWFfYWxsb2MoXHUwMDI2KGhkZXYpLVx1MDAzZXBkZXYtXHUwMDNlZGV2LCAodTY0KSAodWludHB0cl90KSBwdHIsICpkbWFfaGFuZGxlLFxuLS1cbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vbWVtb3J5LmM9ODc9c3RhdGljIGludCBhbGxvY19kZXZpY2VfbWVtb3J5KHN0cnVjdCBobF9jdHggKmN0eCwgc3RydWN0IGhsX21lbV9pbiAqYXJncyxcbi0tXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL21lbW9yeS5jLTE0Mi1cdHBoeXNfcGdfcGFjay1cdTAwM2VwYWdlcyA9IGt2bWFsbG9jX2FycmF5KG51bV9wZ3MsIHNpemVvZih1NjQpLCBHRlBfS0VSTkVMKTtcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vbWVtb3J5LmM6MTQzOlx0aWYgKFpFUk9fT1JfTlVMTF9QVFIocGh5c19wZ19wYWNrLVx1MDAzZXBhZ2VzKSkge1xuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9tZW1vcnkuYy0xNDQtXHRcdHJjID0gLUVOT01FTTtcbi0tXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL21lbW9yeS5jPTgzOD1zdGF0aWMgaW50IGluaXRfcGh5c19wZ19wYWNrX2Zyb21fdXNlcnB0cihzdHJ1Y3QgaGxfY3R4ICpjdHgsXG4tLVxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9tZW1vcnkuYy04ODktXHRcdFx0XHRcdFx0R0ZQX0tFUk5FTCk7XG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL21lbW9yeS5jOjg5MDpcdGlmIChaRVJPX09SX05VTExfUFRSKHBoeXNfcGdfcGFjay1cdTAwM2VwYWdlcykpIHtcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vbWVtb3J5LmMtODkxLVx0XHRyYyA9IC1FTk9NRU07XG4tLVxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9tbXUvbW11LmM9Nzc5PXN0YXRpYyB2b2lkIGhsX21tdV9ocl9wb29sX2Rlc3Ryb3koc3RydWN0IGhsX2RldmljZSAqaGRldiwgc3RydWN0IGhsX21tdV9ocl9wcml2ICpocl9wcml2LFxuLS1cbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vbW11L21tdS5jLTc4Ni1cbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vbW11L21tdS5jOjc4NzpcdGlmIChaRVJPX09SX05VTExfUFRSKCpwb29sKSlcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vbW11L21tdS5jLTc4OC1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vbW11L21tdS5jLTc5My1cdFx0XHRob3AwX3BndCA9IFx1MDAyNmhyX3ByaXYtXHUwMDNlbW11X2FzaWRfaG9wMFthc2lkXTtcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vbW11L21tdS5jOjc5NDpcdFx0XHRpZiAoWkVST19PUl9OVUxMX1BUUihob3AwX3BndC1cdTAwM2V2aXJ0X2FkZHIpKVxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9tbXUvbW11LmMtNzk1LVx0XHRcdFx0Y29udGludWU7XG4tLVxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9tbXUvbW11LmM9ODI0PWludCBobF9tbXVfaHJfaW5pdChzdHJ1Y3QgaGxfZGV2aWNlICpoZGV2LCBzdHJ1Y3QgaGxfbW11X2hyX3ByaXYgKmhyX3ByaXYsIHUzMiBob3BfdGFibGVfc2l6ZSxcbi0tXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL21tdS9tbXUuYy04NDAtXHRocl9wcml2LVx1MDAzZW1tdV9wZ3RfcG9vbCA9IGdlbl9wb29sX2NyZWF0ZShQQUdFX1NISUZULCAtMSk7XG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL21tdS9tbXUuYzo4NDE6XHRpZiAoWkVST19PUl9OVUxMX1BUUihocl9wcml2LVx1MDAzZW1tdV9wZ3RfcG9vbCkpIHtcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vbW11L21tdS5jLTg0Mi1cdFx0ZGV2X2VycihoZGV2LVx1MDAzZWRldiwgXCYjMzQ7RmFpbGVkIHRvIGNyZWF0ZSBociBwYWdlIHBvb2xcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vbW11L21tdS5jLTg0Ni1cdGhyX3ByaXYtXHUwMDNlbW11X2FzaWRfaG9wMCA9IGt2emFsbG9jX29ianMoc3RydWN0IHBndF9pbmZvLCBwcm9wLVx1MDAzZW1heF9hc2lkKTtcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vbW11L21tdS5jOjg0NzpcdGlmIChaRVJPX09SX05VTExfUFRSKGhyX3ByaXYtXHUwMDNlbW11X2FzaWRfaG9wMCkpIHtcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vbW11L21tdS5jLTg0OC1cdFx0ZGV2X2VycihoZGV2LVx1MDAzZWRldiwgXCYjMzQ7RmFpbGVkIHRvIGFsbG9jYXRlIGhyLW1tdSBob3AwIHRhYmxlXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL21tdS9tbXUuYy04NTYtXHRcdFx0XHRcdFx0XHRcdFx0R0ZQX0tFUk5FTCB8IF9fR0ZQX1pFUk8pO1xuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9tbXUvbW11LmM6ODU3Olx0XHRpZiAoWkVST19PUl9OVUxMX1BUUih2aXJ0X2FkZHIpKSB7XG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL21tdS9tbXUuYy04NTgtXHRcdFx0ZGV2X2VycihoZGV2LVx1MDAzZWRldixcbi0tXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL21tdS9tbXUuYy04OTEtXHRobF9tbXVfaHJfcG9vbF9kZXN0cm95KGhkZXYsIGhyX3ByaXYsIGhvcF90YWJsZV9zaXplKTtcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vbW11L21tdS5jOjg5MjpcdGlmICghWkVST19PUl9OVUxMX1BUUihocl9wcml2LVx1MDAzZW1tdV9hc2lkX2hvcDApKVxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9tbXUvbW11LmMtODkzLVx0XHRrdmZyZWUoaHJfcHJpdi1cdTAwM2VtbXVfYXNpZF9ob3AwKTtcbi0tXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL21tdS9tbXUuYz05MTA9dm9pZCBobF9tbXVfaHJfZmluaShzdHJ1Y3QgaGxfZGV2aWNlICpoZGV2LCBzdHJ1Y3QgaGxfbW11X2hyX3ByaXYgKmhyX3ByaXYsIHUzMiBob3BfdGFibGVfc2l6ZSlcbi0tXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL21tdS9tbXUuYy05MTUtXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL21tdS9tbXUuYzo5MTY6XHRpZiAoIVpFUk9fT1JfTlVMTF9QVFIoaHJfcHJpdi1cdTAwM2VtbXVfYXNpZF9ob3AwKSkge1xuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9tbXUvbW11LmMtOTE3LVx0XHRrdmZyZWUoaHJfcHJpdi1cdTAwM2VtbXVfYXNpZF9ob3AwKTtcbi0tXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL21tdS9tbXUuYz0xMDY0PXN0cnVjdCBwZ3RfaW5mbyAqaGxfbW11X2hyX2FsbG9jX2hvcChzdHJ1Y3QgaGxfY3R4ICpjdHgsIHN0cnVjdCBobF9tbXVfaHJfcHJpdiAqaHJfcHJpdixcbi0tXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL21tdS9tbXUuYy0xMDg4LVx0XHRcdFx0XHRcdFx0R0ZQX0tFUk5FTCB8IF9fR0ZQX1pFUk8pO1xuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9tbXUvbW11LmM6MTA4OTpcdFx0aWYgKFpFUk9fT1JfTlVMTF9QVFIodmlydF9hZGRyKSlcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vbW11L21tdS5jLTEwOTAtXHRcdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9tbXUvbW11LmMtMTA5OS1cbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vbW11L21tdS5jOjExMDA6XHRpZiAoWkVST19PUl9OVUxMX1BUUih2aXJ0X2FkZHIpKSB7XG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL21tdS9tbXUuYy0xMTAxLVx0XHRkZXZfZXJyKGhkZXYtXHUwMDNlZGV2LCBcJiMzNDtmYWlsZWQgdG8gYWxsb2NhdGUgcGFnZVxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9tbXUvbW11LmM9MTM4MD1pbnQgaGxfbW11X2RyX2luaXQoc3RydWN0IGhsX2RldmljZSAqaGRldilcbi0tXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL21tdS9tbXUuYy0xNDAzLVx0XHRcdFx0XHRcdHByb3AtXHUwMDNlZG1tdS5ob3BfdGFibGVfc2l6ZSwgR0ZQX0tFUk5FTCk7XG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL21tdS9tbXUuYzoxNDA0Olx0aWYgKFpFUk9fT1JfTlVMTF9QVFIoaGRldi1cdTAwM2VtbXVfcHJpdi5kci5tbXVfc2hhZG93X2hvcDApKSB7XG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL21tdS9tbXUuYy0xNDA1LVx0XHRyYyA9IC1FTk9NRU07XG4tLVxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9tbXUvbW11LmM9MTQxOT12b2lkIGhsX21tdV9kcl9maW5pKHN0cnVjdCBobF9kZXZpY2UgKmhkZXYpXG4tLVxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9tbXUvbW11LmMtMTQyMi1cbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vbW11L21tdS5jOjE0MjM6XHRpZiAoWkVST19PUl9OVUxMX1BUUihoZGV2LVx1MDAzZW1tdV9wcml2LmRyLm1tdV9zaGFkb3dfaG9wMCkpXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL21tdS9tbXUuYy0xNDI0LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9iYXNlL2RldnJlcy5jPTk4MT12b2lkICpkZXZtX2tyZWFsbG9jKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqcHRyLCBzaXplX3QgbmV3X3NpemUsIGdmcF90IGdmcClcbi0tXG5kcml2ZXJzL2Jhc2UvZGV2cmVzLmMtOTkxLVxuZHJpdmVycy9iYXNlL2RldnJlcy5jOjk5MjpcdGlmICh1bmxpa2VseShaRVJPX09SX05VTExfUFRSKHB0cikpKVxuZHJpdmVycy9iYXNlL2RldnJlcy5jLTk5My1cdFx0cmV0dXJuIGRldm1fa21hbGxvYyhkZXYsIG5ld19zaXplLCBnZnApO1xuLS1cbmRyaXZlcnMvYmFzZS9kZXZyZXMuYz0xMTcxPXZvaWQgZGV2bV9rZnJlZShzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IHZvaWQgKnApXG4tLVxuZHJpdmVycy9iYXNlL2RldnJlcy5jLTExNzgtXHQgKi9cbmRyaXZlcnMvYmFzZS9kZXZyZXMuYzoxMTc5Olx0aWYgKHVubGlrZWx5KGlzX2tlcm5lbF9yb2RhdGEoKHVuc2lnbmVkIGxvbmcpcCkgfHwgWkVST19PUl9OVUxMX1BUUihwKSkpXG5kcml2ZXJzL2Jhc2UvZGV2cmVzLmMtMTE4MC1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtX2NydGMuYz0xOTk9c3RydWN0IGlkbGVfd29ya3F1ZXVlICppZGxlX2NyZWF0ZV93b3JrcXVldWUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG1fY3J0Yy5jLTIwMy1cdGlkbGVfd29yayA9IGt6YWxsb2Nfb2JqKCppZGxlX3dvcmspO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG1fY3J0Yy5jOjIwNDpcdGlmIChaRVJPX09SX05VTExfUFRSKGlkbGVfd29yaykpXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbV9jcnRjLmMtMjA1LVx0XHRyZXR1cm4gTlVMTDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbV9oZGNwLmM9NzQ3PXN0cnVjdCBoZGNwX3dvcmtxdWV1ZSAqaGRjcF9jcmVhdGVfd29ya3F1ZXVlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtX2hkY3AuYy03NTQtXHRoZGNwX3dvcmsgPSBremFsbG9jX29ianMoKmhkY3Bfd29yaywgbWF4X2NhcHMpO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG1faGRjcC5jOjc1NTpcdGlmIChaRVJPX09SX05VTExfUFRSKGhkY3Bfd29yaykpXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbV9oZGNwLmMtNzU2LVx0XHRyZXR1cm4gTlVMTDtcbi0tXG5kcml2ZXJzL3RoZXJtYWwvaW50ZWwvaW50MzQweF90aGVybWFsL2ludDM0MDBfdGhlcm1hbC5jPTUyNz1zdGF0aWMgdm9pZCBpbnQzNDAwX3NldHVwX2dkZHYoc3RydWN0IGludDM0MDBfdGhlcm1hbF9wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvdGhlcm1hbC9pbnRlbC9pbnQzNDB4X3RoZXJtYWwvaW50MzQwMF90aGVybWFsLmMtNTQ1LVx0XHRcdFx0ICAgR0ZQX0tFUk5FTCk7XG5kcml2ZXJzL3RoZXJtYWwvaW50ZWwvaW50MzQweF90aGVybWFsL2ludDM0MDBfdGhlcm1hbC5jOjU0NjpcdGlmIChaRVJPX09SX05VTExfUFRSKHByaXYtXHUwMDNlZGF0YV92YXVsdCkpXG5kcml2ZXJzL3RoZXJtYWwvaW50ZWwvaW50MzQweF90aGVybWFsL2ludDM0MDBfdGhlcm1hbC5jLTU0Ny1cdFx0Z290byBvdXRfZnJlZTtcbi0tXG5kcml2ZXJzL3RoZXJtYWwvaW50ZWwvaW50MzQweF90aGVybWFsL2ludDM0MDBfdGhlcm1hbC5jPTU1NT1zdGF0aWMgaW50IGludDM0MDBfdGhlcm1hbF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvdGhlcm1hbC9pbnRlbC9pbnQzNDB4X3RoZXJtYWwvaW50MzQwMF90aGVybWFsLmMtNjE1LVxuZHJpdmVycy90aGVybWFsL2ludGVsL2ludDM0MHhfdGhlcm1hbC9pbnQzNDAwX3RoZXJtYWwuYzo2MTY6XHRpZiAoIVpFUk9fT1JfTlVMTF9QVFIocHJpdi1cdTAwM2VkYXRhX3ZhdWx0KSkge1xuZHJpdmVycy90aGVybWFsL2ludGVsL2ludDM0MHhfdGhlcm1hbC9pbnQzNDAwX3RoZXJtYWwuYy02MTctXHRcdHJlc3VsdCA9IGRldmljZV9jcmVhdGVfYmluX2ZpbGUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFx1MDAyNmJpbl9hdHRyX2RhdGFfdmF1bHQpO1xuLS1cbmRyaXZlcnMvdGhlcm1hbC9pbnRlbC9pbnQzNDB4X3RoZXJtYWwvaW50MzQwMF90aGVybWFsLmMtNjM4LVx0Y2xlYW51cF9vZHZwKHByaXYpO1xuZHJpdmVycy90aGVybWFsL2ludGVsL2ludDM0MHhfdGhlcm1hbC9pbnQzNDAwX3RoZXJtYWwuYzo2Mzk6XHRpZiAoIVpFUk9fT1JfTlVMTF9QVFIocHJpdi1cdTAwM2VkYXRhX3ZhdWx0KSkge1xuZHJpdmVycy90aGVybWFsL2ludGVsL2ludDM0MHhfdGhlcm1hbC9pbnQzNDAwX3RoZXJtYWwuYy02NDAtXHRcdGRldmljZV9yZW1vdmVfYmluX2ZpbGUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFx1MDAyNmJpbl9hdHRyX2RhdGFfdmF1bHQpO1xuLS1cbmRyaXZlcnMvdGhlcm1hbC9pbnRlbC9pbnQzNDB4X3RoZXJtYWwvaW50MzQwMF90aGVybWFsLmM9NjU5PXN0YXRpYyB2b2lkIGludDM0MDBfdGhlcm1hbF9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL3RoZXJtYWwvaW50ZWwvaW50MzQweF90aGVybWFsL2ludDM0MDBfdGhlcm1hbC5jLTY3My1cbmRyaXZlcnMvdGhlcm1hbC9pbnRlbC9pbnQzNDB4X3RoZXJtYWwvaW50MzQwMF90aGVybWFsLmM6Njc0Olx0aWYgKCFaRVJPX09SX05VTExfUFRSKHByaXYtXHUwMDNlZGF0YV92YXVsdCkpXG5kcml2ZXJzL3RoZXJtYWwvaW50ZWwvaW50MzQweF90aGVybWFsL2ludDM0MDBfdGhlcm1hbC5jLTY3NS1cdFx0ZGV2aWNlX3JlbW92ZV9iaW5fZmlsZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgXHUwMDI2YmluX2F0dHJfZGF0YV92YXVsdCk7XG4tLVxuZnMvYmluZm10X2VsZi5jPTE1OTM9c3RhdGljIGludCBmaWxsX2ZpbGVzX25vdGUoc3RydWN0IG1lbWVsZm5vdGUgKm5vdGUsIHN0cnVjdCBjb3JlZHVtcF9wYXJhbXMgKmNwcm0pXG4tLVxuZnMvYmluZm10X2VsZi5jLTE2MjAtXHRkYXRhID0ga3ZtYWxsb2Moc2l6ZSwgR0ZQX0tFUk5FTCk7XG5mcy9iaW5mbXRfZWxmLmM6MTYyMTpcdGlmIChaRVJPX09SX05VTExfUFRSKGRhdGEpKVxuZnMvYmluZm10X2VsZi5jLTE2MjItXHRcdHJldHVybiAtRU5PTUVNO1xuLS1cbmZzL2piZDIvdHJhbnNhY3Rpb24uYz01OD12b2lkIGpiZDJfam91cm5hbF9mcmVlX3RyYW5zYWN0aW9uKHRyYW5zYWN0aW9uX3QgKnRyYW5zYWN0aW9uKVxuZnMvamJkMi90cmFuc2FjdGlvbi5jLTU5LXtcbmZzL2piZDIvdHJhbnNhY3Rpb24uYzo2MDpcdGlmICh1bmxpa2VseShaRVJPX09SX05VTExfUFRSKHRyYW5zYWN0aW9uKSkpXG5mcy9qYmQyL3RyYW5zYWN0aW9uLmMtNjEtXHRcdHJldHVybjtcbi0tXG5pbmNsdWRlL2xpbnV4L3NsYWIuaD0yNj1lbnVtIF9zbGFiX2ZsYWdfYml0cyB7XG4tLVxuaW5jbHVkZS9saW51eC9zbGFiLmgtMjcyLVxuaW5jbHVkZS9saW51eC9zbGFiLmg6MjczOiNkZWZpbmUgWkVST19PUl9OVUxMX1BUUih4KVx0XHRcdFx0XHRcdFxcXG5pbmNsdWRlL2xpbnV4L3NsYWIuaC0yNzQtKHtcdFx0XHRcdFx0XHRcdFx0XHRcXFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMjU5PXN0YXRpYyB2b2lkICpjb3B5X2FycmF5KHZvaWQgKmRzdCwgY29uc3Qgdm9pZCAqc3JjLCBzaXplX3Qgbiwgc2l6ZV90IHNpemUsIGdmcF90IGZsYWdzKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjY0LVxua2VybmVsL2JwZi92ZXJpZmllci5jOjEyNjU6XHRpZiAoWkVST19PUl9OVUxMX1BUUihzcmMpKVxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyNjYtXHRcdGdvdG8gb3V0O1xuLS1cbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jPTI1NDk9c3RhdGljIHZvaWQgaGFuZGxlcl9jaGFpbihzdHJ1Y3QgdXByb2JlICp1cHJvYmUsIHN0cnVjdCBwdF9yZWdzICpyZWdzKVxuLS1cbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTI1ODItXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYzoyNTgzOlx0aWYgKCFaRVJPX09SX05VTExfUFRSKHJpKSlcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTI1ODQtXHRcdHByZXBhcmVfdXJldHByb2JlKHVwcm9iZSwgcmVncywgcmkpO1xuLS1cbmxpYi90ZXN0cy9zbHViX2t1bml0LmM9MzgzPXN0YXRpYyB2b2lkIHRlc3RfemVyb19zaXplX2FsbG9jKHN0cnVjdCBrdW5pdCAqdGVzdClcbi0tXG5saWIvdGVzdHMvc2x1Yl9rdW5pdC5jLTQwNS1cdHIgPSBrcmVhbGxvYyhwLCA2NCwgR0ZQX0tFUk5FTCk7XG5saWIvdGVzdHMvc2x1Yl9rdW5pdC5jOjQwNjpcdEtVTklUX0VYUEVDVF9GQUxTRSh0ZXN0LCBaRVJPX09SX05VTExfUFRSKHIpKTtcbmxpYi90ZXN0cy9zbHViX2t1bml0LmMtNDA3LVx0cCA9IGtyZWFsbG9jKHIsIDAsIEdGUF9LRVJORUwpO1xuLS1cbmxpYi90ZXN0cy9zbHViX2t1bml0LmMtNDExLVx0LyogT25seSBOVUxMIGFuZCB0aGUgemVyby1zaXplIHNlbnRpbmVsIG1hdGNoLiAqL1xubGliL3Rlc3RzL3NsdWJfa3VuaXQuYzo0MTI6XHRLVU5JVF9FWFBFQ1RfVFJVRSh0ZXN0LCBaRVJPX09SX05VTExfUFRSKE5VTEwpKTtcbmxpYi90ZXN0cy9zbHViX2t1bml0LmM6NDEzOlx0S1VOSVRfRVhQRUNUX1RSVUUodGVzdCwgWkVST19PUl9OVUxMX1BUUihaRVJPX1NJWkVfUFRSKSk7XG5saWIvdGVzdHMvc2x1Yl9rdW5pdC5jOjQxNDpcdEtVTklUX0VYUEVDVF9GQUxTRSh0ZXN0LCBaRVJPX09SX05VTExfUFRSKCh2b2lkICopMSkpO1xubGliL3Rlc3RzL3NsdWJfa3VuaXQuYzo0MTU6XHRLVU5JVF9FWFBFQ1RfRkFMU0UodGVzdCwgWkVST19PUl9OVUxMX1BUUigodm9pZCAqKSh6c3AgLSAxKSkpO1xubGliL3Rlc3RzL3NsdWJfa3VuaXQuYzo0MTY6XHRLVU5JVF9FWFBFQ1RfRkFMU0UodGVzdCwgWkVST19PUl9OVUxMX1BUUigodm9pZCAqKSh6c3AgJiM0MzsgMSkpKTtcbmxpYi90ZXN0cy9zbHViX2t1bml0LmM6NDE3Olx0S1VOSVRfRVhQRUNUX0ZBTFNFKHRlc3QsIFpFUk9fT1JfTlVMTF9QVFIoKHZvaWQgKikoenNwICogMikpKTtcbmxpYi90ZXN0cy9zbHViX2t1bml0LmMtNDE4LVxuLS1cbm1tL3NsdWIuYz02NTc0PXNpemVfdCBrc2l6ZShjb25zdCB2b2lkICpvYmpwKVxuLS1cbm1tL3NsdWIuYy02NTkwLVx0ICovXG5tbS9zbHViLmM6NjU5MTpcdGlmICh1bmxpa2VseShaRVJPX09SX05VTExfUFRSKG9ianApKSB8fCAha2FzYW5fY2hlY2tfYnl0ZShvYmpwKSlcbm1tL3NsdWIuYy02NTkyLVx0XHRyZXR1cm4gMDtcbi0tXG5tbS9zbHViLmM9NjY3MT12b2lkIGtmcmVlKGNvbnN0IHZvaWQgKm9iamVjdClcbi0tXG5tbS9zbHViLmMtNjY3OS1cbm1tL3NsdWIuYzo2NjgwOlx0aWYgKHVubGlrZWx5KFpFUk9fT1JfTlVMTF9QVFIob2JqZWN0KSkpXG5tbS9zbHViLmMtNjY4MS1cdFx0cmV0dXJuO1xuLS1cbm1tL3NsdWIuYz02NzA1PXZvaWQga2ZyZWVfbm9sb2NrKGNvbnN0IHZvaWQgKm9iamVjdClcbi0tXG5tbS9zbHViLmMtNjcxMC1cbm1tL3NsdWIuYzo2NzExOlx0aWYgKHVubGlrZWx5KFpFUk9fT1JfTlVMTF9QVFIob2JqZWN0KSkpXG5tbS9zbHViLmMtNjcxMi1cdFx0cmV0dXJuO1xuLS1cbm1tL3NsdWIuYz02NzY1PV9fZG9fa3JlYWxsb2MoY29uc3Qgdm9pZCAqcCwgc2l6ZV90IG5ld19zaXplLCB1bnNpZ25lZCBsb25nIGFsaWduLCBnZnBfdCBmbGFncywgaW50IG5pZCwga21hbGxvY190b2tlbl90IHRva2VuKVxuLS1cbm1tL3NsdWIuYy02NzcxLVxubW0vc2x1Yi5jOjY3NzI6XHRpZiAodW5saWtlbHkoWkVST19PUl9OVUxMX1BUUihwKSkpXG5tbS9zbHViLmMtNjc3My1cdFx0Z290byBhbGxvY19uZXc7XG4tLVxubW0vc2x1Yi5jPTY5ODM9dm9pZCBrdmZyZWVfc2Vuc2l0aXZlKGNvbnN0IHZvaWQgKmFkZHIsIHNpemVfdCBsZW4pXG5tbS9zbHViLmMtNjk4NC17XG5tbS9zbHViLmM6Njk4NTpcdGlmIChsaWtlbHkoIVpFUk9fT1JfTlVMTF9QVFIoYWRkcikpKSB7XG5tbS9zbHViLmMtNjk4Ni1cdFx0bWVtemVyb19leHBsaWNpdCgodm9pZCAqKWFkZHIsIGxlbik7XG4tLVxubW0vdXNlcmNvcHkuYz0xNTA9c3RhdGljIGlubGluZSB2b2lkIGNoZWNrX2JvZ3VzX2FkZHJlc3MoY29uc3QgdW5zaWduZWQgbG9uZyBwdHIsIHVuc2lnbmVkIGxvbmcgbixcbi0tXG5tbS91c2VyY29weS5jLTE1Ny1cdC8qIFJlamVjdCBpZiBOVUxMIG9yIFpFUk8tYWxsb2NhdGlvbi4gKi9cbm1tL3VzZXJjb3B5LmM6MTU4Olx0aWYgKFpFUk9fT1JfTlVMTF9QVFIocHRyKSlcbm1tL3VzZXJjb3B5LmMtMTU5LVx0XHR1c2VyY29weV9hYm9ydChcJiMzNDtudWxsIGFkZHJlc3NcJiMzNDssIE5VTEwsIHRvX3VzZXIsIHB0ciwgbik7XG4tLVxubmV0L3N1bnJwYy9hdXRoX2dzcy9hdXRoX2dzcy5jPTE5ODk9Z3NzX3Vud3JhcF9yZXNwX2ludGVnKHN0cnVjdCBycGNfdGFzayAqdGFzaywgc3RydWN0IHJwY19jcmVkICpjcmVkLFxuLS1cbm5ldC9zdW5ycGMvYXV0aF9nc3MvYXV0aF9nc3MuYy0yMDMwLVx0bWljLmRhdGEgPSBrbWFsbG9jKGxlbiwgR0ZQX0tFUk5FTCk7XG5uZXQvc3VucnBjL2F1dGhfZ3NzL2F1dGhfZ3NzLmM6MjAzMTpcdGlmIChaRVJPX09SX05VTExfUFRSKG1pYy5kYXRhKSlcbm5ldC9zdW5ycGMvYXV0aF9nc3MvYXV0aF9nc3MuYy0yMDMyLVx0XHRnb3RvIHVud3JhcF9mYWlsZWQ7XG4tLVxubmV0L3N1bnJwYy9hdXRoX2dzcy9zdmNhdXRoX2dzcy5jPTExNTU9c3ZjYXV0aF9nc3NfbGVnYWN5X2luaXQoc3RydWN0IHN2Y19ycXN0ICpycXN0cCxcbi0tXG5uZXQvc3VucnBjL2F1dGhfZ3NzL3N2Y2F1dGhfZ3NzLmMtMTE4NS1cdHJzaWtleS5pbl90b2tlbi5kYXRhID0ga21hbGxvYyhsZW4sIEdGUF9LRVJORUwpO1xubmV0L3N1bnJwYy9hdXRoX2dzcy9zdmNhdXRoX2dzcy5jOjExODY6XHRpZiAoWkVST19PUl9OVUxMX1BUUihyc2lrZXkuaW5fdG9rZW4uZGF0YSkpIHtcbm5ldC9zdW5ycGMvYXV0aF9nc3Mvc3ZjYXV0aF9nc3MuYy0xMTg3LVx0XHRrZnJlZShyc2lrZXkuaW5faGFuZGxlLmRhdGEpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDE0OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk0NDYKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiA2MjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJbXBhY3Qgb2YgdGhlIFpFUk9fT1JfTlVMTF9QVFIgQ2hhbmdlKioKCk9rYXksIHNvIHRoaXMgY2hhbmdlIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQsIGJ1dCBpdCBoYXMgc2lnbmlmaWNhbnQgaW1wbGljYXRpb25zLiBJdCBzZWVtcyB0aGUgY29kZSBub3cgc3RyaWN0bHkgZGVmaW5lcyBgWkVST19PUl9OVUxMX1BUUih4KWAgYXMgZWl0aGVyIGAwYCBvciBgWkVST19TSVpFX1BUUmAsIGVmZmVjdGl2ZWx5IGV4Y2x1ZGluZyBwb2ludGVycyB3aXRoIHNtYWxsIHZhbHVlcyAoMS0xMjcsIGRlcGVuZGluZyBvbiBhcmNoaXRlY3R1cmUpIHRoYXQgdXNlZCB0byBiZSBjb25zaWRlcmVkICYjMzQ7emVybyBvciBudWxsJiMzNDsuIFRoaXMgbWVhbnMgdGhhdCBhdHRlbXB0aW5nIHRvIGZyZWUgYSBzbWFsbCBpbnRlZ2VyIHZhbHVlLCBsaWtlIGBrZnJlZSgodm9pZCAqKTEpYCwgd2lsbCBubyBsb25nZXIgYmUgc2lsZW50bHkgaWdub3JlZDsgaXQmIzM5O2xsIG5vdyBsaWtlbHkgdHJpZ2dlciBhIGNyYXNoIGJlY2F1c2UgaXQmIzM5O3MgYXR0ZW1wdGluZyB0byBmcmVlIGFuIGludmFsaWQgcG9pbnRlci4gVGhpcyBpcyBhIGRlbGliZXJhdGUgZGVzaWduIGNoYW5nZSB0byBjYXRjaCB0aGVzZSBraW5kcyBvZiBidWdzLCB3aGljaCBpcyBnb29kLgoKTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7V29ydGggZnV6emluZz8mIzM0OyBBYnNvbHV0ZWx5LCB0aGlzIGlzIGEgcHJpbWUgY2FuZGlkYXRlLiBJdCBoYXMgdGhlIHBvdGVudGlhbCB0byBleHBvc2UgYnVncyBpbiBhbnkga2VybmVsIGNvZGUgdGhhdCBtaXN0YWtlbmx5IHBhc3NlcyBhIHNtYWxsIGludGVnZXIgdmFsdWUgdG8gbWVtb3J5IG1hbmFnZW1lbnQgZnVuY3Rpb25zIGxpa2UgYGtmcmVlYCwgYGtzaXplYCwgYGtyZWFsbG9jYCwgYW5kIG90aGVycy4gVGhlc2UgYXJlIGFsbCBjb3JlIGFsbG9jYXRvciBmdW5jdGlvbnMgdGhhdCBjb3VsZCBub3cgcmVhY3QgZGlmZmVyZW50bHkuCgpCdXQgdGhlbiBJIHJlY2FsbCB0aGUgcHJvbXB0JiMzOTtzIHNwZWNpZmljIHJlcXVpcmVtZW50cy4gSSBuZWVkIHRvIGlkZW50aWZ5ICpzcGVjaWZpYyoga2VybmVsIGZ1bmN0aW9ucyBmb3IgZm9jdXNlZCBmdXp6aW5nLiBXaGlsZSBga2ZyZWVgLCBga3NpemVgLCBhbmQgYGtyZWFsbG9jYCBhcmUgb2J2aW91c2x5IGltcGFjdGVkLCB0aGV5IGFyZSBnZW5lcmljIGFuZCBob3QtcGF0aCwgYW5kIHRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IHNheXMgdG8gYXZvaWQgdGhlbS4gRGFuZy4gVGhlIHBhdGNoIGludHJvZHVjZXMgYHRlc3RfemVyb19zaXplX2FsbG9jYCB3aXRoaW4gdGhlIGBzbHViX2t1bml0LmNgIGZpbGUsIGJ1dCB0aGF0JiMzOTtzIGEga3VuaXQgdGVzdCwgYW5kIHN5emthbGxlciBkb2VzbiYjMzk7dCBkaXJlY3RseSBmdXp6IHRob3NlLiBTbywgaXQgbG9va3MgbGlrZSB0aGVyZSBhcmVuJiMzOTt0IGFueSBzcGVjaWZpYyB0YXJnZXQgZnVuY3Rpb25zIHRvIHBvaW50IHRvIGFuZCBJIGhhdmUgdG8gbGVhdmUgdGhlIGBGb2N1c1N5bWJvbHNgIGVtcHR5LgoKRmluYWxseSwgSSBzaG91bGQgY2hlY2sgdGhlIGBFbmFibGVDb25maWdzYCB0byBlbnN1cmUgdGhlIG5ldyBrdW5pdCB0ZXN0IGlzIGNvbXBpbGVkLiAgSXQmIzM5O3MgaW4gdGhlIGBsaWIvdGVzdHMvc2x1Yl9rdW5pdC5jYCBmaWxlLCBzbyBJIG5lZWQgYENPTkZJR19TTFVCX0tVTklUX1RFU1RgLiBMZXQgbWUgZG91YmxlLWNoZWNrIHRoYXQgdGhpcyBpcyBjb3JyZWN0IGJ5IGNoZWNraW5nIGBsaWIvdGVzdHMvS2NvbmZpZ2Agb3IgYGxpYi9LY29uZmlnLmRlYnVnYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAxNDoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgU0xVQl9LVU5JVF9URVNUJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2xpYi9LY29uZmlnLmRlYnVnPTI5Nzk9Y29uZmlnIFNIREkzX0tVTklUX1RFU1Rcbi0tXG5saWIvS2NvbmZpZy5kZWJ1Zy0yOTg4LVxubGliL0tjb25maWcuZGVidWc6Mjk4OTpjb25maWcgU0xVQl9LVU5JVF9URVNUXG5saWIvS2NvbmZpZy5kZWJ1Zy0yOTkwLVx0dHJpc3RhdGUgXCYjMzQ7S1VuaXQgdGVzdCBmb3IgU0xVQiBjYWNoZSBlcnJvciBkZXRlY3Rpb25cJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDE0OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNjM3CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqQW5hbHl6aW5nIHRoZSBTTFVCX0tVTklUX1RFU1QgQ29uZmlndXJhdGlvbiBPcHRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBTTFVCX0tVTklUX1RFU1RgLiBJdCYjMzk7cyBjbGVhciB0aGlzIGlzIHRoZSBjb25maWcgb3B0aW9uIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGguIE5vdywgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGRpdmUgaW50byBpdHMgZGVwZW5kZW5jaWVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IG90aGVyIGNvbmZpZ3VyYXRpb25zLCBmZWF0dXJlcywgb3IgbGlicmFyaWVzIHRoaXMgb25lIHJlbGllcyBvbi4gVW5kZXJzdGFuZGluZyB0aGUgZGVwZW5kZW5jeSB0cmVlIHdpbGwgYmUgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBpdHMgb3ZlcmFsbCBpbXBhY3QgYW5kIGhvdyBpdCBmaXRzIGludG8gdGhlIGJyb2FkZXIga2VybmVsIGJ1aWxkIGFuZCBmdW5jdGlvbmFsaXR5LiBUaW1lIHRvIHN0YXJ0IGRpZ2dpbmcgaW50byB0aGUgS2NvbmZpZyBmaWxlcyEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAxNDoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgU0xVQl9LVU5JVF9URVNUJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bGliL0tjb25maWcuZGVidWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bGliL0tjb25maWcuZGVidWc9Mjk3OT1jb25maWcgU0hESTNfS1VOSVRfVEVTVFxuLS1cbmxpYi9LY29uZmlnLmRlYnVnLTI5ODgtXG5saWIvS2NvbmZpZy5kZWJ1ZzoyOTg5OmNvbmZpZyBTTFVCX0tVTklUX1RFU1RcbmxpYi9LY29uZmlnLmRlYnVnLTI5OTAtXHR0cmlzdGF0ZSBcJiMzNDtLVW5pdCB0ZXN0IGZvciBTTFVCIGNhY2hlIGVycm9yIGRldGVjdGlvblwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMTQ6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA5MjEKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIERlYnVnZ2luZyBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHNvbWV0aGluZyByZWxhdGVkIHRvIHRoZSBkZWJ1Z2dpbmcgY29uZmlndXJhdGlvbiBvZiB0aGlzIHN5c3RlbS4gVGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgaXMgdGhlIGBsaWIvS2NvbmZpZy5kZWJ1Z2AgZmlsZS4gTm93LCBiYXNlZCBvbiBteSBwYXN0IGV4cGVyaWVuY2Ugd2l0aCB0aGVzZSBjb25maWd1cmF0aW9ucywgbGluZSAyOTg5IGlzIGxpa2VseSB0byBiZSBhIGNydWNpYWwgcG9pbnQg4oCTIGVpdGhlciBkZWZpbmluZyBhIGtleSBkZWJ1ZyBvcHRpb24sIHByb3ZpZGluZyBhIGNvbmRpdGlvbmFsIGZvciBpdCwgb3IgcGVyaGFwcyByZWZlcmVuY2luZyBhbm90aGVyIGZpbGUgd2l0aCBtb3JlIGRldGFpbHMuIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBqdW1wIHRvIHRoYXQgbGluZSBhbmQgY2hlY2sgdGhlIHN1cnJvdW5kaW5nIGNvZGUsIGZvY3VzaW5nIG9uIHRoZSBjb250ZXh0IGFuZCBkZXBlbmRlbmNpZXMgdG8gcXVpY2tseSBnZXQgYSBnb29kIG92ZXJ2aWV3IG9mIHRoZSByZWxldmFudCBsb2dpYyBhbmQgcG90ZW50aWFsbHkgc3BvdCB0aGUgcm9vdCBjYXVzZSBvZiB0aGUgaXNzdWUgb3IgdW5kZXJzdGFuZCBob3cgYSBwYXJ0aWN1bGFyIGRlYnVnIGZlYXR1cmUgaXMgZW5hYmxlZC9kaXNhYmxlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMTQ6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtsaWIvS2NvbmZpZy5kZWJ1ZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI5ODUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7Mjk4NTpcdFx0ICBfX2xzaHJkaTMoKSBoZWxwZXIgZnVuY3Rpb25zIHVzZWQgdG8gaW1wbGVtZW50IDY0LWJpdCBhcml0aG1ldGljXG4yOTg2Olx0XHQgIHNoaWZ0IGxlZnQsIGFyaXRobWV0aWMgc2hpZnQgcmlnaHQgYW5kIGxvZ2ljYWwgc2hpZnQgcmlnaHQsXG4yOTg3Olx0XHQgIHJlc3BlY3RpdmVseSwgb24gYSAzMi1iaXQgQ1BVcy5cbjI5ODg6XHRcbjI5ODk6XHRjb25maWcgU0xVQl9LVU5JVF9URVNUXG4yOTkwOlx0XHR0cmlzdGF0ZSBcJiMzNDtLVW5pdCB0ZXN0IGZvciBTTFVCIGNhY2hlIGVycm9yIGRldGVjdGlvblwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4yOTkxOlx0XHRkZXBlbmRzIG9uIFNMVUJfREVCVUcgXHUwMDI2XHUwMDI2IEtVTklUXG4yOTkyOlx0XHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xuMjk5MzpcdFx0aGVscFxuMjk5NDpcdFx0ICBUaGlzIGJ1aWxkcyBTTFVCIGFsbG9jYXRvciB1bml0IHRlc3QuXG4yOTk1Olx0XHQgIFRlc3RzIFNMVUIgY2FjaGUgZGVidWdnaW5nIGZ1bmN0aW9uYWxpdHkuXG4yOTk2Olx0XHQgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIEtVbml0IGFuZCB1bml0IHRlc3RzIGluIGdlbmVyYWwgcGxlYXNlIHJlZmVyXG4yOTk3Olx0XHQgIHRvIHRoZSBLVW5pdCBkb2N1bWVudGF0aW9uIGluIERvY3VtZW50YXRpb24vZGV2LXRvb2xzL2t1bml0Ly5cbjI5OTg6XHRcbjI5OTk6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbjMwMDA6XHRcbjMwMDE6XHRjb25maWcgUkFUSU9OQUxfS1VOSVRfVEVTVFxuMzAwMjpcdFx0dHJpc3RhdGUgXCYjMzQ7S1VuaXQgdGVzdCBmb3IgcmF0aW9uYWwuY1wmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4zMDAzOlx0XHRkZXBlbmRzIG9uIEtVTklUIFx1MDAyNlx1MDAyNiBSQVRJT05BTFxuMzAwNDpcdFx0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMTQ6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE0ODAKCQkJCQkJCW91dHB1dDogMTIyCgkJCQkJCQl0aG91Z2h0czogMjc2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIGBrZnJlZWAgU2FmZXR5IFBhdGNoKioKCk9rYXksIGxldCBtZSBicmVhayB0aGlzIGRvd24uIFRoZSBkZXBlbmRlbmNpZXMgaGVyZSBhcmUgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDogYFNMVUJfREVCVUdgIGFuZCBgS1VOSVRgLiBTbyBJJiMzOTtsbCBuZWVkIHRvIGVuYWJsZSBgU0xVQl9LVU5JVF9URVNUYCwgYFNMVUJfREVCVUdgLCBhbmQgYEtVTklUYCB0byBtYWtlIHN1cmUgdGhlIHRlc3RzIHJ1biBhbmQgSSBoYXZlIHRoZSBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24gSSBuZWVkLiBJJiMzOTtsbCBub3RlIHRoYXQgYFNMVUJfREVCVUdgIGlzIG9mdGVuIGVuYWJsZWQgYnkgZGVmYXVsdCBpbiBkZWJ1ZyBrZXJuZWxzLCBidXQgaXQmIzM5O3MgYWx3YXlzIGJlc3QgdG8gYmUgZXhwbGljaXQgYWJvdXQgaXQgaW4gYSBjb25maWd1cmF0aW9uLgoKVGhlIGNyaXRpY2FsIGNoYW5nZSBpcyBpbiBgaW5jbHVkZS9saW51eC9zbGFiLmhgLiBTaW5jZSBpdCYjMzk7cyBpbiBhIGhlYWRlciwgdGhpcyBpcyBhIHBlcnZhc2l2ZSBjaGFuZ2UgdGhhdCBpbXBhY3RzIHRoZSBlbnRpcmUga2VybmVsLCBhbmQgZG9lc24mIzM5O3QgcmVseSBvbiBhbnkgc3BlY2lmaWMgbW9kdWxlIGNvbmZpZy4gVGhpcyBjaGFuZ2UgZW5mb3JjZXMgc3RyaWN0ZXIgdmFsaWRhdGlvbiBvZiBwb2ludGVycyBwYXNzZWQgdG8gYGtmcmVlYCwgd2hpY2ggbWVhbnMgdGhhdCBpbnZhbGlkIHBvaW50ZXJzIGxpa2UgYEVSUl9QVFJgIHdpbGwgbm93IGxlYWQgdG8gYSBjcmFzaCwgcmF0aGVyIHRoYW4gYmVpbmcgc2lsZW50bHkgaWdub3JlZC4gVGhpcyBpcyBleGFjdGx5IHRoZSBraW5kIG9mIGNoYW5nZSB0aGF0JiMzOTtzIHByaW1lIGZvciBmdXp6aW5nISBDYXRjaGluZyB0aG9zZSBzdWJ0bGUgbWVtb3J5IGJ1Z3MgZWFybHkgaXMgY3J1Y2lhbC4KClRoZXJlZm9yZSwgSSYjMzk7bSBzZXR0aW5nIGBXb3J0aEZ1enppbmc9dHJ1ZWAuCgpCZWNhdXNlIHRoaXMgaXMgYSBnbG9iYWwgY2hhbmdlIGFmZmVjdGluZyBjb3JlIGZ1bmN0aW9ucyBsaWtlIGBrZnJlZWAgYW5kIGBrcmVhbGxvY2AgdGhhdCBhcmUgdXNlZCBldmVyeXdoZXJlLCBgRm9jdXNTeW1ib2xzYCB3aWxsIGJlIGVtcHR5LiBJIHdvbiYjMzk7dCBsaW1pdCB0aGUgZnV6emluZyB0byBzcGVjaWZpYyBtb2R1bGVzIGluIHRoaXMgY2FzZS4KClNvLCBgRW5hYmxlQ29uZmlnc2Agd2lsbCBiZSBgWyYjMzQ7U0xVQl9LVU5JVF9URVNUJiMzNDssICYjMzQ7U0xVQl9ERUJVRyYjMzQ7LCAmIzM0O0tVTklUJiMzNDtdYC4KCk15IHJlYXNvbmluZyBmb3IgdGhpcyBhc3Nlc3NtZW50IGlzIHRoYXQgdGhlIHBhdGNoIG1vZGlmaWVzIGBaRVJPX09SX05VTExfUFRSYCB0byBvbmx5IGNoZWNrIGZvciBleGFjdCAwIG9yIGBaRVJPX1NJWkVfUFRSYC4gVGhpcyBtZWFucyB0aGF0IHNtYWxsIGludmFsaWQgcG9pbnRlcnMgKGxpa2UgYEVSUl9QVFJgKSBwYXNzZWQgdG8gYGtmcmVlYCB3aWxsIG5vdyBsZWFkIHRvIGEgY3Jhc2ggaW5zdGVhZCBvZiBiZWluZyBzaWxlbnRseSBpZ25vcmVkLiBUaGlzIGlzIGEgY3J1Y2lhbCBjaGFuZ2UgdG8gdGhlIGNvcmUgYWxsb2NhdG9yIHRoYXQgY2FuIGV4cG9zZSBwb3RlbnRpYWwgYnVncyB0aHJvdWdob3V0IHRoZSBlbnRpcmUga2VybmVsLiBUaGUgaW5jbHVzaW9uIG9mIGEgS1VuaXQgdGVzdCBpcyBhbHNvIGFuIGV4Y2VsbGVudCBjb25maXJtYXRpb24gb2YgdGhpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMTQ6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NMVUJfS1VOSVRfVEVTVCYjMzQ7LAogICAgJiMzNDtTTFVCX0RFQlVHJiMzNDssCiAgICAmIzM0O0tVTklUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIFpFUk9fT1JfTlVMTF9QVFIgdG8gc3RyaWN0bHkgY2hlY2sgZm9yIDAgb3IgWkVST19TSVpFX1BUUiwgbWVhbmluZyBzbWFsbCBpbnZhbGlkIHBvaW50ZXJzIChsaWtlIEVSUl9QVFIpIHBhc3NlZCB0byBrZnJlZSB3aWxsIG5vdyBjYXVzZSBhIGNyYXNoIGluc3RlYWQgb2YgYmVpbmcgc2lsZW50bHkgaWdub3JlZC4gVGhpcyBpcyBhIGNvcmUgYWxsb2NhdG9yIGNoYW5nZSB0aGF0IGNhbiBleHBvc2UgYnVncyBhY3Jvc3MgdGhlIGtlcm5lbC4gQSBrdW5pdCB0ZXN0IGlzIGFsc28gYWRkZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NMVUJfS1VOSVRfVEVTVCYjMzQ7LAogICAgJiMzNDtTTFVCX0RFQlVHJiMzNDssCiAgICAmIzM0O0tVTklUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIFpFUk9fT1JfTlVMTF9QVFIgdG8gc3RyaWN0bHkgY2hlY2sgZm9yIDAgb3IgWkVST19TSVpFX1BUUiwgbWVhbmluZyBzbWFsbCBpbnZhbGlkIHBvaW50ZXJzIChsaWtlIEVSUl9QVFIpIHBhc3NlZCB0byBrZnJlZSB3aWxsIG5vdyBjYXVzZSBhIGNyYXNoIGluc3RlYWQgb2YgYmVpbmcgc2lsZW50bHkgaWdub3JlZC4gVGhpcyBpcyBhIGNvcmUgYWxsb2NhdG9yIGNoYW5nZSB0aGF0IGNhbiBleHBvc2UgYnVncyBhY3Jvc3MgdGhlIGtlcm5lbC4gQSBrdW5pdCB0ZXN0IGlzIGFsc28gYWRkZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDE0OjE4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMTQ6MTg8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGRlZmluaXRpb24gb2YgYFpFUk9fU0laRV9QVFJgIGFuZCBgWkVST19PUl9OVUxMX1BUUmAgaW4gdGhlIHNsYWIgYWxsb2NhdG9yIGhlYWRlcnMgdG8gZW5zdXJlIHByb3BlciBhbGlnbm1lbnQgYW5kIHN0cmljdGVyIHBvaW50ZXIgY2hlY2tpbmcuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGFsbG9jYXRpb25zLCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSwgb3IgbG9naWMgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIEFueSBidWdzIHJlc3VsdGluZyBmcm9tIHRoZXNlIGNoYW5nZXMgd291bGQgbWFuaWZlc3QgYXMgaW52YWxpZCBwb2ludGVyIGRlcmVmZXJlbmNlcyBvciBtZW1vcnkgY29ycnVwdGlvbiwgd2hpY2ggYXJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBzdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgZGVmYXVsdCBidWcgZGV0ZWN0b3JzLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzZSBvciBpbmZvLWxlYWtzIHRoYXQgd291bGQgbmVjZXNzaXRhdGUgS01TQU4uJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDc1MzdjNjEyOGQ1OWYxZjA1NWEwODk2ZGRjNWVjMGNlZjc1NGVkOTIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEF1ZyAxMSAxNDoxODowMCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc2xhYi5oIGIvaW5jbHVkZS9saW51eC9zbGFiLmgKaW5kZXggMzJjOWY4ZWQ3YWUyMC4uMDIzZTEwYWI3N2Y4ZCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9zbGFiLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9zbGFiLmgKQEAgLTI1OSwxNiAmIzQzOzI1OSwyMyBAQCBlbnVtIF9zbGFiX2ZsYWdfYml0cyB7CiAKIC8qCiAgKiBaRVJPX1NJWkVfUFRSIHdpbGwgYmUgcmV0dXJuZWQgZm9yIHplcm8gc2l6ZWQga21hbGxvYyByZXF1ZXN0cy4KJiM0MzsgKiBJdCBzYXRpc2ZpZXMgdGhlIGFsaWdubWVudCBwcm9taXNlZCBieSBfX2Fzc3VtZV9rbWFsbG9jX2FsaWdubWVudAomIzQzOyAqIGFuZCBrZWVwcyB0aGUgaGlzdG9yaWMgdmFsdWUgMTYgd2hlcmUgdGhhdCBpcyBhbHJlYWR5IGFsaWduZWQuCiAgKgogICogRGVyZWZlcmVuY2luZyBaRVJPX1NJWkVfUFRSIHdpbGwgbGVhZCB0byBhIGRpc3RpbmN0IGFjY2VzcyBmYXVsdC4KICAqCiAgKiBaRVJPX1NJWkVfUFRSIGNhbiBiZSBwYXNzZWQgdG8ga2ZyZWUgdGhvdWdoIGluIHRoZSBzYW1lIHdheSB0aGF0IE5VTEwgY2FuLgogICogQm90aCBtYWtlIGtmcmVlIGEgbm8tb3AuCiAgKi8KLSNkZWZpbmUgWkVST19TSVpFX1BUUiAoKHZvaWQgKikxNikKJiM0MzsjZGVmaW5lIFpFUk9fU0laRV9QVFIgKCh2b2lkICopKEFSQ0hfS01BTExPQ19NSU5BTElHTiAmZ3Q7IDE2ID8gXAomIzQzOwkJCQlBUkNIX0tNQUxMT0NfTUlOQUxJR04gOiAxNikpCiAKLSNkZWZpbmUgWkVST19PUl9OVUxMX1BUUih4KSAoKHVuc2lnbmVkIGxvbmcpKHgpICZsdDs9IFwKLQkJCQkodW5zaWduZWQgbG9uZylaRVJPX1NJWkVfUFRSKQomIzQzOyNkZWZpbmUgWkVST19PUl9OVUxMX1BUUih4KQkJCQkJCVwKJiM0MzsoewkJCQkJCQkJCVwKJiM0MzsJdW5zaWduZWQgbG9uZyBfX3pvbl9wdHIgPSAodW5zaWduZWQgbG9uZykoeCk7CQkJXAomIzQzOwlfX3pvbl9wdHIgPT0gMCB8fAkJCQkJCVwKJiM0MzsJX196b25fcHRyID09ICh1bnNpZ25lZCBsb25nKVpFUk9fU0laRV9QVFI7CQkJXAomIzQzO30pCiAKICNpbmNsdWRlICZsdDtsaW51eC9rYXNhbi5oJmd0OwogCkBAIC02MjIsNiAmIzQzOzYyOSwxMyBAQCBzdGF0aWMgaW5saW5lIGJvb2wga21lbV9kdW1wX29iaih2b2lkICpvYmplY3QpIHsgcmV0dXJuIGZhbHNlOyB9CiAjZGVmaW5lIEtNQUxMT0NfU0hJRlRfTE9XIGlsb2cyKEtNQUxMT0NfTUlOX1NJWkUpCiAjZW5kaWYKIAomIzQzOy8qCiYjNDM7ICogS2VlcCBaRVJPX1NJWkVfUFRSIGF0IG1vc3QgMTI4LCBpLmUuIGJlbG93IDB4MTAwOiBMSVNUX1BPSVNPTjEgaXMKJiM0MzsgKiAweDEwMCB3aGVuIFBPSVNPTl9QT0lOVEVSX0RFTFRBIGlzIDAsIGFuZCBubyBhcmNoaXRlY3R1cmUgY3VycmVudGx5CiYjNDM7ICogaGFzIGFuIEFSQ0hfS01BTExPQ19NSU5BTElHTiBhYm92ZSAxMjguCiYjNDM7ICovCiYjNDM7c3RhdGljX2Fzc2VydChBUkNIX0tNQUxMT0NfTUlOQUxJR04gJmx0OyAweDEwMCk7CiYjNDM7CiAvKgogICogU2V0dGluZyBBUkNIX1NMQUJfTUlOQUxJR04gaW4gYXJjaCBoZWFkZXJzIGFsbG93cyBhIGRpZmZlcmVudCBhbGlnbm1lbnQuCiAgKiBJbnRlbmRlZCBmb3IgYXJjaGVzIHRoYXQgZ2V0IG1pc2FsaWdubWVudCBmYXVsdHMgZXZlbiBmb3IgNjQgYml0IGludGVnZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXN0cy9zbHViX2t1bml0LmMgYi9saWIvdGVzdHMvc2x1Yl9rdW5pdC5jCmluZGV4IGZhNmQzMWRiY2ExNjYuLmEwMmZjNmI0MDFlM2UgMTAwNjQ0Ci0tLSBhL2xpYi90ZXN0cy9zbHViX2t1bml0LmMKJiM0MzsmIzQzOyYjNDM7IGIvbGliL3Rlc3RzL3NsdWJfa3VuaXQuYwpAQCAtMzgwLDYgJiM0MzszODAsNDggQEAgc3RhdGljIHZvaWQgdGVzdF9rbWFsbG9jX2tmcmVlX25vbG9jayhzdHJ1Y3Qga3VuaXQgKnRlc3QpCiB9CiAjZW5kaWYKIAomIzQzO3N0YXRpYyB2b2lkIHRlc3RfemVyb19zaXplX2FsbG9jKHN0cnVjdCBrdW5pdCAqdGVzdCkKJiM0Mzt7CiYjNDM7CXVuc2lnbmVkIGxvbmcgenNwID0gKHVuc2lnbmVkIGxvbmcpWkVST19TSVpFX1BUUjsKJiM0MzsJdm9pZCAqcCwgKnI7CiYjNDM7CiYjNDM7CXN0YXRpY19hc3NlcnQoKHVuc2lnbmVkIGxvbmcpWkVST19TSVpFX1BUUiAlIEFSQ0hfS01BTExPQ19NSU5BTElHTiA9PSAwKTsKJiM0MzsKJiM0MzsJcCA9IGttYWxsb2MoMCwgR0ZQX0tFUk5FTCk7CiYjNDM7CUtVTklUX0VYUEVDVF9QVFJfRVEodGVzdCwgcCwgWkVST19TSVpFX1BUUik7CiYjNDM7CUtVTklUX0VYUEVDVF9FUSh0ZXN0LCBrc2l6ZShwKSwgMCk7CiYjNDM7CWtmcmVlKHApOwomIzQzOwomIzQzOwlLVU5JVF9FWFBFQ1RfUFRSX0VRKHRlc3QsIGt6YWxsb2MoMCwgR0ZQX0tFUk5FTCksIFpFUk9fU0laRV9QVFIpOwomIzQzOwlLVU5JVF9FWFBFQ1RfUFRSX0VRKHRlc3QsIGttYWxsb2NfYXJyYXkoMCwgOCwgR0ZQX0tFUk5FTCksIFpFUk9fU0laRV9QVFIpOwomIzQzOwlLVU5JVF9FWFBFQ1RfUFRSX0VRKHRlc3QsIGtjYWxsb2MoNCwgMCwgR0ZQX0tFUk5FTCksIFpFUk9fU0laRV9QVFIpOwomIzQzOwomIzQzOwlwID0ga3ZtYWxsb2MoMCwgR0ZQX0tFUk5FTCk7CiYjNDM7CUtVTklUX0VYUEVDVF9QVFJfRVEodGVzdCwgcCwgWkVST19TSVpFX1BUUik7CiYjNDM7CWt2ZnJlZShwKTsKJiM0MzsKJiM0MzsJcCA9IGtyZWFsbG9jKE5VTEwsIDAsIEdGUF9LRVJORUwpOwomIzQzOwlLVU5JVF9FWFBFQ1RfUFRSX0VRKHRlc3QsIHAsIFpFUk9fU0laRV9QVFIpOwomIzQzOwlyID0ga3JlYWxsb2MocCwgNjQsIEdGUF9LRVJORUwpOwomIzQzOwlLVU5JVF9FWFBFQ1RfRkFMU0UodGVzdCwgWkVST19PUl9OVUxMX1BUUihyKSk7CiYjNDM7CXAgPSBrcmVhbGxvYyhyLCAwLCBHRlBfS0VSTkVMKTsKJiM0MzsJS1VOSVRfRVhQRUNUX1BUUl9FUSh0ZXN0LCBwLCBaRVJPX1NJWkVfUFRSKTsKJiM0MzsJa2ZyZWUocCk7CiYjNDM7CiYjNDM7CS8qIE9ubHkgTlVMTCBhbmQgdGhlIHplcm8tc2l6ZSBzZW50aW5lbCBtYXRjaC4gKi8KJiM0MzsJS1VOSVRfRVhQRUNUX1RSVUUodGVzdCwgWkVST19PUl9OVUxMX1BUUihOVUxMKSk7CiYjNDM7CUtVTklUX0VYUEVDVF9UUlVFKHRlc3QsIFpFUk9fT1JfTlVMTF9QVFIoWkVST19TSVpFX1BUUikpOwomIzQzOwlLVU5JVF9FWFBFQ1RfRkFMU0UodGVzdCwgWkVST19PUl9OVUxMX1BUUigodm9pZCAqKTEpKTsKJiM0MzsJS1VOSVRfRVhQRUNUX0ZBTFNFKHRlc3QsIFpFUk9fT1JfTlVMTF9QVFIoKHZvaWQgKikoenNwIC0gMSkpKTsKJiM0MzsJS1VOSVRfRVhQRUNUX0ZBTFNFKHRlc3QsIFpFUk9fT1JfTlVMTF9QVFIoKHZvaWQgKikoenNwICYjNDM7IDEpKSk7CiYjNDM7CUtVTklUX0VYUEVDVF9GQUxTRSh0ZXN0LCBaRVJPX09SX05VTExfUFRSKCh2b2lkICopKHpzcCAqIDIpKSk7CiYjNDM7CiYjNDM7CS8qIGZyZWVpbmcgdGhlIHNlbnRpbmVsIG11c3Qgc3RheSBhIG5vLW9wICovCiYjNDM7CWtmcmVlKFpFUk9fU0laRV9QVFIpOwomIzQzOwlrZnJlZV9zZW5zaXRpdmUoWkVST19TSVpFX1BUUik7CiYjNDM7CWt2ZnJlZShaRVJPX1NJWkVfUFRSKTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgaW50IHRlc3RfaW5pdChzdHJ1Y3Qga3VuaXQgKnRlc3QpCiB7CiAJc2xhYl9lcnJvcnMgPSAwOwpAQCAtNDA0LDYgJiM0Mzs0NDYsNyBAQCBzdGF0aWMgc3RydWN0IGt1bml0X2Nhc2UgdGVzdF9jYXNlc1tdID0gewogCUtVTklUX0NBU0UodGVzdF9rZnJlZV9yY3Vfd3FfZGVzdHJveSksCiAJS1VOSVRfQ0FTRSh0ZXN0X2xlYWtfZGVzdHJveSksCiAJS1VOSVRfQ0FTRSh0ZXN0X2tyZWFsbG9jX3JlZHpvbmVfemVyb2luZyksCiYjNDM7CUtVTklUX0NBU0UodGVzdF96ZXJvX3NpemVfYWxsb2MpLAogI2lmZGVmIENPTkZJR19QRVJGX0VWRU5UUwogCUtVTklUX0NBU0VfU0xPVyh0ZXN0X2ttYWxsb2Nfa2ZyZWVfbm9sb2NrKSwKICNlbmRpZgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMTQ6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzMxNAoJCQkJCQkJb3V0cHV0OiAxMzgKCQkJCQkJCXRob3VnaHRzOiAzNTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBTbGFiIEFsbG9jYXRvciBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgZG93biB0aGlzIHBhdGNoLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgaXQmIzM5O3MgdHdlYWtpbmcgc29tZSBmdW5kYW1lbnRhbCBkZWZpbml0aW9ucyBpbiBgbGludXgvc2xhYi5oYCwgc3BlY2lmaWNhbGx5IGBaRVJPX1NJWkVfUFRSYCBhbmQgYFpFUk9fT1JfTlVMTF9QVFJgLiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIHRyeWluZyB0byB0aWdodGVuIHVwIHRoZSBhbGlnbm1lbnQgYW5kIHBvaW50ZXIgY29tcGFyaXNvbiB3aXRoaW4gdGhlIHNsYWIgYWxsb2NhdG9yIGNvbnRleHQuCgpUaGUgbW9zdCBub3RhYmxlIGNoYW5nZSBpcyBob3cgYFpFUk9fU0laRV9QVFJgIGlzIGJlaW5nIGhhbmRsZWQuIFByZXZpb3VzbHksIGl0IHdhcyBhIGhhcmRjb2RlZCBhZGRyZXNzLiBOb3csIGl0JiMzOTtzIGR5bmFtaWNhbGx5IHNldCB0byBlaXRoZXIgYEFSQ0hfS01BTExPQ19NSU5BTElHTmAgKGlmIHRoYXQmIzM5O3MgbGFyZ2VyIHRoYW4gMTYpIG9yIDE2LCB3aGljaCBzdWdnZXN0cyB0aGV5JiMzOTtyZSB0cnlpbmcgdG8gYWxpZ24gaXQgd2l0aCB0aGUga2VybmVsJiMzOTtzIG1pbmltdW0gYWxsb2NhdGlvbiBhbGlnbm1lbnQgcmVxdWlyZW1lbnRzLiBUaGUgYWRkaXRpb24gb2YgdGhlIHN0YXRpYyBhc3NlcnQgYEFSQ0hfS01BTExPQ19NSU5BTElHTiAmbHQ7IDB4MTAwYCBpcyBnb29kLCBhIHNhbml0eSBjaGVjayB0byBrZWVwIHRoaW5ncyB3aXRoaW4gcmVhc29uYWJsZSBib3VuZHMsIEkmIzM5O2Qgc2F5LgoKVGhlIGBaRVJPX09SX05VTExfUFRSYCBjaGFuZ2UgbG9va3MgbGlrZSBhIGNvcnJlY3Rpb24uIEluc3RlYWQgb2YgY2hlY2tpbmcgaWYgYSBwb2ludGVyIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byBgWkVST19TSVpFX1BUUmAsIGl0JiMzOTtzIG5vdyBleHBsaWNpdGx5IGNoZWNraW5nIGZvciAwIChOVUxMKSBvciAqZXhhY3RseSogYFpFUk9fU0laRV9QVFJgLiBUaGlzIGlzIGEgZGVmaW5pdGUgaW1wcm92ZW1lbnQgaW4gdGVybXMgb2YgcG9pbnRlciBjb21wYXJpc29uIGFjY3VyYWN5LiBUaGUgYWRkaXRpb24gb2YgYSBLVW5pdCB0ZXN0IGZvciB6ZXJvLXNpemUgYWxsb2NhdGlvbnMgaXMgYWxzbyBhIHBsdXMgZm9yIGVuc3VyaW5nIHRoZSBmaXggZnVuY3Rpb25zIGFzIGludGVuZGVkLgoKTm93LCB0aGUgaW1wb3J0YW50IHF1ZXN0aW9uIGlzOiBkb2VzIHRoaXMgaW50cm9kdWNlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcz8gTm8sIGZyb20gbXkgYXNzZXNzbWVudCwgaXQgZG9lc24mIzM5O3QuIFRoaXMgaXMgYWJvdXQgZW5zdXJpbmcgcHJvcGVyIGFsaWdubWVudCBhbmQgbW9yZSBhY2N1cmF0ZSBwb2ludGVyIGNvbXBhcmlzb25zLCBub3QgYWJvdXQgaW5pdGlhbGl6aW5nIG1lbW9yeS4gVGhlIHBhdGNoIG1lcmVseSBjaGFuZ2VzIHRoZSB2YWx1ZSBvZiBgWkVST19TSVpFX1BUUmAgdG8gYWNjb21tb2RhdGUgdGhlIGFsaWdubWVudCwgYW5kIHRoZSBjb21wYXJpc29uIGlzIHNoYXJwZW5lZC4gSXQgZG9lc24mIzM5O3Qgc2VlbSB0byB0b3VjaCBhbnkgbWVtb3J5IGFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gcGF0aHMgaW4gYSB3YXkgdGhhdCB3b3VsZCBpbnRyb2R1Y2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHZ1bG5lcmFiaWxpdGllcy4KClRoZXJlZm9yZSwgYE5lZWRzS01TQU5gIHNob3VsZCBkZWZpbml0ZWx5IGJlIGZhbHNlIGhlcmUuIEtBU0FOIGFuZCBvdGhlciB0b29scyBtaWdodCBjYXRjaCBpc3N1ZXMgaWYgdGhpcyBjaGFuZ2UgYnJlYWtzIHNvbWV0aGluZyBpbiB0aGUgcG9pbnRlciBjaGVja2luZyBidXQgS01TQU4gaXMgYWxsIGFib3V0IGlkZW50aWZ5aW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGFjY2Vzcywgd2hpY2ggaXMgbm90IGFuIGlzc3VlIGhlcmUuIFRoaXMgaXMgYSB0YXJnZXRlZCBidWcgZml4L2ltcHJvdmVtZW50IGZvciBwb2ludGVyIGhhbmRsaW5nIGFuZCBhbGlnbm1lbnQgd2l0aGluIHRoZSBzbGFiIGFsbG9jYXRvciwgbm90IGEgS01TQU4tcmVsZXZhbnQgY2hhbmdlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAxNDoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgZGVmaW5pdGlvbiBvZiBgWkVST19TSVpFX1BUUmAgYW5kIGBaRVJPX09SX05VTExfUFRSYCBpbiB0aGUgc2xhYiBhbGxvY2F0b3IgaGVhZGVycyB0byBlbnN1cmUgcHJvcGVyIGFsaWdubWVudCBhbmQgc3RyaWN0ZXIgcG9pbnRlciBjaGVja2luZy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgYWxsb2NhdGlvbnMsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlLCBvciBsb2dpYyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gQW55IGJ1Z3MgcmVzdWx0aW5nIGZyb20gdGhlc2UgY2hhbmdlcyB3b3VsZCBtYW5pZmVzdCBhcyBpbnZhbGlkIHBvaW50ZXIgZGVyZWZlcmVuY2VzIG9yIG1lbW9yeSBjb3JydXB0aW9uLCB3aGljaCBhcmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IHN0YW5kYXJkIEtBU0FOIGFuZCBvdGhlciBkZWZhdWx0IGJ1ZyBkZXRlY3RvcnMuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNlIG9yIGluZm8tbGVha3MgdGhhdCB3b3VsZCBuZWNlc3NpdGF0ZSBLTVNBTi4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBkZWZpbml0aW9uIG9mIGBaRVJPX1NJWkVfUFRSYCBhbmQgYFpFUk9fT1JfTlVMTF9QVFJgIGluIHRoZSBzbGFiIGFsbG9jYXRvciBoZWFkZXJzIHRvIGVuc3VyZSBwcm9wZXIgYWxpZ25tZW50IGFuZCBzdHJpY3RlciBwb2ludGVyIGNoZWNraW5nLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBhbGxvY2F0aW9ucywgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UsIG9yIGxvZ2ljIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBBbnkgYnVncyByZXN1bHRpbmcgZnJvbSB0aGVzZSBjaGFuZ2VzIHdvdWxkIG1hbmlmZXN0IGFzIGludmFsaWQgcG9pbnRlciBkZXJlZmVyZW5jZXMgb3IgbWVtb3J5IGNvcnJ1cHRpb24sIHdoaWNoIGFyZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgc3RhbmRhcmQgS0FTQU4gYW5kIG90aGVyIGRlZmF1bHQgYnVnIGRldGVjdG9ycy4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2Ugb3IgaW5mby1sZWFrcyB0aGF0IHdvdWxkIG5lY2Vzc2l0YXRlIEtNU0FOLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0xMVQxNDoxODowMS4xMzMyNjI0OFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NjIxOTIxNDY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNMVUJfS1VOSVRfVEVTVFwiLFxuICAgIFwiU0xVQl9ERUJVR1wiLFxuICAgIFwiS1VOSVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgZGVmaW5pdGlvbiBvZiBgWkVST19TSVpFX1BUUmAgYW5kIGBaRVJPX09SX05VTExfUFRSYCBpbiB0aGUgc2xhYiBhbGxvY2F0b3IgaGVhZGVycyB0byBlbnN1cmUgcHJvcGVyIGFsaWdubWVudCBhbmQgc3RyaWN0ZXIgcG9pbnRlciBjaGVja2luZy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgYWxsb2NhdGlvbnMsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlLCBvciBsb2dpYyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gQW55IGJ1Z3MgcmVzdWx0aW5nIGZyb20gdGhlc2UgY2hhbmdlcyB3b3VsZCBtYW5pZmVzdCBhcyBpbnZhbGlkIHBvaW50ZXIgZGVyZWZlcmVuY2VzIG9yIG1lbW9yeSBjb3JydXB0aW9uLCB3aGljaCBhcmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IHN0YW5kYXJkIEtBU0FOIGFuZCBvdGhlciBkZWZhdWx0IGJ1ZyBkZXRlY3RvcnMuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNlIG9yIGluZm8tbGVha3MgdGhhdCB3b3VsZCBuZWNlc3NpdGF0ZSBLTVNBTi5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBaRVJPX09SX05VTExfUFRSIHRvIHN0cmljdGx5IGNoZWNrIGZvciAwIG9yIFpFUk9fU0laRV9QVFIsIG1lYW5pbmcgc21hbGwgaW52YWxpZCBwb2ludGVycyAobGlrZSBFUlJfUFRSKSBwYXNzZWQgdG8ga2ZyZWUgd2lsbCBub3cgY2F1c2UgYSBjcmFzaCBpbnN0ZWFkIG9mIGJlaW5nIHNpbGVudGx5IGlnbm9yZWQuIFRoaXMgaXMgYSBjb3JlIGFsbG9jYXRvciBjaGFuZ2UgdGhhdCBjYW4gZXhwb3NlIGJ1Z3MgYWNyb3NzIHRoZSBrZXJuZWwuIEEga3VuaXQgdGVzdCBpcyBhbHNvIGFkZGVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQxNDoxODowMS4xMzMyNzA1WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTg3MDk4NzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA3NTM3YzYxMjhkNTlmMWYwNTVhMDg5NmRkYzVlYzBjZWY3NTRlZDkyXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgQXVnIDExIDE0OjE4OjAwIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc2xhYi5oIGIvaW5jbHVkZS9saW51eC9zbGFiLmhcXG5pbmRleCAzMmM5ZjhlZDdhZTIwLi4wMjNlMTBhYjc3ZjhkIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgvc2xhYi5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9zbGFiLmhcXG5AQCAtMjU5LDE2ICsyNTksMjMgQEAgZW51bSBfc2xhYl9mbGFnX2JpdHMge1xcbiBcXG4gLypcXG4gICogWkVST19TSVpFX1BUUiB3aWxsIGJlIHJldHVybmVkIGZvciB6ZXJvIHNpemVkIGttYWxsb2MgcmVxdWVzdHMuXFxuKyAqIEl0IHNhdGlzZmllcyB0aGUgYWxpZ25tZW50IHByb21pc2VkIGJ5IF9fYXNzdW1lX2ttYWxsb2NfYWxpZ25tZW50XFxuKyAqIGFuZCBrZWVwcyB0aGUgaGlzdG9yaWMgdmFsdWUgMTYgd2hlcmUgdGhhdCBpcyBhbHJlYWR5IGFsaWduZWQuXFxuICAqXFxuICAqIERlcmVmZXJlbmNpbmcgWkVST19TSVpFX1BUUiB3aWxsIGxlYWQgdG8gYSBkaXN0aW5jdCBhY2Nlc3MgZmF1bHQuXFxuICAqXFxuICAqIFpFUk9fU0laRV9QVFIgY2FuIGJlIHBhc3NlZCB0byBrZnJlZSB0aG91Z2ggaW4gdGhlIHNhbWUgd2F5IHRoYXQgTlVMTCBjYW4uXFxuICAqIEJvdGggbWFrZSBrZnJlZSBhIG5vLW9wLlxcbiAgKi9cXG4tI2RlZmluZSBaRVJPX1NJWkVfUFRSICgodm9pZCAqKTE2KVxcbisjZGVmaW5lIFpFUk9fU0laRV9QVFIgKCh2b2lkICopKEFSQ0hfS01BTExPQ19NSU5BTElHTiBcXHUwMDNlIDE2ID8gXFxcXFxcbitcXHRcXHRcXHRcXHRBUkNIX0tNQUxMT0NfTUlOQUxJR04gOiAxNikpXFxuIFxcbi0jZGVmaW5lIFpFUk9fT1JfTlVMTF9QVFIoeCkgKCh1bnNpZ25lZCBsb25nKSh4KSBcXHUwMDNjPSBcXFxcXFxuLVxcdFxcdFxcdFxcdCh1bnNpZ25lZCBsb25nKVpFUk9fU0laRV9QVFIpXFxuKyNkZWZpbmUgWkVST19PUl9OVUxMX1BUUih4KVxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rKHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdHVuc2lnbmVkIGxvbmcgX196b25fcHRyID0gKHVuc2lnbmVkIGxvbmcpKHgpO1xcdFxcdFxcdFxcXFxcXG4rXFx0X196b25fcHRyID09IDAgfHxcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdF9fem9uX3B0ciA9PSAodW5zaWduZWQgbG9uZylaRVJPX1NJWkVfUFRSO1xcdFxcdFxcdFxcXFxcXG4rfSlcXG4gXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9rYXNhbi5oXFx1MDAzZVxcbiBcXG5AQCAtNjIyLDYgKzYyOSwxMyBAQCBzdGF0aWMgaW5saW5lIGJvb2wga21lbV9kdW1wX29iaih2b2lkICpvYmplY3QpIHsgcmV0dXJuIGZhbHNlOyB9XFxuICNkZWZpbmUgS01BTExPQ19TSElGVF9MT1cgaWxvZzIoS01BTExPQ19NSU5fU0laRSlcXG4gI2VuZGlmXFxuIFxcbisvKlxcbisgKiBLZWVwIFpFUk9fU0laRV9QVFIgYXQgbW9zdCAxMjgsIGkuZS4gYmVsb3cgMHgxMDA6IExJU1RfUE9JU09OMSBpc1xcbisgKiAweDEwMCB3aGVuIFBPSVNPTl9QT0lOVEVSX0RFTFRBIGlzIDAsIGFuZCBubyBhcmNoaXRlY3R1cmUgY3VycmVudGx5XFxuKyAqIGhhcyBhbiBBUkNIX0tNQUxMT0NfTUlOQUxJR04gYWJvdmUgMTI4LlxcbisgKi9cXG4rc3RhdGljX2Fzc2VydChBUkNIX0tNQUxMT0NfTUlOQUxJR04gXFx1MDAzYyAweDEwMCk7XFxuK1xcbiAvKlxcbiAgKiBTZXR0aW5nIEFSQ0hfU0xBQl9NSU5BTElHTiBpbiBhcmNoIGhlYWRlcnMgYWxsb3dzIGEgZGlmZmVyZW50IGFsaWdubWVudC5cXG4gICogSW50ZW5kZWQgZm9yIGFyY2hlcyB0aGF0IGdldCBtaXNhbGlnbm1lbnQgZmF1bHRzIGV2ZW4gZm9yIDY0IGJpdCBpbnRlZ2VyXFxuZGlmZiAtLWdpdCBhL2xpYi90ZXN0cy9zbHViX2t1bml0LmMgYi9saWIvdGVzdHMvc2x1Yl9rdW5pdC5jXFxuaW5kZXggZmE2ZDMxZGJjYTE2Ni4uYTAyZmM2YjQwMWUzZSAxMDA2NDRcXG4tLS0gYS9saWIvdGVzdHMvc2x1Yl9rdW5pdC5jXFxuKysrIGIvbGliL3Rlc3RzL3NsdWJfa3VuaXQuY1xcbkBAIC0zODAsNiArMzgwLDQ4IEBAIHN0YXRpYyB2b2lkIHRlc3Rfa21hbGxvY19rZnJlZV9ub2xvY2soc3RydWN0IGt1bml0ICp0ZXN0KVxcbiB9XFxuICNlbmRpZlxcbiBcXG4rc3RhdGljIHZvaWQgdGVzdF96ZXJvX3NpemVfYWxsb2Moc3RydWN0IGt1bml0ICp0ZXN0KVxcbit7XFxuK1xcdHVuc2lnbmVkIGxvbmcgenNwID0gKHVuc2lnbmVkIGxvbmcpWkVST19TSVpFX1BUUjtcXG4rXFx0dm9pZCAqcCwgKnI7XFxuK1xcbitcXHRzdGF0aWNfYXNzZXJ0KCh1bnNpZ25lZCBsb25nKVpFUk9fU0laRV9QVFIgJSBBUkNIX0tNQUxMT0NfTUlOQUxJR04gPT0gMCk7XFxuK1xcbitcXHRwID0ga21hbGxvYygwLCBHRlBfS0VSTkVMKTtcXG4rXFx0S1VOSVRfRVhQRUNUX1BUUl9FUSh0ZXN0LCBwLCBaRVJPX1NJWkVfUFRSKTtcXG4rXFx0S1VOSVRfRVhQRUNUX0VRKHRlc3QsIGtzaXplKHApLCAwKTtcXG4rXFx0a2ZyZWUocCk7XFxuK1xcbitcXHRLVU5JVF9FWFBFQ1RfUFRSX0VRKHRlc3QsIGt6YWxsb2MoMCwgR0ZQX0tFUk5FTCksIFpFUk9fU0laRV9QVFIpO1xcbitcXHRLVU5JVF9FWFBFQ1RfUFRSX0VRKHRlc3QsIGttYWxsb2NfYXJyYXkoMCwgOCwgR0ZQX0tFUk5FTCksIFpFUk9fU0laRV9QVFIpO1xcbitcXHRLVU5JVF9FWFBFQ1RfUFRSX0VRKHRlc3QsIGtjYWxsb2MoNCwgMCwgR0ZQX0tFUk5FTCksIFpFUk9fU0laRV9QVFIpO1xcbitcXG4rXFx0cCA9IGt2bWFsbG9jKDAsIEdGUF9LRVJORUwpO1xcbitcXHRLVU5JVF9FWFBFQ1RfUFRSX0VRKHRlc3QsIHAsIFpFUk9fU0laRV9QVFIpO1xcbitcXHRrdmZyZWUocCk7XFxuK1xcbitcXHRwID0ga3JlYWxsb2MoTlVMTCwgMCwgR0ZQX0tFUk5FTCk7XFxuK1xcdEtVTklUX0VYUEVDVF9QVFJfRVEodGVzdCwgcCwgWkVST19TSVpFX1BUUik7XFxuK1xcdHIgPSBrcmVhbGxvYyhwLCA2NCwgR0ZQX0tFUk5FTCk7XFxuK1xcdEtVTklUX0VYUEVDVF9GQUxTRSh0ZXN0LCBaRVJPX09SX05VTExfUFRSKHIpKTtcXG4rXFx0cCA9IGtyZWFsbG9jKHIsIDAsIEdGUF9LRVJORUwpO1xcbitcXHRLVU5JVF9FWFBFQ1RfUFRSX0VRKHRlc3QsIHAsIFpFUk9fU0laRV9QVFIpO1xcbitcXHRrZnJlZShwKTtcXG4rXFxuK1xcdC8qIE9ubHkgTlVMTCBhbmQgdGhlIHplcm8tc2l6ZSBzZW50aW5lbCBtYXRjaC4gKi9cXG4rXFx0S1VOSVRfRVhQRUNUX1RSVUUodGVzdCwgWkVST19PUl9OVUxMX1BUUihOVUxMKSk7XFxuK1xcdEtVTklUX0VYUEVDVF9UUlVFKHRlc3QsIFpFUk9fT1JfTlVMTF9QVFIoWkVST19TSVpFX1BUUikpO1xcbitcXHRLVU5JVF9FWFBFQ1RfRkFMU0UodGVzdCwgWkVST19PUl9OVUxMX1BUUigodm9pZCAqKTEpKTtcXG4rXFx0S1VOSVRfRVhQRUNUX0ZBTFNFKHRlc3QsIFpFUk9fT1JfTlVMTF9QVFIoKHZvaWQgKikoenNwIC0gMSkpKTtcXG4rXFx0S1VOSVRfRVhQRUNUX0ZBTFNFKHRlc3QsIFpFUk9fT1JfTlVMTF9QVFIoKHZvaWQgKikoenNwICsgMSkpKTtcXG4rXFx0S1VOSVRfRVhQRUNUX0ZBTFNFKHRlc3QsIFpFUk9fT1JfTlVMTF9QVFIoKHZvaWQgKikoenNwICogMikpKTtcXG4rXFxuK1xcdC8qIGZyZWVpbmcgdGhlIHNlbnRpbmVsIG11c3Qgc3RheSBhIG5vLW9wICovXFxuK1xcdGtmcmVlKFpFUk9fU0laRV9QVFIpO1xcbitcXHRrZnJlZV9zZW5zaXRpdmUoWkVST19TSVpFX1BUUik7XFxuK1xcdGt2ZnJlZShaRVJPX1NJWkVfUFRSKTtcXG4rfVxcbitcXG4gc3RhdGljIGludCB0ZXN0X2luaXQoc3RydWN0IGt1bml0ICp0ZXN0KVxcbiB7XFxuIFxcdHNsYWJfZXJyb3JzID0gMDtcXG5AQCAtNDA0LDYgKzQ0Niw3IEBAIHN0YXRpYyBzdHJ1Y3Qga3VuaXRfY2FzZSB0ZXN0X2Nhc2VzW10gPSB7XFxuIFxcdEtVTklUX0NBU0UodGVzdF9rZnJlZV9yY3Vfd3FfZGVzdHJveSksXFxuIFxcdEtVTklUX0NBU0UodGVzdF9sZWFrX2Rlc3Ryb3kpLFxcbiBcXHRLVU5JVF9DQVNFKHRlc3Rfa3JlYWxsb2NfcmVkem9uZV96ZXJvaW5nKSxcXG4rXFx0S1VOSVRfQ0FTRSh0ZXN0X3plcm9fc2l6ZV9hbGxvYyksXFxuICNpZmRlZiBDT05GSUdfUEVSRl9FVkVOVFNcXG4gXFx0S1VOSVRfQ0FTRV9TTE9XKHRlc3Rfa21hbGxvY19rZnJlZV9ub2xvY2spLFxcbiAjZW5kaWZcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMTQ6MTg6MDEuNjMzMTE2OTQ1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MzYwMzgwNTgwNTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiU0xVQl9LVU5JVF9URVNUXCIsXG4gICAgXCJTTFVCX0RFQlVHXCIsXG4gICAgXCJLVU5JVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBaRVJPX09SX05VTExfUFRSIHRvIHN0cmljdGx5IGNoZWNrIGZvciAwIG9yIFpFUk9fU0laRV9QVFIsIG1lYW5pbmcgc21hbGwgaW52YWxpZCBwb2ludGVycyAobGlrZSBFUlJfUFRSKSBwYXNzZWQgdG8ga2ZyZWUgd2lsbCBub3cgY2F1c2UgYSBjcmFzaCBpbnN0ZWFkIG9mIGJlaW5nIHNpbGVudGx5IGlnbm9yZWQuIFRoaXMgaXMgYSBjb3JlIGFsbG9jYXRvciBjaGFuZ2UgdGhhdCBjYW4gZXhwb3NlIGJ1Z3MgYWNyb3NzIHRoZSBrZXJuZWwuIEEga3VuaXQgdGVzdCBpcyBhbHNvIGFkZGVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA3NTM3YzYxMjhkNTlmMWYwNTVhMDg5NmRkYzVlYzBjZWY3NTRlZDkyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgMTEgMTQ6MTg6MDAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3NsYWIuaCBiL2luY2x1ZGUvbGludXgvc2xhYi5oXG5pbmRleCAzMmM5ZjhlZDdhZTIwLi4wMjNlMTBhYjc3ZjhkIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9zbGFiLmhcbisrKyBiL2luY2x1ZGUvbGludXgvc2xhYi5oXG5AQCAtMjU5LDE2ICsyNTksMjMgQEAgZW51bSBfc2xhYl9mbGFnX2JpdHMge1xuIFxuIC8qXG4gICogWkVST19TSVpFX1BUUiB3aWxsIGJlIHJldHVybmVkIGZvciB6ZXJvIHNpemVkIGttYWxsb2MgcmVxdWVzdHMuXG4rICogSXQgc2F0aXNmaWVzIHRoZSBhbGlnbm1lbnQgcHJvbWlzZWQgYnkgX19hc3N1bWVfa21hbGxvY19hbGlnbm1lbnRcbisgKiBhbmQga2VlcHMgdGhlIGhpc3RvcmljIHZhbHVlIDE2IHdoZXJlIHRoYXQgaXMgYWxyZWFkeSBhbGlnbmVkLlxuICAqXG4gICogRGVyZWZlcmVuY2luZyBaRVJPX1NJWkVfUFRSIHdpbGwgbGVhZCB0byBhIGRpc3RpbmN0IGFjY2VzcyBmYXVsdC5cbiAgKlxuICAqIFpFUk9fU0laRV9QVFIgY2FuIGJlIHBhc3NlZCB0byBrZnJlZSB0aG91Z2ggaW4gdGhlIHNhbWUgd2F5IHRoYXQgTlVMTCBjYW4uXG4gICogQm90aCBtYWtlIGtmcmVlIGEgbm8tb3AuXG4gICovXG4tI2RlZmluZSBaRVJPX1NJWkVfUFRSICgodm9pZCAqKTE2KVxuKyNkZWZpbmUgWkVST19TSVpFX1BUUiAoKHZvaWQgKikoQVJDSF9LTUFMTE9DX01JTkFMSUdOIFx1MDAzZSAxNiA/IFxcXG4rXHRcdFx0XHRBUkNIX0tNQUxMT0NfTUlOQUxJR04gOiAxNikpXG4gXG4tI2RlZmluZSBaRVJPX09SX05VTExfUFRSKHgpICgodW5zaWduZWQgbG9uZykoeCkgXHUwMDNjPSBcXFxuLVx0XHRcdFx0KHVuc2lnbmVkIGxvbmcpWkVST19TSVpFX1BUUilcbisjZGVmaW5lIFpFUk9fT1JfTlVMTF9QVFIoeClcdFx0XHRcdFx0XHRcXFxuKyh7XHRcdFx0XHRcdFx0XHRcdFx0XFxcbitcdHVuc2lnbmVkIGxvbmcgX196b25fcHRyID0gKHVuc2lnbmVkIGxvbmcpKHgpO1x0XHRcdFxcXG4rXHRfX3pvbl9wdHIgPT0gMCB8fFx0XHRcdFx0XHRcdFxcXG4rXHRfX3pvbl9wdHIgPT0gKHVuc2lnbmVkIGxvbmcpWkVST19TSVpFX1BUUjtcdFx0XHRcXFxuK30pXG4gXG4gI2luY2x1ZGUgXHUwMDNjbGludXgva2FzYW4uaFx1MDAzZVxuIFxuQEAgLTYyMiw2ICs2MjksMTMgQEAgc3RhdGljIGlubGluZSBib29sIGttZW1fZHVtcF9vYmoodm9pZCAqb2JqZWN0KSB7IHJldHVybiBmYWxzZTsgfVxuICNkZWZpbmUgS01BTExPQ19TSElGVF9MT1cgaWxvZzIoS01BTExPQ19NSU5fU0laRSlcbiAjZW5kaWZcbiBcbisvKlxuKyAqIEtlZXAgWkVST19TSVpFX1BUUiBhdCBtb3N0IDEyOCwgaS5lLiBiZWxvdyAweDEwMDogTElTVF9QT0lTT04xIGlzXG4rICogMHgxMDAgd2hlbiBQT0lTT05fUE9JTlRFUl9ERUxUQSBpcyAwLCBhbmQgbm8gYXJjaGl0ZWN0dXJlIGN1cnJlbnRseVxuKyAqIGhhcyBhbiBBUkNIX0tNQUxMT0NfTUlOQUxJR04gYWJvdmUgMTI4LlxuKyAqL1xuK3N0YXRpY19hc3NlcnQoQVJDSF9LTUFMTE9DX01JTkFMSUdOIFx1MDAzYyAweDEwMCk7XG4rXG4gLypcbiAgKiBTZXR0aW5nIEFSQ0hfU0xBQl9NSU5BTElHTiBpbiBhcmNoIGhlYWRlcnMgYWxsb3dzIGEgZGlmZmVyZW50IGFsaWdubWVudC5cbiAgKiBJbnRlbmRlZCBmb3IgYXJjaGVzIHRoYXQgZ2V0IG1pc2FsaWdubWVudCBmYXVsdHMgZXZlbiBmb3IgNjQgYml0IGludGVnZXJcbmRpZmYgLS1naXQgYS9saWIvdGVzdHMvc2x1Yl9rdW5pdC5jIGIvbGliL3Rlc3RzL3NsdWJfa3VuaXQuY1xuaW5kZXggZmE2ZDMxZGJjYTE2Ni4uYTAyZmM2YjQwMWUzZSAxMDA2NDRcbi0tLSBhL2xpYi90ZXN0cy9zbHViX2t1bml0LmNcbisrKyBiL2xpYi90ZXN0cy9zbHViX2t1bml0LmNcbkBAIC0zODAsNiArMzgwLDQ4IEBAIHN0YXRpYyB2b2lkIHRlc3Rfa21hbGxvY19rZnJlZV9ub2xvY2soc3RydWN0IGt1bml0ICp0ZXN0KVxuIH1cbiAjZW5kaWZcbiBcbitzdGF0aWMgdm9pZCB0ZXN0X3plcm9fc2l6ZV9hbGxvYyhzdHJ1Y3Qga3VuaXQgKnRlc3QpXG4re1xuK1x0dW5zaWduZWQgbG9uZyB6c3AgPSAodW5zaWduZWQgbG9uZylaRVJPX1NJWkVfUFRSO1xuK1x0dm9pZCAqcCwgKnI7XG4rXG4rXHRzdGF0aWNfYXNzZXJ0KCh1bnNpZ25lZCBsb25nKVpFUk9fU0laRV9QVFIgJSBBUkNIX0tNQUxMT0NfTUlOQUxJR04gPT0gMCk7XG4rXG4rXHRwID0ga21hbGxvYygwLCBHRlBfS0VSTkVMKTtcbitcdEtVTklUX0VYUEVDVF9QVFJfRVEodGVzdCwgcCwgWkVST19TSVpFX1BUUik7XG4rXHRLVU5JVF9FWFBFQ1RfRVEodGVzdCwga3NpemUocCksIDApO1xuK1x0a2ZyZWUocCk7XG4rXG4rXHRLVU5JVF9FWFBFQ1RfUFRSX0VRKHRlc3QsIGt6YWxsb2MoMCwgR0ZQX0tFUk5FTCksIFpFUk9fU0laRV9QVFIpO1xuK1x0S1VOSVRfRVhQRUNUX1BUUl9FUSh0ZXN0LCBrbWFsbG9jX2FycmF5KDAsIDgsIEdGUF9LRVJORUwpLCBaRVJPX1NJWkVfUFRSKTtcbitcdEtVTklUX0VYUEVDVF9QVFJfRVEodGVzdCwga2NhbGxvYyg0LCAwLCBHRlBfS0VSTkVMKSwgWkVST19TSVpFX1BUUik7XG4rXG4rXHRwID0ga3ZtYWxsb2MoMCwgR0ZQX0tFUk5FTCk7XG4rXHRLVU5JVF9FWFBFQ1RfUFRSX0VRKHRlc3QsIHAsIFpFUk9fU0laRV9QVFIpO1xuK1x0a3ZmcmVlKHApO1xuK1xuK1x0cCA9IGtyZWFsbG9jKE5VTEwsIDAsIEdGUF9LRVJORUwpO1xuK1x0S1VOSVRfRVhQRUNUX1BUUl9FUSh0ZXN0LCBwLCBaRVJPX1NJWkVfUFRSKTtcbitcdHIgPSBrcmVhbGxvYyhwLCA2NCwgR0ZQX0tFUk5FTCk7XG4rXHRLVU5JVF9FWFBFQ1RfRkFMU0UodGVzdCwgWkVST19PUl9OVUxMX1BUUihyKSk7XG4rXHRwID0ga3JlYWxsb2MociwgMCwgR0ZQX0tFUk5FTCk7XG4rXHRLVU5JVF9FWFBFQ1RfUFRSX0VRKHRlc3QsIHAsIFpFUk9fU0laRV9QVFIpO1xuK1x0a2ZyZWUocCk7XG4rXG4rXHQvKiBPbmx5IE5VTEwgYW5kIHRoZSB6ZXJvLXNpemUgc2VudGluZWwgbWF0Y2guICovXG4rXHRLVU5JVF9FWFBFQ1RfVFJVRSh0ZXN0LCBaRVJPX09SX05VTExfUFRSKE5VTEwpKTtcbitcdEtVTklUX0VYUEVDVF9UUlVFKHRlc3QsIFpFUk9fT1JfTlVMTF9QVFIoWkVST19TSVpFX1BUUikpO1xuK1x0S1VOSVRfRVhQRUNUX0ZBTFNFKHRlc3QsIFpFUk9fT1JfTlVMTF9QVFIoKHZvaWQgKikxKSk7XG4rXHRLVU5JVF9FWFBFQ1RfRkFMU0UodGVzdCwgWkVST19PUl9OVUxMX1BUUigodm9pZCAqKSh6c3AgLSAxKSkpO1xuK1x0S1VOSVRfRVhQRUNUX0ZBTFNFKHRlc3QsIFpFUk9fT1JfTlVMTF9QVFIoKHZvaWQgKikoenNwICsgMSkpKTtcbitcdEtVTklUX0VYUEVDVF9GQUxTRSh0ZXN0LCBaRVJPX09SX05VTExfUFRSKCh2b2lkICopKHpzcCAqIDIpKSk7XG4rXG4rXHQvKiBmcmVlaW5nIHRoZSBzZW50aW5lbCBtdXN0IHN0YXkgYSBuby1vcCAqL1xuK1x0a2ZyZWUoWkVST19TSVpFX1BUUik7XG4rXHRrZnJlZV9zZW5zaXRpdmUoWkVST19TSVpFX1BUUik7XG4rXHRrdmZyZWUoWkVST19TSVpFX1BUUik7XG4rfVxuK1xuIHN0YXRpYyBpbnQgdGVzdF9pbml0KHN0cnVjdCBrdW5pdCAqdGVzdClcbiB7XG4gXHRzbGFiX2Vycm9ycyA9IDA7XG5AQCAtNDA0LDYgKzQ0Niw3IEBAIHN0YXRpYyBzdHJ1Y3Qga3VuaXRfY2FzZSB0ZXN0X2Nhc2VzW10gPSB7XG4gXHRLVU5JVF9DQVNFKHRlc3Rfa2ZyZWVfcmN1X3dxX2Rlc3Ryb3kpLFxuIFx0S1VOSVRfQ0FTRSh0ZXN0X2xlYWtfZGVzdHJveSksXG4gXHRLVU5JVF9DQVNFKHRlc3Rfa3JlYWxsb2NfcmVkem9uZV96ZXJvaW5nKSxcbitcdEtVTklUX0NBU0UodGVzdF96ZXJvX3NpemVfYWxsb2MpLFxuICNpZmRlZiBDT05GSUdfUEVSRl9FVkVOVFNcbiBcdEtVTklUX0NBU0VfU0xPVyh0ZXN0X2ttYWxsb2Nfa2ZyZWVfbm9sb2NrKSxcbiAjZW5kaWZcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDE0OjE4OjAxLjYzMzExOTQyNVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY1ODg4ODExNjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgQ29yZSBLZXJuZWwgQ2hhbmdlOiBTbGFiIEFsbG9jYXRvciBIZWFkZXJzKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgaW5jbHVkZS9saW51eC9zbGFiLmhgLCBzcGVjaWZpY2FsbHkgdHdlYWtpbmcgaG93IGBaRVJPX1NJWkVfUFRSYCBhbmQgYFpFUk9fT1JfTlVMTF9QVFIoeClgIGFyZSBkZWZpbmVkLiBUaGUgZmFjdCB0aGF0IGl0J3MgYWx0ZXJpbmcgdGhlc2UgY29yZSBzbGFiIGFsbG9jYXRvciBoZWFkZXJzIGltbWVkaWF0ZWx5IGdldHMgbXkgYXR0ZW50aW9uLiBUaGlzIGlzIGxvdy1sZXZlbCwgY3JpdGljYWwgc3R1ZmYuIEFuZCB0aGVyZSdzIGEgbmV3IEtVbml0IHRlc3QsIGB0ZXN0X3plcm9fc2l6ZV9hbGxvY2AsIGFkZGVkLiBJbnRlcmVzdGluZy5cblxuVGhlIGBaRVJPX1NJWkVfUFRSYCBjaGFuZ2UgbG9va3MgbGlrZSBpdCdzIG1ha2luZyBpdCBkeW5hbWljYWxseSBkZXBlbmRlbnQgb24gYEFSQ0hfS01BTExPQ19NSU5BTElHTmAgbm93LiBUaGUgYFpFUk9fT1JfTlVMTF9QVFIoeClgIGNoYW5nZSBpcyBtb3JlIGludGVyZXN0aW5nLiBJdCdzIG5vdyBiZWluZyBzdHJpY3QgYWJvdXQgY2hlY2tpbmcgZm9yICpleGFjdGx5KiBgMGAgb3IgYFpFUk9fU0laRV9QVFJgLCBub3QgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIGBaRVJPX1NJWkVfUFRSYCBhcyBiZWZvcmUuIFRoYXQncyBhIGRlZmluaXRlIGJlaGF2aW9yIGNoYW5nZS4gVGhpcyBjb3VsZCBpbnRyb2R1Y2Ugb3IgcmVzb2x2ZSBzdWJ0bGUgbWVtb3J5LXJlbGF0ZWQgYnVncy5cblxuVGhlIHF1ZXN0aW9uIGlzLCBkb2VzIHRoaXMgd2FycmFudCBmdXp6aW5nIGVmZm9ydD8gSXQncyBhIG1hY3JvIGNoYW5nZSwgYW5kIHRoZXNlIG1hY3JvcyBhcmUgKmV2ZXJ5d2hlcmUqLiBUaGUgcG90ZW50aWFsIGZ1bmN0aW9uYWwgaW1wYWN0IGlzIGRlZmluaXRlbHkgdGhlcmUuIFdlJ3JlIHRhbGtpbmcgYWJvdXQgYSBjaGFuZ2UgaW4gaG93IG1lbW9yeSBhbGxvY2F0aW9ucyBhcmUgaGFuZGxlZCBhdCBhIHZlcnkgYmFzaWMgbGV2ZWwuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSByaWdodCB0YXJnZXQuXG5cblNpbmNlIHRoaXMgaXMgc3VjaCBhIGdsb2JhbCBjaGFuZ2UsIHNwZWNpZmljIGZ1bmN0aW9uLWxldmVsIGZ1enppbmcgbWlnaHQgYmUgdHJpY2t5LiBUaGUgS1VuaXQgdGVzdCBpcyBoZWxwZnVsLCBidXQgc3l6a2FsbGVyIGRvZXNuJ3QgdHlwaWNhbGx5IGZ1enogdGhvc2UgZGlyZWN0bHkgdW5sZXNzIGV4cGxpY2l0bHkgY29uZmlndXJlZC4gVGhlIHJlYWwgdmFsdWUgaXMgaWRlbnRpZnlpbmcgdGhlIGFyZWFzIG1vc3QgaW1wYWN0ZWQgYnkgdGhlIG5ldyBgWkVST19PUl9OVUxMX1BUUmAgZGVmaW5pdGlvbi4gQWgsIHJpZ2h0LiBJdCdzIHVzZWQgaW4gYGtmcmVlYCwgYGtzaXplYCwgYW5kIGBrcmVhbGxvY2AhIFRob3NlIGFyZSBhbGwgcHJpbWUgdGFyZ2V0cy4gVGltZSB0byB0cmFjayBkb3duICpleGFjdGx5KiB3aGVyZSBgWkVST19PUl9OVUxMX1BUUmAgaXMgYmVpbmcgdXNlZCB0aHJvdWdob3V0IHRoZSBjb2RlYmFzZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzMxNywiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0NywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDE0OjE4OjA4LjIyMjAwMzUwOVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODU0MDQ5MTM2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlpFUk9fT1JfTlVMTF9QVFJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9kZXZpY2UuYz0xMTk9c3RhdGljIHZvaWQgKmhsX2RtYV9hbGxvY19jb21tb24oc3RydWN0IGhsX2RldmljZSAqaGRldiwgc2l6ZV90IHNpemUsIGRtYV9hZGRyX3QgKmRtYV9oYW5kbGUsXFxuLS1cXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL2RldmljZS5jLTEzMy1cXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL2RldmljZS5jOjEzNDpcXHRpZiAodHJhY2VfaGFiYW5hbGFic19kbWFfYWxsb2NfZW5hYmxlZCgpIFxcdTAwMjZcXHUwMDI2ICFaRVJPX09SX05VTExfUFRSKHB0cikpXFxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9kZXZpY2UuYy0xMzUtXFx0XFx0dHJhY2VfaGFiYW5hbGFic19kbWFfYWxsb2MoXFx1MDAyNihoZGV2KS1cXHUwMDNlcGRldi1cXHUwMDNlZGV2LCAodTY0KSAodWludHB0cl90KSBwdHIsICpkbWFfaGFuZGxlLFxcbi0tXFxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9tZW1vcnkuYz04Nz1zdGF0aWMgaW50IGFsbG9jX2RldmljZV9tZW1vcnkoc3RydWN0IGhsX2N0eCAqY3R4LCBzdHJ1Y3QgaGxfbWVtX2luICphcmdzLFxcbi0tXFxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9tZW1vcnkuYy0xNDItXFx0cGh5c19wZ19wYWNrLVxcdTAwM2VwYWdlcyA9IGt2bWFsbG9jX2FycmF5KG51bV9wZ3MsIHNpemVvZih1NjQpLCBHRlBfS0VSTkVMKTtcXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL21lbW9yeS5jOjE0MzpcXHRpZiAoWkVST19PUl9OVUxMX1BUUihwaHlzX3BnX3BhY2stXFx1MDAzZXBhZ2VzKSkge1xcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vbWVtb3J5LmMtMTQ0LVxcdFxcdHJjID0gLUVOT01FTTtcXG4tLVxcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vbWVtb3J5LmM9ODM4PXN0YXRpYyBpbnQgaW5pdF9waHlzX3BnX3BhY2tfZnJvbV91c2VycHRyKHN0cnVjdCBobF9jdHggKmN0eCxcXG4tLVxcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vbWVtb3J5LmMtODg5LVxcdFxcdFxcdFxcdFxcdFxcdEdGUF9LRVJORUwpO1xcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vbWVtb3J5LmM6ODkwOlxcdGlmIChaRVJPX09SX05VTExfUFRSKHBoeXNfcGdfcGFjay1cXHUwMDNlcGFnZXMpKSB7XFxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9tZW1vcnkuYy04OTEtXFx0XFx0cmMgPSAtRU5PTUVNO1xcbi0tXFxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9tbXUvbW11LmM9Nzc5PXN0YXRpYyB2b2lkIGhsX21tdV9ocl9wb29sX2Rlc3Ryb3koc3RydWN0IGhsX2RldmljZSAqaGRldiwgc3RydWN0IGhsX21tdV9ocl9wcml2ICpocl9wcml2LFxcbi0tXFxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9tbXUvbW11LmMtNzg2LVxcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vbW11L21tdS5jOjc4NzpcXHRpZiAoWkVST19PUl9OVUxMX1BUUigqcG9vbCkpXFxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9tbXUvbW11LmMtNzg4LVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vbW11L21tdS5jLTc5My1cXHRcXHRcXHRob3AwX3BndCA9IFxcdTAwMjZocl9wcml2LVxcdTAwM2VtbXVfYXNpZF9ob3AwW2FzaWRdO1xcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vbW11L21tdS5jOjc5NDpcXHRcXHRcXHRpZiAoWkVST19PUl9OVUxMX1BUUihob3AwX3BndC1cXHUwMDNldmlydF9hZGRyKSlcXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL21tdS9tbXUuYy03OTUtXFx0XFx0XFx0XFx0Y29udGludWU7XFxuLS1cXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL21tdS9tbXUuYz04MjQ9aW50IGhsX21tdV9ocl9pbml0KHN0cnVjdCBobF9kZXZpY2UgKmhkZXYsIHN0cnVjdCBobF9tbXVfaHJfcHJpdiAqaHJfcHJpdiwgdTMyIGhvcF90YWJsZV9zaXplLFxcbi0tXFxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9tbXUvbW11LmMtODQwLVxcdGhyX3ByaXYtXFx1MDAzZW1tdV9wZ3RfcG9vbCA9IGdlbl9wb29sX2NyZWF0ZShQQUdFX1NISUZULCAtMSk7XFxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9tbXUvbW11LmM6ODQxOlxcdGlmIChaRVJPX09SX05VTExfUFRSKGhyX3ByaXYtXFx1MDAzZW1tdV9wZ3RfcG9vbCkpIHtcXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL21tdS9tbXUuYy04NDItXFx0XFx0ZGV2X2VycihoZGV2LVxcdTAwM2VkZXYsIFxcXCJGYWlsZWQgdG8gY3JlYXRlIGhyIHBhZ2UgcG9vbFxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL21tdS9tbXUuYy04NDYtXFx0aHJfcHJpdi1cXHUwMDNlbW11X2FzaWRfaG9wMCA9IGt2emFsbG9jX29ianMoc3RydWN0IHBndF9pbmZvLCBwcm9wLVxcdTAwM2VtYXhfYXNpZCk7XFxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9tbXUvbW11LmM6ODQ3OlxcdGlmIChaRVJPX09SX05VTExfUFRSKGhyX3ByaXYtXFx1MDAzZW1tdV9hc2lkX2hvcDApKSB7XFxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9tbXUvbW11LmMtODQ4LVxcdFxcdGRldl9lcnIoaGRldi1cXHUwMDNlZGV2LCBcXFwiRmFpbGVkIHRvIGFsbG9jYXRlIGhyLW1tdSBob3AwIHRhYmxlXFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vbW11L21tdS5jLTg1Ni1cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRHRlBfS0VSTkVMIHwgX19HRlBfWkVSTyk7XFxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9tbXUvbW11LmM6ODU3OlxcdFxcdGlmIChaRVJPX09SX05VTExfUFRSKHZpcnRfYWRkcikpIHtcXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL21tdS9tbXUuYy04NTgtXFx0XFx0XFx0ZGV2X2VycihoZGV2LVxcdTAwM2VkZXYsXFxuLS1cXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL21tdS9tbXUuYy04OTEtXFx0aGxfbW11X2hyX3Bvb2xfZGVzdHJveShoZGV2LCBocl9wcml2LCBob3BfdGFibGVfc2l6ZSk7XFxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9tbXUvbW11LmM6ODkyOlxcdGlmICghWkVST19PUl9OVUxMX1BUUihocl9wcml2LVxcdTAwM2VtbXVfYXNpZF9ob3AwKSlcXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL21tdS9tbXUuYy04OTMtXFx0XFx0a3ZmcmVlKGhyX3ByaXYtXFx1MDAzZW1tdV9hc2lkX2hvcDApO1xcbi0tXFxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9tbXUvbW11LmM9OTEwPXZvaWQgaGxfbW11X2hyX2Zpbmkoc3RydWN0IGhsX2RldmljZSAqaGRldiwgc3RydWN0IGhsX21tdV9ocl9wcml2ICpocl9wcml2LCB1MzIgaG9wX3RhYmxlX3NpemUpXFxuLS1cXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL21tdS9tbXUuYy05MTUtXFxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9tbXUvbW11LmM6OTE2OlxcdGlmICghWkVST19PUl9OVUxMX1BUUihocl9wcml2LVxcdTAwM2VtbXVfYXNpZF9ob3AwKSkge1xcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vbW11L21tdS5jLTkxNy1cXHRcXHRrdmZyZWUoaHJfcHJpdi1cXHUwMDNlbW11X2FzaWRfaG9wMCk7XFxuLS1cXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL21tdS9tbXUuYz0xMDY0PXN0cnVjdCBwZ3RfaW5mbyAqaGxfbW11X2hyX2FsbG9jX2hvcChzdHJ1Y3QgaGxfY3R4ICpjdHgsIHN0cnVjdCBobF9tbXVfaHJfcHJpdiAqaHJfcHJpdixcXG4tLVxcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vbW11L21tdS5jLTEwODgtXFx0XFx0XFx0XFx0XFx0XFx0XFx0R0ZQX0tFUk5FTCB8IF9fR0ZQX1pFUk8pO1xcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vbW11L21tdS5jOjEwODk6XFx0XFx0aWYgKFpFUk9fT1JfTlVMTF9QVFIodmlydF9hZGRyKSlcXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL21tdS9tbXUuYy0xMDkwLVxcdFxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9tbXUvbW11LmMtMTA5OS1cXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL21tdS9tbXUuYzoxMTAwOlxcdGlmIChaRVJPX09SX05VTExfUFRSKHZpcnRfYWRkcikpIHtcXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL21tdS9tbXUuYy0xMTAxLVxcdFxcdGRldl9lcnIoaGRldi1cXHUwMDNlZGV2LCBcXFwiZmFpbGVkIHRvIGFsbG9jYXRlIHBhZ2VcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9tbXUvbW11LmM9MTM4MD1pbnQgaGxfbW11X2RyX2luaXQoc3RydWN0IGhsX2RldmljZSAqaGRldilcXG4tLVxcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vbW11L21tdS5jLTE0MDMtXFx0XFx0XFx0XFx0XFx0XFx0cHJvcC1cXHUwMDNlZG1tdS5ob3BfdGFibGVfc2l6ZSwgR0ZQX0tFUk5FTCk7XFxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9tbXUvbW11LmM6MTQwNDpcXHRpZiAoWkVST19PUl9OVUxMX1BUUihoZGV2LVxcdTAwM2VtbXVfcHJpdi5kci5tbXVfc2hhZG93X2hvcDApKSB7XFxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9tbXUvbW11LmMtMTQwNS1cXHRcXHRyYyA9IC1FTk9NRU07XFxuLS1cXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL21tdS9tbXUuYz0xNDE5PXZvaWQgaGxfbW11X2RyX2Zpbmkoc3RydWN0IGhsX2RldmljZSAqaGRldilcXG4tLVxcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vbW11L21tdS5jLTE0MjItXFxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9tbXUvbW11LmM6MTQyMzpcXHRpZiAoWkVST19PUl9OVUxMX1BUUihoZGV2LVxcdTAwM2VtbXVfcHJpdi5kci5tbXVfc2hhZG93X2hvcDApKVxcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vbW11L21tdS5jLTE0MjQtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9iYXNlL2RldnJlcy5jPTk4MT12b2lkICpkZXZtX2tyZWFsbG9jKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqcHRyLCBzaXplX3QgbmV3X3NpemUsIGdmcF90IGdmcClcXG4tLVxcbmRyaXZlcnMvYmFzZS9kZXZyZXMuYy05OTEtXFxuZHJpdmVycy9iYXNlL2RldnJlcy5jOjk5MjpcXHRpZiAodW5saWtlbHkoWkVST19PUl9OVUxMX1BUUihwdHIpKSlcXG5kcml2ZXJzL2Jhc2UvZGV2cmVzLmMtOTkzLVxcdFxcdHJldHVybiBkZXZtX2ttYWxsb2MoZGV2LCBuZXdfc2l6ZSwgZ2ZwKTtcXG4tLVxcbmRyaXZlcnMvYmFzZS9kZXZyZXMuYz0xMTcxPXZvaWQgZGV2bV9rZnJlZShzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IHZvaWQgKnApXFxuLS1cXG5kcml2ZXJzL2Jhc2UvZGV2cmVzLmMtMTE3OC1cXHQgKi9cXG5kcml2ZXJzL2Jhc2UvZGV2cmVzLmM6MTE3OTpcXHRpZiAodW5saWtlbHkoaXNfa2VybmVsX3JvZGF0YSgodW5zaWduZWQgbG9uZylwKSB8fCBaRVJPX09SX05VTExfUFRSKHApKSlcXG5kcml2ZXJzL2Jhc2UvZGV2cmVzLmMtMTE4MC1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbV9jcnRjLmM9MTk5PXN0cnVjdCBpZGxlX3dvcmtxdWV1ZSAqaWRsZV9jcmVhdGVfd29ya3F1ZXVlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG1fY3J0Yy5jLTIwMy1cXHRpZGxlX3dvcmsgPSBremFsbG9jX29iaigqaWRsZV93b3JrKTtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbV9jcnRjLmM6MjA0OlxcdGlmIChaRVJPX09SX05VTExfUFRSKGlkbGVfd29yaykpXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG1fY3J0Yy5jLTIwNS1cXHRcXHRyZXR1cm4gTlVMTDtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtX2hkY3AuYz03NDc9c3RydWN0IGhkY3Bfd29ya3F1ZXVlICpoZGNwX2NyZWF0ZV93b3JrcXVldWUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbV9oZGNwLmMtNzU0LVxcdGhkY3Bfd29yayA9IGt6YWxsb2Nfb2JqcygqaGRjcF93b3JrLCBtYXhfY2Fwcyk7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG1faGRjcC5jOjc1NTpcXHRpZiAoWkVST19PUl9OVUxMX1BUUihoZGNwX3dvcmspKVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtX2hkY3AuYy03NTYtXFx0XFx0cmV0dXJuIE5VTEw7XFxuLS1cXG5kcml2ZXJzL3RoZXJtYWwvaW50ZWwvaW50MzQweF90aGVybWFsL2ludDM0MDBfdGhlcm1hbC5jPTUyNz1zdGF0aWMgdm9pZCBpbnQzNDAwX3NldHVwX2dkZHYoc3RydWN0IGludDM0MDBfdGhlcm1hbF9wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy90aGVybWFsL2ludGVsL2ludDM0MHhfdGhlcm1hbC9pbnQzNDAwX3RoZXJtYWwuYy01NDUtXFx0XFx0XFx0XFx0ICAgR0ZQX0tFUk5FTCk7XFxuZHJpdmVycy90aGVybWFsL2ludGVsL2ludDM0MHhfdGhlcm1hbC9pbnQzNDAwX3RoZXJtYWwuYzo1NDY6XFx0aWYgKFpFUk9fT1JfTlVMTF9QVFIocHJpdi1cXHUwMDNlZGF0YV92YXVsdCkpXFxuZHJpdmVycy90aGVybWFsL2ludGVsL2ludDM0MHhfdGhlcm1hbC9pbnQzNDAwX3RoZXJtYWwuYy01NDctXFx0XFx0Z290byBvdXRfZnJlZTtcXG4tLVxcbmRyaXZlcnMvdGhlcm1hbC9pbnRlbC9pbnQzNDB4X3RoZXJtYWwvaW50MzQwMF90aGVybWFsLmM9NTU1PXN0YXRpYyBpbnQgaW50MzQwMF90aGVybWFsX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL3RoZXJtYWwvaW50ZWwvaW50MzQweF90aGVybWFsL2ludDM0MDBfdGhlcm1hbC5jLTYxNS1cXG5kcml2ZXJzL3RoZXJtYWwvaW50ZWwvaW50MzQweF90aGVybWFsL2ludDM0MDBfdGhlcm1hbC5jOjYxNjpcXHRpZiAoIVpFUk9fT1JfTlVMTF9QVFIocHJpdi1cXHUwMDNlZGF0YV92YXVsdCkpIHtcXG5kcml2ZXJzL3RoZXJtYWwvaW50ZWwvaW50MzQweF90aGVybWFsL2ludDM0MDBfdGhlcm1hbC5jLTYxNy1cXHRcXHRyZXN1bHQgPSBkZXZpY2VfY3JlYXRlX2Jpbl9maWxlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIFxcdTAwMjZiaW5fYXR0cl9kYXRhX3ZhdWx0KTtcXG4tLVxcbmRyaXZlcnMvdGhlcm1hbC9pbnRlbC9pbnQzNDB4X3RoZXJtYWwvaW50MzQwMF90aGVybWFsLmMtNjM4LVxcdGNsZWFudXBfb2R2cChwcml2KTtcXG5kcml2ZXJzL3RoZXJtYWwvaW50ZWwvaW50MzQweF90aGVybWFsL2ludDM0MDBfdGhlcm1hbC5jOjYzOTpcXHRpZiAoIVpFUk9fT1JfTlVMTF9QVFIocHJpdi1cXHUwMDNlZGF0YV92YXVsdCkpIHtcXG5kcml2ZXJzL3RoZXJtYWwvaW50ZWwvaW50MzQweF90aGVybWFsL2ludDM0MDBfdGhlcm1hbC5jLTY0MC1cXHRcXHRkZXZpY2VfcmVtb3ZlX2Jpbl9maWxlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIFxcdTAwMjZiaW5fYXR0cl9kYXRhX3ZhdWx0KTtcXG4tLVxcbmRyaXZlcnMvdGhlcm1hbC9pbnRlbC9pbnQzNDB4X3RoZXJtYWwvaW50MzQwMF90aGVybWFsLmM9NjU5PXN0YXRpYyB2b2lkIGludDM0MDBfdGhlcm1hbF9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvdGhlcm1hbC9pbnRlbC9pbnQzNDB4X3RoZXJtYWwvaW50MzQwMF90aGVybWFsLmMtNjczLVxcbmRyaXZlcnMvdGhlcm1hbC9pbnRlbC9pbnQzNDB4X3RoZXJtYWwvaW50MzQwMF90aGVybWFsLmM6Njc0OlxcdGlmICghWkVST19PUl9OVUxMX1BUUihwcml2LVxcdTAwM2VkYXRhX3ZhdWx0KSlcXG5kcml2ZXJzL3RoZXJtYWwvaW50ZWwvaW50MzQweF90aGVybWFsL2ludDM0MDBfdGhlcm1hbC5jLTY3NS1cXHRcXHRkZXZpY2VfcmVtb3ZlX2Jpbl9maWxlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIFxcdTAwMjZiaW5fYXR0cl9kYXRhX3ZhdWx0KTtcXG4tLVxcbmZzL2JpbmZtdF9lbGYuYz0xNTkzPXN0YXRpYyBpbnQgZmlsbF9maWxlc19ub3RlKHN0cnVjdCBtZW1lbGZub3RlICpub3RlLCBzdHJ1Y3QgY29yZWR1bXBfcGFyYW1zICpjcHJtKVxcbi0tXFxuZnMvYmluZm10X2VsZi5jLTE2MjAtXFx0ZGF0YSA9IGt2bWFsbG9jKHNpemUsIEdGUF9LRVJORUwpO1xcbmZzL2JpbmZtdF9lbGYuYzoxNjIxOlxcdGlmIChaRVJPX09SX05VTExfUFRSKGRhdGEpKVxcbmZzL2JpbmZtdF9lbGYuYy0xNjIyLVxcdFxcdHJldHVybiAtRU5PTUVNO1xcbi0tXFxuZnMvamJkMi90cmFuc2FjdGlvbi5jPTU4PXZvaWQgamJkMl9qb3VybmFsX2ZyZWVfdHJhbnNhY3Rpb24odHJhbnNhY3Rpb25fdCAqdHJhbnNhY3Rpb24pXFxuZnMvamJkMi90cmFuc2FjdGlvbi5jLTU5LXtcXG5mcy9qYmQyL3RyYW5zYWN0aW9uLmM6NjA6XFx0aWYgKHVubGlrZWx5KFpFUk9fT1JfTlVMTF9QVFIodHJhbnNhY3Rpb24pKSlcXG5mcy9qYmQyL3RyYW5zYWN0aW9uLmMtNjEtXFx0XFx0cmV0dXJuO1xcbi0tXFxuaW5jbHVkZS9saW51eC9zbGFiLmg9MjY9ZW51bSBfc2xhYl9mbGFnX2JpdHMge1xcbi0tXFxuaW5jbHVkZS9saW51eC9zbGFiLmgtMjcyLVxcbmluY2x1ZGUvbGludXgvc2xhYi5oOjI3MzojZGVmaW5lIFpFUk9fT1JfTlVMTF9QVFIoeClcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuaW5jbHVkZS9saW51eC9zbGFiLmgtMjc0LSh7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTEyNTk9c3RhdGljIHZvaWQgKmNvcHlfYXJyYXkodm9pZCAqZHN0LCBjb25zdCB2b2lkICpzcmMsIHNpemVfdCBuLCBzaXplX3Qgc2l6ZSwgZ2ZwX3QgZmxhZ3MpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI2NC1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTI2NTpcXHRpZiAoWkVST19PUl9OVUxMX1BUUihzcmMpKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjY2LVxcdFxcdGdvdG8gb3V0O1xcbi0tXFxua2VybmVsL2V2ZW50cy91cHJvYmVzLmM9MjU0OT1zdGF0aWMgdm9pZCBoYW5kbGVyX2NoYWluKHN0cnVjdCB1cHJvYmUgKnVwcm9iZSwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXFxuLS1cXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy0yNTgyLVxcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jOjI1ODM6XFx0aWYgKCFaRVJPX09SX05VTExfUFRSKHJpKSlcXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy0yNTg0LVxcdFxcdHByZXBhcmVfdXJldHByb2JlKHVwcm9iZSwgcmVncywgcmkpO1xcbi0tXFxubGliL3Rlc3RzL3NsdWJfa3VuaXQuYz0zODM9c3RhdGljIHZvaWQgdGVzdF96ZXJvX3NpemVfYWxsb2Moc3RydWN0IGt1bml0ICp0ZXN0KVxcbi0tXFxubGliL3Rlc3RzL3NsdWJfa3VuaXQuYy00MDUtXFx0ciA9IGtyZWFsbG9jKHAsIDY0LCBHRlBfS0VSTkVMKTtcXG5saWIvdGVzdHMvc2x1Yl9rdW5pdC5jOjQwNjpcXHRLVU5JVF9FWFBFQ1RfRkFMU0UodGVzdCwgWkVST19PUl9OVUxMX1BUUihyKSk7XFxubGliL3Rlc3RzL3NsdWJfa3VuaXQuYy00MDctXFx0cCA9IGtyZWFsbG9jKHIsIDAsIEdGUF9LRVJORUwpO1xcbi0tXFxubGliL3Rlc3RzL3NsdWJfa3VuaXQuYy00MTEtXFx0LyogT25seSBOVUxMIGFuZCB0aGUgemVyby1zaXplIHNlbnRpbmVsIG1hdGNoLiAqL1xcbmxpYi90ZXN0cy9zbHViX2t1bml0LmM6NDEyOlxcdEtVTklUX0VYUEVDVF9UUlVFKHRlc3QsIFpFUk9fT1JfTlVMTF9QVFIoTlVMTCkpO1xcbmxpYi90ZXN0cy9zbHViX2t1bml0LmM6NDEzOlxcdEtVTklUX0VYUEVDVF9UUlVFKHRlc3QsIFpFUk9fT1JfTlVMTF9QVFIoWkVST19TSVpFX1BUUikpO1xcbmxpYi90ZXN0cy9zbHViX2t1bml0LmM6NDE0OlxcdEtVTklUX0VYUEVDVF9GQUxTRSh0ZXN0LCBaRVJPX09SX05VTExfUFRSKCh2b2lkICopMSkpO1xcbmxpYi90ZXN0cy9zbHViX2t1bml0LmM6NDE1OlxcdEtVTklUX0VYUEVDVF9GQUxTRSh0ZXN0LCBaRVJPX09SX05VTExfUFRSKCh2b2lkICopKHpzcCAtIDEpKSk7XFxubGliL3Rlc3RzL3NsdWJfa3VuaXQuYzo0MTY6XFx0S1VOSVRfRVhQRUNUX0ZBTFNFKHRlc3QsIFpFUk9fT1JfTlVMTF9QVFIoKHZvaWQgKikoenNwICsgMSkpKTtcXG5saWIvdGVzdHMvc2x1Yl9rdW5pdC5jOjQxNzpcXHRLVU5JVF9FWFBFQ1RfRkFMU0UodGVzdCwgWkVST19PUl9OVUxMX1BUUigodm9pZCAqKSh6c3AgKiAyKSkpO1xcbmxpYi90ZXN0cy9zbHViX2t1bml0LmMtNDE4LVxcbi0tXFxubW0vc2x1Yi5jPTY1NzQ9c2l6ZV90IGtzaXplKGNvbnN0IHZvaWQgKm9ianApXFxuLS1cXG5tbS9zbHViLmMtNjU5MC1cXHQgKi9cXG5tbS9zbHViLmM6NjU5MTpcXHRpZiAodW5saWtlbHkoWkVST19PUl9OVUxMX1BUUihvYmpwKSkgfHwgIWthc2FuX2NoZWNrX2J5dGUob2JqcCkpXFxubW0vc2x1Yi5jLTY1OTItXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5tbS9zbHViLmM9NjY3MT12b2lkIGtmcmVlKGNvbnN0IHZvaWQgKm9iamVjdClcXG4tLVxcbm1tL3NsdWIuYy02Njc5LVxcbm1tL3NsdWIuYzo2NjgwOlxcdGlmICh1bmxpa2VseShaRVJPX09SX05VTExfUFRSKG9iamVjdCkpKVxcbm1tL3NsdWIuYy02NjgxLVxcdFxcdHJldHVybjtcXG4tLVxcbm1tL3NsdWIuYz02NzA1PXZvaWQga2ZyZWVfbm9sb2NrKGNvbnN0IHZvaWQgKm9iamVjdClcXG4tLVxcbm1tL3NsdWIuYy02NzEwLVxcbm1tL3NsdWIuYzo2NzExOlxcdGlmICh1bmxpa2VseShaRVJPX09SX05VTExfUFRSKG9iamVjdCkpKVxcbm1tL3NsdWIuYy02NzEyLVxcdFxcdHJldHVybjtcXG4tLVxcbm1tL3NsdWIuYz02NzY1PV9fZG9fa3JlYWxsb2MoY29uc3Qgdm9pZCAqcCwgc2l6ZV90IG5ld19zaXplLCB1bnNpZ25lZCBsb25nIGFsaWduLCBnZnBfdCBmbGFncywgaW50IG5pZCwga21hbGxvY190b2tlbl90IHRva2VuKVxcbi0tXFxubW0vc2x1Yi5jLTY3NzEtXFxubW0vc2x1Yi5jOjY3NzI6XFx0aWYgKHVubGlrZWx5KFpFUk9fT1JfTlVMTF9QVFIocCkpKVxcbm1tL3NsdWIuYy02NzczLVxcdFxcdGdvdG8gYWxsb2NfbmV3O1xcbi0tXFxubW0vc2x1Yi5jPTY5ODM9dm9pZCBrdmZyZWVfc2Vuc2l0aXZlKGNvbnN0IHZvaWQgKmFkZHIsIHNpemVfdCBsZW4pXFxubW0vc2x1Yi5jLTY5ODQte1xcbm1tL3NsdWIuYzo2OTg1OlxcdGlmIChsaWtlbHkoIVpFUk9fT1JfTlVMTF9QVFIoYWRkcikpKSB7XFxubW0vc2x1Yi5jLTY5ODYtXFx0XFx0bWVtemVyb19leHBsaWNpdCgodm9pZCAqKWFkZHIsIGxlbik7XFxuLS1cXG5tbS91c2VyY29weS5jPTE1MD1zdGF0aWMgaW5saW5lIHZvaWQgY2hlY2tfYm9ndXNfYWRkcmVzcyhjb25zdCB1bnNpZ25lZCBsb25nIHB0ciwgdW5zaWduZWQgbG9uZyBuLFxcbi0tXFxubW0vdXNlcmNvcHkuYy0xNTctXFx0LyogUmVqZWN0IGlmIE5VTEwgb3IgWkVSTy1hbGxvY2F0aW9uLiAqL1xcbm1tL3VzZXJjb3B5LmM6MTU4OlxcdGlmIChaRVJPX09SX05VTExfUFRSKHB0cikpXFxubW0vdXNlcmNvcHkuYy0xNTktXFx0XFx0dXNlcmNvcHlfYWJvcnQoXFxcIm51bGwgYWRkcmVzc1xcXCIsIE5VTEwsIHRvX3VzZXIsIHB0ciwgbik7XFxuLS1cXG5uZXQvc3VucnBjL2F1dGhfZ3NzL2F1dGhfZ3NzLmM9MTk4OT1nc3NfdW53cmFwX3Jlc3BfaW50ZWcoc3RydWN0IHJwY190YXNrICp0YXNrLCBzdHJ1Y3QgcnBjX2NyZWQgKmNyZWQsXFxuLS1cXG5uZXQvc3VucnBjL2F1dGhfZ3NzL2F1dGhfZ3NzLmMtMjAzMC1cXHRtaWMuZGF0YSA9IGttYWxsb2MobGVuLCBHRlBfS0VSTkVMKTtcXG5uZXQvc3VucnBjL2F1dGhfZ3NzL2F1dGhfZ3NzLmM6MjAzMTpcXHRpZiAoWkVST19PUl9OVUxMX1BUUihtaWMuZGF0YSkpXFxubmV0L3N1bnJwYy9hdXRoX2dzcy9hdXRoX2dzcy5jLTIwMzItXFx0XFx0Z290byB1bndyYXBfZmFpbGVkO1xcbi0tXFxubmV0L3N1bnJwYy9hdXRoX2dzcy9zdmNhdXRoX2dzcy5jPTExNTU9c3ZjYXV0aF9nc3NfbGVnYWN5X2luaXQoc3RydWN0IHN2Y19ycXN0ICpycXN0cCxcXG4tLVxcbm5ldC9zdW5ycGMvYXV0aF9nc3Mvc3ZjYXV0aF9nc3MuYy0xMTg1LVxcdHJzaWtleS5pbl90b2tlbi5kYXRhID0ga21hbGxvYyhsZW4sIEdGUF9LRVJORUwpO1xcbm5ldC9zdW5ycGMvYXV0aF9nc3Mvc3ZjYXV0aF9nc3MuYzoxMTg2OlxcdGlmIChaRVJPX09SX05VTExfUFRSKHJzaWtleS5pbl90b2tlbi5kYXRhKSkge1xcbm5ldC9zdW5ycGMvYXV0aF9nc3Mvc3ZjYXV0aF9nc3MuYy0xMTg3LVxcdFxcdGtmcmVlKHJzaWtleS5pbl9oYW5kbGUuZGF0YSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDE0OjE4OjExLjA3NjA1OTE4NVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk2NDc5MjA2NTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBJbXBhY3Qgb2YgdGhlIFpFUk9fT1JfTlVMTF9QVFIgQ2hhbmdlKipcblxuT2theSwgc28gdGhpcyBjaGFuZ2UgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgYnV0IGl0IGhhcyBzaWduaWZpY2FudCBpbXBsaWNhdGlvbnMuIEl0IHNlZW1zIHRoZSBjb2RlIG5vdyBzdHJpY3RseSBkZWZpbmVzIGBaRVJPX09SX05VTExfUFRSKHgpYCBhcyBlaXRoZXIgYDBgIG9yIGBaRVJPX1NJWkVfUFRSYCwgZWZmZWN0aXZlbHkgZXhjbHVkaW5nIHBvaW50ZXJzIHdpdGggc21hbGwgdmFsdWVzICgxLTEyNywgZGVwZW5kaW5nIG9uIGFyY2hpdGVjdHVyZSkgdGhhdCB1c2VkIHRvIGJlIGNvbnNpZGVyZWQgXCJ6ZXJvIG9yIG51bGxcIi4gVGhpcyBtZWFucyB0aGF0IGF0dGVtcHRpbmcgdG8gZnJlZSBhIHNtYWxsIGludGVnZXIgdmFsdWUsIGxpa2UgYGtmcmVlKCh2b2lkICopMSlgLCB3aWxsIG5vIGxvbmdlciBiZSBzaWxlbnRseSBpZ25vcmVkOyBpdCdsbCBub3cgbGlrZWx5IHRyaWdnZXIgYSBjcmFzaCBiZWNhdXNlIGl0J3MgYXR0ZW1wdGluZyB0byBmcmVlIGFuIGludmFsaWQgcG9pbnRlci4gVGhpcyBpcyBhIGRlbGliZXJhdGUgZGVzaWduIGNoYW5nZSB0byBjYXRjaCB0aGVzZSBraW5kcyBvZiBidWdzLCB3aGljaCBpcyBnb29kLlxuXG5NeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJXb3J0aCBmdXp6aW5nP1wiIEFic29sdXRlbHksIHRoaXMgaXMgYSBwcmltZSBjYW5kaWRhdGUuIEl0IGhhcyB0aGUgcG90ZW50aWFsIHRvIGV4cG9zZSBidWdzIGluIGFueSBrZXJuZWwgY29kZSB0aGF0IG1pc3Rha2VubHkgcGFzc2VzIGEgc21hbGwgaW50ZWdlciB2YWx1ZSB0byBtZW1vcnkgbWFuYWdlbWVudCBmdW5jdGlvbnMgbGlrZSBga2ZyZWVgLCBga3NpemVgLCBga3JlYWxsb2NgLCBhbmQgb3RoZXJzLiBUaGVzZSBhcmUgYWxsIGNvcmUgYWxsb2NhdG9yIGZ1bmN0aW9ucyB0aGF0IGNvdWxkIG5vdyByZWFjdCBkaWZmZXJlbnRseS5cblxuQnV0IHRoZW4gSSByZWNhbGwgdGhlIHByb21wdCdzIHNwZWNpZmljIHJlcXVpcmVtZW50cy4gSSBuZWVkIHRvIGlkZW50aWZ5ICpzcGVjaWZpYyoga2VybmVsIGZ1bmN0aW9ucyBmb3IgZm9jdXNlZCBmdXp6aW5nLiBXaGlsZSBga2ZyZWVgLCBga3NpemVgLCBhbmQgYGtyZWFsbG9jYCBhcmUgb2J2aW91c2x5IGltcGFjdGVkLCB0aGV5IGFyZSBnZW5lcmljIGFuZCBob3QtcGF0aCwgYW5kIHRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IHNheXMgdG8gYXZvaWQgdGhlbS4gRGFuZy4gVGhlIHBhdGNoIGludHJvZHVjZXMgYHRlc3RfemVyb19zaXplX2FsbG9jYCB3aXRoaW4gdGhlIGBzbHViX2t1bml0LmNgIGZpbGUsIGJ1dCB0aGF0J3MgYSBrdW5pdCB0ZXN0LCBhbmQgc3l6a2FsbGVyIGRvZXNuJ3QgZGlyZWN0bHkgZnV6eiB0aG9zZS4gU28sIGl0IGxvb2tzIGxpa2UgdGhlcmUgYXJlbid0IGFueSBzcGVjaWZpYyB0YXJnZXQgZnVuY3Rpb25zIHRvIHBvaW50IHRvIGFuZCBJIGhhdmUgdG8gbGVhdmUgdGhlIGBGb2N1c1N5bWJvbHNgIGVtcHR5LlxuXG5GaW5hbGx5LCBJIHNob3VsZCBjaGVjayB0aGUgYEVuYWJsZUNvbmZpZ3NgIHRvIGVuc3VyZSB0aGUgbmV3IGt1bml0IHRlc3QgaXMgY29tcGlsZWQuICBJdCdzIGluIHRoZSBgbGliL3Rlc3RzL3NsdWJfa3VuaXQuY2AgZmlsZSwgc28gSSBuZWVkIGBDT05GSUdfU0xVQl9LVU5JVF9URVNUYC4gTGV0IG1lIGRvdWJsZS1jaGVjayB0aGF0IHRoaXMgaXMgY29ycmVjdCBieSBjaGVja2luZyBgbGliL3Rlc3RzL0tjb25maWdgIG9yIGBsaWIvS2NvbmZpZy5kZWJ1Z2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk0NDYsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMTQ6MTg6MjAuNzIzOTgzNTQyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI4NDg0MzI5OTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFNMVUJfS1VOSVRfVEVTVFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJsaWIvS2NvbmZpZy5kZWJ1Zz0yOTc5PWNvbmZpZyBTSERJM19LVU5JVF9URVNUXFxuLS1cXG5saWIvS2NvbmZpZy5kZWJ1Zy0yOTg4LVxcbmxpYi9LY29uZmlnLmRlYnVnOjI5ODk6Y29uZmlnIFNMVUJfS1VOSVRfVEVTVFxcbmxpYi9LY29uZmlnLmRlYnVnLTI5OTAtXFx0dHJpc3RhdGUgXFxcIktVbml0IHRlc3QgZm9yIFNMVUIgY2FjaGUgZXJyb3IgZGV0ZWN0aW9uXFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDE0OjE4OjIzLjU3MjQyMTcxOVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MDAzNjA1NTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyB0aGUgU0xVQl9LVU5JVF9URVNUIENvbmZpZ3VyYXRpb24gT3B0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYFNMVUJfS1VOSVRfVEVTVGAuIEl0J3MgY2xlYXIgdGhpcyBpcyB0aGUgY29uZmlnIG9wdGlvbiB3ZSdyZSBkZWFsaW5nIHdpdGguIE5vdywgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGRpdmUgaW50byBpdHMgZGVwZW5kZW5jaWVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IG90aGVyIGNvbmZpZ3VyYXRpb25zLCBmZWF0dXJlcywgb3IgbGlicmFyaWVzIHRoaXMgb25lIHJlbGllcyBvbi4gVW5kZXJzdGFuZGluZyB0aGUgZGVwZW5kZW5jeSB0cmVlIHdpbGwgYmUgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBpdHMgb3ZlcmFsbCBpbXBhY3QgYW5kIGhvdyBpdCBmaXRzIGludG8gdGhlIGJyb2FkZXIga2VybmVsIGJ1aWxkIGFuZCBmdW5jdGlvbmFsaXR5LiBUaW1lIHRvIHN0YXJ0IGRpZ2dpbmcgaW50byB0aGUgS2NvbmZpZyBmaWxlcyFcblxuXG4iLCJJbnB1dFRva2VucyI6MTA2MzcsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQxNDoxODoyNy4xNzI3ODQ1NTNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEwMTY2ODQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBTTFVCX0tVTklUX1RFU1RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibGliL0tjb25maWcuZGVidWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibGliL0tjb25maWcuZGVidWc9Mjk3OT1jb25maWcgU0hESTNfS1VOSVRfVEVTVFxcbi0tXFxubGliL0tjb25maWcuZGVidWctMjk4OC1cXG5saWIvS2NvbmZpZy5kZWJ1ZzoyOTg5OmNvbmZpZyBTTFVCX0tVTklUX1RFU1RcXG5saWIvS2NvbmZpZy5kZWJ1Zy0yOTkwLVxcdHRyaXN0YXRlIFxcXCJLVW5pdCB0ZXN0IGZvciBTTFVCIGNhY2hlIGVycm9yIGRldGVjdGlvblxcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQxNDoxODoyNy4yODI5NTk5MTFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjc0OTk5MzA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIERlYnVnZ2luZyBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgc29tZXRoaW5nIHJlbGF0ZWQgdG8gdGhlIGRlYnVnZ2luZyBjb25maWd1cmF0aW9uIG9mIHRoaXMgc3lzdGVtLiBUaGUgbG9naWNhbCBwbGFjZSB0byBzdGFydCBpcyB0aGUgYGxpYi9LY29uZmlnLmRlYnVnYCBmaWxlLiBOb3csIGJhc2VkIG9uIG15IHBhc3QgZXhwZXJpZW5jZSB3aXRoIHRoZXNlIGNvbmZpZ3VyYXRpb25zLCBsaW5lIDI5ODkgaXMgbGlrZWx5IHRvIGJlIGEgY3J1Y2lhbCBwb2ludCDigJMgZWl0aGVyIGRlZmluaW5nIGEga2V5IGRlYnVnIG9wdGlvbiwgcHJvdmlkaW5nIGEgY29uZGl0aW9uYWwgZm9yIGl0LCBvciBwZXJoYXBzIHJlZmVyZW5jaW5nIGFub3RoZXIgZmlsZSB3aXRoIG1vcmUgZGV0YWlscy4gSSdtIGdvaW5nIHRvIHF1aWNrbHkganVtcCB0byB0aGF0IGxpbmUgYW5kIGNoZWNrIHRoZSBzdXJyb3VuZGluZyBjb2RlLCBmb2N1c2luZyBvbiB0aGUgY29udGV4dCBhbmQgZGVwZW5kZW5jaWVzIHRvIHF1aWNrbHkgZ2V0IGEgZ29vZCBvdmVydmlldyBvZiB0aGUgcmVsZXZhbnQgbG9naWMgYW5kIHBvdGVudGlhbGx5IHNwb3QgdGhlIHJvb3QgY2F1c2Ugb2YgdGhlIGlzc3VlIG9yIHVuZGVyc3RhbmQgaG93IGEgcGFydGljdWxhciBkZWJ1ZyBmZWF0dXJlIGlzIGVuYWJsZWQvZGlzYWJsZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwOTIxLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMTQ6MTg6MzAuNTU3OTYzOTRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg3NTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImxpYi9LY29uZmlnLmRlYnVnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI5ODUsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjI5ODU6XFx0XFx0ICBfX2xzaHJkaTMoKSBoZWxwZXIgZnVuY3Rpb25zIHVzZWQgdG8gaW1wbGVtZW50IDY0LWJpdCBhcml0aG1ldGljXFxuMjk4NjpcXHRcXHQgIHNoaWZ0IGxlZnQsIGFyaXRobWV0aWMgc2hpZnQgcmlnaHQgYW5kIGxvZ2ljYWwgc2hpZnQgcmlnaHQsXFxuMjk4NzpcXHRcXHQgIHJlc3BlY3RpdmVseSwgb24gYSAzMi1iaXQgQ1BVcy5cXG4yOTg4OlxcdFxcbjI5ODk6XFx0Y29uZmlnIFNMVUJfS1VOSVRfVEVTVFxcbjI5OTA6XFx0XFx0dHJpc3RhdGUgXFxcIktVbml0IHRlc3QgZm9yIFNMVUIgY2FjaGUgZXJyb3IgZGV0ZWN0aW9uXFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuMjk5MTpcXHRcXHRkZXBlbmRzIG9uIFNMVUJfREVCVUcgXFx1MDAyNlxcdTAwMjYgS1VOSVRcXG4yOTkyOlxcdFxcdGRlZmF1bHQgS1VOSVRfQUxMX1RFU1RTXFxuMjk5MzpcXHRcXHRoZWxwXFxuMjk5NDpcXHRcXHQgIFRoaXMgYnVpbGRzIFNMVUIgYWxsb2NhdG9yIHVuaXQgdGVzdC5cXG4yOTk1OlxcdFxcdCAgVGVzdHMgU0xVQiBjYWNoZSBkZWJ1Z2dpbmcgZnVuY3Rpb25hbGl0eS5cXG4yOTk2OlxcdFxcdCAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gS1VuaXQgYW5kIHVuaXQgdGVzdHMgaW4gZ2VuZXJhbCBwbGVhc2UgcmVmZXJcXG4yOTk3OlxcdFxcdCAgdG8gdGhlIEtVbml0IGRvY3VtZW50YXRpb24gaW4gRG9jdW1lbnRhdGlvbi9kZXYtdG9vbHMva3VuaXQvLlxcbjI5OTg6XFx0XFxuMjk5OTpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuMzAwMDpcXHRcXG4zMDAxOlxcdGNvbmZpZyBSQVRJT05BTF9LVU5JVF9URVNUXFxuMzAwMjpcXHRcXHR0cmlzdGF0ZSBcXFwiS1VuaXQgdGVzdCBmb3IgcmF0aW9uYWwuY1xcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcbjMwMDM6XFx0XFx0ZGVwZW5kcyBvbiBLVU5JVCBcXHUwMDI2XFx1MDAyNiBSQVRJT05BTFxcbjMwMDQ6XFx0XFx0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMTQ6MTg6MzAuNTU4NDY0NFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2OTQ2Njk5NTM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIGBrZnJlZWAgU2FmZXR5IFBhdGNoKipcblxuT2theSwgbGV0IG1lIGJyZWFrIHRoaXMgZG93bi4gVGhlIGRlcGVuZGVuY2llcyBoZXJlIGFyZSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiBgU0xVQl9ERUJVR2AgYW5kIGBLVU5JVGAuIFNvIEknbGwgbmVlZCB0byBlbmFibGUgYFNMVUJfS1VOSVRfVEVTVGAsIGBTTFVCX0RFQlVHYCwgYW5kIGBLVU5JVGAgdG8gbWFrZSBzdXJlIHRoZSB0ZXN0cyBydW4gYW5kIEkgaGF2ZSB0aGUgZGVidWdnaW5nIGluZm9ybWF0aW9uIEkgbmVlZC4gSSdsbCBub3RlIHRoYXQgYFNMVUJfREVCVUdgIGlzIG9mdGVuIGVuYWJsZWQgYnkgZGVmYXVsdCBpbiBkZWJ1ZyBrZXJuZWxzLCBidXQgaXQncyBhbHdheXMgYmVzdCB0byBiZSBleHBsaWNpdCBhYm91dCBpdCBpbiBhIGNvbmZpZ3VyYXRpb24uXG5cblRoZSBjcml0aWNhbCBjaGFuZ2UgaXMgaW4gYGluY2x1ZGUvbGludXgvc2xhYi5oYC4gU2luY2UgaXQncyBpbiBhIGhlYWRlciwgdGhpcyBpcyBhIHBlcnZhc2l2ZSBjaGFuZ2UgdGhhdCBpbXBhY3RzIHRoZSBlbnRpcmUga2VybmVsLCBhbmQgZG9lc24ndCByZWx5IG9uIGFueSBzcGVjaWZpYyBtb2R1bGUgY29uZmlnLiBUaGlzIGNoYW5nZSBlbmZvcmNlcyBzdHJpY3RlciB2YWxpZGF0aW9uIG9mIHBvaW50ZXJzIHBhc3NlZCB0byBga2ZyZWVgLCB3aGljaCBtZWFucyB0aGF0IGludmFsaWQgcG9pbnRlcnMgbGlrZSBgRVJSX1BUUmAgd2lsbCBub3cgbGVhZCB0byBhIGNyYXNoLCByYXRoZXIgdGhhbiBiZWluZyBzaWxlbnRseSBpZ25vcmVkLiBUaGlzIGlzIGV4YWN0bHkgdGhlIGtpbmQgb2YgY2hhbmdlIHRoYXQncyBwcmltZSBmb3IgZnV6emluZyEgQ2F0Y2hpbmcgdGhvc2Ugc3VidGxlIG1lbW9yeSBidWdzIGVhcmx5IGlzIGNydWNpYWwuXG5cblRoZXJlZm9yZSwgSSdtIHNldHRpbmcgYFdvcnRoRnV6emluZz10cnVlYC5cblxuQmVjYXVzZSB0aGlzIGlzIGEgZ2xvYmFsIGNoYW5nZSBhZmZlY3RpbmcgY29yZSBmdW5jdGlvbnMgbGlrZSBga2ZyZWVgIGFuZCBga3JlYWxsb2NgIHRoYXQgYXJlIHVzZWQgZXZlcnl3aGVyZSwgYEZvY3VzU3ltYm9sc2Agd2lsbCBiZSBlbXB0eS4gSSB3b24ndCBsaW1pdCB0aGUgZnV6emluZyB0byBzcGVjaWZpYyBtb2R1bGVzIGluIHRoaXMgY2FzZS5cblxuU28sIGBFbmFibGVDb25maWdzYCB3aWxsIGJlIGBbXCJTTFVCX0tVTklUX1RFU1RcIiwgXCJTTFVCX0RFQlVHXCIsIFwiS1VOSVRcIl1gLlxuXG5NeSByZWFzb25pbmcgZm9yIHRoaXMgYXNzZXNzbWVudCBpcyB0aGF0IHRoZSBwYXRjaCBtb2RpZmllcyBgWkVST19PUl9OVUxMX1BUUmAgdG8gb25seSBjaGVjayBmb3IgZXhhY3QgMCBvciBgWkVST19TSVpFX1BUUmAuIFRoaXMgbWVhbnMgdGhhdCBzbWFsbCBpbnZhbGlkIHBvaW50ZXJzIChsaWtlIGBFUlJfUFRSYCkgcGFzc2VkIHRvIGBrZnJlZWAgd2lsbCBub3cgbGVhZCB0byBhIGNyYXNoIGluc3RlYWQgb2YgYmVpbmcgc2lsZW50bHkgaWdub3JlZC4gVGhpcyBpcyBhIGNydWNpYWwgY2hhbmdlIHRvIHRoZSBjb3JlIGFsbG9jYXRvciB0aGF0IGNhbiBleHBvc2UgcG90ZW50aWFsIGJ1Z3MgdGhyb3VnaG91dCB0aGUgZW50aXJlIGtlcm5lbC4gVGhlIGluY2x1c2lvbiBvZiBhIEtVbml0IHRlc3QgaXMgYWxzbyBhbiBleGNlbGxlbnQgY29uZmlybWF0aW9uIG9mIHRoaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNDgwLCJPdXRwdXRUb2tlbnMiOjEyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDE0OjE4OjM3LjUwNTE2OTkzNVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NjAwMTkxMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiU0xVQl9LVU5JVF9URVNUXCIsXG4gICAgXCJTTFVCX0RFQlVHXCIsXG4gICAgXCJLVU5JVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBaRVJPX09SX05VTExfUFRSIHRvIHN0cmljdGx5IGNoZWNrIGZvciAwIG9yIFpFUk9fU0laRV9QVFIsIG1lYW5pbmcgc21hbGwgaW52YWxpZCBwb2ludGVycyAobGlrZSBFUlJfUFRSKSBwYXNzZWQgdG8ga2ZyZWUgd2lsbCBub3cgY2F1c2UgYSBjcmFzaCBpbnN0ZWFkIG9mIGJlaW5nIHNpbGVudGx5IGlnbm9yZWQuIFRoaXMgaXMgYSBjb3JlIGFsbG9jYXRvciBjaGFuZ2UgdGhhdCBjYW4gZXhwb3NlIGJ1Z3MgYWNyb3NzIHRoZSBrZXJuZWwuIEEga3VuaXQgdGVzdCBpcyBhbHNvIGFkZGVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNMVUJfS1VOSVRfVEVTVFwiLFxuICAgIFwiU0xVQl9ERUJVR1wiLFxuICAgIFwiS1VOSVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgWkVST19PUl9OVUxMX1BUUiB0byBzdHJpY3RseSBjaGVjayBmb3IgMCBvciBaRVJPX1NJWkVfUFRSLCBtZWFuaW5nIHNtYWxsIGludmFsaWQgcG9pbnRlcnMgKGxpa2UgRVJSX1BUUikgcGFzc2VkIHRvIGtmcmVlIHdpbGwgbm93IGNhdXNlIGEgY3Jhc2ggaW5zdGVhZCBvZiBiZWluZyBzaWxlbnRseSBpZ25vcmVkLiBUaGlzIGlzIGEgY29yZSBhbGxvY2F0b3IgY2hhbmdlIHRoYXQgY2FuIGV4cG9zZSBidWdzIGFjcm9zcyB0aGUga2VybmVsLiBBIGt1bml0IHRlc3QgaXMgYWxzbyBhZGRlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMTQ6MTg6MzcuNjcxMTc5NTA3WiIsIlNlcSI6MTMsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MDgzOTc1NjYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMTQ6MTg6MzcuNjcxOTA1NTc3WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjgwODMyMzEzNzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBkZWZpbml0aW9uIG9mIGBaRVJPX1NJWkVfUFRSYCBhbmQgYFpFUk9fT1JfTlVMTF9QVFJgIGluIHRoZSBzbGFiIGFsbG9jYXRvciBoZWFkZXJzIHRvIGVuc3VyZSBwcm9wZXIgYWxpZ25tZW50IGFuZCBzdHJpY3RlciBwb2ludGVyIGNoZWNraW5nLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBhbGxvY2F0aW9ucywgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UsIG9yIGxvZ2ljIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBBbnkgYnVncyByZXN1bHRpbmcgZnJvbSB0aGVzZSBjaGFuZ2VzIHdvdWxkIG1hbmlmZXN0IGFzIGludmFsaWQgcG9pbnRlciBkZXJlZmVyZW5jZXMgb3IgbWVtb3J5IGNvcnJ1cHRpb24sIHdoaWNoIGFyZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgc3RhbmRhcmQgS0FTQU4gYW5kIG90aGVyIGRlZmF1bHQgYnVnIGRldGVjdG9ycy4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2Ugb3IgaW5mby1sZWFrcyB0aGF0IHdvdWxkIG5lY2Vzc2l0YXRlIEtNU0FOLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDc1MzdjNjEyOGQ1OWYxZjA1NWEwODk2ZGRjNWVjMGNlZjc1NGVkOTJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyAxMSAxNDoxODowMCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc2xhYi5oIGIvaW5jbHVkZS9saW51eC9zbGFiLmhcbmluZGV4IDMyYzlmOGVkN2FlMjAuLjAyM2UxMGFiNzdmOGQgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L3NsYWIuaFxuKysrIGIvaW5jbHVkZS9saW51eC9zbGFiLmhcbkBAIC0yNTksMTYgKzI1OSwyMyBAQCBlbnVtIF9zbGFiX2ZsYWdfYml0cyB7XG4gXG4gLypcbiAgKiBaRVJPX1NJWkVfUFRSIHdpbGwgYmUgcmV0dXJuZWQgZm9yIHplcm8gc2l6ZWQga21hbGxvYyByZXF1ZXN0cy5cbisgKiBJdCBzYXRpc2ZpZXMgdGhlIGFsaWdubWVudCBwcm9taXNlZCBieSBfX2Fzc3VtZV9rbWFsbG9jX2FsaWdubWVudFxuKyAqIGFuZCBrZWVwcyB0aGUgaGlzdG9yaWMgdmFsdWUgMTYgd2hlcmUgdGhhdCBpcyBhbHJlYWR5IGFsaWduZWQuXG4gICpcbiAgKiBEZXJlZmVyZW5jaW5nIFpFUk9fU0laRV9QVFIgd2lsbCBsZWFkIHRvIGEgZGlzdGluY3QgYWNjZXNzIGZhdWx0LlxuICAqXG4gICogWkVST19TSVpFX1BUUiBjYW4gYmUgcGFzc2VkIHRvIGtmcmVlIHRob3VnaCBpbiB0aGUgc2FtZSB3YXkgdGhhdCBOVUxMIGNhbi5cbiAgKiBCb3RoIG1ha2Uga2ZyZWUgYSBuby1vcC5cbiAgKi9cbi0jZGVmaW5lIFpFUk9fU0laRV9QVFIgKCh2b2lkICopMTYpXG4rI2RlZmluZSBaRVJPX1NJWkVfUFRSICgodm9pZCAqKShBUkNIX0tNQUxMT0NfTUlOQUxJR04gXHUwMDNlIDE2ID8gXFxcbitcdFx0XHRcdEFSQ0hfS01BTExPQ19NSU5BTElHTiA6IDE2KSlcbiBcbi0jZGVmaW5lIFpFUk9fT1JfTlVMTF9QVFIoeCkgKCh1bnNpZ25lZCBsb25nKSh4KSBcdTAwM2M9IFxcXG4tXHRcdFx0XHQodW5zaWduZWQgbG9uZylaRVJPX1NJWkVfUFRSKVxuKyNkZWZpbmUgWkVST19PUl9OVUxMX1BUUih4KVx0XHRcdFx0XHRcdFxcXG4rKHtcdFx0XHRcdFx0XHRcdFx0XHRcXFxuK1x0dW5zaWduZWQgbG9uZyBfX3pvbl9wdHIgPSAodW5zaWduZWQgbG9uZykoeCk7XHRcdFx0XFxcbitcdF9fem9uX3B0ciA9PSAwIHx8XHRcdFx0XHRcdFx0XFxcbitcdF9fem9uX3B0ciA9PSAodW5zaWduZWQgbG9uZylaRVJPX1NJWkVfUFRSO1x0XHRcdFxcXG4rfSlcbiBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9rYXNhbi5oXHUwMDNlXG4gXG5AQCAtNjIyLDYgKzYyOSwxMyBAQCBzdGF0aWMgaW5saW5lIGJvb2wga21lbV9kdW1wX29iaih2b2lkICpvYmplY3QpIHsgcmV0dXJuIGZhbHNlOyB9XG4gI2RlZmluZSBLTUFMTE9DX1NISUZUX0xPVyBpbG9nMihLTUFMTE9DX01JTl9TSVpFKVxuICNlbmRpZlxuIFxuKy8qXG4rICogS2VlcCBaRVJPX1NJWkVfUFRSIGF0IG1vc3QgMTI4LCBpLmUuIGJlbG93IDB4MTAwOiBMSVNUX1BPSVNPTjEgaXNcbisgKiAweDEwMCB3aGVuIFBPSVNPTl9QT0lOVEVSX0RFTFRBIGlzIDAsIGFuZCBubyBhcmNoaXRlY3R1cmUgY3VycmVudGx5XG4rICogaGFzIGFuIEFSQ0hfS01BTExPQ19NSU5BTElHTiBhYm92ZSAxMjguXG4rICovXG4rc3RhdGljX2Fzc2VydChBUkNIX0tNQUxMT0NfTUlOQUxJR04gXHUwMDNjIDB4MTAwKTtcbitcbiAvKlxuICAqIFNldHRpbmcgQVJDSF9TTEFCX01JTkFMSUdOIGluIGFyY2ggaGVhZGVycyBhbGxvd3MgYSBkaWZmZXJlbnQgYWxpZ25tZW50LlxuICAqIEludGVuZGVkIGZvciBhcmNoZXMgdGhhdCBnZXQgbWlzYWxpZ25tZW50IGZhdWx0cyBldmVuIGZvciA2NCBiaXQgaW50ZWdlclxuZGlmZiAtLWdpdCBhL2xpYi90ZXN0cy9zbHViX2t1bml0LmMgYi9saWIvdGVzdHMvc2x1Yl9rdW5pdC5jXG5pbmRleCBmYTZkMzFkYmNhMTY2Li5hMDJmYzZiNDAxZTNlIDEwMDY0NFxuLS0tIGEvbGliL3Rlc3RzL3NsdWJfa3VuaXQuY1xuKysrIGIvbGliL3Rlc3RzL3NsdWJfa3VuaXQuY1xuQEAgLTM4MCw2ICszODAsNDggQEAgc3RhdGljIHZvaWQgdGVzdF9rbWFsbG9jX2tmcmVlX25vbG9jayhzdHJ1Y3Qga3VuaXQgKnRlc3QpXG4gfVxuICNlbmRpZlxuIFxuK3N0YXRpYyB2b2lkIHRlc3RfemVyb19zaXplX2FsbG9jKHN0cnVjdCBrdW5pdCAqdGVzdClcbit7XG4rXHR1bnNpZ25lZCBsb25nIHpzcCA9ICh1bnNpZ25lZCBsb25nKVpFUk9fU0laRV9QVFI7XG4rXHR2b2lkICpwLCAqcjtcbitcbitcdHN0YXRpY19hc3NlcnQoKHVuc2lnbmVkIGxvbmcpWkVST19TSVpFX1BUUiAlIEFSQ0hfS01BTExPQ19NSU5BTElHTiA9PSAwKTtcbitcbitcdHAgPSBrbWFsbG9jKDAsIEdGUF9LRVJORUwpO1xuK1x0S1VOSVRfRVhQRUNUX1BUUl9FUSh0ZXN0LCBwLCBaRVJPX1NJWkVfUFRSKTtcbitcdEtVTklUX0VYUEVDVF9FUSh0ZXN0LCBrc2l6ZShwKSwgMCk7XG4rXHRrZnJlZShwKTtcbitcbitcdEtVTklUX0VYUEVDVF9QVFJfRVEodGVzdCwga3phbGxvYygwLCBHRlBfS0VSTkVMKSwgWkVST19TSVpFX1BUUik7XG4rXHRLVU5JVF9FWFBFQ1RfUFRSX0VRKHRlc3QsIGttYWxsb2NfYXJyYXkoMCwgOCwgR0ZQX0tFUk5FTCksIFpFUk9fU0laRV9QVFIpO1xuK1x0S1VOSVRfRVhQRUNUX1BUUl9FUSh0ZXN0LCBrY2FsbG9jKDQsIDAsIEdGUF9LRVJORUwpLCBaRVJPX1NJWkVfUFRSKTtcbitcbitcdHAgPSBrdm1hbGxvYygwLCBHRlBfS0VSTkVMKTtcbitcdEtVTklUX0VYUEVDVF9QVFJfRVEodGVzdCwgcCwgWkVST19TSVpFX1BUUik7XG4rXHRrdmZyZWUocCk7XG4rXG4rXHRwID0ga3JlYWxsb2MoTlVMTCwgMCwgR0ZQX0tFUk5FTCk7XG4rXHRLVU5JVF9FWFBFQ1RfUFRSX0VRKHRlc3QsIHAsIFpFUk9fU0laRV9QVFIpO1xuK1x0ciA9IGtyZWFsbG9jKHAsIDY0LCBHRlBfS0VSTkVMKTtcbitcdEtVTklUX0VYUEVDVF9GQUxTRSh0ZXN0LCBaRVJPX09SX05VTExfUFRSKHIpKTtcbitcdHAgPSBrcmVhbGxvYyhyLCAwLCBHRlBfS0VSTkVMKTtcbitcdEtVTklUX0VYUEVDVF9QVFJfRVEodGVzdCwgcCwgWkVST19TSVpFX1BUUik7XG4rXHRrZnJlZShwKTtcbitcbitcdC8qIE9ubHkgTlVMTCBhbmQgdGhlIHplcm8tc2l6ZSBzZW50aW5lbCBtYXRjaC4gKi9cbitcdEtVTklUX0VYUEVDVF9UUlVFKHRlc3QsIFpFUk9fT1JfTlVMTF9QVFIoTlVMTCkpO1xuK1x0S1VOSVRfRVhQRUNUX1RSVUUodGVzdCwgWkVST19PUl9OVUxMX1BUUihaRVJPX1NJWkVfUFRSKSk7XG4rXHRLVU5JVF9FWFBFQ1RfRkFMU0UodGVzdCwgWkVST19PUl9OVUxMX1BUUigodm9pZCAqKTEpKTtcbitcdEtVTklUX0VYUEVDVF9GQUxTRSh0ZXN0LCBaRVJPX09SX05VTExfUFRSKCh2b2lkICopKHpzcCAtIDEpKSk7XG4rXHRLVU5JVF9FWFBFQ1RfRkFMU0UodGVzdCwgWkVST19PUl9OVUxMX1BUUigodm9pZCAqKSh6c3AgKyAxKSkpO1xuK1x0S1VOSVRfRVhQRUNUX0ZBTFNFKHRlc3QsIFpFUk9fT1JfTlVMTF9QVFIoKHZvaWQgKikoenNwICogMikpKTtcbitcbitcdC8qIGZyZWVpbmcgdGhlIHNlbnRpbmVsIG11c3Qgc3RheSBhIG5vLW9wICovXG4rXHRrZnJlZShaRVJPX1NJWkVfUFRSKTtcbitcdGtmcmVlX3NlbnNpdGl2ZShaRVJPX1NJWkVfUFRSKTtcbitcdGt2ZnJlZShaRVJPX1NJWkVfUFRSKTtcbit9XG4rXG4gc3RhdGljIGludCB0ZXN0X2luaXQoc3RydWN0IGt1bml0ICp0ZXN0KVxuIHtcbiBcdHNsYWJfZXJyb3JzID0gMDtcbkBAIC00MDQsNiArNDQ2LDcgQEAgc3RhdGljIHN0cnVjdCBrdW5pdF9jYXNlIHRlc3RfY2FzZXNbXSA9IHtcbiBcdEtVTklUX0NBU0UodGVzdF9rZnJlZV9yY3Vfd3FfZGVzdHJveSksXG4gXHRLVU5JVF9DQVNFKHRlc3RfbGVha19kZXN0cm95KSxcbiBcdEtVTklUX0NBU0UodGVzdF9rcmVhbGxvY19yZWR6b25lX3plcm9pbmcpLFxuK1x0S1VOSVRfQ0FTRSh0ZXN0X3plcm9fc2l6ZV9hbGxvYyksXG4gI2lmZGVmIENPTkZJR19QRVJGX0VWRU5UU1xuIFx0S1VOSVRfQ0FTRV9TTE9XKHRlc3Rfa21hbGxvY19rZnJlZV9ub2xvY2spLFxuICNlbmRpZlxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMTQ6MTg6MzcuNjcxOTA4NDQ3WiIsIlNlcSI6MTUsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgwODMxNzQ1ODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBTbGFiIEFsbG9jYXRvciBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIGRvd24gdGhpcyBwYXRjaC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIGl0J3MgdHdlYWtpbmcgc29tZSBmdW5kYW1lbnRhbCBkZWZpbml0aW9ucyBpbiBgbGludXgvc2xhYi5oYCwgc3BlY2lmaWNhbGx5IGBaRVJPX1NJWkVfUFRSYCBhbmQgYFpFUk9fT1JfTlVMTF9QVFJgLiBJdCBsb29rcyBsaWtlIGl0J3MgdHJ5aW5nIHRvIHRpZ2h0ZW4gdXAgdGhlIGFsaWdubWVudCBhbmQgcG9pbnRlciBjb21wYXJpc29uIHdpdGhpbiB0aGUgc2xhYiBhbGxvY2F0b3IgY29udGV4dC5cblxuVGhlIG1vc3Qgbm90YWJsZSBjaGFuZ2UgaXMgaG93IGBaRVJPX1NJWkVfUFRSYCBpcyBiZWluZyBoYW5kbGVkLiBQcmV2aW91c2x5LCBpdCB3YXMgYSBoYXJkY29kZWQgYWRkcmVzcy4gTm93LCBpdCdzIGR5bmFtaWNhbGx5IHNldCB0byBlaXRoZXIgYEFSQ0hfS01BTExPQ19NSU5BTElHTmAgKGlmIHRoYXQncyBsYXJnZXIgdGhhbiAxNikgb3IgMTYsIHdoaWNoIHN1Z2dlc3RzIHRoZXkncmUgdHJ5aW5nIHRvIGFsaWduIGl0IHdpdGggdGhlIGtlcm5lbCdzIG1pbmltdW0gYWxsb2NhdGlvbiBhbGlnbm1lbnQgcmVxdWlyZW1lbnRzLiBUaGUgYWRkaXRpb24gb2YgdGhlIHN0YXRpYyBhc3NlcnQgYEFSQ0hfS01BTExPQ19NSU5BTElHTiBcdTAwM2MgMHgxMDBgIGlzIGdvb2QsIGEgc2FuaXR5IGNoZWNrIHRvIGtlZXAgdGhpbmdzIHdpdGhpbiByZWFzb25hYmxlIGJvdW5kcywgSSdkIHNheS5cblxuVGhlIGBaRVJPX09SX05VTExfUFRSYCBjaGFuZ2UgbG9va3MgbGlrZSBhIGNvcnJlY3Rpb24uIEluc3RlYWQgb2YgY2hlY2tpbmcgaWYgYSBwb2ludGVyIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byBgWkVST19TSVpFX1BUUmAsIGl0J3Mgbm93IGV4cGxpY2l0bHkgY2hlY2tpbmcgZm9yIDAgKE5VTEwpIG9yICpleGFjdGx5KiBgWkVST19TSVpFX1BUUmAuIFRoaXMgaXMgYSBkZWZpbml0ZSBpbXByb3ZlbWVudCBpbiB0ZXJtcyBvZiBwb2ludGVyIGNvbXBhcmlzb24gYWNjdXJhY3kuIFRoZSBhZGRpdGlvbiBvZiBhIEtVbml0IHRlc3QgZm9yIHplcm8tc2l6ZSBhbGxvY2F0aW9ucyBpcyBhbHNvIGEgcGx1cyBmb3IgZW5zdXJpbmcgdGhlIGZpeCBmdW5jdGlvbnMgYXMgaW50ZW5kZWQuXG5cbk5vdywgdGhlIGltcG9ydGFudCBxdWVzdGlvbiBpczogZG9lcyB0aGlzIGludHJvZHVjZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3M/IE5vLCBmcm9tIG15IGFzc2Vzc21lbnQsIGl0IGRvZXNuJ3QuIFRoaXMgaXMgYWJvdXQgZW5zdXJpbmcgcHJvcGVyIGFsaWdubWVudCBhbmQgbW9yZSBhY2N1cmF0ZSBwb2ludGVyIGNvbXBhcmlzb25zLCBub3QgYWJvdXQgaW5pdGlhbGl6aW5nIG1lbW9yeS4gVGhlIHBhdGNoIG1lcmVseSBjaGFuZ2VzIHRoZSB2YWx1ZSBvZiBgWkVST19TSVpFX1BUUmAgdG8gYWNjb21tb2RhdGUgdGhlIGFsaWdubWVudCwgYW5kIHRoZSBjb21wYXJpc29uIGlzIHNoYXJwZW5lZC4gSXQgZG9lc24ndCBzZWVtIHRvIHRvdWNoIGFueSBtZW1vcnkgYWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBwYXRocyBpbiBhIHdheSB0aGF0IHdvdWxkIGludHJvZHVjZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgdnVsbmVyYWJpbGl0aWVzLlxuXG5UaGVyZWZvcmUsIGBOZWVkc0tNU0FOYCBzaG91bGQgZGVmaW5pdGVseSBiZSBmYWxzZSBoZXJlLiBLQVNBTiBhbmQgb3RoZXIgdG9vbHMgbWlnaHQgY2F0Y2ggaXNzdWVzIGlmIHRoaXMgY2hhbmdlIGJyZWFrcyBzb21ldGhpbmcgaW4gdGhlIHBvaW50ZXIgY2hlY2tpbmcgYnV0IEtNU0FOIGlzIGFsbCBhYm91dCBpZGVudGlmeWluZyB1bmluaXRpYWxpemVkIG1lbW9yeSBhY2Nlc3MsIHdoaWNoIGlzIG5vdCBhbiBpc3N1ZSBoZXJlLiBUaGlzIGlzIGEgdGFyZ2V0ZWQgYnVnIGZpeC9pbXByb3ZlbWVudCBmb3IgcG9pbnRlciBoYW5kbGluZyBhbmQgYWxpZ25tZW50IHdpdGhpbiB0aGUgc2xhYiBhbGxvY2F0b3IsIG5vdCBhIEtNU0FOLXJlbGV2YW50IGNoYW5nZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzMxNCwiT3V0cHV0VG9rZW5zIjoxMzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNTYsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQxNDoxODo0NS43NTUwODkwNTdaIiwiU2VxIjoxNiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTUwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBkZWZpbml0aW9uIG9mIGBaRVJPX1NJWkVfUFRSYCBhbmQgYFpFUk9fT1JfTlVMTF9QVFJgIGluIHRoZSBzbGFiIGFsbG9jYXRvciBoZWFkZXJzIHRvIGVuc3VyZSBwcm9wZXIgYWxpZ25tZW50IGFuZCBzdHJpY3RlciBwb2ludGVyIGNoZWNraW5nLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBhbGxvY2F0aW9ucywgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UsIG9yIGxvZ2ljIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBBbnkgYnVncyByZXN1bHRpbmcgZnJvbSB0aGVzZSBjaGFuZ2VzIHdvdWxkIG1hbmlmZXN0IGFzIGludmFsaWQgcG9pbnRlciBkZXJlZmVyZW5jZXMgb3IgbWVtb3J5IGNvcnJ1cHRpb24sIHdoaWNoIGFyZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgc3RhbmRhcmQgS0FTQU4gYW5kIG90aGVyIGRlZmF1bHQgYnVnIGRldGVjdG9ycy4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2Ugb3IgaW5mby1sZWFrcyB0aGF0IHdvdWxkIG5lY2Vzc2l0YXRlIEtNU0FOLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBkZWZpbml0aW9uIG9mIGBaRVJPX1NJWkVfUFRSYCBhbmQgYFpFUk9fT1JfTlVMTF9QVFJgIGluIHRoZSBzbGFiIGFsbG9jYXRvciBoZWFkZXJzIHRvIGVuc3VyZSBwcm9wZXIgYWxpZ25tZW50IGFuZCBzdHJpY3RlciBwb2ludGVyIGNoZWNraW5nLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBhbGxvY2F0aW9ucywgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UsIG9yIGxvZ2ljIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBBbnkgYnVncyByZXN1bHRpbmcgZnJvbSB0aGVzZSBjaGFuZ2VzIHdvdWxkIG1hbmlmZXN0IGFzIGludmFsaWQgcG9pbnRlciBkZXJlZmVyZW5jZXMgb3IgbWVtb3J5IGNvcnJ1cHRpb24sIHdoaWNoIGFyZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgc3RhbmRhcmQgS0FTQU4gYW5kIG90aGVyIGRlZmF1bHQgYnVnIGRldGVjdG9ycy4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2Ugb3IgaW5mby1sZWFrcyB0aGF0IHdvdWxkIG5lY2Vzc2l0YXRlIEtNU0FOLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowhd82k[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-11 14:15:26 +0000 UTC FinishedAt: 2026-08-11 14:18:47 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "bcc44b6785f216eb939226ade6e3910baa30516b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "SLUB_KUNIT_TEST", "SLUB_DEBUG", "KUNIT" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "bcc44b6785f216eb939226ade6e3910baa30516b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "SLUB_KUNIT_TEST", "SLUB_DEBUG", "KUNIT" ], "series_id": "cf1ce7dd-9456-4a36-be8e-43c7cf4f3451" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDE0OjE4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NMVUJfS1VOSVRfVEVTVCYjMzQ7LAogICAgJiMzNDtTTFVCX0RFQlVHJiMzNDssCiAgICAmIzM0O0tVTklUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGRlZmluaXRpb24gb2YgYFpFUk9fU0laRV9QVFJgIGFuZCBgWkVST19PUl9OVUxMX1BUUmAgaW4gdGhlIHNsYWIgYWxsb2NhdG9yIGhlYWRlcnMgdG8gZW5zdXJlIHByb3BlciBhbGlnbm1lbnQgYW5kIHN0cmljdGVyIHBvaW50ZXIgY2hlY2tpbmcuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGFsbG9jYXRpb25zLCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSwgb3IgbG9naWMgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIEFueSBidWdzIHJlc3VsdGluZyBmcm9tIHRoZXNlIGNoYW5nZXMgd291bGQgbWFuaWZlc3QgYXMgaW52YWxpZCBwb2ludGVyIGRlcmVmZXJlbmNlcyBvciBtZW1vcnkgY29ycnVwdGlvbiwgd2hpY2ggYXJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBzdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgZGVmYXVsdCBidWcgZGV0ZWN0b3JzLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzZSBvciBpbmZvLWxlYWtzIHRoYXQgd291bGQgbmVjZXNzaXRhdGUgS01TQU4uJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIFpFUk9fT1JfTlVMTF9QVFIgdG8gc3RyaWN0bHkgY2hlY2sgZm9yIDAgb3IgWkVST19TSVpFX1BUUiwgbWVhbmluZyBzbWFsbCBpbnZhbGlkIHBvaW50ZXJzIChsaWtlIEVSUl9QVFIpIHBhc3NlZCB0byBrZnJlZSB3aWxsIG5vdyBjYXVzZSBhIGNyYXNoIGluc3RlYWQgb2YgYmVpbmcgc2lsZW50bHkgaWdub3JlZC4gVGhpcyBpcyBhIGNvcmUgYWxsb2NhdG9yIGNoYW5nZSB0aGF0IGNhbiBleHBvc2UgYnVncyBhY3Jvc3MgdGhlIGtlcm5lbC4gQSBrdW5pdCB0ZXN0IGlzIGFsc28gYWRkZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMTQ6MTg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA3NTM3YzYxMjhkNTlmMWYwNTVhMDg5NmRkYzVlYzBjZWY3NTRlZDkyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgMTEgMTQ6MTg6MDAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9zbGFiLmggYi9pbmNsdWRlL2xpbnV4L3NsYWIuaFxuaW5kZXggMzJjOWY4ZWQ3YWUyMC4uMDIzZTEwYWI3N2Y4ZCAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvc2xhYi5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3NsYWIuaFxuQEAgLTI1OSwxNiAmIzQzOzI1OSwyMyBAQCBlbnVtIF9zbGFiX2ZsYWdfYml0cyB7XG4gXG4gLypcbiAgKiBaRVJPX1NJWkVfUFRSIHdpbGwgYmUgcmV0dXJuZWQgZm9yIHplcm8gc2l6ZWQga21hbGxvYyByZXF1ZXN0cy5cbiYjNDM7ICogSXQgc2F0aXNmaWVzIHRoZSBhbGlnbm1lbnQgcHJvbWlzZWQgYnkgX19hc3N1bWVfa21hbGxvY19hbGlnbm1lbnRcbiYjNDM7ICogYW5kIGtlZXBzIHRoZSBoaXN0b3JpYyB2YWx1ZSAxNiB3aGVyZSB0aGF0IGlzIGFscmVhZHkgYWxpZ25lZC5cbiAgKlxuICAqIERlcmVmZXJlbmNpbmcgWkVST19TSVpFX1BUUiB3aWxsIGxlYWQgdG8gYSBkaXN0aW5jdCBhY2Nlc3MgZmF1bHQuXG4gICpcbiAgKiBaRVJPX1NJWkVfUFRSIGNhbiBiZSBwYXNzZWQgdG8ga2ZyZWUgdGhvdWdoIGluIHRoZSBzYW1lIHdheSB0aGF0IE5VTEwgY2FuLlxuICAqIEJvdGggbWFrZSBrZnJlZSBhIG5vLW9wLlxuICAqL1xuLSNkZWZpbmUgWkVST19TSVpFX1BUUiAoKHZvaWQgKikxNilcbiYjNDM7I2RlZmluZSBaRVJPX1NJWkVfUFRSICgodm9pZCAqKShBUkNIX0tNQUxMT0NfTUlOQUxJR04gXHUwMDNlIDE2ID8gXFxcbiYjNDM7XHRcdFx0XHRBUkNIX0tNQUxMT0NfTUlOQUxJR04gOiAxNikpXG4gXG4tI2RlZmluZSBaRVJPX09SX05VTExfUFRSKHgpICgodW5zaWduZWQgbG9uZykoeCkgXHUwMDNjPSBcXFxuLVx0XHRcdFx0KHVuc2lnbmVkIGxvbmcpWkVST19TSVpFX1BUUilcbiYjNDM7I2RlZmluZSBaRVJPX09SX05VTExfUFRSKHgpXHRcdFx0XHRcdFx0XFxcbiYjNDM7KHtcdFx0XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdHVuc2lnbmVkIGxvbmcgX196b25fcHRyID0gKHVuc2lnbmVkIGxvbmcpKHgpO1x0XHRcdFxcXG4mIzQzO1x0X196b25fcHRyID09IDAgfHxcdFx0XHRcdFx0XHRcXFxuJiM0MztcdF9fem9uX3B0ciA9PSAodW5zaWduZWQgbG9uZylaRVJPX1NJWkVfUFRSO1x0XHRcdFxcXG4mIzQzO30pXG4gXG4gI2luY2x1ZGUgXHUwMDNjbGludXgva2FzYW4uaFx1MDAzZVxuIFxuQEAgLTYyMiw2ICYjNDM7NjI5LDEzIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBrbWVtX2R1bXBfb2JqKHZvaWQgKm9iamVjdCkgeyByZXR1cm4gZmFsc2U7IH1cbiAjZGVmaW5lIEtNQUxMT0NfU0hJRlRfTE9XIGlsb2cyKEtNQUxMT0NfTUlOX1NJWkUpXG4gI2VuZGlmXG4gXG4mIzQzOy8qXG4mIzQzOyAqIEtlZXAgWkVST19TSVpFX1BUUiBhdCBtb3N0IDEyOCwgaS5lLiBiZWxvdyAweDEwMDogTElTVF9QT0lTT04xIGlzXG4mIzQzOyAqIDB4MTAwIHdoZW4gUE9JU09OX1BPSU5URVJfREVMVEEgaXMgMCwgYW5kIG5vIGFyY2hpdGVjdHVyZSBjdXJyZW50bHlcbiYjNDM7ICogaGFzIGFuIEFSQ0hfS01BTExPQ19NSU5BTElHTiBhYm92ZSAxMjguXG4mIzQzOyAqL1xuJiM0MztzdGF0aWNfYXNzZXJ0KEFSQ0hfS01BTExPQ19NSU5BTElHTiBcdTAwM2MgMHgxMDApO1xuJiM0MztcbiAvKlxuICAqIFNldHRpbmcgQVJDSF9TTEFCX01JTkFMSUdOIGluIGFyY2ggaGVhZGVycyBhbGxvd3MgYSBkaWZmZXJlbnQgYWxpZ25tZW50LlxuICAqIEludGVuZGVkIGZvciBhcmNoZXMgdGhhdCBnZXQgbWlzYWxpZ25tZW50IGZhdWx0cyBldmVuIGZvciA2NCBiaXQgaW50ZWdlclxuZGlmZiAtLWdpdCBhL2xpYi90ZXN0cy9zbHViX2t1bml0LmMgYi9saWIvdGVzdHMvc2x1Yl9rdW5pdC5jXG5pbmRleCBmYTZkMzFkYmNhMTY2Li5hMDJmYzZiNDAxZTNlIDEwMDY0NFxuLS0tIGEvbGliL3Rlc3RzL3NsdWJfa3VuaXQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbGliL3Rlc3RzL3NsdWJfa3VuaXQuY1xuQEAgLTM4MCw2ICYjNDM7MzgwLDQ4IEBAIHN0YXRpYyB2b2lkIHRlc3Rfa21hbGxvY19rZnJlZV9ub2xvY2soc3RydWN0IGt1bml0ICp0ZXN0KVxuIH1cbiAjZW5kaWZcbiBcbiYjNDM7c3RhdGljIHZvaWQgdGVzdF96ZXJvX3NpemVfYWxsb2Moc3RydWN0IGt1bml0ICp0ZXN0KVxuJiM0Mzt7XG4mIzQzO1x0dW5zaWduZWQgbG9uZyB6c3AgPSAodW5zaWduZWQgbG9uZylaRVJPX1NJWkVfUFRSO1xuJiM0MztcdHZvaWQgKnAsICpyO1xuJiM0MztcbiYjNDM7XHRzdGF0aWNfYXNzZXJ0KCh1bnNpZ25lZCBsb25nKVpFUk9fU0laRV9QVFIgJSBBUkNIX0tNQUxMT0NfTUlOQUxJR04gPT0gMCk7XG4mIzQzO1xuJiM0MztcdHAgPSBrbWFsbG9jKDAsIEdGUF9LRVJORUwpO1xuJiM0MztcdEtVTklUX0VYUEVDVF9QVFJfRVEodGVzdCwgcCwgWkVST19TSVpFX1BUUik7XG4mIzQzO1x0S1VOSVRfRVhQRUNUX0VRKHRlc3QsIGtzaXplKHApLCAwKTtcbiYjNDM7XHRrZnJlZShwKTtcbiYjNDM7XG4mIzQzO1x0S1VOSVRfRVhQRUNUX1BUUl9FUSh0ZXN0LCBremFsbG9jKDAsIEdGUF9LRVJORUwpLCBaRVJPX1NJWkVfUFRSKTtcbiYjNDM7XHRLVU5JVF9FWFBFQ1RfUFRSX0VRKHRlc3QsIGttYWxsb2NfYXJyYXkoMCwgOCwgR0ZQX0tFUk5FTCksIFpFUk9fU0laRV9QVFIpO1xuJiM0MztcdEtVTklUX0VYUEVDVF9QVFJfRVEodGVzdCwga2NhbGxvYyg0LCAwLCBHRlBfS0VSTkVMKSwgWkVST19TSVpFX1BUUik7XG4mIzQzO1xuJiM0MztcdHAgPSBrdm1hbGxvYygwLCBHRlBfS0VSTkVMKTtcbiYjNDM7XHRLVU5JVF9FWFBFQ1RfUFRSX0VRKHRlc3QsIHAsIFpFUk9fU0laRV9QVFIpO1xuJiM0MztcdGt2ZnJlZShwKTtcbiYjNDM7XG4mIzQzO1x0cCA9IGtyZWFsbG9jKE5VTEwsIDAsIEdGUF9LRVJORUwpO1xuJiM0MztcdEtVTklUX0VYUEVDVF9QVFJfRVEodGVzdCwgcCwgWkVST19TSVpFX1BUUik7XG4mIzQzO1x0ciA9IGtyZWFsbG9jKHAsIDY0LCBHRlBfS0VSTkVMKTtcbiYjNDM7XHRLVU5JVF9FWFBFQ1RfRkFMU0UodGVzdCwgWkVST19PUl9OVUxMX1BUUihyKSk7XG4mIzQzO1x0cCA9IGtyZWFsbG9jKHIsIDAsIEdGUF9LRVJORUwpO1xuJiM0MztcdEtVTklUX0VYUEVDVF9QVFJfRVEodGVzdCwgcCwgWkVST19TSVpFX1BUUik7XG4mIzQzO1x0a2ZyZWUocCk7XG4mIzQzO1xuJiM0MztcdC8qIE9ubHkgTlVMTCBhbmQgdGhlIHplcm8tc2l6ZSBzZW50aW5lbCBtYXRjaC4gKi9cbiYjNDM7XHRLVU5JVF9FWFBFQ1RfVFJVRSh0ZXN0LCBaRVJPX09SX05VTExfUFRSKE5VTEwpKTtcbiYjNDM7XHRLVU5JVF9FWFBFQ1RfVFJVRSh0ZXN0LCBaRVJPX09SX05VTExfUFRSKFpFUk9fU0laRV9QVFIpKTtcbiYjNDM7XHRLVU5JVF9FWFBFQ1RfRkFMU0UodGVzdCwgWkVST19PUl9OVUxMX1BUUigodm9pZCAqKTEpKTtcbiYjNDM7XHRLVU5JVF9FWFBFQ1RfRkFMU0UodGVzdCwgWkVST19PUl9OVUxMX1BUUigodm9pZCAqKSh6c3AgLSAxKSkpO1xuJiM0MztcdEtVTklUX0VYUEVDVF9GQUxTRSh0ZXN0LCBaRVJPX09SX05VTExfUFRSKCh2b2lkICopKHpzcCAmIzQzOyAxKSkpO1xuJiM0MztcdEtVTklUX0VYUEVDVF9GQUxTRSh0ZXN0LCBaRVJPX09SX05VTExfUFRSKCh2b2lkICopKHpzcCAqIDIpKSk7XG4mIzQzO1xuJiM0MztcdC8qIGZyZWVpbmcgdGhlIHNlbnRpbmVsIG11c3Qgc3RheSBhIG5vLW9wICovXG4mIzQzO1x0a2ZyZWUoWkVST19TSVpFX1BUUik7XG4mIzQzO1x0a2ZyZWVfc2Vuc2l0aXZlKFpFUk9fU0laRV9QVFIpO1xuJiM0MztcdGt2ZnJlZShaRVJPX1NJWkVfUFRSKTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgaW50IHRlc3RfaW5pdChzdHJ1Y3Qga3VuaXQgKnRlc3QpXG4ge1xuIFx0c2xhYl9lcnJvcnMgPSAwO1xuQEAgLTQwNCw2ICYjNDM7NDQ2LDcgQEAgc3RhdGljIHN0cnVjdCBrdW5pdF9jYXNlIHRlc3RfY2FzZXNbXSA9IHtcbiBcdEtVTklUX0NBU0UodGVzdF9rZnJlZV9yY3Vfd3FfZGVzdHJveSksXG4gXHRLVU5JVF9DQVNFKHRlc3RfbGVha19kZXN0cm95KSxcbiBcdEtVTklUX0NBU0UodGVzdF9rcmVhbGxvY19yZWR6b25lX3plcm9pbmcpLFxuJiM0MztcdEtVTklUX0NBU0UodGVzdF96ZXJvX3NpemVfYWxsb2MpLFxuICNpZmRlZiBDT05GSUdfUEVSRl9FVkVOVFNcbiBcdEtVTklUX0NBU0VfU0xPVyh0ZXN0X2ttYWxsb2Nfa2ZyZWVfbm9sb2NrKSxcbiAjZW5kaWZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAxNDoxODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7U0xVQl9LVU5JVF9URVNUJiMzNDssCiAgICAmIzM0O1NMVUJfREVCVUcmIzM0OywKICAgICYjMzQ7S1VOSVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgWkVST19PUl9OVUxMX1BUUiB0byBzdHJpY3RseSBjaGVjayBmb3IgMCBvciBaRVJPX1NJWkVfUFRSLCBtZWFuaW5nIHNtYWxsIGludmFsaWQgcG9pbnRlcnMgKGxpa2UgRVJSX1BUUikgcGFzc2VkIHRvIGtmcmVlIHdpbGwgbm93IGNhdXNlIGEgY3Jhc2ggaW5zdGVhZCBvZiBiZWluZyBzaWxlbnRseSBpZ25vcmVkLiBUaGlzIGlzIGEgY29yZSBhbGxvY2F0b3IgY2hhbmdlIHRoYXQgY2FuIGV4cG9zZSBidWdzIGFjcm9zcyB0aGUga2VybmVsLiBBIGt1bml0IHRlc3QgaXMgYWxzbyBhZGRlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDc1MzdjNjEyOGQ1OWYxZjA1NWEwODk2ZGRjNWVjMGNlZjc1NGVkOTIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEF1ZyAxMSAxNDoxODowMCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc2xhYi5oIGIvaW5jbHVkZS9saW51eC9zbGFiLmgKaW5kZXggMzJjOWY4ZWQ3YWUyMC4uMDIzZTEwYWI3N2Y4ZCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9zbGFiLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9zbGFiLmgKQEAgLTI1OSwxNiAmIzQzOzI1OSwyMyBAQCBlbnVtIF9zbGFiX2ZsYWdfYml0cyB7CiAKIC8qCiAgKiBaRVJPX1NJWkVfUFRSIHdpbGwgYmUgcmV0dXJuZWQgZm9yIHplcm8gc2l6ZWQga21hbGxvYyByZXF1ZXN0cy4KJiM0MzsgKiBJdCBzYXRpc2ZpZXMgdGhlIGFsaWdubWVudCBwcm9taXNlZCBieSBfX2Fzc3VtZV9rbWFsbG9jX2FsaWdubWVudAomIzQzOyAqIGFuZCBrZWVwcyB0aGUgaGlzdG9yaWMgdmFsdWUgMTYgd2hlcmUgdGhhdCBpcyBhbHJlYWR5IGFsaWduZWQuCiAgKgogICogRGVyZWZlcmVuY2luZyBaRVJPX1NJWkVfUFRSIHdpbGwgbGVhZCB0byBhIGRpc3RpbmN0IGFjY2VzcyBmYXVsdC4KICAqCiAgKiBaRVJPX1NJWkVfUFRSIGNhbiBiZSBwYXNzZWQgdG8ga2ZyZWUgdGhvdWdoIGluIHRoZSBzYW1lIHdheSB0aGF0IE5VTEwgY2FuLgogICogQm90aCBtYWtlIGtmcmVlIGEgbm8tb3AuCiAgKi8KLSNkZWZpbmUgWkVST19TSVpFX1BUUiAoKHZvaWQgKikxNikKJiM0MzsjZGVmaW5lIFpFUk9fU0laRV9QVFIgKCh2b2lkICopKEFSQ0hfS01BTExPQ19NSU5BTElHTiAmZ3Q7IDE2ID8gXAomIzQzOwkJCQlBUkNIX0tNQUxMT0NfTUlOQUxJR04gOiAxNikpCiAKLSNkZWZpbmUgWkVST19PUl9OVUxMX1BUUih4KSAoKHVuc2lnbmVkIGxvbmcpKHgpICZsdDs9IFwKLQkJCQkodW5zaWduZWQgbG9uZylaRVJPX1NJWkVfUFRSKQomIzQzOyNkZWZpbmUgWkVST19PUl9OVUxMX1BUUih4KQkJCQkJCVwKJiM0MzsoewkJCQkJCQkJCVwKJiM0MzsJdW5zaWduZWQgbG9uZyBfX3pvbl9wdHIgPSAodW5zaWduZWQgbG9uZykoeCk7CQkJXAomIzQzOwlfX3pvbl9wdHIgPT0gMCB8fAkJCQkJCVwKJiM0MzsJX196b25fcHRyID09ICh1bnNpZ25lZCBsb25nKVpFUk9fU0laRV9QVFI7CQkJXAomIzQzO30pCiAKICNpbmNsdWRlICZsdDtsaW51eC9rYXNhbi5oJmd0OwogCkBAIC02MjIsNiAmIzQzOzYyOSwxMyBAQCBzdGF0aWMgaW5saW5lIGJvb2wga21lbV9kdW1wX29iaih2b2lkICpvYmplY3QpIHsgcmV0dXJuIGZhbHNlOyB9CiAjZGVmaW5lIEtNQUxMT0NfU0hJRlRfTE9XIGlsb2cyKEtNQUxMT0NfTUlOX1NJWkUpCiAjZW5kaWYKIAomIzQzOy8qCiYjNDM7ICogS2VlcCBaRVJPX1NJWkVfUFRSIGF0IG1vc3QgMTI4LCBpLmUuIGJlbG93IDB4MTAwOiBMSVNUX1BPSVNPTjEgaXMKJiM0MzsgKiAweDEwMCB3aGVuIFBPSVNPTl9QT0lOVEVSX0RFTFRBIGlzIDAsIGFuZCBubyBhcmNoaXRlY3R1cmUgY3VycmVudGx5CiYjNDM7ICogaGFzIGFuIEFSQ0hfS01BTExPQ19NSU5BTElHTiBhYm92ZSAxMjguCiYjNDM7ICovCiYjNDM7c3RhdGljX2Fzc2VydChBUkNIX0tNQUxMT0NfTUlOQUxJR04gJmx0OyAweDEwMCk7CiYjNDM7CiAvKgogICogU2V0dGluZyBBUkNIX1NMQUJfTUlOQUxJR04gaW4gYXJjaCBoZWFkZXJzIGFsbG93cyBhIGRpZmZlcmVudCBhbGlnbm1lbnQuCiAgKiBJbnRlbmRlZCBmb3IgYXJjaGVzIHRoYXQgZ2V0IG1pc2FsaWdubWVudCBmYXVsdHMgZXZlbiBmb3IgNjQgYml0IGludGVnZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXN0cy9zbHViX2t1bml0LmMgYi9saWIvdGVzdHMvc2x1Yl9rdW5pdC5jCmluZGV4IGZhNmQzMWRiY2ExNjYuLmEwMmZjNmI0MDFlM2UgMTAwNjQ0Ci0tLSBhL2xpYi90ZXN0cy9zbHViX2t1bml0LmMKJiM0MzsmIzQzOyYjNDM7IGIvbGliL3Rlc3RzL3NsdWJfa3VuaXQuYwpAQCAtMzgwLDYgJiM0MzszODAsNDggQEAgc3RhdGljIHZvaWQgdGVzdF9rbWFsbG9jX2tmcmVlX25vbG9jayhzdHJ1Y3Qga3VuaXQgKnRlc3QpCiB9CiAjZW5kaWYKIAomIzQzO3N0YXRpYyB2b2lkIHRlc3RfemVyb19zaXplX2FsbG9jKHN0cnVjdCBrdW5pdCAqdGVzdCkKJiM0Mzt7CiYjNDM7CXVuc2lnbmVkIGxvbmcgenNwID0gKHVuc2lnbmVkIGxvbmcpWkVST19TSVpFX1BUUjsKJiM0MzsJdm9pZCAqcCwgKnI7CiYjNDM7CiYjNDM7CXN0YXRpY19hc3NlcnQoKHVuc2lnbmVkIGxvbmcpWkVST19TSVpFX1BUUiAlIEFSQ0hfS01BTExPQ19NSU5BTElHTiA9PSAwKTsKJiM0MzsKJiM0MzsJcCA9IGttYWxsb2MoMCwgR0ZQX0tFUk5FTCk7CiYjNDM7CUtVTklUX0VYUEVDVF9QVFJfRVEodGVzdCwgcCwgWkVST19TSVpFX1BUUik7CiYjNDM7CUtVTklUX0VYUEVDVF9FUSh0ZXN0LCBrc2l6ZShwKSwgMCk7CiYjNDM7CWtmcmVlKHApOwomIzQzOwomIzQzOwlLVU5JVF9FWFBFQ1RfUFRSX0VRKHRlc3QsIGt6YWxsb2MoMCwgR0ZQX0tFUk5FTCksIFpFUk9fU0laRV9QVFIpOwomIzQzOwlLVU5JVF9FWFBFQ1RfUFRSX0VRKHRlc3QsIGttYWxsb2NfYXJyYXkoMCwgOCwgR0ZQX0tFUk5FTCksIFpFUk9fU0laRV9QVFIpOwomIzQzOwlLVU5JVF9FWFBFQ1RfUFRSX0VRKHRlc3QsIGtjYWxsb2MoNCwgMCwgR0ZQX0tFUk5FTCksIFpFUk9fU0laRV9QVFIpOwomIzQzOwomIzQzOwlwID0ga3ZtYWxsb2MoMCwgR0ZQX0tFUk5FTCk7CiYjNDM7CUtVTklUX0VYUEVDVF9QVFJfRVEodGVzdCwgcCwgWkVST19TSVpFX1BUUik7CiYjNDM7CWt2ZnJlZShwKTsKJiM0MzsKJiM0MzsJcCA9IGtyZWFsbG9jKE5VTEwsIDAsIEdGUF9LRVJORUwpOwomIzQzOwlLVU5JVF9FWFBFQ1RfUFRSX0VRKHRlc3QsIHAsIFpFUk9fU0laRV9QVFIpOwomIzQzOwlyID0ga3JlYWxsb2MocCwgNjQsIEdGUF9LRVJORUwpOwomIzQzOwlLVU5JVF9FWFBFQ1RfRkFMU0UodGVzdCwgWkVST19PUl9OVUxMX1BUUihyKSk7CiYjNDM7CXAgPSBrcmVhbGxvYyhyLCAwLCBHRlBfS0VSTkVMKTsKJiM0MzsJS1VOSVRfRVhQRUNUX1BUUl9FUSh0ZXN0LCBwLCBaRVJPX1NJWkVfUFRSKTsKJiM0MzsJa2ZyZWUocCk7CiYjNDM7CiYjNDM7CS8qIE9ubHkgTlVMTCBhbmQgdGhlIHplcm8tc2l6ZSBzZW50aW5lbCBtYXRjaC4gKi8KJiM0MzsJS1VOSVRfRVhQRUNUX1RSVUUodGVzdCwgWkVST19PUl9OVUxMX1BUUihOVUxMKSk7CiYjNDM7CUtVTklUX0VYUEVDVF9UUlVFKHRlc3QsIFpFUk9fT1JfTlVMTF9QVFIoWkVST19TSVpFX1BUUikpOwomIzQzOwlLVU5JVF9FWFBFQ1RfRkFMU0UodGVzdCwgWkVST19PUl9OVUxMX1BUUigodm9pZCAqKTEpKTsKJiM0MzsJS1VOSVRfRVhQRUNUX0ZBTFNFKHRlc3QsIFpFUk9fT1JfTlVMTF9QVFIoKHZvaWQgKikoenNwIC0gMSkpKTsKJiM0MzsJS1VOSVRfRVhQRUNUX0ZBTFNFKHRlc3QsIFpFUk9fT1JfTlVMTF9QVFIoKHZvaWQgKikoenNwICYjNDM7IDEpKSk7CiYjNDM7CUtVTklUX0VYUEVDVF9GQUxTRSh0ZXN0LCBaRVJPX09SX05VTExfUFRSKCh2b2lkICopKHpzcCAqIDIpKSk7CiYjNDM7CiYjNDM7CS8qIGZyZWVpbmcgdGhlIHNlbnRpbmVsIG11c3Qgc3RheSBhIG5vLW9wICovCiYjNDM7CWtmcmVlKFpFUk9fU0laRV9QVFIpOwomIzQzOwlrZnJlZV9zZW5zaXRpdmUoWkVST19TSVpFX1BUUik7CiYjNDM7CWt2ZnJlZShaRVJPX1NJWkVfUFRSKTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgaW50IHRlc3RfaW5pdChzdHJ1Y3Qga3VuaXQgKnRlc3QpCiB7CiAJc2xhYl9lcnJvcnMgPSAwOwpAQCAtNDA0LDYgJiM0Mzs0NDYsNyBAQCBzdGF0aWMgc3RydWN0IGt1bml0X2Nhc2UgdGVzdF9jYXNlc1tdID0gewogCUtVTklUX0NBU0UodGVzdF9rZnJlZV9yY3Vfd3FfZGVzdHJveSksCiAJS1VOSVRfQ0FTRSh0ZXN0X2xlYWtfZGVzdHJveSksCiAJS1VOSVRfQ0FTRSh0ZXN0X2tyZWFsbG9jX3JlZHpvbmVfemVyb2luZyksCiYjNDM7CUtVTklUX0NBU0UodGVzdF96ZXJvX3NpemVfYWxsb2MpLAogI2lmZGVmIENPTkZJR19QRVJGX0VWRU5UUwogCUtVTklUX0NBU0VfU0xPVyh0ZXN0X2ttYWxsb2Nfa2ZyZWVfbm9sb2NrKSwKICNlbmRpZgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAxNDoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzE3CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogMzQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIENvcmUgS2VybmVsIENoYW5nZTogU2xhYiBBbGxvY2F0b3IgSGVhZGVycyoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBpbmNsdWRlL2xpbnV4L3NsYWIuaGAsIHNwZWNpZmljYWxseSB0d2Vha2luZyBob3cgYFpFUk9fU0laRV9QVFJgIGFuZCBgWkVST19PUl9OVUxMX1BUUih4KWAgYXJlIGRlZmluZWQuIFRoZSBmYWN0IHRoYXQgaXQmIzM5O3MgYWx0ZXJpbmcgdGhlc2UgY29yZSBzbGFiIGFsbG9jYXRvciBoZWFkZXJzIGltbWVkaWF0ZWx5IGdldHMgbXkgYXR0ZW50aW9uLiBUaGlzIGlzIGxvdy1sZXZlbCwgY3JpdGljYWwgc3R1ZmYuIEFuZCB0aGVyZSYjMzk7cyBhIG5ldyBLVW5pdCB0ZXN0LCBgdGVzdF96ZXJvX3NpemVfYWxsb2NgLCBhZGRlZC4gSW50ZXJlc3RpbmcuCgpUaGUgYFpFUk9fU0laRV9QVFJgIGNoYW5nZSBsb29rcyBsaWtlIGl0JiMzOTtzIG1ha2luZyBpdCBkeW5hbWljYWxseSBkZXBlbmRlbnQgb24gYEFSQ0hfS01BTExPQ19NSU5BTElHTmAgbm93LiBUaGUgYFpFUk9fT1JfTlVMTF9QVFIoeClgIGNoYW5nZSBpcyBtb3JlIGludGVyZXN0aW5nLiBJdCYjMzk7cyBub3cgYmVpbmcgc3RyaWN0IGFib3V0IGNoZWNraW5nIGZvciAqZXhhY3RseSogYDBgIG9yIGBaRVJPX1NJWkVfUFRSYCwgbm90IGxlc3MgdGhhbiBvciBlcXVhbCB0byBgWkVST19TSVpFX1BUUmAgYXMgYmVmb3JlLiBUaGF0JiMzOTtzIGEgZGVmaW5pdGUgYmVoYXZpb3IgY2hhbmdlLiBUaGlzIGNvdWxkIGludHJvZHVjZSBvciByZXNvbHZlIHN1YnRsZSBtZW1vcnktcmVsYXRlZCBidWdzLgoKVGhlIHF1ZXN0aW9uIGlzLCBkb2VzIHRoaXMgd2FycmFudCBmdXp6aW5nIGVmZm9ydD8gSXQmIzM5O3MgYSBtYWNybyBjaGFuZ2UsIGFuZCB0aGVzZSBtYWNyb3MgYXJlICpldmVyeXdoZXJlKi4gVGhlIHBvdGVudGlhbCBmdW5jdGlvbmFsIGltcGFjdCBpcyBkZWZpbml0ZWx5IHRoZXJlLiBXZSYjMzk7cmUgdGFsa2luZyBhYm91dCBhIGNoYW5nZSBpbiBob3cgbWVtb3J5IGFsbG9jYXRpb25zIGFyZSBoYW5kbGVkIGF0IGEgdmVyeSBiYXNpYyBsZXZlbC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHJpZ2h0IHRhcmdldC4KClNpbmNlIHRoaXMgaXMgc3VjaCBhIGdsb2JhbCBjaGFuZ2UsIHNwZWNpZmljIGZ1bmN0aW9uLWxldmVsIGZ1enppbmcgbWlnaHQgYmUgdHJpY2t5LiBUaGUgS1VuaXQgdGVzdCBpcyBoZWxwZnVsLCBidXQgc3l6a2FsbGVyIGRvZXNuJiMzOTt0IHR5cGljYWxseSBmdXp6IHRob3NlIGRpcmVjdGx5IHVubGVzcyBleHBsaWNpdGx5IGNvbmZpZ3VyZWQuIFRoZSByZWFsIHZhbHVlIGlzIGlkZW50aWZ5aW5nIHRoZSBhcmVhcyBtb3N0IGltcGFjdGVkIGJ5IHRoZSBuZXcgYFpFUk9fT1JfTlVMTF9QVFJgIGRlZmluaXRpb24uIEFoLCByaWdodC4gSXQmIzM5O3MgdXNlZCBpbiBga2ZyZWVgLCBga3NpemVgLCBhbmQgYGtyZWFsbG9jYCEgVGhvc2UgYXJlIGFsbCBwcmltZSB0YXJnZXRzLiBUaW1lIHRvIHRyYWNrIGRvd24gKmV4YWN0bHkqIHdoZXJlIGBaRVJPX09SX05VTExfUFRSYCBpcyBiZWluZyB1c2VkIHRocm91Z2hvdXQgdGhlIGNvZGViYXNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDE0OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1pFUk9fT1JfTlVMTF9QVFImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9kZXZpY2UuYz0xMTk9c3RhdGljIHZvaWQgKmhsX2RtYV9hbGxvY19jb21tb24oc3RydWN0IGhsX2RldmljZSAqaGRldiwgc2l6ZV90IHNpemUsIGRtYV9hZGRyX3QgKmRtYV9oYW5kbGUsXG4tLVxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9kZXZpY2UuYy0xMzMtXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL2RldmljZS5jOjEzNDpcdGlmICh0cmFjZV9oYWJhbmFsYWJzX2RtYV9hbGxvY19lbmFibGVkKCkgXHUwMDI2XHUwMDI2ICFaRVJPX09SX05VTExfUFRSKHB0cikpXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL2RldmljZS5jLTEzNS1cdFx0dHJhY2VfaGFiYW5hbGFic19kbWFfYWxsb2MoXHUwMDI2KGhkZXYpLVx1MDAzZXBkZXYtXHUwMDNlZGV2LCAodTY0KSAodWludHB0cl90KSBwdHIsICpkbWFfaGFuZGxlLFxuLS1cbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vbWVtb3J5LmM9ODc9c3RhdGljIGludCBhbGxvY19kZXZpY2VfbWVtb3J5KHN0cnVjdCBobF9jdHggKmN0eCwgc3RydWN0IGhsX21lbV9pbiAqYXJncyxcbi0tXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL21lbW9yeS5jLTE0Mi1cdHBoeXNfcGdfcGFjay1cdTAwM2VwYWdlcyA9IGt2bWFsbG9jX2FycmF5KG51bV9wZ3MsIHNpemVvZih1NjQpLCBHRlBfS0VSTkVMKTtcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vbWVtb3J5LmM6MTQzOlx0aWYgKFpFUk9fT1JfTlVMTF9QVFIocGh5c19wZ19wYWNrLVx1MDAzZXBhZ2VzKSkge1xuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9tZW1vcnkuYy0xNDQtXHRcdHJjID0gLUVOT01FTTtcbi0tXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL21lbW9yeS5jPTgzOD1zdGF0aWMgaW50IGluaXRfcGh5c19wZ19wYWNrX2Zyb21fdXNlcnB0cihzdHJ1Y3QgaGxfY3R4ICpjdHgsXG4tLVxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9tZW1vcnkuYy04ODktXHRcdFx0XHRcdFx0R0ZQX0tFUk5FTCk7XG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL21lbW9yeS5jOjg5MDpcdGlmIChaRVJPX09SX05VTExfUFRSKHBoeXNfcGdfcGFjay1cdTAwM2VwYWdlcykpIHtcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vbWVtb3J5LmMtODkxLVx0XHRyYyA9IC1FTk9NRU07XG4tLVxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9tbXUvbW11LmM9Nzc5PXN0YXRpYyB2b2lkIGhsX21tdV9ocl9wb29sX2Rlc3Ryb3koc3RydWN0IGhsX2RldmljZSAqaGRldiwgc3RydWN0IGhsX21tdV9ocl9wcml2ICpocl9wcml2LFxuLS1cbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vbW11L21tdS5jLTc4Ni1cbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vbW11L21tdS5jOjc4NzpcdGlmIChaRVJPX09SX05VTExfUFRSKCpwb29sKSlcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vbW11L21tdS5jLTc4OC1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vbW11L21tdS5jLTc5My1cdFx0XHRob3AwX3BndCA9IFx1MDAyNmhyX3ByaXYtXHUwMDNlbW11X2FzaWRfaG9wMFthc2lkXTtcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vbW11L21tdS5jOjc5NDpcdFx0XHRpZiAoWkVST19PUl9OVUxMX1BUUihob3AwX3BndC1cdTAwM2V2aXJ0X2FkZHIpKVxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9tbXUvbW11LmMtNzk1LVx0XHRcdFx0Y29udGludWU7XG4tLVxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9tbXUvbW11LmM9ODI0PWludCBobF9tbXVfaHJfaW5pdChzdHJ1Y3QgaGxfZGV2aWNlICpoZGV2LCBzdHJ1Y3QgaGxfbW11X2hyX3ByaXYgKmhyX3ByaXYsIHUzMiBob3BfdGFibGVfc2l6ZSxcbi0tXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL21tdS9tbXUuYy04NDAtXHRocl9wcml2LVx1MDAzZW1tdV9wZ3RfcG9vbCA9IGdlbl9wb29sX2NyZWF0ZShQQUdFX1NISUZULCAtMSk7XG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL21tdS9tbXUuYzo4NDE6XHRpZiAoWkVST19PUl9OVUxMX1BUUihocl9wcml2LVx1MDAzZW1tdV9wZ3RfcG9vbCkpIHtcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vbW11L21tdS5jLTg0Mi1cdFx0ZGV2X2VycihoZGV2LVx1MDAzZWRldiwgXCYjMzQ7RmFpbGVkIHRvIGNyZWF0ZSBociBwYWdlIHBvb2xcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vbW11L21tdS5jLTg0Ni1cdGhyX3ByaXYtXHUwMDNlbW11X2FzaWRfaG9wMCA9IGt2emFsbG9jX29ianMoc3RydWN0IHBndF9pbmZvLCBwcm9wLVx1MDAzZW1heF9hc2lkKTtcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vbW11L21tdS5jOjg0NzpcdGlmIChaRVJPX09SX05VTExfUFRSKGhyX3ByaXYtXHUwMDNlbW11X2FzaWRfaG9wMCkpIHtcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vbW11L21tdS5jLTg0OC1cdFx0ZGV2X2VycihoZGV2LVx1MDAzZWRldiwgXCYjMzQ7RmFpbGVkIHRvIGFsbG9jYXRlIGhyLW1tdSBob3AwIHRhYmxlXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL21tdS9tbXUuYy04NTYtXHRcdFx0XHRcdFx0XHRcdFx0R0ZQX0tFUk5FTCB8IF9fR0ZQX1pFUk8pO1xuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9tbXUvbW11LmM6ODU3Olx0XHRpZiAoWkVST19PUl9OVUxMX1BUUih2aXJ0X2FkZHIpKSB7XG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL21tdS9tbXUuYy04NTgtXHRcdFx0ZGV2X2VycihoZGV2LVx1MDAzZWRldixcbi0tXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL21tdS9tbXUuYy04OTEtXHRobF9tbXVfaHJfcG9vbF9kZXN0cm95KGhkZXYsIGhyX3ByaXYsIGhvcF90YWJsZV9zaXplKTtcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vbW11L21tdS5jOjg5MjpcdGlmICghWkVST19PUl9OVUxMX1BUUihocl9wcml2LVx1MDAzZW1tdV9hc2lkX2hvcDApKVxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9tbXUvbW11LmMtODkzLVx0XHRrdmZyZWUoaHJfcHJpdi1cdTAwM2VtbXVfYXNpZF9ob3AwKTtcbi0tXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL21tdS9tbXUuYz05MTA9dm9pZCBobF9tbXVfaHJfZmluaShzdHJ1Y3QgaGxfZGV2aWNlICpoZGV2LCBzdHJ1Y3QgaGxfbW11X2hyX3ByaXYgKmhyX3ByaXYsIHUzMiBob3BfdGFibGVfc2l6ZSlcbi0tXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL21tdS9tbXUuYy05MTUtXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL21tdS9tbXUuYzo5MTY6XHRpZiAoIVpFUk9fT1JfTlVMTF9QVFIoaHJfcHJpdi1cdTAwM2VtbXVfYXNpZF9ob3AwKSkge1xuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9tbXUvbW11LmMtOTE3LVx0XHRrdmZyZWUoaHJfcHJpdi1cdTAwM2VtbXVfYXNpZF9ob3AwKTtcbi0tXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL21tdS9tbXUuYz0xMDY0PXN0cnVjdCBwZ3RfaW5mbyAqaGxfbW11X2hyX2FsbG9jX2hvcChzdHJ1Y3QgaGxfY3R4ICpjdHgsIHN0cnVjdCBobF9tbXVfaHJfcHJpdiAqaHJfcHJpdixcbi0tXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL21tdS9tbXUuYy0xMDg4LVx0XHRcdFx0XHRcdFx0R0ZQX0tFUk5FTCB8IF9fR0ZQX1pFUk8pO1xuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9tbXUvbW11LmM6MTA4OTpcdFx0aWYgKFpFUk9fT1JfTlVMTF9QVFIodmlydF9hZGRyKSlcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vbW11L21tdS5jLTEwOTAtXHRcdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9tbXUvbW11LmMtMTA5OS1cbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vbW11L21tdS5jOjExMDA6XHRpZiAoWkVST19PUl9OVUxMX1BUUih2aXJ0X2FkZHIpKSB7XG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL21tdS9tbXUuYy0xMTAxLVx0XHRkZXZfZXJyKGhkZXYtXHUwMDNlZGV2LCBcJiMzNDtmYWlsZWQgdG8gYWxsb2NhdGUgcGFnZVxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9tbXUvbW11LmM9MTM4MD1pbnQgaGxfbW11X2RyX2luaXQoc3RydWN0IGhsX2RldmljZSAqaGRldilcbi0tXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL21tdS9tbXUuYy0xNDAzLVx0XHRcdFx0XHRcdHByb3AtXHUwMDNlZG1tdS5ob3BfdGFibGVfc2l6ZSwgR0ZQX0tFUk5FTCk7XG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL21tdS9tbXUuYzoxNDA0Olx0aWYgKFpFUk9fT1JfTlVMTF9QVFIoaGRldi1cdTAwM2VtbXVfcHJpdi5kci5tbXVfc2hhZG93X2hvcDApKSB7XG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL21tdS9tbXUuYy0xNDA1LVx0XHRyYyA9IC1FTk9NRU07XG4tLVxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9tbXUvbW11LmM9MTQxOT12b2lkIGhsX21tdV9kcl9maW5pKHN0cnVjdCBobF9kZXZpY2UgKmhkZXYpXG4tLVxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9tbXUvbW11LmMtMTQyMi1cbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vbW11L21tdS5jOjE0MjM6XHRpZiAoWkVST19PUl9OVUxMX1BUUihoZGV2LVx1MDAzZW1tdV9wcml2LmRyLm1tdV9zaGFkb3dfaG9wMCkpXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL21tdS9tbXUuYy0xNDI0LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9iYXNlL2RldnJlcy5jPTk4MT12b2lkICpkZXZtX2tyZWFsbG9jKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqcHRyLCBzaXplX3QgbmV3X3NpemUsIGdmcF90IGdmcClcbi0tXG5kcml2ZXJzL2Jhc2UvZGV2cmVzLmMtOTkxLVxuZHJpdmVycy9iYXNlL2RldnJlcy5jOjk5MjpcdGlmICh1bmxpa2VseShaRVJPX09SX05VTExfUFRSKHB0cikpKVxuZHJpdmVycy9iYXNlL2RldnJlcy5jLTk5My1cdFx0cmV0dXJuIGRldm1fa21hbGxvYyhkZXYsIG5ld19zaXplLCBnZnApO1xuLS1cbmRyaXZlcnMvYmFzZS9kZXZyZXMuYz0xMTcxPXZvaWQgZGV2bV9rZnJlZShzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IHZvaWQgKnApXG4tLVxuZHJpdmVycy9iYXNlL2RldnJlcy5jLTExNzgtXHQgKi9cbmRyaXZlcnMvYmFzZS9kZXZyZXMuYzoxMTc5Olx0aWYgKHVubGlrZWx5KGlzX2tlcm5lbF9yb2RhdGEoKHVuc2lnbmVkIGxvbmcpcCkgfHwgWkVST19PUl9OVUxMX1BUUihwKSkpXG5kcml2ZXJzL2Jhc2UvZGV2cmVzLmMtMTE4MC1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtX2NydGMuYz0xOTk9c3RydWN0IGlkbGVfd29ya3F1ZXVlICppZGxlX2NyZWF0ZV93b3JrcXVldWUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG1fY3J0Yy5jLTIwMy1cdGlkbGVfd29yayA9IGt6YWxsb2Nfb2JqKCppZGxlX3dvcmspO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG1fY3J0Yy5jOjIwNDpcdGlmIChaRVJPX09SX05VTExfUFRSKGlkbGVfd29yaykpXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbV9jcnRjLmMtMjA1LVx0XHRyZXR1cm4gTlVMTDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbV9oZGNwLmM9NzQ3PXN0cnVjdCBoZGNwX3dvcmtxdWV1ZSAqaGRjcF9jcmVhdGVfd29ya3F1ZXVlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtX2hkY3AuYy03NTQtXHRoZGNwX3dvcmsgPSBremFsbG9jX29ianMoKmhkY3Bfd29yaywgbWF4X2NhcHMpO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG1faGRjcC5jOjc1NTpcdGlmIChaRVJPX09SX05VTExfUFRSKGhkY3Bfd29yaykpXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbV9oZGNwLmMtNzU2LVx0XHRyZXR1cm4gTlVMTDtcbi0tXG5kcml2ZXJzL3RoZXJtYWwvaW50ZWwvaW50MzQweF90aGVybWFsL2ludDM0MDBfdGhlcm1hbC5jPTUyNz1zdGF0aWMgdm9pZCBpbnQzNDAwX3NldHVwX2dkZHYoc3RydWN0IGludDM0MDBfdGhlcm1hbF9wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvdGhlcm1hbC9pbnRlbC9pbnQzNDB4X3RoZXJtYWwvaW50MzQwMF90aGVybWFsLmMtNTQ1LVx0XHRcdFx0ICAgR0ZQX0tFUk5FTCk7XG5kcml2ZXJzL3RoZXJtYWwvaW50ZWwvaW50MzQweF90aGVybWFsL2ludDM0MDBfdGhlcm1hbC5jOjU0NjpcdGlmIChaRVJPX09SX05VTExfUFRSKHByaXYtXHUwMDNlZGF0YV92YXVsdCkpXG5kcml2ZXJzL3RoZXJtYWwvaW50ZWwvaW50MzQweF90aGVybWFsL2ludDM0MDBfdGhlcm1hbC5jLTU0Ny1cdFx0Z290byBvdXRfZnJlZTtcbi0tXG5kcml2ZXJzL3RoZXJtYWwvaW50ZWwvaW50MzQweF90aGVybWFsL2ludDM0MDBfdGhlcm1hbC5jPTU1NT1zdGF0aWMgaW50IGludDM0MDBfdGhlcm1hbF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvdGhlcm1hbC9pbnRlbC9pbnQzNDB4X3RoZXJtYWwvaW50MzQwMF90aGVybWFsLmMtNjE1LVxuZHJpdmVycy90aGVybWFsL2ludGVsL2ludDM0MHhfdGhlcm1hbC9pbnQzNDAwX3RoZXJtYWwuYzo2MTY6XHRpZiAoIVpFUk9fT1JfTlVMTF9QVFIocHJpdi1cdTAwM2VkYXRhX3ZhdWx0KSkge1xuZHJpdmVycy90aGVybWFsL2ludGVsL2ludDM0MHhfdGhlcm1hbC9pbnQzNDAwX3RoZXJtYWwuYy02MTctXHRcdHJlc3VsdCA9IGRldmljZV9jcmVhdGVfYmluX2ZpbGUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFx1MDAyNmJpbl9hdHRyX2RhdGFfdmF1bHQpO1xuLS1cbmRyaXZlcnMvdGhlcm1hbC9pbnRlbC9pbnQzNDB4X3RoZXJtYWwvaW50MzQwMF90aGVybWFsLmMtNjM4LVx0Y2xlYW51cF9vZHZwKHByaXYpO1xuZHJpdmVycy90aGVybWFsL2ludGVsL2ludDM0MHhfdGhlcm1hbC9pbnQzNDAwX3RoZXJtYWwuYzo2Mzk6XHRpZiAoIVpFUk9fT1JfTlVMTF9QVFIocHJpdi1cdTAwM2VkYXRhX3ZhdWx0KSkge1xuZHJpdmVycy90aGVybWFsL2ludGVsL2ludDM0MHhfdGhlcm1hbC9pbnQzNDAwX3RoZXJtYWwuYy02NDAtXHRcdGRldmljZV9yZW1vdmVfYmluX2ZpbGUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFx1MDAyNmJpbl9hdHRyX2RhdGFfdmF1bHQpO1xuLS1cbmRyaXZlcnMvdGhlcm1hbC9pbnRlbC9pbnQzNDB4X3RoZXJtYWwvaW50MzQwMF90aGVybWFsLmM9NjU5PXN0YXRpYyB2b2lkIGludDM0MDBfdGhlcm1hbF9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL3RoZXJtYWwvaW50ZWwvaW50MzQweF90aGVybWFsL2ludDM0MDBfdGhlcm1hbC5jLTY3My1cbmRyaXZlcnMvdGhlcm1hbC9pbnRlbC9pbnQzNDB4X3RoZXJtYWwvaW50MzQwMF90aGVybWFsLmM6Njc0Olx0aWYgKCFaRVJPX09SX05VTExfUFRSKHByaXYtXHUwMDNlZGF0YV92YXVsdCkpXG5kcml2ZXJzL3RoZXJtYWwvaW50ZWwvaW50MzQweF90aGVybWFsL2ludDM0MDBfdGhlcm1hbC5jLTY3NS1cdFx0ZGV2aWNlX3JlbW92ZV9iaW5fZmlsZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgXHUwMDI2YmluX2F0dHJfZGF0YV92YXVsdCk7XG4tLVxuZnMvYmluZm10X2VsZi5jPTE1OTM9c3RhdGljIGludCBmaWxsX2ZpbGVzX25vdGUoc3RydWN0IG1lbWVsZm5vdGUgKm5vdGUsIHN0cnVjdCBjb3JlZHVtcF9wYXJhbXMgKmNwcm0pXG4tLVxuZnMvYmluZm10X2VsZi5jLTE2MjAtXHRkYXRhID0ga3ZtYWxsb2Moc2l6ZSwgR0ZQX0tFUk5FTCk7XG5mcy9iaW5mbXRfZWxmLmM6MTYyMTpcdGlmIChaRVJPX09SX05VTExfUFRSKGRhdGEpKVxuZnMvYmluZm10X2VsZi5jLTE2MjItXHRcdHJldHVybiAtRU5PTUVNO1xuLS1cbmZzL2piZDIvdHJhbnNhY3Rpb24uYz01OD12b2lkIGpiZDJfam91cm5hbF9mcmVlX3RyYW5zYWN0aW9uKHRyYW5zYWN0aW9uX3QgKnRyYW5zYWN0aW9uKVxuZnMvamJkMi90cmFuc2FjdGlvbi5jLTU5LXtcbmZzL2piZDIvdHJhbnNhY3Rpb24uYzo2MDpcdGlmICh1bmxpa2VseShaRVJPX09SX05VTExfUFRSKHRyYW5zYWN0aW9uKSkpXG5mcy9qYmQyL3RyYW5zYWN0aW9uLmMtNjEtXHRcdHJldHVybjtcbi0tXG5pbmNsdWRlL2xpbnV4L3NsYWIuaD0yNj1lbnVtIF9zbGFiX2ZsYWdfYml0cyB7XG4tLVxuaW5jbHVkZS9saW51eC9zbGFiLmgtMjcyLVxuaW5jbHVkZS9saW51eC9zbGFiLmg6MjczOiNkZWZpbmUgWkVST19PUl9OVUxMX1BUUih4KVx0XHRcdFx0XHRcdFxcXG5pbmNsdWRlL2xpbnV4L3NsYWIuaC0yNzQtKHtcdFx0XHRcdFx0XHRcdFx0XHRcXFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMjU5PXN0YXRpYyB2b2lkICpjb3B5X2FycmF5KHZvaWQgKmRzdCwgY29uc3Qgdm9pZCAqc3JjLCBzaXplX3Qgbiwgc2l6ZV90IHNpemUsIGdmcF90IGZsYWdzKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjY0LVxua2VybmVsL2JwZi92ZXJpZmllci5jOjEyNjU6XHRpZiAoWkVST19PUl9OVUxMX1BUUihzcmMpKVxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyNjYtXHRcdGdvdG8gb3V0O1xuLS1cbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jPTI1NDk9c3RhdGljIHZvaWQgaGFuZGxlcl9jaGFpbihzdHJ1Y3QgdXByb2JlICp1cHJvYmUsIHN0cnVjdCBwdF9yZWdzICpyZWdzKVxuLS1cbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTI1ODItXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYzoyNTgzOlx0aWYgKCFaRVJPX09SX05VTExfUFRSKHJpKSlcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTI1ODQtXHRcdHByZXBhcmVfdXJldHByb2JlKHVwcm9iZSwgcmVncywgcmkpO1xuLS1cbmxpYi90ZXN0cy9zbHViX2t1bml0LmM9MzgzPXN0YXRpYyB2b2lkIHRlc3RfemVyb19zaXplX2FsbG9jKHN0cnVjdCBrdW5pdCAqdGVzdClcbi0tXG5saWIvdGVzdHMvc2x1Yl9rdW5pdC5jLTQwNS1cdHIgPSBrcmVhbGxvYyhwLCA2NCwgR0ZQX0tFUk5FTCk7XG5saWIvdGVzdHMvc2x1Yl9rdW5pdC5jOjQwNjpcdEtVTklUX0VYUEVDVF9GQUxTRSh0ZXN0LCBaRVJPX09SX05VTExfUFRSKHIpKTtcbmxpYi90ZXN0cy9zbHViX2t1bml0LmMtNDA3LVx0cCA9IGtyZWFsbG9jKHIsIDAsIEdGUF9LRVJORUwpO1xuLS1cbmxpYi90ZXN0cy9zbHViX2t1bml0LmMtNDExLVx0LyogT25seSBOVUxMIGFuZCB0aGUgemVyby1zaXplIHNlbnRpbmVsIG1hdGNoLiAqL1xubGliL3Rlc3RzL3NsdWJfa3VuaXQuYzo0MTI6XHRLVU5JVF9FWFBFQ1RfVFJVRSh0ZXN0LCBaRVJPX09SX05VTExfUFRSKE5VTEwpKTtcbmxpYi90ZXN0cy9zbHViX2t1bml0LmM6NDEzOlx0S1VOSVRfRVhQRUNUX1RSVUUodGVzdCwgWkVST19PUl9OVUxMX1BUUihaRVJPX1NJWkVfUFRSKSk7XG5saWIvdGVzdHMvc2x1Yl9rdW5pdC5jOjQxNDpcdEtVTklUX0VYUEVDVF9GQUxTRSh0ZXN0LCBaRVJPX09SX05VTExfUFRSKCh2b2lkICopMSkpO1xubGliL3Rlc3RzL3NsdWJfa3VuaXQuYzo0MTU6XHRLVU5JVF9FWFBFQ1RfRkFMU0UodGVzdCwgWkVST19PUl9OVUxMX1BUUigodm9pZCAqKSh6c3AgLSAxKSkpO1xubGliL3Rlc3RzL3NsdWJfa3VuaXQuYzo0MTY6XHRLVU5JVF9FWFBFQ1RfRkFMU0UodGVzdCwgWkVST19PUl9OVUxMX1BUUigodm9pZCAqKSh6c3AgJiM0MzsgMSkpKTtcbmxpYi90ZXN0cy9zbHViX2t1bml0LmM6NDE3Olx0S1VOSVRfRVhQRUNUX0ZBTFNFKHRlc3QsIFpFUk9fT1JfTlVMTF9QVFIoKHZvaWQgKikoenNwICogMikpKTtcbmxpYi90ZXN0cy9zbHViX2t1bml0LmMtNDE4LVxuLS1cbm1tL3NsdWIuYz02NTc0PXNpemVfdCBrc2l6ZShjb25zdCB2b2lkICpvYmpwKVxuLS1cbm1tL3NsdWIuYy02NTkwLVx0ICovXG5tbS9zbHViLmM6NjU5MTpcdGlmICh1bmxpa2VseShaRVJPX09SX05VTExfUFRSKG9ianApKSB8fCAha2FzYW5fY2hlY2tfYnl0ZShvYmpwKSlcbm1tL3NsdWIuYy02NTkyLVx0XHRyZXR1cm4gMDtcbi0tXG5tbS9zbHViLmM9NjY3MT12b2lkIGtmcmVlKGNvbnN0IHZvaWQgKm9iamVjdClcbi0tXG5tbS9zbHViLmMtNjY3OS1cbm1tL3NsdWIuYzo2NjgwOlx0aWYgKHVubGlrZWx5KFpFUk9fT1JfTlVMTF9QVFIob2JqZWN0KSkpXG5tbS9zbHViLmMtNjY4MS1cdFx0cmV0dXJuO1xuLS1cbm1tL3NsdWIuYz02NzA1PXZvaWQga2ZyZWVfbm9sb2NrKGNvbnN0IHZvaWQgKm9iamVjdClcbi0tXG5tbS9zbHViLmMtNjcxMC1cbm1tL3NsdWIuYzo2NzExOlx0aWYgKHVubGlrZWx5KFpFUk9fT1JfTlVMTF9QVFIob2JqZWN0KSkpXG5tbS9zbHViLmMtNjcxMi1cdFx0cmV0dXJuO1xuLS1cbm1tL3NsdWIuYz02NzY1PV9fZG9fa3JlYWxsb2MoY29uc3Qgdm9pZCAqcCwgc2l6ZV90IG5ld19zaXplLCB1bnNpZ25lZCBsb25nIGFsaWduLCBnZnBfdCBmbGFncywgaW50IG5pZCwga21hbGxvY190b2tlbl90IHRva2VuKVxuLS1cbm1tL3NsdWIuYy02NzcxLVxubW0vc2x1Yi5jOjY3NzI6XHRpZiAodW5saWtlbHkoWkVST19PUl9OVUxMX1BUUihwKSkpXG5tbS9zbHViLmMtNjc3My1cdFx0Z290byBhbGxvY19uZXc7XG4tLVxubW0vc2x1Yi5jPTY5ODM9dm9pZCBrdmZyZWVfc2Vuc2l0aXZlKGNvbnN0IHZvaWQgKmFkZHIsIHNpemVfdCBsZW4pXG5tbS9zbHViLmMtNjk4NC17XG5tbS9zbHViLmM6Njk4NTpcdGlmIChsaWtlbHkoIVpFUk9fT1JfTlVMTF9QVFIoYWRkcikpKSB7XG5tbS9zbHViLmMtNjk4Ni1cdFx0bWVtemVyb19leHBsaWNpdCgodm9pZCAqKWFkZHIsIGxlbik7XG4tLVxubW0vdXNlcmNvcHkuYz0xNTA9c3RhdGljIGlubGluZSB2b2lkIGNoZWNrX2JvZ3VzX2FkZHJlc3MoY29uc3QgdW5zaWduZWQgbG9uZyBwdHIsIHVuc2lnbmVkIGxvbmcgbixcbi0tXG5tbS91c2VyY29weS5jLTE1Ny1cdC8qIFJlamVjdCBpZiBOVUxMIG9yIFpFUk8tYWxsb2NhdGlvbi4gKi9cbm1tL3VzZXJjb3B5LmM6MTU4Olx0aWYgKFpFUk9fT1JfTlVMTF9QVFIocHRyKSlcbm1tL3VzZXJjb3B5LmMtMTU5LVx0XHR1c2VyY29weV9hYm9ydChcJiMzNDtudWxsIGFkZHJlc3NcJiMzNDssIE5VTEwsIHRvX3VzZXIsIHB0ciwgbik7XG4tLVxubmV0L3N1bnJwYy9hdXRoX2dzcy9hdXRoX2dzcy5jPTE5ODk9Z3NzX3Vud3JhcF9yZXNwX2ludGVnKHN0cnVjdCBycGNfdGFzayAqdGFzaywgc3RydWN0IHJwY19jcmVkICpjcmVkLFxuLS1cbm5ldC9zdW5ycGMvYXV0aF9nc3MvYXV0aF9nc3MuYy0yMDMwLVx0bWljLmRhdGEgPSBrbWFsbG9jKGxlbiwgR0ZQX0tFUk5FTCk7XG5uZXQvc3VucnBjL2F1dGhfZ3NzL2F1dGhfZ3NzLmM6MjAzMTpcdGlmIChaRVJPX09SX05VTExfUFRSKG1pYy5kYXRhKSlcbm5ldC9zdW5ycGMvYXV0aF9nc3MvYXV0aF9nc3MuYy0yMDMyLVx0XHRnb3RvIHVud3JhcF9mYWlsZWQ7XG4tLVxubmV0L3N1bnJwYy9hdXRoX2dzcy9zdmNhdXRoX2dzcy5jPTExNTU9c3ZjYXV0aF9nc3NfbGVnYWN5X2luaXQoc3RydWN0IHN2Y19ycXN0ICpycXN0cCxcbi0tXG5uZXQvc3VucnBjL2F1dGhfZ3NzL3N2Y2F1dGhfZ3NzLmMtMTE4NS1cdHJzaWtleS5pbl90b2tlbi5kYXRhID0ga21hbGxvYyhsZW4sIEdGUF9LRVJORUwpO1xubmV0L3N1bnJwYy9hdXRoX2dzcy9zdmNhdXRoX2dzcy5jOjExODY6XHRpZiAoWkVST19PUl9OVUxMX1BUUihyc2lrZXkuaW5fdG9rZW4uZGF0YSkpIHtcbm5ldC9zdW5ycGMvYXV0aF9nc3Mvc3ZjYXV0aF9nc3MuYy0xMTg3LVx0XHRrZnJlZShyc2lrZXkuaW5faGFuZGxlLmRhdGEpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDE0OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk0NDYKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiA2MjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJbXBhY3Qgb2YgdGhlIFpFUk9fT1JfTlVMTF9QVFIgQ2hhbmdlKioKCk9rYXksIHNvIHRoaXMgY2hhbmdlIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQsIGJ1dCBpdCBoYXMgc2lnbmlmaWNhbnQgaW1wbGljYXRpb25zLiBJdCBzZWVtcyB0aGUgY29kZSBub3cgc3RyaWN0bHkgZGVmaW5lcyBgWkVST19PUl9OVUxMX1BUUih4KWAgYXMgZWl0aGVyIGAwYCBvciBgWkVST19TSVpFX1BUUmAsIGVmZmVjdGl2ZWx5IGV4Y2x1ZGluZyBwb2ludGVycyB3aXRoIHNtYWxsIHZhbHVlcyAoMS0xMjcsIGRlcGVuZGluZyBvbiBhcmNoaXRlY3R1cmUpIHRoYXQgdXNlZCB0byBiZSBjb25zaWRlcmVkICYjMzQ7emVybyBvciBudWxsJiMzNDsuIFRoaXMgbWVhbnMgdGhhdCBhdHRlbXB0aW5nIHRvIGZyZWUgYSBzbWFsbCBpbnRlZ2VyIHZhbHVlLCBsaWtlIGBrZnJlZSgodm9pZCAqKTEpYCwgd2lsbCBubyBsb25nZXIgYmUgc2lsZW50bHkgaWdub3JlZDsgaXQmIzM5O2xsIG5vdyBsaWtlbHkgdHJpZ2dlciBhIGNyYXNoIGJlY2F1c2UgaXQmIzM5O3MgYXR0ZW1wdGluZyB0byBmcmVlIGFuIGludmFsaWQgcG9pbnRlci4gVGhpcyBpcyBhIGRlbGliZXJhdGUgZGVzaWduIGNoYW5nZSB0byBjYXRjaCB0aGVzZSBraW5kcyBvZiBidWdzLCB3aGljaCBpcyBnb29kLgoKTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7V29ydGggZnV6emluZz8mIzM0OyBBYnNvbHV0ZWx5LCB0aGlzIGlzIGEgcHJpbWUgY2FuZGlkYXRlLiBJdCBoYXMgdGhlIHBvdGVudGlhbCB0byBleHBvc2UgYnVncyBpbiBhbnkga2VybmVsIGNvZGUgdGhhdCBtaXN0YWtlbmx5IHBhc3NlcyBhIHNtYWxsIGludGVnZXIgdmFsdWUgdG8gbWVtb3J5IG1hbmFnZW1lbnQgZnVuY3Rpb25zIGxpa2UgYGtmcmVlYCwgYGtzaXplYCwgYGtyZWFsbG9jYCwgYW5kIG90aGVycy4gVGhlc2UgYXJlIGFsbCBjb3JlIGFsbG9jYXRvciBmdW5jdGlvbnMgdGhhdCBjb3VsZCBub3cgcmVhY3QgZGlmZmVyZW50bHkuCgpCdXQgdGhlbiBJIHJlY2FsbCB0aGUgcHJvbXB0JiMzOTtzIHNwZWNpZmljIHJlcXVpcmVtZW50cy4gSSBuZWVkIHRvIGlkZW50aWZ5ICpzcGVjaWZpYyoga2VybmVsIGZ1bmN0aW9ucyBmb3IgZm9jdXNlZCBmdXp6aW5nLiBXaGlsZSBga2ZyZWVgLCBga3NpemVgLCBhbmQgYGtyZWFsbG9jYCBhcmUgb2J2aW91c2x5IGltcGFjdGVkLCB0aGV5IGFyZSBnZW5lcmljIGFuZCBob3QtcGF0aCwgYW5kIHRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IHNheXMgdG8gYXZvaWQgdGhlbS4gRGFuZy4gVGhlIHBhdGNoIGludHJvZHVjZXMgYHRlc3RfemVyb19zaXplX2FsbG9jYCB3aXRoaW4gdGhlIGBzbHViX2t1bml0LmNgIGZpbGUsIGJ1dCB0aGF0JiMzOTtzIGEga3VuaXQgdGVzdCwgYW5kIHN5emthbGxlciBkb2VzbiYjMzk7dCBkaXJlY3RseSBmdXp6IHRob3NlLiBTbywgaXQgbG9va3MgbGlrZSB0aGVyZSBhcmVuJiMzOTt0IGFueSBzcGVjaWZpYyB0YXJnZXQgZnVuY3Rpb25zIHRvIHBvaW50IHRvIGFuZCBJIGhhdmUgdG8gbGVhdmUgdGhlIGBGb2N1c1N5bWJvbHNgIGVtcHR5LgoKRmluYWxseSwgSSBzaG91bGQgY2hlY2sgdGhlIGBFbmFibGVDb25maWdzYCB0byBlbnN1cmUgdGhlIG5ldyBrdW5pdCB0ZXN0IGlzIGNvbXBpbGVkLiAgSXQmIzM5O3MgaW4gdGhlIGBsaWIvdGVzdHMvc2x1Yl9rdW5pdC5jYCBmaWxlLCBzbyBJIG5lZWQgYENPTkZJR19TTFVCX0tVTklUX1RFU1RgLiBMZXQgbWUgZG91YmxlLWNoZWNrIHRoYXQgdGhpcyBpcyBjb3JyZWN0IGJ5IGNoZWNraW5nIGBsaWIvdGVzdHMvS2NvbmZpZ2Agb3IgYGxpYi9LY29uZmlnLmRlYnVnYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAxNDoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgU0xVQl9LVU5JVF9URVNUJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2xpYi9LY29uZmlnLmRlYnVnPTI5Nzk9Y29uZmlnIFNIREkzX0tVTklUX1RFU1Rcbi0tXG5saWIvS2NvbmZpZy5kZWJ1Zy0yOTg4LVxubGliL0tjb25maWcuZGVidWc6Mjk4OTpjb25maWcgU0xVQl9LVU5JVF9URVNUXG5saWIvS2NvbmZpZy5kZWJ1Zy0yOTkwLVx0dHJpc3RhdGUgXCYjMzQ7S1VuaXQgdGVzdCBmb3IgU0xVQiBjYWNoZSBlcnJvciBkZXRlY3Rpb25cJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDE0OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNjM3CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqQW5hbHl6aW5nIHRoZSBTTFVCX0tVTklUX1RFU1QgQ29uZmlndXJhdGlvbiBPcHRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBTTFVCX0tVTklUX1RFU1RgLiBJdCYjMzk7cyBjbGVhciB0aGlzIGlzIHRoZSBjb25maWcgb3B0aW9uIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGguIE5vdywgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGRpdmUgaW50byBpdHMgZGVwZW5kZW5jaWVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IG90aGVyIGNvbmZpZ3VyYXRpb25zLCBmZWF0dXJlcywgb3IgbGlicmFyaWVzIHRoaXMgb25lIHJlbGllcyBvbi4gVW5kZXJzdGFuZGluZyB0aGUgZGVwZW5kZW5jeSB0cmVlIHdpbGwgYmUgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBpdHMgb3ZlcmFsbCBpbXBhY3QgYW5kIGhvdyBpdCBmaXRzIGludG8gdGhlIGJyb2FkZXIga2VybmVsIGJ1aWxkIGFuZCBmdW5jdGlvbmFsaXR5LiBUaW1lIHRvIHN0YXJ0IGRpZ2dpbmcgaW50byB0aGUgS2NvbmZpZyBmaWxlcyEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAxNDoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgU0xVQl9LVU5JVF9URVNUJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bGliL0tjb25maWcuZGVidWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bGliL0tjb25maWcuZGVidWc9Mjk3OT1jb25maWcgU0hESTNfS1VOSVRfVEVTVFxuLS1cbmxpYi9LY29uZmlnLmRlYnVnLTI5ODgtXG5saWIvS2NvbmZpZy5kZWJ1ZzoyOTg5OmNvbmZpZyBTTFVCX0tVTklUX1RFU1RcbmxpYi9LY29uZmlnLmRlYnVnLTI5OTAtXHR0cmlzdGF0ZSBcJiMzNDtLVW5pdCB0ZXN0IGZvciBTTFVCIGNhY2hlIGVycm9yIGRldGVjdGlvblwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMTQ6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA5MjEKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIERlYnVnZ2luZyBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHNvbWV0aGluZyByZWxhdGVkIHRvIHRoZSBkZWJ1Z2dpbmcgY29uZmlndXJhdGlvbiBvZiB0aGlzIHN5c3RlbS4gVGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgaXMgdGhlIGBsaWIvS2NvbmZpZy5kZWJ1Z2AgZmlsZS4gTm93LCBiYXNlZCBvbiBteSBwYXN0IGV4cGVyaWVuY2Ugd2l0aCB0aGVzZSBjb25maWd1cmF0aW9ucywgbGluZSAyOTg5IGlzIGxpa2VseSB0byBiZSBhIGNydWNpYWwgcG9pbnQg4oCTIGVpdGhlciBkZWZpbmluZyBhIGtleSBkZWJ1ZyBvcHRpb24sIHByb3ZpZGluZyBhIGNvbmRpdGlvbmFsIGZvciBpdCwgb3IgcGVyaGFwcyByZWZlcmVuY2luZyBhbm90aGVyIGZpbGUgd2l0aCBtb3JlIGRldGFpbHMuIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBqdW1wIHRvIHRoYXQgbGluZSBhbmQgY2hlY2sgdGhlIHN1cnJvdW5kaW5nIGNvZGUsIGZvY3VzaW5nIG9uIHRoZSBjb250ZXh0IGFuZCBkZXBlbmRlbmNpZXMgdG8gcXVpY2tseSBnZXQgYSBnb29kIG92ZXJ2aWV3IG9mIHRoZSByZWxldmFudCBsb2dpYyBhbmQgcG90ZW50aWFsbHkgc3BvdCB0aGUgcm9vdCBjYXVzZSBvZiB0aGUgaXNzdWUgb3IgdW5kZXJzdGFuZCBob3cgYSBwYXJ0aWN1bGFyIGRlYnVnIGZlYXR1cmUgaXMgZW5hYmxlZC9kaXNhYmxlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMTQ6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtsaWIvS2NvbmZpZy5kZWJ1ZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI5ODUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7Mjk4NTpcdFx0ICBfX2xzaHJkaTMoKSBoZWxwZXIgZnVuY3Rpb25zIHVzZWQgdG8gaW1wbGVtZW50IDY0LWJpdCBhcml0aG1ldGljXG4yOTg2Olx0XHQgIHNoaWZ0IGxlZnQsIGFyaXRobWV0aWMgc2hpZnQgcmlnaHQgYW5kIGxvZ2ljYWwgc2hpZnQgcmlnaHQsXG4yOTg3Olx0XHQgIHJlc3BlY3RpdmVseSwgb24gYSAzMi1iaXQgQ1BVcy5cbjI5ODg6XHRcbjI5ODk6XHRjb25maWcgU0xVQl9LVU5JVF9URVNUXG4yOTkwOlx0XHR0cmlzdGF0ZSBcJiMzNDtLVW5pdCB0ZXN0IGZvciBTTFVCIGNhY2hlIGVycm9yIGRldGVjdGlvblwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4yOTkxOlx0XHRkZXBlbmRzIG9uIFNMVUJfREVCVUcgXHUwMDI2XHUwMDI2IEtVTklUXG4yOTkyOlx0XHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xuMjk5MzpcdFx0aGVscFxuMjk5NDpcdFx0ICBUaGlzIGJ1aWxkcyBTTFVCIGFsbG9jYXRvciB1bml0IHRlc3QuXG4yOTk1Olx0XHQgIFRlc3RzIFNMVUIgY2FjaGUgZGVidWdnaW5nIGZ1bmN0aW9uYWxpdHkuXG4yOTk2Olx0XHQgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIEtVbml0IGFuZCB1bml0IHRlc3RzIGluIGdlbmVyYWwgcGxlYXNlIHJlZmVyXG4yOTk3Olx0XHQgIHRvIHRoZSBLVW5pdCBkb2N1bWVudGF0aW9uIGluIERvY3VtZW50YXRpb24vZGV2LXRvb2xzL2t1bml0Ly5cbjI5OTg6XHRcbjI5OTk6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbjMwMDA6XHRcbjMwMDE6XHRjb25maWcgUkFUSU9OQUxfS1VOSVRfVEVTVFxuMzAwMjpcdFx0dHJpc3RhdGUgXCYjMzQ7S1VuaXQgdGVzdCBmb3IgcmF0aW9uYWwuY1wmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4zMDAzOlx0XHRkZXBlbmRzIG9uIEtVTklUIFx1MDAyNlx1MDAyNiBSQVRJT05BTFxuMzAwNDpcdFx0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMTQ6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE0ODAKCQkJCQkJCW91dHB1dDogMTIyCgkJCQkJCQl0aG91Z2h0czogMjc2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIGBrZnJlZWAgU2FmZXR5IFBhdGNoKioKCk9rYXksIGxldCBtZSBicmVhayB0aGlzIGRvd24uIFRoZSBkZXBlbmRlbmNpZXMgaGVyZSBhcmUgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDogYFNMVUJfREVCVUdgIGFuZCBgS1VOSVRgLiBTbyBJJiMzOTtsbCBuZWVkIHRvIGVuYWJsZSBgU0xVQl9LVU5JVF9URVNUYCwgYFNMVUJfREVCVUdgLCBhbmQgYEtVTklUYCB0byBtYWtlIHN1cmUgdGhlIHRlc3RzIHJ1biBhbmQgSSBoYXZlIHRoZSBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24gSSBuZWVkLiBJJiMzOTtsbCBub3RlIHRoYXQgYFNMVUJfREVCVUdgIGlzIG9mdGVuIGVuYWJsZWQgYnkgZGVmYXVsdCBpbiBkZWJ1ZyBrZXJuZWxzLCBidXQgaXQmIzM5O3MgYWx3YXlzIGJlc3QgdG8gYmUgZXhwbGljaXQgYWJvdXQgaXQgaW4gYSBjb25maWd1cmF0aW9uLgoKVGhlIGNyaXRpY2FsIGNoYW5nZSBpcyBpbiBgaW5jbHVkZS9saW51eC9zbGFiLmhgLiBTaW5jZSBpdCYjMzk7cyBpbiBhIGhlYWRlciwgdGhpcyBpcyBhIHBlcnZhc2l2ZSBjaGFuZ2UgdGhhdCBpbXBhY3RzIHRoZSBlbnRpcmUga2VybmVsLCBhbmQgZG9lc24mIzM5O3QgcmVseSBvbiBhbnkgc3BlY2lmaWMgbW9kdWxlIGNvbmZpZy4gVGhpcyBjaGFuZ2UgZW5mb3JjZXMgc3RyaWN0ZXIgdmFsaWRhdGlvbiBvZiBwb2ludGVycyBwYXNzZWQgdG8gYGtmcmVlYCwgd2hpY2ggbWVhbnMgdGhhdCBpbnZhbGlkIHBvaW50ZXJzIGxpa2UgYEVSUl9QVFJgIHdpbGwgbm93IGxlYWQgdG8gYSBjcmFzaCwgcmF0aGVyIHRoYW4gYmVpbmcgc2lsZW50bHkgaWdub3JlZC4gVGhpcyBpcyBleGFjdGx5IHRoZSBraW5kIG9mIGNoYW5nZSB0aGF0JiMzOTtzIHByaW1lIGZvciBmdXp6aW5nISBDYXRjaGluZyB0aG9zZSBzdWJ0bGUgbWVtb3J5IGJ1Z3MgZWFybHkgaXMgY3J1Y2lhbC4KClRoZXJlZm9yZSwgSSYjMzk7bSBzZXR0aW5nIGBXb3J0aEZ1enppbmc9dHJ1ZWAuCgpCZWNhdXNlIHRoaXMgaXMgYSBnbG9iYWwgY2hhbmdlIGFmZmVjdGluZyBjb3JlIGZ1bmN0aW9ucyBsaWtlIGBrZnJlZWAgYW5kIGBrcmVhbGxvY2AgdGhhdCBhcmUgdXNlZCBldmVyeXdoZXJlLCBgRm9jdXNTeW1ib2xzYCB3aWxsIGJlIGVtcHR5LiBJIHdvbiYjMzk7dCBsaW1pdCB0aGUgZnV6emluZyB0byBzcGVjaWZpYyBtb2R1bGVzIGluIHRoaXMgY2FzZS4KClNvLCBgRW5hYmxlQ29uZmlnc2Agd2lsbCBiZSBgWyYjMzQ7U0xVQl9LVU5JVF9URVNUJiMzNDssICYjMzQ7U0xVQl9ERUJVRyYjMzQ7LCAmIzM0O0tVTklUJiMzNDtdYC4KCk15IHJlYXNvbmluZyBmb3IgdGhpcyBhc3Nlc3NtZW50IGlzIHRoYXQgdGhlIHBhdGNoIG1vZGlmaWVzIGBaRVJPX09SX05VTExfUFRSYCB0byBvbmx5IGNoZWNrIGZvciBleGFjdCAwIG9yIGBaRVJPX1NJWkVfUFRSYC4gVGhpcyBtZWFucyB0aGF0IHNtYWxsIGludmFsaWQgcG9pbnRlcnMgKGxpa2UgYEVSUl9QVFJgKSBwYXNzZWQgdG8gYGtmcmVlYCB3aWxsIG5vdyBsZWFkIHRvIGEgY3Jhc2ggaW5zdGVhZCBvZiBiZWluZyBzaWxlbnRseSBpZ25vcmVkLiBUaGlzIGlzIGEgY3J1Y2lhbCBjaGFuZ2UgdG8gdGhlIGNvcmUgYWxsb2NhdG9yIHRoYXQgY2FuIGV4cG9zZSBwb3RlbnRpYWwgYnVncyB0aHJvdWdob3V0IHRoZSBlbnRpcmUga2VybmVsLiBUaGUgaW5jbHVzaW9uIG9mIGEgS1VuaXQgdGVzdCBpcyBhbHNvIGFuIGV4Y2VsbGVudCBjb25maXJtYXRpb24gb2YgdGhpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMTQ6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NMVUJfS1VOSVRfVEVTVCYjMzQ7LAogICAgJiMzNDtTTFVCX0RFQlVHJiMzNDssCiAgICAmIzM0O0tVTklUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIFpFUk9fT1JfTlVMTF9QVFIgdG8gc3RyaWN0bHkgY2hlY2sgZm9yIDAgb3IgWkVST19TSVpFX1BUUiwgbWVhbmluZyBzbWFsbCBpbnZhbGlkIHBvaW50ZXJzIChsaWtlIEVSUl9QVFIpIHBhc3NlZCB0byBrZnJlZSB3aWxsIG5vdyBjYXVzZSBhIGNyYXNoIGluc3RlYWQgb2YgYmVpbmcgc2lsZW50bHkgaWdub3JlZC4gVGhpcyBpcyBhIGNvcmUgYWxsb2NhdG9yIGNoYW5nZSB0aGF0IGNhbiBleHBvc2UgYnVncyBhY3Jvc3MgdGhlIGtlcm5lbC4gQSBrdW5pdCB0ZXN0IGlzIGFsc28gYWRkZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NMVUJfS1VOSVRfVEVTVCYjMzQ7LAogICAgJiMzNDtTTFVCX0RFQlVHJiMzNDssCiAgICAmIzM0O0tVTklUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIFpFUk9fT1JfTlVMTF9QVFIgdG8gc3RyaWN0bHkgY2hlY2sgZm9yIDAgb3IgWkVST19TSVpFX1BUUiwgbWVhbmluZyBzbWFsbCBpbnZhbGlkIHBvaW50ZXJzIChsaWtlIEVSUl9QVFIpIHBhc3NlZCB0byBrZnJlZSB3aWxsIG5vdyBjYXVzZSBhIGNyYXNoIGluc3RlYWQgb2YgYmVpbmcgc2lsZW50bHkgaWdub3JlZC4gVGhpcyBpcyBhIGNvcmUgYWxsb2NhdG9yIGNoYW5nZSB0aGF0IGNhbiBleHBvc2UgYnVncyBhY3Jvc3MgdGhlIGtlcm5lbC4gQSBrdW5pdCB0ZXN0IGlzIGFsc28gYWRkZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDE0OjE4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMTQ6MTg8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGRlZmluaXRpb24gb2YgYFpFUk9fU0laRV9QVFJgIGFuZCBgWkVST19PUl9OVUxMX1BUUmAgaW4gdGhlIHNsYWIgYWxsb2NhdG9yIGhlYWRlcnMgdG8gZW5zdXJlIHByb3BlciBhbGlnbm1lbnQgYW5kIHN0cmljdGVyIHBvaW50ZXIgY2hlY2tpbmcuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGFsbG9jYXRpb25zLCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSwgb3IgbG9naWMgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIEFueSBidWdzIHJlc3VsdGluZyBmcm9tIHRoZXNlIGNoYW5nZXMgd291bGQgbWFuaWZlc3QgYXMgaW52YWxpZCBwb2ludGVyIGRlcmVmZXJlbmNlcyBvciBtZW1vcnkgY29ycnVwdGlvbiwgd2hpY2ggYXJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBzdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgZGVmYXVsdCBidWcgZGV0ZWN0b3JzLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzZSBvciBpbmZvLWxlYWtzIHRoYXQgd291bGQgbmVjZXNzaXRhdGUgS01TQU4uJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDc1MzdjNjEyOGQ1OWYxZjA1NWEwODk2ZGRjNWVjMGNlZjc1NGVkOTIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEF1ZyAxMSAxNDoxODowMCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc2xhYi5oIGIvaW5jbHVkZS9saW51eC9zbGFiLmgKaW5kZXggMzJjOWY4ZWQ3YWUyMC4uMDIzZTEwYWI3N2Y4ZCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9zbGFiLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9zbGFiLmgKQEAgLTI1OSwxNiAmIzQzOzI1OSwyMyBAQCBlbnVtIF9zbGFiX2ZsYWdfYml0cyB7CiAKIC8qCiAgKiBaRVJPX1NJWkVfUFRSIHdpbGwgYmUgcmV0dXJuZWQgZm9yIHplcm8gc2l6ZWQga21hbGxvYyByZXF1ZXN0cy4KJiM0MzsgKiBJdCBzYXRpc2ZpZXMgdGhlIGFsaWdubWVudCBwcm9taXNlZCBieSBfX2Fzc3VtZV9rbWFsbG9jX2FsaWdubWVudAomIzQzOyAqIGFuZCBrZWVwcyB0aGUgaGlzdG9yaWMgdmFsdWUgMTYgd2hlcmUgdGhhdCBpcyBhbHJlYWR5IGFsaWduZWQuCiAgKgogICogRGVyZWZlcmVuY2luZyBaRVJPX1NJWkVfUFRSIHdpbGwgbGVhZCB0byBhIGRpc3RpbmN0IGFjY2VzcyBmYXVsdC4KICAqCiAgKiBaRVJPX1NJWkVfUFRSIGNhbiBiZSBwYXNzZWQgdG8ga2ZyZWUgdGhvdWdoIGluIHRoZSBzYW1lIHdheSB0aGF0IE5VTEwgY2FuLgogICogQm90aCBtYWtlIGtmcmVlIGEgbm8tb3AuCiAgKi8KLSNkZWZpbmUgWkVST19TSVpFX1BUUiAoKHZvaWQgKikxNikKJiM0MzsjZGVmaW5lIFpFUk9fU0laRV9QVFIgKCh2b2lkICopKEFSQ0hfS01BTExPQ19NSU5BTElHTiAmZ3Q7IDE2ID8gXAomIzQzOwkJCQlBUkNIX0tNQUxMT0NfTUlOQUxJR04gOiAxNikpCiAKLSNkZWZpbmUgWkVST19PUl9OVUxMX1BUUih4KSAoKHVuc2lnbmVkIGxvbmcpKHgpICZsdDs9IFwKLQkJCQkodW5zaWduZWQgbG9uZylaRVJPX1NJWkVfUFRSKQomIzQzOyNkZWZpbmUgWkVST19PUl9OVUxMX1BUUih4KQkJCQkJCVwKJiM0MzsoewkJCQkJCQkJCVwKJiM0MzsJdW5zaWduZWQgbG9uZyBfX3pvbl9wdHIgPSAodW5zaWduZWQgbG9uZykoeCk7CQkJXAomIzQzOwlfX3pvbl9wdHIgPT0gMCB8fAkJCQkJCVwKJiM0MzsJX196b25fcHRyID09ICh1bnNpZ25lZCBsb25nKVpFUk9fU0laRV9QVFI7CQkJXAomIzQzO30pCiAKICNpbmNsdWRlICZsdDtsaW51eC9rYXNhbi5oJmd0OwogCkBAIC02MjIsNiAmIzQzOzYyOSwxMyBAQCBzdGF0aWMgaW5saW5lIGJvb2wga21lbV9kdW1wX29iaih2b2lkICpvYmplY3QpIHsgcmV0dXJuIGZhbHNlOyB9CiAjZGVmaW5lIEtNQUxMT0NfU0hJRlRfTE9XIGlsb2cyKEtNQUxMT0NfTUlOX1NJWkUpCiAjZW5kaWYKIAomIzQzOy8qCiYjNDM7ICogS2VlcCBaRVJPX1NJWkVfUFRSIGF0IG1vc3QgMTI4LCBpLmUuIGJlbG93IDB4MTAwOiBMSVNUX1BPSVNPTjEgaXMKJiM0MzsgKiAweDEwMCB3aGVuIFBPSVNPTl9QT0lOVEVSX0RFTFRBIGlzIDAsIGFuZCBubyBhcmNoaXRlY3R1cmUgY3VycmVudGx5CiYjNDM7ICogaGFzIGFuIEFSQ0hfS01BTExPQ19NSU5BTElHTiBhYm92ZSAxMjguCiYjNDM7ICovCiYjNDM7c3RhdGljX2Fzc2VydChBUkNIX0tNQUxMT0NfTUlOQUxJR04gJmx0OyAweDEwMCk7CiYjNDM7CiAvKgogICogU2V0dGluZyBBUkNIX1NMQUJfTUlOQUxJR04gaW4gYXJjaCBoZWFkZXJzIGFsbG93cyBhIGRpZmZlcmVudCBhbGlnbm1lbnQuCiAgKiBJbnRlbmRlZCBmb3IgYXJjaGVzIHRoYXQgZ2V0IG1pc2FsaWdubWVudCBmYXVsdHMgZXZlbiBmb3IgNjQgYml0IGludGVnZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXN0cy9zbHViX2t1bml0LmMgYi9saWIvdGVzdHMvc2x1Yl9rdW5pdC5jCmluZGV4IGZhNmQzMWRiY2ExNjYuLmEwMmZjNmI0MDFlM2UgMTAwNjQ0Ci0tLSBhL2xpYi90ZXN0cy9zbHViX2t1bml0LmMKJiM0MzsmIzQzOyYjNDM7IGIvbGliL3Rlc3RzL3NsdWJfa3VuaXQuYwpAQCAtMzgwLDYgJiM0MzszODAsNDggQEAgc3RhdGljIHZvaWQgdGVzdF9rbWFsbG9jX2tmcmVlX25vbG9jayhzdHJ1Y3Qga3VuaXQgKnRlc3QpCiB9CiAjZW5kaWYKIAomIzQzO3N0YXRpYyB2b2lkIHRlc3RfemVyb19zaXplX2FsbG9jKHN0cnVjdCBrdW5pdCAqdGVzdCkKJiM0Mzt7CiYjNDM7CXVuc2lnbmVkIGxvbmcgenNwID0gKHVuc2lnbmVkIGxvbmcpWkVST19TSVpFX1BUUjsKJiM0MzsJdm9pZCAqcCwgKnI7CiYjNDM7CiYjNDM7CXN0YXRpY19hc3NlcnQoKHVuc2lnbmVkIGxvbmcpWkVST19TSVpFX1BUUiAlIEFSQ0hfS01BTExPQ19NSU5BTElHTiA9PSAwKTsKJiM0MzsKJiM0MzsJcCA9IGttYWxsb2MoMCwgR0ZQX0tFUk5FTCk7CiYjNDM7CUtVTklUX0VYUEVDVF9QVFJfRVEodGVzdCwgcCwgWkVST19TSVpFX1BUUik7CiYjNDM7CUtVTklUX0VYUEVDVF9FUSh0ZXN0LCBrc2l6ZShwKSwgMCk7CiYjNDM7CWtmcmVlKHApOwomIzQzOwomIzQzOwlLVU5JVF9FWFBFQ1RfUFRSX0VRKHRlc3QsIGt6YWxsb2MoMCwgR0ZQX0tFUk5FTCksIFpFUk9fU0laRV9QVFIpOwomIzQzOwlLVU5JVF9FWFBFQ1RfUFRSX0VRKHRlc3QsIGttYWxsb2NfYXJyYXkoMCwgOCwgR0ZQX0tFUk5FTCksIFpFUk9fU0laRV9QVFIpOwomIzQzOwlLVU5JVF9FWFBFQ1RfUFRSX0VRKHRlc3QsIGtjYWxsb2MoNCwgMCwgR0ZQX0tFUk5FTCksIFpFUk9fU0laRV9QVFIpOwomIzQzOwomIzQzOwlwID0ga3ZtYWxsb2MoMCwgR0ZQX0tFUk5FTCk7CiYjNDM7CUtVTklUX0VYUEVDVF9QVFJfRVEodGVzdCwgcCwgWkVST19TSVpFX1BUUik7CiYjNDM7CWt2ZnJlZShwKTsKJiM0MzsKJiM0MzsJcCA9IGtyZWFsbG9jKE5VTEwsIDAsIEdGUF9LRVJORUwpOwomIzQzOwlLVU5JVF9FWFBFQ1RfUFRSX0VRKHRlc3QsIHAsIFpFUk9fU0laRV9QVFIpOwomIzQzOwlyID0ga3JlYWxsb2MocCwgNjQsIEdGUF9LRVJORUwpOwomIzQzOwlLVU5JVF9FWFBFQ1RfRkFMU0UodGVzdCwgWkVST19PUl9OVUxMX1BUUihyKSk7CiYjNDM7CXAgPSBrcmVhbGxvYyhyLCAwLCBHRlBfS0VSTkVMKTsKJiM0MzsJS1VOSVRfRVhQRUNUX1BUUl9FUSh0ZXN0LCBwLCBaRVJPX1NJWkVfUFRSKTsKJiM0MzsJa2ZyZWUocCk7CiYjNDM7CiYjNDM7CS8qIE9ubHkgTlVMTCBhbmQgdGhlIHplcm8tc2l6ZSBzZW50aW5lbCBtYXRjaC4gKi8KJiM0MzsJS1VOSVRfRVhQRUNUX1RSVUUodGVzdCwgWkVST19PUl9OVUxMX1BUUihOVUxMKSk7CiYjNDM7CUtVTklUX0VYUEVDVF9UUlVFKHRlc3QsIFpFUk9fT1JfTlVMTF9QVFIoWkVST19TSVpFX1BUUikpOwomIzQzOwlLVU5JVF9FWFBFQ1RfRkFMU0UodGVzdCwgWkVST19PUl9OVUxMX1BUUigodm9pZCAqKTEpKTsKJiM0MzsJS1VOSVRfRVhQRUNUX0ZBTFNFKHRlc3QsIFpFUk9fT1JfTlVMTF9QVFIoKHZvaWQgKikoenNwIC0gMSkpKTsKJiM0MzsJS1VOSVRfRVhQRUNUX0ZBTFNFKHRlc3QsIFpFUk9fT1JfTlVMTF9QVFIoKHZvaWQgKikoenNwICYjNDM7IDEpKSk7CiYjNDM7CUtVTklUX0VYUEVDVF9GQUxTRSh0ZXN0LCBaRVJPX09SX05VTExfUFRSKCh2b2lkICopKHpzcCAqIDIpKSk7CiYjNDM7CiYjNDM7CS8qIGZyZWVpbmcgdGhlIHNlbnRpbmVsIG11c3Qgc3RheSBhIG5vLW9wICovCiYjNDM7CWtmcmVlKFpFUk9fU0laRV9QVFIpOwomIzQzOwlrZnJlZV9zZW5zaXRpdmUoWkVST19TSVpFX1BUUik7CiYjNDM7CWt2ZnJlZShaRVJPX1NJWkVfUFRSKTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgaW50IHRlc3RfaW5pdChzdHJ1Y3Qga3VuaXQgKnRlc3QpCiB7CiAJc2xhYl9lcnJvcnMgPSAwOwpAQCAtNDA0LDYgJiM0Mzs0NDYsNyBAQCBzdGF0aWMgc3RydWN0IGt1bml0X2Nhc2UgdGVzdF9jYXNlc1tdID0gewogCUtVTklUX0NBU0UodGVzdF9rZnJlZV9yY3Vfd3FfZGVzdHJveSksCiAJS1VOSVRfQ0FTRSh0ZXN0X2xlYWtfZGVzdHJveSksCiAJS1VOSVRfQ0FTRSh0ZXN0X2tyZWFsbG9jX3JlZHpvbmVfemVyb2luZyksCiYjNDM7CUtVTklUX0NBU0UodGVzdF96ZXJvX3NpemVfYWxsb2MpLAogI2lmZGVmIENPTkZJR19QRVJGX0VWRU5UUwogCUtVTklUX0NBU0VfU0xPVyh0ZXN0X2ttYWxsb2Nfa2ZyZWVfbm9sb2NrKSwKICNlbmRpZgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMTQ6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzMxNAoJCQkJCQkJb3V0cHV0OiAxMzgKCQkJCQkJCXRob3VnaHRzOiAzNTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBTbGFiIEFsbG9jYXRvciBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgZG93biB0aGlzIHBhdGNoLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgaXQmIzM5O3MgdHdlYWtpbmcgc29tZSBmdW5kYW1lbnRhbCBkZWZpbml0aW9ucyBpbiBgbGludXgvc2xhYi5oYCwgc3BlY2lmaWNhbGx5IGBaRVJPX1NJWkVfUFRSYCBhbmQgYFpFUk9fT1JfTlVMTF9QVFJgLiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIHRyeWluZyB0byB0aWdodGVuIHVwIHRoZSBhbGlnbm1lbnQgYW5kIHBvaW50ZXIgY29tcGFyaXNvbiB3aXRoaW4gdGhlIHNsYWIgYWxsb2NhdG9yIGNvbnRleHQuCgpUaGUgbW9zdCBub3RhYmxlIGNoYW5nZSBpcyBob3cgYFpFUk9fU0laRV9QVFJgIGlzIGJlaW5nIGhhbmRsZWQuIFByZXZpb3VzbHksIGl0IHdhcyBhIGhhcmRjb2RlZCBhZGRyZXNzLiBOb3csIGl0JiMzOTtzIGR5bmFtaWNhbGx5IHNldCB0byBlaXRoZXIgYEFSQ0hfS01BTExPQ19NSU5BTElHTmAgKGlmIHRoYXQmIzM5O3MgbGFyZ2VyIHRoYW4gMTYpIG9yIDE2LCB3aGljaCBzdWdnZXN0cyB0aGV5JiMzOTtyZSB0cnlpbmcgdG8gYWxpZ24gaXQgd2l0aCB0aGUga2VybmVsJiMzOTtzIG1pbmltdW0gYWxsb2NhdGlvbiBhbGlnbm1lbnQgcmVxdWlyZW1lbnRzLiBUaGUgYWRkaXRpb24gb2YgdGhlIHN0YXRpYyBhc3NlcnQgYEFSQ0hfS01BTExPQ19NSU5BTElHTiAmbHQ7IDB4MTAwYCBpcyBnb29kLCBhIHNhbml0eSBjaGVjayB0byBrZWVwIHRoaW5ncyB3aXRoaW4gcmVhc29uYWJsZSBib3VuZHMsIEkmIzM5O2Qgc2F5LgoKVGhlIGBaRVJPX09SX05VTExfUFRSYCBjaGFuZ2UgbG9va3MgbGlrZSBhIGNvcnJlY3Rpb24uIEluc3RlYWQgb2YgY2hlY2tpbmcgaWYgYSBwb2ludGVyIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byBgWkVST19TSVpFX1BUUmAsIGl0JiMzOTtzIG5vdyBleHBsaWNpdGx5IGNoZWNraW5nIGZvciAwIChOVUxMKSBvciAqZXhhY3RseSogYFpFUk9fU0laRV9QVFJgLiBUaGlzIGlzIGEgZGVmaW5pdGUgaW1wcm92ZW1lbnQgaW4gdGVybXMgb2YgcG9pbnRlciBjb21wYXJpc29uIGFjY3VyYWN5LiBUaGUgYWRkaXRpb24gb2YgYSBLVW5pdCB0ZXN0IGZvciB6ZXJvLXNpemUgYWxsb2NhdGlvbnMgaXMgYWxzbyBhIHBsdXMgZm9yIGVuc3VyaW5nIHRoZSBmaXggZnVuY3Rpb25zIGFzIGludGVuZGVkLgoKTm93LCB0aGUgaW1wb3J0YW50IHF1ZXN0aW9uIGlzOiBkb2VzIHRoaXMgaW50cm9kdWNlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcz8gTm8sIGZyb20gbXkgYXNzZXNzbWVudCwgaXQgZG9lc24mIzM5O3QuIFRoaXMgaXMgYWJvdXQgZW5zdXJpbmcgcHJvcGVyIGFsaWdubWVudCBhbmQgbW9yZSBhY2N1cmF0ZSBwb2ludGVyIGNvbXBhcmlzb25zLCBub3QgYWJvdXQgaW5pdGlhbGl6aW5nIG1lbW9yeS4gVGhlIHBhdGNoIG1lcmVseSBjaGFuZ2VzIHRoZSB2YWx1ZSBvZiBgWkVST19TSVpFX1BUUmAgdG8gYWNjb21tb2RhdGUgdGhlIGFsaWdubWVudCwgYW5kIHRoZSBjb21wYXJpc29uIGlzIHNoYXJwZW5lZC4gSXQgZG9lc24mIzM5O3Qgc2VlbSB0byB0b3VjaCBhbnkgbWVtb3J5IGFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gcGF0aHMgaW4gYSB3YXkgdGhhdCB3b3VsZCBpbnRyb2R1Y2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHZ1bG5lcmFiaWxpdGllcy4KClRoZXJlZm9yZSwgYE5lZWRzS01TQU5gIHNob3VsZCBkZWZpbml0ZWx5IGJlIGZhbHNlIGhlcmUuIEtBU0FOIGFuZCBvdGhlciB0b29scyBtaWdodCBjYXRjaCBpc3N1ZXMgaWYgdGhpcyBjaGFuZ2UgYnJlYWtzIHNvbWV0aGluZyBpbiB0aGUgcG9pbnRlciBjaGVja2luZyBidXQgS01TQU4gaXMgYWxsIGFib3V0IGlkZW50aWZ5aW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGFjY2Vzcywgd2hpY2ggaXMgbm90IGFuIGlzc3VlIGhlcmUuIFRoaXMgaXMgYSB0YXJnZXRlZCBidWcgZml4L2ltcHJvdmVtZW50IGZvciBwb2ludGVyIGhhbmRsaW5nIGFuZCBhbGlnbm1lbnQgd2l0aGluIHRoZSBzbGFiIGFsbG9jYXRvciwgbm90IGEgS01TQU4tcmVsZXZhbnQgY2hhbmdlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAxNDoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgZGVmaW5pdGlvbiBvZiBgWkVST19TSVpFX1BUUmAgYW5kIGBaRVJPX09SX05VTExfUFRSYCBpbiB0aGUgc2xhYiBhbGxvY2F0b3IgaGVhZGVycyB0byBlbnN1cmUgcHJvcGVyIGFsaWdubWVudCBhbmQgc3RyaWN0ZXIgcG9pbnRlciBjaGVja2luZy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgYWxsb2NhdGlvbnMsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlLCBvciBsb2dpYyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gQW55IGJ1Z3MgcmVzdWx0aW5nIGZyb20gdGhlc2UgY2hhbmdlcyB3b3VsZCBtYW5pZmVzdCBhcyBpbnZhbGlkIHBvaW50ZXIgZGVyZWZlcmVuY2VzIG9yIG1lbW9yeSBjb3JydXB0aW9uLCB3aGljaCBhcmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IHN0YW5kYXJkIEtBU0FOIGFuZCBvdGhlciBkZWZhdWx0IGJ1ZyBkZXRlY3RvcnMuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNlIG9yIGluZm8tbGVha3MgdGhhdCB3b3VsZCBuZWNlc3NpdGF0ZSBLTVNBTi4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBkZWZpbml0aW9uIG9mIGBaRVJPX1NJWkVfUFRSYCBhbmQgYFpFUk9fT1JfTlVMTF9QVFJgIGluIHRoZSBzbGFiIGFsbG9jYXRvciBoZWFkZXJzIHRvIGVuc3VyZSBwcm9wZXIgYWxpZ25tZW50IGFuZCBzdHJpY3RlciBwb2ludGVyIGNoZWNraW5nLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBhbGxvY2F0aW9ucywgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UsIG9yIGxvZ2ljIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBBbnkgYnVncyByZXN1bHRpbmcgZnJvbSB0aGVzZSBjaGFuZ2VzIHdvdWxkIG1hbmlmZXN0IGFzIGludmFsaWQgcG9pbnRlciBkZXJlZmVyZW5jZXMgb3IgbWVtb3J5IGNvcnJ1cHRpb24sIHdoaWNoIGFyZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgc3RhbmRhcmQgS0FTQU4gYW5kIG90aGVyIGRlZmF1bHQgYnVnIGRldGVjdG9ycy4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2Ugb3IgaW5mby1sZWFrcyB0aGF0IHdvdWxkIG5lY2Vzc2l0YXRlIEtNU0FOLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0xMVQxNDoxODowMS4xMzMyNjI0OFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NjIxOTIxNDY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNMVUJfS1VOSVRfVEVTVFwiLFxuICAgIFwiU0xVQl9ERUJVR1wiLFxuICAgIFwiS1VOSVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgZGVmaW5pdGlvbiBvZiBgWkVST19TSVpFX1BUUmAgYW5kIGBaRVJPX09SX05VTExfUFRSYCBpbiB0aGUgc2xhYiBhbGxvY2F0b3IgaGVhZGVycyB0byBlbnN1cmUgcHJvcGVyIGFsaWdubWVudCBhbmQgc3RyaWN0ZXIgcG9pbnRlciBjaGVja2luZy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgYWxsb2NhdGlvbnMsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlLCBvciBsb2dpYyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gQW55IGJ1Z3MgcmVzdWx0aW5nIGZyb20gdGhlc2UgY2hhbmdlcyB3b3VsZCBtYW5pZmVzdCBhcyBpbnZhbGlkIHBvaW50ZXIgZGVyZWZlcmVuY2VzIG9yIG1lbW9yeSBjb3JydXB0aW9uLCB3aGljaCBhcmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IHN0YW5kYXJkIEtBU0FOIGFuZCBvdGhlciBkZWZhdWx0IGJ1ZyBkZXRlY3RvcnMuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNlIG9yIGluZm8tbGVha3MgdGhhdCB3b3VsZCBuZWNlc3NpdGF0ZSBLTVNBTi5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBaRVJPX09SX05VTExfUFRSIHRvIHN0cmljdGx5IGNoZWNrIGZvciAwIG9yIFpFUk9fU0laRV9QVFIsIG1lYW5pbmcgc21hbGwgaW52YWxpZCBwb2ludGVycyAobGlrZSBFUlJfUFRSKSBwYXNzZWQgdG8ga2ZyZWUgd2lsbCBub3cgY2F1c2UgYSBjcmFzaCBpbnN0ZWFkIG9mIGJlaW5nIHNpbGVudGx5IGlnbm9yZWQuIFRoaXMgaXMgYSBjb3JlIGFsbG9jYXRvciBjaGFuZ2UgdGhhdCBjYW4gZXhwb3NlIGJ1Z3MgYWNyb3NzIHRoZSBrZXJuZWwuIEEga3VuaXQgdGVzdCBpcyBhbHNvIGFkZGVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQxNDoxODowMS4xMzMyNzA1WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTg3MDk4NzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA3NTM3YzYxMjhkNTlmMWYwNTVhMDg5NmRkYzVlYzBjZWY3NTRlZDkyXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgQXVnIDExIDE0OjE4OjAwIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc2xhYi5oIGIvaW5jbHVkZS9saW51eC9zbGFiLmhcXG5pbmRleCAzMmM5ZjhlZDdhZTIwLi4wMjNlMTBhYjc3ZjhkIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgvc2xhYi5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9zbGFiLmhcXG5AQCAtMjU5LDE2ICsyNTksMjMgQEAgZW51bSBfc2xhYl9mbGFnX2JpdHMge1xcbiBcXG4gLypcXG4gICogWkVST19TSVpFX1BUUiB3aWxsIGJlIHJldHVybmVkIGZvciB6ZXJvIHNpemVkIGttYWxsb2MgcmVxdWVzdHMuXFxuKyAqIEl0IHNhdGlzZmllcyB0aGUgYWxpZ25tZW50IHByb21pc2VkIGJ5IF9fYXNzdW1lX2ttYWxsb2NfYWxpZ25tZW50XFxuKyAqIGFuZCBrZWVwcyB0aGUgaGlzdG9yaWMgdmFsdWUgMTYgd2hlcmUgdGhhdCBpcyBhbHJlYWR5IGFsaWduZWQuXFxuICAqXFxuICAqIERlcmVmZXJlbmNpbmcgWkVST19TSVpFX1BUUiB3aWxsIGxlYWQgdG8gYSBkaXN0aW5jdCBhY2Nlc3MgZmF1bHQuXFxuICAqXFxuICAqIFpFUk9fU0laRV9QVFIgY2FuIGJlIHBhc3NlZCB0byBrZnJlZSB0aG91Z2ggaW4gdGhlIHNhbWUgd2F5IHRoYXQgTlVMTCBjYW4uXFxuICAqIEJvdGggbWFrZSBrZnJlZSBhIG5vLW9wLlxcbiAgKi9cXG4tI2RlZmluZSBaRVJPX1NJWkVfUFRSICgodm9pZCAqKTE2KVxcbisjZGVmaW5lIFpFUk9fU0laRV9QVFIgKCh2b2lkICopKEFSQ0hfS01BTExPQ19NSU5BTElHTiBcXHUwMDNlIDE2ID8gXFxcXFxcbitcXHRcXHRcXHRcXHRBUkNIX0tNQUxMT0NfTUlOQUxJR04gOiAxNikpXFxuIFxcbi0jZGVmaW5lIFpFUk9fT1JfTlVMTF9QVFIoeCkgKCh1bnNpZ25lZCBsb25nKSh4KSBcXHUwMDNjPSBcXFxcXFxuLVxcdFxcdFxcdFxcdCh1bnNpZ25lZCBsb25nKVpFUk9fU0laRV9QVFIpXFxuKyNkZWZpbmUgWkVST19PUl9OVUxMX1BUUih4KVxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rKHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdHVuc2lnbmVkIGxvbmcgX196b25fcHRyID0gKHVuc2lnbmVkIGxvbmcpKHgpO1xcdFxcdFxcdFxcXFxcXG4rXFx0X196b25fcHRyID09IDAgfHxcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdF9fem9uX3B0ciA9PSAodW5zaWduZWQgbG9uZylaRVJPX1NJWkVfUFRSO1xcdFxcdFxcdFxcXFxcXG4rfSlcXG4gXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9rYXNhbi5oXFx1MDAzZVxcbiBcXG5AQCAtNjIyLDYgKzYyOSwxMyBAQCBzdGF0aWMgaW5saW5lIGJvb2wga21lbV9kdW1wX29iaih2b2lkICpvYmplY3QpIHsgcmV0dXJuIGZhbHNlOyB9XFxuICNkZWZpbmUgS01BTExPQ19TSElGVF9MT1cgaWxvZzIoS01BTExPQ19NSU5fU0laRSlcXG4gI2VuZGlmXFxuIFxcbisvKlxcbisgKiBLZWVwIFpFUk9fU0laRV9QVFIgYXQgbW9zdCAxMjgsIGkuZS4gYmVsb3cgMHgxMDA6IExJU1RfUE9JU09OMSBpc1xcbisgKiAweDEwMCB3aGVuIFBPSVNPTl9QT0lOVEVSX0RFTFRBIGlzIDAsIGFuZCBubyBhcmNoaXRlY3R1cmUgY3VycmVudGx5XFxuKyAqIGhhcyBhbiBBUkNIX0tNQUxMT0NfTUlOQUxJR04gYWJvdmUgMTI4LlxcbisgKi9cXG4rc3RhdGljX2Fzc2VydChBUkNIX0tNQUxMT0NfTUlOQUxJR04gXFx1MDAzYyAweDEwMCk7XFxuK1xcbiAvKlxcbiAgKiBTZXR0aW5nIEFSQ0hfU0xBQl9NSU5BTElHTiBpbiBhcmNoIGhlYWRlcnMgYWxsb3dzIGEgZGlmZmVyZW50IGFsaWdubWVudC5cXG4gICogSW50ZW5kZWQgZm9yIGFyY2hlcyB0aGF0IGdldCBtaXNhbGlnbm1lbnQgZmF1bHRzIGV2ZW4gZm9yIDY0IGJpdCBpbnRlZ2VyXFxuZGlmZiAtLWdpdCBhL2xpYi90ZXN0cy9zbHViX2t1bml0LmMgYi9saWIvdGVzdHMvc2x1Yl9rdW5pdC5jXFxuaW5kZXggZmE2ZDMxZGJjYTE2Ni4uYTAyZmM2YjQwMWUzZSAxMDA2NDRcXG4tLS0gYS9saWIvdGVzdHMvc2x1Yl9rdW5pdC5jXFxuKysrIGIvbGliL3Rlc3RzL3NsdWJfa3VuaXQuY1xcbkBAIC0zODAsNiArMzgwLDQ4IEBAIHN0YXRpYyB2b2lkIHRlc3Rfa21hbGxvY19rZnJlZV9ub2xvY2soc3RydWN0IGt1bml0ICp0ZXN0KVxcbiB9XFxuICNlbmRpZlxcbiBcXG4rc3RhdGljIHZvaWQgdGVzdF96ZXJvX3NpemVfYWxsb2Moc3RydWN0IGt1bml0ICp0ZXN0KVxcbit7XFxuK1xcdHVuc2lnbmVkIGxvbmcgenNwID0gKHVuc2lnbmVkIGxvbmcpWkVST19TSVpFX1BUUjtcXG4rXFx0dm9pZCAqcCwgKnI7XFxuK1xcbitcXHRzdGF0aWNfYXNzZXJ0KCh1bnNpZ25lZCBsb25nKVpFUk9fU0laRV9QVFIgJSBBUkNIX0tNQUxMT0NfTUlOQUxJR04gPT0gMCk7XFxuK1xcbitcXHRwID0ga21hbGxvYygwLCBHRlBfS0VSTkVMKTtcXG4rXFx0S1VOSVRfRVhQRUNUX1BUUl9FUSh0ZXN0LCBwLCBaRVJPX1NJWkVfUFRSKTtcXG4rXFx0S1VOSVRfRVhQRUNUX0VRKHRlc3QsIGtzaXplKHApLCAwKTtcXG4rXFx0a2ZyZWUocCk7XFxuK1xcbitcXHRLVU5JVF9FWFBFQ1RfUFRSX0VRKHRlc3QsIGt6YWxsb2MoMCwgR0ZQX0tFUk5FTCksIFpFUk9fU0laRV9QVFIpO1xcbitcXHRLVU5JVF9FWFBFQ1RfUFRSX0VRKHRlc3QsIGttYWxsb2NfYXJyYXkoMCwgOCwgR0ZQX0tFUk5FTCksIFpFUk9fU0laRV9QVFIpO1xcbitcXHRLVU5JVF9FWFBFQ1RfUFRSX0VRKHRlc3QsIGtjYWxsb2MoNCwgMCwgR0ZQX0tFUk5FTCksIFpFUk9fU0laRV9QVFIpO1xcbitcXG4rXFx0cCA9IGt2bWFsbG9jKDAsIEdGUF9LRVJORUwpO1xcbitcXHRLVU5JVF9FWFBFQ1RfUFRSX0VRKHRlc3QsIHAsIFpFUk9fU0laRV9QVFIpO1xcbitcXHRrdmZyZWUocCk7XFxuK1xcbitcXHRwID0ga3JlYWxsb2MoTlVMTCwgMCwgR0ZQX0tFUk5FTCk7XFxuK1xcdEtVTklUX0VYUEVDVF9QVFJfRVEodGVzdCwgcCwgWkVST19TSVpFX1BUUik7XFxuK1xcdHIgPSBrcmVhbGxvYyhwLCA2NCwgR0ZQX0tFUk5FTCk7XFxuK1xcdEtVTklUX0VYUEVDVF9GQUxTRSh0ZXN0LCBaRVJPX09SX05VTExfUFRSKHIpKTtcXG4rXFx0cCA9IGtyZWFsbG9jKHIsIDAsIEdGUF9LRVJORUwpO1xcbitcXHRLVU5JVF9FWFBFQ1RfUFRSX0VRKHRlc3QsIHAsIFpFUk9fU0laRV9QVFIpO1xcbitcXHRrZnJlZShwKTtcXG4rXFxuK1xcdC8qIE9ubHkgTlVMTCBhbmQgdGhlIHplcm8tc2l6ZSBzZW50aW5lbCBtYXRjaC4gKi9cXG4rXFx0S1VOSVRfRVhQRUNUX1RSVUUodGVzdCwgWkVST19PUl9OVUxMX1BUUihOVUxMKSk7XFxuK1xcdEtVTklUX0VYUEVDVF9UUlVFKHRlc3QsIFpFUk9fT1JfTlVMTF9QVFIoWkVST19TSVpFX1BUUikpO1xcbitcXHRLVU5JVF9FWFBFQ1RfRkFMU0UodGVzdCwgWkVST19PUl9OVUxMX1BUUigodm9pZCAqKTEpKTtcXG4rXFx0S1VOSVRfRVhQRUNUX0ZBTFNFKHRlc3QsIFpFUk9fT1JfTlVMTF9QVFIoKHZvaWQgKikoenNwIC0gMSkpKTtcXG4rXFx0S1VOSVRfRVhQRUNUX0ZBTFNFKHRlc3QsIFpFUk9fT1JfTlVMTF9QVFIoKHZvaWQgKikoenNwICsgMSkpKTtcXG4rXFx0S1VOSVRfRVhQRUNUX0ZBTFNFKHRlc3QsIFpFUk9fT1JfTlVMTF9QVFIoKHZvaWQgKikoenNwICogMikpKTtcXG4rXFxuK1xcdC8qIGZyZWVpbmcgdGhlIHNlbnRpbmVsIG11c3Qgc3RheSBhIG5vLW9wICovXFxuK1xcdGtmcmVlKFpFUk9fU0laRV9QVFIpO1xcbitcXHRrZnJlZV9zZW5zaXRpdmUoWkVST19TSVpFX1BUUik7XFxuK1xcdGt2ZnJlZShaRVJPX1NJWkVfUFRSKTtcXG4rfVxcbitcXG4gc3RhdGljIGludCB0ZXN0X2luaXQoc3RydWN0IGt1bml0ICp0ZXN0KVxcbiB7XFxuIFxcdHNsYWJfZXJyb3JzID0gMDtcXG5AQCAtNDA0LDYgKzQ0Niw3IEBAIHN0YXRpYyBzdHJ1Y3Qga3VuaXRfY2FzZSB0ZXN0X2Nhc2VzW10gPSB7XFxuIFxcdEtVTklUX0NBU0UodGVzdF9rZnJlZV9yY3Vfd3FfZGVzdHJveSksXFxuIFxcdEtVTklUX0NBU0UodGVzdF9sZWFrX2Rlc3Ryb3kpLFxcbiBcXHRLVU5JVF9DQVNFKHRlc3Rfa3JlYWxsb2NfcmVkem9uZV96ZXJvaW5nKSxcXG4rXFx0S1VOSVRfQ0FTRSh0ZXN0X3plcm9fc2l6ZV9hbGxvYyksXFxuICNpZmRlZiBDT05GSUdfUEVSRl9FVkVOVFNcXG4gXFx0S1VOSVRfQ0FTRV9TTE9XKHRlc3Rfa21hbGxvY19rZnJlZV9ub2xvY2spLFxcbiAjZW5kaWZcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMTQ6MTg6MDEuNjMzMTE2OTQ1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MzYwMzgwNTgwNTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiU0xVQl9LVU5JVF9URVNUXCIsXG4gICAgXCJTTFVCX0RFQlVHXCIsXG4gICAgXCJLVU5JVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBaRVJPX09SX05VTExfUFRSIHRvIHN0cmljdGx5IGNoZWNrIGZvciAwIG9yIFpFUk9fU0laRV9QVFIsIG1lYW5pbmcgc21hbGwgaW52YWxpZCBwb2ludGVycyAobGlrZSBFUlJfUFRSKSBwYXNzZWQgdG8ga2ZyZWUgd2lsbCBub3cgY2F1c2UgYSBjcmFzaCBpbnN0ZWFkIG9mIGJlaW5nIHNpbGVudGx5IGlnbm9yZWQuIFRoaXMgaXMgYSBjb3JlIGFsbG9jYXRvciBjaGFuZ2UgdGhhdCBjYW4gZXhwb3NlIGJ1Z3MgYWNyb3NzIHRoZSBrZXJuZWwuIEEga3VuaXQgdGVzdCBpcyBhbHNvIGFkZGVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA3NTM3YzYxMjhkNTlmMWYwNTVhMDg5NmRkYzVlYzBjZWY3NTRlZDkyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgMTEgMTQ6MTg6MDAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3NsYWIuaCBiL2luY2x1ZGUvbGludXgvc2xhYi5oXG5pbmRleCAzMmM5ZjhlZDdhZTIwLi4wMjNlMTBhYjc3ZjhkIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9zbGFiLmhcbisrKyBiL2luY2x1ZGUvbGludXgvc2xhYi5oXG5AQCAtMjU5LDE2ICsyNTksMjMgQEAgZW51bSBfc2xhYl9mbGFnX2JpdHMge1xuIFxuIC8qXG4gICogWkVST19TSVpFX1BUUiB3aWxsIGJlIHJldHVybmVkIGZvciB6ZXJvIHNpemVkIGttYWxsb2MgcmVxdWVzdHMuXG4rICogSXQgc2F0aXNmaWVzIHRoZSBhbGlnbm1lbnQgcHJvbWlzZWQgYnkgX19hc3N1bWVfa21hbGxvY19hbGlnbm1lbnRcbisgKiBhbmQga2VlcHMgdGhlIGhpc3RvcmljIHZhbHVlIDE2IHdoZXJlIHRoYXQgaXMgYWxyZWFkeSBhbGlnbmVkLlxuICAqXG4gICogRGVyZWZlcmVuY2luZyBaRVJPX1NJWkVfUFRSIHdpbGwgbGVhZCB0byBhIGRpc3RpbmN0IGFjY2VzcyBmYXVsdC5cbiAgKlxuICAqIFpFUk9fU0laRV9QVFIgY2FuIGJlIHBhc3NlZCB0byBrZnJlZSB0aG91Z2ggaW4gdGhlIHNhbWUgd2F5IHRoYXQgTlVMTCBjYW4uXG4gICogQm90aCBtYWtlIGtmcmVlIGEgbm8tb3AuXG4gICovXG4tI2RlZmluZSBaRVJPX1NJWkVfUFRSICgodm9pZCAqKTE2KVxuKyNkZWZpbmUgWkVST19TSVpFX1BUUiAoKHZvaWQgKikoQVJDSF9LTUFMTE9DX01JTkFMSUdOIFx1MDAzZSAxNiA/IFxcXG4rXHRcdFx0XHRBUkNIX0tNQUxMT0NfTUlOQUxJR04gOiAxNikpXG4gXG4tI2RlZmluZSBaRVJPX09SX05VTExfUFRSKHgpICgodW5zaWduZWQgbG9uZykoeCkgXHUwMDNjPSBcXFxuLVx0XHRcdFx0KHVuc2lnbmVkIGxvbmcpWkVST19TSVpFX1BUUilcbisjZGVmaW5lIFpFUk9fT1JfTlVMTF9QVFIoeClcdFx0XHRcdFx0XHRcXFxuKyh7XHRcdFx0XHRcdFx0XHRcdFx0XFxcbitcdHVuc2lnbmVkIGxvbmcgX196b25fcHRyID0gKHVuc2lnbmVkIGxvbmcpKHgpO1x0XHRcdFxcXG4rXHRfX3pvbl9wdHIgPT0gMCB8fFx0XHRcdFx0XHRcdFxcXG4rXHRfX3pvbl9wdHIgPT0gKHVuc2lnbmVkIGxvbmcpWkVST19TSVpFX1BUUjtcdFx0XHRcXFxuK30pXG4gXG4gI2luY2x1ZGUgXHUwMDNjbGludXgva2FzYW4uaFx1MDAzZVxuIFxuQEAgLTYyMiw2ICs2MjksMTMgQEAgc3RhdGljIGlubGluZSBib29sIGttZW1fZHVtcF9vYmoodm9pZCAqb2JqZWN0KSB7IHJldHVybiBmYWxzZTsgfVxuICNkZWZpbmUgS01BTExPQ19TSElGVF9MT1cgaWxvZzIoS01BTExPQ19NSU5fU0laRSlcbiAjZW5kaWZcbiBcbisvKlxuKyAqIEtlZXAgWkVST19TSVpFX1BUUiBhdCBtb3N0IDEyOCwgaS5lLiBiZWxvdyAweDEwMDogTElTVF9QT0lTT04xIGlzXG4rICogMHgxMDAgd2hlbiBQT0lTT05fUE9JTlRFUl9ERUxUQSBpcyAwLCBhbmQgbm8gYXJjaGl0ZWN0dXJlIGN1cnJlbnRseVxuKyAqIGhhcyBhbiBBUkNIX0tNQUxMT0NfTUlOQUxJR04gYWJvdmUgMTI4LlxuKyAqL1xuK3N0YXRpY19hc3NlcnQoQVJDSF9LTUFMTE9DX01JTkFMSUdOIFx1MDAzYyAweDEwMCk7XG4rXG4gLypcbiAgKiBTZXR0aW5nIEFSQ0hfU0xBQl9NSU5BTElHTiBpbiBhcmNoIGhlYWRlcnMgYWxsb3dzIGEgZGlmZmVyZW50IGFsaWdubWVudC5cbiAgKiBJbnRlbmRlZCBmb3IgYXJjaGVzIHRoYXQgZ2V0IG1pc2FsaWdubWVudCBmYXVsdHMgZXZlbiBmb3IgNjQgYml0IGludGVnZXJcbmRpZmYgLS1naXQgYS9saWIvdGVzdHMvc2x1Yl9rdW5pdC5jIGIvbGliL3Rlc3RzL3NsdWJfa3VuaXQuY1xuaW5kZXggZmE2ZDMxZGJjYTE2Ni4uYTAyZmM2YjQwMWUzZSAxMDA2NDRcbi0tLSBhL2xpYi90ZXN0cy9zbHViX2t1bml0LmNcbisrKyBiL2xpYi90ZXN0cy9zbHViX2t1bml0LmNcbkBAIC0zODAsNiArMzgwLDQ4IEBAIHN0YXRpYyB2b2lkIHRlc3Rfa21hbGxvY19rZnJlZV9ub2xvY2soc3RydWN0IGt1bml0ICp0ZXN0KVxuIH1cbiAjZW5kaWZcbiBcbitzdGF0aWMgdm9pZCB0ZXN0X3plcm9fc2l6ZV9hbGxvYyhzdHJ1Y3Qga3VuaXQgKnRlc3QpXG4re1xuK1x0dW5zaWduZWQgbG9uZyB6c3AgPSAodW5zaWduZWQgbG9uZylaRVJPX1NJWkVfUFRSO1xuK1x0dm9pZCAqcCwgKnI7XG4rXG4rXHRzdGF0aWNfYXNzZXJ0KCh1bnNpZ25lZCBsb25nKVpFUk9fU0laRV9QVFIgJSBBUkNIX0tNQUxMT0NfTUlOQUxJR04gPT0gMCk7XG4rXG4rXHRwID0ga21hbGxvYygwLCBHRlBfS0VSTkVMKTtcbitcdEtVTklUX0VYUEVDVF9QVFJfRVEodGVzdCwgcCwgWkVST19TSVpFX1BUUik7XG4rXHRLVU5JVF9FWFBFQ1RfRVEodGVzdCwga3NpemUocCksIDApO1xuK1x0a2ZyZWUocCk7XG4rXG4rXHRLVU5JVF9FWFBFQ1RfUFRSX0VRKHRlc3QsIGt6YWxsb2MoMCwgR0ZQX0tFUk5FTCksIFpFUk9fU0laRV9QVFIpO1xuK1x0S1VOSVRfRVhQRUNUX1BUUl9FUSh0ZXN0LCBrbWFsbG9jX2FycmF5KDAsIDgsIEdGUF9LRVJORUwpLCBaRVJPX1NJWkVfUFRSKTtcbitcdEtVTklUX0VYUEVDVF9QVFJfRVEodGVzdCwga2NhbGxvYyg0LCAwLCBHRlBfS0VSTkVMKSwgWkVST19TSVpFX1BUUik7XG4rXG4rXHRwID0ga3ZtYWxsb2MoMCwgR0ZQX0tFUk5FTCk7XG4rXHRLVU5JVF9FWFBFQ1RfUFRSX0VRKHRlc3QsIHAsIFpFUk9fU0laRV9QVFIpO1xuK1x0a3ZmcmVlKHApO1xuK1xuK1x0cCA9IGtyZWFsbG9jKE5VTEwsIDAsIEdGUF9LRVJORUwpO1xuK1x0S1VOSVRfRVhQRUNUX1BUUl9FUSh0ZXN0LCBwLCBaRVJPX1NJWkVfUFRSKTtcbitcdHIgPSBrcmVhbGxvYyhwLCA2NCwgR0ZQX0tFUk5FTCk7XG4rXHRLVU5JVF9FWFBFQ1RfRkFMU0UodGVzdCwgWkVST19PUl9OVUxMX1BUUihyKSk7XG4rXHRwID0ga3JlYWxsb2MociwgMCwgR0ZQX0tFUk5FTCk7XG4rXHRLVU5JVF9FWFBFQ1RfUFRSX0VRKHRlc3QsIHAsIFpFUk9fU0laRV9QVFIpO1xuK1x0a2ZyZWUocCk7XG4rXG4rXHQvKiBPbmx5IE5VTEwgYW5kIHRoZSB6ZXJvLXNpemUgc2VudGluZWwgbWF0Y2guICovXG4rXHRLVU5JVF9FWFBFQ1RfVFJVRSh0ZXN0LCBaRVJPX09SX05VTExfUFRSKE5VTEwpKTtcbitcdEtVTklUX0VYUEVDVF9UUlVFKHRlc3QsIFpFUk9fT1JfTlVMTF9QVFIoWkVST19TSVpFX1BUUikpO1xuK1x0S1VOSVRfRVhQRUNUX0ZBTFNFKHRlc3QsIFpFUk9fT1JfTlVMTF9QVFIoKHZvaWQgKikxKSk7XG4rXHRLVU5JVF9FWFBFQ1RfRkFMU0UodGVzdCwgWkVST19PUl9OVUxMX1BUUigodm9pZCAqKSh6c3AgLSAxKSkpO1xuK1x0S1VOSVRfRVhQRUNUX0ZBTFNFKHRlc3QsIFpFUk9fT1JfTlVMTF9QVFIoKHZvaWQgKikoenNwICsgMSkpKTtcbitcdEtVTklUX0VYUEVDVF9GQUxTRSh0ZXN0LCBaRVJPX09SX05VTExfUFRSKCh2b2lkICopKHpzcCAqIDIpKSk7XG4rXG4rXHQvKiBmcmVlaW5nIHRoZSBzZW50aW5lbCBtdXN0IHN0YXkgYSBuby1vcCAqL1xuK1x0a2ZyZWUoWkVST19TSVpFX1BUUik7XG4rXHRrZnJlZV9zZW5zaXRpdmUoWkVST19TSVpFX1BUUik7XG4rXHRrdmZyZWUoWkVST19TSVpFX1BUUik7XG4rfVxuK1xuIHN0YXRpYyBpbnQgdGVzdF9pbml0KHN0cnVjdCBrdW5pdCAqdGVzdClcbiB7XG4gXHRzbGFiX2Vycm9ycyA9IDA7XG5AQCAtNDA0LDYgKzQ0Niw3IEBAIHN0YXRpYyBzdHJ1Y3Qga3VuaXRfY2FzZSB0ZXN0X2Nhc2VzW10gPSB7XG4gXHRLVU5JVF9DQVNFKHRlc3Rfa2ZyZWVfcmN1X3dxX2Rlc3Ryb3kpLFxuIFx0S1VOSVRfQ0FTRSh0ZXN0X2xlYWtfZGVzdHJveSksXG4gXHRLVU5JVF9DQVNFKHRlc3Rfa3JlYWxsb2NfcmVkem9uZV96ZXJvaW5nKSxcbitcdEtVTklUX0NBU0UodGVzdF96ZXJvX3NpemVfYWxsb2MpLFxuICNpZmRlZiBDT05GSUdfUEVSRl9FVkVOVFNcbiBcdEtVTklUX0NBU0VfU0xPVyh0ZXN0X2ttYWxsb2Nfa2ZyZWVfbm9sb2NrKSxcbiAjZW5kaWZcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDE0OjE4OjAxLjYzMzExOTQyNVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY1ODg4ODExNjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgQ29yZSBLZXJuZWwgQ2hhbmdlOiBTbGFiIEFsbG9jYXRvciBIZWFkZXJzKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgaW5jbHVkZS9saW51eC9zbGFiLmhgLCBzcGVjaWZpY2FsbHkgdHdlYWtpbmcgaG93IGBaRVJPX1NJWkVfUFRSYCBhbmQgYFpFUk9fT1JfTlVMTF9QVFIoeClgIGFyZSBkZWZpbmVkLiBUaGUgZmFjdCB0aGF0IGl0J3MgYWx0ZXJpbmcgdGhlc2UgY29yZSBzbGFiIGFsbG9jYXRvciBoZWFkZXJzIGltbWVkaWF0ZWx5IGdldHMgbXkgYXR0ZW50aW9uLiBUaGlzIGlzIGxvdy1sZXZlbCwgY3JpdGljYWwgc3R1ZmYuIEFuZCB0aGVyZSdzIGEgbmV3IEtVbml0IHRlc3QsIGB0ZXN0X3plcm9fc2l6ZV9hbGxvY2AsIGFkZGVkLiBJbnRlcmVzdGluZy5cblxuVGhlIGBaRVJPX1NJWkVfUFRSYCBjaGFuZ2UgbG9va3MgbGlrZSBpdCdzIG1ha2luZyBpdCBkeW5hbWljYWxseSBkZXBlbmRlbnQgb24gYEFSQ0hfS01BTExPQ19NSU5BTElHTmAgbm93LiBUaGUgYFpFUk9fT1JfTlVMTF9QVFIoeClgIGNoYW5nZSBpcyBtb3JlIGludGVyZXN0aW5nLiBJdCdzIG5vdyBiZWluZyBzdHJpY3QgYWJvdXQgY2hlY2tpbmcgZm9yICpleGFjdGx5KiBgMGAgb3IgYFpFUk9fU0laRV9QVFJgLCBub3QgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIGBaRVJPX1NJWkVfUFRSYCBhcyBiZWZvcmUuIFRoYXQncyBhIGRlZmluaXRlIGJlaGF2aW9yIGNoYW5nZS4gVGhpcyBjb3VsZCBpbnRyb2R1Y2Ugb3IgcmVzb2x2ZSBzdWJ0bGUgbWVtb3J5LXJlbGF0ZWQgYnVncy5cblxuVGhlIHF1ZXN0aW9uIGlzLCBkb2VzIHRoaXMgd2FycmFudCBmdXp6aW5nIGVmZm9ydD8gSXQncyBhIG1hY3JvIGNoYW5nZSwgYW5kIHRoZXNlIG1hY3JvcyBhcmUgKmV2ZXJ5d2hlcmUqLiBUaGUgcG90ZW50aWFsIGZ1bmN0aW9uYWwgaW1wYWN0IGlzIGRlZmluaXRlbHkgdGhlcmUuIFdlJ3JlIHRhbGtpbmcgYWJvdXQgYSBjaGFuZ2UgaW4gaG93IG1lbW9yeSBhbGxvY2F0aW9ucyBhcmUgaGFuZGxlZCBhdCBhIHZlcnkgYmFzaWMgbGV2ZWwuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSByaWdodCB0YXJnZXQuXG5cblNpbmNlIHRoaXMgaXMgc3VjaCBhIGdsb2JhbCBjaGFuZ2UsIHNwZWNpZmljIGZ1bmN0aW9uLWxldmVsIGZ1enppbmcgbWlnaHQgYmUgdHJpY2t5LiBUaGUgS1VuaXQgdGVzdCBpcyBoZWxwZnVsLCBidXQgc3l6a2FsbGVyIGRvZXNuJ3QgdHlwaWNhbGx5IGZ1enogdGhvc2UgZGlyZWN0bHkgdW5sZXNzIGV4cGxpY2l0bHkgY29uZmlndXJlZC4gVGhlIHJlYWwgdmFsdWUgaXMgaWRlbnRpZnlpbmcgdGhlIGFyZWFzIG1vc3QgaW1wYWN0ZWQgYnkgdGhlIG5ldyBgWkVST19PUl9OVUxMX1BUUmAgZGVmaW5pdGlvbi4gQWgsIHJpZ2h0LiBJdCdzIHVzZWQgaW4gYGtmcmVlYCwgYGtzaXplYCwgYW5kIGBrcmVhbGxvY2AhIFRob3NlIGFyZSBhbGwgcHJpbWUgdGFyZ2V0cy4gVGltZSB0byB0cmFjayBkb3duICpleGFjdGx5KiB3aGVyZSBgWkVST19PUl9OVUxMX1BUUmAgaXMgYmVpbmcgdXNlZCB0aHJvdWdob3V0IHRoZSBjb2RlYmFzZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzMxNywiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0NywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDE0OjE4OjA4LjIyMjAwMzUwOVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODU0MDQ5MTM2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlpFUk9fT1JfTlVMTF9QVFJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9kZXZpY2UuYz0xMTk9c3RhdGljIHZvaWQgKmhsX2RtYV9hbGxvY19jb21tb24oc3RydWN0IGhsX2RldmljZSAqaGRldiwgc2l6ZV90IHNpemUsIGRtYV9hZGRyX3QgKmRtYV9oYW5kbGUsXFxuLS1cXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL2RldmljZS5jLTEzMy1cXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL2RldmljZS5jOjEzNDpcXHRpZiAodHJhY2VfaGFiYW5hbGFic19kbWFfYWxsb2NfZW5hYmxlZCgpIFxcdTAwMjZcXHUwMDI2ICFaRVJPX09SX05VTExfUFRSKHB0cikpXFxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9kZXZpY2UuYy0xMzUtXFx0XFx0dHJhY2VfaGFiYW5hbGFic19kbWFfYWxsb2MoXFx1MDAyNihoZGV2KS1cXHUwMDNlcGRldi1cXHUwMDNlZGV2LCAodTY0KSAodWludHB0cl90KSBwdHIsICpkbWFfaGFuZGxlLFxcbi0tXFxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9tZW1vcnkuYz04Nz1zdGF0aWMgaW50IGFsbG9jX2RldmljZV9tZW1vcnkoc3RydWN0IGhsX2N0eCAqY3R4LCBzdHJ1Y3QgaGxfbWVtX2luICphcmdzLFxcbi0tXFxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9tZW1vcnkuYy0xNDItXFx0cGh5c19wZ19wYWNrLVxcdTAwM2VwYWdlcyA9IGt2bWFsbG9jX2FycmF5KG51bV9wZ3MsIHNpemVvZih1NjQpLCBHRlBfS0VSTkVMKTtcXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL21lbW9yeS5jOjE0MzpcXHRpZiAoWkVST19PUl9OVUxMX1BUUihwaHlzX3BnX3BhY2stXFx1MDAzZXBhZ2VzKSkge1xcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vbWVtb3J5LmMtMTQ0LVxcdFxcdHJjID0gLUVOT01FTTtcXG4tLVxcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vbWVtb3J5LmM9ODM4PXN0YXRpYyBpbnQgaW5pdF9waHlzX3BnX3BhY2tfZnJvbV91c2VycHRyKHN0cnVjdCBobF9jdHggKmN0eCxcXG4tLVxcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vbWVtb3J5LmMtODg5LVxcdFxcdFxcdFxcdFxcdFxcdEdGUF9LRVJORUwpO1xcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vbWVtb3J5LmM6ODkwOlxcdGlmIChaRVJPX09SX05VTExfUFRSKHBoeXNfcGdfcGFjay1cXHUwMDNlcGFnZXMpKSB7XFxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9tZW1vcnkuYy04OTEtXFx0XFx0cmMgPSAtRU5PTUVNO1xcbi0tXFxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9tbXUvbW11LmM9Nzc5PXN0YXRpYyB2b2lkIGhsX21tdV9ocl9wb29sX2Rlc3Ryb3koc3RydWN0IGhsX2RldmljZSAqaGRldiwgc3RydWN0IGhsX21tdV9ocl9wcml2ICpocl9wcml2LFxcbi0tXFxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9tbXUvbW11LmMtNzg2LVxcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vbW11L21tdS5jOjc4NzpcXHRpZiAoWkVST19PUl9OVUxMX1BUUigqcG9vbCkpXFxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9tbXUvbW11LmMtNzg4LVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vbW11L21tdS5jLTc5My1cXHRcXHRcXHRob3AwX3BndCA9IFxcdTAwMjZocl9wcml2LVxcdTAwM2VtbXVfYXNpZF9ob3AwW2FzaWRdO1xcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vbW11L21tdS5jOjc5NDpcXHRcXHRcXHRpZiAoWkVST19PUl9OVUxMX1BUUihob3AwX3BndC1cXHUwMDNldmlydF9hZGRyKSlcXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL21tdS9tbXUuYy03OTUtXFx0XFx0XFx0XFx0Y29udGludWU7XFxuLS1cXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL21tdS9tbXUuYz04MjQ9aW50IGhsX21tdV9ocl9pbml0KHN0cnVjdCBobF9kZXZpY2UgKmhkZXYsIHN0cnVjdCBobF9tbXVfaHJfcHJpdiAqaHJfcHJpdiwgdTMyIGhvcF90YWJsZV9zaXplLFxcbi0tXFxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9tbXUvbW11LmMtODQwLVxcdGhyX3ByaXYtXFx1MDAzZW1tdV9wZ3RfcG9vbCA9IGdlbl9wb29sX2NyZWF0ZShQQUdFX1NISUZULCAtMSk7XFxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9tbXUvbW11LmM6ODQxOlxcdGlmIChaRVJPX09SX05VTExfUFRSKGhyX3ByaXYtXFx1MDAzZW1tdV9wZ3RfcG9vbCkpIHtcXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL21tdS9tbXUuYy04NDItXFx0XFx0ZGV2X2VycihoZGV2LVxcdTAwM2VkZXYsIFxcXCJGYWlsZWQgdG8gY3JlYXRlIGhyIHBhZ2UgcG9vbFxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL21tdS9tbXUuYy04NDYtXFx0aHJfcHJpdi1cXHUwMDNlbW11X2FzaWRfaG9wMCA9IGt2emFsbG9jX29ianMoc3RydWN0IHBndF9pbmZvLCBwcm9wLVxcdTAwM2VtYXhfYXNpZCk7XFxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9tbXUvbW11LmM6ODQ3OlxcdGlmIChaRVJPX09SX05VTExfUFRSKGhyX3ByaXYtXFx1MDAzZW1tdV9hc2lkX2hvcDApKSB7XFxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9tbXUvbW11LmMtODQ4LVxcdFxcdGRldl9lcnIoaGRldi1cXHUwMDNlZGV2LCBcXFwiRmFpbGVkIHRvIGFsbG9jYXRlIGhyLW1tdSBob3AwIHRhYmxlXFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vbW11L21tdS5jLTg1Ni1cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRHRlBfS0VSTkVMIHwgX19HRlBfWkVSTyk7XFxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9tbXUvbW11LmM6ODU3OlxcdFxcdGlmIChaRVJPX09SX05VTExfUFRSKHZpcnRfYWRkcikpIHtcXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL21tdS9tbXUuYy04NTgtXFx0XFx0XFx0ZGV2X2VycihoZGV2LVxcdTAwM2VkZXYsXFxuLS1cXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL21tdS9tbXUuYy04OTEtXFx0aGxfbW11X2hyX3Bvb2xfZGVzdHJveShoZGV2LCBocl9wcml2LCBob3BfdGFibGVfc2l6ZSk7XFxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9tbXUvbW11LmM6ODkyOlxcdGlmICghWkVST19PUl9OVUxMX1BUUihocl9wcml2LVxcdTAwM2VtbXVfYXNpZF9ob3AwKSlcXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL21tdS9tbXUuYy04OTMtXFx0XFx0a3ZmcmVlKGhyX3ByaXYtXFx1MDAzZW1tdV9hc2lkX2hvcDApO1xcbi0tXFxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9tbXUvbW11LmM9OTEwPXZvaWQgaGxfbW11X2hyX2Zpbmkoc3RydWN0IGhsX2RldmljZSAqaGRldiwgc3RydWN0IGhsX21tdV9ocl9wcml2ICpocl9wcml2LCB1MzIgaG9wX3RhYmxlX3NpemUpXFxuLS1cXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL21tdS9tbXUuYy05MTUtXFxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9tbXUvbW11LmM6OTE2OlxcdGlmICghWkVST19PUl9OVUxMX1BUUihocl9wcml2LVxcdTAwM2VtbXVfYXNpZF9ob3AwKSkge1xcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vbW11L21tdS5jLTkxNy1cXHRcXHRrdmZyZWUoaHJfcHJpdi1cXHUwMDNlbW11X2FzaWRfaG9wMCk7XFxuLS1cXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL21tdS9tbXUuYz0xMDY0PXN0cnVjdCBwZ3RfaW5mbyAqaGxfbW11X2hyX2FsbG9jX2hvcChzdHJ1Y3QgaGxfY3R4ICpjdHgsIHN0cnVjdCBobF9tbXVfaHJfcHJpdiAqaHJfcHJpdixcXG4tLVxcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vbW11L21tdS5jLTEwODgtXFx0XFx0XFx0XFx0XFx0XFx0XFx0R0ZQX0tFUk5FTCB8IF9fR0ZQX1pFUk8pO1xcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vbW11L21tdS5jOjEwODk6XFx0XFx0aWYgKFpFUk9fT1JfTlVMTF9QVFIodmlydF9hZGRyKSlcXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL21tdS9tbXUuYy0xMDkwLVxcdFxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9tbXUvbW11LmMtMTA5OS1cXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL21tdS9tbXUuYzoxMTAwOlxcdGlmIChaRVJPX09SX05VTExfUFRSKHZpcnRfYWRkcikpIHtcXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL21tdS9tbXUuYy0xMTAxLVxcdFxcdGRldl9lcnIoaGRldi1cXHUwMDNlZGV2LCBcXFwiZmFpbGVkIHRvIGFsbG9jYXRlIHBhZ2VcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9tbXUvbW11LmM9MTM4MD1pbnQgaGxfbW11X2RyX2luaXQoc3RydWN0IGhsX2RldmljZSAqaGRldilcXG4tLVxcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vbW11L21tdS5jLTE0MDMtXFx0XFx0XFx0XFx0XFx0XFx0cHJvcC1cXHUwMDNlZG1tdS5ob3BfdGFibGVfc2l6ZSwgR0ZQX0tFUk5FTCk7XFxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9tbXUvbW11LmM6MTQwNDpcXHRpZiAoWkVST19PUl9OVUxMX1BUUihoZGV2LVxcdTAwM2VtbXVfcHJpdi5kci5tbXVfc2hhZG93X2hvcDApKSB7XFxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9tbXUvbW11LmMtMTQwNS1cXHRcXHRyYyA9IC1FTk9NRU07XFxuLS1cXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL21tdS9tbXUuYz0xNDE5PXZvaWQgaGxfbW11X2RyX2Zpbmkoc3RydWN0IGhsX2RldmljZSAqaGRldilcXG4tLVxcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vbW11L21tdS5jLTE0MjItXFxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9tbXUvbW11LmM6MTQyMzpcXHRpZiAoWkVST19PUl9OVUxMX1BUUihoZGV2LVxcdTAwM2VtbXVfcHJpdi5kci5tbXVfc2hhZG93X2hvcDApKVxcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vbW11L21tdS5jLTE0MjQtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9iYXNlL2RldnJlcy5jPTk4MT12b2lkICpkZXZtX2tyZWFsbG9jKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqcHRyLCBzaXplX3QgbmV3X3NpemUsIGdmcF90IGdmcClcXG4tLVxcbmRyaXZlcnMvYmFzZS9kZXZyZXMuYy05OTEtXFxuZHJpdmVycy9iYXNlL2RldnJlcy5jOjk5MjpcXHRpZiAodW5saWtlbHkoWkVST19PUl9OVUxMX1BUUihwdHIpKSlcXG5kcml2ZXJzL2Jhc2UvZGV2cmVzLmMtOTkzLVxcdFxcdHJldHVybiBkZXZtX2ttYWxsb2MoZGV2LCBuZXdfc2l6ZSwgZ2ZwKTtcXG4tLVxcbmRyaXZlcnMvYmFzZS9kZXZyZXMuYz0xMTcxPXZvaWQgZGV2bV9rZnJlZShzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IHZvaWQgKnApXFxuLS1cXG5kcml2ZXJzL2Jhc2UvZGV2cmVzLmMtMTE3OC1cXHQgKi9cXG5kcml2ZXJzL2Jhc2UvZGV2cmVzLmM6MTE3OTpcXHRpZiAodW5saWtlbHkoaXNfa2VybmVsX3JvZGF0YSgodW5zaWduZWQgbG9uZylwKSB8fCBaRVJPX09SX05VTExfUFRSKHApKSlcXG5kcml2ZXJzL2Jhc2UvZGV2cmVzLmMtMTE4MC1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbV9jcnRjLmM9MTk5PXN0cnVjdCBpZGxlX3dvcmtxdWV1ZSAqaWRsZV9jcmVhdGVfd29ya3F1ZXVlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG1fY3J0Yy5jLTIwMy1cXHRpZGxlX3dvcmsgPSBremFsbG9jX29iaigqaWRsZV93b3JrKTtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbV9jcnRjLmM6MjA0OlxcdGlmIChaRVJPX09SX05VTExfUFRSKGlkbGVfd29yaykpXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG1fY3J0Yy5jLTIwNS1cXHRcXHRyZXR1cm4gTlVMTDtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtX2hkY3AuYz03NDc9c3RydWN0IGhkY3Bfd29ya3F1ZXVlICpoZGNwX2NyZWF0ZV93b3JrcXVldWUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbV9oZGNwLmMtNzU0LVxcdGhkY3Bfd29yayA9IGt6YWxsb2Nfb2JqcygqaGRjcF93b3JrLCBtYXhfY2Fwcyk7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG1faGRjcC5jOjc1NTpcXHRpZiAoWkVST19PUl9OVUxMX1BUUihoZGNwX3dvcmspKVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtX2hkY3AuYy03NTYtXFx0XFx0cmV0dXJuIE5VTEw7XFxuLS1cXG5kcml2ZXJzL3RoZXJtYWwvaW50ZWwvaW50MzQweF90aGVybWFsL2ludDM0MDBfdGhlcm1hbC5jPTUyNz1zdGF0aWMgdm9pZCBpbnQzNDAwX3NldHVwX2dkZHYoc3RydWN0IGludDM0MDBfdGhlcm1hbF9wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy90aGVybWFsL2ludGVsL2ludDM0MHhfdGhlcm1hbC9pbnQzNDAwX3RoZXJtYWwuYy01NDUtXFx0XFx0XFx0XFx0ICAgR0ZQX0tFUk5FTCk7XFxuZHJpdmVycy90aGVybWFsL2ludGVsL2ludDM0MHhfdGhlcm1hbC9pbnQzNDAwX3RoZXJtYWwuYzo1NDY6XFx0aWYgKFpFUk9fT1JfTlVMTF9QVFIocHJpdi1cXHUwMDNlZGF0YV92YXVsdCkpXFxuZHJpdmVycy90aGVybWFsL2ludGVsL2ludDM0MHhfdGhlcm1hbC9pbnQzNDAwX3RoZXJtYWwuYy01NDctXFx0XFx0Z290byBvdXRfZnJlZTtcXG4tLVxcbmRyaXZlcnMvdGhlcm1hbC9pbnRlbC9pbnQzNDB4X3RoZXJtYWwvaW50MzQwMF90aGVybWFsLmM9NTU1PXN0YXRpYyBpbnQgaW50MzQwMF90aGVybWFsX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL3RoZXJtYWwvaW50ZWwvaW50MzQweF90aGVybWFsL2ludDM0MDBfdGhlcm1hbC5jLTYxNS1cXG5kcml2ZXJzL3RoZXJtYWwvaW50ZWwvaW50MzQweF90aGVybWFsL2ludDM0MDBfdGhlcm1hbC5jOjYxNjpcXHRpZiAoIVpFUk9fT1JfTlVMTF9QVFIocHJpdi1cXHUwMDNlZGF0YV92YXVsdCkpIHtcXG5kcml2ZXJzL3RoZXJtYWwvaW50ZWwvaW50MzQweF90aGVybWFsL2ludDM0MDBfdGhlcm1hbC5jLTYxNy1cXHRcXHRyZXN1bHQgPSBkZXZpY2VfY3JlYXRlX2Jpbl9maWxlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIFxcdTAwMjZiaW5fYXR0cl9kYXRhX3ZhdWx0KTtcXG4tLVxcbmRyaXZlcnMvdGhlcm1hbC9pbnRlbC9pbnQzNDB4X3RoZXJtYWwvaW50MzQwMF90aGVybWFsLmMtNjM4LVxcdGNsZWFudXBfb2R2cChwcml2KTtcXG5kcml2ZXJzL3RoZXJtYWwvaW50ZWwvaW50MzQweF90aGVybWFsL2ludDM0MDBfdGhlcm1hbC5jOjYzOTpcXHRpZiAoIVpFUk9fT1JfTlVMTF9QVFIocHJpdi1cXHUwMDNlZGF0YV92YXVsdCkpIHtcXG5kcml2ZXJzL3RoZXJtYWwvaW50ZWwvaW50MzQweF90aGVybWFsL2ludDM0MDBfdGhlcm1hbC5jLTY0MC1cXHRcXHRkZXZpY2VfcmVtb3ZlX2Jpbl9maWxlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIFxcdTAwMjZiaW5fYXR0cl9kYXRhX3ZhdWx0KTtcXG4tLVxcbmRyaXZlcnMvdGhlcm1hbC9pbnRlbC9pbnQzNDB4X3RoZXJtYWwvaW50MzQwMF90aGVybWFsLmM9NjU5PXN0YXRpYyB2b2lkIGludDM0MDBfdGhlcm1hbF9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvdGhlcm1hbC9pbnRlbC9pbnQzNDB4X3RoZXJtYWwvaW50MzQwMF90aGVybWFsLmMtNjczLVxcbmRyaXZlcnMvdGhlcm1hbC9pbnRlbC9pbnQzNDB4X3RoZXJtYWwvaW50MzQwMF90aGVybWFsLmM6Njc0OlxcdGlmICghWkVST19PUl9OVUxMX1BUUihwcml2LVxcdTAwM2VkYXRhX3ZhdWx0KSlcXG5kcml2ZXJzL3RoZXJtYWwvaW50ZWwvaW50MzQweF90aGVybWFsL2ludDM0MDBfdGhlcm1hbC5jLTY3NS1cXHRcXHRkZXZpY2VfcmVtb3ZlX2Jpbl9maWxlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIFxcdTAwMjZiaW5fYXR0cl9kYXRhX3ZhdWx0KTtcXG4tLVxcbmZzL2JpbmZtdF9lbGYuYz0xNTkzPXN0YXRpYyBpbnQgZmlsbF9maWxlc19ub3RlKHN0cnVjdCBtZW1lbGZub3RlICpub3RlLCBzdHJ1Y3QgY29yZWR1bXBfcGFyYW1zICpjcHJtKVxcbi0tXFxuZnMvYmluZm10X2VsZi5jLTE2MjAtXFx0ZGF0YSA9IGt2bWFsbG9jKHNpemUsIEdGUF9LRVJORUwpO1xcbmZzL2JpbmZtdF9lbGYuYzoxNjIxOlxcdGlmIChaRVJPX09SX05VTExfUFRSKGRhdGEpKVxcbmZzL2JpbmZtdF9lbGYuYy0xNjIyLVxcdFxcdHJldHVybiAtRU5PTUVNO1xcbi0tXFxuZnMvamJkMi90cmFuc2FjdGlvbi5jPTU4PXZvaWQgamJkMl9qb3VybmFsX2ZyZWVfdHJhbnNhY3Rpb24odHJhbnNhY3Rpb25fdCAqdHJhbnNhY3Rpb24pXFxuZnMvamJkMi90cmFuc2FjdGlvbi5jLTU5LXtcXG5mcy9qYmQyL3RyYW5zYWN0aW9uLmM6NjA6XFx0aWYgKHVubGlrZWx5KFpFUk9fT1JfTlVMTF9QVFIodHJhbnNhY3Rpb24pKSlcXG5mcy9qYmQyL3RyYW5zYWN0aW9uLmMtNjEtXFx0XFx0cmV0dXJuO1xcbi0tXFxuaW5jbHVkZS9saW51eC9zbGFiLmg9MjY9ZW51bSBfc2xhYl9mbGFnX2JpdHMge1xcbi0tXFxuaW5jbHVkZS9saW51eC9zbGFiLmgtMjcyLVxcbmluY2x1ZGUvbGludXgvc2xhYi5oOjI3MzojZGVmaW5lIFpFUk9fT1JfTlVMTF9QVFIoeClcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuaW5jbHVkZS9saW51eC9zbGFiLmgtMjc0LSh7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTEyNTk9c3RhdGljIHZvaWQgKmNvcHlfYXJyYXkodm9pZCAqZHN0LCBjb25zdCB2b2lkICpzcmMsIHNpemVfdCBuLCBzaXplX3Qgc2l6ZSwgZ2ZwX3QgZmxhZ3MpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI2NC1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTI2NTpcXHRpZiAoWkVST19PUl9OVUxMX1BUUihzcmMpKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjY2LVxcdFxcdGdvdG8gb3V0O1xcbi0tXFxua2VybmVsL2V2ZW50cy91cHJvYmVzLmM9MjU0OT1zdGF0aWMgdm9pZCBoYW5kbGVyX2NoYWluKHN0cnVjdCB1cHJvYmUgKnVwcm9iZSwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXFxuLS1cXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy0yNTgyLVxcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jOjI1ODM6XFx0aWYgKCFaRVJPX09SX05VTExfUFRSKHJpKSlcXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy0yNTg0LVxcdFxcdHByZXBhcmVfdXJldHByb2JlKHVwcm9iZSwgcmVncywgcmkpO1xcbi0tXFxubGliL3Rlc3RzL3NsdWJfa3VuaXQuYz0zODM9c3RhdGljIHZvaWQgdGVzdF96ZXJvX3NpemVfYWxsb2Moc3RydWN0IGt1bml0ICp0ZXN0KVxcbi0tXFxubGliL3Rlc3RzL3NsdWJfa3VuaXQuYy00MDUtXFx0ciA9IGtyZWFsbG9jKHAsIDY0LCBHRlBfS0VSTkVMKTtcXG5saWIvdGVzdHMvc2x1Yl9rdW5pdC5jOjQwNjpcXHRLVU5JVF9FWFBFQ1RfRkFMU0UodGVzdCwgWkVST19PUl9OVUxMX1BUUihyKSk7XFxubGliL3Rlc3RzL3NsdWJfa3VuaXQuYy00MDctXFx0cCA9IGtyZWFsbG9jKHIsIDAsIEdGUF9LRVJORUwpO1xcbi0tXFxubGliL3Rlc3RzL3NsdWJfa3VuaXQuYy00MTEtXFx0LyogT25seSBOVUxMIGFuZCB0aGUgemVyby1zaXplIHNlbnRpbmVsIG1hdGNoLiAqL1xcbmxpYi90ZXN0cy9zbHViX2t1bml0LmM6NDEyOlxcdEtVTklUX0VYUEVDVF9UUlVFKHRlc3QsIFpFUk9fT1JfTlVMTF9QVFIoTlVMTCkpO1xcbmxpYi90ZXN0cy9zbHViX2t1bml0LmM6NDEzOlxcdEtVTklUX0VYUEVDVF9UUlVFKHRlc3QsIFpFUk9fT1JfTlVMTF9QVFIoWkVST19TSVpFX1BUUikpO1xcbmxpYi90ZXN0cy9zbHViX2t1bml0LmM6NDE0OlxcdEtVTklUX0VYUEVDVF9GQUxTRSh0ZXN0LCBaRVJPX09SX05VTExfUFRSKCh2b2lkICopMSkpO1xcbmxpYi90ZXN0cy9zbHViX2t1bml0LmM6NDE1OlxcdEtVTklUX0VYUEVDVF9GQUxTRSh0ZXN0LCBaRVJPX09SX05VTExfUFRSKCh2b2lkICopKHpzcCAtIDEpKSk7XFxubGliL3Rlc3RzL3NsdWJfa3VuaXQuYzo0MTY6XFx0S1VOSVRfRVhQRUNUX0ZBTFNFKHRlc3QsIFpFUk9fT1JfTlVMTF9QVFIoKHZvaWQgKikoenNwICsgMSkpKTtcXG5saWIvdGVzdHMvc2x1Yl9rdW5pdC5jOjQxNzpcXHRLVU5JVF9FWFBFQ1RfRkFMU0UodGVzdCwgWkVST19PUl9OVUxMX1BUUigodm9pZCAqKSh6c3AgKiAyKSkpO1xcbmxpYi90ZXN0cy9zbHViX2t1bml0LmMtNDE4LVxcbi0tXFxubW0vc2x1Yi5jPTY1NzQ9c2l6ZV90IGtzaXplKGNvbnN0IHZvaWQgKm9ianApXFxuLS1cXG5tbS9zbHViLmMtNjU5MC1cXHQgKi9cXG5tbS9zbHViLmM6NjU5MTpcXHRpZiAodW5saWtlbHkoWkVST19PUl9OVUxMX1BUUihvYmpwKSkgfHwgIWthc2FuX2NoZWNrX2J5dGUob2JqcCkpXFxubW0vc2x1Yi5jLTY1OTItXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5tbS9zbHViLmM9NjY3MT12b2lkIGtmcmVlKGNvbnN0IHZvaWQgKm9iamVjdClcXG4tLVxcbm1tL3NsdWIuYy02Njc5LVxcbm1tL3NsdWIuYzo2NjgwOlxcdGlmICh1bmxpa2VseShaRVJPX09SX05VTExfUFRSKG9iamVjdCkpKVxcbm1tL3NsdWIuYy02NjgxLVxcdFxcdHJldHVybjtcXG4tLVxcbm1tL3NsdWIuYz02NzA1PXZvaWQga2ZyZWVfbm9sb2NrKGNvbnN0IHZvaWQgKm9iamVjdClcXG4tLVxcbm1tL3NsdWIuYy02NzEwLVxcbm1tL3NsdWIuYzo2NzExOlxcdGlmICh1bmxpa2VseShaRVJPX09SX05VTExfUFRSKG9iamVjdCkpKVxcbm1tL3NsdWIuYy02NzEyLVxcdFxcdHJldHVybjtcXG4tLVxcbm1tL3NsdWIuYz02NzY1PV9fZG9fa3JlYWxsb2MoY29uc3Qgdm9pZCAqcCwgc2l6ZV90IG5ld19zaXplLCB1bnNpZ25lZCBsb25nIGFsaWduLCBnZnBfdCBmbGFncywgaW50IG5pZCwga21hbGxvY190b2tlbl90IHRva2VuKVxcbi0tXFxubW0vc2x1Yi5jLTY3NzEtXFxubW0vc2x1Yi5jOjY3NzI6XFx0aWYgKHVubGlrZWx5KFpFUk9fT1JfTlVMTF9QVFIocCkpKVxcbm1tL3NsdWIuYy02NzczLVxcdFxcdGdvdG8gYWxsb2NfbmV3O1xcbi0tXFxubW0vc2x1Yi5jPTY5ODM9dm9pZCBrdmZyZWVfc2Vuc2l0aXZlKGNvbnN0IHZvaWQgKmFkZHIsIHNpemVfdCBsZW4pXFxubW0vc2x1Yi5jLTY5ODQte1xcbm1tL3NsdWIuYzo2OTg1OlxcdGlmIChsaWtlbHkoIVpFUk9fT1JfTlVMTF9QVFIoYWRkcikpKSB7XFxubW0vc2x1Yi5jLTY5ODYtXFx0XFx0bWVtemVyb19leHBsaWNpdCgodm9pZCAqKWFkZHIsIGxlbik7XFxuLS1cXG5tbS91c2VyY29weS5jPTE1MD1zdGF0aWMgaW5saW5lIHZvaWQgY2hlY2tfYm9ndXNfYWRkcmVzcyhjb25zdCB1bnNpZ25lZCBsb25nIHB0ciwgdW5zaWduZWQgbG9uZyBuLFxcbi0tXFxubW0vdXNlcmNvcHkuYy0xNTctXFx0LyogUmVqZWN0IGlmIE5VTEwgb3IgWkVSTy1hbGxvY2F0aW9uLiAqL1xcbm1tL3VzZXJjb3B5LmM6MTU4OlxcdGlmIChaRVJPX09SX05VTExfUFRSKHB0cikpXFxubW0vdXNlcmNvcHkuYy0xNTktXFx0XFx0dXNlcmNvcHlfYWJvcnQoXFxcIm51bGwgYWRkcmVzc1xcXCIsIE5VTEwsIHRvX3VzZXIsIHB0ciwgbik7XFxuLS1cXG5uZXQvc3VucnBjL2F1dGhfZ3NzL2F1dGhfZ3NzLmM9MTk4OT1nc3NfdW53cmFwX3Jlc3BfaW50ZWcoc3RydWN0IHJwY190YXNrICp0YXNrLCBzdHJ1Y3QgcnBjX2NyZWQgKmNyZWQsXFxuLS1cXG5uZXQvc3VucnBjL2F1dGhfZ3NzL2F1dGhfZ3NzLmMtMjAzMC1cXHRtaWMuZGF0YSA9IGttYWxsb2MobGVuLCBHRlBfS0VSTkVMKTtcXG5uZXQvc3VucnBjL2F1dGhfZ3NzL2F1dGhfZ3NzLmM6MjAzMTpcXHRpZiAoWkVST19PUl9OVUxMX1BUUihtaWMuZGF0YSkpXFxubmV0L3N1bnJwYy9hdXRoX2dzcy9hdXRoX2dzcy5jLTIwMzItXFx0XFx0Z290byB1bndyYXBfZmFpbGVkO1xcbi0tXFxubmV0L3N1bnJwYy9hdXRoX2dzcy9zdmNhdXRoX2dzcy5jPTExNTU9c3ZjYXV0aF9nc3NfbGVnYWN5X2luaXQoc3RydWN0IHN2Y19ycXN0ICpycXN0cCxcXG4tLVxcbm5ldC9zdW5ycGMvYXV0aF9nc3Mvc3ZjYXV0aF9nc3MuYy0xMTg1LVxcdHJzaWtleS5pbl90b2tlbi5kYXRhID0ga21hbGxvYyhsZW4sIEdGUF9LRVJORUwpO1xcbm5ldC9zdW5ycGMvYXV0aF9nc3Mvc3ZjYXV0aF9nc3MuYzoxMTg2OlxcdGlmIChaRVJPX09SX05VTExfUFRSKHJzaWtleS5pbl90b2tlbi5kYXRhKSkge1xcbm5ldC9zdW5ycGMvYXV0aF9nc3Mvc3ZjYXV0aF9nc3MuYy0xMTg3LVxcdFxcdGtmcmVlKHJzaWtleS5pbl9oYW5kbGUuZGF0YSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDE0OjE4OjExLjA3NjA1OTE4NVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk2NDc5MjA2NTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBJbXBhY3Qgb2YgdGhlIFpFUk9fT1JfTlVMTF9QVFIgQ2hhbmdlKipcblxuT2theSwgc28gdGhpcyBjaGFuZ2UgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgYnV0IGl0IGhhcyBzaWduaWZpY2FudCBpbXBsaWNhdGlvbnMuIEl0IHNlZW1zIHRoZSBjb2RlIG5vdyBzdHJpY3RseSBkZWZpbmVzIGBaRVJPX09SX05VTExfUFRSKHgpYCBhcyBlaXRoZXIgYDBgIG9yIGBaRVJPX1NJWkVfUFRSYCwgZWZmZWN0aXZlbHkgZXhjbHVkaW5nIHBvaW50ZXJzIHdpdGggc21hbGwgdmFsdWVzICgxLTEyNywgZGVwZW5kaW5nIG9uIGFyY2hpdGVjdHVyZSkgdGhhdCB1c2VkIHRvIGJlIGNvbnNpZGVyZWQgXCJ6ZXJvIG9yIG51bGxcIi4gVGhpcyBtZWFucyB0aGF0IGF0dGVtcHRpbmcgdG8gZnJlZSBhIHNtYWxsIGludGVnZXIgdmFsdWUsIGxpa2UgYGtmcmVlKCh2b2lkICopMSlgLCB3aWxsIG5vIGxvbmdlciBiZSBzaWxlbnRseSBpZ25vcmVkOyBpdCdsbCBub3cgbGlrZWx5IHRyaWdnZXIgYSBjcmFzaCBiZWNhdXNlIGl0J3MgYXR0ZW1wdGluZyB0byBmcmVlIGFuIGludmFsaWQgcG9pbnRlci4gVGhpcyBpcyBhIGRlbGliZXJhdGUgZGVzaWduIGNoYW5nZSB0byBjYXRjaCB0aGVzZSBraW5kcyBvZiBidWdzLCB3aGljaCBpcyBnb29kLlxuXG5NeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJXb3J0aCBmdXp6aW5nP1wiIEFic29sdXRlbHksIHRoaXMgaXMgYSBwcmltZSBjYW5kaWRhdGUuIEl0IGhhcyB0aGUgcG90ZW50aWFsIHRvIGV4cG9zZSBidWdzIGluIGFueSBrZXJuZWwgY29kZSB0aGF0IG1pc3Rha2VubHkgcGFzc2VzIGEgc21hbGwgaW50ZWdlciB2YWx1ZSB0byBtZW1vcnkgbWFuYWdlbWVudCBmdW5jdGlvbnMgbGlrZSBga2ZyZWVgLCBga3NpemVgLCBga3JlYWxsb2NgLCBhbmQgb3RoZXJzLiBUaGVzZSBhcmUgYWxsIGNvcmUgYWxsb2NhdG9yIGZ1bmN0aW9ucyB0aGF0IGNvdWxkIG5vdyByZWFjdCBkaWZmZXJlbnRseS5cblxuQnV0IHRoZW4gSSByZWNhbGwgdGhlIHByb21wdCdzIHNwZWNpZmljIHJlcXVpcmVtZW50cy4gSSBuZWVkIHRvIGlkZW50aWZ5ICpzcGVjaWZpYyoga2VybmVsIGZ1bmN0aW9ucyBmb3IgZm9jdXNlZCBmdXp6aW5nLiBXaGlsZSBga2ZyZWVgLCBga3NpemVgLCBhbmQgYGtyZWFsbG9jYCBhcmUgb2J2aW91c2x5IGltcGFjdGVkLCB0aGV5IGFyZSBnZW5lcmljIGFuZCBob3QtcGF0aCwgYW5kIHRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IHNheXMgdG8gYXZvaWQgdGhlbS4gRGFuZy4gVGhlIHBhdGNoIGludHJvZHVjZXMgYHRlc3RfemVyb19zaXplX2FsbG9jYCB3aXRoaW4gdGhlIGBzbHViX2t1bml0LmNgIGZpbGUsIGJ1dCB0aGF0J3MgYSBrdW5pdCB0ZXN0LCBhbmQgc3l6a2FsbGVyIGRvZXNuJ3QgZGlyZWN0bHkgZnV6eiB0aG9zZS4gU28sIGl0IGxvb2tzIGxpa2UgdGhlcmUgYXJlbid0IGFueSBzcGVjaWZpYyB0YXJnZXQgZnVuY3Rpb25zIHRvIHBvaW50IHRvIGFuZCBJIGhhdmUgdG8gbGVhdmUgdGhlIGBGb2N1c1N5bWJvbHNgIGVtcHR5LlxuXG5GaW5hbGx5LCBJIHNob3VsZCBjaGVjayB0aGUgYEVuYWJsZUNvbmZpZ3NgIHRvIGVuc3VyZSB0aGUgbmV3IGt1bml0IHRlc3QgaXMgY29tcGlsZWQuICBJdCdzIGluIHRoZSBgbGliL3Rlc3RzL3NsdWJfa3VuaXQuY2AgZmlsZSwgc28gSSBuZWVkIGBDT05GSUdfU0xVQl9LVU5JVF9URVNUYC4gTGV0IG1lIGRvdWJsZS1jaGVjayB0aGF0IHRoaXMgaXMgY29ycmVjdCBieSBjaGVja2luZyBgbGliL3Rlc3RzL0tjb25maWdgIG9yIGBsaWIvS2NvbmZpZy5kZWJ1Z2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk0NDYsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMTQ6MTg6MjAuNzIzOTgzNTQyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI4NDg0MzI5OTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFNMVUJfS1VOSVRfVEVTVFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJsaWIvS2NvbmZpZy5kZWJ1Zz0yOTc5PWNvbmZpZyBTSERJM19LVU5JVF9URVNUXFxuLS1cXG5saWIvS2NvbmZpZy5kZWJ1Zy0yOTg4LVxcbmxpYi9LY29uZmlnLmRlYnVnOjI5ODk6Y29uZmlnIFNMVUJfS1VOSVRfVEVTVFxcbmxpYi9LY29uZmlnLmRlYnVnLTI5OTAtXFx0dHJpc3RhdGUgXFxcIktVbml0IHRlc3QgZm9yIFNMVUIgY2FjaGUgZXJyb3IgZGV0ZWN0aW9uXFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDE0OjE4OjIzLjU3MjQyMTcxOVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MDAzNjA1NTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyB0aGUgU0xVQl9LVU5JVF9URVNUIENvbmZpZ3VyYXRpb24gT3B0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYFNMVUJfS1VOSVRfVEVTVGAuIEl0J3MgY2xlYXIgdGhpcyBpcyB0aGUgY29uZmlnIG9wdGlvbiB3ZSdyZSBkZWFsaW5nIHdpdGguIE5vdywgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGRpdmUgaW50byBpdHMgZGVwZW5kZW5jaWVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IG90aGVyIGNvbmZpZ3VyYXRpb25zLCBmZWF0dXJlcywgb3IgbGlicmFyaWVzIHRoaXMgb25lIHJlbGllcyBvbi4gVW5kZXJzdGFuZGluZyB0aGUgZGVwZW5kZW5jeSB0cmVlIHdpbGwgYmUgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBpdHMgb3ZlcmFsbCBpbXBhY3QgYW5kIGhvdyBpdCBmaXRzIGludG8gdGhlIGJyb2FkZXIga2VybmVsIGJ1aWxkIGFuZCBmdW5jdGlvbmFsaXR5LiBUaW1lIHRvIHN0YXJ0IGRpZ2dpbmcgaW50byB0aGUgS2NvbmZpZyBmaWxlcyFcblxuXG4iLCJJbnB1dFRva2VucyI6MTA2MzcsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQxNDoxODoyNy4xNzI3ODQ1NTNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEwMTY2ODQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBTTFVCX0tVTklUX1RFU1RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibGliL0tjb25maWcuZGVidWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibGliL0tjb25maWcuZGVidWc9Mjk3OT1jb25maWcgU0hESTNfS1VOSVRfVEVTVFxcbi0tXFxubGliL0tjb25maWcuZGVidWctMjk4OC1cXG5saWIvS2NvbmZpZy5kZWJ1ZzoyOTg5OmNvbmZpZyBTTFVCX0tVTklUX1RFU1RcXG5saWIvS2NvbmZpZy5kZWJ1Zy0yOTkwLVxcdHRyaXN0YXRlIFxcXCJLVW5pdCB0ZXN0IGZvciBTTFVCIGNhY2hlIGVycm9yIGRldGVjdGlvblxcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQxNDoxODoyNy4yODI5NTk5MTFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjc0OTk5MzA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIERlYnVnZ2luZyBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgc29tZXRoaW5nIHJlbGF0ZWQgdG8gdGhlIGRlYnVnZ2luZyBjb25maWd1cmF0aW9uIG9mIHRoaXMgc3lzdGVtLiBUaGUgbG9naWNhbCBwbGFjZSB0byBzdGFydCBpcyB0aGUgYGxpYi9LY29uZmlnLmRlYnVnYCBmaWxlLiBOb3csIGJhc2VkIG9uIG15IHBhc3QgZXhwZXJpZW5jZSB3aXRoIHRoZXNlIGNvbmZpZ3VyYXRpb25zLCBsaW5lIDI5ODkgaXMgbGlrZWx5IHRvIGJlIGEgY3J1Y2lhbCBwb2ludCDigJMgZWl0aGVyIGRlZmluaW5nIGEga2V5IGRlYnVnIG9wdGlvbiwgcHJvdmlkaW5nIGEgY29uZGl0aW9uYWwgZm9yIGl0LCBvciBwZXJoYXBzIHJlZmVyZW5jaW5nIGFub3RoZXIgZmlsZSB3aXRoIG1vcmUgZGV0YWlscy4gSSdtIGdvaW5nIHRvIHF1aWNrbHkganVtcCB0byB0aGF0IGxpbmUgYW5kIGNoZWNrIHRoZSBzdXJyb3VuZGluZyBjb2RlLCBmb2N1c2luZyBvbiB0aGUgY29udGV4dCBhbmQgZGVwZW5kZW5jaWVzIHRvIHF1aWNrbHkgZ2V0IGEgZ29vZCBvdmVydmlldyBvZiB0aGUgcmVsZXZhbnQgbG9naWMgYW5kIHBvdGVudGlhbGx5IHNwb3QgdGhlIHJvb3QgY2F1c2Ugb2YgdGhlIGlzc3VlIG9yIHVuZGVyc3RhbmQgaG93IGEgcGFydGljdWxhciBkZWJ1ZyBmZWF0dXJlIGlzIGVuYWJsZWQvZGlzYWJsZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwOTIxLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMTQ6MTg6MzAuNTU3OTYzOTRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg3NTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImxpYi9LY29uZmlnLmRlYnVnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI5ODUsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjI5ODU6XFx0XFx0ICBfX2xzaHJkaTMoKSBoZWxwZXIgZnVuY3Rpb25zIHVzZWQgdG8gaW1wbGVtZW50IDY0LWJpdCBhcml0aG1ldGljXFxuMjk4NjpcXHRcXHQgIHNoaWZ0IGxlZnQsIGFyaXRobWV0aWMgc2hpZnQgcmlnaHQgYW5kIGxvZ2ljYWwgc2hpZnQgcmlnaHQsXFxuMjk4NzpcXHRcXHQgIHJlc3BlY3RpdmVseSwgb24gYSAzMi1iaXQgQ1BVcy5cXG4yOTg4OlxcdFxcbjI5ODk6XFx0Y29uZmlnIFNMVUJfS1VOSVRfVEVTVFxcbjI5OTA6XFx0XFx0dHJpc3RhdGUgXFxcIktVbml0IHRlc3QgZm9yIFNMVUIgY2FjaGUgZXJyb3IgZGV0ZWN0aW9uXFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuMjk5MTpcXHRcXHRkZXBlbmRzIG9uIFNMVUJfREVCVUcgXFx1MDAyNlxcdTAwMjYgS1VOSVRcXG4yOTkyOlxcdFxcdGRlZmF1bHQgS1VOSVRfQUxMX1RFU1RTXFxuMjk5MzpcXHRcXHRoZWxwXFxuMjk5NDpcXHRcXHQgIFRoaXMgYnVpbGRzIFNMVUIgYWxsb2NhdG9yIHVuaXQgdGVzdC5cXG4yOTk1OlxcdFxcdCAgVGVzdHMgU0xVQiBjYWNoZSBkZWJ1Z2dpbmcgZnVuY3Rpb25hbGl0eS5cXG4yOTk2OlxcdFxcdCAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gS1VuaXQgYW5kIHVuaXQgdGVzdHMgaW4gZ2VuZXJhbCBwbGVhc2UgcmVmZXJcXG4yOTk3OlxcdFxcdCAgdG8gdGhlIEtVbml0IGRvY3VtZW50YXRpb24gaW4gRG9jdW1lbnRhdGlvbi9kZXYtdG9vbHMva3VuaXQvLlxcbjI5OTg6XFx0XFxuMjk5OTpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuMzAwMDpcXHRcXG4zMDAxOlxcdGNvbmZpZyBSQVRJT05BTF9LVU5JVF9URVNUXFxuMzAwMjpcXHRcXHR0cmlzdGF0ZSBcXFwiS1VuaXQgdGVzdCBmb3IgcmF0aW9uYWwuY1xcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcbjMwMDM6XFx0XFx0ZGVwZW5kcyBvbiBLVU5JVCBcXHUwMDI2XFx1MDAyNiBSQVRJT05BTFxcbjMwMDQ6XFx0XFx0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMTQ6MTg6MzAuNTU4NDY0NFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2OTQ2Njk5NTM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIGBrZnJlZWAgU2FmZXR5IFBhdGNoKipcblxuT2theSwgbGV0IG1lIGJyZWFrIHRoaXMgZG93bi4gVGhlIGRlcGVuZGVuY2llcyBoZXJlIGFyZSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiBgU0xVQl9ERUJVR2AgYW5kIGBLVU5JVGAuIFNvIEknbGwgbmVlZCB0byBlbmFibGUgYFNMVUJfS1VOSVRfVEVTVGAsIGBTTFVCX0RFQlVHYCwgYW5kIGBLVU5JVGAgdG8gbWFrZSBzdXJlIHRoZSB0ZXN0cyBydW4gYW5kIEkgaGF2ZSB0aGUgZGVidWdnaW5nIGluZm9ybWF0aW9uIEkgbmVlZC4gSSdsbCBub3RlIHRoYXQgYFNMVUJfREVCVUdgIGlzIG9mdGVuIGVuYWJsZWQgYnkgZGVmYXVsdCBpbiBkZWJ1ZyBrZXJuZWxzLCBidXQgaXQncyBhbHdheXMgYmVzdCB0byBiZSBleHBsaWNpdCBhYm91dCBpdCBpbiBhIGNvbmZpZ3VyYXRpb24uXG5cblRoZSBjcml0aWNhbCBjaGFuZ2UgaXMgaW4gYGluY2x1ZGUvbGludXgvc2xhYi5oYC4gU2luY2UgaXQncyBpbiBhIGhlYWRlciwgdGhpcyBpcyBhIHBlcnZhc2l2ZSBjaGFuZ2UgdGhhdCBpbXBhY3RzIHRoZSBlbnRpcmUga2VybmVsLCBhbmQgZG9lc24ndCByZWx5IG9uIGFueSBzcGVjaWZpYyBtb2R1bGUgY29uZmlnLiBUaGlzIGNoYW5nZSBlbmZvcmNlcyBzdHJpY3RlciB2YWxpZGF0aW9uIG9mIHBvaW50ZXJzIHBhc3NlZCB0byBga2ZyZWVgLCB3aGljaCBtZWFucyB0aGF0IGludmFsaWQgcG9pbnRlcnMgbGlrZSBgRVJSX1BUUmAgd2lsbCBub3cgbGVhZCB0byBhIGNyYXNoLCByYXRoZXIgdGhhbiBiZWluZyBzaWxlbnRseSBpZ25vcmVkLiBUaGlzIGlzIGV4YWN0bHkgdGhlIGtpbmQgb2YgY2hhbmdlIHRoYXQncyBwcmltZSBmb3IgZnV6emluZyEgQ2F0Y2hpbmcgdGhvc2Ugc3VidGxlIG1lbW9yeSBidWdzIGVhcmx5IGlzIGNydWNpYWwuXG5cblRoZXJlZm9yZSwgSSdtIHNldHRpbmcgYFdvcnRoRnV6emluZz10cnVlYC5cblxuQmVjYXVzZSB0aGlzIGlzIGEgZ2xvYmFsIGNoYW5nZSBhZmZlY3RpbmcgY29yZSBmdW5jdGlvbnMgbGlrZSBga2ZyZWVgIGFuZCBga3JlYWxsb2NgIHRoYXQgYXJlIHVzZWQgZXZlcnl3aGVyZSwgYEZvY3VzU3ltYm9sc2Agd2lsbCBiZSBlbXB0eS4gSSB3b24ndCBsaW1pdCB0aGUgZnV6emluZyB0byBzcGVjaWZpYyBtb2R1bGVzIGluIHRoaXMgY2FzZS5cblxuU28sIGBFbmFibGVDb25maWdzYCB3aWxsIGJlIGBbXCJTTFVCX0tVTklUX1RFU1RcIiwgXCJTTFVCX0RFQlVHXCIsIFwiS1VOSVRcIl1gLlxuXG5NeSByZWFzb25pbmcgZm9yIHRoaXMgYXNzZXNzbWVudCBpcyB0aGF0IHRoZSBwYXRjaCBtb2RpZmllcyBgWkVST19PUl9OVUxMX1BUUmAgdG8gb25seSBjaGVjayBmb3IgZXhhY3QgMCBvciBgWkVST19TSVpFX1BUUmAuIFRoaXMgbWVhbnMgdGhhdCBzbWFsbCBpbnZhbGlkIHBvaW50ZXJzIChsaWtlIGBFUlJfUFRSYCkgcGFzc2VkIHRvIGBrZnJlZWAgd2lsbCBub3cgbGVhZCB0byBhIGNyYXNoIGluc3RlYWQgb2YgYmVpbmcgc2lsZW50bHkgaWdub3JlZC4gVGhpcyBpcyBhIGNydWNpYWwgY2hhbmdlIHRvIHRoZSBjb3JlIGFsbG9jYXRvciB0aGF0IGNhbiBleHBvc2UgcG90ZW50aWFsIGJ1Z3MgdGhyb3VnaG91dCB0aGUgZW50aXJlIGtlcm5lbC4gVGhlIGluY2x1c2lvbiBvZiBhIEtVbml0IHRlc3QgaXMgYWxzbyBhbiBleGNlbGxlbnQgY29uZmlybWF0aW9uIG9mIHRoaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNDgwLCJPdXRwdXRUb2tlbnMiOjEyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDE0OjE4OjM3LjUwNTE2OTkzNVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NjAwMTkxMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiU0xVQl9LVU5JVF9URVNUXCIsXG4gICAgXCJTTFVCX0RFQlVHXCIsXG4gICAgXCJLVU5JVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBaRVJPX09SX05VTExfUFRSIHRvIHN0cmljdGx5IGNoZWNrIGZvciAwIG9yIFpFUk9fU0laRV9QVFIsIG1lYW5pbmcgc21hbGwgaW52YWxpZCBwb2ludGVycyAobGlrZSBFUlJfUFRSKSBwYXNzZWQgdG8ga2ZyZWUgd2lsbCBub3cgY2F1c2UgYSBjcmFzaCBpbnN0ZWFkIG9mIGJlaW5nIHNpbGVudGx5IGlnbm9yZWQuIFRoaXMgaXMgYSBjb3JlIGFsbG9jYXRvciBjaGFuZ2UgdGhhdCBjYW4gZXhwb3NlIGJ1Z3MgYWNyb3NzIHRoZSBrZXJuZWwuIEEga3VuaXQgdGVzdCBpcyBhbHNvIGFkZGVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNMVUJfS1VOSVRfVEVTVFwiLFxuICAgIFwiU0xVQl9ERUJVR1wiLFxuICAgIFwiS1VOSVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgWkVST19PUl9OVUxMX1BUUiB0byBzdHJpY3RseSBjaGVjayBmb3IgMCBvciBaRVJPX1NJWkVfUFRSLCBtZWFuaW5nIHNtYWxsIGludmFsaWQgcG9pbnRlcnMgKGxpa2UgRVJSX1BUUikgcGFzc2VkIHRvIGtmcmVlIHdpbGwgbm93IGNhdXNlIGEgY3Jhc2ggaW5zdGVhZCBvZiBiZWluZyBzaWxlbnRseSBpZ25vcmVkLiBUaGlzIGlzIGEgY29yZSBhbGxvY2F0b3IgY2hhbmdlIHRoYXQgY2FuIGV4cG9zZSBidWdzIGFjcm9zcyB0aGUga2VybmVsLiBBIGt1bml0IHRlc3QgaXMgYWxzbyBhZGRlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMTQ6MTg6MzcuNjcxMTc5NTA3WiIsIlNlcSI6MTMsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MDgzOTc1NjYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMTQ6MTg6MzcuNjcxOTA1NTc3WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjgwODMyMzEzNzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBkZWZpbml0aW9uIG9mIGBaRVJPX1NJWkVfUFRSYCBhbmQgYFpFUk9fT1JfTlVMTF9QVFJgIGluIHRoZSBzbGFiIGFsbG9jYXRvciBoZWFkZXJzIHRvIGVuc3VyZSBwcm9wZXIgYWxpZ25tZW50IGFuZCBzdHJpY3RlciBwb2ludGVyIGNoZWNraW5nLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBhbGxvY2F0aW9ucywgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UsIG9yIGxvZ2ljIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBBbnkgYnVncyByZXN1bHRpbmcgZnJvbSB0aGVzZSBjaGFuZ2VzIHdvdWxkIG1hbmlmZXN0IGFzIGludmFsaWQgcG9pbnRlciBkZXJlZmVyZW5jZXMgb3IgbWVtb3J5IGNvcnJ1cHRpb24sIHdoaWNoIGFyZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgc3RhbmRhcmQgS0FTQU4gYW5kIG90aGVyIGRlZmF1bHQgYnVnIGRldGVjdG9ycy4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2Ugb3IgaW5mby1sZWFrcyB0aGF0IHdvdWxkIG5lY2Vzc2l0YXRlIEtNU0FOLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDc1MzdjNjEyOGQ1OWYxZjA1NWEwODk2ZGRjNWVjMGNlZjc1NGVkOTJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyAxMSAxNDoxODowMCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc2xhYi5oIGIvaW5jbHVkZS9saW51eC9zbGFiLmhcbmluZGV4IDMyYzlmOGVkN2FlMjAuLjAyM2UxMGFiNzdmOGQgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L3NsYWIuaFxuKysrIGIvaW5jbHVkZS9saW51eC9zbGFiLmhcbkBAIC0yNTksMTYgKzI1OSwyMyBAQCBlbnVtIF9zbGFiX2ZsYWdfYml0cyB7XG4gXG4gLypcbiAgKiBaRVJPX1NJWkVfUFRSIHdpbGwgYmUgcmV0dXJuZWQgZm9yIHplcm8gc2l6ZWQga21hbGxvYyByZXF1ZXN0cy5cbisgKiBJdCBzYXRpc2ZpZXMgdGhlIGFsaWdubWVudCBwcm9taXNlZCBieSBfX2Fzc3VtZV9rbWFsbG9jX2FsaWdubWVudFxuKyAqIGFuZCBrZWVwcyB0aGUgaGlzdG9yaWMgdmFsdWUgMTYgd2hlcmUgdGhhdCBpcyBhbHJlYWR5IGFsaWduZWQuXG4gICpcbiAgKiBEZXJlZmVyZW5jaW5nIFpFUk9fU0laRV9QVFIgd2lsbCBsZWFkIHRvIGEgZGlzdGluY3QgYWNjZXNzIGZhdWx0LlxuICAqXG4gICogWkVST19TSVpFX1BUUiBjYW4gYmUgcGFzc2VkIHRvIGtmcmVlIHRob3VnaCBpbiB0aGUgc2FtZSB3YXkgdGhhdCBOVUxMIGNhbi5cbiAgKiBCb3RoIG1ha2Uga2ZyZWUgYSBuby1vcC5cbiAgKi9cbi0jZGVmaW5lIFpFUk9fU0laRV9QVFIgKCh2b2lkICopMTYpXG4rI2RlZmluZSBaRVJPX1NJWkVfUFRSICgodm9pZCAqKShBUkNIX0tNQUxMT0NfTUlOQUxJR04gXHUwMDNlIDE2ID8gXFxcbitcdFx0XHRcdEFSQ0hfS01BTExPQ19NSU5BTElHTiA6IDE2KSlcbiBcbi0jZGVmaW5lIFpFUk9fT1JfTlVMTF9QVFIoeCkgKCh1bnNpZ25lZCBsb25nKSh4KSBcdTAwM2M9IFxcXG4tXHRcdFx0XHQodW5zaWduZWQgbG9uZylaRVJPX1NJWkVfUFRSKVxuKyNkZWZpbmUgWkVST19PUl9OVUxMX1BUUih4KVx0XHRcdFx0XHRcdFxcXG4rKHtcdFx0XHRcdFx0XHRcdFx0XHRcXFxuK1x0dW5zaWduZWQgbG9uZyBfX3pvbl9wdHIgPSAodW5zaWduZWQgbG9uZykoeCk7XHRcdFx0XFxcbitcdF9fem9uX3B0ciA9PSAwIHx8XHRcdFx0XHRcdFx0XFxcbitcdF9fem9uX3B0ciA9PSAodW5zaWduZWQgbG9uZylaRVJPX1NJWkVfUFRSO1x0XHRcdFxcXG4rfSlcbiBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9rYXNhbi5oXHUwMDNlXG4gXG5AQCAtNjIyLDYgKzYyOSwxMyBAQCBzdGF0aWMgaW5saW5lIGJvb2wga21lbV9kdW1wX29iaih2b2lkICpvYmplY3QpIHsgcmV0dXJuIGZhbHNlOyB9XG4gI2RlZmluZSBLTUFMTE9DX1NISUZUX0xPVyBpbG9nMihLTUFMTE9DX01JTl9TSVpFKVxuICNlbmRpZlxuIFxuKy8qXG4rICogS2VlcCBaRVJPX1NJWkVfUFRSIGF0IG1vc3QgMTI4LCBpLmUuIGJlbG93IDB4MTAwOiBMSVNUX1BPSVNPTjEgaXNcbisgKiAweDEwMCB3aGVuIFBPSVNPTl9QT0lOVEVSX0RFTFRBIGlzIDAsIGFuZCBubyBhcmNoaXRlY3R1cmUgY3VycmVudGx5XG4rICogaGFzIGFuIEFSQ0hfS01BTExPQ19NSU5BTElHTiBhYm92ZSAxMjguXG4rICovXG4rc3RhdGljX2Fzc2VydChBUkNIX0tNQUxMT0NfTUlOQUxJR04gXHUwMDNjIDB4MTAwKTtcbitcbiAvKlxuICAqIFNldHRpbmcgQVJDSF9TTEFCX01JTkFMSUdOIGluIGFyY2ggaGVhZGVycyBhbGxvd3MgYSBkaWZmZXJlbnQgYWxpZ25tZW50LlxuICAqIEludGVuZGVkIGZvciBhcmNoZXMgdGhhdCBnZXQgbWlzYWxpZ25tZW50IGZhdWx0cyBldmVuIGZvciA2NCBiaXQgaW50ZWdlclxuZGlmZiAtLWdpdCBhL2xpYi90ZXN0cy9zbHViX2t1bml0LmMgYi9saWIvdGVzdHMvc2x1Yl9rdW5pdC5jXG5pbmRleCBmYTZkMzFkYmNhMTY2Li5hMDJmYzZiNDAxZTNlIDEwMDY0NFxuLS0tIGEvbGliL3Rlc3RzL3NsdWJfa3VuaXQuY1xuKysrIGIvbGliL3Rlc3RzL3NsdWJfa3VuaXQuY1xuQEAgLTM4MCw2ICszODAsNDggQEAgc3RhdGljIHZvaWQgdGVzdF9rbWFsbG9jX2tmcmVlX25vbG9jayhzdHJ1Y3Qga3VuaXQgKnRlc3QpXG4gfVxuICNlbmRpZlxuIFxuK3N0YXRpYyB2b2lkIHRlc3RfemVyb19zaXplX2FsbG9jKHN0cnVjdCBrdW5pdCAqdGVzdClcbit7XG4rXHR1bnNpZ25lZCBsb25nIHpzcCA9ICh1bnNpZ25lZCBsb25nKVpFUk9fU0laRV9QVFI7XG4rXHR2b2lkICpwLCAqcjtcbitcbitcdHN0YXRpY19hc3NlcnQoKHVuc2lnbmVkIGxvbmcpWkVST19TSVpFX1BUUiAlIEFSQ0hfS01BTExPQ19NSU5BTElHTiA9PSAwKTtcbitcbitcdHAgPSBrbWFsbG9jKDAsIEdGUF9LRVJORUwpO1xuK1x0S1VOSVRfRVhQRUNUX1BUUl9FUSh0ZXN0LCBwLCBaRVJPX1NJWkVfUFRSKTtcbitcdEtVTklUX0VYUEVDVF9FUSh0ZXN0LCBrc2l6ZShwKSwgMCk7XG4rXHRrZnJlZShwKTtcbitcbitcdEtVTklUX0VYUEVDVF9QVFJfRVEodGVzdCwga3phbGxvYygwLCBHRlBfS0VSTkVMKSwgWkVST19TSVpFX1BUUik7XG4rXHRLVU5JVF9FWFBFQ1RfUFRSX0VRKHRlc3QsIGttYWxsb2NfYXJyYXkoMCwgOCwgR0ZQX0tFUk5FTCksIFpFUk9fU0laRV9QVFIpO1xuK1x0S1VOSVRfRVhQRUNUX1BUUl9FUSh0ZXN0LCBrY2FsbG9jKDQsIDAsIEdGUF9LRVJORUwpLCBaRVJPX1NJWkVfUFRSKTtcbitcbitcdHAgPSBrdm1hbGxvYygwLCBHRlBfS0VSTkVMKTtcbitcdEtVTklUX0VYUEVDVF9QVFJfRVEodGVzdCwgcCwgWkVST19TSVpFX1BUUik7XG4rXHRrdmZyZWUocCk7XG4rXG4rXHRwID0ga3JlYWxsb2MoTlVMTCwgMCwgR0ZQX0tFUk5FTCk7XG4rXHRLVU5JVF9FWFBFQ1RfUFRSX0VRKHRlc3QsIHAsIFpFUk9fU0laRV9QVFIpO1xuK1x0ciA9IGtyZWFsbG9jKHAsIDY0LCBHRlBfS0VSTkVMKTtcbitcdEtVTklUX0VYUEVDVF9GQUxTRSh0ZXN0LCBaRVJPX09SX05VTExfUFRSKHIpKTtcbitcdHAgPSBrcmVhbGxvYyhyLCAwLCBHRlBfS0VSTkVMKTtcbitcdEtVTklUX0VYUEVDVF9QVFJfRVEodGVzdCwgcCwgWkVST19TSVpFX1BUUik7XG4rXHRrZnJlZShwKTtcbitcbitcdC8qIE9ubHkgTlVMTCBhbmQgdGhlIHplcm8tc2l6ZSBzZW50aW5lbCBtYXRjaC4gKi9cbitcdEtVTklUX0VYUEVDVF9UUlVFKHRlc3QsIFpFUk9fT1JfTlVMTF9QVFIoTlVMTCkpO1xuK1x0S1VOSVRfRVhQRUNUX1RSVUUodGVzdCwgWkVST19PUl9OVUxMX1BUUihaRVJPX1NJWkVfUFRSKSk7XG4rXHRLVU5JVF9FWFBFQ1RfRkFMU0UodGVzdCwgWkVST19PUl9OVUxMX1BUUigodm9pZCAqKTEpKTtcbitcdEtVTklUX0VYUEVDVF9GQUxTRSh0ZXN0LCBaRVJPX09SX05VTExfUFRSKCh2b2lkICopKHpzcCAtIDEpKSk7XG4rXHRLVU5JVF9FWFBFQ1RfRkFMU0UodGVzdCwgWkVST19PUl9OVUxMX1BUUigodm9pZCAqKSh6c3AgKyAxKSkpO1xuK1x0S1VOSVRfRVhQRUNUX0ZBTFNFKHRlc3QsIFpFUk9fT1JfTlVMTF9QVFIoKHZvaWQgKikoenNwICogMikpKTtcbitcbitcdC8qIGZyZWVpbmcgdGhlIHNlbnRpbmVsIG11c3Qgc3RheSBhIG5vLW9wICovXG4rXHRrZnJlZShaRVJPX1NJWkVfUFRSKTtcbitcdGtmcmVlX3NlbnNpdGl2ZShaRVJPX1NJWkVfUFRSKTtcbitcdGt2ZnJlZShaRVJPX1NJWkVfUFRSKTtcbit9XG4rXG4gc3RhdGljIGludCB0ZXN0X2luaXQoc3RydWN0IGt1bml0ICp0ZXN0KVxuIHtcbiBcdHNsYWJfZXJyb3JzID0gMDtcbkBAIC00MDQsNiArNDQ2LDcgQEAgc3RhdGljIHN0cnVjdCBrdW5pdF9jYXNlIHRlc3RfY2FzZXNbXSA9IHtcbiBcdEtVTklUX0NBU0UodGVzdF9rZnJlZV9yY3Vfd3FfZGVzdHJveSksXG4gXHRLVU5JVF9DQVNFKHRlc3RfbGVha19kZXN0cm95KSxcbiBcdEtVTklUX0NBU0UodGVzdF9rcmVhbGxvY19yZWR6b25lX3plcm9pbmcpLFxuK1x0S1VOSVRfQ0FTRSh0ZXN0X3plcm9fc2l6ZV9hbGxvYyksXG4gI2lmZGVmIENPTkZJR19QRVJGX0VWRU5UU1xuIFx0S1VOSVRfQ0FTRV9TTE9XKHRlc3Rfa21hbGxvY19rZnJlZV9ub2xvY2spLFxuICNlbmRpZlxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMTQ6MTg6MzcuNjcxOTA4NDQ3WiIsIlNlcSI6MTUsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgwODMxNzQ1ODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBTbGFiIEFsbG9jYXRvciBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIGRvd24gdGhpcyBwYXRjaC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIGl0J3MgdHdlYWtpbmcgc29tZSBmdW5kYW1lbnRhbCBkZWZpbml0aW9ucyBpbiBgbGludXgvc2xhYi5oYCwgc3BlY2lmaWNhbGx5IGBaRVJPX1NJWkVfUFRSYCBhbmQgYFpFUk9fT1JfTlVMTF9QVFJgLiBJdCBsb29rcyBsaWtlIGl0J3MgdHJ5aW5nIHRvIHRpZ2h0ZW4gdXAgdGhlIGFsaWdubWVudCBhbmQgcG9pbnRlciBjb21wYXJpc29uIHdpdGhpbiB0aGUgc2xhYiBhbGxvY2F0b3IgY29udGV4dC5cblxuVGhlIG1vc3Qgbm90YWJsZSBjaGFuZ2UgaXMgaG93IGBaRVJPX1NJWkVfUFRSYCBpcyBiZWluZyBoYW5kbGVkLiBQcmV2aW91c2x5LCBpdCB3YXMgYSBoYXJkY29kZWQgYWRkcmVzcy4gTm93LCBpdCdzIGR5bmFtaWNhbGx5IHNldCB0byBlaXRoZXIgYEFSQ0hfS01BTExPQ19NSU5BTElHTmAgKGlmIHRoYXQncyBsYXJnZXIgdGhhbiAxNikgb3IgMTYsIHdoaWNoIHN1Z2dlc3RzIHRoZXkncmUgdHJ5aW5nIHRvIGFsaWduIGl0IHdpdGggdGhlIGtlcm5lbCdzIG1pbmltdW0gYWxsb2NhdGlvbiBhbGlnbm1lbnQgcmVxdWlyZW1lbnRzLiBUaGUgYWRkaXRpb24gb2YgdGhlIHN0YXRpYyBhc3NlcnQgYEFSQ0hfS01BTExPQ19NSU5BTElHTiBcdTAwM2MgMHgxMDBgIGlzIGdvb2QsIGEgc2FuaXR5IGNoZWNrIHRvIGtlZXAgdGhpbmdzIHdpdGhpbiByZWFzb25hYmxlIGJvdW5kcywgSSdkIHNheS5cblxuVGhlIGBaRVJPX09SX05VTExfUFRSYCBjaGFuZ2UgbG9va3MgbGlrZSBhIGNvcnJlY3Rpb24uIEluc3RlYWQgb2YgY2hlY2tpbmcgaWYgYSBwb2ludGVyIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byBgWkVST19TSVpFX1BUUmAsIGl0J3Mgbm93IGV4cGxpY2l0bHkgY2hlY2tpbmcgZm9yIDAgKE5VTEwpIG9yICpleGFjdGx5KiBgWkVST19TSVpFX1BUUmAuIFRoaXMgaXMgYSBkZWZpbml0ZSBpbXByb3ZlbWVudCBpbiB0ZXJtcyBvZiBwb2ludGVyIGNvbXBhcmlzb24gYWNjdXJhY3kuIFRoZSBhZGRpdGlvbiBvZiBhIEtVbml0IHRlc3QgZm9yIHplcm8tc2l6ZSBhbGxvY2F0aW9ucyBpcyBhbHNvIGEgcGx1cyBmb3IgZW5zdXJpbmcgdGhlIGZpeCBmdW5jdGlvbnMgYXMgaW50ZW5kZWQuXG5cbk5vdywgdGhlIGltcG9ydGFudCBxdWVzdGlvbiBpczogZG9lcyB0aGlzIGludHJvZHVjZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3M/IE5vLCBmcm9tIG15IGFzc2Vzc21lbnQsIGl0IGRvZXNuJ3QuIFRoaXMgaXMgYWJvdXQgZW5zdXJpbmcgcHJvcGVyIGFsaWdubWVudCBhbmQgbW9yZSBhY2N1cmF0ZSBwb2ludGVyIGNvbXBhcmlzb25zLCBub3QgYWJvdXQgaW5pdGlhbGl6aW5nIG1lbW9yeS4gVGhlIHBhdGNoIG1lcmVseSBjaGFuZ2VzIHRoZSB2YWx1ZSBvZiBgWkVST19TSVpFX1BUUmAgdG8gYWNjb21tb2RhdGUgdGhlIGFsaWdubWVudCwgYW5kIHRoZSBjb21wYXJpc29uIGlzIHNoYXJwZW5lZC4gSXQgZG9lc24ndCBzZWVtIHRvIHRvdWNoIGFueSBtZW1vcnkgYWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBwYXRocyBpbiBhIHdheSB0aGF0IHdvdWxkIGludHJvZHVjZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgdnVsbmVyYWJpbGl0aWVzLlxuXG5UaGVyZWZvcmUsIGBOZWVkc0tNU0FOYCBzaG91bGQgZGVmaW5pdGVseSBiZSBmYWxzZSBoZXJlLiBLQVNBTiBhbmQgb3RoZXIgdG9vbHMgbWlnaHQgY2F0Y2ggaXNzdWVzIGlmIHRoaXMgY2hhbmdlIGJyZWFrcyBzb21ldGhpbmcgaW4gdGhlIHBvaW50ZXIgY2hlY2tpbmcgYnV0IEtNU0FOIGlzIGFsbCBhYm91dCBpZGVudGlmeWluZyB1bmluaXRpYWxpemVkIG1lbW9yeSBhY2Nlc3MsIHdoaWNoIGlzIG5vdCBhbiBpc3N1ZSBoZXJlLiBUaGlzIGlzIGEgdGFyZ2V0ZWQgYnVnIGZpeC9pbXByb3ZlbWVudCBmb3IgcG9pbnRlciBoYW5kbGluZyBhbmQgYWxpZ25tZW50IHdpdGhpbiB0aGUgc2xhYiBhbGxvY2F0b3IsIG5vdCBhIEtNU0FOLXJlbGV2YW50IGNoYW5nZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzMxNCwiT3V0cHV0VG9rZW5zIjoxMzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNTYsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQxNDoxODo0NS43NTUwODkwNTdaIiwiU2VxIjoxNiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTUwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBkZWZpbml0aW9uIG9mIGBaRVJPX1NJWkVfUFRSYCBhbmQgYFpFUk9fT1JfTlVMTF9QVFJgIGluIHRoZSBzbGFiIGFsbG9jYXRvciBoZWFkZXJzIHRvIGVuc3VyZSBwcm9wZXIgYWxpZ25tZW50IGFuZCBzdHJpY3RlciBwb2ludGVyIGNoZWNraW5nLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBhbGxvY2F0aW9ucywgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UsIG9yIGxvZ2ljIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBBbnkgYnVncyByZXN1bHRpbmcgZnJvbSB0aGVzZSBjaGFuZ2VzIHdvdWxkIG1hbmlmZXN0IGFzIGludmFsaWQgcG9pbnRlciBkZXJlZmVyZW5jZXMgb3IgbWVtb3J5IGNvcnJ1cHRpb24sIHdoaWNoIGFyZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgc3RhbmRhcmQgS0FTQU4gYW5kIG90aGVyIGRlZmF1bHQgYnVnIGRldGVjdG9ycy4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2Ugb3IgaW5mby1sZWFrcyB0aGF0IHdvdWxkIG5lY2Vzc2l0YXRlIEtNU0FOLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBkZWZpbml0aW9uIG9mIGBaRVJPX1NJWkVfUFRSYCBhbmQgYFpFUk9fT1JfTlVMTF9QVFJgIGluIHRoZSBzbGFiIGFsbG9jYXRvciBoZWFkZXJzIHRvIGVuc3VyZSBwcm9wZXIgYWxpZ25tZW50IGFuZCBzdHJpY3RlciBwb2ludGVyIGNoZWNraW5nLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBhbGxvY2F0aW9ucywgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UsIG9yIGxvZ2ljIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBBbnkgYnVncyByZXN1bHRpbmcgZnJvbSB0aGVzZSBjaGFuZ2VzIHdvdWxkIG1hbmlmZXN0IGFzIGludmFsaWQgcG9pbnRlciBkZXJlZmVyZW5jZXMgb3IgbWVtb3J5IGNvcnJ1cHRpb24sIHdoaWNoIGFyZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgc3RhbmRhcmQgS0FTQU4gYW5kIG90aGVyIGRlZmF1bHQgYnVnIGRldGVjdG9ycy4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2Ugb3IgaW5mby1sZWFrcyB0aGF0IHdvdWxkIG5lY2Vzc2l0YXRlIEtNU0FOLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowhd82k[1] Phase: Succeeded StartedAt: 2026-08-11 14:18:57 +0000 UTC FinishedAt: 2026-08-11 14:18:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhd82k[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-11 14:18:57 +0000 UTC FinishedAt: 2026-08-11 14:18:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhd82k[2] Phase: Succeeded StartedAt: 2026-08-11 14:18:57 +0000 UTC FinishedAt: 2026-08-11 18:03:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhd82k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bcc44b6785f216eb939226ade6e3910baa30516b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB_KUNIT_TEST","SLUB_DEBUG","KUNIT"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bcc44b6785f216eb939226ade6e3910baa30516b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB_KUNIT_TEST","SLUB_DEBUG","KUNIT"],"series_id":"cf1ce7dd-9456-4a36-be8e-43c7cf4f3451","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-11 14:18:57 +0000 UTC FinishedAt: 2026-08-11 18:03:33 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"bcc44b6785f216eb939226ade6e3910baa30516b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB_KUNIT_TEST","SLUB_DEBUG","KUNIT"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},"patched":{"arch":"amd64","commit_hash":"bcc44b6785f216eb939226ade6e3910baa30516b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB_KUNIT_TEST","SLUB_DEBUG","KUNIT"],"series_id":"cf1ce7dd-9456-4a36-be8e-43c7cf4f3451","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowhd82k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bcc44b6785f216eb939226ade6e3910baa30516b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB_KUNIT_TEST","SLUB_DEBUG","KUNIT"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bcc44b6785f216eb939226ade6e3910baa30516b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB_KUNIT_TEST","SLUB_DEBUG","KUNIT"],"series_id":"cf1ce7dd-9456-4a36-be8e-43c7cf4f3451","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-11 14:18:57 +0000 UTC FinishedAt: 2026-08-11 14:19:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhd82k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bcc44b6785f216eb939226ade6e3910baa30516b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB_KUNIT_TEST","SLUB_DEBUG","KUNIT"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bcc44b6785f216eb939226ade6e3910baa30516b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB_KUNIT_TEST","SLUB_DEBUG","KUNIT"],"series_id":"cf1ce7dd-9456-4a36-be8e-43c7cf4f3451","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-11 14:18:57 +0000 UTC FinishedAt: 2026-08-11 14:19:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"bcc44b6785f216eb939226ade6e3910baa30516b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB_KUNIT_TEST","SLUB_DEBUG","KUNIT"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowhd82k/series-workflowhd82k-convert-artifact-1412192596/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhd82k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bcc44b6785f216eb939226ade6e3910baa30516b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB_KUNIT_TEST","SLUB_DEBUG","KUNIT"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bcc44b6785f216eb939226ade6e3910baa30516b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB_KUNIT_TEST","SLUB_DEBUG","KUNIT"],"series_id":"cf1ce7dd-9456-4a36-be8e-43c7cf4f3451","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-11 14:19:08 +0000 UTC FinishedAt: 2026-08-11 14:37:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhd82k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bcc44b6785f216eb939226ade6e3910baa30516b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB_KUNIT_TEST","SLUB_DEBUG","KUNIT"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bcc44b6785f216eb939226ade6e3910baa30516b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB_KUNIT_TEST","SLUB_DEBUG","KUNIT"],"series_id":"cf1ce7dd-9456-4a36-be8e-43c7cf4f3451","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-11 14:19:08 +0000 UTC FinishedAt: 2026-08-11 14:37:27 +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:*682c41b5-abd8-49c9-a64c-adb5c003c4f0,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-workflowhd82k/series-workflowhd82k-convert-artifact-1412192596/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": "0bca78e6-2a9a-48a5-8a3e-d847295cd034", "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-workflowhd82k/series-workflowhd82k-build-action-3564410066/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhd82k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bcc44b6785f216eb939226ade6e3910baa30516b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB_KUNIT_TEST","SLUB_DEBUG","KUNIT"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bcc44b6785f216eb939226ade6e3910baa30516b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB_KUNIT_TEST","SLUB_DEBUG","KUNIT"],"series_id":"cf1ce7dd-9456-4a36-be8e-43c7cf4f3451","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-11 14:19:08 +0000 UTC FinishedAt: 2026-08-11 14:37:17 +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:*682c41b5-abd8-49c9-a64c-adb5c003c4f0,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-workflowhd82k/series-workflowhd82k-convert-artifact-1412192596/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": "0bca78e6-2a9a-48a5-8a3e-d847295cd034", "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-workflowhd82k/series-workflowhd82k-build-action-3564410066/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhd82k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bcc44b6785f216eb939226ade6e3910baa30516b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB_KUNIT_TEST","SLUB_DEBUG","KUNIT"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bcc44b6785f216eb939226ade6e3910baa30516b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB_KUNIT_TEST","SLUB_DEBUG","KUNIT"],"series_id":"cf1ce7dd-9456-4a36-be8e-43c7cf4f3451","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-11 14:37:27 +0000 UTC FinishedAt: 2026-08-11 14:37:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhd82k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bcc44b6785f216eb939226ade6e3910baa30516b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB_KUNIT_TEST","SLUB_DEBUG","KUNIT"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bcc44b6785f216eb939226ade6e3910baa30516b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB_KUNIT_TEST","SLUB_DEBUG","KUNIT"],"series_id":"cf1ce7dd-9456-4a36-be8e-43c7cf4f3451","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-11 14:37:27 +0000 UTC FinishedAt: 2026-08-11 14:37:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhd82k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bcc44b6785f216eb939226ade6e3910baa30516b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB_KUNIT_TEST","SLUB_DEBUG","KUNIT"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bcc44b6785f216eb939226ade6e3910baa30516b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB_KUNIT_TEST","SLUB_DEBUG","KUNIT"],"series_id":"cf1ce7dd-9456-4a36-be8e-43c7cf4f3451","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-11 14:37:27 +0000 UTC FinishedAt: 2026-08-11 14:37:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhd82k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bcc44b6785f216eb939226ade6e3910baa30516b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB_KUNIT_TEST","SLUB_DEBUG","KUNIT"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bcc44b6785f216eb939226ade6e3910baa30516b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB_KUNIT_TEST","SLUB_DEBUG","KUNIT"],"series_id":"cf1ce7dd-9456-4a36-be8e-43c7cf4f3451","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-11 14:37:27 +0000 UTC FinishedAt: 2026-08-11 14:37:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"bcc44b6785f216eb939226ade6e3910baa30516b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB_KUNIT_TEST","SLUB_DEBUG","KUNIT"],"series_id":"cf1ce7dd-9456-4a36-be8e-43c7cf4f3451","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowhd82k/series-workflowhd82k-convert-artifact-2900721171/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhd82k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bcc44b6785f216eb939226ade6e3910baa30516b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB_KUNIT_TEST","SLUB_DEBUG","KUNIT"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bcc44b6785f216eb939226ade6e3910baa30516b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB_KUNIT_TEST","SLUB_DEBUG","KUNIT"],"series_id":"cf1ce7dd-9456-4a36-be8e-43c7cf4f3451","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-11 14:37:38 +0000 UTC FinishedAt: 2026-08-11 14:40:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhd82k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bcc44b6785f216eb939226ade6e3910baa30516b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB_KUNIT_TEST","SLUB_DEBUG","KUNIT"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bcc44b6785f216eb939226ade6e3910baa30516b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB_KUNIT_TEST","SLUB_DEBUG","KUNIT"],"series_id":"cf1ce7dd-9456-4a36-be8e-43c7cf4f3451","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-11 14:37:38 +0000 UTC FinishedAt: 2026-08-11 14:39:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*0bca78e6-2a9a-48a5-8a3e-d847295cd034,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-workflowhd82k/series-workflowhd82k-build-action-3564410066/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowhd82k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bcc44b6785f216eb939226ade6e3910baa30516b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB_KUNIT_TEST","SLUB_DEBUG","KUNIT"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bcc44b6785f216eb939226ade6e3910baa30516b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB_KUNIT_TEST","SLUB_DEBUG","KUNIT"],"series_id":"cf1ce7dd-9456-4a36-be8e-43c7cf4f3451","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-11 14:40:00 +0000 UTC FinishedAt: 2026-08-11 14:40:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhd82k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bcc44b6785f216eb939226ade6e3910baa30516b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB_KUNIT_TEST","SLUB_DEBUG","KUNIT"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bcc44b6785f216eb939226ade6e3910baa30516b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB_KUNIT_TEST","SLUB_DEBUG","KUNIT"],"series_id":"cf1ce7dd-9456-4a36-be8e-43c7cf4f3451","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-11 14:40:00 +0000 UTC FinishedAt: 2026-08-11 14:40:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhd82k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bcc44b6785f216eb939226ade6e3910baa30516b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB_KUNIT_TEST","SLUB_DEBUG","KUNIT"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bcc44b6785f216eb939226ade6e3910baa30516b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB_KUNIT_TEST","SLUB_DEBUG","KUNIT"],"series_id":"cf1ce7dd-9456-4a36-be8e-43c7cf4f3451","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-11 14:40:00 +0000 UTC FinishedAt: 2026-08-11 14:57:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhd82k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bcc44b6785f216eb939226ade6e3910baa30516b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB_KUNIT_TEST","SLUB_DEBUG","KUNIT"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bcc44b6785f216eb939226ade6e3910baa30516b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB_KUNIT_TEST","SLUB_DEBUG","KUNIT"],"series_id":"cf1ce7dd-9456-4a36-be8e-43c7cf4f3451","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-11 14:40:00 +0000 UTC FinishedAt: 2026-08-11 14:57:19 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*682c41b5-abd8-49c9-a64c-adb5c003c4f0,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-workflowhd82k/series-workflowhd82k-convert-artifact-2900721171/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": "9319fae4-4c50-4bc9-960b-b5b83bb77bb5", "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-workflowhd82k/series-workflowhd82k-build-action-2261013575/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhd82k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bcc44b6785f216eb939226ade6e3910baa30516b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB_KUNIT_TEST","SLUB_DEBUG","KUNIT"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bcc44b6785f216eb939226ade6e3910baa30516b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB_KUNIT_TEST","SLUB_DEBUG","KUNIT"],"series_id":"cf1ce7dd-9456-4a36-be8e-43c7cf4f3451","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-11 14:40:00 +0000 UTC FinishedAt: 2026-08-11 14:57:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*682c41b5-abd8-49c9-a64c-adb5c003c4f0,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-workflowhd82k/series-workflowhd82k-convert-artifact-2900721171/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": "9319fae4-4c50-4bc9-960b-b5b83bb77bb5", "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-workflowhd82k/series-workflowhd82k-build-action-2261013575/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhd82k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bcc44b6785f216eb939226ade6e3910baa30516b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB_KUNIT_TEST","SLUB_DEBUG","KUNIT"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bcc44b6785f216eb939226ade6e3910baa30516b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB_KUNIT_TEST","SLUB_DEBUG","KUNIT"],"series_id":"cf1ce7dd-9456-4a36-be8e-43c7cf4f3451","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-11 14:57:19 +0000 UTC FinishedAt: 2026-08-11 14:57:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhd82k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bcc44b6785f216eb939226ade6e3910baa30516b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB_KUNIT_TEST","SLUB_DEBUG","KUNIT"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bcc44b6785f216eb939226ade6e3910baa30516b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB_KUNIT_TEST","SLUB_DEBUG","KUNIT"],"series_id":"cf1ce7dd-9456-4a36-be8e-43c7cf4f3451","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-11 14:57:19 +0000 UTC FinishedAt: 2026-08-11 14:57:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhd82k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bcc44b6785f216eb939226ade6e3910baa30516b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB_KUNIT_TEST","SLUB_DEBUG","KUNIT"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bcc44b6785f216eb939226ade6e3910baa30516b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB_KUNIT_TEST","SLUB_DEBUG","KUNIT"],"series_id":"cf1ce7dd-9456-4a36-be8e-43c7cf4f3451","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-11 14:57:19 +0000 UTC FinishedAt: 2026-08-11 14:59:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhd82k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bcc44b6785f216eb939226ade6e3910baa30516b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB_KUNIT_TEST","SLUB_DEBUG","KUNIT"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bcc44b6785f216eb939226ade6e3910baa30516b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB_KUNIT_TEST","SLUB_DEBUG","KUNIT"],"series_id":"cf1ce7dd-9456-4a36-be8e-43c7cf4f3451","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-11 14:57:19 +0000 UTC FinishedAt: 2026-08-11 14:59:34 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*9319fae4-4c50-4bc9-960b-b5b83bb77bb5,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowhd82k/series-workflowhd82k-build-action-2261013575/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowhd82k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bcc44b6785f216eb939226ade6e3910baa30516b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB_KUNIT_TEST","SLUB_DEBUG","KUNIT"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bcc44b6785f216eb939226ade6e3910baa30516b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB_KUNIT_TEST","SLUB_DEBUG","KUNIT"],"series_id":"cf1ce7dd-9456-4a36-be8e-43c7cf4f3451","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-11 14:59:43 +0000 UTC FinishedAt: 2026-08-11 18:03:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhd82k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bcc44b6785f216eb939226ade6e3910baa30516b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB_KUNIT_TEST","SLUB_DEBUG","KUNIT"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bcc44b6785f216eb939226ade6e3910baa30516b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB_KUNIT_TEST","SLUB_DEBUG","KUNIT"],"series_id":"cf1ce7dd-9456-4a36-be8e-43c7cf4f3451","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-11 14:59:43 +0000 UTC FinishedAt: 2026-08-11 18:03:33 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*0bca78e6-2a9a-48a5-8a3e-d847295cd034,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*9319fae4-4c50-4bc9-960b-b5b83bb77bb5,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowhd82k/series-workflowhd82k-build-action-3564410066/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowhd82k/series-workflowhd82k-build-action-2261013575/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowhd82k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bcc44b6785f216eb939226ade6e3910baa30516b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB_KUNIT_TEST","SLUB_DEBUG","KUNIT"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bcc44b6785f216eb939226ade6e3910baa30516b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB_KUNIT_TEST","SLUB_DEBUG","KUNIT"],"series_id":"cf1ce7dd-9456-4a36-be8e-43c7cf4f3451","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-11 14:59:43 +0000 UTC FinishedAt: 2026-08-11 14:59:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhd82k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bcc44b6785f216eb939226ade6e3910baa30516b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB_KUNIT_TEST","SLUB_DEBUG","KUNIT"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bcc44b6785f216eb939226ade6e3910baa30516b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB_KUNIT_TEST","SLUB_DEBUG","KUNIT"],"series_id":"cf1ce7dd-9456-4a36-be8e-43c7cf4f3451","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-11 14:59:43 +0000 UTC FinishedAt: 2026-08-11 14:59:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},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-workflowhd82k/series-workflowhd82k-convert-artifact-1130644876/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhd82k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bcc44b6785f216eb939226ade6e3910baa30516b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB_KUNIT_TEST","SLUB_DEBUG","KUNIT"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bcc44b6785f216eb939226ade6e3910baa30516b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB_KUNIT_TEST","SLUB_DEBUG","KUNIT"],"series_id":"cf1ce7dd-9456-4a36-be8e-43c7cf4f3451","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-11 14:59:43 +0000 UTC FinishedAt: 2026-08-11 14:59:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhd82k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bcc44b6785f216eb939226ade6e3910baa30516b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB_KUNIT_TEST","SLUB_DEBUG","KUNIT"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bcc44b6785f216eb939226ade6e3910baa30516b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB_KUNIT_TEST","SLUB_DEBUG","KUNIT"],"series_id":"cf1ce7dd-9456-4a36-be8e-43c7cf4f3451","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-11 14:59:43 +0000 UTC FinishedAt: 2026-08-11 14:59:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhd82k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bcc44b6785f216eb939226ade6e3910baa30516b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB_KUNIT_TEST","SLUB_DEBUG","KUNIT"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bcc44b6785f216eb939226ade6e3910baa30516b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB_KUNIT_TEST","SLUB_DEBUG","KUNIT"],"series_id":"cf1ce7dd-9456-4a36-be8e-43c7cf4f3451","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-11 14:59:43 +0000 UTC FinishedAt: 2026-08-11 14:59:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhd82k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bcc44b6785f216eb939226ade6e3910baa30516b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB_KUNIT_TEST","SLUB_DEBUG","KUNIT"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bcc44b6785f216eb939226ade6e3910baa30516b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB_KUNIT_TEST","SLUB_DEBUG","KUNIT"],"series_id":"cf1ce7dd-9456-4a36-be8e-43c7cf4f3451","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-11 14:59:53 +0000 UTC FinishedAt: 2026-08-11 18:03:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhd82k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bcc44b6785f216eb939226ade6e3910baa30516b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB_KUNIT_TEST","SLUB_DEBUG","KUNIT"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bcc44b6785f216eb939226ade6e3910baa30516b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB_KUNIT_TEST","SLUB_DEBUG","KUNIT"],"series_id":"cf1ce7dd-9456-4a36-be8e-43c7cf4f3451","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-11 14:59:53 +0000 UTC FinishedAt: 2026-08-11 18:03:23 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*0bca78e6-2a9a-48a5-8a3e-d847295cd034,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*9319fae4-4c50-4bc9-960b-b5b83bb77bb5,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Fuzz,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowhd82k/series-workflowhd82k-build-action-3564410066/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:/patched,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowhd82k/series-workflowhd82k-build-action-2261013575/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:config,Path:/tmp/config.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowhd82k/series-workflowhd82k-convert-artifact-1130644876/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}