Name: series-workflownsxxp Phase: Succeeded StartedAt: 2026-07-10 02:03:09 +0000 UTC FinishedAt: 2026-07-10 03:46:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflownsxxp[0] Phase: Succeeded StartedAt: 2026-07-10 02:03:09 +0000 UTC FinishedAt: 2026-07-10 02:26:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflownsxxp[0].run-triage Phase: Succeeded StartedAt: 2026-07-10 02:03:09 +0000 UTC FinishedAt: 2026-07-10 02:26:16 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "a635d6748234582ea287c5ffeae28b9b23f91c7e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "a635d6748234582ea287c5ffeae28b9b23f91c7e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "53edc4ca-5c17-4d71-aff5-d4c2b2d2fe83" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "kvmppc_run_core", "kvmhv_run_single_vcpu", "kvmppc_core_prepare_to_enter", "kvmppc_prepare_to_enter" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDAyOjIzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bXBwY19ydW5fY29yZSYjMzQ7LAogICAgJiMzNDtrdm1odl9ydW5fc2luZ2xlX3ZjcHUmIzM0OywKICAgICYjMzQ7a3ZtcHBjX2NvcmVfcHJlcGFyZV90b19lbnRlciYjMzQ7LAogICAgJiMzNDtrdm1wcGNfcHJlcGFyZV90b19lbnRlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBLVk0gZW50cnkvZXhpdCBsb29wIG9uIFBvd2VyUEMgdG8gdXNlIHRoZSBnZW5lcmljIHhmZXJfdG9fZ3Vlc3RfbW9kZSBoZWxwZXJzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIEtWTSBleGVjdXRpb24gcGF0aCBvbiBQb3dlclBDIGFuZCBzaG91bGQgYmUgZnV6emVkIGJ5IHJ1bm5pbmcgS1ZNIHdvcmtsb2FkcyBvbiBQb3dlclBDLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDAyOjIzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMmI2MjMxNjY4NTliZDBhMzI5ZDYyODMxZTNlYjgyZTEzOWJhZDVmYlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDEwIDAyOjIzOjIxIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9LY29uZmlnIGIvYXJjaC9wb3dlcnBjL0tjb25maWdcbmluZGV4IGY3Y2U1ZmZmODFmMDNlLi41MTU1NWEwYjFhMjYyNCAxMDA2NDRcbi0tLSBhL2FyY2gvcG93ZXJwYy9LY29uZmlnXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Bvd2VycGMvS2NvbmZpZ1xuQEAgLTI4MSw2ICYjNDM7MjgxLDcgQEAgY29uZmlnIFBQQ1xuIFx0c2VsZWN0IEhBVkVfUEVSRl9SRUdTXG4gXHRzZWxlY3QgSEFWRV9QRVJGX1VTRVJfU1RBQ0tfRFVNUFxuIFx0c2VsZWN0IEhBVkVfUFJFRU1QVF9EWU5BTUlDX0tFWVxuJiM0MztcdHNlbGVjdCBIQVZFX1BPU0lYX0NQVV9USU1FUlNfVEFTS19XT1JLXG4gXHRzZWxlY3QgSEFWRV9SRVRIT09LXHRcdFx0aWYgS1BST0JFU1xuIFx0c2VsZWN0IEhBVkVfUkVHU19BTkRfU1RBQ0tfQUNDRVNTX0FQSVxuIFx0c2VsZWN0IEhBVkVfUkVMSUFCTEVfU1RBQ0tUUkFDRVxuZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZyBiL2FyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZ1xuaW5kZXggOWEwZDFjMWFjYTZjODAuLmI2YmMyZmM4NmRjYTY3IDEwMDY0NFxuLS0tIGEvYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Bvd2VycGMva3ZtL0tjb25maWdcbkBAIC0yMiw2ICYjNDM7MjIsNyBAQCBjb25maWcgS1ZNXG4gXHRzZWxlY3QgS1ZNX0NPTU1PTlxuIFx0c2VsZWN0IEtWTV9WRklPXG4gXHRzZWxlY3QgSEFWRV9LVk1fSVJRX0JZUEFTU1xuJiM0MztcdHNlbGVjdCBWSVJUX1hGRVJfVE9fR1VFU1RfV09SS1xuIFxuIGNvbmZpZyBLVk1fQk9PSzNTX0hBTkRMRVJcbiBcdGJvb2xcbmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jIGIvYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuY1xuaW5kZXggNjFkYmVlYTMxN2YzYjcuLjNjZmU5YTdiZTljNmEwIDEwMDY0NFxuLS0tIGEvYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuY1xuQEAgLTM4NTMsNyAmIzQzOzM4NTMsOCBAQCBzdGF0aWMgbm9pbmxpbmUgdm9pZCBrdm1wcGNfcnVuX2NvcmUoc3RydWN0IGt2bXBwY192Y29yZSAqdmMpXG4gXHQgKi9cbiBcdGxvY2FsX2lycV9kaXNhYmxlKCk7XG4gXHRoYXJkX2lycV9kaXNhYmxlKCk7XG4tXHRpZiAobGF6eV9pcnFfcGVuZGluZygpIHx8IG5lZWRfcmVzY2hlZCgpIHx8XG4mIzQzO1x0eGZlcl90b19ndWVzdF9tb2RlX3ByZXBhcmUoKTtcbiYjNDM7XHRpZiAobGF6eV9pcnFfcGVuZGluZygpIHx8IHhmZXJfdG9fZ3Vlc3RfbW9kZV93b3JrX3BlbmRpbmcoKSB8fFxuIFx0ICAgIHJlY2hlY2tfc2lnbmFsc19hbmRfbW11KFx1MDAyNmNvcmVfaW5mbykpIHtcbiBcdFx0bG9jYWxfaXJxX2VuYWJsZSgpO1xuIFx0XHR2Yy1cdTAwM2V2Y29yZV9zdGF0ZSA9IFZDT1JFX0lOQUNUSVZFO1xuQEAgLTQ4MjQsMTAgJiM0Mzs0ODI1LDE2IEBAIHN0YXRpYyBpbnQga3ZtcHBjX3J1bl92Y3B1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiBcdFx0dmMtXHUwMDNlcnVubmVyID0gdmNwdTtcbiBcdFx0aWYgKG5fY2VkZWQgPT0gdmMtXHUwMDNlbl9ydW5uYWJsZSkge1xuIFx0XHRcdGt2bXBwY192Y29yZV9ibG9ja2VkKHZjKTtcbi1cdFx0fSBlbHNlIGlmIChuZWVkX3Jlc2NoZWQoKSkge1xuJiM0MztcdFx0fSBlbHNlIGlmIChfX3hmZXJfdG9fZ3Vlc3RfbW9kZV93b3JrX3BlbmRpbmcoKSkge1xuIFx0XHRcdGt2bXBwY192Y29yZV9wcmVlbXB0KHZjKTtcbi1cdFx0XHQvKiBMZXQgc29tZXRoaW5nIGVsc2UgcnVuICovXG4tXHRcdFx0Y29uZF9yZXNjaGVkX2xvY2soXHUwMDI2dmMtXHUwMDNlbG9jayk7XG4mIzQzO1x0XHRcdC8qXG4mIzQzO1x0XHRcdCAqIExldCBzb21ldGhpbmcgZWxzZSBydW4uIFRoZSByYXcgaGVscGVyIGlzIHVzZWQgYXNcbiYjNDM7XHRcdFx0ICogc2lnbmFsIGV4aXRzIGFyZSBhY2NvdW50ZWQgYnkgdGhpcyBwYXRoIGFscmVhZHk7XG4mIzQzO1x0XHRcdCAqIGl0IG1heSBzY2hlZHVsZSgpLCBzbyBkcm9wIHRoZSB2Y29yZSBsb2NrLlxuJiM0MztcdFx0XHQgKi9cbiYjNDM7XHRcdFx0c3Bpbl91bmxvY2soXHUwMDI2dmMtXHUwMDNlbG9jayk7XG4mIzQzO1x0XHRcdHhmZXJfdG9fZ3Vlc3RfbW9kZV9oYW5kbGVfd29yaygpO1xuJiM0MztcdFx0XHRzcGluX2xvY2soXHUwMDI2dmMtXHUwMDNlbG9jayk7XG4gXHRcdFx0aWYgKHZjLVx1MDAzZXZjb3JlX3N0YXRlID09IFZDT1JFX1BSRUVNUFQpXG4gXHRcdFx0XHRrdm1wcGNfdmNvcmVfZW5kX3ByZWVtcHQodmMpO1xuIFx0XHR9IGVsc2Uge1xuQEAgLTQ4OTUsMTIgJiM0Mzs0OTAyLDE2IEBAIGludCBrdm1odl9ydW5fc2luZ2xlX3ZjcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgdGltZV9saW1pdCxcbiBcdFx0XHRydW4tXHUwMDNlZXhpdF9yZWFzb24gPSBLVk1fRVhJVF9GQUlMX0VOVFJZO1xuIFx0XHRcdHJ1bi1cdTAwM2VmYWlsX2VudHJ5LmhhcmR3YXJlX2VudHJ5X2ZhaWx1cmVfcmVhc29uID0gMDtcbiBcdFx0XHR2Y3B1LVx1MDAzZWFyY2gucmV0ID0gcjtcbi1cdFx0XHRyZXR1cm4gcjtcbiYjNDM7XHRcdFx0Z290byBkb25lO1xuIFx0XHR9XG4gXHR9XG4gXG4tXHRpZiAobmVlZF9yZXNjaGVkKCkpXG4tXHRcdGNvbmRfcmVzY2hlZCgpO1xuJiM0MztcdHIgPSBrdm1feGZlcl90b19ndWVzdF9tb2RlX2hhbmRsZV93b3JrKHZjcHUpO1xuJiM0MztcdGlmIChyKSB7XG4mIzQzO1x0XHQvKiAtRUlOVFI6IHNpZ25hbCBwZW5kaW5nLCBleGl0IHRvIHVzZXJzcGFjZSAoS1ZNX0VYSVRfSU5UUikgKi9cbiYjNDM7XHRcdHZjcHUtXHUwMDNlYXJjaC5yZXQgPSByO1xuJiM0MztcdFx0Z290byBkb25lO1xuJiM0MztcdH1cbiBcbiBcdGt2bXBwY191cGRhdGVfdnBhcyh2Y3B1KTtcbiBcbkBAIC00OTE0LDkgJiM0Mzs0OTI1LDEzIEBAIGludCBrdm1odl9ydW5fc2luZ2xlX3ZjcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgdGltZV9saW1pdCxcbiBcbiBcdHZjcHUtXHUwMDNlYXJjaC5zdGF0ZSA9IEtWTVBQQ19WQ1BVX1JVTk5BQkxFO1xuIFxuLVx0aWYgKHNpZ25hbF9wZW5kaW5nKGN1cnJlbnQpKVxuLVx0XHRnb3RvIHNpZ3BlbmQ7XG4tXHRpZiAobmVlZF9yZXNjaGVkKCkgfHwgIWt2bS1cdTAwM2VhcmNoLm1tdV9yZWFkeSlcbiYjNDM7XHR4ZmVyX3RvX2d1ZXN0X21vZGVfcHJlcGFyZSgpO1xuJiM0MztcbiYjNDM7XHQvKlxuJiM0MztcdCAqIElSUXMgYXJlIGRpc2FibGVkIGhlcmUsIHNvIG9uIHBlbmRpbmcgd29yayBiYWlsIHRvIHRoZSBvdXRlciBsb29wLFxuJiM0MztcdCAqIHdoaWNoIGhhbmRsZXMgaXQgdmlhIGt2bV94ZmVyX3RvX2d1ZXN0X21vZGVfaGFuZGxlX3dvcmsoKSBhYm92ZS5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAoeGZlcl90b19ndWVzdF9tb2RlX3dvcmtfcGVuZGluZygpIHx8ICFrdm0tXHUwMDNlYXJjaC5tbXVfcmVhZHkpXG4gXHRcdGdvdG8gb3V0O1xuIFxuIFx0dmNwdS1cdTAwM2VjcHUgPSBwY3B1O1xuQEAgLTUwNjgsMTAgJiM0Mzs1MDgzLDYgQEAgaW50IGt2bWh2X3J1bl9zaW5nbGVfdmNwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCB0aW1lX2xpbWl0LFxuIFxuIFx0cmV0dXJuIHZjcHUtXHUwMDNlYXJjaC5yZXQ7XG4gXG4tIHNpZ3BlbmQ6XG4tXHR2Y3B1LVx1MDAzZXN0YXQuc2lnbmFsX2V4aXRzJiM0MzsmIzQzOztcbi1cdHJ1bi1cdTAwM2VleGl0X3JlYXNvbiA9IEtWTV9FWElUX0lOVFI7XG4tXHR2Y3B1LVx1MDAzZWFyY2gucmV0ID0gLUVJTlRSO1xuICBvdXQ6XG4gXHR2Y3B1LVx1MDAzZWNwdSA9IC0xO1xuIFx0dmNwdS1cdTAwM2VhcmNoLnRocmVhZF9jcHUgPSAtMTtcbmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmMgYi9hcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmNcbmluZGV4IGYzZGRiMjRlY2U3NDlmLi41ZmJhMTk5ZGZkZDZhNiAxMDA2NDRcbi0tLSBhL2FyY2gvcG93ZXJwYy9rdm0vYm9va2UuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9wb3dlcnBjL2t2bS9ib29rZS5jXG5AQCAtNzIyLDYgJiM0Mzs3MjIsNyBAQCBpbnQga3ZtcHBjX2NvcmVfcHJlcGFyZV90b19lbnRlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gXHRpZiAodmNwdS1cdTAwM2VhcmNoLnNoYXJlZC1cdTAwM2Vtc3IgXHUwMDI2IE1TUl9XRSkge1xuIFx0XHRsb2NhbF9pcnFfZW5hYmxlKCk7XG4gXHRcdGt2bV92Y3B1X2hhbHQodmNwdSk7XG4mIzQzO1x0XHRsb2NhbF9pcnFfZGlzYWJsZSgpO1xuIFx0XHRoYXJkX2lycV9kaXNhYmxlKCk7XG4gXG4gXHRcdGt2bXBwY19zZXRfZXhpdF90eXBlKHZjcHUsIEVNVUxBVEVEX01UTVNSV0VfRVhJVFMpO1xuZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9rdm0vcG93ZXJwYy5jIGIvYXJjaC9wb3dlcnBjL2t2bS9wb3dlcnBjLmNcbmluZGV4IDAwMzAyMzk5ZmMzN2I0Li5iZTVlNDhhZTBjNmMyMSAxMDA2NDRcbi0tLSBhL2FyY2gvcG93ZXJwYy9rdm0vcG93ZXJwYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Bvd2VycGMva3ZtL3Bvd2VycGMuY1xuQEAgLTgxLDIzICYjNDM7ODEsNDEgQEAgaW50IGt2bXBwY19wcmVwYXJlX3RvX2VudGVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiBcdGludCByO1xuIFxuIFx0V0FSTl9PTihpcnFzX2Rpc2FibGVkKCkpO1xuJiM0MztcdC8qXG4mIzQzO1x0ICogbG9jYWxfaXJxX2Rpc2FibGUoKSBmaXJzdDogb24gMzItYml0LCBoYXJkX2lycV9kaXNhYmxlKCkgYWxvbmUgaXMgYVxuJiM0MztcdCAqIHJhdyBNU1JbRUVdIGNsZWFyIHRoYXQgYnlwYXNzZXMgdGhlIGxvY2tkZXAvaXJxLXRyYWNpbmcgc3RhdGUsIGFuZFxuJiM0MztcdCAqIHRoZSB4ZmVyX3RvX2d1ZXN0X21vZGUgaGVscGVycyBhc3NlcnQgSVJRcyBhcmUgc2VlbiBhcyBkaXNhYmxlZC5cbiYjNDM7XHQgKi9cbiYjNDM7XHRsb2NhbF9pcnFfZGlzYWJsZSgpO1xuIFx0aGFyZF9pcnFfZGlzYWJsZSgpO1xuIFxuIFx0d2hpbGUgKHRydWUpIHtcbi1cdFx0aWYgKG5lZWRfcmVzY2hlZCgpKSB7XG4mIzQzO1x0XHR4ZmVyX3RvX2d1ZXN0X21vZGVfcHJlcGFyZSgpO1xuJiM0MztcbiYjNDM7XHRcdGlmICh4ZmVyX3RvX2d1ZXN0X21vZGVfd29ya19wZW5kaW5nKCkpIHtcbiYjNDM7XHRcdFx0LypcbiYjNDM7XHRcdFx0ICogVGhlIGhlbHBlciBtdXN0IHJ1biB3aXRoIElSUXMgZW5hYmxlZCBhbmQgbWF5XG4mIzQzO1x0XHRcdCAqIHNjaGVkdWxlKCkuIE9uIGEgcGVuZGluZyBzaWduYWwgaXQgcmV0dXJucyAtRUlOVFJcbiYjNDM7XHRcdFx0ICogd2l0aCBydW4tXHUwMDNlZXhpdF9yZWFzb24gYW5kIHZjcHUtXHUwMDNlc3RhdC5zaWduYWxfZXhpdHNcbiYjNDM7XHRcdFx0ICogYWxyZWFkeSBzZXQsIHNvIGp1c3QgcmV0dXJuIHRvIHVzZXJzcGFjZS5cbiYjNDM7XHRcdFx0ICovXG4gXHRcdFx0bG9jYWxfaXJxX2VuYWJsZSgpO1xuLVx0XHRcdGNvbmRfcmVzY2hlZCgpO1xuJiM0MztcdFx0XHRyID0ga3ZtX3hmZXJfdG9fZ3Vlc3RfbW9kZV9oYW5kbGVfd29yayh2Y3B1KTtcbiYjNDM7XHRcdFx0bG9jYWxfaXJxX2Rpc2FibGUoKTtcbiBcdFx0XHRoYXJkX2lycV9kaXNhYmxlKCk7XG4mIzQzO1x0XHRcdGlmIChyKSB7XG4mIzQzO1x0XHRcdFx0LypcbiYjNDM7XHRcdFx0XHQgKiBUaGUgZ2VuZXJpYyBoZWxwZXIgZG9lcyBub3Qgc2V0IHRoZSBleGl0XG4mIzQzO1x0XHRcdFx0ICogdHlwZTsgcmVjb3JkIGl0IGZvciB0aGUgRTUwMFxuJiM0MztcdFx0XHRcdCAqIENPTkZJR19LVk1fRVhJVF9USU1JTkcgaGlzdG9ncmFtIChhIG5vLW9wXG4mIzQzO1x0XHRcdFx0ICogb3RoZXJ3aXNlKS5cbiYjNDM7XHRcdFx0XHQgKi9cbiYjNDM7XHRcdFx0XHRrdm1wcGNfc2V0X2V4aXRfdHlwZSh2Y3B1LCBTSUdOQUxfRVhJVFMpO1xuJiM0MztcdFx0XHRcdGJyZWFrO1xuJiM0MztcdFx0XHR9XG4gXHRcdFx0Y29udGludWU7XG4gXHRcdH1cbiBcbi1cdFx0aWYgKHNpZ25hbF9wZW5kaW5nKGN1cnJlbnQpKSB7XG4tXHRcdFx0a3ZtcHBjX2FjY291bnRfZXhpdCh2Y3B1LCBTSUdOQUxfRVhJVFMpO1xuLVx0XHRcdHZjcHUtXHUwMDNlcnVuLVx1MDAzZWV4aXRfcmVhc29uID0gS1ZNX0VYSVRfSU5UUjtcbi1cdFx0XHRyID0gLUVJTlRSO1xuLVx0XHRcdGJyZWFrO1xuLVx0XHR9XG4tXG4gXHRcdHZjcHUtXHUwMDNlbW9kZSA9IElOX0dVRVNUX01PREU7XG4gXG4gXHRcdC8qXG5AQCAtMTE2LDYgJiM0MzsxMzQsNyBAQCBpbnQga3ZtcHBjX3ByZXBhcmVfdG9fZW50ZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIFx0XHRcdGxvY2FsX2lycV9lbmFibGUoKTtcbiBcdFx0XHR0cmFjZV9rdm1fY2hlY2tfcmVxdWVzdHModmNwdSk7XG4gXHRcdFx0ciA9IGt2bXBwY19jb3JlX2NoZWNrX3JlcXVlc3RzKHZjcHUpO1xuJiM0MztcdFx0XHRsb2NhbF9pcnFfZGlzYWJsZSgpO1xuIFx0XHRcdGhhcmRfaXJxX2Rpc2FibGUoKTtcbiBcdFx0XHRpZiAociBcdTAwM2UgMClcbiBcdFx0XHRcdGNvbnRpbnVlO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDAyOjIzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bXBwY19ydW5fY29yZSYjMzQ7LAogICAgJiMzNDtrdm1odl9ydW5fc2luZ2xlX3ZjcHUmIzM0OywKICAgICYjMzQ7a3ZtcHBjX2NvcmVfcHJlcGFyZV90b19lbnRlciYjMzQ7LAogICAgJiMzNDtrdm1wcGNfcHJlcGFyZV90b19lbnRlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBLVk0gZW50cnkvZXhpdCBsb29wIG9uIFBvd2VyUEMgdG8gdXNlIHRoZSBnZW5lcmljIHhmZXJfdG9fZ3Vlc3RfbW9kZSBoZWxwZXJzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIEtWTSBleGVjdXRpb24gcGF0aCBvbiBQb3dlclBDIGFuZCBzaG91bGQgYmUgZnV6emVkIGJ5IHJ1bm5pbmcgS1ZNIHdvcmtsb2FkcyBvbiBQb3dlclBDLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAyYjYyMzE2Njg1OWJkMGEzMjlkNjI4MzFlM2ViODJlMTM5YmFkNWZiCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBKdWwgMTAgMDI6MjM6MjEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvS2NvbmZpZyBiL2FyY2gvcG93ZXJwYy9LY29uZmlnCmluZGV4IGY3Y2U1ZmZmODFmMDNlLi41MTU1NWEwYjFhMjYyNCAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL0tjb25maWcKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9wb3dlcnBjL0tjb25maWcKQEAgLTI4MSw2ICYjNDM7MjgxLDcgQEAgY29uZmlnIFBQQwogCXNlbGVjdCBIQVZFX1BFUkZfUkVHUwogCXNlbGVjdCBIQVZFX1BFUkZfVVNFUl9TVEFDS19EVU1QCiAJc2VsZWN0IEhBVkVfUFJFRU1QVF9EWU5BTUlDX0tFWQomIzQzOwlzZWxlY3QgSEFWRV9QT1NJWF9DUFVfVElNRVJTX1RBU0tfV09SSwogCXNlbGVjdCBIQVZFX1JFVEhPT0sJCQlpZiBLUFJPQkVTCiAJc2VsZWN0IEhBVkVfUkVHU19BTkRfU1RBQ0tfQUNDRVNTX0FQSQogCXNlbGVjdCBIQVZFX1JFTElBQkxFX1NUQUNLVFJBQ0UKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZyBiL2FyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZwppbmRleCA5YTBkMWMxYWNhNmM4MC4uYjZiYzJmYzg2ZGNhNjcgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Bvd2VycGMva3ZtL0tjb25maWcKQEAgLTIyLDYgJiM0MzsyMiw3IEBAIGNvbmZpZyBLVk0KIAlzZWxlY3QgS1ZNX0NPTU1PTgogCXNlbGVjdCBLVk1fVkZJTwogCXNlbGVjdCBIQVZFX0tWTV9JUlFfQllQQVNTCiYjNDM7CXNlbGVjdCBWSVJUX1hGRVJfVE9fR1VFU1RfV09SSwogCiBjb25maWcgS1ZNX0JPT0szU19IQU5ETEVSCiAJYm9vbApkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYyBiL2FyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMKaW5kZXggNjFkYmVlYTMxN2YzYjcuLjNjZmU5YTdiZTljNmEwIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMKQEAgLTM4NTMsNyAmIzQzOzM4NTMsOCBAQCBzdGF0aWMgbm9pbmxpbmUgdm9pZCBrdm1wcGNfcnVuX2NvcmUoc3RydWN0IGt2bXBwY192Y29yZSAqdmMpCiAJICovCiAJbG9jYWxfaXJxX2Rpc2FibGUoKTsKIAloYXJkX2lycV9kaXNhYmxlKCk7Ci0JaWYgKGxhenlfaXJxX3BlbmRpbmcoKSB8fCBuZWVkX3Jlc2NoZWQoKSB8fAomIzQzOwl4ZmVyX3RvX2d1ZXN0X21vZGVfcHJlcGFyZSgpOwomIzQzOwlpZiAobGF6eV9pcnFfcGVuZGluZygpIHx8IHhmZXJfdG9fZ3Vlc3RfbW9kZV93b3JrX3BlbmRpbmcoKSB8fAogCSAgICByZWNoZWNrX3NpZ25hbHNfYW5kX21tdSgmYW1wO2NvcmVfaW5mbykpIHsKIAkJbG9jYWxfaXJxX2VuYWJsZSgpOwogCQl2Yy0mZ3Q7dmNvcmVfc3RhdGUgPSBWQ09SRV9JTkFDVElWRTsKQEAgLTQ4MjQsMTAgJiM0Mzs0ODI1LDE2IEBAIHN0YXRpYyBpbnQga3ZtcHBjX3J1bl92Y3B1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKIAkJdmMtJmd0O3J1bm5lciA9IHZjcHU7CiAJCWlmIChuX2NlZGVkID09IHZjLSZndDtuX3J1bm5hYmxlKSB7CiAJCQlrdm1wcGNfdmNvcmVfYmxvY2tlZCh2Yyk7Ci0JCX0gZWxzZSBpZiAobmVlZF9yZXNjaGVkKCkpIHsKJiM0MzsJCX0gZWxzZSBpZiAoX194ZmVyX3RvX2d1ZXN0X21vZGVfd29ya19wZW5kaW5nKCkpIHsKIAkJCWt2bXBwY192Y29yZV9wcmVlbXB0KHZjKTsKLQkJCS8qIExldCBzb21ldGhpbmcgZWxzZSBydW4gKi8KLQkJCWNvbmRfcmVzY2hlZF9sb2NrKCZhbXA7dmMtJmd0O2xvY2spOwomIzQzOwkJCS8qCiYjNDM7CQkJICogTGV0IHNvbWV0aGluZyBlbHNlIHJ1bi4gVGhlIHJhdyBoZWxwZXIgaXMgdXNlZCBhcwomIzQzOwkJCSAqIHNpZ25hbCBleGl0cyBhcmUgYWNjb3VudGVkIGJ5IHRoaXMgcGF0aCBhbHJlYWR5OwomIzQzOwkJCSAqIGl0IG1heSBzY2hlZHVsZSgpLCBzbyBkcm9wIHRoZSB2Y29yZSBsb2NrLgomIzQzOwkJCSAqLwomIzQzOwkJCXNwaW5fdW5sb2NrKCZhbXA7dmMtJmd0O2xvY2spOwomIzQzOwkJCXhmZXJfdG9fZ3Vlc3RfbW9kZV9oYW5kbGVfd29yaygpOwomIzQzOwkJCXNwaW5fbG9jaygmYW1wO3ZjLSZndDtsb2NrKTsKIAkJCWlmICh2Yy0mZ3Q7dmNvcmVfc3RhdGUgPT0gVkNPUkVfUFJFRU1QVCkKIAkJCQlrdm1wcGNfdmNvcmVfZW5kX3ByZWVtcHQodmMpOwogCQl9IGVsc2UgewpAQCAtNDg5NSwxMiAmIzQzOzQ5MDIsMTYgQEAgaW50IGt2bWh2X3J1bl9zaW5nbGVfdmNwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCB0aW1lX2xpbWl0LAogCQkJcnVuLSZndDtleGl0X3JlYXNvbiA9IEtWTV9FWElUX0ZBSUxfRU5UUlk7CiAJCQlydW4tJmd0O2ZhaWxfZW50cnkuaGFyZHdhcmVfZW50cnlfZmFpbHVyZV9yZWFzb24gPSAwOwogCQkJdmNwdS0mZ3Q7YXJjaC5yZXQgPSByOwotCQkJcmV0dXJuIHI7CiYjNDM7CQkJZ290byBkb25lOwogCQl9CiAJfQogCi0JaWYgKG5lZWRfcmVzY2hlZCgpKQotCQljb25kX3Jlc2NoZWQoKTsKJiM0MzsJciA9IGt2bV94ZmVyX3RvX2d1ZXN0X21vZGVfaGFuZGxlX3dvcmsodmNwdSk7CiYjNDM7CWlmIChyKSB7CiYjNDM7CQkvKiAtRUlOVFI6IHNpZ25hbCBwZW5kaW5nLCBleGl0IHRvIHVzZXJzcGFjZSAoS1ZNX0VYSVRfSU5UUikgKi8KJiM0MzsJCXZjcHUtJmd0O2FyY2gucmV0ID0gcjsKJiM0MzsJCWdvdG8gZG9uZTsKJiM0MzsJfQogCiAJa3ZtcHBjX3VwZGF0ZV92cGFzKHZjcHUpOwogCkBAIC00OTE0LDkgJiM0Mzs0OTI1LDEzIEBAIGludCBrdm1odl9ydW5fc2luZ2xlX3ZjcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgdGltZV9saW1pdCwKIAogCXZjcHUtJmd0O2FyY2guc3RhdGUgPSBLVk1QUENfVkNQVV9SVU5OQUJMRTsKIAotCWlmIChzaWduYWxfcGVuZGluZyhjdXJyZW50KSkKLQkJZ290byBzaWdwZW5kOwotCWlmIChuZWVkX3Jlc2NoZWQoKSB8fCAha3ZtLSZndDthcmNoLm1tdV9yZWFkeSkKJiM0MzsJeGZlcl90b19ndWVzdF9tb2RlX3ByZXBhcmUoKTsKJiM0MzsKJiM0MzsJLyoKJiM0MzsJICogSVJRcyBhcmUgZGlzYWJsZWQgaGVyZSwgc28gb24gcGVuZGluZyB3b3JrIGJhaWwgdG8gdGhlIG91dGVyIGxvb3AsCiYjNDM7CSAqIHdoaWNoIGhhbmRsZXMgaXQgdmlhIGt2bV94ZmVyX3RvX2d1ZXN0X21vZGVfaGFuZGxlX3dvcmsoKSBhYm92ZS4KJiM0MzsJICovCiYjNDM7CWlmICh4ZmVyX3RvX2d1ZXN0X21vZGVfd29ya19wZW5kaW5nKCkgfHwgIWt2bS0mZ3Q7YXJjaC5tbXVfcmVhZHkpCiAJCWdvdG8gb3V0OwogCiAJdmNwdS0mZ3Q7Y3B1ID0gcGNwdTsKQEAgLTUwNjgsMTAgJiM0Mzs1MDgzLDYgQEAgaW50IGt2bWh2X3J1bl9zaW5nbGVfdmNwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCB0aW1lX2xpbWl0LAogCiAJcmV0dXJuIHZjcHUtJmd0O2FyY2gucmV0OwogCi0gc2lncGVuZDoKLQl2Y3B1LSZndDtzdGF0LnNpZ25hbF9leGl0cyYjNDM7JiM0Mzs7Ci0JcnVuLSZndDtleGl0X3JlYXNvbiA9IEtWTV9FWElUX0lOVFI7Ci0JdmNwdS0mZ3Q7YXJjaC5yZXQgPSAtRUlOVFI7CiAgb3V0OgogCXZjcHUtJmd0O2NwdSA9IC0xOwogCXZjcHUtJmd0O2FyY2gudGhyZWFkX2NwdSA9IC0xOwpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2t2bS9ib29rZS5jIGIvYXJjaC9wb3dlcnBjL2t2bS9ib29rZS5jCmluZGV4IGYzZGRiMjRlY2U3NDlmLi41ZmJhMTk5ZGZkZDZhNiAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2t2bS9ib29rZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcG93ZXJwYy9rdm0vYm9va2UuYwpAQCAtNzIyLDYgJiM0Mzs3MjIsNyBAQCBpbnQga3ZtcHBjX2NvcmVfcHJlcGFyZV90b19lbnRlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiAJaWYgKHZjcHUtJmd0O2FyY2guc2hhcmVkLSZndDttc3IgJmFtcDsgTVNSX1dFKSB7CiAJCWxvY2FsX2lycV9lbmFibGUoKTsKIAkJa3ZtX3ZjcHVfaGFsdCh2Y3B1KTsKJiM0MzsJCWxvY2FsX2lycV9kaXNhYmxlKCk7CiAJCWhhcmRfaXJxX2Rpc2FibGUoKTsKIAogCQlrdm1wcGNfc2V0X2V4aXRfdHlwZSh2Y3B1LCBFTVVMQVRFRF9NVE1TUldFX0VYSVRTKTsKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9rdm0vcG93ZXJwYy5jIGIvYXJjaC9wb3dlcnBjL2t2bS9wb3dlcnBjLmMKaW5kZXggMDAzMDIzOTlmYzM3YjQuLmJlNWU0OGFlMGM2YzIxIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMva3ZtL3Bvd2VycGMuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Bvd2VycGMva3ZtL3Bvd2VycGMuYwpAQCAtODEsMjMgJiM0Mzs4MSw0MSBAQCBpbnQga3ZtcHBjX3ByZXBhcmVfdG9fZW50ZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogCWludCByOwogCiAJV0FSTl9PTihpcnFzX2Rpc2FibGVkKCkpOwomIzQzOwkvKgomIzQzOwkgKiBsb2NhbF9pcnFfZGlzYWJsZSgpIGZpcnN0OiBvbiAzMi1iaXQsIGhhcmRfaXJxX2Rpc2FibGUoKSBhbG9uZSBpcyBhCiYjNDM7CSAqIHJhdyBNU1JbRUVdIGNsZWFyIHRoYXQgYnlwYXNzZXMgdGhlIGxvY2tkZXAvaXJxLXRyYWNpbmcgc3RhdGUsIGFuZAomIzQzOwkgKiB0aGUgeGZlcl90b19ndWVzdF9tb2RlIGhlbHBlcnMgYXNzZXJ0IElSUXMgYXJlIHNlZW4gYXMgZGlzYWJsZWQuCiYjNDM7CSAqLwomIzQzOwlsb2NhbF9pcnFfZGlzYWJsZSgpOwogCWhhcmRfaXJxX2Rpc2FibGUoKTsKIAogCXdoaWxlICh0cnVlKSB7Ci0JCWlmIChuZWVkX3Jlc2NoZWQoKSkgewomIzQzOwkJeGZlcl90b19ndWVzdF9tb2RlX3ByZXBhcmUoKTsKJiM0MzsKJiM0MzsJCWlmICh4ZmVyX3RvX2d1ZXN0X21vZGVfd29ya19wZW5kaW5nKCkpIHsKJiM0MzsJCQkvKgomIzQzOwkJCSAqIFRoZSBoZWxwZXIgbXVzdCBydW4gd2l0aCBJUlFzIGVuYWJsZWQgYW5kIG1heQomIzQzOwkJCSAqIHNjaGVkdWxlKCkuIE9uIGEgcGVuZGluZyBzaWduYWwgaXQgcmV0dXJucyAtRUlOVFIKJiM0MzsJCQkgKiB3aXRoIHJ1bi0mZ3Q7ZXhpdF9yZWFzb24gYW5kIHZjcHUtJmd0O3N0YXQuc2lnbmFsX2V4aXRzCiYjNDM7CQkJICogYWxyZWFkeSBzZXQsIHNvIGp1c3QgcmV0dXJuIHRvIHVzZXJzcGFjZS4KJiM0MzsJCQkgKi8KIAkJCWxvY2FsX2lycV9lbmFibGUoKTsKLQkJCWNvbmRfcmVzY2hlZCgpOwomIzQzOwkJCXIgPSBrdm1feGZlcl90b19ndWVzdF9tb2RlX2hhbmRsZV93b3JrKHZjcHUpOwomIzQzOwkJCWxvY2FsX2lycV9kaXNhYmxlKCk7CiAJCQloYXJkX2lycV9kaXNhYmxlKCk7CiYjNDM7CQkJaWYgKHIpIHsKJiM0MzsJCQkJLyoKJiM0MzsJCQkJICogVGhlIGdlbmVyaWMgaGVscGVyIGRvZXMgbm90IHNldCB0aGUgZXhpdAomIzQzOwkJCQkgKiB0eXBlOyByZWNvcmQgaXQgZm9yIHRoZSBFNTAwCiYjNDM7CQkJCSAqIENPTkZJR19LVk1fRVhJVF9USU1JTkcgaGlzdG9ncmFtIChhIG5vLW9wCiYjNDM7CQkJCSAqIG90aGVyd2lzZSkuCiYjNDM7CQkJCSAqLwomIzQzOwkJCQlrdm1wcGNfc2V0X2V4aXRfdHlwZSh2Y3B1LCBTSUdOQUxfRVhJVFMpOwomIzQzOwkJCQlicmVhazsKJiM0MzsJCQl9CiAJCQljb250aW51ZTsKIAkJfQogCi0JCWlmIChzaWduYWxfcGVuZGluZyhjdXJyZW50KSkgewotCQkJa3ZtcHBjX2FjY291bnRfZXhpdCh2Y3B1LCBTSUdOQUxfRVhJVFMpOwotCQkJdmNwdS0mZ3Q7cnVuLSZndDtleGl0X3JlYXNvbiA9IEtWTV9FWElUX0lOVFI7Ci0JCQlyID0gLUVJTlRSOwotCQkJYnJlYWs7Ci0JCX0KLQogCQl2Y3B1LSZndDttb2RlID0gSU5fR1VFU1RfTU9ERTsKIAogCQkvKgpAQCAtMTE2LDYgJiM0MzsxMzQsNyBAQCBpbnQga3ZtcHBjX3ByZXBhcmVfdG9fZW50ZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogCQkJbG9jYWxfaXJxX2VuYWJsZSgpOwogCQkJdHJhY2Vfa3ZtX2NoZWNrX3JlcXVlc3RzKHZjcHUpOwogCQkJciA9IGt2bXBwY19jb3JlX2NoZWNrX3JlcXVlc3RzKHZjcHUpOwomIzQzOwkJCWxvY2FsX2lycV9kaXNhYmxlKCk7CiAJCQloYXJkX2lycV9kaXNhYmxlKCk7CiAJCQlpZiAociAmZ3Q7IDApCiAJCQkJY29udGludWU7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDAyOjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxNjAKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA2NDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQb3dlclBDIEtWTSBQYXRjaCBmb3IgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IGEgcGF0Y2ggaGVyZSB0aGF0JiMzOTtzIHRvdWNoaW5nIHNvbWUgY29yZSBLVk0gY29kZSBzcGVjaWZpY2FsbHkgZm9yIFBvd2VyUEMuIEl0JiMzOTtzIG1vZGlmeWluZyBmaWxlcyBsaWtlIGBib29rM3NfaHYuY2AsIGBib29rZS5jYCwgYW5kIGBwb3dlcnBjLmNgIGluIHRoZSBgYXJjaC9wb3dlcnBjL2t2bWAgZGlyZWN0b3J5LiBUaGUgcGF0Y2ggaXMgYWxzbyBhZGRpbmcgc29tZSBgc2VsZWN0YCBzdGF0ZW1lbnRzIGluIHRoZSBgS2NvbmZpZ2AgZmlsZXMg4oCTIGBIQVZFX1BPU0lYX0NQVV9USU1FUlNfVEFTS19XT1JLYCBhbmQgYFZJUlRfWEZFUl9UT19HVUVTVF9XT1JLYC4gVGhlc2UgYHNlbGVjdGAgc3RhdGVtZW50cyBhcmUgaW50ZXJlc3Rpbmc7IHRoZXkmIzM5O3JlIHByb2JhYmx5IGVuYWJsaW5nIHNwZWNpZmljIGZlYXR1cmVzIG9yIGRlcGVuZGVuY2llcyB3aXRoaW4gdGhlIFBvd2VyUEMgS1ZNIGVudmlyb25tZW50LiBUaGUgcmVhbCBtZWF0IG9mIHRoZSBjaGFuZ2UsIHRob3VnaCwgc2VlbXMgdG8gYmUgcmVwbGFjaW5nIHRoZSBzdGFuZGFyZCBgbmVlZF9yZXNjaGVkKClgIGFuZCBgc2lnbmFsX3BlbmRpbmcoKWAgY2hlY2tzIHdpdGggdGhpcyBuZXcgYHhmZXJfdG9fZ3Vlc3RfbW9kZWAgbG9naWMgKGB4ZmVyX3RvX2d1ZXN0X21vZGVfcHJlcGFyZSgpYCwgYHhmZXJfdG9fZ3Vlc3RfbW9kZV93b3JrX3BlbmRpbmcoKWAsIGFuZCBga3ZtX3hmZXJfdG9fZ3Vlc3RfbW9kZV9oYW5kbGVfd29yaygpYCkuIFRoaXMgc3VnZ2VzdHMgYSBmdW5kYW1lbnRhbCBzaGlmdCBpbiBob3cgS1ZNIGhhbmRsZXMgZW50cnkgYW5kIGV4aXQgb24gUG93ZXJQQywgd2hpY2ggbWFrZXMgdGhpcyBwYXRjaCByaXBlIGZvciBhbmFseXNpcy4KCk15IGZpcnN0IHRob3VnaHQgaXMsIGNhbiB0aGlzIGJlIGZ1enplZD8gV2VsbCwgb2J2aW91c2x5LCBpZiB3ZSBjYW4gKnJ1biogUG93ZXJQQyBLVk0uIFN5emthbGxlciwgbXkgZ28tdG8gZnV6emluZyB0b29sLCB0eXBpY2FsbHkgZG9lc24mIzM5O3QgYXV0b21hdGljYWxseSB0YXJnZXQgUG93ZXJQQyBLVk0gdW5sZXNzIGl0JiMzOTtzIGNvbmZpZ3VyZWQgdG8uIEkga25vdyBTeXprYWxsZXIgaGFzIHNvbWUgUG93ZXJQQyBzdXBwb3J0LCBzbyBtYXliZSBpdCYjMzk7cyBhbHJlYWR5IHRoZXJlPyBXYWl0LCB0aGUgcXVlc3Rpb24gYXNrcyBtZSB0byBjb25zaWRlciB0aGF0IFN5emthbGxlciAqZG9lcyogaGF2ZSBLVk0gc3VwcG9ydCwgc28gcGVyaGFwcyB0aGlzIGlzIGEgc2ltcGxlciB0YXNrIHRoYW4gSSBmaXJzdCBiZWxpZXZlZC4gVGhlIHByb21wdCBpcyBhbHNvIHBvaW50aW5nIG91dCB0aGF0IGNlcnRhaW4gY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiBzb21lIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBldmVuIFFFTVUuIFRoYXQmIzM5O3MgYSBnb29kIHJlbWluZGVyIHRvIGJlIGF3YXJlIG9mIG15IGV4ZWN1dGlvbiBlbnZpcm9ubWVudC4KCkNhbiB3ZSByZWFjaCBQb3dlclBDIEtWTSBpbiBRRU1VPyBIbW0sIFFFTVUgZG9lcyBzdXBwb3J0IFBvd2VyUEMgS1ZNLCBidXQgdHlwaWNhbGx5IHJlcXVpcmVzIGEgUG93ZXJQQyBob3N0LiBPciBtYXliZSBuZXN0ZWQgS1ZNPyBUaGF0JiMzOTtzIHdvcnRoIHJlbWVtYmVyaW5nLiBUaGUgcHJvbXB0IGFsc28gcmVtaW5kcyBtZSB0aGF0IGlmIHRoZSBzeXprYWxsZXIgaW5zdGFuY2UgaXMgb24geDg2LCBpdCAqd29uJiMzOTt0KiBiZSBhYmxlIHRvIGRpcmVjdGx5IGhpdCBQb3dlclBDIEtWTSwgcmlnaHQ/IEJ1dCB3YWl0LCBJIGtub3cgc3l6Ym90ICpkb2VzKiBoYXZlIFBvd2VyUEMgaW5zdGFuY2VzLiBUaGF0IGlzIGEgZ2FtZSBjaGFuZ2VyLiBEb2VzIHN5emJvdCBmdXp6IEtWTSBvbiBQb3dlclBDPyBJIG5lZWQgdG8gbG9vayBpbnRvIHRoYXQuCgpPa2F5LCBsZXQmIzM5O3MgcmVmb2N1cy4gSXMgdGhpcyBwYXRjaCBldmVuIHdvcnRoIGZ1enppbmc/IEl0JiMzOTtzIHRvdWNoaW5nIGNvcmUgS1ZNIGxvZ2ljIG9uIFBvd2VyUEMuIFllcywgZGVmaW5pdGVseSB3b3J0aCB0aGUgZWZmb3J0LiBIb3cgcmVhY2hhYmxlIGlzIHRoaXMgY29kZT8gQWgsIHJpZ2h0LCBgL2Rldi9rdm1gIGlvY3Rscywgc3BlY2lmaWNhbGx5IGBLVk1fUlVOYC4gVGhhdCYjMzk7cyB0aGUgZW50cnkgcG9pbnQuIEkgbmVlZCB0byBpZGVudGlmeSB0aGUgc3BlY2lmaWMgZnVuY3Rpb25zIG1vZGlmaWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGNvZGUgcGF0aHMuIE9rYXksIGxldCYjMzk7cyBsb29rIGZvciB0aGUgbW9kaWZpZWQgZnVuY3Rpb25zOiBga3ZtcHBjX3J1bl9jb3JlYCwgYGt2bXBwY19ydW5fdmNwdWAsIGBrdm1odl9ydW5fc2luZ2xlX3ZjcHVgLCBga3ZtcHBjX2NvcmVfcHJlcGFyZV90b19lbnRlcmAsIGFuZCBga3ZtcHBjX3ByZXBhcmVfdG9fZW50ZXJgLiBUaGVzZSBhcmUgdGhlIGtleSBmdW5jdGlvbnMgdG8gd2F0Y2guCgpOZXh0IHN0ZXA6IGxldCYjMzk7cyBjaGVjayBLVk0gZW5hYmxlbWVudCBvbiBQb3dlclBDLiBUaGUgY29uZmlncyBJIHdhbnQgdG8gbG9vayBhdCBhcmUgYEtWTWAsIGBLVk1fQk9PSzNTXzY0YCwgYEtWTV9FNTAwVjJgLCBhbmQgYEtWTV9FNTAwTUNgLiBJIG5lZWQgdG8gZW5zdXJlIHRoZXNlIGFyZSBwcm9wZXJseSBlbmFibGVkLiBUaGUgcHJvbXB0IGFsc28gbWVudGlvbnMgJiMzNDtFbmFibGVDb25maWdzJiMzNDsgYW5kICYjMzQ7Rm9jdXNTeW1ib2xzLCYjMzQ7IHNvIEkmIzM5O2xsIG5lZWQgdG8gdXNlIHRob3NlIHRvb2xzIHRvIHNwZWNpZmljYWxseSBsb29rIGF0IGBhcmNoL3Bvd2VycGMva3ZtL0tjb25maWdgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDAyOjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBLVk0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3Bvd2VycGMva3ZtL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTktXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MjA6Y29uZmlnIEtWTVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTIxLVx0Ym9vbFxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yNi1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoyNzpjb25maWcgS1ZNX0JPT0szU19IQU5ETEVSXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjgtXHRib29sXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjktXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MzA6Y29uZmlnIEtWTV9CT09LM1NfMzJfSEFORExFUlxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTMxLVx0Ym9vbFxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0zNC1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzozNTpjb25maWcgS1ZNX0JPT0szU182NF9IQU5ETEVSXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMzYtXHRib29sXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTM4LVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjM5OmNvbmZpZyBLVk1fQk9PSzNTX1BSX1BPU1NJQkxFXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctNDAtXHRib29sXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTQyLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjQzOmNvbmZpZyBLVk1fQk9PSzNTX0hWX1BPU1NJQkxFXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctNDQtXHRib29sXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctNDUtXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6NDY6Y29uZmlnIEtWTV9CT09LM1NfMzJcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy00Ny1cdHRyaXN0YXRlIFwmIzM0O0tWTSBzdXBwb3J0IGZvciBQb3dlclBDIGJvb2szc18zMiBwcm9jZXNzb3JzXCYjMzQ7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTYyLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjYzOmNvbmZpZyBLVk1fQk9PSzNTXzY0XG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctNjQtXHR0cmlzdGF0ZSBcJiMzNDtLVk0gc3VwcG9ydCBmb3IgUG93ZXJQQyBib29rM3NfNjQgcHJvY2Vzc29yc1wmIzM0O1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy03OS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzo4MDpjb25maWcgS1ZNX0JPT0szU182NF9IVlxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTgxLVx0dHJpc3RhdGUgXCYjMzQ7S1ZNIGZvciBQT1dFUjcgYW5kIGxhdGVyIHVzaW5nIGh5cGVydmlzb3IgbW9kZSBpbiBob3N0XCYjMzQ7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTEwMC1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxMDE6Y29uZmlnIEtWTV9CT09LM1NfNjRfUFJcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xMDItXHR0cmlzdGF0ZSBcJiMzNDtLVk0gc3VwcG9ydCB3aXRob3V0IHVzaW5nIGh5cGVydmlzb3IgbW9kZSBpbiBob3N0XCYjMzQ7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTEyNi1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxMjc6Y29uZmlnIEtWTV9CT09LM1NfSFZfRVhJVF9USU1JTkdcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xMjgtXHRib29sXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTI5LVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjEzMDpjb25maWcgS1ZNX0JPT0szU19IVl9QOV9USU1JTkdcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xMzEtXHRib29sIFwmIzM0O0RldGFpbGVkIHRpbWluZyBmb3IgdGhlIFA5IGVudHJ5IHBvaW50XCYjMzQ7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE0Mi1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxNDM6Y29uZmlnIEtWTV9CT09LM1NfSFZfUDhfVElNSU5HXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTQ0LVx0Ym9vbCBcJiMzNDtEZXRhaWxlZCB0aW1pbmcgZm9yIGh5cGVydmlzb3IgcmVhbC1tb2RlIGNvZGUgKGZvciBQT1dFUjgpXCYjMzQ7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE1Ny1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxNTg6Y29uZmlnIEtWTV9CT09LM1NfSFZfTkVTVEVEX1BNVV9XT1JLQVJPVU5EXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTU5LVx0Ym9vbCBcJiMzNDtOZXN0ZWQgTDAgaG9zdCB3b3JrYXJvdW5kIGZvciBMMSBLVk0gaG9zdCBQTVUgaGFuZGxpbmcgYnVnXCYjMzQ7IGlmIEVYUEVSVFxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xNzItXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MTczOmNvbmZpZyBLVk1fQk9PSzNTX0hWX1BNVVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE3NC1cdHRyaXN0YXRlIFwmIzM0O0h5cGVydmlzb3IgUGVyZiBldmVudHMgZm9yIEtWTSBCb29rM3MtSFZcJiMzNDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTg0LVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjE4NTpjb25maWcgS1ZNX0JPT0tFX0hWXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTg2LVx0Ym9vbFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE4Ny1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxODg6Y29uZmlnIEtWTV9FWElUX1RJTUlOR1xuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE4OS1cdGJvb2wgXCYjMzQ7RGV0YWlsZWQgZXhpdCB0aW1pbmdcJiMzNDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTk4LVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjE5OTpjb25maWcgS1ZNX0U1MDBWMlxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTIwMC1cdGJvb2wgXCYjMzQ7S1ZNIHN1cHBvcnQgZm9yIFBvd2VyUEMgRTUwMHYyIHByb2Nlc3NvcnNcJiMzNDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjEzLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjIxNDpjb25maWcgS1ZNX0U1MDBNQ1xuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTIxNS1cdGJvb2wgXCYjMzQ7S1ZNIHN1cHBvcnQgZm9yIFBvd2VyUEMgRTUwME1DL0U1NTAwL0U2NTAwIHByb2Nlc3NvcnNcJiMzNDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjI5LVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjIzMDpjb25maWcgS1ZNX01QSUNcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yMzEtXHRib29sIFwmIzM0O0tWTSBpbi1rZXJuZWwgTVBJQyBlbXVsYXRpb25cJiMzNDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjQxLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjI0Mjpjb25maWcgS1ZNX1hJQ1NcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yNDMtXHRib29sIFwmIzM0O0tWTSBpbi1rZXJuZWwgWElDUyBlbXVsYXRpb25cJiMzNDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjUxLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjI1Mjpjb25maWcgS1ZNX1hJVkVcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yNTMtXHRib29sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDI6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzIwNgoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDE2OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEtWTSBQb3dlclBDIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmNgLCBgYXJjaC9wb3dlcnBjL2t2bS9ib29rZS5jYCwgYW5kIGBhcmNoL3Bvd2VycGMva3ZtL3Bvd2VycGMuY2AuIFJpZ2h0LCB0eXBpY2FsIEtWTSBmaWxlIG1vZGlmaWNhdGlvbnMgb24gUG93ZXJQQy4gTGV0JiMzOTtzIHNlZSwgdGhlIEtWTSBjb25maWdzIGluIHBsYXkgaGVyZSBhcmUgYEtWTWAsIGBLVk1fQk9PSzNTXzY0X0hWYCwgYEtWTV9CT09LM1NfNjRfUFJgLCBgS1ZNX0JPT0szU18zMmAsIGBLVk1fRTUwMFYyYCwgYW5kIGBLVk1fRTUwME1DYC4gV2FpdCBhIHNlY29uZOKApiBgYm9vazNzX2h2LmNgIGlzIHNwZWNpZmljYWxseSBjb21waWxlZCB3aGVuIGBLVk1fQk9PSzNTXzY0X0hWYCBpcyBlbmFibGVkLiBJIHNob3VsZCBwcm9iYWJseSBkb3VibGUgY2hlY2sgdGhhdCBtYWtlZmlsZSB0byBiZSBzdXJlIHRoZSBkZXBlbmRlbmNpZXMgYXJlIGFzIEkgZXhwZWN0LiBPa2F5LCBsZXQmIzM5O3MgbG9vayBhdCBgYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDI6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Ym9vazNzX2h2Lm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGU9NjI9a3ZtLWh2LXkgJiM0Mzs9IFxcXG5hcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlOjYzOlx0Ym9vazNzX2h2Lm8gXFxcbmFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGUtNjQtXHRib29rM3NfaHZfaW50ZXJydXB0cy5vIFxcXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDI6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzcxNAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIHRoZSBQb3dlclBDIEtWTSBJbXBsZW1lbnRhdGlvbioqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBQb3dlclBDIEtWTSBoeXBlcnZpc29yIHNwZWNpZmljcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gYGFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGVgLiBUaGF0JiMzOTtzIHRoZSB1c3VhbCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyB3aGljaCBwYXJ0cyBvZiB0aGUgS1ZNIGluZnJhc3RydWN0dXJlIGFyZSBiZWluZyBjb21waWxlZCBhbmQgaW50ZWdyYXRlZCBmb3IgdGhpcyBhcmNoaXRlY3R1cmUuIEkmIzM5O20gcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gc2VlaW5nIGhvdyB0aGUgaHlwZXJ2aXNvciBpdHNlbGYgaXMgYnJvdWdodCBpbnRvIHRoZSBidWlsZCBwcm9jZXNzOyB0aGF0JiMzOTtzIHdoZXJlIEkgZXhwZWN0IHRvIGZpbmQgdGhlIGRlZmluaXRpb24gb2YgYGt2bS1odi15YCwgb3Igc29tZXRoaW5nIGVxdWl2YWxlbnQuIFRoYXQgdmFyaWFibGUgd2lsbCBnaXZlIG1lIGEgY2x1ZSBhcyB0byB3aGljaCBzcGVjaWZpYyBzb3VyY2UgZmlsZXMgYXJlIGNvbnNpZGVyZWQgZXNzZW50aWFsIHRvIHRoZSBLVk0gaW1wbGVtZW50YXRpb24uIEZyb20gdGhlcmUsIEkmIzM5O2xsIGJlIGFibGUgdG8gd29yayB0aHJvdWdoIHRoZSBkZXRhaWxzLgoKVGhlbiwgSSYjMzk7bSBnb2luZyB0byB0dXJuIG15IGF0dGVudGlvbiB0byBgYm9va2UuY2Agd2hpY2gsIGlmIEkgcmVjYWxsIGNvcnJlY3RseSwgaXMgY3JpdGljYWwgZm9yIHRoZSBCb29rLUUgYXJjaGl0ZWN0dXJlLiBJJiMzOTtsbCBuZWVkIHRvIHNlZSBob3cgdGhlIGNvZGUgaGFuZGxlcyBjcml0aWNhbCBmdW5jdGlvbnMgc3VjaCBhcyBleGNlcHRpb24gdmVjdG9yIG1hbmFnZW1lbnQsIGludGVycnVwdCBoYW5kbGluZywgYW5kIGFueSBvdGhlciBCb29rLUUgc3BlY2lmaWMgZmVhdHVyZXMgdGhhdCBhcmUgcmVxdWlyZWQgZm9yIEtWTSB0byBmdW5jdGlvbiBjb3JyZWN0bHkuIFRoaXMgaXMgd2hlcmUgSSYjMzk7bGwgcHJvYmFibHkgZmluZCB0aGUga2V5IGludGVyYWN0aW9ucyBiZXR3ZWVuIHRoZSBoeXBlcnZpc29yIGFuZCB0aGUgdW5kZXJseWluZyBoYXJkd2FyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwMjoyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtib29rZS5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlPTE2PWt2bS1lNTAwLW9ianMgOj0gXFxcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlLTE4LVx0ZW11bGF0ZS5vIFxcXG5hcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlOjE5Olx0Ym9va2UubyBcXFxuYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZS0yMC1cdGJvb2tlX2VtdWxhdGUubyBcXFxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGU9Mjg9a3ZtLWU1MDBtYy1vYmpzIDo9IFxcXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZS0zMC1cdGVtdWxhdGUubyBcXFxuYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZTozMTpcdGJvb2tlLm8gXFxcbmFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGUtMzItXHRib29rZV9lbXVsYXRlLm8gXFxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwMjoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MjQ0CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogOTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGZyb20gYW4gZXhwZXJ0JiMzOTtzIHBlcnNwZWN0aXZlOgoKKipEaXZpbmcgaW50byB0aGUgUG93ZXJQQyBLVk0gQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlLCBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRob3NlIHNwZWNpZmljIEtWTSBjb25maWd1cmF0aW9uczogYEtWTV9CT09LM1NfNjRfSFZgIGFuZCB0aGVuIGVpdGhlciBgS1ZNX0U1MDBWMmAgb3IgYEtWTV9FNTAwTUNgLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhlc2UgYXJlIHNldCB1cC4gQWgsIHJpZ2h0LCB0aGUgYGFyY2gvcG93ZXJwYy9rdm0vcG93ZXJwYy5jYCBmaWxlIGlzIGNvbXBpbGVkIGZvciAqYWxsKiBLVk0gaW1wbGVtZW50YXRpb25zIG9uIFBvd2VyUEMgYXJjaGl0ZWN0dXJlcy4gVGhhdCBtYWtlcyBzZW5zZSwgYSBjb21tb24gZW50cnkgcG9pbnQuIE9rYXksIG5vdyBJIG5lZWQgdG8gY2hlY2sgdGhlIEtWTSBNYWtlZmlsZSBpbiB0aGUgUG93ZXJQQyBhcmNoaXRlY3R1cmUgZGlyZWN0b3J5LiBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgcG93ZXJwYy5vYCBpcyBpbmRlZWQgbGlzdGVkIHRoZXJlLCB0byB1bmRlcnN0YW5kIGhvdyB0aG9zZSBjb25maWd1cmF0aW9ucyBnZXQgd2lyZWQgdXAgaW50byB0aGUgS1ZNIGJ1aWxkIHByb2Nlc3MuIFRoYXQgTWFrZWZpbGUgaXMgbXkgbmV4dCBzdG9wLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwMjoyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwb3dlcnBjLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGU9OD1pbmNsdWRlICQoc3JjdHJlZSkvdmlydC9rdm0vTWFrZWZpbGUua3ZtXG5hcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlLTktXG5hcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlOjEwOmNvbW1vbi1vYmpzLXkgJiM0Mzs9IHBvd2VycGMubyBlbXVsYXRlX2xvYWRzdG9yZS5vXG5hcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlLTExLW9iai0kKENPTkZJR19LVk1fRVhJVF9USU1JTkcpICYjNDM7PSB0aW1pbmcub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwMjoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NjgyCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogNzUzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBLVk0gUG93ZXJQQyBQYXRjaCBmb3IgRnV6emluZyBGb2N1cyoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFsbCBhYm91dCBLVk0gY29uZmlndXJhdGlvbiwgc3BlY2lmaWNhbGx5IGZvciBQb3dlclBDLiBJdCBsb29rcyBsaWtlIHRoZSBjb3JlIGNoYW5nZSBpbnZvbHZlcyB1cGRhdGluZyB0aGUgS1ZNIGVudHJ5L2V4aXQgbG9vcC4gSXQmIzM5O3Mgc3dhcHBpbmcgb3V0IHRoZSBvbGQgYG5lZWRfcmVzY2hlZCgpYCBhbmQgYHNpZ25hbF9wZW5kaW5nKClgIGNoZWNrcyB3aXRoIHRoZSBuZXcgYHhmZXJfdG9fZ3Vlc3RfbW9kZWAgaGVscGVycy4gRnVuY3Rpb25hbGx5LCB0aGlzIGlzIHNpZ25pZmljYW50IGJlY2F1c2UgaXQmIzM5O3MgcmVwbGFjaW5nIGhvdyB0aGUgVkNQVSBoYW5kbGVzIHdvcmsgYW5kIHJlc2NoZWR1bGluZy4gVGhpcyB3aG9sZSB0aGluZyBpcyB0cmlnZ2VyZWQgYnkgdGhlIGBLVk1fUlVOYCBpb2N0bCwgc28gaXQmIzM5O3MgZGlyZWN0bHkgaW1wYWN0aW5nIGhvdyB0aGUgVk0gYWN0dWFsbHkgcnVucy4KCk5vdywgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggZnVuY3Rpb25zIGFyZSB3b3J0aCBmb2N1c2luZyBvbiBmb3IgZnV6emluZy4gVGhlIHByb21wdCBzYXlzIHRvIGF2b2lkIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIGtlZXAgdGhlIHRlc3RzIGZyb20gYmVpbmcgc2tld2VkLiBMZXQmIzM5O3Mgc2VlLi4uIHRoZSBwYXRjaCBpcyB0b3VjaGluZyBga3ZtcHBjX3J1bl9jb3JlYCwgYGt2bXBwY19ydW5fdmNwdWAsIGBrdm1odl9ydW5fc2luZ2xlX3ZjcHVgLCBga3ZtcHBjX2NvcmVfcHJlcGFyZV90b19lbnRlcmAsIGFuZCBga3ZtcHBjX3ByZXBhcmVfdG9fZW50ZXJgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBhbGwgb2YgdGhvc2UgYXJlIGhvdC1wYXRoIGZ1bmN0aW9ucywgZXNwZWNpYWxseSBga3ZtaHZfcnVuX3NpbmdsZV92Y3B1YCB3aGljaCBpcyB0aGUgbWFpbiBsb29wIGZvciBWQ1BVIGV4ZWN1dGlvbi4gYGt2bXBwY19ydW5fY29yZWAsIGBrdm1wcGNfcnVuX3ZjcHVgLCBga3ZtcHBjX3ByZXBhcmVfdG9fZW50ZXJgIGFuZCBga3ZtcHBjX2NvcmVfcHJlcGFyZV90b19lbnRlcmAgYXJlIGFsbCBwYXJ0cyBvZiB0aGUgVkNQVSBydW4gbG9vcCBhcyB3ZWxsLgoKU2luY2UgKmFsbCogdGhlIG1vZGlmaWVkIGZ1bmN0aW9ucyBhcHBlYXIgdG8gYmUgaG90LXBhdGgsIGl0IHdvdWxkIGluaXRpYWxseSBzZWVtIHRoYXQgSSBzaG91bGQgbGVhdmUgYEZvY3VzU3ltYm9sc2AgZW1wdHksIHRvIGF2b2lkIHNrZXdlZCByZXN1bHRzLgoKQnV0IHdhaXQgYSBtaW51dGUsIGBrdm1wcGNfcHJlcGFyZV90b19lbnRlcmAgaXMgcHJvYmFibHkgbW9yZSBzcGVjaWZpYyB0byB0aGlzIGNvZGUgcGF0aCwgYXMgaXQgaXMgb25seSBjYWxsZWQgb24gZW50cnksIGFuZCBga3ZtaHZfcnVuX3NpbmdsZV92Y3B1YCBpcyBzcGVjaWZpYyB0byB0aGlzIGZlYXR1cmUuIEl0JiMzOTtzIG5vdCBhIGdlbmVyaWMga2VybmVsIGZ1bmN0aW9uIGxpa2UgYHNjaGVkdWxlYCBvciBga21hbGxvY2AuIEl0JiMzOTtzIGEgUG93ZXJQQy1zcGVjaWZpYyBLVk0gaG90LXBhdGguCgpTbywgSSBzaG91bGQgYWRkIGBrdm1wcGNfcHJlcGFyZV90b19lbnRlcmAgYW5kIGBrdm1odl9ydW5fc2luZ2xlX3ZjcHVgIHRvIGBGb2N1c1N5bWJvbHNgLiBMZXQgbWUganVzdCBkb3VibGUgY2hlY2sgd2hlcmUgYGt2bXBwY19wcmVwYXJlX3RvX2VudGVyYCBpcyBkZWZpbmVkLCBhbmQgSSB3aWxsIGJlIGFsbCBzZXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDAyOjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bXBwY19wcmVwYXJlX3RvX2VudGVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9wb3dlcnBjL2t2bS9wb3dlcnBjLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9wb3dlcnBjL2t2bS9wb3dlcnBjLmM9NjU9aW50IGt2bV9hcmNoX3ZjcHVfc2hvdWxkX2tpY2soc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vcG93ZXJwYy5jLTc4LSAqL1xuYXJjaC9wb3dlcnBjL2t2bS9wb3dlcnBjLmM6Nzk6aW50IGt2bXBwY19wcmVwYXJlX3RvX2VudGVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmFyY2gvcG93ZXJwYy9rdm0vcG93ZXJwYy5jLTgwLXtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL3Bvd2VycGMuYy0xNTctfVxuYXJjaC9wb3dlcnBjL2t2bS9wb3dlcnBjLmM6MTU4OkVYUE9SVF9TWU1CT0xfR1BMKGt2bXBwY19wcmVwYXJlX3RvX2VudGVyKTtcbmFyY2gvcG93ZXJwYy9rdm0vcG93ZXJwYy5jLTE1OS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDI6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAxOTUKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIEtWTS9IViBJbXBhY3QqKgoKUmlnaHQsIHRoYXQmIzM5O3MgZGVmaW5pdGVseSB0aGUgY2FzZS4gQnV0LCBteSBtaW5kIGltbWVkaWF0ZWx5IGp1bXBzIHRvIGBrdm1odl9ydW5fc2luZ2xlX3ZjcHVgLiBXZSYjMzk7cmUgbGlrZWx5IHRhbGtpbmcgYWJvdXQgYSBzcGVjaWZpYyBzY2VuYXJpbyBvciBwZXJmb3JtYW5jZSBpc3N1ZSB0aGF0IGludm9sdmVzIGEgc2luZ2xlIHZDUFUgZXhlY3V0aW9uIGluIGEgS1ZNL0hWIGNvbnRleHQuIFVuZGVyc3RhbmRpbmcgdGhlIGludHJpY2FjaWVzIG9mICp0aGF0KiBmdW5jdGlvbiYjMzk7cyBiZWhhdmlvciwgcGFydGljdWxhcmx5IGl0cyBpbnRlcmFjdGlvbiB3aXRoIHRoZSBoeXBlcnZpc29yIGFuZCB0aGUgZ3Vlc3QsIGlzIGNydWNpYWwgaGVyZS4gV2hhdCYjMzk7cyB0aGUgY29udGV4dD8gV2hhdCB0cmlnZ2VyZWQgdGhlIGNvbnNpZGVyYXRpb24gb2YgdGhhdCBzcGVjaWZpYyBjYWxsPyBJcyBpdCByZWxhdGVkIHRvIGEgYm90dGxlbmVjaywgYSBzcGVjaWZpYyBpbnN0cnVjdGlvbiBzZXF1ZW5jZSwgYSBwYXJ0aWN1bGFyIGd1ZXN0IGFyY2hpdGVjdHVyZSwgb3IgYSBzeW5jaHJvbml6YXRpb24gaXNzdWU/IEkmIzM5O20gYWxyZWFkeSBmb3JtdWxhdGluZyBxdWVzdGlvbnMgaW4gbXkgaGVhZCBhYm91dCB0aGUgZGF0YSBmbG93IHdpdGhpbiBpdCwgdGhlIGludGVycnVwdCBoYW5kbGluZywgYW5kIGFueSBwb3RlbnRpYWwgY29udGV4dCBzd2l0Y2hlcyBpbnZvbHZlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDI6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtaHZfcnVuX3NpbmdsZV92Y3B1JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jPTQ3Mzg9c3RhdGljIGludCBrdm1wcGNfcnVuX3ZjcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNDg3My1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NDg3NDppbnQga3ZtaHZfcnVuX3NpbmdsZV92Y3B1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IHRpbWVfbGltaXQsXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQ4NzUtXHRcdFx0ICB1bnNpZ25lZCBsb25nIGxwY3IpXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYz01MDk1PXN0YXRpYyBpbnQga3ZtcHBjX3ZjcHVfcnVuX2h2KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTUxNzEtXHRcdGlmIChjcHVfaGFzX2ZlYXR1cmUoQ1BVX0ZUUl9BUkNIXzMwMCkpXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjUxNzI6XHRcdFx0ciA9IGt2bWh2X3J1bl9zaW5nbGVfdmNwdSh2Y3B1LCB+KHU2NCkwLFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01MTczLVx0XHRcdFx0XHRcdCAgdmNwdS1cdTAwM2VhcmNoLnZjb3JlLVx1MDAzZWxwY3IpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwMjoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDc2OAoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgS1ZNL1BQQyBMYW5kc2NhcGUqKgoKUmlnaHQsIHRoYXQgc2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaC4gQnV0IGFzIGFsd2F5cywgd2hlbiBJJiMzOTttIGRlYWxpbmcgd2l0aCBLVk0vUFBDLCBJIGltbWVkaWF0ZWx5IHN0YXJ0IGNvbnNpZGVyaW5nIHRoZSBpbXBsaWNhdGlvbnMuIFRoZSBvYnZpb3VzIHF1ZXN0aW9uIEkgaGF2ZSByaWdodCBub3cgaXM6IGhvdyBkb2VzIHRoaXMgcGxheSBvdXQgd2l0aGluIHRoZSBjb250ZXh0IG9mIGBrdm1wcGNfcnVuX2NvcmVgPyBJIG5lZWQgdG8gYW5hbHl6ZSBob3cgdGhpcyBjaGFuZ2UgaW1wYWN0cyB0aGF0IGNydWNpYWwgZnVuY3Rpb24gYW5kIGl0cyBpbnRlcmFjdGlvbiB3aXRoIHRoZSBicm9hZGVyIHN5c3RlbS4gSSBoYXZlIGEgZmVlbGluZyB0aGVyZSB3aWxsIGJlIGEgc3VidGxlIHBvaW50IEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSBpbiB0aGF0IGFyZWEsIG1heWJlIGEgcmFjZSBjb25kaXRpb24gb3IgYSBjb3JuZXIgY2FzZSBJIG5lZWQgdG8gYWNjb3VudCBmb3IuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDAyOjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bXBwY19ydW5fY29yZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYz0zNzU0PXN0YXRpYyB2b2lkIHNldF9pcnFfaGFwcGVuZWQoaW50IHRyYXApXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0zNzc1LSAqL1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzozNzc2OnN0YXRpYyBub2lubGluZSB2b2lkIGt2bXBwY19ydW5fY29yZShzdHJ1Y3Qga3ZtcHBjX3Zjb3JlICp2YylcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzc3Ny17XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00MDA0LVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo0MDA1Olx0dHJhY2Vfa3ZtcHBjX3J1bl9jb3JlKHZjLCAwKTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNDAwNi1cbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQwOTEtXHR2Yy1cdTAwM2V2Y29yZV9zdGF0ZSA9IFZDT1JFX0lOQUNUSVZFO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo0MDkyOlx0dHJhY2Vfa3ZtcHBjX3J1bl9jb3JlKHZjLCAxKTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNDA5My19XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYz00NzM4PXN0YXRpYyBpbnQga3ZtcHBjX3J1bl92Y3B1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQ4NDAtXHRcdH0gZWxzZSB7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjQ4NDE6XHRcdFx0a3ZtcHBjX3J1bl9jb3JlKHZjKTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNDg0Mi1cdFx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwMjoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTQyNgoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqS2VybmVsIFZpcnR1YWxpemF0aW9uIC0gRGl2aW5nIGludG8gdGhlIERldGFpbHMqKgoKWWVzLCB0aGF0JiMzOTtzIGV4YWN0bHkgd2hhdCBJIHdhcyB0aGlua2luZy4gV2UgYXJlIGluZGVlZCBkaXNjdXNzaW5nIHRoZSBmdW5kYW1lbnRhbCB3b3JraW5ncyBoZXJlLiBBbmQgc2luY2Ugd2UmIzM5O3JlIG9uIHRoZSB0b3BpYyBvZiB0aGUga2VybmVsLCBJIGltbWVkaWF0ZWx5IHN0YXJ0ZWQgY29uc2lkZXJpbmcgdGhlIGltcGxpY2F0aW9ucy4gVGhlIGxvZ2ljYWwgbmV4dCBzdGVwLCBpcyB0aGUgYGt2bXBwY19ydW5fdmNwdWAgZnVuY3Rpb24uIEkgYW0gYWx3YXlzIHRyeWluZyB0byB1bmRlcnN0YW5kIHRoZSBpbm5lciB3b3JraW5ncyBvZiB0aGUgc3lzdGVtIGFzIEkgY29uc2lkZXIgdGhlc2UgdGhpbmdzLiBTcGVjaWZpY2FsbHksIHdoZW4gd2UmIzM5O3JlIHRyeWluZyB0byBmaWd1cmUgb3V0IGlmIGl0IGlzIHRydWUsIG9yIHdoYXQgdGhlIHByb2Nlc3Mgc2hvdWxkIGxvb2sgbGlrZS4gVGhhdCYjMzk7cyB3aGVyZSB0aGluZ3MgZ2V0IGludGVyZXN0aW5nIGFuZCB3aGVyZSB0aGUgcmVhbCBvcHRpbWl6YXRpb24gb3Bwb3J0dW5pdGllcyBvZnRlbiBsaWUuIFdlIG5lZWQgdG8gYmUgY29uc2lkZXJpbmcgdGhlIGltcGxpY2F0aW9ucy4gSSB3b25kZXIgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBhc3BlY3RzIG9mIGl0cyBpbXBsZW1lbnRhdGlvbiB0aGF0IHdvdWxkIGJlIHJlbGV2YW50IHRvIHdoYXQgd2UgYXJlIGNvbnNpZGVyaW5nPwoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwMjoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1wcGNfcnVuX3ZjcHUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM9NDcxOT1zdGF0aWMgaW50IGt2bWh2X3NldHVwX21tdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00NzM3LVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo0NzM4OnN0YXRpYyBpbnQga3ZtcHBjX3J1bl92Y3B1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNDczOS17XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00NzQ0LVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo0NzQ1Olx0dHJhY2Vfa3ZtcHBjX3J1bl92Y3B1X2VudGVyKHZjcHUpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00NzQ2LVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNDg2OC1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NDg2OTpcdHRyYWNlX2t2bXBwY19ydW5fdmNwdV9leGl0KHZjcHUpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00ODcwLVx0c3Bpbl91bmxvY2soXHUwMDI2dmMtXHUwMDNlbG9jayk7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYz00ODc0PWludCBrdm1odl9ydW5fc2luZ2xlX3ZjcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgdGltZV9saW1pdCxcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQ4ODYtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjQ4ODc6XHR0cmFjZV9rdm1wcGNfcnVuX3ZjcHVfZW50ZXIodmNwdSk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQ4ODgtXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01MDgxLSBkb25lOlxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1MDgyOlx0dHJhY2Vfa3ZtcHBjX3J1bl92Y3B1X2V4aXQodmNwdSk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTUwODMtXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYz01MDk1PXN0YXRpYyBpbnQga3ZtcHBjX3ZjcHVfcnVuX2h2KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTUxNzQtXHRcdGVsc2VcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NTE3NTpcdFx0XHRyID0ga3ZtcHBjX3J1bl92Y3B1KHZjcHUpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01MTc2LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwMjoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjM1OAoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgS1ZNL1BQQyBFbnRyeSBQb2ludCoqCgpZZXMsIHRoYXQmIzM5O3MgcmlnaHQsIHRoZSBjb25maXJtYXRpb24gaXMgc29saWQuIEkmIzM5O20gb24gdGhlIHJpZ2h0IHRyYWNrLiBNeSBtaW5kIHRoZW4gaW1tZWRpYXRlbHkganVtcHMgdG8gYSBjcml0aWNhbCBzZWN0aW9uIG9mIGNvZGUuIFNwZWNpZmljYWxseSwgSSYjMzk7bSB0aGlua2luZyBhYm91dCBga3ZtcHBjX2NvcmVfcHJlcGFyZV90b19lbnRlcmAuIEl0JiMzOTtzIGEga2V5IGZ1bmN0aW9uIGluIHRoZSBLVk0vUFBDIGFyY2hpdGVjdHVyZSwgaXNuJiMzOTt0IGl0PyBJIG5lZWQgdG8gYW5hbHl6ZSBob3cgaXQgc2V0cyB0aGUgc3RhZ2UsIGhvdyBpdCBoYW5kbGVzIHRoZSB0cmFuc2l0aW9uIGZyb20gdGhlIGd1ZXN0IHRvIHRoZSBob3N0LCBlc3BlY2lhbGx5IGNvbnNpZGVyaW5nIHRoZSBwb3dlcnBjIGFyY2hpdGVjdHVyZSBudWFuY2VzLiBJJiMzOTttIHRyeWluZyB0byByZWNhbGwgdGhlIGRldGFpbHMgb2YgdGhlIGNvbnRleHQgc2F2ZS9yZXN0b3JlIGFuZCB3aGF0IHNhZmVndWFyZHMgaXQgcHV0cyBpbiBwbGFjZS4gSXQmIzM5O3MgdGltZSB0byByZWZyZXNoIHRoZSBjb3JlIGxvZ2ljOyBJJiMzOTt2ZSBnb3QgYSBzcGVjaWZpYyBpc3N1ZSBpbiBtaW5kIHRoYXQgY291bGQgYmUgYWRkcmVzc2VkIGJ5IHJlLWFzc2Vzc2luZyB0aGlzIGZ1bmN0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwMjoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1wcGNfY29yZV9wcmVwYXJlX3RvX2VudGVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9wb3dlcnBjL2t2bS9ib29rZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvcG93ZXJwYy9rdm0vYm9va2UuYz02OTA9c3RhdGljIHZvaWQga3ZtcHBjX2NvcmVfY2hlY2tfZXhjZXB0aW9ucyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rZS5jLTcwOS0vKiBDaGVjayBwZW5kaW5nIGV4Y2VwdGlvbnMgYW5kIGRlbGl2ZXIgb25lLCBpZiBwb3NzaWJsZS4gKi9cbmFyY2gvcG93ZXJwYy9rdm0vYm9va2UuYzo3MTA6aW50IGt2bXBwY19jb3JlX3ByZXBhcmVfdG9fZW50ZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rZS5jLTcxMS17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDAyOjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyNzU3CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMjgzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBLVk0gQ29uZmlndXJhdGlvbiBSZXF1aXJlbWVudHMgZm9yIFBvd2VyUEMgUGF0Y2gqKgoKT2theSwgeWVzLCB0aGlzIGlzIGEgbW9kaWZpY2F0aW9uIHRvIHRoZSBLVk0gZW50cnkvZXhpdCBwYXRocyBvbiBQb3dlclBDLCBnb3QgaXQuIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdG8gbGlzdCB0aGUgdHlwaWNhbCBLVk0gY29uZmlncyByZXF1aXJlZCwgbGlrZSBgS1ZNYCwgYEtWTV9CT09LM1NfNjRfSFZgLCBgS1ZNX0U1MDBWMmAsIGFuZCBgS1ZNX0U1MDBNQ2AuIFRoZW4gSSByZWFsaXplZCBgS1ZNYCBpcyBwcmV0dHkgZ2VuZXJpYywgYW5kIGBLVk1fQk9PSzNTXzY0X0hWYCBzZWVtcyBzcGVjaWZpYyB0byBgYm9vazNzX2h2LmNgLCBhbmQgZWl0aGVyIGBLVk1fRTUwMFYyYCBvciBgS1ZNX0U1MDBNQ2AgaXMgdGllZCB0byBgYm9va2UuY2AuIE9oLCBoYW5nIG9uLCB0aGVyZSYjMzk7cyBhbHNvIGBLVk1fQk9PS0VfSFZgIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQuCgpCdXQgd2FpdCwgdGhlIGluc3RydWN0aW9ucyBhcmUgdGVsbGluZyBtZSB0byBiZSAqc3BlY2lmaWMqLiBUaGV5JiMzOTtyZSBzYXlpbmcgZG9uJiMzOTt0IGxpc3QgZ2VuZXJpYyBjb25maWdzIHRoYXQgYXJlIHByb2JhYmx5IGFscmVhZHkgZW5hYmxlZC4gU28sIHRoZSBxdWVzdGlvbiBiZWNvbWVzLCB3aGljaCBjb25maWdzIGFyZSAqZGlyZWN0bHkqIHRpZWQgdG8gdGhlIG1vZGlmaWVkIGNvZGU/IEdpdmVuIHRoYXQsIEkmIzM5O20gdGhpbmtpbmcgSSBzaG91bGQgZm9jdXMgb24gYEtWTV9CT09LM1NfNjRfSFZgLCBgS1ZNX0U1MDBWMmAsIGBLVk1fRTUwME1DYCwgYW5kIGBLVk1fQk9PS0VfSFZgLiBCZWZvcmUgSSBjb21taXQgdG8gdGhhdCB0aG91Z2gsIEkgd2FudCB0byBkb3VibGUtY2hlY2sgYGFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGVgIG9uZSBtb3JlIHRpbWUgdG8gYmUgYWJzb2x1dGVseSBzdXJlIGFib3V0IGBib29rZS5jYC4gTmVlZCB0byBiZSBwcmVjaXNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwMjoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtib29rZS5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlPTE2PWt2bS1lNTAwLW9ianMgOj0gXFxcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlLTE4LVx0ZW11bGF0ZS5vIFxcXG5hcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlOjE5Olx0Ym9va2UubyBcXFxuYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZS0yMC1cdGJvb2tlX2VtdWxhdGUubyBcXFxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGU9Mjg9a3ZtLWU1MDBtYy1vYmpzIDo9IFxcXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZS0zMC1cdGVtdWxhdGUubyBcXFxuYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZTozMTpcdGJvb2tlLm8gXFxcbmFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGUtMzItXHRib29rZV9lbXVsYXRlLm8gXFxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDI6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM1OTYKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIGhvdyBJJiMzOTtkIGFwcHJvYWNoIHRoaXMgdGFzaywgYXMgaWYgdGhlc2Ugd2VyZSBteSBpbnRlcm5hbCB0aG91Z2h0czoKCioqQW5hbHl6aW5nIEtWTSBPYmplY3QgVHJpZ2dlcnMqKgoKUmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIHRoYXQgYXJlIHJlc3VsdGluZyBpbiB0aGUgYnVpbGQgb2YgYGt2bS1lNTAwLW9ianNgIGFuZCBga3ZtLWU1MDBtYy1vYmpzYC4gVGhpcyBpcyBmdW5kYW1lbnRhbCBmb3Igb3B0aW1pemluZyBhbmQgdW5kZXJzdGFuZGluZyBLVk0gZm9yIGU1MDAgYW5kIGU1MDBtYyBhcmNoaXRlY3R1cmVzLiBJIG5lZWQgdG8gdHJhY2UgdGhlIGRlcGVuZGVuY2llcyBhbmQgdW5kZXJzdGFuZCAqd2h5KiB0aG9zZSBzcGVjaWZpYyBvYmplY3QgZmlsZXMgYXJlIGJlaW5nIGluY2x1ZGVkLiBJcyBpdCBhIHBhcnRpY3VsYXIgZmVhdHVyZSBmbGFnLCBhIHNwZWNpZmljIGJvYXJkIGNvbmZpZ3VyYXRpb24sIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBUaW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eSBkaWdnaW5nIHRocm91Z2ggdGhlIG1ha2VmaWxlcywgY29uZmlnIG9wdGlvbnMsIGFuZCBrZXJuZWwgYnVpbGQgbG9ncy4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgY29uZGl0aW9uYWwgc3RhdGVtZW50cywgZGVwZW5kZW5jaWVzLCBhbmQgYW55dGhpbmcgdGhhdCBtaWdodCBzaGVkIGxpZ2h0IG9uIHRoZSB0cmlnZ2VyaW5nIG1lY2hhbmlzbS4gVWx0aW1hdGVseSwgSSB3YW50IHRvIGZvcm0gYSBjb21wbGV0ZSBtZW50YWwgbWFwIG9mIHRoZSBidWlsZCBwcm9jZXNzIGZvciB0aGVzZSBzcGVjaWZpYyBLVk0gb2JqZWN0IGZpbGVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwMjoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm0tZTUwMCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZT0xND1BRkxBR1NfYm9va2VfaW50ZXJydXB0cy5vIDo9IC1JJChvYmp0cmVlKS8kKG9iailcbmFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGUtMTUtXG5hcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlOjE2Omt2bS1lNTAwLW9ianMgOj0gXFxcbmFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGUtMTctXHQkKGNvbW1vbi1vYmpzLXkpIFxcXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZS0yNS1cdGU1MDBfZW11bGF0ZS5vXG5hcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlOjI2Omt2bS1vYmpzLSQoQ09ORklHX0tWTV9FNTAwVjIpIDo9ICQoa3ZtLWU1MDAtb2JqcylcbmFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGUtMjctXG5hcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlOjI4Omt2bS1lNTAwbWMtb2JqcyA6PSBcXFxuYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZS0yOS1cdCQoY29tbW9uLW9ianMteSkgXFxcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlLTM3LVx0ZTUwMF9lbXVsYXRlLm9cbmFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGU6Mzg6a3ZtLW9ianMtJChDT05GSUdfS1ZNX0U1MDBNQykgOj0gJChrdm0tZTUwMG1jLW9ianMpXG5hcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlLTM5LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwMjoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDIwMAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgYSBmaXJzdC1wZXJzb24gZXhwZXJ0IHN1bW1hcnk6CgoqKldvcmtpbmcgVGhyb3VnaCB0aGUgS1ZNIENvZGUqKgoKUmlnaHQsIHNvIEkmIzM5O20gZm9jdXNpbmcgb24gdGhlc2UgS1ZNIHZlcnNpb25zOiBgS1ZNX0U1MDBWMmAgYW5kIGBLVk1fRTUwME1DYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRpZmZlcmVuY2VzIGFuZCBpbXBsaWNhdGlvbnMgb2YgaG93IHRoZXNlIGFyZSBoYW5kbGVkLiBJdCYjMzk7cyBjcnVjaWFsIHRvIGlkZW50aWZ5IGFueSBwb3RlbnRpYWwgZGl2ZXJnZW5jZXMgaW4gdGhlIGNvZGUgcGF0aHMsIGVzcGVjaWFsbHkgd2l0aCByZWdhcmQgdG8gcGVyZm9ybWFuY2Ugb3Igc2VjdXJpdHkuIE15IHByaW1hcnkgY29uY2VybiBhdCB0aGlzIHBvaW50IGlzIGlzb2xhdGluZyB3aGF0IG1ha2VzIHRoZXNlIHZlcnNpb25zIHVuaXF1ZS4gVGhpcyBzdWdnZXN0cyB0byBtZSB0aGUgbmVlZCB0byBjcm9zcy1yZWZlcmVuY2UgYW5kIGRlZXBseSBleHBsb3JlIGhvdyB0aGUgYm9vazNzX2h2LmMgZmlsZSBpbnRlcmFjdHMgd2l0aCB0aGVzZSB0d28gS1ZNIGNvbmZpZ3VyYXRpb25zLiBUaGlzIGlzIGEgY3J1Y2lhbCBmaWxlLCBzaW5jZSBpdCBpcyB0aGUgJiMzNDtoeXBlcnZpc29yJiMzNDsgY29tcG9uZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwMjoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm0taHYteSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZT02MD1lbmRpZlxuYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZS02MS1cbmFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGU6NjI6a3ZtLWh2LXkgJiM0Mzs9IFxcXG5hcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlLTYzLVx0Ym9vazNzX2h2Lm8gXFxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDI6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ1MTkKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBga3ZtLWh2LXlgIFRyaWdnZXIqKgoKQWxyaWdodCwgdGhhdCYjMzk7cyBpbnRlcmVzdGluZy4gSSYjMzk7dmUgZ290IGEgbWVudGFsIGl0Y2ggbm93OiBXaGF0JiMzOTtzIHRoZSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIGl0ZW0sIG9yIHNldCBvZiBpdGVtcywgdGhhdCB1bHRpbWF0ZWx5IGNhdXNlcyB0aGUgc3lzdGVtIHRvIGVuYWJsZSB0aGUgYGt2bS1odi15YCBvcHRpb24/IEkmIzM5O20gaW1tZWRpYXRlbHkgdHJ5aW5nIHRvIGRyaWxsIGRvd24gdG8gdGhlIHJvb3QgY2F1c2UuIFRoaXMgaXNuJiMzOTt0IGp1c3QgYSBjYXN1YWwgb2JzZXJ2YXRpb247IGl0JiMzOTtzIGEgcHJvbXB0IGZvciBhIGRlZXBlciBkaXZlIGludG8gdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24uIEkmIzM5O20gYXNzdW1pbmcgdGhlcmUmIzM5O3MgYSBkZXBlbmRlbmN5IGNoYWluIOKAkyBwcm9iYWJseSBhIGNhc2NhZGUgb2YgY29uZGl0aW9uYWxzIOKAkyBsZWFkaW5nIHRvIHRoYXQgZmxhZyBiZWluZyBzZXQuIEl0JiMzOTtzIHRoZSBzdGFuZGFyZCBidWlsZCBjb25maWd1cmF0aW9uLCBzbyB0aGlzIGlzIGxpa2VseSBhIHN0YW5kYXJkLCBidXQgc3VidGxlLCBzZXQgb2YgZGVwZW5kZW5jaWVzIHRoYXQgSSBuZWVkIHRvIHRyYWNlLiBJIHdhbnQgdG8gaWRlbnRpZnkgdGhlIGNydWNpYWwga25vYnMgdGhhdCwgd2hlbiBhZGp1c3RlZCwgd291bGQgcmVzdWx0IGluIHRoZSBmbGFnIGJlaW5nIGVuYWJsZWQgb3IgZGlzYWJsZWQuIEtub3dpbmcgKndoeSogaXQmIzM5O3Mgc2V0IGlzIGtleSBmb3Igb3B0aW1pemF0aW9uIG9yIGRlYnVnZ2luZyBsYXRlci4gSXMgaXQgcmVsYXRlZCB0byBhIHNwZWNpZmljIENQVSBtb2RlbCwgYSBoeXBlcnZpc29yIHNldHRpbmcsIG9yIG1heWJlIGV2ZW4gYSBrZXJuZWwgdmVyc2lvbj8gSSYjMzk7bSBhbHJlYWR5IG1lbnRhbGx5IGZvcm1pbmcgYSBwbGFuIHRvIHVzZSBgZ3JlcGAsIGBmaW5kYCwgYW5kIHBvdGVudGlhbGx5IHRoZSBidWlsZCBzeXN0ZW0gaXRzZWxmIHRvIHRyYWNlIHRoZSBsb2dpYy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDI6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtLWh2LXkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGU9NjA9ZW5kaWZcbmFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGUtNjEtXG5hcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlOjYyOmt2bS1odi15ICYjNDM7PSBcXFxuYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZS02My1cdGJvb2szc19odi5vIFxcXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDAyOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0OTA4CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhhdCB0YXNrOgoKKipBbmFseXppbmcgdGhlIE1ha2VmaWxlIGZvciBga3ZtLWh2LXlgKioKCk9rYXksIGZpcnN0IHRoaW5ncyBmaXJzdCwgSSBuZWVkIHRvIGdldCBhIGNvbXByZWhlbnNpdmUgdmlldy4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byB0aG9yb3VnaGx5IHNjYW4gdGhlIGVudGlyZSBNYWtlZmlsZS4gSSYjMzk7bSBsb29raW5nIHNwZWNpZmljYWxseSBmb3IgdGhlIHByZXNlbmNlIGFuZCB1c2FnZSBvZiB0aGUgYGt2bS1odi15YCB2YXJpYWJsZS4gVGhpcyBtZWFucyBJJiMzOTttIG5vdCBqdXN0IHNlYXJjaGluZyBmb3IgdGhlIHN0cmluZyBpdHNlbGYsIGJ1dCBhbHNvIHVuZGVyc3RhbmRpbmcgaG93IGl0JiMzOTtzIGRlZmluZWQsIHdoZXJlIGl0JiMzOTtzIHJlZmVyZW5jZWQsIGFuZCB3aGF0IGl0IGNvbnRyb2xzIHdpdGhpbiB0aGUgYnVpbGQgcHJvY2Vzcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHNjb3BlIGFuZCBpbXBhY3QuIElzIGl0IGdsb2JhbD8gSXMgaXQgY29uZGl0aW9uYWw/IFdoYXQgb3RoZXIgdmFyaWFibGVzIG9yIHJ1bGVzIGRlcGVuZCBvbiBpdD8gSSYjMzk7bSBhbnRpY2lwYXRpbmcgcG90ZW50aWFsIGludGVyYWN0aW9ucyBhbmQgZGVwZW5kZW5jaWVzLiBUaGlzIGlzbiYjMzk7dCBqdXN0IGEgc2ltcGxlIGdyZXA7IEkmIzM5O20gYWltaW5nIGZvciBhIGRlZXAgdW5kZXJzdGFuZGluZyBvZiBpdHMgcm9sZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDI6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtLWh2LXkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGU9NjA9ZW5kaWZcbmFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGUtNjEtXG5hcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlOjYyOmt2bS1odi15ICYjNDM7PSBcXFxuYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZS02My1cdGJvb2szc19odi5vIFxcXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDAyOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1MjE3CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHRoYXQ6CgoqKkludmVzdGlnYXRpbmcgdGhlIEtWTSBNb2R1bGUgSW5jbHVzaW9uKioKClJpZ2h0LCBsZXQgbWUgcGF1c2UgYW5kIGdldCBteSBiZWFyaW5ncy4gVGhlIGtleSBxdWVzdGlvbiByaWdodCBub3cgaXMgKmhvdyogYGt2bS1odi15YCBpcyBnZXR0aW5nIGludGVncmF0ZWQgaW50byB0aGUgYnVpbGQgcHJvY2Vzcy4gSSBuZWVkIHRvIHRyYWNlIGl0cyBpbmNsdXNpb24sIHNwZWNpZmljYWxseSB3aGV0aGVyIGl0JiMzOTtzIGRpcmVjdGx5IGFkZGVkIHRvIGBvYmoteWAgKHRoZSBwcmltYXJ5IG9iamVjdCBsaXN0KSBvciB0byBga3ZtLW9ianNgIChsaWtlbHkgYSBtb3JlIHNwZWNpZmljIEtWTS1yZWxhdGVkIG9iamVjdCBsaXN0KS4gVW5kZXJzdGFuZGluZyB0aGlzIHdpbGwgcHJvdmlkZSBpbnNpZ2h0cyBpbnRvIGhvdyB0aGUgS1ZNIGh5cGVydmlzb3Igc3VwcG9ydCBpcyBiZWluZyBzdHJ1Y3R1cmVkIGFuZCBwb3RlbnRpYWxseSwgd2hlcmUgSSBuZWVkIHRvIGxvb2sgZm9yIHJlbGF0ZWQgY29kZSBvciBjb25maWd1cmF0aW9uLiBTbywgbXkgbmV4dCBzdGVwIGlzIGRlZmluaXRpdmVseSBmaWd1cmluZyBvdXQgdGhhdCBpbmNsdXNpb24gcGF0aC4gTGV0IG1lIGRlbHZlIGludG8gdGhlIGJ1aWxkIGZpbGVzIGFuZCBzZWUgd2hlcmUgdGhlIG1hZ2ljIGhhcHBlbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDAyOjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bS1odiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZT02MD1lbmRpZlxuYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZS02MS1cbmFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGU6NjI6a3ZtLWh2LXkgJiM0Mzs9IFxcXG5hcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlLTYzLVx0Ym9vazNzX2h2Lm8gXFxcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlLTY4LVxuYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZTo2OTprdm0taHYtJChDT05GSUdfUFBDX1VWKSAmIzQzOz0gXFxcbmFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGUtNzAtXHRib29rM3NfaHZfdXZtZW0ub1xuYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZS03MS1cbmFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGU6NzI6a3ZtLWh2LSQoQ09ORklHX1BQQ19UUkFOU0FDVElPTkFMX01FTSkgJiM0Mzs9IFxcXG5hcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlLTczLVx0Ym9vazNzX2h2X3RtLm9cbi0tXG5hcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlPTEzNT1vYmotJChDT05GSUdfS1ZNX0JPT0szU182NF9QUikgJiM0Mzs9IGt2bS1wci5vXG5hcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlOjEzNjpvYmotJChDT05GSUdfS1ZNX0JPT0szU182NF9IVikgJiM0Mzs9IGt2bS1odi5vXG5hcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlLTEzNy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDI6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU3NjMKCQkJCQkJCW91dHB1dDogMTc1CgkJCQkJCQl0aG91Z2h0czogMzYwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIEtWTSBvbiBQb3dlclBDIEhvdC1QYXRoIEZ1bmN0aW9ucyBmb3IgRnV6emluZyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBQb3dlclBDIEtWTSBjb2RlIGFuZCBpbW1lZGlhdGVseSBteSBhdHRlbnRpb24gaXMgZHJhd24gdG8gYEtWTV9CT09LM1NfNjRfSFZgLiBUaGF0JiMzOTtzIHRoZSBwcmltYXJ5IGNvbmZpZ3VyYXRpb24uIEkgYWxzbyBzZWUgYEtWTV9FNTAwVjJgIGFuZCBgS1ZNX0U1MDBNQ2AgaW4gdGhlIGNvbmZpZ3MsIHNvIHRoYXQgZ2l2ZXMgbWUgYSBoYW5kbGUuIFRoZSBrZXkgaGVyZSBpcyB0byBpZGVudGlmeSBob3QtcGF0aCBmdW5jdGlvbnMgcmlwZSBmb3IgZnV6emluZy4KCk15IGluaXRpYWwgdGhvdWdodCBpcyB0byBsaXN0IHRoZW0gYXMgdGhleSBhcmUgc3BlY2lmaWMgdG8gS1ZNIG9uIFBvd2VyUEMgYW5kIGFyZSBwcmVjaXNlbHkgd2hlcmUgdGhlIG1vZGlmaWNhdGlvbnMgYXJlIGhhcHBlbmluZy4gSSBhbSBpbW1lZGlhdGVseSB0aGlua2luZyBhYm91dCBga3ZtcHBjX3J1bl9jb3JlYCwgYGt2bXBwY19ydW5fdmNwdWAsIGBrdm1odl9ydW5fc2luZ2xlX3ZjcHVgLCBga3ZtcHBjX2NvcmVfcHJlcGFyZV90b19lbnRlcmAsIGFuZCBga3ZtcHBjX3ByZXBhcmVfdG9fZW50ZXJgLiBTcGVjaWZpY2FsbHksIGBrdm1wcGNfcnVuX2NvcmVgIGFuZCBga3ZtaHZfcnVuX3NpbmdsZV92Y3B1YCBqdW1wIG91dCBhcyBnb29kIGNhbmRpZGF0ZXMgZm9yIGZ1enppbmcgc2luY2UgdGhleSYjMzk7cmUgaW4gdGhlIGhvdCBwYXRoLiBMZXQmIzM5O3MgbWFrZSBzdXJlIHRob3NlIGFuZCB0aGUgb3RoZXIgdHdvIGFyZSBsaXN0ZWQ6IGBrdm1wcGNfcnVuX2NvcmVgLCBga3ZtaHZfcnVuX3NpbmdsZV92Y3B1YCwgYGt2bXBwY19jb3JlX3ByZXBhcmVfdG9fZW50ZXJgLCBga3ZtcHBjX3ByZXBhcmVfdG9fZW50ZXJgLgoKSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGFtIG5vdCBtaXNzaW5nIGFueSBjcml0aWNhbCBmdW5jdGlvbnMgb3IgYXJlYXMgdGhhdCBJIG1heSBuZWVkIHRvIGJlIGF3YXJlIG9mLgoKVGhlIHBhdGNoIGl0c2VsZiBtb2RpZmllcyBgYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuY2AsIGBhcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmNgLCBhbmQgYGFyY2gvcG93ZXJwYy9rdm0vcG93ZXJwYy5jYC4gVGhpcyBzdHJvbmdseSByZWluZm9yY2VzIG15IGRlY2lzaW9uIHRvIGZ1enogdGhpcyBjb2RlLiBJIGFtIGNvbmZpZGVudCBpdCYjMzk7cyB0aGUgcmlnaHQgY2hvaWNlLgoKTm93LCBsZXQmIzM5O3MgdmVyaWZ5IGlmIGBrdm1wcGNfcnVuX2NvcmVgIGlzIHN0YXRpYy4gWWVzLCBpdCBpcy4gSG93ZXZlciwgdGhhdCBpcyBub3QgYSBibG9ja2VyLiBTeXprYWxsZXIgY2FuIHN0aWxsIGZ1enogc3RhdGljIGZ1bmN0aW9ucywgc2luY2UgdGhleSBhcmUgaW4gdGhlIGtlcm5lbCBpbWFnZS4KCk5vdyBJIHJlbWVtYmVyLCBga3ZtcHBjX3ByZXBhcmVfdG9fZW50ZXJgIGlzIGV4cG9ydGVkLiBUaGF0JiMzOTtzIGdvb2QgbmV3cy4gVGltZSB0byBzZXQgdXAgdGhlIGZ1enppbmcgdGFyZ2V0cyBiYXNlZCBvbiB0aGlzIGFuYWx5c2lzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwMjoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+dGhlIGZvbGxvd2luZyBjb25maWdzIGRvIG5vdCBleGlzdCBpbiB0aGUga2VybmVsIHRyZWU6IEtWTV9CT09LM1NfNjRfSFYsIEtWTV9FNTAwVjIsIEtWTV9FNTAwTUM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNX0JPT0szU182NF9IViYjMzQ7LAogICAgJiMzNDtLVk1fRTUwMFYyJiMzNDssCiAgICAmIzM0O0tWTV9FNTAwTUMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1wcGNfcnVuX2NvcmUmIzM0OywKICAgICYjMzQ7a3ZtaHZfcnVuX3NpbmdsZV92Y3B1JiMzNDssCiAgICAmIzM0O2t2bXBwY19jb3JlX3ByZXBhcmVfdG9fZW50ZXImIzM0OywKICAgICYjMzQ7a3ZtcHBjX3ByZXBhcmVfdG9fZW50ZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgS1ZNIGVudHJ5L2V4aXQgbG9vcCBvbiBQb3dlclBDIHRvIHVzZSB0aGUgZ2VuZXJpYyB4ZmVyX3RvX2d1ZXN0X21vZGUgaGVscGVycy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBLVk0gZXhlY3V0aW9uIHBhdGggb24gUG93ZXJQQyBhbmQgc2hvdWxkIGJlIGZ1enplZCBieSBydW5uaW5nIEtWTSB3b3JrbG9hZHMgb24gUG93ZXJQQy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O3RoZSBmb2xsb3dpbmcgY29uZmlncyBkbyBub3QgZXhpc3QgaW4gdGhlIGtlcm5lbCB0cmVlOiBLVk1fQk9PSzNTXzY0X0hWLCBLVk1fRTUwMFYyLCBLVk1fRTUwME1DJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwMjoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjg0NAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQ29uZmlndXJhdGlvbiBEaWxlbW1hKioKCk9rYXksIGhvbGQgb24gYSBtaW51dGUuIFNvbWV0aGluZyYjMzk7cyBub3QgcmlnaHQuIFRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgSSB3YXMgZXhwZWN0aW5nLi4uIHRoZXkmIzM5O3JlIG5vdCBwcmVzZW50PyBUaGF0JiMzOTtzIHVuZXhwZWN0ZWQuIFRoaXMgY291bGQgYmUgYSBzaWduaWZpY2FudCBvdmVyc2lnaHQuIExldCBtZSBkb3VibGUtY2hlY2sgdGhlIEtjb25maWcgZmlsZSB3aXRoaW4gdGhlIFBvd2VyUEMgS1ZNIGFyY2hpdGVjdHVyZS4gU3BlY2lmaWNhbGx5LCBsZXQmIzM5O3MgcmV2aXNpdCBgYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnYC4gSSBuZWVkIHRvIGVuc3VyZSB0aGF0IEkmIzM5O20gbm90IG92ZXJsb29raW5nIGEgY29uZGl0aW9uYWwgaW5jbHVzaW9uIG9yIGEgZGVwZW5kZW5jeSB0aGF0IEkmIzM5O3ZlIG1pc3NlZC4gQSBkZWVwZXIgZGl2ZSBpcyByZXF1aXJlZCB0byBpZGVudGlmeSB0aGUgcm9vdCBjYXVzZSBvZiB0aGlzIG1pc3NpbmcgY29uZmlnLiBJdCBpcyBiZXN0IHRvIG5vdCB0YWtlIGFueXRoaW5nIGZvciBncmFudGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwMjoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgS1ZNXyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3Bvd2VycGMva3ZtL0tjb25maWc9MjA9Y29uZmlnIEtWTVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yNi1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoyNzpjb25maWcgS1ZNX0JPT0szU19IQU5ETEVSXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjgtXHRib29sXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjktXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MzA6Y29uZmlnIEtWTV9CT09LM1NfMzJfSEFORExFUlxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTMxLVx0Ym9vbFxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0zNC1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzozNTpjb25maWcgS1ZNX0JPT0szU182NF9IQU5ETEVSXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMzYtXHRib29sXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTM4LVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjM5OmNvbmZpZyBLVk1fQk9PSzNTX1BSX1BPU1NJQkxFXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctNDAtXHRib29sXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTQyLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjQzOmNvbmZpZyBLVk1fQk9PSzNTX0hWX1BPU1NJQkxFXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctNDQtXHRib29sXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctNDUtXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6NDY6Y29uZmlnIEtWTV9CT09LM1NfMzJcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy00Ny1cdHRyaXN0YXRlIFwmIzM0O0tWTSBzdXBwb3J0IGZvciBQb3dlclBDIGJvb2szc18zMiBwcm9jZXNzb3JzXCYjMzQ7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTYyLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjYzOmNvbmZpZyBLVk1fQk9PSzNTXzY0XG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctNjQtXHR0cmlzdGF0ZSBcJiMzNDtLVk0gc3VwcG9ydCBmb3IgUG93ZXJQQyBib29rM3NfNjQgcHJvY2Vzc29yc1wmIzM0O1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy03OS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzo4MDpjb25maWcgS1ZNX0JPT0szU182NF9IVlxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTgxLVx0dHJpc3RhdGUgXCYjMzQ7S1ZNIGZvciBQT1dFUjcgYW5kIGxhdGVyIHVzaW5nIGh5cGVydmlzb3IgbW9kZSBpbiBob3N0XCYjMzQ7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTEwMC1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxMDE6Y29uZmlnIEtWTV9CT09LM1NfNjRfUFJcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xMDItXHR0cmlzdGF0ZSBcJiMzNDtLVk0gc3VwcG9ydCB3aXRob3V0IHVzaW5nIGh5cGVydmlzb3IgbW9kZSBpbiBob3N0XCYjMzQ7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTEyNi1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxMjc6Y29uZmlnIEtWTV9CT09LM1NfSFZfRVhJVF9USU1JTkdcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xMjgtXHRib29sXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTI5LVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjEzMDpjb25maWcgS1ZNX0JPT0szU19IVl9QOV9USU1JTkdcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xMzEtXHRib29sIFwmIzM0O0RldGFpbGVkIHRpbWluZyBmb3IgdGhlIFA5IGVudHJ5IHBvaW50XCYjMzQ7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE0Mi1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxNDM6Y29uZmlnIEtWTV9CT09LM1NfSFZfUDhfVElNSU5HXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTQ0LVx0Ym9vbCBcJiMzNDtEZXRhaWxlZCB0aW1pbmcgZm9yIGh5cGVydmlzb3IgcmVhbC1tb2RlIGNvZGUgKGZvciBQT1dFUjgpXCYjMzQ7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE1Ny1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxNTg6Y29uZmlnIEtWTV9CT09LM1NfSFZfTkVTVEVEX1BNVV9XT1JLQVJPVU5EXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTU5LVx0Ym9vbCBcJiMzNDtOZXN0ZWQgTDAgaG9zdCB3b3JrYXJvdW5kIGZvciBMMSBLVk0gaG9zdCBQTVUgaGFuZGxpbmcgYnVnXCYjMzQ7IGlmIEVYUEVSVFxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xNzItXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MTczOmNvbmZpZyBLVk1fQk9PSzNTX0hWX1BNVVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE3NC1cdHRyaXN0YXRlIFwmIzM0O0h5cGVydmlzb3IgUGVyZiBldmVudHMgZm9yIEtWTSBCb29rM3MtSFZcJiMzNDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTg0LVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjE4NTpjb25maWcgS1ZNX0JPT0tFX0hWXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTg2LVx0Ym9vbFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE4Ny1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxODg6Y29uZmlnIEtWTV9FWElUX1RJTUlOR1xuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE4OS1cdGJvb2wgXCYjMzQ7RGV0YWlsZWQgZXhpdCB0aW1pbmdcJiMzNDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTk4LVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjE5OTpjb25maWcgS1ZNX0U1MDBWMlxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTIwMC1cdGJvb2wgXCYjMzQ7S1ZNIHN1cHBvcnQgZm9yIFBvd2VyUEMgRTUwMHYyIHByb2Nlc3NvcnNcJiMzNDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjEzLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjIxNDpjb25maWcgS1ZNX0U1MDBNQ1xuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTIxNS1cdGJvb2wgXCYjMzQ7S1ZNIHN1cHBvcnQgZm9yIFBvd2VyUEMgRTUwME1DL0U1NTAwL0U2NTAwIHByb2Nlc3NvcnNcJiMzNDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjI5LVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjIzMDpjb25maWcgS1ZNX01QSUNcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yMzEtXHRib29sIFwmIzM0O0tWTSBpbi1rZXJuZWwgTVBJQyBlbXVsYXRpb25cJiMzNDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjQxLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjI0Mjpjb25maWcgS1ZNX1hJQ1NcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yNDMtXHRib29sIFwmIzM0O0tWTSBpbi1rZXJuZWwgWElDUyBlbXVsYXRpb25cJiMzNDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjUxLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjI1Mjpjb25maWcgS1ZNX1hJVkVcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yNTMtXHRib29sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDAyOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4NTYxCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTYyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgTWlzc2luZyBLZXJuZWwgQ29uZmlndXJhdGlvbiBPcHRpb25zKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBrZXJuZWwgY29uZmlnczogYEtWTV9CT09LM1NfNjRfSFZgLCBgS1ZNX0U1MDBWMmAsIGFuZCBgS1ZNX0U1MDBNQ2AuIFRoZSBgc2V0LXJlc3VsdHNgIHRvb2wgaXMgY2xhaW1pbmcgdGhleSBkb24mIzM5O3QgZXhpc3QsIHdoaWNoIGlzIHN0cmFuZ2UuIEkgY291bGQgaGF2ZSBzd29ybiBJJiMzOTt2ZSBzZWVuIHRoZW0uICYjMzQ7VGhlIGZvbGxvd2luZyBjb25maWdzIGRvIG5vdCBleGlzdCBpbiB0aGUga2VybmVsIHRyZWU6IEtWTV9CT09LM1NfNjRfSFYsIEtWTV9FNTAwVjIsIEtWTV9FNTAwTUMmIzM0OyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aHkuCgpGaXJzdCwgbGV0IG1lIGNvbmZpcm0gdGhleSYjMzk7cmUgYWN0dWFsbHkgZGVmaW5lZC4gSSYjMzk7bGwgY2hlY2sgYGFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZ2AuIFl1cCwgdGhleSYjMzk7cmUgcmlnaHQgdGhlcmUsIGNsZWFyIGFzIGRheS4gVGhpcyBpcyBvZGQuIFdoeSB3b3VsZCB0aGUgdG9vbCByZXBvcnQgdGhlbSBhcyBtaXNzaW5nPwoKQWxyaWdodCwgcGVyaGFwcyBpdCYjMzk7cyBhIHNjb3BpbmcgaXNzdWUuIE1heWJlIGBhcmNoL3Bvd2VycGMva3ZtL0tjb25maWdgIGlzbiYjMzk7dCBiZWluZyBzb3VyY2VkIGNvcnJlY3RseSBmcm9tIHRoZSB0b3AtbGV2ZWwgY29uZmlndXJhdGlvbi4gSSYjMzk7bGwgcXVpY2tseSB2ZXJpZnkgdGhhdCBpdCYjMzk7cyBiZWluZyBpbmNsdWRlZCBwcm9wZXJseSBpbiB0aGUgS2NvbmZpZyBoaWVyYXJjaHkuIFRoaXMgaXMgd2hlcmUgdGhlIGlzc3VlIG11c3QgYmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDAyOjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NvdXJjZSBcJiMzNDthcmNoL3Bvd2VycGMva3ZtL0tjb25maWdcJiMzNDsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9wb3dlcnBjL0tjb25maWc9MTM0Mj1jb25maWcgUFBDX0xJQl9SSEVBUFxuLS1cbmFyY2gvcG93ZXJwYy9LY29uZmlnLTEzNDQtXG5hcmNoL3Bvd2VycGMvS2NvbmZpZzoxMzQ1OnNvdXJjZSBcJiMzNDthcmNoL3Bvd2VycGMva3ZtL0tjb25maWdcJiMzNDtcbmFyY2gvcG93ZXJwYy9LY29uZmlnLTEzNDYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDAyOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5MDk4CgkJCQkJCQlvdXRwdXQ6IDE0MwoJCQkJCQkJdGhvdWdodHM6IDIxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipEZWJ1Z2dpbmcgS2VybmVsIENvbmZpZ3VyYXRpb24gVG9vbCBPdXRwdXQqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgdG9vbCB0ZWxsaW5nIG1lIGNlcnRhaW4ga2VybmVsIGNvbmZpZ3VyYXRpb25zIGRvbiYjMzk7dCBleGlzdDogYEtWTV9CT09LM1NfNjRfSFZgLCBgS1ZNX0U1MDBWMmAsIGFuZCBgS1ZNX0U1MDBNQ2AuIFRoYXQmIzM5O3MuLi4gb2RkLiBJIGtub3cgdGhlc2Ugc2hvdWxkIGJlIHRoZXJlLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aHkgdGhlIHRvb2wgaXMgcmVwb3J0aW5nIHRoaXMuIExldCBtZSBkb3VibGUtY2hlY2sgdGhlIGV4YWN0IG91dHB1dCDigJMgSSBoYXZlIHRvIGJlIHByZWNpc2Ugd2hlbiBkZWJ1Z2dpbmcgdGhlc2Uga2luZHMgb2YgdGhpbmdzLiBBbHJpZ2h0LCAmIzM0O3RoZSBmb2xsb3dpbmcgY29uZmlncyBkbyBub3QgZXhpc3QgaW4gdGhlIGtlcm5lbCB0cmVlOiBLVk1fQk9PSzNTXzY0X0hWLCBLVk1fRTUwMFYyLCBLVk1fRTUwME1DJiMzNDsuIE9rYXksIHRoYXQmIzM5O3Mgd2hhdCBJIHRob3VnaHQuCgpNeSBpbml0aWFsIHRob3VnaHQgaXMgbWF5YmUgdGhlIHRvb2wgaGFzIHNvbWUgcXVpcmt5IGZvcm1hdCBleHBlY3RhdGlvbnMgZm9yIHRoZSBgS2NvbmZpZ2AgZmlsZXM/IEl0JiMzOTtzIHBvc3NpYmxlIGl0JiMzOTtzIGV4cGVjdGluZyBhIHNwZWNpZmljIHN5bnRheCBvciBzdHJ1Y3R1cmUuIEJ1dCB3YWl0Li4uIGlzIGl0IHBvc3NpYmxlIHRoYXQgYEtWTV9CT09LM1NfNjRfSFZgIGlzbiYjMzk7dCByZWxldmFudCB0byB4ODY/IElzIHRoZSB0b29sIHBlcmhhcHMgY2hlY2tpbmcgdGhlICp4ODYqIHBvcnRpb24gb2YgdGhlIGtlcm5lbCB0cmVlIGFuZCBhc3N1bWluZyB0aGUgY29uZmlncyBzaG91bGQgYmUgZGVmaW5lZCB0aGVyZT8gTm8sIHRoZSB0b29sIGNsYWltcyB0byBjaGVjayB0aGUgKmVudGlyZSogdHJlZS4gU28gdGhhdCBjYW4mIzM5O3QgYmUgaXQuCgpPa2F5LCBsZXQgbWUganVzdCBkb3VibGUtY2hlY2sgdGhlIHNvdXJjZSBmb3IgYEtWTV9CT09LM1NfNjRfSFZgLCBqdXN0IHRvIGJlIGNlcnRhaW4uIFNwZWNpZmljYWxseSwgYGFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZ2AuCmBgYApjb25maWcgS1ZNX0JPT0szU182NF9IVgoJdHJpc3RhdGUgJiMzNDtLVk0gZm9yIFBPV0VSNyBhbmQgbGF0ZXIgdXNpbmcgaHlwZXJ2aXNvciBtb2RlIGluIGhvc3QmIzM0OwpgYGAKSHVoLiBXZWxsLCB0aGVyZSBpdCBpcy4gQ2xlYXJseSwgdGhlIHRvb2wgaXMgd3JvbmcuIExldCBtZSBqdXN0IHRyeSBydW5uaW5nIGl0IGFnYWluIGZvciBgS1ZNYCwganVzdCB0byBlbnN1cmUgdGhhdCB0aGUgY29yZSBmdW5jdGlvbmFsaXR5IGlzIHdvcmtpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDAyOjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1wcGNfcnVuX2NvcmUmIzM0OywKICAgICYjMzQ7a3ZtaHZfcnVuX3NpbmdsZV92Y3B1JiMzNDssCiAgICAmIzM0O2t2bXBwY19jb3JlX3ByZXBhcmVfdG9fZW50ZXImIzM0OywKICAgICYjMzQ7a3ZtcHBjX3ByZXBhcmVfdG9fZW50ZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgS1ZNIGVudHJ5L2V4aXQgbG9vcCBvbiBQb3dlclBDIHRvIHVzZSB0aGUgZ2VuZXJpYyB4ZmVyX3RvX2d1ZXN0X21vZGUgaGVscGVycy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBLVk0gZXhlY3V0aW9uIHBhdGggb24gUG93ZXJQQyBhbmQgc2hvdWxkIGJlIGZ1enplZCBieSBydW5uaW5nIEtWTSB3b3JrbG9hZHMgb24gUG93ZXJQQy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtcHBjX3J1bl9jb3JlJiMzNDssCiAgICAmIzM0O2t2bWh2X3J1bl9zaW5nbGVfdmNwdSYjMzQ7LAogICAgJiMzNDtrdm1wcGNfY29yZV9wcmVwYXJlX3RvX2VudGVyJiMzNDssCiAgICAmIzM0O2t2bXBwY19wcmVwYXJlX3RvX2VudGVyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIEtWTSBlbnRyeS9leGl0IGxvb3Agb24gUG93ZXJQQyB0byB1c2UgdGhlIGdlbmVyaWMgeGZlcl90b19ndWVzdF9tb2RlIGhlbHBlcnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgS1ZNIGV4ZWN1dGlvbiBwYXRoIG9uIFBvd2VyUEMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgYnkgcnVubmluZyBLVk0gd29ya2xvYWRzIG9uIFBvd2VyUEMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwMjoyMzoyMy41MDE2NzU2MjdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjE2NDAyNzUzMjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtcHBjX3J1bl9jb3JlXCIsXG4gICAgXCJrdm1odl9ydW5fc2luZ2xlX3ZjcHVcIixcbiAgICBcImt2bXBwY19jb3JlX3ByZXBhcmVfdG9fZW50ZXJcIixcbiAgICBcImt2bXBwY19wcmVwYXJlX3RvX2VudGVyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgS1ZNIGVudHJ5L2V4aXQgbG9vcCBvbiBQb3dlclBDIHRvIHVzZSB0aGUgZ2VuZXJpYyB4ZmVyX3RvX2d1ZXN0X21vZGUgaGVscGVycy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBLVk0gZXhlY3V0aW9uIHBhdGggb24gUG93ZXJQQyBhbmQgc2hvdWxkIGJlIGZ1enplZCBieSBydW5uaW5nIEtWTSB3b3JrbG9hZHMgb24gUG93ZXJQQy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDI6MjM6MjMuNTAxNjg0MDM3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NzYwMzYzNzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAyYjYyMzE2Njg1OWJkMGEzMjlkNjI4MzFlM2ViODJlMTM5YmFkNWZiXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgSnVsIDEwIDAyOjIzOjIxIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9LY29uZmlnIGIvYXJjaC9wb3dlcnBjL0tjb25maWdcXG5pbmRleCBmN2NlNWZmZjgxZjAzZS4uNTE1NTVhMGIxYTI2MjQgMTAwNjQ0XFxuLS0tIGEvYXJjaC9wb3dlcnBjL0tjb25maWdcXG4rKysgYi9hcmNoL3Bvd2VycGMvS2NvbmZpZ1xcbkBAIC0yODEsNiArMjgxLDcgQEAgY29uZmlnIFBQQ1xcbiBcXHRzZWxlY3QgSEFWRV9QRVJGX1JFR1NcXG4gXFx0c2VsZWN0IEhBVkVfUEVSRl9VU0VSX1NUQUNLX0RVTVBcXG4gXFx0c2VsZWN0IEhBVkVfUFJFRU1QVF9EWU5BTUlDX0tFWVxcbitcXHRzZWxlY3QgSEFWRV9QT1NJWF9DUFVfVElNRVJTX1RBU0tfV09SS1xcbiBcXHRzZWxlY3QgSEFWRV9SRVRIT09LXFx0XFx0XFx0aWYgS1BST0JFU1xcbiBcXHRzZWxlY3QgSEFWRV9SRUdTX0FORF9TVEFDS19BQ0NFU1NfQVBJXFxuIFxcdHNlbGVjdCBIQVZFX1JFTElBQkxFX1NUQUNLVFJBQ0VcXG5kaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnIGIvYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnXFxuaW5kZXggOWEwZDFjMWFjYTZjODAuLmI2YmMyZmM4NmRjYTY3IDEwMDY0NFxcbi0tLSBhL2FyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZ1xcbisrKyBiL2FyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZ1xcbkBAIC0yMiw2ICsyMiw3IEBAIGNvbmZpZyBLVk1cXG4gXFx0c2VsZWN0IEtWTV9DT01NT05cXG4gXFx0c2VsZWN0IEtWTV9WRklPXFxuIFxcdHNlbGVjdCBIQVZFX0tWTV9JUlFfQllQQVNTXFxuK1xcdHNlbGVjdCBWSVJUX1hGRVJfVE9fR1VFU1RfV09SS1xcbiBcXG4gY29uZmlnIEtWTV9CT09LM1NfSEFORExFUlxcbiBcXHRib29sXFxuZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMgYi9hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jXFxuaW5kZXggNjFkYmVlYTMxN2YzYjcuLjNjZmU5YTdiZTljNmEwIDEwMDY0NFxcbi0tLSBhL2FyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmNcXG4rKysgYi9hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jXFxuQEAgLTM4NTMsNyArMzg1Myw4IEBAIHN0YXRpYyBub2lubGluZSB2b2lkIGt2bXBwY19ydW5fY29yZShzdHJ1Y3Qga3ZtcHBjX3Zjb3JlICp2YylcXG4gXFx0ICovXFxuIFxcdGxvY2FsX2lycV9kaXNhYmxlKCk7XFxuIFxcdGhhcmRfaXJxX2Rpc2FibGUoKTtcXG4tXFx0aWYgKGxhenlfaXJxX3BlbmRpbmcoKSB8fCBuZWVkX3Jlc2NoZWQoKSB8fFxcbitcXHR4ZmVyX3RvX2d1ZXN0X21vZGVfcHJlcGFyZSgpO1xcbitcXHRpZiAobGF6eV9pcnFfcGVuZGluZygpIHx8IHhmZXJfdG9fZ3Vlc3RfbW9kZV93b3JrX3BlbmRpbmcoKSB8fFxcbiBcXHQgICAgcmVjaGVja19zaWduYWxzX2FuZF9tbXUoXFx1MDAyNmNvcmVfaW5mbykpIHtcXG4gXFx0XFx0bG9jYWxfaXJxX2VuYWJsZSgpO1xcbiBcXHRcXHR2Yy1cXHUwMDNldmNvcmVfc3RhdGUgPSBWQ09SRV9JTkFDVElWRTtcXG5AQCAtNDgyNCwxMCArNDgyNSwxNiBAQCBzdGF0aWMgaW50IGt2bXBwY19ydW5fdmNwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuIFxcdFxcdHZjLVxcdTAwM2VydW5uZXIgPSB2Y3B1O1xcbiBcXHRcXHRpZiAobl9jZWRlZCA9PSB2Yy1cXHUwMDNlbl9ydW5uYWJsZSkge1xcbiBcXHRcXHRcXHRrdm1wcGNfdmNvcmVfYmxvY2tlZCh2Yyk7XFxuLVxcdFxcdH0gZWxzZSBpZiAobmVlZF9yZXNjaGVkKCkpIHtcXG4rXFx0XFx0fSBlbHNlIGlmIChfX3hmZXJfdG9fZ3Vlc3RfbW9kZV93b3JrX3BlbmRpbmcoKSkge1xcbiBcXHRcXHRcXHRrdm1wcGNfdmNvcmVfcHJlZW1wdCh2Yyk7XFxuLVxcdFxcdFxcdC8qIExldCBzb21ldGhpbmcgZWxzZSBydW4gKi9cXG4tXFx0XFx0XFx0Y29uZF9yZXNjaGVkX2xvY2soXFx1MDAyNnZjLVxcdTAwM2Vsb2NrKTtcXG4rXFx0XFx0XFx0LypcXG4rXFx0XFx0XFx0ICogTGV0IHNvbWV0aGluZyBlbHNlIHJ1bi4gVGhlIHJhdyBoZWxwZXIgaXMgdXNlZCBhc1xcbitcXHRcXHRcXHQgKiBzaWduYWwgZXhpdHMgYXJlIGFjY291bnRlZCBieSB0aGlzIHBhdGggYWxyZWFkeTtcXG4rXFx0XFx0XFx0ICogaXQgbWF5IHNjaGVkdWxlKCksIHNvIGRyb3AgdGhlIHZjb3JlIGxvY2suXFxuK1xcdFxcdFxcdCAqL1xcbitcXHRcXHRcXHRzcGluX3VubG9jayhcXHUwMDI2dmMtXFx1MDAzZWxvY2spO1xcbitcXHRcXHRcXHR4ZmVyX3RvX2d1ZXN0X21vZGVfaGFuZGxlX3dvcmsoKTtcXG4rXFx0XFx0XFx0c3Bpbl9sb2NrKFxcdTAwMjZ2Yy1cXHUwMDNlbG9jayk7XFxuIFxcdFxcdFxcdGlmICh2Yy1cXHUwMDNldmNvcmVfc3RhdGUgPT0gVkNPUkVfUFJFRU1QVClcXG4gXFx0XFx0XFx0XFx0a3ZtcHBjX3Zjb3JlX2VuZF9wcmVlbXB0KHZjKTtcXG4gXFx0XFx0fSBlbHNlIHtcXG5AQCAtNDg5NSwxMiArNDkwMiwxNiBAQCBpbnQga3ZtaHZfcnVuX3NpbmdsZV92Y3B1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IHRpbWVfbGltaXQsXFxuIFxcdFxcdFxcdHJ1bi1cXHUwMDNlZXhpdF9yZWFzb24gPSBLVk1fRVhJVF9GQUlMX0VOVFJZO1xcbiBcXHRcXHRcXHRydW4tXFx1MDAzZWZhaWxfZW50cnkuaGFyZHdhcmVfZW50cnlfZmFpbHVyZV9yZWFzb24gPSAwO1xcbiBcXHRcXHRcXHR2Y3B1LVxcdTAwM2VhcmNoLnJldCA9IHI7XFxuLVxcdFxcdFxcdHJldHVybiByO1xcbitcXHRcXHRcXHRnb3RvIGRvbmU7XFxuIFxcdFxcdH1cXG4gXFx0fVxcbiBcXG4tXFx0aWYgKG5lZWRfcmVzY2hlZCgpKVxcbi1cXHRcXHRjb25kX3Jlc2NoZWQoKTtcXG4rXFx0ciA9IGt2bV94ZmVyX3RvX2d1ZXN0X21vZGVfaGFuZGxlX3dvcmsodmNwdSk7XFxuK1xcdGlmIChyKSB7XFxuK1xcdFxcdC8qIC1FSU5UUjogc2lnbmFsIHBlbmRpbmcsIGV4aXQgdG8gdXNlcnNwYWNlIChLVk1fRVhJVF9JTlRSKSAqL1xcbitcXHRcXHR2Y3B1LVxcdTAwM2VhcmNoLnJldCA9IHI7XFxuK1xcdFxcdGdvdG8gZG9uZTtcXG4rXFx0fVxcbiBcXG4gXFx0a3ZtcHBjX3VwZGF0ZV92cGFzKHZjcHUpO1xcbiBcXG5AQCAtNDkxNCw5ICs0OTI1LDEzIEBAIGludCBrdm1odl9ydW5fc2luZ2xlX3ZjcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgdGltZV9saW1pdCxcXG4gXFxuIFxcdHZjcHUtXFx1MDAzZWFyY2guc3RhdGUgPSBLVk1QUENfVkNQVV9SVU5OQUJMRTtcXG4gXFxuLVxcdGlmIChzaWduYWxfcGVuZGluZyhjdXJyZW50KSlcXG4tXFx0XFx0Z290byBzaWdwZW5kO1xcbi1cXHRpZiAobmVlZF9yZXNjaGVkKCkgfHwgIWt2bS1cXHUwMDNlYXJjaC5tbXVfcmVhZHkpXFxuK1xcdHhmZXJfdG9fZ3Vlc3RfbW9kZV9wcmVwYXJlKCk7XFxuK1xcbitcXHQvKlxcbitcXHQgKiBJUlFzIGFyZSBkaXNhYmxlZCBoZXJlLCBzbyBvbiBwZW5kaW5nIHdvcmsgYmFpbCB0byB0aGUgb3V0ZXIgbG9vcCxcXG4rXFx0ICogd2hpY2ggaGFuZGxlcyBpdCB2aWEga3ZtX3hmZXJfdG9fZ3Vlc3RfbW9kZV9oYW5kbGVfd29yaygpIGFib3ZlLlxcbitcXHQgKi9cXG4rXFx0aWYgKHhmZXJfdG9fZ3Vlc3RfbW9kZV93b3JrX3BlbmRpbmcoKSB8fCAha3ZtLVxcdTAwM2VhcmNoLm1tdV9yZWFkeSlcXG4gXFx0XFx0Z290byBvdXQ7XFxuIFxcbiBcXHR2Y3B1LVxcdTAwM2VjcHUgPSBwY3B1O1xcbkBAIC01MDY4LDEwICs1MDgzLDYgQEAgaW50IGt2bWh2X3J1bl9zaW5nbGVfdmNwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCB0aW1lX2xpbWl0LFxcbiBcXG4gXFx0cmV0dXJuIHZjcHUtXFx1MDAzZWFyY2gucmV0O1xcbiBcXG4tIHNpZ3BlbmQ6XFxuLVxcdHZjcHUtXFx1MDAzZXN0YXQuc2lnbmFsX2V4aXRzKys7XFxuLVxcdHJ1bi1cXHUwMDNlZXhpdF9yZWFzb24gPSBLVk1fRVhJVF9JTlRSO1xcbi1cXHR2Y3B1LVxcdTAwM2VhcmNoLnJldCA9IC1FSU5UUjtcXG4gIG91dDpcXG4gXFx0dmNwdS1cXHUwMDNlY3B1ID0gLTE7XFxuIFxcdHZjcHUtXFx1MDAzZWFyY2gudGhyZWFkX2NwdSA9IC0xO1xcbmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmMgYi9hcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmNcXG5pbmRleCBmM2RkYjI0ZWNlNzQ5Zi4uNWZiYTE5OWRmZGQ2YTYgMTAwNjQ0XFxuLS0tIGEvYXJjaC9wb3dlcnBjL2t2bS9ib29rZS5jXFxuKysrIGIvYXJjaC9wb3dlcnBjL2t2bS9ib29rZS5jXFxuQEAgLTcyMiw2ICs3MjIsNyBAQCBpbnQga3ZtcHBjX2NvcmVfcHJlcGFyZV90b19lbnRlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuIFxcdGlmICh2Y3B1LVxcdTAwM2VhcmNoLnNoYXJlZC1cXHUwMDNlbXNyIFxcdTAwMjYgTVNSX1dFKSB7XFxuIFxcdFxcdGxvY2FsX2lycV9lbmFibGUoKTtcXG4gXFx0XFx0a3ZtX3ZjcHVfaGFsdCh2Y3B1KTtcXG4rXFx0XFx0bG9jYWxfaXJxX2Rpc2FibGUoKTtcXG4gXFx0XFx0aGFyZF9pcnFfZGlzYWJsZSgpO1xcbiBcXG4gXFx0XFx0a3ZtcHBjX3NldF9leGl0X3R5cGUodmNwdSwgRU1VTEFURURfTVRNU1JXRV9FWElUUyk7XFxuZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9rdm0vcG93ZXJwYy5jIGIvYXJjaC9wb3dlcnBjL2t2bS9wb3dlcnBjLmNcXG5pbmRleCAwMDMwMjM5OWZjMzdiNC4uYmU1ZTQ4YWUwYzZjMjEgMTAwNjQ0XFxuLS0tIGEvYXJjaC9wb3dlcnBjL2t2bS9wb3dlcnBjLmNcXG4rKysgYi9hcmNoL3Bvd2VycGMva3ZtL3Bvd2VycGMuY1xcbkBAIC04MSwyMyArODEsNDEgQEAgaW50IGt2bXBwY19wcmVwYXJlX3RvX2VudGVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4gXFx0aW50IHI7XFxuIFxcbiBcXHRXQVJOX09OKGlycXNfZGlzYWJsZWQoKSk7XFxuK1xcdC8qXFxuK1xcdCAqIGxvY2FsX2lycV9kaXNhYmxlKCkgZmlyc3Q6IG9uIDMyLWJpdCwgaGFyZF9pcnFfZGlzYWJsZSgpIGFsb25lIGlzIGFcXG4rXFx0ICogcmF3IE1TUltFRV0gY2xlYXIgdGhhdCBieXBhc3NlcyB0aGUgbG9ja2RlcC9pcnEtdHJhY2luZyBzdGF0ZSwgYW5kXFxuK1xcdCAqIHRoZSB4ZmVyX3RvX2d1ZXN0X21vZGUgaGVscGVycyBhc3NlcnQgSVJRcyBhcmUgc2VlbiBhcyBkaXNhYmxlZC5cXG4rXFx0ICovXFxuK1xcdGxvY2FsX2lycV9kaXNhYmxlKCk7XFxuIFxcdGhhcmRfaXJxX2Rpc2FibGUoKTtcXG4gXFxuIFxcdHdoaWxlICh0cnVlKSB7XFxuLVxcdFxcdGlmIChuZWVkX3Jlc2NoZWQoKSkge1xcbitcXHRcXHR4ZmVyX3RvX2d1ZXN0X21vZGVfcHJlcGFyZSgpO1xcbitcXG4rXFx0XFx0aWYgKHhmZXJfdG9fZ3Vlc3RfbW9kZV93b3JrX3BlbmRpbmcoKSkge1xcbitcXHRcXHRcXHQvKlxcbitcXHRcXHRcXHQgKiBUaGUgaGVscGVyIG11c3QgcnVuIHdpdGggSVJRcyBlbmFibGVkIGFuZCBtYXlcXG4rXFx0XFx0XFx0ICogc2NoZWR1bGUoKS4gT24gYSBwZW5kaW5nIHNpZ25hbCBpdCByZXR1cm5zIC1FSU5UUlxcbitcXHRcXHRcXHQgKiB3aXRoIHJ1bi1cXHUwMDNlZXhpdF9yZWFzb24gYW5kIHZjcHUtXFx1MDAzZXN0YXQuc2lnbmFsX2V4aXRzXFxuK1xcdFxcdFxcdCAqIGFscmVhZHkgc2V0LCBzbyBqdXN0IHJldHVybiB0byB1c2Vyc3BhY2UuXFxuK1xcdFxcdFxcdCAqL1xcbiBcXHRcXHRcXHRsb2NhbF9pcnFfZW5hYmxlKCk7XFxuLVxcdFxcdFxcdGNvbmRfcmVzY2hlZCgpO1xcbitcXHRcXHRcXHRyID0ga3ZtX3hmZXJfdG9fZ3Vlc3RfbW9kZV9oYW5kbGVfd29yayh2Y3B1KTtcXG4rXFx0XFx0XFx0bG9jYWxfaXJxX2Rpc2FibGUoKTtcXG4gXFx0XFx0XFx0aGFyZF9pcnFfZGlzYWJsZSgpO1xcbitcXHRcXHRcXHRpZiAocikge1xcbitcXHRcXHRcXHRcXHQvKlxcbitcXHRcXHRcXHRcXHQgKiBUaGUgZ2VuZXJpYyBoZWxwZXIgZG9lcyBub3Qgc2V0IHRoZSBleGl0XFxuK1xcdFxcdFxcdFxcdCAqIHR5cGU7IHJlY29yZCBpdCBmb3IgdGhlIEU1MDBcXG4rXFx0XFx0XFx0XFx0ICogQ09ORklHX0tWTV9FWElUX1RJTUlORyBoaXN0b2dyYW0gKGEgbm8tb3BcXG4rXFx0XFx0XFx0XFx0ICogb3RoZXJ3aXNlKS5cXG4rXFx0XFx0XFx0XFx0ICovXFxuK1xcdFxcdFxcdFxcdGt2bXBwY19zZXRfZXhpdF90eXBlKHZjcHUsIFNJR05BTF9FWElUUyk7XFxuK1xcdFxcdFxcdFxcdGJyZWFrO1xcbitcXHRcXHRcXHR9XFxuIFxcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXHRcXHR9XFxuIFxcbi1cXHRcXHRpZiAoc2lnbmFsX3BlbmRpbmcoY3VycmVudCkpIHtcXG4tXFx0XFx0XFx0a3ZtcHBjX2FjY291bnRfZXhpdCh2Y3B1LCBTSUdOQUxfRVhJVFMpO1xcbi1cXHRcXHRcXHR2Y3B1LVxcdTAwM2VydW4tXFx1MDAzZWV4aXRfcmVhc29uID0gS1ZNX0VYSVRfSU5UUjtcXG4tXFx0XFx0XFx0ciA9IC1FSU5UUjtcXG4tXFx0XFx0XFx0YnJlYWs7XFxuLVxcdFxcdH1cXG4tXFxuIFxcdFxcdHZjcHUtXFx1MDAzZW1vZGUgPSBJTl9HVUVTVF9NT0RFO1xcbiBcXG4gXFx0XFx0LypcXG5AQCAtMTE2LDYgKzEzNCw3IEBAIGludCBrdm1wcGNfcHJlcGFyZV90b19lbnRlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuIFxcdFxcdFxcdGxvY2FsX2lycV9lbmFibGUoKTtcXG4gXFx0XFx0XFx0dHJhY2Vfa3ZtX2NoZWNrX3JlcXVlc3RzKHZjcHUpO1xcbiBcXHRcXHRcXHRyID0ga3ZtcHBjX2NvcmVfY2hlY2tfcmVxdWVzdHModmNwdSk7XFxuK1xcdFxcdFxcdGxvY2FsX2lycV9kaXNhYmxlKCk7XFxuIFxcdFxcdFxcdGhhcmRfaXJxX2Rpc2FibGUoKTtcXG4gXFx0XFx0XFx0aWYgKHIgXFx1MDAzZSAwKVxcbiBcXHRcXHRcXHRcXHRjb250aW51ZTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDI6MjM6MjQuNDc5MzM5MTg4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNjA2NjI1OTk0NjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtcHBjX3J1bl9jb3JlXCIsXG4gICAgXCJrdm1odl9ydW5fc2luZ2xlX3ZjcHVcIixcbiAgICBcImt2bXBwY19jb3JlX3ByZXBhcmVfdG9fZW50ZXJcIixcbiAgICBcImt2bXBwY19wcmVwYXJlX3RvX2VudGVyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgS1ZNIGVudHJ5L2V4aXQgbG9vcCBvbiBQb3dlclBDIHRvIHVzZSB0aGUgZ2VuZXJpYyB4ZmVyX3RvX2d1ZXN0X21vZGUgaGVscGVycy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBLVk0gZXhlY3V0aW9uIHBhdGggb24gUG93ZXJQQyBhbmQgc2hvdWxkIGJlIGZ1enplZCBieSBydW5uaW5nIEtWTSB3b3JrbG9hZHMgb24gUG93ZXJQQy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAyYjYyMzE2Njg1OWJkMGEzMjlkNjI4MzFlM2ViODJlMTM5YmFkNWZiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMTAgMDI6MjM6MjEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvS2NvbmZpZyBiL2FyY2gvcG93ZXJwYy9LY29uZmlnXG5pbmRleCBmN2NlNWZmZjgxZjAzZS4uNTE1NTVhMGIxYTI2MjQgMTAwNjQ0XG4tLS0gYS9hcmNoL3Bvd2VycGMvS2NvbmZpZ1xuKysrIGIvYXJjaC9wb3dlcnBjL0tjb25maWdcbkBAIC0yODEsNiArMjgxLDcgQEAgY29uZmlnIFBQQ1xuIFx0c2VsZWN0IEhBVkVfUEVSRl9SRUdTXG4gXHRzZWxlY3QgSEFWRV9QRVJGX1VTRVJfU1RBQ0tfRFVNUFxuIFx0c2VsZWN0IEhBVkVfUFJFRU1QVF9EWU5BTUlDX0tFWVxuK1x0c2VsZWN0IEhBVkVfUE9TSVhfQ1BVX1RJTUVSU19UQVNLX1dPUktcbiBcdHNlbGVjdCBIQVZFX1JFVEhPT0tcdFx0XHRpZiBLUFJPQkVTXG4gXHRzZWxlY3QgSEFWRV9SRUdTX0FORF9TVEFDS19BQ0NFU1NfQVBJXG4gXHRzZWxlY3QgSEFWRV9SRUxJQUJMRV9TVEFDS1RSQUNFXG5kaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnIGIvYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnXG5pbmRleCA5YTBkMWMxYWNhNmM4MC4uYjZiYzJmYzg2ZGNhNjcgMTAwNjQ0XG4tLS0gYS9hcmNoL3Bvd2VycGMva3ZtL0tjb25maWdcbisrKyBiL2FyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZ1xuQEAgLTIyLDYgKzIyLDcgQEAgY29uZmlnIEtWTVxuIFx0c2VsZWN0IEtWTV9DT01NT05cbiBcdHNlbGVjdCBLVk1fVkZJT1xuIFx0c2VsZWN0IEhBVkVfS1ZNX0lSUV9CWVBBU1NcbitcdHNlbGVjdCBWSVJUX1hGRVJfVE9fR1VFU1RfV09SS1xuIFxuIGNvbmZpZyBLVk1fQk9PSzNTX0hBTkRMRVJcbiBcdGJvb2xcbmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jIGIvYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuY1xuaW5kZXggNjFkYmVlYTMxN2YzYjcuLjNjZmU5YTdiZTljNmEwIDEwMDY0NFxuLS0tIGEvYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuY1xuKysrIGIvYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuY1xuQEAgLTM4NTMsNyArMzg1Myw4IEBAIHN0YXRpYyBub2lubGluZSB2b2lkIGt2bXBwY19ydW5fY29yZShzdHJ1Y3Qga3ZtcHBjX3Zjb3JlICp2YylcbiBcdCAqL1xuIFx0bG9jYWxfaXJxX2Rpc2FibGUoKTtcbiBcdGhhcmRfaXJxX2Rpc2FibGUoKTtcbi1cdGlmIChsYXp5X2lycV9wZW5kaW5nKCkgfHwgbmVlZF9yZXNjaGVkKCkgfHxcbitcdHhmZXJfdG9fZ3Vlc3RfbW9kZV9wcmVwYXJlKCk7XG4rXHRpZiAobGF6eV9pcnFfcGVuZGluZygpIHx8IHhmZXJfdG9fZ3Vlc3RfbW9kZV93b3JrX3BlbmRpbmcoKSB8fFxuIFx0ICAgIHJlY2hlY2tfc2lnbmFsc19hbmRfbW11KFx1MDAyNmNvcmVfaW5mbykpIHtcbiBcdFx0bG9jYWxfaXJxX2VuYWJsZSgpO1xuIFx0XHR2Yy1cdTAwM2V2Y29yZV9zdGF0ZSA9IFZDT1JFX0lOQUNUSVZFO1xuQEAgLTQ4MjQsMTAgKzQ4MjUsMTYgQEAgc3RhdGljIGludCBrdm1wcGNfcnVuX3ZjcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIFx0XHR2Yy1cdTAwM2VydW5uZXIgPSB2Y3B1O1xuIFx0XHRpZiAobl9jZWRlZCA9PSB2Yy1cdTAwM2VuX3J1bm5hYmxlKSB7XG4gXHRcdFx0a3ZtcHBjX3Zjb3JlX2Jsb2NrZWQodmMpO1xuLVx0XHR9IGVsc2UgaWYgKG5lZWRfcmVzY2hlZCgpKSB7XG4rXHRcdH0gZWxzZSBpZiAoX194ZmVyX3RvX2d1ZXN0X21vZGVfd29ya19wZW5kaW5nKCkpIHtcbiBcdFx0XHRrdm1wcGNfdmNvcmVfcHJlZW1wdCh2Yyk7XG4tXHRcdFx0LyogTGV0IHNvbWV0aGluZyBlbHNlIHJ1biAqL1xuLVx0XHRcdGNvbmRfcmVzY2hlZF9sb2NrKFx1MDAyNnZjLVx1MDAzZWxvY2spO1xuK1x0XHRcdC8qXG4rXHRcdFx0ICogTGV0IHNvbWV0aGluZyBlbHNlIHJ1bi4gVGhlIHJhdyBoZWxwZXIgaXMgdXNlZCBhc1xuK1x0XHRcdCAqIHNpZ25hbCBleGl0cyBhcmUgYWNjb3VudGVkIGJ5IHRoaXMgcGF0aCBhbHJlYWR5O1xuK1x0XHRcdCAqIGl0IG1heSBzY2hlZHVsZSgpLCBzbyBkcm9wIHRoZSB2Y29yZSBsb2NrLlxuK1x0XHRcdCAqL1xuK1x0XHRcdHNwaW5fdW5sb2NrKFx1MDAyNnZjLVx1MDAzZWxvY2spO1xuK1x0XHRcdHhmZXJfdG9fZ3Vlc3RfbW9kZV9oYW5kbGVfd29yaygpO1xuK1x0XHRcdHNwaW5fbG9jayhcdTAwMjZ2Yy1cdTAwM2Vsb2NrKTtcbiBcdFx0XHRpZiAodmMtXHUwMDNldmNvcmVfc3RhdGUgPT0gVkNPUkVfUFJFRU1QVClcbiBcdFx0XHRcdGt2bXBwY192Y29yZV9lbmRfcHJlZW1wdCh2Yyk7XG4gXHRcdH0gZWxzZSB7XG5AQCAtNDg5NSwxMiArNDkwMiwxNiBAQCBpbnQga3ZtaHZfcnVuX3NpbmdsZV92Y3B1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IHRpbWVfbGltaXQsXG4gXHRcdFx0cnVuLVx1MDAzZWV4aXRfcmVhc29uID0gS1ZNX0VYSVRfRkFJTF9FTlRSWTtcbiBcdFx0XHRydW4tXHUwMDNlZmFpbF9lbnRyeS5oYXJkd2FyZV9lbnRyeV9mYWlsdXJlX3JlYXNvbiA9IDA7XG4gXHRcdFx0dmNwdS1cdTAwM2VhcmNoLnJldCA9IHI7XG4tXHRcdFx0cmV0dXJuIHI7XG4rXHRcdFx0Z290byBkb25lO1xuIFx0XHR9XG4gXHR9XG4gXG4tXHRpZiAobmVlZF9yZXNjaGVkKCkpXG4tXHRcdGNvbmRfcmVzY2hlZCgpO1xuK1x0ciA9IGt2bV94ZmVyX3RvX2d1ZXN0X21vZGVfaGFuZGxlX3dvcmsodmNwdSk7XG4rXHRpZiAocikge1xuK1x0XHQvKiAtRUlOVFI6IHNpZ25hbCBwZW5kaW5nLCBleGl0IHRvIHVzZXJzcGFjZSAoS1ZNX0VYSVRfSU5UUikgKi9cbitcdFx0dmNwdS1cdTAwM2VhcmNoLnJldCA9IHI7XG4rXHRcdGdvdG8gZG9uZTtcbitcdH1cbiBcbiBcdGt2bXBwY191cGRhdGVfdnBhcyh2Y3B1KTtcbiBcbkBAIC00OTE0LDkgKzQ5MjUsMTMgQEAgaW50IGt2bWh2X3J1bl9zaW5nbGVfdmNwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCB0aW1lX2xpbWl0LFxuIFxuIFx0dmNwdS1cdTAwM2VhcmNoLnN0YXRlID0gS1ZNUFBDX1ZDUFVfUlVOTkFCTEU7XG4gXG4tXHRpZiAoc2lnbmFsX3BlbmRpbmcoY3VycmVudCkpXG4tXHRcdGdvdG8gc2lncGVuZDtcbi1cdGlmIChuZWVkX3Jlc2NoZWQoKSB8fCAha3ZtLVx1MDAzZWFyY2gubW11X3JlYWR5KVxuK1x0eGZlcl90b19ndWVzdF9tb2RlX3ByZXBhcmUoKTtcbitcbitcdC8qXG4rXHQgKiBJUlFzIGFyZSBkaXNhYmxlZCBoZXJlLCBzbyBvbiBwZW5kaW5nIHdvcmsgYmFpbCB0byB0aGUgb3V0ZXIgbG9vcCxcbitcdCAqIHdoaWNoIGhhbmRsZXMgaXQgdmlhIGt2bV94ZmVyX3RvX2d1ZXN0X21vZGVfaGFuZGxlX3dvcmsoKSBhYm92ZS5cbitcdCAqL1xuK1x0aWYgKHhmZXJfdG9fZ3Vlc3RfbW9kZV93b3JrX3BlbmRpbmcoKSB8fCAha3ZtLVx1MDAzZWFyY2gubW11X3JlYWR5KVxuIFx0XHRnb3RvIG91dDtcbiBcbiBcdHZjcHUtXHUwMDNlY3B1ID0gcGNwdTtcbkBAIC01MDY4LDEwICs1MDgzLDYgQEAgaW50IGt2bWh2X3J1bl9zaW5nbGVfdmNwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCB0aW1lX2xpbWl0LFxuIFxuIFx0cmV0dXJuIHZjcHUtXHUwMDNlYXJjaC5yZXQ7XG4gXG4tIHNpZ3BlbmQ6XG4tXHR2Y3B1LVx1MDAzZXN0YXQuc2lnbmFsX2V4aXRzKys7XG4tXHRydW4tXHUwMDNlZXhpdF9yZWFzb24gPSBLVk1fRVhJVF9JTlRSO1xuLVx0dmNwdS1cdTAwM2VhcmNoLnJldCA9IC1FSU5UUjtcbiAgb3V0OlxuIFx0dmNwdS1cdTAwM2VjcHUgPSAtMTtcbiBcdHZjcHUtXHUwMDNlYXJjaC50aHJlYWRfY3B1ID0gLTE7XG5kaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2t2bS9ib29rZS5jIGIvYXJjaC9wb3dlcnBjL2t2bS9ib29rZS5jXG5pbmRleCBmM2RkYjI0ZWNlNzQ5Zi4uNWZiYTE5OWRmZGQ2YTYgMTAwNjQ0XG4tLS0gYS9hcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmNcbisrKyBiL2FyY2gvcG93ZXJwYy9rdm0vYm9va2UuY1xuQEAgLTcyMiw2ICs3MjIsNyBAQCBpbnQga3ZtcHBjX2NvcmVfcHJlcGFyZV90b19lbnRlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gXHRpZiAodmNwdS1cdTAwM2VhcmNoLnNoYXJlZC1cdTAwM2Vtc3IgXHUwMDI2IE1TUl9XRSkge1xuIFx0XHRsb2NhbF9pcnFfZW5hYmxlKCk7XG4gXHRcdGt2bV92Y3B1X2hhbHQodmNwdSk7XG4rXHRcdGxvY2FsX2lycV9kaXNhYmxlKCk7XG4gXHRcdGhhcmRfaXJxX2Rpc2FibGUoKTtcbiBcbiBcdFx0a3ZtcHBjX3NldF9leGl0X3R5cGUodmNwdSwgRU1VTEFURURfTVRNU1JXRV9FWElUUyk7XG5kaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2t2bS9wb3dlcnBjLmMgYi9hcmNoL3Bvd2VycGMva3ZtL3Bvd2VycGMuY1xuaW5kZXggMDAzMDIzOTlmYzM3YjQuLmJlNWU0OGFlMGM2YzIxIDEwMDY0NFxuLS0tIGEvYXJjaC9wb3dlcnBjL2t2bS9wb3dlcnBjLmNcbisrKyBiL2FyY2gvcG93ZXJwYy9rdm0vcG93ZXJwYy5jXG5AQCAtODEsMjMgKzgxLDQxIEBAIGludCBrdm1wcGNfcHJlcGFyZV90b19lbnRlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gXHRpbnQgcjtcbiBcbiBcdFdBUk5fT04oaXJxc19kaXNhYmxlZCgpKTtcbitcdC8qXG4rXHQgKiBsb2NhbF9pcnFfZGlzYWJsZSgpIGZpcnN0OiBvbiAzMi1iaXQsIGhhcmRfaXJxX2Rpc2FibGUoKSBhbG9uZSBpcyBhXG4rXHQgKiByYXcgTVNSW0VFXSBjbGVhciB0aGF0IGJ5cGFzc2VzIHRoZSBsb2NrZGVwL2lycS10cmFjaW5nIHN0YXRlLCBhbmRcbitcdCAqIHRoZSB4ZmVyX3RvX2d1ZXN0X21vZGUgaGVscGVycyBhc3NlcnQgSVJRcyBhcmUgc2VlbiBhcyBkaXNhYmxlZC5cbitcdCAqL1xuK1x0bG9jYWxfaXJxX2Rpc2FibGUoKTtcbiBcdGhhcmRfaXJxX2Rpc2FibGUoKTtcbiBcbiBcdHdoaWxlICh0cnVlKSB7XG4tXHRcdGlmIChuZWVkX3Jlc2NoZWQoKSkge1xuK1x0XHR4ZmVyX3RvX2d1ZXN0X21vZGVfcHJlcGFyZSgpO1xuK1xuK1x0XHRpZiAoeGZlcl90b19ndWVzdF9tb2RlX3dvcmtfcGVuZGluZygpKSB7XG4rXHRcdFx0LypcbitcdFx0XHQgKiBUaGUgaGVscGVyIG11c3QgcnVuIHdpdGggSVJRcyBlbmFibGVkIGFuZCBtYXlcbitcdFx0XHQgKiBzY2hlZHVsZSgpLiBPbiBhIHBlbmRpbmcgc2lnbmFsIGl0IHJldHVybnMgLUVJTlRSXG4rXHRcdFx0ICogd2l0aCBydW4tXHUwMDNlZXhpdF9yZWFzb24gYW5kIHZjcHUtXHUwMDNlc3RhdC5zaWduYWxfZXhpdHNcbitcdFx0XHQgKiBhbHJlYWR5IHNldCwgc28ganVzdCByZXR1cm4gdG8gdXNlcnNwYWNlLlxuK1x0XHRcdCAqL1xuIFx0XHRcdGxvY2FsX2lycV9lbmFibGUoKTtcbi1cdFx0XHRjb25kX3Jlc2NoZWQoKTtcbitcdFx0XHRyID0ga3ZtX3hmZXJfdG9fZ3Vlc3RfbW9kZV9oYW5kbGVfd29yayh2Y3B1KTtcbitcdFx0XHRsb2NhbF9pcnFfZGlzYWJsZSgpO1xuIFx0XHRcdGhhcmRfaXJxX2Rpc2FibGUoKTtcbitcdFx0XHRpZiAocikge1xuK1x0XHRcdFx0LypcbitcdFx0XHRcdCAqIFRoZSBnZW5lcmljIGhlbHBlciBkb2VzIG5vdCBzZXQgdGhlIGV4aXRcbitcdFx0XHRcdCAqIHR5cGU7IHJlY29yZCBpdCBmb3IgdGhlIEU1MDBcbitcdFx0XHRcdCAqIENPTkZJR19LVk1fRVhJVF9USU1JTkcgaGlzdG9ncmFtIChhIG5vLW9wXG4rXHRcdFx0XHQgKiBvdGhlcndpc2UpLlxuK1x0XHRcdFx0ICovXG4rXHRcdFx0XHRrdm1wcGNfc2V0X2V4aXRfdHlwZSh2Y3B1LCBTSUdOQUxfRVhJVFMpO1xuK1x0XHRcdFx0YnJlYWs7XG4rXHRcdFx0fVxuIFx0XHRcdGNvbnRpbnVlO1xuIFx0XHR9XG4gXG4tXHRcdGlmIChzaWduYWxfcGVuZGluZyhjdXJyZW50KSkge1xuLVx0XHRcdGt2bXBwY19hY2NvdW50X2V4aXQodmNwdSwgU0lHTkFMX0VYSVRTKTtcbi1cdFx0XHR2Y3B1LVx1MDAzZXJ1bi1cdTAwM2VleGl0X3JlYXNvbiA9IEtWTV9FWElUX0lOVFI7XG4tXHRcdFx0ciA9IC1FSU5UUjtcbi1cdFx0XHRicmVhaztcbi1cdFx0fVxuLVxuIFx0XHR2Y3B1LVx1MDAzZW1vZGUgPSBJTl9HVUVTVF9NT0RFO1xuIFxuIFx0XHQvKlxuQEAgLTExNiw2ICsxMzQsNyBAQCBpbnQga3ZtcHBjX3ByZXBhcmVfdG9fZW50ZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIFx0XHRcdGxvY2FsX2lycV9lbmFibGUoKTtcbiBcdFx0XHR0cmFjZV9rdm1fY2hlY2tfcmVxdWVzdHModmNwdSk7XG4gXHRcdFx0ciA9IGt2bXBwY19jb3JlX2NoZWNrX3JlcXVlc3RzKHZjcHUpO1xuK1x0XHRcdGxvY2FsX2lycV9kaXNhYmxlKCk7XG4gXHRcdFx0aGFyZF9pcnFfZGlzYWJsZSgpO1xuIFx0XHRcdGlmIChyIFx1MDAzZSAwKVxuIFx0XHRcdFx0Y29udGludWU7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwMjoyMzoyNC40NzkzNDI3MDhaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDEwMTIxNDUzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBvd2VyUEMgS1ZNIFBhdGNoIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIEkndmUgZ290IGEgcGF0Y2ggaGVyZSB0aGF0J3MgdG91Y2hpbmcgc29tZSBjb3JlIEtWTSBjb2RlIHNwZWNpZmljYWxseSBmb3IgUG93ZXJQQy4gSXQncyBtb2RpZnlpbmcgZmlsZXMgbGlrZSBgYm9vazNzX2h2LmNgLCBgYm9va2UuY2AsIGFuZCBgcG93ZXJwYy5jYCBpbiB0aGUgYGFyY2gvcG93ZXJwYy9rdm1gIGRpcmVjdG9yeS4gVGhlIHBhdGNoIGlzIGFsc28gYWRkaW5nIHNvbWUgYHNlbGVjdGAgc3RhdGVtZW50cyBpbiB0aGUgYEtjb25maWdgIGZpbGVzIOKAkyBgSEFWRV9QT1NJWF9DUFVfVElNRVJTX1RBU0tfV09SS2AgYW5kIGBWSVJUX1hGRVJfVE9fR1VFU1RfV09SS2AuIFRoZXNlIGBzZWxlY3RgIHN0YXRlbWVudHMgYXJlIGludGVyZXN0aW5nOyB0aGV5J3JlIHByb2JhYmx5IGVuYWJsaW5nIHNwZWNpZmljIGZlYXR1cmVzIG9yIGRlcGVuZGVuY2llcyB3aXRoaW4gdGhlIFBvd2VyUEMgS1ZNIGVudmlyb25tZW50LiBUaGUgcmVhbCBtZWF0IG9mIHRoZSBjaGFuZ2UsIHRob3VnaCwgc2VlbXMgdG8gYmUgcmVwbGFjaW5nIHRoZSBzdGFuZGFyZCBgbmVlZF9yZXNjaGVkKClgIGFuZCBgc2lnbmFsX3BlbmRpbmcoKWAgY2hlY2tzIHdpdGggdGhpcyBuZXcgYHhmZXJfdG9fZ3Vlc3RfbW9kZWAgbG9naWMgKGB4ZmVyX3RvX2d1ZXN0X21vZGVfcHJlcGFyZSgpYCwgYHhmZXJfdG9fZ3Vlc3RfbW9kZV93b3JrX3BlbmRpbmcoKWAsIGFuZCBga3ZtX3hmZXJfdG9fZ3Vlc3RfbW9kZV9oYW5kbGVfd29yaygpYCkuIFRoaXMgc3VnZ2VzdHMgYSBmdW5kYW1lbnRhbCBzaGlmdCBpbiBob3cgS1ZNIGhhbmRsZXMgZW50cnkgYW5kIGV4aXQgb24gUG93ZXJQQywgd2hpY2ggbWFrZXMgdGhpcyBwYXRjaCByaXBlIGZvciBhbmFseXNpcy5cblxuTXkgZmlyc3QgdGhvdWdodCBpcywgY2FuIHRoaXMgYmUgZnV6emVkPyBXZWxsLCBvYnZpb3VzbHksIGlmIHdlIGNhbiAqcnVuKiBQb3dlclBDIEtWTS4gU3l6a2FsbGVyLCBteSBnby10byBmdXp6aW5nIHRvb2wsIHR5cGljYWxseSBkb2Vzbid0IGF1dG9tYXRpY2FsbHkgdGFyZ2V0IFBvd2VyUEMgS1ZNIHVubGVzcyBpdCdzIGNvbmZpZ3VyZWQgdG8uIEkga25vdyBTeXprYWxsZXIgaGFzIHNvbWUgUG93ZXJQQyBzdXBwb3J0LCBzbyBtYXliZSBpdCdzIGFscmVhZHkgdGhlcmU/IFdhaXQsIHRoZSBxdWVzdGlvbiBhc2tzIG1lIHRvIGNvbnNpZGVyIHRoYXQgU3l6a2FsbGVyICpkb2VzKiBoYXZlIEtWTSBzdXBwb3J0LCBzbyBwZXJoYXBzIHRoaXMgaXMgYSBzaW1wbGVyIHRhc2sgdGhhbiBJIGZpcnN0IGJlbGlldmVkLiBUaGUgcHJvbXB0IGlzIGFsc28gcG9pbnRpbmcgb3V0IHRoYXQgY2VydGFpbiBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHNvbWUgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIGV2ZW4gUUVNVS4gVGhhdCdzIGEgZ29vZCByZW1pbmRlciB0byBiZSBhd2FyZSBvZiBteSBleGVjdXRpb24gZW52aXJvbm1lbnQuXG5cbkNhbiB3ZSByZWFjaCBQb3dlclBDIEtWTSBpbiBRRU1VPyBIbW0sIFFFTVUgZG9lcyBzdXBwb3J0IFBvd2VyUEMgS1ZNLCBidXQgdHlwaWNhbGx5IHJlcXVpcmVzIGEgUG93ZXJQQyBob3N0LiBPciBtYXliZSBuZXN0ZWQgS1ZNPyBUaGF0J3Mgd29ydGggcmVtZW1iZXJpbmcuIFRoZSBwcm9tcHQgYWxzbyByZW1pbmRzIG1lIHRoYXQgaWYgdGhlIHN5emthbGxlciBpbnN0YW5jZSBpcyBvbiB4ODYsIGl0ICp3b24ndCogYmUgYWJsZSB0byBkaXJlY3RseSBoaXQgUG93ZXJQQyBLVk0sIHJpZ2h0PyBCdXQgd2FpdCwgSSBrbm93IHN5emJvdCAqZG9lcyogaGF2ZSBQb3dlclBDIGluc3RhbmNlcy4gVGhhdCBpcyBhIGdhbWUgY2hhbmdlci4gRG9lcyBzeXpib3QgZnV6eiBLVk0gb24gUG93ZXJQQz8gSSBuZWVkIHRvIGxvb2sgaW50byB0aGF0LlxuXG5Pa2F5LCBsZXQncyByZWZvY3VzLiBJcyB0aGlzIHBhdGNoIGV2ZW4gd29ydGggZnV6emluZz8gSXQncyB0b3VjaGluZyBjb3JlIEtWTSBsb2dpYyBvbiBQb3dlclBDLiBZZXMsIGRlZmluaXRlbHkgd29ydGggdGhlIGVmZm9ydC4gSG93IHJlYWNoYWJsZSBpcyB0aGlzIGNvZGU/IEFoLCByaWdodCwgYC9kZXYva3ZtYCBpb2N0bHMsIHNwZWNpZmljYWxseSBgS1ZNX1JVTmAuIFRoYXQncyB0aGUgZW50cnkgcG9pbnQuIEkgbmVlZCB0byBpZGVudGlmeSB0aGUgc3BlY2lmaWMgZnVuY3Rpb25zIG1vZGlmaWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGNvZGUgcGF0aHMuIE9rYXksIGxldCdzIGxvb2sgZm9yIHRoZSBtb2RpZmllZCBmdW5jdGlvbnM6IGBrdm1wcGNfcnVuX2NvcmVgLCBga3ZtcHBjX3J1bl92Y3B1YCwgYGt2bWh2X3J1bl9zaW5nbGVfdmNwdWAsIGBrdm1wcGNfY29yZV9wcmVwYXJlX3RvX2VudGVyYCwgYW5kIGBrdm1wcGNfcHJlcGFyZV90b19lbnRlcmAuIFRoZXNlIGFyZSB0aGUga2V5IGZ1bmN0aW9ucyB0byB3YXRjaC5cblxuTmV4dCBzdGVwOiBsZXQncyBjaGVjayBLVk0gZW5hYmxlbWVudCBvbiBQb3dlclBDLiBUaGUgY29uZmlncyBJIHdhbnQgdG8gbG9vayBhdCBhcmUgYEtWTWAsIGBLVk1fQk9PSzNTXzY0YCwgYEtWTV9FNTAwVjJgLCBhbmQgYEtWTV9FNTAwTUNgLiBJIG5lZWQgdG8gZW5zdXJlIHRoZXNlIGFyZSBwcm9wZXJseSBlbmFibGVkLiBUaGUgcHJvbXB0IGFsc28gbWVudGlvbnMgXCJFbmFibGVDb25maWdzXCIgYW5kIFwiRm9jdXNTeW1ib2xzLFwiIHNvIEknbGwgbmVlZCB0byB1c2UgdGhvc2UgdG9vbHMgdG8gc3BlY2lmaWNhbGx5IGxvb2sgYXQgYGFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZ2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxNjAsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NDEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwMjoyMzozNC41ODA1NjAyMjFaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQyNTU5NjE2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBLVk1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xOS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MjA6Y29uZmlnIEtWTVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yMS1cXHRib29sXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjYtXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjI3OmNvbmZpZyBLVk1fQk9PSzNTX0hBTkRMRVJcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjgtXFx0Ym9vbFxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yOS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MzA6Y29uZmlnIEtWTV9CT09LM1NfMzJfSEFORExFUlxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0zMS1cXHRib29sXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMzQtXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjM1OmNvbmZpZyBLVk1fQk9PSzNTXzY0X0hBTkRMRVJcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMzYtXFx0Ym9vbFxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTM4LVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzozOTpjb25maWcgS1ZNX0JPT0szU19QUl9QT1NTSUJMRVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy00MC1cXHRib29sXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctNDItXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjQzOmNvbmZpZyBLVk1fQk9PSzNTX0hWX1BPU1NJQkxFXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTQ0LVxcdGJvb2xcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctNDUtXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjQ2OmNvbmZpZyBLVk1fQk9PSzNTXzMyXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTQ3LVxcdHRyaXN0YXRlIFxcXCJLVk0gc3VwcG9ydCBmb3IgUG93ZXJQQyBib29rM3NfMzIgcHJvY2Vzc29yc1xcXCJcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy02Mi1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6NjM6Y29uZmlnIEtWTV9CT09LM1NfNjRcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctNjQtXFx0dHJpc3RhdGUgXFxcIktWTSBzdXBwb3J0IGZvciBQb3dlclBDIGJvb2szc182NCBwcm9jZXNzb3JzXFxcIlxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTc5LVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzo4MDpjb25maWcgS1ZNX0JPT0szU182NF9IVlxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy04MS1cXHR0cmlzdGF0ZSBcXFwiS1ZNIGZvciBQT1dFUjcgYW5kIGxhdGVyIHVzaW5nIGh5cGVydmlzb3IgbW9kZSBpbiBob3N0XFxcIlxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTEwMC1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MTAxOmNvbmZpZyBLVk1fQk9PSzNTXzY0X1BSXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTEwMi1cXHR0cmlzdGF0ZSBcXFwiS1ZNIHN1cHBvcnQgd2l0aG91dCB1c2luZyBoeXBlcnZpc29yIG1vZGUgaW4gaG9zdFxcXCJcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xMjYtXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjEyNzpjb25maWcgS1ZNX0JPT0szU19IVl9FWElUX1RJTUlOR1xcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xMjgtXFx0Ym9vbFxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xMjktXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjEzMDpjb25maWcgS1ZNX0JPT0szU19IVl9QOV9USU1JTkdcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTMxLVxcdGJvb2wgXFxcIkRldGFpbGVkIHRpbWluZyBmb3IgdGhlIFA5IGVudHJ5IHBvaW50XFxcIlxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE0Mi1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MTQzOmNvbmZpZyBLVk1fQk9PSzNTX0hWX1A4X1RJTUlOR1xcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xNDQtXFx0Ym9vbCBcXFwiRGV0YWlsZWQgdGltaW5nIGZvciBoeXBlcnZpc29yIHJlYWwtbW9kZSBjb2RlIChmb3IgUE9XRVI4KVxcXCJcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xNTctXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjE1ODpjb25maWcgS1ZNX0JPT0szU19IVl9ORVNURURfUE1VX1dPUktBUk9VTkRcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTU5LVxcdGJvb2wgXFxcIk5lc3RlZCBMMCBob3N0IHdvcmthcm91bmQgZm9yIEwxIEtWTSBob3N0IFBNVSBoYW5kbGluZyBidWdcXFwiIGlmIEVYUEVSVFxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE3Mi1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MTczOmNvbmZpZyBLVk1fQk9PSzNTX0hWX1BNVVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xNzQtXFx0dHJpc3RhdGUgXFxcIkh5cGVydmlzb3IgUGVyZiBldmVudHMgZm9yIEtWTSBCb29rM3MtSFZcXFwiXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTg0LVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxODU6Y29uZmlnIEtWTV9CT09LRV9IVlxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xODYtXFx0Ym9vbFxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xODctXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjE4ODpjb25maWcgS1ZNX0VYSVRfVElNSU5HXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE4OS1cXHRib29sIFxcXCJEZXRhaWxlZCBleGl0IHRpbWluZ1xcXCJcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xOTgtXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjE5OTpjb25maWcgS1ZNX0U1MDBWMlxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yMDAtXFx0Ym9vbCBcXFwiS1ZNIHN1cHBvcnQgZm9yIFBvd2VyUEMgRTUwMHYyIHByb2Nlc3NvcnNcXFwiXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjEzLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoyMTQ6Y29uZmlnIEtWTV9FNTAwTUNcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjE1LVxcdGJvb2wgXFxcIktWTSBzdXBwb3J0IGZvciBQb3dlclBDIEU1MDBNQy9FNTUwMC9FNjUwMCBwcm9jZXNzb3JzXFxcIlxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTIyOS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MjMwOmNvbmZpZyBLVk1fTVBJQ1xcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yMzEtXFx0Ym9vbCBcXFwiS1ZNIGluLWtlcm5lbCBNUElDIGVtdWxhdGlvblxcXCJcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yNDEtXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjI0Mjpjb25maWcgS1ZNX1hJQ1NcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjQzLVxcdGJvb2wgXFxcIktWTSBpbi1rZXJuZWwgWElDUyBlbXVsYXRpb25cXFwiXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjUxLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoyNTI6Y29uZmlnIEtWTV9YSVZFXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTI1My1cXHRib29sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDAyOjIzOjM0LjcyMzEyNzk3NloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwNjIyMzYyMjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBLVk0gUG93ZXJQQyBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmNgLCBgYXJjaC9wb3dlcnBjL2t2bS9ib29rZS5jYCwgYW5kIGBhcmNoL3Bvd2VycGMva3ZtL3Bvd2VycGMuY2AuIFJpZ2h0LCB0eXBpY2FsIEtWTSBmaWxlIG1vZGlmaWNhdGlvbnMgb24gUG93ZXJQQy4gTGV0J3Mgc2VlLCB0aGUgS1ZNIGNvbmZpZ3MgaW4gcGxheSBoZXJlIGFyZSBgS1ZNYCwgYEtWTV9CT09LM1NfNjRfSFZgLCBgS1ZNX0JPT0szU182NF9QUmAsIGBLVk1fQk9PSzNTXzMyYCwgYEtWTV9FNTAwVjJgLCBhbmQgYEtWTV9FNTAwTUNgLiBXYWl0IGEgc2Vjb25k4oCmIGBib29rM3NfaHYuY2AgaXMgc3BlY2lmaWNhbGx5IGNvbXBpbGVkIHdoZW4gYEtWTV9CT09LM1NfNjRfSFZgIGlzIGVuYWJsZWQuIEkgc2hvdWxkIHByb2JhYmx5IGRvdWJsZSBjaGVjayB0aGF0IG1ha2VmaWxlIHRvIGJlIHN1cmUgdGhlIGRlcGVuZGVuY2llcyBhcmUgYXMgSSBleHBlY3QuIE9rYXksIGxldCdzIGxvb2sgYXQgYGFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGVgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MjA2LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTY5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDAyOjIzOjM4Ljc4NTM2OTAwM1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzAzMTU4NjY2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJvb2szc19odi5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZT02Mj1rdm0taHYteSArPSBcXFxcXFxuYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZTo2MzpcXHRib29rM3NfaHYubyBcXFxcXFxuYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZS02NC1cXHRib29rM3NfaHZfaW50ZXJydXB0cy5vIFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDI6MjM6NDAuNDg4NTc3MjA4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDEyNzM0MDkzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gdGhlIFBvd2VyUEMgS1ZNIEltcGxlbWVudGF0aW9uKipcblxuQWxyaWdodCwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgUG93ZXJQQyBLVk0gaHlwZXJ2aXNvciBzcGVjaWZpY3MuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIGBhcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlYC4gVGhhdCdzIHRoZSB1c3VhbCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyB3aGljaCBwYXJ0cyBvZiB0aGUgS1ZNIGluZnJhc3RydWN0dXJlIGFyZSBiZWluZyBjb21waWxlZCBhbmQgaW50ZWdyYXRlZCBmb3IgdGhpcyBhcmNoaXRlY3R1cmUuIEknbSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RlZCBpbiBzZWVpbmcgaG93IHRoZSBoeXBlcnZpc29yIGl0c2VsZiBpcyBicm91Z2h0IGludG8gdGhlIGJ1aWxkIHByb2Nlc3M7IHRoYXQncyB3aGVyZSBJIGV4cGVjdCB0byBmaW5kIHRoZSBkZWZpbml0aW9uIG9mIGBrdm0taHYteWAsIG9yIHNvbWV0aGluZyBlcXVpdmFsZW50LiBUaGF0IHZhcmlhYmxlIHdpbGwgZ2l2ZSBtZSBhIGNsdWUgYXMgdG8gd2hpY2ggc3BlY2lmaWMgc291cmNlIGZpbGVzIGFyZSBjb25zaWRlcmVkIGVzc2VudGlhbCB0byB0aGUgS1ZNIGltcGxlbWVudGF0aW9uLiBGcm9tIHRoZXJlLCBJJ2xsIGJlIGFibGUgdG8gd29yayB0aHJvdWdoIHRoZSBkZXRhaWxzLlxuXG5UaGVuLCBJJ20gZ29pbmcgdG8gdHVybiBteSBhdHRlbnRpb24gdG8gYGJvb2tlLmNgIHdoaWNoLCBpZiBJIHJlY2FsbCBjb3JyZWN0bHksIGlzIGNyaXRpY2FsIGZvciB0aGUgQm9vay1FIGFyY2hpdGVjdHVyZS4gSSdsbCBuZWVkIHRvIHNlZSBob3cgdGhlIGNvZGUgaGFuZGxlcyBjcml0aWNhbCBmdW5jdGlvbnMgc3VjaCBhcyBleGNlcHRpb24gdmVjdG9yIG1hbmFnZW1lbnQsIGludGVycnVwdCBoYW5kbGluZywgYW5kIGFueSBvdGhlciBCb29rLUUgc3BlY2lmaWMgZmVhdHVyZXMgdGhhdCBhcmUgcmVxdWlyZWQgZm9yIEtWTSB0byBmdW5jdGlvbiBjb3JyZWN0bHkuIFRoaXMgaXMgd2hlcmUgSSdsbCBwcm9iYWJseSBmaW5kIHRoZSBrZXkgaW50ZXJhY3Rpb25zIGJldHdlZW4gdGhlIGh5cGVydmlzb3IgYW5kIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NzE0LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDI6MjM6NDQuNjE1OTIwNjk0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1OTc2NjE2MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJib29rZS5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZT0xNj1rdm0tZTUwMC1vYmpzIDo9IFxcXFxcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGUtMTgtXFx0ZW11bGF0ZS5vIFxcXFxcXG5hcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlOjE5OlxcdGJvb2tlLm8gXFxcXFxcbmFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGUtMjAtXFx0Ym9va2VfZW11bGF0ZS5vIFxcXFxcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGU9Mjg9a3ZtLWU1MDBtYy1vYmpzIDo9IFxcXFxcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGUtMzAtXFx0ZW11bGF0ZS5vIFxcXFxcXG5hcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlOjMxOlxcdGJvb2tlLm8gXFxcXFxcbmFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGUtMzItXFx0Ym9va2VfZW11bGF0ZS5vIFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDI6MjM6NDUuMTc1NjkzMjE4WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzIyNDMyNjcyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCdzIHBlcnNwZWN0aXZlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBQb3dlclBDIEtWTSBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgbGV0J3Mgc2VlLCBJJ20gdGhpbmtpbmcgYWJvdXQgdGhvc2Ugc3BlY2lmaWMgS1ZNIGNvbmZpZ3VyYXRpb25zOiBgS1ZNX0JPT0szU182NF9IVmAgYW5kIHRoZW4gZWl0aGVyIGBLVk1fRTUwMFYyYCBvciBgS1ZNX0U1MDBNQ2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGVzZSBhcmUgc2V0IHVwLiBBaCwgcmlnaHQsIHRoZSBgYXJjaC9wb3dlcnBjL2t2bS9wb3dlcnBjLmNgIGZpbGUgaXMgY29tcGlsZWQgZm9yICphbGwqIEtWTSBpbXBsZW1lbnRhdGlvbnMgb24gUG93ZXJQQyBhcmNoaXRlY3R1cmVzLiBUaGF0IG1ha2VzIHNlbnNlLCBhIGNvbW1vbiBlbnRyeSBwb2ludC4gT2theSwgbm93IEkgbmVlZCB0byBjaGVjayB0aGUgS1ZNIE1ha2VmaWxlIGluIHRoZSBQb3dlclBDIGFyY2hpdGVjdHVyZSBkaXJlY3RvcnkuIEknbGwgbmVlZCB0byBjb25maXJtIHRoYXQgYHBvd2VycGMub2AgaXMgaW5kZWVkIGxpc3RlZCB0aGVyZSwgdG8gdW5kZXJzdGFuZCBob3cgdGhvc2UgY29uZmlndXJhdGlvbnMgZ2V0IHdpcmVkIHVwIGludG8gdGhlIEtWTSBidWlsZCBwcm9jZXNzLiBUaGF0IE1ha2VmaWxlIGlzIG15IG5leHQgc3RvcC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODI0NCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDAyOjIzOjQ4LjQwMDAyMjI0WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDU3MDA5NDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicG93ZXJwYy5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZT04PWluY2x1ZGUgJChzcmN0cmVlKS92aXJ0L2t2bS9NYWtlZmlsZS5rdm1cXG5hcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlLTktXFxuYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZToxMDpjb21tb24tb2Jqcy15ICs9IHBvd2VycGMubyBlbXVsYXRlX2xvYWRzdG9yZS5vXFxuYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZS0xMS1vYmotJChDT05GSUdfS1ZNX0VYSVRfVElNSU5HKSArPSB0aW1pbmcub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwMjoyMzo0OC41MDU3Mjk2NjJaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTMxODY2Mjc3NTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEtWTSBQb3dlclBDIFBhdGNoIGZvciBGdXp6aW5nIEZvY3VzKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBhbGwgYWJvdXQgS1ZNIGNvbmZpZ3VyYXRpb24sIHNwZWNpZmljYWxseSBmb3IgUG93ZXJQQy4gSXQgbG9va3MgbGlrZSB0aGUgY29yZSBjaGFuZ2UgaW52b2x2ZXMgdXBkYXRpbmcgdGhlIEtWTSBlbnRyeS9leGl0IGxvb3AuIEl0J3Mgc3dhcHBpbmcgb3V0IHRoZSBvbGQgYG5lZWRfcmVzY2hlZCgpYCBhbmQgYHNpZ25hbF9wZW5kaW5nKClgIGNoZWNrcyB3aXRoIHRoZSBuZXcgYHhmZXJfdG9fZ3Vlc3RfbW9kZWAgaGVscGVycy4gRnVuY3Rpb25hbGx5LCB0aGlzIGlzIHNpZ25pZmljYW50IGJlY2F1c2UgaXQncyByZXBsYWNpbmcgaG93IHRoZSBWQ1BVIGhhbmRsZXMgd29yayBhbmQgcmVzY2hlZHVsaW5nLiBUaGlzIHdob2xlIHRoaW5nIGlzIHRyaWdnZXJlZCBieSB0aGUgYEtWTV9SVU5gIGlvY3RsLCBzbyBpdCdzIGRpcmVjdGx5IGltcGFjdGluZyBob3cgdGhlIFZNIGFjdHVhbGx5IHJ1bnMuXG5cbk5vdywgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggZnVuY3Rpb25zIGFyZSB3b3J0aCBmb2N1c2luZyBvbiBmb3IgZnV6emluZy4gVGhlIHByb21wdCBzYXlzIHRvIGF2b2lkIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIGtlZXAgdGhlIHRlc3RzIGZyb20gYmVpbmcgc2tld2VkLiBMZXQncyBzZWUuLi4gdGhlIHBhdGNoIGlzIHRvdWNoaW5nIGBrdm1wcGNfcnVuX2NvcmVgLCBga3ZtcHBjX3J1bl92Y3B1YCwgYGt2bWh2X3J1bl9zaW5nbGVfdmNwdWAsIGBrdm1wcGNfY29yZV9wcmVwYXJlX3RvX2VudGVyYCwgYW5kIGBrdm1wcGNfcHJlcGFyZV90b19lbnRlcmAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGFsbCBvZiB0aG9zZSBhcmUgaG90LXBhdGggZnVuY3Rpb25zLCBlc3BlY2lhbGx5IGBrdm1odl9ydW5fc2luZ2xlX3ZjcHVgIHdoaWNoIGlzIHRoZSBtYWluIGxvb3AgZm9yIFZDUFUgZXhlY3V0aW9uLiBga3ZtcHBjX3J1bl9jb3JlYCwgYGt2bXBwY19ydW5fdmNwdWAsIGBrdm1wcGNfcHJlcGFyZV90b19lbnRlcmAgYW5kIGBrdm1wcGNfY29yZV9wcmVwYXJlX3RvX2VudGVyYCBhcmUgYWxsIHBhcnRzIG9mIHRoZSBWQ1BVIHJ1biBsb29wIGFzIHdlbGwuXG5cblNpbmNlICphbGwqIHRoZSBtb2RpZmllZCBmdW5jdGlvbnMgYXBwZWFyIHRvIGJlIGhvdC1wYXRoLCBpdCB3b3VsZCBpbml0aWFsbHkgc2VlbSB0aGF0IEkgc2hvdWxkIGxlYXZlIGBGb2N1c1N5bWJvbHNgIGVtcHR5LCB0byBhdm9pZCBza2V3ZWQgcmVzdWx0cy5cblxuQnV0IHdhaXQgYSBtaW51dGUsIGBrdm1wcGNfcHJlcGFyZV90b19lbnRlcmAgaXMgcHJvYmFibHkgbW9yZSBzcGVjaWZpYyB0byB0aGlzIGNvZGUgcGF0aCwgYXMgaXQgaXMgb25seSBjYWxsZWQgb24gZW50cnksIGFuZCBga3ZtaHZfcnVuX3NpbmdsZV92Y3B1YCBpcyBzcGVjaWZpYyB0byB0aGlzIGZlYXR1cmUuIEl0J3Mgbm90IGEgZ2VuZXJpYyBrZXJuZWwgZnVuY3Rpb24gbGlrZSBgc2NoZWR1bGVgIG9yIGBrbWFsbG9jYC4gSXQncyBhIFBvd2VyUEMtc3BlY2lmaWMgS1ZNIGhvdC1wYXRoLlxuXG5TbywgSSBzaG91bGQgYWRkIGBrdm1wcGNfcHJlcGFyZV90b19lbnRlcmAgYW5kIGBrdm1odl9ydW5fc2luZ2xlX3ZjcHVgIHRvIGBGb2N1c1N5bWJvbHNgLiBMZXQgbWUganVzdCBkb3VibGUgY2hlY2sgd2hlcmUgYGt2bXBwY19wcmVwYXJlX3RvX2VudGVyYCBpcyBkZWZpbmVkLCBhbmQgSSB3aWxsIGJlIGFsbCBzZXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg2ODIsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDI6MjQ6MDEuNjkyMzYwNzcxWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3Mjk0ODMwODQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtcHBjX3ByZXBhcmVfdG9fZW50ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9wb3dlcnBjL2t2bS9wb3dlcnBjLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9wb3dlcnBjL2t2bS9wb3dlcnBjLmM9NjU9aW50IGt2bV9hcmNoX3ZjcHVfc2hvdWxkX2tpY2soc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9wb3dlcnBjLmMtNzgtICovXFxuYXJjaC9wb3dlcnBjL2t2bS9wb3dlcnBjLmM6Nzk6aW50IGt2bXBwY19wcmVwYXJlX3RvX2VudGVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3Bvd2VycGMva3ZtL3Bvd2VycGMuYy04MC17XFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL3Bvd2VycGMuYy0xNTctfVxcbmFyY2gvcG93ZXJwYy9rdm0vcG93ZXJwYy5jOjE1ODpFWFBPUlRfU1lNQk9MX0dQTChrdm1wcGNfcHJlcGFyZV90b19lbnRlcik7XFxuYXJjaC9wb3dlcnBjL2t2bS9wb3dlcnBjLmMtMTU5LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwMjoyNDowMi40MjE4NTEwMzRaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjQzMzE2NzEyNjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgS1ZNL0hWIEltcGFjdCoqXG5cblJpZ2h0LCB0aGF0J3MgZGVmaW5pdGVseSB0aGUgY2FzZS4gQnV0LCBteSBtaW5kIGltbWVkaWF0ZWx5IGp1bXBzIHRvIGBrdm1odl9ydW5fc2luZ2xlX3ZjcHVgLiBXZSdyZSBsaWtlbHkgdGFsa2luZyBhYm91dCBhIHNwZWNpZmljIHNjZW5hcmlvIG9yIHBlcmZvcm1hbmNlIGlzc3VlIHRoYXQgaW52b2x2ZXMgYSBzaW5nbGUgdkNQVSBleGVjdXRpb24gaW4gYSBLVk0vSFYgY29udGV4dC4gVW5kZXJzdGFuZGluZyB0aGUgaW50cmljYWNpZXMgb2YgKnRoYXQqIGZ1bmN0aW9uJ3MgYmVoYXZpb3IsIHBhcnRpY3VsYXJseSBpdHMgaW50ZXJhY3Rpb24gd2l0aCB0aGUgaHlwZXJ2aXNvciBhbmQgdGhlIGd1ZXN0LCBpcyBjcnVjaWFsIGhlcmUuIFdoYXQncyB0aGUgY29udGV4dD8gV2hhdCB0cmlnZ2VyZWQgdGhlIGNvbnNpZGVyYXRpb24gb2YgdGhhdCBzcGVjaWZpYyBjYWxsPyBJcyBpdCByZWxhdGVkIHRvIGEgYm90dGxlbmVjaywgYSBzcGVjaWZpYyBpbnN0cnVjdGlvbiBzZXF1ZW5jZSwgYSBwYXJ0aWN1bGFyIGd1ZXN0IGFyY2hpdGVjdHVyZSwgb3IgYSBzeW5jaHJvbml6YXRpb24gaXNzdWU/IEknbSBhbHJlYWR5IGZvcm11bGF0aW5nIHF1ZXN0aW9ucyBpbiBteSBoZWFkIGFib3V0IHRoZSBkYXRhIGZsb3cgd2l0aGluIGl0LCB0aGUgaW50ZXJydXB0IGhhbmRsaW5nLCBhbmQgYW55IHBvdGVudGlhbCBjb250ZXh0IHN3aXRjaGVzIGludm9sdmVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDE5NSwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDAyOjI0OjI2Ljc1MzU2MTI1NloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjAxMTgyMzM2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bWh2X3J1bl9zaW5nbGVfdmNwdVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM9NDczOD1zdGF0aWMgaW50IGt2bXBwY19ydW5fdmNwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQ4NzMtXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo0ODc0OmludCBrdm1odl9ydW5fc2luZ2xlX3ZjcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgdGltZV9saW1pdCxcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQ4NzUtXFx0XFx0XFx0ICB1bnNpZ25lZCBsb25nIGxwY3IpXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jPTUwOTU9c3RhdGljIGludCBrdm1wcGNfdmNwdV9ydW5faHYoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01MTcxLVxcdFxcdGlmIChjcHVfaGFzX2ZlYXR1cmUoQ1BVX0ZUUl9BUkNIXzMwMCkpXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1MTcyOlxcdFxcdFxcdHIgPSBrdm1odl9ydW5fc2luZ2xlX3ZjcHUodmNwdSwgfih1NjQpMCxcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTUxNzMtXFx0XFx0XFx0XFx0XFx0XFx0ICB2Y3B1LVxcdTAwM2VhcmNoLnZjb3JlLVxcdTAwM2VscGNyKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDI6MjQ6MjcuMzU0NzUxNDcyWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5NDc1MjU2ODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgS1ZNL1BQQyBMYW5kc2NhcGUqKlxuXG5SaWdodCwgdGhhdCBzZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoLiBCdXQgYXMgYWx3YXlzLCB3aGVuIEknbSBkZWFsaW5nIHdpdGggS1ZNL1BQQywgSSBpbW1lZGlhdGVseSBzdGFydCBjb25zaWRlcmluZyB0aGUgaW1wbGljYXRpb25zLiBUaGUgb2J2aW91cyBxdWVzdGlvbiBJIGhhdmUgcmlnaHQgbm93IGlzOiBob3cgZG9lcyB0aGlzIHBsYXkgb3V0IHdpdGhpbiB0aGUgY29udGV4dCBvZiBga3ZtcHBjX3J1bl9jb3JlYD8gSSBuZWVkIHRvIGFuYWx5emUgaG93IHRoaXMgY2hhbmdlIGltcGFjdHMgdGhhdCBjcnVjaWFsIGZ1bmN0aW9uIGFuZCBpdHMgaW50ZXJhY3Rpb24gd2l0aCB0aGUgYnJvYWRlciBzeXN0ZW0uIEkgaGF2ZSBhIGZlZWxpbmcgdGhlcmUgd2lsbCBiZSBhIHN1YnRsZSBwb2ludCBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgaW4gdGhhdCBhcmVhLCBtYXliZSBhIHJhY2UgY29uZGl0aW9uIG9yIGEgY29ybmVyIGNhc2UgSSBuZWVkIHRvIGFjY291bnQgZm9yLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDc2OCwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDAyOjI0OjMwLjMwMjI4MDc1MloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzI2MDM1MzUzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bXBwY19ydW5fY29yZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM9Mzc1ND1zdGF0aWMgdm9pZCBzZXRfaXJxX2hhcHBlbmVkKGludCB0cmFwKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0zNzc1LSAqL1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6Mzc3NjpzdGF0aWMgbm9pbmxpbmUgdm9pZCBrdm1wcGNfcnVuX2NvcmUoc3RydWN0IGt2bXBwY192Y29yZSAqdmMpXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0zNzc3LXtcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNDAwNC1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjQwMDU6XFx0dHJhY2Vfa3ZtcHBjX3J1bl9jb3JlKHZjLCAwKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQwMDYtXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQwOTEtXFx0dmMtXFx1MDAzZXZjb3JlX3N0YXRlID0gVkNPUkVfSU5BQ1RJVkU7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo0MDkyOlxcdHRyYWNlX2t2bXBwY19ydW5fY29yZSh2YywgMSk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00MDkzLX1cXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM9NDczOD1zdGF0aWMgaW50IGt2bXBwY19ydW5fdmNwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQ4NDAtXFx0XFx0fSBlbHNlIHtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjQ4NDE6XFx0XFx0XFx0a3ZtcHBjX3J1bl9jb3JlKHZjKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQ4NDItXFx0XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwMjoyNDozMC42MjgzMzMyNDZaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc3NDQ1ODc3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipLZXJuZWwgVmlydHVhbGl6YXRpb24gLSBEaXZpbmcgaW50byB0aGUgRGV0YWlscyoqXG5cblllcywgdGhhdCdzIGV4YWN0bHkgd2hhdCBJIHdhcyB0aGlua2luZy4gV2UgYXJlIGluZGVlZCBkaXNjdXNzaW5nIHRoZSBmdW5kYW1lbnRhbCB3b3JraW5ncyBoZXJlLiBBbmQgc2luY2Ugd2UncmUgb24gdGhlIHRvcGljIG9mIHRoZSBrZXJuZWwsIEkgaW1tZWRpYXRlbHkgc3RhcnRlZCBjb25zaWRlcmluZyB0aGUgaW1wbGljYXRpb25zLiBUaGUgbG9naWNhbCBuZXh0IHN0ZXAsIGlzIHRoZSBga3ZtcHBjX3J1bl92Y3B1YCBmdW5jdGlvbi4gSSBhbSBhbHdheXMgdHJ5aW5nIHRvIHVuZGVyc3RhbmQgdGhlIGlubmVyIHdvcmtpbmdzIG9mIHRoZSBzeXN0ZW0gYXMgSSBjb25zaWRlciB0aGVzZSB0aGluZ3MuIFNwZWNpZmljYWxseSwgd2hlbiB3ZSdyZSB0cnlpbmcgdG8gZmlndXJlIG91dCBpZiBpdCBpcyB0cnVlLCBvciB3aGF0IHRoZSBwcm9jZXNzIHNob3VsZCBsb29rIGxpa2UuIFRoYXQncyB3aGVyZSB0aGluZ3MgZ2V0IGludGVyZXN0aW5nIGFuZCB3aGVyZSB0aGUgcmVhbCBvcHRpbWl6YXRpb24gb3Bwb3J0dW5pdGllcyBvZnRlbiBsaWUuIFdlIG5lZWQgdG8gYmUgY29uc2lkZXJpbmcgdGhlIGltcGxpY2F0aW9ucy4gSSB3b25kZXIgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBhc3BlY3RzIG9mIGl0cyBpbXBsZW1lbnRhdGlvbiB0aGF0IHdvdWxkIGJlIHJlbGV2YW50IHRvIHdoYXQgd2UgYXJlIGNvbnNpZGVyaW5nP1xuXG5cbiIsIklucHV0VG9rZW5zIjoxMTQyNiwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDAyOjI0OjM0LjQwMjc5NTkxM1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYwMDI5MTEyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bXBwY19ydW5fdmNwdVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM9NDcxOT1zdGF0aWMgaW50IGt2bWh2X3NldHVwX21tdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQ3MzctXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo0NzM4OnN0YXRpYyBpbnQga3ZtcHBjX3J1bl92Y3B1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQ3Mzkte1xcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00NzQ0LVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NDc0NTpcXHR0cmFjZV9rdm1wcGNfcnVuX3ZjcHVfZW50ZXIodmNwdSk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00NzQ2LVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00ODY4LVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NDg2OTpcXHR0cmFjZV9rdm1wcGNfcnVuX3ZjcHVfZXhpdCh2Y3B1KTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQ4NzAtXFx0c3Bpbl91bmxvY2soXFx1MDAyNnZjLVxcdTAwM2Vsb2NrKTtcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM9NDg3ND1pbnQga3ZtaHZfcnVuX3NpbmdsZV92Y3B1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IHRpbWVfbGltaXQsXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQ4ODYtXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo0ODg3OlxcdHRyYWNlX2t2bXBwY19ydW5fdmNwdV9lbnRlcih2Y3B1KTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQ4ODgtXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTUwODEtIGRvbmU6XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1MDgyOlxcdHRyYWNlX2t2bXBwY19ydW5fdmNwdV9leGl0KHZjcHUpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTA4My1cXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM9NTA5NT1zdGF0aWMgaW50IGt2bXBwY192Y3B1X3J1bl9odihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTUxNzQtXFx0XFx0ZWxzZVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NTE3NTpcXHRcXHRcXHRyID0ga3ZtcHBjX3J1bl92Y3B1KHZjcHUpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTE3Ni1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDI6MjQ6MzQuNTYyODM2NDE1WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE5NzY0NjQ0NzMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIEtWTS9QUEMgRW50cnkgUG9pbnQqKlxuXG5ZZXMsIHRoYXQncyByaWdodCwgdGhlIGNvbmZpcm1hdGlvbiBpcyBzb2xpZC4gSSdtIG9uIHRoZSByaWdodCB0cmFjay4gTXkgbWluZCB0aGVuIGltbWVkaWF0ZWx5IGp1bXBzIHRvIGEgY3JpdGljYWwgc2VjdGlvbiBvZiBjb2RlLiBTcGVjaWZpY2FsbHksIEknbSB0aGlua2luZyBhYm91dCBga3ZtcHBjX2NvcmVfcHJlcGFyZV90b19lbnRlcmAuIEl0J3MgYSBrZXkgZnVuY3Rpb24gaW4gdGhlIEtWTS9QUEMgYXJjaGl0ZWN0dXJlLCBpc24ndCBpdD8gSSBuZWVkIHRvIGFuYWx5emUgaG93IGl0IHNldHMgdGhlIHN0YWdlLCBob3cgaXQgaGFuZGxlcyB0aGUgdHJhbnNpdGlvbiBmcm9tIHRoZSBndWVzdCB0byB0aGUgaG9zdCwgZXNwZWNpYWxseSBjb25zaWRlcmluZyB0aGUgcG93ZXJwYyBhcmNoaXRlY3R1cmUgbnVhbmNlcy4gSSdtIHRyeWluZyB0byByZWNhbGwgdGhlIGRldGFpbHMgb2YgdGhlIGNvbnRleHQgc2F2ZS9yZXN0b3JlIGFuZCB3aGF0IHNhZmVndWFyZHMgaXQgcHV0cyBpbiBwbGFjZS4gSXQncyB0aW1lIHRvIHJlZnJlc2ggdGhlIGNvcmUgbG9naWM7IEkndmUgZ290IGEgc3BlY2lmaWMgaXNzdWUgaW4gbWluZCB0aGF0IGNvdWxkIGJlIGFkZHJlc3NlZCBieSByZS1hc3Nlc3NpbmcgdGhpcyBmdW5jdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTIzNTgsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwMjoyNDo1NC4zMjc0ODM1MDZaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NjgyODM2MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1wcGNfY29yZV9wcmVwYXJlX3RvX2VudGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvcG93ZXJwYy9rdm0vYm9va2UuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmM9NjkwPXN0YXRpYyB2b2lkIGt2bXBwY19jb3JlX2NoZWNrX2V4Y2VwdGlvbnMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rZS5jLTcwOS0vKiBDaGVjayBwZW5kaW5nIGV4Y2VwdGlvbnMgYW5kIGRlbGl2ZXIgb25lLCBpZiBwb3NzaWJsZS4gKi9cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmM6NzEwOmludCBrdm1wcGNfY29yZV9wcmVwYXJlX3RvX2VudGVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmMtNzExLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDI6MjQ6NTQuNzc0MzIwMDI5WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ5NTIwNjQ2MTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEtWTSBDb25maWd1cmF0aW9uIFJlcXVpcmVtZW50cyBmb3IgUG93ZXJQQyBQYXRjaCoqXG5cbk9rYXksIHllcywgdGhpcyBpcyBhIG1vZGlmaWNhdGlvbiB0byB0aGUgS1ZNIGVudHJ5L2V4aXQgcGF0aHMgb24gUG93ZXJQQywgZ290IGl0LiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIGxpc3QgdGhlIHR5cGljYWwgS1ZNIGNvbmZpZ3MgcmVxdWlyZWQsIGxpa2UgYEtWTWAsIGBLVk1fQk9PSzNTXzY0X0hWYCwgYEtWTV9FNTAwVjJgLCBhbmQgYEtWTV9FNTAwTUNgLiBUaGVuIEkgcmVhbGl6ZWQgYEtWTWAgaXMgcHJldHR5IGdlbmVyaWMsIGFuZCBgS1ZNX0JPT0szU182NF9IVmAgc2VlbXMgc3BlY2lmaWMgdG8gYGJvb2szc19odi5jYCwgYW5kIGVpdGhlciBgS1ZNX0U1MDBWMmAgb3IgYEtWTV9FNTAwTUNgIGlzIHRpZWQgdG8gYGJvb2tlLmNgLiBPaCwgaGFuZyBvbiwgdGhlcmUncyBhbHNvIGBLVk1fQk9PS0VfSFZgIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQuXG5cbkJ1dCB3YWl0LCB0aGUgaW5zdHJ1Y3Rpb25zIGFyZSB0ZWxsaW5nIG1lIHRvIGJlICpzcGVjaWZpYyouIFRoZXkncmUgc2F5aW5nIGRvbid0IGxpc3QgZ2VuZXJpYyBjb25maWdzIHRoYXQgYXJlIHByb2JhYmx5IGFscmVhZHkgZW5hYmxlZC4gU28sIHRoZSBxdWVzdGlvbiBiZWNvbWVzLCB3aGljaCBjb25maWdzIGFyZSAqZGlyZWN0bHkqIHRpZWQgdG8gdGhlIG1vZGlmaWVkIGNvZGU/IEdpdmVuIHRoYXQsIEknbSB0aGlua2luZyBJIHNob3VsZCBmb2N1cyBvbiBgS1ZNX0JPT0szU182NF9IVmAsIGBLVk1fRTUwMFYyYCwgYEtWTV9FNTAwTUNgLCBhbmQgYEtWTV9CT09LRV9IVmAuIEJlZm9yZSBJIGNvbW1pdCB0byB0aGF0IHRob3VnaCwgSSB3YW50IHRvIGRvdWJsZS1jaGVjayBgYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZWAgb25lIG1vcmUgdGltZSB0byBiZSBhYnNvbHV0ZWx5IHN1cmUgYWJvdXQgYGJvb2tlLmNgLiBOZWVkIHRvIGJlIHByZWNpc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyNzU3LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjgzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDAyOjI0OjU5LjcyNjM4ODk1MloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE2NzgyODYzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJvb2tlLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlPTE2PWt2bS1lNTAwLW9ianMgOj0gXFxcXFxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZS0xOC1cXHRlbXVsYXRlLm8gXFxcXFxcbmFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGU6MTk6XFx0Ym9va2UubyBcXFxcXFxuYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZS0yMC1cXHRib29rZV9lbXVsYXRlLm8gXFxcXFxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZT0yOD1rdm0tZTUwMG1jLW9ianMgOj0gXFxcXFxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZS0zMC1cXHRlbXVsYXRlLm8gXFxcXFxcbmFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGU6MzE6XFx0Ym9va2UubyBcXFxcXFxuYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZS0zMi1cXHRib29rZV9lbXVsYXRlLm8gXFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwMjoyNDo1OS45NDMxNzk3MTVaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE1OTg4Njg2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBob3cgSSdkIGFwcHJvYWNoIHRoaXMgdGFzaywgYXMgaWYgdGhlc2Ugd2VyZSBteSBpbnRlcm5hbCB0aG91Z2h0czpcblxuKipBbmFseXppbmcgS1ZNIE9iamVjdCBUcmlnZ2VycyoqXG5cblJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIHRoYXQgYXJlIHJlc3VsdGluZyBpbiB0aGUgYnVpbGQgb2YgYGt2bS1lNTAwLW9ianNgIGFuZCBga3ZtLWU1MDBtYy1vYmpzYC4gVGhpcyBpcyBmdW5kYW1lbnRhbCBmb3Igb3B0aW1pemluZyBhbmQgdW5kZXJzdGFuZGluZyBLVk0gZm9yIGU1MDAgYW5kIGU1MDBtYyBhcmNoaXRlY3R1cmVzLiBJIG5lZWQgdG8gdHJhY2UgdGhlIGRlcGVuZGVuY2llcyBhbmQgdW5kZXJzdGFuZCAqd2h5KiB0aG9zZSBzcGVjaWZpYyBvYmplY3QgZmlsZXMgYXJlIGJlaW5nIGluY2x1ZGVkLiBJcyBpdCBhIHBhcnRpY3VsYXIgZmVhdHVyZSBmbGFnLCBhIHNwZWNpZmljIGJvYXJkIGNvbmZpZ3VyYXRpb24sIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBUaW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eSBkaWdnaW5nIHRocm91Z2ggdGhlIG1ha2VmaWxlcywgY29uZmlnIG9wdGlvbnMsIGFuZCBrZXJuZWwgYnVpbGQgbG9ncy4gSSdsbCBiZSBsb29raW5nIGZvciBjb25kaXRpb25hbCBzdGF0ZW1lbnRzLCBkZXBlbmRlbmNpZXMsIGFuZCBhbnl0aGluZyB0aGF0IG1pZ2h0IHNoZWQgbGlnaHQgb24gdGhlIHRyaWdnZXJpbmcgbWVjaGFuaXNtLiBVbHRpbWF0ZWx5LCBJIHdhbnQgdG8gZm9ybSBhIGNvbXBsZXRlIG1lbnRhbCBtYXAgb2YgdGhlIGJ1aWxkIHByb2Nlc3MgZm9yIHRoZXNlIHNwZWNpZmljIEtWTSBvYmplY3QgZmlsZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzNTk2LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDI6MjU6MDMuMTAzMDY5ODc4WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDg5MDU5MTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtLWU1MDBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlPTE0PUFGTEFHU19ib29rZV9pbnRlcnJ1cHRzLm8gOj0gLUkkKG9ianRyZWUpLyQob2JqKVxcbmFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGUtMTUtXFxuYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZToxNjprdm0tZTUwMC1vYmpzIDo9IFxcXFxcXG5hcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlLTE3LVxcdCQoY29tbW9uLW9ianMteSkgXFxcXFxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZS0yNS1cXHRlNTAwX2VtdWxhdGUub1xcbmFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGU6MjY6a3ZtLW9ianMtJChDT05GSUdfS1ZNX0U1MDBWMikgOj0gJChrdm0tZTUwMC1vYmpzKVxcbmFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGUtMjctXFxuYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZToyODprdm0tZTUwMG1jLW9ianMgOj0gXFxcXFxcbmFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGUtMjktXFx0JChjb21tb24tb2Jqcy15KSBcXFxcXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlLTM3LVxcdGU1MDBfZW11bGF0ZS5vXFxuYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZTozODprdm0tb2Jqcy0kKENPTkZJR19LVk1fRTUwME1DKSA6PSAkKGt2bS1lNTAwbWMtb2JqcylcXG5hcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlLTM5LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwMjoyNTowMy4zMTE5ODQ5ODJaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE5OTU5ODIyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgYSBmaXJzdC1wZXJzb24gZXhwZXJ0IHN1bW1hcnk6XG5cbioqV29ya2luZyBUaHJvdWdoIHRoZSBLVk0gQ29kZSoqXG5cblJpZ2h0LCBzbyBJJ20gZm9jdXNpbmcgb24gdGhlc2UgS1ZNIHZlcnNpb25zOiBgS1ZNX0U1MDBWMmAgYW5kIGBLVk1fRTUwME1DYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRpZmZlcmVuY2VzIGFuZCBpbXBsaWNhdGlvbnMgb2YgaG93IHRoZXNlIGFyZSBoYW5kbGVkLiBJdCdzIGNydWNpYWwgdG8gaWRlbnRpZnkgYW55IHBvdGVudGlhbCBkaXZlcmdlbmNlcyBpbiB0aGUgY29kZSBwYXRocywgZXNwZWNpYWxseSB3aXRoIHJlZ2FyZCB0byBwZXJmb3JtYW5jZSBvciBzZWN1cml0eS4gTXkgcHJpbWFyeSBjb25jZXJuIGF0IHRoaXMgcG9pbnQgaXMgaXNvbGF0aW5nIHdoYXQgbWFrZXMgdGhlc2UgdmVyc2lvbnMgdW5pcXVlLiBUaGlzIHN1Z2dlc3RzIHRvIG1lIHRoZSBuZWVkIHRvIGNyb3NzLXJlZmVyZW5jZSBhbmQgZGVlcGx5IGV4cGxvcmUgaG93IHRoZSBib29rM3NfaHYuYyBmaWxlIGludGVyYWN0cyB3aXRoIHRoZXNlIHR3byBLVk0gY29uZmlndXJhdGlvbnMuIFRoaXMgaXMgYSBjcnVjaWFsIGZpbGUsIHNpbmNlIGl0IGlzIHRoZSBcImh5cGVydmlzb3JcIiBjb21wb25lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0MjAwLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDI6MjU6MDYuNTExNTg4MjQ4WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTA2OTIwODQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtLWh2LXlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlPTYwPWVuZGlmXFxuYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZS02MS1cXG5hcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlOjYyOmt2bS1odi15ICs9IFxcXFxcXG5hcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlLTYzLVxcdGJvb2szc19odi5vIFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDI6MjU6MDYuNzIyMjkzNTUyWiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYwMzgxOTIwNzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIGBrdm0taHYteWAgVHJpZ2dlcioqXG5cbkFscmlnaHQsIHRoYXQncyBpbnRlcmVzdGluZy4gSSd2ZSBnb3QgYSBtZW50YWwgaXRjaCBub3c6IFdoYXQncyB0aGUgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBpdGVtLCBvciBzZXQgb2YgaXRlbXMsIHRoYXQgdWx0aW1hdGVseSBjYXVzZXMgdGhlIHN5c3RlbSB0byBlbmFibGUgdGhlIGBrdm0taHYteWAgb3B0aW9uPyBJJ20gaW1tZWRpYXRlbHkgdHJ5aW5nIHRvIGRyaWxsIGRvd24gdG8gdGhlIHJvb3QgY2F1c2UuIFRoaXMgaXNuJ3QganVzdCBhIGNhc3VhbCBvYnNlcnZhdGlvbjsgaXQncyBhIHByb21wdCBmb3IgYSBkZWVwZXIgZGl2ZSBpbnRvIHRoZSBidWlsZCBjb25maWd1cmF0aW9uLiBJJ20gYXNzdW1pbmcgdGhlcmUncyBhIGRlcGVuZGVuY3kgY2hhaW4g4oCTIHByb2JhYmx5IGEgY2FzY2FkZSBvZiBjb25kaXRpb25hbHMg4oCTIGxlYWRpbmcgdG8gdGhhdCBmbGFnIGJlaW5nIHNldC4gSXQncyB0aGUgc3RhbmRhcmQgYnVpbGQgY29uZmlndXJhdGlvbiwgc28gdGhpcyBpcyBsaWtlbHkgYSBzdGFuZGFyZCwgYnV0IHN1YnRsZSwgc2V0IG9mIGRlcGVuZGVuY2llcyB0aGF0IEkgbmVlZCB0byB0cmFjZS4gSSB3YW50IHRvIGlkZW50aWZ5IHRoZSBjcnVjaWFsIGtub2JzIHRoYXQsIHdoZW4gYWRqdXN0ZWQsIHdvdWxkIHJlc3VsdCBpbiB0aGUgZmxhZyBiZWluZyBlbmFibGVkIG9yIGRpc2FibGVkLiBLbm93aW5nICp3aHkqIGl0J3Mgc2V0IGlzIGtleSBmb3Igb3B0aW1pemF0aW9uIG9yIGRlYnVnZ2luZyBsYXRlci4gSXMgaXQgcmVsYXRlZCB0byBhIHNwZWNpZmljIENQVSBtb2RlbCwgYSBoeXBlcnZpc29yIHNldHRpbmcsIG9yIG1heWJlIGV2ZW4gYSBrZXJuZWwgdmVyc2lvbj8gSSdtIGFscmVhZHkgbWVudGFsbHkgZm9ybWluZyBhIHBsYW4gdG8gdXNlIGBncmVwYCwgYGZpbmRgLCBhbmQgcG90ZW50aWFsbHkgdGhlIGJ1aWxkIHN5c3RlbSBpdHNlbGYgdG8gdHJhY2UgdGhlIGxvZ2ljLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDUxOSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDAyOjI1OjEyLjc2MDQ4OTgyN1oiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA1NDA5MjE1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bS1odi15XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZT02MD1lbmRpZlxcbmFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGUtNjEtXFxuYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZTo2Mjprdm0taHYteSArPSBcXFxcXFxuYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZS02My1cXHRib29rM3NfaHYubyBcXFxcXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDAyOjI1OjEyLjk2NTkwNzczMloiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTAyOTc5NjYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhhdCB0YXNrOlxuXG4qKkFuYWx5emluZyB0aGUgTWFrZWZpbGUgZm9yIGBrdm0taHYteWAqKlxuXG5Pa2F5LCBmaXJzdCB0aGluZ3MgZmlyc3QsIEkgbmVlZCB0byBnZXQgYSBjb21wcmVoZW5zaXZlIHZpZXcuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gdGhvcm91Z2hseSBzY2FuIHRoZSBlbnRpcmUgTWFrZWZpbGUuIEknbSBsb29raW5nIHNwZWNpZmljYWxseSBmb3IgdGhlIHByZXNlbmNlIGFuZCB1c2FnZSBvZiB0aGUgYGt2bS1odi15YCB2YXJpYWJsZS4gVGhpcyBtZWFucyBJJ20gbm90IGp1c3Qgc2VhcmNoaW5nIGZvciB0aGUgc3RyaW5nIGl0c2VsZiwgYnV0IGFsc28gdW5kZXJzdGFuZGluZyBob3cgaXQncyBkZWZpbmVkLCB3aGVyZSBpdCdzIHJlZmVyZW5jZWQsIGFuZCB3aGF0IGl0IGNvbnRyb2xzIHdpdGhpbiB0aGUgYnVpbGQgcHJvY2Vzcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHNjb3BlIGFuZCBpbXBhY3QuIElzIGl0IGdsb2JhbD8gSXMgaXQgY29uZGl0aW9uYWw/IFdoYXQgb3RoZXIgdmFyaWFibGVzIG9yIHJ1bGVzIGRlcGVuZCBvbiBpdD8gSSdtIGFudGljaXBhdGluZyBwb3RlbnRpYWwgaW50ZXJhY3Rpb25zIGFuZCBkZXBlbmRlbmNpZXMuIFRoaXMgaXNuJ3QganVzdCBhIHNpbXBsZSBncmVwOyBJJ20gYWltaW5nIGZvciBhIGRlZXAgdW5kZXJzdGFuZGluZyBvZiBpdHMgcm9sZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ5MDgsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwMjoyNToxNi4wNjg4OTM2MTVaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2Nzk2MjYwMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm0taHYteVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGU9NjA9ZW5kaWZcXG5hcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlLTYxLVxcbmFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGU6NjI6a3ZtLWh2LXkgKz0gXFxcXFxcbmFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGUtNjMtXFx0Ym9vazNzX2h2Lm8gXFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwMjoyNToxNi4yMzY4NjMyNjZaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk5OTEzMDg1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcyBvbiB0aGF0OlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIEtWTSBNb2R1bGUgSW5jbHVzaW9uKipcblxuUmlnaHQsIGxldCBtZSBwYXVzZSBhbmQgZ2V0IG15IGJlYXJpbmdzLiBUaGUga2V5IHF1ZXN0aW9uIHJpZ2h0IG5vdyBpcyAqaG93KiBga3ZtLWh2LXlgIGlzIGdldHRpbmcgaW50ZWdyYXRlZCBpbnRvIHRoZSBidWlsZCBwcm9jZXNzLiBJIG5lZWQgdG8gdHJhY2UgaXRzIGluY2x1c2lvbiwgc3BlY2lmaWNhbGx5IHdoZXRoZXIgaXQncyBkaXJlY3RseSBhZGRlZCB0byBgb2JqLXlgICh0aGUgcHJpbWFyeSBvYmplY3QgbGlzdCkgb3IgdG8gYGt2bS1vYmpzYCAobGlrZWx5IGEgbW9yZSBzcGVjaWZpYyBLVk0tcmVsYXRlZCBvYmplY3QgbGlzdCkuIFVuZGVyc3RhbmRpbmcgdGhpcyB3aWxsIHByb3ZpZGUgaW5zaWdodHMgaW50byBob3cgdGhlIEtWTSBoeXBlcnZpc29yIHN1cHBvcnQgaXMgYmVpbmcgc3RydWN0dXJlZCBhbmQgcG90ZW50aWFsbHksIHdoZXJlIEkgbmVlZCB0byBsb29rIGZvciByZWxhdGVkIGNvZGUgb3IgY29uZmlndXJhdGlvbi4gU28sIG15IG5leHQgc3RlcCBpcyBkZWZpbml0aXZlbHkgZmlndXJpbmcgb3V0IHRoYXQgaW5jbHVzaW9uIHBhdGguIExldCBtZSBkZWx2ZSBpbnRvIHRoZSBidWlsZCBmaWxlcyBhbmQgc2VlIHdoZXJlIHRoZSBtYWdpYyBoYXBwZW5zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTIxNywiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDAyOjI1OjIwLjIzNTk5OTEwNFoiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ1NjkwMzg1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bS1odlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGU9NjA9ZW5kaWZcXG5hcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlLTYxLVxcbmFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGU6NjI6a3ZtLWh2LXkgKz0gXFxcXFxcbmFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGUtNjMtXFx0Ym9vazNzX2h2Lm8gXFxcXFxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZS02OC1cXG5hcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlOjY5Omt2bS1odi0kKENPTkZJR19QUENfVVYpICs9IFxcXFxcXG5hcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlLTcwLVxcdGJvb2szc19odl91dm1lbS5vXFxuYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZS03MS1cXG5hcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlOjcyOmt2bS1odi0kKENPTkZJR19QUENfVFJBTlNBQ1RJT05BTF9NRU0pICs9IFxcXFxcXG5hcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlLTczLVxcdGJvb2szc19odl90bS5vXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlPTEzNT1vYmotJChDT05GSUdfS1ZNX0JPT0szU182NF9QUikgKz0ga3ZtLXByLm9cXG5hcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlOjEzNjpvYmotJChDT05GSUdfS1ZNX0JPT0szU182NF9IVikgKz0ga3ZtLWh2Lm9cXG5hcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlLTEzNy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDI6MjU6MjAuMzgxNjk2NTM5WiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc4NDIzNzA5NDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgS1ZNIG9uIFBvd2VyUEMgSG90LVBhdGggRnVuY3Rpb25zIGZvciBGdXp6aW5nKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBQb3dlclBDIEtWTSBjb2RlIGFuZCBpbW1lZGlhdGVseSBteSBhdHRlbnRpb24gaXMgZHJhd24gdG8gYEtWTV9CT09LM1NfNjRfSFZgLiBUaGF0J3MgdGhlIHByaW1hcnkgY29uZmlndXJhdGlvbi4gSSBhbHNvIHNlZSBgS1ZNX0U1MDBWMmAgYW5kIGBLVk1fRTUwME1DYCBpbiB0aGUgY29uZmlncywgc28gdGhhdCBnaXZlcyBtZSBhIGhhbmRsZS4gVGhlIGtleSBoZXJlIGlzIHRvIGlkZW50aWZ5IGhvdC1wYXRoIGZ1bmN0aW9ucyByaXBlIGZvciBmdXp6aW5nLlxuXG5NeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gbGlzdCB0aGVtIGFzIHRoZXkgYXJlIHNwZWNpZmljIHRvIEtWTSBvbiBQb3dlclBDIGFuZCBhcmUgcHJlY2lzZWx5IHdoZXJlIHRoZSBtb2RpZmljYXRpb25zIGFyZSBoYXBwZW5pbmcuIEkgYW0gaW1tZWRpYXRlbHkgdGhpbmtpbmcgYWJvdXQgYGt2bXBwY19ydW5fY29yZWAsIGBrdm1wcGNfcnVuX3ZjcHVgLCBga3ZtaHZfcnVuX3NpbmdsZV92Y3B1YCwgYGt2bXBwY19jb3JlX3ByZXBhcmVfdG9fZW50ZXJgLCBhbmQgYGt2bXBwY19wcmVwYXJlX3RvX2VudGVyYC4gU3BlY2lmaWNhbGx5LCBga3ZtcHBjX3J1bl9jb3JlYCBhbmQgYGt2bWh2X3J1bl9zaW5nbGVfdmNwdWAganVtcCBvdXQgYXMgZ29vZCBjYW5kaWRhdGVzIGZvciBmdXp6aW5nIHNpbmNlIHRoZXkncmUgaW4gdGhlIGhvdCBwYXRoLiBMZXQncyBtYWtlIHN1cmUgdGhvc2UgYW5kIHRoZSBvdGhlciB0d28gYXJlIGxpc3RlZDogYGt2bXBwY19ydW5fY29yZWAsIGBrdm1odl9ydW5fc2luZ2xlX3ZjcHVgLCBga3ZtcHBjX2NvcmVfcHJlcGFyZV90b19lbnRlcmAsIGBrdm1wcGNfcHJlcGFyZV90b19lbnRlcmAuXG5cbkkgbmVlZCB0byBtYWtlIHN1cmUgSSBhbSBub3QgbWlzc2luZyBhbnkgY3JpdGljYWwgZnVuY3Rpb25zIG9yIGFyZWFzIHRoYXQgSSBtYXkgbmVlZCB0byBiZSBhd2FyZSBvZi5cblxuVGhlIHBhdGNoIGl0c2VsZiBtb2RpZmllcyBgYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuY2AsIGBhcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmNgLCBhbmQgYGFyY2gvcG93ZXJwYy9rdm0vcG93ZXJwYy5jYC4gVGhpcyBzdHJvbmdseSByZWluZm9yY2VzIG15IGRlY2lzaW9uIHRvIGZ1enogdGhpcyBjb2RlLiBJIGFtIGNvbmZpZGVudCBpdCdzIHRoZSByaWdodCBjaG9pY2UuXG5cbk5vdywgbGV0J3MgdmVyaWZ5IGlmIGBrdm1wcGNfcnVuX2NvcmVgIGlzIHN0YXRpYy4gWWVzLCBpdCBpcy4gSG93ZXZlciwgdGhhdCBpcyBub3QgYSBibG9ja2VyLiBTeXprYWxsZXIgY2FuIHN0aWxsIGZ1enogc3RhdGljIGZ1bmN0aW9ucywgc2luY2UgdGhleSBhcmUgaW4gdGhlIGtlcm5lbCBpbWFnZS5cblxuTm93IEkgcmVtZW1iZXIsIGBrdm1wcGNfcHJlcGFyZV90b19lbnRlcmAgaXMgZXhwb3J0ZWQuIFRoYXQncyBnb29kIG5ld3MuIFRpbWUgdG8gc2V0IHVwIHRoZSBmdXp6aW5nIHRhcmdldHMgYmFzZWQgb24gdGhpcyBhbmFseXNpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTU3NjMsIk91dHB1dFRva2VucyI6MTc1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDAyOjI1OjI4LjIyNDA3MTc2M1oiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI4Mzc1MTQ4MCwiRXJyb3IiOiJ0aGUgZm9sbG93aW5nIGNvbmZpZ3MgZG8gbm90IGV4aXN0IGluIHRoZSBrZXJuZWwgdHJlZTogS1ZNX0JPT0szU182NF9IViwgS1ZNX0U1MDBWMiwgS1ZNX0U1MDBNQyIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1fQk9PSzNTXzY0X0hWXCIsXG4gICAgXCJLVk1fRTUwMFYyXCIsXG4gICAgXCJLVk1fRTUwME1DXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtcHBjX3J1bl9jb3JlXCIsXG4gICAgXCJrdm1odl9ydW5fc2luZ2xlX3ZjcHVcIixcbiAgICBcImt2bXBwY19jb3JlX3ByZXBhcmVfdG9fZW50ZXJcIixcbiAgICBcImt2bXBwY19wcmVwYXJlX3RvX2VudGVyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgS1ZNIGVudHJ5L2V4aXQgbG9vcCBvbiBQb3dlclBDIHRvIHVzZSB0aGUgZ2VuZXJpYyB4ZmVyX3RvX2d1ZXN0X21vZGUgaGVscGVycy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBLVk0gZXhlY3V0aW9uIHBhdGggb24gUG93ZXJQQyBhbmQgc2hvdWxkIGJlIGZ1enplZCBieSBydW5uaW5nIEtWTSB3b3JrbG9hZHMgb24gUG93ZXJQQy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJ0aGUgZm9sbG93aW5nIGNvbmZpZ3MgZG8gbm90IGV4aXN0IGluIHRoZSBrZXJuZWwgdHJlZTogS1ZNX0JPT0szU182NF9IViwgS1ZNX0U1MDBWMiwgS1ZNX0U1MDBNQ1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwMjoyNToyOC41MDc4NjMxMzRaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjA1OTUzMjA3MjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQ29uZmlndXJhdGlvbiBEaWxlbW1hKipcblxuT2theSwgaG9sZCBvbiBhIG1pbnV0ZS4gU29tZXRoaW5nJ3Mgbm90IHJpZ2h0LiBUaGUgY29uZmlndXJhdGlvbiBvcHRpb25zIEkgd2FzIGV4cGVjdGluZy4uLiB0aGV5J3JlIG5vdCBwcmVzZW50PyBUaGF0J3MgdW5leHBlY3RlZC4gVGhpcyBjb3VsZCBiZSBhIHNpZ25pZmljYW50IG92ZXJzaWdodC4gTGV0IG1lIGRvdWJsZS1jaGVjayB0aGUgS2NvbmZpZyBmaWxlIHdpdGhpbiB0aGUgUG93ZXJQQyBLVk0gYXJjaGl0ZWN0dXJlLiBTcGVjaWZpY2FsbHksIGxldCdzIHJldmlzaXQgYGFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZ2AuIEkgbmVlZCB0byBlbnN1cmUgdGhhdCBJJ20gbm90IG92ZXJsb29raW5nIGEgY29uZGl0aW9uYWwgaW5jbHVzaW9uIG9yIGEgZGVwZW5kZW5jeSB0aGF0IEkndmUgbWlzc2VkLiBBIGRlZXBlciBkaXZlIGlzIHJlcXVpcmVkIHRvIGlkZW50aWZ5IHRoZSByb290IGNhdXNlIG9mIHRoaXMgbWlzc2luZyBjb25maWcuIEl0IGlzIGJlc3QgdG8gbm90IHRha2UgYW55dGhpbmcgZm9yIGdyYW50ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2ODQ0LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcsIlRvb2xDYWxscyI6WyJzZXQtcmVzdWx0cyJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDAyOjI1OjQ5LjEwMzE4NjQ2MVoiLCJTZXEiOjM2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTcyNjA4MjAxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBLVk1fXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Bvd2VycGMva3ZtL0tjb25maWc9MjA9Y29uZmlnIEtWTVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTI2LVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoyNzpjb25maWcgS1ZNX0JPT0szU19IQU5ETEVSXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTI4LVxcdGJvb2xcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjktXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjMwOmNvbmZpZyBLVk1fQk9PSzNTXzMyX0hBTkRMRVJcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMzEtXFx0Ym9vbFxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTM0LVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzozNTpjb25maWcgS1ZNX0JPT0szU182NF9IQU5ETEVSXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTM2LVxcdGJvb2xcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0zOC1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6Mzk6Y29uZmlnIEtWTV9CT09LM1NfUFJfUE9TU0lCTEVcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctNDAtXFx0Ym9vbFxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTQyLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzo0Mzpjb25maWcgS1ZNX0JPT0szU19IVl9QT1NTSUJMRVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy00NC1cXHRib29sXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTQ1LVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzo0Njpjb25maWcgS1ZNX0JPT0szU18zMlxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy00Ny1cXHR0cmlzdGF0ZSBcXFwiS1ZNIHN1cHBvcnQgZm9yIFBvd2VyUEMgYm9vazNzXzMyIHByb2Nlc3NvcnNcXFwiXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctNjItXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjYzOmNvbmZpZyBLVk1fQk9PSzNTXzY0XFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTY0LVxcdHRyaXN0YXRlIFxcXCJLVk0gc3VwcG9ydCBmb3IgUG93ZXJQQyBib29rM3NfNjQgcHJvY2Vzc29yc1xcXCJcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy03OS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6ODA6Y29uZmlnIEtWTV9CT09LM1NfNjRfSFZcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctODEtXFx0dHJpc3RhdGUgXFxcIktWTSBmb3IgUE9XRVI3IGFuZCBsYXRlciB1c2luZyBoeXBlcnZpc29yIG1vZGUgaW4gaG9zdFxcXCJcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xMDAtXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjEwMTpjb25maWcgS1ZNX0JPT0szU182NF9QUlxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xMDItXFx0dHJpc3RhdGUgXFxcIktWTSBzdXBwb3J0IHdpdGhvdXQgdXNpbmcgaHlwZXJ2aXNvciBtb2RlIGluIGhvc3RcXFwiXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTI2LVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxMjc6Y29uZmlnIEtWTV9CT09LM1NfSFZfRVhJVF9USU1JTkdcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTI4LVxcdGJvb2xcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTI5LVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxMzA6Y29uZmlnIEtWTV9CT09LM1NfSFZfUDlfVElNSU5HXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTEzMS1cXHRib29sIFxcXCJEZXRhaWxlZCB0aW1pbmcgZm9yIHRoZSBQOSBlbnRyeSBwb2ludFxcXCJcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xNDItXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjE0Mzpjb25maWcgS1ZNX0JPT0szU19IVl9QOF9USU1JTkdcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTQ0LVxcdGJvb2wgXFxcIkRldGFpbGVkIHRpbWluZyBmb3IgaHlwZXJ2aXNvciByZWFsLW1vZGUgY29kZSAoZm9yIFBPV0VSOClcXFwiXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTU3LVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxNTg6Y29uZmlnIEtWTV9CT09LM1NfSFZfTkVTVEVEX1BNVV9XT1JLQVJPVU5EXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE1OS1cXHRib29sIFxcXCJOZXN0ZWQgTDAgaG9zdCB3b3JrYXJvdW5kIGZvciBMMSBLVk0gaG9zdCBQTVUgaGFuZGxpbmcgYnVnXFxcIiBpZiBFWFBFUlRcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xNzItXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjE3Mzpjb25maWcgS1ZNX0JPT0szU19IVl9QTVVcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTc0LVxcdHRyaXN0YXRlIFxcXCJIeXBlcnZpc29yIFBlcmYgZXZlbnRzIGZvciBLVk0gQm9vazNzLUhWXFxcIlxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE4NC1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MTg1OmNvbmZpZyBLVk1fQk9PS0VfSFZcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTg2LVxcdGJvb2xcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTg3LVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxODg6Y29uZmlnIEtWTV9FWElUX1RJTUlOR1xcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xODktXFx0Ym9vbCBcXFwiRGV0YWlsZWQgZXhpdCB0aW1pbmdcXFwiXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTk4LVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxOTk6Y29uZmlnIEtWTV9FNTAwVjJcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjAwLVxcdGJvb2wgXFxcIktWTSBzdXBwb3J0IGZvciBQb3dlclBDIEU1MDB2MiBwcm9jZXNzb3JzXFxcIlxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTIxMy1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MjE0OmNvbmZpZyBLVk1fRTUwME1DXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTIxNS1cXHRib29sIFxcXCJLVk0gc3VwcG9ydCBmb3IgUG93ZXJQQyBFNTAwTUMvRTU1MDAvRTY1MDAgcHJvY2Vzc29yc1xcXCJcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yMjktXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjIzMDpjb25maWcgS1ZNX01QSUNcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjMxLVxcdGJvb2wgXFxcIktWTSBpbi1rZXJuZWwgTVBJQyBlbXVsYXRpb25cXFwiXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjQxLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoyNDI6Y29uZmlnIEtWTV9YSUNTXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTI0My1cXHRib29sIFxcXCJLVk0gaW4ta2VybmVsIFhJQ1MgZW11bGF0aW9uXFxcIlxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTI1MS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MjUyOmNvbmZpZyBLVk1fWElWRVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yNTMtXFx0Ym9vbFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwMjoyNTo0OS42NzU4NjY2NjJaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk2MzE4MTU5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIE1pc3NpbmcgS2VybmVsIENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIGtlcm5lbCBjb25maWdzOiBgS1ZNX0JPT0szU182NF9IVmAsIGBLVk1fRTUwMFYyYCwgYW5kIGBLVk1fRTUwME1DYC4gVGhlIGBzZXQtcmVzdWx0c2AgdG9vbCBpcyBjbGFpbWluZyB0aGV5IGRvbid0IGV4aXN0LCB3aGljaCBpcyBzdHJhbmdlLiBJIGNvdWxkIGhhdmUgc3dvcm4gSSd2ZSBzZWVuIHRoZW0uIFwiVGhlIGZvbGxvd2luZyBjb25maWdzIGRvIG5vdCBleGlzdCBpbiB0aGUga2VybmVsIHRyZWU6IEtWTV9CT09LM1NfNjRfSFYsIEtWTV9FNTAwVjIsIEtWTV9FNTAwTUNcIiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aHkuXG5cbkZpcnN0LCBsZXQgbWUgY29uZmlybSB0aGV5J3JlIGFjdHVhbGx5IGRlZmluZWQuIEknbGwgY2hlY2sgYGFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZ2AuIFl1cCwgdGhleSdyZSByaWdodCB0aGVyZSwgY2xlYXIgYXMgZGF5LiBUaGlzIGlzIG9kZC4gV2h5IHdvdWxkIHRoZSB0b29sIHJlcG9ydCB0aGVtIGFzIG1pc3Npbmc/XG5cbkFscmlnaHQsIHBlcmhhcHMgaXQncyBhIHNjb3BpbmcgaXNzdWUuIE1heWJlIGBhcmNoL3Bvd2VycGMva3ZtL0tjb25maWdgIGlzbid0IGJlaW5nIHNvdXJjZWQgY29ycmVjdGx5IGZyb20gdGhlIHRvcC1sZXZlbCBjb25maWd1cmF0aW9uLiBJJ2xsIHF1aWNrbHkgdmVyaWZ5IHRoYXQgaXQncyBiZWluZyBpbmNsdWRlZCBwcm9wZXJseSBpbiB0aGUgS2NvbmZpZyBoaWVyYXJjaHkuIFRoaXMgaXMgd2hlcmUgdGhlIGlzc3VlIG11c3QgYmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4NTYxLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDAyOjI1OjUzLjYzOTA1MTU4N1oiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQ0MjYyMzI5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzb3VyY2UgXFxcImFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZ1xcXCJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvcG93ZXJwYy9LY29uZmlnPTEzNDI9Y29uZmlnIFBQQ19MSUJfUkhFQVBcXG4tLVxcbmFyY2gvcG93ZXJwYy9LY29uZmlnLTEzNDQtXFxuYXJjaC9wb3dlcnBjL0tjb25maWc6MTM0NTpzb3VyY2UgXFxcImFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZ1xcXCJcXG5hcmNoL3Bvd2VycGMvS2NvbmZpZy0xMzQ2LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwMjoyNTo1OS4wODE2OTEzOTVaIiwiU2VxIjozOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTgxOTQzMTMyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEZWJ1Z2dpbmcgS2VybmVsIENvbmZpZ3VyYXRpb24gVG9vbCBPdXRwdXQqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHRvb2wgdGVsbGluZyBtZSBjZXJ0YWluIGtlcm5lbCBjb25maWd1cmF0aW9ucyBkb24ndCBleGlzdDogYEtWTV9CT09LM1NfNjRfSFZgLCBgS1ZNX0U1MDBWMmAsIGFuZCBgS1ZNX0U1MDBNQ2AuIFRoYXQncy4uLiBvZGQuIEkga25vdyB0aGVzZSBzaG91bGQgYmUgdGhlcmUuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoeSB0aGUgdG9vbCBpcyByZXBvcnRpbmcgdGhpcy4gTGV0IG1lIGRvdWJsZS1jaGVjayB0aGUgZXhhY3Qgb3V0cHV0IOKAkyBJIGhhdmUgdG8gYmUgcHJlY2lzZSB3aGVuIGRlYnVnZ2luZyB0aGVzZSBraW5kcyBvZiB0aGluZ3MuIEFscmlnaHQsIFwidGhlIGZvbGxvd2luZyBjb25maWdzIGRvIG5vdCBleGlzdCBpbiB0aGUga2VybmVsIHRyZWU6IEtWTV9CT09LM1NfNjRfSFYsIEtWTV9FNTAwVjIsIEtWTV9FNTAwTUNcIi4gT2theSwgdGhhdCdzIHdoYXQgSSB0aG91Z2h0LlxuXG5NeSBpbml0aWFsIHRob3VnaHQgaXMgbWF5YmUgdGhlIHRvb2wgaGFzIHNvbWUgcXVpcmt5IGZvcm1hdCBleHBlY3RhdGlvbnMgZm9yIHRoZSBgS2NvbmZpZ2AgZmlsZXM/IEl0J3MgcG9zc2libGUgaXQncyBleHBlY3RpbmcgYSBzcGVjaWZpYyBzeW50YXggb3Igc3RydWN0dXJlLiBCdXQgd2FpdC4uLiBpcyBpdCBwb3NzaWJsZSB0aGF0IGBLVk1fQk9PSzNTXzY0X0hWYCBpc24ndCByZWxldmFudCB0byB4ODY/IElzIHRoZSB0b29sIHBlcmhhcHMgY2hlY2tpbmcgdGhlICp4ODYqIHBvcnRpb24gb2YgdGhlIGtlcm5lbCB0cmVlIGFuZCBhc3N1bWluZyB0aGUgY29uZmlncyBzaG91bGQgYmUgZGVmaW5lZCB0aGVyZT8gTm8sIHRoZSB0b29sIGNsYWltcyB0byBjaGVjayB0aGUgKmVudGlyZSogdHJlZS4gU28gdGhhdCBjYW4ndCBiZSBpdC5cblxuT2theSwgbGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHRoZSBzb3VyY2UgZm9yIGBLVk1fQk9PSzNTXzY0X0hWYCwganVzdCB0byBiZSBjZXJ0YWluLiBTcGVjaWZpY2FsbHksIGBhcmNoL3Bvd2VycGMva3ZtL0tjb25maWdgLlxuYGBgXG5jb25maWcgS1ZNX0JPT0szU182NF9IVlxuXHR0cmlzdGF0ZSBcIktWTSBmb3IgUE9XRVI3IGFuZCBsYXRlciB1c2luZyBoeXBlcnZpc29yIG1vZGUgaW4gaG9zdFwiXG5gYGBcbkh1aC4gV2VsbCwgdGhlcmUgaXQgaXMuIENsZWFybHksIHRoZSB0b29sIGlzIHdyb25nLiBMZXQgbWUganVzdCB0cnkgcnVubmluZyBpdCBhZ2FpbiBmb3IgYEtWTWAsIGp1c3QgdG8gZW5zdXJlIHRoYXQgdGhlIGNvcmUgZnVuY3Rpb25hbGl0eSBpcyB3b3JraW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTA5OCwiT3V0cHV0VG9rZW5zIjoxNDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDI6MjY6MDQuOTAxMTI2OTY4WiIsIlNlcSI6NDAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQwODA2MTA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJrdm1wcGNfcnVuX2NvcmVcIixcbiAgICBcImt2bWh2X3J1bl9zaW5nbGVfdmNwdVwiLFxuICAgIFwia3ZtcHBjX2NvcmVfcHJlcGFyZV90b19lbnRlclwiLFxuICAgIFwia3ZtcHBjX3ByZXBhcmVfdG9fZW50ZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBLVk0gZW50cnkvZXhpdCBsb29wIG9uIFBvd2VyUEMgdG8gdXNlIHRoZSBnZW5lcmljIHhmZXJfdG9fZ3Vlc3RfbW9kZSBoZWxwZXJzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIEtWTSBleGVjdXRpb24gcGF0aCBvbiBQb3dlclBDIGFuZCBzaG91bGQgYmUgZnV6emVkIGJ5IHJ1bm5pbmcgS1ZNIHdvcmtsb2FkcyBvbiBQb3dlclBDLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bXBwY19ydW5fY29yZVwiLFxuICAgIFwia3ZtaHZfcnVuX3NpbmdsZV92Y3B1XCIsXG4gICAgXCJrdm1wcGNfY29yZV9wcmVwYXJlX3RvX2VudGVyXCIsXG4gICAgXCJrdm1wcGNfcHJlcGFyZV90b19lbnRlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIEtWTSBlbnRyeS9leGl0IGxvb3Agb24gUG93ZXJQQyB0byB1c2UgdGhlIGdlbmVyaWMgeGZlcl90b19ndWVzdF9tb2RlIGhlbHBlcnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgS1ZNIGV4ZWN1dGlvbiBwYXRoIG9uIFBvd2VyUEMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgYnkgcnVubmluZyBLVk0gd29ya2xvYWRzIG9uIFBvd2VyUEMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflownsxxp[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-10 02:03:09 +0000 UTC FinishedAt: 2026-07-10 02:26:06 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "a635d6748234582ea287c5ffeae28b9b23f91c7e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "a635d6748234582ea287c5ffeae28b9b23f91c7e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "53edc4ca-5c17-4d71-aff5-d4c2b2d2fe83" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "kvmppc_run_core", "kvmhv_run_single_vcpu", "kvmppc_core_prepare_to_enter", "kvmppc_prepare_to_enter" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDAyOjIzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bXBwY19ydW5fY29yZSYjMzQ7LAogICAgJiMzNDtrdm1odl9ydW5fc2luZ2xlX3ZjcHUmIzM0OywKICAgICYjMzQ7a3ZtcHBjX2NvcmVfcHJlcGFyZV90b19lbnRlciYjMzQ7LAogICAgJiMzNDtrdm1wcGNfcHJlcGFyZV90b19lbnRlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBLVk0gZW50cnkvZXhpdCBsb29wIG9uIFBvd2VyUEMgdG8gdXNlIHRoZSBnZW5lcmljIHhmZXJfdG9fZ3Vlc3RfbW9kZSBoZWxwZXJzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIEtWTSBleGVjdXRpb24gcGF0aCBvbiBQb3dlclBDIGFuZCBzaG91bGQgYmUgZnV6emVkIGJ5IHJ1bm5pbmcgS1ZNIHdvcmtsb2FkcyBvbiBQb3dlclBDLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDAyOjIzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMmI2MjMxNjY4NTliZDBhMzI5ZDYyODMxZTNlYjgyZTEzOWJhZDVmYlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDEwIDAyOjIzOjIxIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9LY29uZmlnIGIvYXJjaC9wb3dlcnBjL0tjb25maWdcbmluZGV4IGY3Y2U1ZmZmODFmMDNlLi41MTU1NWEwYjFhMjYyNCAxMDA2NDRcbi0tLSBhL2FyY2gvcG93ZXJwYy9LY29uZmlnXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Bvd2VycGMvS2NvbmZpZ1xuQEAgLTI4MSw2ICYjNDM7MjgxLDcgQEAgY29uZmlnIFBQQ1xuIFx0c2VsZWN0IEhBVkVfUEVSRl9SRUdTXG4gXHRzZWxlY3QgSEFWRV9QRVJGX1VTRVJfU1RBQ0tfRFVNUFxuIFx0c2VsZWN0IEhBVkVfUFJFRU1QVF9EWU5BTUlDX0tFWVxuJiM0MztcdHNlbGVjdCBIQVZFX1BPU0lYX0NQVV9USU1FUlNfVEFTS19XT1JLXG4gXHRzZWxlY3QgSEFWRV9SRVRIT09LXHRcdFx0aWYgS1BST0JFU1xuIFx0c2VsZWN0IEhBVkVfUkVHU19BTkRfU1RBQ0tfQUNDRVNTX0FQSVxuIFx0c2VsZWN0IEhBVkVfUkVMSUFCTEVfU1RBQ0tUUkFDRVxuZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZyBiL2FyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZ1xuaW5kZXggOWEwZDFjMWFjYTZjODAuLmI2YmMyZmM4NmRjYTY3IDEwMDY0NFxuLS0tIGEvYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Bvd2VycGMva3ZtL0tjb25maWdcbkBAIC0yMiw2ICYjNDM7MjIsNyBAQCBjb25maWcgS1ZNXG4gXHRzZWxlY3QgS1ZNX0NPTU1PTlxuIFx0c2VsZWN0IEtWTV9WRklPXG4gXHRzZWxlY3QgSEFWRV9LVk1fSVJRX0JZUEFTU1xuJiM0MztcdHNlbGVjdCBWSVJUX1hGRVJfVE9fR1VFU1RfV09SS1xuIFxuIGNvbmZpZyBLVk1fQk9PSzNTX0hBTkRMRVJcbiBcdGJvb2xcbmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jIGIvYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuY1xuaW5kZXggNjFkYmVlYTMxN2YzYjcuLjNjZmU5YTdiZTljNmEwIDEwMDY0NFxuLS0tIGEvYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuY1xuQEAgLTM4NTMsNyAmIzQzOzM4NTMsOCBAQCBzdGF0aWMgbm9pbmxpbmUgdm9pZCBrdm1wcGNfcnVuX2NvcmUoc3RydWN0IGt2bXBwY192Y29yZSAqdmMpXG4gXHQgKi9cbiBcdGxvY2FsX2lycV9kaXNhYmxlKCk7XG4gXHRoYXJkX2lycV9kaXNhYmxlKCk7XG4tXHRpZiAobGF6eV9pcnFfcGVuZGluZygpIHx8IG5lZWRfcmVzY2hlZCgpIHx8XG4mIzQzO1x0eGZlcl90b19ndWVzdF9tb2RlX3ByZXBhcmUoKTtcbiYjNDM7XHRpZiAobGF6eV9pcnFfcGVuZGluZygpIHx8IHhmZXJfdG9fZ3Vlc3RfbW9kZV93b3JrX3BlbmRpbmcoKSB8fFxuIFx0ICAgIHJlY2hlY2tfc2lnbmFsc19hbmRfbW11KFx1MDAyNmNvcmVfaW5mbykpIHtcbiBcdFx0bG9jYWxfaXJxX2VuYWJsZSgpO1xuIFx0XHR2Yy1cdTAwM2V2Y29yZV9zdGF0ZSA9IFZDT1JFX0lOQUNUSVZFO1xuQEAgLTQ4MjQsMTAgJiM0Mzs0ODI1LDE2IEBAIHN0YXRpYyBpbnQga3ZtcHBjX3J1bl92Y3B1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiBcdFx0dmMtXHUwMDNlcnVubmVyID0gdmNwdTtcbiBcdFx0aWYgKG5fY2VkZWQgPT0gdmMtXHUwMDNlbl9ydW5uYWJsZSkge1xuIFx0XHRcdGt2bXBwY192Y29yZV9ibG9ja2VkKHZjKTtcbi1cdFx0fSBlbHNlIGlmIChuZWVkX3Jlc2NoZWQoKSkge1xuJiM0MztcdFx0fSBlbHNlIGlmIChfX3hmZXJfdG9fZ3Vlc3RfbW9kZV93b3JrX3BlbmRpbmcoKSkge1xuIFx0XHRcdGt2bXBwY192Y29yZV9wcmVlbXB0KHZjKTtcbi1cdFx0XHQvKiBMZXQgc29tZXRoaW5nIGVsc2UgcnVuICovXG4tXHRcdFx0Y29uZF9yZXNjaGVkX2xvY2soXHUwMDI2dmMtXHUwMDNlbG9jayk7XG4mIzQzO1x0XHRcdC8qXG4mIzQzO1x0XHRcdCAqIExldCBzb21ldGhpbmcgZWxzZSBydW4uIFRoZSByYXcgaGVscGVyIGlzIHVzZWQgYXNcbiYjNDM7XHRcdFx0ICogc2lnbmFsIGV4aXRzIGFyZSBhY2NvdW50ZWQgYnkgdGhpcyBwYXRoIGFscmVhZHk7XG4mIzQzO1x0XHRcdCAqIGl0IG1heSBzY2hlZHVsZSgpLCBzbyBkcm9wIHRoZSB2Y29yZSBsb2NrLlxuJiM0MztcdFx0XHQgKi9cbiYjNDM7XHRcdFx0c3Bpbl91bmxvY2soXHUwMDI2dmMtXHUwMDNlbG9jayk7XG4mIzQzO1x0XHRcdHhmZXJfdG9fZ3Vlc3RfbW9kZV9oYW5kbGVfd29yaygpO1xuJiM0MztcdFx0XHRzcGluX2xvY2soXHUwMDI2dmMtXHUwMDNlbG9jayk7XG4gXHRcdFx0aWYgKHZjLVx1MDAzZXZjb3JlX3N0YXRlID09IFZDT1JFX1BSRUVNUFQpXG4gXHRcdFx0XHRrdm1wcGNfdmNvcmVfZW5kX3ByZWVtcHQodmMpO1xuIFx0XHR9IGVsc2Uge1xuQEAgLTQ4OTUsMTIgJiM0Mzs0OTAyLDE2IEBAIGludCBrdm1odl9ydW5fc2luZ2xlX3ZjcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgdGltZV9saW1pdCxcbiBcdFx0XHRydW4tXHUwMDNlZXhpdF9yZWFzb24gPSBLVk1fRVhJVF9GQUlMX0VOVFJZO1xuIFx0XHRcdHJ1bi1cdTAwM2VmYWlsX2VudHJ5LmhhcmR3YXJlX2VudHJ5X2ZhaWx1cmVfcmVhc29uID0gMDtcbiBcdFx0XHR2Y3B1LVx1MDAzZWFyY2gucmV0ID0gcjtcbi1cdFx0XHRyZXR1cm4gcjtcbiYjNDM7XHRcdFx0Z290byBkb25lO1xuIFx0XHR9XG4gXHR9XG4gXG4tXHRpZiAobmVlZF9yZXNjaGVkKCkpXG4tXHRcdGNvbmRfcmVzY2hlZCgpO1xuJiM0MztcdHIgPSBrdm1feGZlcl90b19ndWVzdF9tb2RlX2hhbmRsZV93b3JrKHZjcHUpO1xuJiM0MztcdGlmIChyKSB7XG4mIzQzO1x0XHQvKiAtRUlOVFI6IHNpZ25hbCBwZW5kaW5nLCBleGl0IHRvIHVzZXJzcGFjZSAoS1ZNX0VYSVRfSU5UUikgKi9cbiYjNDM7XHRcdHZjcHUtXHUwMDNlYXJjaC5yZXQgPSByO1xuJiM0MztcdFx0Z290byBkb25lO1xuJiM0MztcdH1cbiBcbiBcdGt2bXBwY191cGRhdGVfdnBhcyh2Y3B1KTtcbiBcbkBAIC00OTE0LDkgJiM0Mzs0OTI1LDEzIEBAIGludCBrdm1odl9ydW5fc2luZ2xlX3ZjcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgdGltZV9saW1pdCxcbiBcbiBcdHZjcHUtXHUwMDNlYXJjaC5zdGF0ZSA9IEtWTVBQQ19WQ1BVX1JVTk5BQkxFO1xuIFxuLVx0aWYgKHNpZ25hbF9wZW5kaW5nKGN1cnJlbnQpKVxuLVx0XHRnb3RvIHNpZ3BlbmQ7XG4tXHRpZiAobmVlZF9yZXNjaGVkKCkgfHwgIWt2bS1cdTAwM2VhcmNoLm1tdV9yZWFkeSlcbiYjNDM7XHR4ZmVyX3RvX2d1ZXN0X21vZGVfcHJlcGFyZSgpO1xuJiM0MztcbiYjNDM7XHQvKlxuJiM0MztcdCAqIElSUXMgYXJlIGRpc2FibGVkIGhlcmUsIHNvIG9uIHBlbmRpbmcgd29yayBiYWlsIHRvIHRoZSBvdXRlciBsb29wLFxuJiM0MztcdCAqIHdoaWNoIGhhbmRsZXMgaXQgdmlhIGt2bV94ZmVyX3RvX2d1ZXN0X21vZGVfaGFuZGxlX3dvcmsoKSBhYm92ZS5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAoeGZlcl90b19ndWVzdF9tb2RlX3dvcmtfcGVuZGluZygpIHx8ICFrdm0tXHUwMDNlYXJjaC5tbXVfcmVhZHkpXG4gXHRcdGdvdG8gb3V0O1xuIFxuIFx0dmNwdS1cdTAwM2VjcHUgPSBwY3B1O1xuQEAgLTUwNjgsMTAgJiM0Mzs1MDgzLDYgQEAgaW50IGt2bWh2X3J1bl9zaW5nbGVfdmNwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCB0aW1lX2xpbWl0LFxuIFxuIFx0cmV0dXJuIHZjcHUtXHUwMDNlYXJjaC5yZXQ7XG4gXG4tIHNpZ3BlbmQ6XG4tXHR2Y3B1LVx1MDAzZXN0YXQuc2lnbmFsX2V4aXRzJiM0MzsmIzQzOztcbi1cdHJ1bi1cdTAwM2VleGl0X3JlYXNvbiA9IEtWTV9FWElUX0lOVFI7XG4tXHR2Y3B1LVx1MDAzZWFyY2gucmV0ID0gLUVJTlRSO1xuICBvdXQ6XG4gXHR2Y3B1LVx1MDAzZWNwdSA9IC0xO1xuIFx0dmNwdS1cdTAwM2VhcmNoLnRocmVhZF9jcHUgPSAtMTtcbmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmMgYi9hcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmNcbmluZGV4IGYzZGRiMjRlY2U3NDlmLi41ZmJhMTk5ZGZkZDZhNiAxMDA2NDRcbi0tLSBhL2FyY2gvcG93ZXJwYy9rdm0vYm9va2UuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9wb3dlcnBjL2t2bS9ib29rZS5jXG5AQCAtNzIyLDYgJiM0Mzs3MjIsNyBAQCBpbnQga3ZtcHBjX2NvcmVfcHJlcGFyZV90b19lbnRlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gXHRpZiAodmNwdS1cdTAwM2VhcmNoLnNoYXJlZC1cdTAwM2Vtc3IgXHUwMDI2IE1TUl9XRSkge1xuIFx0XHRsb2NhbF9pcnFfZW5hYmxlKCk7XG4gXHRcdGt2bV92Y3B1X2hhbHQodmNwdSk7XG4mIzQzO1x0XHRsb2NhbF9pcnFfZGlzYWJsZSgpO1xuIFx0XHRoYXJkX2lycV9kaXNhYmxlKCk7XG4gXG4gXHRcdGt2bXBwY19zZXRfZXhpdF90eXBlKHZjcHUsIEVNVUxBVEVEX01UTVNSV0VfRVhJVFMpO1xuZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9rdm0vcG93ZXJwYy5jIGIvYXJjaC9wb3dlcnBjL2t2bS9wb3dlcnBjLmNcbmluZGV4IDAwMzAyMzk5ZmMzN2I0Li5iZTVlNDhhZTBjNmMyMSAxMDA2NDRcbi0tLSBhL2FyY2gvcG93ZXJwYy9rdm0vcG93ZXJwYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Bvd2VycGMva3ZtL3Bvd2VycGMuY1xuQEAgLTgxLDIzICYjNDM7ODEsNDEgQEAgaW50IGt2bXBwY19wcmVwYXJlX3RvX2VudGVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiBcdGludCByO1xuIFxuIFx0V0FSTl9PTihpcnFzX2Rpc2FibGVkKCkpO1xuJiM0MztcdC8qXG4mIzQzO1x0ICogbG9jYWxfaXJxX2Rpc2FibGUoKSBmaXJzdDogb24gMzItYml0LCBoYXJkX2lycV9kaXNhYmxlKCkgYWxvbmUgaXMgYVxuJiM0MztcdCAqIHJhdyBNU1JbRUVdIGNsZWFyIHRoYXQgYnlwYXNzZXMgdGhlIGxvY2tkZXAvaXJxLXRyYWNpbmcgc3RhdGUsIGFuZFxuJiM0MztcdCAqIHRoZSB4ZmVyX3RvX2d1ZXN0X21vZGUgaGVscGVycyBhc3NlcnQgSVJRcyBhcmUgc2VlbiBhcyBkaXNhYmxlZC5cbiYjNDM7XHQgKi9cbiYjNDM7XHRsb2NhbF9pcnFfZGlzYWJsZSgpO1xuIFx0aGFyZF9pcnFfZGlzYWJsZSgpO1xuIFxuIFx0d2hpbGUgKHRydWUpIHtcbi1cdFx0aWYgKG5lZWRfcmVzY2hlZCgpKSB7XG4mIzQzO1x0XHR4ZmVyX3RvX2d1ZXN0X21vZGVfcHJlcGFyZSgpO1xuJiM0MztcbiYjNDM7XHRcdGlmICh4ZmVyX3RvX2d1ZXN0X21vZGVfd29ya19wZW5kaW5nKCkpIHtcbiYjNDM7XHRcdFx0LypcbiYjNDM7XHRcdFx0ICogVGhlIGhlbHBlciBtdXN0IHJ1biB3aXRoIElSUXMgZW5hYmxlZCBhbmQgbWF5XG4mIzQzO1x0XHRcdCAqIHNjaGVkdWxlKCkuIE9uIGEgcGVuZGluZyBzaWduYWwgaXQgcmV0dXJucyAtRUlOVFJcbiYjNDM7XHRcdFx0ICogd2l0aCBydW4tXHUwMDNlZXhpdF9yZWFzb24gYW5kIHZjcHUtXHUwMDNlc3RhdC5zaWduYWxfZXhpdHNcbiYjNDM7XHRcdFx0ICogYWxyZWFkeSBzZXQsIHNvIGp1c3QgcmV0dXJuIHRvIHVzZXJzcGFjZS5cbiYjNDM7XHRcdFx0ICovXG4gXHRcdFx0bG9jYWxfaXJxX2VuYWJsZSgpO1xuLVx0XHRcdGNvbmRfcmVzY2hlZCgpO1xuJiM0MztcdFx0XHRyID0ga3ZtX3hmZXJfdG9fZ3Vlc3RfbW9kZV9oYW5kbGVfd29yayh2Y3B1KTtcbiYjNDM7XHRcdFx0bG9jYWxfaXJxX2Rpc2FibGUoKTtcbiBcdFx0XHRoYXJkX2lycV9kaXNhYmxlKCk7XG4mIzQzO1x0XHRcdGlmIChyKSB7XG4mIzQzO1x0XHRcdFx0LypcbiYjNDM7XHRcdFx0XHQgKiBUaGUgZ2VuZXJpYyBoZWxwZXIgZG9lcyBub3Qgc2V0IHRoZSBleGl0XG4mIzQzO1x0XHRcdFx0ICogdHlwZTsgcmVjb3JkIGl0IGZvciB0aGUgRTUwMFxuJiM0MztcdFx0XHRcdCAqIENPTkZJR19LVk1fRVhJVF9USU1JTkcgaGlzdG9ncmFtIChhIG5vLW9wXG4mIzQzO1x0XHRcdFx0ICogb3RoZXJ3aXNlKS5cbiYjNDM7XHRcdFx0XHQgKi9cbiYjNDM7XHRcdFx0XHRrdm1wcGNfc2V0X2V4aXRfdHlwZSh2Y3B1LCBTSUdOQUxfRVhJVFMpO1xuJiM0MztcdFx0XHRcdGJyZWFrO1xuJiM0MztcdFx0XHR9XG4gXHRcdFx0Y29udGludWU7XG4gXHRcdH1cbiBcbi1cdFx0aWYgKHNpZ25hbF9wZW5kaW5nKGN1cnJlbnQpKSB7XG4tXHRcdFx0a3ZtcHBjX2FjY291bnRfZXhpdCh2Y3B1LCBTSUdOQUxfRVhJVFMpO1xuLVx0XHRcdHZjcHUtXHUwMDNlcnVuLVx1MDAzZWV4aXRfcmVhc29uID0gS1ZNX0VYSVRfSU5UUjtcbi1cdFx0XHRyID0gLUVJTlRSO1xuLVx0XHRcdGJyZWFrO1xuLVx0XHR9XG4tXG4gXHRcdHZjcHUtXHUwMDNlbW9kZSA9IElOX0dVRVNUX01PREU7XG4gXG4gXHRcdC8qXG5AQCAtMTE2LDYgJiM0MzsxMzQsNyBAQCBpbnQga3ZtcHBjX3ByZXBhcmVfdG9fZW50ZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIFx0XHRcdGxvY2FsX2lycV9lbmFibGUoKTtcbiBcdFx0XHR0cmFjZV9rdm1fY2hlY2tfcmVxdWVzdHModmNwdSk7XG4gXHRcdFx0ciA9IGt2bXBwY19jb3JlX2NoZWNrX3JlcXVlc3RzKHZjcHUpO1xuJiM0MztcdFx0XHRsb2NhbF9pcnFfZGlzYWJsZSgpO1xuIFx0XHRcdGhhcmRfaXJxX2Rpc2FibGUoKTtcbiBcdFx0XHRpZiAociBcdTAwM2UgMClcbiBcdFx0XHRcdGNvbnRpbnVlO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDAyOjIzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bXBwY19ydW5fY29yZSYjMzQ7LAogICAgJiMzNDtrdm1odl9ydW5fc2luZ2xlX3ZjcHUmIzM0OywKICAgICYjMzQ7a3ZtcHBjX2NvcmVfcHJlcGFyZV90b19lbnRlciYjMzQ7LAogICAgJiMzNDtrdm1wcGNfcHJlcGFyZV90b19lbnRlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBLVk0gZW50cnkvZXhpdCBsb29wIG9uIFBvd2VyUEMgdG8gdXNlIHRoZSBnZW5lcmljIHhmZXJfdG9fZ3Vlc3RfbW9kZSBoZWxwZXJzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIEtWTSBleGVjdXRpb24gcGF0aCBvbiBQb3dlclBDIGFuZCBzaG91bGQgYmUgZnV6emVkIGJ5IHJ1bm5pbmcgS1ZNIHdvcmtsb2FkcyBvbiBQb3dlclBDLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAyYjYyMzE2Njg1OWJkMGEzMjlkNjI4MzFlM2ViODJlMTM5YmFkNWZiCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBKdWwgMTAgMDI6MjM6MjEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvS2NvbmZpZyBiL2FyY2gvcG93ZXJwYy9LY29uZmlnCmluZGV4IGY3Y2U1ZmZmODFmMDNlLi41MTU1NWEwYjFhMjYyNCAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL0tjb25maWcKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9wb3dlcnBjL0tjb25maWcKQEAgLTI4MSw2ICYjNDM7MjgxLDcgQEAgY29uZmlnIFBQQwogCXNlbGVjdCBIQVZFX1BFUkZfUkVHUwogCXNlbGVjdCBIQVZFX1BFUkZfVVNFUl9TVEFDS19EVU1QCiAJc2VsZWN0IEhBVkVfUFJFRU1QVF9EWU5BTUlDX0tFWQomIzQzOwlzZWxlY3QgSEFWRV9QT1NJWF9DUFVfVElNRVJTX1RBU0tfV09SSwogCXNlbGVjdCBIQVZFX1JFVEhPT0sJCQlpZiBLUFJPQkVTCiAJc2VsZWN0IEhBVkVfUkVHU19BTkRfU1RBQ0tfQUNDRVNTX0FQSQogCXNlbGVjdCBIQVZFX1JFTElBQkxFX1NUQUNLVFJBQ0UKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZyBiL2FyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZwppbmRleCA5YTBkMWMxYWNhNmM4MC4uYjZiYzJmYzg2ZGNhNjcgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Bvd2VycGMva3ZtL0tjb25maWcKQEAgLTIyLDYgJiM0MzsyMiw3IEBAIGNvbmZpZyBLVk0KIAlzZWxlY3QgS1ZNX0NPTU1PTgogCXNlbGVjdCBLVk1fVkZJTwogCXNlbGVjdCBIQVZFX0tWTV9JUlFfQllQQVNTCiYjNDM7CXNlbGVjdCBWSVJUX1hGRVJfVE9fR1VFU1RfV09SSwogCiBjb25maWcgS1ZNX0JPT0szU19IQU5ETEVSCiAJYm9vbApkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYyBiL2FyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMKaW5kZXggNjFkYmVlYTMxN2YzYjcuLjNjZmU5YTdiZTljNmEwIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMKQEAgLTM4NTMsNyAmIzQzOzM4NTMsOCBAQCBzdGF0aWMgbm9pbmxpbmUgdm9pZCBrdm1wcGNfcnVuX2NvcmUoc3RydWN0IGt2bXBwY192Y29yZSAqdmMpCiAJICovCiAJbG9jYWxfaXJxX2Rpc2FibGUoKTsKIAloYXJkX2lycV9kaXNhYmxlKCk7Ci0JaWYgKGxhenlfaXJxX3BlbmRpbmcoKSB8fCBuZWVkX3Jlc2NoZWQoKSB8fAomIzQzOwl4ZmVyX3RvX2d1ZXN0X21vZGVfcHJlcGFyZSgpOwomIzQzOwlpZiAobGF6eV9pcnFfcGVuZGluZygpIHx8IHhmZXJfdG9fZ3Vlc3RfbW9kZV93b3JrX3BlbmRpbmcoKSB8fAogCSAgICByZWNoZWNrX3NpZ25hbHNfYW5kX21tdSgmYW1wO2NvcmVfaW5mbykpIHsKIAkJbG9jYWxfaXJxX2VuYWJsZSgpOwogCQl2Yy0mZ3Q7dmNvcmVfc3RhdGUgPSBWQ09SRV9JTkFDVElWRTsKQEAgLTQ4MjQsMTAgJiM0Mzs0ODI1LDE2IEBAIHN0YXRpYyBpbnQga3ZtcHBjX3J1bl92Y3B1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKIAkJdmMtJmd0O3J1bm5lciA9IHZjcHU7CiAJCWlmIChuX2NlZGVkID09IHZjLSZndDtuX3J1bm5hYmxlKSB7CiAJCQlrdm1wcGNfdmNvcmVfYmxvY2tlZCh2Yyk7Ci0JCX0gZWxzZSBpZiAobmVlZF9yZXNjaGVkKCkpIHsKJiM0MzsJCX0gZWxzZSBpZiAoX194ZmVyX3RvX2d1ZXN0X21vZGVfd29ya19wZW5kaW5nKCkpIHsKIAkJCWt2bXBwY192Y29yZV9wcmVlbXB0KHZjKTsKLQkJCS8qIExldCBzb21ldGhpbmcgZWxzZSBydW4gKi8KLQkJCWNvbmRfcmVzY2hlZF9sb2NrKCZhbXA7dmMtJmd0O2xvY2spOwomIzQzOwkJCS8qCiYjNDM7CQkJICogTGV0IHNvbWV0aGluZyBlbHNlIHJ1bi4gVGhlIHJhdyBoZWxwZXIgaXMgdXNlZCBhcwomIzQzOwkJCSAqIHNpZ25hbCBleGl0cyBhcmUgYWNjb3VudGVkIGJ5IHRoaXMgcGF0aCBhbHJlYWR5OwomIzQzOwkJCSAqIGl0IG1heSBzY2hlZHVsZSgpLCBzbyBkcm9wIHRoZSB2Y29yZSBsb2NrLgomIzQzOwkJCSAqLwomIzQzOwkJCXNwaW5fdW5sb2NrKCZhbXA7dmMtJmd0O2xvY2spOwomIzQzOwkJCXhmZXJfdG9fZ3Vlc3RfbW9kZV9oYW5kbGVfd29yaygpOwomIzQzOwkJCXNwaW5fbG9jaygmYW1wO3ZjLSZndDtsb2NrKTsKIAkJCWlmICh2Yy0mZ3Q7dmNvcmVfc3RhdGUgPT0gVkNPUkVfUFJFRU1QVCkKIAkJCQlrdm1wcGNfdmNvcmVfZW5kX3ByZWVtcHQodmMpOwogCQl9IGVsc2UgewpAQCAtNDg5NSwxMiAmIzQzOzQ5MDIsMTYgQEAgaW50IGt2bWh2X3J1bl9zaW5nbGVfdmNwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCB0aW1lX2xpbWl0LAogCQkJcnVuLSZndDtleGl0X3JlYXNvbiA9IEtWTV9FWElUX0ZBSUxfRU5UUlk7CiAJCQlydW4tJmd0O2ZhaWxfZW50cnkuaGFyZHdhcmVfZW50cnlfZmFpbHVyZV9yZWFzb24gPSAwOwogCQkJdmNwdS0mZ3Q7YXJjaC5yZXQgPSByOwotCQkJcmV0dXJuIHI7CiYjNDM7CQkJZ290byBkb25lOwogCQl9CiAJfQogCi0JaWYgKG5lZWRfcmVzY2hlZCgpKQotCQljb25kX3Jlc2NoZWQoKTsKJiM0MzsJciA9IGt2bV94ZmVyX3RvX2d1ZXN0X21vZGVfaGFuZGxlX3dvcmsodmNwdSk7CiYjNDM7CWlmIChyKSB7CiYjNDM7CQkvKiAtRUlOVFI6IHNpZ25hbCBwZW5kaW5nLCBleGl0IHRvIHVzZXJzcGFjZSAoS1ZNX0VYSVRfSU5UUikgKi8KJiM0MzsJCXZjcHUtJmd0O2FyY2gucmV0ID0gcjsKJiM0MzsJCWdvdG8gZG9uZTsKJiM0MzsJfQogCiAJa3ZtcHBjX3VwZGF0ZV92cGFzKHZjcHUpOwogCkBAIC00OTE0LDkgJiM0Mzs0OTI1LDEzIEBAIGludCBrdm1odl9ydW5fc2luZ2xlX3ZjcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgdGltZV9saW1pdCwKIAogCXZjcHUtJmd0O2FyY2guc3RhdGUgPSBLVk1QUENfVkNQVV9SVU5OQUJMRTsKIAotCWlmIChzaWduYWxfcGVuZGluZyhjdXJyZW50KSkKLQkJZ290byBzaWdwZW5kOwotCWlmIChuZWVkX3Jlc2NoZWQoKSB8fCAha3ZtLSZndDthcmNoLm1tdV9yZWFkeSkKJiM0MzsJeGZlcl90b19ndWVzdF9tb2RlX3ByZXBhcmUoKTsKJiM0MzsKJiM0MzsJLyoKJiM0MzsJICogSVJRcyBhcmUgZGlzYWJsZWQgaGVyZSwgc28gb24gcGVuZGluZyB3b3JrIGJhaWwgdG8gdGhlIG91dGVyIGxvb3AsCiYjNDM7CSAqIHdoaWNoIGhhbmRsZXMgaXQgdmlhIGt2bV94ZmVyX3RvX2d1ZXN0X21vZGVfaGFuZGxlX3dvcmsoKSBhYm92ZS4KJiM0MzsJICovCiYjNDM7CWlmICh4ZmVyX3RvX2d1ZXN0X21vZGVfd29ya19wZW5kaW5nKCkgfHwgIWt2bS0mZ3Q7YXJjaC5tbXVfcmVhZHkpCiAJCWdvdG8gb3V0OwogCiAJdmNwdS0mZ3Q7Y3B1ID0gcGNwdTsKQEAgLTUwNjgsMTAgJiM0Mzs1MDgzLDYgQEAgaW50IGt2bWh2X3J1bl9zaW5nbGVfdmNwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCB0aW1lX2xpbWl0LAogCiAJcmV0dXJuIHZjcHUtJmd0O2FyY2gucmV0OwogCi0gc2lncGVuZDoKLQl2Y3B1LSZndDtzdGF0LnNpZ25hbF9leGl0cyYjNDM7JiM0Mzs7Ci0JcnVuLSZndDtleGl0X3JlYXNvbiA9IEtWTV9FWElUX0lOVFI7Ci0JdmNwdS0mZ3Q7YXJjaC5yZXQgPSAtRUlOVFI7CiAgb3V0OgogCXZjcHUtJmd0O2NwdSA9IC0xOwogCXZjcHUtJmd0O2FyY2gudGhyZWFkX2NwdSA9IC0xOwpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2t2bS9ib29rZS5jIGIvYXJjaC9wb3dlcnBjL2t2bS9ib29rZS5jCmluZGV4IGYzZGRiMjRlY2U3NDlmLi41ZmJhMTk5ZGZkZDZhNiAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2t2bS9ib29rZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcG93ZXJwYy9rdm0vYm9va2UuYwpAQCAtNzIyLDYgJiM0Mzs3MjIsNyBAQCBpbnQga3ZtcHBjX2NvcmVfcHJlcGFyZV90b19lbnRlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiAJaWYgKHZjcHUtJmd0O2FyY2guc2hhcmVkLSZndDttc3IgJmFtcDsgTVNSX1dFKSB7CiAJCWxvY2FsX2lycV9lbmFibGUoKTsKIAkJa3ZtX3ZjcHVfaGFsdCh2Y3B1KTsKJiM0MzsJCWxvY2FsX2lycV9kaXNhYmxlKCk7CiAJCWhhcmRfaXJxX2Rpc2FibGUoKTsKIAogCQlrdm1wcGNfc2V0X2V4aXRfdHlwZSh2Y3B1LCBFTVVMQVRFRF9NVE1TUldFX0VYSVRTKTsKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9rdm0vcG93ZXJwYy5jIGIvYXJjaC9wb3dlcnBjL2t2bS9wb3dlcnBjLmMKaW5kZXggMDAzMDIzOTlmYzM3YjQuLmJlNWU0OGFlMGM2YzIxIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMva3ZtL3Bvd2VycGMuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Bvd2VycGMva3ZtL3Bvd2VycGMuYwpAQCAtODEsMjMgJiM0Mzs4MSw0MSBAQCBpbnQga3ZtcHBjX3ByZXBhcmVfdG9fZW50ZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogCWludCByOwogCiAJV0FSTl9PTihpcnFzX2Rpc2FibGVkKCkpOwomIzQzOwkvKgomIzQzOwkgKiBsb2NhbF9pcnFfZGlzYWJsZSgpIGZpcnN0OiBvbiAzMi1iaXQsIGhhcmRfaXJxX2Rpc2FibGUoKSBhbG9uZSBpcyBhCiYjNDM7CSAqIHJhdyBNU1JbRUVdIGNsZWFyIHRoYXQgYnlwYXNzZXMgdGhlIGxvY2tkZXAvaXJxLXRyYWNpbmcgc3RhdGUsIGFuZAomIzQzOwkgKiB0aGUgeGZlcl90b19ndWVzdF9tb2RlIGhlbHBlcnMgYXNzZXJ0IElSUXMgYXJlIHNlZW4gYXMgZGlzYWJsZWQuCiYjNDM7CSAqLwomIzQzOwlsb2NhbF9pcnFfZGlzYWJsZSgpOwogCWhhcmRfaXJxX2Rpc2FibGUoKTsKIAogCXdoaWxlICh0cnVlKSB7Ci0JCWlmIChuZWVkX3Jlc2NoZWQoKSkgewomIzQzOwkJeGZlcl90b19ndWVzdF9tb2RlX3ByZXBhcmUoKTsKJiM0MzsKJiM0MzsJCWlmICh4ZmVyX3RvX2d1ZXN0X21vZGVfd29ya19wZW5kaW5nKCkpIHsKJiM0MzsJCQkvKgomIzQzOwkJCSAqIFRoZSBoZWxwZXIgbXVzdCBydW4gd2l0aCBJUlFzIGVuYWJsZWQgYW5kIG1heQomIzQzOwkJCSAqIHNjaGVkdWxlKCkuIE9uIGEgcGVuZGluZyBzaWduYWwgaXQgcmV0dXJucyAtRUlOVFIKJiM0MzsJCQkgKiB3aXRoIHJ1bi0mZ3Q7ZXhpdF9yZWFzb24gYW5kIHZjcHUtJmd0O3N0YXQuc2lnbmFsX2V4aXRzCiYjNDM7CQkJICogYWxyZWFkeSBzZXQsIHNvIGp1c3QgcmV0dXJuIHRvIHVzZXJzcGFjZS4KJiM0MzsJCQkgKi8KIAkJCWxvY2FsX2lycV9lbmFibGUoKTsKLQkJCWNvbmRfcmVzY2hlZCgpOwomIzQzOwkJCXIgPSBrdm1feGZlcl90b19ndWVzdF9tb2RlX2hhbmRsZV93b3JrKHZjcHUpOwomIzQzOwkJCWxvY2FsX2lycV9kaXNhYmxlKCk7CiAJCQloYXJkX2lycV9kaXNhYmxlKCk7CiYjNDM7CQkJaWYgKHIpIHsKJiM0MzsJCQkJLyoKJiM0MzsJCQkJICogVGhlIGdlbmVyaWMgaGVscGVyIGRvZXMgbm90IHNldCB0aGUgZXhpdAomIzQzOwkJCQkgKiB0eXBlOyByZWNvcmQgaXQgZm9yIHRoZSBFNTAwCiYjNDM7CQkJCSAqIENPTkZJR19LVk1fRVhJVF9USU1JTkcgaGlzdG9ncmFtIChhIG5vLW9wCiYjNDM7CQkJCSAqIG90aGVyd2lzZSkuCiYjNDM7CQkJCSAqLwomIzQzOwkJCQlrdm1wcGNfc2V0X2V4aXRfdHlwZSh2Y3B1LCBTSUdOQUxfRVhJVFMpOwomIzQzOwkJCQlicmVhazsKJiM0MzsJCQl9CiAJCQljb250aW51ZTsKIAkJfQogCi0JCWlmIChzaWduYWxfcGVuZGluZyhjdXJyZW50KSkgewotCQkJa3ZtcHBjX2FjY291bnRfZXhpdCh2Y3B1LCBTSUdOQUxfRVhJVFMpOwotCQkJdmNwdS0mZ3Q7cnVuLSZndDtleGl0X3JlYXNvbiA9IEtWTV9FWElUX0lOVFI7Ci0JCQlyID0gLUVJTlRSOwotCQkJYnJlYWs7Ci0JCX0KLQogCQl2Y3B1LSZndDttb2RlID0gSU5fR1VFU1RfTU9ERTsKIAogCQkvKgpAQCAtMTE2LDYgJiM0MzsxMzQsNyBAQCBpbnQga3ZtcHBjX3ByZXBhcmVfdG9fZW50ZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogCQkJbG9jYWxfaXJxX2VuYWJsZSgpOwogCQkJdHJhY2Vfa3ZtX2NoZWNrX3JlcXVlc3RzKHZjcHUpOwogCQkJciA9IGt2bXBwY19jb3JlX2NoZWNrX3JlcXVlc3RzKHZjcHUpOwomIzQzOwkJCWxvY2FsX2lycV9kaXNhYmxlKCk7CiAJCQloYXJkX2lycV9kaXNhYmxlKCk7CiAJCQlpZiAociAmZ3Q7IDApCiAJCQkJY29udGludWU7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDAyOjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxNjAKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA2NDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQb3dlclBDIEtWTSBQYXRjaCBmb3IgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IGEgcGF0Y2ggaGVyZSB0aGF0JiMzOTtzIHRvdWNoaW5nIHNvbWUgY29yZSBLVk0gY29kZSBzcGVjaWZpY2FsbHkgZm9yIFBvd2VyUEMuIEl0JiMzOTtzIG1vZGlmeWluZyBmaWxlcyBsaWtlIGBib29rM3NfaHYuY2AsIGBib29rZS5jYCwgYW5kIGBwb3dlcnBjLmNgIGluIHRoZSBgYXJjaC9wb3dlcnBjL2t2bWAgZGlyZWN0b3J5LiBUaGUgcGF0Y2ggaXMgYWxzbyBhZGRpbmcgc29tZSBgc2VsZWN0YCBzdGF0ZW1lbnRzIGluIHRoZSBgS2NvbmZpZ2AgZmlsZXMg4oCTIGBIQVZFX1BPU0lYX0NQVV9USU1FUlNfVEFTS19XT1JLYCBhbmQgYFZJUlRfWEZFUl9UT19HVUVTVF9XT1JLYC4gVGhlc2UgYHNlbGVjdGAgc3RhdGVtZW50cyBhcmUgaW50ZXJlc3Rpbmc7IHRoZXkmIzM5O3JlIHByb2JhYmx5IGVuYWJsaW5nIHNwZWNpZmljIGZlYXR1cmVzIG9yIGRlcGVuZGVuY2llcyB3aXRoaW4gdGhlIFBvd2VyUEMgS1ZNIGVudmlyb25tZW50LiBUaGUgcmVhbCBtZWF0IG9mIHRoZSBjaGFuZ2UsIHRob3VnaCwgc2VlbXMgdG8gYmUgcmVwbGFjaW5nIHRoZSBzdGFuZGFyZCBgbmVlZF9yZXNjaGVkKClgIGFuZCBgc2lnbmFsX3BlbmRpbmcoKWAgY2hlY2tzIHdpdGggdGhpcyBuZXcgYHhmZXJfdG9fZ3Vlc3RfbW9kZWAgbG9naWMgKGB4ZmVyX3RvX2d1ZXN0X21vZGVfcHJlcGFyZSgpYCwgYHhmZXJfdG9fZ3Vlc3RfbW9kZV93b3JrX3BlbmRpbmcoKWAsIGFuZCBga3ZtX3hmZXJfdG9fZ3Vlc3RfbW9kZV9oYW5kbGVfd29yaygpYCkuIFRoaXMgc3VnZ2VzdHMgYSBmdW5kYW1lbnRhbCBzaGlmdCBpbiBob3cgS1ZNIGhhbmRsZXMgZW50cnkgYW5kIGV4aXQgb24gUG93ZXJQQywgd2hpY2ggbWFrZXMgdGhpcyBwYXRjaCByaXBlIGZvciBhbmFseXNpcy4KCk15IGZpcnN0IHRob3VnaHQgaXMsIGNhbiB0aGlzIGJlIGZ1enplZD8gV2VsbCwgb2J2aW91c2x5LCBpZiB3ZSBjYW4gKnJ1biogUG93ZXJQQyBLVk0uIFN5emthbGxlciwgbXkgZ28tdG8gZnV6emluZyB0b29sLCB0eXBpY2FsbHkgZG9lc24mIzM5O3QgYXV0b21hdGljYWxseSB0YXJnZXQgUG93ZXJQQyBLVk0gdW5sZXNzIGl0JiMzOTtzIGNvbmZpZ3VyZWQgdG8uIEkga25vdyBTeXprYWxsZXIgaGFzIHNvbWUgUG93ZXJQQyBzdXBwb3J0LCBzbyBtYXliZSBpdCYjMzk7cyBhbHJlYWR5IHRoZXJlPyBXYWl0LCB0aGUgcXVlc3Rpb24gYXNrcyBtZSB0byBjb25zaWRlciB0aGF0IFN5emthbGxlciAqZG9lcyogaGF2ZSBLVk0gc3VwcG9ydCwgc28gcGVyaGFwcyB0aGlzIGlzIGEgc2ltcGxlciB0YXNrIHRoYW4gSSBmaXJzdCBiZWxpZXZlZC4gVGhlIHByb21wdCBpcyBhbHNvIHBvaW50aW5nIG91dCB0aGF0IGNlcnRhaW4gY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiBzb21lIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBldmVuIFFFTVUuIFRoYXQmIzM5O3MgYSBnb29kIHJlbWluZGVyIHRvIGJlIGF3YXJlIG9mIG15IGV4ZWN1dGlvbiBlbnZpcm9ubWVudC4KCkNhbiB3ZSByZWFjaCBQb3dlclBDIEtWTSBpbiBRRU1VPyBIbW0sIFFFTVUgZG9lcyBzdXBwb3J0IFBvd2VyUEMgS1ZNLCBidXQgdHlwaWNhbGx5IHJlcXVpcmVzIGEgUG93ZXJQQyBob3N0LiBPciBtYXliZSBuZXN0ZWQgS1ZNPyBUaGF0JiMzOTtzIHdvcnRoIHJlbWVtYmVyaW5nLiBUaGUgcHJvbXB0IGFsc28gcmVtaW5kcyBtZSB0aGF0IGlmIHRoZSBzeXprYWxsZXIgaW5zdGFuY2UgaXMgb24geDg2LCBpdCAqd29uJiMzOTt0KiBiZSBhYmxlIHRvIGRpcmVjdGx5IGhpdCBQb3dlclBDIEtWTSwgcmlnaHQ/IEJ1dCB3YWl0LCBJIGtub3cgc3l6Ym90ICpkb2VzKiBoYXZlIFBvd2VyUEMgaW5zdGFuY2VzLiBUaGF0IGlzIGEgZ2FtZSBjaGFuZ2VyLiBEb2VzIHN5emJvdCBmdXp6IEtWTSBvbiBQb3dlclBDPyBJIG5lZWQgdG8gbG9vayBpbnRvIHRoYXQuCgpPa2F5LCBsZXQmIzM5O3MgcmVmb2N1cy4gSXMgdGhpcyBwYXRjaCBldmVuIHdvcnRoIGZ1enppbmc/IEl0JiMzOTtzIHRvdWNoaW5nIGNvcmUgS1ZNIGxvZ2ljIG9uIFBvd2VyUEMuIFllcywgZGVmaW5pdGVseSB3b3J0aCB0aGUgZWZmb3J0LiBIb3cgcmVhY2hhYmxlIGlzIHRoaXMgY29kZT8gQWgsIHJpZ2h0LCBgL2Rldi9rdm1gIGlvY3Rscywgc3BlY2lmaWNhbGx5IGBLVk1fUlVOYC4gVGhhdCYjMzk7cyB0aGUgZW50cnkgcG9pbnQuIEkgbmVlZCB0byBpZGVudGlmeSB0aGUgc3BlY2lmaWMgZnVuY3Rpb25zIG1vZGlmaWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGNvZGUgcGF0aHMuIE9rYXksIGxldCYjMzk7cyBsb29rIGZvciB0aGUgbW9kaWZpZWQgZnVuY3Rpb25zOiBga3ZtcHBjX3J1bl9jb3JlYCwgYGt2bXBwY19ydW5fdmNwdWAsIGBrdm1odl9ydW5fc2luZ2xlX3ZjcHVgLCBga3ZtcHBjX2NvcmVfcHJlcGFyZV90b19lbnRlcmAsIGFuZCBga3ZtcHBjX3ByZXBhcmVfdG9fZW50ZXJgLiBUaGVzZSBhcmUgdGhlIGtleSBmdW5jdGlvbnMgdG8gd2F0Y2guCgpOZXh0IHN0ZXA6IGxldCYjMzk7cyBjaGVjayBLVk0gZW5hYmxlbWVudCBvbiBQb3dlclBDLiBUaGUgY29uZmlncyBJIHdhbnQgdG8gbG9vayBhdCBhcmUgYEtWTWAsIGBLVk1fQk9PSzNTXzY0YCwgYEtWTV9FNTAwVjJgLCBhbmQgYEtWTV9FNTAwTUNgLiBJIG5lZWQgdG8gZW5zdXJlIHRoZXNlIGFyZSBwcm9wZXJseSBlbmFibGVkLiBUaGUgcHJvbXB0IGFsc28gbWVudGlvbnMgJiMzNDtFbmFibGVDb25maWdzJiMzNDsgYW5kICYjMzQ7Rm9jdXNTeW1ib2xzLCYjMzQ7IHNvIEkmIzM5O2xsIG5lZWQgdG8gdXNlIHRob3NlIHRvb2xzIHRvIHNwZWNpZmljYWxseSBsb29rIGF0IGBhcmNoL3Bvd2VycGMva3ZtL0tjb25maWdgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDAyOjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBLVk0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3Bvd2VycGMva3ZtL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTktXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MjA6Y29uZmlnIEtWTVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTIxLVx0Ym9vbFxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yNi1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoyNzpjb25maWcgS1ZNX0JPT0szU19IQU5ETEVSXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjgtXHRib29sXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjktXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MzA6Y29uZmlnIEtWTV9CT09LM1NfMzJfSEFORExFUlxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTMxLVx0Ym9vbFxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0zNC1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzozNTpjb25maWcgS1ZNX0JPT0szU182NF9IQU5ETEVSXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMzYtXHRib29sXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTM4LVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjM5OmNvbmZpZyBLVk1fQk9PSzNTX1BSX1BPU1NJQkxFXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctNDAtXHRib29sXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTQyLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjQzOmNvbmZpZyBLVk1fQk9PSzNTX0hWX1BPU1NJQkxFXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctNDQtXHRib29sXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctNDUtXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6NDY6Y29uZmlnIEtWTV9CT09LM1NfMzJcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy00Ny1cdHRyaXN0YXRlIFwmIzM0O0tWTSBzdXBwb3J0IGZvciBQb3dlclBDIGJvb2szc18zMiBwcm9jZXNzb3JzXCYjMzQ7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTYyLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjYzOmNvbmZpZyBLVk1fQk9PSzNTXzY0XG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctNjQtXHR0cmlzdGF0ZSBcJiMzNDtLVk0gc3VwcG9ydCBmb3IgUG93ZXJQQyBib29rM3NfNjQgcHJvY2Vzc29yc1wmIzM0O1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy03OS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzo4MDpjb25maWcgS1ZNX0JPT0szU182NF9IVlxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTgxLVx0dHJpc3RhdGUgXCYjMzQ7S1ZNIGZvciBQT1dFUjcgYW5kIGxhdGVyIHVzaW5nIGh5cGVydmlzb3IgbW9kZSBpbiBob3N0XCYjMzQ7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTEwMC1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxMDE6Y29uZmlnIEtWTV9CT09LM1NfNjRfUFJcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xMDItXHR0cmlzdGF0ZSBcJiMzNDtLVk0gc3VwcG9ydCB3aXRob3V0IHVzaW5nIGh5cGVydmlzb3IgbW9kZSBpbiBob3N0XCYjMzQ7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTEyNi1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxMjc6Y29uZmlnIEtWTV9CT09LM1NfSFZfRVhJVF9USU1JTkdcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xMjgtXHRib29sXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTI5LVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjEzMDpjb25maWcgS1ZNX0JPT0szU19IVl9QOV9USU1JTkdcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xMzEtXHRib29sIFwmIzM0O0RldGFpbGVkIHRpbWluZyBmb3IgdGhlIFA5IGVudHJ5IHBvaW50XCYjMzQ7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE0Mi1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxNDM6Y29uZmlnIEtWTV9CT09LM1NfSFZfUDhfVElNSU5HXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTQ0LVx0Ym9vbCBcJiMzNDtEZXRhaWxlZCB0aW1pbmcgZm9yIGh5cGVydmlzb3IgcmVhbC1tb2RlIGNvZGUgKGZvciBQT1dFUjgpXCYjMzQ7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE1Ny1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxNTg6Y29uZmlnIEtWTV9CT09LM1NfSFZfTkVTVEVEX1BNVV9XT1JLQVJPVU5EXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTU5LVx0Ym9vbCBcJiMzNDtOZXN0ZWQgTDAgaG9zdCB3b3JrYXJvdW5kIGZvciBMMSBLVk0gaG9zdCBQTVUgaGFuZGxpbmcgYnVnXCYjMzQ7IGlmIEVYUEVSVFxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xNzItXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MTczOmNvbmZpZyBLVk1fQk9PSzNTX0hWX1BNVVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE3NC1cdHRyaXN0YXRlIFwmIzM0O0h5cGVydmlzb3IgUGVyZiBldmVudHMgZm9yIEtWTSBCb29rM3MtSFZcJiMzNDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTg0LVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjE4NTpjb25maWcgS1ZNX0JPT0tFX0hWXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTg2LVx0Ym9vbFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE4Ny1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxODg6Y29uZmlnIEtWTV9FWElUX1RJTUlOR1xuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE4OS1cdGJvb2wgXCYjMzQ7RGV0YWlsZWQgZXhpdCB0aW1pbmdcJiMzNDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTk4LVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjE5OTpjb25maWcgS1ZNX0U1MDBWMlxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTIwMC1cdGJvb2wgXCYjMzQ7S1ZNIHN1cHBvcnQgZm9yIFBvd2VyUEMgRTUwMHYyIHByb2Nlc3NvcnNcJiMzNDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjEzLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjIxNDpjb25maWcgS1ZNX0U1MDBNQ1xuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTIxNS1cdGJvb2wgXCYjMzQ7S1ZNIHN1cHBvcnQgZm9yIFBvd2VyUEMgRTUwME1DL0U1NTAwL0U2NTAwIHByb2Nlc3NvcnNcJiMzNDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjI5LVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjIzMDpjb25maWcgS1ZNX01QSUNcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yMzEtXHRib29sIFwmIzM0O0tWTSBpbi1rZXJuZWwgTVBJQyBlbXVsYXRpb25cJiMzNDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjQxLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjI0Mjpjb25maWcgS1ZNX1hJQ1NcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yNDMtXHRib29sIFwmIzM0O0tWTSBpbi1rZXJuZWwgWElDUyBlbXVsYXRpb25cJiMzNDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjUxLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjI1Mjpjb25maWcgS1ZNX1hJVkVcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yNTMtXHRib29sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDI6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzIwNgoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDE2OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEtWTSBQb3dlclBDIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmNgLCBgYXJjaC9wb3dlcnBjL2t2bS9ib29rZS5jYCwgYW5kIGBhcmNoL3Bvd2VycGMva3ZtL3Bvd2VycGMuY2AuIFJpZ2h0LCB0eXBpY2FsIEtWTSBmaWxlIG1vZGlmaWNhdGlvbnMgb24gUG93ZXJQQy4gTGV0JiMzOTtzIHNlZSwgdGhlIEtWTSBjb25maWdzIGluIHBsYXkgaGVyZSBhcmUgYEtWTWAsIGBLVk1fQk9PSzNTXzY0X0hWYCwgYEtWTV9CT09LM1NfNjRfUFJgLCBgS1ZNX0JPT0szU18zMmAsIGBLVk1fRTUwMFYyYCwgYW5kIGBLVk1fRTUwME1DYC4gV2FpdCBhIHNlY29uZOKApiBgYm9vazNzX2h2LmNgIGlzIHNwZWNpZmljYWxseSBjb21waWxlZCB3aGVuIGBLVk1fQk9PSzNTXzY0X0hWYCBpcyBlbmFibGVkLiBJIHNob3VsZCBwcm9iYWJseSBkb3VibGUgY2hlY2sgdGhhdCBtYWtlZmlsZSB0byBiZSBzdXJlIHRoZSBkZXBlbmRlbmNpZXMgYXJlIGFzIEkgZXhwZWN0LiBPa2F5LCBsZXQmIzM5O3MgbG9vayBhdCBgYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDI6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Ym9vazNzX2h2Lm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGU9NjI9a3ZtLWh2LXkgJiM0Mzs9IFxcXG5hcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlOjYzOlx0Ym9vazNzX2h2Lm8gXFxcbmFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGUtNjQtXHRib29rM3NfaHZfaW50ZXJydXB0cy5vIFxcXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDI6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzcxNAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIHRoZSBQb3dlclBDIEtWTSBJbXBsZW1lbnRhdGlvbioqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBQb3dlclBDIEtWTSBoeXBlcnZpc29yIHNwZWNpZmljcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gYGFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGVgLiBUaGF0JiMzOTtzIHRoZSB1c3VhbCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyB3aGljaCBwYXJ0cyBvZiB0aGUgS1ZNIGluZnJhc3RydWN0dXJlIGFyZSBiZWluZyBjb21waWxlZCBhbmQgaW50ZWdyYXRlZCBmb3IgdGhpcyBhcmNoaXRlY3R1cmUuIEkmIzM5O20gcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gc2VlaW5nIGhvdyB0aGUgaHlwZXJ2aXNvciBpdHNlbGYgaXMgYnJvdWdodCBpbnRvIHRoZSBidWlsZCBwcm9jZXNzOyB0aGF0JiMzOTtzIHdoZXJlIEkgZXhwZWN0IHRvIGZpbmQgdGhlIGRlZmluaXRpb24gb2YgYGt2bS1odi15YCwgb3Igc29tZXRoaW5nIGVxdWl2YWxlbnQuIFRoYXQgdmFyaWFibGUgd2lsbCBnaXZlIG1lIGEgY2x1ZSBhcyB0byB3aGljaCBzcGVjaWZpYyBzb3VyY2UgZmlsZXMgYXJlIGNvbnNpZGVyZWQgZXNzZW50aWFsIHRvIHRoZSBLVk0gaW1wbGVtZW50YXRpb24uIEZyb20gdGhlcmUsIEkmIzM5O2xsIGJlIGFibGUgdG8gd29yayB0aHJvdWdoIHRoZSBkZXRhaWxzLgoKVGhlbiwgSSYjMzk7bSBnb2luZyB0byB0dXJuIG15IGF0dGVudGlvbiB0byBgYm9va2UuY2Agd2hpY2gsIGlmIEkgcmVjYWxsIGNvcnJlY3RseSwgaXMgY3JpdGljYWwgZm9yIHRoZSBCb29rLUUgYXJjaGl0ZWN0dXJlLiBJJiMzOTtsbCBuZWVkIHRvIHNlZSBob3cgdGhlIGNvZGUgaGFuZGxlcyBjcml0aWNhbCBmdW5jdGlvbnMgc3VjaCBhcyBleGNlcHRpb24gdmVjdG9yIG1hbmFnZW1lbnQsIGludGVycnVwdCBoYW5kbGluZywgYW5kIGFueSBvdGhlciBCb29rLUUgc3BlY2lmaWMgZmVhdHVyZXMgdGhhdCBhcmUgcmVxdWlyZWQgZm9yIEtWTSB0byBmdW5jdGlvbiBjb3JyZWN0bHkuIFRoaXMgaXMgd2hlcmUgSSYjMzk7bGwgcHJvYmFibHkgZmluZCB0aGUga2V5IGludGVyYWN0aW9ucyBiZXR3ZWVuIHRoZSBoeXBlcnZpc29yIGFuZCB0aGUgdW5kZXJseWluZyBoYXJkd2FyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwMjoyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtib29rZS5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlPTE2PWt2bS1lNTAwLW9ianMgOj0gXFxcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlLTE4LVx0ZW11bGF0ZS5vIFxcXG5hcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlOjE5Olx0Ym9va2UubyBcXFxuYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZS0yMC1cdGJvb2tlX2VtdWxhdGUubyBcXFxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGU9Mjg9a3ZtLWU1MDBtYy1vYmpzIDo9IFxcXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZS0zMC1cdGVtdWxhdGUubyBcXFxuYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZTozMTpcdGJvb2tlLm8gXFxcbmFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGUtMzItXHRib29rZV9lbXVsYXRlLm8gXFxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwMjoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MjQ0CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogOTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGZyb20gYW4gZXhwZXJ0JiMzOTtzIHBlcnNwZWN0aXZlOgoKKipEaXZpbmcgaW50byB0aGUgUG93ZXJQQyBLVk0gQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlLCBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRob3NlIHNwZWNpZmljIEtWTSBjb25maWd1cmF0aW9uczogYEtWTV9CT09LM1NfNjRfSFZgIGFuZCB0aGVuIGVpdGhlciBgS1ZNX0U1MDBWMmAgb3IgYEtWTV9FNTAwTUNgLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhlc2UgYXJlIHNldCB1cC4gQWgsIHJpZ2h0LCB0aGUgYGFyY2gvcG93ZXJwYy9rdm0vcG93ZXJwYy5jYCBmaWxlIGlzIGNvbXBpbGVkIGZvciAqYWxsKiBLVk0gaW1wbGVtZW50YXRpb25zIG9uIFBvd2VyUEMgYXJjaGl0ZWN0dXJlcy4gVGhhdCBtYWtlcyBzZW5zZSwgYSBjb21tb24gZW50cnkgcG9pbnQuIE9rYXksIG5vdyBJIG5lZWQgdG8gY2hlY2sgdGhlIEtWTSBNYWtlZmlsZSBpbiB0aGUgUG93ZXJQQyBhcmNoaXRlY3R1cmUgZGlyZWN0b3J5LiBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgcG93ZXJwYy5vYCBpcyBpbmRlZWQgbGlzdGVkIHRoZXJlLCB0byB1bmRlcnN0YW5kIGhvdyB0aG9zZSBjb25maWd1cmF0aW9ucyBnZXQgd2lyZWQgdXAgaW50byB0aGUgS1ZNIGJ1aWxkIHByb2Nlc3MuIFRoYXQgTWFrZWZpbGUgaXMgbXkgbmV4dCBzdG9wLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwMjoyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwb3dlcnBjLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGU9OD1pbmNsdWRlICQoc3JjdHJlZSkvdmlydC9rdm0vTWFrZWZpbGUua3ZtXG5hcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlLTktXG5hcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlOjEwOmNvbW1vbi1vYmpzLXkgJiM0Mzs9IHBvd2VycGMubyBlbXVsYXRlX2xvYWRzdG9yZS5vXG5hcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlLTExLW9iai0kKENPTkZJR19LVk1fRVhJVF9USU1JTkcpICYjNDM7PSB0aW1pbmcub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwMjoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NjgyCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogNzUzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBLVk0gUG93ZXJQQyBQYXRjaCBmb3IgRnV6emluZyBGb2N1cyoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFsbCBhYm91dCBLVk0gY29uZmlndXJhdGlvbiwgc3BlY2lmaWNhbGx5IGZvciBQb3dlclBDLiBJdCBsb29rcyBsaWtlIHRoZSBjb3JlIGNoYW5nZSBpbnZvbHZlcyB1cGRhdGluZyB0aGUgS1ZNIGVudHJ5L2V4aXQgbG9vcC4gSXQmIzM5O3Mgc3dhcHBpbmcgb3V0IHRoZSBvbGQgYG5lZWRfcmVzY2hlZCgpYCBhbmQgYHNpZ25hbF9wZW5kaW5nKClgIGNoZWNrcyB3aXRoIHRoZSBuZXcgYHhmZXJfdG9fZ3Vlc3RfbW9kZWAgaGVscGVycy4gRnVuY3Rpb25hbGx5LCB0aGlzIGlzIHNpZ25pZmljYW50IGJlY2F1c2UgaXQmIzM5O3MgcmVwbGFjaW5nIGhvdyB0aGUgVkNQVSBoYW5kbGVzIHdvcmsgYW5kIHJlc2NoZWR1bGluZy4gVGhpcyB3aG9sZSB0aGluZyBpcyB0cmlnZ2VyZWQgYnkgdGhlIGBLVk1fUlVOYCBpb2N0bCwgc28gaXQmIzM5O3MgZGlyZWN0bHkgaW1wYWN0aW5nIGhvdyB0aGUgVk0gYWN0dWFsbHkgcnVucy4KCk5vdywgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggZnVuY3Rpb25zIGFyZSB3b3J0aCBmb2N1c2luZyBvbiBmb3IgZnV6emluZy4gVGhlIHByb21wdCBzYXlzIHRvIGF2b2lkIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIGtlZXAgdGhlIHRlc3RzIGZyb20gYmVpbmcgc2tld2VkLiBMZXQmIzM5O3Mgc2VlLi4uIHRoZSBwYXRjaCBpcyB0b3VjaGluZyBga3ZtcHBjX3J1bl9jb3JlYCwgYGt2bXBwY19ydW5fdmNwdWAsIGBrdm1odl9ydW5fc2luZ2xlX3ZjcHVgLCBga3ZtcHBjX2NvcmVfcHJlcGFyZV90b19lbnRlcmAsIGFuZCBga3ZtcHBjX3ByZXBhcmVfdG9fZW50ZXJgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBhbGwgb2YgdGhvc2UgYXJlIGhvdC1wYXRoIGZ1bmN0aW9ucywgZXNwZWNpYWxseSBga3ZtaHZfcnVuX3NpbmdsZV92Y3B1YCB3aGljaCBpcyB0aGUgbWFpbiBsb29wIGZvciBWQ1BVIGV4ZWN1dGlvbi4gYGt2bXBwY19ydW5fY29yZWAsIGBrdm1wcGNfcnVuX3ZjcHVgLCBga3ZtcHBjX3ByZXBhcmVfdG9fZW50ZXJgIGFuZCBga3ZtcHBjX2NvcmVfcHJlcGFyZV90b19lbnRlcmAgYXJlIGFsbCBwYXJ0cyBvZiB0aGUgVkNQVSBydW4gbG9vcCBhcyB3ZWxsLgoKU2luY2UgKmFsbCogdGhlIG1vZGlmaWVkIGZ1bmN0aW9ucyBhcHBlYXIgdG8gYmUgaG90LXBhdGgsIGl0IHdvdWxkIGluaXRpYWxseSBzZWVtIHRoYXQgSSBzaG91bGQgbGVhdmUgYEZvY3VzU3ltYm9sc2AgZW1wdHksIHRvIGF2b2lkIHNrZXdlZCByZXN1bHRzLgoKQnV0IHdhaXQgYSBtaW51dGUsIGBrdm1wcGNfcHJlcGFyZV90b19lbnRlcmAgaXMgcHJvYmFibHkgbW9yZSBzcGVjaWZpYyB0byB0aGlzIGNvZGUgcGF0aCwgYXMgaXQgaXMgb25seSBjYWxsZWQgb24gZW50cnksIGFuZCBga3ZtaHZfcnVuX3NpbmdsZV92Y3B1YCBpcyBzcGVjaWZpYyB0byB0aGlzIGZlYXR1cmUuIEl0JiMzOTtzIG5vdCBhIGdlbmVyaWMga2VybmVsIGZ1bmN0aW9uIGxpa2UgYHNjaGVkdWxlYCBvciBga21hbGxvY2AuIEl0JiMzOTtzIGEgUG93ZXJQQy1zcGVjaWZpYyBLVk0gaG90LXBhdGguCgpTbywgSSBzaG91bGQgYWRkIGBrdm1wcGNfcHJlcGFyZV90b19lbnRlcmAgYW5kIGBrdm1odl9ydW5fc2luZ2xlX3ZjcHVgIHRvIGBGb2N1c1N5bWJvbHNgLiBMZXQgbWUganVzdCBkb3VibGUgY2hlY2sgd2hlcmUgYGt2bXBwY19wcmVwYXJlX3RvX2VudGVyYCBpcyBkZWZpbmVkLCBhbmQgSSB3aWxsIGJlIGFsbCBzZXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDAyOjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bXBwY19wcmVwYXJlX3RvX2VudGVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9wb3dlcnBjL2t2bS9wb3dlcnBjLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9wb3dlcnBjL2t2bS9wb3dlcnBjLmM9NjU9aW50IGt2bV9hcmNoX3ZjcHVfc2hvdWxkX2tpY2soc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vcG93ZXJwYy5jLTc4LSAqL1xuYXJjaC9wb3dlcnBjL2t2bS9wb3dlcnBjLmM6Nzk6aW50IGt2bXBwY19wcmVwYXJlX3RvX2VudGVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmFyY2gvcG93ZXJwYy9rdm0vcG93ZXJwYy5jLTgwLXtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL3Bvd2VycGMuYy0xNTctfVxuYXJjaC9wb3dlcnBjL2t2bS9wb3dlcnBjLmM6MTU4OkVYUE9SVF9TWU1CT0xfR1BMKGt2bXBwY19wcmVwYXJlX3RvX2VudGVyKTtcbmFyY2gvcG93ZXJwYy9rdm0vcG93ZXJwYy5jLTE1OS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDI6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAxOTUKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIEtWTS9IViBJbXBhY3QqKgoKUmlnaHQsIHRoYXQmIzM5O3MgZGVmaW5pdGVseSB0aGUgY2FzZS4gQnV0LCBteSBtaW5kIGltbWVkaWF0ZWx5IGp1bXBzIHRvIGBrdm1odl9ydW5fc2luZ2xlX3ZjcHVgLiBXZSYjMzk7cmUgbGlrZWx5IHRhbGtpbmcgYWJvdXQgYSBzcGVjaWZpYyBzY2VuYXJpbyBvciBwZXJmb3JtYW5jZSBpc3N1ZSB0aGF0IGludm9sdmVzIGEgc2luZ2xlIHZDUFUgZXhlY3V0aW9uIGluIGEgS1ZNL0hWIGNvbnRleHQuIFVuZGVyc3RhbmRpbmcgdGhlIGludHJpY2FjaWVzIG9mICp0aGF0KiBmdW5jdGlvbiYjMzk7cyBiZWhhdmlvciwgcGFydGljdWxhcmx5IGl0cyBpbnRlcmFjdGlvbiB3aXRoIHRoZSBoeXBlcnZpc29yIGFuZCB0aGUgZ3Vlc3QsIGlzIGNydWNpYWwgaGVyZS4gV2hhdCYjMzk7cyB0aGUgY29udGV4dD8gV2hhdCB0cmlnZ2VyZWQgdGhlIGNvbnNpZGVyYXRpb24gb2YgdGhhdCBzcGVjaWZpYyBjYWxsPyBJcyBpdCByZWxhdGVkIHRvIGEgYm90dGxlbmVjaywgYSBzcGVjaWZpYyBpbnN0cnVjdGlvbiBzZXF1ZW5jZSwgYSBwYXJ0aWN1bGFyIGd1ZXN0IGFyY2hpdGVjdHVyZSwgb3IgYSBzeW5jaHJvbml6YXRpb24gaXNzdWU/IEkmIzM5O20gYWxyZWFkeSBmb3JtdWxhdGluZyBxdWVzdGlvbnMgaW4gbXkgaGVhZCBhYm91dCB0aGUgZGF0YSBmbG93IHdpdGhpbiBpdCwgdGhlIGludGVycnVwdCBoYW5kbGluZywgYW5kIGFueSBwb3RlbnRpYWwgY29udGV4dCBzd2l0Y2hlcyBpbnZvbHZlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDI6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtaHZfcnVuX3NpbmdsZV92Y3B1JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jPTQ3Mzg9c3RhdGljIGludCBrdm1wcGNfcnVuX3ZjcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNDg3My1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NDg3NDppbnQga3ZtaHZfcnVuX3NpbmdsZV92Y3B1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IHRpbWVfbGltaXQsXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQ4NzUtXHRcdFx0ICB1bnNpZ25lZCBsb25nIGxwY3IpXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYz01MDk1PXN0YXRpYyBpbnQga3ZtcHBjX3ZjcHVfcnVuX2h2KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTUxNzEtXHRcdGlmIChjcHVfaGFzX2ZlYXR1cmUoQ1BVX0ZUUl9BUkNIXzMwMCkpXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjUxNzI6XHRcdFx0ciA9IGt2bWh2X3J1bl9zaW5nbGVfdmNwdSh2Y3B1LCB+KHU2NCkwLFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01MTczLVx0XHRcdFx0XHRcdCAgdmNwdS1cdTAwM2VhcmNoLnZjb3JlLVx1MDAzZWxwY3IpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwMjoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDc2OAoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgS1ZNL1BQQyBMYW5kc2NhcGUqKgoKUmlnaHQsIHRoYXQgc2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaC4gQnV0IGFzIGFsd2F5cywgd2hlbiBJJiMzOTttIGRlYWxpbmcgd2l0aCBLVk0vUFBDLCBJIGltbWVkaWF0ZWx5IHN0YXJ0IGNvbnNpZGVyaW5nIHRoZSBpbXBsaWNhdGlvbnMuIFRoZSBvYnZpb3VzIHF1ZXN0aW9uIEkgaGF2ZSByaWdodCBub3cgaXM6IGhvdyBkb2VzIHRoaXMgcGxheSBvdXQgd2l0aGluIHRoZSBjb250ZXh0IG9mIGBrdm1wcGNfcnVuX2NvcmVgPyBJIG5lZWQgdG8gYW5hbHl6ZSBob3cgdGhpcyBjaGFuZ2UgaW1wYWN0cyB0aGF0IGNydWNpYWwgZnVuY3Rpb24gYW5kIGl0cyBpbnRlcmFjdGlvbiB3aXRoIHRoZSBicm9hZGVyIHN5c3RlbS4gSSBoYXZlIGEgZmVlbGluZyB0aGVyZSB3aWxsIGJlIGEgc3VidGxlIHBvaW50IEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSBpbiB0aGF0IGFyZWEsIG1heWJlIGEgcmFjZSBjb25kaXRpb24gb3IgYSBjb3JuZXIgY2FzZSBJIG5lZWQgdG8gYWNjb3VudCBmb3IuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDAyOjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bXBwY19ydW5fY29yZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYz0zNzU0PXN0YXRpYyB2b2lkIHNldF9pcnFfaGFwcGVuZWQoaW50IHRyYXApXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0zNzc1LSAqL1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzozNzc2OnN0YXRpYyBub2lubGluZSB2b2lkIGt2bXBwY19ydW5fY29yZShzdHJ1Y3Qga3ZtcHBjX3Zjb3JlICp2YylcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzc3Ny17XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00MDA0LVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo0MDA1Olx0dHJhY2Vfa3ZtcHBjX3J1bl9jb3JlKHZjLCAwKTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNDAwNi1cbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQwOTEtXHR2Yy1cdTAwM2V2Y29yZV9zdGF0ZSA9IFZDT1JFX0lOQUNUSVZFO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo0MDkyOlx0dHJhY2Vfa3ZtcHBjX3J1bl9jb3JlKHZjLCAxKTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNDA5My19XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYz00NzM4PXN0YXRpYyBpbnQga3ZtcHBjX3J1bl92Y3B1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQ4NDAtXHRcdH0gZWxzZSB7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjQ4NDE6XHRcdFx0a3ZtcHBjX3J1bl9jb3JlKHZjKTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNDg0Mi1cdFx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwMjoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTQyNgoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqS2VybmVsIFZpcnR1YWxpemF0aW9uIC0gRGl2aW5nIGludG8gdGhlIERldGFpbHMqKgoKWWVzLCB0aGF0JiMzOTtzIGV4YWN0bHkgd2hhdCBJIHdhcyB0aGlua2luZy4gV2UgYXJlIGluZGVlZCBkaXNjdXNzaW5nIHRoZSBmdW5kYW1lbnRhbCB3b3JraW5ncyBoZXJlLiBBbmQgc2luY2Ugd2UmIzM5O3JlIG9uIHRoZSB0b3BpYyBvZiB0aGUga2VybmVsLCBJIGltbWVkaWF0ZWx5IHN0YXJ0ZWQgY29uc2lkZXJpbmcgdGhlIGltcGxpY2F0aW9ucy4gVGhlIGxvZ2ljYWwgbmV4dCBzdGVwLCBpcyB0aGUgYGt2bXBwY19ydW5fdmNwdWAgZnVuY3Rpb24uIEkgYW0gYWx3YXlzIHRyeWluZyB0byB1bmRlcnN0YW5kIHRoZSBpbm5lciB3b3JraW5ncyBvZiB0aGUgc3lzdGVtIGFzIEkgY29uc2lkZXIgdGhlc2UgdGhpbmdzLiBTcGVjaWZpY2FsbHksIHdoZW4gd2UmIzM5O3JlIHRyeWluZyB0byBmaWd1cmUgb3V0IGlmIGl0IGlzIHRydWUsIG9yIHdoYXQgdGhlIHByb2Nlc3Mgc2hvdWxkIGxvb2sgbGlrZS4gVGhhdCYjMzk7cyB3aGVyZSB0aGluZ3MgZ2V0IGludGVyZXN0aW5nIGFuZCB3aGVyZSB0aGUgcmVhbCBvcHRpbWl6YXRpb24gb3Bwb3J0dW5pdGllcyBvZnRlbiBsaWUuIFdlIG5lZWQgdG8gYmUgY29uc2lkZXJpbmcgdGhlIGltcGxpY2F0aW9ucy4gSSB3b25kZXIgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBhc3BlY3RzIG9mIGl0cyBpbXBsZW1lbnRhdGlvbiB0aGF0IHdvdWxkIGJlIHJlbGV2YW50IHRvIHdoYXQgd2UgYXJlIGNvbnNpZGVyaW5nPwoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwMjoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1wcGNfcnVuX3ZjcHUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM9NDcxOT1zdGF0aWMgaW50IGt2bWh2X3NldHVwX21tdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00NzM3LVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo0NzM4OnN0YXRpYyBpbnQga3ZtcHBjX3J1bl92Y3B1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNDczOS17XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00NzQ0LVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo0NzQ1Olx0dHJhY2Vfa3ZtcHBjX3J1bl92Y3B1X2VudGVyKHZjcHUpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00NzQ2LVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNDg2OC1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NDg2OTpcdHRyYWNlX2t2bXBwY19ydW5fdmNwdV9leGl0KHZjcHUpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00ODcwLVx0c3Bpbl91bmxvY2soXHUwMDI2dmMtXHUwMDNlbG9jayk7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYz00ODc0PWludCBrdm1odl9ydW5fc2luZ2xlX3ZjcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgdGltZV9saW1pdCxcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQ4ODYtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjQ4ODc6XHR0cmFjZV9rdm1wcGNfcnVuX3ZjcHVfZW50ZXIodmNwdSk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQ4ODgtXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01MDgxLSBkb25lOlxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1MDgyOlx0dHJhY2Vfa3ZtcHBjX3J1bl92Y3B1X2V4aXQodmNwdSk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTUwODMtXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYz01MDk1PXN0YXRpYyBpbnQga3ZtcHBjX3ZjcHVfcnVuX2h2KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTUxNzQtXHRcdGVsc2VcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NTE3NTpcdFx0XHRyID0ga3ZtcHBjX3J1bl92Y3B1KHZjcHUpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01MTc2LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwMjoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjM1OAoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgS1ZNL1BQQyBFbnRyeSBQb2ludCoqCgpZZXMsIHRoYXQmIzM5O3MgcmlnaHQsIHRoZSBjb25maXJtYXRpb24gaXMgc29saWQuIEkmIzM5O20gb24gdGhlIHJpZ2h0IHRyYWNrLiBNeSBtaW5kIHRoZW4gaW1tZWRpYXRlbHkganVtcHMgdG8gYSBjcml0aWNhbCBzZWN0aW9uIG9mIGNvZGUuIFNwZWNpZmljYWxseSwgSSYjMzk7bSB0aGlua2luZyBhYm91dCBga3ZtcHBjX2NvcmVfcHJlcGFyZV90b19lbnRlcmAuIEl0JiMzOTtzIGEga2V5IGZ1bmN0aW9uIGluIHRoZSBLVk0vUFBDIGFyY2hpdGVjdHVyZSwgaXNuJiMzOTt0IGl0PyBJIG5lZWQgdG8gYW5hbHl6ZSBob3cgaXQgc2V0cyB0aGUgc3RhZ2UsIGhvdyBpdCBoYW5kbGVzIHRoZSB0cmFuc2l0aW9uIGZyb20gdGhlIGd1ZXN0IHRvIHRoZSBob3N0LCBlc3BlY2lhbGx5IGNvbnNpZGVyaW5nIHRoZSBwb3dlcnBjIGFyY2hpdGVjdHVyZSBudWFuY2VzLiBJJiMzOTttIHRyeWluZyB0byByZWNhbGwgdGhlIGRldGFpbHMgb2YgdGhlIGNvbnRleHQgc2F2ZS9yZXN0b3JlIGFuZCB3aGF0IHNhZmVndWFyZHMgaXQgcHV0cyBpbiBwbGFjZS4gSXQmIzM5O3MgdGltZSB0byByZWZyZXNoIHRoZSBjb3JlIGxvZ2ljOyBJJiMzOTt2ZSBnb3QgYSBzcGVjaWZpYyBpc3N1ZSBpbiBtaW5kIHRoYXQgY291bGQgYmUgYWRkcmVzc2VkIGJ5IHJlLWFzc2Vzc2luZyB0aGlzIGZ1bmN0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwMjoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1wcGNfY29yZV9wcmVwYXJlX3RvX2VudGVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9wb3dlcnBjL2t2bS9ib29rZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvcG93ZXJwYy9rdm0vYm9va2UuYz02OTA9c3RhdGljIHZvaWQga3ZtcHBjX2NvcmVfY2hlY2tfZXhjZXB0aW9ucyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rZS5jLTcwOS0vKiBDaGVjayBwZW5kaW5nIGV4Y2VwdGlvbnMgYW5kIGRlbGl2ZXIgb25lLCBpZiBwb3NzaWJsZS4gKi9cbmFyY2gvcG93ZXJwYy9rdm0vYm9va2UuYzo3MTA6aW50IGt2bXBwY19jb3JlX3ByZXBhcmVfdG9fZW50ZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rZS5jLTcxMS17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDAyOjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyNzU3CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMjgzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBLVk0gQ29uZmlndXJhdGlvbiBSZXF1aXJlbWVudHMgZm9yIFBvd2VyUEMgUGF0Y2gqKgoKT2theSwgeWVzLCB0aGlzIGlzIGEgbW9kaWZpY2F0aW9uIHRvIHRoZSBLVk0gZW50cnkvZXhpdCBwYXRocyBvbiBQb3dlclBDLCBnb3QgaXQuIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdG8gbGlzdCB0aGUgdHlwaWNhbCBLVk0gY29uZmlncyByZXF1aXJlZCwgbGlrZSBgS1ZNYCwgYEtWTV9CT09LM1NfNjRfSFZgLCBgS1ZNX0U1MDBWMmAsIGFuZCBgS1ZNX0U1MDBNQ2AuIFRoZW4gSSByZWFsaXplZCBgS1ZNYCBpcyBwcmV0dHkgZ2VuZXJpYywgYW5kIGBLVk1fQk9PSzNTXzY0X0hWYCBzZWVtcyBzcGVjaWZpYyB0byBgYm9vazNzX2h2LmNgLCBhbmQgZWl0aGVyIGBLVk1fRTUwMFYyYCBvciBgS1ZNX0U1MDBNQ2AgaXMgdGllZCB0byBgYm9va2UuY2AuIE9oLCBoYW5nIG9uLCB0aGVyZSYjMzk7cyBhbHNvIGBLVk1fQk9PS0VfSFZgIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQuCgpCdXQgd2FpdCwgdGhlIGluc3RydWN0aW9ucyBhcmUgdGVsbGluZyBtZSB0byBiZSAqc3BlY2lmaWMqLiBUaGV5JiMzOTtyZSBzYXlpbmcgZG9uJiMzOTt0IGxpc3QgZ2VuZXJpYyBjb25maWdzIHRoYXQgYXJlIHByb2JhYmx5IGFscmVhZHkgZW5hYmxlZC4gU28sIHRoZSBxdWVzdGlvbiBiZWNvbWVzLCB3aGljaCBjb25maWdzIGFyZSAqZGlyZWN0bHkqIHRpZWQgdG8gdGhlIG1vZGlmaWVkIGNvZGU/IEdpdmVuIHRoYXQsIEkmIzM5O20gdGhpbmtpbmcgSSBzaG91bGQgZm9jdXMgb24gYEtWTV9CT09LM1NfNjRfSFZgLCBgS1ZNX0U1MDBWMmAsIGBLVk1fRTUwME1DYCwgYW5kIGBLVk1fQk9PS0VfSFZgLiBCZWZvcmUgSSBjb21taXQgdG8gdGhhdCB0aG91Z2gsIEkgd2FudCB0byBkb3VibGUtY2hlY2sgYGFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGVgIG9uZSBtb3JlIHRpbWUgdG8gYmUgYWJzb2x1dGVseSBzdXJlIGFib3V0IGBib29rZS5jYC4gTmVlZCB0byBiZSBwcmVjaXNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwMjoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtib29rZS5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlPTE2PWt2bS1lNTAwLW9ianMgOj0gXFxcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlLTE4LVx0ZW11bGF0ZS5vIFxcXG5hcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlOjE5Olx0Ym9va2UubyBcXFxuYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZS0yMC1cdGJvb2tlX2VtdWxhdGUubyBcXFxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGU9Mjg9a3ZtLWU1MDBtYy1vYmpzIDo9IFxcXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZS0zMC1cdGVtdWxhdGUubyBcXFxuYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZTozMTpcdGJvb2tlLm8gXFxcbmFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGUtMzItXHRib29rZV9lbXVsYXRlLm8gXFxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDI6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM1OTYKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIGhvdyBJJiMzOTtkIGFwcHJvYWNoIHRoaXMgdGFzaywgYXMgaWYgdGhlc2Ugd2VyZSBteSBpbnRlcm5hbCB0aG91Z2h0czoKCioqQW5hbHl6aW5nIEtWTSBPYmplY3QgVHJpZ2dlcnMqKgoKUmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIHRoYXQgYXJlIHJlc3VsdGluZyBpbiB0aGUgYnVpbGQgb2YgYGt2bS1lNTAwLW9ianNgIGFuZCBga3ZtLWU1MDBtYy1vYmpzYC4gVGhpcyBpcyBmdW5kYW1lbnRhbCBmb3Igb3B0aW1pemluZyBhbmQgdW5kZXJzdGFuZGluZyBLVk0gZm9yIGU1MDAgYW5kIGU1MDBtYyBhcmNoaXRlY3R1cmVzLiBJIG5lZWQgdG8gdHJhY2UgdGhlIGRlcGVuZGVuY2llcyBhbmQgdW5kZXJzdGFuZCAqd2h5KiB0aG9zZSBzcGVjaWZpYyBvYmplY3QgZmlsZXMgYXJlIGJlaW5nIGluY2x1ZGVkLiBJcyBpdCBhIHBhcnRpY3VsYXIgZmVhdHVyZSBmbGFnLCBhIHNwZWNpZmljIGJvYXJkIGNvbmZpZ3VyYXRpb24sIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBUaW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eSBkaWdnaW5nIHRocm91Z2ggdGhlIG1ha2VmaWxlcywgY29uZmlnIG9wdGlvbnMsIGFuZCBrZXJuZWwgYnVpbGQgbG9ncy4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgY29uZGl0aW9uYWwgc3RhdGVtZW50cywgZGVwZW5kZW5jaWVzLCBhbmQgYW55dGhpbmcgdGhhdCBtaWdodCBzaGVkIGxpZ2h0IG9uIHRoZSB0cmlnZ2VyaW5nIG1lY2hhbmlzbS4gVWx0aW1hdGVseSwgSSB3YW50IHRvIGZvcm0gYSBjb21wbGV0ZSBtZW50YWwgbWFwIG9mIHRoZSBidWlsZCBwcm9jZXNzIGZvciB0aGVzZSBzcGVjaWZpYyBLVk0gb2JqZWN0IGZpbGVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwMjoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm0tZTUwMCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZT0xND1BRkxBR1NfYm9va2VfaW50ZXJydXB0cy5vIDo9IC1JJChvYmp0cmVlKS8kKG9iailcbmFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGUtMTUtXG5hcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlOjE2Omt2bS1lNTAwLW9ianMgOj0gXFxcbmFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGUtMTctXHQkKGNvbW1vbi1vYmpzLXkpIFxcXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZS0yNS1cdGU1MDBfZW11bGF0ZS5vXG5hcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlOjI2Omt2bS1vYmpzLSQoQ09ORklHX0tWTV9FNTAwVjIpIDo9ICQoa3ZtLWU1MDAtb2JqcylcbmFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGUtMjctXG5hcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlOjI4Omt2bS1lNTAwbWMtb2JqcyA6PSBcXFxuYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZS0yOS1cdCQoY29tbW9uLW9ianMteSkgXFxcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlLTM3LVx0ZTUwMF9lbXVsYXRlLm9cbmFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGU6Mzg6a3ZtLW9ianMtJChDT05GSUdfS1ZNX0U1MDBNQykgOj0gJChrdm0tZTUwMG1jLW9ianMpXG5hcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlLTM5LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwMjoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDIwMAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgYSBmaXJzdC1wZXJzb24gZXhwZXJ0IHN1bW1hcnk6CgoqKldvcmtpbmcgVGhyb3VnaCB0aGUgS1ZNIENvZGUqKgoKUmlnaHQsIHNvIEkmIzM5O20gZm9jdXNpbmcgb24gdGhlc2UgS1ZNIHZlcnNpb25zOiBgS1ZNX0U1MDBWMmAgYW5kIGBLVk1fRTUwME1DYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRpZmZlcmVuY2VzIGFuZCBpbXBsaWNhdGlvbnMgb2YgaG93IHRoZXNlIGFyZSBoYW5kbGVkLiBJdCYjMzk7cyBjcnVjaWFsIHRvIGlkZW50aWZ5IGFueSBwb3RlbnRpYWwgZGl2ZXJnZW5jZXMgaW4gdGhlIGNvZGUgcGF0aHMsIGVzcGVjaWFsbHkgd2l0aCByZWdhcmQgdG8gcGVyZm9ybWFuY2Ugb3Igc2VjdXJpdHkuIE15IHByaW1hcnkgY29uY2VybiBhdCB0aGlzIHBvaW50IGlzIGlzb2xhdGluZyB3aGF0IG1ha2VzIHRoZXNlIHZlcnNpb25zIHVuaXF1ZS4gVGhpcyBzdWdnZXN0cyB0byBtZSB0aGUgbmVlZCB0byBjcm9zcy1yZWZlcmVuY2UgYW5kIGRlZXBseSBleHBsb3JlIGhvdyB0aGUgYm9vazNzX2h2LmMgZmlsZSBpbnRlcmFjdHMgd2l0aCB0aGVzZSB0d28gS1ZNIGNvbmZpZ3VyYXRpb25zLiBUaGlzIGlzIGEgY3J1Y2lhbCBmaWxlLCBzaW5jZSBpdCBpcyB0aGUgJiMzNDtoeXBlcnZpc29yJiMzNDsgY29tcG9uZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwMjoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm0taHYteSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZT02MD1lbmRpZlxuYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZS02MS1cbmFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGU6NjI6a3ZtLWh2LXkgJiM0Mzs9IFxcXG5hcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlLTYzLVx0Ym9vazNzX2h2Lm8gXFxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDI6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ1MTkKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBga3ZtLWh2LXlgIFRyaWdnZXIqKgoKQWxyaWdodCwgdGhhdCYjMzk7cyBpbnRlcmVzdGluZy4gSSYjMzk7dmUgZ290IGEgbWVudGFsIGl0Y2ggbm93OiBXaGF0JiMzOTtzIHRoZSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIGl0ZW0sIG9yIHNldCBvZiBpdGVtcywgdGhhdCB1bHRpbWF0ZWx5IGNhdXNlcyB0aGUgc3lzdGVtIHRvIGVuYWJsZSB0aGUgYGt2bS1odi15YCBvcHRpb24/IEkmIzM5O20gaW1tZWRpYXRlbHkgdHJ5aW5nIHRvIGRyaWxsIGRvd24gdG8gdGhlIHJvb3QgY2F1c2UuIFRoaXMgaXNuJiMzOTt0IGp1c3QgYSBjYXN1YWwgb2JzZXJ2YXRpb247IGl0JiMzOTtzIGEgcHJvbXB0IGZvciBhIGRlZXBlciBkaXZlIGludG8gdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24uIEkmIzM5O20gYXNzdW1pbmcgdGhlcmUmIzM5O3MgYSBkZXBlbmRlbmN5IGNoYWluIOKAkyBwcm9iYWJseSBhIGNhc2NhZGUgb2YgY29uZGl0aW9uYWxzIOKAkyBsZWFkaW5nIHRvIHRoYXQgZmxhZyBiZWluZyBzZXQuIEl0JiMzOTtzIHRoZSBzdGFuZGFyZCBidWlsZCBjb25maWd1cmF0aW9uLCBzbyB0aGlzIGlzIGxpa2VseSBhIHN0YW5kYXJkLCBidXQgc3VidGxlLCBzZXQgb2YgZGVwZW5kZW5jaWVzIHRoYXQgSSBuZWVkIHRvIHRyYWNlLiBJIHdhbnQgdG8gaWRlbnRpZnkgdGhlIGNydWNpYWwga25vYnMgdGhhdCwgd2hlbiBhZGp1c3RlZCwgd291bGQgcmVzdWx0IGluIHRoZSBmbGFnIGJlaW5nIGVuYWJsZWQgb3IgZGlzYWJsZWQuIEtub3dpbmcgKndoeSogaXQmIzM5O3Mgc2V0IGlzIGtleSBmb3Igb3B0aW1pemF0aW9uIG9yIGRlYnVnZ2luZyBsYXRlci4gSXMgaXQgcmVsYXRlZCB0byBhIHNwZWNpZmljIENQVSBtb2RlbCwgYSBoeXBlcnZpc29yIHNldHRpbmcsIG9yIG1heWJlIGV2ZW4gYSBrZXJuZWwgdmVyc2lvbj8gSSYjMzk7bSBhbHJlYWR5IG1lbnRhbGx5IGZvcm1pbmcgYSBwbGFuIHRvIHVzZSBgZ3JlcGAsIGBmaW5kYCwgYW5kIHBvdGVudGlhbGx5IHRoZSBidWlsZCBzeXN0ZW0gaXRzZWxmIHRvIHRyYWNlIHRoZSBsb2dpYy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDI6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtLWh2LXkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGU9NjA9ZW5kaWZcbmFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGUtNjEtXG5hcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlOjYyOmt2bS1odi15ICYjNDM7PSBcXFxuYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZS02My1cdGJvb2szc19odi5vIFxcXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDAyOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0OTA4CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhhdCB0YXNrOgoKKipBbmFseXppbmcgdGhlIE1ha2VmaWxlIGZvciBga3ZtLWh2LXlgKioKCk9rYXksIGZpcnN0IHRoaW5ncyBmaXJzdCwgSSBuZWVkIHRvIGdldCBhIGNvbXByZWhlbnNpdmUgdmlldy4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byB0aG9yb3VnaGx5IHNjYW4gdGhlIGVudGlyZSBNYWtlZmlsZS4gSSYjMzk7bSBsb29raW5nIHNwZWNpZmljYWxseSBmb3IgdGhlIHByZXNlbmNlIGFuZCB1c2FnZSBvZiB0aGUgYGt2bS1odi15YCB2YXJpYWJsZS4gVGhpcyBtZWFucyBJJiMzOTttIG5vdCBqdXN0IHNlYXJjaGluZyBmb3IgdGhlIHN0cmluZyBpdHNlbGYsIGJ1dCBhbHNvIHVuZGVyc3RhbmRpbmcgaG93IGl0JiMzOTtzIGRlZmluZWQsIHdoZXJlIGl0JiMzOTtzIHJlZmVyZW5jZWQsIGFuZCB3aGF0IGl0IGNvbnRyb2xzIHdpdGhpbiB0aGUgYnVpbGQgcHJvY2Vzcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHNjb3BlIGFuZCBpbXBhY3QuIElzIGl0IGdsb2JhbD8gSXMgaXQgY29uZGl0aW9uYWw/IFdoYXQgb3RoZXIgdmFyaWFibGVzIG9yIHJ1bGVzIGRlcGVuZCBvbiBpdD8gSSYjMzk7bSBhbnRpY2lwYXRpbmcgcG90ZW50aWFsIGludGVyYWN0aW9ucyBhbmQgZGVwZW5kZW5jaWVzLiBUaGlzIGlzbiYjMzk7dCBqdXN0IGEgc2ltcGxlIGdyZXA7IEkmIzM5O20gYWltaW5nIGZvciBhIGRlZXAgdW5kZXJzdGFuZGluZyBvZiBpdHMgcm9sZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDI6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtLWh2LXkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGU9NjA9ZW5kaWZcbmFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGUtNjEtXG5hcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlOjYyOmt2bS1odi15ICYjNDM7PSBcXFxuYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZS02My1cdGJvb2szc19odi5vIFxcXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDAyOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1MjE3CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHRoYXQ6CgoqKkludmVzdGlnYXRpbmcgdGhlIEtWTSBNb2R1bGUgSW5jbHVzaW9uKioKClJpZ2h0LCBsZXQgbWUgcGF1c2UgYW5kIGdldCBteSBiZWFyaW5ncy4gVGhlIGtleSBxdWVzdGlvbiByaWdodCBub3cgaXMgKmhvdyogYGt2bS1odi15YCBpcyBnZXR0aW5nIGludGVncmF0ZWQgaW50byB0aGUgYnVpbGQgcHJvY2Vzcy4gSSBuZWVkIHRvIHRyYWNlIGl0cyBpbmNsdXNpb24sIHNwZWNpZmljYWxseSB3aGV0aGVyIGl0JiMzOTtzIGRpcmVjdGx5IGFkZGVkIHRvIGBvYmoteWAgKHRoZSBwcmltYXJ5IG9iamVjdCBsaXN0KSBvciB0byBga3ZtLW9ianNgIChsaWtlbHkgYSBtb3JlIHNwZWNpZmljIEtWTS1yZWxhdGVkIG9iamVjdCBsaXN0KS4gVW5kZXJzdGFuZGluZyB0aGlzIHdpbGwgcHJvdmlkZSBpbnNpZ2h0cyBpbnRvIGhvdyB0aGUgS1ZNIGh5cGVydmlzb3Igc3VwcG9ydCBpcyBiZWluZyBzdHJ1Y3R1cmVkIGFuZCBwb3RlbnRpYWxseSwgd2hlcmUgSSBuZWVkIHRvIGxvb2sgZm9yIHJlbGF0ZWQgY29kZSBvciBjb25maWd1cmF0aW9uLiBTbywgbXkgbmV4dCBzdGVwIGlzIGRlZmluaXRpdmVseSBmaWd1cmluZyBvdXQgdGhhdCBpbmNsdXNpb24gcGF0aC4gTGV0IG1lIGRlbHZlIGludG8gdGhlIGJ1aWxkIGZpbGVzIGFuZCBzZWUgd2hlcmUgdGhlIG1hZ2ljIGhhcHBlbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDAyOjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bS1odiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZT02MD1lbmRpZlxuYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZS02MS1cbmFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGU6NjI6a3ZtLWh2LXkgJiM0Mzs9IFxcXG5hcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlLTYzLVx0Ym9vazNzX2h2Lm8gXFxcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlLTY4LVxuYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZTo2OTprdm0taHYtJChDT05GSUdfUFBDX1VWKSAmIzQzOz0gXFxcbmFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGUtNzAtXHRib29rM3NfaHZfdXZtZW0ub1xuYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZS03MS1cbmFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGU6NzI6a3ZtLWh2LSQoQ09ORklHX1BQQ19UUkFOU0FDVElPTkFMX01FTSkgJiM0Mzs9IFxcXG5hcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlLTczLVx0Ym9vazNzX2h2X3RtLm9cbi0tXG5hcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlPTEzNT1vYmotJChDT05GSUdfS1ZNX0JPT0szU182NF9QUikgJiM0Mzs9IGt2bS1wci5vXG5hcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlOjEzNjpvYmotJChDT05GSUdfS1ZNX0JPT0szU182NF9IVikgJiM0Mzs9IGt2bS1odi5vXG5hcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlLTEzNy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDI6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU3NjMKCQkJCQkJCW91dHB1dDogMTc1CgkJCQkJCQl0aG91Z2h0czogMzYwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIEtWTSBvbiBQb3dlclBDIEhvdC1QYXRoIEZ1bmN0aW9ucyBmb3IgRnV6emluZyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBQb3dlclBDIEtWTSBjb2RlIGFuZCBpbW1lZGlhdGVseSBteSBhdHRlbnRpb24gaXMgZHJhd24gdG8gYEtWTV9CT09LM1NfNjRfSFZgLiBUaGF0JiMzOTtzIHRoZSBwcmltYXJ5IGNvbmZpZ3VyYXRpb24uIEkgYWxzbyBzZWUgYEtWTV9FNTAwVjJgIGFuZCBgS1ZNX0U1MDBNQ2AgaW4gdGhlIGNvbmZpZ3MsIHNvIHRoYXQgZ2l2ZXMgbWUgYSBoYW5kbGUuIFRoZSBrZXkgaGVyZSBpcyB0byBpZGVudGlmeSBob3QtcGF0aCBmdW5jdGlvbnMgcmlwZSBmb3IgZnV6emluZy4KCk15IGluaXRpYWwgdGhvdWdodCBpcyB0byBsaXN0IHRoZW0gYXMgdGhleSBhcmUgc3BlY2lmaWMgdG8gS1ZNIG9uIFBvd2VyUEMgYW5kIGFyZSBwcmVjaXNlbHkgd2hlcmUgdGhlIG1vZGlmaWNhdGlvbnMgYXJlIGhhcHBlbmluZy4gSSBhbSBpbW1lZGlhdGVseSB0aGlua2luZyBhYm91dCBga3ZtcHBjX3J1bl9jb3JlYCwgYGt2bXBwY19ydW5fdmNwdWAsIGBrdm1odl9ydW5fc2luZ2xlX3ZjcHVgLCBga3ZtcHBjX2NvcmVfcHJlcGFyZV90b19lbnRlcmAsIGFuZCBga3ZtcHBjX3ByZXBhcmVfdG9fZW50ZXJgLiBTcGVjaWZpY2FsbHksIGBrdm1wcGNfcnVuX2NvcmVgIGFuZCBga3ZtaHZfcnVuX3NpbmdsZV92Y3B1YCBqdW1wIG91dCBhcyBnb29kIGNhbmRpZGF0ZXMgZm9yIGZ1enppbmcgc2luY2UgdGhleSYjMzk7cmUgaW4gdGhlIGhvdCBwYXRoLiBMZXQmIzM5O3MgbWFrZSBzdXJlIHRob3NlIGFuZCB0aGUgb3RoZXIgdHdvIGFyZSBsaXN0ZWQ6IGBrdm1wcGNfcnVuX2NvcmVgLCBga3ZtaHZfcnVuX3NpbmdsZV92Y3B1YCwgYGt2bXBwY19jb3JlX3ByZXBhcmVfdG9fZW50ZXJgLCBga3ZtcHBjX3ByZXBhcmVfdG9fZW50ZXJgLgoKSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGFtIG5vdCBtaXNzaW5nIGFueSBjcml0aWNhbCBmdW5jdGlvbnMgb3IgYXJlYXMgdGhhdCBJIG1heSBuZWVkIHRvIGJlIGF3YXJlIG9mLgoKVGhlIHBhdGNoIGl0c2VsZiBtb2RpZmllcyBgYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuY2AsIGBhcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmNgLCBhbmQgYGFyY2gvcG93ZXJwYy9rdm0vcG93ZXJwYy5jYC4gVGhpcyBzdHJvbmdseSByZWluZm9yY2VzIG15IGRlY2lzaW9uIHRvIGZ1enogdGhpcyBjb2RlLiBJIGFtIGNvbmZpZGVudCBpdCYjMzk7cyB0aGUgcmlnaHQgY2hvaWNlLgoKTm93LCBsZXQmIzM5O3MgdmVyaWZ5IGlmIGBrdm1wcGNfcnVuX2NvcmVgIGlzIHN0YXRpYy4gWWVzLCBpdCBpcy4gSG93ZXZlciwgdGhhdCBpcyBub3QgYSBibG9ja2VyLiBTeXprYWxsZXIgY2FuIHN0aWxsIGZ1enogc3RhdGljIGZ1bmN0aW9ucywgc2luY2UgdGhleSBhcmUgaW4gdGhlIGtlcm5lbCBpbWFnZS4KCk5vdyBJIHJlbWVtYmVyLCBga3ZtcHBjX3ByZXBhcmVfdG9fZW50ZXJgIGlzIGV4cG9ydGVkLiBUaGF0JiMzOTtzIGdvb2QgbmV3cy4gVGltZSB0byBzZXQgdXAgdGhlIGZ1enppbmcgdGFyZ2V0cyBiYXNlZCBvbiB0aGlzIGFuYWx5c2lzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwMjoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+dGhlIGZvbGxvd2luZyBjb25maWdzIGRvIG5vdCBleGlzdCBpbiB0aGUga2VybmVsIHRyZWU6IEtWTV9CT09LM1NfNjRfSFYsIEtWTV9FNTAwVjIsIEtWTV9FNTAwTUM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNX0JPT0szU182NF9IViYjMzQ7LAogICAgJiMzNDtLVk1fRTUwMFYyJiMzNDssCiAgICAmIzM0O0tWTV9FNTAwTUMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1wcGNfcnVuX2NvcmUmIzM0OywKICAgICYjMzQ7a3ZtaHZfcnVuX3NpbmdsZV92Y3B1JiMzNDssCiAgICAmIzM0O2t2bXBwY19jb3JlX3ByZXBhcmVfdG9fZW50ZXImIzM0OywKICAgICYjMzQ7a3ZtcHBjX3ByZXBhcmVfdG9fZW50ZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgS1ZNIGVudHJ5L2V4aXQgbG9vcCBvbiBQb3dlclBDIHRvIHVzZSB0aGUgZ2VuZXJpYyB4ZmVyX3RvX2d1ZXN0X21vZGUgaGVscGVycy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBLVk0gZXhlY3V0aW9uIHBhdGggb24gUG93ZXJQQyBhbmQgc2hvdWxkIGJlIGZ1enplZCBieSBydW5uaW5nIEtWTSB3b3JrbG9hZHMgb24gUG93ZXJQQy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O3RoZSBmb2xsb3dpbmcgY29uZmlncyBkbyBub3QgZXhpc3QgaW4gdGhlIGtlcm5lbCB0cmVlOiBLVk1fQk9PSzNTXzY0X0hWLCBLVk1fRTUwMFYyLCBLVk1fRTUwME1DJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwMjoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjg0NAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQ29uZmlndXJhdGlvbiBEaWxlbW1hKioKCk9rYXksIGhvbGQgb24gYSBtaW51dGUuIFNvbWV0aGluZyYjMzk7cyBub3QgcmlnaHQuIFRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgSSB3YXMgZXhwZWN0aW5nLi4uIHRoZXkmIzM5O3JlIG5vdCBwcmVzZW50PyBUaGF0JiMzOTtzIHVuZXhwZWN0ZWQuIFRoaXMgY291bGQgYmUgYSBzaWduaWZpY2FudCBvdmVyc2lnaHQuIExldCBtZSBkb3VibGUtY2hlY2sgdGhlIEtjb25maWcgZmlsZSB3aXRoaW4gdGhlIFBvd2VyUEMgS1ZNIGFyY2hpdGVjdHVyZS4gU3BlY2lmaWNhbGx5LCBsZXQmIzM5O3MgcmV2aXNpdCBgYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnYC4gSSBuZWVkIHRvIGVuc3VyZSB0aGF0IEkmIzM5O20gbm90IG92ZXJsb29raW5nIGEgY29uZGl0aW9uYWwgaW5jbHVzaW9uIG9yIGEgZGVwZW5kZW5jeSB0aGF0IEkmIzM5O3ZlIG1pc3NlZC4gQSBkZWVwZXIgZGl2ZSBpcyByZXF1aXJlZCB0byBpZGVudGlmeSB0aGUgcm9vdCBjYXVzZSBvZiB0aGlzIG1pc3NpbmcgY29uZmlnLiBJdCBpcyBiZXN0IHRvIG5vdCB0YWtlIGFueXRoaW5nIGZvciBncmFudGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwMjoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgS1ZNXyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3Bvd2VycGMva3ZtL0tjb25maWc9MjA9Y29uZmlnIEtWTVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yNi1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoyNzpjb25maWcgS1ZNX0JPT0szU19IQU5ETEVSXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjgtXHRib29sXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjktXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MzA6Y29uZmlnIEtWTV9CT09LM1NfMzJfSEFORExFUlxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTMxLVx0Ym9vbFxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0zNC1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzozNTpjb25maWcgS1ZNX0JPT0szU182NF9IQU5ETEVSXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMzYtXHRib29sXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTM4LVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjM5OmNvbmZpZyBLVk1fQk9PSzNTX1BSX1BPU1NJQkxFXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctNDAtXHRib29sXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTQyLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjQzOmNvbmZpZyBLVk1fQk9PSzNTX0hWX1BPU1NJQkxFXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctNDQtXHRib29sXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctNDUtXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6NDY6Y29uZmlnIEtWTV9CT09LM1NfMzJcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy00Ny1cdHRyaXN0YXRlIFwmIzM0O0tWTSBzdXBwb3J0IGZvciBQb3dlclBDIGJvb2szc18zMiBwcm9jZXNzb3JzXCYjMzQ7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTYyLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjYzOmNvbmZpZyBLVk1fQk9PSzNTXzY0XG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctNjQtXHR0cmlzdGF0ZSBcJiMzNDtLVk0gc3VwcG9ydCBmb3IgUG93ZXJQQyBib29rM3NfNjQgcHJvY2Vzc29yc1wmIzM0O1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy03OS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzo4MDpjb25maWcgS1ZNX0JPT0szU182NF9IVlxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTgxLVx0dHJpc3RhdGUgXCYjMzQ7S1ZNIGZvciBQT1dFUjcgYW5kIGxhdGVyIHVzaW5nIGh5cGVydmlzb3IgbW9kZSBpbiBob3N0XCYjMzQ7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTEwMC1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxMDE6Y29uZmlnIEtWTV9CT09LM1NfNjRfUFJcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xMDItXHR0cmlzdGF0ZSBcJiMzNDtLVk0gc3VwcG9ydCB3aXRob3V0IHVzaW5nIGh5cGVydmlzb3IgbW9kZSBpbiBob3N0XCYjMzQ7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTEyNi1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxMjc6Y29uZmlnIEtWTV9CT09LM1NfSFZfRVhJVF9USU1JTkdcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xMjgtXHRib29sXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTI5LVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjEzMDpjb25maWcgS1ZNX0JPT0szU19IVl9QOV9USU1JTkdcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xMzEtXHRib29sIFwmIzM0O0RldGFpbGVkIHRpbWluZyBmb3IgdGhlIFA5IGVudHJ5IHBvaW50XCYjMzQ7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE0Mi1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxNDM6Y29uZmlnIEtWTV9CT09LM1NfSFZfUDhfVElNSU5HXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTQ0LVx0Ym9vbCBcJiMzNDtEZXRhaWxlZCB0aW1pbmcgZm9yIGh5cGVydmlzb3IgcmVhbC1tb2RlIGNvZGUgKGZvciBQT1dFUjgpXCYjMzQ7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE1Ny1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxNTg6Y29uZmlnIEtWTV9CT09LM1NfSFZfTkVTVEVEX1BNVV9XT1JLQVJPVU5EXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTU5LVx0Ym9vbCBcJiMzNDtOZXN0ZWQgTDAgaG9zdCB3b3JrYXJvdW5kIGZvciBMMSBLVk0gaG9zdCBQTVUgaGFuZGxpbmcgYnVnXCYjMzQ7IGlmIEVYUEVSVFxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xNzItXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MTczOmNvbmZpZyBLVk1fQk9PSzNTX0hWX1BNVVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE3NC1cdHRyaXN0YXRlIFwmIzM0O0h5cGVydmlzb3IgUGVyZiBldmVudHMgZm9yIEtWTSBCb29rM3MtSFZcJiMzNDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTg0LVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjE4NTpjb25maWcgS1ZNX0JPT0tFX0hWXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTg2LVx0Ym9vbFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE4Ny1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxODg6Y29uZmlnIEtWTV9FWElUX1RJTUlOR1xuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE4OS1cdGJvb2wgXCYjMzQ7RGV0YWlsZWQgZXhpdCB0aW1pbmdcJiMzNDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTk4LVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjE5OTpjb25maWcgS1ZNX0U1MDBWMlxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTIwMC1cdGJvb2wgXCYjMzQ7S1ZNIHN1cHBvcnQgZm9yIFBvd2VyUEMgRTUwMHYyIHByb2Nlc3NvcnNcJiMzNDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjEzLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjIxNDpjb25maWcgS1ZNX0U1MDBNQ1xuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTIxNS1cdGJvb2wgXCYjMzQ7S1ZNIHN1cHBvcnQgZm9yIFBvd2VyUEMgRTUwME1DL0U1NTAwL0U2NTAwIHByb2Nlc3NvcnNcJiMzNDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjI5LVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjIzMDpjb25maWcgS1ZNX01QSUNcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yMzEtXHRib29sIFwmIzM0O0tWTSBpbi1rZXJuZWwgTVBJQyBlbXVsYXRpb25cJiMzNDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjQxLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjI0Mjpjb25maWcgS1ZNX1hJQ1NcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yNDMtXHRib29sIFwmIzM0O0tWTSBpbi1rZXJuZWwgWElDUyBlbXVsYXRpb25cJiMzNDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjUxLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjI1Mjpjb25maWcgS1ZNX1hJVkVcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yNTMtXHRib29sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDAyOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4NTYxCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTYyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgTWlzc2luZyBLZXJuZWwgQ29uZmlndXJhdGlvbiBPcHRpb25zKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBrZXJuZWwgY29uZmlnczogYEtWTV9CT09LM1NfNjRfSFZgLCBgS1ZNX0U1MDBWMmAsIGFuZCBgS1ZNX0U1MDBNQ2AuIFRoZSBgc2V0LXJlc3VsdHNgIHRvb2wgaXMgY2xhaW1pbmcgdGhleSBkb24mIzM5O3QgZXhpc3QsIHdoaWNoIGlzIHN0cmFuZ2UuIEkgY291bGQgaGF2ZSBzd29ybiBJJiMzOTt2ZSBzZWVuIHRoZW0uICYjMzQ7VGhlIGZvbGxvd2luZyBjb25maWdzIGRvIG5vdCBleGlzdCBpbiB0aGUga2VybmVsIHRyZWU6IEtWTV9CT09LM1NfNjRfSFYsIEtWTV9FNTAwVjIsIEtWTV9FNTAwTUMmIzM0OyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aHkuCgpGaXJzdCwgbGV0IG1lIGNvbmZpcm0gdGhleSYjMzk7cmUgYWN0dWFsbHkgZGVmaW5lZC4gSSYjMzk7bGwgY2hlY2sgYGFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZ2AuIFl1cCwgdGhleSYjMzk7cmUgcmlnaHQgdGhlcmUsIGNsZWFyIGFzIGRheS4gVGhpcyBpcyBvZGQuIFdoeSB3b3VsZCB0aGUgdG9vbCByZXBvcnQgdGhlbSBhcyBtaXNzaW5nPwoKQWxyaWdodCwgcGVyaGFwcyBpdCYjMzk7cyBhIHNjb3BpbmcgaXNzdWUuIE1heWJlIGBhcmNoL3Bvd2VycGMva3ZtL0tjb25maWdgIGlzbiYjMzk7dCBiZWluZyBzb3VyY2VkIGNvcnJlY3RseSBmcm9tIHRoZSB0b3AtbGV2ZWwgY29uZmlndXJhdGlvbi4gSSYjMzk7bGwgcXVpY2tseSB2ZXJpZnkgdGhhdCBpdCYjMzk7cyBiZWluZyBpbmNsdWRlZCBwcm9wZXJseSBpbiB0aGUgS2NvbmZpZyBoaWVyYXJjaHkuIFRoaXMgaXMgd2hlcmUgdGhlIGlzc3VlIG11c3QgYmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDAyOjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NvdXJjZSBcJiMzNDthcmNoL3Bvd2VycGMva3ZtL0tjb25maWdcJiMzNDsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9wb3dlcnBjL0tjb25maWc9MTM0Mj1jb25maWcgUFBDX0xJQl9SSEVBUFxuLS1cbmFyY2gvcG93ZXJwYy9LY29uZmlnLTEzNDQtXG5hcmNoL3Bvd2VycGMvS2NvbmZpZzoxMzQ1OnNvdXJjZSBcJiMzNDthcmNoL3Bvd2VycGMva3ZtL0tjb25maWdcJiMzNDtcbmFyY2gvcG93ZXJwYy9LY29uZmlnLTEzNDYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDAyOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5MDk4CgkJCQkJCQlvdXRwdXQ6IDE0MwoJCQkJCQkJdGhvdWdodHM6IDIxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipEZWJ1Z2dpbmcgS2VybmVsIENvbmZpZ3VyYXRpb24gVG9vbCBPdXRwdXQqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgdG9vbCB0ZWxsaW5nIG1lIGNlcnRhaW4ga2VybmVsIGNvbmZpZ3VyYXRpb25zIGRvbiYjMzk7dCBleGlzdDogYEtWTV9CT09LM1NfNjRfSFZgLCBgS1ZNX0U1MDBWMmAsIGFuZCBgS1ZNX0U1MDBNQ2AuIFRoYXQmIzM5O3MuLi4gb2RkLiBJIGtub3cgdGhlc2Ugc2hvdWxkIGJlIHRoZXJlLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aHkgdGhlIHRvb2wgaXMgcmVwb3J0aW5nIHRoaXMuIExldCBtZSBkb3VibGUtY2hlY2sgdGhlIGV4YWN0IG91dHB1dCDigJMgSSBoYXZlIHRvIGJlIHByZWNpc2Ugd2hlbiBkZWJ1Z2dpbmcgdGhlc2Uga2luZHMgb2YgdGhpbmdzLiBBbHJpZ2h0LCAmIzM0O3RoZSBmb2xsb3dpbmcgY29uZmlncyBkbyBub3QgZXhpc3QgaW4gdGhlIGtlcm5lbCB0cmVlOiBLVk1fQk9PSzNTXzY0X0hWLCBLVk1fRTUwMFYyLCBLVk1fRTUwME1DJiMzNDsuIE9rYXksIHRoYXQmIzM5O3Mgd2hhdCBJIHRob3VnaHQuCgpNeSBpbml0aWFsIHRob3VnaHQgaXMgbWF5YmUgdGhlIHRvb2wgaGFzIHNvbWUgcXVpcmt5IGZvcm1hdCBleHBlY3RhdGlvbnMgZm9yIHRoZSBgS2NvbmZpZ2AgZmlsZXM/IEl0JiMzOTtzIHBvc3NpYmxlIGl0JiMzOTtzIGV4cGVjdGluZyBhIHNwZWNpZmljIHN5bnRheCBvciBzdHJ1Y3R1cmUuIEJ1dCB3YWl0Li4uIGlzIGl0IHBvc3NpYmxlIHRoYXQgYEtWTV9CT09LM1NfNjRfSFZgIGlzbiYjMzk7dCByZWxldmFudCB0byB4ODY/IElzIHRoZSB0b29sIHBlcmhhcHMgY2hlY2tpbmcgdGhlICp4ODYqIHBvcnRpb24gb2YgdGhlIGtlcm5lbCB0cmVlIGFuZCBhc3N1bWluZyB0aGUgY29uZmlncyBzaG91bGQgYmUgZGVmaW5lZCB0aGVyZT8gTm8sIHRoZSB0b29sIGNsYWltcyB0byBjaGVjayB0aGUgKmVudGlyZSogdHJlZS4gU28gdGhhdCBjYW4mIzM5O3QgYmUgaXQuCgpPa2F5LCBsZXQgbWUganVzdCBkb3VibGUtY2hlY2sgdGhlIHNvdXJjZSBmb3IgYEtWTV9CT09LM1NfNjRfSFZgLCBqdXN0IHRvIGJlIGNlcnRhaW4uIFNwZWNpZmljYWxseSwgYGFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZ2AuCmBgYApjb25maWcgS1ZNX0JPT0szU182NF9IVgoJdHJpc3RhdGUgJiMzNDtLVk0gZm9yIFBPV0VSNyBhbmQgbGF0ZXIgdXNpbmcgaHlwZXJ2aXNvciBtb2RlIGluIGhvc3QmIzM0OwpgYGAKSHVoLiBXZWxsLCB0aGVyZSBpdCBpcy4gQ2xlYXJseSwgdGhlIHRvb2wgaXMgd3JvbmcuIExldCBtZSBqdXN0IHRyeSBydW5uaW5nIGl0IGFnYWluIGZvciBgS1ZNYCwganVzdCB0byBlbnN1cmUgdGhhdCB0aGUgY29yZSBmdW5jdGlvbmFsaXR5IGlzIHdvcmtpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDAyOjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1wcGNfcnVuX2NvcmUmIzM0OywKICAgICYjMzQ7a3ZtaHZfcnVuX3NpbmdsZV92Y3B1JiMzNDssCiAgICAmIzM0O2t2bXBwY19jb3JlX3ByZXBhcmVfdG9fZW50ZXImIzM0OywKICAgICYjMzQ7a3ZtcHBjX3ByZXBhcmVfdG9fZW50ZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgS1ZNIGVudHJ5L2V4aXQgbG9vcCBvbiBQb3dlclBDIHRvIHVzZSB0aGUgZ2VuZXJpYyB4ZmVyX3RvX2d1ZXN0X21vZGUgaGVscGVycy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBLVk0gZXhlY3V0aW9uIHBhdGggb24gUG93ZXJQQyBhbmQgc2hvdWxkIGJlIGZ1enplZCBieSBydW5uaW5nIEtWTSB3b3JrbG9hZHMgb24gUG93ZXJQQy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtcHBjX3J1bl9jb3JlJiMzNDssCiAgICAmIzM0O2t2bWh2X3J1bl9zaW5nbGVfdmNwdSYjMzQ7LAogICAgJiMzNDtrdm1wcGNfY29yZV9wcmVwYXJlX3RvX2VudGVyJiMzNDssCiAgICAmIzM0O2t2bXBwY19wcmVwYXJlX3RvX2VudGVyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIEtWTSBlbnRyeS9leGl0IGxvb3Agb24gUG93ZXJQQyB0byB1c2UgdGhlIGdlbmVyaWMgeGZlcl90b19ndWVzdF9tb2RlIGhlbHBlcnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgS1ZNIGV4ZWN1dGlvbiBwYXRoIG9uIFBvd2VyUEMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgYnkgcnVubmluZyBLVk0gd29ya2xvYWRzIG9uIFBvd2VyUEMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwMjoyMzoyMy41MDE2NzU2MjdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjE2NDAyNzUzMjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtcHBjX3J1bl9jb3JlXCIsXG4gICAgXCJrdm1odl9ydW5fc2luZ2xlX3ZjcHVcIixcbiAgICBcImt2bXBwY19jb3JlX3ByZXBhcmVfdG9fZW50ZXJcIixcbiAgICBcImt2bXBwY19wcmVwYXJlX3RvX2VudGVyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgS1ZNIGVudHJ5L2V4aXQgbG9vcCBvbiBQb3dlclBDIHRvIHVzZSB0aGUgZ2VuZXJpYyB4ZmVyX3RvX2d1ZXN0X21vZGUgaGVscGVycy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBLVk0gZXhlY3V0aW9uIHBhdGggb24gUG93ZXJQQyBhbmQgc2hvdWxkIGJlIGZ1enplZCBieSBydW5uaW5nIEtWTSB3b3JrbG9hZHMgb24gUG93ZXJQQy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDI6MjM6MjMuNTAxNjg0MDM3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NzYwMzYzNzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAyYjYyMzE2Njg1OWJkMGEzMjlkNjI4MzFlM2ViODJlMTM5YmFkNWZiXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgSnVsIDEwIDAyOjIzOjIxIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9LY29uZmlnIGIvYXJjaC9wb3dlcnBjL0tjb25maWdcXG5pbmRleCBmN2NlNWZmZjgxZjAzZS4uNTE1NTVhMGIxYTI2MjQgMTAwNjQ0XFxuLS0tIGEvYXJjaC9wb3dlcnBjL0tjb25maWdcXG4rKysgYi9hcmNoL3Bvd2VycGMvS2NvbmZpZ1xcbkBAIC0yODEsNiArMjgxLDcgQEAgY29uZmlnIFBQQ1xcbiBcXHRzZWxlY3QgSEFWRV9QRVJGX1JFR1NcXG4gXFx0c2VsZWN0IEhBVkVfUEVSRl9VU0VSX1NUQUNLX0RVTVBcXG4gXFx0c2VsZWN0IEhBVkVfUFJFRU1QVF9EWU5BTUlDX0tFWVxcbitcXHRzZWxlY3QgSEFWRV9QT1NJWF9DUFVfVElNRVJTX1RBU0tfV09SS1xcbiBcXHRzZWxlY3QgSEFWRV9SRVRIT09LXFx0XFx0XFx0aWYgS1BST0JFU1xcbiBcXHRzZWxlY3QgSEFWRV9SRUdTX0FORF9TVEFDS19BQ0NFU1NfQVBJXFxuIFxcdHNlbGVjdCBIQVZFX1JFTElBQkxFX1NUQUNLVFJBQ0VcXG5kaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnIGIvYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnXFxuaW5kZXggOWEwZDFjMWFjYTZjODAuLmI2YmMyZmM4NmRjYTY3IDEwMDY0NFxcbi0tLSBhL2FyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZ1xcbisrKyBiL2FyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZ1xcbkBAIC0yMiw2ICsyMiw3IEBAIGNvbmZpZyBLVk1cXG4gXFx0c2VsZWN0IEtWTV9DT01NT05cXG4gXFx0c2VsZWN0IEtWTV9WRklPXFxuIFxcdHNlbGVjdCBIQVZFX0tWTV9JUlFfQllQQVNTXFxuK1xcdHNlbGVjdCBWSVJUX1hGRVJfVE9fR1VFU1RfV09SS1xcbiBcXG4gY29uZmlnIEtWTV9CT09LM1NfSEFORExFUlxcbiBcXHRib29sXFxuZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMgYi9hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jXFxuaW5kZXggNjFkYmVlYTMxN2YzYjcuLjNjZmU5YTdiZTljNmEwIDEwMDY0NFxcbi0tLSBhL2FyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmNcXG4rKysgYi9hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jXFxuQEAgLTM4NTMsNyArMzg1Myw4IEBAIHN0YXRpYyBub2lubGluZSB2b2lkIGt2bXBwY19ydW5fY29yZShzdHJ1Y3Qga3ZtcHBjX3Zjb3JlICp2YylcXG4gXFx0ICovXFxuIFxcdGxvY2FsX2lycV9kaXNhYmxlKCk7XFxuIFxcdGhhcmRfaXJxX2Rpc2FibGUoKTtcXG4tXFx0aWYgKGxhenlfaXJxX3BlbmRpbmcoKSB8fCBuZWVkX3Jlc2NoZWQoKSB8fFxcbitcXHR4ZmVyX3RvX2d1ZXN0X21vZGVfcHJlcGFyZSgpO1xcbitcXHRpZiAobGF6eV9pcnFfcGVuZGluZygpIHx8IHhmZXJfdG9fZ3Vlc3RfbW9kZV93b3JrX3BlbmRpbmcoKSB8fFxcbiBcXHQgICAgcmVjaGVja19zaWduYWxzX2FuZF9tbXUoXFx1MDAyNmNvcmVfaW5mbykpIHtcXG4gXFx0XFx0bG9jYWxfaXJxX2VuYWJsZSgpO1xcbiBcXHRcXHR2Yy1cXHUwMDNldmNvcmVfc3RhdGUgPSBWQ09SRV9JTkFDVElWRTtcXG5AQCAtNDgyNCwxMCArNDgyNSwxNiBAQCBzdGF0aWMgaW50IGt2bXBwY19ydW5fdmNwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuIFxcdFxcdHZjLVxcdTAwM2VydW5uZXIgPSB2Y3B1O1xcbiBcXHRcXHRpZiAobl9jZWRlZCA9PSB2Yy1cXHUwMDNlbl9ydW5uYWJsZSkge1xcbiBcXHRcXHRcXHRrdm1wcGNfdmNvcmVfYmxvY2tlZCh2Yyk7XFxuLVxcdFxcdH0gZWxzZSBpZiAobmVlZF9yZXNjaGVkKCkpIHtcXG4rXFx0XFx0fSBlbHNlIGlmIChfX3hmZXJfdG9fZ3Vlc3RfbW9kZV93b3JrX3BlbmRpbmcoKSkge1xcbiBcXHRcXHRcXHRrdm1wcGNfdmNvcmVfcHJlZW1wdCh2Yyk7XFxuLVxcdFxcdFxcdC8qIExldCBzb21ldGhpbmcgZWxzZSBydW4gKi9cXG4tXFx0XFx0XFx0Y29uZF9yZXNjaGVkX2xvY2soXFx1MDAyNnZjLVxcdTAwM2Vsb2NrKTtcXG4rXFx0XFx0XFx0LypcXG4rXFx0XFx0XFx0ICogTGV0IHNvbWV0aGluZyBlbHNlIHJ1bi4gVGhlIHJhdyBoZWxwZXIgaXMgdXNlZCBhc1xcbitcXHRcXHRcXHQgKiBzaWduYWwgZXhpdHMgYXJlIGFjY291bnRlZCBieSB0aGlzIHBhdGggYWxyZWFkeTtcXG4rXFx0XFx0XFx0ICogaXQgbWF5IHNjaGVkdWxlKCksIHNvIGRyb3AgdGhlIHZjb3JlIGxvY2suXFxuK1xcdFxcdFxcdCAqL1xcbitcXHRcXHRcXHRzcGluX3VubG9jayhcXHUwMDI2dmMtXFx1MDAzZWxvY2spO1xcbitcXHRcXHRcXHR4ZmVyX3RvX2d1ZXN0X21vZGVfaGFuZGxlX3dvcmsoKTtcXG4rXFx0XFx0XFx0c3Bpbl9sb2NrKFxcdTAwMjZ2Yy1cXHUwMDNlbG9jayk7XFxuIFxcdFxcdFxcdGlmICh2Yy1cXHUwMDNldmNvcmVfc3RhdGUgPT0gVkNPUkVfUFJFRU1QVClcXG4gXFx0XFx0XFx0XFx0a3ZtcHBjX3Zjb3JlX2VuZF9wcmVlbXB0KHZjKTtcXG4gXFx0XFx0fSBlbHNlIHtcXG5AQCAtNDg5NSwxMiArNDkwMiwxNiBAQCBpbnQga3ZtaHZfcnVuX3NpbmdsZV92Y3B1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IHRpbWVfbGltaXQsXFxuIFxcdFxcdFxcdHJ1bi1cXHUwMDNlZXhpdF9yZWFzb24gPSBLVk1fRVhJVF9GQUlMX0VOVFJZO1xcbiBcXHRcXHRcXHRydW4tXFx1MDAzZWZhaWxfZW50cnkuaGFyZHdhcmVfZW50cnlfZmFpbHVyZV9yZWFzb24gPSAwO1xcbiBcXHRcXHRcXHR2Y3B1LVxcdTAwM2VhcmNoLnJldCA9IHI7XFxuLVxcdFxcdFxcdHJldHVybiByO1xcbitcXHRcXHRcXHRnb3RvIGRvbmU7XFxuIFxcdFxcdH1cXG4gXFx0fVxcbiBcXG4tXFx0aWYgKG5lZWRfcmVzY2hlZCgpKVxcbi1cXHRcXHRjb25kX3Jlc2NoZWQoKTtcXG4rXFx0ciA9IGt2bV94ZmVyX3RvX2d1ZXN0X21vZGVfaGFuZGxlX3dvcmsodmNwdSk7XFxuK1xcdGlmIChyKSB7XFxuK1xcdFxcdC8qIC1FSU5UUjogc2lnbmFsIHBlbmRpbmcsIGV4aXQgdG8gdXNlcnNwYWNlIChLVk1fRVhJVF9JTlRSKSAqL1xcbitcXHRcXHR2Y3B1LVxcdTAwM2VhcmNoLnJldCA9IHI7XFxuK1xcdFxcdGdvdG8gZG9uZTtcXG4rXFx0fVxcbiBcXG4gXFx0a3ZtcHBjX3VwZGF0ZV92cGFzKHZjcHUpO1xcbiBcXG5AQCAtNDkxNCw5ICs0OTI1LDEzIEBAIGludCBrdm1odl9ydW5fc2luZ2xlX3ZjcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgdGltZV9saW1pdCxcXG4gXFxuIFxcdHZjcHUtXFx1MDAzZWFyY2guc3RhdGUgPSBLVk1QUENfVkNQVV9SVU5OQUJMRTtcXG4gXFxuLVxcdGlmIChzaWduYWxfcGVuZGluZyhjdXJyZW50KSlcXG4tXFx0XFx0Z290byBzaWdwZW5kO1xcbi1cXHRpZiAobmVlZF9yZXNjaGVkKCkgfHwgIWt2bS1cXHUwMDNlYXJjaC5tbXVfcmVhZHkpXFxuK1xcdHhmZXJfdG9fZ3Vlc3RfbW9kZV9wcmVwYXJlKCk7XFxuK1xcbitcXHQvKlxcbitcXHQgKiBJUlFzIGFyZSBkaXNhYmxlZCBoZXJlLCBzbyBvbiBwZW5kaW5nIHdvcmsgYmFpbCB0byB0aGUgb3V0ZXIgbG9vcCxcXG4rXFx0ICogd2hpY2ggaGFuZGxlcyBpdCB2aWEga3ZtX3hmZXJfdG9fZ3Vlc3RfbW9kZV9oYW5kbGVfd29yaygpIGFib3ZlLlxcbitcXHQgKi9cXG4rXFx0aWYgKHhmZXJfdG9fZ3Vlc3RfbW9kZV93b3JrX3BlbmRpbmcoKSB8fCAha3ZtLVxcdTAwM2VhcmNoLm1tdV9yZWFkeSlcXG4gXFx0XFx0Z290byBvdXQ7XFxuIFxcbiBcXHR2Y3B1LVxcdTAwM2VjcHUgPSBwY3B1O1xcbkBAIC01MDY4LDEwICs1MDgzLDYgQEAgaW50IGt2bWh2X3J1bl9zaW5nbGVfdmNwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCB0aW1lX2xpbWl0LFxcbiBcXG4gXFx0cmV0dXJuIHZjcHUtXFx1MDAzZWFyY2gucmV0O1xcbiBcXG4tIHNpZ3BlbmQ6XFxuLVxcdHZjcHUtXFx1MDAzZXN0YXQuc2lnbmFsX2V4aXRzKys7XFxuLVxcdHJ1bi1cXHUwMDNlZXhpdF9yZWFzb24gPSBLVk1fRVhJVF9JTlRSO1xcbi1cXHR2Y3B1LVxcdTAwM2VhcmNoLnJldCA9IC1FSU5UUjtcXG4gIG91dDpcXG4gXFx0dmNwdS1cXHUwMDNlY3B1ID0gLTE7XFxuIFxcdHZjcHUtXFx1MDAzZWFyY2gudGhyZWFkX2NwdSA9IC0xO1xcbmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmMgYi9hcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmNcXG5pbmRleCBmM2RkYjI0ZWNlNzQ5Zi4uNWZiYTE5OWRmZGQ2YTYgMTAwNjQ0XFxuLS0tIGEvYXJjaC9wb3dlcnBjL2t2bS9ib29rZS5jXFxuKysrIGIvYXJjaC9wb3dlcnBjL2t2bS9ib29rZS5jXFxuQEAgLTcyMiw2ICs3MjIsNyBAQCBpbnQga3ZtcHBjX2NvcmVfcHJlcGFyZV90b19lbnRlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuIFxcdGlmICh2Y3B1LVxcdTAwM2VhcmNoLnNoYXJlZC1cXHUwMDNlbXNyIFxcdTAwMjYgTVNSX1dFKSB7XFxuIFxcdFxcdGxvY2FsX2lycV9lbmFibGUoKTtcXG4gXFx0XFx0a3ZtX3ZjcHVfaGFsdCh2Y3B1KTtcXG4rXFx0XFx0bG9jYWxfaXJxX2Rpc2FibGUoKTtcXG4gXFx0XFx0aGFyZF9pcnFfZGlzYWJsZSgpO1xcbiBcXG4gXFx0XFx0a3ZtcHBjX3NldF9leGl0X3R5cGUodmNwdSwgRU1VTEFURURfTVRNU1JXRV9FWElUUyk7XFxuZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9rdm0vcG93ZXJwYy5jIGIvYXJjaC9wb3dlcnBjL2t2bS9wb3dlcnBjLmNcXG5pbmRleCAwMDMwMjM5OWZjMzdiNC4uYmU1ZTQ4YWUwYzZjMjEgMTAwNjQ0XFxuLS0tIGEvYXJjaC9wb3dlcnBjL2t2bS9wb3dlcnBjLmNcXG4rKysgYi9hcmNoL3Bvd2VycGMva3ZtL3Bvd2VycGMuY1xcbkBAIC04MSwyMyArODEsNDEgQEAgaW50IGt2bXBwY19wcmVwYXJlX3RvX2VudGVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4gXFx0aW50IHI7XFxuIFxcbiBcXHRXQVJOX09OKGlycXNfZGlzYWJsZWQoKSk7XFxuK1xcdC8qXFxuK1xcdCAqIGxvY2FsX2lycV9kaXNhYmxlKCkgZmlyc3Q6IG9uIDMyLWJpdCwgaGFyZF9pcnFfZGlzYWJsZSgpIGFsb25lIGlzIGFcXG4rXFx0ICogcmF3IE1TUltFRV0gY2xlYXIgdGhhdCBieXBhc3NlcyB0aGUgbG9ja2RlcC9pcnEtdHJhY2luZyBzdGF0ZSwgYW5kXFxuK1xcdCAqIHRoZSB4ZmVyX3RvX2d1ZXN0X21vZGUgaGVscGVycyBhc3NlcnQgSVJRcyBhcmUgc2VlbiBhcyBkaXNhYmxlZC5cXG4rXFx0ICovXFxuK1xcdGxvY2FsX2lycV9kaXNhYmxlKCk7XFxuIFxcdGhhcmRfaXJxX2Rpc2FibGUoKTtcXG4gXFxuIFxcdHdoaWxlICh0cnVlKSB7XFxuLVxcdFxcdGlmIChuZWVkX3Jlc2NoZWQoKSkge1xcbitcXHRcXHR4ZmVyX3RvX2d1ZXN0X21vZGVfcHJlcGFyZSgpO1xcbitcXG4rXFx0XFx0aWYgKHhmZXJfdG9fZ3Vlc3RfbW9kZV93b3JrX3BlbmRpbmcoKSkge1xcbitcXHRcXHRcXHQvKlxcbitcXHRcXHRcXHQgKiBUaGUgaGVscGVyIG11c3QgcnVuIHdpdGggSVJRcyBlbmFibGVkIGFuZCBtYXlcXG4rXFx0XFx0XFx0ICogc2NoZWR1bGUoKS4gT24gYSBwZW5kaW5nIHNpZ25hbCBpdCByZXR1cm5zIC1FSU5UUlxcbitcXHRcXHRcXHQgKiB3aXRoIHJ1bi1cXHUwMDNlZXhpdF9yZWFzb24gYW5kIHZjcHUtXFx1MDAzZXN0YXQuc2lnbmFsX2V4aXRzXFxuK1xcdFxcdFxcdCAqIGFscmVhZHkgc2V0LCBzbyBqdXN0IHJldHVybiB0byB1c2Vyc3BhY2UuXFxuK1xcdFxcdFxcdCAqL1xcbiBcXHRcXHRcXHRsb2NhbF9pcnFfZW5hYmxlKCk7XFxuLVxcdFxcdFxcdGNvbmRfcmVzY2hlZCgpO1xcbitcXHRcXHRcXHRyID0ga3ZtX3hmZXJfdG9fZ3Vlc3RfbW9kZV9oYW5kbGVfd29yayh2Y3B1KTtcXG4rXFx0XFx0XFx0bG9jYWxfaXJxX2Rpc2FibGUoKTtcXG4gXFx0XFx0XFx0aGFyZF9pcnFfZGlzYWJsZSgpO1xcbitcXHRcXHRcXHRpZiAocikge1xcbitcXHRcXHRcXHRcXHQvKlxcbitcXHRcXHRcXHRcXHQgKiBUaGUgZ2VuZXJpYyBoZWxwZXIgZG9lcyBub3Qgc2V0IHRoZSBleGl0XFxuK1xcdFxcdFxcdFxcdCAqIHR5cGU7IHJlY29yZCBpdCBmb3IgdGhlIEU1MDBcXG4rXFx0XFx0XFx0XFx0ICogQ09ORklHX0tWTV9FWElUX1RJTUlORyBoaXN0b2dyYW0gKGEgbm8tb3BcXG4rXFx0XFx0XFx0XFx0ICogb3RoZXJ3aXNlKS5cXG4rXFx0XFx0XFx0XFx0ICovXFxuK1xcdFxcdFxcdFxcdGt2bXBwY19zZXRfZXhpdF90eXBlKHZjcHUsIFNJR05BTF9FWElUUyk7XFxuK1xcdFxcdFxcdFxcdGJyZWFrO1xcbitcXHRcXHRcXHR9XFxuIFxcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXHRcXHR9XFxuIFxcbi1cXHRcXHRpZiAoc2lnbmFsX3BlbmRpbmcoY3VycmVudCkpIHtcXG4tXFx0XFx0XFx0a3ZtcHBjX2FjY291bnRfZXhpdCh2Y3B1LCBTSUdOQUxfRVhJVFMpO1xcbi1cXHRcXHRcXHR2Y3B1LVxcdTAwM2VydW4tXFx1MDAzZWV4aXRfcmVhc29uID0gS1ZNX0VYSVRfSU5UUjtcXG4tXFx0XFx0XFx0ciA9IC1FSU5UUjtcXG4tXFx0XFx0XFx0YnJlYWs7XFxuLVxcdFxcdH1cXG4tXFxuIFxcdFxcdHZjcHUtXFx1MDAzZW1vZGUgPSBJTl9HVUVTVF9NT0RFO1xcbiBcXG4gXFx0XFx0LypcXG5AQCAtMTE2LDYgKzEzNCw3IEBAIGludCBrdm1wcGNfcHJlcGFyZV90b19lbnRlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuIFxcdFxcdFxcdGxvY2FsX2lycV9lbmFibGUoKTtcXG4gXFx0XFx0XFx0dHJhY2Vfa3ZtX2NoZWNrX3JlcXVlc3RzKHZjcHUpO1xcbiBcXHRcXHRcXHRyID0ga3ZtcHBjX2NvcmVfY2hlY2tfcmVxdWVzdHModmNwdSk7XFxuK1xcdFxcdFxcdGxvY2FsX2lycV9kaXNhYmxlKCk7XFxuIFxcdFxcdFxcdGhhcmRfaXJxX2Rpc2FibGUoKTtcXG4gXFx0XFx0XFx0aWYgKHIgXFx1MDAzZSAwKVxcbiBcXHRcXHRcXHRcXHRjb250aW51ZTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDI6MjM6MjQuNDc5MzM5MTg4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNjA2NjI1OTk0NjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtcHBjX3J1bl9jb3JlXCIsXG4gICAgXCJrdm1odl9ydW5fc2luZ2xlX3ZjcHVcIixcbiAgICBcImt2bXBwY19jb3JlX3ByZXBhcmVfdG9fZW50ZXJcIixcbiAgICBcImt2bXBwY19wcmVwYXJlX3RvX2VudGVyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgS1ZNIGVudHJ5L2V4aXQgbG9vcCBvbiBQb3dlclBDIHRvIHVzZSB0aGUgZ2VuZXJpYyB4ZmVyX3RvX2d1ZXN0X21vZGUgaGVscGVycy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBLVk0gZXhlY3V0aW9uIHBhdGggb24gUG93ZXJQQyBhbmQgc2hvdWxkIGJlIGZ1enplZCBieSBydW5uaW5nIEtWTSB3b3JrbG9hZHMgb24gUG93ZXJQQy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAyYjYyMzE2Njg1OWJkMGEzMjlkNjI4MzFlM2ViODJlMTM5YmFkNWZiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMTAgMDI6MjM6MjEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvS2NvbmZpZyBiL2FyY2gvcG93ZXJwYy9LY29uZmlnXG5pbmRleCBmN2NlNWZmZjgxZjAzZS4uNTE1NTVhMGIxYTI2MjQgMTAwNjQ0XG4tLS0gYS9hcmNoL3Bvd2VycGMvS2NvbmZpZ1xuKysrIGIvYXJjaC9wb3dlcnBjL0tjb25maWdcbkBAIC0yODEsNiArMjgxLDcgQEAgY29uZmlnIFBQQ1xuIFx0c2VsZWN0IEhBVkVfUEVSRl9SRUdTXG4gXHRzZWxlY3QgSEFWRV9QRVJGX1VTRVJfU1RBQ0tfRFVNUFxuIFx0c2VsZWN0IEhBVkVfUFJFRU1QVF9EWU5BTUlDX0tFWVxuK1x0c2VsZWN0IEhBVkVfUE9TSVhfQ1BVX1RJTUVSU19UQVNLX1dPUktcbiBcdHNlbGVjdCBIQVZFX1JFVEhPT0tcdFx0XHRpZiBLUFJPQkVTXG4gXHRzZWxlY3QgSEFWRV9SRUdTX0FORF9TVEFDS19BQ0NFU1NfQVBJXG4gXHRzZWxlY3QgSEFWRV9SRUxJQUJMRV9TVEFDS1RSQUNFXG5kaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnIGIvYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnXG5pbmRleCA5YTBkMWMxYWNhNmM4MC4uYjZiYzJmYzg2ZGNhNjcgMTAwNjQ0XG4tLS0gYS9hcmNoL3Bvd2VycGMva3ZtL0tjb25maWdcbisrKyBiL2FyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZ1xuQEAgLTIyLDYgKzIyLDcgQEAgY29uZmlnIEtWTVxuIFx0c2VsZWN0IEtWTV9DT01NT05cbiBcdHNlbGVjdCBLVk1fVkZJT1xuIFx0c2VsZWN0IEhBVkVfS1ZNX0lSUV9CWVBBU1NcbitcdHNlbGVjdCBWSVJUX1hGRVJfVE9fR1VFU1RfV09SS1xuIFxuIGNvbmZpZyBLVk1fQk9PSzNTX0hBTkRMRVJcbiBcdGJvb2xcbmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jIGIvYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuY1xuaW5kZXggNjFkYmVlYTMxN2YzYjcuLjNjZmU5YTdiZTljNmEwIDEwMDY0NFxuLS0tIGEvYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuY1xuKysrIGIvYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuY1xuQEAgLTM4NTMsNyArMzg1Myw4IEBAIHN0YXRpYyBub2lubGluZSB2b2lkIGt2bXBwY19ydW5fY29yZShzdHJ1Y3Qga3ZtcHBjX3Zjb3JlICp2YylcbiBcdCAqL1xuIFx0bG9jYWxfaXJxX2Rpc2FibGUoKTtcbiBcdGhhcmRfaXJxX2Rpc2FibGUoKTtcbi1cdGlmIChsYXp5X2lycV9wZW5kaW5nKCkgfHwgbmVlZF9yZXNjaGVkKCkgfHxcbitcdHhmZXJfdG9fZ3Vlc3RfbW9kZV9wcmVwYXJlKCk7XG4rXHRpZiAobGF6eV9pcnFfcGVuZGluZygpIHx8IHhmZXJfdG9fZ3Vlc3RfbW9kZV93b3JrX3BlbmRpbmcoKSB8fFxuIFx0ICAgIHJlY2hlY2tfc2lnbmFsc19hbmRfbW11KFx1MDAyNmNvcmVfaW5mbykpIHtcbiBcdFx0bG9jYWxfaXJxX2VuYWJsZSgpO1xuIFx0XHR2Yy1cdTAwM2V2Y29yZV9zdGF0ZSA9IFZDT1JFX0lOQUNUSVZFO1xuQEAgLTQ4MjQsMTAgKzQ4MjUsMTYgQEAgc3RhdGljIGludCBrdm1wcGNfcnVuX3ZjcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIFx0XHR2Yy1cdTAwM2VydW5uZXIgPSB2Y3B1O1xuIFx0XHRpZiAobl9jZWRlZCA9PSB2Yy1cdTAwM2VuX3J1bm5hYmxlKSB7XG4gXHRcdFx0a3ZtcHBjX3Zjb3JlX2Jsb2NrZWQodmMpO1xuLVx0XHR9IGVsc2UgaWYgKG5lZWRfcmVzY2hlZCgpKSB7XG4rXHRcdH0gZWxzZSBpZiAoX194ZmVyX3RvX2d1ZXN0X21vZGVfd29ya19wZW5kaW5nKCkpIHtcbiBcdFx0XHRrdm1wcGNfdmNvcmVfcHJlZW1wdCh2Yyk7XG4tXHRcdFx0LyogTGV0IHNvbWV0aGluZyBlbHNlIHJ1biAqL1xuLVx0XHRcdGNvbmRfcmVzY2hlZF9sb2NrKFx1MDAyNnZjLVx1MDAzZWxvY2spO1xuK1x0XHRcdC8qXG4rXHRcdFx0ICogTGV0IHNvbWV0aGluZyBlbHNlIHJ1bi4gVGhlIHJhdyBoZWxwZXIgaXMgdXNlZCBhc1xuK1x0XHRcdCAqIHNpZ25hbCBleGl0cyBhcmUgYWNjb3VudGVkIGJ5IHRoaXMgcGF0aCBhbHJlYWR5O1xuK1x0XHRcdCAqIGl0IG1heSBzY2hlZHVsZSgpLCBzbyBkcm9wIHRoZSB2Y29yZSBsb2NrLlxuK1x0XHRcdCAqL1xuK1x0XHRcdHNwaW5fdW5sb2NrKFx1MDAyNnZjLVx1MDAzZWxvY2spO1xuK1x0XHRcdHhmZXJfdG9fZ3Vlc3RfbW9kZV9oYW5kbGVfd29yaygpO1xuK1x0XHRcdHNwaW5fbG9jayhcdTAwMjZ2Yy1cdTAwM2Vsb2NrKTtcbiBcdFx0XHRpZiAodmMtXHUwMDNldmNvcmVfc3RhdGUgPT0gVkNPUkVfUFJFRU1QVClcbiBcdFx0XHRcdGt2bXBwY192Y29yZV9lbmRfcHJlZW1wdCh2Yyk7XG4gXHRcdH0gZWxzZSB7XG5AQCAtNDg5NSwxMiArNDkwMiwxNiBAQCBpbnQga3ZtaHZfcnVuX3NpbmdsZV92Y3B1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IHRpbWVfbGltaXQsXG4gXHRcdFx0cnVuLVx1MDAzZWV4aXRfcmVhc29uID0gS1ZNX0VYSVRfRkFJTF9FTlRSWTtcbiBcdFx0XHRydW4tXHUwMDNlZmFpbF9lbnRyeS5oYXJkd2FyZV9lbnRyeV9mYWlsdXJlX3JlYXNvbiA9IDA7XG4gXHRcdFx0dmNwdS1cdTAwM2VhcmNoLnJldCA9IHI7XG4tXHRcdFx0cmV0dXJuIHI7XG4rXHRcdFx0Z290byBkb25lO1xuIFx0XHR9XG4gXHR9XG4gXG4tXHRpZiAobmVlZF9yZXNjaGVkKCkpXG4tXHRcdGNvbmRfcmVzY2hlZCgpO1xuK1x0ciA9IGt2bV94ZmVyX3RvX2d1ZXN0X21vZGVfaGFuZGxlX3dvcmsodmNwdSk7XG4rXHRpZiAocikge1xuK1x0XHQvKiAtRUlOVFI6IHNpZ25hbCBwZW5kaW5nLCBleGl0IHRvIHVzZXJzcGFjZSAoS1ZNX0VYSVRfSU5UUikgKi9cbitcdFx0dmNwdS1cdTAwM2VhcmNoLnJldCA9IHI7XG4rXHRcdGdvdG8gZG9uZTtcbitcdH1cbiBcbiBcdGt2bXBwY191cGRhdGVfdnBhcyh2Y3B1KTtcbiBcbkBAIC00OTE0LDkgKzQ5MjUsMTMgQEAgaW50IGt2bWh2X3J1bl9zaW5nbGVfdmNwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCB0aW1lX2xpbWl0LFxuIFxuIFx0dmNwdS1cdTAwM2VhcmNoLnN0YXRlID0gS1ZNUFBDX1ZDUFVfUlVOTkFCTEU7XG4gXG4tXHRpZiAoc2lnbmFsX3BlbmRpbmcoY3VycmVudCkpXG4tXHRcdGdvdG8gc2lncGVuZDtcbi1cdGlmIChuZWVkX3Jlc2NoZWQoKSB8fCAha3ZtLVx1MDAzZWFyY2gubW11X3JlYWR5KVxuK1x0eGZlcl90b19ndWVzdF9tb2RlX3ByZXBhcmUoKTtcbitcbitcdC8qXG4rXHQgKiBJUlFzIGFyZSBkaXNhYmxlZCBoZXJlLCBzbyBvbiBwZW5kaW5nIHdvcmsgYmFpbCB0byB0aGUgb3V0ZXIgbG9vcCxcbitcdCAqIHdoaWNoIGhhbmRsZXMgaXQgdmlhIGt2bV94ZmVyX3RvX2d1ZXN0X21vZGVfaGFuZGxlX3dvcmsoKSBhYm92ZS5cbitcdCAqL1xuK1x0aWYgKHhmZXJfdG9fZ3Vlc3RfbW9kZV93b3JrX3BlbmRpbmcoKSB8fCAha3ZtLVx1MDAzZWFyY2gubW11X3JlYWR5KVxuIFx0XHRnb3RvIG91dDtcbiBcbiBcdHZjcHUtXHUwMDNlY3B1ID0gcGNwdTtcbkBAIC01MDY4LDEwICs1MDgzLDYgQEAgaW50IGt2bWh2X3J1bl9zaW5nbGVfdmNwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCB0aW1lX2xpbWl0LFxuIFxuIFx0cmV0dXJuIHZjcHUtXHUwMDNlYXJjaC5yZXQ7XG4gXG4tIHNpZ3BlbmQ6XG4tXHR2Y3B1LVx1MDAzZXN0YXQuc2lnbmFsX2V4aXRzKys7XG4tXHRydW4tXHUwMDNlZXhpdF9yZWFzb24gPSBLVk1fRVhJVF9JTlRSO1xuLVx0dmNwdS1cdTAwM2VhcmNoLnJldCA9IC1FSU5UUjtcbiAgb3V0OlxuIFx0dmNwdS1cdTAwM2VjcHUgPSAtMTtcbiBcdHZjcHUtXHUwMDNlYXJjaC50aHJlYWRfY3B1ID0gLTE7XG5kaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2t2bS9ib29rZS5jIGIvYXJjaC9wb3dlcnBjL2t2bS9ib29rZS5jXG5pbmRleCBmM2RkYjI0ZWNlNzQ5Zi4uNWZiYTE5OWRmZGQ2YTYgMTAwNjQ0XG4tLS0gYS9hcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmNcbisrKyBiL2FyY2gvcG93ZXJwYy9rdm0vYm9va2UuY1xuQEAgLTcyMiw2ICs3MjIsNyBAQCBpbnQga3ZtcHBjX2NvcmVfcHJlcGFyZV90b19lbnRlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gXHRpZiAodmNwdS1cdTAwM2VhcmNoLnNoYXJlZC1cdTAwM2Vtc3IgXHUwMDI2IE1TUl9XRSkge1xuIFx0XHRsb2NhbF9pcnFfZW5hYmxlKCk7XG4gXHRcdGt2bV92Y3B1X2hhbHQodmNwdSk7XG4rXHRcdGxvY2FsX2lycV9kaXNhYmxlKCk7XG4gXHRcdGhhcmRfaXJxX2Rpc2FibGUoKTtcbiBcbiBcdFx0a3ZtcHBjX3NldF9leGl0X3R5cGUodmNwdSwgRU1VTEFURURfTVRNU1JXRV9FWElUUyk7XG5kaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2t2bS9wb3dlcnBjLmMgYi9hcmNoL3Bvd2VycGMva3ZtL3Bvd2VycGMuY1xuaW5kZXggMDAzMDIzOTlmYzM3YjQuLmJlNWU0OGFlMGM2YzIxIDEwMDY0NFxuLS0tIGEvYXJjaC9wb3dlcnBjL2t2bS9wb3dlcnBjLmNcbisrKyBiL2FyY2gvcG93ZXJwYy9rdm0vcG93ZXJwYy5jXG5AQCAtODEsMjMgKzgxLDQxIEBAIGludCBrdm1wcGNfcHJlcGFyZV90b19lbnRlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gXHRpbnQgcjtcbiBcbiBcdFdBUk5fT04oaXJxc19kaXNhYmxlZCgpKTtcbitcdC8qXG4rXHQgKiBsb2NhbF9pcnFfZGlzYWJsZSgpIGZpcnN0OiBvbiAzMi1iaXQsIGhhcmRfaXJxX2Rpc2FibGUoKSBhbG9uZSBpcyBhXG4rXHQgKiByYXcgTVNSW0VFXSBjbGVhciB0aGF0IGJ5cGFzc2VzIHRoZSBsb2NrZGVwL2lycS10cmFjaW5nIHN0YXRlLCBhbmRcbitcdCAqIHRoZSB4ZmVyX3RvX2d1ZXN0X21vZGUgaGVscGVycyBhc3NlcnQgSVJRcyBhcmUgc2VlbiBhcyBkaXNhYmxlZC5cbitcdCAqL1xuK1x0bG9jYWxfaXJxX2Rpc2FibGUoKTtcbiBcdGhhcmRfaXJxX2Rpc2FibGUoKTtcbiBcbiBcdHdoaWxlICh0cnVlKSB7XG4tXHRcdGlmIChuZWVkX3Jlc2NoZWQoKSkge1xuK1x0XHR4ZmVyX3RvX2d1ZXN0X21vZGVfcHJlcGFyZSgpO1xuK1xuK1x0XHRpZiAoeGZlcl90b19ndWVzdF9tb2RlX3dvcmtfcGVuZGluZygpKSB7XG4rXHRcdFx0LypcbitcdFx0XHQgKiBUaGUgaGVscGVyIG11c3QgcnVuIHdpdGggSVJRcyBlbmFibGVkIGFuZCBtYXlcbitcdFx0XHQgKiBzY2hlZHVsZSgpLiBPbiBhIHBlbmRpbmcgc2lnbmFsIGl0IHJldHVybnMgLUVJTlRSXG4rXHRcdFx0ICogd2l0aCBydW4tXHUwMDNlZXhpdF9yZWFzb24gYW5kIHZjcHUtXHUwMDNlc3RhdC5zaWduYWxfZXhpdHNcbitcdFx0XHQgKiBhbHJlYWR5IHNldCwgc28ganVzdCByZXR1cm4gdG8gdXNlcnNwYWNlLlxuK1x0XHRcdCAqL1xuIFx0XHRcdGxvY2FsX2lycV9lbmFibGUoKTtcbi1cdFx0XHRjb25kX3Jlc2NoZWQoKTtcbitcdFx0XHRyID0ga3ZtX3hmZXJfdG9fZ3Vlc3RfbW9kZV9oYW5kbGVfd29yayh2Y3B1KTtcbitcdFx0XHRsb2NhbF9pcnFfZGlzYWJsZSgpO1xuIFx0XHRcdGhhcmRfaXJxX2Rpc2FibGUoKTtcbitcdFx0XHRpZiAocikge1xuK1x0XHRcdFx0LypcbitcdFx0XHRcdCAqIFRoZSBnZW5lcmljIGhlbHBlciBkb2VzIG5vdCBzZXQgdGhlIGV4aXRcbitcdFx0XHRcdCAqIHR5cGU7IHJlY29yZCBpdCBmb3IgdGhlIEU1MDBcbitcdFx0XHRcdCAqIENPTkZJR19LVk1fRVhJVF9USU1JTkcgaGlzdG9ncmFtIChhIG5vLW9wXG4rXHRcdFx0XHQgKiBvdGhlcndpc2UpLlxuK1x0XHRcdFx0ICovXG4rXHRcdFx0XHRrdm1wcGNfc2V0X2V4aXRfdHlwZSh2Y3B1LCBTSUdOQUxfRVhJVFMpO1xuK1x0XHRcdFx0YnJlYWs7XG4rXHRcdFx0fVxuIFx0XHRcdGNvbnRpbnVlO1xuIFx0XHR9XG4gXG4tXHRcdGlmIChzaWduYWxfcGVuZGluZyhjdXJyZW50KSkge1xuLVx0XHRcdGt2bXBwY19hY2NvdW50X2V4aXQodmNwdSwgU0lHTkFMX0VYSVRTKTtcbi1cdFx0XHR2Y3B1LVx1MDAzZXJ1bi1cdTAwM2VleGl0X3JlYXNvbiA9IEtWTV9FWElUX0lOVFI7XG4tXHRcdFx0ciA9IC1FSU5UUjtcbi1cdFx0XHRicmVhaztcbi1cdFx0fVxuLVxuIFx0XHR2Y3B1LVx1MDAzZW1vZGUgPSBJTl9HVUVTVF9NT0RFO1xuIFxuIFx0XHQvKlxuQEAgLTExNiw2ICsxMzQsNyBAQCBpbnQga3ZtcHBjX3ByZXBhcmVfdG9fZW50ZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIFx0XHRcdGxvY2FsX2lycV9lbmFibGUoKTtcbiBcdFx0XHR0cmFjZV9rdm1fY2hlY2tfcmVxdWVzdHModmNwdSk7XG4gXHRcdFx0ciA9IGt2bXBwY19jb3JlX2NoZWNrX3JlcXVlc3RzKHZjcHUpO1xuK1x0XHRcdGxvY2FsX2lycV9kaXNhYmxlKCk7XG4gXHRcdFx0aGFyZF9pcnFfZGlzYWJsZSgpO1xuIFx0XHRcdGlmIChyIFx1MDAzZSAwKVxuIFx0XHRcdFx0Y29udGludWU7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwMjoyMzoyNC40NzkzNDI3MDhaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDEwMTIxNDUzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBvd2VyUEMgS1ZNIFBhdGNoIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIEkndmUgZ290IGEgcGF0Y2ggaGVyZSB0aGF0J3MgdG91Y2hpbmcgc29tZSBjb3JlIEtWTSBjb2RlIHNwZWNpZmljYWxseSBmb3IgUG93ZXJQQy4gSXQncyBtb2RpZnlpbmcgZmlsZXMgbGlrZSBgYm9vazNzX2h2LmNgLCBgYm9va2UuY2AsIGFuZCBgcG93ZXJwYy5jYCBpbiB0aGUgYGFyY2gvcG93ZXJwYy9rdm1gIGRpcmVjdG9yeS4gVGhlIHBhdGNoIGlzIGFsc28gYWRkaW5nIHNvbWUgYHNlbGVjdGAgc3RhdGVtZW50cyBpbiB0aGUgYEtjb25maWdgIGZpbGVzIOKAkyBgSEFWRV9QT1NJWF9DUFVfVElNRVJTX1RBU0tfV09SS2AgYW5kIGBWSVJUX1hGRVJfVE9fR1VFU1RfV09SS2AuIFRoZXNlIGBzZWxlY3RgIHN0YXRlbWVudHMgYXJlIGludGVyZXN0aW5nOyB0aGV5J3JlIHByb2JhYmx5IGVuYWJsaW5nIHNwZWNpZmljIGZlYXR1cmVzIG9yIGRlcGVuZGVuY2llcyB3aXRoaW4gdGhlIFBvd2VyUEMgS1ZNIGVudmlyb25tZW50LiBUaGUgcmVhbCBtZWF0IG9mIHRoZSBjaGFuZ2UsIHRob3VnaCwgc2VlbXMgdG8gYmUgcmVwbGFjaW5nIHRoZSBzdGFuZGFyZCBgbmVlZF9yZXNjaGVkKClgIGFuZCBgc2lnbmFsX3BlbmRpbmcoKWAgY2hlY2tzIHdpdGggdGhpcyBuZXcgYHhmZXJfdG9fZ3Vlc3RfbW9kZWAgbG9naWMgKGB4ZmVyX3RvX2d1ZXN0X21vZGVfcHJlcGFyZSgpYCwgYHhmZXJfdG9fZ3Vlc3RfbW9kZV93b3JrX3BlbmRpbmcoKWAsIGFuZCBga3ZtX3hmZXJfdG9fZ3Vlc3RfbW9kZV9oYW5kbGVfd29yaygpYCkuIFRoaXMgc3VnZ2VzdHMgYSBmdW5kYW1lbnRhbCBzaGlmdCBpbiBob3cgS1ZNIGhhbmRsZXMgZW50cnkgYW5kIGV4aXQgb24gUG93ZXJQQywgd2hpY2ggbWFrZXMgdGhpcyBwYXRjaCByaXBlIGZvciBhbmFseXNpcy5cblxuTXkgZmlyc3QgdGhvdWdodCBpcywgY2FuIHRoaXMgYmUgZnV6emVkPyBXZWxsLCBvYnZpb3VzbHksIGlmIHdlIGNhbiAqcnVuKiBQb3dlclBDIEtWTS4gU3l6a2FsbGVyLCBteSBnby10byBmdXp6aW5nIHRvb2wsIHR5cGljYWxseSBkb2Vzbid0IGF1dG9tYXRpY2FsbHkgdGFyZ2V0IFBvd2VyUEMgS1ZNIHVubGVzcyBpdCdzIGNvbmZpZ3VyZWQgdG8uIEkga25vdyBTeXprYWxsZXIgaGFzIHNvbWUgUG93ZXJQQyBzdXBwb3J0LCBzbyBtYXliZSBpdCdzIGFscmVhZHkgdGhlcmU/IFdhaXQsIHRoZSBxdWVzdGlvbiBhc2tzIG1lIHRvIGNvbnNpZGVyIHRoYXQgU3l6a2FsbGVyICpkb2VzKiBoYXZlIEtWTSBzdXBwb3J0LCBzbyBwZXJoYXBzIHRoaXMgaXMgYSBzaW1wbGVyIHRhc2sgdGhhbiBJIGZpcnN0IGJlbGlldmVkLiBUaGUgcHJvbXB0IGlzIGFsc28gcG9pbnRpbmcgb3V0IHRoYXQgY2VydGFpbiBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHNvbWUgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIGV2ZW4gUUVNVS4gVGhhdCdzIGEgZ29vZCByZW1pbmRlciB0byBiZSBhd2FyZSBvZiBteSBleGVjdXRpb24gZW52aXJvbm1lbnQuXG5cbkNhbiB3ZSByZWFjaCBQb3dlclBDIEtWTSBpbiBRRU1VPyBIbW0sIFFFTVUgZG9lcyBzdXBwb3J0IFBvd2VyUEMgS1ZNLCBidXQgdHlwaWNhbGx5IHJlcXVpcmVzIGEgUG93ZXJQQyBob3N0LiBPciBtYXliZSBuZXN0ZWQgS1ZNPyBUaGF0J3Mgd29ydGggcmVtZW1iZXJpbmcuIFRoZSBwcm9tcHQgYWxzbyByZW1pbmRzIG1lIHRoYXQgaWYgdGhlIHN5emthbGxlciBpbnN0YW5jZSBpcyBvbiB4ODYsIGl0ICp3b24ndCogYmUgYWJsZSB0byBkaXJlY3RseSBoaXQgUG93ZXJQQyBLVk0sIHJpZ2h0PyBCdXQgd2FpdCwgSSBrbm93IHN5emJvdCAqZG9lcyogaGF2ZSBQb3dlclBDIGluc3RhbmNlcy4gVGhhdCBpcyBhIGdhbWUgY2hhbmdlci4gRG9lcyBzeXpib3QgZnV6eiBLVk0gb24gUG93ZXJQQz8gSSBuZWVkIHRvIGxvb2sgaW50byB0aGF0LlxuXG5Pa2F5LCBsZXQncyByZWZvY3VzLiBJcyB0aGlzIHBhdGNoIGV2ZW4gd29ydGggZnV6emluZz8gSXQncyB0b3VjaGluZyBjb3JlIEtWTSBsb2dpYyBvbiBQb3dlclBDLiBZZXMsIGRlZmluaXRlbHkgd29ydGggdGhlIGVmZm9ydC4gSG93IHJlYWNoYWJsZSBpcyB0aGlzIGNvZGU/IEFoLCByaWdodCwgYC9kZXYva3ZtYCBpb2N0bHMsIHNwZWNpZmljYWxseSBgS1ZNX1JVTmAuIFRoYXQncyB0aGUgZW50cnkgcG9pbnQuIEkgbmVlZCB0byBpZGVudGlmeSB0aGUgc3BlY2lmaWMgZnVuY3Rpb25zIG1vZGlmaWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGNvZGUgcGF0aHMuIE9rYXksIGxldCdzIGxvb2sgZm9yIHRoZSBtb2RpZmllZCBmdW5jdGlvbnM6IGBrdm1wcGNfcnVuX2NvcmVgLCBga3ZtcHBjX3J1bl92Y3B1YCwgYGt2bWh2X3J1bl9zaW5nbGVfdmNwdWAsIGBrdm1wcGNfY29yZV9wcmVwYXJlX3RvX2VudGVyYCwgYW5kIGBrdm1wcGNfcHJlcGFyZV90b19lbnRlcmAuIFRoZXNlIGFyZSB0aGUga2V5IGZ1bmN0aW9ucyB0byB3YXRjaC5cblxuTmV4dCBzdGVwOiBsZXQncyBjaGVjayBLVk0gZW5hYmxlbWVudCBvbiBQb3dlclBDLiBUaGUgY29uZmlncyBJIHdhbnQgdG8gbG9vayBhdCBhcmUgYEtWTWAsIGBLVk1fQk9PSzNTXzY0YCwgYEtWTV9FNTAwVjJgLCBhbmQgYEtWTV9FNTAwTUNgLiBJIG5lZWQgdG8gZW5zdXJlIHRoZXNlIGFyZSBwcm9wZXJseSBlbmFibGVkLiBUaGUgcHJvbXB0IGFsc28gbWVudGlvbnMgXCJFbmFibGVDb25maWdzXCIgYW5kIFwiRm9jdXNTeW1ib2xzLFwiIHNvIEknbGwgbmVlZCB0byB1c2UgdGhvc2UgdG9vbHMgdG8gc3BlY2lmaWNhbGx5IGxvb2sgYXQgYGFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZ2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxNjAsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NDEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwMjoyMzozNC41ODA1NjAyMjFaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQyNTU5NjE2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBLVk1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xOS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MjA6Y29uZmlnIEtWTVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yMS1cXHRib29sXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjYtXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjI3OmNvbmZpZyBLVk1fQk9PSzNTX0hBTkRMRVJcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjgtXFx0Ym9vbFxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yOS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MzA6Y29uZmlnIEtWTV9CT09LM1NfMzJfSEFORExFUlxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0zMS1cXHRib29sXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMzQtXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjM1OmNvbmZpZyBLVk1fQk9PSzNTXzY0X0hBTkRMRVJcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMzYtXFx0Ym9vbFxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTM4LVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzozOTpjb25maWcgS1ZNX0JPT0szU19QUl9QT1NTSUJMRVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy00MC1cXHRib29sXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctNDItXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjQzOmNvbmZpZyBLVk1fQk9PSzNTX0hWX1BPU1NJQkxFXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTQ0LVxcdGJvb2xcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctNDUtXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjQ2OmNvbmZpZyBLVk1fQk9PSzNTXzMyXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTQ3LVxcdHRyaXN0YXRlIFxcXCJLVk0gc3VwcG9ydCBmb3IgUG93ZXJQQyBib29rM3NfMzIgcHJvY2Vzc29yc1xcXCJcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy02Mi1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6NjM6Y29uZmlnIEtWTV9CT09LM1NfNjRcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctNjQtXFx0dHJpc3RhdGUgXFxcIktWTSBzdXBwb3J0IGZvciBQb3dlclBDIGJvb2szc182NCBwcm9jZXNzb3JzXFxcIlxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTc5LVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzo4MDpjb25maWcgS1ZNX0JPT0szU182NF9IVlxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy04MS1cXHR0cmlzdGF0ZSBcXFwiS1ZNIGZvciBQT1dFUjcgYW5kIGxhdGVyIHVzaW5nIGh5cGVydmlzb3IgbW9kZSBpbiBob3N0XFxcIlxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTEwMC1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MTAxOmNvbmZpZyBLVk1fQk9PSzNTXzY0X1BSXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTEwMi1cXHR0cmlzdGF0ZSBcXFwiS1ZNIHN1cHBvcnQgd2l0aG91dCB1c2luZyBoeXBlcnZpc29yIG1vZGUgaW4gaG9zdFxcXCJcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xMjYtXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjEyNzpjb25maWcgS1ZNX0JPT0szU19IVl9FWElUX1RJTUlOR1xcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xMjgtXFx0Ym9vbFxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xMjktXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjEzMDpjb25maWcgS1ZNX0JPT0szU19IVl9QOV9USU1JTkdcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTMxLVxcdGJvb2wgXFxcIkRldGFpbGVkIHRpbWluZyBmb3IgdGhlIFA5IGVudHJ5IHBvaW50XFxcIlxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE0Mi1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MTQzOmNvbmZpZyBLVk1fQk9PSzNTX0hWX1A4X1RJTUlOR1xcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xNDQtXFx0Ym9vbCBcXFwiRGV0YWlsZWQgdGltaW5nIGZvciBoeXBlcnZpc29yIHJlYWwtbW9kZSBjb2RlIChmb3IgUE9XRVI4KVxcXCJcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xNTctXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjE1ODpjb25maWcgS1ZNX0JPT0szU19IVl9ORVNURURfUE1VX1dPUktBUk9VTkRcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTU5LVxcdGJvb2wgXFxcIk5lc3RlZCBMMCBob3N0IHdvcmthcm91bmQgZm9yIEwxIEtWTSBob3N0IFBNVSBoYW5kbGluZyBidWdcXFwiIGlmIEVYUEVSVFxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE3Mi1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MTczOmNvbmZpZyBLVk1fQk9PSzNTX0hWX1BNVVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xNzQtXFx0dHJpc3RhdGUgXFxcIkh5cGVydmlzb3IgUGVyZiBldmVudHMgZm9yIEtWTSBCb29rM3MtSFZcXFwiXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTg0LVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxODU6Y29uZmlnIEtWTV9CT09LRV9IVlxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xODYtXFx0Ym9vbFxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xODctXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjE4ODpjb25maWcgS1ZNX0VYSVRfVElNSU5HXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE4OS1cXHRib29sIFxcXCJEZXRhaWxlZCBleGl0IHRpbWluZ1xcXCJcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xOTgtXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjE5OTpjb25maWcgS1ZNX0U1MDBWMlxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yMDAtXFx0Ym9vbCBcXFwiS1ZNIHN1cHBvcnQgZm9yIFBvd2VyUEMgRTUwMHYyIHByb2Nlc3NvcnNcXFwiXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjEzLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoyMTQ6Y29uZmlnIEtWTV9FNTAwTUNcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjE1LVxcdGJvb2wgXFxcIktWTSBzdXBwb3J0IGZvciBQb3dlclBDIEU1MDBNQy9FNTUwMC9FNjUwMCBwcm9jZXNzb3JzXFxcIlxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTIyOS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MjMwOmNvbmZpZyBLVk1fTVBJQ1xcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yMzEtXFx0Ym9vbCBcXFwiS1ZNIGluLWtlcm5lbCBNUElDIGVtdWxhdGlvblxcXCJcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yNDEtXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjI0Mjpjb25maWcgS1ZNX1hJQ1NcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjQzLVxcdGJvb2wgXFxcIktWTSBpbi1rZXJuZWwgWElDUyBlbXVsYXRpb25cXFwiXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjUxLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoyNTI6Y29uZmlnIEtWTV9YSVZFXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTI1My1cXHRib29sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDAyOjIzOjM0LjcyMzEyNzk3NloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwNjIyMzYyMjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBLVk0gUG93ZXJQQyBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmNgLCBgYXJjaC9wb3dlcnBjL2t2bS9ib29rZS5jYCwgYW5kIGBhcmNoL3Bvd2VycGMva3ZtL3Bvd2VycGMuY2AuIFJpZ2h0LCB0eXBpY2FsIEtWTSBmaWxlIG1vZGlmaWNhdGlvbnMgb24gUG93ZXJQQy4gTGV0J3Mgc2VlLCB0aGUgS1ZNIGNvbmZpZ3MgaW4gcGxheSBoZXJlIGFyZSBgS1ZNYCwgYEtWTV9CT09LM1NfNjRfSFZgLCBgS1ZNX0JPT0szU182NF9QUmAsIGBLVk1fQk9PSzNTXzMyYCwgYEtWTV9FNTAwVjJgLCBhbmQgYEtWTV9FNTAwTUNgLiBXYWl0IGEgc2Vjb25k4oCmIGBib29rM3NfaHYuY2AgaXMgc3BlY2lmaWNhbGx5IGNvbXBpbGVkIHdoZW4gYEtWTV9CT09LM1NfNjRfSFZgIGlzIGVuYWJsZWQuIEkgc2hvdWxkIHByb2JhYmx5IGRvdWJsZSBjaGVjayB0aGF0IG1ha2VmaWxlIHRvIGJlIHN1cmUgdGhlIGRlcGVuZGVuY2llcyBhcmUgYXMgSSBleHBlY3QuIE9rYXksIGxldCdzIGxvb2sgYXQgYGFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGVgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MjA2LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTY5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDAyOjIzOjM4Ljc4NTM2OTAwM1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzAzMTU4NjY2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJvb2szc19odi5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZT02Mj1rdm0taHYteSArPSBcXFxcXFxuYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZTo2MzpcXHRib29rM3NfaHYubyBcXFxcXFxuYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZS02NC1cXHRib29rM3NfaHZfaW50ZXJydXB0cy5vIFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDI6MjM6NDAuNDg4NTc3MjA4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDEyNzM0MDkzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gdGhlIFBvd2VyUEMgS1ZNIEltcGxlbWVudGF0aW9uKipcblxuQWxyaWdodCwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgUG93ZXJQQyBLVk0gaHlwZXJ2aXNvciBzcGVjaWZpY3MuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIGBhcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlYC4gVGhhdCdzIHRoZSB1c3VhbCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyB3aGljaCBwYXJ0cyBvZiB0aGUgS1ZNIGluZnJhc3RydWN0dXJlIGFyZSBiZWluZyBjb21waWxlZCBhbmQgaW50ZWdyYXRlZCBmb3IgdGhpcyBhcmNoaXRlY3R1cmUuIEknbSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RlZCBpbiBzZWVpbmcgaG93IHRoZSBoeXBlcnZpc29yIGl0c2VsZiBpcyBicm91Z2h0IGludG8gdGhlIGJ1aWxkIHByb2Nlc3M7IHRoYXQncyB3aGVyZSBJIGV4cGVjdCB0byBmaW5kIHRoZSBkZWZpbml0aW9uIG9mIGBrdm0taHYteWAsIG9yIHNvbWV0aGluZyBlcXVpdmFsZW50LiBUaGF0IHZhcmlhYmxlIHdpbGwgZ2l2ZSBtZSBhIGNsdWUgYXMgdG8gd2hpY2ggc3BlY2lmaWMgc291cmNlIGZpbGVzIGFyZSBjb25zaWRlcmVkIGVzc2VudGlhbCB0byB0aGUgS1ZNIGltcGxlbWVudGF0aW9uLiBGcm9tIHRoZXJlLCBJJ2xsIGJlIGFibGUgdG8gd29yayB0aHJvdWdoIHRoZSBkZXRhaWxzLlxuXG5UaGVuLCBJJ20gZ29pbmcgdG8gdHVybiBteSBhdHRlbnRpb24gdG8gYGJvb2tlLmNgIHdoaWNoLCBpZiBJIHJlY2FsbCBjb3JyZWN0bHksIGlzIGNyaXRpY2FsIGZvciB0aGUgQm9vay1FIGFyY2hpdGVjdHVyZS4gSSdsbCBuZWVkIHRvIHNlZSBob3cgdGhlIGNvZGUgaGFuZGxlcyBjcml0aWNhbCBmdW5jdGlvbnMgc3VjaCBhcyBleGNlcHRpb24gdmVjdG9yIG1hbmFnZW1lbnQsIGludGVycnVwdCBoYW5kbGluZywgYW5kIGFueSBvdGhlciBCb29rLUUgc3BlY2lmaWMgZmVhdHVyZXMgdGhhdCBhcmUgcmVxdWlyZWQgZm9yIEtWTSB0byBmdW5jdGlvbiBjb3JyZWN0bHkuIFRoaXMgaXMgd2hlcmUgSSdsbCBwcm9iYWJseSBmaW5kIHRoZSBrZXkgaW50ZXJhY3Rpb25zIGJldHdlZW4gdGhlIGh5cGVydmlzb3IgYW5kIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NzE0LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDI6MjM6NDQuNjE1OTIwNjk0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1OTc2NjE2MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJib29rZS5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZT0xNj1rdm0tZTUwMC1vYmpzIDo9IFxcXFxcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGUtMTgtXFx0ZW11bGF0ZS5vIFxcXFxcXG5hcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlOjE5OlxcdGJvb2tlLm8gXFxcXFxcbmFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGUtMjAtXFx0Ym9va2VfZW11bGF0ZS5vIFxcXFxcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGU9Mjg9a3ZtLWU1MDBtYy1vYmpzIDo9IFxcXFxcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGUtMzAtXFx0ZW11bGF0ZS5vIFxcXFxcXG5hcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlOjMxOlxcdGJvb2tlLm8gXFxcXFxcbmFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGUtMzItXFx0Ym9va2VfZW11bGF0ZS5vIFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDI6MjM6NDUuMTc1NjkzMjE4WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzIyNDMyNjcyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCdzIHBlcnNwZWN0aXZlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBQb3dlclBDIEtWTSBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgbGV0J3Mgc2VlLCBJJ20gdGhpbmtpbmcgYWJvdXQgdGhvc2Ugc3BlY2lmaWMgS1ZNIGNvbmZpZ3VyYXRpb25zOiBgS1ZNX0JPT0szU182NF9IVmAgYW5kIHRoZW4gZWl0aGVyIGBLVk1fRTUwMFYyYCBvciBgS1ZNX0U1MDBNQ2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGVzZSBhcmUgc2V0IHVwLiBBaCwgcmlnaHQsIHRoZSBgYXJjaC9wb3dlcnBjL2t2bS9wb3dlcnBjLmNgIGZpbGUgaXMgY29tcGlsZWQgZm9yICphbGwqIEtWTSBpbXBsZW1lbnRhdGlvbnMgb24gUG93ZXJQQyBhcmNoaXRlY3R1cmVzLiBUaGF0IG1ha2VzIHNlbnNlLCBhIGNvbW1vbiBlbnRyeSBwb2ludC4gT2theSwgbm93IEkgbmVlZCB0byBjaGVjayB0aGUgS1ZNIE1ha2VmaWxlIGluIHRoZSBQb3dlclBDIGFyY2hpdGVjdHVyZSBkaXJlY3RvcnkuIEknbGwgbmVlZCB0byBjb25maXJtIHRoYXQgYHBvd2VycGMub2AgaXMgaW5kZWVkIGxpc3RlZCB0aGVyZSwgdG8gdW5kZXJzdGFuZCBob3cgdGhvc2UgY29uZmlndXJhdGlvbnMgZ2V0IHdpcmVkIHVwIGludG8gdGhlIEtWTSBidWlsZCBwcm9jZXNzLiBUaGF0IE1ha2VmaWxlIGlzIG15IG5leHQgc3RvcC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODI0NCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDAyOjIzOjQ4LjQwMDAyMjI0WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDU3MDA5NDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicG93ZXJwYy5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZT04PWluY2x1ZGUgJChzcmN0cmVlKS92aXJ0L2t2bS9NYWtlZmlsZS5rdm1cXG5hcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlLTktXFxuYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZToxMDpjb21tb24tb2Jqcy15ICs9IHBvd2VycGMubyBlbXVsYXRlX2xvYWRzdG9yZS5vXFxuYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZS0xMS1vYmotJChDT05GSUdfS1ZNX0VYSVRfVElNSU5HKSArPSB0aW1pbmcub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwMjoyMzo0OC41MDU3Mjk2NjJaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTMxODY2Mjc3NTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEtWTSBQb3dlclBDIFBhdGNoIGZvciBGdXp6aW5nIEZvY3VzKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBhbGwgYWJvdXQgS1ZNIGNvbmZpZ3VyYXRpb24sIHNwZWNpZmljYWxseSBmb3IgUG93ZXJQQy4gSXQgbG9va3MgbGlrZSB0aGUgY29yZSBjaGFuZ2UgaW52b2x2ZXMgdXBkYXRpbmcgdGhlIEtWTSBlbnRyeS9leGl0IGxvb3AuIEl0J3Mgc3dhcHBpbmcgb3V0IHRoZSBvbGQgYG5lZWRfcmVzY2hlZCgpYCBhbmQgYHNpZ25hbF9wZW5kaW5nKClgIGNoZWNrcyB3aXRoIHRoZSBuZXcgYHhmZXJfdG9fZ3Vlc3RfbW9kZWAgaGVscGVycy4gRnVuY3Rpb25hbGx5LCB0aGlzIGlzIHNpZ25pZmljYW50IGJlY2F1c2UgaXQncyByZXBsYWNpbmcgaG93IHRoZSBWQ1BVIGhhbmRsZXMgd29yayBhbmQgcmVzY2hlZHVsaW5nLiBUaGlzIHdob2xlIHRoaW5nIGlzIHRyaWdnZXJlZCBieSB0aGUgYEtWTV9SVU5gIGlvY3RsLCBzbyBpdCdzIGRpcmVjdGx5IGltcGFjdGluZyBob3cgdGhlIFZNIGFjdHVhbGx5IHJ1bnMuXG5cbk5vdywgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggZnVuY3Rpb25zIGFyZSB3b3J0aCBmb2N1c2luZyBvbiBmb3IgZnV6emluZy4gVGhlIHByb21wdCBzYXlzIHRvIGF2b2lkIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIGtlZXAgdGhlIHRlc3RzIGZyb20gYmVpbmcgc2tld2VkLiBMZXQncyBzZWUuLi4gdGhlIHBhdGNoIGlzIHRvdWNoaW5nIGBrdm1wcGNfcnVuX2NvcmVgLCBga3ZtcHBjX3J1bl92Y3B1YCwgYGt2bWh2X3J1bl9zaW5nbGVfdmNwdWAsIGBrdm1wcGNfY29yZV9wcmVwYXJlX3RvX2VudGVyYCwgYW5kIGBrdm1wcGNfcHJlcGFyZV90b19lbnRlcmAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGFsbCBvZiB0aG9zZSBhcmUgaG90LXBhdGggZnVuY3Rpb25zLCBlc3BlY2lhbGx5IGBrdm1odl9ydW5fc2luZ2xlX3ZjcHVgIHdoaWNoIGlzIHRoZSBtYWluIGxvb3AgZm9yIFZDUFUgZXhlY3V0aW9uLiBga3ZtcHBjX3J1bl9jb3JlYCwgYGt2bXBwY19ydW5fdmNwdWAsIGBrdm1wcGNfcHJlcGFyZV90b19lbnRlcmAgYW5kIGBrdm1wcGNfY29yZV9wcmVwYXJlX3RvX2VudGVyYCBhcmUgYWxsIHBhcnRzIG9mIHRoZSBWQ1BVIHJ1biBsb29wIGFzIHdlbGwuXG5cblNpbmNlICphbGwqIHRoZSBtb2RpZmllZCBmdW5jdGlvbnMgYXBwZWFyIHRvIGJlIGhvdC1wYXRoLCBpdCB3b3VsZCBpbml0aWFsbHkgc2VlbSB0aGF0IEkgc2hvdWxkIGxlYXZlIGBGb2N1c1N5bWJvbHNgIGVtcHR5LCB0byBhdm9pZCBza2V3ZWQgcmVzdWx0cy5cblxuQnV0IHdhaXQgYSBtaW51dGUsIGBrdm1wcGNfcHJlcGFyZV90b19lbnRlcmAgaXMgcHJvYmFibHkgbW9yZSBzcGVjaWZpYyB0byB0aGlzIGNvZGUgcGF0aCwgYXMgaXQgaXMgb25seSBjYWxsZWQgb24gZW50cnksIGFuZCBga3ZtaHZfcnVuX3NpbmdsZV92Y3B1YCBpcyBzcGVjaWZpYyB0byB0aGlzIGZlYXR1cmUuIEl0J3Mgbm90IGEgZ2VuZXJpYyBrZXJuZWwgZnVuY3Rpb24gbGlrZSBgc2NoZWR1bGVgIG9yIGBrbWFsbG9jYC4gSXQncyBhIFBvd2VyUEMtc3BlY2lmaWMgS1ZNIGhvdC1wYXRoLlxuXG5TbywgSSBzaG91bGQgYWRkIGBrdm1wcGNfcHJlcGFyZV90b19lbnRlcmAgYW5kIGBrdm1odl9ydW5fc2luZ2xlX3ZjcHVgIHRvIGBGb2N1c1N5bWJvbHNgLiBMZXQgbWUganVzdCBkb3VibGUgY2hlY2sgd2hlcmUgYGt2bXBwY19wcmVwYXJlX3RvX2VudGVyYCBpcyBkZWZpbmVkLCBhbmQgSSB3aWxsIGJlIGFsbCBzZXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg2ODIsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDI6MjQ6MDEuNjkyMzYwNzcxWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3Mjk0ODMwODQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtcHBjX3ByZXBhcmVfdG9fZW50ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9wb3dlcnBjL2t2bS9wb3dlcnBjLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9wb3dlcnBjL2t2bS9wb3dlcnBjLmM9NjU9aW50IGt2bV9hcmNoX3ZjcHVfc2hvdWxkX2tpY2soc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9wb3dlcnBjLmMtNzgtICovXFxuYXJjaC9wb3dlcnBjL2t2bS9wb3dlcnBjLmM6Nzk6aW50IGt2bXBwY19wcmVwYXJlX3RvX2VudGVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3Bvd2VycGMva3ZtL3Bvd2VycGMuYy04MC17XFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL3Bvd2VycGMuYy0xNTctfVxcbmFyY2gvcG93ZXJwYy9rdm0vcG93ZXJwYy5jOjE1ODpFWFBPUlRfU1lNQk9MX0dQTChrdm1wcGNfcHJlcGFyZV90b19lbnRlcik7XFxuYXJjaC9wb3dlcnBjL2t2bS9wb3dlcnBjLmMtMTU5LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwMjoyNDowMi40MjE4NTEwMzRaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjQzMzE2NzEyNjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgS1ZNL0hWIEltcGFjdCoqXG5cblJpZ2h0LCB0aGF0J3MgZGVmaW5pdGVseSB0aGUgY2FzZS4gQnV0LCBteSBtaW5kIGltbWVkaWF0ZWx5IGp1bXBzIHRvIGBrdm1odl9ydW5fc2luZ2xlX3ZjcHVgLiBXZSdyZSBsaWtlbHkgdGFsa2luZyBhYm91dCBhIHNwZWNpZmljIHNjZW5hcmlvIG9yIHBlcmZvcm1hbmNlIGlzc3VlIHRoYXQgaW52b2x2ZXMgYSBzaW5nbGUgdkNQVSBleGVjdXRpb24gaW4gYSBLVk0vSFYgY29udGV4dC4gVW5kZXJzdGFuZGluZyB0aGUgaW50cmljYWNpZXMgb2YgKnRoYXQqIGZ1bmN0aW9uJ3MgYmVoYXZpb3IsIHBhcnRpY3VsYXJseSBpdHMgaW50ZXJhY3Rpb24gd2l0aCB0aGUgaHlwZXJ2aXNvciBhbmQgdGhlIGd1ZXN0LCBpcyBjcnVjaWFsIGhlcmUuIFdoYXQncyB0aGUgY29udGV4dD8gV2hhdCB0cmlnZ2VyZWQgdGhlIGNvbnNpZGVyYXRpb24gb2YgdGhhdCBzcGVjaWZpYyBjYWxsPyBJcyBpdCByZWxhdGVkIHRvIGEgYm90dGxlbmVjaywgYSBzcGVjaWZpYyBpbnN0cnVjdGlvbiBzZXF1ZW5jZSwgYSBwYXJ0aWN1bGFyIGd1ZXN0IGFyY2hpdGVjdHVyZSwgb3IgYSBzeW5jaHJvbml6YXRpb24gaXNzdWU/IEknbSBhbHJlYWR5IGZvcm11bGF0aW5nIHF1ZXN0aW9ucyBpbiBteSBoZWFkIGFib3V0IHRoZSBkYXRhIGZsb3cgd2l0aGluIGl0LCB0aGUgaW50ZXJydXB0IGhhbmRsaW5nLCBhbmQgYW55IHBvdGVudGlhbCBjb250ZXh0IHN3aXRjaGVzIGludm9sdmVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDE5NSwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDAyOjI0OjI2Ljc1MzU2MTI1NloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjAxMTgyMzM2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bWh2X3J1bl9zaW5nbGVfdmNwdVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM9NDczOD1zdGF0aWMgaW50IGt2bXBwY19ydW5fdmNwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQ4NzMtXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo0ODc0OmludCBrdm1odl9ydW5fc2luZ2xlX3ZjcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgdGltZV9saW1pdCxcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQ4NzUtXFx0XFx0XFx0ICB1bnNpZ25lZCBsb25nIGxwY3IpXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jPTUwOTU9c3RhdGljIGludCBrdm1wcGNfdmNwdV9ydW5faHYoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01MTcxLVxcdFxcdGlmIChjcHVfaGFzX2ZlYXR1cmUoQ1BVX0ZUUl9BUkNIXzMwMCkpXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1MTcyOlxcdFxcdFxcdHIgPSBrdm1odl9ydW5fc2luZ2xlX3ZjcHUodmNwdSwgfih1NjQpMCxcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTUxNzMtXFx0XFx0XFx0XFx0XFx0XFx0ICB2Y3B1LVxcdTAwM2VhcmNoLnZjb3JlLVxcdTAwM2VscGNyKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDI6MjQ6MjcuMzU0NzUxNDcyWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5NDc1MjU2ODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgS1ZNL1BQQyBMYW5kc2NhcGUqKlxuXG5SaWdodCwgdGhhdCBzZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoLiBCdXQgYXMgYWx3YXlzLCB3aGVuIEknbSBkZWFsaW5nIHdpdGggS1ZNL1BQQywgSSBpbW1lZGlhdGVseSBzdGFydCBjb25zaWRlcmluZyB0aGUgaW1wbGljYXRpb25zLiBUaGUgb2J2aW91cyBxdWVzdGlvbiBJIGhhdmUgcmlnaHQgbm93IGlzOiBob3cgZG9lcyB0aGlzIHBsYXkgb3V0IHdpdGhpbiB0aGUgY29udGV4dCBvZiBga3ZtcHBjX3J1bl9jb3JlYD8gSSBuZWVkIHRvIGFuYWx5emUgaG93IHRoaXMgY2hhbmdlIGltcGFjdHMgdGhhdCBjcnVjaWFsIGZ1bmN0aW9uIGFuZCBpdHMgaW50ZXJhY3Rpb24gd2l0aCB0aGUgYnJvYWRlciBzeXN0ZW0uIEkgaGF2ZSBhIGZlZWxpbmcgdGhlcmUgd2lsbCBiZSBhIHN1YnRsZSBwb2ludCBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgaW4gdGhhdCBhcmVhLCBtYXliZSBhIHJhY2UgY29uZGl0aW9uIG9yIGEgY29ybmVyIGNhc2UgSSBuZWVkIHRvIGFjY291bnQgZm9yLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDc2OCwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDAyOjI0OjMwLjMwMjI4MDc1MloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzI2MDM1MzUzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bXBwY19ydW5fY29yZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM9Mzc1ND1zdGF0aWMgdm9pZCBzZXRfaXJxX2hhcHBlbmVkKGludCB0cmFwKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0zNzc1LSAqL1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6Mzc3NjpzdGF0aWMgbm9pbmxpbmUgdm9pZCBrdm1wcGNfcnVuX2NvcmUoc3RydWN0IGt2bXBwY192Y29yZSAqdmMpXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0zNzc3LXtcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNDAwNC1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjQwMDU6XFx0dHJhY2Vfa3ZtcHBjX3J1bl9jb3JlKHZjLCAwKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQwMDYtXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQwOTEtXFx0dmMtXFx1MDAzZXZjb3JlX3N0YXRlID0gVkNPUkVfSU5BQ1RJVkU7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo0MDkyOlxcdHRyYWNlX2t2bXBwY19ydW5fY29yZSh2YywgMSk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00MDkzLX1cXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM9NDczOD1zdGF0aWMgaW50IGt2bXBwY19ydW5fdmNwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQ4NDAtXFx0XFx0fSBlbHNlIHtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjQ4NDE6XFx0XFx0XFx0a3ZtcHBjX3J1bl9jb3JlKHZjKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQ4NDItXFx0XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwMjoyNDozMC42MjgzMzMyNDZaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc3NDQ1ODc3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipLZXJuZWwgVmlydHVhbGl6YXRpb24gLSBEaXZpbmcgaW50byB0aGUgRGV0YWlscyoqXG5cblllcywgdGhhdCdzIGV4YWN0bHkgd2hhdCBJIHdhcyB0aGlua2luZy4gV2UgYXJlIGluZGVlZCBkaXNjdXNzaW5nIHRoZSBmdW5kYW1lbnRhbCB3b3JraW5ncyBoZXJlLiBBbmQgc2luY2Ugd2UncmUgb24gdGhlIHRvcGljIG9mIHRoZSBrZXJuZWwsIEkgaW1tZWRpYXRlbHkgc3RhcnRlZCBjb25zaWRlcmluZyB0aGUgaW1wbGljYXRpb25zLiBUaGUgbG9naWNhbCBuZXh0IHN0ZXAsIGlzIHRoZSBga3ZtcHBjX3J1bl92Y3B1YCBmdW5jdGlvbi4gSSBhbSBhbHdheXMgdHJ5aW5nIHRvIHVuZGVyc3RhbmQgdGhlIGlubmVyIHdvcmtpbmdzIG9mIHRoZSBzeXN0ZW0gYXMgSSBjb25zaWRlciB0aGVzZSB0aGluZ3MuIFNwZWNpZmljYWxseSwgd2hlbiB3ZSdyZSB0cnlpbmcgdG8gZmlndXJlIG91dCBpZiBpdCBpcyB0cnVlLCBvciB3aGF0IHRoZSBwcm9jZXNzIHNob3VsZCBsb29rIGxpa2UuIFRoYXQncyB3aGVyZSB0aGluZ3MgZ2V0IGludGVyZXN0aW5nIGFuZCB3aGVyZSB0aGUgcmVhbCBvcHRpbWl6YXRpb24gb3Bwb3J0dW5pdGllcyBvZnRlbiBsaWUuIFdlIG5lZWQgdG8gYmUgY29uc2lkZXJpbmcgdGhlIGltcGxpY2F0aW9ucy4gSSB3b25kZXIgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBhc3BlY3RzIG9mIGl0cyBpbXBsZW1lbnRhdGlvbiB0aGF0IHdvdWxkIGJlIHJlbGV2YW50IHRvIHdoYXQgd2UgYXJlIGNvbnNpZGVyaW5nP1xuXG5cbiIsIklucHV0VG9rZW5zIjoxMTQyNiwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDAyOjI0OjM0LjQwMjc5NTkxM1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYwMDI5MTEyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bXBwY19ydW5fdmNwdVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM9NDcxOT1zdGF0aWMgaW50IGt2bWh2X3NldHVwX21tdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQ3MzctXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo0NzM4OnN0YXRpYyBpbnQga3ZtcHBjX3J1bl92Y3B1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQ3Mzkte1xcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00NzQ0LVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NDc0NTpcXHR0cmFjZV9rdm1wcGNfcnVuX3ZjcHVfZW50ZXIodmNwdSk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00NzQ2LVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00ODY4LVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NDg2OTpcXHR0cmFjZV9rdm1wcGNfcnVuX3ZjcHVfZXhpdCh2Y3B1KTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQ4NzAtXFx0c3Bpbl91bmxvY2soXFx1MDAyNnZjLVxcdTAwM2Vsb2NrKTtcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM9NDg3ND1pbnQga3ZtaHZfcnVuX3NpbmdsZV92Y3B1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IHRpbWVfbGltaXQsXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQ4ODYtXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo0ODg3OlxcdHRyYWNlX2t2bXBwY19ydW5fdmNwdV9lbnRlcih2Y3B1KTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQ4ODgtXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTUwODEtIGRvbmU6XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1MDgyOlxcdHRyYWNlX2t2bXBwY19ydW5fdmNwdV9leGl0KHZjcHUpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTA4My1cXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM9NTA5NT1zdGF0aWMgaW50IGt2bXBwY192Y3B1X3J1bl9odihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTUxNzQtXFx0XFx0ZWxzZVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NTE3NTpcXHRcXHRcXHRyID0ga3ZtcHBjX3J1bl92Y3B1KHZjcHUpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTE3Ni1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDI6MjQ6MzQuNTYyODM2NDE1WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE5NzY0NjQ0NzMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIEtWTS9QUEMgRW50cnkgUG9pbnQqKlxuXG5ZZXMsIHRoYXQncyByaWdodCwgdGhlIGNvbmZpcm1hdGlvbiBpcyBzb2xpZC4gSSdtIG9uIHRoZSByaWdodCB0cmFjay4gTXkgbWluZCB0aGVuIGltbWVkaWF0ZWx5IGp1bXBzIHRvIGEgY3JpdGljYWwgc2VjdGlvbiBvZiBjb2RlLiBTcGVjaWZpY2FsbHksIEknbSB0aGlua2luZyBhYm91dCBga3ZtcHBjX2NvcmVfcHJlcGFyZV90b19lbnRlcmAuIEl0J3MgYSBrZXkgZnVuY3Rpb24gaW4gdGhlIEtWTS9QUEMgYXJjaGl0ZWN0dXJlLCBpc24ndCBpdD8gSSBuZWVkIHRvIGFuYWx5emUgaG93IGl0IHNldHMgdGhlIHN0YWdlLCBob3cgaXQgaGFuZGxlcyB0aGUgdHJhbnNpdGlvbiBmcm9tIHRoZSBndWVzdCB0byB0aGUgaG9zdCwgZXNwZWNpYWxseSBjb25zaWRlcmluZyB0aGUgcG93ZXJwYyBhcmNoaXRlY3R1cmUgbnVhbmNlcy4gSSdtIHRyeWluZyB0byByZWNhbGwgdGhlIGRldGFpbHMgb2YgdGhlIGNvbnRleHQgc2F2ZS9yZXN0b3JlIGFuZCB3aGF0IHNhZmVndWFyZHMgaXQgcHV0cyBpbiBwbGFjZS4gSXQncyB0aW1lIHRvIHJlZnJlc2ggdGhlIGNvcmUgbG9naWM7IEkndmUgZ290IGEgc3BlY2lmaWMgaXNzdWUgaW4gbWluZCB0aGF0IGNvdWxkIGJlIGFkZHJlc3NlZCBieSByZS1hc3Nlc3NpbmcgdGhpcyBmdW5jdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTIzNTgsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwMjoyNDo1NC4zMjc0ODM1MDZaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NjgyODM2MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1wcGNfY29yZV9wcmVwYXJlX3RvX2VudGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvcG93ZXJwYy9rdm0vYm9va2UuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmM9NjkwPXN0YXRpYyB2b2lkIGt2bXBwY19jb3JlX2NoZWNrX2V4Y2VwdGlvbnMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rZS5jLTcwOS0vKiBDaGVjayBwZW5kaW5nIGV4Y2VwdGlvbnMgYW5kIGRlbGl2ZXIgb25lLCBpZiBwb3NzaWJsZS4gKi9cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmM6NzEwOmludCBrdm1wcGNfY29yZV9wcmVwYXJlX3RvX2VudGVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmMtNzExLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDI6MjQ6NTQuNzc0MzIwMDI5WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ5NTIwNjQ2MTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEtWTSBDb25maWd1cmF0aW9uIFJlcXVpcmVtZW50cyBmb3IgUG93ZXJQQyBQYXRjaCoqXG5cbk9rYXksIHllcywgdGhpcyBpcyBhIG1vZGlmaWNhdGlvbiB0byB0aGUgS1ZNIGVudHJ5L2V4aXQgcGF0aHMgb24gUG93ZXJQQywgZ290IGl0LiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIGxpc3QgdGhlIHR5cGljYWwgS1ZNIGNvbmZpZ3MgcmVxdWlyZWQsIGxpa2UgYEtWTWAsIGBLVk1fQk9PSzNTXzY0X0hWYCwgYEtWTV9FNTAwVjJgLCBhbmQgYEtWTV9FNTAwTUNgLiBUaGVuIEkgcmVhbGl6ZWQgYEtWTWAgaXMgcHJldHR5IGdlbmVyaWMsIGFuZCBgS1ZNX0JPT0szU182NF9IVmAgc2VlbXMgc3BlY2lmaWMgdG8gYGJvb2szc19odi5jYCwgYW5kIGVpdGhlciBgS1ZNX0U1MDBWMmAgb3IgYEtWTV9FNTAwTUNgIGlzIHRpZWQgdG8gYGJvb2tlLmNgLiBPaCwgaGFuZyBvbiwgdGhlcmUncyBhbHNvIGBLVk1fQk9PS0VfSFZgIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQuXG5cbkJ1dCB3YWl0LCB0aGUgaW5zdHJ1Y3Rpb25zIGFyZSB0ZWxsaW5nIG1lIHRvIGJlICpzcGVjaWZpYyouIFRoZXkncmUgc2F5aW5nIGRvbid0IGxpc3QgZ2VuZXJpYyBjb25maWdzIHRoYXQgYXJlIHByb2JhYmx5IGFscmVhZHkgZW5hYmxlZC4gU28sIHRoZSBxdWVzdGlvbiBiZWNvbWVzLCB3aGljaCBjb25maWdzIGFyZSAqZGlyZWN0bHkqIHRpZWQgdG8gdGhlIG1vZGlmaWVkIGNvZGU/IEdpdmVuIHRoYXQsIEknbSB0aGlua2luZyBJIHNob3VsZCBmb2N1cyBvbiBgS1ZNX0JPT0szU182NF9IVmAsIGBLVk1fRTUwMFYyYCwgYEtWTV9FNTAwTUNgLCBhbmQgYEtWTV9CT09LRV9IVmAuIEJlZm9yZSBJIGNvbW1pdCB0byB0aGF0IHRob3VnaCwgSSB3YW50IHRvIGRvdWJsZS1jaGVjayBgYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZWAgb25lIG1vcmUgdGltZSB0byBiZSBhYnNvbHV0ZWx5IHN1cmUgYWJvdXQgYGJvb2tlLmNgLiBOZWVkIHRvIGJlIHByZWNpc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyNzU3LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjgzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDAyOjI0OjU5LjcyNjM4ODk1MloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE2NzgyODYzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJvb2tlLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlPTE2PWt2bS1lNTAwLW9ianMgOj0gXFxcXFxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZS0xOC1cXHRlbXVsYXRlLm8gXFxcXFxcbmFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGU6MTk6XFx0Ym9va2UubyBcXFxcXFxuYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZS0yMC1cXHRib29rZV9lbXVsYXRlLm8gXFxcXFxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZT0yOD1rdm0tZTUwMG1jLW9ianMgOj0gXFxcXFxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZS0zMC1cXHRlbXVsYXRlLm8gXFxcXFxcbmFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGU6MzE6XFx0Ym9va2UubyBcXFxcXFxuYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZS0zMi1cXHRib29rZV9lbXVsYXRlLm8gXFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwMjoyNDo1OS45NDMxNzk3MTVaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE1OTg4Njg2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBob3cgSSdkIGFwcHJvYWNoIHRoaXMgdGFzaywgYXMgaWYgdGhlc2Ugd2VyZSBteSBpbnRlcm5hbCB0aG91Z2h0czpcblxuKipBbmFseXppbmcgS1ZNIE9iamVjdCBUcmlnZ2VycyoqXG5cblJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIHRoYXQgYXJlIHJlc3VsdGluZyBpbiB0aGUgYnVpbGQgb2YgYGt2bS1lNTAwLW9ianNgIGFuZCBga3ZtLWU1MDBtYy1vYmpzYC4gVGhpcyBpcyBmdW5kYW1lbnRhbCBmb3Igb3B0aW1pemluZyBhbmQgdW5kZXJzdGFuZGluZyBLVk0gZm9yIGU1MDAgYW5kIGU1MDBtYyBhcmNoaXRlY3R1cmVzLiBJIG5lZWQgdG8gdHJhY2UgdGhlIGRlcGVuZGVuY2llcyBhbmQgdW5kZXJzdGFuZCAqd2h5KiB0aG9zZSBzcGVjaWZpYyBvYmplY3QgZmlsZXMgYXJlIGJlaW5nIGluY2x1ZGVkLiBJcyBpdCBhIHBhcnRpY3VsYXIgZmVhdHVyZSBmbGFnLCBhIHNwZWNpZmljIGJvYXJkIGNvbmZpZ3VyYXRpb24sIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBUaW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eSBkaWdnaW5nIHRocm91Z2ggdGhlIG1ha2VmaWxlcywgY29uZmlnIG9wdGlvbnMsIGFuZCBrZXJuZWwgYnVpbGQgbG9ncy4gSSdsbCBiZSBsb29raW5nIGZvciBjb25kaXRpb25hbCBzdGF0ZW1lbnRzLCBkZXBlbmRlbmNpZXMsIGFuZCBhbnl0aGluZyB0aGF0IG1pZ2h0IHNoZWQgbGlnaHQgb24gdGhlIHRyaWdnZXJpbmcgbWVjaGFuaXNtLiBVbHRpbWF0ZWx5LCBJIHdhbnQgdG8gZm9ybSBhIGNvbXBsZXRlIG1lbnRhbCBtYXAgb2YgdGhlIGJ1aWxkIHByb2Nlc3MgZm9yIHRoZXNlIHNwZWNpZmljIEtWTSBvYmplY3QgZmlsZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzNTk2LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDI6MjU6MDMuMTAzMDY5ODc4WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDg5MDU5MTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtLWU1MDBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlPTE0PUFGTEFHU19ib29rZV9pbnRlcnJ1cHRzLm8gOj0gLUkkKG9ianRyZWUpLyQob2JqKVxcbmFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGUtMTUtXFxuYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZToxNjprdm0tZTUwMC1vYmpzIDo9IFxcXFxcXG5hcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlLTE3LVxcdCQoY29tbW9uLW9ianMteSkgXFxcXFxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZS0yNS1cXHRlNTAwX2VtdWxhdGUub1xcbmFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGU6MjY6a3ZtLW9ianMtJChDT05GSUdfS1ZNX0U1MDBWMikgOj0gJChrdm0tZTUwMC1vYmpzKVxcbmFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGUtMjctXFxuYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZToyODprdm0tZTUwMG1jLW9ianMgOj0gXFxcXFxcbmFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGUtMjktXFx0JChjb21tb24tb2Jqcy15KSBcXFxcXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlLTM3LVxcdGU1MDBfZW11bGF0ZS5vXFxuYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZTozODprdm0tb2Jqcy0kKENPTkZJR19LVk1fRTUwME1DKSA6PSAkKGt2bS1lNTAwbWMtb2JqcylcXG5hcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlLTM5LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwMjoyNTowMy4zMTE5ODQ5ODJaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE5OTU5ODIyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgYSBmaXJzdC1wZXJzb24gZXhwZXJ0IHN1bW1hcnk6XG5cbioqV29ya2luZyBUaHJvdWdoIHRoZSBLVk0gQ29kZSoqXG5cblJpZ2h0LCBzbyBJJ20gZm9jdXNpbmcgb24gdGhlc2UgS1ZNIHZlcnNpb25zOiBgS1ZNX0U1MDBWMmAgYW5kIGBLVk1fRTUwME1DYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRpZmZlcmVuY2VzIGFuZCBpbXBsaWNhdGlvbnMgb2YgaG93IHRoZXNlIGFyZSBoYW5kbGVkLiBJdCdzIGNydWNpYWwgdG8gaWRlbnRpZnkgYW55IHBvdGVudGlhbCBkaXZlcmdlbmNlcyBpbiB0aGUgY29kZSBwYXRocywgZXNwZWNpYWxseSB3aXRoIHJlZ2FyZCB0byBwZXJmb3JtYW5jZSBvciBzZWN1cml0eS4gTXkgcHJpbWFyeSBjb25jZXJuIGF0IHRoaXMgcG9pbnQgaXMgaXNvbGF0aW5nIHdoYXQgbWFrZXMgdGhlc2UgdmVyc2lvbnMgdW5pcXVlLiBUaGlzIHN1Z2dlc3RzIHRvIG1lIHRoZSBuZWVkIHRvIGNyb3NzLXJlZmVyZW5jZSBhbmQgZGVlcGx5IGV4cGxvcmUgaG93IHRoZSBib29rM3NfaHYuYyBmaWxlIGludGVyYWN0cyB3aXRoIHRoZXNlIHR3byBLVk0gY29uZmlndXJhdGlvbnMuIFRoaXMgaXMgYSBjcnVjaWFsIGZpbGUsIHNpbmNlIGl0IGlzIHRoZSBcImh5cGVydmlzb3JcIiBjb21wb25lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0MjAwLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDI6MjU6MDYuNTExNTg4MjQ4WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTA2OTIwODQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtLWh2LXlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlPTYwPWVuZGlmXFxuYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZS02MS1cXG5hcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlOjYyOmt2bS1odi15ICs9IFxcXFxcXG5hcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlLTYzLVxcdGJvb2szc19odi5vIFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDI6MjU6MDYuNzIyMjkzNTUyWiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYwMzgxOTIwNzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIGBrdm0taHYteWAgVHJpZ2dlcioqXG5cbkFscmlnaHQsIHRoYXQncyBpbnRlcmVzdGluZy4gSSd2ZSBnb3QgYSBtZW50YWwgaXRjaCBub3c6IFdoYXQncyB0aGUgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBpdGVtLCBvciBzZXQgb2YgaXRlbXMsIHRoYXQgdWx0aW1hdGVseSBjYXVzZXMgdGhlIHN5c3RlbSB0byBlbmFibGUgdGhlIGBrdm0taHYteWAgb3B0aW9uPyBJJ20gaW1tZWRpYXRlbHkgdHJ5aW5nIHRvIGRyaWxsIGRvd24gdG8gdGhlIHJvb3QgY2F1c2UuIFRoaXMgaXNuJ3QganVzdCBhIGNhc3VhbCBvYnNlcnZhdGlvbjsgaXQncyBhIHByb21wdCBmb3IgYSBkZWVwZXIgZGl2ZSBpbnRvIHRoZSBidWlsZCBjb25maWd1cmF0aW9uLiBJJ20gYXNzdW1pbmcgdGhlcmUncyBhIGRlcGVuZGVuY3kgY2hhaW4g4oCTIHByb2JhYmx5IGEgY2FzY2FkZSBvZiBjb25kaXRpb25hbHMg4oCTIGxlYWRpbmcgdG8gdGhhdCBmbGFnIGJlaW5nIHNldC4gSXQncyB0aGUgc3RhbmRhcmQgYnVpbGQgY29uZmlndXJhdGlvbiwgc28gdGhpcyBpcyBsaWtlbHkgYSBzdGFuZGFyZCwgYnV0IHN1YnRsZSwgc2V0IG9mIGRlcGVuZGVuY2llcyB0aGF0IEkgbmVlZCB0byB0cmFjZS4gSSB3YW50IHRvIGlkZW50aWZ5IHRoZSBjcnVjaWFsIGtub2JzIHRoYXQsIHdoZW4gYWRqdXN0ZWQsIHdvdWxkIHJlc3VsdCBpbiB0aGUgZmxhZyBiZWluZyBlbmFibGVkIG9yIGRpc2FibGVkLiBLbm93aW5nICp3aHkqIGl0J3Mgc2V0IGlzIGtleSBmb3Igb3B0aW1pemF0aW9uIG9yIGRlYnVnZ2luZyBsYXRlci4gSXMgaXQgcmVsYXRlZCB0byBhIHNwZWNpZmljIENQVSBtb2RlbCwgYSBoeXBlcnZpc29yIHNldHRpbmcsIG9yIG1heWJlIGV2ZW4gYSBrZXJuZWwgdmVyc2lvbj8gSSdtIGFscmVhZHkgbWVudGFsbHkgZm9ybWluZyBhIHBsYW4gdG8gdXNlIGBncmVwYCwgYGZpbmRgLCBhbmQgcG90ZW50aWFsbHkgdGhlIGJ1aWxkIHN5c3RlbSBpdHNlbGYgdG8gdHJhY2UgdGhlIGxvZ2ljLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDUxOSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDAyOjI1OjEyLjc2MDQ4OTgyN1oiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA1NDA5MjE1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bS1odi15XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZT02MD1lbmRpZlxcbmFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGUtNjEtXFxuYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZTo2Mjprdm0taHYteSArPSBcXFxcXFxuYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZS02My1cXHRib29rM3NfaHYubyBcXFxcXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDAyOjI1OjEyLjk2NTkwNzczMloiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTAyOTc5NjYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhhdCB0YXNrOlxuXG4qKkFuYWx5emluZyB0aGUgTWFrZWZpbGUgZm9yIGBrdm0taHYteWAqKlxuXG5Pa2F5LCBmaXJzdCB0aGluZ3MgZmlyc3QsIEkgbmVlZCB0byBnZXQgYSBjb21wcmVoZW5zaXZlIHZpZXcuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gdGhvcm91Z2hseSBzY2FuIHRoZSBlbnRpcmUgTWFrZWZpbGUuIEknbSBsb29raW5nIHNwZWNpZmljYWxseSBmb3IgdGhlIHByZXNlbmNlIGFuZCB1c2FnZSBvZiB0aGUgYGt2bS1odi15YCB2YXJpYWJsZS4gVGhpcyBtZWFucyBJJ20gbm90IGp1c3Qgc2VhcmNoaW5nIGZvciB0aGUgc3RyaW5nIGl0c2VsZiwgYnV0IGFsc28gdW5kZXJzdGFuZGluZyBob3cgaXQncyBkZWZpbmVkLCB3aGVyZSBpdCdzIHJlZmVyZW5jZWQsIGFuZCB3aGF0IGl0IGNvbnRyb2xzIHdpdGhpbiB0aGUgYnVpbGQgcHJvY2Vzcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHNjb3BlIGFuZCBpbXBhY3QuIElzIGl0IGdsb2JhbD8gSXMgaXQgY29uZGl0aW9uYWw/IFdoYXQgb3RoZXIgdmFyaWFibGVzIG9yIHJ1bGVzIGRlcGVuZCBvbiBpdD8gSSdtIGFudGljaXBhdGluZyBwb3RlbnRpYWwgaW50ZXJhY3Rpb25zIGFuZCBkZXBlbmRlbmNpZXMuIFRoaXMgaXNuJ3QganVzdCBhIHNpbXBsZSBncmVwOyBJJ20gYWltaW5nIGZvciBhIGRlZXAgdW5kZXJzdGFuZGluZyBvZiBpdHMgcm9sZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ5MDgsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwMjoyNToxNi4wNjg4OTM2MTVaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2Nzk2MjYwMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm0taHYteVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGU9NjA9ZW5kaWZcXG5hcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlLTYxLVxcbmFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGU6NjI6a3ZtLWh2LXkgKz0gXFxcXFxcbmFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGUtNjMtXFx0Ym9vazNzX2h2Lm8gXFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwMjoyNToxNi4yMzY4NjMyNjZaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk5OTEzMDg1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcyBvbiB0aGF0OlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIEtWTSBNb2R1bGUgSW5jbHVzaW9uKipcblxuUmlnaHQsIGxldCBtZSBwYXVzZSBhbmQgZ2V0IG15IGJlYXJpbmdzLiBUaGUga2V5IHF1ZXN0aW9uIHJpZ2h0IG5vdyBpcyAqaG93KiBga3ZtLWh2LXlgIGlzIGdldHRpbmcgaW50ZWdyYXRlZCBpbnRvIHRoZSBidWlsZCBwcm9jZXNzLiBJIG5lZWQgdG8gdHJhY2UgaXRzIGluY2x1c2lvbiwgc3BlY2lmaWNhbGx5IHdoZXRoZXIgaXQncyBkaXJlY3RseSBhZGRlZCB0byBgb2JqLXlgICh0aGUgcHJpbWFyeSBvYmplY3QgbGlzdCkgb3IgdG8gYGt2bS1vYmpzYCAobGlrZWx5IGEgbW9yZSBzcGVjaWZpYyBLVk0tcmVsYXRlZCBvYmplY3QgbGlzdCkuIFVuZGVyc3RhbmRpbmcgdGhpcyB3aWxsIHByb3ZpZGUgaW5zaWdodHMgaW50byBob3cgdGhlIEtWTSBoeXBlcnZpc29yIHN1cHBvcnQgaXMgYmVpbmcgc3RydWN0dXJlZCBhbmQgcG90ZW50aWFsbHksIHdoZXJlIEkgbmVlZCB0byBsb29rIGZvciByZWxhdGVkIGNvZGUgb3IgY29uZmlndXJhdGlvbi4gU28sIG15IG5leHQgc3RlcCBpcyBkZWZpbml0aXZlbHkgZmlndXJpbmcgb3V0IHRoYXQgaW5jbHVzaW9uIHBhdGguIExldCBtZSBkZWx2ZSBpbnRvIHRoZSBidWlsZCBmaWxlcyBhbmQgc2VlIHdoZXJlIHRoZSBtYWdpYyBoYXBwZW5zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTIxNywiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDAyOjI1OjIwLjIzNTk5OTEwNFoiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ1NjkwMzg1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bS1odlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGU9NjA9ZW5kaWZcXG5hcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlLTYxLVxcbmFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGU6NjI6a3ZtLWh2LXkgKz0gXFxcXFxcbmFyY2gvcG93ZXJwYy9rdm0vTWFrZWZpbGUtNjMtXFx0Ym9vazNzX2h2Lm8gXFxcXFxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZS02OC1cXG5hcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlOjY5Omt2bS1odi0kKENPTkZJR19QUENfVVYpICs9IFxcXFxcXG5hcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlLTcwLVxcdGJvb2szc19odl91dm1lbS5vXFxuYXJjaC9wb3dlcnBjL2t2bS9NYWtlZmlsZS03MS1cXG5hcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlOjcyOmt2bS1odi0kKENPTkZJR19QUENfVFJBTlNBQ1RJT05BTF9NRU0pICs9IFxcXFxcXG5hcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlLTczLVxcdGJvb2szc19odl90bS5vXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlPTEzNT1vYmotJChDT05GSUdfS1ZNX0JPT0szU182NF9QUikgKz0ga3ZtLXByLm9cXG5hcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlOjEzNjpvYmotJChDT05GSUdfS1ZNX0JPT0szU182NF9IVikgKz0ga3ZtLWh2Lm9cXG5hcmNoL3Bvd2VycGMva3ZtL01ha2VmaWxlLTEzNy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDI6MjU6MjAuMzgxNjk2NTM5WiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc4NDIzNzA5NDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgS1ZNIG9uIFBvd2VyUEMgSG90LVBhdGggRnVuY3Rpb25zIGZvciBGdXp6aW5nKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBQb3dlclBDIEtWTSBjb2RlIGFuZCBpbW1lZGlhdGVseSBteSBhdHRlbnRpb24gaXMgZHJhd24gdG8gYEtWTV9CT09LM1NfNjRfSFZgLiBUaGF0J3MgdGhlIHByaW1hcnkgY29uZmlndXJhdGlvbi4gSSBhbHNvIHNlZSBgS1ZNX0U1MDBWMmAgYW5kIGBLVk1fRTUwME1DYCBpbiB0aGUgY29uZmlncywgc28gdGhhdCBnaXZlcyBtZSBhIGhhbmRsZS4gVGhlIGtleSBoZXJlIGlzIHRvIGlkZW50aWZ5IGhvdC1wYXRoIGZ1bmN0aW9ucyByaXBlIGZvciBmdXp6aW5nLlxuXG5NeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gbGlzdCB0aGVtIGFzIHRoZXkgYXJlIHNwZWNpZmljIHRvIEtWTSBvbiBQb3dlclBDIGFuZCBhcmUgcHJlY2lzZWx5IHdoZXJlIHRoZSBtb2RpZmljYXRpb25zIGFyZSBoYXBwZW5pbmcuIEkgYW0gaW1tZWRpYXRlbHkgdGhpbmtpbmcgYWJvdXQgYGt2bXBwY19ydW5fY29yZWAsIGBrdm1wcGNfcnVuX3ZjcHVgLCBga3ZtaHZfcnVuX3NpbmdsZV92Y3B1YCwgYGt2bXBwY19jb3JlX3ByZXBhcmVfdG9fZW50ZXJgLCBhbmQgYGt2bXBwY19wcmVwYXJlX3RvX2VudGVyYC4gU3BlY2lmaWNhbGx5LCBga3ZtcHBjX3J1bl9jb3JlYCBhbmQgYGt2bWh2X3J1bl9zaW5nbGVfdmNwdWAganVtcCBvdXQgYXMgZ29vZCBjYW5kaWRhdGVzIGZvciBmdXp6aW5nIHNpbmNlIHRoZXkncmUgaW4gdGhlIGhvdCBwYXRoLiBMZXQncyBtYWtlIHN1cmUgdGhvc2UgYW5kIHRoZSBvdGhlciB0d28gYXJlIGxpc3RlZDogYGt2bXBwY19ydW5fY29yZWAsIGBrdm1odl9ydW5fc2luZ2xlX3ZjcHVgLCBga3ZtcHBjX2NvcmVfcHJlcGFyZV90b19lbnRlcmAsIGBrdm1wcGNfcHJlcGFyZV90b19lbnRlcmAuXG5cbkkgbmVlZCB0byBtYWtlIHN1cmUgSSBhbSBub3QgbWlzc2luZyBhbnkgY3JpdGljYWwgZnVuY3Rpb25zIG9yIGFyZWFzIHRoYXQgSSBtYXkgbmVlZCB0byBiZSBhd2FyZSBvZi5cblxuVGhlIHBhdGNoIGl0c2VsZiBtb2RpZmllcyBgYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuY2AsIGBhcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmNgLCBhbmQgYGFyY2gvcG93ZXJwYy9rdm0vcG93ZXJwYy5jYC4gVGhpcyBzdHJvbmdseSByZWluZm9yY2VzIG15IGRlY2lzaW9uIHRvIGZ1enogdGhpcyBjb2RlLiBJIGFtIGNvbmZpZGVudCBpdCdzIHRoZSByaWdodCBjaG9pY2UuXG5cbk5vdywgbGV0J3MgdmVyaWZ5IGlmIGBrdm1wcGNfcnVuX2NvcmVgIGlzIHN0YXRpYy4gWWVzLCBpdCBpcy4gSG93ZXZlciwgdGhhdCBpcyBub3QgYSBibG9ja2VyLiBTeXprYWxsZXIgY2FuIHN0aWxsIGZ1enogc3RhdGljIGZ1bmN0aW9ucywgc2luY2UgdGhleSBhcmUgaW4gdGhlIGtlcm5lbCBpbWFnZS5cblxuTm93IEkgcmVtZW1iZXIsIGBrdm1wcGNfcHJlcGFyZV90b19lbnRlcmAgaXMgZXhwb3J0ZWQuIFRoYXQncyBnb29kIG5ld3MuIFRpbWUgdG8gc2V0IHVwIHRoZSBmdXp6aW5nIHRhcmdldHMgYmFzZWQgb24gdGhpcyBhbmFseXNpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTU3NjMsIk91dHB1dFRva2VucyI6MTc1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDAyOjI1OjI4LjIyNDA3MTc2M1oiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI4Mzc1MTQ4MCwiRXJyb3IiOiJ0aGUgZm9sbG93aW5nIGNvbmZpZ3MgZG8gbm90IGV4aXN0IGluIHRoZSBrZXJuZWwgdHJlZTogS1ZNX0JPT0szU182NF9IViwgS1ZNX0U1MDBWMiwgS1ZNX0U1MDBNQyIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1fQk9PSzNTXzY0X0hWXCIsXG4gICAgXCJLVk1fRTUwMFYyXCIsXG4gICAgXCJLVk1fRTUwME1DXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtcHBjX3J1bl9jb3JlXCIsXG4gICAgXCJrdm1odl9ydW5fc2luZ2xlX3ZjcHVcIixcbiAgICBcImt2bXBwY19jb3JlX3ByZXBhcmVfdG9fZW50ZXJcIixcbiAgICBcImt2bXBwY19wcmVwYXJlX3RvX2VudGVyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgS1ZNIGVudHJ5L2V4aXQgbG9vcCBvbiBQb3dlclBDIHRvIHVzZSB0aGUgZ2VuZXJpYyB4ZmVyX3RvX2d1ZXN0X21vZGUgaGVscGVycy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBLVk0gZXhlY3V0aW9uIHBhdGggb24gUG93ZXJQQyBhbmQgc2hvdWxkIGJlIGZ1enplZCBieSBydW5uaW5nIEtWTSB3b3JrbG9hZHMgb24gUG93ZXJQQy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJ0aGUgZm9sbG93aW5nIGNvbmZpZ3MgZG8gbm90IGV4aXN0IGluIHRoZSBrZXJuZWwgdHJlZTogS1ZNX0JPT0szU182NF9IViwgS1ZNX0U1MDBWMiwgS1ZNX0U1MDBNQ1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwMjoyNToyOC41MDc4NjMxMzRaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjA1OTUzMjA3MjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQ29uZmlndXJhdGlvbiBEaWxlbW1hKipcblxuT2theSwgaG9sZCBvbiBhIG1pbnV0ZS4gU29tZXRoaW5nJ3Mgbm90IHJpZ2h0LiBUaGUgY29uZmlndXJhdGlvbiBvcHRpb25zIEkgd2FzIGV4cGVjdGluZy4uLiB0aGV5J3JlIG5vdCBwcmVzZW50PyBUaGF0J3MgdW5leHBlY3RlZC4gVGhpcyBjb3VsZCBiZSBhIHNpZ25pZmljYW50IG92ZXJzaWdodC4gTGV0IG1lIGRvdWJsZS1jaGVjayB0aGUgS2NvbmZpZyBmaWxlIHdpdGhpbiB0aGUgUG93ZXJQQyBLVk0gYXJjaGl0ZWN0dXJlLiBTcGVjaWZpY2FsbHksIGxldCdzIHJldmlzaXQgYGFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZ2AuIEkgbmVlZCB0byBlbnN1cmUgdGhhdCBJJ20gbm90IG92ZXJsb29raW5nIGEgY29uZGl0aW9uYWwgaW5jbHVzaW9uIG9yIGEgZGVwZW5kZW5jeSB0aGF0IEkndmUgbWlzc2VkLiBBIGRlZXBlciBkaXZlIGlzIHJlcXVpcmVkIHRvIGlkZW50aWZ5IHRoZSByb290IGNhdXNlIG9mIHRoaXMgbWlzc2luZyBjb25maWcuIEl0IGlzIGJlc3QgdG8gbm90IHRha2UgYW55dGhpbmcgZm9yIGdyYW50ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2ODQ0LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcsIlRvb2xDYWxscyI6WyJzZXQtcmVzdWx0cyJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDAyOjI1OjQ5LjEwMzE4NjQ2MVoiLCJTZXEiOjM2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTcyNjA4MjAxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBLVk1fXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Bvd2VycGMva3ZtL0tjb25maWc9MjA9Y29uZmlnIEtWTVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTI2LVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoyNzpjb25maWcgS1ZNX0JPT0szU19IQU5ETEVSXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTI4LVxcdGJvb2xcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjktXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjMwOmNvbmZpZyBLVk1fQk9PSzNTXzMyX0hBTkRMRVJcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMzEtXFx0Ym9vbFxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTM0LVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzozNTpjb25maWcgS1ZNX0JPT0szU182NF9IQU5ETEVSXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTM2LVxcdGJvb2xcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0zOC1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6Mzk6Y29uZmlnIEtWTV9CT09LM1NfUFJfUE9TU0lCTEVcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctNDAtXFx0Ym9vbFxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTQyLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzo0Mzpjb25maWcgS1ZNX0JPT0szU19IVl9QT1NTSUJMRVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy00NC1cXHRib29sXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTQ1LVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzo0Njpjb25maWcgS1ZNX0JPT0szU18zMlxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy00Ny1cXHR0cmlzdGF0ZSBcXFwiS1ZNIHN1cHBvcnQgZm9yIFBvd2VyUEMgYm9vazNzXzMyIHByb2Nlc3NvcnNcXFwiXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctNjItXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjYzOmNvbmZpZyBLVk1fQk9PSzNTXzY0XFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTY0LVxcdHRyaXN0YXRlIFxcXCJLVk0gc3VwcG9ydCBmb3IgUG93ZXJQQyBib29rM3NfNjQgcHJvY2Vzc29yc1xcXCJcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy03OS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6ODA6Y29uZmlnIEtWTV9CT09LM1NfNjRfSFZcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctODEtXFx0dHJpc3RhdGUgXFxcIktWTSBmb3IgUE9XRVI3IGFuZCBsYXRlciB1c2luZyBoeXBlcnZpc29yIG1vZGUgaW4gaG9zdFxcXCJcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xMDAtXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjEwMTpjb25maWcgS1ZNX0JPT0szU182NF9QUlxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xMDItXFx0dHJpc3RhdGUgXFxcIktWTSBzdXBwb3J0IHdpdGhvdXQgdXNpbmcgaHlwZXJ2aXNvciBtb2RlIGluIGhvc3RcXFwiXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTI2LVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxMjc6Y29uZmlnIEtWTV9CT09LM1NfSFZfRVhJVF9USU1JTkdcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTI4LVxcdGJvb2xcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTI5LVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxMzA6Y29uZmlnIEtWTV9CT09LM1NfSFZfUDlfVElNSU5HXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTEzMS1cXHRib29sIFxcXCJEZXRhaWxlZCB0aW1pbmcgZm9yIHRoZSBQOSBlbnRyeSBwb2ludFxcXCJcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xNDItXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjE0Mzpjb25maWcgS1ZNX0JPT0szU19IVl9QOF9USU1JTkdcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTQ0LVxcdGJvb2wgXFxcIkRldGFpbGVkIHRpbWluZyBmb3IgaHlwZXJ2aXNvciByZWFsLW1vZGUgY29kZSAoZm9yIFBPV0VSOClcXFwiXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTU3LVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxNTg6Y29uZmlnIEtWTV9CT09LM1NfSFZfTkVTVEVEX1BNVV9XT1JLQVJPVU5EXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE1OS1cXHRib29sIFxcXCJOZXN0ZWQgTDAgaG9zdCB3b3JrYXJvdW5kIGZvciBMMSBLVk0gaG9zdCBQTVUgaGFuZGxpbmcgYnVnXFxcIiBpZiBFWFBFUlRcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xNzItXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjE3Mzpjb25maWcgS1ZNX0JPT0szU19IVl9QTVVcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTc0LVxcdHRyaXN0YXRlIFxcXCJIeXBlcnZpc29yIFBlcmYgZXZlbnRzIGZvciBLVk0gQm9vazNzLUhWXFxcIlxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE4NC1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MTg1OmNvbmZpZyBLVk1fQk9PS0VfSFZcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTg2LVxcdGJvb2xcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTg3LVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxODg6Y29uZmlnIEtWTV9FWElUX1RJTUlOR1xcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xODktXFx0Ym9vbCBcXFwiRGV0YWlsZWQgZXhpdCB0aW1pbmdcXFwiXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTk4LVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxOTk6Y29uZmlnIEtWTV9FNTAwVjJcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjAwLVxcdGJvb2wgXFxcIktWTSBzdXBwb3J0IGZvciBQb3dlclBDIEU1MDB2MiBwcm9jZXNzb3JzXFxcIlxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTIxMy1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MjE0OmNvbmZpZyBLVk1fRTUwME1DXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTIxNS1cXHRib29sIFxcXCJLVk0gc3VwcG9ydCBmb3IgUG93ZXJQQyBFNTAwTUMvRTU1MDAvRTY1MDAgcHJvY2Vzc29yc1xcXCJcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yMjktXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjIzMDpjb25maWcgS1ZNX01QSUNcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjMxLVxcdGJvb2wgXFxcIktWTSBpbi1rZXJuZWwgTVBJQyBlbXVsYXRpb25cXFwiXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjQxLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoyNDI6Y29uZmlnIEtWTV9YSUNTXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTI0My1cXHRib29sIFxcXCJLVk0gaW4ta2VybmVsIFhJQ1MgZW11bGF0aW9uXFxcIlxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTI1MS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MjUyOmNvbmZpZyBLVk1fWElWRVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yNTMtXFx0Ym9vbFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwMjoyNTo0OS42NzU4NjY2NjJaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk2MzE4MTU5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIE1pc3NpbmcgS2VybmVsIENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIGtlcm5lbCBjb25maWdzOiBgS1ZNX0JPT0szU182NF9IVmAsIGBLVk1fRTUwMFYyYCwgYW5kIGBLVk1fRTUwME1DYC4gVGhlIGBzZXQtcmVzdWx0c2AgdG9vbCBpcyBjbGFpbWluZyB0aGV5IGRvbid0IGV4aXN0LCB3aGljaCBpcyBzdHJhbmdlLiBJIGNvdWxkIGhhdmUgc3dvcm4gSSd2ZSBzZWVuIHRoZW0uIFwiVGhlIGZvbGxvd2luZyBjb25maWdzIGRvIG5vdCBleGlzdCBpbiB0aGUga2VybmVsIHRyZWU6IEtWTV9CT09LM1NfNjRfSFYsIEtWTV9FNTAwVjIsIEtWTV9FNTAwTUNcIiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aHkuXG5cbkZpcnN0LCBsZXQgbWUgY29uZmlybSB0aGV5J3JlIGFjdHVhbGx5IGRlZmluZWQuIEknbGwgY2hlY2sgYGFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZ2AuIFl1cCwgdGhleSdyZSByaWdodCB0aGVyZSwgY2xlYXIgYXMgZGF5LiBUaGlzIGlzIG9kZC4gV2h5IHdvdWxkIHRoZSB0b29sIHJlcG9ydCB0aGVtIGFzIG1pc3Npbmc/XG5cbkFscmlnaHQsIHBlcmhhcHMgaXQncyBhIHNjb3BpbmcgaXNzdWUuIE1heWJlIGBhcmNoL3Bvd2VycGMva3ZtL0tjb25maWdgIGlzbid0IGJlaW5nIHNvdXJjZWQgY29ycmVjdGx5IGZyb20gdGhlIHRvcC1sZXZlbCBjb25maWd1cmF0aW9uLiBJJ2xsIHF1aWNrbHkgdmVyaWZ5IHRoYXQgaXQncyBiZWluZyBpbmNsdWRlZCBwcm9wZXJseSBpbiB0aGUgS2NvbmZpZyBoaWVyYXJjaHkuIFRoaXMgaXMgd2hlcmUgdGhlIGlzc3VlIG11c3QgYmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4NTYxLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDAyOjI1OjUzLjYzOTA1MTU4N1oiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQ0MjYyMzI5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzb3VyY2UgXFxcImFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZ1xcXCJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvcG93ZXJwYy9LY29uZmlnPTEzNDI9Y29uZmlnIFBQQ19MSUJfUkhFQVBcXG4tLVxcbmFyY2gvcG93ZXJwYy9LY29uZmlnLTEzNDQtXFxuYXJjaC9wb3dlcnBjL0tjb25maWc6MTM0NTpzb3VyY2UgXFxcImFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZ1xcXCJcXG5hcmNoL3Bvd2VycGMvS2NvbmZpZy0xMzQ2LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwMjoyNTo1OS4wODE2OTEzOTVaIiwiU2VxIjozOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTgxOTQzMTMyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEZWJ1Z2dpbmcgS2VybmVsIENvbmZpZ3VyYXRpb24gVG9vbCBPdXRwdXQqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHRvb2wgdGVsbGluZyBtZSBjZXJ0YWluIGtlcm5lbCBjb25maWd1cmF0aW9ucyBkb24ndCBleGlzdDogYEtWTV9CT09LM1NfNjRfSFZgLCBgS1ZNX0U1MDBWMmAsIGFuZCBgS1ZNX0U1MDBNQ2AuIFRoYXQncy4uLiBvZGQuIEkga25vdyB0aGVzZSBzaG91bGQgYmUgdGhlcmUuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoeSB0aGUgdG9vbCBpcyByZXBvcnRpbmcgdGhpcy4gTGV0IG1lIGRvdWJsZS1jaGVjayB0aGUgZXhhY3Qgb3V0cHV0IOKAkyBJIGhhdmUgdG8gYmUgcHJlY2lzZSB3aGVuIGRlYnVnZ2luZyB0aGVzZSBraW5kcyBvZiB0aGluZ3MuIEFscmlnaHQsIFwidGhlIGZvbGxvd2luZyBjb25maWdzIGRvIG5vdCBleGlzdCBpbiB0aGUga2VybmVsIHRyZWU6IEtWTV9CT09LM1NfNjRfSFYsIEtWTV9FNTAwVjIsIEtWTV9FNTAwTUNcIi4gT2theSwgdGhhdCdzIHdoYXQgSSB0aG91Z2h0LlxuXG5NeSBpbml0aWFsIHRob3VnaHQgaXMgbWF5YmUgdGhlIHRvb2wgaGFzIHNvbWUgcXVpcmt5IGZvcm1hdCBleHBlY3RhdGlvbnMgZm9yIHRoZSBgS2NvbmZpZ2AgZmlsZXM/IEl0J3MgcG9zc2libGUgaXQncyBleHBlY3RpbmcgYSBzcGVjaWZpYyBzeW50YXggb3Igc3RydWN0dXJlLiBCdXQgd2FpdC4uLiBpcyBpdCBwb3NzaWJsZSB0aGF0IGBLVk1fQk9PSzNTXzY0X0hWYCBpc24ndCByZWxldmFudCB0byB4ODY/IElzIHRoZSB0b29sIHBlcmhhcHMgY2hlY2tpbmcgdGhlICp4ODYqIHBvcnRpb24gb2YgdGhlIGtlcm5lbCB0cmVlIGFuZCBhc3N1bWluZyB0aGUgY29uZmlncyBzaG91bGQgYmUgZGVmaW5lZCB0aGVyZT8gTm8sIHRoZSB0b29sIGNsYWltcyB0byBjaGVjayB0aGUgKmVudGlyZSogdHJlZS4gU28gdGhhdCBjYW4ndCBiZSBpdC5cblxuT2theSwgbGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHRoZSBzb3VyY2UgZm9yIGBLVk1fQk9PSzNTXzY0X0hWYCwganVzdCB0byBiZSBjZXJ0YWluLiBTcGVjaWZpY2FsbHksIGBhcmNoL3Bvd2VycGMva3ZtL0tjb25maWdgLlxuYGBgXG5jb25maWcgS1ZNX0JPT0szU182NF9IVlxuXHR0cmlzdGF0ZSBcIktWTSBmb3IgUE9XRVI3IGFuZCBsYXRlciB1c2luZyBoeXBlcnZpc29yIG1vZGUgaW4gaG9zdFwiXG5gYGBcbkh1aC4gV2VsbCwgdGhlcmUgaXQgaXMuIENsZWFybHksIHRoZSB0b29sIGlzIHdyb25nLiBMZXQgbWUganVzdCB0cnkgcnVubmluZyBpdCBhZ2FpbiBmb3IgYEtWTWAsIGp1c3QgdG8gZW5zdXJlIHRoYXQgdGhlIGNvcmUgZnVuY3Rpb25hbGl0eSBpcyB3b3JraW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTA5OCwiT3V0cHV0VG9rZW5zIjoxNDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDI6MjY6MDQuOTAxMTI2OTY4WiIsIlNlcSI6NDAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQwODA2MTA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJrdm1wcGNfcnVuX2NvcmVcIixcbiAgICBcImt2bWh2X3J1bl9zaW5nbGVfdmNwdVwiLFxuICAgIFwia3ZtcHBjX2NvcmVfcHJlcGFyZV90b19lbnRlclwiLFxuICAgIFwia3ZtcHBjX3ByZXBhcmVfdG9fZW50ZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBLVk0gZW50cnkvZXhpdCBsb29wIG9uIFBvd2VyUEMgdG8gdXNlIHRoZSBnZW5lcmljIHhmZXJfdG9fZ3Vlc3RfbW9kZSBoZWxwZXJzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIEtWTSBleGVjdXRpb24gcGF0aCBvbiBQb3dlclBDIGFuZCBzaG91bGQgYmUgZnV6emVkIGJ5IHJ1bm5pbmcgS1ZNIHdvcmtsb2FkcyBvbiBQb3dlclBDLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bXBwY19ydW5fY29yZVwiLFxuICAgIFwia3ZtaHZfcnVuX3NpbmdsZV92Y3B1XCIsXG4gICAgXCJrdm1wcGNfY29yZV9wcmVwYXJlX3RvX2VudGVyXCIsXG4gICAgXCJrdm1wcGNfcHJlcGFyZV90b19lbnRlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIEtWTSBlbnRyeS9leGl0IGxvb3Agb24gUG93ZXJQQyB0byB1c2UgdGhlIGdlbmVyaWMgeGZlcl90b19ndWVzdF9tb2RlIGhlbHBlcnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgS1ZNIGV4ZWN1dGlvbiBwYXRoIG9uIFBvd2VyUEMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgYnkgcnVubmluZyBLVk0gd29ya2xvYWRzIG9uIFBvd2VyUEMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflownsxxp[1] Phase: Succeeded StartedAt: 2026-07-10 02:26:16 +0000 UTC FinishedAt: 2026-07-10 02:26:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflownsxxp[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-10 02:26:16 +0000 UTC FinishedAt: 2026-07-10 02:26:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflownsxxp[2] Phase: Succeeded StartedAt: 2026-07-10 02:26:16 +0000 UTC FinishedAt: 2026-07-10 03:46:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflownsxxp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvmppc_run_core","kvmhv_run_single_vcpu","kvmppc_core_prepare_to_enter","kvmppc_prepare_to_enter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"53edc4ca-5c17-4d71-aff5-d4c2b2d2fe83","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-10 02:26:16 +0000 UTC FinishedAt: 2026-07-10 03:46:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvmppc_run_core","kvmhv_run_single_vcpu","kvmppc_core_prepare_to_enter","kvmppc_prepare_to_enter"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"53edc4ca-5c17-4d71-aff5-d4c2b2d2fe83","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflownsxxp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvmppc_run_core","kvmhv_run_single_vcpu","kvmppc_core_prepare_to_enter","kvmppc_prepare_to_enter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"53edc4ca-5c17-4d71-aff5-d4c2b2d2fe83","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-10 02:26:16 +0000 UTC FinishedAt: 2026-07-10 02:27:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflownsxxp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvmppc_run_core","kvmhv_run_single_vcpu","kvmppc_core_prepare_to_enter","kvmppc_prepare_to_enter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"53edc4ca-5c17-4d71-aff5-d4c2b2d2fe83","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-10 02:26:16 +0000 UTC FinishedAt: 2026-07-10 02:27:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflownsxxp/series-workflownsxxp-convert-artifact-2314518904/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownsxxp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvmppc_run_core","kvmhv_run_single_vcpu","kvmppc_core_prepare_to_enter","kvmppc_prepare_to_enter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"53edc4ca-5c17-4d71-aff5-d4c2b2d2fe83","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-10 02:27:14 +0000 UTC FinishedAt: 2026-07-10 02:57:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflownsxxp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvmppc_run_core","kvmhv_run_single_vcpu","kvmppc_core_prepare_to_enter","kvmppc_prepare_to_enter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"53edc4ca-5c17-4d71-aff5-d4c2b2d2fe83","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-10 02:27:14 +0000 UTC FinishedAt: 2026-07-10 02:57:55 +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:*41474da9-42ff-42d9-bfaa-4cc55c281954,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-workflownsxxp/series-workflownsxxp-convert-artifact-2314518904/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": "11fde95d-e3cf-47a8-b15a-c950dacdfcbe", "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-workflownsxxp/series-workflownsxxp-build-action-1651148334/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownsxxp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvmppc_run_core","kvmhv_run_single_vcpu","kvmppc_core_prepare_to_enter","kvmppc_prepare_to_enter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"53edc4ca-5c17-4d71-aff5-d4c2b2d2fe83","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-10 02:27:14 +0000 UTC FinishedAt: 2026-07-10 02:57:45 +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:*41474da9-42ff-42d9-bfaa-4cc55c281954,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-workflownsxxp/series-workflownsxxp-convert-artifact-2314518904/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": "11fde95d-e3cf-47a8-b15a-c950dacdfcbe", "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-workflownsxxp/series-workflownsxxp-build-action-1651148334/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownsxxp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvmppc_run_core","kvmhv_run_single_vcpu","kvmppc_core_prepare_to_enter","kvmppc_prepare_to_enter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"53edc4ca-5c17-4d71-aff5-d4c2b2d2fe83","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-10 02:57:55 +0000 UTC FinishedAt: 2026-07-10 02:57:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflownsxxp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvmppc_run_core","kvmhv_run_single_vcpu","kvmppc_core_prepare_to_enter","kvmppc_prepare_to_enter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"53edc4ca-5c17-4d71-aff5-d4c2b2d2fe83","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-10 02:57:55 +0000 UTC FinishedAt: 2026-07-10 02:57:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflownsxxp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvmppc_run_core","kvmhv_run_single_vcpu","kvmppc_core_prepare_to_enter","kvmppc_prepare_to_enter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"53edc4ca-5c17-4d71-aff5-d4c2b2d2fe83","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-10 02:57:55 +0000 UTC FinishedAt: 2026-07-10 02:58:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflownsxxp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvmppc_run_core","kvmhv_run_single_vcpu","kvmppc_core_prepare_to_enter","kvmppc_prepare_to_enter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"53edc4ca-5c17-4d71-aff5-d4c2b2d2fe83","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-10 02:57:55 +0000 UTC FinishedAt: 2026-07-10 02:58:01 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"53edc4ca-5c17-4d71-aff5-d4c2b2d2fe83","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflownsxxp/series-workflownsxxp-convert-artifact-388470495/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownsxxp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvmppc_run_core","kvmhv_run_single_vcpu","kvmppc_core_prepare_to_enter","kvmppc_prepare_to_enter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"53edc4ca-5c17-4d71-aff5-d4c2b2d2fe83","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-10 02:58:05 +0000 UTC FinishedAt: 2026-07-10 03:00:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflownsxxp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvmppc_run_core","kvmhv_run_single_vcpu","kvmppc_core_prepare_to_enter","kvmppc_prepare_to_enter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"53edc4ca-5c17-4d71-aff5-d4c2b2d2fe83","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-10 02:58:05 +0000 UTC FinishedAt: 2026-07-10 03:00:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*11fde95d-e3cf-47a8-b15a-c950dacdfcbe,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-workflownsxxp/series-workflownsxxp-build-action-1651148334/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-workflownsxxp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvmppc_run_core","kvmhv_run_single_vcpu","kvmppc_core_prepare_to_enter","kvmppc_prepare_to_enter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"53edc4ca-5c17-4d71-aff5-d4c2b2d2fe83","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-10 03:00:15 +0000 UTC FinishedAt: 2026-07-10 03:00:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflownsxxp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvmppc_run_core","kvmhv_run_single_vcpu","kvmppc_core_prepare_to_enter","kvmppc_prepare_to_enter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"53edc4ca-5c17-4d71-aff5-d4c2b2d2fe83","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-10 03:00:15 +0000 UTC FinishedAt: 2026-07-10 03:00:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflownsxxp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvmppc_run_core","kvmhv_run_single_vcpu","kvmppc_core_prepare_to_enter","kvmppc_prepare_to_enter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"53edc4ca-5c17-4d71-aff5-d4c2b2d2fe83","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-10 03:00:15 +0000 UTC FinishedAt: 2026-07-10 03:40:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflownsxxp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvmppc_run_core","kvmhv_run_single_vcpu","kvmppc_core_prepare_to_enter","kvmppc_prepare_to_enter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"53edc4ca-5c17-4d71-aff5-d4c2b2d2fe83","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-10 03:00:15 +0000 UTC FinishedAt: 2026-07-10 03:40:57 +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:*41474da9-42ff-42d9-bfaa-4cc55c281954,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-workflownsxxp/series-workflownsxxp-convert-artifact-388470495/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": "8aafb082-3c3e-4eb4-9c86-e3d260cb2c4c", "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-workflownsxxp/series-workflownsxxp-build-action-1727538291/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownsxxp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvmppc_run_core","kvmhv_run_single_vcpu","kvmppc_core_prepare_to_enter","kvmppc_prepare_to_enter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"53edc4ca-5c17-4d71-aff5-d4c2b2d2fe83","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-10 03:00:15 +0000 UTC FinishedAt: 2026-07-10 03:40:47 +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:*41474da9-42ff-42d9-bfaa-4cc55c281954,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-workflownsxxp/series-workflownsxxp-convert-artifact-388470495/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": "8aafb082-3c3e-4eb4-9c86-e3d260cb2c4c", "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-workflownsxxp/series-workflownsxxp-build-action-1727538291/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownsxxp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvmppc_run_core","kvmhv_run_single_vcpu","kvmppc_core_prepare_to_enter","kvmppc_prepare_to_enter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"53edc4ca-5c17-4d71-aff5-d4c2b2d2fe83","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-10 03:40:57 +0000 UTC FinishedAt: 2026-07-10 03:40:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflownsxxp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvmppc_run_core","kvmhv_run_single_vcpu","kvmppc_core_prepare_to_enter","kvmppc_prepare_to_enter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"53edc4ca-5c17-4d71-aff5-d4c2b2d2fe83","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-10 03:40:57 +0000 UTC FinishedAt: 2026-07-10 03:40:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflownsxxp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvmppc_run_core","kvmhv_run_single_vcpu","kvmppc_core_prepare_to_enter","kvmppc_prepare_to_enter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"53edc4ca-5c17-4d71-aff5-d4c2b2d2fe83","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-10 03:40:57 +0000 UTC FinishedAt: 2026-07-10 03:42:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflownsxxp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvmppc_run_core","kvmhv_run_single_vcpu","kvmppc_core_prepare_to_enter","kvmppc_prepare_to_enter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"53edc4ca-5c17-4d71-aff5-d4c2b2d2fe83","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-10 03:40:57 +0000 UTC FinishedAt: 2026-07-10 03:42:39 +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:*8aafb082-3c3e-4eb4-9c86-e3d260cb2c4c,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-workflownsxxp/series-workflownsxxp-build-action-1727538291/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-workflownsxxp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvmppc_run_core","kvmhv_run_single_vcpu","kvmppc_core_prepare_to_enter","kvmppc_prepare_to_enter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"53edc4ca-5c17-4d71-aff5-d4c2b2d2fe83","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-10 03:42:49 +0000 UTC FinishedAt: 2026-07-10 03:46:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflownsxxp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvmppc_run_core","kvmhv_run_single_vcpu","kvmppc_core_prepare_to_enter","kvmppc_prepare_to_enter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"53edc4ca-5c17-4d71-aff5-d4c2b2d2fe83","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-10 03:42:49 +0000 UTC FinishedAt: 2026-07-10 03:46:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvmppc_run_core","kvmhv_run_single_vcpu","kvmppc_core_prepare_to_enter","kvmppc_prepare_to_enter"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*11fde95d-e3cf-47a8-b15a-c950dacdfcbe,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*8aafb082-3c3e-4eb4-9c86-e3d260cb2c4c,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-workflownsxxp/series-workflownsxxp-build-action-1651148334/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-workflownsxxp/series-workflownsxxp-build-action-1727538291/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflownsxxp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvmppc_run_core","kvmhv_run_single_vcpu","kvmppc_core_prepare_to_enter","kvmppc_prepare_to_enter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"53edc4ca-5c17-4d71-aff5-d4c2b2d2fe83","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-10 03:42:49 +0000 UTC FinishedAt: 2026-07-10 03:44:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflownsxxp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvmppc_run_core","kvmhv_run_single_vcpu","kvmppc_core_prepare_to_enter","kvmppc_prepare_to_enter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"53edc4ca-5c17-4d71-aff5-d4c2b2d2fe83","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-10 03:42:49 +0000 UTC FinishedAt: 2026-07-10 03:44:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvmppc_run_core","kvmhv_run_single_vcpu","kvmppc_core_prepare_to_enter","kvmppc_prepare_to_enter"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflownsxxp/series-workflownsxxp-convert-artifact-3120683000/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownsxxp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvmppc_run_core","kvmhv_run_single_vcpu","kvmppc_core_prepare_to_enter","kvmppc_prepare_to_enter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"53edc4ca-5c17-4d71-aff5-d4c2b2d2fe83","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-10 03:42:49 +0000 UTC FinishedAt: 2026-07-10 03:42:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflownsxxp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvmppc_run_core","kvmhv_run_single_vcpu","kvmppc_core_prepare_to_enter","kvmppc_prepare_to_enter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"53edc4ca-5c17-4d71-aff5-d4c2b2d2fe83","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-10 03:42:49 +0000 UTC FinishedAt: 2026-07-10 03:42:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflownsxxp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvmppc_run_core","kvmhv_run_single_vcpu","kvmppc_core_prepare_to_enter","kvmppc_prepare_to_enter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"53edc4ca-5c17-4d71-aff5-d4c2b2d2fe83","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-10 03:42:49 +0000 UTC FinishedAt: 2026-07-10 03:42:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflownsxxp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvmppc_run_core","kvmhv_run_single_vcpu","kvmppc_core_prepare_to_enter","kvmppc_prepare_to_enter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"53edc4ca-5c17-4d71-aff5-d4c2b2d2fe83","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-10 03:44:13 +0000 UTC FinishedAt: 2026-07-10 03:46:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflownsxxp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvmppc_run_core","kvmhv_run_single_vcpu","kvmppc_core_prepare_to_enter","kvmppc_prepare_to_enter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"53edc4ca-5c17-4d71-aff5-d4c2b2d2fe83","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-10 03:44:13 +0000 UTC FinishedAt: 2026-07-10 03:46:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*11fde95d-e3cf-47a8-b15a-c950dacdfcbe,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*8aafb082-3c3e-4eb4-9c86-e3d260cb2c4c,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-workflownsxxp/series-workflownsxxp-build-action-1651148334/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-workflownsxxp/series-workflownsxxp-build-action-1727538291/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-workflownsxxp/series-workflownsxxp-convert-artifact-3120683000/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,}