Name: series-workflow66wjv Phase: Succeeded StartedAt: 2026-08-14 14:24:30 +0000 UTC FinishedAt: 2026-08-14 15:57:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow66wjv[0] Phase: Succeeded StartedAt: 2026-08-14 14:24:30 +0000 UTC FinishedAt: 2026-08-14 15:01:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflow66wjv[0].run-triage Phase: Succeeded StartedAt: 2026-08-14 14:24:30 +0000 UTC FinishedAt: 2026-08-14 15:01:52 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "ca800a9302764c445de0da0e84d2252400a770ee", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MWIFIEX", "MWIFIEX_USB" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "ca800a9302764c445de0da0e84d2252400a770ee", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MWIFIEX", "MWIFIEX_USB" ], "series_id": "2288997c-eba8-4f6d-8fc6-ef07c459bf4e" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mwifiex_ret_802_11_scan", "mwifiex_handle_event_ext_scan_report", "mwifiex_check_network_compatibility" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE0OjUyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+OW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01XSUZJRVgmIzM0OywKICAgICYjMzQ7TVdJRklFWF9VU0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttd2lmaWV4X3JldF84MDJfMTFfc2NhbiYjMzQ7LAogICAgJiMzNDttd2lmaWV4X2hhbmRsZV9ldmVudF9leHRfc2Nhbl9yZXBvcnQmIzM0OywKICAgICYjMzQ7bXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHkmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBvdXQtb2YtYm91bmRzIHJlYWQgdnVsbmVyYWJpbGl0eSBpbiBgbXdpZmlleF9zZWFyY2hfb3VpX2luX2llYCBieSBpbnRyb2R1Y2luZyBib3VuZHMgY2hlY2tpbmcgb24gdGhlIE9VSSBjb3VudCAoYGllYm9keS1cdTAwM2VwdGtfY250WzBdYCkgYWdhaW5zdCB0aGUgYXZhaWxhYmxlIEluZm9ybWF0aW9uIEVsZW1lbnQgKElFKSBsZW5ndGggKGBpZV9sZW5gKS4gV2l0aG91dCB0aGlzIGNoZWNrLCBhIG1hbGljaW91c2x5IGNyYWZ0ZWQgYmVhY29uIG9yIHByb2JlIHJlc3BvbnNlIHdpdGggYSBsYXJnZSBPVUkgY291bnQgY291bGQgY2F1c2UgdGhlIGRyaXZlciB0byByZWFkIHBhc3QgdGhlIGVuZCBvZiB0aGUgYWxsb2NhdGVkIElFIGJ1ZmZlciBkdXJpbmcgdGhlIGBtZW1jbXBgIGxvb3AuXG5cblRoaXMgaXMgYSBjbGFzc2ljIG91dC1vZi1ib3VuZHMgcmVhZCBidWcsIHdoaWNoIGlzIHJlbGlhYmx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGVyZSBpcyBubyB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSwgc3RhY2svaGVhcCBpbmZvLWxlYWsgdG8gdXNlciBzcGFjZSwgb3IgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMgaW52b2x2ZWQgaW4gdGhpcyB2dWxuZXJhYmlsaXR5LiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LCBhcyBzdGFuZGFyZCBLQVNBTiB3aWxsIGNhdGNoIGFueSByZWdyZXNzaW9ucyBvciBzaW1pbGFyIG91dC1vZi1ib3VuZHMgYWNjZXNzIGlzc3VlcyBpbiB0aGlzIGNvZGUuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIHRvIGBtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWVgIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcyB3aGVuIHBhcnNpbmcgUlNOL1dQQSBJbmZvcm1hdGlvbiBFbGVtZW50cyAoSUVzKSBmcm9tIHNjYW4gcmVzdWx0cy4gVGhlIHZ1bG5lcmFiaWxpdHkgb2NjdXJzIHdoZW4gdGhlIGRyaXZlciBwcm9jZXNzZXMgc2NhbiByZXN1bHRzIHJlY2VpdmVkIGZyb20gdGhlIGZpcm13YXJlLiBTaW5jZSB0aGUgYG13aWZpZXhgIGRyaXZlciBzdXBwb3J0cyBhIFVTQiBpbnRlcmZhY2UgKGBNV0lGSUVYX1VTQmApLCB0aGUgZmlybXdhcmUgcmVzcG9uc2VzIGNhbiBiZSBmdXp6ZWQgdmlhIFVTQiBlbXVsYXRpb24gKGUuZy4sIGR1bW15LWhjZCkuIFRoZSBmaXggbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUgbG9naWMgaW4gdGhlIGRyaXZlciwgc28gaXQgaXMgd29ydGggZnV6emluZy4gRm9jdXMgc3ltYm9scyBhcmUgYG13aWZpZXhfcmV0XzgwMl8xMV9zY2FuYCwgYG13aWZpZXhfaGFuZGxlX2V2ZW50X2V4dF9zY2FuX3JlcG9ydGAsIGFuZCBgbXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHlgLCB3aGljaCBhcmUgdGhlIGVudHJ5IHBvaW50cyBmb3IgcHJvY2Vzc2luZyBzY2FuIHJlc3VsdHMgYW5kIGNoZWNraW5nIG5ldHdvcmsgY29tcGF0aWJpbGl0eS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxNDo1MjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGYxMzgyZTYwMzdlNzUyZjYzZDFhNzkzZjcwMGMyOGUwZGNmMDFlNDdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEF1ZyAxNCAxNDo1MjozMyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uY1xuaW5kZXggOTdjMGVjM2I4MjJlNy4uNDczZjQ2MjNlYTE5OSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmNcbkBAIC0xMDQsMTIgJiM0MzsxMDQsMjQgQEAgaGFzX3ZlbmRvcl9oZHIoc3RydWN0IGllZWVfdHlwZXNfdmVuZG9yX3NwZWNpZmljICppZSwgdTgga2V5KVxuICAqIGEgZ2l2ZW4gb3VpIGluIFBUSy5cbiAgKi9cbiBzdGF0aWMgdThcbi1td2lmaWV4X3NlYXJjaF9vdWlfaW5faWUoc3RydWN0IGllX2JvZHkgKmllYm9keSwgdTggKm91aSlcbiYjNDM7bXdpZmlleF9zZWFyY2hfb3VpX2luX2llKHN0cnVjdCBpZV9ib2R5ICppZWJvZHksIHU4ICpvdWksIGludCBpZV9sZW4pXG4ge1xuJiM0MztcdGNvbnN0IHNpemVfdCBwdGtfYm9keV9vZmZzZXQgPSBvZmZzZXRvZihzdHJ1Y3QgaWVfYm9keSwgcHRrX2JvZHkpO1xuIFx0dTggY291bnQ7XG4gXG4mIzQzO1x0LyogaWVfbGVuIGlzIHRoZSBudW1iZXIgb2YgYnl0ZXMgYXZhaWxhYmxlIGF0IGllYm9keS4gS2VlcCBpdCBzaWduZWRcbiYjNDM7XHQgKiBhbmQgcmVqZWN0IGEgbmVnYXRpdmUgKHVuZGVyZmxvd2VkKSBsZW5ndGggYmVmb3JlIHRoZSB1bnNpZ25lZFxuJiM0MztcdCAqIGNvbXBhcmlzb25zIGJlbG93LCBzbyBhIHNtYWxsIG9yIHplcm8gSUUgbGVuZ3RoIGNhbm5vdCB3cmFwLlxuJiM0MztcdCAqL1xuJiM0MztcdGlmIChpZV9sZW4gXHUwMDNjIDAgfHwgKHNpemVfdClpZV9sZW4gXHUwMDNjIHB0a19ib2R5X29mZnNldClcbiYjNDM7XHRcdHJldHVybiBNV0lGSUVYX09VSV9OT1RfUFJFU0VOVDtcbiYjNDM7XG4gXHRjb3VudCA9IGllYm9keS1cdTAwM2VwdGtfY250WzBdO1xuIFxuJiM0MztcdC8qIFJlamVjdCBhbiBPVUkgY291bnQgd2hvc2UgbGlzdCB3b3VsZCBydW4gcGFzdCB0aGUgZWxlbWVudC4gKi9cbiYjNDM7XHRpZiAocHRrX2JvZHlfb2Zmc2V0ICYjNDM7IGNvdW50ICogc2l6ZW9mKGllYm9keS1cdTAwM2VwdGtfYm9keSkgXHUwMDNlIChzaXplX3QpaWVfbGVuKVxuJiM0MztcdFx0cmV0dXJuIE1XSUZJRVhfT1VJX05PVF9QUkVTRU5UO1xuJiM0MztcbiBcdC8qIFRoZXJlIGNvdWxkIGJlIG11bHRpcGxlIE9VSXMgZm9yIFBUSyBoZW5jZVxuIFx0ICAgMSkgVGFrZSB0aGUgbGVuZ3RoLlxuIFx0ICAgMikgQ2hlY2sgYWxsIHRoZSBPVUlzIGZvciBBRVMuXG5AQCAtMTQzLDExICYjNDM7MTU1LDE0IEBAIG13aWZpZXhfaXNfcnNuX291aV9wcmVzZW50KHN0cnVjdCBtd2lmaWV4X2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjLCB1MzIgY2lwaGVyKVxuIFx0dTggcmV0ID0gTVdJRklFWF9PVUlfTk9UX1BSRVNFTlQ7XG4gXG4gXHRpZiAoaGFzX2llZWVfaGRyKGJzc19kZXNjLVx1MDAzZWJjbl9yc25faWUsIFdMQU5fRUlEX1JTTikpIHtcbiYjNDM7XHRcdGludCBpZV9sZW4gPSAoaW50KWJzc19kZXNjLVx1MDAzZWJjbl9yc25faWUtXHUwMDNlaWVlZV9oZHIubGVuIC1cbiYjNDM7XHRcdFx0UlNOX0dUS19PVUlfT0ZGU0VUO1xuJiM0MztcbiBcdFx0aWVib2R5ID0gKHN0cnVjdCBpZV9ib2R5ICopXG4gXHRcdFx0ICgoKHU4ICopIGJzc19kZXNjLVx1MDAzZWJjbl9yc25faWUtXHUwMDNlZGF0YSkgJiM0MztcbiBcdFx0XHQgIFJTTl9HVEtfT1VJX09GRlNFVCk7XG4gXHRcdG91aSA9IFx1MDAyNm13aWZpZXhfcnNuX291aVtjaXBoZXJdWzBdO1xuLVx0XHRyZXQgPSBtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWUoaWVib2R5LCBvdWkpO1xuJiM0MztcdFx0cmV0ID0gbXdpZmlleF9zZWFyY2hfb3VpX2luX2llKGllYm9keSwgb3VpLCBpZV9sZW4pO1xuIFx0XHRpZiAocmV0KVxuIFx0XHRcdHJldHVybiByZXQ7XG4gXHR9XG5AQCAtMTY5LDEwICYjNDM7MTg0LDE0IEBAIG13aWZpZXhfaXNfd3BhX291aV9wcmVzZW50KHN0cnVjdCBtd2lmaWV4X2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjLCB1MzIgY2lwaGVyKVxuIFx0dTggcmV0ID0gTVdJRklFWF9PVUlfTk9UX1BSRVNFTlQ7XG4gXG4gXHRpZiAoaGFzX3ZlbmRvcl9oZHIoYnNzX2Rlc2MtXHUwMDNlYmNuX3dwYV9pZSwgV0xBTl9FSURfVkVORE9SX1NQRUNJRklDKSkge1xuJiM0MztcdFx0aW50IGllX2xlbiA9IChpbnQpYnNzX2Rlc2MtXHUwMDNlYmNuX3dwYV9pZS1cdTAwM2V2ZW5kX2hkci5sZW4gLVxuJiM0MztcdFx0XHQoaW50KXNpemVvZihic3NfZGVzYy1cdTAwM2ViY25fd3BhX2llLVx1MDAzZXZlbmRfaGRyLm91aSkgLVxuJiM0MztcdFx0XHRXUEFfR1RLX09VSV9PRkZTRVQ7XG4mIzQzO1xuIFx0XHRpZWJvZHkgPSAoc3RydWN0IGllX2JvZHkgKikoKHU4ICopYnNzX2Rlc2MtXHUwMDNlYmNuX3dwYV9pZS1cdTAwM2VkYXRhICYjNDM7XG4gXHRcdFx0XHRcdCAgICBXUEFfR1RLX09VSV9PRkZTRVQpO1xuIFx0XHRvdWkgPSBcdTAwMjZtd2lmaWV4X3dwYV9vdWlbY2lwaGVyXVswXTtcbi1cdFx0cmV0ID0gbXdpZmlleF9zZWFyY2hfb3VpX2luX2llKGllYm9keSwgb3VpKTtcbiYjNDM7XHRcdHJldCA9IG13aWZpZXhfc2VhcmNoX291aV9pbl9pZShpZWJvZHksIG91aSwgaWVfbGVuKTtcbiBcdFx0aWYgKHJldClcbiBcdFx0XHRyZXR1cm4gcmV0O1xuIFx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE0OjUyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjhtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNV0lGSUVYJiMzNDssCiAgICAmIzM0O01XSUZJRVhfVVNCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bXdpZmlleF9yZXRfODAyXzExX3NjYW4mIzM0OywKICAgICYjMzQ7bXdpZmlleF9oYW5kbGVfZXZlbnRfZXh0X3NjYW5fcmVwb3J0JiMzNDssCiAgICAmIzM0O213aWZpZXhfY2hlY2tfbmV0d29ya19jb21wYXRpYmlsaXR5JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIHRvIGBtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWVgIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcyB3aGVuIHBhcnNpbmcgUlNOL1dQQSBJbmZvcm1hdGlvbiBFbGVtZW50cyAoSUVzKSBmcm9tIHNjYW4gcmVzdWx0cy4gVGhlIHZ1bG5lcmFiaWxpdHkgb2NjdXJzIHdoZW4gdGhlIGRyaXZlciBwcm9jZXNzZXMgc2NhbiByZXN1bHRzIHJlY2VpdmVkIGZyb20gdGhlIGZpcm13YXJlLiBTaW5jZSB0aGUgYG13aWZpZXhgIGRyaXZlciBzdXBwb3J0cyBhIFVTQiBpbnRlcmZhY2UgKGBNV0lGSUVYX1VTQmApLCB0aGUgZmlybXdhcmUgcmVzcG9uc2VzIGNhbiBiZSBmdXp6ZWQgdmlhIFVTQiBlbXVsYXRpb24gKGUuZy4sIGR1bW15LWhjZCkuIFRoZSBmaXggbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUgbG9naWMgaW4gdGhlIGRyaXZlciwgc28gaXQgaXMgd29ydGggZnV6emluZy4gRm9jdXMgc3ltYm9scyBhcmUgYG13aWZpZXhfcmV0XzgwMl8xMV9zY2FuYCwgYG13aWZpZXhfaGFuZGxlX2V2ZW50X2V4dF9zY2FuX3JlcG9ydGAsIGFuZCBgbXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHlgLCB3aGljaCBhcmUgdGhlIGVudHJ5IHBvaW50cyBmb3IgcHJvY2Vzc2luZyBzY2FuIHJlc3VsdHMgYW5kIGNoZWNraW5nIG5ldHdvcmsgY29tcGF0aWJpbGl0eS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGYxMzgyZTYwMzdlNzUyZjYzZDFhNzkzZjcwMGMyOGUwZGNmMDFlNDcKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEF1ZyAxNCAxNDo1MjozMyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jCmluZGV4IDk3YzBlYzNiODIyZTcuLjQ3M2Y0NjIzZWExOTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYwpAQCAtMTA0LDEyICYjNDM7MTA0LDI0IEBAIGhhc192ZW5kb3JfaGRyKHN0cnVjdCBpZWVlX3R5cGVzX3ZlbmRvcl9zcGVjaWZpYyAqaWUsIHU4IGtleSkKICAqIGEgZ2l2ZW4gb3VpIGluIFBUSy4KICAqLwogc3RhdGljIHU4Ci1td2lmaWV4X3NlYXJjaF9vdWlfaW5faWUoc3RydWN0IGllX2JvZHkgKmllYm9keSwgdTggKm91aSkKJiM0Mzttd2lmaWV4X3NlYXJjaF9vdWlfaW5faWUoc3RydWN0IGllX2JvZHkgKmllYm9keSwgdTggKm91aSwgaW50IGllX2xlbikKIHsKJiM0MzsJY29uc3Qgc2l6ZV90IHB0a19ib2R5X29mZnNldCA9IG9mZnNldG9mKHN0cnVjdCBpZV9ib2R5LCBwdGtfYm9keSk7CiAJdTggY291bnQ7CiAKJiM0MzsJLyogaWVfbGVuIGlzIHRoZSBudW1iZXIgb2YgYnl0ZXMgYXZhaWxhYmxlIGF0IGllYm9keS4gS2VlcCBpdCBzaWduZWQKJiM0MzsJICogYW5kIHJlamVjdCBhIG5lZ2F0aXZlICh1bmRlcmZsb3dlZCkgbGVuZ3RoIGJlZm9yZSB0aGUgdW5zaWduZWQKJiM0MzsJICogY29tcGFyaXNvbnMgYmVsb3csIHNvIGEgc21hbGwgb3IgemVybyBJRSBsZW5ndGggY2Fubm90IHdyYXAuCiYjNDM7CSAqLwomIzQzOwlpZiAoaWVfbGVuICZsdDsgMCB8fCAoc2l6ZV90KWllX2xlbiAmbHQ7IHB0a19ib2R5X29mZnNldCkKJiM0MzsJCXJldHVybiBNV0lGSUVYX09VSV9OT1RfUFJFU0VOVDsKJiM0MzsKIAljb3VudCA9IGllYm9keS0mZ3Q7cHRrX2NudFswXTsKIAomIzQzOwkvKiBSZWplY3QgYW4gT1VJIGNvdW50IHdob3NlIGxpc3Qgd291bGQgcnVuIHBhc3QgdGhlIGVsZW1lbnQuICovCiYjNDM7CWlmIChwdGtfYm9keV9vZmZzZXQgJiM0MzsgY291bnQgKiBzaXplb2YoaWVib2R5LSZndDtwdGtfYm9keSkgJmd0OyAoc2l6ZV90KWllX2xlbikKJiM0MzsJCXJldHVybiBNV0lGSUVYX09VSV9OT1RfUFJFU0VOVDsKJiM0MzsKIAkvKiBUaGVyZSBjb3VsZCBiZSBtdWx0aXBsZSBPVUlzIGZvciBQVEsgaGVuY2UKIAkgICAxKSBUYWtlIHRoZSBsZW5ndGguCiAJICAgMikgQ2hlY2sgYWxsIHRoZSBPVUlzIGZvciBBRVMuCkBAIC0xNDMsMTEgJiM0MzsxNTUsMTQgQEAgbXdpZmlleF9pc19yc25fb3VpX3ByZXNlbnQoc3RydWN0IG13aWZpZXhfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MsIHUzMiBjaXBoZXIpCiAJdTggcmV0ID0gTVdJRklFWF9PVUlfTk9UX1BSRVNFTlQ7CiAKIAlpZiAoaGFzX2llZWVfaGRyKGJzc19kZXNjLSZndDtiY25fcnNuX2llLCBXTEFOX0VJRF9SU04pKSB7CiYjNDM7CQlpbnQgaWVfbGVuID0gKGludClic3NfZGVzYy0mZ3Q7YmNuX3Jzbl9pZS0mZ3Q7aWVlZV9oZHIubGVuIC0KJiM0MzsJCQlSU05fR1RLX09VSV9PRkZTRVQ7CiYjNDM7CiAJCWllYm9keSA9IChzdHJ1Y3QgaWVfYm9keSAqKQogCQkJICgoKHU4ICopIGJzc19kZXNjLSZndDtiY25fcnNuX2llLSZndDtkYXRhKSAmIzQzOwogCQkJICBSU05fR1RLX09VSV9PRkZTRVQpOwogCQlvdWkgPSAmYW1wO213aWZpZXhfcnNuX291aVtjaXBoZXJdWzBdOwotCQlyZXQgPSBtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWUoaWVib2R5LCBvdWkpOwomIzQzOwkJcmV0ID0gbXdpZmlleF9zZWFyY2hfb3VpX2luX2llKGllYm9keSwgb3VpLCBpZV9sZW4pOwogCQlpZiAocmV0KQogCQkJcmV0dXJuIHJldDsKIAl9CkBAIC0xNjksMTAgJiM0MzsxODQsMTQgQEAgbXdpZmlleF9pc193cGFfb3VpX3ByZXNlbnQoc3RydWN0IG13aWZpZXhfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MsIHUzMiBjaXBoZXIpCiAJdTggcmV0ID0gTVdJRklFWF9PVUlfTk9UX1BSRVNFTlQ7CiAKIAlpZiAoaGFzX3ZlbmRvcl9oZHIoYnNzX2Rlc2MtJmd0O2Jjbl93cGFfaWUsIFdMQU5fRUlEX1ZFTkRPUl9TUEVDSUZJQykpIHsKJiM0MzsJCWludCBpZV9sZW4gPSAoaW50KWJzc19kZXNjLSZndDtiY25fd3BhX2llLSZndDt2ZW5kX2hkci5sZW4gLQomIzQzOwkJCShpbnQpc2l6ZW9mKGJzc19kZXNjLSZndDtiY25fd3BhX2llLSZndDt2ZW5kX2hkci5vdWkpIC0KJiM0MzsJCQlXUEFfR1RLX09VSV9PRkZTRVQ7CiYjNDM7CiAJCWllYm9keSA9IChzdHJ1Y3QgaWVfYm9keSAqKSgodTggKilic3NfZGVzYy0mZ3Q7YmNuX3dwYV9pZS0mZ3Q7ZGF0YSAmIzQzOwogCQkJCQkgICAgV1BBX0dUS19PVUlfT0ZGU0VUKTsKIAkJb3VpID0gJmFtcDttd2lmaWV4X3dwYV9vdWlbY2lwaGVyXVswXTsKLQkJcmV0ID0gbXdpZmlleF9zZWFyY2hfb3VpX2luX2llKGllYm9keSwgb3VpKTsKJiM0MzsJCXJldCA9IG13aWZpZXhfc2VhcmNoX291aV9pbl9pZShpZWJvZHksIG91aSwgaWVfbGVuKTsKIAkJaWYgKHJldCkKIAkJCXJldHVybiByZXQ7CiAJfQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxNDo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODU5CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMjA2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFdpcmVsZXNzIERyaXZlciBQYXRjaCBmb3IgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCB0d2Vha3MgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmNgLiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIGFkZHJlc3NpbmcgYSBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyByZWFkIHZ1bG5lcmFiaWxpdHkgaW4gYG13aWZpZXhfc2VhcmNoX291aV9pbl9pZWAgYnkgYWRkaW5nIHNvbWUgYm91bmRzIGNoZWNraW5nLiBTbWFydCBtb3ZlLCBnb29kIHRvIHNlZSBwcm9hY3RpdmUgc2VjdXJpdHkgbWVhc3VyZXMuIFRoZXkmIzM5O3ZlIGFsc28gdXBkYXRlZCBgbXdpZmlleF9pc19yc25fb3VpX3ByZXNlbnRgIGFuZCBgbXdpZmlleF9pc193cGFfb3VpX3ByZXNlbnRgIHRvIHBhc3MgdGhlIGBpZV9sZW5gIGFsb25nIHRvIHRoYXQgZnVuY3Rpb24sIHdoaWNoIG1ha2VzIHBlcmZlY3Qgc2Vuc2UgaW4gdGhpcyBjb250ZXh0LgoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCAmIzM0O2NhbiB0aGlzIGRyaXZlciBiZSBmdXp6ZWQgZWZmZWN0aXZlbHk/JiMzNDsgSXQmIzM5O3MgYSBNYXJ2ZWxsIFdpRmktRXggZHJpdmVyLCB3aGljaCBtZWFucyBpdCYjMzk7cyBhIHdpcmVsZXNzIGRyaXZlciwgYW5kIHdpcmVsZXNzIGRyaXZlcnMgYXJlIGFsd2F5cyBpbnRlcmVzdGluZyBmcm9tIGEgZnV6emluZyBwZXJzcGVjdGl2ZS4gSG93ZXZlciwgdGhleSYjMzk7cmUgb2Z0ZW4gdmVyeSBoYXJkd2FyZS1zcGVjaWZpYywgc28gdGhhdCYjMzk7cyB0aGUgaW1tZWRpYXRlIHF1ZXN0aW9uLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSBpbnRlcmZhY2UuIElzIHRoaXMgYSBVU0IsIFNESU8sIG9yIFBDSWUgZHJpdmVyPwoKSSYjMzk7bGwgY2hlY2sgdGhlIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgYWdhaW46IGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvYC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBzb21lIGNsdWVzLiBUaGVuLCBJIGRlZmluaXRlbHkgbmVlZCB0byBkaWcgaW50byB0aGUgS2NvbmZpZyB0byB1bmRlcnN0YW5kIHRoZSBoYXJkd2FyZSBkZXBlbmRlbmNpZXMgYW5kIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gRnJvbSB0aGVyZSwgSSBjYW4gYmV0dGVyIGFzc2VzcyBpdHMgZnV6emFiaWxpdHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTQ6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1XSUZJRVgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6Mjpjb25maWcgTVdJRklFWFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgV2lGaS1FeCBEcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0xMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjEyOmNvbmZpZyBNV0lGSUVYX1NESU9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTEzLVx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBXaUZpLUV4IERyaXZlciBmb3IgU0Q4Nzg2L1NEODc4Ny9TRDg3OTcvU0Q4ODg3L1NEODg5Ny9TRDg5NzcvU0Q4OTc4L1NEODk4Ny9TRDg5OTdcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0yNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjI1OmNvbmZpZyBNV0lGSUVYX1BDSUVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTI2LVx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBXaUZpLUV4IERyaXZlciBmb3IgUENJRSA4NzY2Lzg4OTcvODk5N1wmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTM2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6Mzc6Y29uZmlnIE1XSUZJRVhfVVNCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0zOC1cdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFVTQjg3NjYvODc5Ny84OTk3XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTQ6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzgyOQoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDE0OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIHRoZSBNV0lGSUVYX1VTQiBEcml2ZXIqKgoKT2theSwgc28gSSBzZWUgdGhpcyBgTVdJRklFWF9VU0JgIHRoaW5nLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtVU0IgZHJpdmVycy4uLiB0aG9zZSBhcmUgZnV6emFibGUhJiMzNDsgV2UgY2FuIGhpdCB0aGVtIHdpdGggZHVtbXktaGNkIG9yLCBldmVuIGJldHRlciwgc29tZXRoaW5nIGxpa2Ugc3l6a2FsbGVyJiMzOTtzIFVTQiBmdXp6aW5nIGNhcGFiaWxpdGllcy4gV2FpdCwgZG9lc24mIzM5O3Qgc3l6a2FsbGVyIGFjdHVhbGx5ICpoYXZlKiBVU0IgZnV6emluZyBzdXBwb3J0PyBMZXQmIzM5O3MgdmVyaWZ5IHRoYXQuIFllcCwgY29uZmlybWVkLiBPa2F5LCB0aGlzIGBNV0lGSUVYX1VTQmAgbG9va3MgbGlrZSBhIHByaW1lIHRhcmdldC4KCk5vdywgbGV0JiMzOTtzIGRpZyBpbnRvIHRoaXMgc3BlY2lmaWMgZHJpdmVyLiBJJiMzOTtsbCBzdGFydCB3aXRoIGBtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWVgIGFuZCBzZWUgd2hlcmUgdGhhdCYjMzk7cyBjYWxsZWQuIEhtbSwgaXQmIzM5O3MgY2FsbGVkIGZyb20gYG13aWZpZXhfaXNfcnNuX291aV9wcmVzZW50YCBhbmQgYG13aWZpZXhfaXNfd3BhX291aV9wcmVzZW50YC4gT2ssIG5vdyBsZXQmIzM5O3MgdHJhY2Ugd2hlcmUgKnRob3NlKiBhcmUgY2FsbGVkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY2FsbCBmbG93IHRvIGtub3cgdGhlIGF0dGFjayBzdXJmYWNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE0OjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O213aWZpZXhfaXNfcnNuX291aV9wcmVzZW50JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jPTE1MD1zdGF0aWMgdThcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM6MTUxOm13aWZpZXhfaXNfcnNuX291aV9wcmVzZW50KHN0cnVjdCBtd2lmaWV4X2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjLCB1MzIgY2lwaGVyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0xNTIte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM9MzQ3PW13aWZpZXhfaXNfbmV0d29ya19jb21wYXRpYmxlKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy00MTEtXHRcdFx0ICAgICBic3NfZGVzYy1cdTAwM2ViY25faHRfY2FwKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM6NDEyOlx0XHRcdCAgICAhbXdpZmlleF9pc19yc25fb3VpX3ByZXNlbnQoYnNzX2Rlc2MsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTQxMy1cdFx0XHRcdFx0XHRcdENJUEhFUl9TVUlURV9DQ01QKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy00MTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jOjQxNTpcdFx0XHRcdGlmIChtd2lmaWV4X2lzX3Jzbl9vdWlfcHJlc2VudFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy00MTYtXHRcdFx0XHRcdFx0KGJzc19kZXNjLCBDSVBIRVJfU1VJVEVfVEtJUCkpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxNDo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NjAwCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogNDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgc29tZW9uZSBkZWVwbHkgZmFtaWxpYXIgd2l0aCB0aGlzIGtpbmQgb2Ygc3lzdGVtOgoKKipBbmFseXppbmcgYG13aWZpZXhfaXNfbmV0d29ya19jb21wYXRpYmxlYCoqCgpSaWdodCwgc28gdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbSBgbXdpZmlleF9pc19uZXR3b3JrX2NvbXBhdGlibGVgLi4uIGhtbSwgbGlrZWx5IGR1cmluZyB0aGUgc2NhbiByZXN1bHRzIHByb2Nlc3Npbmcgc3RhZ2UuIFRoYXQgbWFrZXMgc2Vuc2U7IGl0JiMzOTtzIHRoZSBuYXR1cmFsIHBsYWNlIHRvIGNoZWNrIGNvbXBhdGliaWxpdHkuIE5vdywgdGhlIHJlYWwgcXVlc3Rpb24gaXMsIHdoYXQgZXhhY3RseSBpcyBpdCAqZG9pbmcqPyBJIG5lZWQgdG8gZGl2ZSBpbnRvIHRoZSBkZWZpbml0aW9uIG9mIGBtd2lmaWV4X2lzX25ldHdvcmtfY29tcGF0aWJsZWAgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSBhbmQgaG93IGl0IGhhbmRsZXMgdGhlc2Ugc2NhbiByZXN1bHRzLiBMZXQmIzM5O3MgZ2V0IHRvIGl0LiBUaW1lIHRvIGRpZyBpbiBhbmQgc2VlIHRoZSBleGFjdCBjaGVja3MgYW5kIGNyaXRlcmlhIHRoaXMgZnVuY3Rpb24gZW1wbG95cy4gVGhpcyBpcyB3aGVyZSB0aGUgY29yZSBsb2dpYyB3aWxsIGJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE0OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O213aWZpZXhfaXNfbmV0d29ya19jb21wYXRpYmxlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jPTM0Nj1zdGF0aWMgczMyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jOjM0Nzptd2lmaWV4X2lzX25ldHdvcmtfY29tcGF0aWJsZShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0zNDgtXHRcdFx0ICAgICAgc3RydWN0IG13aWZpZXhfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MsIHUzMiBtb2RlKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM9MTYxOT1pbnQgbXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHkoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTE2MzEtXHRcdGNhc2UgTkw4MDIxMV9JRlRZUEVfQURIT0M6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jOjE2MzI6XHRcdFx0cmV0ID0gbXdpZmlleF9pc19uZXR3b3JrX2NvbXBhdGlibGUocHJpdiwgYnNzX2Rlc2MsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTE2MzMtXHRcdFx0XHRcdFx0XHQgICAgcHJpdi1cdTAwM2Vic3NfbW9kZSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTQ6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTEyNQoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKlRyYWNpbmcgdGhlIE5ldHdvcmsgQ29tcGF0aWJpbGl0eSBDaGVjayoqCgpBbHJpZ2h0LCBzbyB0aGUgZnVuY3Rpb24gaW4gcXVlc3Rpb24gaXMgYG13aWZpZXhfY2hlY2tfbmV0d29ya19jb21wYXRpYmlsaXR5YC4gTXkgaW1tZWRpYXRlIHJlZmxleCBpcyB0byB1bmRlcnN0YW5kIGl0cyBwbGFjZSB3aXRoaW4gdGhlIGJyb2FkZXIgZnJhbWV3b3JrLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgY2FsbGluZyBjb250ZXh0LiBMZXQmIzM5O3MgdHJhY2UgYmFjayBmcm9tIGBtd2lmaWV4X2NoZWNrX25ldHdvcmtfY29tcGF0aWJpbGl0eWAgYW5kIHF1aWNrbHkgaWRlbnRpZnkgaXRzIGltbWVkaWF0ZSB1cHN0cmVhbSBjYWxsZXJzLiBUaGlzIGlzIGVzc2VudGlhbCB0byB1bmRlcnN0YW5kIHRoZSB0cmlnZ2VyIGNvbmRpdGlvbnMgYW5kIHRoZSBvdmVyYWxsIGRlc2lnbiBpbnRlbnQgYmVoaW5kIHRoaXMgcGFydGljdWxhciBjb21wYXRpYmlsaXR5IGNoZWNrLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBjbHVlcyBpbiB0aGUgc3Vycm91bmRpbmcgY29kZSB0aGF0IHdpbGwgZXhwbGFpbiB3aHkgdGhlIGNoZWNrIGlzIG9jY3VycmluZywgYW5kIGhvcGVmdWxseSByZXZlYWwgc29tZSBpbnNpZ2h0cyBpbnRvIHRoZSBzcGVjaWZpYyBjcml0ZXJpYSBiZWluZyBldmFsdWF0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE0OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O213aWZpZXhfY2hlY2tfbmV0d29ya19jb21wYXRpYmlsaXR5JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oPTE1NDE9aW50IG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTU0Mi1cdFx0XHRcdCAgICBzdHJ1Y3QgbXdpZmlleF9ic3NkZXNjcmlwdG9yICpic3NfZW50cnkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaDoxNTQzOmludCBtd2lmaWV4X2NoZWNrX25ldHdvcmtfY29tcGF0aWJpbGl0eShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xNTQ0LVx0XHRcdFx0XHRzdHJ1Y3QgbXdpZmlleF9ic3NkZXNjcmlwdG9yICpic3NfZGVzYyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYz0xNTk0PWludCBtd2lmaWV4X2NtZF84MDJfMTFfc2NhbihzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqY21kLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMTYxOC0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM6MTYxOTppbnQgbXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHkoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMTYyMC1cdFx0XHRcdFx0c3RydWN0IG13aWZpZXhfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYz0xNzA2PXN0YXRpYyBpbnQgbXdpZmlleF91cGRhdGVfY3Vycl9ic3NfcGFyYW1zKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0xNzIwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYzoxNzIxOlx0cmV0ID0gbXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHkocHJpdiwgYnNzX2Rlc2MpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0xNzIyLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmM9MzMyPWludCBtd2lmaWV4X2Jzc19zdGFydChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCBzdHJ1Y3QgY2ZnODAyMTFfYnNzICpic3MsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jLTM3NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYzozNzU6XHRcdHJldCA9IG13aWZpZXhfY2hlY2tfbmV0d29ya19jb21wYXRpYmlsaXR5KHByaXYsIGJzc19kZXNjKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYy0zNzYtXHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jLTQyMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYzo0MjM6XHRcdHJldCA9IG13aWZpZXhfY2hlY2tfbmV0d29ya19jb21wYXRpYmlsaXR5KHByaXYsIGJzc19kZXNjKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYy00MjQtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE0OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYwNTkKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAyNDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIGBtd2lmaWV4YCBEcml2ZXImIzM5O3MgUG90ZW50aWFsIEF0dGFjayBTdXJmYWNlKioKCk9rYXksIHNvIEkmIzM5O20gdHJhY2tpbmcgZG93biBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzIGluIHRoaXMgYG13aWZpZXhgIGRyaXZlci4gSSBzZWUgdGhlc2UgdHdvIGtleSBmdW5jdGlvbnMsIGBtd2lmaWV4X2Jzc19zdGFydGAgYW5kIGBtd2lmaWV4X3VwZGF0ZV9jdXJyX2Jzc19wYXJhbXNgLCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoZXkmIzM5O3JlIGxpa2VseSB0b3VjaGVkIGR1cmluZyBuZXR3b3JrIGNvbm5lY3Rpb24gb3Igc2NhbiByZXN1bHQgcHJvY2Vzc2luZy4gUHJldHR5IHN0YW5kYXJkIGZvciBhIGRyaXZlciwgZXNwZWNpYWxseSBvbmUgdGhhdCBpbnRlcmZhY2VzIHdpdGggYG1hYzgwMjExYCBhbmQgYGNmZzgwMjExYC4gQnV0IGhvbGQgb24uLi4gdGhpcyBgbXdpZmlleGAgZHJpdmVyIGlzIGEgKmZ1bGxtYWMqIGRyaXZlciwgc28gdGhhdCBtZWFucyB0aGUgZmlybXdhcmUgaXMgZmVlZGluZyBpdCBzY2FuIHJlc3VsdHMuIFRoaXMgY2hhbmdlcyB0aGluZ3MuCgpUaGUgZmlybXdhcmUtdG8taG9zdCBpbnRlcmZhY2UgdmlhIFVTQiBpcyBub3cgdGhlIGp1aWN5IHRhcmdldC4gSWYgSSBjYW4gZnV6eiB0aGF0IGludGVyZmFjZSBhbmQgc2ltdWxhdGUgc2NhbiByZXN1bHRzIGZyb20gdGhlIGZpcm13YXJlLCB0aGF0JiMzOTtzIHdoZXJlIEkgY2FuIGxpa2VseSB0cmlnZ2VyIHNvbWV0aGluZyBpbnRlcmVzdGluZy4gSSBuZWVkIHRvIGZvY3VzIG9uIGhvdyB0aGUgZHJpdmVyIHByb2Nlc3NlcyB0aGVzZSByZXN1bHRzLiBJ4oCZbGwgc3RhcnQgYnkgZGlnZ2luZyBpbnRvIGBtd2lmaWV4X3VwZGF0ZV9jdXJyX2Jzc19wYXJhbXNgIGFuZCBgbXdpZmlleF9ic3Nfc3RhcnRgIGRpcmVjdGx5LgoKQWhhLCBgbXdpZmlleF9ic3Nfc3RhcnRgIGlzIGFjdHVhbGx5IGNhbGxlZCBmcm9tIGBtd2lmaWV4X2NmZzgwMjExX2Nvbm5lY3RgIG9yIG90aGVyIGBjZmc4MDIxMWAgY2FsbGJhY2tzLCB3aGljaCBtZWFucyBpdCByZWNlaXZlcyBhIGBjZmc4MDIxMV9ic3NgIHN0cnVjdCBhcyBpbnB1dC4gSW50ZXJlc3RpbmcuLi4gYnV0IHRoYXTigJlzIG5vdCBxdWl0ZSBpdC4gSSBhbHNvIHNlZSB0aGF0IGBtd2lmaWV4X2NoZWNrX25ldHdvcmtfY29tcGF0aWJpbGl0eWAgZnVuY3Rpb24gdGFrZXMgYSBgbXdpZmlleF9ic3NkZXNjcmlwdG9yYCBzdHJ1Y3QuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGV4YWN0bHkgaG93IHRoaXMgYG13aWZpZXhfYnNzZGVzY3JpcHRvcmAgaXMgcG9wdWxhdGVkLiBUaGF0JiMzOTtzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBob3cgdGhlIGZpcm13YXJlIGRhdGEgZmxvd3MgaW50byB0aGUgZHJpdmVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxNDo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttd2lmaWV4X3VwZGF0ZV9jdXJyX2Jzc19wYXJhbXMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM9MTY2Mj1zdGF0aWMgaW50IG13aWZpZXhfc2F2ZV9oaWRkZW5fc3NpZF9jaGFubmVscyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMTcwNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM6MTcwNjpzdGF0aWMgaW50IG13aWZpZXhfdXBkYXRlX2N1cnJfYnNzX3BhcmFtcyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0xNzA3LVx0XHRcdFx0XHQgIHN0cnVjdCBjZmc4MDIxMV9ic3MgKmJzcylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jPTE3NDY9bXdpZmlleF9wYXJzZV9zaW5nbGVfcmVzcG9uc2VfYnVmKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsIHU4ICoqYnNzX2luZm8sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0xODkzLVx0XHRcdFx0XHQgICAgRVRIX0FMRU4pKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYzoxODk0Olx0XHRcdFx0XHRtd2lmaWV4X3VwZGF0ZV9jdXJyX2Jzc19wYXJhbXMocHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMTg5NS1cdFx0XHRcdFx0XHRcdFx0ICAgICAgIGJzcyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE0OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcwMzAKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiA5MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgRmlybXdhcmUgUmVzcG9uc2UgSGFuZGxpbmcqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBtd2lmaWV4X3BhcnNlX3NpbmdsZV9yZXNwb25zZV9idWZgIGhlcmUuIEl0JiMzOTtzIGNsZWFyIHRoaXMgZnVuY3Rpb24gaXMgdGhlIGNlbnRyYWwgcG9pbnQgZm9yIHBhcnNpbmcgdGhlIHJlc3BvbnNlIGJ1ZmZlciBjb21pbmcgZGlyZWN0bHkgZnJvbSB0aGUgZmlybXdhcmUuIEFuZCB0aGUgZmlybXdhcmUsIG9mIGNvdXJzZSwgY2FuIGJlIGZlZCBkYXRhIHRocm91Z2ggYSBVU0IgY29ubmVjdGlvbiwgd2hpY2ggbWFrZXMgdGhpcyBhIHByaW1lIHRhcmdldCBmb3IgZnV6emluZy4gSG1tLCB0aGlzIGlzIHdoZXJlIHRoaW5ncyBnZXQgaW50ZXJlc3RpbmcuIE5vdywgSSBzZWUgdGhhdCBgbXdpZmlleF91cGRhdGVfY3Vycl9ic3NfcGFyYW1zYCBnZXRzIGNhbGxlZCBmcm9tIHdpdGhpbiBgbXdpZmlleF9wYXJzZV9zaW5nbGVfcmVzcG9uc2VfYnVmYC4gVGhhdOKAmXMgd29ydGggaW52ZXN0aWdhdGluZyBmdXJ0aGVyLiBJIHNob3VsZCBwcm9iYWJseSBkaXZlIGludG8gYG13aWZpZXhfcGFyc2Vfc2luZ2xlX3Jlc3BvbnNlX2J1ZmAgaXRzZWxmIGFuZCBzZWUgd2hhdCYjMzk7cyByZWFsbHkgZ29pbmcgb24gaW4gdGhlcmUuIEl0JiMzOTtzIGEga2V5IGZ1bmN0aW9uIHRvIHVuZGVyc3RhbmQgdGhlIHN5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTQ6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXdpZmlleF9wYXJzZV9zaW5nbGVfcmVzcG9uc2VfYnVmJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jPTE3NDU9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYzoxNzQ2Om13aWZpZXhfcGFyc2Vfc2luZ2xlX3Jlc3BvbnNlX2J1ZihzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCB1OCAqKmJzc19pbmZvLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0xNzQ3LVx0XHRcdFx0ICB1MzIgKmJ5dGVzX2xlZnQsIHU2NCBmd190c2YsIHU4ICpyYWRpb190eXBlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM9MjEwNT1pbnQgbXdpZmlleF9yZXRfODAyXzExX3NjYW4oc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTIyMzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jOjIyMzI6XHRcdHJldCA9IG13aWZpZXhfcGFyc2Vfc2luZ2xlX3Jlc3BvbnNlX2J1Zihwcml2LCBcdTAwMjZic3NfaW5mbyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMjIzMy1cdFx0XHRcdFx0XHRcdFx1MDAyNmJ5dGVzX2xlZnQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYz0yNjA2PWludCBtd2lmaWV4X2hhbmRsZV9ldmVudF9leHRfc2Nhbl9yZXBvcnQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTI3MjItXHRcdH1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM6MjcyMzpcdFx0cmV0ID0gbXdpZmlleF9wYXJzZV9zaW5nbGVfcmVzcG9uc2VfYnVmKHByaXYsIFx1MDAyNmJzc19pbmZvLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0yNzI0LVx0XHRcdFx0XHRcdFx0XHUwMDI2Ynl0ZXNfbGVmdCwgZndfdHNmLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxNDo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3Nzc3CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMTc3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgV2ktRmkgRHJpdmVyIFZ1bG5lcmFiaWxpdHkqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiBsb29raW5nIGF0IHRoaXMgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHksIGFuZCBpdCBzZWVtcyBsaWtlIHdlIGhhdmUgYSBwcmV0dHkgY2xlYXIgcGF0aCBoZXJlLiBJIHNlZSB0aGF0IHRoZSBgbXdpZmlleF9yZXRfODAyXzExX3NjYW5gIGFuZCBgbXdpZmlleF9oYW5kbGVfZXZlbnRfZXh0X3NjYW5fcmVwb3J0YCBmdW5jdGlvbnMgYXJlIGNhbGxpbmcgYG13aWZpZXhfcGFyc2Vfc2luZ2xlX3Jlc3BvbnNlX2J1ZmAsIHdoaWNoIGlzIHdoZXJlIHdlJiMzOTtyZSBkaWdnaW5nIGludG8gdGhlIHNjYW4gcmVzdWx0IHByb2Nlc3NpbmcgZnJvbSB0aGUgZmlybXdhcmUuIEVzc2VudGlhbGx5LCB0aGUgZmlybXdhcmUgc2VuZHMgdGhlIHNjYW4gZGF0YSwgdGhlIGRyaXZlciBwYXJzZXMgaXQsIGNoZWNrcyBmb3IgbmV0d29yayBjb21wYXRpYmlsaXR5LCBhbmQgYSBrZXkgcGFydCBvZiB0aGF0IHBhcnNpbmcgaW52b2x2ZXMgZXh0cmFjdGluZyBhbmQgaGFuZGxpbmcgdGhlIEluZm9ybWF0aW9uIEVsZW1lbnRzIChJRXMpLgoKVGhlIGNvcmUgb2YgdGhlIGlzc3VlIGxvb2tzIHRvIGJlIGFuIG91dC1vZi1ib3VuZHMgcmVhZCB3aXRoaW4gdGhlIGBtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWVgIGZ1bmN0aW9uLCBhbmQgaXQmIzM5O3MgaGFwcGVuaW5nIHdoZW4gZGVhbGluZyB3aXRoIHRoZSBSU04vV1BBIElFcy4gVGhhdCYjMzk7cyBhIGNsYXNzaWMgYXJlYSBmb3IgdGhlc2UgdHlwZXMgb2YgYnVncywgYW5kLCBjb25zaWRlcmluZyB0aGUgZmxvdywgaXQgc2VlbXMgKnZlcnkqIHJlYWNoYWJsZSBhbmQgcmlwZSBmb3IgZnV6emluZy4gSSBjYW4gYWJzb2x1dGVseSBzZWUgaG93IHdlIGNvdWxkIHRyaWdnZXIgdGhpcyB3aXRoIHNwZWNpZmljYWxseSBjcmFmdGVkIHNjYW4gcmVzcG9uc2VzLgoKVGhlIGRyaXZlciBpdHNlbGYgaXMgYE1XSUZJRVhgLCBhbmQsIHRvIGZ1enogdGhpcyBlZmZlY3RpdmVseSwgaXQgbG9va3MgbGlrZSB3ZSYjMzk7bGwgbmVlZCB0byB1c2UgdGhlIGBNV0lGSUVYX1VTQmAgY29uZmlndXJhdGlvbi4gVGhhdCYjMzk7cyBteSBpbW1lZGlhdGUgZm9jdXMuIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayBpZiBgTVdJRklFWF9VU0JgIGhhcyBhbnkgZGVwZW5kZW5jaWVzIHRoYXQgd2UgbmVlZCB0byBiZSBhd2FyZSBvZiBvciBzYXRpc2Z5IGZpcnN0LCBidXQgdGhpcyBsb29rcyBsaWtlIGEgZ29vZCBsZWFkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxNDo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTVdJRklFWF9VU0ImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZz0yNT1jb25maWcgTVdJRklFWF9QQ0lFXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzozNzpjb25maWcgTVdJRklFWF9VU0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTM4LVx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBXaUZpLUV4IERyaXZlciBmb3IgVVNCODc2Ni84Nzk3Lzg5OTdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTQ6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODQ1MAoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBgTVdJRklFWF9VU0JgIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYE1XSUZJRVhfVVNCYC4gTGV0JiMzOTtzIGdldCByaWdodCB0byBpdCDigJMgd2hhdCYjMzk7cyB0aGlzIGRyaXZlciBhY3R1YWxseSAqZGVwZW5kZW50KiBvbj8gTXkgaW5pdGlhbCBndXQgY2hlY2sgaXMgdG8gZmlndXJlIG91dCB0aGUgYXJjaGl0ZWN0dXJhbCBsYXllcnMgaW52b2x2ZWQuIFRoaXMgbGlrZWx5IGludm9sdmVzIHVuZGVyc3RhbmRpbmcgdGhlIFVTQiBzdWJzeXN0ZW0gaG9va3MsIGFuZCB0aGUgcGxhdGZvcm0tc3BlY2lmaWMgZGV2aWNlIHRyZWUgb3IgY29uZmlndXJhdGlvbiB0aGF0IGlkZW50aWZpZXMgdGhlIHNwZWNpZmljIFdpLUZpIGFkYXB0ZXIuIEkmIzM5O20gYXNzdW1pbmcgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIGtlcm5lbCBtb2R1bGUgaGVyZSwgc28gSSBuZWVkIHRvIG1lbnRhbGx5IHRyYWNlIHRoZSBjYWxscy4KCkZpcnN0LCBJIG5lZWQgdG8ga25vdyB0aGUgc3BlY2lmaWMgcGxhdGZvcm0uIEFyZSB3ZSBvbiBhIEJyb2FkY29tLWJhc2VkIHN5c3RlbSwgb3Igc29tZXRoaW5nIGVsc2U/IFVuZGVyc3RhbmRpbmcgdGhlIGhhcmR3YXJlIGNvbnRleHQgd2lsbCBndWlkZSB0aGUgbmV4dCBzdGVwLiBBcmUgdGhlcmUgYW55IGtub3duIGlzc3VlcyB3aXRoIHRoZSBVU0Igc3Vic3lzdGVtIG9uIHRoaXMgcGxhdGZvcm0gdGhhdCBjb3VsZCBiZSB0cmlnZ2VyaW5nIHNvbWUgc29ydCBvZiB1bmV4cGVjdGVkIGJlaGF2aW9yPwoKTmV4dCwgSSYjMzk7bGwgcHJvYmFibHkgd2FudCB0byBpZGVudGlmeSBpbmNsdWRlIGZpbGVzLCBzeW1ib2xzLCBhbmQgZnVuY3Rpb25zIHRoYXQgYXJlIGltcG9ydGVkIGZyb20gb3RoZXIgbW9kdWxlcy4gYG9iamR1bXBgIG9yIGBubWAgYXJlIG15IGZyaWVuZHMgaGVyZSB0byBxdWlja2x5IHNjYW4gdGhlIG1vZHVsZeKAmXMgc3ltYm9sIHRhYmxlLiBJJiMzOTttIGludGVyZXN0ZWQgaW4gdGhlIGxvd2VyLWxldmVsIFVTQiBkcml2ZXIgaW50ZXJmYWNlcyAoYHVzYl9yZWdpc3Rlcl9kcml2ZXJgLCBgdXNiX3N1Ym1pdF91cmJgLCBldGMuKSBhbmQgcG9zc2libHkgYW55IGludGVyYWN0aW9uIHdpdGggZmlybXdhcmUgbG9hZGluZyBtZWNoYW5pc21zIChpZiB0aGUgYWRhcHRlciBuZWVkcyBmaXJtd2FyZSkuIFdoYXQgYWJvdXQgcmVzb3VyY2UgYWxsb2NhdGlvbj8gQXJlIHRoZXJlIGFueSBzaGFyZWQgbXV0ZXhlcyBvciBzZW1hcGhvcmVzIHRoYXQgY291bGQgaW5kaWNhdGUgcG90ZW50aWFsIGxvY2tpbmcgY29uZmxpY3RzIHdpdGggb3RoZXIgbW9kdWxlcz8KCkFsc28sIGRvbiYjMzk7dCBmb3JnZXQgdGhlIG9idmlvdXM6IHdoYXTigJlzIHRoZSBkZXZpY2UgSUQgZmlsdGVyaW5nPyBJIG5lZWQgdG8gY2hlY2sgdGhlIG1vZHVsZSBwYXJhbWV0ZXJzLCB0aGUgZGV2aWNlIElEcyB0aGUgZHJpdmVyIGNsYWltcyB0byBzdXBwb3J0LCBhbmQgd2hldGhlciB0aGVyZSBhcmUgYW55IGRlcGVuZGVuY2llcyBvbiB0aG9zZSBzcGVjaWZpYyBQQ0kvVVNCIElEcy4KCkkmIzM5O2xsIGJlIHNwZWNpZmljYWxseSBsb29raW5nIGZvciBhbnkgZGVwZW5kZW5jaWVzIHRoYXQgY291bGQgYmxvY2sgdGhlIG1vZHVsZSBsb2FkLCBvciBjcmVhdGUgY29uZmxpY3RzIGxhdGVyLiBEb2VzIGl0IHJlbHkgb24gYSBzcGVjaWZpYyB2ZXJzaW9uIG9mIHRoZSBVU0Igc3RhY2sgb3Igb3RoZXIga2VybmVsIGNvbXBvbmVudHM/IEFueSB0aGlyZC1wYXJ0eSBsaWJyYXJpZXMgdGhpcyBtb2R1bGUgbWlnaHQgZGVwZW5kIG9uPyBGaW5hbGx5LCBsZXQmIzM5O3MgbG9vayBhdCB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UsIGFueSBjdXN0b20gSVJRIGhhbmRsaW5nIHJvdXRpbmVzIHRoYXQgYXJlIHNldCB1cC4gRnJvbSB0aGVyZSwgSSBjYW4gZGV0ZXJtaW5lIHRoZSBkZXBlbmRlbmNpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE0OjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDMwOlx0XHRoZWxwXG4gIDMxOlx0XHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciB3aXJlbGVzcyBhZGFwdGVycyBiYXNlZCBvbiBNYXJ2ZWxsXG4gIDMyOlx0XHQgIDg3NjYvODg5Ny84OTk3IGNoaXBzZXRzIHdpdGggUENJZSBpbnRlcmZhY2UuXG4gIDMzOlx0XG4gIDM0Olx0XHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXG4gIDM1Olx0XHQgIG13aWZpZXhfcGNpZS5cbiAgMzY6XHRcbiAgMzc6XHRjb25maWcgTVdJRklFWF9VU0JcbiAgMzg6XHRcdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFVTQjg3NjYvODc5Ny84OTk3XCYjMzQ7XG4gIDM5Olx0XHRkZXBlbmRzIG9uIE1XSUZJRVggXHUwMDI2XHUwMDI2IFVTQlxuICA0MDpcdFx0c2VsZWN0IEZXX0xPQURFUlxuICA0MTpcdFx0aGVscFxuICA0MjpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb24gTWFydmVsbFxuICA0MzpcdFx0ICA4Nzk3Lzg5OTcgY2hpcHNldCB3aXRoIFVTQiBpbnRlcmZhY2UuXG4gIDQ0Olx0XG4gIDQ1Olx0XHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXG4gIDQ2Olx0XHQgIG13aWZpZXhfdXNiLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxNDo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MjAwCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgSSBzZWUgaXQ6CgoqKkRlcGVuZGVuY3kgRGVlcCBEaXZlKioKCk9rYXksIHNvIHRoZSByZWFsIGNvcmUgb2YgdGhpcyBpc3N1ZSBoaW5nZXMgb24gdHdvIHNwZWNpZmljIGNvbXBvbmVudHM6IGBNV0lGSUVYYCBhbmQgYFVTQmAuIEV2ZXJ5dGhpbmcgZG93bnN0cmVhbSBpcyBjb250aW5nZW50IG9uIHVuZGVyc3RhbmRpbmcgdGhlaXIgcm9sZXMgYW5kIGhvdyB0aGV5IGludGVyYWN0LiBUaGUgc21hcnQgbW92ZSBoZXJlIGlzIHRvIHN0YXJ0IHdpdGggYSBkZXBlbmRlbmN5IGFuYWx5c2lzIG9mIGBNV0lGSUVYYC4gSSBuZWVkIHRvIHBlZWwgYmFjayB0aGUgbGF5ZXJzIGFuZCB1bmRlcnN0YW5kIGV2ZXJ5dGhpbmcgdGhhdCBgTVdJRklFWGAgcmVsaWVzIG9uLiBUaGF0IHdpbGwgZ2l2ZSBtZSBhIGNsZWFyZXIgcGljdHVyZSBvZiB0aGUgbGFuZHNjYXBlIGFuZCB3aGVyZSBhbnkgcG90ZW50aWFsIGJvdHRsZW5lY2tzIG9yIGNvbmZsaWN0cyBtaWdodCByZXNpZGUuIFdlIGNhbiB0aGVuIGFkZHJlc3MgYFVTQmAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE0OjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgTVdJRklFWFxuICAgMzpcdFx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBXaUZpLUV4IERyaXZlclwmIzM0O1xuICAgNDpcdFx0ZGVwZW5kcyBvbiBDRkc4MDIxMVxuICAgNTpcdFx0aGVscFxuICAgNjpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb24gTWFydmVsbFxuICAgNzpcdFx0ICA4MDIuMTFuL2FjIGNoaXBzZXRzLlxuICAgODpcdFxuICAgOTpcdFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGl0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlIGNhbGxlZFxuICAxMDpcdFx0ICBtd2lmaWV4LlxuICAxMTpcdFxuICAxMjpcdGNvbmZpZyBNV0lGSUVYX1NESU9cbiAgMTM6XHRcdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFNEODc4Ni9TRDg3ODcvU0Q4Nzk3L1NEODg4Ny9TRDg4OTcvU0Q4OTc3L1NEODk3OC9TRDg5ODcvU0Q4OTk3XCYjMzQ7XG4gIDE0Olx0XHRkZXBlbmRzIG9uIE1XSUZJRVggXHUwMDI2XHUwMDI2IE1NQ1xuICAxNTpcdFx0c2VsZWN0IEZXX0xPQURFUlxuICAxNjpcdFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXG4gIDE3Olx0XHRoZWxwXG4gIDE4Olx0XHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciB3aXJlbGVzcyBhZGFwdGVycyBiYXNlZCBvbiBNYXJ2ZWxsXG4gIDE5Olx0XHQgIDg3ODYvODc4Ny84Nzk3Lzg4ODcvODg5Ny84OTc3Lzg5NzgvODk4Ny84OTk3IGNoaXBzZXRzIHdpdGhcbiAgMjA6XHRcdCAgU0RJTyBpbnRlcmZhY2UuIFNEODk3OCBpcyBhbHNvIGtub3duIGFzIE5YUCBJVzQxNi5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTQ6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTc2NAoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDQ2MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipEZXBlbmRlbmN5IEFuYWx5c2lzIGFuZCBGdW5jdGlvbiBJZGVudGlmaWNhdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGcm9tIGEgZGVwZW5kZW5jeSBzdGFuZHBvaW50LCBpdCBsb29rcyBsaWtlIGBNV0lGSUVYYCBpcyBidWlsdCB1cG9uIGBDRkc4MDIxMWAsIGFuZCBgTVdJRklFWF9VU0JgIGZ1cnRoZXIgZGVwZW5kcyBvbiBib3RoIGBNV0lGSUVYYCBhbmQgdGhlIGBVU0JgIHN1YnN5c3RlbS4gU28sIGF0IGEgbWluaW11bSwgd2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgYE1XSUZJRVhgLCBgTVdJRklFWF9VU0JgLCBgQ0ZHODAyMTFgLCBhbmQgYFVTQmAuIEhvbGQgb24uLi4gSSBuZWVkIHRvIGRvdWJsZS1jaGVjayBzb21ldGhpbmcuIFJpZ2h0LCBgTUFDODAyMTFgIHJlbGllcyBvbiBgQ0ZHODAyMTFgLCBub3QgdGhlIG90aGVyIHdheSBhcm91bmQuIFRoaXMgY29uZmlybXMgdGhhdCBgQ0ZHODAyMTFgIGlzIG91ciBmb3VuZGF0aW9uYWwgZWxlbWVudCBoZXJlLiBOb3csIGxldCYjMzk7cyBtYWtlIHN1cmUgd2UgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueSBvdGhlciBrZXkgZGVwZW5kZW5jaWVzLiBBaCwgYENGRzgwMjExYCBvcHRpb25hbGx5IGRlcGVuZHMgb24gYFJGS0lMTGAgYW5kIGFsc28gYFdMQU5gIHdoaWNoIGlzIGxpa2VseSBpbmhlcmVudC4gQnV0IGZvciB0aGlzIGRpc2N1c3Npb24sIHRoZSBwcmltYXJ5IG9uZXMgd2UgYXJlIGRpc2N1c3NpbmcgYXJlIGBNV0lGSUVYYCwgYE1XSUZJRVhfVVNCYCwgYENGRzgwMjExYCwgYW5kIGBVU0JgLgoKTm93LCBsZXQmIzM5O3Mgc3dpdGNoIGdlYXJzIGFuZCBwaW5wb2ludCB0aGUgY3JpdGljYWwgZnVuY3Rpb25zIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcuIEkgc2VlIHRoZSBwYXRjaCBtb2RpZmllcyBgbXdpZmlleF9zZWFyY2hfb3VpX2luX2llYC4gVGhhdCYjMzk7cyBhIHN0YXRpYyBmdW5jdGlvbi4gSXQmIzM5O3MgY2FsbGVkIGJ5IGBtd2lmaWV4X2lzX3Jzbl9vdWlfcHJlc2VudGAgYW5kIGBtd2lmaWV4X2lzX3dwYV9vdWlfcHJlc2VudGAuIEkmIzM5O2xsIGNvbmZpcm0uIFllcywgdGhleSYjMzk7cmUgYm90aCBhbHNvIHN0YXRpYy4gT2ssIG5leHQgZnVuY3Rpb24gaXMgYG13aWZpZXhfaXNfbmV0d29ya19jb21wYXRpYmxlYCwgc3RhdGljLiBUaGVuIGBtd2lmaWV4X2NoZWNrX25ldHdvcmtfY29tcGF0aWJpbGl0eWAgaXMgbm9uLXN0YXRpYy4gYG13aWZpZXhfcGFyc2Vfc2luZ2xlX3Jlc3BvbnNlX2J1ZmAgaXMgc3RhdGljLiBOZXh0LCBgbXdpZmlleF9yZXRfODAyXzExX3NjYW5gIGlzIG5vbi1zdGF0aWMuIEZpbmFsbHksIGBtd2lmaWV4X2hhbmRsZV9ldmVudF9leHRfc2Nhbl9yZXBvcnRgIGlzIG5vbi1zdGF0aWMgYW5kIGBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llYCBpcyBub24tc3RhdGljLiBHb3QgaXQuIFRoYXQgc2hvdWxkIGRvIGl0IQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxNTowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttd2lmaWV4X2NoZWNrX25ldHdvcmtfY29tcGF0aWJpbGl0eSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaD0xNTQxPWludCBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTE1NDItXHRcdFx0XHQgICAgc3RydWN0IG13aWZpZXhfYnNzZGVzY3JpcHRvciAqYnNzX2VudHJ5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg6MTU0MzppbnQgbXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHkoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTU0NC1cdFx0XHRcdFx0c3RydWN0IG13aWZpZXhfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM9MTU5ND1pbnQgbXdpZmlleF9jbWRfODAyXzExX3NjYW4oc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKmNtZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTE2MTgtICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jOjE2MTk6aW50IG13aWZpZXhfY2hlY2tfbmV0d29ya19jb21wYXRpYmlsaXR5KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTE2MjAtXHRcdFx0XHRcdHN0cnVjdCBtd2lmaWV4X2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM9MTcwNj1zdGF0aWMgaW50IG13aWZpZXhfdXBkYXRlX2N1cnJfYnNzX3BhcmFtcyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMTcyMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM6MTcyMTpcdHJldCA9IG13aWZpZXhfY2hlY2tfbmV0d29ya19jb21wYXRpYmlsaXR5KHByaXYsIGJzc19kZXNjKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMTcyMi1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jPTMzMj1pbnQgbXdpZmlleF9ic3Nfc3RhcnQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgc3RydWN0IGNmZzgwMjExX2JzcyAqYnNzLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYy0zNzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmM6Mzc1Olx0XHRyZXQgPSBtd2lmaWV4X2NoZWNrX25ldHdvcmtfY29tcGF0aWJpbGl0eShwcml2LCBic3NfZGVzYyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmMtMzc2LVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYy00MjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmM6NDIzOlx0XHRyZXQgPSBtd2lmaWV4X2NoZWNrX25ldHdvcmtfY29tcGF0aWJpbGl0eShwcml2LCBic3NfZGVzYyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmMtNDI0LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxNTowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTQ0OAoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipJbml0aWFsIEFzc2Vzc21lbnQgb2YgRnVuY3Rpb24gQ2FsbHMqKgoKQWxyaWdodCwgbGV0JiMzOTtzIHNlZS4uLiBgbXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHlgIGZlZWxzIGxpa2UgYSBnb29kLCBzb2xpZCBhbmNob3IgcG9pbnQgdG8gc3RhcnQgd2l0aC4gSXQgbGlrZWx5IGhhbmRsZXMgc29tZSBmb3VuZGF0aW9uYWwgdmFsaWRhdGlvbiBvZiBuZXR3b3JrIHBhcmFtZXRlcnMuIEkgY2FuIHNlZSBob3cgZm9jdXNpbmcgb24gaXRzIGludGVybmFsIHdvcmtpbmdzLCB0aGUgY29uZGl0aW9uYWwgY2hlY2tzIGl0IHBlcmZvcm1zLCBjb3VsZCBiZSBmcnVpdGZ1bCBpbiBkaWFnbm9zaW5nIGlzc3Vlcy4KCk5vdywgd2hhdCBhYm91dCBgbXdpZmlleF9yZXRfODAyXzExX3NjYW5gPyBUaGF0IG9uZSYjMzk7cyBnb3QgbWUgaW50cmlndWVkIHRvby4gSXQmIzM5O3Mgb2J2aW91c2x5IHRpZWQgdG8gdGhlIHNjYW5uaW5nIHByb2Nlc3MgaXRzZWxmLiBUaGlzIGNvdWxkIGJlIHdoZXJlIGNvbXBhdGliaWxpdHkgcHJvYmxlbXMgYWN0dWFsbHkgbWFuaWZlc3QsIG9yIHdoZXJlIHRoZSB2YWxpZGF0aW9uIGZhaWx1cmVzIGdldCBzdXJmYWNlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgaXQgbGVhbnMgb24gdGhlIGZ1bmN0aW9uIGNhbGwgbWVudGlvbmVkIGVhcmxpZXIuIERvZXMgaXQgKnVzZSogdGhlIG90aGVyIGZ1bmN0aW9uLCBvciBpcyBpdCBtb3JlIGxpa2UgYSBjb21wbGVtZW50YXJ5IGZ1bmN0aW9uPwoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxNTowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttd2lmaWV4X3JldF84MDJfMTFfc2NhbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaD0xMTU3PXZvaWQgbXdpZmlleF9xdWV1ZV9zY2FuX2NtZChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xMTU4LVx0XHRcdCAgICBzdHJ1Y3QgY21kX2N0cmxfbm9kZSAqY21kX25vZGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaDoxMTU5OmludCBtd2lmaWV4X3JldF84MDJfMTFfc2NhbihzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xMTYwLVx0XHRcdCAgICBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqcmVzcCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaD0xMjM5PWludCBtd2lmaWV4X2NtZF84MDJfMTFfc2Nhbl9leHQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTEyNDEtXHRcdFx0XHR2b2lkICpkYXRhX2J1Zik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oOjEyNDI6aW50IG13aWZpZXhfcmV0XzgwMl8xMV9zY2FuX2V4dChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xMjQzLVx0XHRcdFx0c3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3ApO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM9MTEzMD1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYzoxMTMxOm13aWZpZXhfcmV0XzgwMl8xMV9zY2FuX2dldF90bHZfcHRycyhzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0xMTMyLVx0XHRcdFx0ICAgICBzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19kYXRhICp0bHYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYz0yMDU4PXZvaWQgbXdpZmlleF9jYW5jZWxfc2NhbihzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMjEwNC0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM6MjEwNTppbnQgbXdpZmlleF9yZXRfODAyXzExX3NjYW4oc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMjEwNi1cdFx0XHQgICAgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3ApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0yMTc0LVx0ICAgVExWcyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYzoyMTc1Olx0bXdpZmlleF9yZXRfODAyXzExX3NjYW5fZ2V0X3Rsdl9wdHJzKGFkYXB0ZXIsIHRsdl9kYXRhLCB0bHZfYnVmX3NpemUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTIxNzYtXHRcdFx0XHRcdCAgICAgVExWX1RZUEVfVFNGVElNRVNUQU1QLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMjE4MS1cdCAgIFRMVnMgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM6MjE4MjpcdG13aWZpZXhfcmV0XzgwMl8xMV9zY2FuX2dldF90bHZfcHRycyhhZGFwdGVyLCB0bHZfZGF0YSwgdGx2X2J1Zl9zaXplLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0yMTgzLVx0XHRcdFx0XHQgICAgIFRMVl9UWVBFX0NIQU5ORUxCQU5ETElTVCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jPTI0OTI9bXdpZmlleF91cGRhdGVfY2hhbl9zdGF0aXN0aWNzKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0yNTM0LS8qIFRoaXMgZnVuY3Rpb24gaGFuZGxlcyB0aGUgY29tbWFuZCByZXNwb25zZSBvZiBleHRlbmRlZCBzY2FuICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jOjI1MzU6aW50IG13aWZpZXhfcmV0XzgwMl8xMV9zY2FuX2V4dChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0yNTM2LVx0XHRcdFx0c3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3ApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWRyZXNwLmM9MTIxMj1pbnQgbXdpZmlleF9wcm9jZXNzX3N0YV9jbWRyZXNwKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsIHUxNiBjbWRyZXNwX25vLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jLTEyNDMtXHRjYXNlIEhvc3RDbWRfQ01EXzgwMl8xMV9TQ0FOOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWRyZXNwLmM6MTI0NDpcdFx0cmV0ID0gbXdpZmlleF9yZXRfODAyXzExX3NjYW4ocHJpdiwgcmVzcCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZHJlc3AuYy0xMjQ1LVx0XHRhZGFwdGVyLVx1MDAzZWN1cnJfY21kLVx1MDAzZXdhaXRfcV9lbmFibGVkID0gZmFsc2U7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWRyZXNwLmMtMTI0Ny1cdGNhc2UgSG9zdENtZF9DTURfODAyXzExX1NDQU5fRVhUOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWRyZXNwLmM6MTI0ODpcdFx0cmV0ID0gbXdpZmlleF9yZXRfODAyXzExX3NjYW5fZXh0KHByaXYsIHJlc3ApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWRyZXNwLmMtMTI0OS1cdFx0YWRhcHRlci1cdTAwM2VjdXJyX2NtZC1cdTAwM2V3YWl0X3FfZW5hYmxlZCA9IGZhbHNlO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jLTEyNTEtXHRjYXNlIEhvc3RDbWRfQ01EXzgwMl8xMV9CR19TQ0FOX1FVRVJZOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWRyZXNwLmM6MTI1MjpcdFx0cmV0ID0gbXdpZmlleF9yZXRfODAyXzExX3NjYW4ocHJpdiwgcmVzcCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZHJlc3AuYy0xMjUzLVx0XHRjZmc4MDIxMV9zY2hlZF9zY2FuX3Jlc3VsdHMocHJpdi1cdTAwM2V3ZGV2LndpcGh5LCAwKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTU6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMyMTkKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiA4NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBJIHNlZSBpdDoKCioqRm9jdXNpbmcgaW4gb24gdGhlIFNjYW4gUHJvY2VzcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlIGBtd2lmaWV4YCBkcml2ZXIgY29kZSwgYW5kIEkmIzM5O3ZlIGdvdCBhIHNvbGlkIGhhbmRsZSBvbiBob3cgdGhlIHNjYW4gcHJvY2VzcyBpcyBpbml0aWF0ZWQuIFRoZSBrZXkgaGVyZSBpcyB0aGUgbGluayBiZXR3ZWVuIGBtd2lmaWV4X3JldF84MDJfMTFfc2NhbmAgYW5kIGBtd2lmaWV4X3Byb2Nlc3Nfc3RhX2NtZHJlc3BgLiBJdCYjMzk7cyBwcmV0dHkgY2xlYXIgdGhhdCBgbXdpZmlleF9yZXRfODAyXzExX3NjYW5gIGdldHMgY2FsbGVkIGRpcmVjdGx5IHdpdGhpbiB0aGUgZmlybXdhcmUmIzM5O3MgY29tbWFuZCByZXNwb25zZSBoYW5kbGluZy4gVGhhdCBtYWtlcyBpdCBhIHJlYWxseSB2YWx1YWJsZSBwb2ludCBvZiBmb2N1cywgZG9lc24mIzM5O3QgaXQ/IEl0JiMzOTtzIHRoZSBjZW50cmFsIHN5bWJvbCBmb3IgdGhlIDgwMi4xMSBzY2FuIG9wZXJhdGlvbiYjMzk7cyByZXR1cm4gcGF0aC4KCkJ1dCB3YWl0LCB3aGF0IGFib3V0IGBtd2lmaWV4X2hhbmRsZV9ldmVudF9leHRfc2Nhbl9yZXBvcnRgPyBJIG5lZWQgdG8gdGhpbmsgdGhyb3VnaCBob3cgdGhhdCBmaXRzIGludG8gdGhlIG92ZXJhbGwgZmxvdy4gSXQgaXMgZXNzZW50aWFsIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBkcml2ZXIgaGFuZGxlcyBleHRlbmRlZCBzY2FuIHJlcG9ydHMgaW4gb3JkZXIgdG8gaWRlbnRpZnkgcG90ZW50aWFsIHNvdXJjZXMgb2YgaXNzdWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxNTowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttd2lmaWV4X2hhbmRsZV9ldmVudF9leHRfc2Nhbl9yZXBvcnQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg9MTI0Mj1pbnQgbXdpZmlleF9yZXRfODAyXzExX3NjYW5fZXh0KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTEyNDMtXHRcdFx0XHRzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqcmVzcCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oOjEyNDQ6aW50IG13aWZpZXhfaGFuZGxlX2V2ZW50X2V4dF9zY2FuX3JlcG9ydChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xMjQ1LVx0XHRcdFx0XHQgdm9pZCAqYnVmKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jPTI1MzU9aW50IG13aWZpZXhfcmV0XzgwMl8xMV9zY2FuX2V4dChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMjYwNS0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM6MjYwNjppbnQgbXdpZmlleF9oYW5kbGVfZXZlbnRfZXh0X3NjYW5fcmVwb3J0KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTI2MDctXHRcdFx0XHRcdCB2b2lkICpidWYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9ldmVudC5jPTY5Nj1pbnQgbXdpZmlleF9wcm9jZXNzX3N0YV9ldmVudChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfZXZlbnQuYy04NzMtXHRcdFx0XHRcdCAgIW5ldGlmX3J1bm5pbmcocHJpdi1cdTAwM2VuZXRkZXYpKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfZXZlbnQuYzo4NzQ6XHRcdFx0cmV0ID0gbXdpZmlleF9oYW5kbGVfZXZlbnRfZXh0X3NjYW5fcmVwb3J0KHByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2V2ZW50LmMtODc1LVx0XHRcdFx0XHRcdGFkYXB0ZXItXHUwMDNlZXZlbnRfc2tiLVx1MDAzZWRhdGEpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuYz05ND1pbnQgbXdpZmlleF9wcm9jZXNzX3VhcF9ldmVudChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuYy0yNTMtXHRcdGlmIChhZGFwdGVyLVx1MDAzZWV4dF9zY2FuKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VhcF9ldmVudC5jOjI1NDpcdFx0XHRyZXR1cm4gbXdpZmlleF9oYW5kbGVfZXZlbnRfZXh0X3NjYW5fcmVwb3J0KHByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdWFwX2V2ZW50LmMtMjU1LVx0XHRcdFx0XHRcdGFkYXB0ZXItXHUwMDNlZXZlbnRfc2tiLVx1MDAzZWRhdGEpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxNTowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDIxNwoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDMyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBGdXp6aW5nIFN0cmF0ZWd5IGZvciBUaGlzIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTt2ZSBiZWVuIGxvb2tpbmcgYXQgdGhlIGV2ZW50IGhhbmRsaW5nIGluIHRoaXMgYG13aWZpZXhgIGRyaXZlciwgc3BlY2lmaWNhbGx5IGhvdyBpdCBwcm9jZXNzZXMgZXh0ZW5kZWQgc2NhbiByZXBvcnRzLiBgbXdpZmlleF9oYW5kbGVfZXZlbnRfZXh0X3NjYW5fcmVwb3J0YCBpcyB0cmlnZ2VyZWQgYnkgYG13aWZpZXhfcHJvY2Vzc19zdGFfZXZlbnRgIGFuZCBgbXdpZmlleF9wcm9jZXNzX3VhcF9ldmVudGAuIFRoZXNlIGFyZSBjbGVhcmx5IGV2ZW50IHByb2Nlc3NpbmcgZW50cnkgcG9pbnRzIHdpdGhpbiB0aGUgZmlybXdhcmUuIFRoYXQgc3VnZ2VzdHMgYSBnb29kIHN0cmF0ZWd5IGZvciBmdXp6aW5nOiBjb25jZW50cmF0ZSBvbiBhcmVhcyBhcm91bmQgdGhvc2UgZnVuY3Rpb25zLiBJbiBwYXJ0aWN1bGFyLCBib3RoIGBtd2lmaWV4X3JldF84MDJfMTFfc2NhbmAgYW5kIGBtd2lmaWV4X2hhbmRsZV9ldmVudF9leHRfc2Nhbl9yZXBvcnRgIGp1bXAgb3V0IGFzIGV4Y2VsbGVudCBmb2N1cyBwb2ludHMsIGFuZCBgbXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHlgIGxvb2tzIGxpa2UgYW5vdGhlciBwb3RlbnRpYWxseSBmcnVpdGZ1bCBhcmVhLgoKU28gaGVyZSYjMzk7cyB3aGF0IEkmIzM5O3ZlIGdvdDoKCiogICAqKldvcnRoRnV6emluZzoqKiBZZXMsIGFic29sdXRlbHkuCiogICAqKkZvY3VzU3ltYm9sczoqKiBJJiMzOTttIGdvaW5nIHRvIHRhcmdldCB0aGVzZSBwcmltYXJpbHk6CiAgICAqICAgYG13aWZpZXhfcmV0XzgwMl8xMV9zY2FuYAogICAgKiAgIGBtd2lmaWV4X2hhbmRsZV9ldmVudF9leHRfc2Nhbl9yZXBvcnRgCiAgICAqICAgYG13aWZpZXhfY2hlY2tfbmV0d29ya19jb21wYXRpYmlsaXR5YAoKTm93LCBsZXQmIzM5O3MgdGFsayBhYm91dCBlbmFibGluZyB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zLiBJIHNlZSB0aGF0IGBNV0lGSUVYYCBhbmQgYE1XSUZJRVhfVVNCYCBhcmUgZXNzZW50aWFsLiBgTVdJRklFWF9VU0JgIGRlcGVuZHMgb24gYE1XSUZJRVhgIGFuZCBgVVNCYC4gYE1XSUZJRVhgIGl0c2VsZiBkZXBlbmRzIG9uIGBDRkc4MDIxMWAuIEJ1dCB3YWl0LCBgVVNCYCBhbmQgYENGRzgwMjExYCBhcmUgcHJldHR5IGdlbmVyaWMgYW5kIHVzdWFsbHkgZW5hYmxlZCBieSBkZWZhdWx0LiBTbywgZm9yIGZ1enppbmcsIEkmIzM5O2xsIGp1c3QgbGlzdCBgTVdJRklFWGAgYW5kIGBNV0lGSUVYX1VTQmAuIFRoYXQgc2hvdWxkIGJlIHN1ZmZpY2llbnQgdG8gZ2V0IHRoZSByZWxldmFudCBjb2RlIGNvbXBpbGVkIGluLCB3aXRob3V0IHdvcnJ5aW5nIGFib3V0IGV4dHJhbmVvdXMgZGVwZW5kZW5jaWVzIGF0IHRoaXMgcG9pbnQuIFRpbWUgdG8gZG91YmxlLWNoZWNrIHRoYXQgdGhlcmUgYXJlbiYjMzk7dCBhbnkgb3RoZXIgY3J1Y2lhbCBkZXBlbmRlbmNpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE1OjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNV0lGSUVYJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjI6Y29uZmlnIE1XSUZJRVhcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFdpRmktRXggRHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzoxMjpjb25maWcgTVdJRklFWF9TRElPXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0xMy1cdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFNEODc4Ni9TRDg3ODcvU0Q4Nzk3L1NEODg4Ny9TRDg4OTcvU0Q4OTc3L1NEODk3OC9TRDg5ODcvU0Q4OTk3XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzoyNTpjb25maWcgTVdJRklFWF9QQ0lFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0yNi1cdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFBDSUUgODc2Ni84ODk3Lzg5OTdcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0zNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjM3OmNvbmZpZyBNV0lGSUVYX1VTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzgtXHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBVU0I4NzY2Lzg3OTcvODk5N1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxNTowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTQzMAoJCQkJCQkJb3V0cHV0OiAyNjMKCQkJCQkJCXRob3VnaHRzOiA0MzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgdGhlIE1XSUZJRVggRHJpdmVyIFZ1bG5lcmFiaWxpdHkgYW5kIEZ1enppbmcgU3RyYXRlZ3kqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gSSYjMzk7bSBnb2luZyB0byBiZSBsb29raW5nIGNsb3NlbHkgYXQgdGhlIGBNV0lGSUVYYCBkcml2ZXIgYW5kLCBzcGVjaWZpY2FsbHksIHRoZSBgTVdJRklFWF9VU0JgIGludGVyZmFjZS4gV2UgbmVlZCB0byBmb2N1cyBvdXIgYXR0ZW50aW9uIG9uIGBtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWVgLiBUaGUgcmF0aW9uYWxlIGhlcmUgaXMgdGhhdCB0aGlzIHBhdGNoIGFkZHJlc3NlcyBhbiBvdXQtb2YtYm91bmRzIHJlYWQgdnVsbmVyYWJpbGl0eSB3aGVuIHBhcnNpbmcgUlNOL1dQQSBJbmZvcm1hdGlvbiBFbGVtZW50cyAoSUVzKSBmcm9tIHNjYW4gcmVzdWx0cy4gVGhlIGNvcmUgb2YgdGhlIGlzc3VlIGlzIGluIGhvdyB0aGUgZHJpdmVyIHByb2Nlc3NlcyBzY2FuIHJlc3VsdHMgaXQgcmVjZWl2ZXMgZnJvbSB0aGUgZmlybXdhcmUuIFRoZSBmYWN0IHRoYXQgd2UgaGF2ZSBhIFVTQiBpbnRlcmZhY2UgcHJvdmlkZXMgYW4gYXR0YWNrIHZlY3Rvci4gV2UgY2FuIGZ1enogdGhlIGZpcm13YXJlIHJlc3BvbnNlcyB0aHJvdWdoIFVTQiBlbXVsYXRpb24sIHNvbWV0aGluZyBsaWtlIHVzaW5nIGEgZHVtbXktaGNkLiBUaGlzIGlzIGtleS4gU2luY2UgdGhpcyBmaXggaXMgbW9kaWZ5aW5nIHJlYWNoYWJsZSBjb3JlIGxvZ2ljIHdpdGhpbiB0aGUgZHJpdmVyLCBpdCYjMzk7cyBkZWZpbml0ZWx5IHdvcnRod2hpbGUgdG8gZnV6eiBpdC4KCk15IGZvY3VzIGlzIGdvaW5nIHRvIGJlIG9uIHRoZXNlIHN5bWJvbHM6IGBtd2lmaWV4X3JldF84MDJfMTFfc2NhbmAsIGBtd2lmaWV4X2hhbmRsZV9ldmVudF9leHRfc2Nhbl9yZXBvcnRgLCBhbmQgYG13aWZpZXhfY2hlY2tfbmV0d29ya19jb21wYXRpYmlsaXR5YC4gVGhlc2UgYXJlIHRoZSBlbnRyeSBwb2ludHMgZm9yIHByb2Nlc3Npbmcgc2NhbiByZXN1bHRzIGFuZCBjaGVja2luZyBuZXR3b3JrIGNvbXBhdGliaWxpdHksIG1ha2luZyB0aGVtIHBlcmZlY3QgdGFyZ2V0cyBmb3Igb3VyIGZ1enppbmcgZWZmb3J0cy4KCk5vdywgbGV0JiMzOTtzIHF1aWNrbHkgcmV2aWV3IHRoZSBjYWxsZXJzIG9mIGBtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWVgLiBGcm9tIHdoYXQgSSBjYW4gc2VlLCBpdCYjMzk7cyBjYWxsZWQgYnkgYG13aWZpZXhfaXNfcnNuX291aV9wcmVzZW50YCBhbmQgYG13aWZpZXhfaXNfd3BhX291aV9wcmVzZW50YC4gVGhlc2UgaW4gdHVybiBhcmUgY2FsbGVkIGJ5IGBtd2lmaWV4X2lzX25ldHdvcmtfY29tcGF0aWJsZWAsIHdoaWNoIGZlZWRzIGludG8gYG13aWZpZXhfY2hlY2tfbmV0d29ya19jb21wYXRpYmlsaXR5YC4gYG13aWZpZXhfY2hlY2tfbmV0d29ya19jb21wYXRpYmlsaXR5YCB0aGVuIGJyYW5jaGVzIHRvIGJvdGggYG13aWZpZXhfdXBkYXRlX2N1cnJfYnNzX3BhcmFtc2AgYW5kIGBtd2lmaWV4X2Jzc19zdGFydGAuIGBtd2lmaWV4X3VwZGF0ZV9jdXJyX2Jzc19wYXJhbXNgIGlzIGNhbGxlZCBieSBgbXdpZmlleF9wYXJzZV9zaW5nbGVfcmVzcG9uc2VfYnVmYC4gRmluYWxseSwgYG13aWZpZXhfcGFyc2Vfc2luZ2xlX3Jlc3BvbnNlX2J1ZmAgaXMgY2FsbGVkIGJ5IGBtd2lmaWV4X3JldF84MDJfMTFfc2NhbmAgYW5kIGBtd2lmaWV4X2hhbmRsZV9ldmVudF9leHRfc2Nhbl9yZXBvcnRgLgoKU28sIHdlJiMzOTt2ZSBnb3QgZnVsbCBjYWxsIGNoYWluIGNvdmVyYWdlIGZyb20gb3VyIGZvY3VzIHN5bWJvbHMuIFRoZXkgYXBwZWFyIHRvIGJlIHNvbGlkIHN0YXJ0aW5nIHBvaW50cy4KClJpZ2h0LCBJJiMzOTttIHJlYWR5IHRvIHByb2NlZWQgd2l0aCBzZXR0aW5nIHRoZSByZXN1bHRzIGFuZCBtb3Zpbmcgb24gdG8gdGhlIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE1OjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNV0lGSUVYJiMzNDssCiAgICAmIzM0O01XSUZJRVhfVVNCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bXdpZmlleF9yZXRfODAyXzExX3NjYW4mIzM0OywKICAgICYjMzQ7bXdpZmlleF9oYW5kbGVfZXZlbnRfZXh0X3NjYW5fcmVwb3J0JiMzNDssCiAgICAmIzM0O213aWZpZXhfY2hlY2tfbmV0d29ya19jb21wYXRpYmlsaXR5JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIHRvIGBtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWVgIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcyB3aGVuIHBhcnNpbmcgUlNOL1dQQSBJbmZvcm1hdGlvbiBFbGVtZW50cyAoSUVzKSBmcm9tIHNjYW4gcmVzdWx0cy4gVGhlIHZ1bG5lcmFiaWxpdHkgb2NjdXJzIHdoZW4gdGhlIGRyaXZlciBwcm9jZXNzZXMgc2NhbiByZXN1bHRzIHJlY2VpdmVkIGZyb20gdGhlIGZpcm13YXJlLiBTaW5jZSB0aGUgYG13aWZpZXhgIGRyaXZlciBzdXBwb3J0cyBhIFVTQiBpbnRlcmZhY2UgKGBNV0lGSUVYX1VTQmApLCB0aGUgZmlybXdhcmUgcmVzcG9uc2VzIGNhbiBiZSBmdXp6ZWQgdmlhIFVTQiBlbXVsYXRpb24gKGUuZy4sIGR1bW15LWhjZCkuIFRoZSBmaXggbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUgbG9naWMgaW4gdGhlIGRyaXZlciwgc28gaXQgaXMgd29ydGggZnV6emluZy4gRm9jdXMgc3ltYm9scyBhcmUgYG13aWZpZXhfcmV0XzgwMl8xMV9zY2FuYCwgYG13aWZpZXhfaGFuZGxlX2V2ZW50X2V4dF9zY2FuX3JlcG9ydGAsIGFuZCBgbXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHlgLCB3aGljaCBhcmUgdGhlIGVudHJ5IHBvaW50cyBmb3IgcHJvY2Vzc2luZyBzY2FuIHJlc3VsdHMgYW5kIGNoZWNraW5nIG5ldHdvcmsgY29tcGF0aWJpbGl0eS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TVdJRklFWCYjMzQ7LAogICAgJiMzNDtNV0lGSUVYX1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O213aWZpZXhfcmV0XzgwMl8xMV9zY2FuJiMzNDssCiAgICAmIzM0O213aWZpZXhfaGFuZGxlX2V2ZW50X2V4dF9zY2FuX3JlcG9ydCYjMzQ7LAogICAgJiMzNDttd2lmaWV4X2NoZWNrX25ldHdvcmtfY29tcGF0aWJpbGl0eSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyB0byBgbXdpZmlleF9zZWFyY2hfb3VpX2luX2llYCB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgcmVhZHMgd2hlbiBwYXJzaW5nIFJTTi9XUEEgSW5mb3JtYXRpb24gRWxlbWVudHMgKElFcykgZnJvbSBzY2FuIHJlc3VsdHMuIFRoZSB2dWxuZXJhYmlsaXR5IG9jY3VycyB3aGVuIHRoZSBkcml2ZXIgcHJvY2Vzc2VzIHNjYW4gcmVzdWx0cyByZWNlaXZlZCBmcm9tIHRoZSBmaXJtd2FyZS4gU2luY2UgdGhlIGBtd2lmaWV4YCBkcml2ZXIgc3VwcG9ydHMgYSBVU0IgaW50ZXJmYWNlIChgTVdJRklFWF9VU0JgKSwgdGhlIGZpcm13YXJlIHJlc3BvbnNlcyBjYW4gYmUgZnV6emVkIHZpYSBVU0IgZW11bGF0aW9uIChlLmcuLCBkdW1teS1oY2QpLiBUaGUgZml4IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGxvZ2ljIGluIHRoZSBkcml2ZXIsIHNvIGl0IGlzIHdvcnRoIGZ1enppbmcuIEZvY3VzIHN5bWJvbHMgYXJlIGBtd2lmaWV4X3JldF84MDJfMTFfc2NhbmAsIGBtd2lmaWV4X2hhbmRsZV9ldmVudF9leHRfc2Nhbl9yZXBvcnRgLCBhbmQgYG13aWZpZXhfY2hlY2tfbmV0d29ya19jb21wYXRpYmlsaXR5YCwgd2hpY2ggYXJlIHRoZSBlbnRyeSBwb2ludHMgZm9yIHByb2Nlc3Npbmcgc2NhbiByZXN1bHRzIGFuZCBjaGVja2luZyBuZXR3b3JrIGNvbXBhdGliaWxpdHkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE1OjAxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTU6MDE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyByZWFkIHZ1bG5lcmFiaWxpdHkgaW4gYG13aWZpZXhfc2VhcmNoX291aV9pbl9pZWAgYnkgaW50cm9kdWNpbmcgYm91bmRzIGNoZWNraW5nIG9uIHRoZSBPVUkgY291bnQgKGBpZWJvZHktXHUwMDNlcHRrX2NudFswXWApIGFnYWluc3QgdGhlIGF2YWlsYWJsZSBJbmZvcm1hdGlvbiBFbGVtZW50IChJRSkgbGVuZ3RoIChgaWVfbGVuYCkuIFdpdGhvdXQgdGhpcyBjaGVjaywgYSBtYWxpY2lvdXNseSBjcmFmdGVkIGJlYWNvbiBvciBwcm9iZSByZXNwb25zZSB3aXRoIGEgbGFyZ2UgT1VJIGNvdW50IGNvdWxkIGNhdXNlIHRoZSBkcml2ZXIgdG8gcmVhZCBwYXN0IHRoZSBlbmQgb2YgdGhlIGFsbG9jYXRlZCBJRSBidWZmZXIgZHVyaW5nIHRoZSBgbWVtY21wYCBsb29wLlxuXG5UaGlzIGlzIGEgY2xhc3NpYyBvdXQtb2YtYm91bmRzIHJlYWQgYnVnLCB3aGljaCBpcyByZWxpYWJseSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlcmUgaXMgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UsIHN0YWNrL2hlYXAgaW5mby1sZWFrIHRvIHVzZXIgc3BhY2UsIG9yIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzIGludm9sdmVkIGluIHRoaXMgdnVsbmVyYWJpbGl0eS4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeSwgYXMgc3RhbmRhcmQgS0FTQU4gd2lsbCBjYXRjaCBhbnkgcmVncmVzc2lvbnMgb3Igc2ltaWxhciBvdXQtb2YtYm91bmRzIGFjY2VzcyBpc3N1ZXMgaW4gdGhpcyBjb2RlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBmMTM4MmU2MDM3ZTc1MmY2M2QxYTc5M2Y3MDBjMjhlMGRjZjAxZTQ3CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBBdWcgMTQgMTQ6NTI6MzMgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYwppbmRleCA5N2MwZWMzYjgyMmU3Li40NzNmNDYyM2VhMTk5IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMKQEAgLTEwNCwxMiAmIzQzOzEwNCwyNCBAQCBoYXNfdmVuZG9yX2hkcihzdHJ1Y3QgaWVlZV90eXBlc192ZW5kb3Jfc3BlY2lmaWMgKmllLCB1OCBrZXkpCiAgKiBhIGdpdmVuIG91aSBpbiBQVEsuCiAgKi8KIHN0YXRpYyB1OAotbXdpZmlleF9zZWFyY2hfb3VpX2luX2llKHN0cnVjdCBpZV9ib2R5ICppZWJvZHksIHU4ICpvdWkpCiYjNDM7bXdpZmlleF9zZWFyY2hfb3VpX2luX2llKHN0cnVjdCBpZV9ib2R5ICppZWJvZHksIHU4ICpvdWksIGludCBpZV9sZW4pCiB7CiYjNDM7CWNvbnN0IHNpemVfdCBwdGtfYm9keV9vZmZzZXQgPSBvZmZzZXRvZihzdHJ1Y3QgaWVfYm9keSwgcHRrX2JvZHkpOwogCXU4IGNvdW50OwogCiYjNDM7CS8qIGllX2xlbiBpcyB0aGUgbnVtYmVyIG9mIGJ5dGVzIGF2YWlsYWJsZSBhdCBpZWJvZHkuIEtlZXAgaXQgc2lnbmVkCiYjNDM7CSAqIGFuZCByZWplY3QgYSBuZWdhdGl2ZSAodW5kZXJmbG93ZWQpIGxlbmd0aCBiZWZvcmUgdGhlIHVuc2lnbmVkCiYjNDM7CSAqIGNvbXBhcmlzb25zIGJlbG93LCBzbyBhIHNtYWxsIG9yIHplcm8gSUUgbGVuZ3RoIGNhbm5vdCB3cmFwLgomIzQzOwkgKi8KJiM0MzsJaWYgKGllX2xlbiAmbHQ7IDAgfHwgKHNpemVfdClpZV9sZW4gJmx0OyBwdGtfYm9keV9vZmZzZXQpCiYjNDM7CQlyZXR1cm4gTVdJRklFWF9PVUlfTk9UX1BSRVNFTlQ7CiYjNDM7CiAJY291bnQgPSBpZWJvZHktJmd0O3B0a19jbnRbMF07CiAKJiM0MzsJLyogUmVqZWN0IGFuIE9VSSBjb3VudCB3aG9zZSBsaXN0IHdvdWxkIHJ1biBwYXN0IHRoZSBlbGVtZW50LiAqLwomIzQzOwlpZiAocHRrX2JvZHlfb2Zmc2V0ICYjNDM7IGNvdW50ICogc2l6ZW9mKGllYm9keS0mZ3Q7cHRrX2JvZHkpICZndDsgKHNpemVfdClpZV9sZW4pCiYjNDM7CQlyZXR1cm4gTVdJRklFWF9PVUlfTk9UX1BSRVNFTlQ7CiYjNDM7CiAJLyogVGhlcmUgY291bGQgYmUgbXVsdGlwbGUgT1VJcyBmb3IgUFRLIGhlbmNlCiAJICAgMSkgVGFrZSB0aGUgbGVuZ3RoLgogCSAgIDIpIENoZWNrIGFsbCB0aGUgT1VJcyBmb3IgQUVTLgpAQCAtMTQzLDExICYjNDM7MTU1LDE0IEBAIG13aWZpZXhfaXNfcnNuX291aV9wcmVzZW50KHN0cnVjdCBtd2lmaWV4X2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjLCB1MzIgY2lwaGVyKQogCXU4IHJldCA9IE1XSUZJRVhfT1VJX05PVF9QUkVTRU5UOwogCiAJaWYgKGhhc19pZWVlX2hkcihic3NfZGVzYy0mZ3Q7YmNuX3Jzbl9pZSwgV0xBTl9FSURfUlNOKSkgewomIzQzOwkJaW50IGllX2xlbiA9IChpbnQpYnNzX2Rlc2MtJmd0O2Jjbl9yc25faWUtJmd0O2llZWVfaGRyLmxlbiAtCiYjNDM7CQkJUlNOX0dUS19PVUlfT0ZGU0VUOwomIzQzOwogCQlpZWJvZHkgPSAoc3RydWN0IGllX2JvZHkgKikKIAkJCSAoKCh1OCAqKSBic3NfZGVzYy0mZ3Q7YmNuX3Jzbl9pZS0mZ3Q7ZGF0YSkgJiM0MzsKIAkJCSAgUlNOX0dUS19PVUlfT0ZGU0VUKTsKIAkJb3VpID0gJmFtcDttd2lmaWV4X3Jzbl9vdWlbY2lwaGVyXVswXTsKLQkJcmV0ID0gbXdpZmlleF9zZWFyY2hfb3VpX2luX2llKGllYm9keSwgb3VpKTsKJiM0MzsJCXJldCA9IG13aWZpZXhfc2VhcmNoX291aV9pbl9pZShpZWJvZHksIG91aSwgaWVfbGVuKTsKIAkJaWYgKHJldCkKIAkJCXJldHVybiByZXQ7CiAJfQpAQCAtMTY5LDEwICYjNDM7MTg0LDE0IEBAIG13aWZpZXhfaXNfd3BhX291aV9wcmVzZW50KHN0cnVjdCBtd2lmaWV4X2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjLCB1MzIgY2lwaGVyKQogCXU4IHJldCA9IE1XSUZJRVhfT1VJX05PVF9QUkVTRU5UOwogCiAJaWYgKGhhc192ZW5kb3JfaGRyKGJzc19kZXNjLSZndDtiY25fd3BhX2llLCBXTEFOX0VJRF9WRU5ET1JfU1BFQ0lGSUMpKSB7CiYjNDM7CQlpbnQgaWVfbGVuID0gKGludClic3NfZGVzYy0mZ3Q7YmNuX3dwYV9pZS0mZ3Q7dmVuZF9oZHIubGVuIC0KJiM0MzsJCQkoaW50KXNpemVvZihic3NfZGVzYy0mZ3Q7YmNuX3dwYV9pZS0mZ3Q7dmVuZF9oZHIub3VpKSAtCiYjNDM7CQkJV1BBX0dUS19PVUlfT0ZGU0VUOwomIzQzOwogCQlpZWJvZHkgPSAoc3RydWN0IGllX2JvZHkgKikoKHU4ICopYnNzX2Rlc2MtJmd0O2Jjbl93cGFfaWUtJmd0O2RhdGEgJiM0MzsKIAkJCQkJICAgIFdQQV9HVEtfT1VJX09GRlNFVCk7CiAJCW91aSA9ICZhbXA7bXdpZmlleF93cGFfb3VpW2NpcGhlcl1bMF07Ci0JCXJldCA9IG13aWZpZXhfc2VhcmNoX291aV9pbl9pZShpZWJvZHksIG91aSk7CiYjNDM7CQlyZXQgPSBtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWUoaWVib2R5LCBvdWksIGllX2xlbik7CiAJCWlmIChyZXQpCiAJCQlyZXR1cm4gcmV0OwogCX0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE1OjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4NTYKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiA1MzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIE1hcnZlbGwgV2ktRmkgRHJpdmVyIFZ1bG5lcmFiaWxpdHkgUGF0Y2gqKgoKT2theSwgc28gaGVyZSYjMzk7cyB3aGF0IEkmIzM5O3ZlIGdvdC4gVGhpcyBwYXRjaCB0YXJnZXRzIGFuIG91dC1vZi1ib3VuZHMgcmVhZCB2dWxuZXJhYmlsaXR5IGluIHRoZSBgbXdpZmlleF9zZWFyY2hfb3VpX2luX2llYCBmdW5jdGlvbiB3aXRoaW4gdGhlIE1hcnZlbGwgV2ktRmkgZHJpdmVyJiMzOTtzIHNjYW5uaW5nIGNvZGUgKGBzY2FuLmNgKS4gRXNzZW50aWFsbHksIHRoZSBwcm9ibGVtIGJvaWxzIGRvd24gdG8gYSBsYWNrIG9mIHByb3BlciBib3VuZHMgY2hlY2tpbmcgd2hlbiBoYW5kbGluZyBPVUkgKE9yZ2FuaXphdGlvbmFsbHkgVW5pcXVlIElkZW50aWZpZXIpIGNvdW50cyBmb3VuZCB3aXRoaW4gSW5mb3JtYXRpb24gRWxlbWVudHMgKElFcykgb2YgV2ktRmkgYmVhY29ucyBvciBwcm9iZSByZXNwb25zZXMuCgpUaGUgZml4IGl0c2VsZiBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiBpdCBpbnRyb2R1Y2VzIGEgY2hlY2sgdGhhdCBjb21wYXJlcyB0aGUgY2FsY3VsYXRlZCBvZmZzZXQgKGJhc2VkIG9uIHRoZSBPVUkgY291bnQgYW5kIHNpemUgb2YgdGhlIE9VSSBib2R5KSBhZ2FpbnN0IHRoZSBhY3R1YWwgbGVuZ3RoIG9mIHRoZSBJRSBidWZmZXIgKGBpZV9sZW5gKS4gIFRoZSBjb2RlIHdhcyByZWFkaW5nIGBpZWJvZHktJmd0O3B0a19jbnRbMF1gIGZyb20gYSBuZXR3b3JrIHBhY2tldCAoYmVhY29uL3Byb2JlIHJlc3BvbnNlKSBhbmQgdXNpbmcgdGhhdCB2YWx1ZSB0byBkZXRlcm1pbmUgaG93IG11Y2ggb2YgYGllYm9keS0mZ3Q7cHRrX2JvZHlgIHRvIHJlYWQuICBUaGUgdnVsbmVyYWJpbGl0eSBsaWVzIGluIHRoZSBmYWN0IHRoYXQgYSBtYWxpY2lvdXMgYWN0b3IgY291bGQgY3JhZnQgYSBiZWFjb24gb3IgcHJvYmUgcmVzcG9uc2Ugd2l0aCBhIGxhcmdlIE9VSSBjb3VudCwgd2hpY2ggd291bGQgY2F1c2UgdGhlIGRyaXZlciB0byBhdHRlbXB0IHRvIHJlYWQgcGFzdCB0aGUgZW5kIG9mIHRoZSBJRSBidWZmZXIuICBUaGlzIGlzIGEgY2xhc3NpYyBhbmQgd2VsbC11bmRlcnN0b29kIG91dC1vZi1ib3VuZHMgcmVhZC4KCk5vdywgdGhlIGtleSBxdWVzdGlvbiBoZXJlIGlzIHdoZXRoZXIgdGhpcyBuZWNlc3NpdGF0ZXMgS01TQU4gKEtlcm5lbCBNZW1vcnkgU2FuaXRpemVyKSBvciBpZiBLQVNBTiAoS2VybmVsIEFkZHJlc3MgU2FuaXRpemVyKSBpcyBzdWZmaWNpZW50LiBBZnRlciBhIHRob3JvdWdoIHJldmlldywgSSYjMzk7bSBjb25maWRlbnQgdGhhdCBLQVNBTiBpcyB0aGUgcmlnaHQgdG9vbCBmb3IgdGhpcyBqb2IuIFRoZSByb290IGNhdXNlIGlzICpwdXJlbHkqIGFuIG91dC1vZi1ib3VuZHMgcmVhZC4gVGhlcmUmIzM5O3Mgbm8gaW52b2x2ZW1lbnQgb2YgdW5pbml0aWFsaXplZCBtZW1vcnksIHN0YWNrL2hlYXAgaW5mby1sZWFrIHRvIHVzZXIgc3BhY2UsIG9yIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzIHRoYXQgS01TQU4gaXMgZGVzaWduZWQgdG8gY2F0Y2guICBUaGUgYnVnIGlzIHRyaWdnZXJlZCBieSByZWFkaW5nIGJleW9uZCB0aGUgYWxsb2NhdGVkIG1lbW9yeSBmb3IgdGhlIElFIGJ1ZmZlciAoYGJzc19kZXNjLSZndDtiY25fcnNuX2llYCBvciBgYnNzX2Rlc2MtJmd0O2Jjbl93cGFfaWVgKSwgd2hpY2ggaXMgcG9wdWxhdGVkIGRpcmVjdGx5IGZyb20gbmV0d29yayBwYWNrZXRzLiBLQVNBTiBpcyBwZXJmZWN0bHkgc3VpdGVkIHRvIGRldGVjdGluZyB0aGlzIHNvcnQgb2YgbWVtb3J5IGFjY2VzcyB2aW9sYXRpb24uICBLTVNBTiB3b3VsZCBiZSBvdmVya2lsbCwgYW5kIHByb2JhYmx5IG5vdCBldmVuIHRyaWdnZXIgYW55dGhpbmcsIHNpbmNlIGl0JiMzOTtzIGZvY3VzZWQgb24gdW5pbml0aWFsaXplZCBtZW1vcnkgYWNjZXNzLgoKSSYjMzk7dmUgY29uZmlybWVkIHRoaXMgYnkgbG9va2luZyBhdCB0aGUgY29kZSwgdG9vLiAgSSYjMzk7bSB2ZXJ5IGNvbmZpZGVudCB0aGF0IHRoZSBwYXRjaCBhZGRyZXNzZXMgdGhlIHZ1bG5lcmFiaWxpdHkgY29ycmVjdGx5IGJ5IHByZXZlbnRpbmcgdGhlIG91dC1vZi1ib3VuZHMgcmVhZC4gVGhlcmVmb3JlLCBJIGJlbGlldmUgYE5lZWRzS01TQU49ZmFsc2VgIGlzIGNvcnJlY3QuIFRoaXMgaXMgdGhlIGtpbmQgb2YgdnVsbmVyYWJpbGl0eSB0aGF0IEtBU0FOIHdpbGwgZGV0ZWN0IHF1aWNrbHksIGFuZCBlZmZpY2llbnRseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTU6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTAwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxMDA6XHQvKlxuIDEwMTpcdCAqIFRoaXMgZnVuY3Rpb24gcGFyc2VzIGEgZ2l2ZW4gSUUgZm9yIGEgZ2l2ZW4gT1VJLlxuIDEwMjpcdCAqXG4gMTAzOlx0ICogVGhpcyBpcyB1c2VkIHRvIHBhcnNlIGEgV1BBL1JTTiBJRSB0byBmaW5kIGlmIGl0IGhhc1xuIDEwNDpcdCAqIGEgZ2l2ZW4gb3VpIGluIFBUSy5cbiAxMDU6XHQgKi9cbiAxMDY6XHRzdGF0aWMgdThcbiAxMDc6XHRtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWUoc3RydWN0IGllX2JvZHkgKmllYm9keSwgdTggKm91aSwgaW50IGllX2xlbilcbiAxMDg6XHR7XG4gMTA5Olx0XHRjb25zdCBzaXplX3QgcHRrX2JvZHlfb2Zmc2V0ID0gb2Zmc2V0b2Yoc3RydWN0IGllX2JvZHksIHB0a19ib2R5KTtcbiAxMTA6XHRcdHU4IGNvdW50O1xuIDExMTpcdFxuIDExMjpcdFx0LyogaWVfbGVuIGlzIHRoZSBudW1iZXIgb2YgYnl0ZXMgYXZhaWxhYmxlIGF0IGllYm9keS4gS2VlcCBpdCBzaWduZWRcbiAxMTM6XHRcdCAqIGFuZCByZWplY3QgYSBuZWdhdGl2ZSAodW5kZXJmbG93ZWQpIGxlbmd0aCBiZWZvcmUgdGhlIHVuc2lnbmVkXG4gMTE0Olx0XHQgKiBjb21wYXJpc29ucyBiZWxvdywgc28gYSBzbWFsbCBvciB6ZXJvIElFIGxlbmd0aCBjYW5ub3Qgd3JhcC5cbiAxMTU6XHRcdCAqL1xuIDExNjpcdFx0aWYgKGllX2xlbiBcdTAwM2MgMCB8fCAoc2l6ZV90KWllX2xlbiBcdTAwM2MgcHRrX2JvZHlfb2Zmc2V0KVxuIDExNzpcdFx0XHRyZXR1cm4gTVdJRklFWF9PVUlfTk9UX1BSRVNFTlQ7XG4gMTE4Olx0XG4gMTE5Olx0XHRjb3VudCA9IGllYm9keS1cdTAwM2VwdGtfY250WzBdO1xuIDEyMDpcdFxuIDEyMTpcdFx0LyogUmVqZWN0IGFuIE9VSSBjb3VudCB3aG9zZSBsaXN0IHdvdWxkIHJ1biBwYXN0IHRoZSBlbGVtZW50LiAqL1xuIDEyMjpcdFx0aWYgKHB0a19ib2R5X29mZnNldCAmIzQzOyBjb3VudCAqIHNpemVvZihpZWJvZHktXHUwMDNlcHRrX2JvZHkpIFx1MDAzZSAoc2l6ZV90KWllX2xlbilcbiAxMjM6XHRcdFx0cmV0dXJuIE1XSUZJRVhfT1VJX05PVF9QUkVTRU5UO1xuIDEyNDpcdFxuIDEyNTpcdFx0LyogVGhlcmUgY291bGQgYmUgbXVsdGlwbGUgT1VJcyBmb3IgUFRLIGhlbmNlXG4gMTI2Olx0XHQgICAxKSBUYWtlIHRoZSBsZW5ndGguXG4gMTI3Olx0XHQgICAyKSBDaGVjayBhbGwgdGhlIE9VSXMgZm9yIEFFUy5cbiAxMjg6XHRcdCAgIDMpIElmIG9uZSBvZiB0aGVtIGlzIEFFUyB0aGVuIHBhc3Mgc3VjY2Vzcy4gKi9cbiAxMjk6XHRcdHdoaWxlIChjb3VudCkge1xuIDEzMDpcdFx0XHRpZiAoIW1lbWNtcChpZWJvZHktXHUwMDNlcHRrX2JvZHksIG91aSwgc2l6ZW9mKGllYm9keS1cdTAwM2VwdGtfYm9keSkpKVxuIDEzMTpcdFx0XHRcdHJldHVybiBNV0lGSUVYX09VSV9QUkVTRU5UO1xuIDEzMjpcdFxuIDEzMzpcdFx0XHQtLWNvdW50O1xuIDEzNDpcdFx0XHRpZiAoY291bnQpXG4gMTM1Olx0XHRcdFx0aWVib2R5ID0gKHN0cnVjdCBpZV9ib2R5ICopICgodTggKikgaWVib2R5ICYjNDM7XG4gMTM2Olx0XHRcdFx0XHRcdFx0c2l6ZW9mKGllYm9keS1cdTAwM2VwdGtfYm9keSkpO1xuIDEzNzpcdFx0fVxuIDEzODpcdFxuIDEzOTpcdFx0cHJfZGVidWcoXCYjMzQ7aW5mbzogJXM6IE9VSSBpcyBub3QgZm91bmQgaW4gUFRLXFxuXCYjMzQ7LCBfX2Z1bmNfXyk7XG4gMTQwOlx0XHRyZXR1cm4gTVdJRklFWF9PVUlfTk9UX1BSRVNFTlQ7XG4gMTQxOlx0fVxuIDE0MjpcdFxuIDE0MzpcdC8qXG4gMTQ0Olx0ICogVGhpcyBmdW5jdGlvbiBjaGVja3MgaWYgYSBnaXZlbiBPVUkgaXMgcHJlc2VudCBpbiBhIFJTTiBJRS5cbiAxNDU6XHQgKlxuIDE0NjpcdCAqIFRoZSBmdW5jdGlvbiBmaXJzdCBjaGVja3MgaWYgYSBSU04gSUUgaXMgcHJlc2VudCBvciBub3QgaW4gdGhlXG4gMTQ3Olx0ICogQlNTIGRlc2NyaXB0b3IuIEl0IHRyaWVzIHRvIGxvY2F0ZSB0aGUgT1VJIG9ubHkgaWYgc3VjaCBhbiBJRSBpc1xuIDE0ODpcdCAqIHByZXNlbnQuXG4gMTQ5Olx0ICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE1OjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ3OTUKCQkJCQkJCW91dHB1dDogMjA5CgkJCQkJCQl0aG91Z2h0czogMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBPdXQtb2YtQm91bmRzIFJlYWQqKgoKUmlnaHQsIHRoZSBjb2RlJiMzOTtzIGNvbmZpcm1lZCBpdC4gV2UmIzM5O3JlIGxvb2tpbmcgYXQgYSBzdHJhaWdodGZvcndhcmQgb3V0LW9mLWJvdW5kcyByZWFkIGJ1Zywgbm90aGluZyBjb21wbGV4LiBHaXZlbiB0aGUgbmF0dXJlIG9mIHRoZSBpc3N1ZSwgYW5kIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHJlbGV2YW50IG1lbW9yeSBzYWZldHkgbWVjaGFuaXNtcywgSSBjYW4gY29uZmlkZW50bHkgbWFyayBgTmVlZHNLTVNBTmAgYXMgYGZhbHNlYC4gV2UgY2FuIGFkZHJlc3MgdGhpcyB3aXRoIGEgbW9yZSB0YXJnZXRlZCBhcHByb2FjaCwgbGlrZWx5IGludm9sdmluZyBib3VuZHMgY2hlY2tpbmcgb3IgaW1wcm92ZWQgaW5kZXhpbmcgd2l0aGluIHRoZSBhZmZlY3RlZCByb3V0aW5lLiBObyBuZWVkIGZvciB0aGUgaGVhdnkgaGFtbWVyIG9mIGEga2VybmVsLXdpZGUgbWVtb3J5IHNhbml0aXplciBoZXJlLiBMZXQmIzM5O3MgbW92ZSBvbiB0byB0aGUgZml4LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxNTowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBvdXQtb2YtYm91bmRzIHJlYWQgdnVsbmVyYWJpbGl0eSBpbiBgbXdpZmlleF9zZWFyY2hfb3VpX2luX2llYCBieSBpbnRyb2R1Y2luZyBib3VuZHMgY2hlY2tpbmcgb24gdGhlIE9VSSBjb3VudCAoYGllYm9keS1cdTAwM2VwdGtfY250WzBdYCkgYWdhaW5zdCB0aGUgYXZhaWxhYmxlIEluZm9ybWF0aW9uIEVsZW1lbnQgKElFKSBsZW5ndGggKGBpZV9sZW5gKS4gV2l0aG91dCB0aGlzIGNoZWNrLCBhIG1hbGljaW91c2x5IGNyYWZ0ZWQgYmVhY29uIG9yIHByb2JlIHJlc3BvbnNlIHdpdGggYSBsYXJnZSBPVUkgY291bnQgY291bGQgY2F1c2UgdGhlIGRyaXZlciB0byByZWFkIHBhc3QgdGhlIGVuZCBvZiB0aGUgYWxsb2NhdGVkIElFIGJ1ZmZlciBkdXJpbmcgdGhlIGBtZW1jbXBgIGxvb3AuXG5cblRoaXMgaXMgYSBjbGFzc2ljIG91dC1vZi1ib3VuZHMgcmVhZCBidWcsIHdoaWNoIGlzIHJlbGlhYmx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGVyZSBpcyBubyB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSwgc3RhY2svaGVhcCBpbmZvLWxlYWsgdG8gdXNlciBzcGFjZSwgb3IgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMgaW52b2x2ZWQgaW4gdGhpcyB2dWxuZXJhYmlsaXR5LiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LCBhcyBzdGFuZGFyZCBLQVNBTiB3aWxsIGNhdGNoIGFueSByZWdyZXNzaW9ucyBvciBzaW1pbGFyIG91dC1vZi1ib3VuZHMgYWNjZXNzIGlzc3VlcyBpbiB0aGlzIGNvZGUuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBvdXQtb2YtYm91bmRzIHJlYWQgdnVsbmVyYWJpbGl0eSBpbiBgbXdpZmlleF9zZWFyY2hfb3VpX2luX2llYCBieSBpbnRyb2R1Y2luZyBib3VuZHMgY2hlY2tpbmcgb24gdGhlIE9VSSBjb3VudCAoYGllYm9keS1cdTAwM2VwdGtfY250WzBdYCkgYWdhaW5zdCB0aGUgYXZhaWxhYmxlIEluZm9ybWF0aW9uIEVsZW1lbnQgKElFKSBsZW5ndGggKGBpZV9sZW5gKS4gV2l0aG91dCB0aGlzIGNoZWNrLCBhIG1hbGljaW91c2x5IGNyYWZ0ZWQgYmVhY29uIG9yIHByb2JlIHJlc3BvbnNlIHdpdGggYSBsYXJnZSBPVUkgY291bnQgY291bGQgY2F1c2UgdGhlIGRyaXZlciB0byByZWFkIHBhc3QgdGhlIGVuZCBvZiB0aGUgYWxsb2NhdGVkIElFIGJ1ZmZlciBkdXJpbmcgdGhlIGBtZW1jbXBgIGxvb3AuXG5cblRoaXMgaXMgYSBjbGFzc2ljIG91dC1vZi1ib3VuZHMgcmVhZCBidWcsIHdoaWNoIGlzIHJlbGlhYmx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGVyZSBpcyBubyB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSwgc3RhY2svaGVhcCBpbmZvLWxlYWsgdG8gdXNlciBzcGFjZSwgb3IgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMgaW52b2x2ZWQgaW4gdGhpcyB2dWxuZXJhYmlsaXR5LiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LCBhcyBzdGFuZGFyZCBLQVNBTiB3aWxsIGNhdGNoIGFueSByZWdyZXNzaW9ucyBvciBzaW1pbGFyIG91dC1vZi1ib3VuZHMgYWNjZXNzIGlzc3VlcyBpbiB0aGlzIGNvZGUuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE0OjUyOjM0Ljc1NzAxNTgwNFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0NTY1NjUyMDQwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNV0lGSUVYXCIsXG4gICAgXCJNV0lGSUVYX1VTQlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm13aWZpZXhfcmV0XzgwMl8xMV9zY2FuXCIsXG4gICAgXCJtd2lmaWV4X2hhbmRsZV9ldmVudF9leHRfc2Nhbl9yZXBvcnRcIixcbiAgICBcIm13aWZpZXhfY2hlY2tfbmV0d29ya19jb21wYXRpYmlsaXR5XCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBvdXQtb2YtYm91bmRzIHJlYWQgdnVsbmVyYWJpbGl0eSBpbiBgbXdpZmlleF9zZWFyY2hfb3VpX2luX2llYCBieSBpbnRyb2R1Y2luZyBib3VuZHMgY2hlY2tpbmcgb24gdGhlIE9VSSBjb3VudCAoYGllYm9keS1cXHUwMDNlcHRrX2NudFswXWApIGFnYWluc3QgdGhlIGF2YWlsYWJsZSBJbmZvcm1hdGlvbiBFbGVtZW50IChJRSkgbGVuZ3RoIChgaWVfbGVuYCkuIFdpdGhvdXQgdGhpcyBjaGVjaywgYSBtYWxpY2lvdXNseSBjcmFmdGVkIGJlYWNvbiBvciBwcm9iZSByZXNwb25zZSB3aXRoIGEgbGFyZ2UgT1VJIGNvdW50IGNvdWxkIGNhdXNlIHRoZSBkcml2ZXIgdG8gcmVhZCBwYXN0IHRoZSBlbmQgb2YgdGhlIGFsbG9jYXRlZCBJRSBidWZmZXIgZHVyaW5nIHRoZSBgbWVtY21wYCBsb29wLlxcblxcblRoaXMgaXMgYSBjbGFzc2ljIG91dC1vZi1ib3VuZHMgcmVhZCBidWcsIHdoaWNoIGlzIHJlbGlhYmx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGVyZSBpcyBubyB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSwgc3RhY2svaGVhcCBpbmZvLWxlYWsgdG8gdXNlciBzcGFjZSwgb3IgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMgaW52b2x2ZWQgaW4gdGhpcyB2dWxuZXJhYmlsaXR5LiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LCBhcyBzdGFuZGFyZCBLQVNBTiB3aWxsIGNhdGNoIGFueSByZWdyZXNzaW9ucyBvciBzaW1pbGFyIG91dC1vZi1ib3VuZHMgYWNjZXNzIGlzc3VlcyBpbiB0aGlzIGNvZGUuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgdG8gYG13aWZpZXhfc2VhcmNoX291aV9pbl9pZWAgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIHJlYWRzIHdoZW4gcGFyc2luZyBSU04vV1BBIEluZm9ybWF0aW9uIEVsZW1lbnRzIChJRXMpIGZyb20gc2NhbiByZXN1bHRzLiBUaGUgdnVsbmVyYWJpbGl0eSBvY2N1cnMgd2hlbiB0aGUgZHJpdmVyIHByb2Nlc3NlcyBzY2FuIHJlc3VsdHMgcmVjZWl2ZWQgZnJvbSB0aGUgZmlybXdhcmUuIFNpbmNlIHRoZSBgbXdpZmlleGAgZHJpdmVyIHN1cHBvcnRzIGEgVVNCIGludGVyZmFjZSAoYE1XSUZJRVhfVVNCYCksIHRoZSBmaXJtd2FyZSByZXNwb25zZXMgY2FuIGJlIGZ1enplZCB2aWEgVVNCIGVtdWxhdGlvbiAoZS5nLiwgZHVtbXktaGNkKS4gVGhlIGZpeCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBsb2dpYyBpbiB0aGUgZHJpdmVyLCBzbyBpdCBpcyB3b3J0aCBmdXp6aW5nLiBGb2N1cyBzeW1ib2xzIGFyZSBgbXdpZmlleF9yZXRfODAyXzExX3NjYW5gLCBgbXdpZmlleF9oYW5kbGVfZXZlbnRfZXh0X3NjYW5fcmVwb3J0YCwgYW5kIGBtd2lmaWV4X2NoZWNrX25ldHdvcmtfY29tcGF0aWJpbGl0eWAsIHdoaWNoIGFyZSB0aGUgZW50cnkgcG9pbnRzIGZvciBwcm9jZXNzaW5nIHNjYW4gcmVzdWx0cyBhbmQgY2hlY2tpbmcgbmV0d29yayBjb21wYXRpYmlsaXR5LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNDo1MjozNC43NTcwMjI2NjRaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQwNTMwMjE3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGYxMzgyZTYwMzdlNzUyZjYzZDFhNzkzZjcwMGMyOGUwZGNmMDFlNDdcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBBdWcgMTQgMTQ6NTI6MzMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmNcXG5pbmRleCA5N2MwZWMzYjgyMmU3Li40NzNmNDYyM2VhMTk5IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jXFxuQEAgLTEwNCwxMiArMTA0LDI0IEBAIGhhc192ZW5kb3JfaGRyKHN0cnVjdCBpZWVlX3R5cGVzX3ZlbmRvcl9zcGVjaWZpYyAqaWUsIHU4IGtleSlcXG4gICogYSBnaXZlbiBvdWkgaW4gUFRLLlxcbiAgKi9cXG4gc3RhdGljIHU4XFxuLW13aWZpZXhfc2VhcmNoX291aV9pbl9pZShzdHJ1Y3QgaWVfYm9keSAqaWVib2R5LCB1OCAqb3VpKVxcbittd2lmaWV4X3NlYXJjaF9vdWlfaW5faWUoc3RydWN0IGllX2JvZHkgKmllYm9keSwgdTggKm91aSwgaW50IGllX2xlbilcXG4ge1xcbitcXHRjb25zdCBzaXplX3QgcHRrX2JvZHlfb2Zmc2V0ID0gb2Zmc2V0b2Yoc3RydWN0IGllX2JvZHksIHB0a19ib2R5KTtcXG4gXFx0dTggY291bnQ7XFxuIFxcbitcXHQvKiBpZV9sZW4gaXMgdGhlIG51bWJlciBvZiBieXRlcyBhdmFpbGFibGUgYXQgaWVib2R5LiBLZWVwIGl0IHNpZ25lZFxcbitcXHQgKiBhbmQgcmVqZWN0IGEgbmVnYXRpdmUgKHVuZGVyZmxvd2VkKSBsZW5ndGggYmVmb3JlIHRoZSB1bnNpZ25lZFxcbitcXHQgKiBjb21wYXJpc29ucyBiZWxvdywgc28gYSBzbWFsbCBvciB6ZXJvIElFIGxlbmd0aCBjYW5ub3Qgd3JhcC5cXG4rXFx0ICovXFxuK1xcdGlmIChpZV9sZW4gXFx1MDAzYyAwIHx8IChzaXplX3QpaWVfbGVuIFxcdTAwM2MgcHRrX2JvZHlfb2Zmc2V0KVxcbitcXHRcXHRyZXR1cm4gTVdJRklFWF9PVUlfTk9UX1BSRVNFTlQ7XFxuK1xcbiBcXHRjb3VudCA9IGllYm9keS1cXHUwMDNlcHRrX2NudFswXTtcXG4gXFxuK1xcdC8qIFJlamVjdCBhbiBPVUkgY291bnQgd2hvc2UgbGlzdCB3b3VsZCBydW4gcGFzdCB0aGUgZWxlbWVudC4gKi9cXG4rXFx0aWYgKHB0a19ib2R5X29mZnNldCArIGNvdW50ICogc2l6ZW9mKGllYm9keS1cXHUwMDNlcHRrX2JvZHkpIFxcdTAwM2UgKHNpemVfdClpZV9sZW4pXFxuK1xcdFxcdHJldHVybiBNV0lGSUVYX09VSV9OT1RfUFJFU0VOVDtcXG4rXFxuIFxcdC8qIFRoZXJlIGNvdWxkIGJlIG11bHRpcGxlIE9VSXMgZm9yIFBUSyBoZW5jZVxcbiBcXHQgICAxKSBUYWtlIHRoZSBsZW5ndGguXFxuIFxcdCAgIDIpIENoZWNrIGFsbCB0aGUgT1VJcyBmb3IgQUVTLlxcbkBAIC0xNDMsMTEgKzE1NSwxNCBAQCBtd2lmaWV4X2lzX3Jzbl9vdWlfcHJlc2VudChzdHJ1Y3QgbXdpZmlleF9ic3NkZXNjcmlwdG9yICpic3NfZGVzYywgdTMyIGNpcGhlcilcXG4gXFx0dTggcmV0ID0gTVdJRklFWF9PVUlfTk9UX1BSRVNFTlQ7XFxuIFxcbiBcXHRpZiAoaGFzX2llZWVfaGRyKGJzc19kZXNjLVxcdTAwM2ViY25fcnNuX2llLCBXTEFOX0VJRF9SU04pKSB7XFxuK1xcdFxcdGludCBpZV9sZW4gPSAoaW50KWJzc19kZXNjLVxcdTAwM2ViY25fcnNuX2llLVxcdTAwM2VpZWVlX2hkci5sZW4gLVxcbitcXHRcXHRcXHRSU05fR1RLX09VSV9PRkZTRVQ7XFxuK1xcbiBcXHRcXHRpZWJvZHkgPSAoc3RydWN0IGllX2JvZHkgKilcXG4gXFx0XFx0XFx0ICgoKHU4ICopIGJzc19kZXNjLVxcdTAwM2ViY25fcnNuX2llLVxcdTAwM2VkYXRhKSArXFxuIFxcdFxcdFxcdCAgUlNOX0dUS19PVUlfT0ZGU0VUKTtcXG4gXFx0XFx0b3VpID0gXFx1MDAyNm13aWZpZXhfcnNuX291aVtjaXBoZXJdWzBdO1xcbi1cXHRcXHRyZXQgPSBtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWUoaWVib2R5LCBvdWkpO1xcbitcXHRcXHRyZXQgPSBtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWUoaWVib2R5LCBvdWksIGllX2xlbik7XFxuIFxcdFxcdGlmIChyZXQpXFxuIFxcdFxcdFxcdHJldHVybiByZXQ7XFxuIFxcdH1cXG5AQCAtMTY5LDEwICsxODQsMTQgQEAgbXdpZmlleF9pc193cGFfb3VpX3ByZXNlbnQoc3RydWN0IG13aWZpZXhfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MsIHUzMiBjaXBoZXIpXFxuIFxcdHU4IHJldCA9IE1XSUZJRVhfT1VJX05PVF9QUkVTRU5UO1xcbiBcXG4gXFx0aWYgKGhhc192ZW5kb3JfaGRyKGJzc19kZXNjLVxcdTAwM2ViY25fd3BhX2llLCBXTEFOX0VJRF9WRU5ET1JfU1BFQ0lGSUMpKSB7XFxuK1xcdFxcdGludCBpZV9sZW4gPSAoaW50KWJzc19kZXNjLVxcdTAwM2ViY25fd3BhX2llLVxcdTAwM2V2ZW5kX2hkci5sZW4gLVxcbitcXHRcXHRcXHQoaW50KXNpemVvZihic3NfZGVzYy1cXHUwMDNlYmNuX3dwYV9pZS1cXHUwMDNldmVuZF9oZHIub3VpKSAtXFxuK1xcdFxcdFxcdFdQQV9HVEtfT1VJX09GRlNFVDtcXG4rXFxuIFxcdFxcdGllYm9keSA9IChzdHJ1Y3QgaWVfYm9keSAqKSgodTggKilic3NfZGVzYy1cXHUwMDNlYmNuX3dwYV9pZS1cXHUwMDNlZGF0YSArXFxuIFxcdFxcdFxcdFxcdFxcdCAgICBXUEFfR1RLX09VSV9PRkZTRVQpO1xcbiBcXHRcXHRvdWkgPSBcXHUwMDI2bXdpZmlleF93cGFfb3VpW2NpcGhlcl1bMF07XFxuLVxcdFxcdHJldCA9IG13aWZpZXhfc2VhcmNoX291aV9pbl9pZShpZWJvZHksIG91aSk7XFxuK1xcdFxcdHJldCA9IG13aWZpZXhfc2VhcmNoX291aV9pbl9pZShpZWJvZHksIG91aSwgaWVfbGVuKTtcXG4gXFx0XFx0aWYgKHJldClcXG4gXFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gXFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNDo1MjozNS4xNjMxODg0NTJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo1MzI1MTI1NzM0OTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTVdJRklFWFwiLFxuICAgIFwiTVdJRklFWF9VU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtd2lmaWV4X3JldF84MDJfMTFfc2NhblwiLFxuICAgIFwibXdpZmlleF9oYW5kbGVfZXZlbnRfZXh0X3NjYW5fcmVwb3J0XCIsXG4gICAgXCJtd2lmaWV4X2NoZWNrX25ldHdvcmtfY29tcGF0aWJpbGl0eVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIHRvIGBtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWVgIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcyB3aGVuIHBhcnNpbmcgUlNOL1dQQSBJbmZvcm1hdGlvbiBFbGVtZW50cyAoSUVzKSBmcm9tIHNjYW4gcmVzdWx0cy4gVGhlIHZ1bG5lcmFiaWxpdHkgb2NjdXJzIHdoZW4gdGhlIGRyaXZlciBwcm9jZXNzZXMgc2NhbiByZXN1bHRzIHJlY2VpdmVkIGZyb20gdGhlIGZpcm13YXJlLiBTaW5jZSB0aGUgYG13aWZpZXhgIGRyaXZlciBzdXBwb3J0cyBhIFVTQiBpbnRlcmZhY2UgKGBNV0lGSUVYX1VTQmApLCB0aGUgZmlybXdhcmUgcmVzcG9uc2VzIGNhbiBiZSBmdXp6ZWQgdmlhIFVTQiBlbXVsYXRpb24gKGUuZy4sIGR1bW15LWhjZCkuIFRoZSBmaXggbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUgbG9naWMgaW4gdGhlIGRyaXZlciwgc28gaXQgaXMgd29ydGggZnV6emluZy4gRm9jdXMgc3ltYm9scyBhcmUgYG13aWZpZXhfcmV0XzgwMl8xMV9zY2FuYCwgYG13aWZpZXhfaGFuZGxlX2V2ZW50X2V4dF9zY2FuX3JlcG9ydGAsIGFuZCBgbXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHlgLCB3aGljaCBhcmUgdGhlIGVudHJ5IHBvaW50cyBmb3IgcHJvY2Vzc2luZyBzY2FuIHJlc3VsdHMgYW5kIGNoZWNraW5nIG5ldHdvcmsgY29tcGF0aWJpbGl0eS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZjEzODJlNjAzN2U3NTJmNjNkMWE3OTNmNzAwYzI4ZTBkY2YwMWU0N1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDE0IDE0OjUyOjMzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmNcbmluZGV4IDk3YzBlYzNiODIyZTcuLjQ3M2Y0NjIzZWExOTkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jXG5AQCAtMTA0LDEyICsxMDQsMjQgQEAgaGFzX3ZlbmRvcl9oZHIoc3RydWN0IGllZWVfdHlwZXNfdmVuZG9yX3NwZWNpZmljICppZSwgdTgga2V5KVxuICAqIGEgZ2l2ZW4gb3VpIGluIFBUSy5cbiAgKi9cbiBzdGF0aWMgdThcbi1td2lmaWV4X3NlYXJjaF9vdWlfaW5faWUoc3RydWN0IGllX2JvZHkgKmllYm9keSwgdTggKm91aSlcbittd2lmaWV4X3NlYXJjaF9vdWlfaW5faWUoc3RydWN0IGllX2JvZHkgKmllYm9keSwgdTggKm91aSwgaW50IGllX2xlbilcbiB7XG4rXHRjb25zdCBzaXplX3QgcHRrX2JvZHlfb2Zmc2V0ID0gb2Zmc2V0b2Yoc3RydWN0IGllX2JvZHksIHB0a19ib2R5KTtcbiBcdHU4IGNvdW50O1xuIFxuK1x0LyogaWVfbGVuIGlzIHRoZSBudW1iZXIgb2YgYnl0ZXMgYXZhaWxhYmxlIGF0IGllYm9keS4gS2VlcCBpdCBzaWduZWRcbitcdCAqIGFuZCByZWplY3QgYSBuZWdhdGl2ZSAodW5kZXJmbG93ZWQpIGxlbmd0aCBiZWZvcmUgdGhlIHVuc2lnbmVkXG4rXHQgKiBjb21wYXJpc29ucyBiZWxvdywgc28gYSBzbWFsbCBvciB6ZXJvIElFIGxlbmd0aCBjYW5ub3Qgd3JhcC5cbitcdCAqL1xuK1x0aWYgKGllX2xlbiBcdTAwM2MgMCB8fCAoc2l6ZV90KWllX2xlbiBcdTAwM2MgcHRrX2JvZHlfb2Zmc2V0KVxuK1x0XHRyZXR1cm4gTVdJRklFWF9PVUlfTk9UX1BSRVNFTlQ7XG4rXG4gXHRjb3VudCA9IGllYm9keS1cdTAwM2VwdGtfY250WzBdO1xuIFxuK1x0LyogUmVqZWN0IGFuIE9VSSBjb3VudCB3aG9zZSBsaXN0IHdvdWxkIHJ1biBwYXN0IHRoZSBlbGVtZW50LiAqL1xuK1x0aWYgKHB0a19ib2R5X29mZnNldCArIGNvdW50ICogc2l6ZW9mKGllYm9keS1cdTAwM2VwdGtfYm9keSkgXHUwMDNlIChzaXplX3QpaWVfbGVuKVxuK1x0XHRyZXR1cm4gTVdJRklFWF9PVUlfTk9UX1BSRVNFTlQ7XG4rXG4gXHQvKiBUaGVyZSBjb3VsZCBiZSBtdWx0aXBsZSBPVUlzIGZvciBQVEsgaGVuY2VcbiBcdCAgIDEpIFRha2UgdGhlIGxlbmd0aC5cbiBcdCAgIDIpIENoZWNrIGFsbCB0aGUgT1VJcyBmb3IgQUVTLlxuQEAgLTE0MywxMSArMTU1LDE0IEBAIG13aWZpZXhfaXNfcnNuX291aV9wcmVzZW50KHN0cnVjdCBtd2lmaWV4X2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjLCB1MzIgY2lwaGVyKVxuIFx0dTggcmV0ID0gTVdJRklFWF9PVUlfTk9UX1BSRVNFTlQ7XG4gXG4gXHRpZiAoaGFzX2llZWVfaGRyKGJzc19kZXNjLVx1MDAzZWJjbl9yc25faWUsIFdMQU5fRUlEX1JTTikpIHtcbitcdFx0aW50IGllX2xlbiA9IChpbnQpYnNzX2Rlc2MtXHUwMDNlYmNuX3Jzbl9pZS1cdTAwM2VpZWVlX2hkci5sZW4gLVxuK1x0XHRcdFJTTl9HVEtfT1VJX09GRlNFVDtcbitcbiBcdFx0aWVib2R5ID0gKHN0cnVjdCBpZV9ib2R5ICopXG4gXHRcdFx0ICgoKHU4ICopIGJzc19kZXNjLVx1MDAzZWJjbl9yc25faWUtXHUwMDNlZGF0YSkgK1xuIFx0XHRcdCAgUlNOX0dUS19PVUlfT0ZGU0VUKTtcbiBcdFx0b3VpID0gXHUwMDI2bXdpZmlleF9yc25fb3VpW2NpcGhlcl1bMF07XG4tXHRcdHJldCA9IG13aWZpZXhfc2VhcmNoX291aV9pbl9pZShpZWJvZHksIG91aSk7XG4rXHRcdHJldCA9IG13aWZpZXhfc2VhcmNoX291aV9pbl9pZShpZWJvZHksIG91aSwgaWVfbGVuKTtcbiBcdFx0aWYgKHJldClcbiBcdFx0XHRyZXR1cm4gcmV0O1xuIFx0fVxuQEAgLTE2OSwxMCArMTg0LDE0IEBAIG13aWZpZXhfaXNfd3BhX291aV9wcmVzZW50KHN0cnVjdCBtd2lmaWV4X2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjLCB1MzIgY2lwaGVyKVxuIFx0dTggcmV0ID0gTVdJRklFWF9PVUlfTk9UX1BSRVNFTlQ7XG4gXG4gXHRpZiAoaGFzX3ZlbmRvcl9oZHIoYnNzX2Rlc2MtXHUwMDNlYmNuX3dwYV9pZSwgV0xBTl9FSURfVkVORE9SX1NQRUNJRklDKSkge1xuK1x0XHRpbnQgaWVfbGVuID0gKGludClic3NfZGVzYy1cdTAwM2ViY25fd3BhX2llLVx1MDAzZXZlbmRfaGRyLmxlbiAtXG4rXHRcdFx0KGludClzaXplb2YoYnNzX2Rlc2MtXHUwMDNlYmNuX3dwYV9pZS1cdTAwM2V2ZW5kX2hkci5vdWkpIC1cbitcdFx0XHRXUEFfR1RLX09VSV9PRkZTRVQ7XG4rXG4gXHRcdGllYm9keSA9IChzdHJ1Y3QgaWVfYm9keSAqKSgodTggKilic3NfZGVzYy1cdTAwM2ViY25fd3BhX2llLVx1MDAzZWRhdGEgK1xuIFx0XHRcdFx0XHQgICAgV1BBX0dUS19PVUlfT0ZGU0VUKTtcbiBcdFx0b3VpID0gXHUwMDI2bXdpZmlleF93cGFfb3VpW2NpcGhlcl1bMF07XG4tXHRcdHJldCA9IG13aWZpZXhfc2VhcmNoX291aV9pbl9pZShpZWJvZHksIG91aSk7XG4rXHRcdHJldCA9IG13aWZpZXhfc2VhcmNoX291aV9pbl9pZShpZWJvZHksIG91aSwgaWVfbGVuKTtcbiBcdFx0aWYgKHJldClcbiBcdFx0XHRyZXR1cm4gcmV0O1xuIFx0fVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTQ6NTI6MzUuMTYzMTg5ODIyWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjM2NjMzODMzMDEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFdpcmVsZXNzIERyaXZlciBQYXRjaCBmb3IgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgdHdlYWtzIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jYC4gSXQgbG9va3MgbGlrZSBpdCdzIGFkZHJlc3NpbmcgYSBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyByZWFkIHZ1bG5lcmFiaWxpdHkgaW4gYG13aWZpZXhfc2VhcmNoX291aV9pbl9pZWAgYnkgYWRkaW5nIHNvbWUgYm91bmRzIGNoZWNraW5nLiBTbWFydCBtb3ZlLCBnb29kIHRvIHNlZSBwcm9hY3RpdmUgc2VjdXJpdHkgbWVhc3VyZXMuIFRoZXkndmUgYWxzbyB1cGRhdGVkIGBtd2lmaWV4X2lzX3Jzbl9vdWlfcHJlc2VudGAgYW5kIGBtd2lmaWV4X2lzX3dwYV9vdWlfcHJlc2VudGAgdG8gcGFzcyB0aGUgYGllX2xlbmAgYWxvbmcgdG8gdGhhdCBmdW5jdGlvbiwgd2hpY2ggbWFrZXMgcGVyZmVjdCBzZW5zZSBpbiB0aGlzIGNvbnRleHQuXG5cbk15IGluaXRpYWwgdGhvdWdodCBpcywgXCJjYW4gdGhpcyBkcml2ZXIgYmUgZnV6emVkIGVmZmVjdGl2ZWx5P1wiIEl0J3MgYSBNYXJ2ZWxsIFdpRmktRXggZHJpdmVyLCB3aGljaCBtZWFucyBpdCdzIGEgd2lyZWxlc3MgZHJpdmVyLCBhbmQgd2lyZWxlc3MgZHJpdmVycyBhcmUgYWx3YXlzIGludGVyZXN0aW5nIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLiBIb3dldmVyLCB0aGV5J3JlIG9mdGVuIHZlcnkgaGFyZHdhcmUtc3BlY2lmaWMsIHNvIHRoYXQncyB0aGUgaW1tZWRpYXRlIHF1ZXN0aW9uLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSBpbnRlcmZhY2UuIElzIHRoaXMgYSBVU0IsIFNESU8sIG9yIFBDSWUgZHJpdmVyP1xuXG5JJ2xsIGNoZWNrIHRoZSBkaXJlY3Rvcnkgc3RydWN0dXJlIGFnYWluOiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2AuIFRoYXQgc2hvdWxkIGdpdmUgbWUgc29tZSBjbHVlcy4gVGhlbiwgSSBkZWZpbml0ZWx5IG5lZWQgdG8gZGlnIGludG8gdGhlIEtjb25maWcgdG8gdW5kZXJzdGFuZCB0aGUgaGFyZHdhcmUgZGVwZW5kZW5jaWVzIGFuZCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEZyb20gdGhlcmUsIEkgY2FuIGJldHRlciBhc3Nlc3MgaXRzIGZ1enphYmlsaXR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODU5LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjA2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTQ6NTY6MzEuNzk3MDI1MzY0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1MzU0MTg1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNV0lGSUVYXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6Mjpjb25maWcgTVdJRklFWFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgV2lGaS1FeCBEcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0xMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzoxMjpjb25maWcgTVdJRklFWF9TRElPXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMTMtXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFNEODc4Ni9TRDg3ODcvU0Q4Nzk3L1NEODg4Ny9TRDg4OTcvU0Q4OTc3L1NEODk3OC9TRDg5ODcvU0Q4OTk3XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6MjU6Y29uZmlnIE1XSUZJRVhfUENJRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTI2LVxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBQQ0lFIDg3NjYvODg5Ny84OTk3XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6Mzc6Y29uZmlnIE1XSUZJRVhfVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzgtXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFVTQjg3NjYvODc5Ny84OTk3XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNDo1NjozMS44NDIzODc0NDlaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDkxMDUwMTY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgdGhlIE1XSUZJRVhfVVNCIERyaXZlcioqXG5cbk9rYXksIHNvIEkgc2VlIHRoaXMgYE1XSUZJRVhfVVNCYCB0aGluZy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiVVNCIGRyaXZlcnMuLi4gdGhvc2UgYXJlIGZ1enphYmxlIVwiIFdlIGNhbiBoaXQgdGhlbSB3aXRoIGR1bW15LWhjZCBvciwgZXZlbiBiZXR0ZXIsIHNvbWV0aGluZyBsaWtlIHN5emthbGxlcidzIFVTQiBmdXp6aW5nIGNhcGFiaWxpdGllcy4gV2FpdCwgZG9lc24ndCBzeXprYWxsZXIgYWN0dWFsbHkgKmhhdmUqIFVTQiBmdXp6aW5nIHN1cHBvcnQ/IExldCdzIHZlcmlmeSB0aGF0LiBZZXAsIGNvbmZpcm1lZC4gT2theSwgdGhpcyBgTVdJRklFWF9VU0JgIGxvb2tzIGxpa2UgYSBwcmltZSB0YXJnZXQuXG5cbk5vdywgbGV0J3MgZGlnIGludG8gdGhpcyBzcGVjaWZpYyBkcml2ZXIuIEknbGwgc3RhcnQgd2l0aCBgbXdpZmlleF9zZWFyY2hfb3VpX2luX2llYCBhbmQgc2VlIHdoZXJlIHRoYXQncyBjYWxsZWQuIEhtbSwgaXQncyBjYWxsZWQgZnJvbSBgbXdpZmlleF9pc19yc25fb3VpX3ByZXNlbnRgIGFuZCBgbXdpZmlleF9pc193cGFfb3VpX3ByZXNlbnRgLiBPaywgbm93IGxldCdzIHRyYWNlIHdoZXJlICp0aG9zZSogYXJlIGNhbGxlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNhbGwgZmxvdyB0byBrbm93IHRoZSBhdHRhY2sgc3VyZmFjZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzgyOSwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNDo1NjozNy4zMzM0Mzk3OTlaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDYxMzI1ODUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXdpZmlleF9pc19yc25fb3VpX3ByZXNlbnRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jPTE1MD1zdGF0aWMgdThcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jOjE1MTptd2lmaWV4X2lzX3Jzbl9vdWlfcHJlc2VudChzdHJ1Y3QgbXdpZmlleF9ic3NkZXNjcmlwdG9yICpic3NfZGVzYywgdTMyIGNpcGhlcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTE1Mi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jPTM0Nz1td2lmaWV4X2lzX25ldHdvcmtfY29tcGF0aWJsZShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy00MTEtXFx0XFx0XFx0ICAgICBic3NfZGVzYy1cXHUwMDNlYmNuX2h0X2NhcCkgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jOjQxMjpcXHRcXHRcXHQgICAgIW13aWZpZXhfaXNfcnNuX291aV9wcmVzZW50KGJzc19kZXNjLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtNDEzLVxcdFxcdFxcdFxcdFxcdFxcdFxcdENJUEhFUl9TVUlURV9DQ01QKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtNDE0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM6NDE1OlxcdFxcdFxcdFxcdGlmIChtd2lmaWV4X2lzX3Jzbl9vdWlfcHJlc2VudFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtNDE2LVxcdFxcdFxcdFxcdFxcdFxcdChic3NfZGVzYywgQ0lQSEVSX1NVSVRFX1RLSVApKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE0OjU2OjM3LjM3OTU3Njc0NFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYxNDgwMDI1MjYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgc29tZW9uZSBkZWVwbHkgZmFtaWxpYXIgd2l0aCB0aGlzIGtpbmQgb2Ygc3lzdGVtOlxuXG4qKkFuYWx5emluZyBgbXdpZmlleF9pc19uZXR3b3JrX2NvbXBhdGlibGVgKipcblxuUmlnaHQsIHNvIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20gYG13aWZpZXhfaXNfbmV0d29ya19jb21wYXRpYmxlYC4uLiBobW0sIGxpa2VseSBkdXJpbmcgdGhlIHNjYW4gcmVzdWx0cyBwcm9jZXNzaW5nIHN0YWdlLiBUaGF0IG1ha2VzIHNlbnNlOyBpdCdzIHRoZSBuYXR1cmFsIHBsYWNlIHRvIGNoZWNrIGNvbXBhdGliaWxpdHkuIE5vdywgdGhlIHJlYWwgcXVlc3Rpb24gaXMsIHdoYXQgZXhhY3RseSBpcyBpdCAqZG9pbmcqPyBJIG5lZWQgdG8gZGl2ZSBpbnRvIHRoZSBkZWZpbml0aW9uIG9mIGBtd2lmaWV4X2lzX25ldHdvcmtfY29tcGF0aWJsZWAgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSBhbmQgaG93IGl0IGhhbmRsZXMgdGhlc2Ugc2NhbiByZXN1bHRzLiBMZXQncyBnZXQgdG8gaXQuIFRpbWUgdG8gZGlnIGluIGFuZCBzZWUgdGhlIGV4YWN0IGNoZWNrcyBhbmQgY3JpdGVyaWEgdGhpcyBmdW5jdGlvbiBlbXBsb3lzLiBUaGlzIGlzIHdoZXJlIHRoZSBjb3JlIGxvZ2ljIHdpbGwgYmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ2MDAsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNDo1NzozOC44NTk2MDY3NDZaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDcwNDk2MjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXdpZmlleF9pc19uZXR3b3JrX2NvbXBhdGlibGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jPTM0Nj1zdGF0aWMgczMyXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYzozNDc6bXdpZmlleF9pc19uZXR3b3JrX2NvbXBhdGlibGUoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTM0OC1cXHRcXHRcXHQgICAgICBzdHJ1Y3QgbXdpZmlleF9ic3NkZXNjcmlwdG9yICpic3NfZGVzYywgdTMyIG1vZGUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jPTE2MTk9aW50IG13aWZpZXhfY2hlY2tfbmV0d29ya19jb21wYXRpYmlsaXR5KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTE2MzEtXFx0XFx0Y2FzZSBOTDgwMjExX0lGVFlQRV9BREhPQzpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jOjE2MzI6XFx0XFx0XFx0cmV0ID0gbXdpZmlleF9pc19uZXR3b3JrX2NvbXBhdGlibGUocHJpdiwgYnNzX2Rlc2MsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0xNjMzLVxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICBwcml2LVxcdTAwM2Vic3NfbW9kZSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE0OjU3OjM4LjkwNjY2MjM4MVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MTQzNTQ2MTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKlRyYWNpbmcgdGhlIE5ldHdvcmsgQ29tcGF0aWJpbGl0eSBDaGVjayoqXG5cbkFscmlnaHQsIHNvIHRoZSBmdW5jdGlvbiBpbiBxdWVzdGlvbiBpcyBgbXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHlgLiBNeSBpbW1lZGlhdGUgcmVmbGV4IGlzIHRvIHVuZGVyc3RhbmQgaXRzIHBsYWNlIHdpdGhpbiB0aGUgYnJvYWRlciBmcmFtZXdvcmsuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBjYWxsaW5nIGNvbnRleHQuIExldCdzIHRyYWNlIGJhY2sgZnJvbSBgbXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHlgIGFuZCBxdWlja2x5IGlkZW50aWZ5IGl0cyBpbW1lZGlhdGUgdXBzdHJlYW0gY2FsbGVycy4gVGhpcyBpcyBlc3NlbnRpYWwgdG8gdW5kZXJzdGFuZCB0aGUgdHJpZ2dlciBjb25kaXRpb25zIGFuZCB0aGUgb3ZlcmFsbCBkZXNpZ24gaW50ZW50IGJlaGluZCB0aGlzIHBhcnRpY3VsYXIgY29tcGF0aWJpbGl0eSBjaGVjay4gSSdsbCBiZSBsb29raW5nIGZvciBjbHVlcyBpbiB0aGUgc3Vycm91bmRpbmcgY29kZSB0aGF0IHdpbGwgZXhwbGFpbiB3aHkgdGhlIGNoZWNrIGlzIG9jY3VycmluZywgYW5kIGhvcGVmdWxseSByZXZlYWwgc29tZSBpbnNpZ2h0cyBpbnRvIHRoZSBzcGVjaWZpYyBjcml0ZXJpYSBiZWluZyBldmFsdWF0ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUxMjUsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNDo1Nzo0Mi41MjEwMjMxMjVaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1MjUzMzg2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm13aWZpZXhfY2hlY2tfbmV0d29ya19jb21wYXRpYmlsaXR5XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaD0xNTQxPWludCBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xNTQyLVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgbXdpZmlleF9ic3NkZXNjcmlwdG9yICpic3NfZW50cnkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg6MTU0MzppbnQgbXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHkoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTE1NDQtXFx0XFx0XFx0XFx0XFx0c3RydWN0IG13aWZpZXhfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYz0xNTk0PWludCBtd2lmaWV4X2NtZF84MDJfMTFfc2NhbihzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqY21kLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0xNjE4LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM6MTYxOTppbnQgbXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHkoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTE2MjAtXFx0XFx0XFx0XFx0XFx0c3RydWN0IG13aWZpZXhfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jPTE3MDY9c3RhdGljIGludCBtd2lmaWV4X3VwZGF0ZV9jdXJyX2Jzc19wYXJhbXMoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMTcyMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jOjE3MjE6XFx0cmV0ID0gbXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHkocHJpdiwgYnNzX2Rlc2MpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMTcyMi1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jPTMzMj1pbnQgbXdpZmlleF9ic3Nfc3RhcnQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgc3RydWN0IGNmZzgwMjExX2JzcyAqYnNzLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jLTM3NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmM6Mzc1OlxcdFxcdHJldCA9IG13aWZpZXhfY2hlY2tfbmV0d29ya19jb21wYXRpYmlsaXR5KHByaXYsIGJzc19kZXNjKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmMtMzc2LVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmMtNDIyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYzo0MjM6XFx0XFx0cmV0ID0gbXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHkocHJpdiwgYnNzX2Rlc2MpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYy00MjQtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE0OjU3OjQyLjU2NjI4MTc1MVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MjI1MTc1MDEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBgbXdpZmlleGAgRHJpdmVyJ3MgUG90ZW50aWFsIEF0dGFjayBTdXJmYWNlKipcblxuT2theSwgc28gSSdtIHRyYWNraW5nIGRvd24gcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcyBpbiB0aGlzIGBtd2lmaWV4YCBkcml2ZXIuIEkgc2VlIHRoZXNlIHR3byBrZXkgZnVuY3Rpb25zLCBgbXdpZmlleF9ic3Nfc3RhcnRgIGFuZCBgbXdpZmlleF91cGRhdGVfY3Vycl9ic3NfcGFyYW1zYCwgYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcyB0aGV5J3JlIGxpa2VseSB0b3VjaGVkIGR1cmluZyBuZXR3b3JrIGNvbm5lY3Rpb24gb3Igc2NhbiByZXN1bHQgcHJvY2Vzc2luZy4gUHJldHR5IHN0YW5kYXJkIGZvciBhIGRyaXZlciwgZXNwZWNpYWxseSBvbmUgdGhhdCBpbnRlcmZhY2VzIHdpdGggYG1hYzgwMjExYCBhbmQgYGNmZzgwMjExYC4gQnV0IGhvbGQgb24uLi4gdGhpcyBgbXdpZmlleGAgZHJpdmVyIGlzIGEgKmZ1bGxtYWMqIGRyaXZlciwgc28gdGhhdCBtZWFucyB0aGUgZmlybXdhcmUgaXMgZmVlZGluZyBpdCBzY2FuIHJlc3VsdHMuIFRoaXMgY2hhbmdlcyB0aGluZ3MuXG5cblRoZSBmaXJtd2FyZS10by1ob3N0IGludGVyZmFjZSB2aWEgVVNCIGlzIG5vdyB0aGUganVpY3kgdGFyZ2V0LiBJZiBJIGNhbiBmdXp6IHRoYXQgaW50ZXJmYWNlIGFuZCBzaW11bGF0ZSBzY2FuIHJlc3VsdHMgZnJvbSB0aGUgZmlybXdhcmUsIHRoYXQncyB3aGVyZSBJIGNhbiBsaWtlbHkgdHJpZ2dlciBzb21ldGhpbmcgaW50ZXJlc3RpbmcuIEkgbmVlZCB0byBmb2N1cyBvbiBob3cgdGhlIGRyaXZlciBwcm9jZXNzZXMgdGhlc2UgcmVzdWx0cy4gSeKAmWxsIHN0YXJ0IGJ5IGRpZ2dpbmcgaW50byBgbXdpZmlleF91cGRhdGVfY3Vycl9ic3NfcGFyYW1zYCBhbmQgYG13aWZpZXhfYnNzX3N0YXJ0YCBkaXJlY3RseS5cblxuQWhhLCBgbXdpZmlleF9ic3Nfc3RhcnRgIGlzIGFjdHVhbGx5IGNhbGxlZCBmcm9tIGBtd2lmaWV4X2NmZzgwMjExX2Nvbm5lY3RgIG9yIG90aGVyIGBjZmc4MDIxMWAgY2FsbGJhY2tzLCB3aGljaCBtZWFucyBpdCByZWNlaXZlcyBhIGBjZmc4MDIxMV9ic3NgIHN0cnVjdCBhcyBpbnB1dC4gSW50ZXJlc3RpbmcuLi4gYnV0IHRoYXTigJlzIG5vdCBxdWl0ZSBpdC4gSSBhbHNvIHNlZSB0aGF0IGBtd2lmaWV4X2NoZWNrX25ldHdvcmtfY29tcGF0aWJpbGl0eWAgZnVuY3Rpb24gdGFrZXMgYSBgbXdpZmlleF9ic3NkZXNjcmlwdG9yYCBzdHJ1Y3QuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGV4YWN0bHkgaG93IHRoaXMgYG13aWZpZXhfYnNzZGVzY3JpcHRvcmAgaXMgcG9wdWxhdGVkLiBUaGF0J3MgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgZmlybXdhcmUgZGF0YSBmbG93cyBpbnRvIHRoZSBkcml2ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYwNTksIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNDMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTQ6NTc6NDguNzkxNDU5MTQ0WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Nzc3MjY3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtd2lmaWV4X3VwZGF0ZV9jdXJyX2Jzc19wYXJhbXNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jPTE2NjI9c3RhdGljIGludCBtd2lmaWV4X3NhdmVfaGlkZGVuX3NzaWRfY2hhbm5lbHMoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMTcwNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jOjE3MDY6c3RhdGljIGludCBtd2lmaWV4X3VwZGF0ZV9jdXJyX2Jzc19wYXJhbXMoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTE3MDctXFx0XFx0XFx0XFx0XFx0ICBzdHJ1Y3QgY2ZnODAyMTFfYnNzICpic3MpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jPTE3NDY9bXdpZmlleF9wYXJzZV9zaW5nbGVfcmVzcG9uc2VfYnVmKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsIHU4ICoqYnNzX2luZm8sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTE4OTMtXFx0XFx0XFx0XFx0XFx0ICAgIEVUSF9BTEVOKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jOjE4OTQ6XFx0XFx0XFx0XFx0XFx0bXdpZmlleF91cGRhdGVfY3Vycl9ic3NfcGFyYW1zKHByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0xODk1LVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgICBic3MpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNDo1Nzo0OC44MzkyMzc0MzlaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjA3NDUxODIwNzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEZpcm13YXJlIFJlc3BvbnNlIEhhbmRsaW5nKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYG13aWZpZXhfcGFyc2Vfc2luZ2xlX3Jlc3BvbnNlX2J1ZmAgaGVyZS4gSXQncyBjbGVhciB0aGlzIGZ1bmN0aW9uIGlzIHRoZSBjZW50cmFsIHBvaW50IGZvciBwYXJzaW5nIHRoZSByZXNwb25zZSBidWZmZXIgY29taW5nIGRpcmVjdGx5IGZyb20gdGhlIGZpcm13YXJlLiBBbmQgdGhlIGZpcm13YXJlLCBvZiBjb3Vyc2UsIGNhbiBiZSBmZWQgZGF0YSB0aHJvdWdoIGEgVVNCIGNvbm5lY3Rpb24sIHdoaWNoIG1ha2VzIHRoaXMgYSBwcmltZSB0YXJnZXQgZm9yIGZ1enppbmcuIEhtbSwgdGhpcyBpcyB3aGVyZSB0aGluZ3MgZ2V0IGludGVyZXN0aW5nLiBOb3csIEkgc2VlIHRoYXQgYG13aWZpZXhfdXBkYXRlX2N1cnJfYnNzX3BhcmFtc2AgZ2V0cyBjYWxsZWQgZnJvbSB3aXRoaW4gYG13aWZpZXhfcGFyc2Vfc2luZ2xlX3Jlc3BvbnNlX2J1ZmAuIFRoYXTigJlzIHdvcnRoIGludmVzdGlnYXRpbmcgZnVydGhlci4gSSBzaG91bGQgcHJvYmFibHkgZGl2ZSBpbnRvIGBtd2lmaWV4X3BhcnNlX3NpbmdsZV9yZXNwb25zZV9idWZgIGl0c2VsZiBhbmQgc2VlIHdoYXQncyByZWFsbHkgZ29pbmcgb24gaW4gdGhlcmUuIEl0J3MgYSBrZXkgZnVuY3Rpb24gdG8gdW5kZXJzdGFuZCB0aGUgc3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MDMwLCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTQ6NTg6MDkuNTg0NDIyNDkxWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNjE5Mzc4NTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXdpZmlleF9wYXJzZV9zaW5nbGVfcmVzcG9uc2VfYnVmXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYz0xNzQ1PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jOjE3NDY6bXdpZmlleF9wYXJzZV9zaW5nbGVfcmVzcG9uc2VfYnVmKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsIHU4ICoqYnNzX2luZm8sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0xNzQ3LVxcdFxcdFxcdFxcdCAgdTMyICpieXRlc19sZWZ0LCB1NjQgZndfdHNmLCB1OCAqcmFkaW9fdHlwZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM9MjEwNT1pbnQgbXdpZmlleF9yZXRfODAyXzExX3NjYW4oc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMjIzMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jOjIyMzI6XFx0XFx0cmV0ID0gbXdpZmlleF9wYXJzZV9zaW5nbGVfcmVzcG9uc2VfYnVmKHByaXYsIFxcdTAwMjZic3NfaW5mbyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTIyMzMtXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx1MDAyNmJ5dGVzX2xlZnQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jPTI2MDY9aW50IG13aWZpZXhfaGFuZGxlX2V2ZW50X2V4dF9zY2FuX3JlcG9ydChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0yNzIyLVxcdFxcdH1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jOjI3MjM6XFx0XFx0cmV0ID0gbXdpZmlleF9wYXJzZV9zaW5nbGVfcmVzcG9uc2VfYnVmKHByaXYsIFxcdTAwMjZic3NfaW5mbyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTI3MjQtXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx1MDAyNmJ5dGVzX2xlZnQsIGZ3X3RzZixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTQ6NTg6MDkuOTQ2MzY2MjI0WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0MjkxNTY1MDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBXaS1GaSBEcml2ZXIgVnVsbmVyYWJpbGl0eSoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiBsb29raW5nIGF0IHRoaXMgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHksIGFuZCBpdCBzZWVtcyBsaWtlIHdlIGhhdmUgYSBwcmV0dHkgY2xlYXIgcGF0aCBoZXJlLiBJIHNlZSB0aGF0IHRoZSBgbXdpZmlleF9yZXRfODAyXzExX3NjYW5gIGFuZCBgbXdpZmlleF9oYW5kbGVfZXZlbnRfZXh0X3NjYW5fcmVwb3J0YCBmdW5jdGlvbnMgYXJlIGNhbGxpbmcgYG13aWZpZXhfcGFyc2Vfc2luZ2xlX3Jlc3BvbnNlX2J1ZmAsIHdoaWNoIGlzIHdoZXJlIHdlJ3JlIGRpZ2dpbmcgaW50byB0aGUgc2NhbiByZXN1bHQgcHJvY2Vzc2luZyBmcm9tIHRoZSBmaXJtd2FyZS4gRXNzZW50aWFsbHksIHRoZSBmaXJtd2FyZSBzZW5kcyB0aGUgc2NhbiBkYXRhLCB0aGUgZHJpdmVyIHBhcnNlcyBpdCwgY2hlY2tzIGZvciBuZXR3b3JrIGNvbXBhdGliaWxpdHksIGFuZCBhIGtleSBwYXJ0IG9mIHRoYXQgcGFyc2luZyBpbnZvbHZlcyBleHRyYWN0aW5nIGFuZCBoYW5kbGluZyB0aGUgSW5mb3JtYXRpb24gRWxlbWVudHMgKElFcykuXG5cblRoZSBjb3JlIG9mIHRoZSBpc3N1ZSBsb29rcyB0byBiZSBhbiBvdXQtb2YtYm91bmRzIHJlYWQgd2l0aGluIHRoZSBgbXdpZmlleF9zZWFyY2hfb3VpX2luX2llYCBmdW5jdGlvbiwgYW5kIGl0J3MgaGFwcGVuaW5nIHdoZW4gZGVhbGluZyB3aXRoIHRoZSBSU04vV1BBIElFcy4gVGhhdCdzIGEgY2xhc3NpYyBhcmVhIGZvciB0aGVzZSB0eXBlcyBvZiBidWdzLCBhbmQsIGNvbnNpZGVyaW5nIHRoZSBmbG93LCBpdCBzZWVtcyAqdmVyeSogcmVhY2hhYmxlIGFuZCByaXBlIGZvciBmdXp6aW5nLiBJIGNhbiBhYnNvbHV0ZWx5IHNlZSBob3cgd2UgY291bGQgdHJpZ2dlciB0aGlzIHdpdGggc3BlY2lmaWNhbGx5IGNyYWZ0ZWQgc2NhbiByZXNwb25zZXMuXG5cblRoZSBkcml2ZXIgaXRzZWxmIGlzIGBNV0lGSUVYYCwgYW5kLCB0byBmdXp6IHRoaXMgZWZmZWN0aXZlbHksIGl0IGxvb2tzIGxpa2Ugd2UnbGwgbmVlZCB0byB1c2UgdGhlIGBNV0lGSUVYX1VTQmAgY29uZmlndXJhdGlvbi4gVGhhdCdzIG15IGltbWVkaWF0ZSBmb2N1cy4gSSdtIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgaWYgYE1XSUZJRVhfVVNCYCBoYXMgYW55IGRlcGVuZGVuY2llcyB0aGF0IHdlIG5lZWQgdG8gYmUgYXdhcmUgb2Ygb3Igc2F0aXNmeSBmaXJzdCwgYnV0IHRoaXMgbG9va3MgbGlrZSBhIGdvb2QgbGVhZC5cblxuXG4iLCJJbnB1dFRva2VucyI6Nzc3NywiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNDo1ODoxNS4zNzU1MjY1OVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTA0MjAzNTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1XSUZJRVhfVVNCXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnPTI1PWNvbmZpZyBNV0lGSUVYX1BDSUVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTM2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjM3OmNvbmZpZyBNV0lGSUVYX1VTQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTM4LVxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBVU0I4NzY2Lzg3OTcvODk5N1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTQ6NTg6MTUuNDI1OTUzNDA1WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0MjYxODQ0MDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBgTVdJRklFWF9VU0JgIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBNV0lGSUVYX1VTQmAuIExldCdzIGdldCByaWdodCB0byBpdCDigJMgd2hhdCdzIHRoaXMgZHJpdmVyIGFjdHVhbGx5ICpkZXBlbmRlbnQqIG9uPyBNeSBpbml0aWFsIGd1dCBjaGVjayBpcyB0byBmaWd1cmUgb3V0IHRoZSBhcmNoaXRlY3R1cmFsIGxheWVycyBpbnZvbHZlZC4gVGhpcyBsaWtlbHkgaW52b2x2ZXMgdW5kZXJzdGFuZGluZyB0aGUgVVNCIHN1YnN5c3RlbSBob29rcywgYW5kIHRoZSBwbGF0Zm9ybS1zcGVjaWZpYyBkZXZpY2UgdHJlZSBvciBjb25maWd1cmF0aW9uIHRoYXQgaWRlbnRpZmllcyB0aGUgc3BlY2lmaWMgV2ktRmkgYWRhcHRlci4gSSdtIGFzc3VtaW5nIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIGtlcm5lbCBtb2R1bGUgaGVyZSwgc28gSSBuZWVkIHRvIG1lbnRhbGx5IHRyYWNlIHRoZSBjYWxscy5cblxuRmlyc3QsIEkgbmVlZCB0byBrbm93IHRoZSBzcGVjaWZpYyBwbGF0Zm9ybS4gQXJlIHdlIG9uIGEgQnJvYWRjb20tYmFzZWQgc3lzdGVtLCBvciBzb21ldGhpbmcgZWxzZT8gVW5kZXJzdGFuZGluZyB0aGUgaGFyZHdhcmUgY29udGV4dCB3aWxsIGd1aWRlIHRoZSBuZXh0IHN0ZXAuIEFyZSB0aGVyZSBhbnkga25vd24gaXNzdWVzIHdpdGggdGhlIFVTQiBzdWJzeXN0ZW0gb24gdGhpcyBwbGF0Zm9ybSB0aGF0IGNvdWxkIGJlIHRyaWdnZXJpbmcgc29tZSBzb3J0IG9mIHVuZXhwZWN0ZWQgYmVoYXZpb3I/XG5cbk5leHQsIEknbGwgcHJvYmFibHkgd2FudCB0byBpZGVudGlmeSBpbmNsdWRlIGZpbGVzLCBzeW1ib2xzLCBhbmQgZnVuY3Rpb25zIHRoYXQgYXJlIGltcG9ydGVkIGZyb20gb3RoZXIgbW9kdWxlcy4gYG9iamR1bXBgIG9yIGBubWAgYXJlIG15IGZyaWVuZHMgaGVyZSB0byBxdWlja2x5IHNjYW4gdGhlIG1vZHVsZeKAmXMgc3ltYm9sIHRhYmxlLiBJJ20gaW50ZXJlc3RlZCBpbiB0aGUgbG93ZXItbGV2ZWwgVVNCIGRyaXZlciBpbnRlcmZhY2VzIChgdXNiX3JlZ2lzdGVyX2RyaXZlcmAsIGB1c2Jfc3VibWl0X3VyYmAsIGV0Yy4pIGFuZCBwb3NzaWJseSBhbnkgaW50ZXJhY3Rpb24gd2l0aCBmaXJtd2FyZSBsb2FkaW5nIG1lY2hhbmlzbXMgKGlmIHRoZSBhZGFwdGVyIG5lZWRzIGZpcm13YXJlKS4gV2hhdCBhYm91dCByZXNvdXJjZSBhbGxvY2F0aW9uPyBBcmUgdGhlcmUgYW55IHNoYXJlZCBtdXRleGVzIG9yIHNlbWFwaG9yZXMgdGhhdCBjb3VsZCBpbmRpY2F0ZSBwb3RlbnRpYWwgbG9ja2luZyBjb25mbGljdHMgd2l0aCBvdGhlciBtb2R1bGVzP1xuXG5BbHNvLCBkb24ndCBmb3JnZXQgdGhlIG9idmlvdXM6IHdoYXTigJlzIHRoZSBkZXZpY2UgSUQgZmlsdGVyaW5nPyBJIG5lZWQgdG8gY2hlY2sgdGhlIG1vZHVsZSBwYXJhbWV0ZXJzLCB0aGUgZGV2aWNlIElEcyB0aGUgZHJpdmVyIGNsYWltcyB0byBzdXBwb3J0LCBhbmQgd2hldGhlciB0aGVyZSBhcmUgYW55IGRlcGVuZGVuY2llcyBvbiB0aG9zZSBzcGVjaWZpYyBQQ0kvVVNCIElEcy5cblxuSSdsbCBiZSBzcGVjaWZpY2FsbHkgbG9va2luZyBmb3IgYW55IGRlcGVuZGVuY2llcyB0aGF0IGNvdWxkIGJsb2NrIHRoZSBtb2R1bGUgbG9hZCwgb3IgY3JlYXRlIGNvbmZsaWN0cyBsYXRlci4gRG9lcyBpdCByZWx5IG9uIGEgc3BlY2lmaWMgdmVyc2lvbiBvZiB0aGUgVVNCIHN0YWNrIG9yIG90aGVyIGtlcm5lbCBjb21wb25lbnRzPyBBbnkgdGhpcmQtcGFydHkgbGlicmFyaWVzIHRoaXMgbW9kdWxlIG1pZ2h0IGRlcGVuZCBvbj8gRmluYWxseSwgbGV0J3MgbG9vayBhdCB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UsIGFueSBjdXN0b20gSVJRIGhhbmRsaW5nIHJvdXRpbmVzIHRoYXQgYXJlIHNldCB1cC4gRnJvbSB0aGVyZSwgSSBjYW4gZGV0ZXJtaW5lIHRoZSBkZXBlbmRlbmNpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg0NTAsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNDo1ODoxOS44NTIxNDAxOTVaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTk0OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMzAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMzA6XFx0XFx0aGVscFxcbiAgMzE6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb24gTWFydmVsbFxcbiAgMzI6XFx0XFx0ICA4NzY2Lzg4OTcvODk5NyBjaGlwc2V0cyB3aXRoIFBDSWUgaW50ZXJmYWNlLlxcbiAgMzM6XFx0XFxuICAzNDpcXHRcXHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXFxuICAzNTpcXHRcXHQgIG13aWZpZXhfcGNpZS5cXG4gIDM2OlxcdFxcbiAgMzc6XFx0Y29uZmlnIE1XSUZJRVhfVVNCXFxuICAzODpcXHRcXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBXaUZpLUV4IERyaXZlciBmb3IgVVNCODc2Ni84Nzk3Lzg5OTdcXFwiXFxuICAzOTpcXHRcXHRkZXBlbmRzIG9uIE1XSUZJRVggXFx1MDAyNlxcdTAwMjYgVVNCXFxuICA0MDpcXHRcXHRzZWxlY3QgRldfTE9BREVSXFxuICA0MTpcXHRcXHRoZWxwXFxuICA0MjpcXHRcXHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciB3aXJlbGVzcyBhZGFwdGVycyBiYXNlZCBvbiBNYXJ2ZWxsXFxuICA0MzpcXHRcXHQgIDg3OTcvODk5NyBjaGlwc2V0IHdpdGggVVNCIGludGVyZmFjZS5cXG4gIDQ0OlxcdFxcbiAgNDU6XFx0XFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGl0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlIGNhbGxlZFxcbiAgNDY6XFx0XFx0ICBtd2lmaWV4X3VzYi5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTQ6NTg6MTkuODUyMjAxODE1WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5MTEzNjIwOTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyBJIHNlZSBpdDpcblxuKipEZXBlbmRlbmN5IERlZXAgRGl2ZSoqXG5cbk9rYXksIHNvIHRoZSByZWFsIGNvcmUgb2YgdGhpcyBpc3N1ZSBoaW5nZXMgb24gdHdvIHNwZWNpZmljIGNvbXBvbmVudHM6IGBNV0lGSUVYYCBhbmQgYFVTQmAuIEV2ZXJ5dGhpbmcgZG93bnN0cmVhbSBpcyBjb250aW5nZW50IG9uIHVuZGVyc3RhbmRpbmcgdGhlaXIgcm9sZXMgYW5kIGhvdyB0aGV5IGludGVyYWN0LiBUaGUgc21hcnQgbW92ZSBoZXJlIGlzIHRvIHN0YXJ0IHdpdGggYSBkZXBlbmRlbmN5IGFuYWx5c2lzIG9mIGBNV0lGSUVYYC4gSSBuZWVkIHRvIHBlZWwgYmFjayB0aGUgbGF5ZXJzIGFuZCB1bmRlcnN0YW5kIGV2ZXJ5dGhpbmcgdGhhdCBgTVdJRklFWGAgcmVsaWVzIG9uLiBUaGF0IHdpbGwgZ2l2ZSBtZSBhIGNsZWFyZXIgcGljdHVyZSBvZiB0aGUgbGFuZHNjYXBlIGFuZCB3aGVyZSBhbnkgcG90ZW50aWFsIGJvdHRsZW5lY2tzIG9yIGNvbmZsaWN0cyBtaWdodCByZXNpZGUuIFdlIGNhbiB0aGVuIGFkZHJlc3MgYFVTQmAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkyMDAsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE0OjU4OjIyLjc2MzU2Njc0M1oiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MDUyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIE1XSUZJRVhcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIFdpRmktRXggRHJpdmVyXFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBDRkc4MDIxMVxcbiAgIDU6XFx0XFx0aGVscFxcbiAgIDY6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb24gTWFydmVsbFxcbiAgIDc6XFx0XFx0ICA4MDIuMTFuL2FjIGNoaXBzZXRzLlxcbiAgIDg6XFx0XFxuICAgOTpcXHRcXHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXFxuICAxMDpcXHRcXHQgIG13aWZpZXguXFxuICAxMTpcXHRcXG4gIDEyOlxcdGNvbmZpZyBNV0lGSUVYX1NESU9cXG4gIDEzOlxcdFxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBTRDg3ODYvU0Q4Nzg3L1NEODc5Ny9TRDg4ODcvU0Q4ODk3L1NEODk3Ny9TRDg5NzgvU0Q4OTg3L1NEODk5N1xcXCJcXG4gIDE0OlxcdFxcdGRlcGVuZHMgb24gTVdJRklFWCBcXHUwMDI2XFx1MDAyNiBNTUNcXG4gIDE1OlxcdFxcdHNlbGVjdCBGV19MT0FERVJcXG4gIDE2OlxcdFxcdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxcbiAgMTc6XFx0XFx0aGVscFxcbiAgMTg6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb24gTWFydmVsbFxcbiAgMTk6XFx0XFx0ICA4Nzg2Lzg3ODcvODc5Ny84ODg3Lzg4OTcvODk3Ny84OTc4Lzg5ODcvODk5NyBjaGlwc2V0cyB3aXRoXFxuICAyMDpcXHRcXHQgIFNESU8gaW50ZXJmYWNlLiBTRDg5NzggaXMgYWxzbyBrbm93biBhcyBOWFAgSVc0MTYuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE0OjU4OjIyLjc2MzYzOTI3M1oiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNDcyMzY0ODI5NjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRGVwZW5kZW5jeSBBbmFseXNpcyBhbmQgRnVuY3Rpb24gSWRlbnRpZmljYXRpb24qKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZyb20gYSBkZXBlbmRlbmN5IHN0YW5kcG9pbnQsIGl0IGxvb2tzIGxpa2UgYE1XSUZJRVhgIGlzIGJ1aWx0IHVwb24gYENGRzgwMjExYCwgYW5kIGBNV0lGSUVYX1VTQmAgZnVydGhlciBkZXBlbmRzIG9uIGJvdGggYE1XSUZJRVhgIGFuZCB0aGUgYFVTQmAgc3Vic3lzdGVtLiBTbywgYXQgYSBtaW5pbXVtLCB3ZSdyZSB0YWxraW5nIGFib3V0IGBNV0lGSUVYYCwgYE1XSUZJRVhfVVNCYCwgYENGRzgwMjExYCwgYW5kIGBVU0JgLiBIb2xkIG9uLi4uIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgc29tZXRoaW5nLiBSaWdodCwgYE1BQzgwMjExYCByZWxpZXMgb24gYENGRzgwMjExYCwgbm90IHRoZSBvdGhlciB3YXkgYXJvdW5kLiBUaGlzIGNvbmZpcm1zIHRoYXQgYENGRzgwMjExYCBpcyBvdXIgZm91bmRhdGlvbmFsIGVsZW1lbnQgaGVyZS4gTm93LCBsZXQncyBtYWtlIHN1cmUgd2UgaGF2ZW4ndCBtaXNzZWQgYW55IG90aGVyIGtleSBkZXBlbmRlbmNpZXMuIEFoLCBgQ0ZHODAyMTFgIG9wdGlvbmFsbHkgZGVwZW5kcyBvbiBgUkZLSUxMYCBhbmQgYWxzbyBgV0xBTmAgd2hpY2ggaXMgbGlrZWx5IGluaGVyZW50LiBCdXQgZm9yIHRoaXMgZGlzY3Vzc2lvbiwgdGhlIHByaW1hcnkgb25lcyB3ZSBhcmUgZGlzY3Vzc2luZyBhcmUgYE1XSUZJRVhgLCBgTVdJRklFWF9VU0JgLCBgQ0ZHODAyMTFgLCBhbmQgYFVTQmAuXG5cbk5vdywgbGV0J3Mgc3dpdGNoIGdlYXJzIGFuZCBwaW5wb2ludCB0aGUgY3JpdGljYWwgZnVuY3Rpb25zIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcuIEkgc2VlIHRoZSBwYXRjaCBtb2RpZmllcyBgbXdpZmlleF9zZWFyY2hfb3VpX2luX2llYC4gVGhhdCdzIGEgc3RhdGljIGZ1bmN0aW9uLiBJdCdzIGNhbGxlZCBieSBgbXdpZmlleF9pc19yc25fb3VpX3ByZXNlbnRgIGFuZCBgbXdpZmlleF9pc193cGFfb3VpX3ByZXNlbnRgLiBJJ2xsIGNvbmZpcm0uIFllcywgdGhleSdyZSBib3RoIGFsc28gc3RhdGljLiBPaywgbmV4dCBmdW5jdGlvbiBpcyBgbXdpZmlleF9pc19uZXR3b3JrX2NvbXBhdGlibGVgLCBzdGF0aWMuIFRoZW4gYG13aWZpZXhfY2hlY2tfbmV0d29ya19jb21wYXRpYmlsaXR5YCBpcyBub24tc3RhdGljLiBgbXdpZmlleF9wYXJzZV9zaW5nbGVfcmVzcG9uc2VfYnVmYCBpcyBzdGF0aWMuIE5leHQsIGBtd2lmaWV4X3JldF84MDJfMTFfc2NhbmAgaXMgbm9uLXN0YXRpYy4gRmluYWxseSwgYG13aWZpZXhfaGFuZGxlX2V2ZW50X2V4dF9zY2FuX3JlcG9ydGAgaXMgbm9uLXN0YXRpYyBhbmQgYG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWVgIGlzIG5vbi1zdGF0aWMuIEdvdCBpdC4gVGhhdCBzaG91bGQgZG8gaXQhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk3NjQsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NjAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNTowMDo1MC4wMDAxMjUzMjdaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzMDI2ODc5NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtd2lmaWV4X2NoZWNrX25ldHdvcmtfY29tcGF0aWJpbGl0eVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg9MTU0MT1pbnQgbXdpZmlleF91cGRhdGVfYnNzX2Rlc2Nfd2l0aF9pZShzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTU0Mi1cXHRcXHRcXHRcXHQgICAgc3RydWN0IG13aWZpZXhfYnNzZGVzY3JpcHRvciAqYnNzX2VudHJ5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oOjE1NDM6aW50IG13aWZpZXhfY2hlY2tfbmV0d29ya19jb21wYXRpYmlsaXR5KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xNTQ0LVxcdFxcdFxcdFxcdFxcdHN0cnVjdCBtd2lmaWV4X2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM9MTU5ND1pbnQgbXdpZmlleF9jbWRfODAyXzExX3NjYW4oc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKmNtZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMTYxOC0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jOjE2MTk6aW50IG13aWZpZXhfY2hlY2tfbmV0d29ya19jb21wYXRpYmlsaXR5KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0xNjIwLVxcdFxcdFxcdFxcdFxcdHN0cnVjdCBtd2lmaWV4X2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYz0xNzA2PXN0YXRpYyBpbnQgbXdpZmlleF91cGRhdGVfY3Vycl9ic3NfcGFyYW1zKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTE3MjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYzoxNzIxOlxcdHJldCA9IG13aWZpZXhfY2hlY2tfbmV0d29ya19jb21wYXRpYmlsaXR5KHByaXYsIGJzc19kZXNjKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTE3MjItXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYz0zMzI9aW50IG13aWZpZXhfYnNzX3N0YXJ0KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsIHN0cnVjdCBjZmc4MDIxMV9ic3MgKmJzcyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYy0zNzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jOjM3NTpcXHRcXHRyZXQgPSBtd2lmaWV4X2NoZWNrX25ldHdvcmtfY29tcGF0aWJpbGl0eShwcml2LCBic3NfZGVzYyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jLTM3Ni1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jLTQyMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmM6NDIzOlxcdFxcdHJldCA9IG13aWZpZXhfY2hlY2tfbmV0d29ya19jb21wYXRpYmlsaXR5KHByaXYsIGJzc19kZXNjKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmMtNDI0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNTowMDo1MC40MzAzOTg4NjJaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDYwNTg2NDgzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkluaXRpYWwgQXNzZXNzbWVudCBvZiBGdW5jdGlvbiBDYWxscyoqXG5cbkFscmlnaHQsIGxldCdzIHNlZS4uLiBgbXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHlgIGZlZWxzIGxpa2UgYSBnb29kLCBzb2xpZCBhbmNob3IgcG9pbnQgdG8gc3RhcnQgd2l0aC4gSXQgbGlrZWx5IGhhbmRsZXMgc29tZSBmb3VuZGF0aW9uYWwgdmFsaWRhdGlvbiBvZiBuZXR3b3JrIHBhcmFtZXRlcnMuIEkgY2FuIHNlZSBob3cgZm9jdXNpbmcgb24gaXRzIGludGVybmFsIHdvcmtpbmdzLCB0aGUgY29uZGl0aW9uYWwgY2hlY2tzIGl0IHBlcmZvcm1zLCBjb3VsZCBiZSBmcnVpdGZ1bCBpbiBkaWFnbm9zaW5nIGlzc3Vlcy5cblxuTm93LCB3aGF0IGFib3V0IGBtd2lmaWV4X3JldF84MDJfMTFfc2NhbmA/IFRoYXQgb25lJ3MgZ290IG1lIGludHJpZ3VlZCB0b28uIEl0J3Mgb2J2aW91c2x5IHRpZWQgdG8gdGhlIHNjYW5uaW5nIHByb2Nlc3MgaXRzZWxmLiBUaGlzIGNvdWxkIGJlIHdoZXJlIGNvbXBhdGliaWxpdHkgcHJvYmxlbXMgYWN0dWFsbHkgbWFuaWZlc3QsIG9yIHdoZXJlIHRoZSB2YWxpZGF0aW9uIGZhaWx1cmVzIGdldCBzdXJmYWNlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgaXQgbGVhbnMgb24gdGhlIGZ1bmN0aW9uIGNhbGwgbWVudGlvbmVkIGVhcmxpZXIuIERvZXMgaXQgKnVzZSogdGhlIG90aGVyIGZ1bmN0aW9uLCBvciBpcyBpdCBtb3JlIGxpa2UgYSBjb21wbGVtZW50YXJ5IGZ1bmN0aW9uP1xuXG5cbiIsIklucHV0VG9rZW5zIjoxMTQ0OCwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE1OjAwOjU1LjAzNjI2NjA1NFoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU1OTI3NTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXdpZmlleF9yZXRfODAyXzExX3NjYW5cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oPTExNTc9dm9pZCBtd2lmaWV4X3F1ZXVlX3NjYW5fY21kKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xMTU4LVxcdFxcdFxcdCAgICBzdHJ1Y3QgY21kX2N0cmxfbm9kZSAqY21kX25vZGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg6MTE1OTppbnQgbXdpZmlleF9yZXRfODAyXzExX3NjYW4oc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTExNjAtXFx0XFx0XFx0ICAgIHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpyZXNwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg9MTIzOT1pbnQgbXdpZmlleF9jbWRfODAyXzExX3NjYW5fZXh0KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTEyNDEtXFx0XFx0XFx0XFx0dm9pZCAqZGF0YV9idWYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg6MTI0MjppbnQgbXdpZmlleF9yZXRfODAyXzExX3NjYW5fZXh0KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xMjQzLVxcdFxcdFxcdFxcdHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpyZXNwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM9MTEzMD1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM6MTEzMTptd2lmaWV4X3JldF84MDJfMTFfc2Nhbl9nZXRfdGx2X3B0cnMoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTExMzItXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19kYXRhICp0bHYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jPTIwNTg9dm9pZCBtd2lmaWV4X2NhbmNlbF9zY2FuKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTIxMDQtICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYzoyMTA1OmludCBtd2lmaWV4X3JldF84MDJfMTFfc2NhbihzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMjEwNi1cXHRcXHRcXHQgICAgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3ApXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTIxNzQtXFx0ICAgVExWcyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM6MjE3NTpcXHRtd2lmaWV4X3JldF84MDJfMTFfc2Nhbl9nZXRfdGx2X3B0cnMoYWRhcHRlciwgdGx2X2RhdGEsIHRsdl9idWZfc2l6ZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTIxNzYtXFx0XFx0XFx0XFx0XFx0ICAgICBUTFZfVFlQRV9UU0ZUSU1FU1RBTVAsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTIxODEtXFx0ICAgVExWcyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM6MjE4MjpcXHRtd2lmaWV4X3JldF84MDJfMTFfc2Nhbl9nZXRfdGx2X3B0cnMoYWRhcHRlciwgdGx2X2RhdGEsIHRsdl9idWZfc2l6ZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTIxODMtXFx0XFx0XFx0XFx0XFx0ICAgICBUTFZfVFlQRV9DSEFOTkVMQkFORExJU1QsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jPTI0OTI9bXdpZmlleF91cGRhdGVfY2hhbl9zdGF0aXN0aWNzKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTI1MzQtLyogVGhpcyBmdW5jdGlvbiBoYW5kbGVzIHRoZSBjb21tYW5kIHJlc3BvbnNlIG9mIGV4dGVuZGVkIHNjYW4gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jOjI1MzU6aW50IG13aWZpZXhfcmV0XzgwMl8xMV9zY2FuX2V4dChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMjUzNi1cXHRcXHRcXHRcXHRzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqcmVzcClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jPTEyMTI9aW50IG13aWZpZXhfcHJvY2Vzc19zdGFfY21kcmVzcChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCB1MTYgY21kcmVzcF9ubyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jLTEyNDMtXFx0Y2FzZSBIb3N0Q21kX0NNRF84MDJfMTFfU0NBTjpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZHJlc3AuYzoxMjQ0OlxcdFxcdHJldCA9IG13aWZpZXhfcmV0XzgwMl8xMV9zY2FuKHByaXYsIHJlc3ApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jLTEyNDUtXFx0XFx0YWRhcHRlci1cXHUwMDNlY3Vycl9jbWQtXFx1MDAzZXdhaXRfcV9lbmFibGVkID0gZmFsc2U7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZHJlc3AuYy0xMjQ3LVxcdGNhc2UgSG9zdENtZF9DTURfODAyXzExX1NDQU5fRVhUOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jOjEyNDg6XFx0XFx0cmV0ID0gbXdpZmlleF9yZXRfODAyXzExX3NjYW5fZXh0KHByaXYsIHJlc3ApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jLTEyNDktXFx0XFx0YWRhcHRlci1cXHUwMDNlY3Vycl9jbWQtXFx1MDAzZXdhaXRfcV9lbmFibGVkID0gZmFsc2U7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZHJlc3AuYy0xMjUxLVxcdGNhc2UgSG9zdENtZF9DTURfODAyXzExX0JHX1NDQU5fUVVFUlk6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWRyZXNwLmM6MTI1MjpcXHRcXHRyZXQgPSBtd2lmaWV4X3JldF84MDJfMTFfc2Nhbihwcml2LCByZXNwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZHJlc3AuYy0xMjUzLVxcdFxcdGNmZzgwMjExX3NjaGVkX3NjYW5fcmVzdWx0cyhwcml2LVxcdTAwM2V3ZGV2LndpcGh5LCAwKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTU6MDA6NTUuMDgxODY2Mzc5WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYxNTg3NTY3OTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyBJIHNlZSBpdDpcblxuKipGb2N1c2luZyBpbiBvbiB0aGUgU2NhbiBQcm9jZXNzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlIGBtd2lmaWV4YCBkcml2ZXIgY29kZSwgYW5kIEkndmUgZ290IGEgc29saWQgaGFuZGxlIG9uIGhvdyB0aGUgc2NhbiBwcm9jZXNzIGlzIGluaXRpYXRlZC4gVGhlIGtleSBoZXJlIGlzIHRoZSBsaW5rIGJldHdlZW4gYG13aWZpZXhfcmV0XzgwMl8xMV9zY2FuYCBhbmQgYG13aWZpZXhfcHJvY2Vzc19zdGFfY21kcmVzcGAuIEl0J3MgcHJldHR5IGNsZWFyIHRoYXQgYG13aWZpZXhfcmV0XzgwMl8xMV9zY2FuYCBnZXRzIGNhbGxlZCBkaXJlY3RseSB3aXRoaW4gdGhlIGZpcm13YXJlJ3MgY29tbWFuZCByZXNwb25zZSBoYW5kbGluZy4gVGhhdCBtYWtlcyBpdCBhIHJlYWxseSB2YWx1YWJsZSBwb2ludCBvZiBmb2N1cywgZG9lc24ndCBpdD8gSXQncyB0aGUgY2VudHJhbCBzeW1ib2wgZm9yIHRoZSA4MDIuMTEgc2NhbiBvcGVyYXRpb24ncyByZXR1cm4gcGF0aC5cblxuQnV0IHdhaXQsIHdoYXQgYWJvdXQgYG13aWZpZXhfaGFuZGxlX2V2ZW50X2V4dF9zY2FuX3JlcG9ydGA/IEkgbmVlZCB0byB0aGluayB0aHJvdWdoIGhvdyB0aGF0IGZpdHMgaW50byB0aGUgb3ZlcmFsbCBmbG93LiBJdCBpcyBlc3NlbnRpYWwgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGRyaXZlciBoYW5kbGVzIGV4dGVuZGVkIHNjYW4gcmVwb3J0cyBpbiBvcmRlciB0byBpZGVudGlmeSBwb3RlbnRpYWwgc291cmNlcyBvZiBpc3N1ZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzMjE5LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTU6MDE6MDEuMjQwNjI2OTc5WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTA2NzY5NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtd2lmaWV4X2hhbmRsZV9ldmVudF9leHRfc2Nhbl9yZXBvcnRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oPTEyNDI9aW50IG13aWZpZXhfcmV0XzgwMl8xMV9zY2FuX2V4dChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTI0My1cXHRcXHRcXHRcXHRzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqcmVzcCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaDoxMjQ0OmludCBtd2lmaWV4X2hhbmRsZV9ldmVudF9leHRfc2Nhbl9yZXBvcnQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTEyNDUtXFx0XFx0XFx0XFx0XFx0IHZvaWQgKmJ1Zik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jPTI1MzU9aW50IG13aWZpZXhfcmV0XzgwMl8xMV9zY2FuX2V4dChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0yNjA1LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM6MjYwNjppbnQgbXdpZmlleF9oYW5kbGVfZXZlbnRfZXh0X3NjYW5fcmVwb3J0KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0yNjA3LVxcdFxcdFxcdFxcdFxcdCB2b2lkICpidWYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2V2ZW50LmM9Njk2PWludCBtd2lmaWV4X3Byb2Nlc3Nfc3RhX2V2ZW50KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2V2ZW50LmMtODczLVxcdFxcdFxcdFxcdFxcdCAgIW5ldGlmX3J1bm5pbmcocHJpdi1cXHUwMDNlbmV0ZGV2KSkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9ldmVudC5jOjg3NDpcXHRcXHRcXHRyZXQgPSBtd2lmaWV4X2hhbmRsZV9ldmVudF9leHRfc2Nhbl9yZXBvcnQocHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2V2ZW50LmMtODc1LVxcdFxcdFxcdFxcdFxcdFxcdGFkYXB0ZXItXFx1MDAzZWV2ZW50X3NrYi1cXHUwMDNlZGF0YSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdWFwX2V2ZW50LmM9OTQ9aW50IG13aWZpZXhfcHJvY2Vzc191YXBfZXZlbnQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuYy0yNTMtXFx0XFx0aWYgKGFkYXB0ZXItXFx1MDAzZWV4dF9zY2FuKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuYzoyNTQ6XFx0XFx0XFx0cmV0dXJuIG13aWZpZXhfaGFuZGxlX2V2ZW50X2V4dF9zY2FuX3JlcG9ydChwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuYy0yNTUtXFx0XFx0XFx0XFx0XFx0XFx0YWRhcHRlci1cXHUwMDNlZXZlbnRfc2tiLVxcdTAwM2VkYXRhKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTU6MDE6MDEuMjg1Njk5MDM1WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwMDgyNDI0NTUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEZ1enppbmcgU3RyYXRlZ3kgZm9yIFRoaXMgRHJpdmVyKipcblxuT2theSwgc28gSSd2ZSBiZWVuIGxvb2tpbmcgYXQgdGhlIGV2ZW50IGhhbmRsaW5nIGluIHRoaXMgYG13aWZpZXhgIGRyaXZlciwgc3BlY2lmaWNhbGx5IGhvdyBpdCBwcm9jZXNzZXMgZXh0ZW5kZWQgc2NhbiByZXBvcnRzLiBgbXdpZmlleF9oYW5kbGVfZXZlbnRfZXh0X3NjYW5fcmVwb3J0YCBpcyB0cmlnZ2VyZWQgYnkgYG13aWZpZXhfcHJvY2Vzc19zdGFfZXZlbnRgIGFuZCBgbXdpZmlleF9wcm9jZXNzX3VhcF9ldmVudGAuIFRoZXNlIGFyZSBjbGVhcmx5IGV2ZW50IHByb2Nlc3NpbmcgZW50cnkgcG9pbnRzIHdpdGhpbiB0aGUgZmlybXdhcmUuIFRoYXQgc3VnZ2VzdHMgYSBnb29kIHN0cmF0ZWd5IGZvciBmdXp6aW5nOiBjb25jZW50cmF0ZSBvbiBhcmVhcyBhcm91bmQgdGhvc2UgZnVuY3Rpb25zLiBJbiBwYXJ0aWN1bGFyLCBib3RoIGBtd2lmaWV4X3JldF84MDJfMTFfc2NhbmAgYW5kIGBtd2lmaWV4X2hhbmRsZV9ldmVudF9leHRfc2Nhbl9yZXBvcnRgIGp1bXAgb3V0IGFzIGV4Y2VsbGVudCBmb2N1cyBwb2ludHMsIGFuZCBgbXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHlgIGxvb2tzIGxpa2UgYW5vdGhlciBwb3RlbnRpYWxseSBmcnVpdGZ1bCBhcmVhLlxuXG5TbyBoZXJlJ3Mgd2hhdCBJJ3ZlIGdvdDpcblxuKiAgICoqV29ydGhGdXp6aW5nOioqIFllcywgYWJzb2x1dGVseS5cbiogICAqKkZvY3VzU3ltYm9sczoqKiBJJ20gZ29pbmcgdG8gdGFyZ2V0IHRoZXNlIHByaW1hcmlseTpcbiAgICAqICAgYG13aWZpZXhfcmV0XzgwMl8xMV9zY2FuYFxuICAgICogICBgbXdpZmlleF9oYW5kbGVfZXZlbnRfZXh0X3NjYW5fcmVwb3J0YFxuICAgICogICBgbXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHlgXG5cbk5vdywgbGV0J3MgdGFsayBhYm91dCBlbmFibGluZyB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zLiBJIHNlZSB0aGF0IGBNV0lGSUVYYCBhbmQgYE1XSUZJRVhfVVNCYCBhcmUgZXNzZW50aWFsLiBgTVdJRklFWF9VU0JgIGRlcGVuZHMgb24gYE1XSUZJRVhgIGFuZCBgVVNCYC4gYE1XSUZJRVhgIGl0c2VsZiBkZXBlbmRzIG9uIGBDRkc4MDIxMWAuIEJ1dCB3YWl0LCBgVVNCYCBhbmQgYENGRzgwMjExYCBhcmUgcHJldHR5IGdlbmVyaWMgYW5kIHVzdWFsbHkgZW5hYmxlZCBieSBkZWZhdWx0LiBTbywgZm9yIGZ1enppbmcsIEknbGwganVzdCBsaXN0IGBNV0lGSUVYYCBhbmQgYE1XSUZJRVhfVVNCYC4gVGhhdCBzaG91bGQgYmUgc3VmZmljaWVudCB0byBnZXQgdGhlIHJlbGV2YW50IGNvZGUgY29tcGlsZWQgaW4sIHdpdGhvdXQgd29ycnlpbmcgYWJvdXQgZXh0cmFuZW91cyBkZXBlbmRlbmNpZXMgYXQgdGhpcyBwb2ludC4gVGltZSB0byBkb3VibGUtY2hlY2sgdGhhdCB0aGVyZSBhcmVuJ3QgYW55IG90aGVyIGNydWNpYWwgZGVwZW5kZW5jaWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDIxNywiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNTowMToxMS4zNjgxMjU5NDdaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzNzg1NTc1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNV0lGSUVYXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6Mjpjb25maWcgTVdJRklFWFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgV2lGaS1FeCBEcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0xMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzoxMjpjb25maWcgTVdJRklFWF9TRElPXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMTMtXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFNEODc4Ni9TRDg3ODcvU0Q4Nzk3L1NEODg4Ny9TRDg4OTcvU0Q4OTc3L1NEODk3OC9TRDg5ODcvU0Q4OTk3XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6MjU6Y29uZmlnIE1XSUZJRVhfUENJRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTI2LVxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBQQ0lFIDg3NjYvODg5Ny84OTk3XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6Mzc6Y29uZmlnIE1XSUZJRVhfVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzgtXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFVTQjg3NjYvODc5Ny84OTk3XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNTowMToxMS40MTE5MTUzODJaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTYxMzYyMzMzNTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgdGhlIE1XSUZJRVggRHJpdmVyIFZ1bG5lcmFiaWxpdHkgYW5kIEZ1enppbmcgU3RyYXRlZ3kqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEknbSBnb2luZyB0byBiZSBsb29raW5nIGNsb3NlbHkgYXQgdGhlIGBNV0lGSUVYYCBkcml2ZXIgYW5kLCBzcGVjaWZpY2FsbHksIHRoZSBgTVdJRklFWF9VU0JgIGludGVyZmFjZS4gV2UgbmVlZCB0byBmb2N1cyBvdXIgYXR0ZW50aW9uIG9uIGBtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWVgLiBUaGUgcmF0aW9uYWxlIGhlcmUgaXMgdGhhdCB0aGlzIHBhdGNoIGFkZHJlc3NlcyBhbiBvdXQtb2YtYm91bmRzIHJlYWQgdnVsbmVyYWJpbGl0eSB3aGVuIHBhcnNpbmcgUlNOL1dQQSBJbmZvcm1hdGlvbiBFbGVtZW50cyAoSUVzKSBmcm9tIHNjYW4gcmVzdWx0cy4gVGhlIGNvcmUgb2YgdGhlIGlzc3VlIGlzIGluIGhvdyB0aGUgZHJpdmVyIHByb2Nlc3NlcyBzY2FuIHJlc3VsdHMgaXQgcmVjZWl2ZXMgZnJvbSB0aGUgZmlybXdhcmUuIFRoZSBmYWN0IHRoYXQgd2UgaGF2ZSBhIFVTQiBpbnRlcmZhY2UgcHJvdmlkZXMgYW4gYXR0YWNrIHZlY3Rvci4gV2UgY2FuIGZ1enogdGhlIGZpcm13YXJlIHJlc3BvbnNlcyB0aHJvdWdoIFVTQiBlbXVsYXRpb24sIHNvbWV0aGluZyBsaWtlIHVzaW5nIGEgZHVtbXktaGNkLiBUaGlzIGlzIGtleS4gU2luY2UgdGhpcyBmaXggaXMgbW9kaWZ5aW5nIHJlYWNoYWJsZSBjb3JlIGxvZ2ljIHdpdGhpbiB0aGUgZHJpdmVyLCBpdCdzIGRlZmluaXRlbHkgd29ydGh3aGlsZSB0byBmdXp6IGl0LlxuXG5NeSBmb2N1cyBpcyBnb2luZyB0byBiZSBvbiB0aGVzZSBzeW1ib2xzOiBgbXdpZmlleF9yZXRfODAyXzExX3NjYW5gLCBgbXdpZmlleF9oYW5kbGVfZXZlbnRfZXh0X3NjYW5fcmVwb3J0YCwgYW5kIGBtd2lmaWV4X2NoZWNrX25ldHdvcmtfY29tcGF0aWJpbGl0eWAuIFRoZXNlIGFyZSB0aGUgZW50cnkgcG9pbnRzIGZvciBwcm9jZXNzaW5nIHNjYW4gcmVzdWx0cyBhbmQgY2hlY2tpbmcgbmV0d29yayBjb21wYXRpYmlsaXR5LCBtYWtpbmcgdGhlbSBwZXJmZWN0IHRhcmdldHMgZm9yIG91ciBmdXp6aW5nIGVmZm9ydHMuXG5cbk5vdywgbGV0J3MgcXVpY2tseSByZXZpZXcgdGhlIGNhbGxlcnMgb2YgYG13aWZpZXhfc2VhcmNoX291aV9pbl9pZWAuIEZyb20gd2hhdCBJIGNhbiBzZWUsIGl0J3MgY2FsbGVkIGJ5IGBtd2lmaWV4X2lzX3Jzbl9vdWlfcHJlc2VudGAgYW5kIGBtd2lmaWV4X2lzX3dwYV9vdWlfcHJlc2VudGAuIFRoZXNlIGluIHR1cm4gYXJlIGNhbGxlZCBieSBgbXdpZmlleF9pc19uZXR3b3JrX2NvbXBhdGlibGVgLCB3aGljaCBmZWVkcyBpbnRvIGBtd2lmaWV4X2NoZWNrX25ldHdvcmtfY29tcGF0aWJpbGl0eWAuIGBtd2lmaWV4X2NoZWNrX25ldHdvcmtfY29tcGF0aWJpbGl0eWAgdGhlbiBicmFuY2hlcyB0byBib3RoIGBtd2lmaWV4X3VwZGF0ZV9jdXJyX2Jzc19wYXJhbXNgIGFuZCBgbXdpZmlleF9ic3Nfc3RhcnRgLiBgbXdpZmlleF91cGRhdGVfY3Vycl9ic3NfcGFyYW1zYCBpcyBjYWxsZWQgYnkgYG13aWZpZXhfcGFyc2Vfc2luZ2xlX3Jlc3BvbnNlX2J1ZmAuIEZpbmFsbHksIGBtd2lmaWV4X3BhcnNlX3NpbmdsZV9yZXNwb25zZV9idWZgIGlzIGNhbGxlZCBieSBgbXdpZmlleF9yZXRfODAyXzExX3NjYW5gIGFuZCBgbXdpZmlleF9oYW5kbGVfZXZlbnRfZXh0X3NjYW5fcmVwb3J0YC5cblxuU28sIHdlJ3ZlIGdvdCBmdWxsIGNhbGwgY2hhaW4gY292ZXJhZ2UgZnJvbSBvdXIgZm9jdXMgc3ltYm9scy4gVGhleSBhcHBlYXIgdG8gYmUgc29saWQgc3RhcnRpbmcgcG9pbnRzLlxuXG5SaWdodCwgSSdtIHJlYWR5IHRvIHByb2NlZWQgd2l0aCBzZXR0aW5nIHRoZSByZXN1bHRzIGFuZCBtb3Zpbmcgb24gdG8gdGhlIGZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1NDMwLCJPdXRwdXRUb2tlbnMiOjI2MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNTowMToyNy41NDgxNTEyMjZaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjc2MDc2NjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1XSUZJRVhcIixcbiAgICBcIk1XSUZJRVhfVVNCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXdpZmlleF9yZXRfODAyXzExX3NjYW5cIixcbiAgICBcIm13aWZpZXhfaGFuZGxlX2V2ZW50X2V4dF9zY2FuX3JlcG9ydFwiLFxuICAgIFwibXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyB0byBgbXdpZmlleF9zZWFyY2hfb3VpX2luX2llYCB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgcmVhZHMgd2hlbiBwYXJzaW5nIFJTTi9XUEEgSW5mb3JtYXRpb24gRWxlbWVudHMgKElFcykgZnJvbSBzY2FuIHJlc3VsdHMuIFRoZSB2dWxuZXJhYmlsaXR5IG9jY3VycyB3aGVuIHRoZSBkcml2ZXIgcHJvY2Vzc2VzIHNjYW4gcmVzdWx0cyByZWNlaXZlZCBmcm9tIHRoZSBmaXJtd2FyZS4gU2luY2UgdGhlIGBtd2lmaWV4YCBkcml2ZXIgc3VwcG9ydHMgYSBVU0IgaW50ZXJmYWNlIChgTVdJRklFWF9VU0JgKSwgdGhlIGZpcm13YXJlIHJlc3BvbnNlcyBjYW4gYmUgZnV6emVkIHZpYSBVU0IgZW11bGF0aW9uIChlLmcuLCBkdW1teS1oY2QpLiBUaGUgZml4IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGxvZ2ljIGluIHRoZSBkcml2ZXIsIHNvIGl0IGlzIHdvcnRoIGZ1enppbmcuIEZvY3VzIHN5bWJvbHMgYXJlIGBtd2lmaWV4X3JldF84MDJfMTFfc2NhbmAsIGBtd2lmaWV4X2hhbmRsZV9ldmVudF9leHRfc2Nhbl9yZXBvcnRgLCBhbmQgYG13aWZpZXhfY2hlY2tfbmV0d29ya19jb21wYXRpYmlsaXR5YCwgd2hpY2ggYXJlIHRoZSBlbnRyeSBwb2ludHMgZm9yIHByb2Nlc3Npbmcgc2NhbiByZXN1bHRzIGFuZCBjaGVja2luZyBuZXR3b3JrIGNvbXBhdGliaWxpdHkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTVdJRklFWFwiLFxuICAgIFwiTVdJRklFWF9VU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtd2lmaWV4X3JldF84MDJfMTFfc2NhblwiLFxuICAgIFwibXdpZmlleF9oYW5kbGVfZXZlbnRfZXh0X3NjYW5fcmVwb3J0XCIsXG4gICAgXCJtd2lmaWV4X2NoZWNrX25ldHdvcmtfY29tcGF0aWJpbGl0eVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIHRvIGBtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWVgIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcyB3aGVuIHBhcnNpbmcgUlNOL1dQQSBJbmZvcm1hdGlvbiBFbGVtZW50cyAoSUVzKSBmcm9tIHNjYW4gcmVzdWx0cy4gVGhlIHZ1bG5lcmFiaWxpdHkgb2NjdXJzIHdoZW4gdGhlIGRyaXZlciBwcm9jZXNzZXMgc2NhbiByZXN1bHRzIHJlY2VpdmVkIGZyb20gdGhlIGZpcm13YXJlLiBTaW5jZSB0aGUgYG13aWZpZXhgIGRyaXZlciBzdXBwb3J0cyBhIFVTQiBpbnRlcmZhY2UgKGBNV0lGSUVYX1VTQmApLCB0aGUgZmlybXdhcmUgcmVzcG9uc2VzIGNhbiBiZSBmdXp6ZWQgdmlhIFVTQiBlbXVsYXRpb24gKGUuZy4sIGR1bW15LWhjZCkuIFRoZSBmaXggbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUgbG9naWMgaW4gdGhlIGRyaXZlciwgc28gaXQgaXMgd29ydGggZnV6emluZy4gRm9jdXMgc3ltYm9scyBhcmUgYG13aWZpZXhfcmV0XzgwMl8xMV9zY2FuYCwgYG13aWZpZXhfaGFuZGxlX2V2ZW50X2V4dF9zY2FuX3JlcG9ydGAsIGFuZCBgbXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHlgLCB3aGljaCBhcmUgdGhlIGVudHJ5IHBvaW50cyBmb3IgcHJvY2Vzc2luZyBzY2FuIHJlc3VsdHMgYW5kIGNoZWNraW5nIG5ldHdvcmsgY29tcGF0aWJpbGl0eS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTU6MDE6MjcuNjc1NzY1NzEyWiIsIlNlcSI6MzEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjczNzc1NjcwNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE1OjAxOjI3LjY3NjM2ODAwMloiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxMjczNzE0Nzk2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyByZWFkIHZ1bG5lcmFiaWxpdHkgaW4gYG13aWZpZXhfc2VhcmNoX291aV9pbl9pZWAgYnkgaW50cm9kdWNpbmcgYm91bmRzIGNoZWNraW5nIG9uIHRoZSBPVUkgY291bnQgKGBpZWJvZHktXFx1MDAzZXB0a19jbnRbMF1gKSBhZ2FpbnN0IHRoZSBhdmFpbGFibGUgSW5mb3JtYXRpb24gRWxlbWVudCAoSUUpIGxlbmd0aCAoYGllX2xlbmApLiBXaXRob3V0IHRoaXMgY2hlY2ssIGEgbWFsaWNpb3VzbHkgY3JhZnRlZCBiZWFjb24gb3IgcHJvYmUgcmVzcG9uc2Ugd2l0aCBhIGxhcmdlIE9VSSBjb3VudCBjb3VsZCBjYXVzZSB0aGUgZHJpdmVyIHRvIHJlYWQgcGFzdCB0aGUgZW5kIG9mIHRoZSBhbGxvY2F0ZWQgSUUgYnVmZmVyIGR1cmluZyB0aGUgYG1lbWNtcGAgbG9vcC5cXG5cXG5UaGlzIGlzIGEgY2xhc3NpYyBvdXQtb2YtYm91bmRzIHJlYWQgYnVnLCB3aGljaCBpcyByZWxpYWJseSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlcmUgaXMgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UsIHN0YWNrL2hlYXAgaW5mby1sZWFrIHRvIHVzZXIgc3BhY2UsIG9yIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzIGludm9sdmVkIGluIHRoaXMgdnVsbmVyYWJpbGl0eS4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeSwgYXMgc3RhbmRhcmQgS0FTQU4gd2lsbCBjYXRjaCBhbnkgcmVncmVzc2lvbnMgb3Igc2ltaWxhciBvdXQtb2YtYm91bmRzIGFjY2VzcyBpc3N1ZXMgaW4gdGhpcyBjb2RlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGYxMzgyZTYwMzdlNzUyZjYzZDFhNzkzZjcwMGMyOGUwZGNmMDFlNDdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEF1ZyAxNCAxNDo1MjozMyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jXG5pbmRleCA5N2MwZWMzYjgyMmU3Li40NzNmNDYyM2VhMTk5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uY1xuQEAgLTEwNCwxMiArMTA0LDI0IEBAIGhhc192ZW5kb3JfaGRyKHN0cnVjdCBpZWVlX3R5cGVzX3ZlbmRvcl9zcGVjaWZpYyAqaWUsIHU4IGtleSlcbiAgKiBhIGdpdmVuIG91aSBpbiBQVEsuXG4gICovXG4gc3RhdGljIHU4XG4tbXdpZmlleF9zZWFyY2hfb3VpX2luX2llKHN0cnVjdCBpZV9ib2R5ICppZWJvZHksIHU4ICpvdWkpXG4rbXdpZmlleF9zZWFyY2hfb3VpX2luX2llKHN0cnVjdCBpZV9ib2R5ICppZWJvZHksIHU4ICpvdWksIGludCBpZV9sZW4pXG4ge1xuK1x0Y29uc3Qgc2l6ZV90IHB0a19ib2R5X29mZnNldCA9IG9mZnNldG9mKHN0cnVjdCBpZV9ib2R5LCBwdGtfYm9keSk7XG4gXHR1OCBjb3VudDtcbiBcbitcdC8qIGllX2xlbiBpcyB0aGUgbnVtYmVyIG9mIGJ5dGVzIGF2YWlsYWJsZSBhdCBpZWJvZHkuIEtlZXAgaXQgc2lnbmVkXG4rXHQgKiBhbmQgcmVqZWN0IGEgbmVnYXRpdmUgKHVuZGVyZmxvd2VkKSBsZW5ndGggYmVmb3JlIHRoZSB1bnNpZ25lZFxuK1x0ICogY29tcGFyaXNvbnMgYmVsb3csIHNvIGEgc21hbGwgb3IgemVybyBJRSBsZW5ndGggY2Fubm90IHdyYXAuXG4rXHQgKi9cbitcdGlmIChpZV9sZW4gXHUwMDNjIDAgfHwgKHNpemVfdClpZV9sZW4gXHUwMDNjIHB0a19ib2R5X29mZnNldClcbitcdFx0cmV0dXJuIE1XSUZJRVhfT1VJX05PVF9QUkVTRU5UO1xuK1xuIFx0Y291bnQgPSBpZWJvZHktXHUwMDNlcHRrX2NudFswXTtcbiBcbitcdC8qIFJlamVjdCBhbiBPVUkgY291bnQgd2hvc2UgbGlzdCB3b3VsZCBydW4gcGFzdCB0aGUgZWxlbWVudC4gKi9cbitcdGlmIChwdGtfYm9keV9vZmZzZXQgKyBjb3VudCAqIHNpemVvZihpZWJvZHktXHUwMDNlcHRrX2JvZHkpIFx1MDAzZSAoc2l6ZV90KWllX2xlbilcbitcdFx0cmV0dXJuIE1XSUZJRVhfT1VJX05PVF9QUkVTRU5UO1xuK1xuIFx0LyogVGhlcmUgY291bGQgYmUgbXVsdGlwbGUgT1VJcyBmb3IgUFRLIGhlbmNlXG4gXHQgICAxKSBUYWtlIHRoZSBsZW5ndGguXG4gXHQgICAyKSBDaGVjayBhbGwgdGhlIE9VSXMgZm9yIEFFUy5cbkBAIC0xNDMsMTEgKzE1NSwxNCBAQCBtd2lmaWV4X2lzX3Jzbl9vdWlfcHJlc2VudChzdHJ1Y3QgbXdpZmlleF9ic3NkZXNjcmlwdG9yICpic3NfZGVzYywgdTMyIGNpcGhlcilcbiBcdHU4IHJldCA9IE1XSUZJRVhfT1VJX05PVF9QUkVTRU5UO1xuIFxuIFx0aWYgKGhhc19pZWVlX2hkcihic3NfZGVzYy1cdTAwM2ViY25fcnNuX2llLCBXTEFOX0VJRF9SU04pKSB7XG4rXHRcdGludCBpZV9sZW4gPSAoaW50KWJzc19kZXNjLVx1MDAzZWJjbl9yc25faWUtXHUwMDNlaWVlZV9oZHIubGVuIC1cbitcdFx0XHRSU05fR1RLX09VSV9PRkZTRVQ7XG4rXG4gXHRcdGllYm9keSA9IChzdHJ1Y3QgaWVfYm9keSAqKVxuIFx0XHRcdCAoKCh1OCAqKSBic3NfZGVzYy1cdTAwM2ViY25fcnNuX2llLVx1MDAzZWRhdGEpICtcbiBcdFx0XHQgIFJTTl9HVEtfT1VJX09GRlNFVCk7XG4gXHRcdG91aSA9IFx1MDAyNm13aWZpZXhfcnNuX291aVtjaXBoZXJdWzBdO1xuLVx0XHRyZXQgPSBtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWUoaWVib2R5LCBvdWkpO1xuK1x0XHRyZXQgPSBtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWUoaWVib2R5LCBvdWksIGllX2xlbik7XG4gXHRcdGlmIChyZXQpXG4gXHRcdFx0cmV0dXJuIHJldDtcbiBcdH1cbkBAIC0xNjksMTAgKzE4NCwxNCBAQCBtd2lmaWV4X2lzX3dwYV9vdWlfcHJlc2VudChzdHJ1Y3QgbXdpZmlleF9ic3NkZXNjcmlwdG9yICpic3NfZGVzYywgdTMyIGNpcGhlcilcbiBcdHU4IHJldCA9IE1XSUZJRVhfT1VJX05PVF9QUkVTRU5UO1xuIFxuIFx0aWYgKGhhc192ZW5kb3JfaGRyKGJzc19kZXNjLVx1MDAzZWJjbl93cGFfaWUsIFdMQU5fRUlEX1ZFTkRPUl9TUEVDSUZJQykpIHtcbitcdFx0aW50IGllX2xlbiA9IChpbnQpYnNzX2Rlc2MtXHUwMDNlYmNuX3dwYV9pZS1cdTAwM2V2ZW5kX2hkci5sZW4gLVxuK1x0XHRcdChpbnQpc2l6ZW9mKGJzc19kZXNjLVx1MDAzZWJjbl93cGFfaWUtXHUwMDNldmVuZF9oZHIub3VpKSAtXG4rXHRcdFx0V1BBX0dUS19PVUlfT0ZGU0VUO1xuK1xuIFx0XHRpZWJvZHkgPSAoc3RydWN0IGllX2JvZHkgKikoKHU4ICopYnNzX2Rlc2MtXHUwMDNlYmNuX3dwYV9pZS1cdTAwM2VkYXRhICtcbiBcdFx0XHRcdFx0ICAgIFdQQV9HVEtfT1VJX09GRlNFVCk7XG4gXHRcdG91aSA9IFx1MDAyNm13aWZpZXhfd3BhX291aVtjaXBoZXJdWzBdO1xuLVx0XHRyZXQgPSBtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWUoaWVib2R5LCBvdWkpO1xuK1x0XHRyZXQgPSBtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWUoaWVib2R5LCBvdWksIGllX2xlbik7XG4gXHRcdGlmIChyZXQpXG4gXHRcdFx0cmV0dXJuIHJldDtcbiBcdH1cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE1OjAxOjI3LjY3NjM2OTEzMloiLCJTZXEiOjMzLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MTU1MDgzNDAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBNYXJ2ZWxsIFdpLUZpIERyaXZlciBWdWxuZXJhYmlsaXR5IFBhdGNoKipcblxuT2theSwgc28gaGVyZSdzIHdoYXQgSSd2ZSBnb3QuIFRoaXMgcGF0Y2ggdGFyZ2V0cyBhbiBvdXQtb2YtYm91bmRzIHJlYWQgdnVsbmVyYWJpbGl0eSBpbiB0aGUgYG13aWZpZXhfc2VhcmNoX291aV9pbl9pZWAgZnVuY3Rpb24gd2l0aGluIHRoZSBNYXJ2ZWxsIFdpLUZpIGRyaXZlcidzIHNjYW5uaW5nIGNvZGUgKGBzY2FuLmNgKS4gRXNzZW50aWFsbHksIHRoZSBwcm9ibGVtIGJvaWxzIGRvd24gdG8gYSBsYWNrIG9mIHByb3BlciBib3VuZHMgY2hlY2tpbmcgd2hlbiBoYW5kbGluZyBPVUkgKE9yZ2FuaXphdGlvbmFsbHkgVW5pcXVlIElkZW50aWZpZXIpIGNvdW50cyBmb3VuZCB3aXRoaW4gSW5mb3JtYXRpb24gRWxlbWVudHMgKElFcykgb2YgV2ktRmkgYmVhY29ucyBvciBwcm9iZSByZXNwb25zZXMuXG5cblRoZSBmaXggaXRzZWxmIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQ6IGl0IGludHJvZHVjZXMgYSBjaGVjayB0aGF0IGNvbXBhcmVzIHRoZSBjYWxjdWxhdGVkIG9mZnNldCAoYmFzZWQgb24gdGhlIE9VSSBjb3VudCBhbmQgc2l6ZSBvZiB0aGUgT1VJIGJvZHkpIGFnYWluc3QgdGhlIGFjdHVhbCBsZW5ndGggb2YgdGhlIElFIGJ1ZmZlciAoYGllX2xlbmApLiAgVGhlIGNvZGUgd2FzIHJlYWRpbmcgYGllYm9keS1cdTAwM2VwdGtfY250WzBdYCBmcm9tIGEgbmV0d29yayBwYWNrZXQgKGJlYWNvbi9wcm9iZSByZXNwb25zZSkgYW5kIHVzaW5nIHRoYXQgdmFsdWUgdG8gZGV0ZXJtaW5lIGhvdyBtdWNoIG9mIGBpZWJvZHktXHUwMDNlcHRrX2JvZHlgIHRvIHJlYWQuICBUaGUgdnVsbmVyYWJpbGl0eSBsaWVzIGluIHRoZSBmYWN0IHRoYXQgYSBtYWxpY2lvdXMgYWN0b3IgY291bGQgY3JhZnQgYSBiZWFjb24gb3IgcHJvYmUgcmVzcG9uc2Ugd2l0aCBhIGxhcmdlIE9VSSBjb3VudCwgd2hpY2ggd291bGQgY2F1c2UgdGhlIGRyaXZlciB0byBhdHRlbXB0IHRvIHJlYWQgcGFzdCB0aGUgZW5kIG9mIHRoZSBJRSBidWZmZXIuICBUaGlzIGlzIGEgY2xhc3NpYyBhbmQgd2VsbC11bmRlcnN0b29kIG91dC1vZi1ib3VuZHMgcmVhZC5cblxuTm93LCB0aGUga2V5IHF1ZXN0aW9uIGhlcmUgaXMgd2hldGhlciB0aGlzIG5lY2Vzc2l0YXRlcyBLTVNBTiAoS2VybmVsIE1lbW9yeSBTYW5pdGl6ZXIpIG9yIGlmIEtBU0FOIChLZXJuZWwgQWRkcmVzcyBTYW5pdGl6ZXIpIGlzIHN1ZmZpY2llbnQuIEFmdGVyIGEgdGhvcm91Z2ggcmV2aWV3LCBJJ20gY29uZmlkZW50IHRoYXQgS0FTQU4gaXMgdGhlIHJpZ2h0IHRvb2wgZm9yIHRoaXMgam9iLiBUaGUgcm9vdCBjYXVzZSBpcyAqcHVyZWx5KiBhbiBvdXQtb2YtYm91bmRzIHJlYWQuIFRoZXJlJ3Mgbm8gaW52b2x2ZW1lbnQgb2YgdW5pbml0aWFsaXplZCBtZW1vcnksIHN0YWNrL2hlYXAgaW5mby1sZWFrIHRvIHVzZXIgc3BhY2UsIG9yIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzIHRoYXQgS01TQU4gaXMgZGVzaWduZWQgdG8gY2F0Y2guICBUaGUgYnVnIGlzIHRyaWdnZXJlZCBieSByZWFkaW5nIGJleW9uZCB0aGUgYWxsb2NhdGVkIG1lbW9yeSBmb3IgdGhlIElFIGJ1ZmZlciAoYGJzc19kZXNjLVx1MDAzZWJjbl9yc25faWVgIG9yIGBic3NfZGVzYy1cdTAwM2ViY25fd3BhX2llYCksIHdoaWNoIGlzIHBvcHVsYXRlZCBkaXJlY3RseSBmcm9tIG5ldHdvcmsgcGFja2V0cy4gS0FTQU4gaXMgcGVyZmVjdGx5IHN1aXRlZCB0byBkZXRlY3RpbmcgdGhpcyBzb3J0IG9mIG1lbW9yeSBhY2Nlc3MgdmlvbGF0aW9uLiAgS01TQU4gd291bGQgYmUgb3ZlcmtpbGwsIGFuZCBwcm9iYWJseSBub3QgZXZlbiB0cmlnZ2VyIGFueXRoaW5nLCBzaW5jZSBpdCdzIGZvY3VzZWQgb24gdW5pbml0aWFsaXplZCBtZW1vcnkgYWNjZXNzLlxuXG5JJ3ZlIGNvbmZpcm1lZCB0aGlzIGJ5IGxvb2tpbmcgYXQgdGhlIGNvZGUsIHRvby4gIEknbSB2ZXJ5IGNvbmZpZGVudCB0aGF0IHRoZSBwYXRjaCBhZGRyZXNzZXMgdGhlIHZ1bG5lcmFiaWxpdHkgY29ycmVjdGx5IGJ5IHByZXZlbnRpbmcgdGhlIG91dC1vZi1ib3VuZHMgcmVhZC4gVGhlcmVmb3JlLCBJIGJlbGlldmUgYE5lZWRzS01TQU49ZmFsc2VgIGlzIGNvcnJlY3QuIFRoaXMgaXMgdGhlIGtpbmQgb2YgdnVsbmVyYWJpbGl0eSB0aGF0IEtBU0FOIHdpbGwgZGV0ZWN0IHF1aWNrbHksIGFuZCBlZmZpY2llbnRseS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg1NiwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUzOSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE1OjAxOjM1LjgzMTQ1NjQxNVoiLCJTZXEiOjM0LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNjM0MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMDAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxMDA6XFx0LypcXG4gMTAxOlxcdCAqIFRoaXMgZnVuY3Rpb24gcGFyc2VzIGEgZ2l2ZW4gSUUgZm9yIGEgZ2l2ZW4gT1VJLlxcbiAxMDI6XFx0ICpcXG4gMTAzOlxcdCAqIFRoaXMgaXMgdXNlZCB0byBwYXJzZSBhIFdQQS9SU04gSUUgdG8gZmluZCBpZiBpdCBoYXNcXG4gMTA0OlxcdCAqIGEgZ2l2ZW4gb3VpIGluIFBUSy5cXG4gMTA1OlxcdCAqL1xcbiAxMDY6XFx0c3RhdGljIHU4XFxuIDEwNzpcXHRtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWUoc3RydWN0IGllX2JvZHkgKmllYm9keSwgdTggKm91aSwgaW50IGllX2xlbilcXG4gMTA4OlxcdHtcXG4gMTA5OlxcdFxcdGNvbnN0IHNpemVfdCBwdGtfYm9keV9vZmZzZXQgPSBvZmZzZXRvZihzdHJ1Y3QgaWVfYm9keSwgcHRrX2JvZHkpO1xcbiAxMTA6XFx0XFx0dTggY291bnQ7XFxuIDExMTpcXHRcXG4gMTEyOlxcdFxcdC8qIGllX2xlbiBpcyB0aGUgbnVtYmVyIG9mIGJ5dGVzIGF2YWlsYWJsZSBhdCBpZWJvZHkuIEtlZXAgaXQgc2lnbmVkXFxuIDExMzpcXHRcXHQgKiBhbmQgcmVqZWN0IGEgbmVnYXRpdmUgKHVuZGVyZmxvd2VkKSBsZW5ndGggYmVmb3JlIHRoZSB1bnNpZ25lZFxcbiAxMTQ6XFx0XFx0ICogY29tcGFyaXNvbnMgYmVsb3csIHNvIGEgc21hbGwgb3IgemVybyBJRSBsZW5ndGggY2Fubm90IHdyYXAuXFxuIDExNTpcXHRcXHQgKi9cXG4gMTE2OlxcdFxcdGlmIChpZV9sZW4gXFx1MDAzYyAwIHx8IChzaXplX3QpaWVfbGVuIFxcdTAwM2MgcHRrX2JvZHlfb2Zmc2V0KVxcbiAxMTc6XFx0XFx0XFx0cmV0dXJuIE1XSUZJRVhfT1VJX05PVF9QUkVTRU5UO1xcbiAxMTg6XFx0XFxuIDExOTpcXHRcXHRjb3VudCA9IGllYm9keS1cXHUwMDNlcHRrX2NudFswXTtcXG4gMTIwOlxcdFxcbiAxMjE6XFx0XFx0LyogUmVqZWN0IGFuIE9VSSBjb3VudCB3aG9zZSBsaXN0IHdvdWxkIHJ1biBwYXN0IHRoZSBlbGVtZW50LiAqL1xcbiAxMjI6XFx0XFx0aWYgKHB0a19ib2R5X29mZnNldCArIGNvdW50ICogc2l6ZW9mKGllYm9keS1cXHUwMDNlcHRrX2JvZHkpIFxcdTAwM2UgKHNpemVfdClpZV9sZW4pXFxuIDEyMzpcXHRcXHRcXHRyZXR1cm4gTVdJRklFWF9PVUlfTk9UX1BSRVNFTlQ7XFxuIDEyNDpcXHRcXG4gMTI1OlxcdFxcdC8qIFRoZXJlIGNvdWxkIGJlIG11bHRpcGxlIE9VSXMgZm9yIFBUSyBoZW5jZVxcbiAxMjY6XFx0XFx0ICAgMSkgVGFrZSB0aGUgbGVuZ3RoLlxcbiAxMjc6XFx0XFx0ICAgMikgQ2hlY2sgYWxsIHRoZSBPVUlzIGZvciBBRVMuXFxuIDEyODpcXHRcXHQgICAzKSBJZiBvbmUgb2YgdGhlbSBpcyBBRVMgdGhlbiBwYXNzIHN1Y2Nlc3MuICovXFxuIDEyOTpcXHRcXHR3aGlsZSAoY291bnQpIHtcXG4gMTMwOlxcdFxcdFxcdGlmICghbWVtY21wKGllYm9keS1cXHUwMDNlcHRrX2JvZHksIG91aSwgc2l6ZW9mKGllYm9keS1cXHUwMDNlcHRrX2JvZHkpKSlcXG4gMTMxOlxcdFxcdFxcdFxcdHJldHVybiBNV0lGSUVYX09VSV9QUkVTRU5UO1xcbiAxMzI6XFx0XFxuIDEzMzpcXHRcXHRcXHQtLWNvdW50O1xcbiAxMzQ6XFx0XFx0XFx0aWYgKGNvdW50KVxcbiAxMzU6XFx0XFx0XFx0XFx0aWVib2R5ID0gKHN0cnVjdCBpZV9ib2R5ICopICgodTggKikgaWVib2R5ICtcXG4gMTM2OlxcdFxcdFxcdFxcdFxcdFxcdFxcdHNpemVvZihpZWJvZHktXFx1MDAzZXB0a19ib2R5KSk7XFxuIDEzNzpcXHRcXHR9XFxuIDEzODpcXHRcXG4gMTM5OlxcdFxcdHByX2RlYnVnKFxcXCJpbmZvOiAlczogT1VJIGlzIG5vdCBmb3VuZCBpbiBQVEtcXFxcblxcXCIsIF9fZnVuY19fKTtcXG4gMTQwOlxcdFxcdHJldHVybiBNV0lGSUVYX09VSV9OT1RfUFJFU0VOVDtcXG4gMTQxOlxcdH1cXG4gMTQyOlxcdFxcbiAxNDM6XFx0LypcXG4gMTQ0OlxcdCAqIFRoaXMgZnVuY3Rpb24gY2hlY2tzIGlmIGEgZ2l2ZW4gT1VJIGlzIHByZXNlbnQgaW4gYSBSU04gSUUuXFxuIDE0NTpcXHQgKlxcbiAxNDY6XFx0ICogVGhlIGZ1bmN0aW9uIGZpcnN0IGNoZWNrcyBpZiBhIFJTTiBJRSBpcyBwcmVzZW50IG9yIG5vdCBpbiB0aGVcXG4gMTQ3OlxcdCAqIEJTUyBkZXNjcmlwdG9yLiBJdCB0cmllcyB0byBsb2NhdGUgdGhlIE9VSSBvbmx5IGlmIHN1Y2ggYW4gSUUgaXNcXG4gMTQ4OlxcdCAqIHByZXNlbnQuXFxuIDE0OTpcXHQgKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTU6MDE6MzUuODMxODIyNTI1WiIsIlNlcSI6MzUsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1ODE2NDMxOTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgT3V0LW9mLUJvdW5kcyBSZWFkKipcblxuUmlnaHQsIHRoZSBjb2RlJ3MgY29uZmlybWVkIGl0LiBXZSdyZSBsb29raW5nIGF0IGEgc3RyYWlnaHRmb3J3YXJkIG91dC1vZi1ib3VuZHMgcmVhZCBidWcsIG5vdGhpbmcgY29tcGxleC4gR2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGUgaXNzdWUsIGFuZCBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSByZWxldmFudCBtZW1vcnkgc2FmZXR5IG1lY2hhbmlzbXMsIEkgY2FuIGNvbmZpZGVudGx5IG1hcmsgYE5lZWRzS01TQU5gIGFzIGBmYWxzZWAuIFdlIGNhbiBhZGRyZXNzIHRoaXMgd2l0aCBhIG1vcmUgdGFyZ2V0ZWQgYXBwcm9hY2gsIGxpa2VseSBpbnZvbHZpbmcgYm91bmRzIGNoZWNraW5nIG9yIGltcHJvdmVkIGluZGV4aW5nIHdpdGhpbiB0aGUgYWZmZWN0ZWQgcm91dGluZS4gTm8gbmVlZCBmb3IgdGhlIGhlYXZ5IGhhbW1lciBvZiBhIGtlcm5lbC13aWRlIG1lbW9yeSBzYW5pdGl6ZXIgaGVyZS4gTGV0J3MgbW92ZSBvbiB0byB0aGUgZml4LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0Nzk1LCJPdXRwdXRUb2tlbnMiOjIwOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTU6MDE6NDAuNDEzNDkxMDk4WiIsIlNlcSI6MzYsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI3ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBvdXQtb2YtYm91bmRzIHJlYWQgdnVsbmVyYWJpbGl0eSBpbiBgbXdpZmlleF9zZWFyY2hfb3VpX2luX2llYCBieSBpbnRyb2R1Y2luZyBib3VuZHMgY2hlY2tpbmcgb24gdGhlIE9VSSBjb3VudCAoYGllYm9keS1cXHUwMDNlcHRrX2NudFswXWApIGFnYWluc3QgdGhlIGF2YWlsYWJsZSBJbmZvcm1hdGlvbiBFbGVtZW50IChJRSkgbGVuZ3RoIChgaWVfbGVuYCkuIFdpdGhvdXQgdGhpcyBjaGVjaywgYSBtYWxpY2lvdXNseSBjcmFmdGVkIGJlYWNvbiBvciBwcm9iZSByZXNwb25zZSB3aXRoIGEgbGFyZ2UgT1VJIGNvdW50IGNvdWxkIGNhdXNlIHRoZSBkcml2ZXIgdG8gcmVhZCBwYXN0IHRoZSBlbmQgb2YgdGhlIGFsbG9jYXRlZCBJRSBidWZmZXIgZHVyaW5nIHRoZSBgbWVtY21wYCBsb29wLlxcblxcblRoaXMgaXMgYSBjbGFzc2ljIG91dC1vZi1ib3VuZHMgcmVhZCBidWcsIHdoaWNoIGlzIHJlbGlhYmx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGVyZSBpcyBubyB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSwgc3RhY2svaGVhcCBpbmZvLWxlYWsgdG8gdXNlciBzcGFjZSwgb3IgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMgaW52b2x2ZWQgaW4gdGhpcyB2dWxuZXJhYmlsaXR5LiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LCBhcyBzdGFuZGFyZCBLQVNBTiB3aWxsIGNhdGNoIGFueSByZWdyZXNzaW9ucyBvciBzaW1pbGFyIG91dC1vZi1ib3VuZHMgYWNjZXNzIGlzc3VlcyBpbiB0aGlzIGNvZGUuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyByZWFkIHZ1bG5lcmFiaWxpdHkgaW4gYG13aWZpZXhfc2VhcmNoX291aV9pbl9pZWAgYnkgaW50cm9kdWNpbmcgYm91bmRzIGNoZWNraW5nIG9uIHRoZSBPVUkgY291bnQgKGBpZWJvZHktXFx1MDAzZXB0a19jbnRbMF1gKSBhZ2FpbnN0IHRoZSBhdmFpbGFibGUgSW5mb3JtYXRpb24gRWxlbWVudCAoSUUpIGxlbmd0aCAoYGllX2xlbmApLiBXaXRob3V0IHRoaXMgY2hlY2ssIGEgbWFsaWNpb3VzbHkgY3JhZnRlZCBiZWFjb24gb3IgcHJvYmUgcmVzcG9uc2Ugd2l0aCBhIGxhcmdlIE9VSSBjb3VudCBjb3VsZCBjYXVzZSB0aGUgZHJpdmVyIHRvIHJlYWQgcGFzdCB0aGUgZW5kIG9mIHRoZSBhbGxvY2F0ZWQgSUUgYnVmZmVyIGR1cmluZyB0aGUgYG1lbWNtcGAgbG9vcC5cXG5cXG5UaGlzIGlzIGEgY2xhc3NpYyBvdXQtb2YtYm91bmRzIHJlYWQgYnVnLCB3aGljaCBpcyByZWxpYWJseSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlcmUgaXMgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UsIHN0YWNrL2hlYXAgaW5mby1sZWFrIHRvIHVzZXIgc3BhY2UsIG9yIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzIGludm9sdmVkIGluIHRoaXMgdnVsbmVyYWJpbGl0eS4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeSwgYXMgc3RhbmRhcmQgS0FTQU4gd2lsbCBjYXRjaCBhbnkgcmVncmVzc2lvbnMgb3Igc2ltaWxhciBvdXQtb2YtYm91bmRzIGFjY2VzcyBpc3N1ZXMgaW4gdGhpcyBjb2RlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow66wjv[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-14 14:24:30 +0000 UTC FinishedAt: 2026-08-14 15:01:42 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "ca800a9302764c445de0da0e84d2252400a770ee", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MWIFIEX", "MWIFIEX_USB" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "ca800a9302764c445de0da0e84d2252400a770ee", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MWIFIEX", "MWIFIEX_USB" ], "series_id": "2288997c-eba8-4f6d-8fc6-ef07c459bf4e" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mwifiex_ret_802_11_scan", "mwifiex_handle_event_ext_scan_report", "mwifiex_check_network_compatibility" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE0OjUyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+OW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01XSUZJRVgmIzM0OywKICAgICYjMzQ7TVdJRklFWF9VU0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttd2lmaWV4X3JldF84MDJfMTFfc2NhbiYjMzQ7LAogICAgJiMzNDttd2lmaWV4X2hhbmRsZV9ldmVudF9leHRfc2Nhbl9yZXBvcnQmIzM0OywKICAgICYjMzQ7bXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHkmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBvdXQtb2YtYm91bmRzIHJlYWQgdnVsbmVyYWJpbGl0eSBpbiBgbXdpZmlleF9zZWFyY2hfb3VpX2luX2llYCBieSBpbnRyb2R1Y2luZyBib3VuZHMgY2hlY2tpbmcgb24gdGhlIE9VSSBjb3VudCAoYGllYm9keS1cdTAwM2VwdGtfY250WzBdYCkgYWdhaW5zdCB0aGUgYXZhaWxhYmxlIEluZm9ybWF0aW9uIEVsZW1lbnQgKElFKSBsZW5ndGggKGBpZV9sZW5gKS4gV2l0aG91dCB0aGlzIGNoZWNrLCBhIG1hbGljaW91c2x5IGNyYWZ0ZWQgYmVhY29uIG9yIHByb2JlIHJlc3BvbnNlIHdpdGggYSBsYXJnZSBPVUkgY291bnQgY291bGQgY2F1c2UgdGhlIGRyaXZlciB0byByZWFkIHBhc3QgdGhlIGVuZCBvZiB0aGUgYWxsb2NhdGVkIElFIGJ1ZmZlciBkdXJpbmcgdGhlIGBtZW1jbXBgIGxvb3AuXG5cblRoaXMgaXMgYSBjbGFzc2ljIG91dC1vZi1ib3VuZHMgcmVhZCBidWcsIHdoaWNoIGlzIHJlbGlhYmx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGVyZSBpcyBubyB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSwgc3RhY2svaGVhcCBpbmZvLWxlYWsgdG8gdXNlciBzcGFjZSwgb3IgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMgaW52b2x2ZWQgaW4gdGhpcyB2dWxuZXJhYmlsaXR5LiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LCBhcyBzdGFuZGFyZCBLQVNBTiB3aWxsIGNhdGNoIGFueSByZWdyZXNzaW9ucyBvciBzaW1pbGFyIG91dC1vZi1ib3VuZHMgYWNjZXNzIGlzc3VlcyBpbiB0aGlzIGNvZGUuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIHRvIGBtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWVgIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcyB3aGVuIHBhcnNpbmcgUlNOL1dQQSBJbmZvcm1hdGlvbiBFbGVtZW50cyAoSUVzKSBmcm9tIHNjYW4gcmVzdWx0cy4gVGhlIHZ1bG5lcmFiaWxpdHkgb2NjdXJzIHdoZW4gdGhlIGRyaXZlciBwcm9jZXNzZXMgc2NhbiByZXN1bHRzIHJlY2VpdmVkIGZyb20gdGhlIGZpcm13YXJlLiBTaW5jZSB0aGUgYG13aWZpZXhgIGRyaXZlciBzdXBwb3J0cyBhIFVTQiBpbnRlcmZhY2UgKGBNV0lGSUVYX1VTQmApLCB0aGUgZmlybXdhcmUgcmVzcG9uc2VzIGNhbiBiZSBmdXp6ZWQgdmlhIFVTQiBlbXVsYXRpb24gKGUuZy4sIGR1bW15LWhjZCkuIFRoZSBmaXggbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUgbG9naWMgaW4gdGhlIGRyaXZlciwgc28gaXQgaXMgd29ydGggZnV6emluZy4gRm9jdXMgc3ltYm9scyBhcmUgYG13aWZpZXhfcmV0XzgwMl8xMV9zY2FuYCwgYG13aWZpZXhfaGFuZGxlX2V2ZW50X2V4dF9zY2FuX3JlcG9ydGAsIGFuZCBgbXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHlgLCB3aGljaCBhcmUgdGhlIGVudHJ5IHBvaW50cyBmb3IgcHJvY2Vzc2luZyBzY2FuIHJlc3VsdHMgYW5kIGNoZWNraW5nIG5ldHdvcmsgY29tcGF0aWJpbGl0eS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxNDo1MjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGYxMzgyZTYwMzdlNzUyZjYzZDFhNzkzZjcwMGMyOGUwZGNmMDFlNDdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEF1ZyAxNCAxNDo1MjozMyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uY1xuaW5kZXggOTdjMGVjM2I4MjJlNy4uNDczZjQ2MjNlYTE5OSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmNcbkBAIC0xMDQsMTIgJiM0MzsxMDQsMjQgQEAgaGFzX3ZlbmRvcl9oZHIoc3RydWN0IGllZWVfdHlwZXNfdmVuZG9yX3NwZWNpZmljICppZSwgdTgga2V5KVxuICAqIGEgZ2l2ZW4gb3VpIGluIFBUSy5cbiAgKi9cbiBzdGF0aWMgdThcbi1td2lmaWV4X3NlYXJjaF9vdWlfaW5faWUoc3RydWN0IGllX2JvZHkgKmllYm9keSwgdTggKm91aSlcbiYjNDM7bXdpZmlleF9zZWFyY2hfb3VpX2luX2llKHN0cnVjdCBpZV9ib2R5ICppZWJvZHksIHU4ICpvdWksIGludCBpZV9sZW4pXG4ge1xuJiM0MztcdGNvbnN0IHNpemVfdCBwdGtfYm9keV9vZmZzZXQgPSBvZmZzZXRvZihzdHJ1Y3QgaWVfYm9keSwgcHRrX2JvZHkpO1xuIFx0dTggY291bnQ7XG4gXG4mIzQzO1x0LyogaWVfbGVuIGlzIHRoZSBudW1iZXIgb2YgYnl0ZXMgYXZhaWxhYmxlIGF0IGllYm9keS4gS2VlcCBpdCBzaWduZWRcbiYjNDM7XHQgKiBhbmQgcmVqZWN0IGEgbmVnYXRpdmUgKHVuZGVyZmxvd2VkKSBsZW5ndGggYmVmb3JlIHRoZSB1bnNpZ25lZFxuJiM0MztcdCAqIGNvbXBhcmlzb25zIGJlbG93LCBzbyBhIHNtYWxsIG9yIHplcm8gSUUgbGVuZ3RoIGNhbm5vdCB3cmFwLlxuJiM0MztcdCAqL1xuJiM0MztcdGlmIChpZV9sZW4gXHUwMDNjIDAgfHwgKHNpemVfdClpZV9sZW4gXHUwMDNjIHB0a19ib2R5X29mZnNldClcbiYjNDM7XHRcdHJldHVybiBNV0lGSUVYX09VSV9OT1RfUFJFU0VOVDtcbiYjNDM7XG4gXHRjb3VudCA9IGllYm9keS1cdTAwM2VwdGtfY250WzBdO1xuIFxuJiM0MztcdC8qIFJlamVjdCBhbiBPVUkgY291bnQgd2hvc2UgbGlzdCB3b3VsZCBydW4gcGFzdCB0aGUgZWxlbWVudC4gKi9cbiYjNDM7XHRpZiAocHRrX2JvZHlfb2Zmc2V0ICYjNDM7IGNvdW50ICogc2l6ZW9mKGllYm9keS1cdTAwM2VwdGtfYm9keSkgXHUwMDNlIChzaXplX3QpaWVfbGVuKVxuJiM0MztcdFx0cmV0dXJuIE1XSUZJRVhfT1VJX05PVF9QUkVTRU5UO1xuJiM0MztcbiBcdC8qIFRoZXJlIGNvdWxkIGJlIG11bHRpcGxlIE9VSXMgZm9yIFBUSyBoZW5jZVxuIFx0ICAgMSkgVGFrZSB0aGUgbGVuZ3RoLlxuIFx0ICAgMikgQ2hlY2sgYWxsIHRoZSBPVUlzIGZvciBBRVMuXG5AQCAtMTQzLDExICYjNDM7MTU1LDE0IEBAIG13aWZpZXhfaXNfcnNuX291aV9wcmVzZW50KHN0cnVjdCBtd2lmaWV4X2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjLCB1MzIgY2lwaGVyKVxuIFx0dTggcmV0ID0gTVdJRklFWF9PVUlfTk9UX1BSRVNFTlQ7XG4gXG4gXHRpZiAoaGFzX2llZWVfaGRyKGJzc19kZXNjLVx1MDAzZWJjbl9yc25faWUsIFdMQU5fRUlEX1JTTikpIHtcbiYjNDM7XHRcdGludCBpZV9sZW4gPSAoaW50KWJzc19kZXNjLVx1MDAzZWJjbl9yc25faWUtXHUwMDNlaWVlZV9oZHIubGVuIC1cbiYjNDM7XHRcdFx0UlNOX0dUS19PVUlfT0ZGU0VUO1xuJiM0MztcbiBcdFx0aWVib2R5ID0gKHN0cnVjdCBpZV9ib2R5ICopXG4gXHRcdFx0ICgoKHU4ICopIGJzc19kZXNjLVx1MDAzZWJjbl9yc25faWUtXHUwMDNlZGF0YSkgJiM0MztcbiBcdFx0XHQgIFJTTl9HVEtfT1VJX09GRlNFVCk7XG4gXHRcdG91aSA9IFx1MDAyNm13aWZpZXhfcnNuX291aVtjaXBoZXJdWzBdO1xuLVx0XHRyZXQgPSBtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWUoaWVib2R5LCBvdWkpO1xuJiM0MztcdFx0cmV0ID0gbXdpZmlleF9zZWFyY2hfb3VpX2luX2llKGllYm9keSwgb3VpLCBpZV9sZW4pO1xuIFx0XHRpZiAocmV0KVxuIFx0XHRcdHJldHVybiByZXQ7XG4gXHR9XG5AQCAtMTY5LDEwICYjNDM7MTg0LDE0IEBAIG13aWZpZXhfaXNfd3BhX291aV9wcmVzZW50KHN0cnVjdCBtd2lmaWV4X2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjLCB1MzIgY2lwaGVyKVxuIFx0dTggcmV0ID0gTVdJRklFWF9PVUlfTk9UX1BSRVNFTlQ7XG4gXG4gXHRpZiAoaGFzX3ZlbmRvcl9oZHIoYnNzX2Rlc2MtXHUwMDNlYmNuX3dwYV9pZSwgV0xBTl9FSURfVkVORE9SX1NQRUNJRklDKSkge1xuJiM0MztcdFx0aW50IGllX2xlbiA9IChpbnQpYnNzX2Rlc2MtXHUwMDNlYmNuX3dwYV9pZS1cdTAwM2V2ZW5kX2hkci5sZW4gLVxuJiM0MztcdFx0XHQoaW50KXNpemVvZihic3NfZGVzYy1cdTAwM2ViY25fd3BhX2llLVx1MDAzZXZlbmRfaGRyLm91aSkgLVxuJiM0MztcdFx0XHRXUEFfR1RLX09VSV9PRkZTRVQ7XG4mIzQzO1xuIFx0XHRpZWJvZHkgPSAoc3RydWN0IGllX2JvZHkgKikoKHU4ICopYnNzX2Rlc2MtXHUwMDNlYmNuX3dwYV9pZS1cdTAwM2VkYXRhICYjNDM7XG4gXHRcdFx0XHRcdCAgICBXUEFfR1RLX09VSV9PRkZTRVQpO1xuIFx0XHRvdWkgPSBcdTAwMjZtd2lmaWV4X3dwYV9vdWlbY2lwaGVyXVswXTtcbi1cdFx0cmV0ID0gbXdpZmlleF9zZWFyY2hfb3VpX2luX2llKGllYm9keSwgb3VpKTtcbiYjNDM7XHRcdHJldCA9IG13aWZpZXhfc2VhcmNoX291aV9pbl9pZShpZWJvZHksIG91aSwgaWVfbGVuKTtcbiBcdFx0aWYgKHJldClcbiBcdFx0XHRyZXR1cm4gcmV0O1xuIFx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE0OjUyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjhtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNV0lGSUVYJiMzNDssCiAgICAmIzM0O01XSUZJRVhfVVNCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bXdpZmlleF9yZXRfODAyXzExX3NjYW4mIzM0OywKICAgICYjMzQ7bXdpZmlleF9oYW5kbGVfZXZlbnRfZXh0X3NjYW5fcmVwb3J0JiMzNDssCiAgICAmIzM0O213aWZpZXhfY2hlY2tfbmV0d29ya19jb21wYXRpYmlsaXR5JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIHRvIGBtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWVgIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcyB3aGVuIHBhcnNpbmcgUlNOL1dQQSBJbmZvcm1hdGlvbiBFbGVtZW50cyAoSUVzKSBmcm9tIHNjYW4gcmVzdWx0cy4gVGhlIHZ1bG5lcmFiaWxpdHkgb2NjdXJzIHdoZW4gdGhlIGRyaXZlciBwcm9jZXNzZXMgc2NhbiByZXN1bHRzIHJlY2VpdmVkIGZyb20gdGhlIGZpcm13YXJlLiBTaW5jZSB0aGUgYG13aWZpZXhgIGRyaXZlciBzdXBwb3J0cyBhIFVTQiBpbnRlcmZhY2UgKGBNV0lGSUVYX1VTQmApLCB0aGUgZmlybXdhcmUgcmVzcG9uc2VzIGNhbiBiZSBmdXp6ZWQgdmlhIFVTQiBlbXVsYXRpb24gKGUuZy4sIGR1bW15LWhjZCkuIFRoZSBmaXggbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUgbG9naWMgaW4gdGhlIGRyaXZlciwgc28gaXQgaXMgd29ydGggZnV6emluZy4gRm9jdXMgc3ltYm9scyBhcmUgYG13aWZpZXhfcmV0XzgwMl8xMV9zY2FuYCwgYG13aWZpZXhfaGFuZGxlX2V2ZW50X2V4dF9zY2FuX3JlcG9ydGAsIGFuZCBgbXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHlgLCB3aGljaCBhcmUgdGhlIGVudHJ5IHBvaW50cyBmb3IgcHJvY2Vzc2luZyBzY2FuIHJlc3VsdHMgYW5kIGNoZWNraW5nIG5ldHdvcmsgY29tcGF0aWJpbGl0eS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGYxMzgyZTYwMzdlNzUyZjYzZDFhNzkzZjcwMGMyOGUwZGNmMDFlNDcKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEF1ZyAxNCAxNDo1MjozMyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jCmluZGV4IDk3YzBlYzNiODIyZTcuLjQ3M2Y0NjIzZWExOTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYwpAQCAtMTA0LDEyICYjNDM7MTA0LDI0IEBAIGhhc192ZW5kb3JfaGRyKHN0cnVjdCBpZWVlX3R5cGVzX3ZlbmRvcl9zcGVjaWZpYyAqaWUsIHU4IGtleSkKICAqIGEgZ2l2ZW4gb3VpIGluIFBUSy4KICAqLwogc3RhdGljIHU4Ci1td2lmaWV4X3NlYXJjaF9vdWlfaW5faWUoc3RydWN0IGllX2JvZHkgKmllYm9keSwgdTggKm91aSkKJiM0Mzttd2lmaWV4X3NlYXJjaF9vdWlfaW5faWUoc3RydWN0IGllX2JvZHkgKmllYm9keSwgdTggKm91aSwgaW50IGllX2xlbikKIHsKJiM0MzsJY29uc3Qgc2l6ZV90IHB0a19ib2R5X29mZnNldCA9IG9mZnNldG9mKHN0cnVjdCBpZV9ib2R5LCBwdGtfYm9keSk7CiAJdTggY291bnQ7CiAKJiM0MzsJLyogaWVfbGVuIGlzIHRoZSBudW1iZXIgb2YgYnl0ZXMgYXZhaWxhYmxlIGF0IGllYm9keS4gS2VlcCBpdCBzaWduZWQKJiM0MzsJICogYW5kIHJlamVjdCBhIG5lZ2F0aXZlICh1bmRlcmZsb3dlZCkgbGVuZ3RoIGJlZm9yZSB0aGUgdW5zaWduZWQKJiM0MzsJICogY29tcGFyaXNvbnMgYmVsb3csIHNvIGEgc21hbGwgb3IgemVybyBJRSBsZW5ndGggY2Fubm90IHdyYXAuCiYjNDM7CSAqLwomIzQzOwlpZiAoaWVfbGVuICZsdDsgMCB8fCAoc2l6ZV90KWllX2xlbiAmbHQ7IHB0a19ib2R5X29mZnNldCkKJiM0MzsJCXJldHVybiBNV0lGSUVYX09VSV9OT1RfUFJFU0VOVDsKJiM0MzsKIAljb3VudCA9IGllYm9keS0mZ3Q7cHRrX2NudFswXTsKIAomIzQzOwkvKiBSZWplY3QgYW4gT1VJIGNvdW50IHdob3NlIGxpc3Qgd291bGQgcnVuIHBhc3QgdGhlIGVsZW1lbnQuICovCiYjNDM7CWlmIChwdGtfYm9keV9vZmZzZXQgJiM0MzsgY291bnQgKiBzaXplb2YoaWVib2R5LSZndDtwdGtfYm9keSkgJmd0OyAoc2l6ZV90KWllX2xlbikKJiM0MzsJCXJldHVybiBNV0lGSUVYX09VSV9OT1RfUFJFU0VOVDsKJiM0MzsKIAkvKiBUaGVyZSBjb3VsZCBiZSBtdWx0aXBsZSBPVUlzIGZvciBQVEsgaGVuY2UKIAkgICAxKSBUYWtlIHRoZSBsZW5ndGguCiAJICAgMikgQ2hlY2sgYWxsIHRoZSBPVUlzIGZvciBBRVMuCkBAIC0xNDMsMTEgJiM0MzsxNTUsMTQgQEAgbXdpZmlleF9pc19yc25fb3VpX3ByZXNlbnQoc3RydWN0IG13aWZpZXhfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MsIHUzMiBjaXBoZXIpCiAJdTggcmV0ID0gTVdJRklFWF9PVUlfTk9UX1BSRVNFTlQ7CiAKIAlpZiAoaGFzX2llZWVfaGRyKGJzc19kZXNjLSZndDtiY25fcnNuX2llLCBXTEFOX0VJRF9SU04pKSB7CiYjNDM7CQlpbnQgaWVfbGVuID0gKGludClic3NfZGVzYy0mZ3Q7YmNuX3Jzbl9pZS0mZ3Q7aWVlZV9oZHIubGVuIC0KJiM0MzsJCQlSU05fR1RLX09VSV9PRkZTRVQ7CiYjNDM7CiAJCWllYm9keSA9IChzdHJ1Y3QgaWVfYm9keSAqKQogCQkJICgoKHU4ICopIGJzc19kZXNjLSZndDtiY25fcnNuX2llLSZndDtkYXRhKSAmIzQzOwogCQkJICBSU05fR1RLX09VSV9PRkZTRVQpOwogCQlvdWkgPSAmYW1wO213aWZpZXhfcnNuX291aVtjaXBoZXJdWzBdOwotCQlyZXQgPSBtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWUoaWVib2R5LCBvdWkpOwomIzQzOwkJcmV0ID0gbXdpZmlleF9zZWFyY2hfb3VpX2luX2llKGllYm9keSwgb3VpLCBpZV9sZW4pOwogCQlpZiAocmV0KQogCQkJcmV0dXJuIHJldDsKIAl9CkBAIC0xNjksMTAgJiM0MzsxODQsMTQgQEAgbXdpZmlleF9pc193cGFfb3VpX3ByZXNlbnQoc3RydWN0IG13aWZpZXhfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MsIHUzMiBjaXBoZXIpCiAJdTggcmV0ID0gTVdJRklFWF9PVUlfTk9UX1BSRVNFTlQ7CiAKIAlpZiAoaGFzX3ZlbmRvcl9oZHIoYnNzX2Rlc2MtJmd0O2Jjbl93cGFfaWUsIFdMQU5fRUlEX1ZFTkRPUl9TUEVDSUZJQykpIHsKJiM0MzsJCWludCBpZV9sZW4gPSAoaW50KWJzc19kZXNjLSZndDtiY25fd3BhX2llLSZndDt2ZW5kX2hkci5sZW4gLQomIzQzOwkJCShpbnQpc2l6ZW9mKGJzc19kZXNjLSZndDtiY25fd3BhX2llLSZndDt2ZW5kX2hkci5vdWkpIC0KJiM0MzsJCQlXUEFfR1RLX09VSV9PRkZTRVQ7CiYjNDM7CiAJCWllYm9keSA9IChzdHJ1Y3QgaWVfYm9keSAqKSgodTggKilic3NfZGVzYy0mZ3Q7YmNuX3dwYV9pZS0mZ3Q7ZGF0YSAmIzQzOwogCQkJCQkgICAgV1BBX0dUS19PVUlfT0ZGU0VUKTsKIAkJb3VpID0gJmFtcDttd2lmaWV4X3dwYV9vdWlbY2lwaGVyXVswXTsKLQkJcmV0ID0gbXdpZmlleF9zZWFyY2hfb3VpX2luX2llKGllYm9keSwgb3VpKTsKJiM0MzsJCXJldCA9IG13aWZpZXhfc2VhcmNoX291aV9pbl9pZShpZWJvZHksIG91aSwgaWVfbGVuKTsKIAkJaWYgKHJldCkKIAkJCXJldHVybiByZXQ7CiAJfQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxNDo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODU5CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMjA2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFdpcmVsZXNzIERyaXZlciBQYXRjaCBmb3IgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCB0d2Vha3MgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmNgLiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIGFkZHJlc3NpbmcgYSBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyByZWFkIHZ1bG5lcmFiaWxpdHkgaW4gYG13aWZpZXhfc2VhcmNoX291aV9pbl9pZWAgYnkgYWRkaW5nIHNvbWUgYm91bmRzIGNoZWNraW5nLiBTbWFydCBtb3ZlLCBnb29kIHRvIHNlZSBwcm9hY3RpdmUgc2VjdXJpdHkgbWVhc3VyZXMuIFRoZXkmIzM5O3ZlIGFsc28gdXBkYXRlZCBgbXdpZmlleF9pc19yc25fb3VpX3ByZXNlbnRgIGFuZCBgbXdpZmlleF9pc193cGFfb3VpX3ByZXNlbnRgIHRvIHBhc3MgdGhlIGBpZV9sZW5gIGFsb25nIHRvIHRoYXQgZnVuY3Rpb24sIHdoaWNoIG1ha2VzIHBlcmZlY3Qgc2Vuc2UgaW4gdGhpcyBjb250ZXh0LgoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCAmIzM0O2NhbiB0aGlzIGRyaXZlciBiZSBmdXp6ZWQgZWZmZWN0aXZlbHk/JiMzNDsgSXQmIzM5O3MgYSBNYXJ2ZWxsIFdpRmktRXggZHJpdmVyLCB3aGljaCBtZWFucyBpdCYjMzk7cyBhIHdpcmVsZXNzIGRyaXZlciwgYW5kIHdpcmVsZXNzIGRyaXZlcnMgYXJlIGFsd2F5cyBpbnRlcmVzdGluZyBmcm9tIGEgZnV6emluZyBwZXJzcGVjdGl2ZS4gSG93ZXZlciwgdGhleSYjMzk7cmUgb2Z0ZW4gdmVyeSBoYXJkd2FyZS1zcGVjaWZpYywgc28gdGhhdCYjMzk7cyB0aGUgaW1tZWRpYXRlIHF1ZXN0aW9uLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSBpbnRlcmZhY2UuIElzIHRoaXMgYSBVU0IsIFNESU8sIG9yIFBDSWUgZHJpdmVyPwoKSSYjMzk7bGwgY2hlY2sgdGhlIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgYWdhaW46IGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvYC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBzb21lIGNsdWVzLiBUaGVuLCBJIGRlZmluaXRlbHkgbmVlZCB0byBkaWcgaW50byB0aGUgS2NvbmZpZyB0byB1bmRlcnN0YW5kIHRoZSBoYXJkd2FyZSBkZXBlbmRlbmNpZXMgYW5kIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gRnJvbSB0aGVyZSwgSSBjYW4gYmV0dGVyIGFzc2VzcyBpdHMgZnV6emFiaWxpdHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTQ6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1XSUZJRVgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6Mjpjb25maWcgTVdJRklFWFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgV2lGaS1FeCBEcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0xMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjEyOmNvbmZpZyBNV0lGSUVYX1NESU9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTEzLVx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBXaUZpLUV4IERyaXZlciBmb3IgU0Q4Nzg2L1NEODc4Ny9TRDg3OTcvU0Q4ODg3L1NEODg5Ny9TRDg5NzcvU0Q4OTc4L1NEODk4Ny9TRDg5OTdcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0yNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjI1OmNvbmZpZyBNV0lGSUVYX1BDSUVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTI2LVx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBXaUZpLUV4IERyaXZlciBmb3IgUENJRSA4NzY2Lzg4OTcvODk5N1wmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTM2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6Mzc6Y29uZmlnIE1XSUZJRVhfVVNCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0zOC1cdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFVTQjg3NjYvODc5Ny84OTk3XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTQ6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzgyOQoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDE0OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIHRoZSBNV0lGSUVYX1VTQiBEcml2ZXIqKgoKT2theSwgc28gSSBzZWUgdGhpcyBgTVdJRklFWF9VU0JgIHRoaW5nLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtVU0IgZHJpdmVycy4uLiB0aG9zZSBhcmUgZnV6emFibGUhJiMzNDsgV2UgY2FuIGhpdCB0aGVtIHdpdGggZHVtbXktaGNkIG9yLCBldmVuIGJldHRlciwgc29tZXRoaW5nIGxpa2Ugc3l6a2FsbGVyJiMzOTtzIFVTQiBmdXp6aW5nIGNhcGFiaWxpdGllcy4gV2FpdCwgZG9lc24mIzM5O3Qgc3l6a2FsbGVyIGFjdHVhbGx5ICpoYXZlKiBVU0IgZnV6emluZyBzdXBwb3J0PyBMZXQmIzM5O3MgdmVyaWZ5IHRoYXQuIFllcCwgY29uZmlybWVkLiBPa2F5LCB0aGlzIGBNV0lGSUVYX1VTQmAgbG9va3MgbGlrZSBhIHByaW1lIHRhcmdldC4KCk5vdywgbGV0JiMzOTtzIGRpZyBpbnRvIHRoaXMgc3BlY2lmaWMgZHJpdmVyLiBJJiMzOTtsbCBzdGFydCB3aXRoIGBtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWVgIGFuZCBzZWUgd2hlcmUgdGhhdCYjMzk7cyBjYWxsZWQuIEhtbSwgaXQmIzM5O3MgY2FsbGVkIGZyb20gYG13aWZpZXhfaXNfcnNuX291aV9wcmVzZW50YCBhbmQgYG13aWZpZXhfaXNfd3BhX291aV9wcmVzZW50YC4gT2ssIG5vdyBsZXQmIzM5O3MgdHJhY2Ugd2hlcmUgKnRob3NlKiBhcmUgY2FsbGVkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY2FsbCBmbG93IHRvIGtub3cgdGhlIGF0dGFjayBzdXJmYWNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE0OjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O213aWZpZXhfaXNfcnNuX291aV9wcmVzZW50JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jPTE1MD1zdGF0aWMgdThcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM6MTUxOm13aWZpZXhfaXNfcnNuX291aV9wcmVzZW50KHN0cnVjdCBtd2lmaWV4X2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjLCB1MzIgY2lwaGVyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0xNTIte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM9MzQ3PW13aWZpZXhfaXNfbmV0d29ya19jb21wYXRpYmxlKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy00MTEtXHRcdFx0ICAgICBic3NfZGVzYy1cdTAwM2ViY25faHRfY2FwKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM6NDEyOlx0XHRcdCAgICAhbXdpZmlleF9pc19yc25fb3VpX3ByZXNlbnQoYnNzX2Rlc2MsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTQxMy1cdFx0XHRcdFx0XHRcdENJUEhFUl9TVUlURV9DQ01QKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy00MTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jOjQxNTpcdFx0XHRcdGlmIChtd2lmaWV4X2lzX3Jzbl9vdWlfcHJlc2VudFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy00MTYtXHRcdFx0XHRcdFx0KGJzc19kZXNjLCBDSVBIRVJfU1VJVEVfVEtJUCkpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxNDo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NjAwCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogNDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgc29tZW9uZSBkZWVwbHkgZmFtaWxpYXIgd2l0aCB0aGlzIGtpbmQgb2Ygc3lzdGVtOgoKKipBbmFseXppbmcgYG13aWZpZXhfaXNfbmV0d29ya19jb21wYXRpYmxlYCoqCgpSaWdodCwgc28gdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbSBgbXdpZmlleF9pc19uZXR3b3JrX2NvbXBhdGlibGVgLi4uIGhtbSwgbGlrZWx5IGR1cmluZyB0aGUgc2NhbiByZXN1bHRzIHByb2Nlc3Npbmcgc3RhZ2UuIFRoYXQgbWFrZXMgc2Vuc2U7IGl0JiMzOTtzIHRoZSBuYXR1cmFsIHBsYWNlIHRvIGNoZWNrIGNvbXBhdGliaWxpdHkuIE5vdywgdGhlIHJlYWwgcXVlc3Rpb24gaXMsIHdoYXQgZXhhY3RseSBpcyBpdCAqZG9pbmcqPyBJIG5lZWQgdG8gZGl2ZSBpbnRvIHRoZSBkZWZpbml0aW9uIG9mIGBtd2lmaWV4X2lzX25ldHdvcmtfY29tcGF0aWJsZWAgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSBhbmQgaG93IGl0IGhhbmRsZXMgdGhlc2Ugc2NhbiByZXN1bHRzLiBMZXQmIzM5O3MgZ2V0IHRvIGl0LiBUaW1lIHRvIGRpZyBpbiBhbmQgc2VlIHRoZSBleGFjdCBjaGVja3MgYW5kIGNyaXRlcmlhIHRoaXMgZnVuY3Rpb24gZW1wbG95cy4gVGhpcyBpcyB3aGVyZSB0aGUgY29yZSBsb2dpYyB3aWxsIGJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE0OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O213aWZpZXhfaXNfbmV0d29ya19jb21wYXRpYmxlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jPTM0Nj1zdGF0aWMgczMyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jOjM0Nzptd2lmaWV4X2lzX25ldHdvcmtfY29tcGF0aWJsZShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0zNDgtXHRcdFx0ICAgICAgc3RydWN0IG13aWZpZXhfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MsIHUzMiBtb2RlKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM9MTYxOT1pbnQgbXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHkoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTE2MzEtXHRcdGNhc2UgTkw4MDIxMV9JRlRZUEVfQURIT0M6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jOjE2MzI6XHRcdFx0cmV0ID0gbXdpZmlleF9pc19uZXR3b3JrX2NvbXBhdGlibGUocHJpdiwgYnNzX2Rlc2MsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTE2MzMtXHRcdFx0XHRcdFx0XHQgICAgcHJpdi1cdTAwM2Vic3NfbW9kZSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTQ6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTEyNQoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKlRyYWNpbmcgdGhlIE5ldHdvcmsgQ29tcGF0aWJpbGl0eSBDaGVjayoqCgpBbHJpZ2h0LCBzbyB0aGUgZnVuY3Rpb24gaW4gcXVlc3Rpb24gaXMgYG13aWZpZXhfY2hlY2tfbmV0d29ya19jb21wYXRpYmlsaXR5YC4gTXkgaW1tZWRpYXRlIHJlZmxleCBpcyB0byB1bmRlcnN0YW5kIGl0cyBwbGFjZSB3aXRoaW4gdGhlIGJyb2FkZXIgZnJhbWV3b3JrLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgY2FsbGluZyBjb250ZXh0LiBMZXQmIzM5O3MgdHJhY2UgYmFjayBmcm9tIGBtd2lmaWV4X2NoZWNrX25ldHdvcmtfY29tcGF0aWJpbGl0eWAgYW5kIHF1aWNrbHkgaWRlbnRpZnkgaXRzIGltbWVkaWF0ZSB1cHN0cmVhbSBjYWxsZXJzLiBUaGlzIGlzIGVzc2VudGlhbCB0byB1bmRlcnN0YW5kIHRoZSB0cmlnZ2VyIGNvbmRpdGlvbnMgYW5kIHRoZSBvdmVyYWxsIGRlc2lnbiBpbnRlbnQgYmVoaW5kIHRoaXMgcGFydGljdWxhciBjb21wYXRpYmlsaXR5IGNoZWNrLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBjbHVlcyBpbiB0aGUgc3Vycm91bmRpbmcgY29kZSB0aGF0IHdpbGwgZXhwbGFpbiB3aHkgdGhlIGNoZWNrIGlzIG9jY3VycmluZywgYW5kIGhvcGVmdWxseSByZXZlYWwgc29tZSBpbnNpZ2h0cyBpbnRvIHRoZSBzcGVjaWZpYyBjcml0ZXJpYSBiZWluZyBldmFsdWF0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE0OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O213aWZpZXhfY2hlY2tfbmV0d29ya19jb21wYXRpYmlsaXR5JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oPTE1NDE9aW50IG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTU0Mi1cdFx0XHRcdCAgICBzdHJ1Y3QgbXdpZmlleF9ic3NkZXNjcmlwdG9yICpic3NfZW50cnkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaDoxNTQzOmludCBtd2lmaWV4X2NoZWNrX25ldHdvcmtfY29tcGF0aWJpbGl0eShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xNTQ0LVx0XHRcdFx0XHRzdHJ1Y3QgbXdpZmlleF9ic3NkZXNjcmlwdG9yICpic3NfZGVzYyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYz0xNTk0PWludCBtd2lmaWV4X2NtZF84MDJfMTFfc2NhbihzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqY21kLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMTYxOC0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM6MTYxOTppbnQgbXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHkoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMTYyMC1cdFx0XHRcdFx0c3RydWN0IG13aWZpZXhfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYz0xNzA2PXN0YXRpYyBpbnQgbXdpZmlleF91cGRhdGVfY3Vycl9ic3NfcGFyYW1zKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0xNzIwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYzoxNzIxOlx0cmV0ID0gbXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHkocHJpdiwgYnNzX2Rlc2MpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0xNzIyLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmM9MzMyPWludCBtd2lmaWV4X2Jzc19zdGFydChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCBzdHJ1Y3QgY2ZnODAyMTFfYnNzICpic3MsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jLTM3NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYzozNzU6XHRcdHJldCA9IG13aWZpZXhfY2hlY2tfbmV0d29ya19jb21wYXRpYmlsaXR5KHByaXYsIGJzc19kZXNjKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYy0zNzYtXHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jLTQyMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYzo0MjM6XHRcdHJldCA9IG13aWZpZXhfY2hlY2tfbmV0d29ya19jb21wYXRpYmlsaXR5KHByaXYsIGJzc19kZXNjKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYy00MjQtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE0OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYwNTkKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAyNDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIGBtd2lmaWV4YCBEcml2ZXImIzM5O3MgUG90ZW50aWFsIEF0dGFjayBTdXJmYWNlKioKCk9rYXksIHNvIEkmIzM5O20gdHJhY2tpbmcgZG93biBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzIGluIHRoaXMgYG13aWZpZXhgIGRyaXZlci4gSSBzZWUgdGhlc2UgdHdvIGtleSBmdW5jdGlvbnMsIGBtd2lmaWV4X2Jzc19zdGFydGAgYW5kIGBtd2lmaWV4X3VwZGF0ZV9jdXJyX2Jzc19wYXJhbXNgLCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoZXkmIzM5O3JlIGxpa2VseSB0b3VjaGVkIGR1cmluZyBuZXR3b3JrIGNvbm5lY3Rpb24gb3Igc2NhbiByZXN1bHQgcHJvY2Vzc2luZy4gUHJldHR5IHN0YW5kYXJkIGZvciBhIGRyaXZlciwgZXNwZWNpYWxseSBvbmUgdGhhdCBpbnRlcmZhY2VzIHdpdGggYG1hYzgwMjExYCBhbmQgYGNmZzgwMjExYC4gQnV0IGhvbGQgb24uLi4gdGhpcyBgbXdpZmlleGAgZHJpdmVyIGlzIGEgKmZ1bGxtYWMqIGRyaXZlciwgc28gdGhhdCBtZWFucyB0aGUgZmlybXdhcmUgaXMgZmVlZGluZyBpdCBzY2FuIHJlc3VsdHMuIFRoaXMgY2hhbmdlcyB0aGluZ3MuCgpUaGUgZmlybXdhcmUtdG8taG9zdCBpbnRlcmZhY2UgdmlhIFVTQiBpcyBub3cgdGhlIGp1aWN5IHRhcmdldC4gSWYgSSBjYW4gZnV6eiB0aGF0IGludGVyZmFjZSBhbmQgc2ltdWxhdGUgc2NhbiByZXN1bHRzIGZyb20gdGhlIGZpcm13YXJlLCB0aGF0JiMzOTtzIHdoZXJlIEkgY2FuIGxpa2VseSB0cmlnZ2VyIHNvbWV0aGluZyBpbnRlcmVzdGluZy4gSSBuZWVkIHRvIGZvY3VzIG9uIGhvdyB0aGUgZHJpdmVyIHByb2Nlc3NlcyB0aGVzZSByZXN1bHRzLiBJ4oCZbGwgc3RhcnQgYnkgZGlnZ2luZyBpbnRvIGBtd2lmaWV4X3VwZGF0ZV9jdXJyX2Jzc19wYXJhbXNgIGFuZCBgbXdpZmlleF9ic3Nfc3RhcnRgIGRpcmVjdGx5LgoKQWhhLCBgbXdpZmlleF9ic3Nfc3RhcnRgIGlzIGFjdHVhbGx5IGNhbGxlZCBmcm9tIGBtd2lmaWV4X2NmZzgwMjExX2Nvbm5lY3RgIG9yIG90aGVyIGBjZmc4MDIxMWAgY2FsbGJhY2tzLCB3aGljaCBtZWFucyBpdCByZWNlaXZlcyBhIGBjZmc4MDIxMV9ic3NgIHN0cnVjdCBhcyBpbnB1dC4gSW50ZXJlc3RpbmcuLi4gYnV0IHRoYXTigJlzIG5vdCBxdWl0ZSBpdC4gSSBhbHNvIHNlZSB0aGF0IGBtd2lmaWV4X2NoZWNrX25ldHdvcmtfY29tcGF0aWJpbGl0eWAgZnVuY3Rpb24gdGFrZXMgYSBgbXdpZmlleF9ic3NkZXNjcmlwdG9yYCBzdHJ1Y3QuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGV4YWN0bHkgaG93IHRoaXMgYG13aWZpZXhfYnNzZGVzY3JpcHRvcmAgaXMgcG9wdWxhdGVkLiBUaGF0JiMzOTtzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBob3cgdGhlIGZpcm13YXJlIGRhdGEgZmxvd3MgaW50byB0aGUgZHJpdmVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxNDo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttd2lmaWV4X3VwZGF0ZV9jdXJyX2Jzc19wYXJhbXMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM9MTY2Mj1zdGF0aWMgaW50IG13aWZpZXhfc2F2ZV9oaWRkZW5fc3NpZF9jaGFubmVscyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMTcwNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM6MTcwNjpzdGF0aWMgaW50IG13aWZpZXhfdXBkYXRlX2N1cnJfYnNzX3BhcmFtcyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0xNzA3LVx0XHRcdFx0XHQgIHN0cnVjdCBjZmc4MDIxMV9ic3MgKmJzcylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jPTE3NDY9bXdpZmlleF9wYXJzZV9zaW5nbGVfcmVzcG9uc2VfYnVmKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsIHU4ICoqYnNzX2luZm8sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0xODkzLVx0XHRcdFx0XHQgICAgRVRIX0FMRU4pKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYzoxODk0Olx0XHRcdFx0XHRtd2lmaWV4X3VwZGF0ZV9jdXJyX2Jzc19wYXJhbXMocHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMTg5NS1cdFx0XHRcdFx0XHRcdFx0ICAgICAgIGJzcyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE0OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcwMzAKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiA5MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgRmlybXdhcmUgUmVzcG9uc2UgSGFuZGxpbmcqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBtd2lmaWV4X3BhcnNlX3NpbmdsZV9yZXNwb25zZV9idWZgIGhlcmUuIEl0JiMzOTtzIGNsZWFyIHRoaXMgZnVuY3Rpb24gaXMgdGhlIGNlbnRyYWwgcG9pbnQgZm9yIHBhcnNpbmcgdGhlIHJlc3BvbnNlIGJ1ZmZlciBjb21pbmcgZGlyZWN0bHkgZnJvbSB0aGUgZmlybXdhcmUuIEFuZCB0aGUgZmlybXdhcmUsIG9mIGNvdXJzZSwgY2FuIGJlIGZlZCBkYXRhIHRocm91Z2ggYSBVU0IgY29ubmVjdGlvbiwgd2hpY2ggbWFrZXMgdGhpcyBhIHByaW1lIHRhcmdldCBmb3IgZnV6emluZy4gSG1tLCB0aGlzIGlzIHdoZXJlIHRoaW5ncyBnZXQgaW50ZXJlc3RpbmcuIE5vdywgSSBzZWUgdGhhdCBgbXdpZmlleF91cGRhdGVfY3Vycl9ic3NfcGFyYW1zYCBnZXRzIGNhbGxlZCBmcm9tIHdpdGhpbiBgbXdpZmlleF9wYXJzZV9zaW5nbGVfcmVzcG9uc2VfYnVmYC4gVGhhdOKAmXMgd29ydGggaW52ZXN0aWdhdGluZyBmdXJ0aGVyLiBJIHNob3VsZCBwcm9iYWJseSBkaXZlIGludG8gYG13aWZpZXhfcGFyc2Vfc2luZ2xlX3Jlc3BvbnNlX2J1ZmAgaXRzZWxmIGFuZCBzZWUgd2hhdCYjMzk7cyByZWFsbHkgZ29pbmcgb24gaW4gdGhlcmUuIEl0JiMzOTtzIGEga2V5IGZ1bmN0aW9uIHRvIHVuZGVyc3RhbmQgdGhlIHN5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTQ6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXdpZmlleF9wYXJzZV9zaW5nbGVfcmVzcG9uc2VfYnVmJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jPTE3NDU9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYzoxNzQ2Om13aWZpZXhfcGFyc2Vfc2luZ2xlX3Jlc3BvbnNlX2J1ZihzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCB1OCAqKmJzc19pbmZvLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0xNzQ3LVx0XHRcdFx0ICB1MzIgKmJ5dGVzX2xlZnQsIHU2NCBmd190c2YsIHU4ICpyYWRpb190eXBlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM9MjEwNT1pbnQgbXdpZmlleF9yZXRfODAyXzExX3NjYW4oc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTIyMzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jOjIyMzI6XHRcdHJldCA9IG13aWZpZXhfcGFyc2Vfc2luZ2xlX3Jlc3BvbnNlX2J1Zihwcml2LCBcdTAwMjZic3NfaW5mbyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMjIzMy1cdFx0XHRcdFx0XHRcdFx1MDAyNmJ5dGVzX2xlZnQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYz0yNjA2PWludCBtd2lmaWV4X2hhbmRsZV9ldmVudF9leHRfc2Nhbl9yZXBvcnQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTI3MjItXHRcdH1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM6MjcyMzpcdFx0cmV0ID0gbXdpZmlleF9wYXJzZV9zaW5nbGVfcmVzcG9uc2VfYnVmKHByaXYsIFx1MDAyNmJzc19pbmZvLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0yNzI0LVx0XHRcdFx0XHRcdFx0XHUwMDI2Ynl0ZXNfbGVmdCwgZndfdHNmLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxNDo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3Nzc3CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMTc3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgV2ktRmkgRHJpdmVyIFZ1bG5lcmFiaWxpdHkqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiBsb29raW5nIGF0IHRoaXMgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHksIGFuZCBpdCBzZWVtcyBsaWtlIHdlIGhhdmUgYSBwcmV0dHkgY2xlYXIgcGF0aCBoZXJlLiBJIHNlZSB0aGF0IHRoZSBgbXdpZmlleF9yZXRfODAyXzExX3NjYW5gIGFuZCBgbXdpZmlleF9oYW5kbGVfZXZlbnRfZXh0X3NjYW5fcmVwb3J0YCBmdW5jdGlvbnMgYXJlIGNhbGxpbmcgYG13aWZpZXhfcGFyc2Vfc2luZ2xlX3Jlc3BvbnNlX2J1ZmAsIHdoaWNoIGlzIHdoZXJlIHdlJiMzOTtyZSBkaWdnaW5nIGludG8gdGhlIHNjYW4gcmVzdWx0IHByb2Nlc3NpbmcgZnJvbSB0aGUgZmlybXdhcmUuIEVzc2VudGlhbGx5LCB0aGUgZmlybXdhcmUgc2VuZHMgdGhlIHNjYW4gZGF0YSwgdGhlIGRyaXZlciBwYXJzZXMgaXQsIGNoZWNrcyBmb3IgbmV0d29yayBjb21wYXRpYmlsaXR5LCBhbmQgYSBrZXkgcGFydCBvZiB0aGF0IHBhcnNpbmcgaW52b2x2ZXMgZXh0cmFjdGluZyBhbmQgaGFuZGxpbmcgdGhlIEluZm9ybWF0aW9uIEVsZW1lbnRzIChJRXMpLgoKVGhlIGNvcmUgb2YgdGhlIGlzc3VlIGxvb2tzIHRvIGJlIGFuIG91dC1vZi1ib3VuZHMgcmVhZCB3aXRoaW4gdGhlIGBtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWVgIGZ1bmN0aW9uLCBhbmQgaXQmIzM5O3MgaGFwcGVuaW5nIHdoZW4gZGVhbGluZyB3aXRoIHRoZSBSU04vV1BBIElFcy4gVGhhdCYjMzk7cyBhIGNsYXNzaWMgYXJlYSBmb3IgdGhlc2UgdHlwZXMgb2YgYnVncywgYW5kLCBjb25zaWRlcmluZyB0aGUgZmxvdywgaXQgc2VlbXMgKnZlcnkqIHJlYWNoYWJsZSBhbmQgcmlwZSBmb3IgZnV6emluZy4gSSBjYW4gYWJzb2x1dGVseSBzZWUgaG93IHdlIGNvdWxkIHRyaWdnZXIgdGhpcyB3aXRoIHNwZWNpZmljYWxseSBjcmFmdGVkIHNjYW4gcmVzcG9uc2VzLgoKVGhlIGRyaXZlciBpdHNlbGYgaXMgYE1XSUZJRVhgLCBhbmQsIHRvIGZ1enogdGhpcyBlZmZlY3RpdmVseSwgaXQgbG9va3MgbGlrZSB3ZSYjMzk7bGwgbmVlZCB0byB1c2UgdGhlIGBNV0lGSUVYX1VTQmAgY29uZmlndXJhdGlvbi4gVGhhdCYjMzk7cyBteSBpbW1lZGlhdGUgZm9jdXMuIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayBpZiBgTVdJRklFWF9VU0JgIGhhcyBhbnkgZGVwZW5kZW5jaWVzIHRoYXQgd2UgbmVlZCB0byBiZSBhd2FyZSBvZiBvciBzYXRpc2Z5IGZpcnN0LCBidXQgdGhpcyBsb29rcyBsaWtlIGEgZ29vZCBsZWFkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxNDo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTVdJRklFWF9VU0ImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZz0yNT1jb25maWcgTVdJRklFWF9QQ0lFXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzozNzpjb25maWcgTVdJRklFWF9VU0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTM4LVx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBXaUZpLUV4IERyaXZlciBmb3IgVVNCODc2Ni84Nzk3Lzg5OTdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTQ6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODQ1MAoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBgTVdJRklFWF9VU0JgIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYE1XSUZJRVhfVVNCYC4gTGV0JiMzOTtzIGdldCByaWdodCB0byBpdCDigJMgd2hhdCYjMzk7cyB0aGlzIGRyaXZlciBhY3R1YWxseSAqZGVwZW5kZW50KiBvbj8gTXkgaW5pdGlhbCBndXQgY2hlY2sgaXMgdG8gZmlndXJlIG91dCB0aGUgYXJjaGl0ZWN0dXJhbCBsYXllcnMgaW52b2x2ZWQuIFRoaXMgbGlrZWx5IGludm9sdmVzIHVuZGVyc3RhbmRpbmcgdGhlIFVTQiBzdWJzeXN0ZW0gaG9va3MsIGFuZCB0aGUgcGxhdGZvcm0tc3BlY2lmaWMgZGV2aWNlIHRyZWUgb3IgY29uZmlndXJhdGlvbiB0aGF0IGlkZW50aWZpZXMgdGhlIHNwZWNpZmljIFdpLUZpIGFkYXB0ZXIuIEkmIzM5O20gYXNzdW1pbmcgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIGtlcm5lbCBtb2R1bGUgaGVyZSwgc28gSSBuZWVkIHRvIG1lbnRhbGx5IHRyYWNlIHRoZSBjYWxscy4KCkZpcnN0LCBJIG5lZWQgdG8ga25vdyB0aGUgc3BlY2lmaWMgcGxhdGZvcm0uIEFyZSB3ZSBvbiBhIEJyb2FkY29tLWJhc2VkIHN5c3RlbSwgb3Igc29tZXRoaW5nIGVsc2U/IFVuZGVyc3RhbmRpbmcgdGhlIGhhcmR3YXJlIGNvbnRleHQgd2lsbCBndWlkZSB0aGUgbmV4dCBzdGVwLiBBcmUgdGhlcmUgYW55IGtub3duIGlzc3VlcyB3aXRoIHRoZSBVU0Igc3Vic3lzdGVtIG9uIHRoaXMgcGxhdGZvcm0gdGhhdCBjb3VsZCBiZSB0cmlnZ2VyaW5nIHNvbWUgc29ydCBvZiB1bmV4cGVjdGVkIGJlaGF2aW9yPwoKTmV4dCwgSSYjMzk7bGwgcHJvYmFibHkgd2FudCB0byBpZGVudGlmeSBpbmNsdWRlIGZpbGVzLCBzeW1ib2xzLCBhbmQgZnVuY3Rpb25zIHRoYXQgYXJlIGltcG9ydGVkIGZyb20gb3RoZXIgbW9kdWxlcy4gYG9iamR1bXBgIG9yIGBubWAgYXJlIG15IGZyaWVuZHMgaGVyZSB0byBxdWlja2x5IHNjYW4gdGhlIG1vZHVsZeKAmXMgc3ltYm9sIHRhYmxlLiBJJiMzOTttIGludGVyZXN0ZWQgaW4gdGhlIGxvd2VyLWxldmVsIFVTQiBkcml2ZXIgaW50ZXJmYWNlcyAoYHVzYl9yZWdpc3Rlcl9kcml2ZXJgLCBgdXNiX3N1Ym1pdF91cmJgLCBldGMuKSBhbmQgcG9zc2libHkgYW55IGludGVyYWN0aW9uIHdpdGggZmlybXdhcmUgbG9hZGluZyBtZWNoYW5pc21zIChpZiB0aGUgYWRhcHRlciBuZWVkcyBmaXJtd2FyZSkuIFdoYXQgYWJvdXQgcmVzb3VyY2UgYWxsb2NhdGlvbj8gQXJlIHRoZXJlIGFueSBzaGFyZWQgbXV0ZXhlcyBvciBzZW1hcGhvcmVzIHRoYXQgY291bGQgaW5kaWNhdGUgcG90ZW50aWFsIGxvY2tpbmcgY29uZmxpY3RzIHdpdGggb3RoZXIgbW9kdWxlcz8KCkFsc28sIGRvbiYjMzk7dCBmb3JnZXQgdGhlIG9idmlvdXM6IHdoYXTigJlzIHRoZSBkZXZpY2UgSUQgZmlsdGVyaW5nPyBJIG5lZWQgdG8gY2hlY2sgdGhlIG1vZHVsZSBwYXJhbWV0ZXJzLCB0aGUgZGV2aWNlIElEcyB0aGUgZHJpdmVyIGNsYWltcyB0byBzdXBwb3J0LCBhbmQgd2hldGhlciB0aGVyZSBhcmUgYW55IGRlcGVuZGVuY2llcyBvbiB0aG9zZSBzcGVjaWZpYyBQQ0kvVVNCIElEcy4KCkkmIzM5O2xsIGJlIHNwZWNpZmljYWxseSBsb29raW5nIGZvciBhbnkgZGVwZW5kZW5jaWVzIHRoYXQgY291bGQgYmxvY2sgdGhlIG1vZHVsZSBsb2FkLCBvciBjcmVhdGUgY29uZmxpY3RzIGxhdGVyLiBEb2VzIGl0IHJlbHkgb24gYSBzcGVjaWZpYyB2ZXJzaW9uIG9mIHRoZSBVU0Igc3RhY2sgb3Igb3RoZXIga2VybmVsIGNvbXBvbmVudHM/IEFueSB0aGlyZC1wYXJ0eSBsaWJyYXJpZXMgdGhpcyBtb2R1bGUgbWlnaHQgZGVwZW5kIG9uPyBGaW5hbGx5LCBsZXQmIzM5O3MgbG9vayBhdCB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UsIGFueSBjdXN0b20gSVJRIGhhbmRsaW5nIHJvdXRpbmVzIHRoYXQgYXJlIHNldCB1cC4gRnJvbSB0aGVyZSwgSSBjYW4gZGV0ZXJtaW5lIHRoZSBkZXBlbmRlbmNpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE0OjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDMwOlx0XHRoZWxwXG4gIDMxOlx0XHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciB3aXJlbGVzcyBhZGFwdGVycyBiYXNlZCBvbiBNYXJ2ZWxsXG4gIDMyOlx0XHQgIDg3NjYvODg5Ny84OTk3IGNoaXBzZXRzIHdpdGggUENJZSBpbnRlcmZhY2UuXG4gIDMzOlx0XG4gIDM0Olx0XHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXG4gIDM1Olx0XHQgIG13aWZpZXhfcGNpZS5cbiAgMzY6XHRcbiAgMzc6XHRjb25maWcgTVdJRklFWF9VU0JcbiAgMzg6XHRcdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFVTQjg3NjYvODc5Ny84OTk3XCYjMzQ7XG4gIDM5Olx0XHRkZXBlbmRzIG9uIE1XSUZJRVggXHUwMDI2XHUwMDI2IFVTQlxuICA0MDpcdFx0c2VsZWN0IEZXX0xPQURFUlxuICA0MTpcdFx0aGVscFxuICA0MjpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb24gTWFydmVsbFxuICA0MzpcdFx0ICA4Nzk3Lzg5OTcgY2hpcHNldCB3aXRoIFVTQiBpbnRlcmZhY2UuXG4gIDQ0Olx0XG4gIDQ1Olx0XHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXG4gIDQ2Olx0XHQgIG13aWZpZXhfdXNiLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxNDo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MjAwCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgSSBzZWUgaXQ6CgoqKkRlcGVuZGVuY3kgRGVlcCBEaXZlKioKCk9rYXksIHNvIHRoZSByZWFsIGNvcmUgb2YgdGhpcyBpc3N1ZSBoaW5nZXMgb24gdHdvIHNwZWNpZmljIGNvbXBvbmVudHM6IGBNV0lGSUVYYCBhbmQgYFVTQmAuIEV2ZXJ5dGhpbmcgZG93bnN0cmVhbSBpcyBjb250aW5nZW50IG9uIHVuZGVyc3RhbmRpbmcgdGhlaXIgcm9sZXMgYW5kIGhvdyB0aGV5IGludGVyYWN0LiBUaGUgc21hcnQgbW92ZSBoZXJlIGlzIHRvIHN0YXJ0IHdpdGggYSBkZXBlbmRlbmN5IGFuYWx5c2lzIG9mIGBNV0lGSUVYYC4gSSBuZWVkIHRvIHBlZWwgYmFjayB0aGUgbGF5ZXJzIGFuZCB1bmRlcnN0YW5kIGV2ZXJ5dGhpbmcgdGhhdCBgTVdJRklFWGAgcmVsaWVzIG9uLiBUaGF0IHdpbGwgZ2l2ZSBtZSBhIGNsZWFyZXIgcGljdHVyZSBvZiB0aGUgbGFuZHNjYXBlIGFuZCB3aGVyZSBhbnkgcG90ZW50aWFsIGJvdHRsZW5lY2tzIG9yIGNvbmZsaWN0cyBtaWdodCByZXNpZGUuIFdlIGNhbiB0aGVuIGFkZHJlc3MgYFVTQmAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE0OjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgTVdJRklFWFxuICAgMzpcdFx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBXaUZpLUV4IERyaXZlclwmIzM0O1xuICAgNDpcdFx0ZGVwZW5kcyBvbiBDRkc4MDIxMVxuICAgNTpcdFx0aGVscFxuICAgNjpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb24gTWFydmVsbFxuICAgNzpcdFx0ICA4MDIuMTFuL2FjIGNoaXBzZXRzLlxuICAgODpcdFxuICAgOTpcdFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGl0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlIGNhbGxlZFxuICAxMDpcdFx0ICBtd2lmaWV4LlxuICAxMTpcdFxuICAxMjpcdGNvbmZpZyBNV0lGSUVYX1NESU9cbiAgMTM6XHRcdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFNEODc4Ni9TRDg3ODcvU0Q4Nzk3L1NEODg4Ny9TRDg4OTcvU0Q4OTc3L1NEODk3OC9TRDg5ODcvU0Q4OTk3XCYjMzQ7XG4gIDE0Olx0XHRkZXBlbmRzIG9uIE1XSUZJRVggXHUwMDI2XHUwMDI2IE1NQ1xuICAxNTpcdFx0c2VsZWN0IEZXX0xPQURFUlxuICAxNjpcdFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXG4gIDE3Olx0XHRoZWxwXG4gIDE4Olx0XHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciB3aXJlbGVzcyBhZGFwdGVycyBiYXNlZCBvbiBNYXJ2ZWxsXG4gIDE5Olx0XHQgIDg3ODYvODc4Ny84Nzk3Lzg4ODcvODg5Ny84OTc3Lzg5NzgvODk4Ny84OTk3IGNoaXBzZXRzIHdpdGhcbiAgMjA6XHRcdCAgU0RJTyBpbnRlcmZhY2UuIFNEODk3OCBpcyBhbHNvIGtub3duIGFzIE5YUCBJVzQxNi5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTQ6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTc2NAoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDQ2MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipEZXBlbmRlbmN5IEFuYWx5c2lzIGFuZCBGdW5jdGlvbiBJZGVudGlmaWNhdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGcm9tIGEgZGVwZW5kZW5jeSBzdGFuZHBvaW50LCBpdCBsb29rcyBsaWtlIGBNV0lGSUVYYCBpcyBidWlsdCB1cG9uIGBDRkc4MDIxMWAsIGFuZCBgTVdJRklFWF9VU0JgIGZ1cnRoZXIgZGVwZW5kcyBvbiBib3RoIGBNV0lGSUVYYCBhbmQgdGhlIGBVU0JgIHN1YnN5c3RlbS4gU28sIGF0IGEgbWluaW11bSwgd2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgYE1XSUZJRVhgLCBgTVdJRklFWF9VU0JgLCBgQ0ZHODAyMTFgLCBhbmQgYFVTQmAuIEhvbGQgb24uLi4gSSBuZWVkIHRvIGRvdWJsZS1jaGVjayBzb21ldGhpbmcuIFJpZ2h0LCBgTUFDODAyMTFgIHJlbGllcyBvbiBgQ0ZHODAyMTFgLCBub3QgdGhlIG90aGVyIHdheSBhcm91bmQuIFRoaXMgY29uZmlybXMgdGhhdCBgQ0ZHODAyMTFgIGlzIG91ciBmb3VuZGF0aW9uYWwgZWxlbWVudCBoZXJlLiBOb3csIGxldCYjMzk7cyBtYWtlIHN1cmUgd2UgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueSBvdGhlciBrZXkgZGVwZW5kZW5jaWVzLiBBaCwgYENGRzgwMjExYCBvcHRpb25hbGx5IGRlcGVuZHMgb24gYFJGS0lMTGAgYW5kIGFsc28gYFdMQU5gIHdoaWNoIGlzIGxpa2VseSBpbmhlcmVudC4gQnV0IGZvciB0aGlzIGRpc2N1c3Npb24sIHRoZSBwcmltYXJ5IG9uZXMgd2UgYXJlIGRpc2N1c3NpbmcgYXJlIGBNV0lGSUVYYCwgYE1XSUZJRVhfVVNCYCwgYENGRzgwMjExYCwgYW5kIGBVU0JgLgoKTm93LCBsZXQmIzM5O3Mgc3dpdGNoIGdlYXJzIGFuZCBwaW5wb2ludCB0aGUgY3JpdGljYWwgZnVuY3Rpb25zIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcuIEkgc2VlIHRoZSBwYXRjaCBtb2RpZmllcyBgbXdpZmlleF9zZWFyY2hfb3VpX2luX2llYC4gVGhhdCYjMzk7cyBhIHN0YXRpYyBmdW5jdGlvbi4gSXQmIzM5O3MgY2FsbGVkIGJ5IGBtd2lmaWV4X2lzX3Jzbl9vdWlfcHJlc2VudGAgYW5kIGBtd2lmaWV4X2lzX3dwYV9vdWlfcHJlc2VudGAuIEkmIzM5O2xsIGNvbmZpcm0uIFllcywgdGhleSYjMzk7cmUgYm90aCBhbHNvIHN0YXRpYy4gT2ssIG5leHQgZnVuY3Rpb24gaXMgYG13aWZpZXhfaXNfbmV0d29ya19jb21wYXRpYmxlYCwgc3RhdGljLiBUaGVuIGBtd2lmaWV4X2NoZWNrX25ldHdvcmtfY29tcGF0aWJpbGl0eWAgaXMgbm9uLXN0YXRpYy4gYG13aWZpZXhfcGFyc2Vfc2luZ2xlX3Jlc3BvbnNlX2J1ZmAgaXMgc3RhdGljLiBOZXh0LCBgbXdpZmlleF9yZXRfODAyXzExX3NjYW5gIGlzIG5vbi1zdGF0aWMuIEZpbmFsbHksIGBtd2lmaWV4X2hhbmRsZV9ldmVudF9leHRfc2Nhbl9yZXBvcnRgIGlzIG5vbi1zdGF0aWMgYW5kIGBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llYCBpcyBub24tc3RhdGljLiBHb3QgaXQuIFRoYXQgc2hvdWxkIGRvIGl0IQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxNTowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttd2lmaWV4X2NoZWNrX25ldHdvcmtfY29tcGF0aWJpbGl0eSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaD0xNTQxPWludCBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTE1NDItXHRcdFx0XHQgICAgc3RydWN0IG13aWZpZXhfYnNzZGVzY3JpcHRvciAqYnNzX2VudHJ5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg6MTU0MzppbnQgbXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHkoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTU0NC1cdFx0XHRcdFx0c3RydWN0IG13aWZpZXhfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM9MTU5ND1pbnQgbXdpZmlleF9jbWRfODAyXzExX3NjYW4oc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKmNtZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTE2MTgtICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jOjE2MTk6aW50IG13aWZpZXhfY2hlY2tfbmV0d29ya19jb21wYXRpYmlsaXR5KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTE2MjAtXHRcdFx0XHRcdHN0cnVjdCBtd2lmaWV4X2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM9MTcwNj1zdGF0aWMgaW50IG13aWZpZXhfdXBkYXRlX2N1cnJfYnNzX3BhcmFtcyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMTcyMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM6MTcyMTpcdHJldCA9IG13aWZpZXhfY2hlY2tfbmV0d29ya19jb21wYXRpYmlsaXR5KHByaXYsIGJzc19kZXNjKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMTcyMi1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jPTMzMj1pbnQgbXdpZmlleF9ic3Nfc3RhcnQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgc3RydWN0IGNmZzgwMjExX2JzcyAqYnNzLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYy0zNzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmM6Mzc1Olx0XHRyZXQgPSBtd2lmaWV4X2NoZWNrX25ldHdvcmtfY29tcGF0aWJpbGl0eShwcml2LCBic3NfZGVzYyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmMtMzc2LVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYy00MjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmM6NDIzOlx0XHRyZXQgPSBtd2lmaWV4X2NoZWNrX25ldHdvcmtfY29tcGF0aWJpbGl0eShwcml2LCBic3NfZGVzYyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmMtNDI0LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxNTowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTQ0OAoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipJbml0aWFsIEFzc2Vzc21lbnQgb2YgRnVuY3Rpb24gQ2FsbHMqKgoKQWxyaWdodCwgbGV0JiMzOTtzIHNlZS4uLiBgbXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHlgIGZlZWxzIGxpa2UgYSBnb29kLCBzb2xpZCBhbmNob3IgcG9pbnQgdG8gc3RhcnQgd2l0aC4gSXQgbGlrZWx5IGhhbmRsZXMgc29tZSBmb3VuZGF0aW9uYWwgdmFsaWRhdGlvbiBvZiBuZXR3b3JrIHBhcmFtZXRlcnMuIEkgY2FuIHNlZSBob3cgZm9jdXNpbmcgb24gaXRzIGludGVybmFsIHdvcmtpbmdzLCB0aGUgY29uZGl0aW9uYWwgY2hlY2tzIGl0IHBlcmZvcm1zLCBjb3VsZCBiZSBmcnVpdGZ1bCBpbiBkaWFnbm9zaW5nIGlzc3Vlcy4KCk5vdywgd2hhdCBhYm91dCBgbXdpZmlleF9yZXRfODAyXzExX3NjYW5gPyBUaGF0IG9uZSYjMzk7cyBnb3QgbWUgaW50cmlndWVkIHRvby4gSXQmIzM5O3Mgb2J2aW91c2x5IHRpZWQgdG8gdGhlIHNjYW5uaW5nIHByb2Nlc3MgaXRzZWxmLiBUaGlzIGNvdWxkIGJlIHdoZXJlIGNvbXBhdGliaWxpdHkgcHJvYmxlbXMgYWN0dWFsbHkgbWFuaWZlc3QsIG9yIHdoZXJlIHRoZSB2YWxpZGF0aW9uIGZhaWx1cmVzIGdldCBzdXJmYWNlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgaXQgbGVhbnMgb24gdGhlIGZ1bmN0aW9uIGNhbGwgbWVudGlvbmVkIGVhcmxpZXIuIERvZXMgaXQgKnVzZSogdGhlIG90aGVyIGZ1bmN0aW9uLCBvciBpcyBpdCBtb3JlIGxpa2UgYSBjb21wbGVtZW50YXJ5IGZ1bmN0aW9uPwoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxNTowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttd2lmaWV4X3JldF84MDJfMTFfc2NhbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaD0xMTU3PXZvaWQgbXdpZmlleF9xdWV1ZV9zY2FuX2NtZChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xMTU4LVx0XHRcdCAgICBzdHJ1Y3QgY21kX2N0cmxfbm9kZSAqY21kX25vZGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaDoxMTU5OmludCBtd2lmaWV4X3JldF84MDJfMTFfc2NhbihzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xMTYwLVx0XHRcdCAgICBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqcmVzcCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaD0xMjM5PWludCBtd2lmaWV4X2NtZF84MDJfMTFfc2Nhbl9leHQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTEyNDEtXHRcdFx0XHR2b2lkICpkYXRhX2J1Zik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oOjEyNDI6aW50IG13aWZpZXhfcmV0XzgwMl8xMV9zY2FuX2V4dChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xMjQzLVx0XHRcdFx0c3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3ApO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM9MTEzMD1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYzoxMTMxOm13aWZpZXhfcmV0XzgwMl8xMV9zY2FuX2dldF90bHZfcHRycyhzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0xMTMyLVx0XHRcdFx0ICAgICBzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19kYXRhICp0bHYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYz0yMDU4PXZvaWQgbXdpZmlleF9jYW5jZWxfc2NhbihzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMjEwNC0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM6MjEwNTppbnQgbXdpZmlleF9yZXRfODAyXzExX3NjYW4oc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMjEwNi1cdFx0XHQgICAgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3ApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0yMTc0LVx0ICAgVExWcyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYzoyMTc1Olx0bXdpZmlleF9yZXRfODAyXzExX3NjYW5fZ2V0X3Rsdl9wdHJzKGFkYXB0ZXIsIHRsdl9kYXRhLCB0bHZfYnVmX3NpemUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTIxNzYtXHRcdFx0XHRcdCAgICAgVExWX1RZUEVfVFNGVElNRVNUQU1QLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMjE4MS1cdCAgIFRMVnMgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM6MjE4MjpcdG13aWZpZXhfcmV0XzgwMl8xMV9zY2FuX2dldF90bHZfcHRycyhhZGFwdGVyLCB0bHZfZGF0YSwgdGx2X2J1Zl9zaXplLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0yMTgzLVx0XHRcdFx0XHQgICAgIFRMVl9UWVBFX0NIQU5ORUxCQU5ETElTVCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jPTI0OTI9bXdpZmlleF91cGRhdGVfY2hhbl9zdGF0aXN0aWNzKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0yNTM0LS8qIFRoaXMgZnVuY3Rpb24gaGFuZGxlcyB0aGUgY29tbWFuZCByZXNwb25zZSBvZiBleHRlbmRlZCBzY2FuICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jOjI1MzU6aW50IG13aWZpZXhfcmV0XzgwMl8xMV9zY2FuX2V4dChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0yNTM2LVx0XHRcdFx0c3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3ApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWRyZXNwLmM9MTIxMj1pbnQgbXdpZmlleF9wcm9jZXNzX3N0YV9jbWRyZXNwKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsIHUxNiBjbWRyZXNwX25vLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jLTEyNDMtXHRjYXNlIEhvc3RDbWRfQ01EXzgwMl8xMV9TQ0FOOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWRyZXNwLmM6MTI0NDpcdFx0cmV0ID0gbXdpZmlleF9yZXRfODAyXzExX3NjYW4ocHJpdiwgcmVzcCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZHJlc3AuYy0xMjQ1LVx0XHRhZGFwdGVyLVx1MDAzZWN1cnJfY21kLVx1MDAzZXdhaXRfcV9lbmFibGVkID0gZmFsc2U7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWRyZXNwLmMtMTI0Ny1cdGNhc2UgSG9zdENtZF9DTURfODAyXzExX1NDQU5fRVhUOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWRyZXNwLmM6MTI0ODpcdFx0cmV0ID0gbXdpZmlleF9yZXRfODAyXzExX3NjYW5fZXh0KHByaXYsIHJlc3ApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWRyZXNwLmMtMTI0OS1cdFx0YWRhcHRlci1cdTAwM2VjdXJyX2NtZC1cdTAwM2V3YWl0X3FfZW5hYmxlZCA9IGZhbHNlO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jLTEyNTEtXHRjYXNlIEhvc3RDbWRfQ01EXzgwMl8xMV9CR19TQ0FOX1FVRVJZOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWRyZXNwLmM6MTI1MjpcdFx0cmV0ID0gbXdpZmlleF9yZXRfODAyXzExX3NjYW4ocHJpdiwgcmVzcCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZHJlc3AuYy0xMjUzLVx0XHRjZmc4MDIxMV9zY2hlZF9zY2FuX3Jlc3VsdHMocHJpdi1cdTAwM2V3ZGV2LndpcGh5LCAwKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTU6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMyMTkKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiA4NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBJIHNlZSBpdDoKCioqRm9jdXNpbmcgaW4gb24gdGhlIFNjYW4gUHJvY2VzcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlIGBtd2lmaWV4YCBkcml2ZXIgY29kZSwgYW5kIEkmIzM5O3ZlIGdvdCBhIHNvbGlkIGhhbmRsZSBvbiBob3cgdGhlIHNjYW4gcHJvY2VzcyBpcyBpbml0aWF0ZWQuIFRoZSBrZXkgaGVyZSBpcyB0aGUgbGluayBiZXR3ZWVuIGBtd2lmaWV4X3JldF84MDJfMTFfc2NhbmAgYW5kIGBtd2lmaWV4X3Byb2Nlc3Nfc3RhX2NtZHJlc3BgLiBJdCYjMzk7cyBwcmV0dHkgY2xlYXIgdGhhdCBgbXdpZmlleF9yZXRfODAyXzExX3NjYW5gIGdldHMgY2FsbGVkIGRpcmVjdGx5IHdpdGhpbiB0aGUgZmlybXdhcmUmIzM5O3MgY29tbWFuZCByZXNwb25zZSBoYW5kbGluZy4gVGhhdCBtYWtlcyBpdCBhIHJlYWxseSB2YWx1YWJsZSBwb2ludCBvZiBmb2N1cywgZG9lc24mIzM5O3QgaXQ/IEl0JiMzOTtzIHRoZSBjZW50cmFsIHN5bWJvbCBmb3IgdGhlIDgwMi4xMSBzY2FuIG9wZXJhdGlvbiYjMzk7cyByZXR1cm4gcGF0aC4KCkJ1dCB3YWl0LCB3aGF0IGFib3V0IGBtd2lmaWV4X2hhbmRsZV9ldmVudF9leHRfc2Nhbl9yZXBvcnRgPyBJIG5lZWQgdG8gdGhpbmsgdGhyb3VnaCBob3cgdGhhdCBmaXRzIGludG8gdGhlIG92ZXJhbGwgZmxvdy4gSXQgaXMgZXNzZW50aWFsIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBkcml2ZXIgaGFuZGxlcyBleHRlbmRlZCBzY2FuIHJlcG9ydHMgaW4gb3JkZXIgdG8gaWRlbnRpZnkgcG90ZW50aWFsIHNvdXJjZXMgb2YgaXNzdWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxNTowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttd2lmaWV4X2hhbmRsZV9ldmVudF9leHRfc2Nhbl9yZXBvcnQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg9MTI0Mj1pbnQgbXdpZmlleF9yZXRfODAyXzExX3NjYW5fZXh0KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTEyNDMtXHRcdFx0XHRzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqcmVzcCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oOjEyNDQ6aW50IG13aWZpZXhfaGFuZGxlX2V2ZW50X2V4dF9zY2FuX3JlcG9ydChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xMjQ1LVx0XHRcdFx0XHQgdm9pZCAqYnVmKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jPTI1MzU9aW50IG13aWZpZXhfcmV0XzgwMl8xMV9zY2FuX2V4dChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMjYwNS0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM6MjYwNjppbnQgbXdpZmlleF9oYW5kbGVfZXZlbnRfZXh0X3NjYW5fcmVwb3J0KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTI2MDctXHRcdFx0XHRcdCB2b2lkICpidWYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9ldmVudC5jPTY5Nj1pbnQgbXdpZmlleF9wcm9jZXNzX3N0YV9ldmVudChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfZXZlbnQuYy04NzMtXHRcdFx0XHRcdCAgIW5ldGlmX3J1bm5pbmcocHJpdi1cdTAwM2VuZXRkZXYpKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfZXZlbnQuYzo4NzQ6XHRcdFx0cmV0ID0gbXdpZmlleF9oYW5kbGVfZXZlbnRfZXh0X3NjYW5fcmVwb3J0KHByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2V2ZW50LmMtODc1LVx0XHRcdFx0XHRcdGFkYXB0ZXItXHUwMDNlZXZlbnRfc2tiLVx1MDAzZWRhdGEpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuYz05ND1pbnQgbXdpZmlleF9wcm9jZXNzX3VhcF9ldmVudChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuYy0yNTMtXHRcdGlmIChhZGFwdGVyLVx1MDAzZWV4dF9zY2FuKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VhcF9ldmVudC5jOjI1NDpcdFx0XHRyZXR1cm4gbXdpZmlleF9oYW5kbGVfZXZlbnRfZXh0X3NjYW5fcmVwb3J0KHByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdWFwX2V2ZW50LmMtMjU1LVx0XHRcdFx0XHRcdGFkYXB0ZXItXHUwMDNlZXZlbnRfc2tiLVx1MDAzZWRhdGEpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxNTowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDIxNwoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDMyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBGdXp6aW5nIFN0cmF0ZWd5IGZvciBUaGlzIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTt2ZSBiZWVuIGxvb2tpbmcgYXQgdGhlIGV2ZW50IGhhbmRsaW5nIGluIHRoaXMgYG13aWZpZXhgIGRyaXZlciwgc3BlY2lmaWNhbGx5IGhvdyBpdCBwcm9jZXNzZXMgZXh0ZW5kZWQgc2NhbiByZXBvcnRzLiBgbXdpZmlleF9oYW5kbGVfZXZlbnRfZXh0X3NjYW5fcmVwb3J0YCBpcyB0cmlnZ2VyZWQgYnkgYG13aWZpZXhfcHJvY2Vzc19zdGFfZXZlbnRgIGFuZCBgbXdpZmlleF9wcm9jZXNzX3VhcF9ldmVudGAuIFRoZXNlIGFyZSBjbGVhcmx5IGV2ZW50IHByb2Nlc3NpbmcgZW50cnkgcG9pbnRzIHdpdGhpbiB0aGUgZmlybXdhcmUuIFRoYXQgc3VnZ2VzdHMgYSBnb29kIHN0cmF0ZWd5IGZvciBmdXp6aW5nOiBjb25jZW50cmF0ZSBvbiBhcmVhcyBhcm91bmQgdGhvc2UgZnVuY3Rpb25zLiBJbiBwYXJ0aWN1bGFyLCBib3RoIGBtd2lmaWV4X3JldF84MDJfMTFfc2NhbmAgYW5kIGBtd2lmaWV4X2hhbmRsZV9ldmVudF9leHRfc2Nhbl9yZXBvcnRgIGp1bXAgb3V0IGFzIGV4Y2VsbGVudCBmb2N1cyBwb2ludHMsIGFuZCBgbXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHlgIGxvb2tzIGxpa2UgYW5vdGhlciBwb3RlbnRpYWxseSBmcnVpdGZ1bCBhcmVhLgoKU28gaGVyZSYjMzk7cyB3aGF0IEkmIzM5O3ZlIGdvdDoKCiogICAqKldvcnRoRnV6emluZzoqKiBZZXMsIGFic29sdXRlbHkuCiogICAqKkZvY3VzU3ltYm9sczoqKiBJJiMzOTttIGdvaW5nIHRvIHRhcmdldCB0aGVzZSBwcmltYXJpbHk6CiAgICAqICAgYG13aWZpZXhfcmV0XzgwMl8xMV9zY2FuYAogICAgKiAgIGBtd2lmaWV4X2hhbmRsZV9ldmVudF9leHRfc2Nhbl9yZXBvcnRgCiAgICAqICAgYG13aWZpZXhfY2hlY2tfbmV0d29ya19jb21wYXRpYmlsaXR5YAoKTm93LCBsZXQmIzM5O3MgdGFsayBhYm91dCBlbmFibGluZyB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zLiBJIHNlZSB0aGF0IGBNV0lGSUVYYCBhbmQgYE1XSUZJRVhfVVNCYCBhcmUgZXNzZW50aWFsLiBgTVdJRklFWF9VU0JgIGRlcGVuZHMgb24gYE1XSUZJRVhgIGFuZCBgVVNCYC4gYE1XSUZJRVhgIGl0c2VsZiBkZXBlbmRzIG9uIGBDRkc4MDIxMWAuIEJ1dCB3YWl0LCBgVVNCYCBhbmQgYENGRzgwMjExYCBhcmUgcHJldHR5IGdlbmVyaWMgYW5kIHVzdWFsbHkgZW5hYmxlZCBieSBkZWZhdWx0LiBTbywgZm9yIGZ1enppbmcsIEkmIzM5O2xsIGp1c3QgbGlzdCBgTVdJRklFWGAgYW5kIGBNV0lGSUVYX1VTQmAuIFRoYXQgc2hvdWxkIGJlIHN1ZmZpY2llbnQgdG8gZ2V0IHRoZSByZWxldmFudCBjb2RlIGNvbXBpbGVkIGluLCB3aXRob3V0IHdvcnJ5aW5nIGFib3V0IGV4dHJhbmVvdXMgZGVwZW5kZW5jaWVzIGF0IHRoaXMgcG9pbnQuIFRpbWUgdG8gZG91YmxlLWNoZWNrIHRoYXQgdGhlcmUgYXJlbiYjMzk7dCBhbnkgb3RoZXIgY3J1Y2lhbCBkZXBlbmRlbmNpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE1OjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNV0lGSUVYJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjI6Y29uZmlnIE1XSUZJRVhcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFdpRmktRXggRHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzoxMjpjb25maWcgTVdJRklFWF9TRElPXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0xMy1cdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFNEODc4Ni9TRDg3ODcvU0Q4Nzk3L1NEODg4Ny9TRDg4OTcvU0Q4OTc3L1NEODk3OC9TRDg5ODcvU0Q4OTk3XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzoyNTpjb25maWcgTVdJRklFWF9QQ0lFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0yNi1cdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFBDSUUgODc2Ni84ODk3Lzg5OTdcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0zNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjM3OmNvbmZpZyBNV0lGSUVYX1VTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzgtXHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBVU0I4NzY2Lzg3OTcvODk5N1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxNTowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTQzMAoJCQkJCQkJb3V0cHV0OiAyNjMKCQkJCQkJCXRob3VnaHRzOiA0MzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgdGhlIE1XSUZJRVggRHJpdmVyIFZ1bG5lcmFiaWxpdHkgYW5kIEZ1enppbmcgU3RyYXRlZ3kqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gSSYjMzk7bSBnb2luZyB0byBiZSBsb29raW5nIGNsb3NlbHkgYXQgdGhlIGBNV0lGSUVYYCBkcml2ZXIgYW5kLCBzcGVjaWZpY2FsbHksIHRoZSBgTVdJRklFWF9VU0JgIGludGVyZmFjZS4gV2UgbmVlZCB0byBmb2N1cyBvdXIgYXR0ZW50aW9uIG9uIGBtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWVgLiBUaGUgcmF0aW9uYWxlIGhlcmUgaXMgdGhhdCB0aGlzIHBhdGNoIGFkZHJlc3NlcyBhbiBvdXQtb2YtYm91bmRzIHJlYWQgdnVsbmVyYWJpbGl0eSB3aGVuIHBhcnNpbmcgUlNOL1dQQSBJbmZvcm1hdGlvbiBFbGVtZW50cyAoSUVzKSBmcm9tIHNjYW4gcmVzdWx0cy4gVGhlIGNvcmUgb2YgdGhlIGlzc3VlIGlzIGluIGhvdyB0aGUgZHJpdmVyIHByb2Nlc3NlcyBzY2FuIHJlc3VsdHMgaXQgcmVjZWl2ZXMgZnJvbSB0aGUgZmlybXdhcmUuIFRoZSBmYWN0IHRoYXQgd2UgaGF2ZSBhIFVTQiBpbnRlcmZhY2UgcHJvdmlkZXMgYW4gYXR0YWNrIHZlY3Rvci4gV2UgY2FuIGZ1enogdGhlIGZpcm13YXJlIHJlc3BvbnNlcyB0aHJvdWdoIFVTQiBlbXVsYXRpb24sIHNvbWV0aGluZyBsaWtlIHVzaW5nIGEgZHVtbXktaGNkLiBUaGlzIGlzIGtleS4gU2luY2UgdGhpcyBmaXggaXMgbW9kaWZ5aW5nIHJlYWNoYWJsZSBjb3JlIGxvZ2ljIHdpdGhpbiB0aGUgZHJpdmVyLCBpdCYjMzk7cyBkZWZpbml0ZWx5IHdvcnRod2hpbGUgdG8gZnV6eiBpdC4KCk15IGZvY3VzIGlzIGdvaW5nIHRvIGJlIG9uIHRoZXNlIHN5bWJvbHM6IGBtd2lmaWV4X3JldF84MDJfMTFfc2NhbmAsIGBtd2lmaWV4X2hhbmRsZV9ldmVudF9leHRfc2Nhbl9yZXBvcnRgLCBhbmQgYG13aWZpZXhfY2hlY2tfbmV0d29ya19jb21wYXRpYmlsaXR5YC4gVGhlc2UgYXJlIHRoZSBlbnRyeSBwb2ludHMgZm9yIHByb2Nlc3Npbmcgc2NhbiByZXN1bHRzIGFuZCBjaGVja2luZyBuZXR3b3JrIGNvbXBhdGliaWxpdHksIG1ha2luZyB0aGVtIHBlcmZlY3QgdGFyZ2V0cyBmb3Igb3VyIGZ1enppbmcgZWZmb3J0cy4KCk5vdywgbGV0JiMzOTtzIHF1aWNrbHkgcmV2aWV3IHRoZSBjYWxsZXJzIG9mIGBtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWVgLiBGcm9tIHdoYXQgSSBjYW4gc2VlLCBpdCYjMzk7cyBjYWxsZWQgYnkgYG13aWZpZXhfaXNfcnNuX291aV9wcmVzZW50YCBhbmQgYG13aWZpZXhfaXNfd3BhX291aV9wcmVzZW50YC4gVGhlc2UgaW4gdHVybiBhcmUgY2FsbGVkIGJ5IGBtd2lmaWV4X2lzX25ldHdvcmtfY29tcGF0aWJsZWAsIHdoaWNoIGZlZWRzIGludG8gYG13aWZpZXhfY2hlY2tfbmV0d29ya19jb21wYXRpYmlsaXR5YC4gYG13aWZpZXhfY2hlY2tfbmV0d29ya19jb21wYXRpYmlsaXR5YCB0aGVuIGJyYW5jaGVzIHRvIGJvdGggYG13aWZpZXhfdXBkYXRlX2N1cnJfYnNzX3BhcmFtc2AgYW5kIGBtd2lmaWV4X2Jzc19zdGFydGAuIGBtd2lmaWV4X3VwZGF0ZV9jdXJyX2Jzc19wYXJhbXNgIGlzIGNhbGxlZCBieSBgbXdpZmlleF9wYXJzZV9zaW5nbGVfcmVzcG9uc2VfYnVmYC4gRmluYWxseSwgYG13aWZpZXhfcGFyc2Vfc2luZ2xlX3Jlc3BvbnNlX2J1ZmAgaXMgY2FsbGVkIGJ5IGBtd2lmaWV4X3JldF84MDJfMTFfc2NhbmAgYW5kIGBtd2lmaWV4X2hhbmRsZV9ldmVudF9leHRfc2Nhbl9yZXBvcnRgLgoKU28sIHdlJiMzOTt2ZSBnb3QgZnVsbCBjYWxsIGNoYWluIGNvdmVyYWdlIGZyb20gb3VyIGZvY3VzIHN5bWJvbHMuIFRoZXkgYXBwZWFyIHRvIGJlIHNvbGlkIHN0YXJ0aW5nIHBvaW50cy4KClJpZ2h0LCBJJiMzOTttIHJlYWR5IHRvIHByb2NlZWQgd2l0aCBzZXR0aW5nIHRoZSByZXN1bHRzIGFuZCBtb3Zpbmcgb24gdG8gdGhlIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE1OjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNV0lGSUVYJiMzNDssCiAgICAmIzM0O01XSUZJRVhfVVNCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bXdpZmlleF9yZXRfODAyXzExX3NjYW4mIzM0OywKICAgICYjMzQ7bXdpZmlleF9oYW5kbGVfZXZlbnRfZXh0X3NjYW5fcmVwb3J0JiMzNDssCiAgICAmIzM0O213aWZpZXhfY2hlY2tfbmV0d29ya19jb21wYXRpYmlsaXR5JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIHRvIGBtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWVgIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcyB3aGVuIHBhcnNpbmcgUlNOL1dQQSBJbmZvcm1hdGlvbiBFbGVtZW50cyAoSUVzKSBmcm9tIHNjYW4gcmVzdWx0cy4gVGhlIHZ1bG5lcmFiaWxpdHkgb2NjdXJzIHdoZW4gdGhlIGRyaXZlciBwcm9jZXNzZXMgc2NhbiByZXN1bHRzIHJlY2VpdmVkIGZyb20gdGhlIGZpcm13YXJlLiBTaW5jZSB0aGUgYG13aWZpZXhgIGRyaXZlciBzdXBwb3J0cyBhIFVTQiBpbnRlcmZhY2UgKGBNV0lGSUVYX1VTQmApLCB0aGUgZmlybXdhcmUgcmVzcG9uc2VzIGNhbiBiZSBmdXp6ZWQgdmlhIFVTQiBlbXVsYXRpb24gKGUuZy4sIGR1bW15LWhjZCkuIFRoZSBmaXggbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUgbG9naWMgaW4gdGhlIGRyaXZlciwgc28gaXQgaXMgd29ydGggZnV6emluZy4gRm9jdXMgc3ltYm9scyBhcmUgYG13aWZpZXhfcmV0XzgwMl8xMV9zY2FuYCwgYG13aWZpZXhfaGFuZGxlX2V2ZW50X2V4dF9zY2FuX3JlcG9ydGAsIGFuZCBgbXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHlgLCB3aGljaCBhcmUgdGhlIGVudHJ5IHBvaW50cyBmb3IgcHJvY2Vzc2luZyBzY2FuIHJlc3VsdHMgYW5kIGNoZWNraW5nIG5ldHdvcmsgY29tcGF0aWJpbGl0eS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TVdJRklFWCYjMzQ7LAogICAgJiMzNDtNV0lGSUVYX1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O213aWZpZXhfcmV0XzgwMl8xMV9zY2FuJiMzNDssCiAgICAmIzM0O213aWZpZXhfaGFuZGxlX2V2ZW50X2V4dF9zY2FuX3JlcG9ydCYjMzQ7LAogICAgJiMzNDttd2lmaWV4X2NoZWNrX25ldHdvcmtfY29tcGF0aWJpbGl0eSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyB0byBgbXdpZmlleF9zZWFyY2hfb3VpX2luX2llYCB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgcmVhZHMgd2hlbiBwYXJzaW5nIFJTTi9XUEEgSW5mb3JtYXRpb24gRWxlbWVudHMgKElFcykgZnJvbSBzY2FuIHJlc3VsdHMuIFRoZSB2dWxuZXJhYmlsaXR5IG9jY3VycyB3aGVuIHRoZSBkcml2ZXIgcHJvY2Vzc2VzIHNjYW4gcmVzdWx0cyByZWNlaXZlZCBmcm9tIHRoZSBmaXJtd2FyZS4gU2luY2UgdGhlIGBtd2lmaWV4YCBkcml2ZXIgc3VwcG9ydHMgYSBVU0IgaW50ZXJmYWNlIChgTVdJRklFWF9VU0JgKSwgdGhlIGZpcm13YXJlIHJlc3BvbnNlcyBjYW4gYmUgZnV6emVkIHZpYSBVU0IgZW11bGF0aW9uIChlLmcuLCBkdW1teS1oY2QpLiBUaGUgZml4IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGxvZ2ljIGluIHRoZSBkcml2ZXIsIHNvIGl0IGlzIHdvcnRoIGZ1enppbmcuIEZvY3VzIHN5bWJvbHMgYXJlIGBtd2lmaWV4X3JldF84MDJfMTFfc2NhbmAsIGBtd2lmaWV4X2hhbmRsZV9ldmVudF9leHRfc2Nhbl9yZXBvcnRgLCBhbmQgYG13aWZpZXhfY2hlY2tfbmV0d29ya19jb21wYXRpYmlsaXR5YCwgd2hpY2ggYXJlIHRoZSBlbnRyeSBwb2ludHMgZm9yIHByb2Nlc3Npbmcgc2NhbiByZXN1bHRzIGFuZCBjaGVja2luZyBuZXR3b3JrIGNvbXBhdGliaWxpdHkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE1OjAxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTU6MDE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyByZWFkIHZ1bG5lcmFiaWxpdHkgaW4gYG13aWZpZXhfc2VhcmNoX291aV9pbl9pZWAgYnkgaW50cm9kdWNpbmcgYm91bmRzIGNoZWNraW5nIG9uIHRoZSBPVUkgY291bnQgKGBpZWJvZHktXHUwMDNlcHRrX2NudFswXWApIGFnYWluc3QgdGhlIGF2YWlsYWJsZSBJbmZvcm1hdGlvbiBFbGVtZW50IChJRSkgbGVuZ3RoIChgaWVfbGVuYCkuIFdpdGhvdXQgdGhpcyBjaGVjaywgYSBtYWxpY2lvdXNseSBjcmFmdGVkIGJlYWNvbiBvciBwcm9iZSByZXNwb25zZSB3aXRoIGEgbGFyZ2UgT1VJIGNvdW50IGNvdWxkIGNhdXNlIHRoZSBkcml2ZXIgdG8gcmVhZCBwYXN0IHRoZSBlbmQgb2YgdGhlIGFsbG9jYXRlZCBJRSBidWZmZXIgZHVyaW5nIHRoZSBgbWVtY21wYCBsb29wLlxuXG5UaGlzIGlzIGEgY2xhc3NpYyBvdXQtb2YtYm91bmRzIHJlYWQgYnVnLCB3aGljaCBpcyByZWxpYWJseSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlcmUgaXMgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UsIHN0YWNrL2hlYXAgaW5mby1sZWFrIHRvIHVzZXIgc3BhY2UsIG9yIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzIGludm9sdmVkIGluIHRoaXMgdnVsbmVyYWJpbGl0eS4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeSwgYXMgc3RhbmRhcmQgS0FTQU4gd2lsbCBjYXRjaCBhbnkgcmVncmVzc2lvbnMgb3Igc2ltaWxhciBvdXQtb2YtYm91bmRzIGFjY2VzcyBpc3N1ZXMgaW4gdGhpcyBjb2RlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBmMTM4MmU2MDM3ZTc1MmY2M2QxYTc5M2Y3MDBjMjhlMGRjZjAxZTQ3CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBBdWcgMTQgMTQ6NTI6MzMgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYwppbmRleCA5N2MwZWMzYjgyMmU3Li40NzNmNDYyM2VhMTk5IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMKQEAgLTEwNCwxMiAmIzQzOzEwNCwyNCBAQCBoYXNfdmVuZG9yX2hkcihzdHJ1Y3QgaWVlZV90eXBlc192ZW5kb3Jfc3BlY2lmaWMgKmllLCB1OCBrZXkpCiAgKiBhIGdpdmVuIG91aSBpbiBQVEsuCiAgKi8KIHN0YXRpYyB1OAotbXdpZmlleF9zZWFyY2hfb3VpX2luX2llKHN0cnVjdCBpZV9ib2R5ICppZWJvZHksIHU4ICpvdWkpCiYjNDM7bXdpZmlleF9zZWFyY2hfb3VpX2luX2llKHN0cnVjdCBpZV9ib2R5ICppZWJvZHksIHU4ICpvdWksIGludCBpZV9sZW4pCiB7CiYjNDM7CWNvbnN0IHNpemVfdCBwdGtfYm9keV9vZmZzZXQgPSBvZmZzZXRvZihzdHJ1Y3QgaWVfYm9keSwgcHRrX2JvZHkpOwogCXU4IGNvdW50OwogCiYjNDM7CS8qIGllX2xlbiBpcyB0aGUgbnVtYmVyIG9mIGJ5dGVzIGF2YWlsYWJsZSBhdCBpZWJvZHkuIEtlZXAgaXQgc2lnbmVkCiYjNDM7CSAqIGFuZCByZWplY3QgYSBuZWdhdGl2ZSAodW5kZXJmbG93ZWQpIGxlbmd0aCBiZWZvcmUgdGhlIHVuc2lnbmVkCiYjNDM7CSAqIGNvbXBhcmlzb25zIGJlbG93LCBzbyBhIHNtYWxsIG9yIHplcm8gSUUgbGVuZ3RoIGNhbm5vdCB3cmFwLgomIzQzOwkgKi8KJiM0MzsJaWYgKGllX2xlbiAmbHQ7IDAgfHwgKHNpemVfdClpZV9sZW4gJmx0OyBwdGtfYm9keV9vZmZzZXQpCiYjNDM7CQlyZXR1cm4gTVdJRklFWF9PVUlfTk9UX1BSRVNFTlQ7CiYjNDM7CiAJY291bnQgPSBpZWJvZHktJmd0O3B0a19jbnRbMF07CiAKJiM0MzsJLyogUmVqZWN0IGFuIE9VSSBjb3VudCB3aG9zZSBsaXN0IHdvdWxkIHJ1biBwYXN0IHRoZSBlbGVtZW50LiAqLwomIzQzOwlpZiAocHRrX2JvZHlfb2Zmc2V0ICYjNDM7IGNvdW50ICogc2l6ZW9mKGllYm9keS0mZ3Q7cHRrX2JvZHkpICZndDsgKHNpemVfdClpZV9sZW4pCiYjNDM7CQlyZXR1cm4gTVdJRklFWF9PVUlfTk9UX1BSRVNFTlQ7CiYjNDM7CiAJLyogVGhlcmUgY291bGQgYmUgbXVsdGlwbGUgT1VJcyBmb3IgUFRLIGhlbmNlCiAJICAgMSkgVGFrZSB0aGUgbGVuZ3RoLgogCSAgIDIpIENoZWNrIGFsbCB0aGUgT1VJcyBmb3IgQUVTLgpAQCAtMTQzLDExICYjNDM7MTU1LDE0IEBAIG13aWZpZXhfaXNfcnNuX291aV9wcmVzZW50KHN0cnVjdCBtd2lmaWV4X2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjLCB1MzIgY2lwaGVyKQogCXU4IHJldCA9IE1XSUZJRVhfT1VJX05PVF9QUkVTRU5UOwogCiAJaWYgKGhhc19pZWVlX2hkcihic3NfZGVzYy0mZ3Q7YmNuX3Jzbl9pZSwgV0xBTl9FSURfUlNOKSkgewomIzQzOwkJaW50IGllX2xlbiA9IChpbnQpYnNzX2Rlc2MtJmd0O2Jjbl9yc25faWUtJmd0O2llZWVfaGRyLmxlbiAtCiYjNDM7CQkJUlNOX0dUS19PVUlfT0ZGU0VUOwomIzQzOwogCQlpZWJvZHkgPSAoc3RydWN0IGllX2JvZHkgKikKIAkJCSAoKCh1OCAqKSBic3NfZGVzYy0mZ3Q7YmNuX3Jzbl9pZS0mZ3Q7ZGF0YSkgJiM0MzsKIAkJCSAgUlNOX0dUS19PVUlfT0ZGU0VUKTsKIAkJb3VpID0gJmFtcDttd2lmaWV4X3Jzbl9vdWlbY2lwaGVyXVswXTsKLQkJcmV0ID0gbXdpZmlleF9zZWFyY2hfb3VpX2luX2llKGllYm9keSwgb3VpKTsKJiM0MzsJCXJldCA9IG13aWZpZXhfc2VhcmNoX291aV9pbl9pZShpZWJvZHksIG91aSwgaWVfbGVuKTsKIAkJaWYgKHJldCkKIAkJCXJldHVybiByZXQ7CiAJfQpAQCAtMTY5LDEwICYjNDM7MTg0LDE0IEBAIG13aWZpZXhfaXNfd3BhX291aV9wcmVzZW50KHN0cnVjdCBtd2lmaWV4X2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjLCB1MzIgY2lwaGVyKQogCXU4IHJldCA9IE1XSUZJRVhfT1VJX05PVF9QUkVTRU5UOwogCiAJaWYgKGhhc192ZW5kb3JfaGRyKGJzc19kZXNjLSZndDtiY25fd3BhX2llLCBXTEFOX0VJRF9WRU5ET1JfU1BFQ0lGSUMpKSB7CiYjNDM7CQlpbnQgaWVfbGVuID0gKGludClic3NfZGVzYy0mZ3Q7YmNuX3dwYV9pZS0mZ3Q7dmVuZF9oZHIubGVuIC0KJiM0MzsJCQkoaW50KXNpemVvZihic3NfZGVzYy0mZ3Q7YmNuX3dwYV9pZS0mZ3Q7dmVuZF9oZHIub3VpKSAtCiYjNDM7CQkJV1BBX0dUS19PVUlfT0ZGU0VUOwomIzQzOwogCQlpZWJvZHkgPSAoc3RydWN0IGllX2JvZHkgKikoKHU4ICopYnNzX2Rlc2MtJmd0O2Jjbl93cGFfaWUtJmd0O2RhdGEgJiM0MzsKIAkJCQkJICAgIFdQQV9HVEtfT1VJX09GRlNFVCk7CiAJCW91aSA9ICZhbXA7bXdpZmlleF93cGFfb3VpW2NpcGhlcl1bMF07Ci0JCXJldCA9IG13aWZpZXhfc2VhcmNoX291aV9pbl9pZShpZWJvZHksIG91aSk7CiYjNDM7CQlyZXQgPSBtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWUoaWVib2R5LCBvdWksIGllX2xlbik7CiAJCWlmIChyZXQpCiAJCQlyZXR1cm4gcmV0OwogCX0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE1OjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4NTYKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiA1MzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIE1hcnZlbGwgV2ktRmkgRHJpdmVyIFZ1bG5lcmFiaWxpdHkgUGF0Y2gqKgoKT2theSwgc28gaGVyZSYjMzk7cyB3aGF0IEkmIzM5O3ZlIGdvdC4gVGhpcyBwYXRjaCB0YXJnZXRzIGFuIG91dC1vZi1ib3VuZHMgcmVhZCB2dWxuZXJhYmlsaXR5IGluIHRoZSBgbXdpZmlleF9zZWFyY2hfb3VpX2luX2llYCBmdW5jdGlvbiB3aXRoaW4gdGhlIE1hcnZlbGwgV2ktRmkgZHJpdmVyJiMzOTtzIHNjYW5uaW5nIGNvZGUgKGBzY2FuLmNgKS4gRXNzZW50aWFsbHksIHRoZSBwcm9ibGVtIGJvaWxzIGRvd24gdG8gYSBsYWNrIG9mIHByb3BlciBib3VuZHMgY2hlY2tpbmcgd2hlbiBoYW5kbGluZyBPVUkgKE9yZ2FuaXphdGlvbmFsbHkgVW5pcXVlIElkZW50aWZpZXIpIGNvdW50cyBmb3VuZCB3aXRoaW4gSW5mb3JtYXRpb24gRWxlbWVudHMgKElFcykgb2YgV2ktRmkgYmVhY29ucyBvciBwcm9iZSByZXNwb25zZXMuCgpUaGUgZml4IGl0c2VsZiBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiBpdCBpbnRyb2R1Y2VzIGEgY2hlY2sgdGhhdCBjb21wYXJlcyB0aGUgY2FsY3VsYXRlZCBvZmZzZXQgKGJhc2VkIG9uIHRoZSBPVUkgY291bnQgYW5kIHNpemUgb2YgdGhlIE9VSSBib2R5KSBhZ2FpbnN0IHRoZSBhY3R1YWwgbGVuZ3RoIG9mIHRoZSBJRSBidWZmZXIgKGBpZV9sZW5gKS4gIFRoZSBjb2RlIHdhcyByZWFkaW5nIGBpZWJvZHktJmd0O3B0a19jbnRbMF1gIGZyb20gYSBuZXR3b3JrIHBhY2tldCAoYmVhY29uL3Byb2JlIHJlc3BvbnNlKSBhbmQgdXNpbmcgdGhhdCB2YWx1ZSB0byBkZXRlcm1pbmUgaG93IG11Y2ggb2YgYGllYm9keS0mZ3Q7cHRrX2JvZHlgIHRvIHJlYWQuICBUaGUgdnVsbmVyYWJpbGl0eSBsaWVzIGluIHRoZSBmYWN0IHRoYXQgYSBtYWxpY2lvdXMgYWN0b3IgY291bGQgY3JhZnQgYSBiZWFjb24gb3IgcHJvYmUgcmVzcG9uc2Ugd2l0aCBhIGxhcmdlIE9VSSBjb3VudCwgd2hpY2ggd291bGQgY2F1c2UgdGhlIGRyaXZlciB0byBhdHRlbXB0IHRvIHJlYWQgcGFzdCB0aGUgZW5kIG9mIHRoZSBJRSBidWZmZXIuICBUaGlzIGlzIGEgY2xhc3NpYyBhbmQgd2VsbC11bmRlcnN0b29kIG91dC1vZi1ib3VuZHMgcmVhZC4KCk5vdywgdGhlIGtleSBxdWVzdGlvbiBoZXJlIGlzIHdoZXRoZXIgdGhpcyBuZWNlc3NpdGF0ZXMgS01TQU4gKEtlcm5lbCBNZW1vcnkgU2FuaXRpemVyKSBvciBpZiBLQVNBTiAoS2VybmVsIEFkZHJlc3MgU2FuaXRpemVyKSBpcyBzdWZmaWNpZW50LiBBZnRlciBhIHRob3JvdWdoIHJldmlldywgSSYjMzk7bSBjb25maWRlbnQgdGhhdCBLQVNBTiBpcyB0aGUgcmlnaHQgdG9vbCBmb3IgdGhpcyBqb2IuIFRoZSByb290IGNhdXNlIGlzICpwdXJlbHkqIGFuIG91dC1vZi1ib3VuZHMgcmVhZC4gVGhlcmUmIzM5O3Mgbm8gaW52b2x2ZW1lbnQgb2YgdW5pbml0aWFsaXplZCBtZW1vcnksIHN0YWNrL2hlYXAgaW5mby1sZWFrIHRvIHVzZXIgc3BhY2UsIG9yIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzIHRoYXQgS01TQU4gaXMgZGVzaWduZWQgdG8gY2F0Y2guICBUaGUgYnVnIGlzIHRyaWdnZXJlZCBieSByZWFkaW5nIGJleW9uZCB0aGUgYWxsb2NhdGVkIG1lbW9yeSBmb3IgdGhlIElFIGJ1ZmZlciAoYGJzc19kZXNjLSZndDtiY25fcnNuX2llYCBvciBgYnNzX2Rlc2MtJmd0O2Jjbl93cGFfaWVgKSwgd2hpY2ggaXMgcG9wdWxhdGVkIGRpcmVjdGx5IGZyb20gbmV0d29yayBwYWNrZXRzLiBLQVNBTiBpcyBwZXJmZWN0bHkgc3VpdGVkIHRvIGRldGVjdGluZyB0aGlzIHNvcnQgb2YgbWVtb3J5IGFjY2VzcyB2aW9sYXRpb24uICBLTVNBTiB3b3VsZCBiZSBvdmVya2lsbCwgYW5kIHByb2JhYmx5IG5vdCBldmVuIHRyaWdnZXIgYW55dGhpbmcsIHNpbmNlIGl0JiMzOTtzIGZvY3VzZWQgb24gdW5pbml0aWFsaXplZCBtZW1vcnkgYWNjZXNzLgoKSSYjMzk7dmUgY29uZmlybWVkIHRoaXMgYnkgbG9va2luZyBhdCB0aGUgY29kZSwgdG9vLiAgSSYjMzk7bSB2ZXJ5IGNvbmZpZGVudCB0aGF0IHRoZSBwYXRjaCBhZGRyZXNzZXMgdGhlIHZ1bG5lcmFiaWxpdHkgY29ycmVjdGx5IGJ5IHByZXZlbnRpbmcgdGhlIG91dC1vZi1ib3VuZHMgcmVhZC4gVGhlcmVmb3JlLCBJIGJlbGlldmUgYE5lZWRzS01TQU49ZmFsc2VgIGlzIGNvcnJlY3QuIFRoaXMgaXMgdGhlIGtpbmQgb2YgdnVsbmVyYWJpbGl0eSB0aGF0IEtBU0FOIHdpbGwgZGV0ZWN0IHF1aWNrbHksIGFuZCBlZmZpY2llbnRseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTU6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTAwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxMDA6XHQvKlxuIDEwMTpcdCAqIFRoaXMgZnVuY3Rpb24gcGFyc2VzIGEgZ2l2ZW4gSUUgZm9yIGEgZ2l2ZW4gT1VJLlxuIDEwMjpcdCAqXG4gMTAzOlx0ICogVGhpcyBpcyB1c2VkIHRvIHBhcnNlIGEgV1BBL1JTTiBJRSB0byBmaW5kIGlmIGl0IGhhc1xuIDEwNDpcdCAqIGEgZ2l2ZW4gb3VpIGluIFBUSy5cbiAxMDU6XHQgKi9cbiAxMDY6XHRzdGF0aWMgdThcbiAxMDc6XHRtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWUoc3RydWN0IGllX2JvZHkgKmllYm9keSwgdTggKm91aSwgaW50IGllX2xlbilcbiAxMDg6XHR7XG4gMTA5Olx0XHRjb25zdCBzaXplX3QgcHRrX2JvZHlfb2Zmc2V0ID0gb2Zmc2V0b2Yoc3RydWN0IGllX2JvZHksIHB0a19ib2R5KTtcbiAxMTA6XHRcdHU4IGNvdW50O1xuIDExMTpcdFxuIDExMjpcdFx0LyogaWVfbGVuIGlzIHRoZSBudW1iZXIgb2YgYnl0ZXMgYXZhaWxhYmxlIGF0IGllYm9keS4gS2VlcCBpdCBzaWduZWRcbiAxMTM6XHRcdCAqIGFuZCByZWplY3QgYSBuZWdhdGl2ZSAodW5kZXJmbG93ZWQpIGxlbmd0aCBiZWZvcmUgdGhlIHVuc2lnbmVkXG4gMTE0Olx0XHQgKiBjb21wYXJpc29ucyBiZWxvdywgc28gYSBzbWFsbCBvciB6ZXJvIElFIGxlbmd0aCBjYW5ub3Qgd3JhcC5cbiAxMTU6XHRcdCAqL1xuIDExNjpcdFx0aWYgKGllX2xlbiBcdTAwM2MgMCB8fCAoc2l6ZV90KWllX2xlbiBcdTAwM2MgcHRrX2JvZHlfb2Zmc2V0KVxuIDExNzpcdFx0XHRyZXR1cm4gTVdJRklFWF9PVUlfTk9UX1BSRVNFTlQ7XG4gMTE4Olx0XG4gMTE5Olx0XHRjb3VudCA9IGllYm9keS1cdTAwM2VwdGtfY250WzBdO1xuIDEyMDpcdFxuIDEyMTpcdFx0LyogUmVqZWN0IGFuIE9VSSBjb3VudCB3aG9zZSBsaXN0IHdvdWxkIHJ1biBwYXN0IHRoZSBlbGVtZW50LiAqL1xuIDEyMjpcdFx0aWYgKHB0a19ib2R5X29mZnNldCAmIzQzOyBjb3VudCAqIHNpemVvZihpZWJvZHktXHUwMDNlcHRrX2JvZHkpIFx1MDAzZSAoc2l6ZV90KWllX2xlbilcbiAxMjM6XHRcdFx0cmV0dXJuIE1XSUZJRVhfT1VJX05PVF9QUkVTRU5UO1xuIDEyNDpcdFxuIDEyNTpcdFx0LyogVGhlcmUgY291bGQgYmUgbXVsdGlwbGUgT1VJcyBmb3IgUFRLIGhlbmNlXG4gMTI2Olx0XHQgICAxKSBUYWtlIHRoZSBsZW5ndGguXG4gMTI3Olx0XHQgICAyKSBDaGVjayBhbGwgdGhlIE9VSXMgZm9yIEFFUy5cbiAxMjg6XHRcdCAgIDMpIElmIG9uZSBvZiB0aGVtIGlzIEFFUyB0aGVuIHBhc3Mgc3VjY2Vzcy4gKi9cbiAxMjk6XHRcdHdoaWxlIChjb3VudCkge1xuIDEzMDpcdFx0XHRpZiAoIW1lbWNtcChpZWJvZHktXHUwMDNlcHRrX2JvZHksIG91aSwgc2l6ZW9mKGllYm9keS1cdTAwM2VwdGtfYm9keSkpKVxuIDEzMTpcdFx0XHRcdHJldHVybiBNV0lGSUVYX09VSV9QUkVTRU5UO1xuIDEzMjpcdFxuIDEzMzpcdFx0XHQtLWNvdW50O1xuIDEzNDpcdFx0XHRpZiAoY291bnQpXG4gMTM1Olx0XHRcdFx0aWVib2R5ID0gKHN0cnVjdCBpZV9ib2R5ICopICgodTggKikgaWVib2R5ICYjNDM7XG4gMTM2Olx0XHRcdFx0XHRcdFx0c2l6ZW9mKGllYm9keS1cdTAwM2VwdGtfYm9keSkpO1xuIDEzNzpcdFx0fVxuIDEzODpcdFxuIDEzOTpcdFx0cHJfZGVidWcoXCYjMzQ7aW5mbzogJXM6IE9VSSBpcyBub3QgZm91bmQgaW4gUFRLXFxuXCYjMzQ7LCBfX2Z1bmNfXyk7XG4gMTQwOlx0XHRyZXR1cm4gTVdJRklFWF9PVUlfTk9UX1BSRVNFTlQ7XG4gMTQxOlx0fVxuIDE0MjpcdFxuIDE0MzpcdC8qXG4gMTQ0Olx0ICogVGhpcyBmdW5jdGlvbiBjaGVja3MgaWYgYSBnaXZlbiBPVUkgaXMgcHJlc2VudCBpbiBhIFJTTiBJRS5cbiAxNDU6XHQgKlxuIDE0NjpcdCAqIFRoZSBmdW5jdGlvbiBmaXJzdCBjaGVja3MgaWYgYSBSU04gSUUgaXMgcHJlc2VudCBvciBub3QgaW4gdGhlXG4gMTQ3Olx0ICogQlNTIGRlc2NyaXB0b3IuIEl0IHRyaWVzIHRvIGxvY2F0ZSB0aGUgT1VJIG9ubHkgaWYgc3VjaCBhbiBJRSBpc1xuIDE0ODpcdCAqIHByZXNlbnQuXG4gMTQ5Olx0ICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE1OjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ3OTUKCQkJCQkJCW91dHB1dDogMjA5CgkJCQkJCQl0aG91Z2h0czogMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBPdXQtb2YtQm91bmRzIFJlYWQqKgoKUmlnaHQsIHRoZSBjb2RlJiMzOTtzIGNvbmZpcm1lZCBpdC4gV2UmIzM5O3JlIGxvb2tpbmcgYXQgYSBzdHJhaWdodGZvcndhcmQgb3V0LW9mLWJvdW5kcyByZWFkIGJ1Zywgbm90aGluZyBjb21wbGV4LiBHaXZlbiB0aGUgbmF0dXJlIG9mIHRoZSBpc3N1ZSwgYW5kIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHJlbGV2YW50IG1lbW9yeSBzYWZldHkgbWVjaGFuaXNtcywgSSBjYW4gY29uZmlkZW50bHkgbWFyayBgTmVlZHNLTVNBTmAgYXMgYGZhbHNlYC4gV2UgY2FuIGFkZHJlc3MgdGhpcyB3aXRoIGEgbW9yZSB0YXJnZXRlZCBhcHByb2FjaCwgbGlrZWx5IGludm9sdmluZyBib3VuZHMgY2hlY2tpbmcgb3IgaW1wcm92ZWQgaW5kZXhpbmcgd2l0aGluIHRoZSBhZmZlY3RlZCByb3V0aW5lLiBObyBuZWVkIGZvciB0aGUgaGVhdnkgaGFtbWVyIG9mIGEga2VybmVsLXdpZGUgbWVtb3J5IHNhbml0aXplciBoZXJlLiBMZXQmIzM5O3MgbW92ZSBvbiB0byB0aGUgZml4LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxNTowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBvdXQtb2YtYm91bmRzIHJlYWQgdnVsbmVyYWJpbGl0eSBpbiBgbXdpZmlleF9zZWFyY2hfb3VpX2luX2llYCBieSBpbnRyb2R1Y2luZyBib3VuZHMgY2hlY2tpbmcgb24gdGhlIE9VSSBjb3VudCAoYGllYm9keS1cdTAwM2VwdGtfY250WzBdYCkgYWdhaW5zdCB0aGUgYXZhaWxhYmxlIEluZm9ybWF0aW9uIEVsZW1lbnQgKElFKSBsZW5ndGggKGBpZV9sZW5gKS4gV2l0aG91dCB0aGlzIGNoZWNrLCBhIG1hbGljaW91c2x5IGNyYWZ0ZWQgYmVhY29uIG9yIHByb2JlIHJlc3BvbnNlIHdpdGggYSBsYXJnZSBPVUkgY291bnQgY291bGQgY2F1c2UgdGhlIGRyaXZlciB0byByZWFkIHBhc3QgdGhlIGVuZCBvZiB0aGUgYWxsb2NhdGVkIElFIGJ1ZmZlciBkdXJpbmcgdGhlIGBtZW1jbXBgIGxvb3AuXG5cblRoaXMgaXMgYSBjbGFzc2ljIG91dC1vZi1ib3VuZHMgcmVhZCBidWcsIHdoaWNoIGlzIHJlbGlhYmx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGVyZSBpcyBubyB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSwgc3RhY2svaGVhcCBpbmZvLWxlYWsgdG8gdXNlciBzcGFjZSwgb3IgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMgaW52b2x2ZWQgaW4gdGhpcyB2dWxuZXJhYmlsaXR5LiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LCBhcyBzdGFuZGFyZCBLQVNBTiB3aWxsIGNhdGNoIGFueSByZWdyZXNzaW9ucyBvciBzaW1pbGFyIG91dC1vZi1ib3VuZHMgYWNjZXNzIGlzc3VlcyBpbiB0aGlzIGNvZGUuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBvdXQtb2YtYm91bmRzIHJlYWQgdnVsbmVyYWJpbGl0eSBpbiBgbXdpZmlleF9zZWFyY2hfb3VpX2luX2llYCBieSBpbnRyb2R1Y2luZyBib3VuZHMgY2hlY2tpbmcgb24gdGhlIE9VSSBjb3VudCAoYGllYm9keS1cdTAwM2VwdGtfY250WzBdYCkgYWdhaW5zdCB0aGUgYXZhaWxhYmxlIEluZm9ybWF0aW9uIEVsZW1lbnQgKElFKSBsZW5ndGggKGBpZV9sZW5gKS4gV2l0aG91dCB0aGlzIGNoZWNrLCBhIG1hbGljaW91c2x5IGNyYWZ0ZWQgYmVhY29uIG9yIHByb2JlIHJlc3BvbnNlIHdpdGggYSBsYXJnZSBPVUkgY291bnQgY291bGQgY2F1c2UgdGhlIGRyaXZlciB0byByZWFkIHBhc3QgdGhlIGVuZCBvZiB0aGUgYWxsb2NhdGVkIElFIGJ1ZmZlciBkdXJpbmcgdGhlIGBtZW1jbXBgIGxvb3AuXG5cblRoaXMgaXMgYSBjbGFzc2ljIG91dC1vZi1ib3VuZHMgcmVhZCBidWcsIHdoaWNoIGlzIHJlbGlhYmx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGVyZSBpcyBubyB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSwgc3RhY2svaGVhcCBpbmZvLWxlYWsgdG8gdXNlciBzcGFjZSwgb3IgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMgaW52b2x2ZWQgaW4gdGhpcyB2dWxuZXJhYmlsaXR5LiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LCBhcyBzdGFuZGFyZCBLQVNBTiB3aWxsIGNhdGNoIGFueSByZWdyZXNzaW9ucyBvciBzaW1pbGFyIG91dC1vZi1ib3VuZHMgYWNjZXNzIGlzc3VlcyBpbiB0aGlzIGNvZGUuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE0OjUyOjM0Ljc1NzAxNTgwNFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0NTY1NjUyMDQwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNV0lGSUVYXCIsXG4gICAgXCJNV0lGSUVYX1VTQlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm13aWZpZXhfcmV0XzgwMl8xMV9zY2FuXCIsXG4gICAgXCJtd2lmaWV4X2hhbmRsZV9ldmVudF9leHRfc2Nhbl9yZXBvcnRcIixcbiAgICBcIm13aWZpZXhfY2hlY2tfbmV0d29ya19jb21wYXRpYmlsaXR5XCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBvdXQtb2YtYm91bmRzIHJlYWQgdnVsbmVyYWJpbGl0eSBpbiBgbXdpZmlleF9zZWFyY2hfb3VpX2luX2llYCBieSBpbnRyb2R1Y2luZyBib3VuZHMgY2hlY2tpbmcgb24gdGhlIE9VSSBjb3VudCAoYGllYm9keS1cXHUwMDNlcHRrX2NudFswXWApIGFnYWluc3QgdGhlIGF2YWlsYWJsZSBJbmZvcm1hdGlvbiBFbGVtZW50IChJRSkgbGVuZ3RoIChgaWVfbGVuYCkuIFdpdGhvdXQgdGhpcyBjaGVjaywgYSBtYWxpY2lvdXNseSBjcmFmdGVkIGJlYWNvbiBvciBwcm9iZSByZXNwb25zZSB3aXRoIGEgbGFyZ2UgT1VJIGNvdW50IGNvdWxkIGNhdXNlIHRoZSBkcml2ZXIgdG8gcmVhZCBwYXN0IHRoZSBlbmQgb2YgdGhlIGFsbG9jYXRlZCBJRSBidWZmZXIgZHVyaW5nIHRoZSBgbWVtY21wYCBsb29wLlxcblxcblRoaXMgaXMgYSBjbGFzc2ljIG91dC1vZi1ib3VuZHMgcmVhZCBidWcsIHdoaWNoIGlzIHJlbGlhYmx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGVyZSBpcyBubyB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSwgc3RhY2svaGVhcCBpbmZvLWxlYWsgdG8gdXNlciBzcGFjZSwgb3IgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMgaW52b2x2ZWQgaW4gdGhpcyB2dWxuZXJhYmlsaXR5LiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LCBhcyBzdGFuZGFyZCBLQVNBTiB3aWxsIGNhdGNoIGFueSByZWdyZXNzaW9ucyBvciBzaW1pbGFyIG91dC1vZi1ib3VuZHMgYWNjZXNzIGlzc3VlcyBpbiB0aGlzIGNvZGUuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgdG8gYG13aWZpZXhfc2VhcmNoX291aV9pbl9pZWAgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIHJlYWRzIHdoZW4gcGFyc2luZyBSU04vV1BBIEluZm9ybWF0aW9uIEVsZW1lbnRzIChJRXMpIGZyb20gc2NhbiByZXN1bHRzLiBUaGUgdnVsbmVyYWJpbGl0eSBvY2N1cnMgd2hlbiB0aGUgZHJpdmVyIHByb2Nlc3NlcyBzY2FuIHJlc3VsdHMgcmVjZWl2ZWQgZnJvbSB0aGUgZmlybXdhcmUuIFNpbmNlIHRoZSBgbXdpZmlleGAgZHJpdmVyIHN1cHBvcnRzIGEgVVNCIGludGVyZmFjZSAoYE1XSUZJRVhfVVNCYCksIHRoZSBmaXJtd2FyZSByZXNwb25zZXMgY2FuIGJlIGZ1enplZCB2aWEgVVNCIGVtdWxhdGlvbiAoZS5nLiwgZHVtbXktaGNkKS4gVGhlIGZpeCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBsb2dpYyBpbiB0aGUgZHJpdmVyLCBzbyBpdCBpcyB3b3J0aCBmdXp6aW5nLiBGb2N1cyBzeW1ib2xzIGFyZSBgbXdpZmlleF9yZXRfODAyXzExX3NjYW5gLCBgbXdpZmlleF9oYW5kbGVfZXZlbnRfZXh0X3NjYW5fcmVwb3J0YCwgYW5kIGBtd2lmaWV4X2NoZWNrX25ldHdvcmtfY29tcGF0aWJpbGl0eWAsIHdoaWNoIGFyZSB0aGUgZW50cnkgcG9pbnRzIGZvciBwcm9jZXNzaW5nIHNjYW4gcmVzdWx0cyBhbmQgY2hlY2tpbmcgbmV0d29yayBjb21wYXRpYmlsaXR5LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNDo1MjozNC43NTcwMjI2NjRaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQwNTMwMjE3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGYxMzgyZTYwMzdlNzUyZjYzZDFhNzkzZjcwMGMyOGUwZGNmMDFlNDdcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBBdWcgMTQgMTQ6NTI6MzMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmNcXG5pbmRleCA5N2MwZWMzYjgyMmU3Li40NzNmNDYyM2VhMTk5IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jXFxuQEAgLTEwNCwxMiArMTA0LDI0IEBAIGhhc192ZW5kb3JfaGRyKHN0cnVjdCBpZWVlX3R5cGVzX3ZlbmRvcl9zcGVjaWZpYyAqaWUsIHU4IGtleSlcXG4gICogYSBnaXZlbiBvdWkgaW4gUFRLLlxcbiAgKi9cXG4gc3RhdGljIHU4XFxuLW13aWZpZXhfc2VhcmNoX291aV9pbl9pZShzdHJ1Y3QgaWVfYm9keSAqaWVib2R5LCB1OCAqb3VpKVxcbittd2lmaWV4X3NlYXJjaF9vdWlfaW5faWUoc3RydWN0IGllX2JvZHkgKmllYm9keSwgdTggKm91aSwgaW50IGllX2xlbilcXG4ge1xcbitcXHRjb25zdCBzaXplX3QgcHRrX2JvZHlfb2Zmc2V0ID0gb2Zmc2V0b2Yoc3RydWN0IGllX2JvZHksIHB0a19ib2R5KTtcXG4gXFx0dTggY291bnQ7XFxuIFxcbitcXHQvKiBpZV9sZW4gaXMgdGhlIG51bWJlciBvZiBieXRlcyBhdmFpbGFibGUgYXQgaWVib2R5LiBLZWVwIGl0IHNpZ25lZFxcbitcXHQgKiBhbmQgcmVqZWN0IGEgbmVnYXRpdmUgKHVuZGVyZmxvd2VkKSBsZW5ndGggYmVmb3JlIHRoZSB1bnNpZ25lZFxcbitcXHQgKiBjb21wYXJpc29ucyBiZWxvdywgc28gYSBzbWFsbCBvciB6ZXJvIElFIGxlbmd0aCBjYW5ub3Qgd3JhcC5cXG4rXFx0ICovXFxuK1xcdGlmIChpZV9sZW4gXFx1MDAzYyAwIHx8IChzaXplX3QpaWVfbGVuIFxcdTAwM2MgcHRrX2JvZHlfb2Zmc2V0KVxcbitcXHRcXHRyZXR1cm4gTVdJRklFWF9PVUlfTk9UX1BSRVNFTlQ7XFxuK1xcbiBcXHRjb3VudCA9IGllYm9keS1cXHUwMDNlcHRrX2NudFswXTtcXG4gXFxuK1xcdC8qIFJlamVjdCBhbiBPVUkgY291bnQgd2hvc2UgbGlzdCB3b3VsZCBydW4gcGFzdCB0aGUgZWxlbWVudC4gKi9cXG4rXFx0aWYgKHB0a19ib2R5X29mZnNldCArIGNvdW50ICogc2l6ZW9mKGllYm9keS1cXHUwMDNlcHRrX2JvZHkpIFxcdTAwM2UgKHNpemVfdClpZV9sZW4pXFxuK1xcdFxcdHJldHVybiBNV0lGSUVYX09VSV9OT1RfUFJFU0VOVDtcXG4rXFxuIFxcdC8qIFRoZXJlIGNvdWxkIGJlIG11bHRpcGxlIE9VSXMgZm9yIFBUSyBoZW5jZVxcbiBcXHQgICAxKSBUYWtlIHRoZSBsZW5ndGguXFxuIFxcdCAgIDIpIENoZWNrIGFsbCB0aGUgT1VJcyBmb3IgQUVTLlxcbkBAIC0xNDMsMTEgKzE1NSwxNCBAQCBtd2lmaWV4X2lzX3Jzbl9vdWlfcHJlc2VudChzdHJ1Y3QgbXdpZmlleF9ic3NkZXNjcmlwdG9yICpic3NfZGVzYywgdTMyIGNpcGhlcilcXG4gXFx0dTggcmV0ID0gTVdJRklFWF9PVUlfTk9UX1BSRVNFTlQ7XFxuIFxcbiBcXHRpZiAoaGFzX2llZWVfaGRyKGJzc19kZXNjLVxcdTAwM2ViY25fcnNuX2llLCBXTEFOX0VJRF9SU04pKSB7XFxuK1xcdFxcdGludCBpZV9sZW4gPSAoaW50KWJzc19kZXNjLVxcdTAwM2ViY25fcnNuX2llLVxcdTAwM2VpZWVlX2hkci5sZW4gLVxcbitcXHRcXHRcXHRSU05fR1RLX09VSV9PRkZTRVQ7XFxuK1xcbiBcXHRcXHRpZWJvZHkgPSAoc3RydWN0IGllX2JvZHkgKilcXG4gXFx0XFx0XFx0ICgoKHU4ICopIGJzc19kZXNjLVxcdTAwM2ViY25fcnNuX2llLVxcdTAwM2VkYXRhKSArXFxuIFxcdFxcdFxcdCAgUlNOX0dUS19PVUlfT0ZGU0VUKTtcXG4gXFx0XFx0b3VpID0gXFx1MDAyNm13aWZpZXhfcnNuX291aVtjaXBoZXJdWzBdO1xcbi1cXHRcXHRyZXQgPSBtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWUoaWVib2R5LCBvdWkpO1xcbitcXHRcXHRyZXQgPSBtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWUoaWVib2R5LCBvdWksIGllX2xlbik7XFxuIFxcdFxcdGlmIChyZXQpXFxuIFxcdFxcdFxcdHJldHVybiByZXQ7XFxuIFxcdH1cXG5AQCAtMTY5LDEwICsxODQsMTQgQEAgbXdpZmlleF9pc193cGFfb3VpX3ByZXNlbnQoc3RydWN0IG13aWZpZXhfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MsIHUzMiBjaXBoZXIpXFxuIFxcdHU4IHJldCA9IE1XSUZJRVhfT1VJX05PVF9QUkVTRU5UO1xcbiBcXG4gXFx0aWYgKGhhc192ZW5kb3JfaGRyKGJzc19kZXNjLVxcdTAwM2ViY25fd3BhX2llLCBXTEFOX0VJRF9WRU5ET1JfU1BFQ0lGSUMpKSB7XFxuK1xcdFxcdGludCBpZV9sZW4gPSAoaW50KWJzc19kZXNjLVxcdTAwM2ViY25fd3BhX2llLVxcdTAwM2V2ZW5kX2hkci5sZW4gLVxcbitcXHRcXHRcXHQoaW50KXNpemVvZihic3NfZGVzYy1cXHUwMDNlYmNuX3dwYV9pZS1cXHUwMDNldmVuZF9oZHIub3VpKSAtXFxuK1xcdFxcdFxcdFdQQV9HVEtfT1VJX09GRlNFVDtcXG4rXFxuIFxcdFxcdGllYm9keSA9IChzdHJ1Y3QgaWVfYm9keSAqKSgodTggKilic3NfZGVzYy1cXHUwMDNlYmNuX3dwYV9pZS1cXHUwMDNlZGF0YSArXFxuIFxcdFxcdFxcdFxcdFxcdCAgICBXUEFfR1RLX09VSV9PRkZTRVQpO1xcbiBcXHRcXHRvdWkgPSBcXHUwMDI2bXdpZmlleF93cGFfb3VpW2NpcGhlcl1bMF07XFxuLVxcdFxcdHJldCA9IG13aWZpZXhfc2VhcmNoX291aV9pbl9pZShpZWJvZHksIG91aSk7XFxuK1xcdFxcdHJldCA9IG13aWZpZXhfc2VhcmNoX291aV9pbl9pZShpZWJvZHksIG91aSwgaWVfbGVuKTtcXG4gXFx0XFx0aWYgKHJldClcXG4gXFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gXFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNDo1MjozNS4xNjMxODg0NTJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo1MzI1MTI1NzM0OTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTVdJRklFWFwiLFxuICAgIFwiTVdJRklFWF9VU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtd2lmaWV4X3JldF84MDJfMTFfc2NhblwiLFxuICAgIFwibXdpZmlleF9oYW5kbGVfZXZlbnRfZXh0X3NjYW5fcmVwb3J0XCIsXG4gICAgXCJtd2lmaWV4X2NoZWNrX25ldHdvcmtfY29tcGF0aWJpbGl0eVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIHRvIGBtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWVgIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcyB3aGVuIHBhcnNpbmcgUlNOL1dQQSBJbmZvcm1hdGlvbiBFbGVtZW50cyAoSUVzKSBmcm9tIHNjYW4gcmVzdWx0cy4gVGhlIHZ1bG5lcmFiaWxpdHkgb2NjdXJzIHdoZW4gdGhlIGRyaXZlciBwcm9jZXNzZXMgc2NhbiByZXN1bHRzIHJlY2VpdmVkIGZyb20gdGhlIGZpcm13YXJlLiBTaW5jZSB0aGUgYG13aWZpZXhgIGRyaXZlciBzdXBwb3J0cyBhIFVTQiBpbnRlcmZhY2UgKGBNV0lGSUVYX1VTQmApLCB0aGUgZmlybXdhcmUgcmVzcG9uc2VzIGNhbiBiZSBmdXp6ZWQgdmlhIFVTQiBlbXVsYXRpb24gKGUuZy4sIGR1bW15LWhjZCkuIFRoZSBmaXggbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUgbG9naWMgaW4gdGhlIGRyaXZlciwgc28gaXQgaXMgd29ydGggZnV6emluZy4gRm9jdXMgc3ltYm9scyBhcmUgYG13aWZpZXhfcmV0XzgwMl8xMV9zY2FuYCwgYG13aWZpZXhfaGFuZGxlX2V2ZW50X2V4dF9zY2FuX3JlcG9ydGAsIGFuZCBgbXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHlgLCB3aGljaCBhcmUgdGhlIGVudHJ5IHBvaW50cyBmb3IgcHJvY2Vzc2luZyBzY2FuIHJlc3VsdHMgYW5kIGNoZWNraW5nIG5ldHdvcmsgY29tcGF0aWJpbGl0eS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZjEzODJlNjAzN2U3NTJmNjNkMWE3OTNmNzAwYzI4ZTBkY2YwMWU0N1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDE0IDE0OjUyOjMzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmNcbmluZGV4IDk3YzBlYzNiODIyZTcuLjQ3M2Y0NjIzZWExOTkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jXG5AQCAtMTA0LDEyICsxMDQsMjQgQEAgaGFzX3ZlbmRvcl9oZHIoc3RydWN0IGllZWVfdHlwZXNfdmVuZG9yX3NwZWNpZmljICppZSwgdTgga2V5KVxuICAqIGEgZ2l2ZW4gb3VpIGluIFBUSy5cbiAgKi9cbiBzdGF0aWMgdThcbi1td2lmaWV4X3NlYXJjaF9vdWlfaW5faWUoc3RydWN0IGllX2JvZHkgKmllYm9keSwgdTggKm91aSlcbittd2lmaWV4X3NlYXJjaF9vdWlfaW5faWUoc3RydWN0IGllX2JvZHkgKmllYm9keSwgdTggKm91aSwgaW50IGllX2xlbilcbiB7XG4rXHRjb25zdCBzaXplX3QgcHRrX2JvZHlfb2Zmc2V0ID0gb2Zmc2V0b2Yoc3RydWN0IGllX2JvZHksIHB0a19ib2R5KTtcbiBcdHU4IGNvdW50O1xuIFxuK1x0LyogaWVfbGVuIGlzIHRoZSBudW1iZXIgb2YgYnl0ZXMgYXZhaWxhYmxlIGF0IGllYm9keS4gS2VlcCBpdCBzaWduZWRcbitcdCAqIGFuZCByZWplY3QgYSBuZWdhdGl2ZSAodW5kZXJmbG93ZWQpIGxlbmd0aCBiZWZvcmUgdGhlIHVuc2lnbmVkXG4rXHQgKiBjb21wYXJpc29ucyBiZWxvdywgc28gYSBzbWFsbCBvciB6ZXJvIElFIGxlbmd0aCBjYW5ub3Qgd3JhcC5cbitcdCAqL1xuK1x0aWYgKGllX2xlbiBcdTAwM2MgMCB8fCAoc2l6ZV90KWllX2xlbiBcdTAwM2MgcHRrX2JvZHlfb2Zmc2V0KVxuK1x0XHRyZXR1cm4gTVdJRklFWF9PVUlfTk9UX1BSRVNFTlQ7XG4rXG4gXHRjb3VudCA9IGllYm9keS1cdTAwM2VwdGtfY250WzBdO1xuIFxuK1x0LyogUmVqZWN0IGFuIE9VSSBjb3VudCB3aG9zZSBsaXN0IHdvdWxkIHJ1biBwYXN0IHRoZSBlbGVtZW50LiAqL1xuK1x0aWYgKHB0a19ib2R5X29mZnNldCArIGNvdW50ICogc2l6ZW9mKGllYm9keS1cdTAwM2VwdGtfYm9keSkgXHUwMDNlIChzaXplX3QpaWVfbGVuKVxuK1x0XHRyZXR1cm4gTVdJRklFWF9PVUlfTk9UX1BSRVNFTlQ7XG4rXG4gXHQvKiBUaGVyZSBjb3VsZCBiZSBtdWx0aXBsZSBPVUlzIGZvciBQVEsgaGVuY2VcbiBcdCAgIDEpIFRha2UgdGhlIGxlbmd0aC5cbiBcdCAgIDIpIENoZWNrIGFsbCB0aGUgT1VJcyBmb3IgQUVTLlxuQEAgLTE0MywxMSArMTU1LDE0IEBAIG13aWZpZXhfaXNfcnNuX291aV9wcmVzZW50KHN0cnVjdCBtd2lmaWV4X2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjLCB1MzIgY2lwaGVyKVxuIFx0dTggcmV0ID0gTVdJRklFWF9PVUlfTk9UX1BSRVNFTlQ7XG4gXG4gXHRpZiAoaGFzX2llZWVfaGRyKGJzc19kZXNjLVx1MDAzZWJjbl9yc25faWUsIFdMQU5fRUlEX1JTTikpIHtcbitcdFx0aW50IGllX2xlbiA9IChpbnQpYnNzX2Rlc2MtXHUwMDNlYmNuX3Jzbl9pZS1cdTAwM2VpZWVlX2hkci5sZW4gLVxuK1x0XHRcdFJTTl9HVEtfT1VJX09GRlNFVDtcbitcbiBcdFx0aWVib2R5ID0gKHN0cnVjdCBpZV9ib2R5ICopXG4gXHRcdFx0ICgoKHU4ICopIGJzc19kZXNjLVx1MDAzZWJjbl9yc25faWUtXHUwMDNlZGF0YSkgK1xuIFx0XHRcdCAgUlNOX0dUS19PVUlfT0ZGU0VUKTtcbiBcdFx0b3VpID0gXHUwMDI2bXdpZmlleF9yc25fb3VpW2NpcGhlcl1bMF07XG4tXHRcdHJldCA9IG13aWZpZXhfc2VhcmNoX291aV9pbl9pZShpZWJvZHksIG91aSk7XG4rXHRcdHJldCA9IG13aWZpZXhfc2VhcmNoX291aV9pbl9pZShpZWJvZHksIG91aSwgaWVfbGVuKTtcbiBcdFx0aWYgKHJldClcbiBcdFx0XHRyZXR1cm4gcmV0O1xuIFx0fVxuQEAgLTE2OSwxMCArMTg0LDE0IEBAIG13aWZpZXhfaXNfd3BhX291aV9wcmVzZW50KHN0cnVjdCBtd2lmaWV4X2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjLCB1MzIgY2lwaGVyKVxuIFx0dTggcmV0ID0gTVdJRklFWF9PVUlfTk9UX1BSRVNFTlQ7XG4gXG4gXHRpZiAoaGFzX3ZlbmRvcl9oZHIoYnNzX2Rlc2MtXHUwMDNlYmNuX3dwYV9pZSwgV0xBTl9FSURfVkVORE9SX1NQRUNJRklDKSkge1xuK1x0XHRpbnQgaWVfbGVuID0gKGludClic3NfZGVzYy1cdTAwM2ViY25fd3BhX2llLVx1MDAzZXZlbmRfaGRyLmxlbiAtXG4rXHRcdFx0KGludClzaXplb2YoYnNzX2Rlc2MtXHUwMDNlYmNuX3dwYV9pZS1cdTAwM2V2ZW5kX2hkci5vdWkpIC1cbitcdFx0XHRXUEFfR1RLX09VSV9PRkZTRVQ7XG4rXG4gXHRcdGllYm9keSA9IChzdHJ1Y3QgaWVfYm9keSAqKSgodTggKilic3NfZGVzYy1cdTAwM2ViY25fd3BhX2llLVx1MDAzZWRhdGEgK1xuIFx0XHRcdFx0XHQgICAgV1BBX0dUS19PVUlfT0ZGU0VUKTtcbiBcdFx0b3VpID0gXHUwMDI2bXdpZmlleF93cGFfb3VpW2NpcGhlcl1bMF07XG4tXHRcdHJldCA9IG13aWZpZXhfc2VhcmNoX291aV9pbl9pZShpZWJvZHksIG91aSk7XG4rXHRcdHJldCA9IG13aWZpZXhfc2VhcmNoX291aV9pbl9pZShpZWJvZHksIG91aSwgaWVfbGVuKTtcbiBcdFx0aWYgKHJldClcbiBcdFx0XHRyZXR1cm4gcmV0O1xuIFx0fVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTQ6NTI6MzUuMTYzMTg5ODIyWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjM2NjMzODMzMDEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFdpcmVsZXNzIERyaXZlciBQYXRjaCBmb3IgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgdHdlYWtzIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jYC4gSXQgbG9va3MgbGlrZSBpdCdzIGFkZHJlc3NpbmcgYSBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyByZWFkIHZ1bG5lcmFiaWxpdHkgaW4gYG13aWZpZXhfc2VhcmNoX291aV9pbl9pZWAgYnkgYWRkaW5nIHNvbWUgYm91bmRzIGNoZWNraW5nLiBTbWFydCBtb3ZlLCBnb29kIHRvIHNlZSBwcm9hY3RpdmUgc2VjdXJpdHkgbWVhc3VyZXMuIFRoZXkndmUgYWxzbyB1cGRhdGVkIGBtd2lmaWV4X2lzX3Jzbl9vdWlfcHJlc2VudGAgYW5kIGBtd2lmaWV4X2lzX3dwYV9vdWlfcHJlc2VudGAgdG8gcGFzcyB0aGUgYGllX2xlbmAgYWxvbmcgdG8gdGhhdCBmdW5jdGlvbiwgd2hpY2ggbWFrZXMgcGVyZmVjdCBzZW5zZSBpbiB0aGlzIGNvbnRleHQuXG5cbk15IGluaXRpYWwgdGhvdWdodCBpcywgXCJjYW4gdGhpcyBkcml2ZXIgYmUgZnV6emVkIGVmZmVjdGl2ZWx5P1wiIEl0J3MgYSBNYXJ2ZWxsIFdpRmktRXggZHJpdmVyLCB3aGljaCBtZWFucyBpdCdzIGEgd2lyZWxlc3MgZHJpdmVyLCBhbmQgd2lyZWxlc3MgZHJpdmVycyBhcmUgYWx3YXlzIGludGVyZXN0aW5nIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLiBIb3dldmVyLCB0aGV5J3JlIG9mdGVuIHZlcnkgaGFyZHdhcmUtc3BlY2lmaWMsIHNvIHRoYXQncyB0aGUgaW1tZWRpYXRlIHF1ZXN0aW9uLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSBpbnRlcmZhY2UuIElzIHRoaXMgYSBVU0IsIFNESU8sIG9yIFBDSWUgZHJpdmVyP1xuXG5JJ2xsIGNoZWNrIHRoZSBkaXJlY3Rvcnkgc3RydWN0dXJlIGFnYWluOiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2AuIFRoYXQgc2hvdWxkIGdpdmUgbWUgc29tZSBjbHVlcy4gVGhlbiwgSSBkZWZpbml0ZWx5IG5lZWQgdG8gZGlnIGludG8gdGhlIEtjb25maWcgdG8gdW5kZXJzdGFuZCB0aGUgaGFyZHdhcmUgZGVwZW5kZW5jaWVzIGFuZCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEZyb20gdGhlcmUsIEkgY2FuIGJldHRlciBhc3Nlc3MgaXRzIGZ1enphYmlsaXR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODU5LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjA2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTQ6NTY6MzEuNzk3MDI1MzY0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1MzU0MTg1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNV0lGSUVYXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6Mjpjb25maWcgTVdJRklFWFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgV2lGaS1FeCBEcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0xMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzoxMjpjb25maWcgTVdJRklFWF9TRElPXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMTMtXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFNEODc4Ni9TRDg3ODcvU0Q4Nzk3L1NEODg4Ny9TRDg4OTcvU0Q4OTc3L1NEODk3OC9TRDg5ODcvU0Q4OTk3XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6MjU6Y29uZmlnIE1XSUZJRVhfUENJRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTI2LVxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBQQ0lFIDg3NjYvODg5Ny84OTk3XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6Mzc6Y29uZmlnIE1XSUZJRVhfVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzgtXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFVTQjg3NjYvODc5Ny84OTk3XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNDo1NjozMS44NDIzODc0NDlaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDkxMDUwMTY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgdGhlIE1XSUZJRVhfVVNCIERyaXZlcioqXG5cbk9rYXksIHNvIEkgc2VlIHRoaXMgYE1XSUZJRVhfVVNCYCB0aGluZy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiVVNCIGRyaXZlcnMuLi4gdGhvc2UgYXJlIGZ1enphYmxlIVwiIFdlIGNhbiBoaXQgdGhlbSB3aXRoIGR1bW15LWhjZCBvciwgZXZlbiBiZXR0ZXIsIHNvbWV0aGluZyBsaWtlIHN5emthbGxlcidzIFVTQiBmdXp6aW5nIGNhcGFiaWxpdGllcy4gV2FpdCwgZG9lc24ndCBzeXprYWxsZXIgYWN0dWFsbHkgKmhhdmUqIFVTQiBmdXp6aW5nIHN1cHBvcnQ/IExldCdzIHZlcmlmeSB0aGF0LiBZZXAsIGNvbmZpcm1lZC4gT2theSwgdGhpcyBgTVdJRklFWF9VU0JgIGxvb2tzIGxpa2UgYSBwcmltZSB0YXJnZXQuXG5cbk5vdywgbGV0J3MgZGlnIGludG8gdGhpcyBzcGVjaWZpYyBkcml2ZXIuIEknbGwgc3RhcnQgd2l0aCBgbXdpZmlleF9zZWFyY2hfb3VpX2luX2llYCBhbmQgc2VlIHdoZXJlIHRoYXQncyBjYWxsZWQuIEhtbSwgaXQncyBjYWxsZWQgZnJvbSBgbXdpZmlleF9pc19yc25fb3VpX3ByZXNlbnRgIGFuZCBgbXdpZmlleF9pc193cGFfb3VpX3ByZXNlbnRgLiBPaywgbm93IGxldCdzIHRyYWNlIHdoZXJlICp0aG9zZSogYXJlIGNhbGxlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNhbGwgZmxvdyB0byBrbm93IHRoZSBhdHRhY2sgc3VyZmFjZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzgyOSwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNDo1NjozNy4zMzM0Mzk3OTlaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDYxMzI1ODUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXdpZmlleF9pc19yc25fb3VpX3ByZXNlbnRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jPTE1MD1zdGF0aWMgdThcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jOjE1MTptd2lmaWV4X2lzX3Jzbl9vdWlfcHJlc2VudChzdHJ1Y3QgbXdpZmlleF9ic3NkZXNjcmlwdG9yICpic3NfZGVzYywgdTMyIGNpcGhlcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTE1Mi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jPTM0Nz1td2lmaWV4X2lzX25ldHdvcmtfY29tcGF0aWJsZShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy00MTEtXFx0XFx0XFx0ICAgICBic3NfZGVzYy1cXHUwMDNlYmNuX2h0X2NhcCkgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jOjQxMjpcXHRcXHRcXHQgICAgIW13aWZpZXhfaXNfcnNuX291aV9wcmVzZW50KGJzc19kZXNjLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtNDEzLVxcdFxcdFxcdFxcdFxcdFxcdFxcdENJUEhFUl9TVUlURV9DQ01QKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtNDE0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM6NDE1OlxcdFxcdFxcdFxcdGlmIChtd2lmaWV4X2lzX3Jzbl9vdWlfcHJlc2VudFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtNDE2LVxcdFxcdFxcdFxcdFxcdFxcdChic3NfZGVzYywgQ0lQSEVSX1NVSVRFX1RLSVApKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE0OjU2OjM3LjM3OTU3Njc0NFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYxNDgwMDI1MjYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgc29tZW9uZSBkZWVwbHkgZmFtaWxpYXIgd2l0aCB0aGlzIGtpbmQgb2Ygc3lzdGVtOlxuXG4qKkFuYWx5emluZyBgbXdpZmlleF9pc19uZXR3b3JrX2NvbXBhdGlibGVgKipcblxuUmlnaHQsIHNvIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20gYG13aWZpZXhfaXNfbmV0d29ya19jb21wYXRpYmxlYC4uLiBobW0sIGxpa2VseSBkdXJpbmcgdGhlIHNjYW4gcmVzdWx0cyBwcm9jZXNzaW5nIHN0YWdlLiBUaGF0IG1ha2VzIHNlbnNlOyBpdCdzIHRoZSBuYXR1cmFsIHBsYWNlIHRvIGNoZWNrIGNvbXBhdGliaWxpdHkuIE5vdywgdGhlIHJlYWwgcXVlc3Rpb24gaXMsIHdoYXQgZXhhY3RseSBpcyBpdCAqZG9pbmcqPyBJIG5lZWQgdG8gZGl2ZSBpbnRvIHRoZSBkZWZpbml0aW9uIG9mIGBtd2lmaWV4X2lzX25ldHdvcmtfY29tcGF0aWJsZWAgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSBhbmQgaG93IGl0IGhhbmRsZXMgdGhlc2Ugc2NhbiByZXN1bHRzLiBMZXQncyBnZXQgdG8gaXQuIFRpbWUgdG8gZGlnIGluIGFuZCBzZWUgdGhlIGV4YWN0IGNoZWNrcyBhbmQgY3JpdGVyaWEgdGhpcyBmdW5jdGlvbiBlbXBsb3lzLiBUaGlzIGlzIHdoZXJlIHRoZSBjb3JlIGxvZ2ljIHdpbGwgYmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ2MDAsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNDo1NzozOC44NTk2MDY3NDZaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDcwNDk2MjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXdpZmlleF9pc19uZXR3b3JrX2NvbXBhdGlibGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jPTM0Nj1zdGF0aWMgczMyXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYzozNDc6bXdpZmlleF9pc19uZXR3b3JrX2NvbXBhdGlibGUoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTM0OC1cXHRcXHRcXHQgICAgICBzdHJ1Y3QgbXdpZmlleF9ic3NkZXNjcmlwdG9yICpic3NfZGVzYywgdTMyIG1vZGUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jPTE2MTk9aW50IG13aWZpZXhfY2hlY2tfbmV0d29ya19jb21wYXRpYmlsaXR5KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTE2MzEtXFx0XFx0Y2FzZSBOTDgwMjExX0lGVFlQRV9BREhPQzpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jOjE2MzI6XFx0XFx0XFx0cmV0ID0gbXdpZmlleF9pc19uZXR3b3JrX2NvbXBhdGlibGUocHJpdiwgYnNzX2Rlc2MsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0xNjMzLVxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICBwcml2LVxcdTAwM2Vic3NfbW9kZSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE0OjU3OjM4LjkwNjY2MjM4MVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MTQzNTQ2MTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKlRyYWNpbmcgdGhlIE5ldHdvcmsgQ29tcGF0aWJpbGl0eSBDaGVjayoqXG5cbkFscmlnaHQsIHNvIHRoZSBmdW5jdGlvbiBpbiBxdWVzdGlvbiBpcyBgbXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHlgLiBNeSBpbW1lZGlhdGUgcmVmbGV4IGlzIHRvIHVuZGVyc3RhbmQgaXRzIHBsYWNlIHdpdGhpbiB0aGUgYnJvYWRlciBmcmFtZXdvcmsuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBjYWxsaW5nIGNvbnRleHQuIExldCdzIHRyYWNlIGJhY2sgZnJvbSBgbXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHlgIGFuZCBxdWlja2x5IGlkZW50aWZ5IGl0cyBpbW1lZGlhdGUgdXBzdHJlYW0gY2FsbGVycy4gVGhpcyBpcyBlc3NlbnRpYWwgdG8gdW5kZXJzdGFuZCB0aGUgdHJpZ2dlciBjb25kaXRpb25zIGFuZCB0aGUgb3ZlcmFsbCBkZXNpZ24gaW50ZW50IGJlaGluZCB0aGlzIHBhcnRpY3VsYXIgY29tcGF0aWJpbGl0eSBjaGVjay4gSSdsbCBiZSBsb29raW5nIGZvciBjbHVlcyBpbiB0aGUgc3Vycm91bmRpbmcgY29kZSB0aGF0IHdpbGwgZXhwbGFpbiB3aHkgdGhlIGNoZWNrIGlzIG9jY3VycmluZywgYW5kIGhvcGVmdWxseSByZXZlYWwgc29tZSBpbnNpZ2h0cyBpbnRvIHRoZSBzcGVjaWZpYyBjcml0ZXJpYSBiZWluZyBldmFsdWF0ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUxMjUsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNDo1Nzo0Mi41MjEwMjMxMjVaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1MjUzMzg2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm13aWZpZXhfY2hlY2tfbmV0d29ya19jb21wYXRpYmlsaXR5XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaD0xNTQxPWludCBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xNTQyLVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgbXdpZmlleF9ic3NkZXNjcmlwdG9yICpic3NfZW50cnkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg6MTU0MzppbnQgbXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHkoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTE1NDQtXFx0XFx0XFx0XFx0XFx0c3RydWN0IG13aWZpZXhfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYz0xNTk0PWludCBtd2lmaWV4X2NtZF84MDJfMTFfc2NhbihzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqY21kLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0xNjE4LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM6MTYxOTppbnQgbXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHkoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTE2MjAtXFx0XFx0XFx0XFx0XFx0c3RydWN0IG13aWZpZXhfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jPTE3MDY9c3RhdGljIGludCBtd2lmaWV4X3VwZGF0ZV9jdXJyX2Jzc19wYXJhbXMoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMTcyMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jOjE3MjE6XFx0cmV0ID0gbXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHkocHJpdiwgYnNzX2Rlc2MpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMTcyMi1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jPTMzMj1pbnQgbXdpZmlleF9ic3Nfc3RhcnQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgc3RydWN0IGNmZzgwMjExX2JzcyAqYnNzLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jLTM3NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmM6Mzc1OlxcdFxcdHJldCA9IG13aWZpZXhfY2hlY2tfbmV0d29ya19jb21wYXRpYmlsaXR5KHByaXYsIGJzc19kZXNjKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmMtMzc2LVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmMtNDIyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYzo0MjM6XFx0XFx0cmV0ID0gbXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHkocHJpdiwgYnNzX2Rlc2MpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYy00MjQtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE0OjU3OjQyLjU2NjI4MTc1MVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MjI1MTc1MDEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBgbXdpZmlleGAgRHJpdmVyJ3MgUG90ZW50aWFsIEF0dGFjayBTdXJmYWNlKipcblxuT2theSwgc28gSSdtIHRyYWNraW5nIGRvd24gcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcyBpbiB0aGlzIGBtd2lmaWV4YCBkcml2ZXIuIEkgc2VlIHRoZXNlIHR3byBrZXkgZnVuY3Rpb25zLCBgbXdpZmlleF9ic3Nfc3RhcnRgIGFuZCBgbXdpZmlleF91cGRhdGVfY3Vycl9ic3NfcGFyYW1zYCwgYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcyB0aGV5J3JlIGxpa2VseSB0b3VjaGVkIGR1cmluZyBuZXR3b3JrIGNvbm5lY3Rpb24gb3Igc2NhbiByZXN1bHQgcHJvY2Vzc2luZy4gUHJldHR5IHN0YW5kYXJkIGZvciBhIGRyaXZlciwgZXNwZWNpYWxseSBvbmUgdGhhdCBpbnRlcmZhY2VzIHdpdGggYG1hYzgwMjExYCBhbmQgYGNmZzgwMjExYC4gQnV0IGhvbGQgb24uLi4gdGhpcyBgbXdpZmlleGAgZHJpdmVyIGlzIGEgKmZ1bGxtYWMqIGRyaXZlciwgc28gdGhhdCBtZWFucyB0aGUgZmlybXdhcmUgaXMgZmVlZGluZyBpdCBzY2FuIHJlc3VsdHMuIFRoaXMgY2hhbmdlcyB0aGluZ3MuXG5cblRoZSBmaXJtd2FyZS10by1ob3N0IGludGVyZmFjZSB2aWEgVVNCIGlzIG5vdyB0aGUganVpY3kgdGFyZ2V0LiBJZiBJIGNhbiBmdXp6IHRoYXQgaW50ZXJmYWNlIGFuZCBzaW11bGF0ZSBzY2FuIHJlc3VsdHMgZnJvbSB0aGUgZmlybXdhcmUsIHRoYXQncyB3aGVyZSBJIGNhbiBsaWtlbHkgdHJpZ2dlciBzb21ldGhpbmcgaW50ZXJlc3RpbmcuIEkgbmVlZCB0byBmb2N1cyBvbiBob3cgdGhlIGRyaXZlciBwcm9jZXNzZXMgdGhlc2UgcmVzdWx0cy4gSeKAmWxsIHN0YXJ0IGJ5IGRpZ2dpbmcgaW50byBgbXdpZmlleF91cGRhdGVfY3Vycl9ic3NfcGFyYW1zYCBhbmQgYG13aWZpZXhfYnNzX3N0YXJ0YCBkaXJlY3RseS5cblxuQWhhLCBgbXdpZmlleF9ic3Nfc3RhcnRgIGlzIGFjdHVhbGx5IGNhbGxlZCBmcm9tIGBtd2lmaWV4X2NmZzgwMjExX2Nvbm5lY3RgIG9yIG90aGVyIGBjZmc4MDIxMWAgY2FsbGJhY2tzLCB3aGljaCBtZWFucyBpdCByZWNlaXZlcyBhIGBjZmc4MDIxMV9ic3NgIHN0cnVjdCBhcyBpbnB1dC4gSW50ZXJlc3RpbmcuLi4gYnV0IHRoYXTigJlzIG5vdCBxdWl0ZSBpdC4gSSBhbHNvIHNlZSB0aGF0IGBtd2lmaWV4X2NoZWNrX25ldHdvcmtfY29tcGF0aWJpbGl0eWAgZnVuY3Rpb24gdGFrZXMgYSBgbXdpZmlleF9ic3NkZXNjcmlwdG9yYCBzdHJ1Y3QuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGV4YWN0bHkgaG93IHRoaXMgYG13aWZpZXhfYnNzZGVzY3JpcHRvcmAgaXMgcG9wdWxhdGVkLiBUaGF0J3MgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgZmlybXdhcmUgZGF0YSBmbG93cyBpbnRvIHRoZSBkcml2ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYwNTksIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNDMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTQ6NTc6NDguNzkxNDU5MTQ0WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Nzc3MjY3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtd2lmaWV4X3VwZGF0ZV9jdXJyX2Jzc19wYXJhbXNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jPTE2NjI9c3RhdGljIGludCBtd2lmaWV4X3NhdmVfaGlkZGVuX3NzaWRfY2hhbm5lbHMoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMTcwNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jOjE3MDY6c3RhdGljIGludCBtd2lmaWV4X3VwZGF0ZV9jdXJyX2Jzc19wYXJhbXMoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTE3MDctXFx0XFx0XFx0XFx0XFx0ICBzdHJ1Y3QgY2ZnODAyMTFfYnNzICpic3MpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jPTE3NDY9bXdpZmlleF9wYXJzZV9zaW5nbGVfcmVzcG9uc2VfYnVmKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsIHU4ICoqYnNzX2luZm8sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTE4OTMtXFx0XFx0XFx0XFx0XFx0ICAgIEVUSF9BTEVOKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jOjE4OTQ6XFx0XFx0XFx0XFx0XFx0bXdpZmlleF91cGRhdGVfY3Vycl9ic3NfcGFyYW1zKHByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0xODk1LVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgICBic3MpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNDo1Nzo0OC44MzkyMzc0MzlaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjA3NDUxODIwNzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEZpcm13YXJlIFJlc3BvbnNlIEhhbmRsaW5nKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYG13aWZpZXhfcGFyc2Vfc2luZ2xlX3Jlc3BvbnNlX2J1ZmAgaGVyZS4gSXQncyBjbGVhciB0aGlzIGZ1bmN0aW9uIGlzIHRoZSBjZW50cmFsIHBvaW50IGZvciBwYXJzaW5nIHRoZSByZXNwb25zZSBidWZmZXIgY29taW5nIGRpcmVjdGx5IGZyb20gdGhlIGZpcm13YXJlLiBBbmQgdGhlIGZpcm13YXJlLCBvZiBjb3Vyc2UsIGNhbiBiZSBmZWQgZGF0YSB0aHJvdWdoIGEgVVNCIGNvbm5lY3Rpb24sIHdoaWNoIG1ha2VzIHRoaXMgYSBwcmltZSB0YXJnZXQgZm9yIGZ1enppbmcuIEhtbSwgdGhpcyBpcyB3aGVyZSB0aGluZ3MgZ2V0IGludGVyZXN0aW5nLiBOb3csIEkgc2VlIHRoYXQgYG13aWZpZXhfdXBkYXRlX2N1cnJfYnNzX3BhcmFtc2AgZ2V0cyBjYWxsZWQgZnJvbSB3aXRoaW4gYG13aWZpZXhfcGFyc2Vfc2luZ2xlX3Jlc3BvbnNlX2J1ZmAuIFRoYXTigJlzIHdvcnRoIGludmVzdGlnYXRpbmcgZnVydGhlci4gSSBzaG91bGQgcHJvYmFibHkgZGl2ZSBpbnRvIGBtd2lmaWV4X3BhcnNlX3NpbmdsZV9yZXNwb25zZV9idWZgIGl0c2VsZiBhbmQgc2VlIHdoYXQncyByZWFsbHkgZ29pbmcgb24gaW4gdGhlcmUuIEl0J3MgYSBrZXkgZnVuY3Rpb24gdG8gdW5kZXJzdGFuZCB0aGUgc3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MDMwLCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTQ6NTg6MDkuNTg0NDIyNDkxWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNjE5Mzc4NTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXdpZmlleF9wYXJzZV9zaW5nbGVfcmVzcG9uc2VfYnVmXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYz0xNzQ1PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jOjE3NDY6bXdpZmlleF9wYXJzZV9zaW5nbGVfcmVzcG9uc2VfYnVmKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsIHU4ICoqYnNzX2luZm8sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0xNzQ3LVxcdFxcdFxcdFxcdCAgdTMyICpieXRlc19sZWZ0LCB1NjQgZndfdHNmLCB1OCAqcmFkaW9fdHlwZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM9MjEwNT1pbnQgbXdpZmlleF9yZXRfODAyXzExX3NjYW4oc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMjIzMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jOjIyMzI6XFx0XFx0cmV0ID0gbXdpZmlleF9wYXJzZV9zaW5nbGVfcmVzcG9uc2VfYnVmKHByaXYsIFxcdTAwMjZic3NfaW5mbyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTIyMzMtXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx1MDAyNmJ5dGVzX2xlZnQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jPTI2MDY9aW50IG13aWZpZXhfaGFuZGxlX2V2ZW50X2V4dF9zY2FuX3JlcG9ydChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0yNzIyLVxcdFxcdH1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jOjI3MjM6XFx0XFx0cmV0ID0gbXdpZmlleF9wYXJzZV9zaW5nbGVfcmVzcG9uc2VfYnVmKHByaXYsIFxcdTAwMjZic3NfaW5mbyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTI3MjQtXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx1MDAyNmJ5dGVzX2xlZnQsIGZ3X3RzZixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTQ6NTg6MDkuOTQ2MzY2MjI0WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0MjkxNTY1MDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBXaS1GaSBEcml2ZXIgVnVsbmVyYWJpbGl0eSoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiBsb29raW5nIGF0IHRoaXMgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHksIGFuZCBpdCBzZWVtcyBsaWtlIHdlIGhhdmUgYSBwcmV0dHkgY2xlYXIgcGF0aCBoZXJlLiBJIHNlZSB0aGF0IHRoZSBgbXdpZmlleF9yZXRfODAyXzExX3NjYW5gIGFuZCBgbXdpZmlleF9oYW5kbGVfZXZlbnRfZXh0X3NjYW5fcmVwb3J0YCBmdW5jdGlvbnMgYXJlIGNhbGxpbmcgYG13aWZpZXhfcGFyc2Vfc2luZ2xlX3Jlc3BvbnNlX2J1ZmAsIHdoaWNoIGlzIHdoZXJlIHdlJ3JlIGRpZ2dpbmcgaW50byB0aGUgc2NhbiByZXN1bHQgcHJvY2Vzc2luZyBmcm9tIHRoZSBmaXJtd2FyZS4gRXNzZW50aWFsbHksIHRoZSBmaXJtd2FyZSBzZW5kcyB0aGUgc2NhbiBkYXRhLCB0aGUgZHJpdmVyIHBhcnNlcyBpdCwgY2hlY2tzIGZvciBuZXR3b3JrIGNvbXBhdGliaWxpdHksIGFuZCBhIGtleSBwYXJ0IG9mIHRoYXQgcGFyc2luZyBpbnZvbHZlcyBleHRyYWN0aW5nIGFuZCBoYW5kbGluZyB0aGUgSW5mb3JtYXRpb24gRWxlbWVudHMgKElFcykuXG5cblRoZSBjb3JlIG9mIHRoZSBpc3N1ZSBsb29rcyB0byBiZSBhbiBvdXQtb2YtYm91bmRzIHJlYWQgd2l0aGluIHRoZSBgbXdpZmlleF9zZWFyY2hfb3VpX2luX2llYCBmdW5jdGlvbiwgYW5kIGl0J3MgaGFwcGVuaW5nIHdoZW4gZGVhbGluZyB3aXRoIHRoZSBSU04vV1BBIElFcy4gVGhhdCdzIGEgY2xhc3NpYyBhcmVhIGZvciB0aGVzZSB0eXBlcyBvZiBidWdzLCBhbmQsIGNvbnNpZGVyaW5nIHRoZSBmbG93LCBpdCBzZWVtcyAqdmVyeSogcmVhY2hhYmxlIGFuZCByaXBlIGZvciBmdXp6aW5nLiBJIGNhbiBhYnNvbHV0ZWx5IHNlZSBob3cgd2UgY291bGQgdHJpZ2dlciB0aGlzIHdpdGggc3BlY2lmaWNhbGx5IGNyYWZ0ZWQgc2NhbiByZXNwb25zZXMuXG5cblRoZSBkcml2ZXIgaXRzZWxmIGlzIGBNV0lGSUVYYCwgYW5kLCB0byBmdXp6IHRoaXMgZWZmZWN0aXZlbHksIGl0IGxvb2tzIGxpa2Ugd2UnbGwgbmVlZCB0byB1c2UgdGhlIGBNV0lGSUVYX1VTQmAgY29uZmlndXJhdGlvbi4gVGhhdCdzIG15IGltbWVkaWF0ZSBmb2N1cy4gSSdtIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgaWYgYE1XSUZJRVhfVVNCYCBoYXMgYW55IGRlcGVuZGVuY2llcyB0aGF0IHdlIG5lZWQgdG8gYmUgYXdhcmUgb2Ygb3Igc2F0aXNmeSBmaXJzdCwgYnV0IHRoaXMgbG9va3MgbGlrZSBhIGdvb2QgbGVhZC5cblxuXG4iLCJJbnB1dFRva2VucyI6Nzc3NywiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNDo1ODoxNS4zNzU1MjY1OVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTA0MjAzNTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1XSUZJRVhfVVNCXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnPTI1PWNvbmZpZyBNV0lGSUVYX1BDSUVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTM2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjM3OmNvbmZpZyBNV0lGSUVYX1VTQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTM4LVxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBVU0I4NzY2Lzg3OTcvODk5N1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTQ6NTg6MTUuNDI1OTUzNDA1WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0MjYxODQ0MDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBgTVdJRklFWF9VU0JgIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBNV0lGSUVYX1VTQmAuIExldCdzIGdldCByaWdodCB0byBpdCDigJMgd2hhdCdzIHRoaXMgZHJpdmVyIGFjdHVhbGx5ICpkZXBlbmRlbnQqIG9uPyBNeSBpbml0aWFsIGd1dCBjaGVjayBpcyB0byBmaWd1cmUgb3V0IHRoZSBhcmNoaXRlY3R1cmFsIGxheWVycyBpbnZvbHZlZC4gVGhpcyBsaWtlbHkgaW52b2x2ZXMgdW5kZXJzdGFuZGluZyB0aGUgVVNCIHN1YnN5c3RlbSBob29rcywgYW5kIHRoZSBwbGF0Zm9ybS1zcGVjaWZpYyBkZXZpY2UgdHJlZSBvciBjb25maWd1cmF0aW9uIHRoYXQgaWRlbnRpZmllcyB0aGUgc3BlY2lmaWMgV2ktRmkgYWRhcHRlci4gSSdtIGFzc3VtaW5nIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIGtlcm5lbCBtb2R1bGUgaGVyZSwgc28gSSBuZWVkIHRvIG1lbnRhbGx5IHRyYWNlIHRoZSBjYWxscy5cblxuRmlyc3QsIEkgbmVlZCB0byBrbm93IHRoZSBzcGVjaWZpYyBwbGF0Zm9ybS4gQXJlIHdlIG9uIGEgQnJvYWRjb20tYmFzZWQgc3lzdGVtLCBvciBzb21ldGhpbmcgZWxzZT8gVW5kZXJzdGFuZGluZyB0aGUgaGFyZHdhcmUgY29udGV4dCB3aWxsIGd1aWRlIHRoZSBuZXh0IHN0ZXAuIEFyZSB0aGVyZSBhbnkga25vd24gaXNzdWVzIHdpdGggdGhlIFVTQiBzdWJzeXN0ZW0gb24gdGhpcyBwbGF0Zm9ybSB0aGF0IGNvdWxkIGJlIHRyaWdnZXJpbmcgc29tZSBzb3J0IG9mIHVuZXhwZWN0ZWQgYmVoYXZpb3I/XG5cbk5leHQsIEknbGwgcHJvYmFibHkgd2FudCB0byBpZGVudGlmeSBpbmNsdWRlIGZpbGVzLCBzeW1ib2xzLCBhbmQgZnVuY3Rpb25zIHRoYXQgYXJlIGltcG9ydGVkIGZyb20gb3RoZXIgbW9kdWxlcy4gYG9iamR1bXBgIG9yIGBubWAgYXJlIG15IGZyaWVuZHMgaGVyZSB0byBxdWlja2x5IHNjYW4gdGhlIG1vZHVsZeKAmXMgc3ltYm9sIHRhYmxlLiBJJ20gaW50ZXJlc3RlZCBpbiB0aGUgbG93ZXItbGV2ZWwgVVNCIGRyaXZlciBpbnRlcmZhY2VzIChgdXNiX3JlZ2lzdGVyX2RyaXZlcmAsIGB1c2Jfc3VibWl0X3VyYmAsIGV0Yy4pIGFuZCBwb3NzaWJseSBhbnkgaW50ZXJhY3Rpb24gd2l0aCBmaXJtd2FyZSBsb2FkaW5nIG1lY2hhbmlzbXMgKGlmIHRoZSBhZGFwdGVyIG5lZWRzIGZpcm13YXJlKS4gV2hhdCBhYm91dCByZXNvdXJjZSBhbGxvY2F0aW9uPyBBcmUgdGhlcmUgYW55IHNoYXJlZCBtdXRleGVzIG9yIHNlbWFwaG9yZXMgdGhhdCBjb3VsZCBpbmRpY2F0ZSBwb3RlbnRpYWwgbG9ja2luZyBjb25mbGljdHMgd2l0aCBvdGhlciBtb2R1bGVzP1xuXG5BbHNvLCBkb24ndCBmb3JnZXQgdGhlIG9idmlvdXM6IHdoYXTigJlzIHRoZSBkZXZpY2UgSUQgZmlsdGVyaW5nPyBJIG5lZWQgdG8gY2hlY2sgdGhlIG1vZHVsZSBwYXJhbWV0ZXJzLCB0aGUgZGV2aWNlIElEcyB0aGUgZHJpdmVyIGNsYWltcyB0byBzdXBwb3J0LCBhbmQgd2hldGhlciB0aGVyZSBhcmUgYW55IGRlcGVuZGVuY2llcyBvbiB0aG9zZSBzcGVjaWZpYyBQQ0kvVVNCIElEcy5cblxuSSdsbCBiZSBzcGVjaWZpY2FsbHkgbG9va2luZyBmb3IgYW55IGRlcGVuZGVuY2llcyB0aGF0IGNvdWxkIGJsb2NrIHRoZSBtb2R1bGUgbG9hZCwgb3IgY3JlYXRlIGNvbmZsaWN0cyBsYXRlci4gRG9lcyBpdCByZWx5IG9uIGEgc3BlY2lmaWMgdmVyc2lvbiBvZiB0aGUgVVNCIHN0YWNrIG9yIG90aGVyIGtlcm5lbCBjb21wb25lbnRzPyBBbnkgdGhpcmQtcGFydHkgbGlicmFyaWVzIHRoaXMgbW9kdWxlIG1pZ2h0IGRlcGVuZCBvbj8gRmluYWxseSwgbGV0J3MgbG9vayBhdCB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UsIGFueSBjdXN0b20gSVJRIGhhbmRsaW5nIHJvdXRpbmVzIHRoYXQgYXJlIHNldCB1cC4gRnJvbSB0aGVyZSwgSSBjYW4gZGV0ZXJtaW5lIHRoZSBkZXBlbmRlbmNpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg0NTAsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNDo1ODoxOS44NTIxNDAxOTVaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTk0OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMzAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMzA6XFx0XFx0aGVscFxcbiAgMzE6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb24gTWFydmVsbFxcbiAgMzI6XFx0XFx0ICA4NzY2Lzg4OTcvODk5NyBjaGlwc2V0cyB3aXRoIFBDSWUgaW50ZXJmYWNlLlxcbiAgMzM6XFx0XFxuICAzNDpcXHRcXHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXFxuICAzNTpcXHRcXHQgIG13aWZpZXhfcGNpZS5cXG4gIDM2OlxcdFxcbiAgMzc6XFx0Y29uZmlnIE1XSUZJRVhfVVNCXFxuICAzODpcXHRcXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBXaUZpLUV4IERyaXZlciBmb3IgVVNCODc2Ni84Nzk3Lzg5OTdcXFwiXFxuICAzOTpcXHRcXHRkZXBlbmRzIG9uIE1XSUZJRVggXFx1MDAyNlxcdTAwMjYgVVNCXFxuICA0MDpcXHRcXHRzZWxlY3QgRldfTE9BREVSXFxuICA0MTpcXHRcXHRoZWxwXFxuICA0MjpcXHRcXHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciB3aXJlbGVzcyBhZGFwdGVycyBiYXNlZCBvbiBNYXJ2ZWxsXFxuICA0MzpcXHRcXHQgIDg3OTcvODk5NyBjaGlwc2V0IHdpdGggVVNCIGludGVyZmFjZS5cXG4gIDQ0OlxcdFxcbiAgNDU6XFx0XFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGl0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlIGNhbGxlZFxcbiAgNDY6XFx0XFx0ICBtd2lmaWV4X3VzYi5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTQ6NTg6MTkuODUyMjAxODE1WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5MTEzNjIwOTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyBJIHNlZSBpdDpcblxuKipEZXBlbmRlbmN5IERlZXAgRGl2ZSoqXG5cbk9rYXksIHNvIHRoZSByZWFsIGNvcmUgb2YgdGhpcyBpc3N1ZSBoaW5nZXMgb24gdHdvIHNwZWNpZmljIGNvbXBvbmVudHM6IGBNV0lGSUVYYCBhbmQgYFVTQmAuIEV2ZXJ5dGhpbmcgZG93bnN0cmVhbSBpcyBjb250aW5nZW50IG9uIHVuZGVyc3RhbmRpbmcgdGhlaXIgcm9sZXMgYW5kIGhvdyB0aGV5IGludGVyYWN0LiBUaGUgc21hcnQgbW92ZSBoZXJlIGlzIHRvIHN0YXJ0IHdpdGggYSBkZXBlbmRlbmN5IGFuYWx5c2lzIG9mIGBNV0lGSUVYYC4gSSBuZWVkIHRvIHBlZWwgYmFjayB0aGUgbGF5ZXJzIGFuZCB1bmRlcnN0YW5kIGV2ZXJ5dGhpbmcgdGhhdCBgTVdJRklFWGAgcmVsaWVzIG9uLiBUaGF0IHdpbGwgZ2l2ZSBtZSBhIGNsZWFyZXIgcGljdHVyZSBvZiB0aGUgbGFuZHNjYXBlIGFuZCB3aGVyZSBhbnkgcG90ZW50aWFsIGJvdHRsZW5lY2tzIG9yIGNvbmZsaWN0cyBtaWdodCByZXNpZGUuIFdlIGNhbiB0aGVuIGFkZHJlc3MgYFVTQmAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkyMDAsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE0OjU4OjIyLjc2MzU2Njc0M1oiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MDUyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIE1XSUZJRVhcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIFdpRmktRXggRHJpdmVyXFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBDRkc4MDIxMVxcbiAgIDU6XFx0XFx0aGVscFxcbiAgIDY6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb24gTWFydmVsbFxcbiAgIDc6XFx0XFx0ICA4MDIuMTFuL2FjIGNoaXBzZXRzLlxcbiAgIDg6XFx0XFxuICAgOTpcXHRcXHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXFxuICAxMDpcXHRcXHQgIG13aWZpZXguXFxuICAxMTpcXHRcXG4gIDEyOlxcdGNvbmZpZyBNV0lGSUVYX1NESU9cXG4gIDEzOlxcdFxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBTRDg3ODYvU0Q4Nzg3L1NEODc5Ny9TRDg4ODcvU0Q4ODk3L1NEODk3Ny9TRDg5NzgvU0Q4OTg3L1NEODk5N1xcXCJcXG4gIDE0OlxcdFxcdGRlcGVuZHMgb24gTVdJRklFWCBcXHUwMDI2XFx1MDAyNiBNTUNcXG4gIDE1OlxcdFxcdHNlbGVjdCBGV19MT0FERVJcXG4gIDE2OlxcdFxcdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxcbiAgMTc6XFx0XFx0aGVscFxcbiAgMTg6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb24gTWFydmVsbFxcbiAgMTk6XFx0XFx0ICA4Nzg2Lzg3ODcvODc5Ny84ODg3Lzg4OTcvODk3Ny84OTc4Lzg5ODcvODk5NyBjaGlwc2V0cyB3aXRoXFxuICAyMDpcXHRcXHQgIFNESU8gaW50ZXJmYWNlLiBTRDg5NzggaXMgYWxzbyBrbm93biBhcyBOWFAgSVc0MTYuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE0OjU4OjIyLjc2MzYzOTI3M1oiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNDcyMzY0ODI5NjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRGVwZW5kZW5jeSBBbmFseXNpcyBhbmQgRnVuY3Rpb24gSWRlbnRpZmljYXRpb24qKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZyb20gYSBkZXBlbmRlbmN5IHN0YW5kcG9pbnQsIGl0IGxvb2tzIGxpa2UgYE1XSUZJRVhgIGlzIGJ1aWx0IHVwb24gYENGRzgwMjExYCwgYW5kIGBNV0lGSUVYX1VTQmAgZnVydGhlciBkZXBlbmRzIG9uIGJvdGggYE1XSUZJRVhgIGFuZCB0aGUgYFVTQmAgc3Vic3lzdGVtLiBTbywgYXQgYSBtaW5pbXVtLCB3ZSdyZSB0YWxraW5nIGFib3V0IGBNV0lGSUVYYCwgYE1XSUZJRVhfVVNCYCwgYENGRzgwMjExYCwgYW5kIGBVU0JgLiBIb2xkIG9uLi4uIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgc29tZXRoaW5nLiBSaWdodCwgYE1BQzgwMjExYCByZWxpZXMgb24gYENGRzgwMjExYCwgbm90IHRoZSBvdGhlciB3YXkgYXJvdW5kLiBUaGlzIGNvbmZpcm1zIHRoYXQgYENGRzgwMjExYCBpcyBvdXIgZm91bmRhdGlvbmFsIGVsZW1lbnQgaGVyZS4gTm93LCBsZXQncyBtYWtlIHN1cmUgd2UgaGF2ZW4ndCBtaXNzZWQgYW55IG90aGVyIGtleSBkZXBlbmRlbmNpZXMuIEFoLCBgQ0ZHODAyMTFgIG9wdGlvbmFsbHkgZGVwZW5kcyBvbiBgUkZLSUxMYCBhbmQgYWxzbyBgV0xBTmAgd2hpY2ggaXMgbGlrZWx5IGluaGVyZW50LiBCdXQgZm9yIHRoaXMgZGlzY3Vzc2lvbiwgdGhlIHByaW1hcnkgb25lcyB3ZSBhcmUgZGlzY3Vzc2luZyBhcmUgYE1XSUZJRVhgLCBgTVdJRklFWF9VU0JgLCBgQ0ZHODAyMTFgLCBhbmQgYFVTQmAuXG5cbk5vdywgbGV0J3Mgc3dpdGNoIGdlYXJzIGFuZCBwaW5wb2ludCB0aGUgY3JpdGljYWwgZnVuY3Rpb25zIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcuIEkgc2VlIHRoZSBwYXRjaCBtb2RpZmllcyBgbXdpZmlleF9zZWFyY2hfb3VpX2luX2llYC4gVGhhdCdzIGEgc3RhdGljIGZ1bmN0aW9uLiBJdCdzIGNhbGxlZCBieSBgbXdpZmlleF9pc19yc25fb3VpX3ByZXNlbnRgIGFuZCBgbXdpZmlleF9pc193cGFfb3VpX3ByZXNlbnRgLiBJJ2xsIGNvbmZpcm0uIFllcywgdGhleSdyZSBib3RoIGFsc28gc3RhdGljLiBPaywgbmV4dCBmdW5jdGlvbiBpcyBgbXdpZmlleF9pc19uZXR3b3JrX2NvbXBhdGlibGVgLCBzdGF0aWMuIFRoZW4gYG13aWZpZXhfY2hlY2tfbmV0d29ya19jb21wYXRpYmlsaXR5YCBpcyBub24tc3RhdGljLiBgbXdpZmlleF9wYXJzZV9zaW5nbGVfcmVzcG9uc2VfYnVmYCBpcyBzdGF0aWMuIE5leHQsIGBtd2lmaWV4X3JldF84MDJfMTFfc2NhbmAgaXMgbm9uLXN0YXRpYy4gRmluYWxseSwgYG13aWZpZXhfaGFuZGxlX2V2ZW50X2V4dF9zY2FuX3JlcG9ydGAgaXMgbm9uLXN0YXRpYyBhbmQgYG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWVgIGlzIG5vbi1zdGF0aWMuIEdvdCBpdC4gVGhhdCBzaG91bGQgZG8gaXQhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk3NjQsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NjAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNTowMDo1MC4wMDAxMjUzMjdaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzMDI2ODc5NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtd2lmaWV4X2NoZWNrX25ldHdvcmtfY29tcGF0aWJpbGl0eVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg9MTU0MT1pbnQgbXdpZmlleF91cGRhdGVfYnNzX2Rlc2Nfd2l0aF9pZShzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTU0Mi1cXHRcXHRcXHRcXHQgICAgc3RydWN0IG13aWZpZXhfYnNzZGVzY3JpcHRvciAqYnNzX2VudHJ5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oOjE1NDM6aW50IG13aWZpZXhfY2hlY2tfbmV0d29ya19jb21wYXRpYmlsaXR5KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xNTQ0LVxcdFxcdFxcdFxcdFxcdHN0cnVjdCBtd2lmaWV4X2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM9MTU5ND1pbnQgbXdpZmlleF9jbWRfODAyXzExX3NjYW4oc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKmNtZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMTYxOC0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jOjE2MTk6aW50IG13aWZpZXhfY2hlY2tfbmV0d29ya19jb21wYXRpYmlsaXR5KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0xNjIwLVxcdFxcdFxcdFxcdFxcdHN0cnVjdCBtd2lmaWV4X2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYz0xNzA2PXN0YXRpYyBpbnQgbXdpZmlleF91cGRhdGVfY3Vycl9ic3NfcGFyYW1zKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTE3MjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYzoxNzIxOlxcdHJldCA9IG13aWZpZXhfY2hlY2tfbmV0d29ya19jb21wYXRpYmlsaXR5KHByaXYsIGJzc19kZXNjKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTE3MjItXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYz0zMzI9aW50IG13aWZpZXhfYnNzX3N0YXJ0KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsIHN0cnVjdCBjZmc4MDIxMV9ic3MgKmJzcyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYy0zNzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jOjM3NTpcXHRcXHRyZXQgPSBtd2lmaWV4X2NoZWNrX25ldHdvcmtfY29tcGF0aWJpbGl0eShwcml2LCBic3NfZGVzYyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jLTM3Ni1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jLTQyMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmM6NDIzOlxcdFxcdHJldCA9IG13aWZpZXhfY2hlY2tfbmV0d29ya19jb21wYXRpYmlsaXR5KHByaXYsIGJzc19kZXNjKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmMtNDI0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNTowMDo1MC40MzAzOTg4NjJaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDYwNTg2NDgzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkluaXRpYWwgQXNzZXNzbWVudCBvZiBGdW5jdGlvbiBDYWxscyoqXG5cbkFscmlnaHQsIGxldCdzIHNlZS4uLiBgbXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHlgIGZlZWxzIGxpa2UgYSBnb29kLCBzb2xpZCBhbmNob3IgcG9pbnQgdG8gc3RhcnQgd2l0aC4gSXQgbGlrZWx5IGhhbmRsZXMgc29tZSBmb3VuZGF0aW9uYWwgdmFsaWRhdGlvbiBvZiBuZXR3b3JrIHBhcmFtZXRlcnMuIEkgY2FuIHNlZSBob3cgZm9jdXNpbmcgb24gaXRzIGludGVybmFsIHdvcmtpbmdzLCB0aGUgY29uZGl0aW9uYWwgY2hlY2tzIGl0IHBlcmZvcm1zLCBjb3VsZCBiZSBmcnVpdGZ1bCBpbiBkaWFnbm9zaW5nIGlzc3Vlcy5cblxuTm93LCB3aGF0IGFib3V0IGBtd2lmaWV4X3JldF84MDJfMTFfc2NhbmA/IFRoYXQgb25lJ3MgZ290IG1lIGludHJpZ3VlZCB0b28uIEl0J3Mgb2J2aW91c2x5IHRpZWQgdG8gdGhlIHNjYW5uaW5nIHByb2Nlc3MgaXRzZWxmLiBUaGlzIGNvdWxkIGJlIHdoZXJlIGNvbXBhdGliaWxpdHkgcHJvYmxlbXMgYWN0dWFsbHkgbWFuaWZlc3QsIG9yIHdoZXJlIHRoZSB2YWxpZGF0aW9uIGZhaWx1cmVzIGdldCBzdXJmYWNlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgaXQgbGVhbnMgb24gdGhlIGZ1bmN0aW9uIGNhbGwgbWVudGlvbmVkIGVhcmxpZXIuIERvZXMgaXQgKnVzZSogdGhlIG90aGVyIGZ1bmN0aW9uLCBvciBpcyBpdCBtb3JlIGxpa2UgYSBjb21wbGVtZW50YXJ5IGZ1bmN0aW9uP1xuXG5cbiIsIklucHV0VG9rZW5zIjoxMTQ0OCwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE1OjAwOjU1LjAzNjI2NjA1NFoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU1OTI3NTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXdpZmlleF9yZXRfODAyXzExX3NjYW5cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oPTExNTc9dm9pZCBtd2lmaWV4X3F1ZXVlX3NjYW5fY21kKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xMTU4LVxcdFxcdFxcdCAgICBzdHJ1Y3QgY21kX2N0cmxfbm9kZSAqY21kX25vZGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg6MTE1OTppbnQgbXdpZmlleF9yZXRfODAyXzExX3NjYW4oc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTExNjAtXFx0XFx0XFx0ICAgIHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpyZXNwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg9MTIzOT1pbnQgbXdpZmlleF9jbWRfODAyXzExX3NjYW5fZXh0KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTEyNDEtXFx0XFx0XFx0XFx0dm9pZCAqZGF0YV9idWYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg6MTI0MjppbnQgbXdpZmlleF9yZXRfODAyXzExX3NjYW5fZXh0KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xMjQzLVxcdFxcdFxcdFxcdHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpyZXNwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM9MTEzMD1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM6MTEzMTptd2lmaWV4X3JldF84MDJfMTFfc2Nhbl9nZXRfdGx2X3B0cnMoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTExMzItXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19kYXRhICp0bHYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jPTIwNTg9dm9pZCBtd2lmaWV4X2NhbmNlbF9zY2FuKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTIxMDQtICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYzoyMTA1OmludCBtd2lmaWV4X3JldF84MDJfMTFfc2NhbihzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMjEwNi1cXHRcXHRcXHQgICAgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3ApXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTIxNzQtXFx0ICAgVExWcyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM6MjE3NTpcXHRtd2lmaWV4X3JldF84MDJfMTFfc2Nhbl9nZXRfdGx2X3B0cnMoYWRhcHRlciwgdGx2X2RhdGEsIHRsdl9idWZfc2l6ZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTIxNzYtXFx0XFx0XFx0XFx0XFx0ICAgICBUTFZfVFlQRV9UU0ZUSU1FU1RBTVAsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTIxODEtXFx0ICAgVExWcyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM6MjE4MjpcXHRtd2lmaWV4X3JldF84MDJfMTFfc2Nhbl9nZXRfdGx2X3B0cnMoYWRhcHRlciwgdGx2X2RhdGEsIHRsdl9idWZfc2l6ZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTIxODMtXFx0XFx0XFx0XFx0XFx0ICAgICBUTFZfVFlQRV9DSEFOTkVMQkFORExJU1QsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jPTI0OTI9bXdpZmlleF91cGRhdGVfY2hhbl9zdGF0aXN0aWNzKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTI1MzQtLyogVGhpcyBmdW5jdGlvbiBoYW5kbGVzIHRoZSBjb21tYW5kIHJlc3BvbnNlIG9mIGV4dGVuZGVkIHNjYW4gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jOjI1MzU6aW50IG13aWZpZXhfcmV0XzgwMl8xMV9zY2FuX2V4dChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMjUzNi1cXHRcXHRcXHRcXHRzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqcmVzcClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jPTEyMTI9aW50IG13aWZpZXhfcHJvY2Vzc19zdGFfY21kcmVzcChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCB1MTYgY21kcmVzcF9ubyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jLTEyNDMtXFx0Y2FzZSBIb3N0Q21kX0NNRF84MDJfMTFfU0NBTjpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZHJlc3AuYzoxMjQ0OlxcdFxcdHJldCA9IG13aWZpZXhfcmV0XzgwMl8xMV9zY2FuKHByaXYsIHJlc3ApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jLTEyNDUtXFx0XFx0YWRhcHRlci1cXHUwMDNlY3Vycl9jbWQtXFx1MDAzZXdhaXRfcV9lbmFibGVkID0gZmFsc2U7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZHJlc3AuYy0xMjQ3LVxcdGNhc2UgSG9zdENtZF9DTURfODAyXzExX1NDQU5fRVhUOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jOjEyNDg6XFx0XFx0cmV0ID0gbXdpZmlleF9yZXRfODAyXzExX3NjYW5fZXh0KHByaXYsIHJlc3ApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jLTEyNDktXFx0XFx0YWRhcHRlci1cXHUwMDNlY3Vycl9jbWQtXFx1MDAzZXdhaXRfcV9lbmFibGVkID0gZmFsc2U7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZHJlc3AuYy0xMjUxLVxcdGNhc2UgSG9zdENtZF9DTURfODAyXzExX0JHX1NDQU5fUVVFUlk6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWRyZXNwLmM6MTI1MjpcXHRcXHRyZXQgPSBtd2lmaWV4X3JldF84MDJfMTFfc2Nhbihwcml2LCByZXNwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZHJlc3AuYy0xMjUzLVxcdFxcdGNmZzgwMjExX3NjaGVkX3NjYW5fcmVzdWx0cyhwcml2LVxcdTAwM2V3ZGV2LndpcGh5LCAwKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTU6MDA6NTUuMDgxODY2Mzc5WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYxNTg3NTY3OTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyBJIHNlZSBpdDpcblxuKipGb2N1c2luZyBpbiBvbiB0aGUgU2NhbiBQcm9jZXNzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlIGBtd2lmaWV4YCBkcml2ZXIgY29kZSwgYW5kIEkndmUgZ290IGEgc29saWQgaGFuZGxlIG9uIGhvdyB0aGUgc2NhbiBwcm9jZXNzIGlzIGluaXRpYXRlZC4gVGhlIGtleSBoZXJlIGlzIHRoZSBsaW5rIGJldHdlZW4gYG13aWZpZXhfcmV0XzgwMl8xMV9zY2FuYCBhbmQgYG13aWZpZXhfcHJvY2Vzc19zdGFfY21kcmVzcGAuIEl0J3MgcHJldHR5IGNsZWFyIHRoYXQgYG13aWZpZXhfcmV0XzgwMl8xMV9zY2FuYCBnZXRzIGNhbGxlZCBkaXJlY3RseSB3aXRoaW4gdGhlIGZpcm13YXJlJ3MgY29tbWFuZCByZXNwb25zZSBoYW5kbGluZy4gVGhhdCBtYWtlcyBpdCBhIHJlYWxseSB2YWx1YWJsZSBwb2ludCBvZiBmb2N1cywgZG9lc24ndCBpdD8gSXQncyB0aGUgY2VudHJhbCBzeW1ib2wgZm9yIHRoZSA4MDIuMTEgc2NhbiBvcGVyYXRpb24ncyByZXR1cm4gcGF0aC5cblxuQnV0IHdhaXQsIHdoYXQgYWJvdXQgYG13aWZpZXhfaGFuZGxlX2V2ZW50X2V4dF9zY2FuX3JlcG9ydGA/IEkgbmVlZCB0byB0aGluayB0aHJvdWdoIGhvdyB0aGF0IGZpdHMgaW50byB0aGUgb3ZlcmFsbCBmbG93LiBJdCBpcyBlc3NlbnRpYWwgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGRyaXZlciBoYW5kbGVzIGV4dGVuZGVkIHNjYW4gcmVwb3J0cyBpbiBvcmRlciB0byBpZGVudGlmeSBwb3RlbnRpYWwgc291cmNlcyBvZiBpc3N1ZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzMjE5LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTU6MDE6MDEuMjQwNjI2OTc5WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTA2NzY5NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtd2lmaWV4X2hhbmRsZV9ldmVudF9leHRfc2Nhbl9yZXBvcnRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oPTEyNDI9aW50IG13aWZpZXhfcmV0XzgwMl8xMV9zY2FuX2V4dChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTI0My1cXHRcXHRcXHRcXHRzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqcmVzcCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaDoxMjQ0OmludCBtd2lmaWV4X2hhbmRsZV9ldmVudF9leHRfc2Nhbl9yZXBvcnQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTEyNDUtXFx0XFx0XFx0XFx0XFx0IHZvaWQgKmJ1Zik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jPTI1MzU9aW50IG13aWZpZXhfcmV0XzgwMl8xMV9zY2FuX2V4dChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0yNjA1LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM6MjYwNjppbnQgbXdpZmlleF9oYW5kbGVfZXZlbnRfZXh0X3NjYW5fcmVwb3J0KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0yNjA3LVxcdFxcdFxcdFxcdFxcdCB2b2lkICpidWYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2V2ZW50LmM9Njk2PWludCBtd2lmaWV4X3Byb2Nlc3Nfc3RhX2V2ZW50KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2V2ZW50LmMtODczLVxcdFxcdFxcdFxcdFxcdCAgIW5ldGlmX3J1bm5pbmcocHJpdi1cXHUwMDNlbmV0ZGV2KSkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9ldmVudC5jOjg3NDpcXHRcXHRcXHRyZXQgPSBtd2lmaWV4X2hhbmRsZV9ldmVudF9leHRfc2Nhbl9yZXBvcnQocHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2V2ZW50LmMtODc1LVxcdFxcdFxcdFxcdFxcdFxcdGFkYXB0ZXItXFx1MDAzZWV2ZW50X3NrYi1cXHUwMDNlZGF0YSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdWFwX2V2ZW50LmM9OTQ9aW50IG13aWZpZXhfcHJvY2Vzc191YXBfZXZlbnQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuYy0yNTMtXFx0XFx0aWYgKGFkYXB0ZXItXFx1MDAzZWV4dF9zY2FuKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuYzoyNTQ6XFx0XFx0XFx0cmV0dXJuIG13aWZpZXhfaGFuZGxlX2V2ZW50X2V4dF9zY2FuX3JlcG9ydChwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuYy0yNTUtXFx0XFx0XFx0XFx0XFx0XFx0YWRhcHRlci1cXHUwMDNlZXZlbnRfc2tiLVxcdTAwM2VkYXRhKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTU6MDE6MDEuMjg1Njk5MDM1WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwMDgyNDI0NTUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEZ1enppbmcgU3RyYXRlZ3kgZm9yIFRoaXMgRHJpdmVyKipcblxuT2theSwgc28gSSd2ZSBiZWVuIGxvb2tpbmcgYXQgdGhlIGV2ZW50IGhhbmRsaW5nIGluIHRoaXMgYG13aWZpZXhgIGRyaXZlciwgc3BlY2lmaWNhbGx5IGhvdyBpdCBwcm9jZXNzZXMgZXh0ZW5kZWQgc2NhbiByZXBvcnRzLiBgbXdpZmlleF9oYW5kbGVfZXZlbnRfZXh0X3NjYW5fcmVwb3J0YCBpcyB0cmlnZ2VyZWQgYnkgYG13aWZpZXhfcHJvY2Vzc19zdGFfZXZlbnRgIGFuZCBgbXdpZmlleF9wcm9jZXNzX3VhcF9ldmVudGAuIFRoZXNlIGFyZSBjbGVhcmx5IGV2ZW50IHByb2Nlc3NpbmcgZW50cnkgcG9pbnRzIHdpdGhpbiB0aGUgZmlybXdhcmUuIFRoYXQgc3VnZ2VzdHMgYSBnb29kIHN0cmF0ZWd5IGZvciBmdXp6aW5nOiBjb25jZW50cmF0ZSBvbiBhcmVhcyBhcm91bmQgdGhvc2UgZnVuY3Rpb25zLiBJbiBwYXJ0aWN1bGFyLCBib3RoIGBtd2lmaWV4X3JldF84MDJfMTFfc2NhbmAgYW5kIGBtd2lmaWV4X2hhbmRsZV9ldmVudF9leHRfc2Nhbl9yZXBvcnRgIGp1bXAgb3V0IGFzIGV4Y2VsbGVudCBmb2N1cyBwb2ludHMsIGFuZCBgbXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHlgIGxvb2tzIGxpa2UgYW5vdGhlciBwb3RlbnRpYWxseSBmcnVpdGZ1bCBhcmVhLlxuXG5TbyBoZXJlJ3Mgd2hhdCBJJ3ZlIGdvdDpcblxuKiAgICoqV29ydGhGdXp6aW5nOioqIFllcywgYWJzb2x1dGVseS5cbiogICAqKkZvY3VzU3ltYm9sczoqKiBJJ20gZ29pbmcgdG8gdGFyZ2V0IHRoZXNlIHByaW1hcmlseTpcbiAgICAqICAgYG13aWZpZXhfcmV0XzgwMl8xMV9zY2FuYFxuICAgICogICBgbXdpZmlleF9oYW5kbGVfZXZlbnRfZXh0X3NjYW5fcmVwb3J0YFxuICAgICogICBgbXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHlgXG5cbk5vdywgbGV0J3MgdGFsayBhYm91dCBlbmFibGluZyB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zLiBJIHNlZSB0aGF0IGBNV0lGSUVYYCBhbmQgYE1XSUZJRVhfVVNCYCBhcmUgZXNzZW50aWFsLiBgTVdJRklFWF9VU0JgIGRlcGVuZHMgb24gYE1XSUZJRVhgIGFuZCBgVVNCYC4gYE1XSUZJRVhgIGl0c2VsZiBkZXBlbmRzIG9uIGBDRkc4MDIxMWAuIEJ1dCB3YWl0LCBgVVNCYCBhbmQgYENGRzgwMjExYCBhcmUgcHJldHR5IGdlbmVyaWMgYW5kIHVzdWFsbHkgZW5hYmxlZCBieSBkZWZhdWx0LiBTbywgZm9yIGZ1enppbmcsIEknbGwganVzdCBsaXN0IGBNV0lGSUVYYCBhbmQgYE1XSUZJRVhfVVNCYC4gVGhhdCBzaG91bGQgYmUgc3VmZmljaWVudCB0byBnZXQgdGhlIHJlbGV2YW50IGNvZGUgY29tcGlsZWQgaW4sIHdpdGhvdXQgd29ycnlpbmcgYWJvdXQgZXh0cmFuZW91cyBkZXBlbmRlbmNpZXMgYXQgdGhpcyBwb2ludC4gVGltZSB0byBkb3VibGUtY2hlY2sgdGhhdCB0aGVyZSBhcmVuJ3QgYW55IG90aGVyIGNydWNpYWwgZGVwZW5kZW5jaWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDIxNywiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNTowMToxMS4zNjgxMjU5NDdaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzNzg1NTc1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNV0lGSUVYXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6Mjpjb25maWcgTVdJRklFWFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgV2lGaS1FeCBEcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0xMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzoxMjpjb25maWcgTVdJRklFWF9TRElPXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMTMtXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFNEODc4Ni9TRDg3ODcvU0Q4Nzk3L1NEODg4Ny9TRDg4OTcvU0Q4OTc3L1NEODk3OC9TRDg5ODcvU0Q4OTk3XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6MjU6Y29uZmlnIE1XSUZJRVhfUENJRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTI2LVxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBQQ0lFIDg3NjYvODg5Ny84OTk3XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6Mzc6Y29uZmlnIE1XSUZJRVhfVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzgtXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFVTQjg3NjYvODc5Ny84OTk3XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNTowMToxMS40MTE5MTUzODJaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTYxMzYyMzMzNTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgdGhlIE1XSUZJRVggRHJpdmVyIFZ1bG5lcmFiaWxpdHkgYW5kIEZ1enppbmcgU3RyYXRlZ3kqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEknbSBnb2luZyB0byBiZSBsb29raW5nIGNsb3NlbHkgYXQgdGhlIGBNV0lGSUVYYCBkcml2ZXIgYW5kLCBzcGVjaWZpY2FsbHksIHRoZSBgTVdJRklFWF9VU0JgIGludGVyZmFjZS4gV2UgbmVlZCB0byBmb2N1cyBvdXIgYXR0ZW50aW9uIG9uIGBtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWVgLiBUaGUgcmF0aW9uYWxlIGhlcmUgaXMgdGhhdCB0aGlzIHBhdGNoIGFkZHJlc3NlcyBhbiBvdXQtb2YtYm91bmRzIHJlYWQgdnVsbmVyYWJpbGl0eSB3aGVuIHBhcnNpbmcgUlNOL1dQQSBJbmZvcm1hdGlvbiBFbGVtZW50cyAoSUVzKSBmcm9tIHNjYW4gcmVzdWx0cy4gVGhlIGNvcmUgb2YgdGhlIGlzc3VlIGlzIGluIGhvdyB0aGUgZHJpdmVyIHByb2Nlc3NlcyBzY2FuIHJlc3VsdHMgaXQgcmVjZWl2ZXMgZnJvbSB0aGUgZmlybXdhcmUuIFRoZSBmYWN0IHRoYXQgd2UgaGF2ZSBhIFVTQiBpbnRlcmZhY2UgcHJvdmlkZXMgYW4gYXR0YWNrIHZlY3Rvci4gV2UgY2FuIGZ1enogdGhlIGZpcm13YXJlIHJlc3BvbnNlcyB0aHJvdWdoIFVTQiBlbXVsYXRpb24sIHNvbWV0aGluZyBsaWtlIHVzaW5nIGEgZHVtbXktaGNkLiBUaGlzIGlzIGtleS4gU2luY2UgdGhpcyBmaXggaXMgbW9kaWZ5aW5nIHJlYWNoYWJsZSBjb3JlIGxvZ2ljIHdpdGhpbiB0aGUgZHJpdmVyLCBpdCdzIGRlZmluaXRlbHkgd29ydGh3aGlsZSB0byBmdXp6IGl0LlxuXG5NeSBmb2N1cyBpcyBnb2luZyB0byBiZSBvbiB0aGVzZSBzeW1ib2xzOiBgbXdpZmlleF9yZXRfODAyXzExX3NjYW5gLCBgbXdpZmlleF9oYW5kbGVfZXZlbnRfZXh0X3NjYW5fcmVwb3J0YCwgYW5kIGBtd2lmaWV4X2NoZWNrX25ldHdvcmtfY29tcGF0aWJpbGl0eWAuIFRoZXNlIGFyZSB0aGUgZW50cnkgcG9pbnRzIGZvciBwcm9jZXNzaW5nIHNjYW4gcmVzdWx0cyBhbmQgY2hlY2tpbmcgbmV0d29yayBjb21wYXRpYmlsaXR5LCBtYWtpbmcgdGhlbSBwZXJmZWN0IHRhcmdldHMgZm9yIG91ciBmdXp6aW5nIGVmZm9ydHMuXG5cbk5vdywgbGV0J3MgcXVpY2tseSByZXZpZXcgdGhlIGNhbGxlcnMgb2YgYG13aWZpZXhfc2VhcmNoX291aV9pbl9pZWAuIEZyb20gd2hhdCBJIGNhbiBzZWUsIGl0J3MgY2FsbGVkIGJ5IGBtd2lmaWV4X2lzX3Jzbl9vdWlfcHJlc2VudGAgYW5kIGBtd2lmaWV4X2lzX3dwYV9vdWlfcHJlc2VudGAuIFRoZXNlIGluIHR1cm4gYXJlIGNhbGxlZCBieSBgbXdpZmlleF9pc19uZXR3b3JrX2NvbXBhdGlibGVgLCB3aGljaCBmZWVkcyBpbnRvIGBtd2lmaWV4X2NoZWNrX25ldHdvcmtfY29tcGF0aWJpbGl0eWAuIGBtd2lmaWV4X2NoZWNrX25ldHdvcmtfY29tcGF0aWJpbGl0eWAgdGhlbiBicmFuY2hlcyB0byBib3RoIGBtd2lmaWV4X3VwZGF0ZV9jdXJyX2Jzc19wYXJhbXNgIGFuZCBgbXdpZmlleF9ic3Nfc3RhcnRgLiBgbXdpZmlleF91cGRhdGVfY3Vycl9ic3NfcGFyYW1zYCBpcyBjYWxsZWQgYnkgYG13aWZpZXhfcGFyc2Vfc2luZ2xlX3Jlc3BvbnNlX2J1ZmAuIEZpbmFsbHksIGBtd2lmaWV4X3BhcnNlX3NpbmdsZV9yZXNwb25zZV9idWZgIGlzIGNhbGxlZCBieSBgbXdpZmlleF9yZXRfODAyXzExX3NjYW5gIGFuZCBgbXdpZmlleF9oYW5kbGVfZXZlbnRfZXh0X3NjYW5fcmVwb3J0YC5cblxuU28sIHdlJ3ZlIGdvdCBmdWxsIGNhbGwgY2hhaW4gY292ZXJhZ2UgZnJvbSBvdXIgZm9jdXMgc3ltYm9scy4gVGhleSBhcHBlYXIgdG8gYmUgc29saWQgc3RhcnRpbmcgcG9pbnRzLlxuXG5SaWdodCwgSSdtIHJlYWR5IHRvIHByb2NlZWQgd2l0aCBzZXR0aW5nIHRoZSByZXN1bHRzIGFuZCBtb3Zpbmcgb24gdG8gdGhlIGZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1NDMwLCJPdXRwdXRUb2tlbnMiOjI2MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNTowMToyNy41NDgxNTEyMjZaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjc2MDc2NjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1XSUZJRVhcIixcbiAgICBcIk1XSUZJRVhfVVNCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXdpZmlleF9yZXRfODAyXzExX3NjYW5cIixcbiAgICBcIm13aWZpZXhfaGFuZGxlX2V2ZW50X2V4dF9zY2FuX3JlcG9ydFwiLFxuICAgIFwibXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyB0byBgbXdpZmlleF9zZWFyY2hfb3VpX2luX2llYCB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgcmVhZHMgd2hlbiBwYXJzaW5nIFJTTi9XUEEgSW5mb3JtYXRpb24gRWxlbWVudHMgKElFcykgZnJvbSBzY2FuIHJlc3VsdHMuIFRoZSB2dWxuZXJhYmlsaXR5IG9jY3VycyB3aGVuIHRoZSBkcml2ZXIgcHJvY2Vzc2VzIHNjYW4gcmVzdWx0cyByZWNlaXZlZCBmcm9tIHRoZSBmaXJtd2FyZS4gU2luY2UgdGhlIGBtd2lmaWV4YCBkcml2ZXIgc3VwcG9ydHMgYSBVU0IgaW50ZXJmYWNlIChgTVdJRklFWF9VU0JgKSwgdGhlIGZpcm13YXJlIHJlc3BvbnNlcyBjYW4gYmUgZnV6emVkIHZpYSBVU0IgZW11bGF0aW9uIChlLmcuLCBkdW1teS1oY2QpLiBUaGUgZml4IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGxvZ2ljIGluIHRoZSBkcml2ZXIsIHNvIGl0IGlzIHdvcnRoIGZ1enppbmcuIEZvY3VzIHN5bWJvbHMgYXJlIGBtd2lmaWV4X3JldF84MDJfMTFfc2NhbmAsIGBtd2lmaWV4X2hhbmRsZV9ldmVudF9leHRfc2Nhbl9yZXBvcnRgLCBhbmQgYG13aWZpZXhfY2hlY2tfbmV0d29ya19jb21wYXRpYmlsaXR5YCwgd2hpY2ggYXJlIHRoZSBlbnRyeSBwb2ludHMgZm9yIHByb2Nlc3Npbmcgc2NhbiByZXN1bHRzIGFuZCBjaGVja2luZyBuZXR3b3JrIGNvbXBhdGliaWxpdHkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTVdJRklFWFwiLFxuICAgIFwiTVdJRklFWF9VU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtd2lmaWV4X3JldF84MDJfMTFfc2NhblwiLFxuICAgIFwibXdpZmlleF9oYW5kbGVfZXZlbnRfZXh0X3NjYW5fcmVwb3J0XCIsXG4gICAgXCJtd2lmaWV4X2NoZWNrX25ldHdvcmtfY29tcGF0aWJpbGl0eVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIHRvIGBtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWVgIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcyB3aGVuIHBhcnNpbmcgUlNOL1dQQSBJbmZvcm1hdGlvbiBFbGVtZW50cyAoSUVzKSBmcm9tIHNjYW4gcmVzdWx0cy4gVGhlIHZ1bG5lcmFiaWxpdHkgb2NjdXJzIHdoZW4gdGhlIGRyaXZlciBwcm9jZXNzZXMgc2NhbiByZXN1bHRzIHJlY2VpdmVkIGZyb20gdGhlIGZpcm13YXJlLiBTaW5jZSB0aGUgYG13aWZpZXhgIGRyaXZlciBzdXBwb3J0cyBhIFVTQiBpbnRlcmZhY2UgKGBNV0lGSUVYX1VTQmApLCB0aGUgZmlybXdhcmUgcmVzcG9uc2VzIGNhbiBiZSBmdXp6ZWQgdmlhIFVTQiBlbXVsYXRpb24gKGUuZy4sIGR1bW15LWhjZCkuIFRoZSBmaXggbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUgbG9naWMgaW4gdGhlIGRyaXZlciwgc28gaXQgaXMgd29ydGggZnV6emluZy4gRm9jdXMgc3ltYm9scyBhcmUgYG13aWZpZXhfcmV0XzgwMl8xMV9zY2FuYCwgYG13aWZpZXhfaGFuZGxlX2V2ZW50X2V4dF9zY2FuX3JlcG9ydGAsIGFuZCBgbXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHlgLCB3aGljaCBhcmUgdGhlIGVudHJ5IHBvaW50cyBmb3IgcHJvY2Vzc2luZyBzY2FuIHJlc3VsdHMgYW5kIGNoZWNraW5nIG5ldHdvcmsgY29tcGF0aWJpbGl0eS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTU6MDE6MjcuNjc1NzY1NzEyWiIsIlNlcSI6MzEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjczNzc1NjcwNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE1OjAxOjI3LjY3NjM2ODAwMloiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxMjczNzE0Nzk2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyByZWFkIHZ1bG5lcmFiaWxpdHkgaW4gYG13aWZpZXhfc2VhcmNoX291aV9pbl9pZWAgYnkgaW50cm9kdWNpbmcgYm91bmRzIGNoZWNraW5nIG9uIHRoZSBPVUkgY291bnQgKGBpZWJvZHktXFx1MDAzZXB0a19jbnRbMF1gKSBhZ2FpbnN0IHRoZSBhdmFpbGFibGUgSW5mb3JtYXRpb24gRWxlbWVudCAoSUUpIGxlbmd0aCAoYGllX2xlbmApLiBXaXRob3V0IHRoaXMgY2hlY2ssIGEgbWFsaWNpb3VzbHkgY3JhZnRlZCBiZWFjb24gb3IgcHJvYmUgcmVzcG9uc2Ugd2l0aCBhIGxhcmdlIE9VSSBjb3VudCBjb3VsZCBjYXVzZSB0aGUgZHJpdmVyIHRvIHJlYWQgcGFzdCB0aGUgZW5kIG9mIHRoZSBhbGxvY2F0ZWQgSUUgYnVmZmVyIGR1cmluZyB0aGUgYG1lbWNtcGAgbG9vcC5cXG5cXG5UaGlzIGlzIGEgY2xhc3NpYyBvdXQtb2YtYm91bmRzIHJlYWQgYnVnLCB3aGljaCBpcyByZWxpYWJseSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlcmUgaXMgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UsIHN0YWNrL2hlYXAgaW5mby1sZWFrIHRvIHVzZXIgc3BhY2UsIG9yIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzIGludm9sdmVkIGluIHRoaXMgdnVsbmVyYWJpbGl0eS4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeSwgYXMgc3RhbmRhcmQgS0FTQU4gd2lsbCBjYXRjaCBhbnkgcmVncmVzc2lvbnMgb3Igc2ltaWxhciBvdXQtb2YtYm91bmRzIGFjY2VzcyBpc3N1ZXMgaW4gdGhpcyBjb2RlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGYxMzgyZTYwMzdlNzUyZjYzZDFhNzkzZjcwMGMyOGUwZGNmMDFlNDdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEF1ZyAxNCAxNDo1MjozMyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jXG5pbmRleCA5N2MwZWMzYjgyMmU3Li40NzNmNDYyM2VhMTk5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uY1xuQEAgLTEwNCwxMiArMTA0LDI0IEBAIGhhc192ZW5kb3JfaGRyKHN0cnVjdCBpZWVlX3R5cGVzX3ZlbmRvcl9zcGVjaWZpYyAqaWUsIHU4IGtleSlcbiAgKiBhIGdpdmVuIG91aSBpbiBQVEsuXG4gICovXG4gc3RhdGljIHU4XG4tbXdpZmlleF9zZWFyY2hfb3VpX2luX2llKHN0cnVjdCBpZV9ib2R5ICppZWJvZHksIHU4ICpvdWkpXG4rbXdpZmlleF9zZWFyY2hfb3VpX2luX2llKHN0cnVjdCBpZV9ib2R5ICppZWJvZHksIHU4ICpvdWksIGludCBpZV9sZW4pXG4ge1xuK1x0Y29uc3Qgc2l6ZV90IHB0a19ib2R5X29mZnNldCA9IG9mZnNldG9mKHN0cnVjdCBpZV9ib2R5LCBwdGtfYm9keSk7XG4gXHR1OCBjb3VudDtcbiBcbitcdC8qIGllX2xlbiBpcyB0aGUgbnVtYmVyIG9mIGJ5dGVzIGF2YWlsYWJsZSBhdCBpZWJvZHkuIEtlZXAgaXQgc2lnbmVkXG4rXHQgKiBhbmQgcmVqZWN0IGEgbmVnYXRpdmUgKHVuZGVyZmxvd2VkKSBsZW5ndGggYmVmb3JlIHRoZSB1bnNpZ25lZFxuK1x0ICogY29tcGFyaXNvbnMgYmVsb3csIHNvIGEgc21hbGwgb3IgemVybyBJRSBsZW5ndGggY2Fubm90IHdyYXAuXG4rXHQgKi9cbitcdGlmIChpZV9sZW4gXHUwMDNjIDAgfHwgKHNpemVfdClpZV9sZW4gXHUwMDNjIHB0a19ib2R5X29mZnNldClcbitcdFx0cmV0dXJuIE1XSUZJRVhfT1VJX05PVF9QUkVTRU5UO1xuK1xuIFx0Y291bnQgPSBpZWJvZHktXHUwMDNlcHRrX2NudFswXTtcbiBcbitcdC8qIFJlamVjdCBhbiBPVUkgY291bnQgd2hvc2UgbGlzdCB3b3VsZCBydW4gcGFzdCB0aGUgZWxlbWVudC4gKi9cbitcdGlmIChwdGtfYm9keV9vZmZzZXQgKyBjb3VudCAqIHNpemVvZihpZWJvZHktXHUwMDNlcHRrX2JvZHkpIFx1MDAzZSAoc2l6ZV90KWllX2xlbilcbitcdFx0cmV0dXJuIE1XSUZJRVhfT1VJX05PVF9QUkVTRU5UO1xuK1xuIFx0LyogVGhlcmUgY291bGQgYmUgbXVsdGlwbGUgT1VJcyBmb3IgUFRLIGhlbmNlXG4gXHQgICAxKSBUYWtlIHRoZSBsZW5ndGguXG4gXHQgICAyKSBDaGVjayBhbGwgdGhlIE9VSXMgZm9yIEFFUy5cbkBAIC0xNDMsMTEgKzE1NSwxNCBAQCBtd2lmaWV4X2lzX3Jzbl9vdWlfcHJlc2VudChzdHJ1Y3QgbXdpZmlleF9ic3NkZXNjcmlwdG9yICpic3NfZGVzYywgdTMyIGNpcGhlcilcbiBcdHU4IHJldCA9IE1XSUZJRVhfT1VJX05PVF9QUkVTRU5UO1xuIFxuIFx0aWYgKGhhc19pZWVlX2hkcihic3NfZGVzYy1cdTAwM2ViY25fcnNuX2llLCBXTEFOX0VJRF9SU04pKSB7XG4rXHRcdGludCBpZV9sZW4gPSAoaW50KWJzc19kZXNjLVx1MDAzZWJjbl9yc25faWUtXHUwMDNlaWVlZV9oZHIubGVuIC1cbitcdFx0XHRSU05fR1RLX09VSV9PRkZTRVQ7XG4rXG4gXHRcdGllYm9keSA9IChzdHJ1Y3QgaWVfYm9keSAqKVxuIFx0XHRcdCAoKCh1OCAqKSBic3NfZGVzYy1cdTAwM2ViY25fcnNuX2llLVx1MDAzZWRhdGEpICtcbiBcdFx0XHQgIFJTTl9HVEtfT1VJX09GRlNFVCk7XG4gXHRcdG91aSA9IFx1MDAyNm13aWZpZXhfcnNuX291aVtjaXBoZXJdWzBdO1xuLVx0XHRyZXQgPSBtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWUoaWVib2R5LCBvdWkpO1xuK1x0XHRyZXQgPSBtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWUoaWVib2R5LCBvdWksIGllX2xlbik7XG4gXHRcdGlmIChyZXQpXG4gXHRcdFx0cmV0dXJuIHJldDtcbiBcdH1cbkBAIC0xNjksMTAgKzE4NCwxNCBAQCBtd2lmaWV4X2lzX3dwYV9vdWlfcHJlc2VudChzdHJ1Y3QgbXdpZmlleF9ic3NkZXNjcmlwdG9yICpic3NfZGVzYywgdTMyIGNpcGhlcilcbiBcdHU4IHJldCA9IE1XSUZJRVhfT1VJX05PVF9QUkVTRU5UO1xuIFxuIFx0aWYgKGhhc192ZW5kb3JfaGRyKGJzc19kZXNjLVx1MDAzZWJjbl93cGFfaWUsIFdMQU5fRUlEX1ZFTkRPUl9TUEVDSUZJQykpIHtcbitcdFx0aW50IGllX2xlbiA9IChpbnQpYnNzX2Rlc2MtXHUwMDNlYmNuX3dwYV9pZS1cdTAwM2V2ZW5kX2hkci5sZW4gLVxuK1x0XHRcdChpbnQpc2l6ZW9mKGJzc19kZXNjLVx1MDAzZWJjbl93cGFfaWUtXHUwMDNldmVuZF9oZHIub3VpKSAtXG4rXHRcdFx0V1BBX0dUS19PVUlfT0ZGU0VUO1xuK1xuIFx0XHRpZWJvZHkgPSAoc3RydWN0IGllX2JvZHkgKikoKHU4ICopYnNzX2Rlc2MtXHUwMDNlYmNuX3dwYV9pZS1cdTAwM2VkYXRhICtcbiBcdFx0XHRcdFx0ICAgIFdQQV9HVEtfT1VJX09GRlNFVCk7XG4gXHRcdG91aSA9IFx1MDAyNm13aWZpZXhfd3BhX291aVtjaXBoZXJdWzBdO1xuLVx0XHRyZXQgPSBtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWUoaWVib2R5LCBvdWkpO1xuK1x0XHRyZXQgPSBtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWUoaWVib2R5LCBvdWksIGllX2xlbik7XG4gXHRcdGlmIChyZXQpXG4gXHRcdFx0cmV0dXJuIHJldDtcbiBcdH1cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE1OjAxOjI3LjY3NjM2OTEzMloiLCJTZXEiOjMzLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MTU1MDgzNDAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBNYXJ2ZWxsIFdpLUZpIERyaXZlciBWdWxuZXJhYmlsaXR5IFBhdGNoKipcblxuT2theSwgc28gaGVyZSdzIHdoYXQgSSd2ZSBnb3QuIFRoaXMgcGF0Y2ggdGFyZ2V0cyBhbiBvdXQtb2YtYm91bmRzIHJlYWQgdnVsbmVyYWJpbGl0eSBpbiB0aGUgYG13aWZpZXhfc2VhcmNoX291aV9pbl9pZWAgZnVuY3Rpb24gd2l0aGluIHRoZSBNYXJ2ZWxsIFdpLUZpIGRyaXZlcidzIHNjYW5uaW5nIGNvZGUgKGBzY2FuLmNgKS4gRXNzZW50aWFsbHksIHRoZSBwcm9ibGVtIGJvaWxzIGRvd24gdG8gYSBsYWNrIG9mIHByb3BlciBib3VuZHMgY2hlY2tpbmcgd2hlbiBoYW5kbGluZyBPVUkgKE9yZ2FuaXphdGlvbmFsbHkgVW5pcXVlIElkZW50aWZpZXIpIGNvdW50cyBmb3VuZCB3aXRoaW4gSW5mb3JtYXRpb24gRWxlbWVudHMgKElFcykgb2YgV2ktRmkgYmVhY29ucyBvciBwcm9iZSByZXNwb25zZXMuXG5cblRoZSBmaXggaXRzZWxmIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQ6IGl0IGludHJvZHVjZXMgYSBjaGVjayB0aGF0IGNvbXBhcmVzIHRoZSBjYWxjdWxhdGVkIG9mZnNldCAoYmFzZWQgb24gdGhlIE9VSSBjb3VudCBhbmQgc2l6ZSBvZiB0aGUgT1VJIGJvZHkpIGFnYWluc3QgdGhlIGFjdHVhbCBsZW5ndGggb2YgdGhlIElFIGJ1ZmZlciAoYGllX2xlbmApLiAgVGhlIGNvZGUgd2FzIHJlYWRpbmcgYGllYm9keS1cdTAwM2VwdGtfY250WzBdYCBmcm9tIGEgbmV0d29yayBwYWNrZXQgKGJlYWNvbi9wcm9iZSByZXNwb25zZSkgYW5kIHVzaW5nIHRoYXQgdmFsdWUgdG8gZGV0ZXJtaW5lIGhvdyBtdWNoIG9mIGBpZWJvZHktXHUwMDNlcHRrX2JvZHlgIHRvIHJlYWQuICBUaGUgdnVsbmVyYWJpbGl0eSBsaWVzIGluIHRoZSBmYWN0IHRoYXQgYSBtYWxpY2lvdXMgYWN0b3IgY291bGQgY3JhZnQgYSBiZWFjb24gb3IgcHJvYmUgcmVzcG9uc2Ugd2l0aCBhIGxhcmdlIE9VSSBjb3VudCwgd2hpY2ggd291bGQgY2F1c2UgdGhlIGRyaXZlciB0byBhdHRlbXB0IHRvIHJlYWQgcGFzdCB0aGUgZW5kIG9mIHRoZSBJRSBidWZmZXIuICBUaGlzIGlzIGEgY2xhc3NpYyBhbmQgd2VsbC11bmRlcnN0b29kIG91dC1vZi1ib3VuZHMgcmVhZC5cblxuTm93LCB0aGUga2V5IHF1ZXN0aW9uIGhlcmUgaXMgd2hldGhlciB0aGlzIG5lY2Vzc2l0YXRlcyBLTVNBTiAoS2VybmVsIE1lbW9yeSBTYW5pdGl6ZXIpIG9yIGlmIEtBU0FOIChLZXJuZWwgQWRkcmVzcyBTYW5pdGl6ZXIpIGlzIHN1ZmZpY2llbnQuIEFmdGVyIGEgdGhvcm91Z2ggcmV2aWV3LCBJJ20gY29uZmlkZW50IHRoYXQgS0FTQU4gaXMgdGhlIHJpZ2h0IHRvb2wgZm9yIHRoaXMgam9iLiBUaGUgcm9vdCBjYXVzZSBpcyAqcHVyZWx5KiBhbiBvdXQtb2YtYm91bmRzIHJlYWQuIFRoZXJlJ3Mgbm8gaW52b2x2ZW1lbnQgb2YgdW5pbml0aWFsaXplZCBtZW1vcnksIHN0YWNrL2hlYXAgaW5mby1sZWFrIHRvIHVzZXIgc3BhY2UsIG9yIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzIHRoYXQgS01TQU4gaXMgZGVzaWduZWQgdG8gY2F0Y2guICBUaGUgYnVnIGlzIHRyaWdnZXJlZCBieSByZWFkaW5nIGJleW9uZCB0aGUgYWxsb2NhdGVkIG1lbW9yeSBmb3IgdGhlIElFIGJ1ZmZlciAoYGJzc19kZXNjLVx1MDAzZWJjbl9yc25faWVgIG9yIGBic3NfZGVzYy1cdTAwM2ViY25fd3BhX2llYCksIHdoaWNoIGlzIHBvcHVsYXRlZCBkaXJlY3RseSBmcm9tIG5ldHdvcmsgcGFja2V0cy4gS0FTQU4gaXMgcGVyZmVjdGx5IHN1aXRlZCB0byBkZXRlY3RpbmcgdGhpcyBzb3J0IG9mIG1lbW9yeSBhY2Nlc3MgdmlvbGF0aW9uLiAgS01TQU4gd291bGQgYmUgb3ZlcmtpbGwsIGFuZCBwcm9iYWJseSBub3QgZXZlbiB0cmlnZ2VyIGFueXRoaW5nLCBzaW5jZSBpdCdzIGZvY3VzZWQgb24gdW5pbml0aWFsaXplZCBtZW1vcnkgYWNjZXNzLlxuXG5JJ3ZlIGNvbmZpcm1lZCB0aGlzIGJ5IGxvb2tpbmcgYXQgdGhlIGNvZGUsIHRvby4gIEknbSB2ZXJ5IGNvbmZpZGVudCB0aGF0IHRoZSBwYXRjaCBhZGRyZXNzZXMgdGhlIHZ1bG5lcmFiaWxpdHkgY29ycmVjdGx5IGJ5IHByZXZlbnRpbmcgdGhlIG91dC1vZi1ib3VuZHMgcmVhZC4gVGhlcmVmb3JlLCBJIGJlbGlldmUgYE5lZWRzS01TQU49ZmFsc2VgIGlzIGNvcnJlY3QuIFRoaXMgaXMgdGhlIGtpbmQgb2YgdnVsbmVyYWJpbGl0eSB0aGF0IEtBU0FOIHdpbGwgZGV0ZWN0IHF1aWNrbHksIGFuZCBlZmZpY2llbnRseS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg1NiwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUzOSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE1OjAxOjM1LjgzMTQ1NjQxNVoiLCJTZXEiOjM0LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNjM0MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMDAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxMDA6XFx0LypcXG4gMTAxOlxcdCAqIFRoaXMgZnVuY3Rpb24gcGFyc2VzIGEgZ2l2ZW4gSUUgZm9yIGEgZ2l2ZW4gT1VJLlxcbiAxMDI6XFx0ICpcXG4gMTAzOlxcdCAqIFRoaXMgaXMgdXNlZCB0byBwYXJzZSBhIFdQQS9SU04gSUUgdG8gZmluZCBpZiBpdCBoYXNcXG4gMTA0OlxcdCAqIGEgZ2l2ZW4gb3VpIGluIFBUSy5cXG4gMTA1OlxcdCAqL1xcbiAxMDY6XFx0c3RhdGljIHU4XFxuIDEwNzpcXHRtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWUoc3RydWN0IGllX2JvZHkgKmllYm9keSwgdTggKm91aSwgaW50IGllX2xlbilcXG4gMTA4OlxcdHtcXG4gMTA5OlxcdFxcdGNvbnN0IHNpemVfdCBwdGtfYm9keV9vZmZzZXQgPSBvZmZzZXRvZihzdHJ1Y3QgaWVfYm9keSwgcHRrX2JvZHkpO1xcbiAxMTA6XFx0XFx0dTggY291bnQ7XFxuIDExMTpcXHRcXG4gMTEyOlxcdFxcdC8qIGllX2xlbiBpcyB0aGUgbnVtYmVyIG9mIGJ5dGVzIGF2YWlsYWJsZSBhdCBpZWJvZHkuIEtlZXAgaXQgc2lnbmVkXFxuIDExMzpcXHRcXHQgKiBhbmQgcmVqZWN0IGEgbmVnYXRpdmUgKHVuZGVyZmxvd2VkKSBsZW5ndGggYmVmb3JlIHRoZSB1bnNpZ25lZFxcbiAxMTQ6XFx0XFx0ICogY29tcGFyaXNvbnMgYmVsb3csIHNvIGEgc21hbGwgb3IgemVybyBJRSBsZW5ndGggY2Fubm90IHdyYXAuXFxuIDExNTpcXHRcXHQgKi9cXG4gMTE2OlxcdFxcdGlmIChpZV9sZW4gXFx1MDAzYyAwIHx8IChzaXplX3QpaWVfbGVuIFxcdTAwM2MgcHRrX2JvZHlfb2Zmc2V0KVxcbiAxMTc6XFx0XFx0XFx0cmV0dXJuIE1XSUZJRVhfT1VJX05PVF9QUkVTRU5UO1xcbiAxMTg6XFx0XFxuIDExOTpcXHRcXHRjb3VudCA9IGllYm9keS1cXHUwMDNlcHRrX2NudFswXTtcXG4gMTIwOlxcdFxcbiAxMjE6XFx0XFx0LyogUmVqZWN0IGFuIE9VSSBjb3VudCB3aG9zZSBsaXN0IHdvdWxkIHJ1biBwYXN0IHRoZSBlbGVtZW50LiAqL1xcbiAxMjI6XFx0XFx0aWYgKHB0a19ib2R5X29mZnNldCArIGNvdW50ICogc2l6ZW9mKGllYm9keS1cXHUwMDNlcHRrX2JvZHkpIFxcdTAwM2UgKHNpemVfdClpZV9sZW4pXFxuIDEyMzpcXHRcXHRcXHRyZXR1cm4gTVdJRklFWF9PVUlfTk9UX1BSRVNFTlQ7XFxuIDEyNDpcXHRcXG4gMTI1OlxcdFxcdC8qIFRoZXJlIGNvdWxkIGJlIG11bHRpcGxlIE9VSXMgZm9yIFBUSyBoZW5jZVxcbiAxMjY6XFx0XFx0ICAgMSkgVGFrZSB0aGUgbGVuZ3RoLlxcbiAxMjc6XFx0XFx0ICAgMikgQ2hlY2sgYWxsIHRoZSBPVUlzIGZvciBBRVMuXFxuIDEyODpcXHRcXHQgICAzKSBJZiBvbmUgb2YgdGhlbSBpcyBBRVMgdGhlbiBwYXNzIHN1Y2Nlc3MuICovXFxuIDEyOTpcXHRcXHR3aGlsZSAoY291bnQpIHtcXG4gMTMwOlxcdFxcdFxcdGlmICghbWVtY21wKGllYm9keS1cXHUwMDNlcHRrX2JvZHksIG91aSwgc2l6ZW9mKGllYm9keS1cXHUwMDNlcHRrX2JvZHkpKSlcXG4gMTMxOlxcdFxcdFxcdFxcdHJldHVybiBNV0lGSUVYX09VSV9QUkVTRU5UO1xcbiAxMzI6XFx0XFxuIDEzMzpcXHRcXHRcXHQtLWNvdW50O1xcbiAxMzQ6XFx0XFx0XFx0aWYgKGNvdW50KVxcbiAxMzU6XFx0XFx0XFx0XFx0aWVib2R5ID0gKHN0cnVjdCBpZV9ib2R5ICopICgodTggKikgaWVib2R5ICtcXG4gMTM2OlxcdFxcdFxcdFxcdFxcdFxcdFxcdHNpemVvZihpZWJvZHktXFx1MDAzZXB0a19ib2R5KSk7XFxuIDEzNzpcXHRcXHR9XFxuIDEzODpcXHRcXG4gMTM5OlxcdFxcdHByX2RlYnVnKFxcXCJpbmZvOiAlczogT1VJIGlzIG5vdCBmb3VuZCBpbiBQVEtcXFxcblxcXCIsIF9fZnVuY19fKTtcXG4gMTQwOlxcdFxcdHJldHVybiBNV0lGSUVYX09VSV9OT1RfUFJFU0VOVDtcXG4gMTQxOlxcdH1cXG4gMTQyOlxcdFxcbiAxNDM6XFx0LypcXG4gMTQ0OlxcdCAqIFRoaXMgZnVuY3Rpb24gY2hlY2tzIGlmIGEgZ2l2ZW4gT1VJIGlzIHByZXNlbnQgaW4gYSBSU04gSUUuXFxuIDE0NTpcXHQgKlxcbiAxNDY6XFx0ICogVGhlIGZ1bmN0aW9uIGZpcnN0IGNoZWNrcyBpZiBhIFJTTiBJRSBpcyBwcmVzZW50IG9yIG5vdCBpbiB0aGVcXG4gMTQ3OlxcdCAqIEJTUyBkZXNjcmlwdG9yLiBJdCB0cmllcyB0byBsb2NhdGUgdGhlIE9VSSBvbmx5IGlmIHN1Y2ggYW4gSUUgaXNcXG4gMTQ4OlxcdCAqIHByZXNlbnQuXFxuIDE0OTpcXHQgKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTU6MDE6MzUuODMxODIyNTI1WiIsIlNlcSI6MzUsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1ODE2NDMxOTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgT3V0LW9mLUJvdW5kcyBSZWFkKipcblxuUmlnaHQsIHRoZSBjb2RlJ3MgY29uZmlybWVkIGl0LiBXZSdyZSBsb29raW5nIGF0IGEgc3RyYWlnaHRmb3J3YXJkIG91dC1vZi1ib3VuZHMgcmVhZCBidWcsIG5vdGhpbmcgY29tcGxleC4gR2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGUgaXNzdWUsIGFuZCBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSByZWxldmFudCBtZW1vcnkgc2FmZXR5IG1lY2hhbmlzbXMsIEkgY2FuIGNvbmZpZGVudGx5IG1hcmsgYE5lZWRzS01TQU5gIGFzIGBmYWxzZWAuIFdlIGNhbiBhZGRyZXNzIHRoaXMgd2l0aCBhIG1vcmUgdGFyZ2V0ZWQgYXBwcm9hY2gsIGxpa2VseSBpbnZvbHZpbmcgYm91bmRzIGNoZWNraW5nIG9yIGltcHJvdmVkIGluZGV4aW5nIHdpdGhpbiB0aGUgYWZmZWN0ZWQgcm91dGluZS4gTm8gbmVlZCBmb3IgdGhlIGhlYXZ5IGhhbW1lciBvZiBhIGtlcm5lbC13aWRlIG1lbW9yeSBzYW5pdGl6ZXIgaGVyZS4gTGV0J3MgbW92ZSBvbiB0byB0aGUgZml4LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0Nzk1LCJPdXRwdXRUb2tlbnMiOjIwOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTU6MDE6NDAuNDEzNDkxMDk4WiIsIlNlcSI6MzYsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI3ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBvdXQtb2YtYm91bmRzIHJlYWQgdnVsbmVyYWJpbGl0eSBpbiBgbXdpZmlleF9zZWFyY2hfb3VpX2luX2llYCBieSBpbnRyb2R1Y2luZyBib3VuZHMgY2hlY2tpbmcgb24gdGhlIE9VSSBjb3VudCAoYGllYm9keS1cXHUwMDNlcHRrX2NudFswXWApIGFnYWluc3QgdGhlIGF2YWlsYWJsZSBJbmZvcm1hdGlvbiBFbGVtZW50IChJRSkgbGVuZ3RoIChgaWVfbGVuYCkuIFdpdGhvdXQgdGhpcyBjaGVjaywgYSBtYWxpY2lvdXNseSBjcmFmdGVkIGJlYWNvbiBvciBwcm9iZSByZXNwb25zZSB3aXRoIGEgbGFyZ2UgT1VJIGNvdW50IGNvdWxkIGNhdXNlIHRoZSBkcml2ZXIgdG8gcmVhZCBwYXN0IHRoZSBlbmQgb2YgdGhlIGFsbG9jYXRlZCBJRSBidWZmZXIgZHVyaW5nIHRoZSBgbWVtY21wYCBsb29wLlxcblxcblRoaXMgaXMgYSBjbGFzc2ljIG91dC1vZi1ib3VuZHMgcmVhZCBidWcsIHdoaWNoIGlzIHJlbGlhYmx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGVyZSBpcyBubyB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSwgc3RhY2svaGVhcCBpbmZvLWxlYWsgdG8gdXNlciBzcGFjZSwgb3IgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMgaW52b2x2ZWQgaW4gdGhpcyB2dWxuZXJhYmlsaXR5LiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LCBhcyBzdGFuZGFyZCBLQVNBTiB3aWxsIGNhdGNoIGFueSByZWdyZXNzaW9ucyBvciBzaW1pbGFyIG91dC1vZi1ib3VuZHMgYWNjZXNzIGlzc3VlcyBpbiB0aGlzIGNvZGUuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyByZWFkIHZ1bG5lcmFiaWxpdHkgaW4gYG13aWZpZXhfc2VhcmNoX291aV9pbl9pZWAgYnkgaW50cm9kdWNpbmcgYm91bmRzIGNoZWNraW5nIG9uIHRoZSBPVUkgY291bnQgKGBpZWJvZHktXFx1MDAzZXB0a19jbnRbMF1gKSBhZ2FpbnN0IHRoZSBhdmFpbGFibGUgSW5mb3JtYXRpb24gRWxlbWVudCAoSUUpIGxlbmd0aCAoYGllX2xlbmApLiBXaXRob3V0IHRoaXMgY2hlY2ssIGEgbWFsaWNpb3VzbHkgY3JhZnRlZCBiZWFjb24gb3IgcHJvYmUgcmVzcG9uc2Ugd2l0aCBhIGxhcmdlIE9VSSBjb3VudCBjb3VsZCBjYXVzZSB0aGUgZHJpdmVyIHRvIHJlYWQgcGFzdCB0aGUgZW5kIG9mIHRoZSBhbGxvY2F0ZWQgSUUgYnVmZmVyIGR1cmluZyB0aGUgYG1lbWNtcGAgbG9vcC5cXG5cXG5UaGlzIGlzIGEgY2xhc3NpYyBvdXQtb2YtYm91bmRzIHJlYWQgYnVnLCB3aGljaCBpcyByZWxpYWJseSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlcmUgaXMgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UsIHN0YWNrL2hlYXAgaW5mby1sZWFrIHRvIHVzZXIgc3BhY2UsIG9yIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzIGludm9sdmVkIGluIHRoaXMgdnVsbmVyYWJpbGl0eS4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeSwgYXMgc3RhbmRhcmQgS0FTQU4gd2lsbCBjYXRjaCBhbnkgcmVncmVzc2lvbnMgb3Igc2ltaWxhciBvdXQtb2YtYm91bmRzIGFjY2VzcyBpc3N1ZXMgaW4gdGhpcyBjb2RlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow66wjv[1] Phase: Succeeded StartedAt: 2026-08-14 15:01:52 +0000 UTC FinishedAt: 2026-08-14 15:01:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflow66wjv[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-14 15:01:52 +0000 UTC FinishedAt: 2026-08-14 15:01:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflow66wjv[2] Phase: Succeeded StartedAt: 2026-08-14 15:01:52 +0000 UTC FinishedAt: 2026-08-14 15:57:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow66wjv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_ret_802_11_scan","mwifiex_handle_event_ext_scan_report","mwifiex_check_network_compatibility"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"2288997c-eba8-4f6d-8fc6-ef07c459bf4e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-14 15:01:52 +0000 UTC FinishedAt: 2026-08-14 15:57:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_ret_802_11_scan","mwifiex_handle_event_ext_scan_report","mwifiex_check_network_compatibility"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"2288997c-eba8-4f6d-8fc6-ef07c459bf4e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow66wjv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_ret_802_11_scan","mwifiex_handle_event_ext_scan_report","mwifiex_check_network_compatibility"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"2288997c-eba8-4f6d-8fc6-ef07c459bf4e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-14 15:01:52 +0000 UTC FinishedAt: 2026-08-14 15:02:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflow66wjv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_ret_802_11_scan","mwifiex_handle_event_ext_scan_report","mwifiex_check_network_compatibility"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"2288997c-eba8-4f6d-8fc6-ef07c459bf4e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-14 15:01:52 +0000 UTC FinishedAt: 2026-08-14 15:01:57 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow66wjv/series-workflow66wjv-convert-artifact-15305464/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow66wjv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_ret_802_11_scan","mwifiex_handle_event_ext_scan_report","mwifiex_check_network_compatibility"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"2288997c-eba8-4f6d-8fc6-ef07c459bf4e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-14 15:02:02 +0000 UTC FinishedAt: 2026-08-14 15:24:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow66wjv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_ret_802_11_scan","mwifiex_handle_event_ext_scan_report","mwifiex_check_network_compatibility"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"2288997c-eba8-4f6d-8fc6-ef07c459bf4e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-14 15:02:02 +0000 UTC FinishedAt: 2026-08-14 15:24:05 +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:*3a91b6b3-52df-487d-8e48-ee3ffc92e53b,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-workflow66wjv/series-workflow66wjv-convert-artifact-15305464/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": "fffcae59-77ae-4394-b54e-fedfec980254", "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-workflow66wjv/series-workflow66wjv-build-action-3646902190/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow66wjv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_ret_802_11_scan","mwifiex_handle_event_ext_scan_report","mwifiex_check_network_compatibility"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"2288997c-eba8-4f6d-8fc6-ef07c459bf4e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-14 15:02:02 +0000 UTC FinishedAt: 2026-08-14 15:23:54 +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:*3a91b6b3-52df-487d-8e48-ee3ffc92e53b,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-workflow66wjv/series-workflow66wjv-convert-artifact-15305464/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": "fffcae59-77ae-4394-b54e-fedfec980254", "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-workflow66wjv/series-workflow66wjv-build-action-3646902190/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow66wjv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_ret_802_11_scan","mwifiex_handle_event_ext_scan_report","mwifiex_check_network_compatibility"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"2288997c-eba8-4f6d-8fc6-ef07c459bf4e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-14 15:24:05 +0000 UTC FinishedAt: 2026-08-14 15:24:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow66wjv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_ret_802_11_scan","mwifiex_handle_event_ext_scan_report","mwifiex_check_network_compatibility"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"2288997c-eba8-4f6d-8fc6-ef07c459bf4e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-14 15:24:05 +0000 UTC FinishedAt: 2026-08-14 15:24:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow66wjv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_ret_802_11_scan","mwifiex_handle_event_ext_scan_report","mwifiex_check_network_compatibility"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"2288997c-eba8-4f6d-8fc6-ef07c459bf4e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-14 15:24:05 +0000 UTC FinishedAt: 2026-08-14 15:24:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflow66wjv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_ret_802_11_scan","mwifiex_handle_event_ext_scan_report","mwifiex_check_network_compatibility"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"2288997c-eba8-4f6d-8fc6-ef07c459bf4e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-14 15:24:05 +0000 UTC FinishedAt: 2026-08-14 15:24:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"2288997c-eba8-4f6d-8fc6-ef07c459bf4e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow66wjv/series-workflow66wjv-convert-artifact-583212895/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow66wjv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_ret_802_11_scan","mwifiex_handle_event_ext_scan_report","mwifiex_check_network_compatibility"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"2288997c-eba8-4f6d-8fc6-ef07c459bf4e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-14 15:24:17 +0000 UTC FinishedAt: 2026-08-14 15:26:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflow66wjv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_ret_802_11_scan","mwifiex_handle_event_ext_scan_report","mwifiex_check_network_compatibility"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"2288997c-eba8-4f6d-8fc6-ef07c459bf4e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-14 15:24:17 +0000 UTC FinishedAt: 2026-08-14 15:26:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*fffcae59-77ae-4394-b54e-fedfec980254,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-workflow66wjv/series-workflow66wjv-build-action-3646902190/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-workflow66wjv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_ret_802_11_scan","mwifiex_handle_event_ext_scan_report","mwifiex_check_network_compatibility"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"2288997c-eba8-4f6d-8fc6-ef07c459bf4e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-14 15:26:58 +0000 UTC FinishedAt: 2026-08-14 15:26:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflow66wjv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_ret_802_11_scan","mwifiex_handle_event_ext_scan_report","mwifiex_check_network_compatibility"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"2288997c-eba8-4f6d-8fc6-ef07c459bf4e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-14 15:26:58 +0000 UTC FinishedAt: 2026-08-14 15:26:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflow66wjv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_ret_802_11_scan","mwifiex_handle_event_ext_scan_report","mwifiex_check_network_compatibility"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"2288997c-eba8-4f6d-8fc6-ef07c459bf4e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-14 15:26:58 +0000 UTC FinishedAt: 2026-08-14 15:53:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflow66wjv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_ret_802_11_scan","mwifiex_handle_event_ext_scan_report","mwifiex_check_network_compatibility"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"2288997c-eba8-4f6d-8fc6-ef07c459bf4e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-14 15:26:58 +0000 UTC FinishedAt: 2026-08-14 15:53:48 +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:*3a91b6b3-52df-487d-8e48-ee3ffc92e53b,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-workflow66wjv/series-workflow66wjv-convert-artifact-583212895/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": "cab12184-7d67-4f8e-8dbd-f79aa3e192db", "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-workflow66wjv/series-workflow66wjv-build-action-1922280691/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow66wjv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_ret_802_11_scan","mwifiex_handle_event_ext_scan_report","mwifiex_check_network_compatibility"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"2288997c-eba8-4f6d-8fc6-ef07c459bf4e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-14 15:26:58 +0000 UTC FinishedAt: 2026-08-14 15:53:38 +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:*3a91b6b3-52df-487d-8e48-ee3ffc92e53b,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-workflow66wjv/series-workflow66wjv-convert-artifact-583212895/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": "cab12184-7d67-4f8e-8dbd-f79aa3e192db", "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-workflow66wjv/series-workflow66wjv-build-action-1922280691/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow66wjv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_ret_802_11_scan","mwifiex_handle_event_ext_scan_report","mwifiex_check_network_compatibility"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"2288997c-eba8-4f6d-8fc6-ef07c459bf4e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-14 15:53:48 +0000 UTC FinishedAt: 2026-08-14 15:53:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflow66wjv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_ret_802_11_scan","mwifiex_handle_event_ext_scan_report","mwifiex_check_network_compatibility"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"2288997c-eba8-4f6d-8fc6-ef07c459bf4e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-14 15:53:48 +0000 UTC FinishedAt: 2026-08-14 15:53:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflow66wjv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_ret_802_11_scan","mwifiex_handle_event_ext_scan_report","mwifiex_check_network_compatibility"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"2288997c-eba8-4f6d-8fc6-ef07c459bf4e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-14 15:53:48 +0000 UTC FinishedAt: 2026-08-14 15:55:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflow66wjv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_ret_802_11_scan","mwifiex_handle_event_ext_scan_report","mwifiex_check_network_compatibility"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"2288997c-eba8-4f6d-8fc6-ef07c459bf4e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-14 15:53:48 +0000 UTC FinishedAt: 2026-08-14 15:55:27 +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:*cab12184-7d67-4f8e-8dbd-f79aa3e192db,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-workflow66wjv/series-workflow66wjv-build-action-1922280691/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-workflow66wjv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_ret_802_11_scan","mwifiex_handle_event_ext_scan_report","mwifiex_check_network_compatibility"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"2288997c-eba8-4f6d-8fc6-ef07c459bf4e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-14 15:55:38 +0000 UTC FinishedAt: 2026-08-14 15:57:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow66wjv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_ret_802_11_scan","mwifiex_handle_event_ext_scan_report","mwifiex_check_network_compatibility"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"2288997c-eba8-4f6d-8fc6-ef07c459bf4e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-14 15:55:38 +0000 UTC FinishedAt: 2026-08-14 15:57:43 +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-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_ret_802_11_scan","mwifiex_handle_event_ext_scan_report","mwifiex_check_network_compatibility"],"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:*fffcae59-77ae-4394-b54e-fedfec980254,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*cab12184-7d67-4f8e-8dbd-f79aa3e192db,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-workflow66wjv/series-workflow66wjv-build-action-3646902190/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-workflow66wjv/series-workflow66wjv-build-action-1922280691/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow66wjv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_ret_802_11_scan","mwifiex_handle_event_ext_scan_report","mwifiex_check_network_compatibility"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"2288997c-eba8-4f6d-8fc6-ef07c459bf4e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-14 15:55:38 +0000 UTC FinishedAt: 2026-08-14 15:55:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflow66wjv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_ret_802_11_scan","mwifiex_handle_event_ext_scan_report","mwifiex_check_network_compatibility"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"2288997c-eba8-4f6d-8fc6-ef07c459bf4e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-14 15:55:38 +0000 UTC FinishedAt: 2026-08-14 15:55:45 +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-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_ret_802_11_scan","mwifiex_handle_event_ext_scan_report","mwifiex_check_network_compatibility"],"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-workflow66wjv/series-workflow66wjv-convert-artifact-3707502968/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow66wjv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_ret_802_11_scan","mwifiex_handle_event_ext_scan_report","mwifiex_check_network_compatibility"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"2288997c-eba8-4f6d-8fc6-ef07c459bf4e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-14 15:55:38 +0000 UTC FinishedAt: 2026-08-14 15:55:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflow66wjv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_ret_802_11_scan","mwifiex_handle_event_ext_scan_report","mwifiex_check_network_compatibility"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"2288997c-eba8-4f6d-8fc6-ef07c459bf4e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-14 15:55:38 +0000 UTC FinishedAt: 2026-08-14 15:55:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflow66wjv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_ret_802_11_scan","mwifiex_handle_event_ext_scan_report","mwifiex_check_network_compatibility"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"2288997c-eba8-4f6d-8fc6-ef07c459bf4e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-14 15:55:38 +0000 UTC FinishedAt: 2026-08-14 15:55:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflow66wjv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_ret_802_11_scan","mwifiex_handle_event_ext_scan_report","mwifiex_check_network_compatibility"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"2288997c-eba8-4f6d-8fc6-ef07c459bf4e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-14 15:55:48 +0000 UTC FinishedAt: 2026-08-14 15:57:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow66wjv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_ret_802_11_scan","mwifiex_handle_event_ext_scan_report","mwifiex_check_network_compatibility"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"2288997c-eba8-4f6d-8fc6-ef07c459bf4e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-14 15:55:48 +0000 UTC FinishedAt: 2026-08-14 15:57:23 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*fffcae59-77ae-4394-b54e-fedfec980254,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*cab12184-7d67-4f8e-8dbd-f79aa3e192db,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-workflow66wjv/series-workflow66wjv-build-action-3646902190/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-workflow66wjv/series-workflow66wjv-build-action-1922280691/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-workflow66wjv/series-workflow66wjv-convert-artifact-3707502968/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,}