Name: series-workflowbmjjx Phase: Succeeded StartedAt: 2026-08-14 11:40:22 +0000 UTC FinishedAt: 2026-08-14 13:13:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbmjjx[0] Phase: Succeeded StartedAt: 2026-08-14 11:40:22 +0000 UTC FinishedAt: 2026-08-14 12:25:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbmjjx[0].run-triage Phase: Succeeded StartedAt: 2026-08-14 11:40:22 +0000 UTC FinishedAt: 2026-08-14 12:25:52 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "2697ef8943c9985c14708a6429e21812693857b2", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "2697ef8943c9985c14708a6429e21812693857b2", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "fc4ea761-9556-4be2-9192-bad0607dc986" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "kvm_riscv_gstage_map_page", "kvm_riscv_gstage_set_pte" ], "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+CgkJCTx0ZD4yMDI2LzA4LzE0IDEyOjI0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9yaXNjdl9nc3RhZ2VfbWFwX3BhZ2UmIzM0OywKICAgICYjMzQ7a3ZtX3Jpc2N2X2dzdGFnZV9zZXRfcHRlJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgS1ZNIGd1ZXN0IHN0YWdlLTIgcGFnZSB0YWJsZSBtYW5hZ2VtZW50IG9uIFJJU0MtViB0byBwcmV2ZW50IHJlcGxhY2luZyBhbiBleGlzdGluZyBsb3dlci1sZXZlbCBwYWdlIHRhYmxlIGRpcmVjdG9yeSB3aXRoIGEgbGVhZiBtYXBwaW5nIChodWdlIHBhZ2UpLiBJdCBkb2VzIHRoaXMgYnkgcmV0dXJuaW5nIC1FRVhJU1QgYW5kIGZhbGxpbmcgYmFjayB0byBtYXBwaW5nIGF0IGxldmVsIDAgKGJhc2UgcGFnZSBzaXplKS4gVGhlc2UgY2hhbmdlcyBhcmUgcHVyZWx5IHJlbGF0ZWQgdG8gcGFnZSB0YWJsZSBsb2dpYywgcGh5c2ljYWwgYWRkcmVzcyBjYWxjdWxhdGlvbnMsIGFuZCBQVEUgbWFuaXB1bGF0aW9uLiBUaGVyZSBhcmUgbm8gbmV3IGFsbG9jYXRpb25zLCBubyBzdHJ1Y3R1cmVzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBhbmQgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyB1c2VkIGluIGNvbnRyb2wgZmxvdyBvciBsZWFrZWQuIEFueSBwb3RlbnRpYWwgYnVncyBpbnRyb2R1Y2VkIGhlcmUgKGUuZy4sIGluY29ycmVjdCBwb2ludGVycyBvciBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzKSB3b3VsZCBiZSBjYXVnaHQgYnkgS0FTQU4gb3Igc3RhbmRhcmQga2VybmVsIHRlc3RpbmcuIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBLVk0gUklTQy1WIGd1ZXN0IHN0YWdlLTIgcGFnZSB0YWJsZSBtYW5hZ2VtZW50IHRvIHByZXZlbnQgcmVwbGFjaW5nIGFuIGV4aXN0aW5nIGxvd2VyLWxldmVsIHBhZ2UgdGFibGUgd2l0aCBhIGxlYWYgbWFwcGluZywgZmFsbGluZyBiYWNrIHRvIGEgc21hbGxlciBwYWdlIHNpemUgaW5zdGVhZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgcmVhY2hhYmxlIGNvcmUgS1ZNIGZlYXR1cmUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTI6MjQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA2Yjk5MTMxZDliZjNkNWVjOGI0ZjhiMjg4OTBiNWJiN2VlNWNlZjI5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBBdWcgMTQgMTI6MjQ6MjIgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rdm0vZ3N0YWdlLmMgYi9hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuY1xuaW5kZXggZTUwMDJjYjljYmVmMS4uMjNjYjM1ZTM2MDczYiAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuY1xuQEAgLTE3NCw2ICYjNDM7MTc0LDEyIEBAIGludCBrdm1fcmlzY3ZfZ3N0YWdlX3NldF9wdGUoc3RydWN0IGt2bV9nc3RhZ2UgKmdzdGFnZSxcbiBcbiBcdGlmIChwdGVfdmFsKCpwdGVwKSAhPSBwdGVfdmFsKG1hcC1cdTAwM2VwdGUpKSB7XG4gXHRcdGJvb2wgd2FzX2ludmFsaWQgPSAhcHRlX3ZhbCgqcHRlcCk7XG4mIzQzO1xuJiM0MztcdFx0LyogQXZvaWQgcmVwbGFjaW5nIGFuIGV4aXN0aW5nIGxvd2VyLWxldmVsIHRhYmxlIHdpdGggYSBsZWFmIG1hcHBpbmcuICovXG4mIzQzO1x0XHRpZiAoIWdzdGFnZV9wdGVfbGVhZihwdGVwKSBcdTAwMjZcdTAwMjYgIXdhc19pbnZhbGlkIFx1MDAyNlx1MDAyNlxuJiM0MztcdFx0ICAgIGdzdGFnZV9wdGVfbGVhZihcdTAwMjZtYXAtXHUwMDNlcHRlKSlcbiYjNDM7XHRcdFx0cmV0dXJuIC1FRVhJU1Q7XG4mIzQzO1xuIFx0XHRzZXRfcHRlKHB0ZXAsIG1hcC1cdTAwM2VwdGUpO1xuIFx0XHRpZiAoZ3N0YWdlX3B0ZV9sZWFmKHB0ZXApIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgISh3YXNfaW52YWxpZCBcdTAwMjZcdTAwMjYgcmlzY3ZfaGFzX2V4dGVuc2lvbl91bmxpa2VseShSSVNDVl9JU0FfRVhUX1NWVlBUQykpKVxuQEAgLTIxMSwxMiAmIzQzOzIxNywxMyBAQCBpbnQga3ZtX3Jpc2N2X2dzdGFnZV9tYXBfcGFnZShzdHJ1Y3Qga3ZtX2dzdGFnZSAqZ3N0YWdlLFxuIFx0XHRcdCAgICAgIHN0cnVjdCBrdm1fZ3N0YWdlX21hcHBpbmcgKm91dF9tYXApXG4ge1xuIFx0Ym9vbCBmb3VuZF9sZWFmO1xuJiM0MztcdHBoeXNfYWRkcl90IGh1Z2VfcGFnZV9vZmZzZXQ7XG4gXHR1MzIgcHRlcF9sZXZlbDtcbiBcdHBncHJvdF90IHByb3Q7XG4gXHRwdGVfdCAqcHRlcDtcbiBcdGludCByZXQ7XG4gXG4tXHRvdXRfbWFwLVx1MDAzZWFkZHIgPSBncGE7XG4mIzQzO1x0b3V0X21hcC1cdTAwM2VhZGRyID0gZ3BhIFx1MDAyNiBQQUdFX01BU0s7XG4gXHRvdXRfbWFwLVx1MDAzZWxldmVsID0gMDtcbiBcbiBcdHJldCA9IGdzdGFnZV9wYWdlX3NpemVfdG9fbGV2ZWwoZ3N0YWdlLCBwYWdlX3NpemUsIFx1MDAyNm91dF9tYXAtXHUwMDNlbGV2ZWwpO1xuQEAgLTI4Nyw3ICYjNDM7Mjk0LDE4IEBAIGludCBrdm1fcmlzY3ZfZ3N0YWdlX21hcF9wYWdlKHN0cnVjdCBrdm1fZ3N0YWdlICpnc3RhZ2UsXG4gXHRvdXRfbWFwLVx1MDAzZXB0ZSA9IHBmbl9wdGUoUEZOX0RPV04oaHBhKSwgcHJvdCk7XG4gXHRvdXRfbWFwLVx1MDAzZXB0ZSA9IHB0ZV9ta2RpcnR5KG91dF9tYXAtXHUwMDNlcHRlKTtcbiBcbi1cdHJldHVybiBrdm1fcmlzY3ZfZ3N0YWdlX3NldF9wdGUoZ3N0YWdlLCBwY2FjaGUsIG91dF9tYXApO1xuJiM0MztcdHJldCA9IGt2bV9yaXNjdl9nc3RhZ2Vfc2V0X3B0ZShnc3RhZ2UsIHBjYWNoZSwgb3V0X21hcCk7XG4mIzQzO1x0aWYgKHJldCA9PSAtRUVYSVNUKSB7XG4mIzQzO1x0XHRodWdlX3BhZ2Vfb2Zmc2V0ID0gb3V0X21hcC1cdTAwM2VhZGRyIFx1MDAyNiAocGFnZV9zaXplIC0gMSk7XG4mIzQzO1x0XHRocGEgJiM0Mzs9IGh1Z2VfcGFnZV9vZmZzZXQ7XG4mIzQzO1x0XHRvdXRfbWFwLVx1MDAzZWxldmVsID0gMDtcbiYjNDM7XHRcdG91dF9tYXAtXHUwMDNlcHRlID0gcGZuX3B0ZShQRk5fRE9XTihocGEpLCBwcm90KTtcbiYjNDM7XHRcdG91dF9tYXAtXHUwMDNlcHRlID0gcHRlX21rZGlydHkob3V0X21hcC1cdTAwM2VwdGUpO1xuJiM0MztcbiYjNDM7XHRcdHJldCA9IGt2bV9yaXNjdl9nc3RhZ2Vfc2V0X3B0ZShnc3RhZ2UsIHBjYWNoZSwgb3V0X21hcCk7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyZXR1cm4gcmV0O1xuIH1cbiBcbiBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgbWFrZV9jaGlsZF9wdGUodW5zaWduZWQgbG9uZyBodWdlX3B0ZSwgaW50IGluZGV4LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDEyOjI0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1fcmlzY3ZfZ3N0YWdlX21hcF9wYWdlJiMzNDssCiAgICAmIzM0O2t2bV9yaXNjdl9nc3RhZ2Vfc2V0X3B0ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBLVk0gUklTQy1WIGd1ZXN0IHN0YWdlLTIgcGFnZSB0YWJsZSBtYW5hZ2VtZW50IHRvIHByZXZlbnQgcmVwbGFjaW5nIGFuIGV4aXN0aW5nIGxvd2VyLWxldmVsIHBhZ2UgdGFibGUgd2l0aCBhIGxlYWYgbWFwcGluZywgZmFsbGluZyBiYWNrIHRvIGEgc21hbGxlciBwYWdlIHNpemUgaW5zdGVhZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgcmVhY2hhYmxlIGNvcmUgS1ZNIGZlYXR1cmUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA2Yjk5MTMxZDliZjNkNWVjOGI0ZjhiMjg4OTBiNWJiN2VlNWNlZjI5CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBBdWcgMTQgMTI6MjQ6MjIgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYyBiL2FyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jCmluZGV4IGU1MDAyY2I5Y2JlZjEuLjIzY2IzNWUzNjA3M2IgMTAwNjQ0Ci0tLSBhL2FyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jCkBAIC0xNzQsNiAmIzQzOzE3NCwxMiBAQCBpbnQga3ZtX3Jpc2N2X2dzdGFnZV9zZXRfcHRlKHN0cnVjdCBrdm1fZ3N0YWdlICpnc3RhZ2UsCiAKIAlpZiAocHRlX3ZhbCgqcHRlcCkgIT0gcHRlX3ZhbChtYXAtJmd0O3B0ZSkpIHsKIAkJYm9vbCB3YXNfaW52YWxpZCA9ICFwdGVfdmFsKCpwdGVwKTsKJiM0MzsKJiM0MzsJCS8qIEF2b2lkIHJlcGxhY2luZyBhbiBleGlzdGluZyBsb3dlci1sZXZlbCB0YWJsZSB3aXRoIGEgbGVhZiBtYXBwaW5nLiAqLwomIzQzOwkJaWYgKCFnc3RhZ2VfcHRlX2xlYWYocHRlcCkgJmFtcDsmYW1wOyAhd2FzX2ludmFsaWQgJmFtcDsmYW1wOwomIzQzOwkJICAgIGdzdGFnZV9wdGVfbGVhZigmYW1wO21hcC0mZ3Q7cHRlKSkKJiM0MzsJCQlyZXR1cm4gLUVFWElTVDsKJiM0MzsKIAkJc2V0X3B0ZShwdGVwLCBtYXAtJmd0O3B0ZSk7CiAJCWlmIChnc3RhZ2VfcHRlX2xlYWYocHRlcCkgJmFtcDsmYW1wOwogCQkgICAgISh3YXNfaW52YWxpZCAmYW1wOyZhbXA7IHJpc2N2X2hhc19leHRlbnNpb25fdW5saWtlbHkoUklTQ1ZfSVNBX0VYVF9TVlZQVEMpKSkKQEAgLTIxMSwxMiAmIzQzOzIxNywxMyBAQCBpbnQga3ZtX3Jpc2N2X2dzdGFnZV9tYXBfcGFnZShzdHJ1Y3Qga3ZtX2dzdGFnZSAqZ3N0YWdlLAogCQkJICAgICAgc3RydWN0IGt2bV9nc3RhZ2VfbWFwcGluZyAqb3V0X21hcCkKIHsKIAlib29sIGZvdW5kX2xlYWY7CiYjNDM7CXBoeXNfYWRkcl90IGh1Z2VfcGFnZV9vZmZzZXQ7CiAJdTMyIHB0ZXBfbGV2ZWw7CiAJcGdwcm90X3QgcHJvdDsKIAlwdGVfdCAqcHRlcDsKIAlpbnQgcmV0OwogCi0Jb3V0X21hcC0mZ3Q7YWRkciA9IGdwYTsKJiM0MzsJb3V0X21hcC0mZ3Q7YWRkciA9IGdwYSAmYW1wOyBQQUdFX01BU0s7CiAJb3V0X21hcC0mZ3Q7bGV2ZWwgPSAwOwogCiAJcmV0ID0gZ3N0YWdlX3BhZ2Vfc2l6ZV90b19sZXZlbChnc3RhZ2UsIHBhZ2Vfc2l6ZSwgJmFtcDtvdXRfbWFwLSZndDtsZXZlbCk7CkBAIC0yODcsNyAmIzQzOzI5NCwxOCBAQCBpbnQga3ZtX3Jpc2N2X2dzdGFnZV9tYXBfcGFnZShzdHJ1Y3Qga3ZtX2dzdGFnZSAqZ3N0YWdlLAogCW91dF9tYXAtJmd0O3B0ZSA9IHBmbl9wdGUoUEZOX0RPV04oaHBhKSwgcHJvdCk7CiAJb3V0X21hcC0mZ3Q7cHRlID0gcHRlX21rZGlydHkob3V0X21hcC0mZ3Q7cHRlKTsKIAotCXJldHVybiBrdm1fcmlzY3ZfZ3N0YWdlX3NldF9wdGUoZ3N0YWdlLCBwY2FjaGUsIG91dF9tYXApOwomIzQzOwlyZXQgPSBrdm1fcmlzY3ZfZ3N0YWdlX3NldF9wdGUoZ3N0YWdlLCBwY2FjaGUsIG91dF9tYXApOwomIzQzOwlpZiAocmV0ID09IC1FRVhJU1QpIHsKJiM0MzsJCWh1Z2VfcGFnZV9vZmZzZXQgPSBvdXRfbWFwLSZndDthZGRyICZhbXA7IChwYWdlX3NpemUgLSAxKTsKJiM0MzsJCWhwYSAmIzQzOz0gaHVnZV9wYWdlX29mZnNldDsKJiM0MzsJCW91dF9tYXAtJmd0O2xldmVsID0gMDsKJiM0MzsJCW91dF9tYXAtJmd0O3B0ZSA9IHBmbl9wdGUoUEZOX0RPV04oaHBhKSwgcHJvdCk7CiYjNDM7CQlvdXRfbWFwLSZndDtwdGUgPSBwdGVfbWtkaXJ0eShvdXRfbWFwLSZndDtwdGUpOwomIzQzOwomIzQzOwkJcmV0ID0ga3ZtX3Jpc2N2X2dzdGFnZV9zZXRfcHRlKGdzdGFnZSwgcGNhY2hlLCBvdXRfbWFwKTsKJiM0MzsJfQomIzQzOwomIzQzOwlyZXR1cm4gcmV0OwogfQogCiBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgbWFrZV9jaGlsZF9wdGUodW5zaWduZWQgbG9uZyBodWdlX3B0ZSwgaW50IGluZGV4LAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMjoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTg3CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMjc5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgVGhpcyBLVk0gUklTQy1WIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIOKAkyBsb29rcyBsaWtlIGl0JiMzOTtzIHR3ZWFraW5nIGBhcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuY2AuIFNwZWNpZmljYWxseSwgaXQmIzM5O3MgbWVzc2luZyB3aXRoIGBrdm1fcmlzY3ZfZ3N0YWdlX3NldF9wdGVgIGFuZCBga3ZtX3Jpc2N2X2dzdGFnZV9tYXBfcGFnZWAuIEFoLCBnb3QgaXQuIEl0IGFkZHMgYSBjaGVjayBpbiBga3ZtX3Jpc2N2X2dzdGFnZV9zZXRfcHRlYCB0byBwcmV2ZW50IG92ZXJ3cml0aW5nIGFuIGV4aXN0aW5nIGxvd2VyLWxldmVsIHBhZ2UgdGFibGUgZW50cnkgd2l0aCBhIGxlYWYgbWFwcGluZywgYW5kIGlmIGl0IGRvZXMsIGl0IHJldHVybnMgYC1FRVhJU1RgLiBUaGUgYGt2bV9yaXNjdl9nc3RhZ2VfbWFwX3BhZ2VgIGZ1bmN0aW9uIHRoZW4gaGFuZGxlcyB0aGlzIGAtRUVYSVNUYCBlcnJvciBieSBmYWxsaW5nIGJhY2sgdG8gdXNpbmcgYSBzbWFsbGVyIHBhZ2Ugc2l6ZSAobGV2ZWwgMCkgYW5kIHJlLXNldHRpbmcgdGhlIFBURS4KCkFscmlnaHQsIGxldCYjMzk7cyBhc3Nlc3MgaXRzIGZ1enppbmcgcG90ZW50aWFsLiBUaGlzIGlzIGRlZmluaXRlbHkgd29ydGggYSBsb29rOyBpdCYjMzk7cyBhIEtWTSBSSVNDLVYgcGF0Y2gsIHNvIHRoZSBzY29wZSBpcyBzcGVjaWZpYyBidXQgZGVmaW5pdGVseSBoYXMgYXR0YWNrIHN1cmZhY2UuIEl0JiMzOTtzIG1vZGlmeWluZyBob3cgcGFnZSB0YWJsZXMgYXJlIG1hbmFnZWQgZHVyaW5nIGd1ZXN0IHN0YWdlLTIgdHJhbnNsYXRpb24uIFRoaXMgaXMgaHVnZSDigJMgYW55dGhpbmcgcmVsYXRlZCB0byBwYWdlIHRhYmxlcywgZXNwZWNpYWxseSBpbiB0aGUgY29udGV4dCBvZiB2aXJ0dWFsaXphdGlvbiwgaXMgYSBwcmltZSB0YXJnZXQuIEFuZCBzaW5jZSBpdCYjMzk7cyBLVk0sIHRoYXQgbWVhbnMgaXQmIzM5O3MgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHRocm91Z2ggS1ZNIGlvY3RscyBsaWtlIGBLVk1fUlVOYCBhbmQgaG93IG1lbW9yeSByZWdpb25zIGFyZSBzZXQgdXAuIEFic29sdXRlbHksIHRoaXMgaXMgcmlwZSBmb3IgZnV6emluZy4KCk5vdywgd2hlcmUgYXJlIHRoZSBjb25maWcgb3B0aW9ucz8gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgaXMgY29tcGlsZWQuIExldCYjMzk7cyBzZWUuLi4gYGFyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jYCBpcyBjb21waWxlZCB3aGVuIGBDT05GSUdfS1ZNYCBpcyBlbmFibGVkIG9uIFJJU0MtVi4gVGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnQuIEkgY2FuIHByb2JhYmx5IGNvbmZpcm0gdGhpcyBieSBjaGVja2luZyBgYXJjaC9yaXNjdi9rdm0vTWFrZWZpbGVgIG9yIGBhcmNoL3Jpc2N2L2t2bS9LY29uZmlnYCBmb3IgdGhlIGJ1aWxkIGRlcGVuZGVuY2llcywgYWx0aG91Z2ggaXQmIzM5O3MgdXN1YWxseSBwcmV0dHkgb2J2aW91cy4gSSYjMzk7bGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhlIEtjb25maWcsIGJ1dCB0aGF0IHNob3VsZCBiZSBzdHJhaWdodGZvcndhcmQuIFJpZ2h0LCBsZXQmIzM5O3MgZ2V0IHRvIHdvcmshCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTI6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Z3N0YWdlLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2t2bS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9rdm0vTWFrZWZpbGU9MTY9a3ZtLXkgJiM0Mzs9IGFpYV9pbXNpYy5vXG5hcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZToxNzprdm0teSAmIzQzOz0gZ3N0YWdlLm9cbmFyY2gvcmlzY3Yva3ZtL01ha2VmaWxlLTE4LWt2bS15ICYjNDM7PSBpc2Eub1xuLS1cbmFyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jPTMyOD1ib29sIGt2bV9yaXNjdl9nc3RhZ2Vfc3BsaXRfaHVnZShzdHJ1Y3Qga3ZtX2dzdGFnZSAqZ3N0YWdlLFxuLS1cbmFyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jLTM4OS1cbmFyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jOjM5MDpib29sIGt2bV9yaXNjdl9nc3RhZ2Vfb3BfcHRlKHN0cnVjdCBrdm1fZ3N0YWdlICpnc3RhZ2UsIGdwYV90IGFkZHIsXG5hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYzozOTE6XHRcdFx0ICAgICBwdGVfdCAqcHRlcCwgdTMyIHB0ZXBfbGV2ZWwsIGVudW0ga3ZtX3Jpc2N2X2dzdGFnZV9vcCBvcClcbmFyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jLTM5Mi17XG4tLVxuYXJjaC9yaXNjdi9rdm0vZ3N0YWdlLmMtNDE3LVx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBQVFJTX1BFUl9QVEU7IGkmIzQzOyYjNDM7KVxuYXJjaC9yaXNjdi9rdm0vZ3N0YWdlLmM6NDE4Olx0XHRcdGZsdXNoIHw9IGt2bV9yaXNjdl9nc3RhZ2Vfb3BfcHRlKGdzdGFnZSwgYWRkciAmIzQzOyBpICogbmV4dF9wYWdlX3NpemUsXG5hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYy00MTktXHRcdFx0XHRcdFx0XHQgXHUwMDI2bmV4dF9wdGVwW2ldLCBuZXh0X3B0ZXBfbGV2ZWwsIG9wKTtcbi0tXG5hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYz00MzU9Ym9vbCBrdm1fcmlzY3ZfZ3N0YWdlX3VubWFwX3JhbmdlKHN0cnVjdCBrdm1fZ3N0YWdlICpnc3RhZ2UsXG4tLVxuYXJjaC9yaXNjdi9rdm0vZ3N0YWdlLmMtNDU1LVx0XHRcdGlmICghKGFkZHIgXHUwMDI2IChwYWdlX3NpemUgLSAxKSkgXHUwMDI2XHUwMDI2ICgoZW5kIC0gYWRkcikgXHUwMDNlPSBwYWdlX3NpemUpKVxuYXJjaC9yaXNjdi9rdm0vZ3N0YWdlLmM6NDU2Olx0XHRcdFx0Zmx1c2ggfD0ga3ZtX3Jpc2N2X2dzdGFnZV9vcF9wdGUoZ3N0YWdlLCBhZGRyLCBwdGVwLFxuYXJjaC9yaXNjdi9rdm0vZ3N0YWdlLmMtNDU3LVx0XHRcdFx0XHRcdFx0XHQgcHRlcF9sZXZlbCwgR1NUQUdFX09QX0NMRUFSKTtcbi0tXG5hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYz00Nzc9Ym9vbCBrdm1fcmlzY3ZfZ3N0YWdlX3dwX3JhbmdlKHN0cnVjdCBrdm1fZ3N0YWdlICpnc3RhZ2UsIGdwYV90IHN0YXJ0LCBncGFfdCBlbmQpXG4tLVxuYXJjaC9yaXNjdi9rdm0vZ3N0YWdlLmMtNDk2LVx0XHRcdGFkZHIgPSBBTElHTl9ET1dOKGFkZHIsIHBhZ2Vfc2l6ZSk7XG5hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYzo0OTc6XHRcdFx0Zmx1c2ggfD0ga3ZtX3Jpc2N2X2dzdGFnZV9vcF9wdGUoZ3N0YWdlLCBhZGRyLCBwdGVwLFxuYXJjaC9yaXNjdi9rdm0vZ3N0YWdlLmMtNDk4LVx0XHRcdFx0XHRcdFx0IHB0ZXBfbGV2ZWwsIEdTVEFHRV9PUF9XUCk7XG4tLVxuYXJjaC9yaXNjdi9rdm0vZ3N0YWdlLmM9NTI2PWJvb2wga3ZtX3Jpc2N2X2dzdGFnZV93cF9wdF9tYXNrZWQoc3RydWN0IGt2bV9nc3RhZ2UgKmdzdGFnZSwgZ2ZuX3QgYmFzZV9nZm4sXG4tLVxuYXJjaC9yaXNjdi9rdm0vZ3N0YWdlLmMtNTUwLVxuYXJjaC9yaXNjdi9rdm0vZ3N0YWdlLmM6NTUxOlx0XHRcdGZsdXNoIHw9IGt2bV9yaXNjdl9nc3RhZ2Vfb3BfcHRlKGdzdGFnZSwgYWRkciwgcHRlcCxcbmFyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jLTU1Mi1cdFx0XHRcdFx0XHRcdCBwdGVwX2xldmVsLCBHU1RBR0VfT1BfV1ApO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDEyOjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxOTkKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIGEgZmlyc3QtcGVyc29uIGV4cGVydCBzdW1tYXJ5OgoKKipEaWdnaW5nIGludG8gdGhlIFJJU0MtViBLVk0gQ29tcGlsYXRpb24gUHJvY2VzcyoqCgpBbHJpZ2h0LCBzbyB0aGUgZmlsZSB3YXMgY29tcGlsZWQgdXNpbmcgYGt2bS15YC4gTXkgaW1tZWRpYXRlIHJlYWN0aW9uIGlzIHRvIHRyYWNrIGRvd24gZXhhY3RseSBob3cgdGhpcyBga3ZtLXlgIGlzIGNvbmZpZ3VyZWQgd2l0aGluIHRoZSBidWlsZCBzeXN0ZW0uIEdpdmVuIHRoaXMgaXMgUklTQy1WIEtWTSwgbXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gZGl2ZSBpbnRvIHRoZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgbWFrZWZpbGVzLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBjaGVjayBgYXJjaC9yaXNjdi9rdm0vTWFrZWZpbGVgLiBUaGF0JiMzOTtzIHdoZXJlIEkgZXhwZWN0IHRvIGZpbmQgdGhlIGNvbmRpdGlvbmFsIGxvZ2ljIHRoYXQgZGVmaW5lcyBob3cgYGt2bS15YCBpcyBpbnRlcnByZXRlZCwgd2hhdCBzb3VyY2UgZmlsZXMgaXQgaW5jbHVkZXMsIGFuZCBhbnkgb3RoZXIgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgZm9yIHRoZSBSSVNDLVYgS1ZNIHN1YnN5c3RlbSB3aXRoaW4gdGhlIGJyb2FkZXIga2VybmVsIGJ1aWxkIHByb2Nlc3MuIFRpbWUgdG8gc2VlIHdoYXQgdGhhdCBNYWtlZmlsZSByZXZlYWxzLiBUaGlzIGtpbmQgb2YgaW52ZXN0aWdhdGlvbiBpcyBlc3NlbnRpYWwgdG8gdW5kZXJzdGFuZGluZyB0aGUgYnVpbGQgYW5kIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLiBJJiMzOTttIGtlZW4gdG8gZmlndXJlIG91dCB3aHkgdGhpcyBmbGFnIHdhcyB1c2VkIGFuZCB3aGF0IGl0IG1lYW5zIGZvciB0aGUgcmVzdWx0aW5nIGJpbmFyeS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMjoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm0teSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3Yva3ZtL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3Yva3ZtL01ha2VmaWxlPTEwPW9iai0kKENPTkZJR19LVk0pICYjNDM7PSBrdm0ub1xuLS1cbmFyY2gvcmlzY3Yva3ZtL01ha2VmaWxlLTEyLSMgT3JkZXJlZCBhbHBoYWJldGljYWxseVxuYXJjaC9yaXNjdi9rdm0vTWFrZWZpbGU6MTM6a3ZtLXkgJiM0Mzs9IGFpYS5vXG5hcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZToxNDprdm0teSAmIzQzOz0gYWlhX2FwbGljLm9cbmFyY2gvcmlzY3Yva3ZtL01ha2VmaWxlOjE1Omt2bS15ICYjNDM7PSBhaWFfZGV2aWNlLm9cbmFyY2gvcmlzY3Yva3ZtL01ha2VmaWxlOjE2Omt2bS15ICYjNDM7PSBhaWFfaW1zaWMub1xuYXJjaC9yaXNjdi9rdm0vTWFrZWZpbGU6MTc6a3ZtLXkgJiM0Mzs9IGdzdGFnZS5vXG5hcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZToxODprdm0teSAmIzQzOz0gaXNhLm9cbmFyY2gvcmlzY3Yva3ZtL01ha2VmaWxlOjE5Omt2bS15ICYjNDM7PSBtYWluLm9cbmFyY2gvcmlzY3Yva3ZtL01ha2VmaWxlOjIwOmt2bS15ICYjNDM7PSBtbXUub1xuYXJjaC9yaXNjdi9rdm0vTWFrZWZpbGU6MjE6a3ZtLXkgJiM0Mzs9IG5hY2wub1xuYXJjaC9yaXNjdi9rdm0vTWFrZWZpbGU6MjI6a3ZtLXkgJiM0Mzs9IHRsYi5vXG5hcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZToyMzprdm0teSAmIzQzOz0gdmNwdS5vXG5hcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZToyNDprdm0teSAmIzQzOz0gdmNwdV9jb25maWcub1xuYXJjaC9yaXNjdi9rdm0vTWFrZWZpbGU6MjU6a3ZtLXkgJiM0Mzs9IHZjcHVfZXhpdC5vXG5hcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZToyNjprdm0teSAmIzQzOz0gdmNwdV9mcC5vXG5hcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZToyNzprdm0teSAmIzQzOz0gdmNwdV9pbnNuLm9cbmFyY2gvcmlzY3Yva3ZtL01ha2VmaWxlOjI4Omt2bS15ICYjNDM7PSB2Y3B1X29uZXJlZy5vXG5hcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZS0yOS1rdm0tJChDT05GSUdfUklTQ1ZfUE1VX1NCSSkgJiM0Mzs9IHZjcHVfcG11Lm9cbmFyY2gvcmlzY3Yva3ZtL01ha2VmaWxlOjMwOmt2bS15ICYjNDM7PSB2Y3B1X3NiaS5vXG5hcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZTozMTprdm0teSAmIzQzOz0gdmNwdV9zYmlfYmFzZS5vXG5hcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZTozMjprdm0teSAmIzQzOz0gdmNwdV9zYmlfZm9yd2FyZC5vXG5hcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZTozMzprdm0teSAmIzQzOz0gdmNwdV9zYmlfZndmdC5vXG5hcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZTozNDprdm0teSAmIzQzOz0gdmNwdV9zYmlfaHNtLm9cbmFyY2gvcmlzY3Yva3ZtL01ha2VmaWxlLTM1LWt2bS0kKENPTkZJR19SSVNDVl9QTVVfU0JJKSAmIzQzOz0gdmNwdV9zYmlfcG11Lm9cbmFyY2gvcmlzY3Yva3ZtL01ha2VmaWxlOjM2Omt2bS15ICYjNDM7PSB2Y3B1X3NiaV9yZXBsYWNlLm9cbmFyY2gvcmlzY3Yva3ZtL01ha2VmaWxlOjM3Omt2bS15ICYjNDM7PSB2Y3B1X3NiaV9zdGEub1xuYXJjaC9yaXNjdi9rdm0vTWFrZWZpbGU6Mzg6a3ZtLXkgJiM0Mzs9IHZjcHVfc2JpX3N5c3RlbS5vXG5hcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZS0zOS1rdm0tJChDT05GSUdfUklTQ1ZfU0JJX1YwMSkgJiM0Mzs9IHZjcHVfc2JpX3YwMS5vXG5hcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZTo0MDprdm0teSAmIzQzOz0gdmNwdV9zd2l0Y2gub1xuYXJjaC9yaXNjdi9rdm0vTWFrZWZpbGU6NDE6a3ZtLXkgJiM0Mzs9IHZjcHVfdGltZXIub1xuYXJjaC9yaXNjdi9rdm0vTWFrZWZpbGU6NDI6a3ZtLXkgJiM0Mzs9IHZjcHVfdmVjdG9yLm9cbmFyY2gvcmlzY3Yva3ZtL01ha2VmaWxlOjQzOmt2bS15ICYjNDM7PSB2bS5vXG5hcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZTo0NDprdm0teSAmIzQzOz0gdm1pZC5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTI6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTM3MwoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDY3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHRoZSBzaXR1YXRpb246CgoqKkRpdmluZyBpbnRvIHRoZSBLVk0gUklTQy1WIFBhdGNoKioKCk9rYXksIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IHNvbWV0aGluZyByZWxhdGVkIHRvIEtWTSBjb25maWd1cmF0aW9uLCBzcGVjaWZpY2FsbHkgdGhlIGBDT05GSUdfS1ZNYCBkaXJlY3RpdmUuIFRoYXQmIzM5O3Mgb3VyIHN0YXJ0aW5nIHBvaW50LiBGcm9tIHRoZXJlLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgbWVhdCBvZiB0aGUgY2hhbmdlLiBJdCBsb29rcyBsaWtlIHRoZSBwYXRjaCBpcyBrZXllZCBhcm91bmQgdHdvIGtleSBmdW5jdGlvbnM6IGBrdm1fcmlzY3ZfZ3N0YWdlX3NldF9wdGVgIGFuZCBga3ZtX3Jpc2N2X2dzdGFnZV9tYXBfcGFnZWAuIE15IG5leHQgaW1tZWRpYXRlIHF1ZXN0aW9ucyBhcmU6IEFyZSB0aGVzZSBmdW5jdGlvbnMgZXhwb3J0ZWQsIG9yIGFyZSB0aGV5IHN0YXRpYyB3aXRoaW4gYSBtb2R1bGU/IFVuZGVyc3RhbmRpbmcgdGhlaXIgc2NvcGUgaXMgY3JpdGljYWwgdG8gYXNzZXNzIHRoZSBpbXBhY3Qgb2YgdGhlc2UgY2hhbmdlcy4gS25vd2luZyB0aGF0IHdpbGwgZ2l2ZSBtZSBhIGJldHRlciBoYW5kbGUgb24gcG90ZW50aWFsIGRlcGVuZGVuY2llcyBhbmQgd2hlcmUgdGhpcyBtb2RpZmljYXRpb24gc2l0cyB3aXRoaW4gdGhlIGJyb2FkZXIgS1ZNIFJJU0MtViBhcmNoaXRlY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTI6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX3Jpc2N2X2dzdGFnZV9tYXBfcGFnZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3Yva3ZtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYz0xOTI9c3RhdGljIHZvaWQga3ZtX3Jpc2N2X2dzdGFnZV91cGRhdGVfcHRlX3Byb3Qoc3RydWN0IGt2bV9nc3RhZ2UgKmdzdGFnZSwgdTMyIGxldmVsLFxuLS1cbmFyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jLTIxMi1cbmFyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jOjIxMzppbnQga3ZtX3Jpc2N2X2dzdGFnZV9tYXBfcGFnZShzdHJ1Y3Qga3ZtX2dzdGFnZSAqZ3N0YWdlLFxuYXJjaC9yaXNjdi9rdm0vZ3N0YWdlLmMtMjE0LVx0XHRcdCAgICAgIHN0cnVjdCBrdm1fbW11X21lbW9yeV9jYWNoZSAqcGNhY2hlLFxuLS1cbmFyY2gvcmlzY3Yva3ZtL21tdS5jPTYyMz1pbnQga3ZtX3Jpc2N2X21tdV9tYXAoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX21lbW9yeV9zbG90ICptZW1zbG90LFxuLS1cbmFyY2gvcmlzY3Yva3ZtL21tdS5jLTczNC1cdFx0bWFya19wYWdlX2RpcnR5X2luX3Nsb3Qoa3ZtLCBtZW1zbG90LCBnZm4pO1xuYXJjaC9yaXNjdi9rdm0vbW11LmM6NzM1Olx0XHRyZXQgPSBrdm1fcmlzY3ZfZ3N0YWdlX21hcF9wYWdlKFx1MDAyNmdzdGFnZSwgcGNhY2hlLCBncGEsIGhmbiBcdTAwM2NcdTAwM2MgUEFHRV9TSElGVCxcbmFyY2gvcmlzY3Yva3ZtL21tdS5jLTczNi1cdFx0XHRcdFx0XHR2bWFfcGFnZXNpemUsIGZhbHNlLCB0cnVlLCBvdXRfbWFwKTtcbmFyY2gvcmlzY3Yva3ZtL21tdS5jLTczNy1cdH0gZWxzZSB7XG5hcmNoL3Jpc2N2L2t2bS9tbXUuYzo3Mzg6XHRcdHJldCA9IGt2bV9yaXNjdl9nc3RhZ2VfbWFwX3BhZ2UoXHUwMDI2Z3N0YWdlLCBwY2FjaGUsIGdwYSwgaGZuIFx1MDAzY1x1MDAzYyBQQUdFX1NISUZULFxuYXJjaC9yaXNjdi9rdm0vbW11LmMtNzM5LVx0XHRcdFx0XHRcdHZtYV9wYWdlc2l6ZSwgdHJ1ZSwgdHJ1ZSwgb3V0X21hcCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTI6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjA5MAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDczCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRoaW5raW5nIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBSSVNDLVYgS1ZNIFBhZ2UgRmF1bHQgSGFuZGxlcioqCgpPa2F5LCBzbyBJJiMzOTttIHRyYWNraW5nIGRvd24gaG93IHBhZ2UgZmF1bHRzIGFyZSBoYW5kbGVkIGluIHRoZSBLVk0gUklTQy1WIGltcGxlbWVudGF0aW9uLiBUaGUga2VybmVsIHRlbGxzIG1lIHRoYXQgYGt2bV9yaXNjdl9tbXVfbWFwYCBpcyB0aGUgY3J1Y2lhbCBwYWdlIGZhdWx0IGhhbmRsZXIuIE5vdywgSSBzZWUgdGhhdCBga3ZtX3Jpc2N2X2dzdGFnZV9tYXBfcGFnZWAgaXMgYmVpbmcgY2FsbGVkICpieSogYGt2bV9yaXNjdl9tbXVfbWFwYC4gVGhpcyBzdWdnZXN0cyBhIGhpZXJhcmNoaWNhbCBzdHJ1Y3R1cmUsIHdoZXJlIGBrdm1fcmlzY3ZfbW11X21hcGAgaXMgdGhlIHRvcC1sZXZlbCBoYW5kbGVyIHRoYXQgdGhlbiBkZWxlZ2F0ZXMgc29tZSBvZiB0aGUgYWN0dWFsIG1hcHBpbmcgd29yayB0byBga3ZtX3Jpc2N2X2dzdGFnZV9tYXBfcGFnZWAuIEdpdmVuIHRoYXQgYGt2bV9yaXNjdl9tbXVfbWFwYCBpcyBpZGVudGlmaWVkIGFzIHRoZSAmIzM0O21haW4mIzM0OyBoYW5kbGVyLCBpdCBtYWtlcyBzZW5zZSB0byBzdGFydCBkaWdnaW5nIGluIHRoZXJlLiBMZXQmIzM5O3Mgc3RhcnQgYnkgc2NydXRpbml6aW5nIHRoZSBsb2dpYyB3aXRoaW4gYGt2bV9yaXNjdl9tbXVfbWFwYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGl0IG9yY2hlc3RyYXRlcyB0aGUgbWFwcGluZyBwcm9jZXNzLCBob3cgaXQgZGV0ZXJtaW5lcyB3aGljaCBwYXJ0cyBhcmUgaGFuZGxlZCBieSBga3ZtX3Jpc2N2X2dzdGFnZV9tYXBfcGFnZWAsIGFuZCBnZW5lcmFsbHkgaG93IHRoZSBLVk0gaGFuZGxlcyB0aGUgZ3Vlc3QgcGFnZSBmYXVsdHMgZm9yIHRoZSBSSVNDLVYgYXJjaGl0ZWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMjoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1fcmlzY3ZfbW11X21hcCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3Yva3ZtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2t2bS9tbXUuYz01NTI9c3RhdGljIGJvb2wga3ZtX3Jpc2N2X21tdV9kaXJ0eV9sb2dfd3JpdGVfZmF1bHRfZmFzdChzdHJ1Y3Qga3ZtICprdm0sXG4tLVxuYXJjaC9yaXNjdi9rdm0vbW11LmMtNjIyLVxuYXJjaC9yaXNjdi9rdm0vbW11LmM6NjIzOmludCBrdm1fcmlzY3ZfbW11X21hcChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKm1lbXNsb3QsXG5hcmNoL3Jpc2N2L2t2bS9tbXUuYy02MjQtXHRcdCAgICAgIGdwYV90IGdwYSwgdW5zaWduZWQgbG9uZyBodmEsIGJvb2wgaXNfd3JpdGUsXG4tLVxuYXJjaC9yaXNjdi9rdm0vdmNwdV9leGl0LmM9MTY9c3RhdGljIGludCBnc3RhZ2VfcGFnZV9mYXVsdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcnVuICpydW4sXG4tLVxuYXJjaC9yaXNjdi9rdm0vdmNwdV9leGl0LmMtNjYtXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X2V4aXQuYzo2NzpcdHJldCA9IGt2bV9yaXNjdl9tbXVfbWFwKHZjcHUsIG1lbXNsb3QsIGZhdWx0X2FkZHIsIGh2YSxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfZXhpdC5jLTY4LVx0XHRcdFx0KHRyYXAtXHUwMDNlc2NhdXNlID09IEVYQ19TVE9SRV9HVUVTVF9QQUdFX0ZBVUxUKSA/IHRydWUgOiBmYWxzZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTI6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjc4OAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDIyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgUG90ZW50aWFsIFRlc3QgRGlzdHJpYnV0aW9uIFNrZXcqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgY29kZSByZWxhdGVkIHRvIEtWTSBvbiBSSVNDLVYgYW5kIHRyeWluZyB0byBmaWd1cmUgb3V0IHdoZXJlIHdlIGNhbiBiZXN0IGZvY3VzIG91ciB0ZXN0aW5nIGVmZm9ydHMuIGBrdm1fcmlzY3ZfbW11X21hcGAgaXMgdHJpZ2dlcmVkIGJ5IGBnc3RhZ2VfcGFnZV9mYXVsdGAsIHdoaWNoLCBpbiB0dXJuLCBpcyB0cmlnZ2VyZWQgYnkgZ3Vlc3QgcGFnZSBmYXVsdHMuIFRoYXQmIzM5O3MgYSBjbGFzc2ljIGhvdCBwYXRoLiBCdXQsIGBrdm1fcmlzY3ZfZ3N0YWdlX21hcF9wYWdlYCBpcyBhbHNvIGhlYXZpbHkgdXNlZC4KCldhaXQgYSBtaW51dGUsIHRoZSBpbnN0cnVjdGlvbnMgYXJlIHRvIGF2b2lkIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zLCB0aGF0IHdpbGwgc2tldyB0aGUgdGVzdCBkaXN0cmlidXRpb25zLiBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgZW50cnkgcG9pbnRzLiBTbywgaXMgYGt2bV9yaXNjdl9tbXVfbWFwYCBhIGhvdCBwYXRoPyBBYnNvbHV0ZWx5IOKAkyBwYWdlIGZhdWx0IGhhbmRsZXJzIGFyZSBhbHdheXMgaW4gdGhlIGNyaXRpY2FsIHBhdGguIFdlIGFscmVhZHkga25vdyB0aGF0LgoKU28sIGxldCYjMzk7cyBsb29rIGZvciBhbHRlcm5hdGl2ZXMgdG8gZm9jdXMgb24uIFBlcmhhcHMgYGt2bV9yaXNjdl9nc3RhZ2VfbWFwX3BhZ2VgIGlzICpub3QqIGEgZ2VuZXJpYyBob3QgcGF0aC4gSXQmIzM5O3Mgc3BlY2lmaWMgdG8gS1ZNIFJJU0MtViBwYWdlIG1hcHBpbmcuIEdvb2QuIExldCYjMzk7cyBtYWtlIHN1cmUgaXQgaXMgZXhwb3J0ZWQsIG1lYW5pbmcgaXQgaXMgbm90IHN0YXRpYywgd2hpY2ggaXQgYXBwZWFycyBub3QgdG8gYmUuIE5leHQsIGxldCYjMzk7cyBleHBsb3JlIGBrdm1fcmlzY3ZfZ3N0YWdlX3NldF9wdGVgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMjoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1fcmlzY3ZfZ3N0YWdlX3NldF9wdGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2t2bS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9rdm0vZ3N0YWdlLmM9MTI4PWJvb2wga3ZtX3Jpc2N2X2dzdGFnZV90cnlfdXBkYXRlX3B0ZShzdHJ1Y3Qga3ZtX2dzdGFnZSAqZ3N0YWdlLCB1MzIgbGV2ZWwsXG4tLVxuYXJjaC9yaXNjdi9rdm0vZ3N0YWdlLmMtMTQxLVxuYXJjaC9yaXNjdi9rdm0vZ3N0YWdlLmM6MTQyOmludCBrdm1fcmlzY3ZfZ3N0YWdlX3NldF9wdGUoc3RydWN0IGt2bV9nc3RhZ2UgKmdzdGFnZSxcbmFyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jLTE0My1cdFx0XHQgICAgIHN0cnVjdCBrdm1fbW11X21lbW9yeV9jYWNoZSAqcGNhY2hlLFxuLS1cbmFyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jPTIxMz1pbnQga3ZtX3Jpc2N2X2dzdGFnZV9tYXBfcGFnZShzdHJ1Y3Qga3ZtX2dzdGFnZSAqZ3N0YWdlLFxuLS1cbmFyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jLTI3My1cdFx0ICoganVzdCB1cGRhdGUgdGhlIHB0ZSBwcm90IGhlcmUuIE90aGVyd2lzZSwgd2Ugd291bGQgZmFsbCBiYWNrIHRvIG1hcHBpbmdcbmFyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jOjI3NDpcdFx0ICogdGhlIGdzdGFnZSBhdCBodWdlIHBhZ2UgbGV2ZWwgaW4gYGt2bV9yaXNjdl9nc3RhZ2Vfc2V0X3B0ZWAsIHdpdGggdGhlXG5hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYy0yNzUtXHRcdCAqIG92ZXJoZWFkIG9mIGZyZWVpbmcgdGhlIHBhZ2UgdGFibGVzKG5vdCBzdXBwb3J0IG5vdyksIHdoaWNoIHdvdWxkIHNsb3dcbi0tXG5hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYy0yODItXHRcdCAqIFdlIGFscmVhZHkgaGF2ZSB0aGUgcHRlcCwganVzdCB1cGRhdGUgdGhlIHB0ZSBwcm90IGlmIHRoZSBwZm4gbm90IGNoYW5nZS5cbmFyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jOjI4MzpcdFx0ICogVGhlcmUgaXMgbm8gbmVlZCB0byBpbnZva2UgYGt2bV9yaXNjdl9nc3RhZ2Vfc2V0X3B0ZWAgYWdhaW4uXG5hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYy0yODQtXHRcdCAqL1xuLS1cbmFyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jLTI5Ni1cbmFyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jOjI5NzpcdHJldCA9IGt2bV9yaXNjdl9nc3RhZ2Vfc2V0X3B0ZShnc3RhZ2UsIHBjYWNoZSwgb3V0X21hcCk7XG5hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYy0yOTgtXHRpZiAocmV0ID09IC1FRVhJU1QpIHtcbi0tXG5hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYy0zMDQtXG5hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYzozMDU6XHRcdHJldCA9IGt2bV9yaXNjdl9nc3RhZ2Vfc2V0X3B0ZShnc3RhZ2UsIHBjYWNoZSwgb3V0X21hcCk7XG5hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYy0zMDYtXHR9XG4tLVxuYXJjaC9yaXNjdi9rdm0vbW11LmM9NDA9aW50IGt2bV9yaXNjdl9tbXVfaW9yZW1hcChzdHJ1Y3Qga3ZtICprdm0sIGdwYV90IGdwYSwgcGh5c19hZGRyX3QgaHBhLFxuLS1cbmFyY2gvcmlzY3Yva3ZtL21tdS5jLTc0LVx0XHR3cml0ZV9sb2NrKFx1MDAyNmt2bS1cdTAwM2VtbXVfbG9jayk7XG5hcmNoL3Jpc2N2L2t2bS9tbXUuYzo3NTpcdFx0cmV0ID0ga3ZtX3Jpc2N2X2dzdGFnZV9zZXRfcHRlKFx1MDAyNmdzdGFnZSwgXHUwMDI2cGNhY2hlLCBcdTAwMjZtYXApO1xuYXJjaC9yaXNjdi9rdm0vbW11LmMtNzYtXHRcdHdyaXRlX3VubG9jayhcdTAwMjZrdm0tXHUwMDNlbW11X2xvY2spO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMjoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MDc5CgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogOTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgY29uc2lkZXJpbmcgbXkgZXhwZXJ0aXNlOgoKKipFeGFtaW5pbmcgS1ZNL1JJU0MtViBQYWdlIFRhYmxlIE1hbmlwdWxhdGlvbioqCgpBbHJpZ2h0LCBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIEtWTS9SSVNDLVYgcGFnZSB0YWJsZSBpbnRlcmFjdGlvbi4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGZvY3VzaW5nIG9uIHRoZSBwb3RlbnRpYWwgb3ZlcmxhcCBvciBzaGFyZWQgZnVuY3Rpb25hbGl0eSBiZXR3ZWVuIGBrdm1fcmlzY3ZfZ3N0YWdlX3NldF9wdGVgIGFuZCBga3ZtX3Jpc2N2X21tdV9pb3JlbWFwYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIHJvdXRpbmVzIGludGVyYWN0LCBiZWNhdXNlIGBrdm1fcmlzY3ZfZ3N0YWdlX3NldF9wdGVgIGFsc28gZ2V0cyBjYWxsZWQgZnJvbSB3aXRoaW4gYGt2bV9yaXNjdl9tbXVfaW9yZW1hcGAuIE15IGh1bmNoIGlzIHRoYXQgSSBzaG91bGQgYWxzbyBiZSB0YWtpbmcgYSBnb29kIGxvb2sgYXQgYGt2bV9yaXNjdl9nc3RhZ2VfbWFwX3BhZ2VgIGFzIHdlbGwsIGFzIGl0IGxpa2VseSByZWxhdGVzIHRvIHNpbWlsYXIgZnVuY3Rpb25hbGl0eS4gTXkgcHJpbWFyeSB0aG91Z2h0IHByb2Nlc3MgaXMgdGhhdCB0aGUgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIHRoZXNlIGZ1bmN0aW9ucyBhcmUgY3J1Y2lhbCB0byB1bmRlcnN0YW5kLiBUaGUgYmVzdCB3YXkgdG8gY2xhcmlmeSB0aG9zZSByZWxhdGlvbnNoaXBzIGlzIHRvIHF1aWNrbHkgY2hlY2sgd2hldGhlciBga3ZtX3Jpc2N2X2dzdGFnZV9tYXBfcGFnZWAgYW5kIGBrdm1fcmlzY3ZfZ3N0YWdlX3NldF9wdGVgIGFyZSBhY3R1YWxseSBleHBvc2VkIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBUaW1lIHRvIGNoZWNrIGBhcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmhgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMjoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9yaXNjdl9nc3RhZ2VfbWFwX3BhZ2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMjoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NDg3CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyB5b3VyIHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czoKCioqTmF2aWdhdGluZyB0aGUgTGFieXJpbnRoOiBEZWNsYXJhdGlvbiBMb2NhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGRlZXAgaW4gdGhpcyBjb2RlLCBhbmQgSSYjMzk7bSB0cnlpbmcgdG8gdHJhY2UgdGhlIG9yaWdpbiBvZiB0aGlzIHZhcmlhYmxlL2Z1bmN0aW9uL29iamVjdCDigJMgd2hhdGV2ZXIgaXQgaXMuIE15IGJyYWluJiMzOTtzIGFscmVhZHkgZmlyaW5nIG9uIGFsbCBjeWxpbmRlcnMsIGNvbnNpZGVyaW5nIGRlcGVuZGVuY2llcywgc2NvcGUsIGFuZCBwb3RlbnRpYWwgaW5oZXJpdGFuY2UgcGF0aHMuIEJ1dCB0aGUgZnVuZGFtZW50YWwgcXVlc3Rpb24ga2VlcHMgbmFnZ2luZyBhdCBtZTogKndoZXJlKiB0aGUgaGVjayBpcyB0aGlzIHRoaW5nIGFjdHVhbGx5ICpkZWZpbmVkKj8gSSBtZWFuLCBJIGNhbiBzZWUgaXQgYmVpbmcgKnVzZWQqIGhlcmUsIGFuZCBJJiMzOTt2ZSBnb3QgYSBnb29kIGhhbmRsZSBvbiBpdHMgYmVoYXZpb3IgaW4gdGhpcyBjb250ZXh0LCBidXQgSSBuZWVkIHRoZSBzb3VyY2UuIEkgbmVlZCB0aGUgZGVjbGFyYXRpb24uIElzIGl0IGluIHRoaXMgZmlsZT8gQW5vdGhlciBtb2R1bGU/IEEgbGlicmFyeSBJIG5lZWQgdG8gcmVmZXJlbmNlPyBJdCYjMzk7cyB0aGUga2V5LiBJIGNhbiYjMzk7dCByZWFsbHkgcmVhc29uIGRlZXBseSBhYm91dCB0aGUgbG9naWMgdW50aWwgSSBoYXZlIHRoaXMgY29yZSBwaWVjZSBvZiBpbmZvcm1hdGlvbi4gV2hlcmUgKmFyZSogdGhleSBkZWNsYXJlZD8hCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDEyOjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9yaXNjdl9nc3RhZ2VfbWFwX3BhZ2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2t2bS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9rdm0vZ3N0YWdlLmM9MTkyPXN0YXRpYyB2b2lkIGt2bV9yaXNjdl9nc3RhZ2VfdXBkYXRlX3B0ZV9wcm90KHN0cnVjdCBrdm1fZ3N0YWdlICpnc3RhZ2UsIHUzMiBsZXZlbCxcbi0tXG5hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYy0yMTItXG5hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYzoyMTM6aW50IGt2bV9yaXNjdl9nc3RhZ2VfbWFwX3BhZ2Uoc3RydWN0IGt2bV9nc3RhZ2UgKmdzdGFnZSxcbmFyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jLTIxNC1cdFx0XHQgICAgICBzdHJ1Y3Qga3ZtX21tdV9tZW1vcnlfY2FjaGUgKnBjYWNoZSxcbi0tXG5hcmNoL3Jpc2N2L2t2bS9tbXUuYz02MjM9aW50IGt2bV9yaXNjdl9tbXVfbWFwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9tZW1vcnlfc2xvdCAqbWVtc2xvdCxcbi0tXG5hcmNoL3Jpc2N2L2t2bS9tbXUuYy03MzQtXHRcdG1hcmtfcGFnZV9kaXJ0eV9pbl9zbG90KGt2bSwgbWVtc2xvdCwgZ2ZuKTtcbmFyY2gvcmlzY3Yva3ZtL21tdS5jOjczNTpcdFx0cmV0ID0ga3ZtX3Jpc2N2X2dzdGFnZV9tYXBfcGFnZShcdTAwMjZnc3RhZ2UsIHBjYWNoZSwgZ3BhLCBoZm4gXHUwMDNjXHUwMDNjIFBBR0VfU0hJRlQsXG5hcmNoL3Jpc2N2L2t2bS9tbXUuYy03MzYtXHRcdFx0XHRcdFx0dm1hX3BhZ2VzaXplLCBmYWxzZSwgdHJ1ZSwgb3V0X21hcCk7XG5hcmNoL3Jpc2N2L2t2bS9tbXUuYy03MzctXHR9IGVsc2Uge1xuYXJjaC9yaXNjdi9rdm0vbW11LmM6NzM4Olx0XHRyZXQgPSBrdm1fcmlzY3ZfZ3N0YWdlX21hcF9wYWdlKFx1MDAyNmdzdGFnZSwgcGNhY2hlLCBncGEsIGhmbiBcdTAwM2NcdTAwM2MgUEFHRV9TSElGVCxcbmFyY2gvcmlzY3Yva3ZtL21tdS5jLTczOS1cdFx0XHRcdFx0XHR2bWFfcGFnZXNpemUsIHRydWUsIHRydWUsIG91dF9tYXApO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMjoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MTYyCgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBSSVNDLVYgS1ZNIE1NVSBDb2RlKioKCk9rYXksIHRpbWUgdG8gZ2V0IG15IGJlYXJpbmdzLiBMZXQmIzM5O3Mgc3RhcnQgYnkgbG9va2luZyBhdCB0aGUgaW5jbHVkZSBzdGF0ZW1lbnRzIHdpdGhpbiBgYXJjaC9yaXNjdi9rdm0vbW11LmNgLiBHb3R0YSBnZXQgYSBzb2xpZCB1bmRlcnN0YW5kaW5nIG9mIHRoZSBkZXBlbmRlbmNpZXMgYW5kIHdoYXQgZXh0ZXJuYWwgZWxlbWVudHMgYXJlIGJlaW5nIGxldmVyYWdlZCBoZXJlLiBJIGtub3cgdGhpcyBjb2RlIHByZXR0eSB3ZWxsLCBzbyBJJiMzOTttIGxvb2tpbmcgZm9yIGFueXRoaW5nIHVudXN1YWwgb3IgYW55dGhpbmcgdGhhdCBtaWdodCBqdW1wIG91dCB0aGF0IEkgaGF2ZW4mIzM5O3Qgc2VlbiBiZWZvcmUuIEFyZSB0aGV5IHVzaW5nIGFueSBuZXcsIGV4cGVyaW1lbnRhbCBmZWF0dXJlcz8gT3IgcGVyaGFwcyB0aGV5JiMzOTt2ZSBpbmNvcnBvcmF0ZWQgYSBwYXJ0aWN1bGFyIGxpYnJhcnkgaW4gYW4gdW5leHBlY3RlZCB3YXk/IFRoaXMgaW5pdGlhbCBwYXNzIGlzIGFib3V0IHNldHRpbmcgdGhlIHN0YWdlIGFuZCByZWZyZXNoaW5nIG15IG1lbnRhbCBtYXAgb2YgdGhlIHByb2plY3QmIzM5O3MgYXJjaGl0ZWN0dXJlLCBlc3BlY2lhbGx5IGZvY3VzaW5nIG9uIG1lbW9yeSBtYW5hZ2VtZW50IHdpdGhpbiB0aGUgUklTQy1WIEtWTSBjb250ZXh0LiBJJiMzOTtsbCBtYWtlIG5vdGUgb2YgYW55IGhlYWRlciBmaWxlcyB0aGF0IGFyZSBzcGVjaWZpYyB0byBoYXJkd2FyZSBpbnRlcmFjdGlvbnMgb3IgdmlydHVhbGl6YXRpb24gaW50cmljYWNpZXMgdGhhdCBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgZnVydGhlci4gQSB3ZWxsLW9yZ2FuaXplZCBpbmNsdWRlIHNlY3Rpb24gaXMgdXN1YWxseSBhIGdvb2QgaW5kaWNhdG9yIG9mIG92ZXJhbGwgY29kZSBxdWFsaXR5LCBzbyBJJiMzOTttIGhvcGluZyBpdCYjMzk7cyBjbGVhbiBhbmQgY2xlYXIuIFRpbWUgdG8gZGlnIGluIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMjoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1fcmlzY3ZfZ3N0YWdlX21hcF9wYWdlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9rdm0vbW11LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9rdm0vbW11LmM9NjIzPWludCBrdm1fcmlzY3ZfbW11X21hcChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKm1lbXNsb3QsXG4tLVxuYXJjaC9yaXNjdi9rdm0vbW11LmMtNzM0LVx0XHRtYXJrX3BhZ2VfZGlydHlfaW5fc2xvdChrdm0sIG1lbXNsb3QsIGdmbik7XG5hcmNoL3Jpc2N2L2t2bS9tbXUuYzo3MzU6XHRcdHJldCA9IGt2bV9yaXNjdl9nc3RhZ2VfbWFwX3BhZ2UoXHUwMDI2Z3N0YWdlLCBwY2FjaGUsIGdwYSwgaGZuIFx1MDAzY1x1MDAzYyBQQUdFX1NISUZULFxuYXJjaC9yaXNjdi9rdm0vbW11LmMtNzM2LVx0XHRcdFx0XHRcdHZtYV9wYWdlc2l6ZSwgZmFsc2UsIHRydWUsIG91dF9tYXApO1xuYXJjaC9yaXNjdi9rdm0vbW11LmMtNzM3LVx0fSBlbHNlIHtcbmFyY2gvcmlzY3Yva3ZtL21tdS5jOjczODpcdFx0cmV0ID0ga3ZtX3Jpc2N2X2dzdGFnZV9tYXBfcGFnZShcdTAwMjZnc3RhZ2UsIHBjYWNoZSwgZ3BhLCBoZm4gXHUwMDNjXHUwMDNjIFBBR0VfU0hJRlQsXG5hcmNoL3Jpc2N2L2t2bS9tbXUuYy03MzktXHRcdFx0XHRcdFx0dm1hX3BhZ2VzaXplLCB0cnVlLCB0cnVlLCBvdXRfbWFwKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTI6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTc0NwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipOYXZpZ2F0aW5nIHRoZSBMYWJ5cmludGggb2YgRGVjbGFyYXRpb25zKioKCkFscmlnaHQsIGhvbGQgb24gYSBzZWNvbmQuIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUvc3BlY2lmaWNhdGlvbi9kb2N1bWVudCwgYW5kIG15IGluaXRpYWwgcmVhY3Rpb24gaXMsICp3aGVyZSogcHJlY2lzZWx5IGlzIHRoaXMgdmFyaWFibGUvZnVuY3Rpb24vY2xhc3MvY29uc3RhbnQvd2hhdGV2ZXIgKmRlY2xhcmVkKj8gSXQmIzM5O3MgdGhlIGZpcnN0IGFuZCBtb3N0IGZ1bmRhbWVudGFsIHF1ZXN0aW9uLCByZWFsbHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBzY29wZSwgaXRzIHR5cGUsIGFueSBhc3NvY2lhdGVkIG1ldGFkYXRhIOKAkyBhbGwgb2YgdGhhdCBoaW5nZXMgb24gZmluZGluZyBpdHMgb3JpZ2luIHBvaW50LiBJcyBpdCBpbiB0aGlzIGZpbGU/IEFub3RoZXIgb25lPyBBIGhlYWRlcj8gQSBwcmVjb21waWxlZCBsaWJyYXJ5PyBJcyBpdCBhIGZvcndhcmQgZGVjbGFyYXRpb24sIG1lYW5pbmcgSSBuZWVkIHRvIGNoYXNlIGRvd24gaXRzIGRlZmluaXRpb24gbGF0ZXI/IFRoZSBhYnNlbmNlIG9mIGEgY2xlYXIgZGVjbGFyYXRpb24gc2NyZWFtcyBmb3IgaW1tZWRpYXRlIGludmVzdGlnYXRpb24uIEkgY2Fu4oCZdCBwcm9jZWVkIHVudGlsIEkmIzM5O3ZlIGVzdGFibGlzaGVkIHRoYXQgZnVuZGFtZW50YWwgYnVpbGRpbmcgYmxvY2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDEyOjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9yaXNjdl9nc3RhZ2VfbWFwX3BhZ2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3Jpc2N2LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV9nc3RhZ2UuaD01Nz1ib29sIGt2bV9yaXNjdl9nc3RhZ2VfdHJ5X3VwZGF0ZV9wdGUoc3RydWN0IGt2bV9nc3RhZ2UgKmdzdGFnZSwgdTMyIGxldmVsLFxuLS1cbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX2dzdGFnZS5oLTYwLVxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1fZ3N0YWdlLmg6NjE6aW50IGt2bV9yaXNjdl9nc3RhZ2VfbWFwX3BhZ2Uoc3RydWN0IGt2bV9nc3RhZ2UgKmdzdGFnZSxcbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX2dzdGFnZS5oLTYyLVx0XHRcdCAgICAgIHN0cnVjdCBrdm1fbW11X21lbW9yeV9jYWNoZSAqcGNhY2hlLFxuLS1cbmFyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jPTE5Mj1zdGF0aWMgdm9pZCBrdm1fcmlzY3ZfZ3N0YWdlX3VwZGF0ZV9wdGVfcHJvdChzdHJ1Y3Qga3ZtX2dzdGFnZSAqZ3N0YWdlLCB1MzIgbGV2ZWwsXG4tLVxuYXJjaC9yaXNjdi9rdm0vZ3N0YWdlLmMtMjEyLVxuYXJjaC9yaXNjdi9rdm0vZ3N0YWdlLmM6MjEzOmludCBrdm1fcmlzY3ZfZ3N0YWdlX21hcF9wYWdlKHN0cnVjdCBrdm1fZ3N0YWdlICpnc3RhZ2UsXG5hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYy0yMTQtXHRcdFx0ICAgICAgc3RydWN0IGt2bV9tbXVfbWVtb3J5X2NhY2hlICpwY2FjaGUsXG4tLVxuYXJjaC9yaXNjdi9rdm0vbW11LmM9NjIzPWludCBrdm1fcmlzY3ZfbW11X21hcChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKm1lbXNsb3QsXG4tLVxuYXJjaC9yaXNjdi9rdm0vbW11LmMtNzM0LVx0XHRtYXJrX3BhZ2VfZGlydHlfaW5fc2xvdChrdm0sIG1lbXNsb3QsIGdmbik7XG5hcmNoL3Jpc2N2L2t2bS9tbXUuYzo3MzU6XHRcdHJldCA9IGt2bV9yaXNjdl9nc3RhZ2VfbWFwX3BhZ2UoXHUwMDI2Z3N0YWdlLCBwY2FjaGUsIGdwYSwgaGZuIFx1MDAzY1x1MDAzYyBQQUdFX1NISUZULFxuYXJjaC9yaXNjdi9rdm0vbW11LmMtNzM2LVx0XHRcdFx0XHRcdHZtYV9wYWdlc2l6ZSwgZmFsc2UsIHRydWUsIG91dF9tYXApO1xuYXJjaC9yaXNjdi9rdm0vbW11LmMtNzM3LVx0fSBlbHNlIHtcbmFyY2gvcmlzY3Yva3ZtL21tdS5jOjczODpcdFx0cmV0ID0ga3ZtX3Jpc2N2X2dzdGFnZV9tYXBfcGFnZShcdTAwMjZnc3RhZ2UsIHBjYWNoZSwgZ3BhLCBoZm4gXHUwMDNjXHUwMDNjIFBBR0VfU0hJRlQsXG5hcmNoL3Jpc2N2L2t2bS9tbXUuYy03MzktXHRcdFx0XHRcdFx0dm1hX3BhZ2VzaXplLCB0cnVlLCB0cnVlLCBvdXRfbWFwKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTI6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA1NjgKCQkJCQkJCW91dHB1dDogNDgKCQkJCQkJCXRob3VnaHRzOiA4MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqTmF2aWdhdGluZyB0aGUgUklTQy1WIEtWTSBHdWVzdCBTdGFnZSBJbXBsZW1lbnRhdGlvbioqCgpPa2F5LCBsZXQmIzM5O3Mgc2VlLi4uIEkmIzM5O20gY3VycmVudGx5IGxvb2tpbmcgYXQgYGFyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX2dzdGFnZS5oYC4gVGhpcyBpcyB3aGVyZSB0aGUgbWFnaWMgaGFwcGVucywgYXQgbGVhc3QgcmVnYXJkaW5nIHRoZSBndWVzdCBzdGFnZSBmdW5jdGlvbmFsaXR5IGluIHRoZSBSSVNDLVYgS1ZNIGltcGxlbWVudGF0aW9uLiBIbW0sIGBrdm1fcmlzY3ZfZ3N0YWdlX21hcF9wYWdlYCBhbmQgYGt2bV9yaXNjdl9nc3RhZ2Vfc2V0X3B0ZWAgaW1tZWRpYXRlbHkganVtcCBvdXQgYXMgdGhlIGtleSBwbGF5ZXJzIGhlcmUuIFRoZXkgc2VlbSB0byBiZSB0aGUgcHJpbWFyeSBmdW5jdGlvbnMgaW52b2x2ZWQgaW4gbWFwcGluZyBwYWdlcyB3aXRoaW4gdGhlIGd1ZXN0IHN0YWdlIGFuZCBzZXR0aW5nIHRoZSBwYWdlIHRhYmxlIGVudHJpZXMsIHJlc3BlY3RpdmVseS4gV2FpdCBhIHNlY29uZCwgaXMgYGt2bV9yaXNjdl9nc3RhZ2Vfc2V0X3B0ZWAgYWN0dWFsbHkgKmRlZmluZWQqIHdpdGhpbiB0aGlzIGhlYWRlcj8gT3IgaXMgaXQganVzdCBkZWNsYXJlZCBoZXJlPyBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQuIEl0JiMzOTtzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHRoZSBzY29wZSBhbmQgd2hlcmUgdGhlIGFjdHVhbCBpbXBsZW1lbnRhdGlvbiByZXNpZGVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMjoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1fcmlzY3ZfZ3N0YWdlX3NldF9wdGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV9nc3RhZ2UuaCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV9nc3RhZ2UuaD01MD1ib29sIGt2bV9yaXNjdl9nc3RhZ2VfZ2V0X2xlYWYoc3RydWN0IGt2bV9nc3RhZ2UgKmdzdGFnZSwgZ3BhX3QgYWRkcixcbi0tXG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV9nc3RhZ2UuaC01Mi1cbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX2dzdGFnZS5oOjUzOmludCBrdm1fcmlzY3ZfZ3N0YWdlX3NldF9wdGUoc3RydWN0IGt2bV9nc3RhZ2UgKmdzdGFnZSxcbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX2dzdGFnZS5oLTU0LVx0XHRcdCAgICAgc3RydWN0IGt2bV9tbXVfbWVtb3J5X2NhY2hlICpwY2FjaGUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDEyOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMDcwCgkJCQkJCQlvdXRwdXQ6IDExNwoJCQkJCQkJdGhvdWdodHM6IDE2OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBLVk0gUklTQy1WIFBhdGNoKioKCk9rYXksIHllcywgSSYjMzk7dmUgZ290IGl0LiBUaGUgY29yZSBvZiB0aGlzIHBhdGNoIGNlbnRlcnMgb24gYGt2bV9yaXNjdl9nc3RhZ2VfbWFwX3BhZ2VgIGFuZCBga3ZtX3Jpc2N2X2dzdGFnZV9zZXRfcHRlYC4gSXQmIzM5O3MgZGVmaW5pdGVseSB0aWVkIHRvIHRoZSBgS1ZNYCBjb25maWd1cmF0aW9uLiBMZXQgbWUganVzdCBjb25maXJtIHRoYXQgcXVpY2tseSDigJMgcmlnaHQsIGxvb2tpbmcgYXQgYGFyY2gvcmlzY3Yva3ZtL01ha2VmaWxlYCwgaXQmIzM5O3MganVzdCBgb2JqLSQoQ09ORklHX0tWTSkgJiM0Mzs9IGt2bS5vYCwgc28gYEtWTWAgaXMgaW5kZWVkIHRoZSBzb2xlIGNvbmZpZyBkZXBlbmRlbmN5LiBHb29kLgoKTm93LCBmcm9tIHdoYXQgSSB1bmRlcnN0YW5kLCB0aGlzIHBhdGNoIGFkZHJlc3NlcyBhIGJ1ZyBpbiB0aGUgS1ZNIFJJU0MtViBwYWdlIHRhYmxlIG1hbmFnZW1lbnQuIFNwZWNpZmljYWxseSwgaXQgc2VlbXMgYSBsb3dlci1sZXZlbCBwYWdlIHRhYmxlIGVudHJ5IGlzIGJlaW5nIG92ZXJ3cml0dGVuIGJ5IGEgbGVhZiBtYXBwaW5nLCBhbmQgdGhpcyBjYW4gb2NjdXIgZHVyaW5nIHRoZSBoYW5kbGluZyBvZiBhIGh1Z2UgcGFnZSBtYXBwZWQgb3ZlciBhIHByZS1leGlzdGluZywgc21hbGxlciBwYWdlIG1hcHBpbmcuIEZ1bmN0aW9uYWxseSwgdGhpcyBpcyBhIG1vZGlmaWNhdGlvbiB0byB0aGUgY29yZSBtZW1vcnkgbWFuYWdlbWVudCB3aXRoaW4gS1ZNIGZvciBSSVNDLVYuCgpHaXZlbiB0aGUgcG90ZW50aWFsIGZvciBzdWJ0bGUgbWVtb3J5IGNvcnJ1cHRpb24gaXNzdWVzIOKAkyBwYXJ0aWN1bGFybHkgaW4gc3VjaCBhIGNyaXRpY2FsIGFyZWEg4oCTIHRoaXMgaXMgYWJzb2x1dGVseSBzb21ldGhpbmcgdGhhdCB3YXJyYW50cyB0aG9yb3VnaCBmdXp6aW5nLiBUaGUgc2NlbmFyaW8gb3V0bGluZWQgc3VnZ2VzdHMgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcyBhcmUgaW50cm9kdWNlZCwgYW5kIGZ1enppbmcgaXMgdGhlIGJlc3QgcGF0aCB0byBmaW5kIHRoZW0uCgpJIHdpbGwgZ2V0IHRoZSByZXN1bHRzIHNldC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTI6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9yaXNjdl9nc3RhZ2VfbWFwX3BhZ2UmIzM0OywKICAgICYjMzQ7a3ZtX3Jpc2N2X2dzdGFnZV9zZXRfcHRlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIEtWTSBSSVNDLVYgZ3Vlc3Qgc3RhZ2UtMiBwYWdlIHRhYmxlIG1hbmFnZW1lbnQgdG8gcHJldmVudCByZXBsYWNpbmcgYW4gZXhpc3RpbmcgbG93ZXItbGV2ZWwgcGFnZSB0YWJsZSB3aXRoIGEgbGVhZiBtYXBwaW5nLCBmYWxsaW5nIGJhY2sgdG8gYSBzbWFsbGVyIHBhZ2Ugc2l6ZSBpbnN0ZWFkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSByZWFjaGFibGUgY29yZSBLVk0gZmVhdHVyZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX3Jpc2N2X2dzdGFnZV9tYXBfcGFnZSYjMzQ7LAogICAgJiMzNDtrdm1fcmlzY3ZfZ3N0YWdlX3NldF9wdGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgS1ZNIFJJU0MtViBndWVzdCBzdGFnZS0yIHBhZ2UgdGFibGUgbWFuYWdlbWVudCB0byBwcmV2ZW50IHJlcGxhY2luZyBhbiBleGlzdGluZyBsb3dlci1sZXZlbCBwYWdlIHRhYmxlIHdpdGggYSBsZWFmIG1hcHBpbmcsIGZhbGxpbmcgYmFjayB0byBhIHNtYWxsZXIgcGFnZSBzaXplIGluc3RlYWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIHJlYWNoYWJsZSBjb3JlIEtWTSBmZWF0dXJlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMjoyNTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDEyOjI1PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIEtWTSBndWVzdCBzdGFnZS0yIHBhZ2UgdGFibGUgbWFuYWdlbWVudCBvbiBSSVNDLVYgdG8gcHJldmVudCByZXBsYWNpbmcgYW4gZXhpc3RpbmcgbG93ZXItbGV2ZWwgcGFnZSB0YWJsZSBkaXJlY3Rvcnkgd2l0aCBhIGxlYWYgbWFwcGluZyAoaHVnZSBwYWdlKS4gSXQgZG9lcyB0aGlzIGJ5IHJldHVybmluZyAtRUVYSVNUIGFuZCBmYWxsaW5nIGJhY2sgdG8gbWFwcGluZyBhdCBsZXZlbCAwIChiYXNlIHBhZ2Ugc2l6ZSkuIFRoZXNlIGNoYW5nZXMgYXJlIHB1cmVseSByZWxhdGVkIHRvIHBhZ2UgdGFibGUgbG9naWMsIHBoeXNpY2FsIGFkZHJlc3MgY2FsY3VsYXRpb25zLCBhbmQgUFRFIG1hbmlwdWxhdGlvbi4gVGhlcmUgYXJlIG5vIG5ldyBhbGxvY2F0aW9ucywgbm8gc3RydWN0dXJlcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgYW5kIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgYmVpbmcgdXNlZCBpbiBjb250cm9sIGZsb3cgb3IgbGVha2VkLiBBbnkgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCBoZXJlIChlLmcuLCBpbmNvcnJlY3QgcG9pbnRlcnMgb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcykgd291bGQgYmUgY2F1Z2h0IGJ5IEtBU0FOIG9yIHN0YW5kYXJkIGtlcm5lbCB0ZXN0aW5nLiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNmI5OTEzMWQ5YmYzZDVlYzhiNGY4YjI4ODkwYjViYjdlZTVjZWYyOQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgQXVnIDE0IDEyOjI0OjIyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rdm0vZ3N0YWdlLmMgYi9hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYwppbmRleCBlNTAwMmNiOWNiZWYxLi4yM2NiMzVlMzYwNzNiIDEwMDY0NAotLS0gYS9hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYwpAQCAtMTc0LDYgJiM0MzsxNzQsMTIgQEAgaW50IGt2bV9yaXNjdl9nc3RhZ2Vfc2V0X3B0ZShzdHJ1Y3Qga3ZtX2dzdGFnZSAqZ3N0YWdlLAogCiAJaWYgKHB0ZV92YWwoKnB0ZXApICE9IHB0ZV92YWwobWFwLSZndDtwdGUpKSB7CiAJCWJvb2wgd2FzX2ludmFsaWQgPSAhcHRlX3ZhbCgqcHRlcCk7CiYjNDM7CiYjNDM7CQkvKiBBdm9pZCByZXBsYWNpbmcgYW4gZXhpc3RpbmcgbG93ZXItbGV2ZWwgdGFibGUgd2l0aCBhIGxlYWYgbWFwcGluZy4gKi8KJiM0MzsJCWlmICghZ3N0YWdlX3B0ZV9sZWFmKHB0ZXApICZhbXA7JmFtcDsgIXdhc19pbnZhbGlkICZhbXA7JmFtcDsKJiM0MzsJCSAgICBnc3RhZ2VfcHRlX2xlYWYoJmFtcDttYXAtJmd0O3B0ZSkpCiYjNDM7CQkJcmV0dXJuIC1FRVhJU1Q7CiYjNDM7CiAJCXNldF9wdGUocHRlcCwgbWFwLSZndDtwdGUpOwogCQlpZiAoZ3N0YWdlX3B0ZV9sZWFmKHB0ZXApICZhbXA7JmFtcDsKIAkJICAgICEod2FzX2ludmFsaWQgJmFtcDsmYW1wOyByaXNjdl9oYXNfZXh0ZW5zaW9uX3VubGlrZWx5KFJJU0NWX0lTQV9FWFRfU1ZWUFRDKSkpCkBAIC0yMTEsMTIgJiM0MzsyMTcsMTMgQEAgaW50IGt2bV9yaXNjdl9nc3RhZ2VfbWFwX3BhZ2Uoc3RydWN0IGt2bV9nc3RhZ2UgKmdzdGFnZSwKIAkJCSAgICAgIHN0cnVjdCBrdm1fZ3N0YWdlX21hcHBpbmcgKm91dF9tYXApCiB7CiAJYm9vbCBmb3VuZF9sZWFmOwomIzQzOwlwaHlzX2FkZHJfdCBodWdlX3BhZ2Vfb2Zmc2V0OwogCXUzMiBwdGVwX2xldmVsOwogCXBncHJvdF90IHByb3Q7CiAJcHRlX3QgKnB0ZXA7CiAJaW50IHJldDsKIAotCW91dF9tYXAtJmd0O2FkZHIgPSBncGE7CiYjNDM7CW91dF9tYXAtJmd0O2FkZHIgPSBncGEgJmFtcDsgUEFHRV9NQVNLOwogCW91dF9tYXAtJmd0O2xldmVsID0gMDsKIAogCXJldCA9IGdzdGFnZV9wYWdlX3NpemVfdG9fbGV2ZWwoZ3N0YWdlLCBwYWdlX3NpemUsICZhbXA7b3V0X21hcC0mZ3Q7bGV2ZWwpOwpAQCAtMjg3LDcgJiM0MzsyOTQsMTggQEAgaW50IGt2bV9yaXNjdl9nc3RhZ2VfbWFwX3BhZ2Uoc3RydWN0IGt2bV9nc3RhZ2UgKmdzdGFnZSwKIAlvdXRfbWFwLSZndDtwdGUgPSBwZm5fcHRlKFBGTl9ET1dOKGhwYSksIHByb3QpOwogCW91dF9tYXAtJmd0O3B0ZSA9IHB0ZV9ta2RpcnR5KG91dF9tYXAtJmd0O3B0ZSk7CiAKLQlyZXR1cm4ga3ZtX3Jpc2N2X2dzdGFnZV9zZXRfcHRlKGdzdGFnZSwgcGNhY2hlLCBvdXRfbWFwKTsKJiM0MzsJcmV0ID0ga3ZtX3Jpc2N2X2dzdGFnZV9zZXRfcHRlKGdzdGFnZSwgcGNhY2hlLCBvdXRfbWFwKTsKJiM0MzsJaWYgKHJldCA9PSAtRUVYSVNUKSB7CiYjNDM7CQlodWdlX3BhZ2Vfb2Zmc2V0ID0gb3V0X21hcC0mZ3Q7YWRkciAmYW1wOyAocGFnZV9zaXplIC0gMSk7CiYjNDM7CQlocGEgJiM0Mzs9IGh1Z2VfcGFnZV9vZmZzZXQ7CiYjNDM7CQlvdXRfbWFwLSZndDtsZXZlbCA9IDA7CiYjNDM7CQlvdXRfbWFwLSZndDtwdGUgPSBwZm5fcHRlKFBGTl9ET1dOKGhwYSksIHByb3QpOwomIzQzOwkJb3V0X21hcC0mZ3Q7cHRlID0gcHRlX21rZGlydHkob3V0X21hcC0mZ3Q7cHRlKTsKJiM0MzsKJiM0MzsJCXJldCA9IGt2bV9yaXNjdl9nc3RhZ2Vfc2V0X3B0ZShnc3RhZ2UsIHBjYWNoZSwgb3V0X21hcCk7CiYjNDM7CX0KJiM0MzsKJiM0MzsJcmV0dXJuIHJldDsKIH0KIAogc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIG1ha2VfY2hpbGRfcHRlKHVuc2lnbmVkIGxvbmcgaHVnZV9wdGUsIGludCBpbmRleCwKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDEyOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1ODQKCQkJCQkJCW91dHB1dDogMTcwCgkJCQkJCQl0aG91Z2h0czogNTA3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKktNU0FOIEFzc2Vzc21lbnQ6IE5vIFVuaW5pdGlhbGl6ZWQgTWVtb3J5IElzc3VlKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoaXMgcGF0Y2ggaXMgZm9jdXNlZCBvbiB0aGUgUklTQy1WIEtWTSBpbXBsZW1lbnRhdGlvbiwgc3BlY2lmaWNhbGx5IGRlYWxpbmcgd2l0aCB0aGUgZ3Vlc3Qgc3RhZ2UgMiBwYWdlIHRhYmxlcyAoYGdzdGFnZS5jYCkuIEl0JiMzOTtzIGFsbCBpbnRlcm5hbCBwYWdlIHRhYmxlIG1hbmFnZW1lbnQg4oCTIG5vIGRpcmVjdCBpbnRlcmFjdGlvbiB3aXRoIHVzZXJzcGFjZS4KClRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgcmV2b2x2ZXMgYXJvdW5kIGhvdyBga3ZtX3Jpc2N2X2dzdGFnZV9zZXRfcHRlYCBiZWhhdmVzIGFuZCBob3cgYGt2bV9yaXNjdl9nc3RhZ2VfbWFwX3BhZ2VgIGhhbmRsZXMgcG90ZW50aWFsIGVycm9ycy4gVGhlIGtleSBzZWVtcyB0byBiZSB0aGlzOiBUaGUgcGF0Y2ggcHJldmVudHMgb3ZlcndyaXRpbmcgZXhpc3RpbmcgbG93ZXItbGV2ZWwgcGFnZSB0YWJsZSBlbnRyaWVzIHdpdGggbGVhZiBtYXBwaW5ncyBieSBpbnRyb2R1Y2luZyBhIGNoZWNrIGluIGBrdm1fcmlzY3ZfZ3N0YWdlX3NldF9wdGVgLiBJZiBhbiBvdmVyd3JpdGUgaXMgYXR0ZW1wdGVkLCBpdCBub3cgcmV0dXJucyBgLUVFWElTVGAuCgpOb3csIGlmIGAtRUVYSVNUYCBpcyByZXR1cm5lZCBieSBga3ZtX3Jpc2N2X2dzdGFnZV9zZXRfcHRlYCBkdXJpbmcgbWFwcGluZywgIGBrdm1fcmlzY3ZfZ3N0YWdlX21hcF9wYWdlYCBub3cgaGFzIGxvZ2ljIHRvIGhhbmRsZSB0aGlzIGNvbmRpdGlvbi4gSXQgY2FsY3VsYXRlcyBhbiBvZmZzZXQgKGBodWdlX3BhZ2Vfb2Zmc2V0YCkgYW5kIHRoZW4gcG90ZW50aWFsbHkgcmUtbWFwcyBhIHNtYWxsZXIgcGFnZS4gVGhlIGNydWNpYWwgcGFydCBoZXJlIGlzIGV4YW1pbmluZyB0aGUgYG91dF9tYXBgIHN0cnVjdC4gVGhpcyBpcyB0aGUgY2VudHJhbCBkYXRhIHN0cnVjdHVyZS4gCgpJIHdhcyBpbml0aWFsbHkgY29uY2VybmVkIGFib3V0IHBvdGVudGlhbCB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcy4gQnV0IEkgbG9va2VkIGNsb3NlbHkgYXQgaG93IGBvdXRfbWFwYCBpcyBwb3B1bGF0ZWQuIFRoZSBgb3V0X21hcGAgc3RydWN0IGhhcyBhbiBgYWRkcmAsIGBsZXZlbGAgYW5kIGBwdGVgIGZpZWxkLiBUaGUgcGF0Y2ggbW9kaWZpZXMgKmhvdyogdGhlc2UgZmllbGRzIGFyZSBzZXQsIGJ1dCBkb2VzIG5vdCBpbnRyb2R1Y2UgYSBzY2VuYXJpbyB3aGVyZSB0aGVzZSBmaWVsZHMgY291bGQgY29udGFpbiB1bmluaXRpYWxpemVkIHZhbHVlcy4gU3BlY2lmaWNhbGx5LCB0aGUgbGluZSBgb3V0X21hcC0mZ3Q7YWRkciA9IGdwYSAmYW1wOyBQQUdFX01BU0tgIGVuc3VyZXMgdGhhdCBgYWRkcmAgaXMgaW5pdGlhbGl6ZWQsIGFuZCBldmVuIGluIHRoZSBmYWxsYmFjayBjYXNlLCBhbGwgdGhlIGZpZWxkcyBvZiBgb3V0X21hcGAgYXJlIGZ1bGx5IGluaXRpYWxpemVkLiBJdCYjMzk7cyBlc3NlbnRpYWxseSBpbXBsZW1lbnRpbmcgYSBmYWxsYmFjayBtZWNoYW5pc20sIHJlZHVjaW5nIGEgaHVnZSBwYWdlIG1hcHBpbmcgdG8gYSBzbWFsbGVyIGxldmVsIGlmIGEgaHVnZSBwYWdlIGFscmVhZHkgZXhpc3RzLgoKVGhlIGBvdXRfbWFwLSZndDthZGRyICZhbXA7IChwYWdlX3NpemUgLSAxKWAgcGFydCBtYWRlIG1lIHBhdXNlIGJyaWVmbHksIGJ1dCBzaW5jZSBgb3V0X21hcC0mZ3Q7YWRkcmAgaXMgaW5pdGlhbGl6ZWQgKHRvIGBncGEgJmFtcDsgUEFHRV9NQVNLYCkgYW5kIGBwYWdlX3NpemVgIGlzIHBhc3NlZCBhcyBhbiBhcmd1bWVudCwgdGhlcmUmIzM5O3Mgbm8gd2F5IHRoaXMgb3BlcmF0aW9uIGNhbiByZWFkIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGlzIGlzIHNpbXBseSBhIGJpdHdpc2Ugb3BlcmF0aW9uIHdpdGhpbiBhIHdlbGwtZGVmaW5lZCBhbmQgaW5pdGlhbGl6ZWQgY29udGV4dC4KCkkmIzM5O3ZlIGNhcmVmdWxseSBjb25zaWRlcmVkIHRoZSBjb2RlIHBhdGgsIHRoZSBkYXRhIHN0cnVjdHVyZXMsIGFuZCB0aGUgbG9naWMuIFRoaXMgaXMgYSBtb2RpZmljYXRpb24gdG8gcGFnZSB0YWJsZSBtYW5pcHVsYXRpb24sIG5vdCBhIG5ldyBtZW1vcnkgYWxsb2NhdGlvbi4gTXkgY29uY2x1c2lvbiBpcyBmaXJtOiAqdGhlcmUgaXMgbm8gZXZpZGVuY2Ugb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UgaW4gdGhpcyBwYXRjaCouIEl0IHVwZGF0ZXMgdGhlIHBhZ2UgdGFibGUgc3RydWN0dXJlIGFjY29yZGluZyB0byBleHBlY3RlZCBiZWhhdmlvci4KClRoZXJlZm9yZSwgTmVlZHNLTVNBTiA9IGZhbHNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMjoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBLVk0gZ3Vlc3Qgc3RhZ2UtMiBwYWdlIHRhYmxlIG1hbmFnZW1lbnQgb24gUklTQy1WIHRvIHByZXZlbnQgcmVwbGFjaW5nIGFuIGV4aXN0aW5nIGxvd2VyLWxldmVsIHBhZ2UgdGFibGUgZGlyZWN0b3J5IHdpdGggYSBsZWFmIG1hcHBpbmcgKGh1Z2UgcGFnZSkuIEl0IGRvZXMgdGhpcyBieSByZXR1cm5pbmcgLUVFWElTVCBhbmQgZmFsbGluZyBiYWNrIHRvIG1hcHBpbmcgYXQgbGV2ZWwgMCAoYmFzZSBwYWdlIHNpemUpLiBUaGVzZSBjaGFuZ2VzIGFyZSBwdXJlbHkgcmVsYXRlZCB0byBwYWdlIHRhYmxlIGxvZ2ljLCBwaHlzaWNhbCBhZGRyZXNzIGNhbGN1bGF0aW9ucywgYW5kIFBURSBtYW5pcHVsYXRpb24uIFRoZXJlIGFyZSBubyBuZXcgYWxsb2NhdGlvbnMsIG5vIHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIGFuZCBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIHVzZWQgaW4gY29udHJvbCBmbG93IG9yIGxlYWtlZC4gQW55IHBvdGVudGlhbCBidWdzIGludHJvZHVjZWQgaGVyZSAoZS5nLiwgaW5jb3JyZWN0IHBvaW50ZXJzIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMpIHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTiBvciBzdGFuZGFyZCBrZXJuZWwgdGVzdGluZy4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBLVk0gZ3Vlc3Qgc3RhZ2UtMiBwYWdlIHRhYmxlIG1hbmFnZW1lbnQgb24gUklTQy1WIHRvIHByZXZlbnQgcmVwbGFjaW5nIGFuIGV4aXN0aW5nIGxvd2VyLWxldmVsIHBhZ2UgdGFibGUgZGlyZWN0b3J5IHdpdGggYSBsZWFmIG1hcHBpbmcgKGh1Z2UgcGFnZSkuIEl0IGRvZXMgdGhpcyBieSByZXR1cm5pbmcgLUVFWElTVCBhbmQgZmFsbGluZyBiYWNrIHRvIG1hcHBpbmcgYXQgbGV2ZWwgMCAoYmFzZSBwYWdlIHNpemUpLiBUaGVzZSBjaGFuZ2VzIGFyZSBwdXJlbHkgcmVsYXRlZCB0byBwYWdlIHRhYmxlIGxvZ2ljLCBwaHlzaWNhbCBhZGRyZXNzIGNhbGN1bGF0aW9ucywgYW5kIFBURSBtYW5pcHVsYXRpb24uIFRoZXJlIGFyZSBubyBuZXcgYWxsb2NhdGlvbnMsIG5vIHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIGFuZCBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIHVzZWQgaW4gY29udHJvbCBmbG93IG9yIGxlYWtlZC4gQW55IHBvdGVudGlhbCBidWdzIGludHJvZHVjZWQgaGVyZSAoZS5nLiwgaW5jb3JyZWN0IHBvaW50ZXJzIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMpIHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTiBvciBzdGFuZGFyZCBrZXJuZWwgdGVzdGluZy4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDEyOjI0OjI0LjczMjA0NTAxNVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc1NzE5Njg3Nzk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9yaXNjdl9nc3RhZ2VfbWFwX3BhZ2VcIixcbiAgICBcImt2bV9yaXNjdl9nc3RhZ2Vfc2V0X3B0ZVwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgS1ZNIGd1ZXN0IHN0YWdlLTIgcGFnZSB0YWJsZSBtYW5hZ2VtZW50IG9uIFJJU0MtViB0byBwcmV2ZW50IHJlcGxhY2luZyBhbiBleGlzdGluZyBsb3dlci1sZXZlbCBwYWdlIHRhYmxlIGRpcmVjdG9yeSB3aXRoIGEgbGVhZiBtYXBwaW5nIChodWdlIHBhZ2UpLiBJdCBkb2VzIHRoaXMgYnkgcmV0dXJuaW5nIC1FRVhJU1QgYW5kIGZhbGxpbmcgYmFjayB0byBtYXBwaW5nIGF0IGxldmVsIDAgKGJhc2UgcGFnZSBzaXplKS4gVGhlc2UgY2hhbmdlcyBhcmUgcHVyZWx5IHJlbGF0ZWQgdG8gcGFnZSB0YWJsZSBsb2dpYywgcGh5c2ljYWwgYWRkcmVzcyBjYWxjdWxhdGlvbnMsIGFuZCBQVEUgbWFuaXB1bGF0aW9uLiBUaGVyZSBhcmUgbm8gbmV3IGFsbG9jYXRpb25zLCBubyBzdHJ1Y3R1cmVzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBhbmQgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyB1c2VkIGluIGNvbnRyb2wgZmxvdyBvciBsZWFrZWQuIEFueSBwb3RlbnRpYWwgYnVncyBpbnRyb2R1Y2VkIGhlcmUgKGUuZy4sIGluY29ycmVjdCBwb2ludGVycyBvciBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzKSB3b3VsZCBiZSBjYXVnaHQgYnkgS0FTQU4gb3Igc3RhbmRhcmQga2VybmVsIHRlc3RpbmcuIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIEtWTSBSSVNDLVYgZ3Vlc3Qgc3RhZ2UtMiBwYWdlIHRhYmxlIG1hbmFnZW1lbnQgdG8gcHJldmVudCByZXBsYWNpbmcgYW4gZXhpc3RpbmcgbG93ZXItbGV2ZWwgcGFnZSB0YWJsZSB3aXRoIGEgbGVhZiBtYXBwaW5nLCBmYWxsaW5nIGJhY2sgdG8gYSBzbWFsbGVyIHBhZ2Ugc2l6ZSBpbnN0ZWFkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSByZWFjaGFibGUgY29yZSBLVk0gZmVhdHVyZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTI6MjQ6MjQuNzMyMDUyNDA1WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzY4MTk1MTQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNmI5OTEzMWQ5YmYzZDVlYzhiNGY4YjI4ODkwYjViYjdlZTVjZWYyOVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEF1ZyAxNCAxMjoyNDoyMiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYyBiL2FyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jXFxuaW5kZXggZTUwMDJjYjljYmVmMS4uMjNjYjM1ZTM2MDczYiAxMDA2NDRcXG4tLS0gYS9hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuY1xcbisrKyBiL2FyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jXFxuQEAgLTE3NCw2ICsxNzQsMTIgQEAgaW50IGt2bV9yaXNjdl9nc3RhZ2Vfc2V0X3B0ZShzdHJ1Y3Qga3ZtX2dzdGFnZSAqZ3N0YWdlLFxcbiBcXG4gXFx0aWYgKHB0ZV92YWwoKnB0ZXApICE9IHB0ZV92YWwobWFwLVxcdTAwM2VwdGUpKSB7XFxuIFxcdFxcdGJvb2wgd2FzX2ludmFsaWQgPSAhcHRlX3ZhbCgqcHRlcCk7XFxuK1xcbitcXHRcXHQvKiBBdm9pZCByZXBsYWNpbmcgYW4gZXhpc3RpbmcgbG93ZXItbGV2ZWwgdGFibGUgd2l0aCBhIGxlYWYgbWFwcGluZy4gKi9cXG4rXFx0XFx0aWYgKCFnc3RhZ2VfcHRlX2xlYWYocHRlcCkgXFx1MDAyNlxcdTAwMjYgIXdhc19pbnZhbGlkIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdCAgICBnc3RhZ2VfcHRlX2xlYWYoXFx1MDAyNm1hcC1cXHUwMDNlcHRlKSlcXG4rXFx0XFx0XFx0cmV0dXJuIC1FRVhJU1Q7XFxuK1xcbiBcXHRcXHRzZXRfcHRlKHB0ZXAsIG1hcC1cXHUwMDNlcHRlKTtcXG4gXFx0XFx0aWYgKGdzdGFnZV9wdGVfbGVhZihwdGVwKSBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHQgICAgISh3YXNfaW52YWxpZCBcXHUwMDI2XFx1MDAyNiByaXNjdl9oYXNfZXh0ZW5zaW9uX3VubGlrZWx5KFJJU0NWX0lTQV9FWFRfU1ZWUFRDKSkpXFxuQEAgLTIxMSwxMiArMjE3LDEzIEBAIGludCBrdm1fcmlzY3ZfZ3N0YWdlX21hcF9wYWdlKHN0cnVjdCBrdm1fZ3N0YWdlICpnc3RhZ2UsXFxuIFxcdFxcdFxcdCAgICAgIHN0cnVjdCBrdm1fZ3N0YWdlX21hcHBpbmcgKm91dF9tYXApXFxuIHtcXG4gXFx0Ym9vbCBmb3VuZF9sZWFmO1xcbitcXHRwaHlzX2FkZHJfdCBodWdlX3BhZ2Vfb2Zmc2V0O1xcbiBcXHR1MzIgcHRlcF9sZXZlbDtcXG4gXFx0cGdwcm90X3QgcHJvdDtcXG4gXFx0cHRlX3QgKnB0ZXA7XFxuIFxcdGludCByZXQ7XFxuIFxcbi1cXHRvdXRfbWFwLVxcdTAwM2VhZGRyID0gZ3BhO1xcbitcXHRvdXRfbWFwLVxcdTAwM2VhZGRyID0gZ3BhIFxcdTAwMjYgUEFHRV9NQVNLO1xcbiBcXHRvdXRfbWFwLVxcdTAwM2VsZXZlbCA9IDA7XFxuIFxcbiBcXHRyZXQgPSBnc3RhZ2VfcGFnZV9zaXplX3RvX2xldmVsKGdzdGFnZSwgcGFnZV9zaXplLCBcXHUwMDI2b3V0X21hcC1cXHUwMDNlbGV2ZWwpO1xcbkBAIC0yODcsNyArMjk0LDE4IEBAIGludCBrdm1fcmlzY3ZfZ3N0YWdlX21hcF9wYWdlKHN0cnVjdCBrdm1fZ3N0YWdlICpnc3RhZ2UsXFxuIFxcdG91dF9tYXAtXFx1MDAzZXB0ZSA9IHBmbl9wdGUoUEZOX0RPV04oaHBhKSwgcHJvdCk7XFxuIFxcdG91dF9tYXAtXFx1MDAzZXB0ZSA9IHB0ZV9ta2RpcnR5KG91dF9tYXAtXFx1MDAzZXB0ZSk7XFxuIFxcbi1cXHRyZXR1cm4ga3ZtX3Jpc2N2X2dzdGFnZV9zZXRfcHRlKGdzdGFnZSwgcGNhY2hlLCBvdXRfbWFwKTtcXG4rXFx0cmV0ID0ga3ZtX3Jpc2N2X2dzdGFnZV9zZXRfcHRlKGdzdGFnZSwgcGNhY2hlLCBvdXRfbWFwKTtcXG4rXFx0aWYgKHJldCA9PSAtRUVYSVNUKSB7XFxuK1xcdFxcdGh1Z2VfcGFnZV9vZmZzZXQgPSBvdXRfbWFwLVxcdTAwM2VhZGRyIFxcdTAwMjYgKHBhZ2Vfc2l6ZSAtIDEpO1xcbitcXHRcXHRocGEgKz0gaHVnZV9wYWdlX29mZnNldDtcXG4rXFx0XFx0b3V0X21hcC1cXHUwMDNlbGV2ZWwgPSAwO1xcbitcXHRcXHRvdXRfbWFwLVxcdTAwM2VwdGUgPSBwZm5fcHRlKFBGTl9ET1dOKGhwYSksIHByb3QpO1xcbitcXHRcXHRvdXRfbWFwLVxcdTAwM2VwdGUgPSBwdGVfbWtkaXJ0eShvdXRfbWFwLVxcdTAwM2VwdGUpO1xcbitcXG4rXFx0XFx0cmV0ID0ga3ZtX3Jpc2N2X2dzdGFnZV9zZXRfcHRlKGdzdGFnZSwgcGNhY2hlLCBvdXRfbWFwKTtcXG4rXFx0fVxcbitcXG4rXFx0cmV0dXJuIHJldDtcXG4gfVxcbiBcXG4gc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIG1ha2VfY2hpbGRfcHRlKHVuc2lnbmVkIGxvbmcgaHVnZV9wdGUsIGludCBpbmRleCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTI6MjQ6MjYuMTAxMDY5NzU5WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NjQ0MTc3MDU5OTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX3Jpc2N2X2dzdGFnZV9tYXBfcGFnZVwiLFxuICAgIFwia3ZtX3Jpc2N2X2dzdGFnZV9zZXRfcHRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgS1ZNIFJJU0MtViBndWVzdCBzdGFnZS0yIHBhZ2UgdGFibGUgbWFuYWdlbWVudCB0byBwcmV2ZW50IHJlcGxhY2luZyBhbiBleGlzdGluZyBsb3dlci1sZXZlbCBwYWdlIHRhYmxlIHdpdGggYSBsZWFmIG1hcHBpbmcsIGZhbGxpbmcgYmFjayB0byBhIHNtYWxsZXIgcGFnZSBzaXplIGluc3RlYWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIHJlYWNoYWJsZSBjb3JlIEtWTSBmZWF0dXJlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA2Yjk5MTMxZDliZjNkNWVjOGI0ZjhiMjg4OTBiNWJiN2VlNWNlZjI5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBBdWcgMTQgMTI6MjQ6MjIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYyBiL2FyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jXG5pbmRleCBlNTAwMmNiOWNiZWYxLi4yM2NiMzVlMzYwNzNiIDEwMDY0NFxuLS0tIGEvYXJjaC9yaXNjdi9rdm0vZ3N0YWdlLmNcbisrKyBiL2FyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jXG5AQCAtMTc0LDYgKzE3NCwxMiBAQCBpbnQga3ZtX3Jpc2N2X2dzdGFnZV9zZXRfcHRlKHN0cnVjdCBrdm1fZ3N0YWdlICpnc3RhZ2UsXG4gXG4gXHRpZiAocHRlX3ZhbCgqcHRlcCkgIT0gcHRlX3ZhbChtYXAtXHUwMDNlcHRlKSkge1xuIFx0XHRib29sIHdhc19pbnZhbGlkID0gIXB0ZV92YWwoKnB0ZXApO1xuK1xuK1x0XHQvKiBBdm9pZCByZXBsYWNpbmcgYW4gZXhpc3RpbmcgbG93ZXItbGV2ZWwgdGFibGUgd2l0aCBhIGxlYWYgbWFwcGluZy4gKi9cbitcdFx0aWYgKCFnc3RhZ2VfcHRlX2xlYWYocHRlcCkgXHUwMDI2XHUwMDI2ICF3YXNfaW52YWxpZCBcdTAwMjZcdTAwMjZcbitcdFx0ICAgIGdzdGFnZV9wdGVfbGVhZihcdTAwMjZtYXAtXHUwMDNlcHRlKSlcbitcdFx0XHRyZXR1cm4gLUVFWElTVDtcbitcbiBcdFx0c2V0X3B0ZShwdGVwLCBtYXAtXHUwMDNlcHRlKTtcbiBcdFx0aWYgKGdzdGFnZV9wdGVfbGVhZihwdGVwKSBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgICEod2FzX2ludmFsaWQgXHUwMDI2XHUwMDI2IHJpc2N2X2hhc19leHRlbnNpb25fdW5saWtlbHkoUklTQ1ZfSVNBX0VYVF9TVlZQVEMpKSlcbkBAIC0yMTEsMTIgKzIxNywxMyBAQCBpbnQga3ZtX3Jpc2N2X2dzdGFnZV9tYXBfcGFnZShzdHJ1Y3Qga3ZtX2dzdGFnZSAqZ3N0YWdlLFxuIFx0XHRcdCAgICAgIHN0cnVjdCBrdm1fZ3N0YWdlX21hcHBpbmcgKm91dF9tYXApXG4ge1xuIFx0Ym9vbCBmb3VuZF9sZWFmO1xuK1x0cGh5c19hZGRyX3QgaHVnZV9wYWdlX29mZnNldDtcbiBcdHUzMiBwdGVwX2xldmVsO1xuIFx0cGdwcm90X3QgcHJvdDtcbiBcdHB0ZV90ICpwdGVwO1xuIFx0aW50IHJldDtcbiBcbi1cdG91dF9tYXAtXHUwMDNlYWRkciA9IGdwYTtcbitcdG91dF9tYXAtXHUwMDNlYWRkciA9IGdwYSBcdTAwMjYgUEFHRV9NQVNLO1xuIFx0b3V0X21hcC1cdTAwM2VsZXZlbCA9IDA7XG4gXG4gXHRyZXQgPSBnc3RhZ2VfcGFnZV9zaXplX3RvX2xldmVsKGdzdGFnZSwgcGFnZV9zaXplLCBcdTAwMjZvdXRfbWFwLVx1MDAzZWxldmVsKTtcbkBAIC0yODcsNyArMjk0LDE4IEBAIGludCBrdm1fcmlzY3ZfZ3N0YWdlX21hcF9wYWdlKHN0cnVjdCBrdm1fZ3N0YWdlICpnc3RhZ2UsXG4gXHRvdXRfbWFwLVx1MDAzZXB0ZSA9IHBmbl9wdGUoUEZOX0RPV04oaHBhKSwgcHJvdCk7XG4gXHRvdXRfbWFwLVx1MDAzZXB0ZSA9IHB0ZV9ta2RpcnR5KG91dF9tYXAtXHUwMDNlcHRlKTtcbiBcbi1cdHJldHVybiBrdm1fcmlzY3ZfZ3N0YWdlX3NldF9wdGUoZ3N0YWdlLCBwY2FjaGUsIG91dF9tYXApO1xuK1x0cmV0ID0ga3ZtX3Jpc2N2X2dzdGFnZV9zZXRfcHRlKGdzdGFnZSwgcGNhY2hlLCBvdXRfbWFwKTtcbitcdGlmIChyZXQgPT0gLUVFWElTVCkge1xuK1x0XHRodWdlX3BhZ2Vfb2Zmc2V0ID0gb3V0X21hcC1cdTAwM2VhZGRyIFx1MDAyNiAocGFnZV9zaXplIC0gMSk7XG4rXHRcdGhwYSArPSBodWdlX3BhZ2Vfb2Zmc2V0O1xuK1x0XHRvdXRfbWFwLVx1MDAzZWxldmVsID0gMDtcbitcdFx0b3V0X21hcC1cdTAwM2VwdGUgPSBwZm5fcHRlKFBGTl9ET1dOKGhwYSksIHByb3QpO1xuK1x0XHRvdXRfbWFwLVx1MDAzZXB0ZSA9IHB0ZV9ta2RpcnR5KG91dF9tYXAtXHUwMDNlcHRlKTtcbitcbitcdFx0cmV0ID0ga3ZtX3Jpc2N2X2dzdGFnZV9zZXRfcHRlKGdzdGFnZSwgcGNhY2hlLCBvdXRfbWFwKTtcbitcdH1cbitcbitcdHJldHVybiByZXQ7XG4gfVxuIFxuIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBtYWtlX2NoaWxkX3B0ZSh1bnNpZ25lZCBsb25nIGh1Z2VfcHRlLCBpbnQgaW5kZXgsXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMjoyNDoyNi4xMDEwNzI2NzlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5ODEzNzI4NjMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgVGhpcyBLVk0gUklTQy1WIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCDigJMgbG9va3MgbGlrZSBpdCdzIHR3ZWFraW5nIGBhcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuY2AuIFNwZWNpZmljYWxseSwgaXQncyBtZXNzaW5nIHdpdGggYGt2bV9yaXNjdl9nc3RhZ2Vfc2V0X3B0ZWAgYW5kIGBrdm1fcmlzY3ZfZ3N0YWdlX21hcF9wYWdlYC4gQWgsIGdvdCBpdC4gSXQgYWRkcyBhIGNoZWNrIGluIGBrdm1fcmlzY3ZfZ3N0YWdlX3NldF9wdGVgIHRvIHByZXZlbnQgb3ZlcndyaXRpbmcgYW4gZXhpc3RpbmcgbG93ZXItbGV2ZWwgcGFnZSB0YWJsZSBlbnRyeSB3aXRoIGEgbGVhZiBtYXBwaW5nLCBhbmQgaWYgaXQgZG9lcywgaXQgcmV0dXJucyBgLUVFWElTVGAuIFRoZSBga3ZtX3Jpc2N2X2dzdGFnZV9tYXBfcGFnZWAgZnVuY3Rpb24gdGhlbiBoYW5kbGVzIHRoaXMgYC1FRVhJU1RgIGVycm9yIGJ5IGZhbGxpbmcgYmFjayB0byB1c2luZyBhIHNtYWxsZXIgcGFnZSBzaXplIChsZXZlbCAwKSBhbmQgcmUtc2V0dGluZyB0aGUgUFRFLlxuXG5BbHJpZ2h0LCBsZXQncyBhc3Nlc3MgaXRzIGZ1enppbmcgcG90ZW50aWFsLiBUaGlzIGlzIGRlZmluaXRlbHkgd29ydGggYSBsb29rOyBpdCdzIGEgS1ZNIFJJU0MtViBwYXRjaCwgc28gdGhlIHNjb3BlIGlzIHNwZWNpZmljIGJ1dCBkZWZpbml0ZWx5IGhhcyBhdHRhY2sgc3VyZmFjZS4gSXQncyBtb2RpZnlpbmcgaG93IHBhZ2UgdGFibGVzIGFyZSBtYW5hZ2VkIGR1cmluZyBndWVzdCBzdGFnZS0yIHRyYW5zbGF0aW9uLiBUaGlzIGlzIGh1Z2Ug4oCTIGFueXRoaW5nIHJlbGF0ZWQgdG8gcGFnZSB0YWJsZXMsIGVzcGVjaWFsbHkgaW4gdGhlIGNvbnRleHQgb2YgdmlydHVhbGl6YXRpb24sIGlzIGEgcHJpbWUgdGFyZ2V0LiBBbmQgc2luY2UgaXQncyBLVk0sIHRoYXQgbWVhbnMgaXQncyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdGhyb3VnaCBLVk0gaW9jdGxzIGxpa2UgYEtWTV9SVU5gIGFuZCBob3cgbWVtb3J5IHJlZ2lvbnMgYXJlIHNldCB1cC4gQWJzb2x1dGVseSwgdGhpcyBpcyByaXBlIGZvciBmdXp6aW5nLlxuXG5Ob3csIHdoZXJlIGFyZSB0aGUgY29uZmlnIG9wdGlvbnM/IEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGlzIGlzIGNvbXBpbGVkLiBMZXQncyBzZWUuLi4gYGFyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jYCBpcyBjb21waWxlZCB3aGVuIGBDT05GSUdfS1ZNYCBpcyBlbmFibGVkIG9uIFJJU0MtVi4gVGhhdCdzIGEgZ29vZCBzdGFydC4gSSBjYW4gcHJvYmFibHkgY29uZmlybSB0aGlzIGJ5IGNoZWNraW5nIGBhcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZWAgb3IgYGFyY2gvcmlzY3Yva3ZtL0tjb25maWdgIGZvciB0aGUgYnVpbGQgZGVwZW5kZW5jaWVzLCBhbHRob3VnaCBpdCdzIHVzdWFsbHkgcHJldHR5IG9idmlvdXMuIEknbGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhlIEtjb25maWcsIGJ1dCB0aGF0IHNob3VsZCBiZSBzdHJhaWdodGZvcndhcmQuIFJpZ2h0LCBsZXQncyBnZXQgdG8gd29yayFcblxuXG4iLCJJbnB1dFRva2VucyI6MjU4NywiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3OSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDEyOjI0OjM1LjkxNDgwNDA0OVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5OTc1NzEzOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJnc3RhZ2Uub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3Jpc2N2L2t2bS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9yaXNjdi9rdm0vTWFrZWZpbGU9MTY9a3ZtLXkgKz0gYWlhX2ltc2ljLm9cXG5hcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZToxNzprdm0teSArPSBnc3RhZ2Uub1xcbmFyY2gvcmlzY3Yva3ZtL01ha2VmaWxlLTE4LWt2bS15ICs9IGlzYS5vXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYz0zMjg9Ym9vbCBrdm1fcmlzY3ZfZ3N0YWdlX3NwbGl0X2h1Z2Uoc3RydWN0IGt2bV9nc3RhZ2UgKmdzdGFnZSxcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jLTM4OS1cXG5hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYzozOTA6Ym9vbCBrdm1fcmlzY3ZfZ3N0YWdlX29wX3B0ZShzdHJ1Y3Qga3ZtX2dzdGFnZSAqZ3N0YWdlLCBncGFfdCBhZGRyLFxcbmFyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jOjM5MTpcXHRcXHRcXHQgICAgIHB0ZV90ICpwdGVwLCB1MzIgcHRlcF9sZXZlbCwgZW51bSBrdm1fcmlzY3ZfZ3N0YWdlX29wIG9wKVxcbmFyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jLTM5Mi17XFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYy00MTctXFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIFBUUlNfUEVSX1BURTsgaSsrKVxcbmFyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jOjQxODpcXHRcXHRcXHRmbHVzaCB8PSBrdm1fcmlzY3ZfZ3N0YWdlX29wX3B0ZShnc3RhZ2UsIGFkZHIgKyBpICogbmV4dF9wYWdlX3NpemUsXFxuYXJjaC9yaXNjdi9rdm0vZ3N0YWdlLmMtNDE5LVxcdFxcdFxcdFxcdFxcdFxcdFxcdCBcXHUwMDI2bmV4dF9wdGVwW2ldLCBuZXh0X3B0ZXBfbGV2ZWwsIG9wKTtcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jPTQzNT1ib29sIGt2bV9yaXNjdl9nc3RhZ2VfdW5tYXBfcmFuZ2Uoc3RydWN0IGt2bV9nc3RhZ2UgKmdzdGFnZSxcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jLTQ1NS1cXHRcXHRcXHRpZiAoIShhZGRyIFxcdTAwMjYgKHBhZ2Vfc2l6ZSAtIDEpKSBcXHUwMDI2XFx1MDAyNiAoKGVuZCAtIGFkZHIpIFxcdTAwM2U9IHBhZ2Vfc2l6ZSkpXFxuYXJjaC9yaXNjdi9rdm0vZ3N0YWdlLmM6NDU2OlxcdFxcdFxcdFxcdGZsdXNoIHw9IGt2bV9yaXNjdl9nc3RhZ2Vfb3BfcHRlKGdzdGFnZSwgYWRkciwgcHRlcCxcXG5hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYy00NTctXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0IHB0ZXBfbGV2ZWwsIEdTVEFHRV9PUF9DTEVBUik7XFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYz00Nzc9Ym9vbCBrdm1fcmlzY3ZfZ3N0YWdlX3dwX3JhbmdlKHN0cnVjdCBrdm1fZ3N0YWdlICpnc3RhZ2UsIGdwYV90IHN0YXJ0LCBncGFfdCBlbmQpXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYy00OTYtXFx0XFx0XFx0YWRkciA9IEFMSUdOX0RPV04oYWRkciwgcGFnZV9zaXplKTtcXG5hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYzo0OTc6XFx0XFx0XFx0Zmx1c2ggfD0ga3ZtX3Jpc2N2X2dzdGFnZV9vcF9wdGUoZ3N0YWdlLCBhZGRyLCBwdGVwLFxcbmFyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jLTQ5OC1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgcHRlcF9sZXZlbCwgR1NUQUdFX09QX1dQKTtcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jPTUyNj1ib29sIGt2bV9yaXNjdl9nc3RhZ2Vfd3BfcHRfbWFza2VkKHN0cnVjdCBrdm1fZ3N0YWdlICpnc3RhZ2UsIGdmbl90IGJhc2VfZ2ZuLFxcbi0tXFxuYXJjaC9yaXNjdi9rdm0vZ3N0YWdlLmMtNTUwLVxcbmFyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jOjU1MTpcXHRcXHRcXHRmbHVzaCB8PSBrdm1fcmlzY3ZfZ3N0YWdlX29wX3B0ZShnc3RhZ2UsIGFkZHIsIHB0ZXAsXFxuYXJjaC9yaXNjdi9rdm0vZ3N0YWdlLmMtNTUyLVxcdFxcdFxcdFxcdFxcdFxcdFxcdCBwdGVwX2xldmVsLCBHU1RBR0VfT1BfV1ApO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMjoyNDozNi4wMTQ1NjkwODhaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODQzODQ0MDQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBhIGZpcnN0LXBlcnNvbiBleHBlcnQgc3VtbWFyeTpcblxuKipEaWdnaW5nIGludG8gdGhlIFJJU0MtViBLVk0gQ29tcGlsYXRpb24gUHJvY2VzcyoqXG5cbkFscmlnaHQsIHNvIHRoZSBmaWxlIHdhcyBjb21waWxlZCB1c2luZyBga3ZtLXlgLiBNeSBpbW1lZGlhdGUgcmVhY3Rpb24gaXMgdG8gdHJhY2sgZG93biBleGFjdGx5IGhvdyB0aGlzIGBrdm0teWAgaXMgY29uZmlndXJlZCB3aXRoaW4gdGhlIGJ1aWxkIHN5c3RlbS4gR2l2ZW4gdGhpcyBpcyBSSVNDLVYgS1ZNLCBteSBmaXJzdCBpbnN0aW5jdCBpcyB0byBkaXZlIGludG8gdGhlIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBtYWtlZmlsZXMuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGNoZWNrIGBhcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZWAuIFRoYXQncyB3aGVyZSBJIGV4cGVjdCB0byBmaW5kIHRoZSBjb25kaXRpb25hbCBsb2dpYyB0aGF0IGRlZmluZXMgaG93IGBrdm0teWAgaXMgaW50ZXJwcmV0ZWQsIHdoYXQgc291cmNlIGZpbGVzIGl0IGluY2x1ZGVzLCBhbmQgYW55IG90aGVyIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIGZvciB0aGUgUklTQy1WIEtWTSBzdWJzeXN0ZW0gd2l0aGluIHRoZSBicm9hZGVyIGtlcm5lbCBidWlsZCBwcm9jZXNzLiBUaW1lIHRvIHNlZSB3aGF0IHRoYXQgTWFrZWZpbGUgcmV2ZWFscy4gVGhpcyBraW5kIG9mIGludmVzdGlnYXRpb24gaXMgZXNzZW50aWFsIHRvIHVuZGVyc3RhbmRpbmcgdGhlIGJ1aWxkIGFuZCBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gSSdtIGtlZW4gdG8gZmlndXJlIG91dCB3aHkgdGhpcyBmbGFnIHdhcyB1c2VkIGFuZCB3aGF0IGl0IG1lYW5zIGZvciB0aGUgcmVzdWx0aW5nIGJpbmFyeS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDE5OSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDEyOjI0OjM5Ljg1ODQyNTEwNVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3Mjk4NTgxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm0teVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZT0xMD1vYmotJChDT05GSUdfS1ZNKSArPSBrdm0ub1xcbi0tXFxuYXJjaC9yaXNjdi9rdm0vTWFrZWZpbGUtMTItIyBPcmRlcmVkIGFscGhhYmV0aWNhbGx5XFxuYXJjaC9yaXNjdi9rdm0vTWFrZWZpbGU6MTM6a3ZtLXkgKz0gYWlhLm9cXG5hcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZToxNDprdm0teSArPSBhaWFfYXBsaWMub1xcbmFyY2gvcmlzY3Yva3ZtL01ha2VmaWxlOjE1Omt2bS15ICs9IGFpYV9kZXZpY2Uub1xcbmFyY2gvcmlzY3Yva3ZtL01ha2VmaWxlOjE2Omt2bS15ICs9IGFpYV9pbXNpYy5vXFxuYXJjaC9yaXNjdi9rdm0vTWFrZWZpbGU6MTc6a3ZtLXkgKz0gZ3N0YWdlLm9cXG5hcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZToxODprdm0teSArPSBpc2Eub1xcbmFyY2gvcmlzY3Yva3ZtL01ha2VmaWxlOjE5Omt2bS15ICs9IG1haW4ub1xcbmFyY2gvcmlzY3Yva3ZtL01ha2VmaWxlOjIwOmt2bS15ICs9IG1tdS5vXFxuYXJjaC9yaXNjdi9rdm0vTWFrZWZpbGU6MjE6a3ZtLXkgKz0gbmFjbC5vXFxuYXJjaC9yaXNjdi9rdm0vTWFrZWZpbGU6MjI6a3ZtLXkgKz0gdGxiLm9cXG5hcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZToyMzprdm0teSArPSB2Y3B1Lm9cXG5hcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZToyNDprdm0teSArPSB2Y3B1X2NvbmZpZy5vXFxuYXJjaC9yaXNjdi9rdm0vTWFrZWZpbGU6MjU6a3ZtLXkgKz0gdmNwdV9leGl0Lm9cXG5hcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZToyNjprdm0teSArPSB2Y3B1X2ZwLm9cXG5hcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZToyNzprdm0teSArPSB2Y3B1X2luc24ub1xcbmFyY2gvcmlzY3Yva3ZtL01ha2VmaWxlOjI4Omt2bS15ICs9IHZjcHVfb25lcmVnLm9cXG5hcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZS0yOS1rdm0tJChDT05GSUdfUklTQ1ZfUE1VX1NCSSkgKz0gdmNwdV9wbXUub1xcbmFyY2gvcmlzY3Yva3ZtL01ha2VmaWxlOjMwOmt2bS15ICs9IHZjcHVfc2JpLm9cXG5hcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZTozMTprdm0teSArPSB2Y3B1X3NiaV9iYXNlLm9cXG5hcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZTozMjprdm0teSArPSB2Y3B1X3NiaV9mb3J3YXJkLm9cXG5hcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZTozMzprdm0teSArPSB2Y3B1X3NiaV9md2Z0Lm9cXG5hcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZTozNDprdm0teSArPSB2Y3B1X3NiaV9oc20ub1xcbmFyY2gvcmlzY3Yva3ZtL01ha2VmaWxlLTM1LWt2bS0kKENPTkZJR19SSVNDVl9QTVVfU0JJKSArPSB2Y3B1X3NiaV9wbXUub1xcbmFyY2gvcmlzY3Yva3ZtL01ha2VmaWxlOjM2Omt2bS15ICs9IHZjcHVfc2JpX3JlcGxhY2Uub1xcbmFyY2gvcmlzY3Yva3ZtL01ha2VmaWxlOjM3Omt2bS15ICs9IHZjcHVfc2JpX3N0YS5vXFxuYXJjaC9yaXNjdi9rdm0vTWFrZWZpbGU6Mzg6a3ZtLXkgKz0gdmNwdV9zYmlfc3lzdGVtLm9cXG5hcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZS0zOS1rdm0tJChDT05GSUdfUklTQ1ZfU0JJX1YwMSkgKz0gdmNwdV9zYmlfdjAxLm9cXG5hcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZTo0MDprdm0teSArPSB2Y3B1X3N3aXRjaC5vXFxuYXJjaC9yaXNjdi9rdm0vTWFrZWZpbGU6NDE6a3ZtLXkgKz0gdmNwdV90aW1lci5vXFxuYXJjaC9yaXNjdi9rdm0vTWFrZWZpbGU6NDI6a3ZtLXkgKz0gdmNwdV92ZWN0b3Iub1xcbmFyY2gvcmlzY3Yva3ZtL01ha2VmaWxlOjQzOmt2bS15ICs9IHZtLm9cXG5hcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZTo0NDprdm0teSArPSB2bWlkLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTI6MjQ6MzkuOTMxNDE3MDg0WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc5MDU2NjYwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHRoZSBzaXR1YXRpb246XG5cbioqRGl2aW5nIGludG8gdGhlIEtWTSBSSVNDLVYgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB3ZSdyZSBsb29raW5nIGF0IHNvbWV0aGluZyByZWxhdGVkIHRvIEtWTSBjb25maWd1cmF0aW9uLCBzcGVjaWZpY2FsbHkgdGhlIGBDT05GSUdfS1ZNYCBkaXJlY3RpdmUuIFRoYXQncyBvdXIgc3RhcnRpbmcgcG9pbnQuIEZyb20gdGhlcmUsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBtZWF0IG9mIHRoZSBjaGFuZ2UuIEl0IGxvb2tzIGxpa2UgdGhlIHBhdGNoIGlzIGtleWVkIGFyb3VuZCB0d28ga2V5IGZ1bmN0aW9uczogYGt2bV9yaXNjdl9nc3RhZ2Vfc2V0X3B0ZWAgYW5kIGBrdm1fcmlzY3ZfZ3N0YWdlX21hcF9wYWdlYC4gTXkgbmV4dCBpbW1lZGlhdGUgcXVlc3Rpb25zIGFyZTogQXJlIHRoZXNlIGZ1bmN0aW9ucyBleHBvcnRlZCwgb3IgYXJlIHRoZXkgc3RhdGljIHdpdGhpbiBhIG1vZHVsZT8gVW5kZXJzdGFuZGluZyB0aGVpciBzY29wZSBpcyBjcml0aWNhbCB0byBhc3Nlc3MgdGhlIGltcGFjdCBvZiB0aGVzZSBjaGFuZ2VzLiBLbm93aW5nIHRoYXQgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIGhhbmRsZSBvbiBwb3RlbnRpYWwgZGVwZW5kZW5jaWVzIGFuZCB3aGVyZSB0aGlzIG1vZGlmaWNhdGlvbiBzaXRzIHdpdGhpbiB0aGUgYnJvYWRlciBLVk0gUklTQy1WIGFyY2hpdGVjdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTM3MywiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDEyOjI0OjQzLjcyMTk4NjQyMVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NjcwOTMwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fcmlzY3ZfZ3N0YWdlX21hcF9wYWdlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvcmlzY3Yva3ZtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYz0xOTI9c3RhdGljIHZvaWQga3ZtX3Jpc2N2X2dzdGFnZV91cGRhdGVfcHRlX3Byb3Qoc3RydWN0IGt2bV9nc3RhZ2UgKmdzdGFnZSwgdTMyIGxldmVsLFxcbi0tXFxuYXJjaC9yaXNjdi9rdm0vZ3N0YWdlLmMtMjEyLVxcbmFyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jOjIxMzppbnQga3ZtX3Jpc2N2X2dzdGFnZV9tYXBfcGFnZShzdHJ1Y3Qga3ZtX2dzdGFnZSAqZ3N0YWdlLFxcbmFyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jLTIxNC1cXHRcXHRcXHQgICAgICBzdHJ1Y3Qga3ZtX21tdV9tZW1vcnlfY2FjaGUgKnBjYWNoZSxcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL21tdS5jPTYyMz1pbnQga3ZtX3Jpc2N2X21tdV9tYXAoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX21lbW9yeV9zbG90ICptZW1zbG90LFxcbi0tXFxuYXJjaC9yaXNjdi9rdm0vbW11LmMtNzM0LVxcdFxcdG1hcmtfcGFnZV9kaXJ0eV9pbl9zbG90KGt2bSwgbWVtc2xvdCwgZ2ZuKTtcXG5hcmNoL3Jpc2N2L2t2bS9tbXUuYzo3MzU6XFx0XFx0cmV0ID0ga3ZtX3Jpc2N2X2dzdGFnZV9tYXBfcGFnZShcXHUwMDI2Z3N0YWdlLCBwY2FjaGUsIGdwYSwgaGZuIFxcdTAwM2NcXHUwMDNjIFBBR0VfU0hJRlQsXFxuYXJjaC9yaXNjdi9rdm0vbW11LmMtNzM2LVxcdFxcdFxcdFxcdFxcdFxcdHZtYV9wYWdlc2l6ZSwgZmFsc2UsIHRydWUsIG91dF9tYXApO1xcbmFyY2gvcmlzY3Yva3ZtL21tdS5jLTczNy1cXHR9IGVsc2Uge1xcbmFyY2gvcmlzY3Yva3ZtL21tdS5jOjczODpcXHRcXHRyZXQgPSBrdm1fcmlzY3ZfZ3N0YWdlX21hcF9wYWdlKFxcdTAwMjZnc3RhZ2UsIHBjYWNoZSwgZ3BhLCBoZm4gXFx1MDAzY1xcdTAwM2MgUEFHRV9TSElGVCxcXG5hcmNoL3Jpc2N2L2t2bS9tbXUuYy03MzktXFx0XFx0XFx0XFx0XFx0XFx0dm1hX3BhZ2VzaXplLCB0cnVlLCB0cnVlLCBvdXRfbWFwKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTI6MjQ6NDMuODA4Njk5NzFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzM4MjUwMjE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhpbmtpbmcgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgUklTQy1WIEtWTSBQYWdlIEZhdWx0IEhhbmRsZXIqKlxuXG5Pa2F5LCBzbyBJJ20gdHJhY2tpbmcgZG93biBob3cgcGFnZSBmYXVsdHMgYXJlIGhhbmRsZWQgaW4gdGhlIEtWTSBSSVNDLVYgaW1wbGVtZW50YXRpb24uIFRoZSBrZXJuZWwgdGVsbHMgbWUgdGhhdCBga3ZtX3Jpc2N2X21tdV9tYXBgIGlzIHRoZSBjcnVjaWFsIHBhZ2UgZmF1bHQgaGFuZGxlci4gTm93LCBJIHNlZSB0aGF0IGBrdm1fcmlzY3ZfZ3N0YWdlX21hcF9wYWdlYCBpcyBiZWluZyBjYWxsZWQgKmJ5KiBga3ZtX3Jpc2N2X21tdV9tYXBgLiBUaGlzIHN1Z2dlc3RzIGEgaGllcmFyY2hpY2FsIHN0cnVjdHVyZSwgd2hlcmUgYGt2bV9yaXNjdl9tbXVfbWFwYCBpcyB0aGUgdG9wLWxldmVsIGhhbmRsZXIgdGhhdCB0aGVuIGRlbGVnYXRlcyBzb21lIG9mIHRoZSBhY3R1YWwgbWFwcGluZyB3b3JrIHRvIGBrdm1fcmlzY3ZfZ3N0YWdlX21hcF9wYWdlYC4gR2l2ZW4gdGhhdCBga3ZtX3Jpc2N2X21tdV9tYXBgIGlzIGlkZW50aWZpZWQgYXMgdGhlIFwibWFpblwiIGhhbmRsZXIsIGl0IG1ha2VzIHNlbnNlIHRvIHN0YXJ0IGRpZ2dpbmcgaW4gdGhlcmUuIExldCdzIHN0YXJ0IGJ5IHNjcnV0aW5pemluZyB0aGUgbG9naWMgd2l0aGluIGBrdm1fcmlzY3ZfbW11X21hcGAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBpdCBvcmNoZXN0cmF0ZXMgdGhlIG1hcHBpbmcgcHJvY2VzcywgaG93IGl0IGRldGVybWluZXMgd2hpY2ggcGFydHMgYXJlIGhhbmRsZWQgYnkgYGt2bV9yaXNjdl9nc3RhZ2VfbWFwX3BhZ2VgLCBhbmQgZ2VuZXJhbGx5IGhvdyB0aGUgS1ZNIGhhbmRsZXMgdGhlIGd1ZXN0IHBhZ2UgZmF1bHRzIGZvciB0aGUgUklTQy1WIGFyY2hpdGVjdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjA5MCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjczLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDEyOjI0OjQ3LjU0Njk1MjUzOFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjkxNzAzOTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX3Jpc2N2X21tdV9tYXBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9yaXNjdi9rdm0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvcmlzY3Yva3ZtL21tdS5jPTU1Mj1zdGF0aWMgYm9vbCBrdm1fcmlzY3ZfbW11X2RpcnR5X2xvZ193cml0ZV9mYXVsdF9mYXN0KHN0cnVjdCBrdm0gKmt2bSxcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL21tdS5jLTYyMi1cXG5hcmNoL3Jpc2N2L2t2bS9tbXUuYzo2MjM6aW50IGt2bV9yaXNjdl9tbXVfbWFwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9tZW1vcnlfc2xvdCAqbWVtc2xvdCxcXG5hcmNoL3Jpc2N2L2t2bS9tbXUuYy02MjQtXFx0XFx0ICAgICAgZ3BhX3QgZ3BhLCB1bnNpZ25lZCBsb25nIGh2YSwgYm9vbCBpc193cml0ZSxcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfZXhpdC5jPTE2PXN0YXRpYyBpbnQgZ3N0YWdlX3BhZ2VfZmF1bHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3J1biAqcnVuLFxcbi0tXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9leGl0LmMtNjYtXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9leGl0LmM6Njc6XFx0cmV0ID0ga3ZtX3Jpc2N2X21tdV9tYXAodmNwdSwgbWVtc2xvdCwgZmF1bHRfYWRkciwgaHZhLFxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfZXhpdC5jLTY4LVxcdFxcdFxcdFxcdCh0cmFwLVxcdTAwM2VzY2F1c2UgPT0gRVhDX1NUT1JFX0dVRVNUX1BBR0VfRkFVTFQpID8gdHJ1ZSA6IGZhbHNlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMjoyNDo0Ny42MTYxMzEyMzdaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTc3OTAwMTY4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgUG90ZW50aWFsIFRlc3QgRGlzdHJpYnV0aW9uIFNrZXcqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGNvZGUgcmVsYXRlZCB0byBLVk0gb24gUklTQy1WIGFuZCB0cnlpbmcgdG8gZmlndXJlIG91dCB3aGVyZSB3ZSBjYW4gYmVzdCBmb2N1cyBvdXIgdGVzdGluZyBlZmZvcnRzLiBga3ZtX3Jpc2N2X21tdV9tYXBgIGlzIHRyaWdnZXJlZCBieSBgZ3N0YWdlX3BhZ2VfZmF1bHRgLCB3aGljaCwgaW4gdHVybiwgaXMgdHJpZ2dlcmVkIGJ5IGd1ZXN0IHBhZ2UgZmF1bHRzLiBUaGF0J3MgYSBjbGFzc2ljIGhvdCBwYXRoLiBCdXQsIGBrdm1fcmlzY3ZfZ3N0YWdlX21hcF9wYWdlYCBpcyBhbHNvIGhlYXZpbHkgdXNlZC5cblxuV2FpdCBhIG1pbnV0ZSwgdGhlIGluc3RydWN0aW9ucyBhcmUgdG8gYXZvaWQgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMsIHRoYXQgd2lsbCBza2V3IHRoZSB0ZXN0IGRpc3RyaWJ1dGlvbnMuIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBlbnRyeSBwb2ludHMuIFNvLCBpcyBga3ZtX3Jpc2N2X21tdV9tYXBgIGEgaG90IHBhdGg/IEFic29sdXRlbHkg4oCTIHBhZ2UgZmF1bHQgaGFuZGxlcnMgYXJlIGFsd2F5cyBpbiB0aGUgY3JpdGljYWwgcGF0aC4gV2UgYWxyZWFkeSBrbm93IHRoYXQuXG5cblNvLCBsZXQncyBsb29rIGZvciBhbHRlcm5hdGl2ZXMgdG8gZm9jdXMgb24uIFBlcmhhcHMgYGt2bV9yaXNjdl9nc3RhZ2VfbWFwX3BhZ2VgIGlzICpub3QqIGEgZ2VuZXJpYyBob3QgcGF0aC4gSXQncyBzcGVjaWZpYyB0byBLVk0gUklTQy1WIHBhZ2UgbWFwcGluZy4gR29vZC4gTGV0J3MgbWFrZSBzdXJlIGl0IGlzIGV4cG9ydGVkLCBtZWFuaW5nIGl0IGlzIG5vdCBzdGF0aWMsIHdoaWNoIGl0IGFwcGVhcnMgbm90IHRvIGJlLiBOZXh0LCBsZXQncyBleHBsb3JlIGBrdm1fcmlzY3ZfZ3N0YWdlX3NldF9wdGVgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2Nzg4LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDEyOjI0OjUzLjM5NTEzNjcyMloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTYxNTM1OTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX3Jpc2N2X2dzdGFnZV9zZXRfcHRlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvcmlzY3Yva3ZtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYz0xMjg9Ym9vbCBrdm1fcmlzY3ZfZ3N0YWdlX3RyeV91cGRhdGVfcHRlKHN0cnVjdCBrdm1fZ3N0YWdlICpnc3RhZ2UsIHUzMiBsZXZlbCxcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jLTE0MS1cXG5hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYzoxNDI6aW50IGt2bV9yaXNjdl9nc3RhZ2Vfc2V0X3B0ZShzdHJ1Y3Qga3ZtX2dzdGFnZSAqZ3N0YWdlLFxcbmFyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jLTE0My1cXHRcXHRcXHQgICAgIHN0cnVjdCBrdm1fbW11X21lbW9yeV9jYWNoZSAqcGNhY2hlLFxcbi0tXFxuYXJjaC9yaXNjdi9rdm0vZ3N0YWdlLmM9MjEzPWludCBrdm1fcmlzY3ZfZ3N0YWdlX21hcF9wYWdlKHN0cnVjdCBrdm1fZ3N0YWdlICpnc3RhZ2UsXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYy0yNzMtXFx0XFx0ICoganVzdCB1cGRhdGUgdGhlIHB0ZSBwcm90IGhlcmUuIE90aGVyd2lzZSwgd2Ugd291bGQgZmFsbCBiYWNrIHRvIG1hcHBpbmdcXG5hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYzoyNzQ6XFx0XFx0ICogdGhlIGdzdGFnZSBhdCBodWdlIHBhZ2UgbGV2ZWwgaW4gYGt2bV9yaXNjdl9nc3RhZ2Vfc2V0X3B0ZWAsIHdpdGggdGhlXFxuYXJjaC9yaXNjdi9rdm0vZ3N0YWdlLmMtMjc1LVxcdFxcdCAqIG92ZXJoZWFkIG9mIGZyZWVpbmcgdGhlIHBhZ2UgdGFibGVzKG5vdCBzdXBwb3J0IG5vdyksIHdoaWNoIHdvdWxkIHNsb3dcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jLTI4Mi1cXHRcXHQgKiBXZSBhbHJlYWR5IGhhdmUgdGhlIHB0ZXAsIGp1c3QgdXBkYXRlIHRoZSBwdGUgcHJvdCBpZiB0aGUgcGZuIG5vdCBjaGFuZ2UuXFxuYXJjaC9yaXNjdi9rdm0vZ3N0YWdlLmM6MjgzOlxcdFxcdCAqIFRoZXJlIGlzIG5vIG5lZWQgdG8gaW52b2tlIGBrdm1fcmlzY3ZfZ3N0YWdlX3NldF9wdGVgIGFnYWluLlxcbmFyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jLTI4NC1cXHRcXHQgKi9cXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jLTI5Ni1cXG5hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYzoyOTc6XFx0cmV0ID0ga3ZtX3Jpc2N2X2dzdGFnZV9zZXRfcHRlKGdzdGFnZSwgcGNhY2hlLCBvdXRfbWFwKTtcXG5hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYy0yOTgtXFx0aWYgKHJldCA9PSAtRUVYSVNUKSB7XFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYy0zMDQtXFxuYXJjaC9yaXNjdi9rdm0vZ3N0YWdlLmM6MzA1OlxcdFxcdHJldCA9IGt2bV9yaXNjdl9nc3RhZ2Vfc2V0X3B0ZShnc3RhZ2UsIHBjYWNoZSwgb3V0X21hcCk7XFxuYXJjaC9yaXNjdi9rdm0vZ3N0YWdlLmMtMzA2LVxcdH1cXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL21tdS5jPTQwPWludCBrdm1fcmlzY3ZfbW11X2lvcmVtYXAoc3RydWN0IGt2bSAqa3ZtLCBncGFfdCBncGEsIHBoeXNfYWRkcl90IGhwYSxcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL21tdS5jLTc0LVxcdFxcdHdyaXRlX2xvY2soXFx1MDAyNmt2bS1cXHUwMDNlbW11X2xvY2spO1xcbmFyY2gvcmlzY3Yva3ZtL21tdS5jOjc1OlxcdFxcdHJldCA9IGt2bV9yaXNjdl9nc3RhZ2Vfc2V0X3B0ZShcXHUwMDI2Z3N0YWdlLCBcXHUwMDI2cGNhY2hlLCBcXHUwMDI2bWFwKTtcXG5hcmNoL3Jpc2N2L2t2bS9tbXUuYy03Ni1cXHRcXHR3cml0ZV91bmxvY2soXFx1MDAyNmt2bS1cXHUwMDNlbW11X2xvY2spO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMjoyNDo1My40OTEyOTc4NTFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDY5NDA5NTgyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIGNvbnNpZGVyaW5nIG15IGV4cGVydGlzZTpcblxuKipFeGFtaW5pbmcgS1ZNL1JJU0MtViBQYWdlIFRhYmxlIE1hbmlwdWxhdGlvbioqXG5cbkFscmlnaHQsIEknbSBkaWdnaW5nIGludG8gdGhpcyBLVk0vUklTQy1WIHBhZ2UgdGFibGUgaW50ZXJhY3Rpb24uIFNwZWNpZmljYWxseSwgSSdtIGZvY3VzaW5nIG9uIHRoZSBwb3RlbnRpYWwgb3ZlcmxhcCBvciBzaGFyZWQgZnVuY3Rpb25hbGl0eSBiZXR3ZWVuIGBrdm1fcmlzY3ZfZ3N0YWdlX3NldF9wdGVgIGFuZCBga3ZtX3Jpc2N2X21tdV9pb3JlbWFwYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIHJvdXRpbmVzIGludGVyYWN0LCBiZWNhdXNlIGBrdm1fcmlzY3ZfZ3N0YWdlX3NldF9wdGVgIGFsc28gZ2V0cyBjYWxsZWQgZnJvbSB3aXRoaW4gYGt2bV9yaXNjdl9tbXVfaW9yZW1hcGAuIE15IGh1bmNoIGlzIHRoYXQgSSBzaG91bGQgYWxzbyBiZSB0YWtpbmcgYSBnb29kIGxvb2sgYXQgYGt2bV9yaXNjdl9nc3RhZ2VfbWFwX3BhZ2VgIGFzIHdlbGwsIGFzIGl0IGxpa2VseSByZWxhdGVzIHRvIHNpbWlsYXIgZnVuY3Rpb25hbGl0eS4gTXkgcHJpbWFyeSB0aG91Z2h0IHByb2Nlc3MgaXMgdGhhdCB0aGUgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIHRoZXNlIGZ1bmN0aW9ucyBhcmUgY3J1Y2lhbCB0byB1bmRlcnN0YW5kLiBUaGUgYmVzdCB3YXkgdG8gY2xhcmlmeSB0aG9zZSByZWxhdGlvbnNoaXBzIGlzIHRvIHF1aWNrbHkgY2hlY2sgd2hldGhlciBga3ZtX3Jpc2N2X2dzdGFnZV9tYXBfcGFnZWAgYW5kIGBrdm1fcmlzY3ZfZ3N0YWdlX3NldF9wdGVgIGFyZSBhY3R1YWxseSBleHBvc2VkIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBUaW1lIHRvIGNoZWNrIGBhcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmhgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MDc5LCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTI6MjQ6NTguMTg1Mzk3MTY5WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTEyODgwNzksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bV9yaXNjdl9nc3RhZ2VfbWFwX3BhZ2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMjoyNDo1OC4yOTY2OTMwNzdaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzcyMDUxMjQ1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIHlvdXIgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOlxuXG4qKk5hdmlnYXRpbmcgdGhlIExhYnlyaW50aDogRGVjbGFyYXRpb24gTG9jYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gZGVlcCBpbiB0aGlzIGNvZGUsIGFuZCBJJ20gdHJ5aW5nIHRvIHRyYWNlIHRoZSBvcmlnaW4gb2YgdGhpcyB2YXJpYWJsZS9mdW5jdGlvbi9vYmplY3Qg4oCTIHdoYXRldmVyIGl0IGlzLiBNeSBicmFpbidzIGFscmVhZHkgZmlyaW5nIG9uIGFsbCBjeWxpbmRlcnMsIGNvbnNpZGVyaW5nIGRlcGVuZGVuY2llcywgc2NvcGUsIGFuZCBwb3RlbnRpYWwgaW5oZXJpdGFuY2UgcGF0aHMuIEJ1dCB0aGUgZnVuZGFtZW50YWwgcXVlc3Rpb24ga2VlcHMgbmFnZ2luZyBhdCBtZTogKndoZXJlKiB0aGUgaGVjayBpcyB0aGlzIHRoaW5nIGFjdHVhbGx5ICpkZWZpbmVkKj8gSSBtZWFuLCBJIGNhbiBzZWUgaXQgYmVpbmcgKnVzZWQqIGhlcmUsIGFuZCBJJ3ZlIGdvdCBhIGdvb2QgaGFuZGxlIG9uIGl0cyBiZWhhdmlvciBpbiB0aGlzIGNvbnRleHQsIGJ1dCBJIG5lZWQgdGhlIHNvdXJjZS4gSSBuZWVkIHRoZSBkZWNsYXJhdGlvbi4gSXMgaXQgaW4gdGhpcyBmaWxlPyBBbm90aGVyIG1vZHVsZT8gQSBsaWJyYXJ5IEkgbmVlZCB0byByZWZlcmVuY2U/IEl0J3MgdGhlIGtleS4gSSBjYW4ndCByZWFsbHkgcmVhc29uIGRlZXBseSBhYm91dCB0aGUgbG9naWMgdW50aWwgSSBoYXZlIHRoaXMgY29yZSBwaWVjZSBvZiBpbmZvcm1hdGlvbi4gV2hlcmUgKmFyZSogdGhleSBkZWNsYXJlZD8hXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg0ODcsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDEyOjI1OjAyLjAxNzIwODE2NVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzcyMjQ0NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX3Jpc2N2X2dzdGFnZV9tYXBfcGFnZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3Jpc2N2L2t2bS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9yaXNjdi9rdm0vZ3N0YWdlLmM9MTkyPXN0YXRpYyB2b2lkIGt2bV9yaXNjdl9nc3RhZ2VfdXBkYXRlX3B0ZV9wcm90KHN0cnVjdCBrdm1fZ3N0YWdlICpnc3RhZ2UsIHUzMiBsZXZlbCxcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jLTIxMi1cXG5hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYzoyMTM6aW50IGt2bV9yaXNjdl9nc3RhZ2VfbWFwX3BhZ2Uoc3RydWN0IGt2bV9nc3RhZ2UgKmdzdGFnZSxcXG5hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYy0yMTQtXFx0XFx0XFx0ICAgICAgc3RydWN0IGt2bV9tbXVfbWVtb3J5X2NhY2hlICpwY2FjaGUsXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS9tbXUuYz02MjM9aW50IGt2bV9yaXNjdl9tbXVfbWFwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9tZW1vcnlfc2xvdCAqbWVtc2xvdCxcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL21tdS5jLTczNC1cXHRcXHRtYXJrX3BhZ2VfZGlydHlfaW5fc2xvdChrdm0sIG1lbXNsb3QsIGdmbik7XFxuYXJjaC9yaXNjdi9rdm0vbW11LmM6NzM1OlxcdFxcdHJldCA9IGt2bV9yaXNjdl9nc3RhZ2VfbWFwX3BhZ2UoXFx1MDAyNmdzdGFnZSwgcGNhY2hlLCBncGEsIGhmbiBcXHUwMDNjXFx1MDAzYyBQQUdFX1NISUZULFxcbmFyY2gvcmlzY3Yva3ZtL21tdS5jLTczNi1cXHRcXHRcXHRcXHRcXHRcXHR2bWFfcGFnZXNpemUsIGZhbHNlLCB0cnVlLCBvdXRfbWFwKTtcXG5hcmNoL3Jpc2N2L2t2bS9tbXUuYy03MzctXFx0fSBlbHNlIHtcXG5hcmNoL3Jpc2N2L2t2bS9tbXUuYzo3Mzg6XFx0XFx0cmV0ID0ga3ZtX3Jpc2N2X2dzdGFnZV9tYXBfcGFnZShcXHUwMDI2Z3N0YWdlLCBwY2FjaGUsIGdwYSwgaGZuIFxcdTAwM2NcXHUwMDNjIFBBR0VfU0hJRlQsXFxuYXJjaC9yaXNjdi9rdm0vbW11LmMtNzM5LVxcdFxcdFxcdFxcdFxcdFxcdHZtYV9wYWdlc2l6ZSwgdHJ1ZSwgdHJ1ZSwgb3V0X21hcCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDEyOjI1OjAyLjA5NDQzNzk1NFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDE5MTU1NTU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgUklTQy1WIEtWTSBNTVUgQ29kZSoqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IG15IGJlYXJpbmdzLiBMZXQncyBzdGFydCBieSBsb29raW5nIGF0IHRoZSBpbmNsdWRlIHN0YXRlbWVudHMgd2l0aGluIGBhcmNoL3Jpc2N2L2t2bS9tbXUuY2AuIEdvdHRhIGdldCBhIHNvbGlkIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGRlcGVuZGVuY2llcyBhbmQgd2hhdCBleHRlcm5hbCBlbGVtZW50cyBhcmUgYmVpbmcgbGV2ZXJhZ2VkIGhlcmUuIEkga25vdyB0aGlzIGNvZGUgcHJldHR5IHdlbGwsIHNvIEknbSBsb29raW5nIGZvciBhbnl0aGluZyB1bnVzdWFsIG9yIGFueXRoaW5nIHRoYXQgbWlnaHQganVtcCBvdXQgdGhhdCBJIGhhdmVuJ3Qgc2VlbiBiZWZvcmUuIEFyZSB0aGV5IHVzaW5nIGFueSBuZXcsIGV4cGVyaW1lbnRhbCBmZWF0dXJlcz8gT3IgcGVyaGFwcyB0aGV5J3ZlIGluY29ycG9yYXRlZCBhIHBhcnRpY3VsYXIgbGlicmFyeSBpbiBhbiB1bmV4cGVjdGVkIHdheT8gVGhpcyBpbml0aWFsIHBhc3MgaXMgYWJvdXQgc2V0dGluZyB0aGUgc3RhZ2UgYW5kIHJlZnJlc2hpbmcgbXkgbWVudGFsIG1hcCBvZiB0aGUgcHJvamVjdCdzIGFyY2hpdGVjdHVyZSwgZXNwZWNpYWxseSBmb2N1c2luZyBvbiBtZW1vcnkgbWFuYWdlbWVudCB3aXRoaW4gdGhlIFJJU0MtViBLVk0gY29udGV4dC4gSSdsbCBtYWtlIG5vdGUgb2YgYW55IGhlYWRlciBmaWxlcyB0aGF0IGFyZSBzcGVjaWZpYyB0byBoYXJkd2FyZSBpbnRlcmFjdGlvbnMgb3IgdmlydHVhbGl6YXRpb24gaW50cmljYWNpZXMgdGhhdCBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgZnVydGhlci4gQSB3ZWxsLW9yZ2FuaXplZCBpbmNsdWRlIHNlY3Rpb24gaXMgdXN1YWxseSBhIGdvb2QgaW5kaWNhdG9yIG9mIG92ZXJhbGwgY29kZSBxdWFsaXR5LCBzbyBJJ20gaG9waW5nIGl0J3MgY2xlYW4gYW5kIGNsZWFyLiBUaW1lIHRvIGRpZyBpbiFcblxuXG4iLCJJbnB1dFRva2VucyI6OTE2MiwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDEyOjI1OjA3LjUxMzU5Njg5NFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAyNDgzMDc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bV9yaXNjdl9nc3RhZ2VfbWFwX3BhZ2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9yaXNjdi9rdm0vbW11LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9yaXNjdi9rdm0vbW11LmM9NjIzPWludCBrdm1fcmlzY3ZfbW11X21hcChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKm1lbXNsb3QsXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS9tbXUuYy03MzQtXFx0XFx0bWFya19wYWdlX2RpcnR5X2luX3Nsb3Qoa3ZtLCBtZW1zbG90LCBnZm4pO1xcbmFyY2gvcmlzY3Yva3ZtL21tdS5jOjczNTpcXHRcXHRyZXQgPSBrdm1fcmlzY3ZfZ3N0YWdlX21hcF9wYWdlKFxcdTAwMjZnc3RhZ2UsIHBjYWNoZSwgZ3BhLCBoZm4gXFx1MDAzY1xcdTAwM2MgUEFHRV9TSElGVCxcXG5hcmNoL3Jpc2N2L2t2bS9tbXUuYy03MzYtXFx0XFx0XFx0XFx0XFx0XFx0dm1hX3BhZ2VzaXplLCBmYWxzZSwgdHJ1ZSwgb3V0X21hcCk7XFxuYXJjaC9yaXNjdi9rdm0vbW11LmMtNzM3LVxcdH0gZWxzZSB7XFxuYXJjaC9yaXNjdi9rdm0vbW11LmM6NzM4OlxcdFxcdHJldCA9IGt2bV9yaXNjdl9nc3RhZ2VfbWFwX3BhZ2UoXFx1MDAyNmdzdGFnZSwgcGNhY2hlLCBncGEsIGhmbiBcXHUwMDNjXFx1MDAzYyBQQUdFX1NISUZULFxcbmFyY2gvcmlzY3Yva3ZtL21tdS5jLTczOS1cXHRcXHRcXHRcXHRcXHRcXHR2bWFfcGFnZXNpemUsIHRydWUsIHRydWUsIG91dF9tYXApO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMjoyNTowNy42MTYwODYzNzJaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjU3NjM1MTUxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipOYXZpZ2F0aW5nIHRoZSBMYWJ5cmludGggb2YgRGVjbGFyYXRpb25zKipcblxuQWxyaWdodCwgaG9sZCBvbiBhIHNlY29uZC4gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlL3NwZWNpZmljYXRpb24vZG9jdW1lbnQsIGFuZCBteSBpbml0aWFsIHJlYWN0aW9uIGlzLCAqd2hlcmUqIHByZWNpc2VseSBpcyB0aGlzIHZhcmlhYmxlL2Z1bmN0aW9uL2NsYXNzL2NvbnN0YW50L3doYXRldmVyICpkZWNsYXJlZCo/IEl0J3MgdGhlIGZpcnN0IGFuZCBtb3N0IGZ1bmRhbWVudGFsIHF1ZXN0aW9uLCByZWFsbHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBzY29wZSwgaXRzIHR5cGUsIGFueSBhc3NvY2lhdGVkIG1ldGFkYXRhIOKAkyBhbGwgb2YgdGhhdCBoaW5nZXMgb24gZmluZGluZyBpdHMgb3JpZ2luIHBvaW50LiBJcyBpdCBpbiB0aGlzIGZpbGU/IEFub3RoZXIgb25lPyBBIGhlYWRlcj8gQSBwcmVjb21waWxlZCBsaWJyYXJ5PyBJcyBpdCBhIGZvcndhcmQgZGVjbGFyYXRpb24sIG1lYW5pbmcgSSBuZWVkIHRvIGNoYXNlIGRvd24gaXRzIGRlZmluaXRpb24gbGF0ZXI/IFRoZSBhYnNlbmNlIG9mIGEgY2xlYXIgZGVjbGFyYXRpb24gc2NyZWFtcyBmb3IgaW1tZWRpYXRlIGludmVzdGlnYXRpb24uIEkgY2Fu4oCZdCBwcm9jZWVkIHVudGlsIEkndmUgZXN0YWJsaXNoZWQgdGhhdCBmdW5kYW1lbnRhbCBidWlsZGluZyBibG9jay5cblxuXG4iLCJJbnB1dFRva2VucyI6OTc0NywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTI6MjU6MTQuMTkyNDQwMzU4WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMjM5NTc4NjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX3Jpc2N2X2dzdGFnZV9tYXBfcGFnZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3Jpc2N2L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV9nc3RhZ2UuaD01Nz1ib29sIGt2bV9yaXNjdl9nc3RhZ2VfdHJ5X3VwZGF0ZV9wdGUoc3RydWN0IGt2bV9nc3RhZ2UgKmdzdGFnZSwgdTMyIGxldmVsLFxcbi0tXFxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1fZ3N0YWdlLmgtNjAtXFxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1fZ3N0YWdlLmg6NjE6aW50IGt2bV9yaXNjdl9nc3RhZ2VfbWFwX3BhZ2Uoc3RydWN0IGt2bV9nc3RhZ2UgKmdzdGFnZSxcXG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV9nc3RhZ2UuaC02Mi1cXHRcXHRcXHQgICAgICBzdHJ1Y3Qga3ZtX21tdV9tZW1vcnlfY2FjaGUgKnBjYWNoZSxcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jPTE5Mj1zdGF0aWMgdm9pZCBrdm1fcmlzY3ZfZ3N0YWdlX3VwZGF0ZV9wdGVfcHJvdChzdHJ1Y3Qga3ZtX2dzdGFnZSAqZ3N0YWdlLCB1MzIgbGV2ZWwsXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYy0yMTItXFxuYXJjaC9yaXNjdi9rdm0vZ3N0YWdlLmM6MjEzOmludCBrdm1fcmlzY3ZfZ3N0YWdlX21hcF9wYWdlKHN0cnVjdCBrdm1fZ3N0YWdlICpnc3RhZ2UsXFxuYXJjaC9yaXNjdi9rdm0vZ3N0YWdlLmMtMjE0LVxcdFxcdFxcdCAgICAgIHN0cnVjdCBrdm1fbW11X21lbW9yeV9jYWNoZSAqcGNhY2hlLFxcbi0tXFxuYXJjaC9yaXNjdi9rdm0vbW11LmM9NjIzPWludCBrdm1fcmlzY3ZfbW11X21hcChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKm1lbXNsb3QsXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS9tbXUuYy03MzQtXFx0XFx0bWFya19wYWdlX2RpcnR5X2luX3Nsb3Qoa3ZtLCBtZW1zbG90LCBnZm4pO1xcbmFyY2gvcmlzY3Yva3ZtL21tdS5jOjczNTpcXHRcXHRyZXQgPSBrdm1fcmlzY3ZfZ3N0YWdlX21hcF9wYWdlKFxcdTAwMjZnc3RhZ2UsIHBjYWNoZSwgZ3BhLCBoZm4gXFx1MDAzY1xcdTAwM2MgUEFHRV9TSElGVCxcXG5hcmNoL3Jpc2N2L2t2bS9tbXUuYy03MzYtXFx0XFx0XFx0XFx0XFx0XFx0dm1hX3BhZ2VzaXplLCBmYWxzZSwgdHJ1ZSwgb3V0X21hcCk7XFxuYXJjaC9yaXNjdi9rdm0vbW11LmMtNzM3LVxcdH0gZWxzZSB7XFxuYXJjaC9yaXNjdi9rdm0vbW11LmM6NzM4OlxcdFxcdHJldCA9IGt2bV9yaXNjdl9nc3RhZ2VfbWFwX3BhZ2UoXFx1MDAyNmdzdGFnZSwgcGNhY2hlLCBncGEsIGhmbiBcXHUwMDNjXFx1MDAzYyBQQUdFX1NISUZULFxcbmFyY2gvcmlzY3Yva3ZtL21tdS5jLTczOS1cXHRcXHRcXHRcXHRcXHRcXHR2bWFfcGFnZXNpemUsIHRydWUsIHRydWUsIG91dF9tYXApO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMjoyNToxNC41MTY0MDI4NDVaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTAxMTY2ODAzMDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipOYXZpZ2F0aW5nIHRoZSBSSVNDLVYgS1ZNIEd1ZXN0IFN0YWdlIEltcGxlbWVudGF0aW9uKipcblxuT2theSwgbGV0J3Mgc2VlLi4uIEknbSBjdXJyZW50bHkgbG9va2luZyBhdCBgYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1fZ3N0YWdlLmhgLiBUaGlzIGlzIHdoZXJlIHRoZSBtYWdpYyBoYXBwZW5zLCBhdCBsZWFzdCByZWdhcmRpbmcgdGhlIGd1ZXN0IHN0YWdlIGZ1bmN0aW9uYWxpdHkgaW4gdGhlIFJJU0MtViBLVk0gaW1wbGVtZW50YXRpb24uIEhtbSwgYGt2bV9yaXNjdl9nc3RhZ2VfbWFwX3BhZ2VgIGFuZCBga3ZtX3Jpc2N2X2dzdGFnZV9zZXRfcHRlYCBpbW1lZGlhdGVseSBqdW1wIG91dCBhcyB0aGUga2V5IHBsYXllcnMgaGVyZS4gVGhleSBzZWVtIHRvIGJlIHRoZSBwcmltYXJ5IGZ1bmN0aW9ucyBpbnZvbHZlZCBpbiBtYXBwaW5nIHBhZ2VzIHdpdGhpbiB0aGUgZ3Vlc3Qgc3RhZ2UgYW5kIHNldHRpbmcgdGhlIHBhZ2UgdGFibGUgZW50cmllcywgcmVzcGVjdGl2ZWx5LiBXYWl0IGEgc2Vjb25kLCBpcyBga3ZtX3Jpc2N2X2dzdGFnZV9zZXRfcHRlYCBhY3R1YWxseSAqZGVmaW5lZCogd2l0aGluIHRoaXMgaGVhZGVyPyBPciBpcyBpdCBqdXN0IGRlY2xhcmVkIGhlcmU/IEkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdC4gSXQncyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgYW5kIHdoZXJlIHRoZSBhY3R1YWwgaW1wbGVtZW50YXRpb24gcmVzaWRlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA1NjgsIk91dHB1dFRva2VucyI6NDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMjoyNToyNC42MzMwODYyNTFaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgxMjM1NDQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bV9yaXNjdl9nc3RhZ2Vfc2V0X3B0ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV9nc3RhZ2UuaFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV9nc3RhZ2UuaD01MD1ib29sIGt2bV9yaXNjdl9nc3RhZ2VfZ2V0X2xlYWYoc3RydWN0IGt2bV9nc3RhZ2UgKmdzdGFnZSwgZ3BhX3QgYWRkcixcXG4tLVxcbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX2dzdGFnZS5oLTUyLVxcbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX2dzdGFnZS5oOjUzOmludCBrdm1fcmlzY3ZfZ3N0YWdlX3NldF9wdGUoc3RydWN0IGt2bV9nc3RhZ2UgKmdzdGFnZSxcXG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV9nc3RhZ2UuaC01NC1cXHRcXHRcXHQgICAgIHN0cnVjdCBrdm1fbW11X21lbW9yeV9jYWNoZSAqcGNhY2hlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMjoyNToyNC43MTQzMjYzNFoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NjYyODcwMTc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEtWTSBSSVNDLVYgUGF0Y2gqKlxuXG5Pa2F5LCB5ZXMsIEkndmUgZ290IGl0LiBUaGUgY29yZSBvZiB0aGlzIHBhdGNoIGNlbnRlcnMgb24gYGt2bV9yaXNjdl9nc3RhZ2VfbWFwX3BhZ2VgIGFuZCBga3ZtX3Jpc2N2X2dzdGFnZV9zZXRfcHRlYC4gSXQncyBkZWZpbml0ZWx5IHRpZWQgdG8gdGhlIGBLVk1gIGNvbmZpZ3VyYXRpb24uIExldCBtZSBqdXN0IGNvbmZpcm0gdGhhdCBxdWlja2x5IOKAkyByaWdodCwgbG9va2luZyBhdCBgYXJjaC9yaXNjdi9rdm0vTWFrZWZpbGVgLCBpdCdzIGp1c3QgYG9iai0kKENPTkZJR19LVk0pICs9IGt2bS5vYCwgc28gYEtWTWAgaXMgaW5kZWVkIHRoZSBzb2xlIGNvbmZpZyBkZXBlbmRlbmN5LiBHb29kLlxuXG5Ob3csIGZyb20gd2hhdCBJIHVuZGVyc3RhbmQsIHRoaXMgcGF0Y2ggYWRkcmVzc2VzIGEgYnVnIGluIHRoZSBLVk0gUklTQy1WIHBhZ2UgdGFibGUgbWFuYWdlbWVudC4gU3BlY2lmaWNhbGx5LCBpdCBzZWVtcyBhIGxvd2VyLWxldmVsIHBhZ2UgdGFibGUgZW50cnkgaXMgYmVpbmcgb3ZlcndyaXR0ZW4gYnkgYSBsZWFmIG1hcHBpbmcsIGFuZCB0aGlzIGNhbiBvY2N1ciBkdXJpbmcgdGhlIGhhbmRsaW5nIG9mIGEgaHVnZSBwYWdlIG1hcHBlZCBvdmVyIGEgcHJlLWV4aXN0aW5nLCBzbWFsbGVyIHBhZ2UgbWFwcGluZy4gRnVuY3Rpb25hbGx5LCB0aGlzIGlzIGEgbW9kaWZpY2F0aW9uIHRvIHRoZSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IHdpdGhpbiBLVk0gZm9yIFJJU0MtVi5cblxuR2l2ZW4gdGhlIHBvdGVudGlhbCBmb3Igc3VidGxlIG1lbW9yeSBjb3JydXB0aW9uIGlzc3VlcyDigJMgcGFydGljdWxhcmx5IGluIHN1Y2ggYSBjcml0aWNhbCBhcmVhIOKAkyB0aGlzIGlzIGFic29sdXRlbHkgc29tZXRoaW5nIHRoYXQgd2FycmFudHMgdGhvcm91Z2ggZnV6emluZy4gVGhlIHNjZW5hcmlvIG91dGxpbmVkIHN1Z2dlc3RzIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMgYXJlIGludHJvZHVjZWQsIGFuZCBmdXp6aW5nIGlzIHRoZSBiZXN0IHBhdGggdG8gZmluZCB0aGVtLlxuXG5JIHdpbGwgZ2V0IHRoZSByZXN1bHRzIHNldC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEwNzAsIk91dHB1dFRva2VucyI6MTE3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTY5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDEyOjI1OjMwLjM3NzIwMTQ3N1oiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MTU3MDg1OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX3Jpc2N2X2dzdGFnZV9tYXBfcGFnZVwiLFxuICAgIFwia3ZtX3Jpc2N2X2dzdGFnZV9zZXRfcHRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgS1ZNIFJJU0MtViBndWVzdCBzdGFnZS0yIHBhZ2UgdGFibGUgbWFuYWdlbWVudCB0byBwcmV2ZW50IHJlcGxhY2luZyBhbiBleGlzdGluZyBsb3dlci1sZXZlbCBwYWdlIHRhYmxlIHdpdGggYSBsZWFmIG1hcHBpbmcsIGZhbGxpbmcgYmFjayB0byBhIHNtYWxsZXIgcGFnZSBzaXplIGluc3RlYWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIHJlYWNoYWJsZSBjb3JlIEtWTSBmZWF0dXJlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9yaXNjdl9nc3RhZ2VfbWFwX3BhZ2VcIixcbiAgICBcImt2bV9yaXNjdl9nc3RhZ2Vfc2V0X3B0ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIEtWTSBSSVNDLVYgZ3Vlc3Qgc3RhZ2UtMiBwYWdlIHRhYmxlIG1hbmFnZW1lbnQgdG8gcHJldmVudCByZXBsYWNpbmcgYW4gZXhpc3RpbmcgbG93ZXItbGV2ZWwgcGFnZSB0YWJsZSB3aXRoIGEgbGVhZiBtYXBwaW5nLCBmYWxsaW5nIGJhY2sgdG8gYSBzbWFsbGVyIHBhZ2Ugc2l6ZSBpbnN0ZWFkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSByZWFjaGFibGUgY29yZSBLVk0gZmVhdHVyZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTI6MjU6MzAuNTE4Nzc5Mzg1WiIsIlNlcSI6MjUsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5OTMyOTQwMTk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTI6MjU6MzAuNTE5Mzk2OTA1WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjk5MzIzMTc2NzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIEtWTSBndWVzdCBzdGFnZS0yIHBhZ2UgdGFibGUgbWFuYWdlbWVudCBvbiBSSVNDLVYgdG8gcHJldmVudCByZXBsYWNpbmcgYW4gZXhpc3RpbmcgbG93ZXItbGV2ZWwgcGFnZSB0YWJsZSBkaXJlY3Rvcnkgd2l0aCBhIGxlYWYgbWFwcGluZyAoaHVnZSBwYWdlKS4gSXQgZG9lcyB0aGlzIGJ5IHJldHVybmluZyAtRUVYSVNUIGFuZCBmYWxsaW5nIGJhY2sgdG8gbWFwcGluZyBhdCBsZXZlbCAwIChiYXNlIHBhZ2Ugc2l6ZSkuIFRoZXNlIGNoYW5nZXMgYXJlIHB1cmVseSByZWxhdGVkIHRvIHBhZ2UgdGFibGUgbG9naWMsIHBoeXNpY2FsIGFkZHJlc3MgY2FsY3VsYXRpb25zLCBhbmQgUFRFIG1hbmlwdWxhdGlvbi4gVGhlcmUgYXJlIG5vIG5ldyBhbGxvY2F0aW9ucywgbm8gc3RydWN0dXJlcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgYW5kIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgYmVpbmcgdXNlZCBpbiBjb250cm9sIGZsb3cgb3IgbGVha2VkLiBBbnkgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCBoZXJlIChlLmcuLCBpbmNvcnJlY3QgcG9pbnRlcnMgb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcykgd291bGQgYmUgY2F1Z2h0IGJ5IEtBU0FOIG9yIHN0YW5kYXJkIGtlcm5lbCB0ZXN0aW5nLiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA2Yjk5MTMxZDliZjNkNWVjOGI0ZjhiMjg4OTBiNWJiN2VlNWNlZjI5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBBdWcgMTQgMTI6MjQ6MjIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYyBiL2FyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jXG5pbmRleCBlNTAwMmNiOWNiZWYxLi4yM2NiMzVlMzYwNzNiIDEwMDY0NFxuLS0tIGEvYXJjaC9yaXNjdi9rdm0vZ3N0YWdlLmNcbisrKyBiL2FyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jXG5AQCAtMTc0LDYgKzE3NCwxMiBAQCBpbnQga3ZtX3Jpc2N2X2dzdGFnZV9zZXRfcHRlKHN0cnVjdCBrdm1fZ3N0YWdlICpnc3RhZ2UsXG4gXG4gXHRpZiAocHRlX3ZhbCgqcHRlcCkgIT0gcHRlX3ZhbChtYXAtXHUwMDNlcHRlKSkge1xuIFx0XHRib29sIHdhc19pbnZhbGlkID0gIXB0ZV92YWwoKnB0ZXApO1xuK1xuK1x0XHQvKiBBdm9pZCByZXBsYWNpbmcgYW4gZXhpc3RpbmcgbG93ZXItbGV2ZWwgdGFibGUgd2l0aCBhIGxlYWYgbWFwcGluZy4gKi9cbitcdFx0aWYgKCFnc3RhZ2VfcHRlX2xlYWYocHRlcCkgXHUwMDI2XHUwMDI2ICF3YXNfaW52YWxpZCBcdTAwMjZcdTAwMjZcbitcdFx0ICAgIGdzdGFnZV9wdGVfbGVhZihcdTAwMjZtYXAtXHUwMDNlcHRlKSlcbitcdFx0XHRyZXR1cm4gLUVFWElTVDtcbitcbiBcdFx0c2V0X3B0ZShwdGVwLCBtYXAtXHUwMDNlcHRlKTtcbiBcdFx0aWYgKGdzdGFnZV9wdGVfbGVhZihwdGVwKSBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgICEod2FzX2ludmFsaWQgXHUwMDI2XHUwMDI2IHJpc2N2X2hhc19leHRlbnNpb25fdW5saWtlbHkoUklTQ1ZfSVNBX0VYVF9TVlZQVEMpKSlcbkBAIC0yMTEsMTIgKzIxNywxMyBAQCBpbnQga3ZtX3Jpc2N2X2dzdGFnZV9tYXBfcGFnZShzdHJ1Y3Qga3ZtX2dzdGFnZSAqZ3N0YWdlLFxuIFx0XHRcdCAgICAgIHN0cnVjdCBrdm1fZ3N0YWdlX21hcHBpbmcgKm91dF9tYXApXG4ge1xuIFx0Ym9vbCBmb3VuZF9sZWFmO1xuK1x0cGh5c19hZGRyX3QgaHVnZV9wYWdlX29mZnNldDtcbiBcdHUzMiBwdGVwX2xldmVsO1xuIFx0cGdwcm90X3QgcHJvdDtcbiBcdHB0ZV90ICpwdGVwO1xuIFx0aW50IHJldDtcbiBcbi1cdG91dF9tYXAtXHUwMDNlYWRkciA9IGdwYTtcbitcdG91dF9tYXAtXHUwMDNlYWRkciA9IGdwYSBcdTAwMjYgUEFHRV9NQVNLO1xuIFx0b3V0X21hcC1cdTAwM2VsZXZlbCA9IDA7XG4gXG4gXHRyZXQgPSBnc3RhZ2VfcGFnZV9zaXplX3RvX2xldmVsKGdzdGFnZSwgcGFnZV9zaXplLCBcdTAwMjZvdXRfbWFwLVx1MDAzZWxldmVsKTtcbkBAIC0yODcsNyArMjk0LDE4IEBAIGludCBrdm1fcmlzY3ZfZ3N0YWdlX21hcF9wYWdlKHN0cnVjdCBrdm1fZ3N0YWdlICpnc3RhZ2UsXG4gXHRvdXRfbWFwLVx1MDAzZXB0ZSA9IHBmbl9wdGUoUEZOX0RPV04oaHBhKSwgcHJvdCk7XG4gXHRvdXRfbWFwLVx1MDAzZXB0ZSA9IHB0ZV9ta2RpcnR5KG91dF9tYXAtXHUwMDNlcHRlKTtcbiBcbi1cdHJldHVybiBrdm1fcmlzY3ZfZ3N0YWdlX3NldF9wdGUoZ3N0YWdlLCBwY2FjaGUsIG91dF9tYXApO1xuK1x0cmV0ID0ga3ZtX3Jpc2N2X2dzdGFnZV9zZXRfcHRlKGdzdGFnZSwgcGNhY2hlLCBvdXRfbWFwKTtcbitcdGlmIChyZXQgPT0gLUVFWElTVCkge1xuK1x0XHRodWdlX3BhZ2Vfb2Zmc2V0ID0gb3V0X21hcC1cdTAwM2VhZGRyIFx1MDAyNiAocGFnZV9zaXplIC0gMSk7XG4rXHRcdGhwYSArPSBodWdlX3BhZ2Vfb2Zmc2V0O1xuK1x0XHRvdXRfbWFwLVx1MDAzZWxldmVsID0gMDtcbitcdFx0b3V0X21hcC1cdTAwM2VwdGUgPSBwZm5fcHRlKFBGTl9ET1dOKGhwYSksIHByb3QpO1xuK1x0XHRvdXRfbWFwLVx1MDAzZXB0ZSA9IHB0ZV9ta2RpcnR5KG91dF9tYXAtXHUwMDNlcHRlKTtcbitcbitcdFx0cmV0ID0ga3ZtX3Jpc2N2X2dzdGFnZV9zZXRfcHRlKGdzdGFnZSwgcGNhY2hlLCBvdXRfbWFwKTtcbitcdH1cbitcbitcdHJldHVybiByZXQ7XG4gfVxuIFxuIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBtYWtlX2NoaWxkX3B0ZSh1bnNpZ25lZCBsb25nIGh1Z2VfcHRlLCBpbnQgaW5kZXgsXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMjoyNTozMC41MTkzOTc3NjVaIiwiU2VxIjoyNywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTkzMjI3OTkxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipLTVNBTiBBc3Nlc3NtZW50OiBObyBVbmluaXRpYWxpemVkIE1lbW9yeSBJc3N1ZSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gVGhpcyBwYXRjaCBpcyBmb2N1c2VkIG9uIHRoZSBSSVNDLVYgS1ZNIGltcGxlbWVudGF0aW9uLCBzcGVjaWZpY2FsbHkgZGVhbGluZyB3aXRoIHRoZSBndWVzdCBzdGFnZSAyIHBhZ2UgdGFibGVzIChgZ3N0YWdlLmNgKS4gSXQncyBhbGwgaW50ZXJuYWwgcGFnZSB0YWJsZSBtYW5hZ2VtZW50IOKAkyBubyBkaXJlY3QgaW50ZXJhY3Rpb24gd2l0aCB1c2Vyc3BhY2UuXG5cblRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgcmV2b2x2ZXMgYXJvdW5kIGhvdyBga3ZtX3Jpc2N2X2dzdGFnZV9zZXRfcHRlYCBiZWhhdmVzIGFuZCBob3cgYGt2bV9yaXNjdl9nc3RhZ2VfbWFwX3BhZ2VgIGhhbmRsZXMgcG90ZW50aWFsIGVycm9ycy4gVGhlIGtleSBzZWVtcyB0byBiZSB0aGlzOiBUaGUgcGF0Y2ggcHJldmVudHMgb3ZlcndyaXRpbmcgZXhpc3RpbmcgbG93ZXItbGV2ZWwgcGFnZSB0YWJsZSBlbnRyaWVzIHdpdGggbGVhZiBtYXBwaW5ncyBieSBpbnRyb2R1Y2luZyBhIGNoZWNrIGluIGBrdm1fcmlzY3ZfZ3N0YWdlX3NldF9wdGVgLiBJZiBhbiBvdmVyd3JpdGUgaXMgYXR0ZW1wdGVkLCBpdCBub3cgcmV0dXJucyBgLUVFWElTVGAuXG5cbk5vdywgaWYgYC1FRVhJU1RgIGlzIHJldHVybmVkIGJ5IGBrdm1fcmlzY3ZfZ3N0YWdlX3NldF9wdGVgIGR1cmluZyBtYXBwaW5nLCAgYGt2bV9yaXNjdl9nc3RhZ2VfbWFwX3BhZ2VgIG5vdyBoYXMgbG9naWMgdG8gaGFuZGxlIHRoaXMgY29uZGl0aW9uLiBJdCBjYWxjdWxhdGVzIGFuIG9mZnNldCAoYGh1Z2VfcGFnZV9vZmZzZXRgKSBhbmQgdGhlbiBwb3RlbnRpYWxseSByZS1tYXBzIGEgc21hbGxlciBwYWdlLiBUaGUgY3J1Y2lhbCBwYXJ0IGhlcmUgaXMgZXhhbWluaW5nIHRoZSBgb3V0X21hcGAgc3RydWN0LiBUaGlzIGlzIHRoZSBjZW50cmFsIGRhdGEgc3RydWN0dXJlLiBcblxuSSB3YXMgaW5pdGlhbGx5IGNvbmNlcm5lZCBhYm91dCBwb3RlbnRpYWwgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMuIEJ1dCBJIGxvb2tlZCBjbG9zZWx5IGF0IGhvdyBgb3V0X21hcGAgaXMgcG9wdWxhdGVkLiBUaGUgYG91dF9tYXBgIHN0cnVjdCBoYXMgYW4gYGFkZHJgLCBgbGV2ZWxgIGFuZCBgcHRlYCBmaWVsZC4gVGhlIHBhdGNoIG1vZGlmaWVzICpob3cqIHRoZXNlIGZpZWxkcyBhcmUgc2V0LCBidXQgZG9lcyBub3QgaW50cm9kdWNlIGEgc2NlbmFyaW8gd2hlcmUgdGhlc2UgZmllbGRzIGNvdWxkIGNvbnRhaW4gdW5pbml0aWFsaXplZCB2YWx1ZXMuIFNwZWNpZmljYWxseSwgdGhlIGxpbmUgYG91dF9tYXAtXHUwMDNlYWRkciA9IGdwYSBcdTAwMjYgUEFHRV9NQVNLYCBlbnN1cmVzIHRoYXQgYGFkZHJgIGlzIGluaXRpYWxpemVkLCBhbmQgZXZlbiBpbiB0aGUgZmFsbGJhY2sgY2FzZSwgYWxsIHRoZSBmaWVsZHMgb2YgYG91dF9tYXBgIGFyZSBmdWxseSBpbml0aWFsaXplZC4gSXQncyBlc3NlbnRpYWxseSBpbXBsZW1lbnRpbmcgYSBmYWxsYmFjayBtZWNoYW5pc20sIHJlZHVjaW5nIGEgaHVnZSBwYWdlIG1hcHBpbmcgdG8gYSBzbWFsbGVyIGxldmVsIGlmIGEgaHVnZSBwYWdlIGFscmVhZHkgZXhpc3RzLlxuXG5UaGUgYG91dF9tYXAtXHUwMDNlYWRkciBcdTAwMjYgKHBhZ2Vfc2l6ZSAtIDEpYCBwYXJ0IG1hZGUgbWUgcGF1c2UgYnJpZWZseSwgYnV0IHNpbmNlIGBvdXRfbWFwLVx1MDAzZWFkZHJgIGlzIGluaXRpYWxpemVkICh0byBgZ3BhIFx1MDAyNiBQQUdFX01BU0tgKSBhbmQgYHBhZ2Vfc2l6ZWAgaXMgcGFzc2VkIGFzIGFuIGFyZ3VtZW50LCB0aGVyZSdzIG5vIHdheSB0aGlzIG9wZXJhdGlvbiBjYW4gcmVhZCB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhpcyBpcyBzaW1wbHkgYSBiaXR3aXNlIG9wZXJhdGlvbiB3aXRoaW4gYSB3ZWxsLWRlZmluZWQgYW5kIGluaXRpYWxpemVkIGNvbnRleHQuXG5cbkkndmUgY2FyZWZ1bGx5IGNvbnNpZGVyZWQgdGhlIGNvZGUgcGF0aCwgdGhlIGRhdGEgc3RydWN0dXJlcywgYW5kIHRoZSBsb2dpYy4gVGhpcyBpcyBhIG1vZGlmaWNhdGlvbiB0byBwYWdlIHRhYmxlIG1hbmlwdWxhdGlvbiwgbm90IGEgbmV3IG1lbW9yeSBhbGxvY2F0aW9uLiBNeSBjb25jbHVzaW9uIGlzIGZpcm06ICp0aGVyZSBpcyBubyBldmlkZW5jZSBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBpbiB0aGlzIHBhdGNoKi4gSXQgdXBkYXRlcyB0aGUgcGFnZSB0YWJsZSBzdHJ1Y3R1cmUgYWNjb3JkaW5nIHRvIGV4cGVjdGVkIGJlaGF2aW9yLlxuXG5UaGVyZWZvcmUsIE5lZWRzS01TQU4gPSBmYWxzZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU4NCwiT3V0cHV0VG9rZW5zIjoxNzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MDcsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMjoyNTo0MC40NTE2ODE2ODNaIiwiU2VxIjoyOCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTU4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIEtWTSBndWVzdCBzdGFnZS0yIHBhZ2UgdGFibGUgbWFuYWdlbWVudCBvbiBSSVNDLVYgdG8gcHJldmVudCByZXBsYWNpbmcgYW4gZXhpc3RpbmcgbG93ZXItbGV2ZWwgcGFnZSB0YWJsZSBkaXJlY3Rvcnkgd2l0aCBhIGxlYWYgbWFwcGluZyAoaHVnZSBwYWdlKS4gSXQgZG9lcyB0aGlzIGJ5IHJldHVybmluZyAtRUVYSVNUIGFuZCBmYWxsaW5nIGJhY2sgdG8gbWFwcGluZyBhdCBsZXZlbCAwIChiYXNlIHBhZ2Ugc2l6ZSkuIFRoZXNlIGNoYW5nZXMgYXJlIHB1cmVseSByZWxhdGVkIHRvIHBhZ2UgdGFibGUgbG9naWMsIHBoeXNpY2FsIGFkZHJlc3MgY2FsY3VsYXRpb25zLCBhbmQgUFRFIG1hbmlwdWxhdGlvbi4gVGhlcmUgYXJlIG5vIG5ldyBhbGxvY2F0aW9ucywgbm8gc3RydWN0dXJlcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgYW5kIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgYmVpbmcgdXNlZCBpbiBjb250cm9sIGZsb3cgb3IgbGVha2VkLiBBbnkgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCBoZXJlIChlLmcuLCBpbmNvcnJlY3QgcG9pbnRlcnMgb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcykgd291bGQgYmUgY2F1Z2h0IGJ5IEtBU0FOIG9yIHN0YW5kYXJkIGtlcm5lbCB0ZXN0aW5nLiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBLVk0gZ3Vlc3Qgc3RhZ2UtMiBwYWdlIHRhYmxlIG1hbmFnZW1lbnQgb24gUklTQy1WIHRvIHByZXZlbnQgcmVwbGFjaW5nIGFuIGV4aXN0aW5nIGxvd2VyLWxldmVsIHBhZ2UgdGFibGUgZGlyZWN0b3J5IHdpdGggYSBsZWFmIG1hcHBpbmcgKGh1Z2UgcGFnZSkuIEl0IGRvZXMgdGhpcyBieSByZXR1cm5pbmcgLUVFWElTVCBhbmQgZmFsbGluZyBiYWNrIHRvIG1hcHBpbmcgYXQgbGV2ZWwgMCAoYmFzZSBwYWdlIHNpemUpLiBUaGVzZSBjaGFuZ2VzIGFyZSBwdXJlbHkgcmVsYXRlZCB0byBwYWdlIHRhYmxlIGxvZ2ljLCBwaHlzaWNhbCBhZGRyZXNzIGNhbGN1bGF0aW9ucywgYW5kIFBURSBtYW5pcHVsYXRpb24uIFRoZXJlIGFyZSBubyBuZXcgYWxsb2NhdGlvbnMsIG5vIHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIGFuZCBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIHVzZWQgaW4gY29udHJvbCBmbG93IG9yIGxlYWtlZC4gQW55IHBvdGVudGlhbCBidWdzIGludHJvZHVjZWQgaGVyZSAoZS5nLiwgaW5jb3JyZWN0IHBvaW50ZXJzIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMpIHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTiBvciBzdGFuZGFyZCBrZXJuZWwgdGVzdGluZy4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowbmjjx[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-14 11:40:22 +0000 UTC FinishedAt: 2026-08-14 12:25:42 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "2697ef8943c9985c14708a6429e21812693857b2", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "2697ef8943c9985c14708a6429e21812693857b2", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "fc4ea761-9556-4be2-9192-bad0607dc986" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "kvm_riscv_gstage_map_page", "kvm_riscv_gstage_set_pte" ], "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+CgkJCTx0ZD4yMDI2LzA4LzE0IDEyOjI0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9yaXNjdl9nc3RhZ2VfbWFwX3BhZ2UmIzM0OywKICAgICYjMzQ7a3ZtX3Jpc2N2X2dzdGFnZV9zZXRfcHRlJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgS1ZNIGd1ZXN0IHN0YWdlLTIgcGFnZSB0YWJsZSBtYW5hZ2VtZW50IG9uIFJJU0MtViB0byBwcmV2ZW50IHJlcGxhY2luZyBhbiBleGlzdGluZyBsb3dlci1sZXZlbCBwYWdlIHRhYmxlIGRpcmVjdG9yeSB3aXRoIGEgbGVhZiBtYXBwaW5nIChodWdlIHBhZ2UpLiBJdCBkb2VzIHRoaXMgYnkgcmV0dXJuaW5nIC1FRVhJU1QgYW5kIGZhbGxpbmcgYmFjayB0byBtYXBwaW5nIGF0IGxldmVsIDAgKGJhc2UgcGFnZSBzaXplKS4gVGhlc2UgY2hhbmdlcyBhcmUgcHVyZWx5IHJlbGF0ZWQgdG8gcGFnZSB0YWJsZSBsb2dpYywgcGh5c2ljYWwgYWRkcmVzcyBjYWxjdWxhdGlvbnMsIGFuZCBQVEUgbWFuaXB1bGF0aW9uLiBUaGVyZSBhcmUgbm8gbmV3IGFsbG9jYXRpb25zLCBubyBzdHJ1Y3R1cmVzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBhbmQgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyB1c2VkIGluIGNvbnRyb2wgZmxvdyBvciBsZWFrZWQuIEFueSBwb3RlbnRpYWwgYnVncyBpbnRyb2R1Y2VkIGhlcmUgKGUuZy4sIGluY29ycmVjdCBwb2ludGVycyBvciBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzKSB3b3VsZCBiZSBjYXVnaHQgYnkgS0FTQU4gb3Igc3RhbmRhcmQga2VybmVsIHRlc3RpbmcuIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBLVk0gUklTQy1WIGd1ZXN0IHN0YWdlLTIgcGFnZSB0YWJsZSBtYW5hZ2VtZW50IHRvIHByZXZlbnQgcmVwbGFjaW5nIGFuIGV4aXN0aW5nIGxvd2VyLWxldmVsIHBhZ2UgdGFibGUgd2l0aCBhIGxlYWYgbWFwcGluZywgZmFsbGluZyBiYWNrIHRvIGEgc21hbGxlciBwYWdlIHNpemUgaW5zdGVhZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgcmVhY2hhYmxlIGNvcmUgS1ZNIGZlYXR1cmUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTI6MjQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA2Yjk5MTMxZDliZjNkNWVjOGI0ZjhiMjg4OTBiNWJiN2VlNWNlZjI5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBBdWcgMTQgMTI6MjQ6MjIgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rdm0vZ3N0YWdlLmMgYi9hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuY1xuaW5kZXggZTUwMDJjYjljYmVmMS4uMjNjYjM1ZTM2MDczYiAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuY1xuQEAgLTE3NCw2ICYjNDM7MTc0LDEyIEBAIGludCBrdm1fcmlzY3ZfZ3N0YWdlX3NldF9wdGUoc3RydWN0IGt2bV9nc3RhZ2UgKmdzdGFnZSxcbiBcbiBcdGlmIChwdGVfdmFsKCpwdGVwKSAhPSBwdGVfdmFsKG1hcC1cdTAwM2VwdGUpKSB7XG4gXHRcdGJvb2wgd2FzX2ludmFsaWQgPSAhcHRlX3ZhbCgqcHRlcCk7XG4mIzQzO1xuJiM0MztcdFx0LyogQXZvaWQgcmVwbGFjaW5nIGFuIGV4aXN0aW5nIGxvd2VyLWxldmVsIHRhYmxlIHdpdGggYSBsZWFmIG1hcHBpbmcuICovXG4mIzQzO1x0XHRpZiAoIWdzdGFnZV9wdGVfbGVhZihwdGVwKSBcdTAwMjZcdTAwMjYgIXdhc19pbnZhbGlkIFx1MDAyNlx1MDAyNlxuJiM0MztcdFx0ICAgIGdzdGFnZV9wdGVfbGVhZihcdTAwMjZtYXAtXHUwMDNlcHRlKSlcbiYjNDM7XHRcdFx0cmV0dXJuIC1FRVhJU1Q7XG4mIzQzO1xuIFx0XHRzZXRfcHRlKHB0ZXAsIG1hcC1cdTAwM2VwdGUpO1xuIFx0XHRpZiAoZ3N0YWdlX3B0ZV9sZWFmKHB0ZXApIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgISh3YXNfaW52YWxpZCBcdTAwMjZcdTAwMjYgcmlzY3ZfaGFzX2V4dGVuc2lvbl91bmxpa2VseShSSVNDVl9JU0FfRVhUX1NWVlBUQykpKVxuQEAgLTIxMSwxMiAmIzQzOzIxNywxMyBAQCBpbnQga3ZtX3Jpc2N2X2dzdGFnZV9tYXBfcGFnZShzdHJ1Y3Qga3ZtX2dzdGFnZSAqZ3N0YWdlLFxuIFx0XHRcdCAgICAgIHN0cnVjdCBrdm1fZ3N0YWdlX21hcHBpbmcgKm91dF9tYXApXG4ge1xuIFx0Ym9vbCBmb3VuZF9sZWFmO1xuJiM0MztcdHBoeXNfYWRkcl90IGh1Z2VfcGFnZV9vZmZzZXQ7XG4gXHR1MzIgcHRlcF9sZXZlbDtcbiBcdHBncHJvdF90IHByb3Q7XG4gXHRwdGVfdCAqcHRlcDtcbiBcdGludCByZXQ7XG4gXG4tXHRvdXRfbWFwLVx1MDAzZWFkZHIgPSBncGE7XG4mIzQzO1x0b3V0X21hcC1cdTAwM2VhZGRyID0gZ3BhIFx1MDAyNiBQQUdFX01BU0s7XG4gXHRvdXRfbWFwLVx1MDAzZWxldmVsID0gMDtcbiBcbiBcdHJldCA9IGdzdGFnZV9wYWdlX3NpemVfdG9fbGV2ZWwoZ3N0YWdlLCBwYWdlX3NpemUsIFx1MDAyNm91dF9tYXAtXHUwMDNlbGV2ZWwpO1xuQEAgLTI4Nyw3ICYjNDM7Mjk0LDE4IEBAIGludCBrdm1fcmlzY3ZfZ3N0YWdlX21hcF9wYWdlKHN0cnVjdCBrdm1fZ3N0YWdlICpnc3RhZ2UsXG4gXHRvdXRfbWFwLVx1MDAzZXB0ZSA9IHBmbl9wdGUoUEZOX0RPV04oaHBhKSwgcHJvdCk7XG4gXHRvdXRfbWFwLVx1MDAzZXB0ZSA9IHB0ZV9ta2RpcnR5KG91dF9tYXAtXHUwMDNlcHRlKTtcbiBcbi1cdHJldHVybiBrdm1fcmlzY3ZfZ3N0YWdlX3NldF9wdGUoZ3N0YWdlLCBwY2FjaGUsIG91dF9tYXApO1xuJiM0MztcdHJldCA9IGt2bV9yaXNjdl9nc3RhZ2Vfc2V0X3B0ZShnc3RhZ2UsIHBjYWNoZSwgb3V0X21hcCk7XG4mIzQzO1x0aWYgKHJldCA9PSAtRUVYSVNUKSB7XG4mIzQzO1x0XHRodWdlX3BhZ2Vfb2Zmc2V0ID0gb3V0X21hcC1cdTAwM2VhZGRyIFx1MDAyNiAocGFnZV9zaXplIC0gMSk7XG4mIzQzO1x0XHRocGEgJiM0Mzs9IGh1Z2VfcGFnZV9vZmZzZXQ7XG4mIzQzO1x0XHRvdXRfbWFwLVx1MDAzZWxldmVsID0gMDtcbiYjNDM7XHRcdG91dF9tYXAtXHUwMDNlcHRlID0gcGZuX3B0ZShQRk5fRE9XTihocGEpLCBwcm90KTtcbiYjNDM7XHRcdG91dF9tYXAtXHUwMDNlcHRlID0gcHRlX21rZGlydHkob3V0X21hcC1cdTAwM2VwdGUpO1xuJiM0MztcbiYjNDM7XHRcdHJldCA9IGt2bV9yaXNjdl9nc3RhZ2Vfc2V0X3B0ZShnc3RhZ2UsIHBjYWNoZSwgb3V0X21hcCk7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyZXR1cm4gcmV0O1xuIH1cbiBcbiBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgbWFrZV9jaGlsZF9wdGUodW5zaWduZWQgbG9uZyBodWdlX3B0ZSwgaW50IGluZGV4LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDEyOjI0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1fcmlzY3ZfZ3N0YWdlX21hcF9wYWdlJiMzNDssCiAgICAmIzM0O2t2bV9yaXNjdl9nc3RhZ2Vfc2V0X3B0ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBLVk0gUklTQy1WIGd1ZXN0IHN0YWdlLTIgcGFnZSB0YWJsZSBtYW5hZ2VtZW50IHRvIHByZXZlbnQgcmVwbGFjaW5nIGFuIGV4aXN0aW5nIGxvd2VyLWxldmVsIHBhZ2UgdGFibGUgd2l0aCBhIGxlYWYgbWFwcGluZywgZmFsbGluZyBiYWNrIHRvIGEgc21hbGxlciBwYWdlIHNpemUgaW5zdGVhZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgcmVhY2hhYmxlIGNvcmUgS1ZNIGZlYXR1cmUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA2Yjk5MTMxZDliZjNkNWVjOGI0ZjhiMjg4OTBiNWJiN2VlNWNlZjI5CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBBdWcgMTQgMTI6MjQ6MjIgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYyBiL2FyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jCmluZGV4IGU1MDAyY2I5Y2JlZjEuLjIzY2IzNWUzNjA3M2IgMTAwNjQ0Ci0tLSBhL2FyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jCkBAIC0xNzQsNiAmIzQzOzE3NCwxMiBAQCBpbnQga3ZtX3Jpc2N2X2dzdGFnZV9zZXRfcHRlKHN0cnVjdCBrdm1fZ3N0YWdlICpnc3RhZ2UsCiAKIAlpZiAocHRlX3ZhbCgqcHRlcCkgIT0gcHRlX3ZhbChtYXAtJmd0O3B0ZSkpIHsKIAkJYm9vbCB3YXNfaW52YWxpZCA9ICFwdGVfdmFsKCpwdGVwKTsKJiM0MzsKJiM0MzsJCS8qIEF2b2lkIHJlcGxhY2luZyBhbiBleGlzdGluZyBsb3dlci1sZXZlbCB0YWJsZSB3aXRoIGEgbGVhZiBtYXBwaW5nLiAqLwomIzQzOwkJaWYgKCFnc3RhZ2VfcHRlX2xlYWYocHRlcCkgJmFtcDsmYW1wOyAhd2FzX2ludmFsaWQgJmFtcDsmYW1wOwomIzQzOwkJICAgIGdzdGFnZV9wdGVfbGVhZigmYW1wO21hcC0mZ3Q7cHRlKSkKJiM0MzsJCQlyZXR1cm4gLUVFWElTVDsKJiM0MzsKIAkJc2V0X3B0ZShwdGVwLCBtYXAtJmd0O3B0ZSk7CiAJCWlmIChnc3RhZ2VfcHRlX2xlYWYocHRlcCkgJmFtcDsmYW1wOwogCQkgICAgISh3YXNfaW52YWxpZCAmYW1wOyZhbXA7IHJpc2N2X2hhc19leHRlbnNpb25fdW5saWtlbHkoUklTQ1ZfSVNBX0VYVF9TVlZQVEMpKSkKQEAgLTIxMSwxMiAmIzQzOzIxNywxMyBAQCBpbnQga3ZtX3Jpc2N2X2dzdGFnZV9tYXBfcGFnZShzdHJ1Y3Qga3ZtX2dzdGFnZSAqZ3N0YWdlLAogCQkJICAgICAgc3RydWN0IGt2bV9nc3RhZ2VfbWFwcGluZyAqb3V0X21hcCkKIHsKIAlib29sIGZvdW5kX2xlYWY7CiYjNDM7CXBoeXNfYWRkcl90IGh1Z2VfcGFnZV9vZmZzZXQ7CiAJdTMyIHB0ZXBfbGV2ZWw7CiAJcGdwcm90X3QgcHJvdDsKIAlwdGVfdCAqcHRlcDsKIAlpbnQgcmV0OwogCi0Jb3V0X21hcC0mZ3Q7YWRkciA9IGdwYTsKJiM0MzsJb3V0X21hcC0mZ3Q7YWRkciA9IGdwYSAmYW1wOyBQQUdFX01BU0s7CiAJb3V0X21hcC0mZ3Q7bGV2ZWwgPSAwOwogCiAJcmV0ID0gZ3N0YWdlX3BhZ2Vfc2l6ZV90b19sZXZlbChnc3RhZ2UsIHBhZ2Vfc2l6ZSwgJmFtcDtvdXRfbWFwLSZndDtsZXZlbCk7CkBAIC0yODcsNyAmIzQzOzI5NCwxOCBAQCBpbnQga3ZtX3Jpc2N2X2dzdGFnZV9tYXBfcGFnZShzdHJ1Y3Qga3ZtX2dzdGFnZSAqZ3N0YWdlLAogCW91dF9tYXAtJmd0O3B0ZSA9IHBmbl9wdGUoUEZOX0RPV04oaHBhKSwgcHJvdCk7CiAJb3V0X21hcC0mZ3Q7cHRlID0gcHRlX21rZGlydHkob3V0X21hcC0mZ3Q7cHRlKTsKIAotCXJldHVybiBrdm1fcmlzY3ZfZ3N0YWdlX3NldF9wdGUoZ3N0YWdlLCBwY2FjaGUsIG91dF9tYXApOwomIzQzOwlyZXQgPSBrdm1fcmlzY3ZfZ3N0YWdlX3NldF9wdGUoZ3N0YWdlLCBwY2FjaGUsIG91dF9tYXApOwomIzQzOwlpZiAocmV0ID09IC1FRVhJU1QpIHsKJiM0MzsJCWh1Z2VfcGFnZV9vZmZzZXQgPSBvdXRfbWFwLSZndDthZGRyICZhbXA7IChwYWdlX3NpemUgLSAxKTsKJiM0MzsJCWhwYSAmIzQzOz0gaHVnZV9wYWdlX29mZnNldDsKJiM0MzsJCW91dF9tYXAtJmd0O2xldmVsID0gMDsKJiM0MzsJCW91dF9tYXAtJmd0O3B0ZSA9IHBmbl9wdGUoUEZOX0RPV04oaHBhKSwgcHJvdCk7CiYjNDM7CQlvdXRfbWFwLSZndDtwdGUgPSBwdGVfbWtkaXJ0eShvdXRfbWFwLSZndDtwdGUpOwomIzQzOwomIzQzOwkJcmV0ID0ga3ZtX3Jpc2N2X2dzdGFnZV9zZXRfcHRlKGdzdGFnZSwgcGNhY2hlLCBvdXRfbWFwKTsKJiM0MzsJfQomIzQzOwomIzQzOwlyZXR1cm4gcmV0OwogfQogCiBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgbWFrZV9jaGlsZF9wdGUodW5zaWduZWQgbG9uZyBodWdlX3B0ZSwgaW50IGluZGV4LAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMjoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTg3CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMjc5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgVGhpcyBLVk0gUklTQy1WIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIOKAkyBsb29rcyBsaWtlIGl0JiMzOTtzIHR3ZWFraW5nIGBhcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuY2AuIFNwZWNpZmljYWxseSwgaXQmIzM5O3MgbWVzc2luZyB3aXRoIGBrdm1fcmlzY3ZfZ3N0YWdlX3NldF9wdGVgIGFuZCBga3ZtX3Jpc2N2X2dzdGFnZV9tYXBfcGFnZWAuIEFoLCBnb3QgaXQuIEl0IGFkZHMgYSBjaGVjayBpbiBga3ZtX3Jpc2N2X2dzdGFnZV9zZXRfcHRlYCB0byBwcmV2ZW50IG92ZXJ3cml0aW5nIGFuIGV4aXN0aW5nIGxvd2VyLWxldmVsIHBhZ2UgdGFibGUgZW50cnkgd2l0aCBhIGxlYWYgbWFwcGluZywgYW5kIGlmIGl0IGRvZXMsIGl0IHJldHVybnMgYC1FRVhJU1RgLiBUaGUgYGt2bV9yaXNjdl9nc3RhZ2VfbWFwX3BhZ2VgIGZ1bmN0aW9uIHRoZW4gaGFuZGxlcyB0aGlzIGAtRUVYSVNUYCBlcnJvciBieSBmYWxsaW5nIGJhY2sgdG8gdXNpbmcgYSBzbWFsbGVyIHBhZ2Ugc2l6ZSAobGV2ZWwgMCkgYW5kIHJlLXNldHRpbmcgdGhlIFBURS4KCkFscmlnaHQsIGxldCYjMzk7cyBhc3Nlc3MgaXRzIGZ1enppbmcgcG90ZW50aWFsLiBUaGlzIGlzIGRlZmluaXRlbHkgd29ydGggYSBsb29rOyBpdCYjMzk7cyBhIEtWTSBSSVNDLVYgcGF0Y2gsIHNvIHRoZSBzY29wZSBpcyBzcGVjaWZpYyBidXQgZGVmaW5pdGVseSBoYXMgYXR0YWNrIHN1cmZhY2UuIEl0JiMzOTtzIG1vZGlmeWluZyBob3cgcGFnZSB0YWJsZXMgYXJlIG1hbmFnZWQgZHVyaW5nIGd1ZXN0IHN0YWdlLTIgdHJhbnNsYXRpb24uIFRoaXMgaXMgaHVnZSDigJMgYW55dGhpbmcgcmVsYXRlZCB0byBwYWdlIHRhYmxlcywgZXNwZWNpYWxseSBpbiB0aGUgY29udGV4dCBvZiB2aXJ0dWFsaXphdGlvbiwgaXMgYSBwcmltZSB0YXJnZXQuIEFuZCBzaW5jZSBpdCYjMzk7cyBLVk0sIHRoYXQgbWVhbnMgaXQmIzM5O3MgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHRocm91Z2ggS1ZNIGlvY3RscyBsaWtlIGBLVk1fUlVOYCBhbmQgaG93IG1lbW9yeSByZWdpb25zIGFyZSBzZXQgdXAuIEFic29sdXRlbHksIHRoaXMgaXMgcmlwZSBmb3IgZnV6emluZy4KCk5vdywgd2hlcmUgYXJlIHRoZSBjb25maWcgb3B0aW9ucz8gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgaXMgY29tcGlsZWQuIExldCYjMzk7cyBzZWUuLi4gYGFyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jYCBpcyBjb21waWxlZCB3aGVuIGBDT05GSUdfS1ZNYCBpcyBlbmFibGVkIG9uIFJJU0MtVi4gVGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnQuIEkgY2FuIHByb2JhYmx5IGNvbmZpcm0gdGhpcyBieSBjaGVja2luZyBgYXJjaC9yaXNjdi9rdm0vTWFrZWZpbGVgIG9yIGBhcmNoL3Jpc2N2L2t2bS9LY29uZmlnYCBmb3IgdGhlIGJ1aWxkIGRlcGVuZGVuY2llcywgYWx0aG91Z2ggaXQmIzM5O3MgdXN1YWxseSBwcmV0dHkgb2J2aW91cy4gSSYjMzk7bGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhlIEtjb25maWcsIGJ1dCB0aGF0IHNob3VsZCBiZSBzdHJhaWdodGZvcndhcmQuIFJpZ2h0LCBsZXQmIzM5O3MgZ2V0IHRvIHdvcmshCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTI6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Z3N0YWdlLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2t2bS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9rdm0vTWFrZWZpbGU9MTY9a3ZtLXkgJiM0Mzs9IGFpYV9pbXNpYy5vXG5hcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZToxNzprdm0teSAmIzQzOz0gZ3N0YWdlLm9cbmFyY2gvcmlzY3Yva3ZtL01ha2VmaWxlLTE4LWt2bS15ICYjNDM7PSBpc2Eub1xuLS1cbmFyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jPTMyOD1ib29sIGt2bV9yaXNjdl9nc3RhZ2Vfc3BsaXRfaHVnZShzdHJ1Y3Qga3ZtX2dzdGFnZSAqZ3N0YWdlLFxuLS1cbmFyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jLTM4OS1cbmFyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jOjM5MDpib29sIGt2bV9yaXNjdl9nc3RhZ2Vfb3BfcHRlKHN0cnVjdCBrdm1fZ3N0YWdlICpnc3RhZ2UsIGdwYV90IGFkZHIsXG5hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYzozOTE6XHRcdFx0ICAgICBwdGVfdCAqcHRlcCwgdTMyIHB0ZXBfbGV2ZWwsIGVudW0ga3ZtX3Jpc2N2X2dzdGFnZV9vcCBvcClcbmFyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jLTM5Mi17XG4tLVxuYXJjaC9yaXNjdi9rdm0vZ3N0YWdlLmMtNDE3LVx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBQVFJTX1BFUl9QVEU7IGkmIzQzOyYjNDM7KVxuYXJjaC9yaXNjdi9rdm0vZ3N0YWdlLmM6NDE4Olx0XHRcdGZsdXNoIHw9IGt2bV9yaXNjdl9nc3RhZ2Vfb3BfcHRlKGdzdGFnZSwgYWRkciAmIzQzOyBpICogbmV4dF9wYWdlX3NpemUsXG5hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYy00MTktXHRcdFx0XHRcdFx0XHQgXHUwMDI2bmV4dF9wdGVwW2ldLCBuZXh0X3B0ZXBfbGV2ZWwsIG9wKTtcbi0tXG5hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYz00MzU9Ym9vbCBrdm1fcmlzY3ZfZ3N0YWdlX3VubWFwX3JhbmdlKHN0cnVjdCBrdm1fZ3N0YWdlICpnc3RhZ2UsXG4tLVxuYXJjaC9yaXNjdi9rdm0vZ3N0YWdlLmMtNDU1LVx0XHRcdGlmICghKGFkZHIgXHUwMDI2IChwYWdlX3NpemUgLSAxKSkgXHUwMDI2XHUwMDI2ICgoZW5kIC0gYWRkcikgXHUwMDNlPSBwYWdlX3NpemUpKVxuYXJjaC9yaXNjdi9rdm0vZ3N0YWdlLmM6NDU2Olx0XHRcdFx0Zmx1c2ggfD0ga3ZtX3Jpc2N2X2dzdGFnZV9vcF9wdGUoZ3N0YWdlLCBhZGRyLCBwdGVwLFxuYXJjaC9yaXNjdi9rdm0vZ3N0YWdlLmMtNDU3LVx0XHRcdFx0XHRcdFx0XHQgcHRlcF9sZXZlbCwgR1NUQUdFX09QX0NMRUFSKTtcbi0tXG5hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYz00Nzc9Ym9vbCBrdm1fcmlzY3ZfZ3N0YWdlX3dwX3JhbmdlKHN0cnVjdCBrdm1fZ3N0YWdlICpnc3RhZ2UsIGdwYV90IHN0YXJ0LCBncGFfdCBlbmQpXG4tLVxuYXJjaC9yaXNjdi9rdm0vZ3N0YWdlLmMtNDk2LVx0XHRcdGFkZHIgPSBBTElHTl9ET1dOKGFkZHIsIHBhZ2Vfc2l6ZSk7XG5hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYzo0OTc6XHRcdFx0Zmx1c2ggfD0ga3ZtX3Jpc2N2X2dzdGFnZV9vcF9wdGUoZ3N0YWdlLCBhZGRyLCBwdGVwLFxuYXJjaC9yaXNjdi9rdm0vZ3N0YWdlLmMtNDk4LVx0XHRcdFx0XHRcdFx0IHB0ZXBfbGV2ZWwsIEdTVEFHRV9PUF9XUCk7XG4tLVxuYXJjaC9yaXNjdi9rdm0vZ3N0YWdlLmM9NTI2PWJvb2wga3ZtX3Jpc2N2X2dzdGFnZV93cF9wdF9tYXNrZWQoc3RydWN0IGt2bV9nc3RhZ2UgKmdzdGFnZSwgZ2ZuX3QgYmFzZV9nZm4sXG4tLVxuYXJjaC9yaXNjdi9rdm0vZ3N0YWdlLmMtNTUwLVxuYXJjaC9yaXNjdi9rdm0vZ3N0YWdlLmM6NTUxOlx0XHRcdGZsdXNoIHw9IGt2bV9yaXNjdl9nc3RhZ2Vfb3BfcHRlKGdzdGFnZSwgYWRkciwgcHRlcCxcbmFyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jLTU1Mi1cdFx0XHRcdFx0XHRcdCBwdGVwX2xldmVsLCBHU1RBR0VfT1BfV1ApO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDEyOjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxOTkKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIGEgZmlyc3QtcGVyc29uIGV4cGVydCBzdW1tYXJ5OgoKKipEaWdnaW5nIGludG8gdGhlIFJJU0MtViBLVk0gQ29tcGlsYXRpb24gUHJvY2VzcyoqCgpBbHJpZ2h0LCBzbyB0aGUgZmlsZSB3YXMgY29tcGlsZWQgdXNpbmcgYGt2bS15YC4gTXkgaW1tZWRpYXRlIHJlYWN0aW9uIGlzIHRvIHRyYWNrIGRvd24gZXhhY3RseSBob3cgdGhpcyBga3ZtLXlgIGlzIGNvbmZpZ3VyZWQgd2l0aGluIHRoZSBidWlsZCBzeXN0ZW0uIEdpdmVuIHRoaXMgaXMgUklTQy1WIEtWTSwgbXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gZGl2ZSBpbnRvIHRoZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgbWFrZWZpbGVzLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBjaGVjayBgYXJjaC9yaXNjdi9rdm0vTWFrZWZpbGVgLiBUaGF0JiMzOTtzIHdoZXJlIEkgZXhwZWN0IHRvIGZpbmQgdGhlIGNvbmRpdGlvbmFsIGxvZ2ljIHRoYXQgZGVmaW5lcyBob3cgYGt2bS15YCBpcyBpbnRlcnByZXRlZCwgd2hhdCBzb3VyY2UgZmlsZXMgaXQgaW5jbHVkZXMsIGFuZCBhbnkgb3RoZXIgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgZm9yIHRoZSBSSVNDLVYgS1ZNIHN1YnN5c3RlbSB3aXRoaW4gdGhlIGJyb2FkZXIga2VybmVsIGJ1aWxkIHByb2Nlc3MuIFRpbWUgdG8gc2VlIHdoYXQgdGhhdCBNYWtlZmlsZSByZXZlYWxzLiBUaGlzIGtpbmQgb2YgaW52ZXN0aWdhdGlvbiBpcyBlc3NlbnRpYWwgdG8gdW5kZXJzdGFuZGluZyB0aGUgYnVpbGQgYW5kIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLiBJJiMzOTttIGtlZW4gdG8gZmlndXJlIG91dCB3aHkgdGhpcyBmbGFnIHdhcyB1c2VkIGFuZCB3aGF0IGl0IG1lYW5zIGZvciB0aGUgcmVzdWx0aW5nIGJpbmFyeS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMjoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm0teSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3Yva3ZtL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3Yva3ZtL01ha2VmaWxlPTEwPW9iai0kKENPTkZJR19LVk0pICYjNDM7PSBrdm0ub1xuLS1cbmFyY2gvcmlzY3Yva3ZtL01ha2VmaWxlLTEyLSMgT3JkZXJlZCBhbHBoYWJldGljYWxseVxuYXJjaC9yaXNjdi9rdm0vTWFrZWZpbGU6MTM6a3ZtLXkgJiM0Mzs9IGFpYS5vXG5hcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZToxNDprdm0teSAmIzQzOz0gYWlhX2FwbGljLm9cbmFyY2gvcmlzY3Yva3ZtL01ha2VmaWxlOjE1Omt2bS15ICYjNDM7PSBhaWFfZGV2aWNlLm9cbmFyY2gvcmlzY3Yva3ZtL01ha2VmaWxlOjE2Omt2bS15ICYjNDM7PSBhaWFfaW1zaWMub1xuYXJjaC9yaXNjdi9rdm0vTWFrZWZpbGU6MTc6a3ZtLXkgJiM0Mzs9IGdzdGFnZS5vXG5hcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZToxODprdm0teSAmIzQzOz0gaXNhLm9cbmFyY2gvcmlzY3Yva3ZtL01ha2VmaWxlOjE5Omt2bS15ICYjNDM7PSBtYWluLm9cbmFyY2gvcmlzY3Yva3ZtL01ha2VmaWxlOjIwOmt2bS15ICYjNDM7PSBtbXUub1xuYXJjaC9yaXNjdi9rdm0vTWFrZWZpbGU6MjE6a3ZtLXkgJiM0Mzs9IG5hY2wub1xuYXJjaC9yaXNjdi9rdm0vTWFrZWZpbGU6MjI6a3ZtLXkgJiM0Mzs9IHRsYi5vXG5hcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZToyMzprdm0teSAmIzQzOz0gdmNwdS5vXG5hcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZToyNDprdm0teSAmIzQzOz0gdmNwdV9jb25maWcub1xuYXJjaC9yaXNjdi9rdm0vTWFrZWZpbGU6MjU6a3ZtLXkgJiM0Mzs9IHZjcHVfZXhpdC5vXG5hcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZToyNjprdm0teSAmIzQzOz0gdmNwdV9mcC5vXG5hcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZToyNzprdm0teSAmIzQzOz0gdmNwdV9pbnNuLm9cbmFyY2gvcmlzY3Yva3ZtL01ha2VmaWxlOjI4Omt2bS15ICYjNDM7PSB2Y3B1X29uZXJlZy5vXG5hcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZS0yOS1rdm0tJChDT05GSUdfUklTQ1ZfUE1VX1NCSSkgJiM0Mzs9IHZjcHVfcG11Lm9cbmFyY2gvcmlzY3Yva3ZtL01ha2VmaWxlOjMwOmt2bS15ICYjNDM7PSB2Y3B1X3NiaS5vXG5hcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZTozMTprdm0teSAmIzQzOz0gdmNwdV9zYmlfYmFzZS5vXG5hcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZTozMjprdm0teSAmIzQzOz0gdmNwdV9zYmlfZm9yd2FyZC5vXG5hcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZTozMzprdm0teSAmIzQzOz0gdmNwdV9zYmlfZndmdC5vXG5hcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZTozNDprdm0teSAmIzQzOz0gdmNwdV9zYmlfaHNtLm9cbmFyY2gvcmlzY3Yva3ZtL01ha2VmaWxlLTM1LWt2bS0kKENPTkZJR19SSVNDVl9QTVVfU0JJKSAmIzQzOz0gdmNwdV9zYmlfcG11Lm9cbmFyY2gvcmlzY3Yva3ZtL01ha2VmaWxlOjM2Omt2bS15ICYjNDM7PSB2Y3B1X3NiaV9yZXBsYWNlLm9cbmFyY2gvcmlzY3Yva3ZtL01ha2VmaWxlOjM3Omt2bS15ICYjNDM7PSB2Y3B1X3NiaV9zdGEub1xuYXJjaC9yaXNjdi9rdm0vTWFrZWZpbGU6Mzg6a3ZtLXkgJiM0Mzs9IHZjcHVfc2JpX3N5c3RlbS5vXG5hcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZS0zOS1rdm0tJChDT05GSUdfUklTQ1ZfU0JJX1YwMSkgJiM0Mzs9IHZjcHVfc2JpX3YwMS5vXG5hcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZTo0MDprdm0teSAmIzQzOz0gdmNwdV9zd2l0Y2gub1xuYXJjaC9yaXNjdi9rdm0vTWFrZWZpbGU6NDE6a3ZtLXkgJiM0Mzs9IHZjcHVfdGltZXIub1xuYXJjaC9yaXNjdi9rdm0vTWFrZWZpbGU6NDI6a3ZtLXkgJiM0Mzs9IHZjcHVfdmVjdG9yLm9cbmFyY2gvcmlzY3Yva3ZtL01ha2VmaWxlOjQzOmt2bS15ICYjNDM7PSB2bS5vXG5hcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZTo0NDprdm0teSAmIzQzOz0gdm1pZC5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTI6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTM3MwoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDY3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHRoZSBzaXR1YXRpb246CgoqKkRpdmluZyBpbnRvIHRoZSBLVk0gUklTQy1WIFBhdGNoKioKCk9rYXksIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IHNvbWV0aGluZyByZWxhdGVkIHRvIEtWTSBjb25maWd1cmF0aW9uLCBzcGVjaWZpY2FsbHkgdGhlIGBDT05GSUdfS1ZNYCBkaXJlY3RpdmUuIFRoYXQmIzM5O3Mgb3VyIHN0YXJ0aW5nIHBvaW50LiBGcm9tIHRoZXJlLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgbWVhdCBvZiB0aGUgY2hhbmdlLiBJdCBsb29rcyBsaWtlIHRoZSBwYXRjaCBpcyBrZXllZCBhcm91bmQgdHdvIGtleSBmdW5jdGlvbnM6IGBrdm1fcmlzY3ZfZ3N0YWdlX3NldF9wdGVgIGFuZCBga3ZtX3Jpc2N2X2dzdGFnZV9tYXBfcGFnZWAuIE15IG5leHQgaW1tZWRpYXRlIHF1ZXN0aW9ucyBhcmU6IEFyZSB0aGVzZSBmdW5jdGlvbnMgZXhwb3J0ZWQsIG9yIGFyZSB0aGV5IHN0YXRpYyB3aXRoaW4gYSBtb2R1bGU/IFVuZGVyc3RhbmRpbmcgdGhlaXIgc2NvcGUgaXMgY3JpdGljYWwgdG8gYXNzZXNzIHRoZSBpbXBhY3Qgb2YgdGhlc2UgY2hhbmdlcy4gS25vd2luZyB0aGF0IHdpbGwgZ2l2ZSBtZSBhIGJldHRlciBoYW5kbGUgb24gcG90ZW50aWFsIGRlcGVuZGVuY2llcyBhbmQgd2hlcmUgdGhpcyBtb2RpZmljYXRpb24gc2l0cyB3aXRoaW4gdGhlIGJyb2FkZXIgS1ZNIFJJU0MtViBhcmNoaXRlY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTI6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX3Jpc2N2X2dzdGFnZV9tYXBfcGFnZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3Yva3ZtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYz0xOTI9c3RhdGljIHZvaWQga3ZtX3Jpc2N2X2dzdGFnZV91cGRhdGVfcHRlX3Byb3Qoc3RydWN0IGt2bV9nc3RhZ2UgKmdzdGFnZSwgdTMyIGxldmVsLFxuLS1cbmFyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jLTIxMi1cbmFyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jOjIxMzppbnQga3ZtX3Jpc2N2X2dzdGFnZV9tYXBfcGFnZShzdHJ1Y3Qga3ZtX2dzdGFnZSAqZ3N0YWdlLFxuYXJjaC9yaXNjdi9rdm0vZ3N0YWdlLmMtMjE0LVx0XHRcdCAgICAgIHN0cnVjdCBrdm1fbW11X21lbW9yeV9jYWNoZSAqcGNhY2hlLFxuLS1cbmFyY2gvcmlzY3Yva3ZtL21tdS5jPTYyMz1pbnQga3ZtX3Jpc2N2X21tdV9tYXAoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX21lbW9yeV9zbG90ICptZW1zbG90LFxuLS1cbmFyY2gvcmlzY3Yva3ZtL21tdS5jLTczNC1cdFx0bWFya19wYWdlX2RpcnR5X2luX3Nsb3Qoa3ZtLCBtZW1zbG90LCBnZm4pO1xuYXJjaC9yaXNjdi9rdm0vbW11LmM6NzM1Olx0XHRyZXQgPSBrdm1fcmlzY3ZfZ3N0YWdlX21hcF9wYWdlKFx1MDAyNmdzdGFnZSwgcGNhY2hlLCBncGEsIGhmbiBcdTAwM2NcdTAwM2MgUEFHRV9TSElGVCxcbmFyY2gvcmlzY3Yva3ZtL21tdS5jLTczNi1cdFx0XHRcdFx0XHR2bWFfcGFnZXNpemUsIGZhbHNlLCB0cnVlLCBvdXRfbWFwKTtcbmFyY2gvcmlzY3Yva3ZtL21tdS5jLTczNy1cdH0gZWxzZSB7XG5hcmNoL3Jpc2N2L2t2bS9tbXUuYzo3Mzg6XHRcdHJldCA9IGt2bV9yaXNjdl9nc3RhZ2VfbWFwX3BhZ2UoXHUwMDI2Z3N0YWdlLCBwY2FjaGUsIGdwYSwgaGZuIFx1MDAzY1x1MDAzYyBQQUdFX1NISUZULFxuYXJjaC9yaXNjdi9rdm0vbW11LmMtNzM5LVx0XHRcdFx0XHRcdHZtYV9wYWdlc2l6ZSwgdHJ1ZSwgdHJ1ZSwgb3V0X21hcCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTI6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjA5MAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDczCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRoaW5raW5nIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBSSVNDLVYgS1ZNIFBhZ2UgRmF1bHQgSGFuZGxlcioqCgpPa2F5LCBzbyBJJiMzOTttIHRyYWNraW5nIGRvd24gaG93IHBhZ2UgZmF1bHRzIGFyZSBoYW5kbGVkIGluIHRoZSBLVk0gUklTQy1WIGltcGxlbWVudGF0aW9uLiBUaGUga2VybmVsIHRlbGxzIG1lIHRoYXQgYGt2bV9yaXNjdl9tbXVfbWFwYCBpcyB0aGUgY3J1Y2lhbCBwYWdlIGZhdWx0IGhhbmRsZXIuIE5vdywgSSBzZWUgdGhhdCBga3ZtX3Jpc2N2X2dzdGFnZV9tYXBfcGFnZWAgaXMgYmVpbmcgY2FsbGVkICpieSogYGt2bV9yaXNjdl9tbXVfbWFwYC4gVGhpcyBzdWdnZXN0cyBhIGhpZXJhcmNoaWNhbCBzdHJ1Y3R1cmUsIHdoZXJlIGBrdm1fcmlzY3ZfbW11X21hcGAgaXMgdGhlIHRvcC1sZXZlbCBoYW5kbGVyIHRoYXQgdGhlbiBkZWxlZ2F0ZXMgc29tZSBvZiB0aGUgYWN0dWFsIG1hcHBpbmcgd29yayB0byBga3ZtX3Jpc2N2X2dzdGFnZV9tYXBfcGFnZWAuIEdpdmVuIHRoYXQgYGt2bV9yaXNjdl9tbXVfbWFwYCBpcyBpZGVudGlmaWVkIGFzIHRoZSAmIzM0O21haW4mIzM0OyBoYW5kbGVyLCBpdCBtYWtlcyBzZW5zZSB0byBzdGFydCBkaWdnaW5nIGluIHRoZXJlLiBMZXQmIzM5O3Mgc3RhcnQgYnkgc2NydXRpbml6aW5nIHRoZSBsb2dpYyB3aXRoaW4gYGt2bV9yaXNjdl9tbXVfbWFwYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGl0IG9yY2hlc3RyYXRlcyB0aGUgbWFwcGluZyBwcm9jZXNzLCBob3cgaXQgZGV0ZXJtaW5lcyB3aGljaCBwYXJ0cyBhcmUgaGFuZGxlZCBieSBga3ZtX3Jpc2N2X2dzdGFnZV9tYXBfcGFnZWAsIGFuZCBnZW5lcmFsbHkgaG93IHRoZSBLVk0gaGFuZGxlcyB0aGUgZ3Vlc3QgcGFnZSBmYXVsdHMgZm9yIHRoZSBSSVNDLVYgYXJjaGl0ZWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMjoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1fcmlzY3ZfbW11X21hcCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3Yva3ZtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2t2bS9tbXUuYz01NTI9c3RhdGljIGJvb2wga3ZtX3Jpc2N2X21tdV9kaXJ0eV9sb2dfd3JpdGVfZmF1bHRfZmFzdChzdHJ1Y3Qga3ZtICprdm0sXG4tLVxuYXJjaC9yaXNjdi9rdm0vbW11LmMtNjIyLVxuYXJjaC9yaXNjdi9rdm0vbW11LmM6NjIzOmludCBrdm1fcmlzY3ZfbW11X21hcChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKm1lbXNsb3QsXG5hcmNoL3Jpc2N2L2t2bS9tbXUuYy02MjQtXHRcdCAgICAgIGdwYV90IGdwYSwgdW5zaWduZWQgbG9uZyBodmEsIGJvb2wgaXNfd3JpdGUsXG4tLVxuYXJjaC9yaXNjdi9rdm0vdmNwdV9leGl0LmM9MTY9c3RhdGljIGludCBnc3RhZ2VfcGFnZV9mYXVsdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcnVuICpydW4sXG4tLVxuYXJjaC9yaXNjdi9rdm0vdmNwdV9leGl0LmMtNjYtXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X2V4aXQuYzo2NzpcdHJldCA9IGt2bV9yaXNjdl9tbXVfbWFwKHZjcHUsIG1lbXNsb3QsIGZhdWx0X2FkZHIsIGh2YSxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfZXhpdC5jLTY4LVx0XHRcdFx0KHRyYXAtXHUwMDNlc2NhdXNlID09IEVYQ19TVE9SRV9HVUVTVF9QQUdFX0ZBVUxUKSA/IHRydWUgOiBmYWxzZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTI6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjc4OAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDIyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgUG90ZW50aWFsIFRlc3QgRGlzdHJpYnV0aW9uIFNrZXcqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgY29kZSByZWxhdGVkIHRvIEtWTSBvbiBSSVNDLVYgYW5kIHRyeWluZyB0byBmaWd1cmUgb3V0IHdoZXJlIHdlIGNhbiBiZXN0IGZvY3VzIG91ciB0ZXN0aW5nIGVmZm9ydHMuIGBrdm1fcmlzY3ZfbW11X21hcGAgaXMgdHJpZ2dlcmVkIGJ5IGBnc3RhZ2VfcGFnZV9mYXVsdGAsIHdoaWNoLCBpbiB0dXJuLCBpcyB0cmlnZ2VyZWQgYnkgZ3Vlc3QgcGFnZSBmYXVsdHMuIFRoYXQmIzM5O3MgYSBjbGFzc2ljIGhvdCBwYXRoLiBCdXQsIGBrdm1fcmlzY3ZfZ3N0YWdlX21hcF9wYWdlYCBpcyBhbHNvIGhlYXZpbHkgdXNlZC4KCldhaXQgYSBtaW51dGUsIHRoZSBpbnN0cnVjdGlvbnMgYXJlIHRvIGF2b2lkIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zLCB0aGF0IHdpbGwgc2tldyB0aGUgdGVzdCBkaXN0cmlidXRpb25zLiBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgZW50cnkgcG9pbnRzLiBTbywgaXMgYGt2bV9yaXNjdl9tbXVfbWFwYCBhIGhvdCBwYXRoPyBBYnNvbHV0ZWx5IOKAkyBwYWdlIGZhdWx0IGhhbmRsZXJzIGFyZSBhbHdheXMgaW4gdGhlIGNyaXRpY2FsIHBhdGguIFdlIGFscmVhZHkga25vdyB0aGF0LgoKU28sIGxldCYjMzk7cyBsb29rIGZvciBhbHRlcm5hdGl2ZXMgdG8gZm9jdXMgb24uIFBlcmhhcHMgYGt2bV9yaXNjdl9nc3RhZ2VfbWFwX3BhZ2VgIGlzICpub3QqIGEgZ2VuZXJpYyBob3QgcGF0aC4gSXQmIzM5O3Mgc3BlY2lmaWMgdG8gS1ZNIFJJU0MtViBwYWdlIG1hcHBpbmcuIEdvb2QuIExldCYjMzk7cyBtYWtlIHN1cmUgaXQgaXMgZXhwb3J0ZWQsIG1lYW5pbmcgaXQgaXMgbm90IHN0YXRpYywgd2hpY2ggaXQgYXBwZWFycyBub3QgdG8gYmUuIE5leHQsIGxldCYjMzk7cyBleHBsb3JlIGBrdm1fcmlzY3ZfZ3N0YWdlX3NldF9wdGVgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMjoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1fcmlzY3ZfZ3N0YWdlX3NldF9wdGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2t2bS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9rdm0vZ3N0YWdlLmM9MTI4PWJvb2wga3ZtX3Jpc2N2X2dzdGFnZV90cnlfdXBkYXRlX3B0ZShzdHJ1Y3Qga3ZtX2dzdGFnZSAqZ3N0YWdlLCB1MzIgbGV2ZWwsXG4tLVxuYXJjaC9yaXNjdi9rdm0vZ3N0YWdlLmMtMTQxLVxuYXJjaC9yaXNjdi9rdm0vZ3N0YWdlLmM6MTQyOmludCBrdm1fcmlzY3ZfZ3N0YWdlX3NldF9wdGUoc3RydWN0IGt2bV9nc3RhZ2UgKmdzdGFnZSxcbmFyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jLTE0My1cdFx0XHQgICAgIHN0cnVjdCBrdm1fbW11X21lbW9yeV9jYWNoZSAqcGNhY2hlLFxuLS1cbmFyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jPTIxMz1pbnQga3ZtX3Jpc2N2X2dzdGFnZV9tYXBfcGFnZShzdHJ1Y3Qga3ZtX2dzdGFnZSAqZ3N0YWdlLFxuLS1cbmFyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jLTI3My1cdFx0ICoganVzdCB1cGRhdGUgdGhlIHB0ZSBwcm90IGhlcmUuIE90aGVyd2lzZSwgd2Ugd291bGQgZmFsbCBiYWNrIHRvIG1hcHBpbmdcbmFyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jOjI3NDpcdFx0ICogdGhlIGdzdGFnZSBhdCBodWdlIHBhZ2UgbGV2ZWwgaW4gYGt2bV9yaXNjdl9nc3RhZ2Vfc2V0X3B0ZWAsIHdpdGggdGhlXG5hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYy0yNzUtXHRcdCAqIG92ZXJoZWFkIG9mIGZyZWVpbmcgdGhlIHBhZ2UgdGFibGVzKG5vdCBzdXBwb3J0IG5vdyksIHdoaWNoIHdvdWxkIHNsb3dcbi0tXG5hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYy0yODItXHRcdCAqIFdlIGFscmVhZHkgaGF2ZSB0aGUgcHRlcCwganVzdCB1cGRhdGUgdGhlIHB0ZSBwcm90IGlmIHRoZSBwZm4gbm90IGNoYW5nZS5cbmFyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jOjI4MzpcdFx0ICogVGhlcmUgaXMgbm8gbmVlZCB0byBpbnZva2UgYGt2bV9yaXNjdl9nc3RhZ2Vfc2V0X3B0ZWAgYWdhaW4uXG5hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYy0yODQtXHRcdCAqL1xuLS1cbmFyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jLTI5Ni1cbmFyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jOjI5NzpcdHJldCA9IGt2bV9yaXNjdl9nc3RhZ2Vfc2V0X3B0ZShnc3RhZ2UsIHBjYWNoZSwgb3V0X21hcCk7XG5hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYy0yOTgtXHRpZiAocmV0ID09IC1FRVhJU1QpIHtcbi0tXG5hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYy0zMDQtXG5hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYzozMDU6XHRcdHJldCA9IGt2bV9yaXNjdl9nc3RhZ2Vfc2V0X3B0ZShnc3RhZ2UsIHBjYWNoZSwgb3V0X21hcCk7XG5hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYy0zMDYtXHR9XG4tLVxuYXJjaC9yaXNjdi9rdm0vbW11LmM9NDA9aW50IGt2bV9yaXNjdl9tbXVfaW9yZW1hcChzdHJ1Y3Qga3ZtICprdm0sIGdwYV90IGdwYSwgcGh5c19hZGRyX3QgaHBhLFxuLS1cbmFyY2gvcmlzY3Yva3ZtL21tdS5jLTc0LVx0XHR3cml0ZV9sb2NrKFx1MDAyNmt2bS1cdTAwM2VtbXVfbG9jayk7XG5hcmNoL3Jpc2N2L2t2bS9tbXUuYzo3NTpcdFx0cmV0ID0ga3ZtX3Jpc2N2X2dzdGFnZV9zZXRfcHRlKFx1MDAyNmdzdGFnZSwgXHUwMDI2cGNhY2hlLCBcdTAwMjZtYXApO1xuYXJjaC9yaXNjdi9rdm0vbW11LmMtNzYtXHRcdHdyaXRlX3VubG9jayhcdTAwMjZrdm0tXHUwMDNlbW11X2xvY2spO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMjoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MDc5CgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogOTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgY29uc2lkZXJpbmcgbXkgZXhwZXJ0aXNlOgoKKipFeGFtaW5pbmcgS1ZNL1JJU0MtViBQYWdlIFRhYmxlIE1hbmlwdWxhdGlvbioqCgpBbHJpZ2h0LCBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIEtWTS9SSVNDLVYgcGFnZSB0YWJsZSBpbnRlcmFjdGlvbi4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGZvY3VzaW5nIG9uIHRoZSBwb3RlbnRpYWwgb3ZlcmxhcCBvciBzaGFyZWQgZnVuY3Rpb25hbGl0eSBiZXR3ZWVuIGBrdm1fcmlzY3ZfZ3N0YWdlX3NldF9wdGVgIGFuZCBga3ZtX3Jpc2N2X21tdV9pb3JlbWFwYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIHJvdXRpbmVzIGludGVyYWN0LCBiZWNhdXNlIGBrdm1fcmlzY3ZfZ3N0YWdlX3NldF9wdGVgIGFsc28gZ2V0cyBjYWxsZWQgZnJvbSB3aXRoaW4gYGt2bV9yaXNjdl9tbXVfaW9yZW1hcGAuIE15IGh1bmNoIGlzIHRoYXQgSSBzaG91bGQgYWxzbyBiZSB0YWtpbmcgYSBnb29kIGxvb2sgYXQgYGt2bV9yaXNjdl9nc3RhZ2VfbWFwX3BhZ2VgIGFzIHdlbGwsIGFzIGl0IGxpa2VseSByZWxhdGVzIHRvIHNpbWlsYXIgZnVuY3Rpb25hbGl0eS4gTXkgcHJpbWFyeSB0aG91Z2h0IHByb2Nlc3MgaXMgdGhhdCB0aGUgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIHRoZXNlIGZ1bmN0aW9ucyBhcmUgY3J1Y2lhbCB0byB1bmRlcnN0YW5kLiBUaGUgYmVzdCB3YXkgdG8gY2xhcmlmeSB0aG9zZSByZWxhdGlvbnNoaXBzIGlzIHRvIHF1aWNrbHkgY2hlY2sgd2hldGhlciBga3ZtX3Jpc2N2X2dzdGFnZV9tYXBfcGFnZWAgYW5kIGBrdm1fcmlzY3ZfZ3N0YWdlX3NldF9wdGVgIGFyZSBhY3R1YWxseSBleHBvc2VkIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBUaW1lIHRvIGNoZWNrIGBhcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmhgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMjoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9yaXNjdl9nc3RhZ2VfbWFwX3BhZ2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMjoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NDg3CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyB5b3VyIHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czoKCioqTmF2aWdhdGluZyB0aGUgTGFieXJpbnRoOiBEZWNsYXJhdGlvbiBMb2NhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGRlZXAgaW4gdGhpcyBjb2RlLCBhbmQgSSYjMzk7bSB0cnlpbmcgdG8gdHJhY2UgdGhlIG9yaWdpbiBvZiB0aGlzIHZhcmlhYmxlL2Z1bmN0aW9uL29iamVjdCDigJMgd2hhdGV2ZXIgaXQgaXMuIE15IGJyYWluJiMzOTtzIGFscmVhZHkgZmlyaW5nIG9uIGFsbCBjeWxpbmRlcnMsIGNvbnNpZGVyaW5nIGRlcGVuZGVuY2llcywgc2NvcGUsIGFuZCBwb3RlbnRpYWwgaW5oZXJpdGFuY2UgcGF0aHMuIEJ1dCB0aGUgZnVuZGFtZW50YWwgcXVlc3Rpb24ga2VlcHMgbmFnZ2luZyBhdCBtZTogKndoZXJlKiB0aGUgaGVjayBpcyB0aGlzIHRoaW5nIGFjdHVhbGx5ICpkZWZpbmVkKj8gSSBtZWFuLCBJIGNhbiBzZWUgaXQgYmVpbmcgKnVzZWQqIGhlcmUsIGFuZCBJJiMzOTt2ZSBnb3QgYSBnb29kIGhhbmRsZSBvbiBpdHMgYmVoYXZpb3IgaW4gdGhpcyBjb250ZXh0LCBidXQgSSBuZWVkIHRoZSBzb3VyY2UuIEkgbmVlZCB0aGUgZGVjbGFyYXRpb24uIElzIGl0IGluIHRoaXMgZmlsZT8gQW5vdGhlciBtb2R1bGU/IEEgbGlicmFyeSBJIG5lZWQgdG8gcmVmZXJlbmNlPyBJdCYjMzk7cyB0aGUga2V5LiBJIGNhbiYjMzk7dCByZWFsbHkgcmVhc29uIGRlZXBseSBhYm91dCB0aGUgbG9naWMgdW50aWwgSSBoYXZlIHRoaXMgY29yZSBwaWVjZSBvZiBpbmZvcm1hdGlvbi4gV2hlcmUgKmFyZSogdGhleSBkZWNsYXJlZD8hCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDEyOjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9yaXNjdl9nc3RhZ2VfbWFwX3BhZ2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2t2bS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9rdm0vZ3N0YWdlLmM9MTkyPXN0YXRpYyB2b2lkIGt2bV9yaXNjdl9nc3RhZ2VfdXBkYXRlX3B0ZV9wcm90KHN0cnVjdCBrdm1fZ3N0YWdlICpnc3RhZ2UsIHUzMiBsZXZlbCxcbi0tXG5hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYy0yMTItXG5hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYzoyMTM6aW50IGt2bV9yaXNjdl9nc3RhZ2VfbWFwX3BhZ2Uoc3RydWN0IGt2bV9nc3RhZ2UgKmdzdGFnZSxcbmFyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jLTIxNC1cdFx0XHQgICAgICBzdHJ1Y3Qga3ZtX21tdV9tZW1vcnlfY2FjaGUgKnBjYWNoZSxcbi0tXG5hcmNoL3Jpc2N2L2t2bS9tbXUuYz02MjM9aW50IGt2bV9yaXNjdl9tbXVfbWFwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9tZW1vcnlfc2xvdCAqbWVtc2xvdCxcbi0tXG5hcmNoL3Jpc2N2L2t2bS9tbXUuYy03MzQtXHRcdG1hcmtfcGFnZV9kaXJ0eV9pbl9zbG90KGt2bSwgbWVtc2xvdCwgZ2ZuKTtcbmFyY2gvcmlzY3Yva3ZtL21tdS5jOjczNTpcdFx0cmV0ID0ga3ZtX3Jpc2N2X2dzdGFnZV9tYXBfcGFnZShcdTAwMjZnc3RhZ2UsIHBjYWNoZSwgZ3BhLCBoZm4gXHUwMDNjXHUwMDNjIFBBR0VfU0hJRlQsXG5hcmNoL3Jpc2N2L2t2bS9tbXUuYy03MzYtXHRcdFx0XHRcdFx0dm1hX3BhZ2VzaXplLCBmYWxzZSwgdHJ1ZSwgb3V0X21hcCk7XG5hcmNoL3Jpc2N2L2t2bS9tbXUuYy03MzctXHR9IGVsc2Uge1xuYXJjaC9yaXNjdi9rdm0vbW11LmM6NzM4Olx0XHRyZXQgPSBrdm1fcmlzY3ZfZ3N0YWdlX21hcF9wYWdlKFx1MDAyNmdzdGFnZSwgcGNhY2hlLCBncGEsIGhmbiBcdTAwM2NcdTAwM2MgUEFHRV9TSElGVCxcbmFyY2gvcmlzY3Yva3ZtL21tdS5jLTczOS1cdFx0XHRcdFx0XHR2bWFfcGFnZXNpemUsIHRydWUsIHRydWUsIG91dF9tYXApO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMjoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MTYyCgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBSSVNDLVYgS1ZNIE1NVSBDb2RlKioKCk9rYXksIHRpbWUgdG8gZ2V0IG15IGJlYXJpbmdzLiBMZXQmIzM5O3Mgc3RhcnQgYnkgbG9va2luZyBhdCB0aGUgaW5jbHVkZSBzdGF0ZW1lbnRzIHdpdGhpbiBgYXJjaC9yaXNjdi9rdm0vbW11LmNgLiBHb3R0YSBnZXQgYSBzb2xpZCB1bmRlcnN0YW5kaW5nIG9mIHRoZSBkZXBlbmRlbmNpZXMgYW5kIHdoYXQgZXh0ZXJuYWwgZWxlbWVudHMgYXJlIGJlaW5nIGxldmVyYWdlZCBoZXJlLiBJIGtub3cgdGhpcyBjb2RlIHByZXR0eSB3ZWxsLCBzbyBJJiMzOTttIGxvb2tpbmcgZm9yIGFueXRoaW5nIHVudXN1YWwgb3IgYW55dGhpbmcgdGhhdCBtaWdodCBqdW1wIG91dCB0aGF0IEkgaGF2ZW4mIzM5O3Qgc2VlbiBiZWZvcmUuIEFyZSB0aGV5IHVzaW5nIGFueSBuZXcsIGV4cGVyaW1lbnRhbCBmZWF0dXJlcz8gT3IgcGVyaGFwcyB0aGV5JiMzOTt2ZSBpbmNvcnBvcmF0ZWQgYSBwYXJ0aWN1bGFyIGxpYnJhcnkgaW4gYW4gdW5leHBlY3RlZCB3YXk/IFRoaXMgaW5pdGlhbCBwYXNzIGlzIGFib3V0IHNldHRpbmcgdGhlIHN0YWdlIGFuZCByZWZyZXNoaW5nIG15IG1lbnRhbCBtYXAgb2YgdGhlIHByb2plY3QmIzM5O3MgYXJjaGl0ZWN0dXJlLCBlc3BlY2lhbGx5IGZvY3VzaW5nIG9uIG1lbW9yeSBtYW5hZ2VtZW50IHdpdGhpbiB0aGUgUklTQy1WIEtWTSBjb250ZXh0LiBJJiMzOTtsbCBtYWtlIG5vdGUgb2YgYW55IGhlYWRlciBmaWxlcyB0aGF0IGFyZSBzcGVjaWZpYyB0byBoYXJkd2FyZSBpbnRlcmFjdGlvbnMgb3IgdmlydHVhbGl6YXRpb24gaW50cmljYWNpZXMgdGhhdCBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgZnVydGhlci4gQSB3ZWxsLW9yZ2FuaXplZCBpbmNsdWRlIHNlY3Rpb24gaXMgdXN1YWxseSBhIGdvb2QgaW5kaWNhdG9yIG9mIG92ZXJhbGwgY29kZSBxdWFsaXR5LCBzbyBJJiMzOTttIGhvcGluZyBpdCYjMzk7cyBjbGVhbiBhbmQgY2xlYXIuIFRpbWUgdG8gZGlnIGluIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMjoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1fcmlzY3ZfZ3N0YWdlX21hcF9wYWdlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9rdm0vbW11LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9rdm0vbW11LmM9NjIzPWludCBrdm1fcmlzY3ZfbW11X21hcChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKm1lbXNsb3QsXG4tLVxuYXJjaC9yaXNjdi9rdm0vbW11LmMtNzM0LVx0XHRtYXJrX3BhZ2VfZGlydHlfaW5fc2xvdChrdm0sIG1lbXNsb3QsIGdmbik7XG5hcmNoL3Jpc2N2L2t2bS9tbXUuYzo3MzU6XHRcdHJldCA9IGt2bV9yaXNjdl9nc3RhZ2VfbWFwX3BhZ2UoXHUwMDI2Z3N0YWdlLCBwY2FjaGUsIGdwYSwgaGZuIFx1MDAzY1x1MDAzYyBQQUdFX1NISUZULFxuYXJjaC9yaXNjdi9rdm0vbW11LmMtNzM2LVx0XHRcdFx0XHRcdHZtYV9wYWdlc2l6ZSwgZmFsc2UsIHRydWUsIG91dF9tYXApO1xuYXJjaC9yaXNjdi9rdm0vbW11LmMtNzM3LVx0fSBlbHNlIHtcbmFyY2gvcmlzY3Yva3ZtL21tdS5jOjczODpcdFx0cmV0ID0ga3ZtX3Jpc2N2X2dzdGFnZV9tYXBfcGFnZShcdTAwMjZnc3RhZ2UsIHBjYWNoZSwgZ3BhLCBoZm4gXHUwMDNjXHUwMDNjIFBBR0VfU0hJRlQsXG5hcmNoL3Jpc2N2L2t2bS9tbXUuYy03MzktXHRcdFx0XHRcdFx0dm1hX3BhZ2VzaXplLCB0cnVlLCB0cnVlLCBvdXRfbWFwKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTI6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTc0NwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipOYXZpZ2F0aW5nIHRoZSBMYWJ5cmludGggb2YgRGVjbGFyYXRpb25zKioKCkFscmlnaHQsIGhvbGQgb24gYSBzZWNvbmQuIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUvc3BlY2lmaWNhdGlvbi9kb2N1bWVudCwgYW5kIG15IGluaXRpYWwgcmVhY3Rpb24gaXMsICp3aGVyZSogcHJlY2lzZWx5IGlzIHRoaXMgdmFyaWFibGUvZnVuY3Rpb24vY2xhc3MvY29uc3RhbnQvd2hhdGV2ZXIgKmRlY2xhcmVkKj8gSXQmIzM5O3MgdGhlIGZpcnN0IGFuZCBtb3N0IGZ1bmRhbWVudGFsIHF1ZXN0aW9uLCByZWFsbHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBzY29wZSwgaXRzIHR5cGUsIGFueSBhc3NvY2lhdGVkIG1ldGFkYXRhIOKAkyBhbGwgb2YgdGhhdCBoaW5nZXMgb24gZmluZGluZyBpdHMgb3JpZ2luIHBvaW50LiBJcyBpdCBpbiB0aGlzIGZpbGU/IEFub3RoZXIgb25lPyBBIGhlYWRlcj8gQSBwcmVjb21waWxlZCBsaWJyYXJ5PyBJcyBpdCBhIGZvcndhcmQgZGVjbGFyYXRpb24sIG1lYW5pbmcgSSBuZWVkIHRvIGNoYXNlIGRvd24gaXRzIGRlZmluaXRpb24gbGF0ZXI/IFRoZSBhYnNlbmNlIG9mIGEgY2xlYXIgZGVjbGFyYXRpb24gc2NyZWFtcyBmb3IgaW1tZWRpYXRlIGludmVzdGlnYXRpb24uIEkgY2Fu4oCZdCBwcm9jZWVkIHVudGlsIEkmIzM5O3ZlIGVzdGFibGlzaGVkIHRoYXQgZnVuZGFtZW50YWwgYnVpbGRpbmcgYmxvY2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDEyOjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9yaXNjdl9nc3RhZ2VfbWFwX3BhZ2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3Jpc2N2LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV9nc3RhZ2UuaD01Nz1ib29sIGt2bV9yaXNjdl9nc3RhZ2VfdHJ5X3VwZGF0ZV9wdGUoc3RydWN0IGt2bV9nc3RhZ2UgKmdzdGFnZSwgdTMyIGxldmVsLFxuLS1cbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX2dzdGFnZS5oLTYwLVxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1fZ3N0YWdlLmg6NjE6aW50IGt2bV9yaXNjdl9nc3RhZ2VfbWFwX3BhZ2Uoc3RydWN0IGt2bV9nc3RhZ2UgKmdzdGFnZSxcbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX2dzdGFnZS5oLTYyLVx0XHRcdCAgICAgIHN0cnVjdCBrdm1fbW11X21lbW9yeV9jYWNoZSAqcGNhY2hlLFxuLS1cbmFyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jPTE5Mj1zdGF0aWMgdm9pZCBrdm1fcmlzY3ZfZ3N0YWdlX3VwZGF0ZV9wdGVfcHJvdChzdHJ1Y3Qga3ZtX2dzdGFnZSAqZ3N0YWdlLCB1MzIgbGV2ZWwsXG4tLVxuYXJjaC9yaXNjdi9rdm0vZ3N0YWdlLmMtMjEyLVxuYXJjaC9yaXNjdi9rdm0vZ3N0YWdlLmM6MjEzOmludCBrdm1fcmlzY3ZfZ3N0YWdlX21hcF9wYWdlKHN0cnVjdCBrdm1fZ3N0YWdlICpnc3RhZ2UsXG5hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYy0yMTQtXHRcdFx0ICAgICAgc3RydWN0IGt2bV9tbXVfbWVtb3J5X2NhY2hlICpwY2FjaGUsXG4tLVxuYXJjaC9yaXNjdi9rdm0vbW11LmM9NjIzPWludCBrdm1fcmlzY3ZfbW11X21hcChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKm1lbXNsb3QsXG4tLVxuYXJjaC9yaXNjdi9rdm0vbW11LmMtNzM0LVx0XHRtYXJrX3BhZ2VfZGlydHlfaW5fc2xvdChrdm0sIG1lbXNsb3QsIGdmbik7XG5hcmNoL3Jpc2N2L2t2bS9tbXUuYzo3MzU6XHRcdHJldCA9IGt2bV9yaXNjdl9nc3RhZ2VfbWFwX3BhZ2UoXHUwMDI2Z3N0YWdlLCBwY2FjaGUsIGdwYSwgaGZuIFx1MDAzY1x1MDAzYyBQQUdFX1NISUZULFxuYXJjaC9yaXNjdi9rdm0vbW11LmMtNzM2LVx0XHRcdFx0XHRcdHZtYV9wYWdlc2l6ZSwgZmFsc2UsIHRydWUsIG91dF9tYXApO1xuYXJjaC9yaXNjdi9rdm0vbW11LmMtNzM3LVx0fSBlbHNlIHtcbmFyY2gvcmlzY3Yva3ZtL21tdS5jOjczODpcdFx0cmV0ID0ga3ZtX3Jpc2N2X2dzdGFnZV9tYXBfcGFnZShcdTAwMjZnc3RhZ2UsIHBjYWNoZSwgZ3BhLCBoZm4gXHUwMDNjXHUwMDNjIFBBR0VfU0hJRlQsXG5hcmNoL3Jpc2N2L2t2bS9tbXUuYy03MzktXHRcdFx0XHRcdFx0dm1hX3BhZ2VzaXplLCB0cnVlLCB0cnVlLCBvdXRfbWFwKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTI6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA1NjgKCQkJCQkJCW91dHB1dDogNDgKCQkJCQkJCXRob3VnaHRzOiA4MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqTmF2aWdhdGluZyB0aGUgUklTQy1WIEtWTSBHdWVzdCBTdGFnZSBJbXBsZW1lbnRhdGlvbioqCgpPa2F5LCBsZXQmIzM5O3Mgc2VlLi4uIEkmIzM5O20gY3VycmVudGx5IGxvb2tpbmcgYXQgYGFyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX2dzdGFnZS5oYC4gVGhpcyBpcyB3aGVyZSB0aGUgbWFnaWMgaGFwcGVucywgYXQgbGVhc3QgcmVnYXJkaW5nIHRoZSBndWVzdCBzdGFnZSBmdW5jdGlvbmFsaXR5IGluIHRoZSBSSVNDLVYgS1ZNIGltcGxlbWVudGF0aW9uLiBIbW0sIGBrdm1fcmlzY3ZfZ3N0YWdlX21hcF9wYWdlYCBhbmQgYGt2bV9yaXNjdl9nc3RhZ2Vfc2V0X3B0ZWAgaW1tZWRpYXRlbHkganVtcCBvdXQgYXMgdGhlIGtleSBwbGF5ZXJzIGhlcmUuIFRoZXkgc2VlbSB0byBiZSB0aGUgcHJpbWFyeSBmdW5jdGlvbnMgaW52b2x2ZWQgaW4gbWFwcGluZyBwYWdlcyB3aXRoaW4gdGhlIGd1ZXN0IHN0YWdlIGFuZCBzZXR0aW5nIHRoZSBwYWdlIHRhYmxlIGVudHJpZXMsIHJlc3BlY3RpdmVseS4gV2FpdCBhIHNlY29uZCwgaXMgYGt2bV9yaXNjdl9nc3RhZ2Vfc2V0X3B0ZWAgYWN0dWFsbHkgKmRlZmluZWQqIHdpdGhpbiB0aGlzIGhlYWRlcj8gT3IgaXMgaXQganVzdCBkZWNsYXJlZCBoZXJlPyBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQuIEl0JiMzOTtzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHRoZSBzY29wZSBhbmQgd2hlcmUgdGhlIGFjdHVhbCBpbXBsZW1lbnRhdGlvbiByZXNpZGVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMjoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1fcmlzY3ZfZ3N0YWdlX3NldF9wdGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV9nc3RhZ2UuaCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV9nc3RhZ2UuaD01MD1ib29sIGt2bV9yaXNjdl9nc3RhZ2VfZ2V0X2xlYWYoc3RydWN0IGt2bV9nc3RhZ2UgKmdzdGFnZSwgZ3BhX3QgYWRkcixcbi0tXG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV9nc3RhZ2UuaC01Mi1cbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX2dzdGFnZS5oOjUzOmludCBrdm1fcmlzY3ZfZ3N0YWdlX3NldF9wdGUoc3RydWN0IGt2bV9nc3RhZ2UgKmdzdGFnZSxcbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX2dzdGFnZS5oLTU0LVx0XHRcdCAgICAgc3RydWN0IGt2bV9tbXVfbWVtb3J5X2NhY2hlICpwY2FjaGUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDEyOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMDcwCgkJCQkJCQlvdXRwdXQ6IDExNwoJCQkJCQkJdGhvdWdodHM6IDE2OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBLVk0gUklTQy1WIFBhdGNoKioKCk9rYXksIHllcywgSSYjMzk7dmUgZ290IGl0LiBUaGUgY29yZSBvZiB0aGlzIHBhdGNoIGNlbnRlcnMgb24gYGt2bV9yaXNjdl9nc3RhZ2VfbWFwX3BhZ2VgIGFuZCBga3ZtX3Jpc2N2X2dzdGFnZV9zZXRfcHRlYC4gSXQmIzM5O3MgZGVmaW5pdGVseSB0aWVkIHRvIHRoZSBgS1ZNYCBjb25maWd1cmF0aW9uLiBMZXQgbWUganVzdCBjb25maXJtIHRoYXQgcXVpY2tseSDigJMgcmlnaHQsIGxvb2tpbmcgYXQgYGFyY2gvcmlzY3Yva3ZtL01ha2VmaWxlYCwgaXQmIzM5O3MganVzdCBgb2JqLSQoQ09ORklHX0tWTSkgJiM0Mzs9IGt2bS5vYCwgc28gYEtWTWAgaXMgaW5kZWVkIHRoZSBzb2xlIGNvbmZpZyBkZXBlbmRlbmN5LiBHb29kLgoKTm93LCBmcm9tIHdoYXQgSSB1bmRlcnN0YW5kLCB0aGlzIHBhdGNoIGFkZHJlc3NlcyBhIGJ1ZyBpbiB0aGUgS1ZNIFJJU0MtViBwYWdlIHRhYmxlIG1hbmFnZW1lbnQuIFNwZWNpZmljYWxseSwgaXQgc2VlbXMgYSBsb3dlci1sZXZlbCBwYWdlIHRhYmxlIGVudHJ5IGlzIGJlaW5nIG92ZXJ3cml0dGVuIGJ5IGEgbGVhZiBtYXBwaW5nLCBhbmQgdGhpcyBjYW4gb2NjdXIgZHVyaW5nIHRoZSBoYW5kbGluZyBvZiBhIGh1Z2UgcGFnZSBtYXBwZWQgb3ZlciBhIHByZS1leGlzdGluZywgc21hbGxlciBwYWdlIG1hcHBpbmcuIEZ1bmN0aW9uYWxseSwgdGhpcyBpcyBhIG1vZGlmaWNhdGlvbiB0byB0aGUgY29yZSBtZW1vcnkgbWFuYWdlbWVudCB3aXRoaW4gS1ZNIGZvciBSSVNDLVYuCgpHaXZlbiB0aGUgcG90ZW50aWFsIGZvciBzdWJ0bGUgbWVtb3J5IGNvcnJ1cHRpb24gaXNzdWVzIOKAkyBwYXJ0aWN1bGFybHkgaW4gc3VjaCBhIGNyaXRpY2FsIGFyZWEg4oCTIHRoaXMgaXMgYWJzb2x1dGVseSBzb21ldGhpbmcgdGhhdCB3YXJyYW50cyB0aG9yb3VnaCBmdXp6aW5nLiBUaGUgc2NlbmFyaW8gb3V0bGluZWQgc3VnZ2VzdHMgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcyBhcmUgaW50cm9kdWNlZCwgYW5kIGZ1enppbmcgaXMgdGhlIGJlc3QgcGF0aCB0byBmaW5kIHRoZW0uCgpJIHdpbGwgZ2V0IHRoZSByZXN1bHRzIHNldC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTI6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9yaXNjdl9nc3RhZ2VfbWFwX3BhZ2UmIzM0OywKICAgICYjMzQ7a3ZtX3Jpc2N2X2dzdGFnZV9zZXRfcHRlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIEtWTSBSSVNDLVYgZ3Vlc3Qgc3RhZ2UtMiBwYWdlIHRhYmxlIG1hbmFnZW1lbnQgdG8gcHJldmVudCByZXBsYWNpbmcgYW4gZXhpc3RpbmcgbG93ZXItbGV2ZWwgcGFnZSB0YWJsZSB3aXRoIGEgbGVhZiBtYXBwaW5nLCBmYWxsaW5nIGJhY2sgdG8gYSBzbWFsbGVyIHBhZ2Ugc2l6ZSBpbnN0ZWFkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSByZWFjaGFibGUgY29yZSBLVk0gZmVhdHVyZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX3Jpc2N2X2dzdGFnZV9tYXBfcGFnZSYjMzQ7LAogICAgJiMzNDtrdm1fcmlzY3ZfZ3N0YWdlX3NldF9wdGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgS1ZNIFJJU0MtViBndWVzdCBzdGFnZS0yIHBhZ2UgdGFibGUgbWFuYWdlbWVudCB0byBwcmV2ZW50IHJlcGxhY2luZyBhbiBleGlzdGluZyBsb3dlci1sZXZlbCBwYWdlIHRhYmxlIHdpdGggYSBsZWFmIG1hcHBpbmcsIGZhbGxpbmcgYmFjayB0byBhIHNtYWxsZXIgcGFnZSBzaXplIGluc3RlYWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIHJlYWNoYWJsZSBjb3JlIEtWTSBmZWF0dXJlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMjoyNTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDEyOjI1PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIEtWTSBndWVzdCBzdGFnZS0yIHBhZ2UgdGFibGUgbWFuYWdlbWVudCBvbiBSSVNDLVYgdG8gcHJldmVudCByZXBsYWNpbmcgYW4gZXhpc3RpbmcgbG93ZXItbGV2ZWwgcGFnZSB0YWJsZSBkaXJlY3Rvcnkgd2l0aCBhIGxlYWYgbWFwcGluZyAoaHVnZSBwYWdlKS4gSXQgZG9lcyB0aGlzIGJ5IHJldHVybmluZyAtRUVYSVNUIGFuZCBmYWxsaW5nIGJhY2sgdG8gbWFwcGluZyBhdCBsZXZlbCAwIChiYXNlIHBhZ2Ugc2l6ZSkuIFRoZXNlIGNoYW5nZXMgYXJlIHB1cmVseSByZWxhdGVkIHRvIHBhZ2UgdGFibGUgbG9naWMsIHBoeXNpY2FsIGFkZHJlc3MgY2FsY3VsYXRpb25zLCBhbmQgUFRFIG1hbmlwdWxhdGlvbi4gVGhlcmUgYXJlIG5vIG5ldyBhbGxvY2F0aW9ucywgbm8gc3RydWN0dXJlcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgYW5kIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgYmVpbmcgdXNlZCBpbiBjb250cm9sIGZsb3cgb3IgbGVha2VkLiBBbnkgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCBoZXJlIChlLmcuLCBpbmNvcnJlY3QgcG9pbnRlcnMgb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcykgd291bGQgYmUgY2F1Z2h0IGJ5IEtBU0FOIG9yIHN0YW5kYXJkIGtlcm5lbCB0ZXN0aW5nLiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNmI5OTEzMWQ5YmYzZDVlYzhiNGY4YjI4ODkwYjViYjdlZTVjZWYyOQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgQXVnIDE0IDEyOjI0OjIyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rdm0vZ3N0YWdlLmMgYi9hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYwppbmRleCBlNTAwMmNiOWNiZWYxLi4yM2NiMzVlMzYwNzNiIDEwMDY0NAotLS0gYS9hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYwpAQCAtMTc0LDYgJiM0MzsxNzQsMTIgQEAgaW50IGt2bV9yaXNjdl9nc3RhZ2Vfc2V0X3B0ZShzdHJ1Y3Qga3ZtX2dzdGFnZSAqZ3N0YWdlLAogCiAJaWYgKHB0ZV92YWwoKnB0ZXApICE9IHB0ZV92YWwobWFwLSZndDtwdGUpKSB7CiAJCWJvb2wgd2FzX2ludmFsaWQgPSAhcHRlX3ZhbCgqcHRlcCk7CiYjNDM7CiYjNDM7CQkvKiBBdm9pZCByZXBsYWNpbmcgYW4gZXhpc3RpbmcgbG93ZXItbGV2ZWwgdGFibGUgd2l0aCBhIGxlYWYgbWFwcGluZy4gKi8KJiM0MzsJCWlmICghZ3N0YWdlX3B0ZV9sZWFmKHB0ZXApICZhbXA7JmFtcDsgIXdhc19pbnZhbGlkICZhbXA7JmFtcDsKJiM0MzsJCSAgICBnc3RhZ2VfcHRlX2xlYWYoJmFtcDttYXAtJmd0O3B0ZSkpCiYjNDM7CQkJcmV0dXJuIC1FRVhJU1Q7CiYjNDM7CiAJCXNldF9wdGUocHRlcCwgbWFwLSZndDtwdGUpOwogCQlpZiAoZ3N0YWdlX3B0ZV9sZWFmKHB0ZXApICZhbXA7JmFtcDsKIAkJICAgICEod2FzX2ludmFsaWQgJmFtcDsmYW1wOyByaXNjdl9oYXNfZXh0ZW5zaW9uX3VubGlrZWx5KFJJU0NWX0lTQV9FWFRfU1ZWUFRDKSkpCkBAIC0yMTEsMTIgJiM0MzsyMTcsMTMgQEAgaW50IGt2bV9yaXNjdl9nc3RhZ2VfbWFwX3BhZ2Uoc3RydWN0IGt2bV9nc3RhZ2UgKmdzdGFnZSwKIAkJCSAgICAgIHN0cnVjdCBrdm1fZ3N0YWdlX21hcHBpbmcgKm91dF9tYXApCiB7CiAJYm9vbCBmb3VuZF9sZWFmOwomIzQzOwlwaHlzX2FkZHJfdCBodWdlX3BhZ2Vfb2Zmc2V0OwogCXUzMiBwdGVwX2xldmVsOwogCXBncHJvdF90IHByb3Q7CiAJcHRlX3QgKnB0ZXA7CiAJaW50IHJldDsKIAotCW91dF9tYXAtJmd0O2FkZHIgPSBncGE7CiYjNDM7CW91dF9tYXAtJmd0O2FkZHIgPSBncGEgJmFtcDsgUEFHRV9NQVNLOwogCW91dF9tYXAtJmd0O2xldmVsID0gMDsKIAogCXJldCA9IGdzdGFnZV9wYWdlX3NpemVfdG9fbGV2ZWwoZ3N0YWdlLCBwYWdlX3NpemUsICZhbXA7b3V0X21hcC0mZ3Q7bGV2ZWwpOwpAQCAtMjg3LDcgJiM0MzsyOTQsMTggQEAgaW50IGt2bV9yaXNjdl9nc3RhZ2VfbWFwX3BhZ2Uoc3RydWN0IGt2bV9nc3RhZ2UgKmdzdGFnZSwKIAlvdXRfbWFwLSZndDtwdGUgPSBwZm5fcHRlKFBGTl9ET1dOKGhwYSksIHByb3QpOwogCW91dF9tYXAtJmd0O3B0ZSA9IHB0ZV9ta2RpcnR5KG91dF9tYXAtJmd0O3B0ZSk7CiAKLQlyZXR1cm4ga3ZtX3Jpc2N2X2dzdGFnZV9zZXRfcHRlKGdzdGFnZSwgcGNhY2hlLCBvdXRfbWFwKTsKJiM0MzsJcmV0ID0ga3ZtX3Jpc2N2X2dzdGFnZV9zZXRfcHRlKGdzdGFnZSwgcGNhY2hlLCBvdXRfbWFwKTsKJiM0MzsJaWYgKHJldCA9PSAtRUVYSVNUKSB7CiYjNDM7CQlodWdlX3BhZ2Vfb2Zmc2V0ID0gb3V0X21hcC0mZ3Q7YWRkciAmYW1wOyAocGFnZV9zaXplIC0gMSk7CiYjNDM7CQlocGEgJiM0Mzs9IGh1Z2VfcGFnZV9vZmZzZXQ7CiYjNDM7CQlvdXRfbWFwLSZndDtsZXZlbCA9IDA7CiYjNDM7CQlvdXRfbWFwLSZndDtwdGUgPSBwZm5fcHRlKFBGTl9ET1dOKGhwYSksIHByb3QpOwomIzQzOwkJb3V0X21hcC0mZ3Q7cHRlID0gcHRlX21rZGlydHkob3V0X21hcC0mZ3Q7cHRlKTsKJiM0MzsKJiM0MzsJCXJldCA9IGt2bV9yaXNjdl9nc3RhZ2Vfc2V0X3B0ZShnc3RhZ2UsIHBjYWNoZSwgb3V0X21hcCk7CiYjNDM7CX0KJiM0MzsKJiM0MzsJcmV0dXJuIHJldDsKIH0KIAogc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIG1ha2VfY2hpbGRfcHRlKHVuc2lnbmVkIGxvbmcgaHVnZV9wdGUsIGludCBpbmRleCwKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDEyOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1ODQKCQkJCQkJCW91dHB1dDogMTcwCgkJCQkJCQl0aG91Z2h0czogNTA3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKktNU0FOIEFzc2Vzc21lbnQ6IE5vIFVuaW5pdGlhbGl6ZWQgTWVtb3J5IElzc3VlKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoaXMgcGF0Y2ggaXMgZm9jdXNlZCBvbiB0aGUgUklTQy1WIEtWTSBpbXBsZW1lbnRhdGlvbiwgc3BlY2lmaWNhbGx5IGRlYWxpbmcgd2l0aCB0aGUgZ3Vlc3Qgc3RhZ2UgMiBwYWdlIHRhYmxlcyAoYGdzdGFnZS5jYCkuIEl0JiMzOTtzIGFsbCBpbnRlcm5hbCBwYWdlIHRhYmxlIG1hbmFnZW1lbnQg4oCTIG5vIGRpcmVjdCBpbnRlcmFjdGlvbiB3aXRoIHVzZXJzcGFjZS4KClRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgcmV2b2x2ZXMgYXJvdW5kIGhvdyBga3ZtX3Jpc2N2X2dzdGFnZV9zZXRfcHRlYCBiZWhhdmVzIGFuZCBob3cgYGt2bV9yaXNjdl9nc3RhZ2VfbWFwX3BhZ2VgIGhhbmRsZXMgcG90ZW50aWFsIGVycm9ycy4gVGhlIGtleSBzZWVtcyB0byBiZSB0aGlzOiBUaGUgcGF0Y2ggcHJldmVudHMgb3ZlcndyaXRpbmcgZXhpc3RpbmcgbG93ZXItbGV2ZWwgcGFnZSB0YWJsZSBlbnRyaWVzIHdpdGggbGVhZiBtYXBwaW5ncyBieSBpbnRyb2R1Y2luZyBhIGNoZWNrIGluIGBrdm1fcmlzY3ZfZ3N0YWdlX3NldF9wdGVgLiBJZiBhbiBvdmVyd3JpdGUgaXMgYXR0ZW1wdGVkLCBpdCBub3cgcmV0dXJucyBgLUVFWElTVGAuCgpOb3csIGlmIGAtRUVYSVNUYCBpcyByZXR1cm5lZCBieSBga3ZtX3Jpc2N2X2dzdGFnZV9zZXRfcHRlYCBkdXJpbmcgbWFwcGluZywgIGBrdm1fcmlzY3ZfZ3N0YWdlX21hcF9wYWdlYCBub3cgaGFzIGxvZ2ljIHRvIGhhbmRsZSB0aGlzIGNvbmRpdGlvbi4gSXQgY2FsY3VsYXRlcyBhbiBvZmZzZXQgKGBodWdlX3BhZ2Vfb2Zmc2V0YCkgYW5kIHRoZW4gcG90ZW50aWFsbHkgcmUtbWFwcyBhIHNtYWxsZXIgcGFnZS4gVGhlIGNydWNpYWwgcGFydCBoZXJlIGlzIGV4YW1pbmluZyB0aGUgYG91dF9tYXBgIHN0cnVjdC4gVGhpcyBpcyB0aGUgY2VudHJhbCBkYXRhIHN0cnVjdHVyZS4gCgpJIHdhcyBpbml0aWFsbHkgY29uY2VybmVkIGFib3V0IHBvdGVudGlhbCB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcy4gQnV0IEkgbG9va2VkIGNsb3NlbHkgYXQgaG93IGBvdXRfbWFwYCBpcyBwb3B1bGF0ZWQuIFRoZSBgb3V0X21hcGAgc3RydWN0IGhhcyBhbiBgYWRkcmAsIGBsZXZlbGAgYW5kIGBwdGVgIGZpZWxkLiBUaGUgcGF0Y2ggbW9kaWZpZXMgKmhvdyogdGhlc2UgZmllbGRzIGFyZSBzZXQsIGJ1dCBkb2VzIG5vdCBpbnRyb2R1Y2UgYSBzY2VuYXJpbyB3aGVyZSB0aGVzZSBmaWVsZHMgY291bGQgY29udGFpbiB1bmluaXRpYWxpemVkIHZhbHVlcy4gU3BlY2lmaWNhbGx5LCB0aGUgbGluZSBgb3V0X21hcC0mZ3Q7YWRkciA9IGdwYSAmYW1wOyBQQUdFX01BU0tgIGVuc3VyZXMgdGhhdCBgYWRkcmAgaXMgaW5pdGlhbGl6ZWQsIGFuZCBldmVuIGluIHRoZSBmYWxsYmFjayBjYXNlLCBhbGwgdGhlIGZpZWxkcyBvZiBgb3V0X21hcGAgYXJlIGZ1bGx5IGluaXRpYWxpemVkLiBJdCYjMzk7cyBlc3NlbnRpYWxseSBpbXBsZW1lbnRpbmcgYSBmYWxsYmFjayBtZWNoYW5pc20sIHJlZHVjaW5nIGEgaHVnZSBwYWdlIG1hcHBpbmcgdG8gYSBzbWFsbGVyIGxldmVsIGlmIGEgaHVnZSBwYWdlIGFscmVhZHkgZXhpc3RzLgoKVGhlIGBvdXRfbWFwLSZndDthZGRyICZhbXA7IChwYWdlX3NpemUgLSAxKWAgcGFydCBtYWRlIG1lIHBhdXNlIGJyaWVmbHksIGJ1dCBzaW5jZSBgb3V0X21hcC0mZ3Q7YWRkcmAgaXMgaW5pdGlhbGl6ZWQgKHRvIGBncGEgJmFtcDsgUEFHRV9NQVNLYCkgYW5kIGBwYWdlX3NpemVgIGlzIHBhc3NlZCBhcyBhbiBhcmd1bWVudCwgdGhlcmUmIzM5O3Mgbm8gd2F5IHRoaXMgb3BlcmF0aW9uIGNhbiByZWFkIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGlzIGlzIHNpbXBseSBhIGJpdHdpc2Ugb3BlcmF0aW9uIHdpdGhpbiBhIHdlbGwtZGVmaW5lZCBhbmQgaW5pdGlhbGl6ZWQgY29udGV4dC4KCkkmIzM5O3ZlIGNhcmVmdWxseSBjb25zaWRlcmVkIHRoZSBjb2RlIHBhdGgsIHRoZSBkYXRhIHN0cnVjdHVyZXMsIGFuZCB0aGUgbG9naWMuIFRoaXMgaXMgYSBtb2RpZmljYXRpb24gdG8gcGFnZSB0YWJsZSBtYW5pcHVsYXRpb24sIG5vdCBhIG5ldyBtZW1vcnkgYWxsb2NhdGlvbi4gTXkgY29uY2x1c2lvbiBpcyBmaXJtOiAqdGhlcmUgaXMgbm8gZXZpZGVuY2Ugb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UgaW4gdGhpcyBwYXRjaCouIEl0IHVwZGF0ZXMgdGhlIHBhZ2UgdGFibGUgc3RydWN0dXJlIGFjY29yZGluZyB0byBleHBlY3RlZCBiZWhhdmlvci4KClRoZXJlZm9yZSwgTmVlZHNLTVNBTiA9IGZhbHNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMjoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBLVk0gZ3Vlc3Qgc3RhZ2UtMiBwYWdlIHRhYmxlIG1hbmFnZW1lbnQgb24gUklTQy1WIHRvIHByZXZlbnQgcmVwbGFjaW5nIGFuIGV4aXN0aW5nIGxvd2VyLWxldmVsIHBhZ2UgdGFibGUgZGlyZWN0b3J5IHdpdGggYSBsZWFmIG1hcHBpbmcgKGh1Z2UgcGFnZSkuIEl0IGRvZXMgdGhpcyBieSByZXR1cm5pbmcgLUVFWElTVCBhbmQgZmFsbGluZyBiYWNrIHRvIG1hcHBpbmcgYXQgbGV2ZWwgMCAoYmFzZSBwYWdlIHNpemUpLiBUaGVzZSBjaGFuZ2VzIGFyZSBwdXJlbHkgcmVsYXRlZCB0byBwYWdlIHRhYmxlIGxvZ2ljLCBwaHlzaWNhbCBhZGRyZXNzIGNhbGN1bGF0aW9ucywgYW5kIFBURSBtYW5pcHVsYXRpb24uIFRoZXJlIGFyZSBubyBuZXcgYWxsb2NhdGlvbnMsIG5vIHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIGFuZCBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIHVzZWQgaW4gY29udHJvbCBmbG93IG9yIGxlYWtlZC4gQW55IHBvdGVudGlhbCBidWdzIGludHJvZHVjZWQgaGVyZSAoZS5nLiwgaW5jb3JyZWN0IHBvaW50ZXJzIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMpIHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTiBvciBzdGFuZGFyZCBrZXJuZWwgdGVzdGluZy4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBLVk0gZ3Vlc3Qgc3RhZ2UtMiBwYWdlIHRhYmxlIG1hbmFnZW1lbnQgb24gUklTQy1WIHRvIHByZXZlbnQgcmVwbGFjaW5nIGFuIGV4aXN0aW5nIGxvd2VyLWxldmVsIHBhZ2UgdGFibGUgZGlyZWN0b3J5IHdpdGggYSBsZWFmIG1hcHBpbmcgKGh1Z2UgcGFnZSkuIEl0IGRvZXMgdGhpcyBieSByZXR1cm5pbmcgLUVFWElTVCBhbmQgZmFsbGluZyBiYWNrIHRvIG1hcHBpbmcgYXQgbGV2ZWwgMCAoYmFzZSBwYWdlIHNpemUpLiBUaGVzZSBjaGFuZ2VzIGFyZSBwdXJlbHkgcmVsYXRlZCB0byBwYWdlIHRhYmxlIGxvZ2ljLCBwaHlzaWNhbCBhZGRyZXNzIGNhbGN1bGF0aW9ucywgYW5kIFBURSBtYW5pcHVsYXRpb24uIFRoZXJlIGFyZSBubyBuZXcgYWxsb2NhdGlvbnMsIG5vIHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIGFuZCBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIHVzZWQgaW4gY29udHJvbCBmbG93IG9yIGxlYWtlZC4gQW55IHBvdGVudGlhbCBidWdzIGludHJvZHVjZWQgaGVyZSAoZS5nLiwgaW5jb3JyZWN0IHBvaW50ZXJzIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMpIHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTiBvciBzdGFuZGFyZCBrZXJuZWwgdGVzdGluZy4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDEyOjI0OjI0LjczMjA0NTAxNVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc1NzE5Njg3Nzk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9yaXNjdl9nc3RhZ2VfbWFwX3BhZ2VcIixcbiAgICBcImt2bV9yaXNjdl9nc3RhZ2Vfc2V0X3B0ZVwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgS1ZNIGd1ZXN0IHN0YWdlLTIgcGFnZSB0YWJsZSBtYW5hZ2VtZW50IG9uIFJJU0MtViB0byBwcmV2ZW50IHJlcGxhY2luZyBhbiBleGlzdGluZyBsb3dlci1sZXZlbCBwYWdlIHRhYmxlIGRpcmVjdG9yeSB3aXRoIGEgbGVhZiBtYXBwaW5nIChodWdlIHBhZ2UpLiBJdCBkb2VzIHRoaXMgYnkgcmV0dXJuaW5nIC1FRVhJU1QgYW5kIGZhbGxpbmcgYmFjayB0byBtYXBwaW5nIGF0IGxldmVsIDAgKGJhc2UgcGFnZSBzaXplKS4gVGhlc2UgY2hhbmdlcyBhcmUgcHVyZWx5IHJlbGF0ZWQgdG8gcGFnZSB0YWJsZSBsb2dpYywgcGh5c2ljYWwgYWRkcmVzcyBjYWxjdWxhdGlvbnMsIGFuZCBQVEUgbWFuaXB1bGF0aW9uLiBUaGVyZSBhcmUgbm8gbmV3IGFsbG9jYXRpb25zLCBubyBzdHJ1Y3R1cmVzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBhbmQgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyB1c2VkIGluIGNvbnRyb2wgZmxvdyBvciBsZWFrZWQuIEFueSBwb3RlbnRpYWwgYnVncyBpbnRyb2R1Y2VkIGhlcmUgKGUuZy4sIGluY29ycmVjdCBwb2ludGVycyBvciBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzKSB3b3VsZCBiZSBjYXVnaHQgYnkgS0FTQU4gb3Igc3RhbmRhcmQga2VybmVsIHRlc3RpbmcuIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIEtWTSBSSVNDLVYgZ3Vlc3Qgc3RhZ2UtMiBwYWdlIHRhYmxlIG1hbmFnZW1lbnQgdG8gcHJldmVudCByZXBsYWNpbmcgYW4gZXhpc3RpbmcgbG93ZXItbGV2ZWwgcGFnZSB0YWJsZSB3aXRoIGEgbGVhZiBtYXBwaW5nLCBmYWxsaW5nIGJhY2sgdG8gYSBzbWFsbGVyIHBhZ2Ugc2l6ZSBpbnN0ZWFkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSByZWFjaGFibGUgY29yZSBLVk0gZmVhdHVyZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTI6MjQ6MjQuNzMyMDUyNDA1WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzY4MTk1MTQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNmI5OTEzMWQ5YmYzZDVlYzhiNGY4YjI4ODkwYjViYjdlZTVjZWYyOVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEF1ZyAxNCAxMjoyNDoyMiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYyBiL2FyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jXFxuaW5kZXggZTUwMDJjYjljYmVmMS4uMjNjYjM1ZTM2MDczYiAxMDA2NDRcXG4tLS0gYS9hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuY1xcbisrKyBiL2FyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jXFxuQEAgLTE3NCw2ICsxNzQsMTIgQEAgaW50IGt2bV9yaXNjdl9nc3RhZ2Vfc2V0X3B0ZShzdHJ1Y3Qga3ZtX2dzdGFnZSAqZ3N0YWdlLFxcbiBcXG4gXFx0aWYgKHB0ZV92YWwoKnB0ZXApICE9IHB0ZV92YWwobWFwLVxcdTAwM2VwdGUpKSB7XFxuIFxcdFxcdGJvb2wgd2FzX2ludmFsaWQgPSAhcHRlX3ZhbCgqcHRlcCk7XFxuK1xcbitcXHRcXHQvKiBBdm9pZCByZXBsYWNpbmcgYW4gZXhpc3RpbmcgbG93ZXItbGV2ZWwgdGFibGUgd2l0aCBhIGxlYWYgbWFwcGluZy4gKi9cXG4rXFx0XFx0aWYgKCFnc3RhZ2VfcHRlX2xlYWYocHRlcCkgXFx1MDAyNlxcdTAwMjYgIXdhc19pbnZhbGlkIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdCAgICBnc3RhZ2VfcHRlX2xlYWYoXFx1MDAyNm1hcC1cXHUwMDNlcHRlKSlcXG4rXFx0XFx0XFx0cmV0dXJuIC1FRVhJU1Q7XFxuK1xcbiBcXHRcXHRzZXRfcHRlKHB0ZXAsIG1hcC1cXHUwMDNlcHRlKTtcXG4gXFx0XFx0aWYgKGdzdGFnZV9wdGVfbGVhZihwdGVwKSBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHQgICAgISh3YXNfaW52YWxpZCBcXHUwMDI2XFx1MDAyNiByaXNjdl9oYXNfZXh0ZW5zaW9uX3VubGlrZWx5KFJJU0NWX0lTQV9FWFRfU1ZWUFRDKSkpXFxuQEAgLTIxMSwxMiArMjE3LDEzIEBAIGludCBrdm1fcmlzY3ZfZ3N0YWdlX21hcF9wYWdlKHN0cnVjdCBrdm1fZ3N0YWdlICpnc3RhZ2UsXFxuIFxcdFxcdFxcdCAgICAgIHN0cnVjdCBrdm1fZ3N0YWdlX21hcHBpbmcgKm91dF9tYXApXFxuIHtcXG4gXFx0Ym9vbCBmb3VuZF9sZWFmO1xcbitcXHRwaHlzX2FkZHJfdCBodWdlX3BhZ2Vfb2Zmc2V0O1xcbiBcXHR1MzIgcHRlcF9sZXZlbDtcXG4gXFx0cGdwcm90X3QgcHJvdDtcXG4gXFx0cHRlX3QgKnB0ZXA7XFxuIFxcdGludCByZXQ7XFxuIFxcbi1cXHRvdXRfbWFwLVxcdTAwM2VhZGRyID0gZ3BhO1xcbitcXHRvdXRfbWFwLVxcdTAwM2VhZGRyID0gZ3BhIFxcdTAwMjYgUEFHRV9NQVNLO1xcbiBcXHRvdXRfbWFwLVxcdTAwM2VsZXZlbCA9IDA7XFxuIFxcbiBcXHRyZXQgPSBnc3RhZ2VfcGFnZV9zaXplX3RvX2xldmVsKGdzdGFnZSwgcGFnZV9zaXplLCBcXHUwMDI2b3V0X21hcC1cXHUwMDNlbGV2ZWwpO1xcbkBAIC0yODcsNyArMjk0LDE4IEBAIGludCBrdm1fcmlzY3ZfZ3N0YWdlX21hcF9wYWdlKHN0cnVjdCBrdm1fZ3N0YWdlICpnc3RhZ2UsXFxuIFxcdG91dF9tYXAtXFx1MDAzZXB0ZSA9IHBmbl9wdGUoUEZOX0RPV04oaHBhKSwgcHJvdCk7XFxuIFxcdG91dF9tYXAtXFx1MDAzZXB0ZSA9IHB0ZV9ta2RpcnR5KG91dF9tYXAtXFx1MDAzZXB0ZSk7XFxuIFxcbi1cXHRyZXR1cm4ga3ZtX3Jpc2N2X2dzdGFnZV9zZXRfcHRlKGdzdGFnZSwgcGNhY2hlLCBvdXRfbWFwKTtcXG4rXFx0cmV0ID0ga3ZtX3Jpc2N2X2dzdGFnZV9zZXRfcHRlKGdzdGFnZSwgcGNhY2hlLCBvdXRfbWFwKTtcXG4rXFx0aWYgKHJldCA9PSAtRUVYSVNUKSB7XFxuK1xcdFxcdGh1Z2VfcGFnZV9vZmZzZXQgPSBvdXRfbWFwLVxcdTAwM2VhZGRyIFxcdTAwMjYgKHBhZ2Vfc2l6ZSAtIDEpO1xcbitcXHRcXHRocGEgKz0gaHVnZV9wYWdlX29mZnNldDtcXG4rXFx0XFx0b3V0X21hcC1cXHUwMDNlbGV2ZWwgPSAwO1xcbitcXHRcXHRvdXRfbWFwLVxcdTAwM2VwdGUgPSBwZm5fcHRlKFBGTl9ET1dOKGhwYSksIHByb3QpO1xcbitcXHRcXHRvdXRfbWFwLVxcdTAwM2VwdGUgPSBwdGVfbWtkaXJ0eShvdXRfbWFwLVxcdTAwM2VwdGUpO1xcbitcXG4rXFx0XFx0cmV0ID0ga3ZtX3Jpc2N2X2dzdGFnZV9zZXRfcHRlKGdzdGFnZSwgcGNhY2hlLCBvdXRfbWFwKTtcXG4rXFx0fVxcbitcXG4rXFx0cmV0dXJuIHJldDtcXG4gfVxcbiBcXG4gc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIG1ha2VfY2hpbGRfcHRlKHVuc2lnbmVkIGxvbmcgaHVnZV9wdGUsIGludCBpbmRleCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTI6MjQ6MjYuMTAxMDY5NzU5WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NjQ0MTc3MDU5OTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX3Jpc2N2X2dzdGFnZV9tYXBfcGFnZVwiLFxuICAgIFwia3ZtX3Jpc2N2X2dzdGFnZV9zZXRfcHRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgS1ZNIFJJU0MtViBndWVzdCBzdGFnZS0yIHBhZ2UgdGFibGUgbWFuYWdlbWVudCB0byBwcmV2ZW50IHJlcGxhY2luZyBhbiBleGlzdGluZyBsb3dlci1sZXZlbCBwYWdlIHRhYmxlIHdpdGggYSBsZWFmIG1hcHBpbmcsIGZhbGxpbmcgYmFjayB0byBhIHNtYWxsZXIgcGFnZSBzaXplIGluc3RlYWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIHJlYWNoYWJsZSBjb3JlIEtWTSBmZWF0dXJlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA2Yjk5MTMxZDliZjNkNWVjOGI0ZjhiMjg4OTBiNWJiN2VlNWNlZjI5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBBdWcgMTQgMTI6MjQ6MjIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYyBiL2FyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jXG5pbmRleCBlNTAwMmNiOWNiZWYxLi4yM2NiMzVlMzYwNzNiIDEwMDY0NFxuLS0tIGEvYXJjaC9yaXNjdi9rdm0vZ3N0YWdlLmNcbisrKyBiL2FyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jXG5AQCAtMTc0LDYgKzE3NCwxMiBAQCBpbnQga3ZtX3Jpc2N2X2dzdGFnZV9zZXRfcHRlKHN0cnVjdCBrdm1fZ3N0YWdlICpnc3RhZ2UsXG4gXG4gXHRpZiAocHRlX3ZhbCgqcHRlcCkgIT0gcHRlX3ZhbChtYXAtXHUwMDNlcHRlKSkge1xuIFx0XHRib29sIHdhc19pbnZhbGlkID0gIXB0ZV92YWwoKnB0ZXApO1xuK1xuK1x0XHQvKiBBdm9pZCByZXBsYWNpbmcgYW4gZXhpc3RpbmcgbG93ZXItbGV2ZWwgdGFibGUgd2l0aCBhIGxlYWYgbWFwcGluZy4gKi9cbitcdFx0aWYgKCFnc3RhZ2VfcHRlX2xlYWYocHRlcCkgXHUwMDI2XHUwMDI2ICF3YXNfaW52YWxpZCBcdTAwMjZcdTAwMjZcbitcdFx0ICAgIGdzdGFnZV9wdGVfbGVhZihcdTAwMjZtYXAtXHUwMDNlcHRlKSlcbitcdFx0XHRyZXR1cm4gLUVFWElTVDtcbitcbiBcdFx0c2V0X3B0ZShwdGVwLCBtYXAtXHUwMDNlcHRlKTtcbiBcdFx0aWYgKGdzdGFnZV9wdGVfbGVhZihwdGVwKSBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgICEod2FzX2ludmFsaWQgXHUwMDI2XHUwMDI2IHJpc2N2X2hhc19leHRlbnNpb25fdW5saWtlbHkoUklTQ1ZfSVNBX0VYVF9TVlZQVEMpKSlcbkBAIC0yMTEsMTIgKzIxNywxMyBAQCBpbnQga3ZtX3Jpc2N2X2dzdGFnZV9tYXBfcGFnZShzdHJ1Y3Qga3ZtX2dzdGFnZSAqZ3N0YWdlLFxuIFx0XHRcdCAgICAgIHN0cnVjdCBrdm1fZ3N0YWdlX21hcHBpbmcgKm91dF9tYXApXG4ge1xuIFx0Ym9vbCBmb3VuZF9sZWFmO1xuK1x0cGh5c19hZGRyX3QgaHVnZV9wYWdlX29mZnNldDtcbiBcdHUzMiBwdGVwX2xldmVsO1xuIFx0cGdwcm90X3QgcHJvdDtcbiBcdHB0ZV90ICpwdGVwO1xuIFx0aW50IHJldDtcbiBcbi1cdG91dF9tYXAtXHUwMDNlYWRkciA9IGdwYTtcbitcdG91dF9tYXAtXHUwMDNlYWRkciA9IGdwYSBcdTAwMjYgUEFHRV9NQVNLO1xuIFx0b3V0X21hcC1cdTAwM2VsZXZlbCA9IDA7XG4gXG4gXHRyZXQgPSBnc3RhZ2VfcGFnZV9zaXplX3RvX2xldmVsKGdzdGFnZSwgcGFnZV9zaXplLCBcdTAwMjZvdXRfbWFwLVx1MDAzZWxldmVsKTtcbkBAIC0yODcsNyArMjk0LDE4IEBAIGludCBrdm1fcmlzY3ZfZ3N0YWdlX21hcF9wYWdlKHN0cnVjdCBrdm1fZ3N0YWdlICpnc3RhZ2UsXG4gXHRvdXRfbWFwLVx1MDAzZXB0ZSA9IHBmbl9wdGUoUEZOX0RPV04oaHBhKSwgcHJvdCk7XG4gXHRvdXRfbWFwLVx1MDAzZXB0ZSA9IHB0ZV9ta2RpcnR5KG91dF9tYXAtXHUwMDNlcHRlKTtcbiBcbi1cdHJldHVybiBrdm1fcmlzY3ZfZ3N0YWdlX3NldF9wdGUoZ3N0YWdlLCBwY2FjaGUsIG91dF9tYXApO1xuK1x0cmV0ID0ga3ZtX3Jpc2N2X2dzdGFnZV9zZXRfcHRlKGdzdGFnZSwgcGNhY2hlLCBvdXRfbWFwKTtcbitcdGlmIChyZXQgPT0gLUVFWElTVCkge1xuK1x0XHRodWdlX3BhZ2Vfb2Zmc2V0ID0gb3V0X21hcC1cdTAwM2VhZGRyIFx1MDAyNiAocGFnZV9zaXplIC0gMSk7XG4rXHRcdGhwYSArPSBodWdlX3BhZ2Vfb2Zmc2V0O1xuK1x0XHRvdXRfbWFwLVx1MDAzZWxldmVsID0gMDtcbitcdFx0b3V0X21hcC1cdTAwM2VwdGUgPSBwZm5fcHRlKFBGTl9ET1dOKGhwYSksIHByb3QpO1xuK1x0XHRvdXRfbWFwLVx1MDAzZXB0ZSA9IHB0ZV9ta2RpcnR5KG91dF9tYXAtXHUwMDNlcHRlKTtcbitcbitcdFx0cmV0ID0ga3ZtX3Jpc2N2X2dzdGFnZV9zZXRfcHRlKGdzdGFnZSwgcGNhY2hlLCBvdXRfbWFwKTtcbitcdH1cbitcbitcdHJldHVybiByZXQ7XG4gfVxuIFxuIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBtYWtlX2NoaWxkX3B0ZSh1bnNpZ25lZCBsb25nIGh1Z2VfcHRlLCBpbnQgaW5kZXgsXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMjoyNDoyNi4xMDEwNzI2NzlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5ODEzNzI4NjMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgVGhpcyBLVk0gUklTQy1WIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCDigJMgbG9va3MgbGlrZSBpdCdzIHR3ZWFraW5nIGBhcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuY2AuIFNwZWNpZmljYWxseSwgaXQncyBtZXNzaW5nIHdpdGggYGt2bV9yaXNjdl9nc3RhZ2Vfc2V0X3B0ZWAgYW5kIGBrdm1fcmlzY3ZfZ3N0YWdlX21hcF9wYWdlYC4gQWgsIGdvdCBpdC4gSXQgYWRkcyBhIGNoZWNrIGluIGBrdm1fcmlzY3ZfZ3N0YWdlX3NldF9wdGVgIHRvIHByZXZlbnQgb3ZlcndyaXRpbmcgYW4gZXhpc3RpbmcgbG93ZXItbGV2ZWwgcGFnZSB0YWJsZSBlbnRyeSB3aXRoIGEgbGVhZiBtYXBwaW5nLCBhbmQgaWYgaXQgZG9lcywgaXQgcmV0dXJucyBgLUVFWElTVGAuIFRoZSBga3ZtX3Jpc2N2X2dzdGFnZV9tYXBfcGFnZWAgZnVuY3Rpb24gdGhlbiBoYW5kbGVzIHRoaXMgYC1FRVhJU1RgIGVycm9yIGJ5IGZhbGxpbmcgYmFjayB0byB1c2luZyBhIHNtYWxsZXIgcGFnZSBzaXplIChsZXZlbCAwKSBhbmQgcmUtc2V0dGluZyB0aGUgUFRFLlxuXG5BbHJpZ2h0LCBsZXQncyBhc3Nlc3MgaXRzIGZ1enppbmcgcG90ZW50aWFsLiBUaGlzIGlzIGRlZmluaXRlbHkgd29ydGggYSBsb29rOyBpdCdzIGEgS1ZNIFJJU0MtViBwYXRjaCwgc28gdGhlIHNjb3BlIGlzIHNwZWNpZmljIGJ1dCBkZWZpbml0ZWx5IGhhcyBhdHRhY2sgc3VyZmFjZS4gSXQncyBtb2RpZnlpbmcgaG93IHBhZ2UgdGFibGVzIGFyZSBtYW5hZ2VkIGR1cmluZyBndWVzdCBzdGFnZS0yIHRyYW5zbGF0aW9uLiBUaGlzIGlzIGh1Z2Ug4oCTIGFueXRoaW5nIHJlbGF0ZWQgdG8gcGFnZSB0YWJsZXMsIGVzcGVjaWFsbHkgaW4gdGhlIGNvbnRleHQgb2YgdmlydHVhbGl6YXRpb24sIGlzIGEgcHJpbWUgdGFyZ2V0LiBBbmQgc2luY2UgaXQncyBLVk0sIHRoYXQgbWVhbnMgaXQncyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdGhyb3VnaCBLVk0gaW9jdGxzIGxpa2UgYEtWTV9SVU5gIGFuZCBob3cgbWVtb3J5IHJlZ2lvbnMgYXJlIHNldCB1cC4gQWJzb2x1dGVseSwgdGhpcyBpcyByaXBlIGZvciBmdXp6aW5nLlxuXG5Ob3csIHdoZXJlIGFyZSB0aGUgY29uZmlnIG9wdGlvbnM/IEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGlzIGlzIGNvbXBpbGVkLiBMZXQncyBzZWUuLi4gYGFyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jYCBpcyBjb21waWxlZCB3aGVuIGBDT05GSUdfS1ZNYCBpcyBlbmFibGVkIG9uIFJJU0MtVi4gVGhhdCdzIGEgZ29vZCBzdGFydC4gSSBjYW4gcHJvYmFibHkgY29uZmlybSB0aGlzIGJ5IGNoZWNraW5nIGBhcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZWAgb3IgYGFyY2gvcmlzY3Yva3ZtL0tjb25maWdgIGZvciB0aGUgYnVpbGQgZGVwZW5kZW5jaWVzLCBhbHRob3VnaCBpdCdzIHVzdWFsbHkgcHJldHR5IG9idmlvdXMuIEknbGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhlIEtjb25maWcsIGJ1dCB0aGF0IHNob3VsZCBiZSBzdHJhaWdodGZvcndhcmQuIFJpZ2h0LCBsZXQncyBnZXQgdG8gd29yayFcblxuXG4iLCJJbnB1dFRva2VucyI6MjU4NywiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3OSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDEyOjI0OjM1LjkxNDgwNDA0OVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5OTc1NzEzOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJnc3RhZ2Uub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3Jpc2N2L2t2bS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9yaXNjdi9rdm0vTWFrZWZpbGU9MTY9a3ZtLXkgKz0gYWlhX2ltc2ljLm9cXG5hcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZToxNzprdm0teSArPSBnc3RhZ2Uub1xcbmFyY2gvcmlzY3Yva3ZtL01ha2VmaWxlLTE4LWt2bS15ICs9IGlzYS5vXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYz0zMjg9Ym9vbCBrdm1fcmlzY3ZfZ3N0YWdlX3NwbGl0X2h1Z2Uoc3RydWN0IGt2bV9nc3RhZ2UgKmdzdGFnZSxcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jLTM4OS1cXG5hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYzozOTA6Ym9vbCBrdm1fcmlzY3ZfZ3N0YWdlX29wX3B0ZShzdHJ1Y3Qga3ZtX2dzdGFnZSAqZ3N0YWdlLCBncGFfdCBhZGRyLFxcbmFyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jOjM5MTpcXHRcXHRcXHQgICAgIHB0ZV90ICpwdGVwLCB1MzIgcHRlcF9sZXZlbCwgZW51bSBrdm1fcmlzY3ZfZ3N0YWdlX29wIG9wKVxcbmFyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jLTM5Mi17XFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYy00MTctXFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIFBUUlNfUEVSX1BURTsgaSsrKVxcbmFyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jOjQxODpcXHRcXHRcXHRmbHVzaCB8PSBrdm1fcmlzY3ZfZ3N0YWdlX29wX3B0ZShnc3RhZ2UsIGFkZHIgKyBpICogbmV4dF9wYWdlX3NpemUsXFxuYXJjaC9yaXNjdi9rdm0vZ3N0YWdlLmMtNDE5LVxcdFxcdFxcdFxcdFxcdFxcdFxcdCBcXHUwMDI2bmV4dF9wdGVwW2ldLCBuZXh0X3B0ZXBfbGV2ZWwsIG9wKTtcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jPTQzNT1ib29sIGt2bV9yaXNjdl9nc3RhZ2VfdW5tYXBfcmFuZ2Uoc3RydWN0IGt2bV9nc3RhZ2UgKmdzdGFnZSxcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jLTQ1NS1cXHRcXHRcXHRpZiAoIShhZGRyIFxcdTAwMjYgKHBhZ2Vfc2l6ZSAtIDEpKSBcXHUwMDI2XFx1MDAyNiAoKGVuZCAtIGFkZHIpIFxcdTAwM2U9IHBhZ2Vfc2l6ZSkpXFxuYXJjaC9yaXNjdi9rdm0vZ3N0YWdlLmM6NDU2OlxcdFxcdFxcdFxcdGZsdXNoIHw9IGt2bV9yaXNjdl9nc3RhZ2Vfb3BfcHRlKGdzdGFnZSwgYWRkciwgcHRlcCxcXG5hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYy00NTctXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0IHB0ZXBfbGV2ZWwsIEdTVEFHRV9PUF9DTEVBUik7XFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYz00Nzc9Ym9vbCBrdm1fcmlzY3ZfZ3N0YWdlX3dwX3JhbmdlKHN0cnVjdCBrdm1fZ3N0YWdlICpnc3RhZ2UsIGdwYV90IHN0YXJ0LCBncGFfdCBlbmQpXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYy00OTYtXFx0XFx0XFx0YWRkciA9IEFMSUdOX0RPV04oYWRkciwgcGFnZV9zaXplKTtcXG5hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYzo0OTc6XFx0XFx0XFx0Zmx1c2ggfD0ga3ZtX3Jpc2N2X2dzdGFnZV9vcF9wdGUoZ3N0YWdlLCBhZGRyLCBwdGVwLFxcbmFyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jLTQ5OC1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgcHRlcF9sZXZlbCwgR1NUQUdFX09QX1dQKTtcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jPTUyNj1ib29sIGt2bV9yaXNjdl9nc3RhZ2Vfd3BfcHRfbWFza2VkKHN0cnVjdCBrdm1fZ3N0YWdlICpnc3RhZ2UsIGdmbl90IGJhc2VfZ2ZuLFxcbi0tXFxuYXJjaC9yaXNjdi9rdm0vZ3N0YWdlLmMtNTUwLVxcbmFyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jOjU1MTpcXHRcXHRcXHRmbHVzaCB8PSBrdm1fcmlzY3ZfZ3N0YWdlX29wX3B0ZShnc3RhZ2UsIGFkZHIsIHB0ZXAsXFxuYXJjaC9yaXNjdi9rdm0vZ3N0YWdlLmMtNTUyLVxcdFxcdFxcdFxcdFxcdFxcdFxcdCBwdGVwX2xldmVsLCBHU1RBR0VfT1BfV1ApO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMjoyNDozNi4wMTQ1NjkwODhaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODQzODQ0MDQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBhIGZpcnN0LXBlcnNvbiBleHBlcnQgc3VtbWFyeTpcblxuKipEaWdnaW5nIGludG8gdGhlIFJJU0MtViBLVk0gQ29tcGlsYXRpb24gUHJvY2VzcyoqXG5cbkFscmlnaHQsIHNvIHRoZSBmaWxlIHdhcyBjb21waWxlZCB1c2luZyBga3ZtLXlgLiBNeSBpbW1lZGlhdGUgcmVhY3Rpb24gaXMgdG8gdHJhY2sgZG93biBleGFjdGx5IGhvdyB0aGlzIGBrdm0teWAgaXMgY29uZmlndXJlZCB3aXRoaW4gdGhlIGJ1aWxkIHN5c3RlbS4gR2l2ZW4gdGhpcyBpcyBSSVNDLVYgS1ZNLCBteSBmaXJzdCBpbnN0aW5jdCBpcyB0byBkaXZlIGludG8gdGhlIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBtYWtlZmlsZXMuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGNoZWNrIGBhcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZWAuIFRoYXQncyB3aGVyZSBJIGV4cGVjdCB0byBmaW5kIHRoZSBjb25kaXRpb25hbCBsb2dpYyB0aGF0IGRlZmluZXMgaG93IGBrdm0teWAgaXMgaW50ZXJwcmV0ZWQsIHdoYXQgc291cmNlIGZpbGVzIGl0IGluY2x1ZGVzLCBhbmQgYW55IG90aGVyIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIGZvciB0aGUgUklTQy1WIEtWTSBzdWJzeXN0ZW0gd2l0aGluIHRoZSBicm9hZGVyIGtlcm5lbCBidWlsZCBwcm9jZXNzLiBUaW1lIHRvIHNlZSB3aGF0IHRoYXQgTWFrZWZpbGUgcmV2ZWFscy4gVGhpcyBraW5kIG9mIGludmVzdGlnYXRpb24gaXMgZXNzZW50aWFsIHRvIHVuZGVyc3RhbmRpbmcgdGhlIGJ1aWxkIGFuZCBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gSSdtIGtlZW4gdG8gZmlndXJlIG91dCB3aHkgdGhpcyBmbGFnIHdhcyB1c2VkIGFuZCB3aGF0IGl0IG1lYW5zIGZvciB0aGUgcmVzdWx0aW5nIGJpbmFyeS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDE5OSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDEyOjI0OjM5Ljg1ODQyNTEwNVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3Mjk4NTgxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm0teVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZT0xMD1vYmotJChDT05GSUdfS1ZNKSArPSBrdm0ub1xcbi0tXFxuYXJjaC9yaXNjdi9rdm0vTWFrZWZpbGUtMTItIyBPcmRlcmVkIGFscGhhYmV0aWNhbGx5XFxuYXJjaC9yaXNjdi9rdm0vTWFrZWZpbGU6MTM6a3ZtLXkgKz0gYWlhLm9cXG5hcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZToxNDprdm0teSArPSBhaWFfYXBsaWMub1xcbmFyY2gvcmlzY3Yva3ZtL01ha2VmaWxlOjE1Omt2bS15ICs9IGFpYV9kZXZpY2Uub1xcbmFyY2gvcmlzY3Yva3ZtL01ha2VmaWxlOjE2Omt2bS15ICs9IGFpYV9pbXNpYy5vXFxuYXJjaC9yaXNjdi9rdm0vTWFrZWZpbGU6MTc6a3ZtLXkgKz0gZ3N0YWdlLm9cXG5hcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZToxODprdm0teSArPSBpc2Eub1xcbmFyY2gvcmlzY3Yva3ZtL01ha2VmaWxlOjE5Omt2bS15ICs9IG1haW4ub1xcbmFyY2gvcmlzY3Yva3ZtL01ha2VmaWxlOjIwOmt2bS15ICs9IG1tdS5vXFxuYXJjaC9yaXNjdi9rdm0vTWFrZWZpbGU6MjE6a3ZtLXkgKz0gbmFjbC5vXFxuYXJjaC9yaXNjdi9rdm0vTWFrZWZpbGU6MjI6a3ZtLXkgKz0gdGxiLm9cXG5hcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZToyMzprdm0teSArPSB2Y3B1Lm9cXG5hcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZToyNDprdm0teSArPSB2Y3B1X2NvbmZpZy5vXFxuYXJjaC9yaXNjdi9rdm0vTWFrZWZpbGU6MjU6a3ZtLXkgKz0gdmNwdV9leGl0Lm9cXG5hcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZToyNjprdm0teSArPSB2Y3B1X2ZwLm9cXG5hcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZToyNzprdm0teSArPSB2Y3B1X2luc24ub1xcbmFyY2gvcmlzY3Yva3ZtL01ha2VmaWxlOjI4Omt2bS15ICs9IHZjcHVfb25lcmVnLm9cXG5hcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZS0yOS1rdm0tJChDT05GSUdfUklTQ1ZfUE1VX1NCSSkgKz0gdmNwdV9wbXUub1xcbmFyY2gvcmlzY3Yva3ZtL01ha2VmaWxlOjMwOmt2bS15ICs9IHZjcHVfc2JpLm9cXG5hcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZTozMTprdm0teSArPSB2Y3B1X3NiaV9iYXNlLm9cXG5hcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZTozMjprdm0teSArPSB2Y3B1X3NiaV9mb3J3YXJkLm9cXG5hcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZTozMzprdm0teSArPSB2Y3B1X3NiaV9md2Z0Lm9cXG5hcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZTozNDprdm0teSArPSB2Y3B1X3NiaV9oc20ub1xcbmFyY2gvcmlzY3Yva3ZtL01ha2VmaWxlLTM1LWt2bS0kKENPTkZJR19SSVNDVl9QTVVfU0JJKSArPSB2Y3B1X3NiaV9wbXUub1xcbmFyY2gvcmlzY3Yva3ZtL01ha2VmaWxlOjM2Omt2bS15ICs9IHZjcHVfc2JpX3JlcGxhY2Uub1xcbmFyY2gvcmlzY3Yva3ZtL01ha2VmaWxlOjM3Omt2bS15ICs9IHZjcHVfc2JpX3N0YS5vXFxuYXJjaC9yaXNjdi9rdm0vTWFrZWZpbGU6Mzg6a3ZtLXkgKz0gdmNwdV9zYmlfc3lzdGVtLm9cXG5hcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZS0zOS1rdm0tJChDT05GSUdfUklTQ1ZfU0JJX1YwMSkgKz0gdmNwdV9zYmlfdjAxLm9cXG5hcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZTo0MDprdm0teSArPSB2Y3B1X3N3aXRjaC5vXFxuYXJjaC9yaXNjdi9rdm0vTWFrZWZpbGU6NDE6a3ZtLXkgKz0gdmNwdV90aW1lci5vXFxuYXJjaC9yaXNjdi9rdm0vTWFrZWZpbGU6NDI6a3ZtLXkgKz0gdmNwdV92ZWN0b3Iub1xcbmFyY2gvcmlzY3Yva3ZtL01ha2VmaWxlOjQzOmt2bS15ICs9IHZtLm9cXG5hcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZTo0NDprdm0teSArPSB2bWlkLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTI6MjQ6MzkuOTMxNDE3MDg0WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc5MDU2NjYwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHRoZSBzaXR1YXRpb246XG5cbioqRGl2aW5nIGludG8gdGhlIEtWTSBSSVNDLVYgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB3ZSdyZSBsb29raW5nIGF0IHNvbWV0aGluZyByZWxhdGVkIHRvIEtWTSBjb25maWd1cmF0aW9uLCBzcGVjaWZpY2FsbHkgdGhlIGBDT05GSUdfS1ZNYCBkaXJlY3RpdmUuIFRoYXQncyBvdXIgc3RhcnRpbmcgcG9pbnQuIEZyb20gdGhlcmUsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBtZWF0IG9mIHRoZSBjaGFuZ2UuIEl0IGxvb2tzIGxpa2UgdGhlIHBhdGNoIGlzIGtleWVkIGFyb3VuZCB0d28ga2V5IGZ1bmN0aW9uczogYGt2bV9yaXNjdl9nc3RhZ2Vfc2V0X3B0ZWAgYW5kIGBrdm1fcmlzY3ZfZ3N0YWdlX21hcF9wYWdlYC4gTXkgbmV4dCBpbW1lZGlhdGUgcXVlc3Rpb25zIGFyZTogQXJlIHRoZXNlIGZ1bmN0aW9ucyBleHBvcnRlZCwgb3IgYXJlIHRoZXkgc3RhdGljIHdpdGhpbiBhIG1vZHVsZT8gVW5kZXJzdGFuZGluZyB0aGVpciBzY29wZSBpcyBjcml0aWNhbCB0byBhc3Nlc3MgdGhlIGltcGFjdCBvZiB0aGVzZSBjaGFuZ2VzLiBLbm93aW5nIHRoYXQgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIGhhbmRsZSBvbiBwb3RlbnRpYWwgZGVwZW5kZW5jaWVzIGFuZCB3aGVyZSB0aGlzIG1vZGlmaWNhdGlvbiBzaXRzIHdpdGhpbiB0aGUgYnJvYWRlciBLVk0gUklTQy1WIGFyY2hpdGVjdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTM3MywiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDEyOjI0OjQzLjcyMTk4NjQyMVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NjcwOTMwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fcmlzY3ZfZ3N0YWdlX21hcF9wYWdlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvcmlzY3Yva3ZtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYz0xOTI9c3RhdGljIHZvaWQga3ZtX3Jpc2N2X2dzdGFnZV91cGRhdGVfcHRlX3Byb3Qoc3RydWN0IGt2bV9nc3RhZ2UgKmdzdGFnZSwgdTMyIGxldmVsLFxcbi0tXFxuYXJjaC9yaXNjdi9rdm0vZ3N0YWdlLmMtMjEyLVxcbmFyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jOjIxMzppbnQga3ZtX3Jpc2N2X2dzdGFnZV9tYXBfcGFnZShzdHJ1Y3Qga3ZtX2dzdGFnZSAqZ3N0YWdlLFxcbmFyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jLTIxNC1cXHRcXHRcXHQgICAgICBzdHJ1Y3Qga3ZtX21tdV9tZW1vcnlfY2FjaGUgKnBjYWNoZSxcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL21tdS5jPTYyMz1pbnQga3ZtX3Jpc2N2X21tdV9tYXAoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX21lbW9yeV9zbG90ICptZW1zbG90LFxcbi0tXFxuYXJjaC9yaXNjdi9rdm0vbW11LmMtNzM0LVxcdFxcdG1hcmtfcGFnZV9kaXJ0eV9pbl9zbG90KGt2bSwgbWVtc2xvdCwgZ2ZuKTtcXG5hcmNoL3Jpc2N2L2t2bS9tbXUuYzo3MzU6XFx0XFx0cmV0ID0ga3ZtX3Jpc2N2X2dzdGFnZV9tYXBfcGFnZShcXHUwMDI2Z3N0YWdlLCBwY2FjaGUsIGdwYSwgaGZuIFxcdTAwM2NcXHUwMDNjIFBBR0VfU0hJRlQsXFxuYXJjaC9yaXNjdi9rdm0vbW11LmMtNzM2LVxcdFxcdFxcdFxcdFxcdFxcdHZtYV9wYWdlc2l6ZSwgZmFsc2UsIHRydWUsIG91dF9tYXApO1xcbmFyY2gvcmlzY3Yva3ZtL21tdS5jLTczNy1cXHR9IGVsc2Uge1xcbmFyY2gvcmlzY3Yva3ZtL21tdS5jOjczODpcXHRcXHRyZXQgPSBrdm1fcmlzY3ZfZ3N0YWdlX21hcF9wYWdlKFxcdTAwMjZnc3RhZ2UsIHBjYWNoZSwgZ3BhLCBoZm4gXFx1MDAzY1xcdTAwM2MgUEFHRV9TSElGVCxcXG5hcmNoL3Jpc2N2L2t2bS9tbXUuYy03MzktXFx0XFx0XFx0XFx0XFx0XFx0dm1hX3BhZ2VzaXplLCB0cnVlLCB0cnVlLCBvdXRfbWFwKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTI6MjQ6NDMuODA4Njk5NzFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzM4MjUwMjE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhpbmtpbmcgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgUklTQy1WIEtWTSBQYWdlIEZhdWx0IEhhbmRsZXIqKlxuXG5Pa2F5LCBzbyBJJ20gdHJhY2tpbmcgZG93biBob3cgcGFnZSBmYXVsdHMgYXJlIGhhbmRsZWQgaW4gdGhlIEtWTSBSSVNDLVYgaW1wbGVtZW50YXRpb24uIFRoZSBrZXJuZWwgdGVsbHMgbWUgdGhhdCBga3ZtX3Jpc2N2X21tdV9tYXBgIGlzIHRoZSBjcnVjaWFsIHBhZ2UgZmF1bHQgaGFuZGxlci4gTm93LCBJIHNlZSB0aGF0IGBrdm1fcmlzY3ZfZ3N0YWdlX21hcF9wYWdlYCBpcyBiZWluZyBjYWxsZWQgKmJ5KiBga3ZtX3Jpc2N2X21tdV9tYXBgLiBUaGlzIHN1Z2dlc3RzIGEgaGllcmFyY2hpY2FsIHN0cnVjdHVyZSwgd2hlcmUgYGt2bV9yaXNjdl9tbXVfbWFwYCBpcyB0aGUgdG9wLWxldmVsIGhhbmRsZXIgdGhhdCB0aGVuIGRlbGVnYXRlcyBzb21lIG9mIHRoZSBhY3R1YWwgbWFwcGluZyB3b3JrIHRvIGBrdm1fcmlzY3ZfZ3N0YWdlX21hcF9wYWdlYC4gR2l2ZW4gdGhhdCBga3ZtX3Jpc2N2X21tdV9tYXBgIGlzIGlkZW50aWZpZWQgYXMgdGhlIFwibWFpblwiIGhhbmRsZXIsIGl0IG1ha2VzIHNlbnNlIHRvIHN0YXJ0IGRpZ2dpbmcgaW4gdGhlcmUuIExldCdzIHN0YXJ0IGJ5IHNjcnV0aW5pemluZyB0aGUgbG9naWMgd2l0aGluIGBrdm1fcmlzY3ZfbW11X21hcGAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBpdCBvcmNoZXN0cmF0ZXMgdGhlIG1hcHBpbmcgcHJvY2VzcywgaG93IGl0IGRldGVybWluZXMgd2hpY2ggcGFydHMgYXJlIGhhbmRsZWQgYnkgYGt2bV9yaXNjdl9nc3RhZ2VfbWFwX3BhZ2VgLCBhbmQgZ2VuZXJhbGx5IGhvdyB0aGUgS1ZNIGhhbmRsZXMgdGhlIGd1ZXN0IHBhZ2UgZmF1bHRzIGZvciB0aGUgUklTQy1WIGFyY2hpdGVjdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjA5MCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjczLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDEyOjI0OjQ3LjU0Njk1MjUzOFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjkxNzAzOTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX3Jpc2N2X21tdV9tYXBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9yaXNjdi9rdm0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvcmlzY3Yva3ZtL21tdS5jPTU1Mj1zdGF0aWMgYm9vbCBrdm1fcmlzY3ZfbW11X2RpcnR5X2xvZ193cml0ZV9mYXVsdF9mYXN0KHN0cnVjdCBrdm0gKmt2bSxcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL21tdS5jLTYyMi1cXG5hcmNoL3Jpc2N2L2t2bS9tbXUuYzo2MjM6aW50IGt2bV9yaXNjdl9tbXVfbWFwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9tZW1vcnlfc2xvdCAqbWVtc2xvdCxcXG5hcmNoL3Jpc2N2L2t2bS9tbXUuYy02MjQtXFx0XFx0ICAgICAgZ3BhX3QgZ3BhLCB1bnNpZ25lZCBsb25nIGh2YSwgYm9vbCBpc193cml0ZSxcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfZXhpdC5jPTE2PXN0YXRpYyBpbnQgZ3N0YWdlX3BhZ2VfZmF1bHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3J1biAqcnVuLFxcbi0tXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9leGl0LmMtNjYtXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9leGl0LmM6Njc6XFx0cmV0ID0ga3ZtX3Jpc2N2X21tdV9tYXAodmNwdSwgbWVtc2xvdCwgZmF1bHRfYWRkciwgaHZhLFxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfZXhpdC5jLTY4LVxcdFxcdFxcdFxcdCh0cmFwLVxcdTAwM2VzY2F1c2UgPT0gRVhDX1NUT1JFX0dVRVNUX1BBR0VfRkFVTFQpID8gdHJ1ZSA6IGZhbHNlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMjoyNDo0Ny42MTYxMzEyMzdaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTc3OTAwMTY4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgUG90ZW50aWFsIFRlc3QgRGlzdHJpYnV0aW9uIFNrZXcqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGNvZGUgcmVsYXRlZCB0byBLVk0gb24gUklTQy1WIGFuZCB0cnlpbmcgdG8gZmlndXJlIG91dCB3aGVyZSB3ZSBjYW4gYmVzdCBmb2N1cyBvdXIgdGVzdGluZyBlZmZvcnRzLiBga3ZtX3Jpc2N2X21tdV9tYXBgIGlzIHRyaWdnZXJlZCBieSBgZ3N0YWdlX3BhZ2VfZmF1bHRgLCB3aGljaCwgaW4gdHVybiwgaXMgdHJpZ2dlcmVkIGJ5IGd1ZXN0IHBhZ2UgZmF1bHRzLiBUaGF0J3MgYSBjbGFzc2ljIGhvdCBwYXRoLiBCdXQsIGBrdm1fcmlzY3ZfZ3N0YWdlX21hcF9wYWdlYCBpcyBhbHNvIGhlYXZpbHkgdXNlZC5cblxuV2FpdCBhIG1pbnV0ZSwgdGhlIGluc3RydWN0aW9ucyBhcmUgdG8gYXZvaWQgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMsIHRoYXQgd2lsbCBza2V3IHRoZSB0ZXN0IGRpc3RyaWJ1dGlvbnMuIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBlbnRyeSBwb2ludHMuIFNvLCBpcyBga3ZtX3Jpc2N2X21tdV9tYXBgIGEgaG90IHBhdGg/IEFic29sdXRlbHkg4oCTIHBhZ2UgZmF1bHQgaGFuZGxlcnMgYXJlIGFsd2F5cyBpbiB0aGUgY3JpdGljYWwgcGF0aC4gV2UgYWxyZWFkeSBrbm93IHRoYXQuXG5cblNvLCBsZXQncyBsb29rIGZvciBhbHRlcm5hdGl2ZXMgdG8gZm9jdXMgb24uIFBlcmhhcHMgYGt2bV9yaXNjdl9nc3RhZ2VfbWFwX3BhZ2VgIGlzICpub3QqIGEgZ2VuZXJpYyBob3QgcGF0aC4gSXQncyBzcGVjaWZpYyB0byBLVk0gUklTQy1WIHBhZ2UgbWFwcGluZy4gR29vZC4gTGV0J3MgbWFrZSBzdXJlIGl0IGlzIGV4cG9ydGVkLCBtZWFuaW5nIGl0IGlzIG5vdCBzdGF0aWMsIHdoaWNoIGl0IGFwcGVhcnMgbm90IHRvIGJlLiBOZXh0LCBsZXQncyBleHBsb3JlIGBrdm1fcmlzY3ZfZ3N0YWdlX3NldF9wdGVgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2Nzg4LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDEyOjI0OjUzLjM5NTEzNjcyMloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTYxNTM1OTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX3Jpc2N2X2dzdGFnZV9zZXRfcHRlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvcmlzY3Yva3ZtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYz0xMjg9Ym9vbCBrdm1fcmlzY3ZfZ3N0YWdlX3RyeV91cGRhdGVfcHRlKHN0cnVjdCBrdm1fZ3N0YWdlICpnc3RhZ2UsIHUzMiBsZXZlbCxcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jLTE0MS1cXG5hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYzoxNDI6aW50IGt2bV9yaXNjdl9nc3RhZ2Vfc2V0X3B0ZShzdHJ1Y3Qga3ZtX2dzdGFnZSAqZ3N0YWdlLFxcbmFyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jLTE0My1cXHRcXHRcXHQgICAgIHN0cnVjdCBrdm1fbW11X21lbW9yeV9jYWNoZSAqcGNhY2hlLFxcbi0tXFxuYXJjaC9yaXNjdi9rdm0vZ3N0YWdlLmM9MjEzPWludCBrdm1fcmlzY3ZfZ3N0YWdlX21hcF9wYWdlKHN0cnVjdCBrdm1fZ3N0YWdlICpnc3RhZ2UsXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYy0yNzMtXFx0XFx0ICoganVzdCB1cGRhdGUgdGhlIHB0ZSBwcm90IGhlcmUuIE90aGVyd2lzZSwgd2Ugd291bGQgZmFsbCBiYWNrIHRvIG1hcHBpbmdcXG5hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYzoyNzQ6XFx0XFx0ICogdGhlIGdzdGFnZSBhdCBodWdlIHBhZ2UgbGV2ZWwgaW4gYGt2bV9yaXNjdl9nc3RhZ2Vfc2V0X3B0ZWAsIHdpdGggdGhlXFxuYXJjaC9yaXNjdi9rdm0vZ3N0YWdlLmMtMjc1LVxcdFxcdCAqIG92ZXJoZWFkIG9mIGZyZWVpbmcgdGhlIHBhZ2UgdGFibGVzKG5vdCBzdXBwb3J0IG5vdyksIHdoaWNoIHdvdWxkIHNsb3dcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jLTI4Mi1cXHRcXHQgKiBXZSBhbHJlYWR5IGhhdmUgdGhlIHB0ZXAsIGp1c3QgdXBkYXRlIHRoZSBwdGUgcHJvdCBpZiB0aGUgcGZuIG5vdCBjaGFuZ2UuXFxuYXJjaC9yaXNjdi9rdm0vZ3N0YWdlLmM6MjgzOlxcdFxcdCAqIFRoZXJlIGlzIG5vIG5lZWQgdG8gaW52b2tlIGBrdm1fcmlzY3ZfZ3N0YWdlX3NldF9wdGVgIGFnYWluLlxcbmFyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jLTI4NC1cXHRcXHQgKi9cXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jLTI5Ni1cXG5hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYzoyOTc6XFx0cmV0ID0ga3ZtX3Jpc2N2X2dzdGFnZV9zZXRfcHRlKGdzdGFnZSwgcGNhY2hlLCBvdXRfbWFwKTtcXG5hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYy0yOTgtXFx0aWYgKHJldCA9PSAtRUVYSVNUKSB7XFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYy0zMDQtXFxuYXJjaC9yaXNjdi9rdm0vZ3N0YWdlLmM6MzA1OlxcdFxcdHJldCA9IGt2bV9yaXNjdl9nc3RhZ2Vfc2V0X3B0ZShnc3RhZ2UsIHBjYWNoZSwgb3V0X21hcCk7XFxuYXJjaC9yaXNjdi9rdm0vZ3N0YWdlLmMtMzA2LVxcdH1cXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL21tdS5jPTQwPWludCBrdm1fcmlzY3ZfbW11X2lvcmVtYXAoc3RydWN0IGt2bSAqa3ZtLCBncGFfdCBncGEsIHBoeXNfYWRkcl90IGhwYSxcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL21tdS5jLTc0LVxcdFxcdHdyaXRlX2xvY2soXFx1MDAyNmt2bS1cXHUwMDNlbW11X2xvY2spO1xcbmFyY2gvcmlzY3Yva3ZtL21tdS5jOjc1OlxcdFxcdHJldCA9IGt2bV9yaXNjdl9nc3RhZ2Vfc2V0X3B0ZShcXHUwMDI2Z3N0YWdlLCBcXHUwMDI2cGNhY2hlLCBcXHUwMDI2bWFwKTtcXG5hcmNoL3Jpc2N2L2t2bS9tbXUuYy03Ni1cXHRcXHR3cml0ZV91bmxvY2soXFx1MDAyNmt2bS1cXHUwMDNlbW11X2xvY2spO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMjoyNDo1My40OTEyOTc4NTFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDY5NDA5NTgyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIGNvbnNpZGVyaW5nIG15IGV4cGVydGlzZTpcblxuKipFeGFtaW5pbmcgS1ZNL1JJU0MtViBQYWdlIFRhYmxlIE1hbmlwdWxhdGlvbioqXG5cbkFscmlnaHQsIEknbSBkaWdnaW5nIGludG8gdGhpcyBLVk0vUklTQy1WIHBhZ2UgdGFibGUgaW50ZXJhY3Rpb24uIFNwZWNpZmljYWxseSwgSSdtIGZvY3VzaW5nIG9uIHRoZSBwb3RlbnRpYWwgb3ZlcmxhcCBvciBzaGFyZWQgZnVuY3Rpb25hbGl0eSBiZXR3ZWVuIGBrdm1fcmlzY3ZfZ3N0YWdlX3NldF9wdGVgIGFuZCBga3ZtX3Jpc2N2X21tdV9pb3JlbWFwYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIHJvdXRpbmVzIGludGVyYWN0LCBiZWNhdXNlIGBrdm1fcmlzY3ZfZ3N0YWdlX3NldF9wdGVgIGFsc28gZ2V0cyBjYWxsZWQgZnJvbSB3aXRoaW4gYGt2bV9yaXNjdl9tbXVfaW9yZW1hcGAuIE15IGh1bmNoIGlzIHRoYXQgSSBzaG91bGQgYWxzbyBiZSB0YWtpbmcgYSBnb29kIGxvb2sgYXQgYGt2bV9yaXNjdl9nc3RhZ2VfbWFwX3BhZ2VgIGFzIHdlbGwsIGFzIGl0IGxpa2VseSByZWxhdGVzIHRvIHNpbWlsYXIgZnVuY3Rpb25hbGl0eS4gTXkgcHJpbWFyeSB0aG91Z2h0IHByb2Nlc3MgaXMgdGhhdCB0aGUgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIHRoZXNlIGZ1bmN0aW9ucyBhcmUgY3J1Y2lhbCB0byB1bmRlcnN0YW5kLiBUaGUgYmVzdCB3YXkgdG8gY2xhcmlmeSB0aG9zZSByZWxhdGlvbnNoaXBzIGlzIHRvIHF1aWNrbHkgY2hlY2sgd2hldGhlciBga3ZtX3Jpc2N2X2dzdGFnZV9tYXBfcGFnZWAgYW5kIGBrdm1fcmlzY3ZfZ3N0YWdlX3NldF9wdGVgIGFyZSBhY3R1YWxseSBleHBvc2VkIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBUaW1lIHRvIGNoZWNrIGBhcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmhgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MDc5LCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTI6MjQ6NTguMTg1Mzk3MTY5WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTEyODgwNzksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bV9yaXNjdl9nc3RhZ2VfbWFwX3BhZ2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMjoyNDo1OC4yOTY2OTMwNzdaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzcyMDUxMjQ1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIHlvdXIgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOlxuXG4qKk5hdmlnYXRpbmcgdGhlIExhYnlyaW50aDogRGVjbGFyYXRpb24gTG9jYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gZGVlcCBpbiB0aGlzIGNvZGUsIGFuZCBJJ20gdHJ5aW5nIHRvIHRyYWNlIHRoZSBvcmlnaW4gb2YgdGhpcyB2YXJpYWJsZS9mdW5jdGlvbi9vYmplY3Qg4oCTIHdoYXRldmVyIGl0IGlzLiBNeSBicmFpbidzIGFscmVhZHkgZmlyaW5nIG9uIGFsbCBjeWxpbmRlcnMsIGNvbnNpZGVyaW5nIGRlcGVuZGVuY2llcywgc2NvcGUsIGFuZCBwb3RlbnRpYWwgaW5oZXJpdGFuY2UgcGF0aHMuIEJ1dCB0aGUgZnVuZGFtZW50YWwgcXVlc3Rpb24ga2VlcHMgbmFnZ2luZyBhdCBtZTogKndoZXJlKiB0aGUgaGVjayBpcyB0aGlzIHRoaW5nIGFjdHVhbGx5ICpkZWZpbmVkKj8gSSBtZWFuLCBJIGNhbiBzZWUgaXQgYmVpbmcgKnVzZWQqIGhlcmUsIGFuZCBJJ3ZlIGdvdCBhIGdvb2QgaGFuZGxlIG9uIGl0cyBiZWhhdmlvciBpbiB0aGlzIGNvbnRleHQsIGJ1dCBJIG5lZWQgdGhlIHNvdXJjZS4gSSBuZWVkIHRoZSBkZWNsYXJhdGlvbi4gSXMgaXQgaW4gdGhpcyBmaWxlPyBBbm90aGVyIG1vZHVsZT8gQSBsaWJyYXJ5IEkgbmVlZCB0byByZWZlcmVuY2U/IEl0J3MgdGhlIGtleS4gSSBjYW4ndCByZWFsbHkgcmVhc29uIGRlZXBseSBhYm91dCB0aGUgbG9naWMgdW50aWwgSSBoYXZlIHRoaXMgY29yZSBwaWVjZSBvZiBpbmZvcm1hdGlvbi4gV2hlcmUgKmFyZSogdGhleSBkZWNsYXJlZD8hXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg0ODcsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDEyOjI1OjAyLjAxNzIwODE2NVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzcyMjQ0NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX3Jpc2N2X2dzdGFnZV9tYXBfcGFnZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3Jpc2N2L2t2bS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9yaXNjdi9rdm0vZ3N0YWdlLmM9MTkyPXN0YXRpYyB2b2lkIGt2bV9yaXNjdl9nc3RhZ2VfdXBkYXRlX3B0ZV9wcm90KHN0cnVjdCBrdm1fZ3N0YWdlICpnc3RhZ2UsIHUzMiBsZXZlbCxcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jLTIxMi1cXG5hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYzoyMTM6aW50IGt2bV9yaXNjdl9nc3RhZ2VfbWFwX3BhZ2Uoc3RydWN0IGt2bV9nc3RhZ2UgKmdzdGFnZSxcXG5hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYy0yMTQtXFx0XFx0XFx0ICAgICAgc3RydWN0IGt2bV9tbXVfbWVtb3J5X2NhY2hlICpwY2FjaGUsXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS9tbXUuYz02MjM9aW50IGt2bV9yaXNjdl9tbXVfbWFwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9tZW1vcnlfc2xvdCAqbWVtc2xvdCxcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL21tdS5jLTczNC1cXHRcXHRtYXJrX3BhZ2VfZGlydHlfaW5fc2xvdChrdm0sIG1lbXNsb3QsIGdmbik7XFxuYXJjaC9yaXNjdi9rdm0vbW11LmM6NzM1OlxcdFxcdHJldCA9IGt2bV9yaXNjdl9nc3RhZ2VfbWFwX3BhZ2UoXFx1MDAyNmdzdGFnZSwgcGNhY2hlLCBncGEsIGhmbiBcXHUwMDNjXFx1MDAzYyBQQUdFX1NISUZULFxcbmFyY2gvcmlzY3Yva3ZtL21tdS5jLTczNi1cXHRcXHRcXHRcXHRcXHRcXHR2bWFfcGFnZXNpemUsIGZhbHNlLCB0cnVlLCBvdXRfbWFwKTtcXG5hcmNoL3Jpc2N2L2t2bS9tbXUuYy03MzctXFx0fSBlbHNlIHtcXG5hcmNoL3Jpc2N2L2t2bS9tbXUuYzo3Mzg6XFx0XFx0cmV0ID0ga3ZtX3Jpc2N2X2dzdGFnZV9tYXBfcGFnZShcXHUwMDI2Z3N0YWdlLCBwY2FjaGUsIGdwYSwgaGZuIFxcdTAwM2NcXHUwMDNjIFBBR0VfU0hJRlQsXFxuYXJjaC9yaXNjdi9rdm0vbW11LmMtNzM5LVxcdFxcdFxcdFxcdFxcdFxcdHZtYV9wYWdlc2l6ZSwgdHJ1ZSwgdHJ1ZSwgb3V0X21hcCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDEyOjI1OjAyLjA5NDQzNzk1NFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDE5MTU1NTU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgUklTQy1WIEtWTSBNTVUgQ29kZSoqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IG15IGJlYXJpbmdzLiBMZXQncyBzdGFydCBieSBsb29raW5nIGF0IHRoZSBpbmNsdWRlIHN0YXRlbWVudHMgd2l0aGluIGBhcmNoL3Jpc2N2L2t2bS9tbXUuY2AuIEdvdHRhIGdldCBhIHNvbGlkIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGRlcGVuZGVuY2llcyBhbmQgd2hhdCBleHRlcm5hbCBlbGVtZW50cyBhcmUgYmVpbmcgbGV2ZXJhZ2VkIGhlcmUuIEkga25vdyB0aGlzIGNvZGUgcHJldHR5IHdlbGwsIHNvIEknbSBsb29raW5nIGZvciBhbnl0aGluZyB1bnVzdWFsIG9yIGFueXRoaW5nIHRoYXQgbWlnaHQganVtcCBvdXQgdGhhdCBJIGhhdmVuJ3Qgc2VlbiBiZWZvcmUuIEFyZSB0aGV5IHVzaW5nIGFueSBuZXcsIGV4cGVyaW1lbnRhbCBmZWF0dXJlcz8gT3IgcGVyaGFwcyB0aGV5J3ZlIGluY29ycG9yYXRlZCBhIHBhcnRpY3VsYXIgbGlicmFyeSBpbiBhbiB1bmV4cGVjdGVkIHdheT8gVGhpcyBpbml0aWFsIHBhc3MgaXMgYWJvdXQgc2V0dGluZyB0aGUgc3RhZ2UgYW5kIHJlZnJlc2hpbmcgbXkgbWVudGFsIG1hcCBvZiB0aGUgcHJvamVjdCdzIGFyY2hpdGVjdHVyZSwgZXNwZWNpYWxseSBmb2N1c2luZyBvbiBtZW1vcnkgbWFuYWdlbWVudCB3aXRoaW4gdGhlIFJJU0MtViBLVk0gY29udGV4dC4gSSdsbCBtYWtlIG5vdGUgb2YgYW55IGhlYWRlciBmaWxlcyB0aGF0IGFyZSBzcGVjaWZpYyB0byBoYXJkd2FyZSBpbnRlcmFjdGlvbnMgb3IgdmlydHVhbGl6YXRpb24gaW50cmljYWNpZXMgdGhhdCBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgZnVydGhlci4gQSB3ZWxsLW9yZ2FuaXplZCBpbmNsdWRlIHNlY3Rpb24gaXMgdXN1YWxseSBhIGdvb2QgaW5kaWNhdG9yIG9mIG92ZXJhbGwgY29kZSBxdWFsaXR5LCBzbyBJJ20gaG9waW5nIGl0J3MgY2xlYW4gYW5kIGNsZWFyLiBUaW1lIHRvIGRpZyBpbiFcblxuXG4iLCJJbnB1dFRva2VucyI6OTE2MiwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDEyOjI1OjA3LjUxMzU5Njg5NFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAyNDgzMDc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bV9yaXNjdl9nc3RhZ2VfbWFwX3BhZ2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9yaXNjdi9rdm0vbW11LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9yaXNjdi9rdm0vbW11LmM9NjIzPWludCBrdm1fcmlzY3ZfbW11X21hcChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKm1lbXNsb3QsXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS9tbXUuYy03MzQtXFx0XFx0bWFya19wYWdlX2RpcnR5X2luX3Nsb3Qoa3ZtLCBtZW1zbG90LCBnZm4pO1xcbmFyY2gvcmlzY3Yva3ZtL21tdS5jOjczNTpcXHRcXHRyZXQgPSBrdm1fcmlzY3ZfZ3N0YWdlX21hcF9wYWdlKFxcdTAwMjZnc3RhZ2UsIHBjYWNoZSwgZ3BhLCBoZm4gXFx1MDAzY1xcdTAwM2MgUEFHRV9TSElGVCxcXG5hcmNoL3Jpc2N2L2t2bS9tbXUuYy03MzYtXFx0XFx0XFx0XFx0XFx0XFx0dm1hX3BhZ2VzaXplLCBmYWxzZSwgdHJ1ZSwgb3V0X21hcCk7XFxuYXJjaC9yaXNjdi9rdm0vbW11LmMtNzM3LVxcdH0gZWxzZSB7XFxuYXJjaC9yaXNjdi9rdm0vbW11LmM6NzM4OlxcdFxcdHJldCA9IGt2bV9yaXNjdl9nc3RhZ2VfbWFwX3BhZ2UoXFx1MDAyNmdzdGFnZSwgcGNhY2hlLCBncGEsIGhmbiBcXHUwMDNjXFx1MDAzYyBQQUdFX1NISUZULFxcbmFyY2gvcmlzY3Yva3ZtL21tdS5jLTczOS1cXHRcXHRcXHRcXHRcXHRcXHR2bWFfcGFnZXNpemUsIHRydWUsIHRydWUsIG91dF9tYXApO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMjoyNTowNy42MTYwODYzNzJaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjU3NjM1MTUxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipOYXZpZ2F0aW5nIHRoZSBMYWJ5cmludGggb2YgRGVjbGFyYXRpb25zKipcblxuQWxyaWdodCwgaG9sZCBvbiBhIHNlY29uZC4gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlL3NwZWNpZmljYXRpb24vZG9jdW1lbnQsIGFuZCBteSBpbml0aWFsIHJlYWN0aW9uIGlzLCAqd2hlcmUqIHByZWNpc2VseSBpcyB0aGlzIHZhcmlhYmxlL2Z1bmN0aW9uL2NsYXNzL2NvbnN0YW50L3doYXRldmVyICpkZWNsYXJlZCo/IEl0J3MgdGhlIGZpcnN0IGFuZCBtb3N0IGZ1bmRhbWVudGFsIHF1ZXN0aW9uLCByZWFsbHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBzY29wZSwgaXRzIHR5cGUsIGFueSBhc3NvY2lhdGVkIG1ldGFkYXRhIOKAkyBhbGwgb2YgdGhhdCBoaW5nZXMgb24gZmluZGluZyBpdHMgb3JpZ2luIHBvaW50LiBJcyBpdCBpbiB0aGlzIGZpbGU/IEFub3RoZXIgb25lPyBBIGhlYWRlcj8gQSBwcmVjb21waWxlZCBsaWJyYXJ5PyBJcyBpdCBhIGZvcndhcmQgZGVjbGFyYXRpb24sIG1lYW5pbmcgSSBuZWVkIHRvIGNoYXNlIGRvd24gaXRzIGRlZmluaXRpb24gbGF0ZXI/IFRoZSBhYnNlbmNlIG9mIGEgY2xlYXIgZGVjbGFyYXRpb24gc2NyZWFtcyBmb3IgaW1tZWRpYXRlIGludmVzdGlnYXRpb24uIEkgY2Fu4oCZdCBwcm9jZWVkIHVudGlsIEkndmUgZXN0YWJsaXNoZWQgdGhhdCBmdW5kYW1lbnRhbCBidWlsZGluZyBibG9jay5cblxuXG4iLCJJbnB1dFRva2VucyI6OTc0NywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTI6MjU6MTQuMTkyNDQwMzU4WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMjM5NTc4NjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX3Jpc2N2X2dzdGFnZV9tYXBfcGFnZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3Jpc2N2L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV9nc3RhZ2UuaD01Nz1ib29sIGt2bV9yaXNjdl9nc3RhZ2VfdHJ5X3VwZGF0ZV9wdGUoc3RydWN0IGt2bV9nc3RhZ2UgKmdzdGFnZSwgdTMyIGxldmVsLFxcbi0tXFxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1fZ3N0YWdlLmgtNjAtXFxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1fZ3N0YWdlLmg6NjE6aW50IGt2bV9yaXNjdl9nc3RhZ2VfbWFwX3BhZ2Uoc3RydWN0IGt2bV9nc3RhZ2UgKmdzdGFnZSxcXG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV9nc3RhZ2UuaC02Mi1cXHRcXHRcXHQgICAgICBzdHJ1Y3Qga3ZtX21tdV9tZW1vcnlfY2FjaGUgKnBjYWNoZSxcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jPTE5Mj1zdGF0aWMgdm9pZCBrdm1fcmlzY3ZfZ3N0YWdlX3VwZGF0ZV9wdGVfcHJvdChzdHJ1Y3Qga3ZtX2dzdGFnZSAqZ3N0YWdlLCB1MzIgbGV2ZWwsXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYy0yMTItXFxuYXJjaC9yaXNjdi9rdm0vZ3N0YWdlLmM6MjEzOmludCBrdm1fcmlzY3ZfZ3N0YWdlX21hcF9wYWdlKHN0cnVjdCBrdm1fZ3N0YWdlICpnc3RhZ2UsXFxuYXJjaC9yaXNjdi9rdm0vZ3N0YWdlLmMtMjE0LVxcdFxcdFxcdCAgICAgIHN0cnVjdCBrdm1fbW11X21lbW9yeV9jYWNoZSAqcGNhY2hlLFxcbi0tXFxuYXJjaC9yaXNjdi9rdm0vbW11LmM9NjIzPWludCBrdm1fcmlzY3ZfbW11X21hcChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKm1lbXNsb3QsXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS9tbXUuYy03MzQtXFx0XFx0bWFya19wYWdlX2RpcnR5X2luX3Nsb3Qoa3ZtLCBtZW1zbG90LCBnZm4pO1xcbmFyY2gvcmlzY3Yva3ZtL21tdS5jOjczNTpcXHRcXHRyZXQgPSBrdm1fcmlzY3ZfZ3N0YWdlX21hcF9wYWdlKFxcdTAwMjZnc3RhZ2UsIHBjYWNoZSwgZ3BhLCBoZm4gXFx1MDAzY1xcdTAwM2MgUEFHRV9TSElGVCxcXG5hcmNoL3Jpc2N2L2t2bS9tbXUuYy03MzYtXFx0XFx0XFx0XFx0XFx0XFx0dm1hX3BhZ2VzaXplLCBmYWxzZSwgdHJ1ZSwgb3V0X21hcCk7XFxuYXJjaC9yaXNjdi9rdm0vbW11LmMtNzM3LVxcdH0gZWxzZSB7XFxuYXJjaC9yaXNjdi9rdm0vbW11LmM6NzM4OlxcdFxcdHJldCA9IGt2bV9yaXNjdl9nc3RhZ2VfbWFwX3BhZ2UoXFx1MDAyNmdzdGFnZSwgcGNhY2hlLCBncGEsIGhmbiBcXHUwMDNjXFx1MDAzYyBQQUdFX1NISUZULFxcbmFyY2gvcmlzY3Yva3ZtL21tdS5jLTczOS1cXHRcXHRcXHRcXHRcXHRcXHR2bWFfcGFnZXNpemUsIHRydWUsIHRydWUsIG91dF9tYXApO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMjoyNToxNC41MTY0MDI4NDVaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTAxMTY2ODAzMDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipOYXZpZ2F0aW5nIHRoZSBSSVNDLVYgS1ZNIEd1ZXN0IFN0YWdlIEltcGxlbWVudGF0aW9uKipcblxuT2theSwgbGV0J3Mgc2VlLi4uIEknbSBjdXJyZW50bHkgbG9va2luZyBhdCBgYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1fZ3N0YWdlLmhgLiBUaGlzIGlzIHdoZXJlIHRoZSBtYWdpYyBoYXBwZW5zLCBhdCBsZWFzdCByZWdhcmRpbmcgdGhlIGd1ZXN0IHN0YWdlIGZ1bmN0aW9uYWxpdHkgaW4gdGhlIFJJU0MtViBLVk0gaW1wbGVtZW50YXRpb24uIEhtbSwgYGt2bV9yaXNjdl9nc3RhZ2VfbWFwX3BhZ2VgIGFuZCBga3ZtX3Jpc2N2X2dzdGFnZV9zZXRfcHRlYCBpbW1lZGlhdGVseSBqdW1wIG91dCBhcyB0aGUga2V5IHBsYXllcnMgaGVyZS4gVGhleSBzZWVtIHRvIGJlIHRoZSBwcmltYXJ5IGZ1bmN0aW9ucyBpbnZvbHZlZCBpbiBtYXBwaW5nIHBhZ2VzIHdpdGhpbiB0aGUgZ3Vlc3Qgc3RhZ2UgYW5kIHNldHRpbmcgdGhlIHBhZ2UgdGFibGUgZW50cmllcywgcmVzcGVjdGl2ZWx5LiBXYWl0IGEgc2Vjb25kLCBpcyBga3ZtX3Jpc2N2X2dzdGFnZV9zZXRfcHRlYCBhY3R1YWxseSAqZGVmaW5lZCogd2l0aGluIHRoaXMgaGVhZGVyPyBPciBpcyBpdCBqdXN0IGRlY2xhcmVkIGhlcmU/IEkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdC4gSXQncyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgYW5kIHdoZXJlIHRoZSBhY3R1YWwgaW1wbGVtZW50YXRpb24gcmVzaWRlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA1NjgsIk91dHB1dFRva2VucyI6NDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMjoyNToyNC42MzMwODYyNTFaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgxMjM1NDQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bV9yaXNjdl9nc3RhZ2Vfc2V0X3B0ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV9nc3RhZ2UuaFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV9nc3RhZ2UuaD01MD1ib29sIGt2bV9yaXNjdl9nc3RhZ2VfZ2V0X2xlYWYoc3RydWN0IGt2bV9nc3RhZ2UgKmdzdGFnZSwgZ3BhX3QgYWRkcixcXG4tLVxcbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX2dzdGFnZS5oLTUyLVxcbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX2dzdGFnZS5oOjUzOmludCBrdm1fcmlzY3ZfZ3N0YWdlX3NldF9wdGUoc3RydWN0IGt2bV9nc3RhZ2UgKmdzdGFnZSxcXG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV9nc3RhZ2UuaC01NC1cXHRcXHRcXHQgICAgIHN0cnVjdCBrdm1fbW11X21lbW9yeV9jYWNoZSAqcGNhY2hlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMjoyNToyNC43MTQzMjYzNFoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NjYyODcwMTc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEtWTSBSSVNDLVYgUGF0Y2gqKlxuXG5Pa2F5LCB5ZXMsIEkndmUgZ290IGl0LiBUaGUgY29yZSBvZiB0aGlzIHBhdGNoIGNlbnRlcnMgb24gYGt2bV9yaXNjdl9nc3RhZ2VfbWFwX3BhZ2VgIGFuZCBga3ZtX3Jpc2N2X2dzdGFnZV9zZXRfcHRlYC4gSXQncyBkZWZpbml0ZWx5IHRpZWQgdG8gdGhlIGBLVk1gIGNvbmZpZ3VyYXRpb24uIExldCBtZSBqdXN0IGNvbmZpcm0gdGhhdCBxdWlja2x5IOKAkyByaWdodCwgbG9va2luZyBhdCBgYXJjaC9yaXNjdi9rdm0vTWFrZWZpbGVgLCBpdCdzIGp1c3QgYG9iai0kKENPTkZJR19LVk0pICs9IGt2bS5vYCwgc28gYEtWTWAgaXMgaW5kZWVkIHRoZSBzb2xlIGNvbmZpZyBkZXBlbmRlbmN5LiBHb29kLlxuXG5Ob3csIGZyb20gd2hhdCBJIHVuZGVyc3RhbmQsIHRoaXMgcGF0Y2ggYWRkcmVzc2VzIGEgYnVnIGluIHRoZSBLVk0gUklTQy1WIHBhZ2UgdGFibGUgbWFuYWdlbWVudC4gU3BlY2lmaWNhbGx5LCBpdCBzZWVtcyBhIGxvd2VyLWxldmVsIHBhZ2UgdGFibGUgZW50cnkgaXMgYmVpbmcgb3ZlcndyaXR0ZW4gYnkgYSBsZWFmIG1hcHBpbmcsIGFuZCB0aGlzIGNhbiBvY2N1ciBkdXJpbmcgdGhlIGhhbmRsaW5nIG9mIGEgaHVnZSBwYWdlIG1hcHBlZCBvdmVyIGEgcHJlLWV4aXN0aW5nLCBzbWFsbGVyIHBhZ2UgbWFwcGluZy4gRnVuY3Rpb25hbGx5LCB0aGlzIGlzIGEgbW9kaWZpY2F0aW9uIHRvIHRoZSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IHdpdGhpbiBLVk0gZm9yIFJJU0MtVi5cblxuR2l2ZW4gdGhlIHBvdGVudGlhbCBmb3Igc3VidGxlIG1lbW9yeSBjb3JydXB0aW9uIGlzc3VlcyDigJMgcGFydGljdWxhcmx5IGluIHN1Y2ggYSBjcml0aWNhbCBhcmVhIOKAkyB0aGlzIGlzIGFic29sdXRlbHkgc29tZXRoaW5nIHRoYXQgd2FycmFudHMgdGhvcm91Z2ggZnV6emluZy4gVGhlIHNjZW5hcmlvIG91dGxpbmVkIHN1Z2dlc3RzIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMgYXJlIGludHJvZHVjZWQsIGFuZCBmdXp6aW5nIGlzIHRoZSBiZXN0IHBhdGggdG8gZmluZCB0aGVtLlxuXG5JIHdpbGwgZ2V0IHRoZSByZXN1bHRzIHNldC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEwNzAsIk91dHB1dFRva2VucyI6MTE3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTY5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDEyOjI1OjMwLjM3NzIwMTQ3N1oiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MTU3MDg1OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX3Jpc2N2X2dzdGFnZV9tYXBfcGFnZVwiLFxuICAgIFwia3ZtX3Jpc2N2X2dzdGFnZV9zZXRfcHRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgS1ZNIFJJU0MtViBndWVzdCBzdGFnZS0yIHBhZ2UgdGFibGUgbWFuYWdlbWVudCB0byBwcmV2ZW50IHJlcGxhY2luZyBhbiBleGlzdGluZyBsb3dlci1sZXZlbCBwYWdlIHRhYmxlIHdpdGggYSBsZWFmIG1hcHBpbmcsIGZhbGxpbmcgYmFjayB0byBhIHNtYWxsZXIgcGFnZSBzaXplIGluc3RlYWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIHJlYWNoYWJsZSBjb3JlIEtWTSBmZWF0dXJlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9yaXNjdl9nc3RhZ2VfbWFwX3BhZ2VcIixcbiAgICBcImt2bV9yaXNjdl9nc3RhZ2Vfc2V0X3B0ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIEtWTSBSSVNDLVYgZ3Vlc3Qgc3RhZ2UtMiBwYWdlIHRhYmxlIG1hbmFnZW1lbnQgdG8gcHJldmVudCByZXBsYWNpbmcgYW4gZXhpc3RpbmcgbG93ZXItbGV2ZWwgcGFnZSB0YWJsZSB3aXRoIGEgbGVhZiBtYXBwaW5nLCBmYWxsaW5nIGJhY2sgdG8gYSBzbWFsbGVyIHBhZ2Ugc2l6ZSBpbnN0ZWFkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSByZWFjaGFibGUgY29yZSBLVk0gZmVhdHVyZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTI6MjU6MzAuNTE4Nzc5Mzg1WiIsIlNlcSI6MjUsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5OTMyOTQwMTk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTI6MjU6MzAuNTE5Mzk2OTA1WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjk5MzIzMTc2NzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIEtWTSBndWVzdCBzdGFnZS0yIHBhZ2UgdGFibGUgbWFuYWdlbWVudCBvbiBSSVNDLVYgdG8gcHJldmVudCByZXBsYWNpbmcgYW4gZXhpc3RpbmcgbG93ZXItbGV2ZWwgcGFnZSB0YWJsZSBkaXJlY3Rvcnkgd2l0aCBhIGxlYWYgbWFwcGluZyAoaHVnZSBwYWdlKS4gSXQgZG9lcyB0aGlzIGJ5IHJldHVybmluZyAtRUVYSVNUIGFuZCBmYWxsaW5nIGJhY2sgdG8gbWFwcGluZyBhdCBsZXZlbCAwIChiYXNlIHBhZ2Ugc2l6ZSkuIFRoZXNlIGNoYW5nZXMgYXJlIHB1cmVseSByZWxhdGVkIHRvIHBhZ2UgdGFibGUgbG9naWMsIHBoeXNpY2FsIGFkZHJlc3MgY2FsY3VsYXRpb25zLCBhbmQgUFRFIG1hbmlwdWxhdGlvbi4gVGhlcmUgYXJlIG5vIG5ldyBhbGxvY2F0aW9ucywgbm8gc3RydWN0dXJlcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgYW5kIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgYmVpbmcgdXNlZCBpbiBjb250cm9sIGZsb3cgb3IgbGVha2VkLiBBbnkgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCBoZXJlIChlLmcuLCBpbmNvcnJlY3QgcG9pbnRlcnMgb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcykgd291bGQgYmUgY2F1Z2h0IGJ5IEtBU0FOIG9yIHN0YW5kYXJkIGtlcm5lbCB0ZXN0aW5nLiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA2Yjk5MTMxZDliZjNkNWVjOGI0ZjhiMjg4OTBiNWJiN2VlNWNlZjI5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBBdWcgMTQgMTI6MjQ6MjIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS9nc3RhZ2UuYyBiL2FyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jXG5pbmRleCBlNTAwMmNiOWNiZWYxLi4yM2NiMzVlMzYwNzNiIDEwMDY0NFxuLS0tIGEvYXJjaC9yaXNjdi9rdm0vZ3N0YWdlLmNcbisrKyBiL2FyY2gvcmlzY3Yva3ZtL2dzdGFnZS5jXG5AQCAtMTc0LDYgKzE3NCwxMiBAQCBpbnQga3ZtX3Jpc2N2X2dzdGFnZV9zZXRfcHRlKHN0cnVjdCBrdm1fZ3N0YWdlICpnc3RhZ2UsXG4gXG4gXHRpZiAocHRlX3ZhbCgqcHRlcCkgIT0gcHRlX3ZhbChtYXAtXHUwMDNlcHRlKSkge1xuIFx0XHRib29sIHdhc19pbnZhbGlkID0gIXB0ZV92YWwoKnB0ZXApO1xuK1xuK1x0XHQvKiBBdm9pZCByZXBsYWNpbmcgYW4gZXhpc3RpbmcgbG93ZXItbGV2ZWwgdGFibGUgd2l0aCBhIGxlYWYgbWFwcGluZy4gKi9cbitcdFx0aWYgKCFnc3RhZ2VfcHRlX2xlYWYocHRlcCkgXHUwMDI2XHUwMDI2ICF3YXNfaW52YWxpZCBcdTAwMjZcdTAwMjZcbitcdFx0ICAgIGdzdGFnZV9wdGVfbGVhZihcdTAwMjZtYXAtXHUwMDNlcHRlKSlcbitcdFx0XHRyZXR1cm4gLUVFWElTVDtcbitcbiBcdFx0c2V0X3B0ZShwdGVwLCBtYXAtXHUwMDNlcHRlKTtcbiBcdFx0aWYgKGdzdGFnZV9wdGVfbGVhZihwdGVwKSBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgICEod2FzX2ludmFsaWQgXHUwMDI2XHUwMDI2IHJpc2N2X2hhc19leHRlbnNpb25fdW5saWtlbHkoUklTQ1ZfSVNBX0VYVF9TVlZQVEMpKSlcbkBAIC0yMTEsMTIgKzIxNywxMyBAQCBpbnQga3ZtX3Jpc2N2X2dzdGFnZV9tYXBfcGFnZShzdHJ1Y3Qga3ZtX2dzdGFnZSAqZ3N0YWdlLFxuIFx0XHRcdCAgICAgIHN0cnVjdCBrdm1fZ3N0YWdlX21hcHBpbmcgKm91dF9tYXApXG4ge1xuIFx0Ym9vbCBmb3VuZF9sZWFmO1xuK1x0cGh5c19hZGRyX3QgaHVnZV9wYWdlX29mZnNldDtcbiBcdHUzMiBwdGVwX2xldmVsO1xuIFx0cGdwcm90X3QgcHJvdDtcbiBcdHB0ZV90ICpwdGVwO1xuIFx0aW50IHJldDtcbiBcbi1cdG91dF9tYXAtXHUwMDNlYWRkciA9IGdwYTtcbitcdG91dF9tYXAtXHUwMDNlYWRkciA9IGdwYSBcdTAwMjYgUEFHRV9NQVNLO1xuIFx0b3V0X21hcC1cdTAwM2VsZXZlbCA9IDA7XG4gXG4gXHRyZXQgPSBnc3RhZ2VfcGFnZV9zaXplX3RvX2xldmVsKGdzdGFnZSwgcGFnZV9zaXplLCBcdTAwMjZvdXRfbWFwLVx1MDAzZWxldmVsKTtcbkBAIC0yODcsNyArMjk0LDE4IEBAIGludCBrdm1fcmlzY3ZfZ3N0YWdlX21hcF9wYWdlKHN0cnVjdCBrdm1fZ3N0YWdlICpnc3RhZ2UsXG4gXHRvdXRfbWFwLVx1MDAzZXB0ZSA9IHBmbl9wdGUoUEZOX0RPV04oaHBhKSwgcHJvdCk7XG4gXHRvdXRfbWFwLVx1MDAzZXB0ZSA9IHB0ZV9ta2RpcnR5KG91dF9tYXAtXHUwMDNlcHRlKTtcbiBcbi1cdHJldHVybiBrdm1fcmlzY3ZfZ3N0YWdlX3NldF9wdGUoZ3N0YWdlLCBwY2FjaGUsIG91dF9tYXApO1xuK1x0cmV0ID0ga3ZtX3Jpc2N2X2dzdGFnZV9zZXRfcHRlKGdzdGFnZSwgcGNhY2hlLCBvdXRfbWFwKTtcbitcdGlmIChyZXQgPT0gLUVFWElTVCkge1xuK1x0XHRodWdlX3BhZ2Vfb2Zmc2V0ID0gb3V0X21hcC1cdTAwM2VhZGRyIFx1MDAyNiAocGFnZV9zaXplIC0gMSk7XG4rXHRcdGhwYSArPSBodWdlX3BhZ2Vfb2Zmc2V0O1xuK1x0XHRvdXRfbWFwLVx1MDAzZWxldmVsID0gMDtcbitcdFx0b3V0X21hcC1cdTAwM2VwdGUgPSBwZm5fcHRlKFBGTl9ET1dOKGhwYSksIHByb3QpO1xuK1x0XHRvdXRfbWFwLVx1MDAzZXB0ZSA9IHB0ZV9ta2RpcnR5KG91dF9tYXAtXHUwMDNlcHRlKTtcbitcbitcdFx0cmV0ID0ga3ZtX3Jpc2N2X2dzdGFnZV9zZXRfcHRlKGdzdGFnZSwgcGNhY2hlLCBvdXRfbWFwKTtcbitcdH1cbitcbitcdHJldHVybiByZXQ7XG4gfVxuIFxuIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBtYWtlX2NoaWxkX3B0ZSh1bnNpZ25lZCBsb25nIGh1Z2VfcHRlLCBpbnQgaW5kZXgsXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMjoyNTozMC41MTkzOTc3NjVaIiwiU2VxIjoyNywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTkzMjI3OTkxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipLTVNBTiBBc3Nlc3NtZW50OiBObyBVbmluaXRpYWxpemVkIE1lbW9yeSBJc3N1ZSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gVGhpcyBwYXRjaCBpcyBmb2N1c2VkIG9uIHRoZSBSSVNDLVYgS1ZNIGltcGxlbWVudGF0aW9uLCBzcGVjaWZpY2FsbHkgZGVhbGluZyB3aXRoIHRoZSBndWVzdCBzdGFnZSAyIHBhZ2UgdGFibGVzIChgZ3N0YWdlLmNgKS4gSXQncyBhbGwgaW50ZXJuYWwgcGFnZSB0YWJsZSBtYW5hZ2VtZW50IOKAkyBubyBkaXJlY3QgaW50ZXJhY3Rpb24gd2l0aCB1c2Vyc3BhY2UuXG5cblRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgcmV2b2x2ZXMgYXJvdW5kIGhvdyBga3ZtX3Jpc2N2X2dzdGFnZV9zZXRfcHRlYCBiZWhhdmVzIGFuZCBob3cgYGt2bV9yaXNjdl9nc3RhZ2VfbWFwX3BhZ2VgIGhhbmRsZXMgcG90ZW50aWFsIGVycm9ycy4gVGhlIGtleSBzZWVtcyB0byBiZSB0aGlzOiBUaGUgcGF0Y2ggcHJldmVudHMgb3ZlcndyaXRpbmcgZXhpc3RpbmcgbG93ZXItbGV2ZWwgcGFnZSB0YWJsZSBlbnRyaWVzIHdpdGggbGVhZiBtYXBwaW5ncyBieSBpbnRyb2R1Y2luZyBhIGNoZWNrIGluIGBrdm1fcmlzY3ZfZ3N0YWdlX3NldF9wdGVgLiBJZiBhbiBvdmVyd3JpdGUgaXMgYXR0ZW1wdGVkLCBpdCBub3cgcmV0dXJucyBgLUVFWElTVGAuXG5cbk5vdywgaWYgYC1FRVhJU1RgIGlzIHJldHVybmVkIGJ5IGBrdm1fcmlzY3ZfZ3N0YWdlX3NldF9wdGVgIGR1cmluZyBtYXBwaW5nLCAgYGt2bV9yaXNjdl9nc3RhZ2VfbWFwX3BhZ2VgIG5vdyBoYXMgbG9naWMgdG8gaGFuZGxlIHRoaXMgY29uZGl0aW9uLiBJdCBjYWxjdWxhdGVzIGFuIG9mZnNldCAoYGh1Z2VfcGFnZV9vZmZzZXRgKSBhbmQgdGhlbiBwb3RlbnRpYWxseSByZS1tYXBzIGEgc21hbGxlciBwYWdlLiBUaGUgY3J1Y2lhbCBwYXJ0IGhlcmUgaXMgZXhhbWluaW5nIHRoZSBgb3V0X21hcGAgc3RydWN0LiBUaGlzIGlzIHRoZSBjZW50cmFsIGRhdGEgc3RydWN0dXJlLiBcblxuSSB3YXMgaW5pdGlhbGx5IGNvbmNlcm5lZCBhYm91dCBwb3RlbnRpYWwgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMuIEJ1dCBJIGxvb2tlZCBjbG9zZWx5IGF0IGhvdyBgb3V0X21hcGAgaXMgcG9wdWxhdGVkLiBUaGUgYG91dF9tYXBgIHN0cnVjdCBoYXMgYW4gYGFkZHJgLCBgbGV2ZWxgIGFuZCBgcHRlYCBmaWVsZC4gVGhlIHBhdGNoIG1vZGlmaWVzICpob3cqIHRoZXNlIGZpZWxkcyBhcmUgc2V0LCBidXQgZG9lcyBub3QgaW50cm9kdWNlIGEgc2NlbmFyaW8gd2hlcmUgdGhlc2UgZmllbGRzIGNvdWxkIGNvbnRhaW4gdW5pbml0aWFsaXplZCB2YWx1ZXMuIFNwZWNpZmljYWxseSwgdGhlIGxpbmUgYG91dF9tYXAtXHUwMDNlYWRkciA9IGdwYSBcdTAwMjYgUEFHRV9NQVNLYCBlbnN1cmVzIHRoYXQgYGFkZHJgIGlzIGluaXRpYWxpemVkLCBhbmQgZXZlbiBpbiB0aGUgZmFsbGJhY2sgY2FzZSwgYWxsIHRoZSBmaWVsZHMgb2YgYG91dF9tYXBgIGFyZSBmdWxseSBpbml0aWFsaXplZC4gSXQncyBlc3NlbnRpYWxseSBpbXBsZW1lbnRpbmcgYSBmYWxsYmFjayBtZWNoYW5pc20sIHJlZHVjaW5nIGEgaHVnZSBwYWdlIG1hcHBpbmcgdG8gYSBzbWFsbGVyIGxldmVsIGlmIGEgaHVnZSBwYWdlIGFscmVhZHkgZXhpc3RzLlxuXG5UaGUgYG91dF9tYXAtXHUwMDNlYWRkciBcdTAwMjYgKHBhZ2Vfc2l6ZSAtIDEpYCBwYXJ0IG1hZGUgbWUgcGF1c2UgYnJpZWZseSwgYnV0IHNpbmNlIGBvdXRfbWFwLVx1MDAzZWFkZHJgIGlzIGluaXRpYWxpemVkICh0byBgZ3BhIFx1MDAyNiBQQUdFX01BU0tgKSBhbmQgYHBhZ2Vfc2l6ZWAgaXMgcGFzc2VkIGFzIGFuIGFyZ3VtZW50LCB0aGVyZSdzIG5vIHdheSB0aGlzIG9wZXJhdGlvbiBjYW4gcmVhZCB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhpcyBpcyBzaW1wbHkgYSBiaXR3aXNlIG9wZXJhdGlvbiB3aXRoaW4gYSB3ZWxsLWRlZmluZWQgYW5kIGluaXRpYWxpemVkIGNvbnRleHQuXG5cbkkndmUgY2FyZWZ1bGx5IGNvbnNpZGVyZWQgdGhlIGNvZGUgcGF0aCwgdGhlIGRhdGEgc3RydWN0dXJlcywgYW5kIHRoZSBsb2dpYy4gVGhpcyBpcyBhIG1vZGlmaWNhdGlvbiB0byBwYWdlIHRhYmxlIG1hbmlwdWxhdGlvbiwgbm90IGEgbmV3IG1lbW9yeSBhbGxvY2F0aW9uLiBNeSBjb25jbHVzaW9uIGlzIGZpcm06ICp0aGVyZSBpcyBubyBldmlkZW5jZSBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBpbiB0aGlzIHBhdGNoKi4gSXQgdXBkYXRlcyB0aGUgcGFnZSB0YWJsZSBzdHJ1Y3R1cmUgYWNjb3JkaW5nIHRvIGV4cGVjdGVkIGJlaGF2aW9yLlxuXG5UaGVyZWZvcmUsIE5lZWRzS01TQU4gPSBmYWxzZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU4NCwiT3V0cHV0VG9rZW5zIjoxNzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MDcsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMjoyNTo0MC40NTE2ODE2ODNaIiwiU2VxIjoyOCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTU4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIEtWTSBndWVzdCBzdGFnZS0yIHBhZ2UgdGFibGUgbWFuYWdlbWVudCBvbiBSSVNDLVYgdG8gcHJldmVudCByZXBsYWNpbmcgYW4gZXhpc3RpbmcgbG93ZXItbGV2ZWwgcGFnZSB0YWJsZSBkaXJlY3Rvcnkgd2l0aCBhIGxlYWYgbWFwcGluZyAoaHVnZSBwYWdlKS4gSXQgZG9lcyB0aGlzIGJ5IHJldHVybmluZyAtRUVYSVNUIGFuZCBmYWxsaW5nIGJhY2sgdG8gbWFwcGluZyBhdCBsZXZlbCAwIChiYXNlIHBhZ2Ugc2l6ZSkuIFRoZXNlIGNoYW5nZXMgYXJlIHB1cmVseSByZWxhdGVkIHRvIHBhZ2UgdGFibGUgbG9naWMsIHBoeXNpY2FsIGFkZHJlc3MgY2FsY3VsYXRpb25zLCBhbmQgUFRFIG1hbmlwdWxhdGlvbi4gVGhlcmUgYXJlIG5vIG5ldyBhbGxvY2F0aW9ucywgbm8gc3RydWN0dXJlcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgYW5kIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgYmVpbmcgdXNlZCBpbiBjb250cm9sIGZsb3cgb3IgbGVha2VkLiBBbnkgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCBoZXJlIChlLmcuLCBpbmNvcnJlY3QgcG9pbnRlcnMgb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcykgd291bGQgYmUgY2F1Z2h0IGJ5IEtBU0FOIG9yIHN0YW5kYXJkIGtlcm5lbCB0ZXN0aW5nLiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBLVk0gZ3Vlc3Qgc3RhZ2UtMiBwYWdlIHRhYmxlIG1hbmFnZW1lbnQgb24gUklTQy1WIHRvIHByZXZlbnQgcmVwbGFjaW5nIGFuIGV4aXN0aW5nIGxvd2VyLWxldmVsIHBhZ2UgdGFibGUgZGlyZWN0b3J5IHdpdGggYSBsZWFmIG1hcHBpbmcgKGh1Z2UgcGFnZSkuIEl0IGRvZXMgdGhpcyBieSByZXR1cm5pbmcgLUVFWElTVCBhbmQgZmFsbGluZyBiYWNrIHRvIG1hcHBpbmcgYXQgbGV2ZWwgMCAoYmFzZSBwYWdlIHNpemUpLiBUaGVzZSBjaGFuZ2VzIGFyZSBwdXJlbHkgcmVsYXRlZCB0byBwYWdlIHRhYmxlIGxvZ2ljLCBwaHlzaWNhbCBhZGRyZXNzIGNhbGN1bGF0aW9ucywgYW5kIFBURSBtYW5pcHVsYXRpb24uIFRoZXJlIGFyZSBubyBuZXcgYWxsb2NhdGlvbnMsIG5vIHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIGFuZCBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIHVzZWQgaW4gY29udHJvbCBmbG93IG9yIGxlYWtlZC4gQW55IHBvdGVudGlhbCBidWdzIGludHJvZHVjZWQgaGVyZSAoZS5nLiwgaW5jb3JyZWN0IHBvaW50ZXJzIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMpIHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTiBvciBzdGFuZGFyZCBrZXJuZWwgdGVzdGluZy4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowbmjjx[1] Phase: Succeeded StartedAt: 2026-08-14 12:25:52 +0000 UTC FinishedAt: 2026-08-14 12:25:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbmjjx[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-14 12:25:52 +0000 UTC FinishedAt: 2026-08-14 12:25:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbmjjx[2] Phase: Succeeded StartedAt: 2026-08-14 12:25:52 +0000 UTC FinishedAt: 2026-08-14 13:13:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbmjjx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2697ef8943c9985c14708a6429e21812693857b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_gstage_map_page","kvm_riscv_gstage_set_pte"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2697ef8943c9985c14708a6429e21812693857b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"fc4ea761-9556-4be2-9192-bad0607dc986","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-14 12:25:52 +0000 UTC FinishedAt: 2026-08-14 13:13:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"2697ef8943c9985c14708a6429e21812693857b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_gstage_map_page","kvm_riscv_gstage_set_pte"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"2697ef8943c9985c14708a6429e21812693857b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"fc4ea761-9556-4be2-9192-bad0607dc986","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowbmjjx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2697ef8943c9985c14708a6429e21812693857b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_gstage_map_page","kvm_riscv_gstage_set_pte"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2697ef8943c9985c14708a6429e21812693857b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"fc4ea761-9556-4be2-9192-bad0607dc986","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-14 12:25:52 +0000 UTC FinishedAt: 2026-08-14 12:26:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbmjjx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2697ef8943c9985c14708a6429e21812693857b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_gstage_map_page","kvm_riscv_gstage_set_pte"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2697ef8943c9985c14708a6429e21812693857b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"fc4ea761-9556-4be2-9192-bad0607dc986","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-14 12:25:52 +0000 UTC FinishedAt: 2026-08-14 12:25:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"2697ef8943c9985c14708a6429e21812693857b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowbmjjx/series-workflowbmjjx-convert-artifact-4177604282/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbmjjx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2697ef8943c9985c14708a6429e21812693857b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_gstage_map_page","kvm_riscv_gstage_set_pte"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2697ef8943c9985c14708a6429e21812693857b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"fc4ea761-9556-4be2-9192-bad0607dc986","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-14 12:26:02 +0000 UTC FinishedAt: 2026-08-14 12:45:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbmjjx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2697ef8943c9985c14708a6429e21812693857b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_gstage_map_page","kvm_riscv_gstage_set_pte"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2697ef8943c9985c14708a6429e21812693857b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"fc4ea761-9556-4be2-9192-bad0607dc986","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-14 12:26:02 +0000 UTC FinishedAt: 2026-08-14 12:45:49 +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:*bf2cd418-3363-497d-8b88-c4b00033d58c,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-workflowbmjjx/series-workflowbmjjx-convert-artifact-4177604282/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": "bddf7329-7d6d-466f-9142-931839dfa8fc", "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-workflowbmjjx/series-workflowbmjjx-build-action-859726952/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbmjjx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2697ef8943c9985c14708a6429e21812693857b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_gstage_map_page","kvm_riscv_gstage_set_pte"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2697ef8943c9985c14708a6429e21812693857b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"fc4ea761-9556-4be2-9192-bad0607dc986","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-14 12:26:02 +0000 UTC FinishedAt: 2026-08-14 12:45:39 +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:*bf2cd418-3363-497d-8b88-c4b00033d58c,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-workflowbmjjx/series-workflowbmjjx-convert-artifact-4177604282/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": "bddf7329-7d6d-466f-9142-931839dfa8fc", "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-workflowbmjjx/series-workflowbmjjx-build-action-859726952/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbmjjx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2697ef8943c9985c14708a6429e21812693857b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_gstage_map_page","kvm_riscv_gstage_set_pte"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2697ef8943c9985c14708a6429e21812693857b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"fc4ea761-9556-4be2-9192-bad0607dc986","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-14 12:45:49 +0000 UTC FinishedAt: 2026-08-14 12:45:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbmjjx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2697ef8943c9985c14708a6429e21812693857b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_gstage_map_page","kvm_riscv_gstage_set_pte"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2697ef8943c9985c14708a6429e21812693857b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"fc4ea761-9556-4be2-9192-bad0607dc986","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-14 12:45:49 +0000 UTC FinishedAt: 2026-08-14 12:45:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbmjjx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2697ef8943c9985c14708a6429e21812693857b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_gstage_map_page","kvm_riscv_gstage_set_pte"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2697ef8943c9985c14708a6429e21812693857b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"fc4ea761-9556-4be2-9192-bad0607dc986","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-14 12:45:49 +0000 UTC FinishedAt: 2026-08-14 12:45:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbmjjx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2697ef8943c9985c14708a6429e21812693857b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_gstage_map_page","kvm_riscv_gstage_set_pte"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2697ef8943c9985c14708a6429e21812693857b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"fc4ea761-9556-4be2-9192-bad0607dc986","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-14 12:45:49 +0000 UTC FinishedAt: 2026-08-14 12:45:54 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"2697ef8943c9985c14708a6429e21812693857b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"fc4ea761-9556-4be2-9192-bad0607dc986","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowbmjjx/series-workflowbmjjx-convert-artifact-2200293909/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbmjjx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2697ef8943c9985c14708a6429e21812693857b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_gstage_map_page","kvm_riscv_gstage_set_pte"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2697ef8943c9985c14708a6429e21812693857b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"fc4ea761-9556-4be2-9192-bad0607dc986","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-14 12:45:59 +0000 UTC FinishedAt: 2026-08-14 12:47:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbmjjx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2697ef8943c9985c14708a6429e21812693857b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_gstage_map_page","kvm_riscv_gstage_set_pte"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2697ef8943c9985c14708a6429e21812693857b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"fc4ea761-9556-4be2-9192-bad0607dc986","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-14 12:45:59 +0000 UTC FinishedAt: 2026-08-14 12:47:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*bddf7329-7d6d-466f-9142-931839dfa8fc,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-workflowbmjjx/series-workflowbmjjx-build-action-859726952/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-workflowbmjjx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2697ef8943c9985c14708a6429e21812693857b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_gstage_map_page","kvm_riscv_gstage_set_pte"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2697ef8943c9985c14708a6429e21812693857b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"fc4ea761-9556-4be2-9192-bad0607dc986","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-14 12:47:53 +0000 UTC FinishedAt: 2026-08-14 12:47:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbmjjx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2697ef8943c9985c14708a6429e21812693857b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_gstage_map_page","kvm_riscv_gstage_set_pte"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2697ef8943c9985c14708a6429e21812693857b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"fc4ea761-9556-4be2-9192-bad0607dc986","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-14 12:47:53 +0000 UTC FinishedAt: 2026-08-14 12:47:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbmjjx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2697ef8943c9985c14708a6429e21812693857b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_gstage_map_page","kvm_riscv_gstage_set_pte"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2697ef8943c9985c14708a6429e21812693857b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"fc4ea761-9556-4be2-9192-bad0607dc986","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-14 12:47:53 +0000 UTC FinishedAt: 2026-08-14 13:08:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbmjjx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2697ef8943c9985c14708a6429e21812693857b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_gstage_map_page","kvm_riscv_gstage_set_pte"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2697ef8943c9985c14708a6429e21812693857b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"fc4ea761-9556-4be2-9192-bad0607dc986","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-14 12:47:53 +0000 UTC FinishedAt: 2026-08-14 13:08:56 +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:*bf2cd418-3363-497d-8b88-c4b00033d58c,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-workflowbmjjx/series-workflowbmjjx-convert-artifact-2200293909/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": "b20f438c-6098-4416-b3c9-77e16bb7bb39", "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-workflowbmjjx/series-workflowbmjjx-build-action-2314500257/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbmjjx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2697ef8943c9985c14708a6429e21812693857b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_gstage_map_page","kvm_riscv_gstage_set_pte"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2697ef8943c9985c14708a6429e21812693857b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"fc4ea761-9556-4be2-9192-bad0607dc986","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-14 12:47:53 +0000 UTC FinishedAt: 2026-08-14 13:08:49 +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:*bf2cd418-3363-497d-8b88-c4b00033d58c,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-workflowbmjjx/series-workflowbmjjx-convert-artifact-2200293909/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": "b20f438c-6098-4416-b3c9-77e16bb7bb39", "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-workflowbmjjx/series-workflowbmjjx-build-action-2314500257/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbmjjx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2697ef8943c9985c14708a6429e21812693857b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_gstage_map_page","kvm_riscv_gstage_set_pte"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2697ef8943c9985c14708a6429e21812693857b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"fc4ea761-9556-4be2-9192-bad0607dc986","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-14 13:08:56 +0000 UTC FinishedAt: 2026-08-14 13:08:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbmjjx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2697ef8943c9985c14708a6429e21812693857b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_gstage_map_page","kvm_riscv_gstage_set_pte"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2697ef8943c9985c14708a6429e21812693857b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"fc4ea761-9556-4be2-9192-bad0607dc986","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-14 13:08:56 +0000 UTC FinishedAt: 2026-08-14 13:08:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbmjjx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2697ef8943c9985c14708a6429e21812693857b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_gstage_map_page","kvm_riscv_gstage_set_pte"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2697ef8943c9985c14708a6429e21812693857b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"fc4ea761-9556-4be2-9192-bad0607dc986","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-14 13:08:56 +0000 UTC FinishedAt: 2026-08-14 13:10:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbmjjx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2697ef8943c9985c14708a6429e21812693857b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_gstage_map_page","kvm_riscv_gstage_set_pte"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2697ef8943c9985c14708a6429e21812693857b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"fc4ea761-9556-4be2-9192-bad0607dc986","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-14 13:08:56 +0000 UTC FinishedAt: 2026-08-14 13:10: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:*b20f438c-6098-4416-b3c9-77e16bb7bb39,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-workflowbmjjx/series-workflowbmjjx-build-action-2314500257/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-workflowbmjjx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2697ef8943c9985c14708a6429e21812693857b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_gstage_map_page","kvm_riscv_gstage_set_pte"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2697ef8943c9985c14708a6429e21812693857b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"fc4ea761-9556-4be2-9192-bad0607dc986","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-14 13:10:49 +0000 UTC FinishedAt: 2026-08-14 13:13:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbmjjx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2697ef8943c9985c14708a6429e21812693857b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_gstage_map_page","kvm_riscv_gstage_set_pte"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2697ef8943c9985c14708a6429e21812693857b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"fc4ea761-9556-4be2-9192-bad0607dc986","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-14 13:10:49 +0000 UTC FinishedAt: 2026-08-14 13:13:55 +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":["kvm_riscv_gstage_map_page","kvm_riscv_gstage_set_pte"],"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:*bddf7329-7d6d-466f-9142-931839dfa8fc,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*b20f438c-6098-4416-b3c9-77e16bb7bb39,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-workflowbmjjx/series-workflowbmjjx-build-action-859726952/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-workflowbmjjx/series-workflowbmjjx-build-action-2314500257/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowbmjjx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2697ef8943c9985c14708a6429e21812693857b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_gstage_map_page","kvm_riscv_gstage_set_pte"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2697ef8943c9985c14708a6429e21812693857b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"fc4ea761-9556-4be2-9192-bad0607dc986","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-14 13:10:49 +0000 UTC FinishedAt: 2026-08-14 13:10:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbmjjx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2697ef8943c9985c14708a6429e21812693857b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_gstage_map_page","kvm_riscv_gstage_set_pte"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2697ef8943c9985c14708a6429e21812693857b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"fc4ea761-9556-4be2-9192-bad0607dc986","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-14 13:10:49 +0000 UTC FinishedAt: 2026-08-14 13:10:53 +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":["kvm_riscv_gstage_map_page","kvm_riscv_gstage_set_pte"],"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-workflowbmjjx/series-workflowbmjjx-convert-artifact-1075443706/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbmjjx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2697ef8943c9985c14708a6429e21812693857b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_gstage_map_page","kvm_riscv_gstage_set_pte"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2697ef8943c9985c14708a6429e21812693857b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"fc4ea761-9556-4be2-9192-bad0607dc986","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-14 13:10:49 +0000 UTC FinishedAt: 2026-08-14 13:10:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbmjjx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2697ef8943c9985c14708a6429e21812693857b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_gstage_map_page","kvm_riscv_gstage_set_pte"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2697ef8943c9985c14708a6429e21812693857b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"fc4ea761-9556-4be2-9192-bad0607dc986","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-14 13:10:49 +0000 UTC FinishedAt: 2026-08-14 13:10:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbmjjx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2697ef8943c9985c14708a6429e21812693857b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_gstage_map_page","kvm_riscv_gstage_set_pte"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2697ef8943c9985c14708a6429e21812693857b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"fc4ea761-9556-4be2-9192-bad0607dc986","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-14 13:10:49 +0000 UTC FinishedAt: 2026-08-14 13:10:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbmjjx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2697ef8943c9985c14708a6429e21812693857b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_gstage_map_page","kvm_riscv_gstage_set_pte"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2697ef8943c9985c14708a6429e21812693857b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"fc4ea761-9556-4be2-9192-bad0607dc986","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-14 13:10:59 +0000 UTC FinishedAt: 2026-08-14 13:13:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbmjjx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2697ef8943c9985c14708a6429e21812693857b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_gstage_map_page","kvm_riscv_gstage_set_pte"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2697ef8943c9985c14708a6429e21812693857b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"fc4ea761-9556-4be2-9192-bad0607dc986","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-14 13:10:59 +0000 UTC FinishedAt: 2026-08-14 13:13:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*bddf7329-7d6d-466f-9142-931839dfa8fc,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*b20f438c-6098-4416-b3c9-77e16bb7bb39,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-workflowbmjjx/series-workflowbmjjx-build-action-859726952/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-workflowbmjjx/series-workflowbmjjx-build-action-2314500257/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-workflowbmjjx/series-workflowbmjjx-convert-artifact-1075443706/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,}