Name: series-workflow4dqm9 Phase: Succeeded StartedAt: 2026-07-26 07:54:48 +0000 UTC FinishedAt: 2026-07-26 10:27:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4dqm9[0] Phase: Succeeded StartedAt: 2026-07-26 07:54:48 +0000 UTC FinishedAt: 2026-07-26 08:32:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4dqm9[0].run-triage Phase: Succeeded StartedAt: 2026-07-26 07:54:48 +0000 UTC FinishedAt: 2026-07-26 08:32:04 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "3dab139d4795f688e4f243e40c7474df00d329d9", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MWIFIEX", "MWIFIEX_USB", "CFG80211", "USB" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "3dab139d4795f688e4f243e40c7474df00d329d9", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MWIFIEX", "MWIFIEX_USB", "CFG80211", "USB" ], "series_id": "a5f2d648-c9ae-4f69-b71a-620ef4288d84" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mwifiex_wait_queue_complete", "mwifiex_send_cmd", "mwifiex_scan_networks", "mwifiex_add_card" ], "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+CgkJCTx0ZD4yMDI2LzA3LzI2IDA4OjMwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01XSUZJRVgmIzM0OywKICAgICYjMzQ7TVdJRklFWF9VU0ImIzM0OywKICAgICYjMzQ7Q0ZHODAyMTEmIzM0OywKICAgICYjMzQ7VVNCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bXdpZmlleF93YWl0X3F1ZXVlX2NvbXBsZXRlJiMzNDssCiAgICAmIzM0O213aWZpZXhfc2VuZF9jbWQmIzM0OywKICAgICYjMzQ7bXdpZmlleF9zY2FuX25ldHdvcmtzJiMzNDssCiAgICAmIzM0O213aWZpZXhfYWRkX2NhcmQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1hcnZlbGwgV2lGaS1FeCBEcml2ZXIgdG8gZGV0YWNoIGEgY2FsbGVyLW93bmVkIGJ1ZmZlciBmcm9tIHRoZSBjdXJyZW50IGNvbW1hbmQgaWYgYSB3YWl0IGlzIGludGVycnVwdGVkLCBwcmV2ZW50aW5nIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIG1lbW9yeSBjb3JydXB0aW9uLiBJdCBhbHNvIHJlbW92ZXMgdGhlIFdRX0hJR0hQUkkgZmxhZyBmcm9tIHRoZSB3b3JrcXVldWUgYWxsb2NhdGlvbiBpbiBtd2lmaWV4X2FkZF9jYXJkIGFuZCBtd2lmaWV4X3JlaW5pdF9zdy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiBhIGRyaXZlciB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSB0aGUgVVNCIGludGVyZmFjZSwgd2hpY2ggaXMgZW11bGF0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSB1c2luZyB2aGNpIChkdW1teSBVU0IgZGV2aWNlKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwODozMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDhlMmY3NmFiN2JiMGM4ZjhkYzE0ODU0M2RiNWMxMzQzYTU0NzZlZmJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEp1bCAyNiAwODozMDozMSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uY1xuaW5kZXggYThlYWI2YjFlNjNiMGYuLmM4ZGYzZWRmZjY3NWZlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uY1xuQEAgLTE1NTAsNyAmIzQzOzE1NTAsNyBAQCBtd2lmaWV4X3JlaW5pdF9zdyhzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxuIFxuIFx0YWRhcHRlci1cdTAwM2V3b3JrcXVldWUgPVxuIFx0XHRhbGxvY193b3JrcXVldWUoXCYjMzQ7TVdJRklFWF9XT1JLX1FVRVVFXCYjMzQ7LFxuLVx0XHRcdFx0V1FfSElHSFBSSSB8IFdRX01FTV9SRUNMQUlNIHwgV1FfVU5CT1VORCwgMCk7XG4mIzQzO1x0XHRcdFx0V1FfTUVNX1JFQ0xBSU0gfCBXUV9VTkJPVU5ELCAwKTtcbiBcdGlmICghYWRhcHRlci1cdTAwM2V3b3JrcXVldWUpXG4gXHRcdGdvdG8gZXJyX2ttYWxsb2M7XG4gXG5AQCAtMTcxNiw3ICYjNDM7MTcxNiw3IEBAIG13aWZpZXhfYWRkX2NhcmQodm9pZCAqY2FyZCwgc3RydWN0IGNvbXBsZXRpb24gKmZ3X2RvbmUsXG4gXG4gXHRhZGFwdGVyLVx1MDAzZXdvcmtxdWV1ZSA9XG4gXHRcdGFsbG9jX3dvcmtxdWV1ZShcJiMzNDtNV0lGSUVYX1dPUktfUVVFVUVcJiMzNDssXG4tXHRcdFx0XHRXUV9ISUdIUFJJIHwgV1FfTUVNX1JFQ0xBSU0gfCBXUV9VTkJPVU5ELCAwKTtcbiYjNDM7XHRcdFx0XHRXUV9NRU1fUkVDTEFJTSB8IFdRX1VOQk9VTkQsIDApO1xuIFx0aWYgKCFhZGFwdGVyLVx1MDAzZXdvcmtxdWV1ZSlcbiBcdFx0Z290byBlcnJfa21hbGxvYztcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmNcbmluZGV4IDk0NjBkNTM1MmIyMzRlLi4xOTE5Njg0ODc3OGMwYyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jXG5AQCAtNTcsNiAmIzQzOzU3LDE4IEBAIGludCBtd2lmaWV4X3dhaXRfcXVldWVfY29tcGxldGUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcbiBcdFx0bXdpZmlleF9kYmcoYWRhcHRlciwgRVJST1IsIFwmIzM0O2NtZF93YWl0X3EgdGVybWluYXRlZDogJWRcXG5cJiMzNDssXG4gXHRcdFx0ICAgIHN0YXR1cyk7XG4gXHRcdG13aWZpZXhfY2FuY2VsX2FsbF9wZW5kaW5nX2NtZChhZGFwdGVyKTtcbiYjNDM7XG4mIzQzO1x0XHQvKiBUaGUgY29tbWFuZCByZXNwb25zZSBwYXRoIHdyaXRlcyB0aHJvdWdoIGNtZF9ub2RlLVx1MDAzZWRhdGFfYnVmLlxuJiM0MztcdFx0ICogT24gYW4gaW50ZXJydXB0ZWQgd2FpdCwgdGhlIGNhbGxlciBjYW4gcmV0dXJuIGFuZCByZWxlYXNlIGFcbiYjNDM7XHRcdCAqIHN0YWNrLWFsbG9jYXRlZCBkYXRhX2J1ZiBiZWZvcmUgYSBsYXRlIGZpcm13YXJlIHJlc3BvbnNlIGlzXG4mIzQzO1x0XHQgKiBwcm9jZXNzZWQuIERldGFjaCB0aGUgY2FsbGVyLW93bmVkIGJ1ZmZlciBmcm9tIHRoZSBjdXJyZW50XG4mIzQzO1x0XHQgKiBjb21tYW5kIHNvIGEgbGF0ZSByZXNwb25zZSBjYW5ub3QgY29ycnVwdCBmcmVlZCBzdGFjayBtZW1vcnkuXG4mIzQzO1x0XHQgKi9cbiYjNDM7XHRcdHNwaW5fbG9ja19iaChcdTAwMjZhZGFwdGVyLVx1MDAzZW13aWZpZXhfY21kX2xvY2spO1xuJiM0MztcdFx0aWYgKGFkYXB0ZXItXHUwMDNlY3Vycl9jbWQgPT0gY21kX3F1ZXVlZClcbiYjNDM7XHRcdFx0YWRhcHRlci1cdTAwM2VjdXJyX2NtZC1cdTAwM2VkYXRhX2J1ZiA9IE5VTEw7XG4mIzQzO1x0XHRzcGluX3VubG9ja19iaChcdTAwMjZhZGFwdGVyLVx1MDAzZW13aWZpZXhfY21kX2xvY2spO1xuJiM0MztcbiBcdFx0cmV0dXJuIHN0YXR1cztcbiBcdH1cbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwODozMDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TVdJRklFWCYjMzQ7LAogICAgJiMzNDtNV0lGSUVYX1VTQiYjMzQ7LAogICAgJiMzNDtDRkc4MDIxMSYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttd2lmaWV4X3dhaXRfcXVldWVfY29tcGxldGUmIzM0OywKICAgICYjMzQ7bXdpZmlleF9zZW5kX2NtZCYjMzQ7LAogICAgJiMzNDttd2lmaWV4X3NjYW5fbmV0d29ya3MmIzM0OywKICAgICYjMzQ7bXdpZmlleF9hZGRfY2FyZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWFydmVsbCBXaUZpLUV4IERyaXZlciB0byBkZXRhY2ggYSBjYWxsZXItb3duZWQgYnVmZmVyIGZyb20gdGhlIGN1cnJlbnQgY29tbWFuZCBpZiBhIHdhaXQgaXMgaW50ZXJydXB0ZWQsIHByZXZlbnRpbmcgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgbWVtb3J5IGNvcnJ1cHRpb24uIEl0IGFsc28gcmVtb3ZlcyB0aGUgV1FfSElHSFBSSSBmbGFnIGZyb20gdGhlIHdvcmtxdWV1ZSBhbGxvY2F0aW9uIGluIG13aWZpZXhfYWRkX2NhcmQgYW5kIG13aWZpZXhfcmVpbml0X3N3LiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIGEgZHJpdmVyIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIHRoZSBVU0IgaW50ZXJmYWNlLCB3aGljaCBpcyBlbXVsYXRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIHVzaW5nIHZoY2kgKGR1bW15IFVTQiBkZXZpY2UpLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgOGUyZjc2YWI3YmIwYzhmOGRjMTQ4NTQzZGI1YzEzNDNhNTQ3NmVmYgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gSnVsIDI2IDA4OjMwOjMxIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmMKaW5kZXggYThlYWI2YjFlNjNiMGYuLmM4ZGYzZWRmZjY3NWZlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmMKQEAgLTE1NTAsNyAmIzQzOzE1NTAsNyBAQCBtd2lmaWV4X3JlaW5pdF9zdyhzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKQogCiAJYWRhcHRlci0mZ3Q7d29ya3F1ZXVlID0KIAkJYWxsb2Nfd29ya3F1ZXVlKCYjMzQ7TVdJRklFWF9XT1JLX1FVRVVFJiMzNDssCi0JCQkJV1FfSElHSFBSSSB8IFdRX01FTV9SRUNMQUlNIHwgV1FfVU5CT1VORCwgMCk7CiYjNDM7CQkJCVdRX01FTV9SRUNMQUlNIHwgV1FfVU5CT1VORCwgMCk7CiAJaWYgKCFhZGFwdGVyLSZndDt3b3JrcXVldWUpCiAJCWdvdG8gZXJyX2ttYWxsb2M7CiAKQEAgLTE3MTYsNyAmIzQzOzE3MTYsNyBAQCBtd2lmaWV4X2FkZF9jYXJkKHZvaWQgKmNhcmQsIHN0cnVjdCBjb21wbGV0aW9uICpmd19kb25lLAogCiAJYWRhcHRlci0mZ3Q7d29ya3F1ZXVlID0KIAkJYWxsb2Nfd29ya3F1ZXVlKCYjMzQ7TVdJRklFWF9XT1JLX1FVRVVFJiMzNDssCi0JCQkJV1FfSElHSFBSSSB8IFdRX01FTV9SRUNMQUlNIHwgV1FfVU5CT1VORCwgMCk7CiYjNDM7CQkJCVdRX01FTV9SRUNMQUlNIHwgV1FfVU5CT1VORCwgMCk7CiAJaWYgKCFhZGFwdGVyLSZndDt3b3JrcXVldWUpCiAJCWdvdG8gZXJyX2ttYWxsb2M7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYwppbmRleCA5NDYwZDUzNTJiMjM0ZS4uMTkxOTY4NDg3NzhjMGMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmMKQEAgLTU3LDYgJiM0Mzs1NywxOCBAQCBpbnQgbXdpZmlleF93YWl0X3F1ZXVlX2NvbXBsZXRlKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsCiAJCW13aWZpZXhfZGJnKGFkYXB0ZXIsIEVSUk9SLCAmIzM0O2NtZF93YWl0X3EgdGVybWluYXRlZDogJWRcbiYjMzQ7LAogCQkJICAgIHN0YXR1cyk7CiAJCW13aWZpZXhfY2FuY2VsX2FsbF9wZW5kaW5nX2NtZChhZGFwdGVyKTsKJiM0MzsKJiM0MzsJCS8qIFRoZSBjb21tYW5kIHJlc3BvbnNlIHBhdGggd3JpdGVzIHRocm91Z2ggY21kX25vZGUtJmd0O2RhdGFfYnVmLgomIzQzOwkJICogT24gYW4gaW50ZXJydXB0ZWQgd2FpdCwgdGhlIGNhbGxlciBjYW4gcmV0dXJuIGFuZCByZWxlYXNlIGEKJiM0MzsJCSAqIHN0YWNrLWFsbG9jYXRlZCBkYXRhX2J1ZiBiZWZvcmUgYSBsYXRlIGZpcm13YXJlIHJlc3BvbnNlIGlzCiYjNDM7CQkgKiBwcm9jZXNzZWQuIERldGFjaCB0aGUgY2FsbGVyLW93bmVkIGJ1ZmZlciBmcm9tIHRoZSBjdXJyZW50CiYjNDM7CQkgKiBjb21tYW5kIHNvIGEgbGF0ZSByZXNwb25zZSBjYW5ub3QgY29ycnVwdCBmcmVlZCBzdGFjayBtZW1vcnkuCiYjNDM7CQkgKi8KJiM0MzsJCXNwaW5fbG9ja19iaCgmYW1wO2FkYXB0ZXItJmd0O213aWZpZXhfY21kX2xvY2spOwomIzQzOwkJaWYgKGFkYXB0ZXItJmd0O2N1cnJfY21kID09IGNtZF9xdWV1ZWQpCiYjNDM7CQkJYWRhcHRlci0mZ3Q7Y3Vycl9jbWQtJmd0O2RhdGFfYnVmID0gTlVMTDsKJiM0MzsJCXNwaW5fdW5sb2NrX2JoKCZhbXA7YWRhcHRlci0mZ3Q7bXdpZmlleF9jbWRfbG9jayk7CiYjNDM7CiAJCXJldHVybiBzdGF0dXM7CiAJfQogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA4OjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1ODYKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAyMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIFZ1bG5lcmFiaWxpdHkgaW4gdGhlIE1hcnZlbGwgV2lGaS1FeCBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0IHNlZW1zIHRvIGJlIHRvdWNoaW5nIGBtd2lmaWV4YCDigJMgc3BlY2lmaWNhbGx5LCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uY2AgYW5kIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmNgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtXaGF0JiMzOTtzIHRoZSBpbXBhY3Qgb2YgdGhlc2UgY2hhbmdlcz8mIzM0OyBJdCBsb29rcyBsaWtlIHRoZXkmIzM5O3JlIHJlbW92aW5nIGBXUV9ISUdIUFJJYCBmcm9tIGBhbGxvY193b3JrcXVldWVgIGluIGBtd2lmaWV4X3JlaW5pdF9zd2AgYW5kIGBtd2lmaWV4X2FkZF9jYXJkYCwgYW5kIGFsc28gYWRkaW5nIGEgbmV3IGNoZWNrIGluIGBtd2lmaWV4X3dhaXRfcXVldWVfY29tcGxldGVgIHRvIGhhbmRsZSBidWZmZXIgZGV0YWNobWVudCBkdXJpbmcgYW4gaW50ZXJydXB0ZWQgd2FpdC4KCk15IG5leHQgc3RlcCBpcyB0byBmaWd1cmUgb3V0IGlmIHRoaXMgaXMgYWN0dWFsbHkgZXhwbG9pdGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGhlIE1hcnZlbGwgV2lGaS1FeCBkcml2ZXIgKGBtd2lmaWV4YCkgdHlwaWNhbGx5IHN1cHBvcnRzIFNESU8sIFBDSWUsIGFuZCBVU0IgaW50ZXJmYWNlcy4gVVNCIGlzIG9mdGVuIHRoZSBlYXNpZXN0IHRvIGVtdWxhdGUgdXNpbmcgc29tZXRoaW5nIGxpa2UgYSBVU0IgZ2FkZ2V0IG9yIHZoY2kuIFNvLCB0aGUgY2hhbmNlcyBvZiB0aGlzIGJlaW5nIHJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGNvbnRleHQgYXJlIHByb2JhYmx5IGZhaXJseSBoaWdoLCB3aGljaCBpcyBpbXBvcnRhbnQgdG8gY29uc2lkZXIuCgpUbyBnZXQgYSBiZXR0ZXIgcGljdHVyZSwgSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNoZWNrIHRoZSBgS2NvbmZpZ2AgZmlsZSBpbiB0aGF0IGRpcmVjdG9yeS4gSSB3YW50IHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0aGF0IG1pZ2h0IHByb3ZpZGUgY2x1ZXMgYWJvdXQgdGhlIGNvbmRpdGlvbnMgbmVjZXNzYXJ5IHRvIHRyaWdnZXIgdGhpcywgb3IgaWYgSSBjYW4gZmlndXJlIG91dCBob3cgdGhlIGRyaXZlciBjYW4gYmUgbWFkZSBhdmFpbGFibGUgZm9yIHRlc3RpbmcuIFVuZGVyc3RhbmRpbmcgdGhlIGF2YWlsYWJsZSBjb25maWd1cmF0aW9ucyB3aWxsIGdpdmUgbWUgYW4gaWRlYSBhYm91dCBob3cgdG8gcmVwbGljYXRlIGEgdGVzdCBlbnZpcm9ubWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwODozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTVdJRklFWCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzoyOmNvbmZpZyBNV0lGSUVYXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBXaUZpLUV4IERyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTExLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6MTI6Y29uZmlnIE1XSUZJRVhfU0RJT1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMTMtXHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBTRDg3ODYvU0Q4Nzg3L1NEODc5Ny9TRDg4ODcvU0Q4ODk3L1NEODk3Ny9TRDg5NzgvU0Q4OTg3L1NEODk5N1wmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTI0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6MjU6Y29uZmlnIE1XSUZJRVhfUENJRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMjYtXHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBQQ0lFIDg3NjYvODg5Ny84OTk3XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzozNzpjb25maWcgTVdJRklFWF9VU0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTM4LVx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBXaUZpLUV4IERyaXZlciBmb3IgVVNCODc2Ni84Nzk3Lzg5OTdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwODozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTk5CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgYW5hbHl6aW5nIHRoaXMgY29kZToKCioqTVdJRklFWF9VU0IgRGVlcCBEaXZlKioKCk9rYXksIHNvIGBNV0lGSUVYX1VTQmAgaXMgY2xlYXJseSBpbiB0aGUgcGljdHVyZSwgd2hpY2ggbWVhbnMgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIFVTQi1iYXNlZCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgTVdJRklFWCBkcml2ZXIuIE15IGltbWVkaWF0ZSBuZXh0IHN0ZXAgaXMgdG8gZHJpbGwgZG93biBpbnRvIGhvdyB0aGUgYXN5bmNocm9ub3VzIGNvbXBsZXRpb24gbWVjaGFuaXNtIGlzIGJlaW5nIGhhbmRsZWQuIEkga25vdyB0aGlzIGRyaXZlciByZWxpZXMgb24gcXVldWluZywgc28gbGV0JiMzOTtzIGNoZWNrIGBtd2lmaWV4X3dhaXRfcXVldWVfY29tcGxldGVgLiBUaGlzIGZ1bmN0aW9uIGlzIGNyaXRpY2FsIGZvciBzeW5jaHJvbml6aW5nIHRoZSBkcml2ZXImIzM5O3Mgb3BlcmF0aW9uLCBzbyB1bmRlcnN0YW5kaW5nIGl0cyBiZWhhdmlvciBhbmQgcG90ZW50aWFsIGJvdHRsZW5lY2tzIGlzIHBhcmFtb3VudC4gSSBuZWVkIHRvIHRyYWNlICphbGwqIHRoZSBwbGFjZXMgdGhhdCBjYWxsIHRoaXMgZnVuY3Rpb24uIFRoYXQgd2lsbCB0ZWxsIG1lIHdoZXJlIHRoZXNlIGNvbXBsZXRpb24gZXZlbnRzIGFyZSBleHBlY3RlZCB0byBiZSBzaWduYWxlZCBmcm9tLCBhbmQgd2hlcmUgdGhlIGRyaXZlciBpcyBibG9ja2VkIHVudGlsIHRoZXNlIGV2ZW50cyBhcmUgcmVjZWl2ZWQuIEkgbmVlZCB0byBtYXAgb3V0IHRoZSBlbnRpcmUgY2FsbCBncmFwaCByZWxhdGVkIHRvIHRoaXMgd2FpdCBmdW5jdGlvbiwgYW5kIHVuZGVyc3RhbmQgYWxsIHRoZSBzdGF0ZXMgaXQmIzM5O3MgYmVpbmcgdXNlZCB0byBzeW5jaHJvbml6ZS4gVGhhdCB3aWxsIGdpdmUgbWUgdGhlIGJpZyBwaWN0dXJlIG9mIGFueSBkZXBlbmRlbmNpZXMgdGhhdCB3aWxsIGJlIGltcGFjdGVkIGJ5IGl0cyB1c2UsIGFuZCBpZiB0aGVyZSBhcmUgYW55IHJhY2UgY29uZGl0aW9ucyB0byBsb29rIG91dCBmb3IuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDg6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXdpZmlleF93YWl0X3F1ZXVlX2NvbXBsZXRlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY21kZXZ0LmM9NTQyPWludCBtd2lmaWV4X3NlbmRfY21kKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsIHUxNiBjbWRfbm8sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NtZGV2dC5jLTY2Ny1cdFx0aWYgKGNtZF9ub2RlLVx1MDAzZXdhaXRfcV9lbmFibGVkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NtZGV2dC5jOjY2ODpcdFx0XHRyZXQgPSBtd2lmaWV4X3dhaXRfcXVldWVfY29tcGxldGUoYWRhcHRlciwgY21kX25vZGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NtZGV2dC5jLTY2OS1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oPTE0NzY9aW50IG13aWZpZXhfY29weV9tY2FzdF9hZGRyKHN0cnVjdCBtd2lmaWV4X211bHRpY2FzdF9saXN0ICptbGlzdCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTQ3Ny1cdFx0XHQgICAgc3RydWN0IG5ldF9kZXZpY2UgKmRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oOjE0Nzg6aW50IG13aWZpZXhfd2FpdF9xdWV1ZV9jb21wbGV0ZShzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xNDc5LVx0XHRcdFx0c3RydWN0IGNtZF9jdHJsX25vZGUgKmNtZF9xdWV1ZWQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM9MTQ3MD1pbnQgbXdpZmlleF9zY2FuX25ldHdvcmtzKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0xNTQyLVx0XHRcdFx0XHQgICAgXCYjMzQ7d2FpdCBpbnRlcm5hbCBzY2FuXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM6MTU0MzpcdFx0XHRcdG13aWZpZXhfd2FpdF9xdWV1ZV9jb21wbGV0ZShhZGFwdGVyLCBjbWRfbm9kZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTE1NDQtXHRcdFx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYz0yNz1pbnQgbXdpZmlleF9jb3B5X21jYXN0X2FkZHIoc3RydWN0IG13aWZpZXhfbXVsdGljYXN0X2xpc3QgKm1saXN0LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYy00NC0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYzo0NTppbnQgbXdpZmlleF93YWl0X3F1ZXVlX2NvbXBsZXRlKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmMtNDYtXHRcdFx0XHRzdHJ1Y3QgY21kX2N0cmxfbm9kZSAqY21kX3F1ZXVlZClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwODozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NTIyCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMTE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgbXdpZmlleCBEcml2ZXIgZm9yIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgbXdpZmlleF93YWl0X3F1ZXVlX2NvbXBsZXRlYC4gVGhpcyBmdW5jdGlvbiBwb3BzIHVwIGluIGJvdGggYG13aWZpZXhfc2VuZF9jbWRgIGFuZCBgbXdpZmlleF9zY2FuX25ldHdvcmtzYC4gIGBtd2lmaWV4X3NlbmRfY21kYCBpcyBjbGVhcmx5IGEgY3JpdGljYWwgZnVuY3Rpb24sIHRoZSBiYWNrYm9uZSBmb3Igc2VuZGluZyBjb21tYW5kcyBkb3duIHRvIHRoZSBmaXJtd2FyZS4gIEdpdmVuIHRoYXQgdGhpcyBpcyBhIFVTQiBkcml2ZXIsIHRoZSBwb3RlbnRpYWwgZm9yIGZ1enppbmcgdXNpbmcgc3l6a2FsbGVyIGFuZCB0aGUgdmlydHVhbCBIQ0kgZGV2aWNlICh2aGNpKSBpcyByZWFsbHkgcHJvbWlzaW5nLiBUaGUgZW50cnkgcG9pbnRzLCB0aGUgY29tbWFuZCBmdW5jdGlvbnMgYXJlIGNsZWFybHkgdGhlcmUuIE5vdywgbGV0JiMzOTtzIG5haWwgZG93biB0aG9zZSBjb25maWd1cmF0aW9uIG9wdGlvbnMuIE5lZWQgdG8ga25vdyB3aGF0IHN3aXRjaGVzIGFyZSBlbmFibGVkLiBJJiMzOTttIHNlZWluZyBgTVdJRklFWGAgYW5kIGBNV0lGSUVYX1VTQmAgb3B0aW9ucy4gVGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnQuIExldCBtZSBjaGVjayB0aGUgZGVwZW5kZW5jaWVzIGZvciBgTVdJRklFWF9VU0JgIHRvIHVuZGVyc3RhbmQgdGhlIHNldHVwLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiB0byBkZXRlcm1pbmUgdGhlIG9wdGltYWwgZnV6emluZyBzdHJhdGVneS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwODozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTVdJRklFWF9VU0ImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZz0yNT1jb25maWcgTVdJRklFWF9QQ0lFXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzozNzpjb25maWcgTVdJRklFWF9VU0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTM4LVx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBXaUZpLUV4IERyaXZlciBmb3IgVVNCODc2Ni84Nzk3Lzg5OTdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwODozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MDE3CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEkmIzM5O20gd2VsbC12ZXJzZWQgaW4ga2VybmVsIGNvbmZpZ3VyYXRpb24gYW5kIE1hcnZlbGwgd2lyZWxlc3MgZHJpdmVyczoKCioqQW5hbHl6aW5nIHRoZSBNYXJ2ZWxsIFdpLUZpIERyaXZlciBLY29uZmlnKioKCkFscmlnaHQsIG15IGludGVybmFsIHJhZGFyIGlzIHBpbmdpbmcgYSBzcGVjaWZpYyBLY29uZmlnIGZpbGUg4oCTIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZ2Ag4oCTIGFuZCBJJiMzOTttIGRpcmVjdGluZyBteSBtZW50YWwgZm9jdXMgYXJvdW5kIGxpbmUgMzcuIEkmIzM5O20gaW1tZWRpYXRlbHkgdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgKndoeSogSSYjMzk7bSBiZWluZyBkcmF3biB0byB0aGF0IHBhcnRpY3VsYXIgc2VjdGlvbi4gQW0gSSBsb29raW5nIGZvciBhIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHJlbGF0ZWQgdG8gcG93ZXIgbWFuYWdlbWVudD8gUGVyaGFwcyBzb21lIGRlYnVnZ2luZyBmbGFncz8gT3IgbWF5YmUgSSYjMzk7bSB0cm91Ymxlc2hvb3RpbmcgYSBzcGVjaWZpYyBtb2R1bGUgc2VsZWN0aW9uIGlzc3VlIHJlbGF0ZWQgdG8gdGhlIE1hcnZlbGwgV2ktRmkgZHJpdmVyLiBJJiMzOTttIGxpa2VseSBsb29raW5nIGZvciBhIGRlcGVuZGVuY3kgb3IgYSBkZWZhdWx0IHZhbHVlIHJlbGF0ZWQgdG8gc29tZSBmZWF0dXJlcy4gSXQmIzM5O3MgdGltZSB0byBkaWcgaW50byB0aGF0IGZpbGUgYW5kIHNlZSB3aGF0JiMzOTtzIGJlaW5nIGNvbmZpZ3VyZWQgYXJvdW5kIHRoYXQgbGluZS4gTXkgZXhwZXJ0aXNlIGlzIG5vdyBiZWluZyBmb2N1c2VkIGluIG9uIHRoYXQgYXJlYSB0byBnZXQgYSBoYW5kbGUgb24gd2hhdCB0aGUgc3lzdGVtIGlzIGdvaW5nIHRvIGRvLiBMZXQmIzM5O3Mgc2VlIHdoYXQgc2VjcmV0cyB0aGF0IEtjb25maWcgZmlsZSBpcyBob2xkaW5nIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwODozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAzMDpcdFx0aGVscFxuICAzMTpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb24gTWFydmVsbFxuICAzMjpcdFx0ICA4NzY2Lzg4OTcvODk5NyBjaGlwc2V0cyB3aXRoIFBDSWUgaW50ZXJmYWNlLlxuICAzMzpcdFxuICAzNDpcdFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGl0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlIGNhbGxlZFxuICAzNTpcdFx0ICBtd2lmaWV4X3BjaWUuXG4gIDM2Olx0XG4gIDM3Olx0Y29uZmlnIE1XSUZJRVhfVVNCXG4gIDM4Olx0XHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBVU0I4NzY2Lzg3OTcvODk5N1wmIzM0O1xuICAzOTpcdFx0ZGVwZW5kcyBvbiBNV0lGSUVYIFx1MDAyNlx1MDAyNiBVU0JcbiAgNDA6XHRcdHNlbGVjdCBGV19MT0FERVJcbiAgNDE6XHRcdGhlbHBcbiAgNDI6XHRcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIHdpcmVsZXNzIGFkYXB0ZXJzIGJhc2VkIG9uIE1hcnZlbGxcbiAgNDM6XHRcdCAgODc5Ny84OTk3IGNoaXBzZXQgd2l0aCBVU0IgaW50ZXJmYWNlLlxuICA0NDpcdFxuICA0NTpcdFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGl0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlIGNhbGxlZFxuICA0NjpcdFx0ICBtd2lmaWV4X3VzYi5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDg6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTU3MwoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgZGVwZW5kZW5jaWVzLCBzdW1tYXJpemVkIGFzIGEgdGhvdWdodCBwcm9jZXNzOgoKKipEZXBlbmRlbmNpZXMgYW5kIFRoZWlyIFN0cnVjdHVyZSoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBmb2N1cyBoZXJlIGlzIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGUgYE1XSUZJRVhgIGRyaXZlciBhbmQgaXRzIGRlcGVuZGVuY2llcy4gSXQmIzM5O3MgY3J1Y2lhbCwgb2J2aW91c2x5LCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBtb2R1bGVzIHJlbGF0ZSB0byBlYWNoIG90aGVyIGZvciBhbnkgZGVidWdnaW5nIG9yIG1vZGlmaWNhdGlvbiBJJiMzOTtkIHdhbnQgdG8gZG8uCgpgTVdJRklFWGAgbmVlZHMgYFVTQmAgdG8gY29tbXVuaWNhdGUgd2l0aCB0aGUgaG9zdC4gVGhhdCBzZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoLCBnaXZlbiB0aGUgZHJpdmVyJiMzOTtzIGZ1bmN0aW9uLiBCdXQgYE1XSUZJRVhgIGl0c2VsZiBpc24mIzM5O3QgYSBzdGFuZGFsb25lIGVudGl0eS4gRGlnZ2luZyBkZWVwZXIsIEkgc2VlIGl0IGFsc28gaGFzIGRlcGVuZGVuY2llcyBvbiBgTUFDODAyMTFgIGFuZCBgQ0ZHODAyMTFgLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSByZWFsIHN0cnVjdHVyZSBiZWNvbWVzIGludGVyZXN0aW5nLiBUaGVzZSBhcmUgdGhlIGNvcmUgd2lyZWxlc3MgbmV0d29ya2luZyBjb21wb25lbnRzLCB0aGUgbG93ZXIgbGF5ZXJzLiBTbyBgTVdJRklFWGAgbGlrZWx5IHNpdHMgb24gdG9wIG9mIHRoZXNlLCBwcm92aWRpbmcgYSBtb3JlIHNwZWNpZmljIGludGVyZmFjZSBvciBmdW5jdGlvbmFsaXR5IHJlbGF0ZWQgdG8gYSBzcGVjaWZpYyBoYXJkd2FyZSBmYW1pbHkuIEVzc2VudGlhbGx5IGBNV0lGSUVYYCBsZXZlcmFnZXMgdGhlIGxvdyBsZXZlbCA4MDIuMTEgc3RhY2sgdG8gd29yayBvbiBVU0IuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA4OjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgTVdJRklFWFxuICAgMzpcdFx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBXaUZpLUV4IERyaXZlclwmIzM0O1xuICAgNDpcdFx0ZGVwZW5kcyBvbiBDRkc4MDIxMVxuICAgNTpcdFx0aGVscFxuICAgNjpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb24gTWFydmVsbFxuICAgNzpcdFx0ICA4MDIuMTFuL2FjIGNoaXBzZXRzLlxuICAgODpcdFxuICAgOTpcdFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGl0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlIGNhbGxlZFxuICAxMDpcdFx0ICBtd2lmaWV4LlxuICAxMTpcdFxuICAxMjpcdGNvbmZpZyBNV0lGSUVYX1NESU9cbiAgMTM6XHRcdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFNEODc4Ni9TRDg3ODcvU0Q4Nzk3L1NEODg4Ny9TRDg4OTcvU0Q4OTc3L1NEODk3OC9TRDg5ODcvU0Q4OTk3XCYjMzQ7XG4gIDE0Olx0XHRkZXBlbmRzIG9uIE1XSUZJRVggXHUwMDI2XHUwMDI2IE1NQ1xuICAxNTpcdFx0c2VsZWN0IEZXX0xPQURFUlxuICAxNjpcdFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXG4gIDE3Olx0XHRoZWxwXG4gIDE4Olx0XHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciB3aXJlbGVzcyBhZGFwdGVycyBiYXNlZCBvbiBNYXJ2ZWxsXG4gIDE5Olx0XHQgIDg3ODYvODc4Ny84Nzk3Lzg4ODcvODg5Ny84OTc3Lzg5NzgvODk4Ny84OTk3IGNoaXBzZXRzIHdpdGhcbiAgMjA6XHRcdCAgU0RJTyBpbnRlcmZhY2UuIFNEODk3OCBpcyBhbHNvIGtub3duIGFzIE5YUCBJVzQxNi5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDg6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjI1NAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDEwOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIHRoZSBNV0lGSUVYIERyaXZlcjogSW5pdGlhbCBBc3Nlc3NtZW50KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBNV0lGSUVYYCBkcml2ZXIgYW5kIGl0cyBhc3NvY2lhdGVkIGNvbmZpZ3VyYXRpb25zOiBgTVdJRklFWGAsIGBNV0lGSUVYX1VTQmAsIGBDRkc4MDIxMWAsIGFuZCB0aGUgZ2VuZXJhbCBgVVNCYCBzdXBwb3J0LiBUaGUgZ29hbCwgYXMgYWx3YXlzLCBpcyB0byBpZGVudGlmeSB2aWFibGUgZW50cnkgcG9pbnRzIGZvciBmdXp6aW5nLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSBJIGNhbiBpbmplY3QgbWFsZm9ybWVkIGRhdGEgdG8gdHJpZ2dlciBpbnRlcmVzdGluZyBiZWhhdmlvci4KClJpZ2h0IGF3YXksIGBtd2lmaWV4X3dhaXRfcXVldWVfY29tcGxldGVgIGNhdGNoZXMgbXkgZXllLiBJdCYjMzk7cyBjYWxsZWQgZnJvbSBgbXdpZmlleF9zZW5kX2NtZGAgYW5kIGBtd2lmaWV4X3NjYW5fbmV0d29ya3NgLCB3aGljaCBpcyBhIGRlY2VudCBzdGFydGluZyBwb2ludC4gYG13aWZpZXhfc2VuZF9jbWRgIGluIHBhcnRpY3VsYXIgbG9va3MgcHJvbWlzaW5nLiBJdCBzZWVtcyBsaWtlIGEgY2VudHJhbCBjb21tYW5kIGhhbmRsZXIgYW5kIGlzIGxpa2VseSB0byB0b3VjaCBhIGxvdCBvZiBkaWZmZXJlbnQgY29kZSBwYXRocy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGJlaGF2aW9yIGFuZCB3aGF0IGtpbmQgb2YgZGF0YSBpdCBhY2NlcHRzLgoKTm93LCBsZXQmIzM5O3MgZHJpbGwgZG93bi4gSSBzaG91bGQgY2hlY2sgd2hhdCBvdGhlciBmdW5jdGlvbnMgY2FsbCBgbXdpZmlleF9zZW5kX2NtZGAuIFRoYXQmIzM5O2xsIGhlbHAgbWUgdW5kZXJzdGFuZCB0aGUgY29tcGxldGUgZXhlY3V0aW9uIGZsb3cgdG8gZmluZCBtb3JlIGludGVyZXN0aW5nIGVudHJ5cG9pbnRzLiBGaW5kaW5nIGFsbCB0aGUgY2FsbCBzaXRlcyB0byB0aGlzIGNvbW1hbmQgaGFuZGxlciB3b3VsZCBnaXZlIG1lIGEgZ29vZCBpbnNpZ2h0IGludG8gdGhlIG92ZXJhbGwgZHJpdmVyIHN0cnVjdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDg6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXdpZmlleF9zZW5kX2NtZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDczNyBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jPTcwPWludCBtd2lmaWV4XzExaF9hY3RpdmF0ZShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCBib29sIGZsYWcpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTc3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjc4Olx0cmV0dXJuIG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfODAyXzExX1NOTVBfTUlCLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTc5LVx0XHRcdFx0SG9zdENtZF9BQ1RfR0VOX1NFVCwgRE9UMTFIX0ksIFx1MDAyNmVuYWJsZSwgdHJ1ZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jPTE1OT1pbnQgbXdpZmlleF9zdG9wX3JhZGFyX2RldGVjdGlvbihzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xNjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MTY4Olx0cmV0dXJuIG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfQ0hBTl9SRVBPUlRfUkVRVUVTVCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xNjktXHRcdFx0XHRIb3N0Q21kX0FDVF9HRU5fU0VULCAwLCBcdTAwMjZyYWRhcl9wYXJhbXMsIHRydWUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYz01NzY9aW50IG13aWZpZXhfc2VuZF9hZGRiYShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCBpbnQgdGlkLCB1OCAqcGVlcl9tYWMpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTYyOC1cdC8qIFdlIGRvbiYjMzk7dCB3YWl0IGZvciB0aGUgcmVzcG9uc2Ugb2YgdGhpcyBjb21tYW5kICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NjI5Olx0cmV0ID0gbXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF8xMU5fQUREQkFfUkVRLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTYzMC1cdFx0XHQgICAgICAgMCwgMCwgXHUwMDI2YWRkX2JhX3JlcSwgZmFsc2UpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYz02Mzg9aW50IG13aWZpZXhfc2VuZF9kZWxiYShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCBpbnQgdGlkLCB1OCAqcGVlcl9tYWMsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTY1Ny1cdC8qIFdlIGRvbiYjMzk7dCB3YWl0IGZvciB0aGUgcmVzcG9uc2Ugb2YgdGhpcyBjb21tYW5kICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NjU4Olx0cmV0ID0gbXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF8xMU5fREVMQkEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtNjU5LVx0XHRcdCAgICAgICBIb3N0Q21kX0FDVF9HRU5fU0VULCAwLCBcdTAwMjZkZWxiYSwgZmFsc2UpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW5fcnhyZW9yZGVyLmM9NzY1PXZvaWQgbXdpZmlleF8xMW5fYmFfc3RyZWFtX3RpbWVvdXQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuX3J4cmVvcmRlci5jLTc3Ny1cdGRlbGJhLnJlYXNvbl9jb2RlID0gY3B1X3RvX2xlMTYoV0xBTl9SRUFTT05fUVNUQV9USU1FT1VUKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW5fcnhyZW9yZGVyLmM6Nzc4Olx0bXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF8xMU5fREVMQkEsIDAsIDAsIFx1MDAyNmRlbGJhLCBmYWxzZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuX3J4cmVvcmRlci5jLTc3OS19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM9MjgyPW13aWZpZXhfY2ZnODAyMTFfdXBkYXRlX21nbXRfZnJhbWVfcmVnaXN0cmF0aW9ucyhzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTI5Mi1cdFx0XHRwcml2LVx1MDAzZW1nbXRfZnJhbWVfbWFzayB8PSBIT1NUX01MTUVfTUdNVF9NQVNLO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM6MjkzOlx0XHRtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX01HTVRfRlJBTUVfUkVHLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMjk0LVx0XHRcdFx0IEhvc3RDbWRfQUNUX0dFTl9TRVQsIDAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM9NDEzPW13aWZpZXhfY2ZnODAyMTFfZ2V0X3R4X3Bvd2VyKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtNDIwLVx0XHRcdFx0XHRcdFx0TVdJRklFWF9CU1NfUk9MRV9BTlkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM6NDIxOlx0aW50IHJldCA9IG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfUkZfVFhfUFdSLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtNDIyLVx0XHRcdFx0ICAgSG9zdENtZF9BQ1RfR0VOX0dFVCwgMCwgTlVMTCwgdHJ1ZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM9NTIxPW13aWZpZXhfY2ZnODAyMTFfc2V0X2RlZmF1bHRfbWdtdF9rZXkoc3RydWN0IHdpcGh5ICp3aXBoeSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy01MzktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYzo1NDA6XHRpZiAobXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF84MDJfMTFfS0VZX01BVEVSSUFMLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtNTQxLVx0XHRcdCAgICAgSG9zdENtZF9BQ1RfR0VOX1NFVCwgdHJ1ZSwgXHUwMDI2ZW5jcnlwdF9rZXksIHRydWUpKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM9NTU3PWludCBtd2lmaWV4X3NlbmRfZG9tYWluX2luZm9fY21kX2Z3KHN0cnVjdCB3aXBoeSAqd2lwaHkpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtNjI3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM6NjI4Olx0aWYgKG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfODAyXzExRF9ET01BSU5fSU5GTyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTYyOS1cdFx0XHQgICAgIEhvc3RDbWRfQUNUX0dFTl9TRVQsIDAsIE5VTEwsIGZhbHNlKSkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jPTcwNz1td2lmaWV4X3NldF9mcmFnKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsIHUzMiBmcmFnX3Rocilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy03MTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYzo3MTM6XHRyZXR1cm4gbXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF84MDJfMTFfU05NUF9NSUIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy03MTQtXHRcdFx0XHRIb3N0Q21kX0FDVF9HRU5fU0VULCBGUkFHX1RIUkVTSF9JLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jPTcyNT1td2lmaWV4X3NldF9ydHMoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgdTMyIHJ0c190aHIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtNzI5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM6NzMwOlx0cmV0dXJuIG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfODAyXzExX1NOTVBfTUlCLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtNzMxLVx0XHRcdFx0SG9zdENtZF9BQ1RfR0VOX1NFVCwgUlRTX1RIUkVTSF9JLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jPTc0Mj1td2lmaWV4X2NmZzgwMjExX3NldF93aXBoeV9wYXJhbXMoc3RydWN0IHdpcGh5ICp3aXBoeSwgaW50IHJhZGlvX2lkeCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy03NzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYzo3NzM6XHRcdHJldCA9IG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfVUFQX1NZU19DT05GSUcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy03NzQtXHRcdFx0XHQgICAgICAgSG9zdENtZF9BQ1RfR0VOX1NFVCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYz04MTE9bXdpZmlleF9jZmc4MDIxMV9kZWluaXRfcDJwKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtODE0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM6ODE1Olx0aWYgKG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfUDJQX01PREVfQ0ZHLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtODE2LVx0XHRcdCAgICAgSG9zdENtZF9BQ1RfR0VOX1NFVCwgMCwgXHUwMDI2bW9kZSwgdHJ1ZSkpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM9ODI4PW13aWZpZXhfY2ZnODAyMTFfaW5pdF9wMnBfY2xpZW50KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtODM1LVx0bW9kZSA9IFAyUF9NT0RFX0RFVklDRTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jOjgzNjpcdGlmIChtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX1AyUF9NT0RFX0NGRyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTgzNy1cdFx0XHQgICAgIEhvc3RDbWRfQUNUX0dFTl9TRVQsIDAsIFx1MDAyNm1vZGUsIHRydWUpKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTg0MC1cdG1vZGUgPSBQMlBfTU9ERV9DTElFTlQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYzo4NDE6XHRpZiAobXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF9QMlBfTU9ERV9DRkcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy04NDItXHRcdFx0ICAgICBIb3N0Q21kX0FDVF9HRU5fU0VULCAwLCBcdTAwMjZtb2RlLCB0cnVlKSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYz04NTQ9bXdpZmlleF9jZmc4MDIxMV9pbml0X3AycF9nbyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTg2MS1cdG1vZGUgPSBQMlBfTU9ERV9ERVZJQ0U7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYzo4NjI6XHRpZiAobXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF9QMlBfTU9ERV9DRkcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy04NjMtXHRcdFx0ICAgICBIb3N0Q21kX0FDVF9HRU5fU0VULCAwLCBcdTAwMjZtb2RlLCB0cnVlKSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy04NjYtXHRtb2RlID0gUDJQX01PREVfR087XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYzo4Njc6XHRpZiAobXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF9QMlBfTU9ERV9DRkcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy04NjgtXHRcdFx0ICAgICBIb3N0Q21kX0FDVF9HRU5fU0VULCAwLCBcdTAwMjZtb2RlLCB0cnVlKSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYz04NzQ9c3RhdGljIGludCBtd2lmaWV4X2RlaW5pdF9wcml2X3BhcmFtcyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTg4MC1cdHByaXYtXHUwMDNlbWdtdF9mcmFtZV9tYXNrID0gMDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jOjg4MTpcdGlmIChtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX01HTVRfRlJBTUVfUkVHLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtODgyLVx0XHRcdCAgICAgSG9zdENtZF9BQ1RfR0VOX1NFVCwgMCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYz0xMDg1PW13aWZpZXhfY2hhbmdlX3ZpZl90b19wMnAoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0xMTI3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM6MTEyODpcdGlmIChtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX1NFVF9CU1NfTU9ERSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTExMjktXHRcdFx0ICAgICBIb3N0Q21kX0FDVF9HRU5fU0VULCAwLCBOVUxMLCB0cnVlKSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYz0xMTM5PW13aWZpZXhfY2hhbmdlX3ZpZl90b19zdGFfYWRob2Moc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0xMTY5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM6MTE3MDpcdGlmIChtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX1NFVF9CU1NfTU9ERSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTExNzEtXHRcdFx0ICAgICBIb3N0Q21kX0FDVF9HRU5fU0VULCAwLCBOVUxMLCB0cnVlKSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYz0xMTgwPW13aWZpZXhfY2hhbmdlX3ZpZl90b19hcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTEyMDYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYzoxMjA3Olx0aWYgKG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfU0VUX0JTU19NT0RFLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMTIwOC1cdFx0XHQgICAgIEhvc3RDbWRfQUNUX0dFTl9TRVQsIDAsIE5VTEwsIHRydWUpKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jPTEyMTk9bXdpZmlleF9jZmc4MDIxMV9jaGFuZ2VfdmlydHVhbF9pbnRmKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMTI2Mi1cdFx0XHRtd2lmaWV4X2RlYXV0aGVudGljYXRlKHByaXYsIE5VTEwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM6MTI2MzpcdFx0XHRyZXR1cm4gbXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF9TRVRfQlNTX01PREUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0xMjY0LVx0XHRcdFx0XHRcdEhvc3RDbWRfQUNUX0dFTl9TRVQsIDAsIE5VTEwsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMTI4NC1cdFx0XHRtd2lmaWV4X2RlYXV0aGVudGljYXRlKHByaXYsIE5VTEwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM6MTI4NTpcdFx0XHRyZXR1cm4gbXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF9TRVRfQlNTX01PREUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0xMjg2LVx0XHRcdFx0XHRcdEhvc3RDbWRfQUNUX0dFTl9TRVQsIDAsIE5VTEwsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM9MTQ2MT1td2lmaWV4X2R1bXBfc3RhdGlvbl9pbmZvKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMTQ5Ny1cdC8qIEdldCBzaWduYWwgaW5mb3JtYXRpb24gZnJvbSB0aGUgZmlybXdhcmUgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jOjE0OTg6XHRpZiAobXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF9SU1NJX0lORk8sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0xNDk5LVx0XHRcdCAgICAgSG9zdENtZF9BQ1RfR0VOX0dFVCwgMCwgTlVMTCwgdHJ1ZSkpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0xNTExLVx0LyogR2V0IERUSU0gcGVyaW9kIGluZm9ybWF0aW9uIGZyb20gZmlybXdhcmUgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jOjE1MTI6XHRtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EXzgwMl8xMV9TTk1QX01JQixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTE1MTMtXHRcdFx0IEhvc3RDbWRfQUNUX0dFTl9HRVQsIERUSU1fUEVSSU9EX0ksXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM9MTU3NT1td2lmaWV4X2NmZzgwMjExX2R1bXBfc3RhdGlvbihzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTE1ODYtXHR9IGVsc2UgaWYgKEdFVF9CU1NfUk9MRShwcml2KSA9PSBNV0lGSUVYX0JTU19ST0xFX1VBUCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM6MTU4NzpcdFx0bXdpZmlleF9zZW5kX2NtZChwcml2LCBIT1NUX0NNRF9BUENNRF9TVEFfTElTVCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTE1ODgtXHRcdFx0XHQgSG9zdENtZF9BQ1RfR0VOX0dFVCwgMCwgTlVMTCwgdHJ1ZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM9MTc3OD1td2lmaWV4X2NmZzgwMjExX3NldF9iaXRyYXRlX21hc2soc3RydWN0IHdpcGh5ICp3aXBoeSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0xODIwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM6MTgyMTpcdHJldHVybiBtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX1RYX1JBVEVfQ0ZHLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMTgyMi1cdFx0XHRcdEhvc3RDbWRfQUNUX0dFTl9TRVQsIDAsIGJpdG1hcF9yYXRlcywgdHJ1ZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM9MTgzMT1zdGF0aWMgaW50IG13aWZpZXhfY2ZnODAyMTFfc2V0X2NxbV9yc3NpX2NvbmZpZyhzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTE4NTAtXHRcdHN1YnNjX2V2dC5iY25faF9yc3NpX2NmZy5ldnRfZnJlcSA9IDE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYzoxODUxOlx0XHRyZXR1cm4gbXdpZmlleF9zZW5kX2NtZChwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMTg1Mi1cdFx0XHRcdFx0SG9zdENtZF9DTURfODAyXzExX1NVQlNDUklCRV9FVkVOVCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0xODU1LVx0XHRzdWJzY19ldnQuYWN0aW9uID0gSG9zdENtZF9BQ1RfQklUV0lTRV9DTFI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYzoxODU2Olx0XHRyZXR1cm4gbXdpZmlleF9zZW5kX2NtZChwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMTg1Ny1cdFx0XHRcdFx0SG9zdENtZF9DTURfODAyXzExX1NVQlNDUklCRV9FVkVOVCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYz0xOTA1PW13aWZpZXhfY2ZnODAyMTFfZGVsX3N0YXRpb24oc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2Rldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0xOTM1LVx0aWYgKGlzX3ZhbGlkX2V0aGVyX2FkZHIoZGVhdXRoX21hYykpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jOjE5MzY6XHRcdGlmIChtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX1VBUF9TVEFfREVBVVRILFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMTkzNy1cdFx0XHRcdCAgICAgSG9zdENtZF9BQ1RfR0VOX1NFVCwgMCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYz0xOTQ2PW13aWZpZXhfY2ZnODAyMTFfc2V0X2FudGVubmEoc3RydWN0IHdpcGh5ICp3aXBoeSwgaW50IHJhZGlvX2lkeCwgdTMyIHR4X2FudCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0yMDA0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM6MjAwNTpcdHJldHVybiBtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX1JGX0FOVEVOTkEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0yMDA2LVx0XHRcdFx0SG9zdENtZF9BQ1RfR0VOX1NFVCwgMCwgXHUwMDI2YW50X2NmZywgdHJ1ZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM9MjAxMD1td2lmaWV4X2NmZzgwMjExX2dldF9hbnRlbm5hKHN0cnVjdCB3aXBoeSAqd2lwaHksIGludCByYWRpb19pZHgsIHUzMiAqdHhfYW50LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTIwMTUtXHRcdFx0XHRcdFx0XHRNV0lGSUVYX0JTU19ST0xFX0FOWSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYzoyMDE2Olx0bXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF9SRl9BTlRFTk5BLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMjAxNy1cdFx0XHQgSG9zdENtZF9BQ1RfR0VOX0dFVCwgMCwgTlVMTCwgdHJ1ZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM9MjAyOD1zdGF0aWMgaW50IG13aWZpZXhfY2ZnODAyMTFfc3RvcF9hcChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTIwNDEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYzoyMDQyOlx0aWYgKG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfVUFQX0JTU19TVE9QLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMjA0My1cdFx0XHQgICAgIEhvc3RDbWRfQUNUX0dFTl9TRVQsIDAsIE5VTEwsIHRydWUpKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMjA0OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jOjIwNDk6XHRpZiAobXdpZmlleF9zZW5kX2NtZChwcml2LCBIT1NUX0NNRF9BUENNRF9TWVNfUkVTRVQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0yMDUwLVx0XHRcdCAgICAgSG9zdENtZF9BQ1RfR0VOX1NFVCwgMCwgTlVMTCwgdHJ1ZSkpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYz0yMjY2PW13aWZpZXhfY2ZnODAyMTFfYXNzb2Moc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgc2l6ZV90IHNzaWRfbGVuLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTIzMDMtXHRcdC8qIHNldCBpYnNzIGNvYWxlc2Npbmdfc3RhdHVzICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYzoyMzA0Olx0XHRyZXQgPSBtd2lmaWV4X3NlbmRfY21kKFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMjMwNS1cdFx0XHRcdHByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM9Mjc3MD1td2lmaWV4X2NmZzgwMjExX3NjaGVkX3NjYW5fc3RhcnQoc3RydWN0IHdpcGh5ICp3aXBoeSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0yODUyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM6Mjg1MzpcdGlmIChtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EXzgwMl8xMV9CR19TQ0FOX0NPTkZJRyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTI4NTQtXHRcdFx0ICAgICBIb3N0Q21kX0FDVF9HRU5fU0VULCAwLCBiZ3NjYW5fY2ZnLCB0cnVlKSkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jPTI5ODI9c3RydWN0IHdpcmVsZXNzX2RldiAqbXdpZmlleF9hZGRfdmlydHVhbF9pbnRmKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMzExMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jOjMxMTQ6XHRcdHJldCA9IG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfU0VUX0JTU19NT0RFLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMzExNS1cdFx0XHRcdCAgICAgICBIb3N0Q21kX0FDVF9HRU5fU0VULCAwLCBOVUxMLCB0cnVlKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYz0zNDQ3PXN0YXRpYyBpbnQgbXdpZmlleF9zZXRfbWVmX2ZpbHRlcihzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTM0ODAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYzozNDgxOlx0cmV0ID0gbXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF9NRUZfQ0ZHLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMzQ4Mi1cdFx0XHRIb3N0Q21kX0FDVF9HRU5fU0VULCAwLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jPTM2NTM9c3RhdGljIGludCBtd2lmaWV4X3NldF9yZWtleV9kYXRhKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMzY2My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jOjM2NjQ6XHRyZXR1cm4gbXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF9HVEtfUkVLRVlfT0ZGTE9BRF9DRkcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0zNjY1LVx0XHRcdFx0SG9zdENtZF9BQ1RfR0VOX1NFVCwgMCwgZGF0YSwgdHJ1ZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM9Mzc1MD1zdGF0aWMgaW50IG13aWZpZXhfY2ZnODAyMTFfc2V0X2NvYWxlc2NlKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMzc2Mi1cdFx0XHQgICAgXCYjMzQ7RGlzYWJsZSBjb2FsZXNjZSBhbmQgcmVzZXQgYWxsIHByZXZpb3VzIHJ1bGVzXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jOjM3NjM6XHRcdHJldHVybiBtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX0NPQUxFU0NFX0NGRyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTM3NjQtXHRcdFx0XHRcdEhvc3RDbWRfQUNUX0dFTl9TRVQsIDAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMzc3OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jOjM3ODA6XHRyZXR1cm4gbXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF9DT0FMRVNDRV9DRkcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0zNzgxLVx0XHRcdFx0SG9zdENtZF9BQ1RfR0VOX1NFVCwgMCwgXHUwMDI2Y29hbGVzY2VfY2ZnLCB0cnVlKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYz0zOTc5PW13aWZpZXhfY2ZnODAyMTFfdWFwX2FkZF9zdGF0aW9uKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsIGNvbnN0IHU4ICptYWMsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMzk4Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jOjM5ODg6XHRyZXQgPSBtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX0FERF9ORVdfU1RBVElPTixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTM5ODktXHRcdFx0ICAgICAgIEhvc3RDbWRfQUNUX0FERF9TVEEsIDAsICh2b2lkICopXHUwMDI2YWRkX3N0YSwgdHJ1ZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM9NDE0Mj1zdGF0aWMgaW50IG13aWZpZXhfdG1fY21kKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtNDE3NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jOjQxNzU6XHRcdGlmIChtd2lmaWV4X3NlbmRfY21kKHByaXYsIDAsIDAsIDAsIGhvc3RjbWQsIHRydWUpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy00MTc2LVx0XHRcdGRldl9lcnIocHJpdi1cdTAwM2VhZGFwdGVyLVx1MDAzZWRldiwgXCYjMzQ7RmFpbGVkIHRvIHByb2Nlc3MgaG9zdGNtZFxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM9NDIwNT1td2lmaWV4X2NmZzgwMjExX3N0YXJ0X3JhZGFyX2RldGVjdGlvbihzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTQyMzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYzo0MjM2Olx0aWYgKG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfQ0hBTl9SRVBPUlRfUkVRVUVTVCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTQyMzctXHRcdFx0ICAgICBIb3N0Q21kX0FDVF9HRU5fU0VULCAwLCBcdTAwMjZyYWRhcl9wYXJhbXMsIHRydWUpKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jPTQyNzQ9bXdpZmlleF9jZmc4MDIxMV9hdXRoZW50aWNhdGUoc3RydWN0IHdpcGh5ICp3aXBoeSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy00MzA5LVx0XHRwcml2LVx1MDAzZW1nbXRfZnJhbWVfbWFzayB8PSBIT1NUX01MTUVfTUdNVF9NQVNLO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM6NDMxMDpcdFx0bXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF9NR01UX0ZSQU1FX1JFRyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTQzMTEtXHRcdFx0XHQgSG9zdENtZF9BQ1RfR0VOX1NFVCwgMCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYz00NzAwPWludCBtd2lmaWV4X3JlZ2lzdGVyX2NmZzgwMjExKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtNDkwOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jOjQ5MTA6XHRtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EXzgwMl8xMV9TTk1QX01JQixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTQ5MTEtXHRcdFx0IEhvc3RDbWRfQUNUX0dFTl9HRVQsIEZSQUdfVEhSRVNIX0ksIFx1MDAyNnRociwgdHJ1ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy00OTEyLVx0d2lwaHktXHUwMDNlZnJhZ190aHJlc2hvbGQgPSB0aHI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYzo0OTEzOlx0bXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF84MDJfMTFfU05NUF9NSUIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy00OTE0LVx0XHRcdCBIb3N0Q21kX0FDVF9HRU5fR0VULCBSVFNfVEhSRVNIX0ksIFx1MDAyNnRociwgdHJ1ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy00OTE1LVx0d2lwaHktXHUwMDNlcnRzX3RocmVzaG9sZCA9IHRocjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jOjQ5MTY6XHRtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EXzgwMl8xMV9TTk1QX01JQixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTQ5MTctXHRcdFx0IEhvc3RDbWRfQUNUX0dFTl9HRVQsIFNIT1JUX1JFVFJZX0xJTV9JLCBcdTAwMjZyZXRyeSwgdHJ1ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy00OTE4LVx0d2lwaHktXHUwMDNlcmV0cnlfc2hvcnQgPSAodTgpIHJldHJ5O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM6NDkxOTpcdG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfODAyXzExX1NOTVBfTUlCLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtNDkyMC1cdFx0XHQgSG9zdENtZF9BQ1RfR0VOX0dFVCwgTE9OR19SRVRSWV9MSU1fSSwgXHUwMDI2cmV0cnksIHRydWUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jbWRldnQuYz00NzA9aW50IG13aWZpZXhfcHJvY2Vzc19ldmVudChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jbWRldnQuYy01NDEtICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY21kZXZ0LmM6NTQyOmludCBtd2lmaWV4X3NlbmRfY21kKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsIHUxNiBjbWRfbm8sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY21kZXZ0LmMtNTQzLVx0XHQgICAgIHUxNiBjbWRfYWN0aW9uLCB1MzIgY21kX29pZCwgdm9pZCAqZGF0YV9idWYsIGJvb2wgc3luYylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvZGVidWdmcy5jPTYwND1td2lmaWV4X21lbXJ3X3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqdWJ1Ziwgc2l6ZV90IGNvdW50LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9kZWJ1Z2ZzLmMtNjM0LVx0bWVtY3B5KFx1MDAyNnByaXYtXHUwMDNlbWVtX3J3LCBcdTAwMjZtZW1fcncsIHNpemVvZihtZW1fcncpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9kZWJ1Z2ZzLmM6NjM1Olx0aWYgKG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfTUVNX0FDQ0VTUywgY21kX2FjdGlvbiwgMCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9kZWJ1Z2ZzLmMtNjM2LVx0XHRcdCAgICAgXHUwMDI2bWVtX3J3LCB0cnVlKSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvZGVidWdmcy5jPTg0ND1td2lmaWV4X3RpbWVzaGFyZV9jb2V4X3JlYWQoc3RydWN0IGZpbGUgKmZpbGUsIGNoYXIgX191c2VyICp1YnVmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9kZWJ1Z2ZzLmMtODU1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2RlYnVnZnMuYzo4NTY6XHRyZXQgPSBtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX1JPQlVTVF9DT0VYLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2RlYnVnZnMuYy04NTctXHRcdFx0ICAgICAgIEhvc3RDbWRfQUNUX0dFTl9HRVQsIDAsIFx1MDAyNnRpbWVzaGFyZV9jb2V4LCB0cnVlKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvZGVidWdmcy5jPTg2Nj1td2lmaWV4X3RpbWVzaGFyZV9jb2V4X3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqdWJ1Zixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvZGVidWdmcy5jLTg3OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9kZWJ1Z2ZzLmM6ODgwOlx0cmV0ID0gbXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF9ST0JVU1RfQ09FWCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9kZWJ1Z2ZzLmMtODgxLVx0XHRcdCAgICAgICBIb3N0Q21kX0FDVF9HRU5fU0VULCAwLCBcdTAwMjZ0aW1lc2hhcmVfY29leCwgdHJ1ZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2llLmM9Njk9bXdpZmlleF91cGRhdGVfYXV0b2luZGV4X2llcyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9pZS5jLTEyOS1cdGlmIChHRVRfQlNTX1JPTEUocHJpdikgPT0gTVdJRklFWF9CU1NfUk9MRV9VQVApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvaWUuYzoxMzA6XHRcdHJldHVybiBtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX1VBUF9TWVNfQ09ORklHLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2llLmMtMTMxLVx0XHRcdFx0XHRIb3N0Q21kX0FDVF9HRU5fU0VULFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9qb2luLmM9ODY4PW13aWZpZXhfY21kXzgwMl8xMV9hZF9ob2Nfc3RhcnQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvam9pbi5jLTk5OC1cdCAgICAocHJpdi1cdTAwM2VjdXJyX3BrdF9maWx0ZXIgXHUwMDI2IEhvc3RDbWRfQUNUX01BQ19BREhPQ19HX1BST1RFQ1RJT05fT04pKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvam9pbi5jOjk5OTpcdFx0aWYgKG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfTUFDX0NPTlRST0wsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvam9pbi5jLTEwMDAtXHRcdFx0XHQgICAgIEhvc3RDbWRfQUNUX0dFTl9TRVQsIDAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2pvaW4uYz0xMTQ4PW13aWZpZXhfY21kXzgwMl8xMV9hZF9ob2Nfam9pbihzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9qb2luLmMtMTE3MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9qb2luLmM6MTE3MTpcdFx0aWYgKG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfTUFDX0NPTlRST0wsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvam9pbi5jLTExNzItXHRcdFx0XHQgICAgIEhvc3RDbWRfQUNUX0dFTl9TRVQsIDAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2pvaW4uYz0xMzk3PWludCBtd2lmaWV4X2Fzc29jaWF0ZShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9qb2luLmMtMTQxNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9qb2luLmM6MTQxODpcdHJldHVybiBtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EXzgwMl8xMV9BU1NPQ0lBVEUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvam9pbi5jLTE0MTktXHRcdFx0XHRIb3N0Q21kX0FDVF9HRU5fU0VULCAwLCBic3NfZGVzYywgdHJ1ZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2pvaW4uYz0xNDI4PW13aWZpZXhfYWRob2Nfc3RhcnQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvam9pbi5jLTE0NDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvam9pbi5jOjE0NDQ6XHRyZXR1cm4gbXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF84MDJfMTFfQURfSE9DX1NUQVJULFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2pvaW4uYy0xNDQ1LVx0XHRcdFx0SG9zdENtZF9BQ1RfR0VOX1NFVCwgMCwgYWRob2Nfc3NpZCwgdHJ1ZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2pvaW4uYz0xNDU0PWludCBtd2lmaWV4X2FkaG9jX2pvaW4oc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvam9pbi5jLTE0OTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvam9pbi5jOjE0OTQ6XHRyZXR1cm4gbXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF84MDJfMTFfQURfSE9DX0pPSU4sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvam9pbi5jLTE0OTUtXHRcdFx0XHRIb3N0Q21kX0FDVF9HRU5fU0VULCAwLCBic3NfZGVzYywgdHJ1ZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2pvaW4uYz0xNTAyPXN0YXRpYyBpbnQgbXdpZmlleF9kZWF1dGhlbnRpY2F0ZV9pbmZyYShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCB1OCAqbWFjKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9qb2luLmMtMTUxMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9qb2luLmM6MTUxNDpcdHJldCA9IG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfODAyXzExX0RFQVVUSEVOVElDQVRFLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2pvaW4uYy0xNTE1LVx0XHRcdCAgICAgICBIb3N0Q21kX0FDVF9HRU5fU0VULCAwLCBtYWNfYWRkcmVzcywgdHJ1ZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2pvaW4uYz0xNTI3PWludCBtd2lmaWV4X2RlYXV0aGVudGljYXRlKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsIHU4ICptYWMpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2pvaW4uYy0xNTM4LVx0XHRwcml2LVx1MDAzZW1nbXRfZnJhbWVfbWFzayA9IDA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvam9pbi5jOjE1Mzk6XHRcdGlmIChtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX01HTVRfRlJBTUVfUkVHLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2pvaW4uYy0xNTQwLVx0XHRcdFx0ICAgICBIb3N0Q21kX0FDVF9HRU5fU0VULCAwLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9qb2luLmMtMTU1Ni1cdGNhc2UgTkw4MDIxMV9JRlRZUEVfQURIT0M6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvam9pbi5jOjE1NTc6XHRcdHJldHVybiBtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EXzgwMl8xMV9BRF9IT0NfU1RPUCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9qb2luLmMtMTU1OC1cdFx0XHRcdFx0SG9zdENtZF9BQ1RfR0VOX1NFVCwgMCwgTlVMTCwgdHJ1ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvam9pbi5jLTE1NTktXHRjYXNlIE5MODAyMTFfSUZUWVBFX0FQOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2pvaW4uYzoxNTYwOlx0XHRyZXR1cm4gbXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF9VQVBfQlNTX1NUT1AsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvam9pbi5jLTE1NjEtXHRcdFx0XHRcdEhvc3RDbWRfQUNUX0dFTl9TRVQsIDAsIE5VTEwsIHRydWUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmM9MjE2PXN0YXRpYyB2b2lkIG1heWJlX3F1aXJrX2Z3X2Rpc2FibGVfZHMoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jLTIyNS1cdHZlcl9leHQudmVyc2lvbl9zdHJfc2VsID0gMTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmM6MjI2Olx0aWYgKG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfVkVSU0lPTl9FWFQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jLTIyNy1cdFx0XHQgICAgIEhvc3RDbWRfQUNUX0dFTl9HRVQsIDAsIFx1MDAyNnZlcl9leHQsIGZhbHNlKSkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmM9OTQ4PWludCBtd2lmaWV4X3NldF9tYWNfYWRkcmVzcyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmMtOTc4LVx0LyogU2VuZCByZXF1ZXN0IHRvIGZpcm13YXJlICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jOjk3OTpcdHJldCA9IG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfODAyXzExX01BQ19BRERSRVNTLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYy05ODAtXHRcdFx0ICAgICAgIEhvc3RDbWRfQUNUX0dFTl9TRVQsIDAsIE5VTEwsIHRydWUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmM9MTA1MD12b2lkIG13aWZpZXhfbXVsdGlfY2hhbl9yZXN5bmMoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jLTEwNjctXHRwcml2ID0gbXdpZmlleF9nZXRfcHJpdihhZGFwdGVyLCBNV0lGSUVYX0JTU19ST0xFX0FOWSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jOjEwNjg6XHRyZXQgPSBtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX1JFQ09ORklHVVJFX1RYX0JVRkYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jLTEwNjktXHRcdFx0ICAgICAgIEhvc3RDbWRfQUNUX0dFTl9TRVQsIDAsIFx1MDAyNnR4X2J1Zl9zaXplLCBmYWxzZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaD0xMDc2PWludCBtd2lmaWV4X2NvbXBsZXRlX2NtZChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTA3OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg6MTA3OTppbnQgbXdpZmlleF9zZW5kX2NtZChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCB1MTYgY21kX25vLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xMDgwLVx0XHQgICAgIHUxNiBjbWRfYWN0aW9uLCB1MzIgY21kX29pZCwgdm9pZCAqZGF0YV9idWYsIGJvb2wgc3luYyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYz01OTQ9bXdpZmlleF9zY2FuX2NoYW5uZWxfbGlzdChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtNzQ1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYzo3NDY6XHRcdHJldCA9IG13aWZpZXhfc2VuZF9jbWQocHJpdiwgY21kX25vLCBIb3N0Q21kX0FDVF9HRU5fU0VULFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy03NDctXHRcdFx0XHQgICAgICAgMCwgc2Nhbl9jZmdfb3V0LCBmYWxzZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYz0yNDQzPWludCBtd2lmaWV4X3N0b3BfYmdfc2NhbihzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMjQ1OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM6MjQ2MDpcdGlmIChtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EXzgwMl8xMV9CR19TQ0FOX0NPTkZJRyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMjQ2MS1cdFx0XHQgICAgIEhvc3RDbWRfQUNUX0dFTl9TRVQsIDAsIGJnc2Nhbl9jZmcsIHRydWUpKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYz0xNDU4PWludCBtd2lmaWV4X2RubGRfZHRfY2ZnZGF0YShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmMtMTQ3NC1cdFx0ICAgIHByb3AtXHUwMDNlbGVuZ3RoIFx1MDAzYz0gTVdJRklFWF9TSVpFX09GX0NNRF9CVUZGRVIgLSBTX0RTX0dFTikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYzoxNDc1Olx0XHRcdHJldCA9IG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfQ0ZHX0RBVEEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZC5jLTE0NzYtXHRcdFx0XHRcdCAgICAgICBIb3N0Q21kX0FDVF9HRU5fU0VULCAwLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmM9MTUwOT1pbnQgbXdpZmlleF9zZW5kX3JncG93ZXJfdGFibGUoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgY29uc3QgdTggKmRhdGEsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYy0xNTQwLVx0XHRcdGhvc3RjbWQtXHUwMDNlbGVuID0gZ2V0X3VuYWxpZ25lZF9sZTE2KFx1MDAyNmhvc3RjbWQtXHUwMDNlY21kWzJdKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmM6MTU0MTpcdFx0XHRyZXQgPSBtd2lmaWV4X3NlbmRfY21kKHByaXYsIDAsIDAsIDAsIGhvc3RjbWQsIGZhbHNlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmMtMTU0Mi1cdFx0XHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYz0yMzU0PWludCBtd2lmaWV4X3N0YV9pbml0X2NtZChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCB1OCBmaXJzdF9zdGEpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYy0yMzY3LVx0XHRpZiAocHJpdi1cdTAwM2VhZGFwdGVyLVx1MDAzZWlmYWNlX3R5cGUgPT0gTVdJRklFWF9QQ0lFKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZC5jOjIzNjg6XHRcdFx0cmV0ID0gbXdpZmlleF9zZW5kX2NtZChwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYy0yMzY5LVx0XHRcdFx0XHQgICAgICAgSG9zdENtZF9DTURfUENJRV9ERVNDX0RFVEFJTFMsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYy0yMzc1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYzoyMzc2Olx0XHRyZXQgPSBtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX0ZVTkNfSU5JVCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmMtMjM3Ny1cdFx0XHRcdCAgICAgICBIb3N0Q21kX0FDVF9HRU5fU0VULCAwLCBOVUxMLCB0cnVlKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZC5jLTIzOTctXHRcdGlmIChhZGFwdGVyLVx1MDAzZWNhbF9kYXRhKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZC5jOjIzOTg6XHRcdFx0bXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF9DRkdfREFUQSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmMtMjM5OS1cdFx0XHRcdFx0IEhvc3RDbWRfQUNUX0dFTl9TRVQsIDAsIE5VTEwsIHRydWUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmMtMjQwNS1cdFx0LyogUmVhZCBNQUMgYWRkcmVzcyBmcm9tIEhXICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZC5jOjI0MDY6XHRcdHJldCA9IG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfR0VUX0hXX1NQRUMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZC5jLTI0MDctXHRcdFx0XHQgICAgICAgSG9zdENtZF9BQ1RfR0VOX0dFVCwgMCwgTlVMTCwgdHJ1ZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYy0yNDE1LVx0XHRcdHNkaW9fc3BfcnhfYWdncl9lbmFibGUgPSB0cnVlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYzoyNDE2Olx0XHRcdHJldCA9IG13aWZpZXhfc2VuZF9jbWQocHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmMtMjQxNy1cdFx0XHRcdFx0ICAgICAgIEhvc3RDbWRfQ01EX1NESU9fU1BfUlhfQUdHUl9DRkcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYy0yNDI4LVx0XHQvKiBSZWNvbmZpZ3VyZSB0eCBidWYgc2l6ZSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYzoyNDI5Olx0XHRyZXQgPSBtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX1JFQ09ORklHVVJFX1RYX0JVRkYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZC5jLTI0MzAtXHRcdFx0XHQgICAgICAgSG9zdENtZF9BQ1RfR0VOX1NFVCwgMCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZC5jLTI0MzctXHRcdFx0cHJpdi1cdTAwM2VhZGFwdGVyLVx1MDAzZXBzX21vZGUgPSBNV0lGSUVYXzgwMl8xMV9QT1dFUl9NT0RFX1BTUDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmM6MjQzODpcdFx0XHRyZXQgPSBtd2lmaWV4X3NlbmRfY21kKHByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZC5jLTI0MzktXHRcdFx0XHRcdCAgICAgICBIb3N0Q21kX0NNRF84MDJfMTFfUFNfTU9ERV9FTkgsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYy0yNDQ4LVx0XHRcdGlmIChJU1NVUFBfRFJDU19FTkFCTEVEKGFkYXB0ZXItXHUwMDNlZndfY2FwX2luZm8pKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYzoyNDQ5Olx0XHRcdFx0cmV0ID0gbXdpZmlleF9zZW5kX2NtZChwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYy0yNDUwLVx0XHRcdFx0XHRcdCAgICAgICBIb3N0Q21kX0NNRF9NQ19QT0xJQ1ksXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYy0yNDU3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYzoyNDU4Olx0XHRtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX0NIQU5fUkVHSU9OX0NGRyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmMtMjQ1OS1cdFx0XHRcdCBIb3N0Q21kX0FDVF9HRU5fR0VULCAwLCBOVUxMLCB0cnVlKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZC5jLTI0NjItXHQvKiBnZXQgdHggcmF0ZSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYzoyNDYzOlx0cmV0ID0gbXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF9UWF9SQVRFX0NGRyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmMtMjQ2NC1cdFx0XHQgICAgICAgSG9zdENtZF9BQ1RfR0VOX0dFVCwgMCwgTlVMTCwgdHJ1ZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYy0yNDY5LVx0LyogZ2V0IHR4IHBvd2VyICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZC5jOjI0NzA6XHRyZXQgPSBtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX1JGX1RYX1BXUixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmMtMjQ3MS1cdFx0XHQgICAgICAgSG9zdENtZF9BQ1RfR0VOX0dFVCwgMCwgTlVMTCwgdHJ1ZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYy0yNDc3LVx0LyogU2VuZCByZXF1ZXN0IHRvIGZpcm13YXJlICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZC5jOjI0Nzg6XHRyZXQgPSBtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX0FNU0RVX0FHR1JfQ1RSTCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmMtMjQ3OS1cdFx0XHQgICAgICAgSG9zdENtZF9BQ1RfR0VOX1NFVCwgMCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZC5jLTI0ODQtXHQvKiBzZXQgTUFDIENvbnRyb2wgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmM6MjQ4NTpcdHJldCA9IG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfTUFDX0NPTlRST0wsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZC5jLTI0ODYtXHRcdFx0ICAgICAgIEhvc3RDbWRfQUNUX0dFTl9TRVQsIDAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYy0yNDk1LVx0XHRhdXRvX2RzLmlkbGVfdGltZSA9IERFRVBfU0xFRVBfSURMRV9USU1FO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYzoyNDk2Olx0XHRyZXQgPSBtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EXzgwMl8xMV9QU19NT0RFX0VOSCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmMtMjQ5Ny1cdFx0XHRcdCAgICAgICBFTl9BVVRPX1BTLCBCSVRNQVBfQVVUT19EUyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZC5jLTI1MDUtXHRcdHN0YXRlXzExZCA9IEVOQUJMRV8xMUQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZC5jOjI1MDY6XHRcdHJldCA9IG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfODAyXzExX1NOTVBfTUlCLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYy0yNTA3LVx0XHRcdFx0ICAgICAgIEhvc3RDbWRfQUNUX0dFTl9TRVQsIERPVDExRF9JLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmMtMjUxNi1cdFx0cGFja2V0X2FnZ3JfZW5hYmxlID0gdHJ1ZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmM6MjUxNzpcdFx0bXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF9QQUNLRVRfQUdHUl9DVFJMLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYy0yNTE4LVx0XHRcdFx0IEhvc3RDbWRfQUNUX0dFTl9TRVQsIDAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYy0yNTI1LVx0dHhfY2ZnLnR4X2h0Y2FwID0gTVdJRklFWF9GV19ERUZfSFRUWENGRztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmM6MjUyNjpcdHJldCA9IG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfMTFOX0NGRyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmMtMjUyNy1cdFx0XHQgICAgICAgSG9zdENtZF9BQ1RfR0VOX1NFVCwgMCwgXHUwMDI2dHhfY2ZnLCB0cnVlKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZHJlc3AuYz05NT1zdGF0aWMgaW50IG13aWZpZXhfcmV0XzgwMl8xMV9yc3NpX2luZm8oc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZHJlc3AuYy0xMzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZHJlc3AuYzoxMzc6XHRtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EXzgwMl8xMV9TVUJTQ1JJQkVfRVZFTlQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZHJlc3AuYy0xMzgtXHRcdFx0IDAsIDAsIHN1YnNjX2V2dCwgZmFsc2UpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jPTI1Nj1zdGF0aWMgaW50IG13aWZpZXhfcmV0X3R4X3JhdGVfY2ZnKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWRyZXNwLmMtMzExLVx0ZWxzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWRyZXNwLmM6MzEyOlx0XHRyZXR1cm4gbXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF84MDJfMTFfVFhfUkFURV9RVUVSWSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jLTMxMy1cdFx0XHRcdFx0SG9zdENtZF9BQ1RfR0VOX0dFVCwgMCwgTlVMTCwgZmFsc2UpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jPTY5Mz1zdGF0aWMgaW50IG13aWZpZXhfcmV0X3Zlcl9leHQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZHJlc3AuYy03MDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZHJlc3AuYzo3MDk6XHRcdFx0aWYgKG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfODAyXzExX1BTX01PREVfRU5ILFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWRyZXNwLmMtNzEwLVx0XHRcdFx0XHQgICAgIERJU19BVVRPX1BTLCBCSVRNQVBfQVVUT19EUywgXHUwMDI2YXV0b19kcywgZmFsc2UpKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9ldmVudC5jPTEyNT12b2lkIG13aWZpZXhfcmVzZXRfY29ubmVjdF9zdGF0ZShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCB1MTYgcmVhc29uX2NvZGUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9ldmVudC5jLTI0MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfZXZlbnQuYzoyNDE6XHRtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX0dUS19SRUtFWV9PRkZMT0FEX0NGRyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfZXZlbnQuYy0yNDItXHRcdFx0IEhvc3RDbWRfQUNUX0dFTl9SRU1PVkUsIDAsIE5VTEwsIGZhbHNlKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2V2ZW50LmM9Njk2PWludCBtd2lmaWV4X3Byb2Nlc3Nfc3RhX2V2ZW50KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9ldmVudC5jLTgxOS1cdFx0bXdpZmlleF9kYmcoYWRhcHRlciwgRVZFTlQsIFwmIzM0O2V2ZW50OiBIU19BQ1RfUkVRXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfZXZlbnQuYzo4MjA6XHRcdHJldCA9IG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfODAyXzExX0hTX0NGR19FTkgsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2V2ZW50LmMtODIxLVx0XHRcdFx0ICAgICAgIDAsIDAsIE5VTEwsIGZhbHNlKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2V2ZW50LmMtODUwLVx0XHRtd2lmaWV4X2RiZyhhZGFwdGVyLCBFVkVOVCwgXCYjMzQ7ZXZlbnQ6IEJHU19SRVBPUlRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9ldmVudC5jOjg1MTpcdFx0cmV0ID0gbXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF84MDJfMTFfQkdfU0NBTl9RVUVSWSxcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwODozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjI5NAoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDQ1MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIG13aWZpZXggRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBtd2lmaWV4YCBkcml2ZXIgcGF0Y2guIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB0cmFjZSB0aGUgaW1wYWN0IG9mIGNoYW5nZXMsIHNvIEkmIzM5O20gc3RhcnRpbmcgd2l0aCBgbXdpZmlleF9zZW5kX2NtZGAg4oCTIGl0JiMzOTtzIGEgY29tbW9uIGVudHJ5IHBvaW50LCBhbmQgSSBzZWUgYG13aWZpZXhfd2FpdF9xdWV1ZV9jb21wbGV0ZWAgY2FsbGVkIGZyb20gaXQuIFRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBJIG5vdGljZSB0aGF0IGBtd2lmaWV4X3dhaXRfcXVldWVfY29tcGxldGVgIGlzIGFsc28gdXNlZCBpbiBgbXdpZmlleF9zY2FuX25ldHdvcmtzYC4KCkFoLCB0aGUgcGF0Y2ggbW9kaWZpZXMgYG13aWZpZXhfd2FpdF9xdWV1ZV9jb21wbGV0ZWAuIEl0IGxvb2tzIGxpa2UgdGhleSYjMzk7cmUgZGV0YWNoaW5nIHRoZSBjYWxsZXItb3duZWQgYnVmZmVyIGlmIHRoZSB3YWl0IGlzIGludGVycnVwdGVkLiBTbWFydCwgdGhhdCYjMzk7cyBhIGNsYXNzaWMgZml4IGZvciBhIHVzZS1hZnRlci1mcmVlIG9yIGEgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uIGlzc3VlIHdoZW4gYSBjb21tYW5kIGlzIGludGVycnVwdGVkLiBUaGlzIGNoYW5nZSBpcyBzcGVjaWZpY2FsbHkgdGFyZ2V0aW5nIGBtd2lmaWV4X3dhaXRfcXVldWVfY29tcGxldGVgLiBJIG5lZWQgdG8gY29uZmlybSB0aGUgcmVhY2hhYmlsaXR5IG9mIHRoaXMsIGl0JiMzOTtzIGNyaXRpY2FsLgoKT2theSwgbGV0JiMzOTtzIHNlZSwgSXMgdGhpcyBhY3R1YWxseSByZWFjaGFibGUsIGFuZCBmcm9tIHdoZXJlPyBJIHNlZSBpdCYjMzk7cyBjYWxsZWQgZnJvbSBib3RoIGBtd2lmaWV4X3NlbmRfY21kYCBhbmQgYG13aWZpZXhfc2Nhbl9uZXR3b3Jrc2AuIFNvLCBjYW4gdGhpcyBiZSB0cmlnZ2VyZWQgZnJvbSB1c2VyIHNwYWNlPyBMZXQmIzM5O3MgdHJhY2UgaXQuIGBtd2lmaWV4X3NlbmRfY21kYCBpdHNlbGYgaXMgY2FsbGVkIGJ5IGEgYnVuY2ggb2YgY2ZnODAyMTEgY2FsbGJhY2tzOiBgbXdpZmlleF9jZmc4MDIxMV9zZXRfdHhfcG93ZXJgLCBgbXdpZmlleF9jZmc4MDIxMV9kdW1wX3N0YXRpb25gLCBgbXdpZmlleF9jZmc4MDIxMV9zZXRfYW50ZW5uYWAsIGFuZCBvdGhlcnMuIEJpbmdvISBUaGF0JiMzOTtzIGRlZmluaXRlbHkgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSB2aWEgbmV0bGluay4gVGhhdCYjMzk7cyBnb29kIHRvIGtub3cuCgpUaGUgcGF0Y2ggYWxzbyB0b3VjaGVzIGBtd2lmaWV4X3JlaW5pdF9zd2AgYW5kIGBtd2lmaWV4X2FkZF9jYXJkYCwgcmVtb3ZpbmcgYFdRX0hJR0hQUklgIGZyb20gYGFsbG9jX3dvcmtxdWV1ZWAuIE9rYXksIHRoYXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZSwgbm90IHNlY3VyaXR5LXJlbGF0ZWQsIGJ1dCB3b3J0aCBub3RpbmcuCgpUaW1lIHRvIGZvY3VzIGluIG9uIHRoZSBrZXkgc3ltYm9scywgSSB0aGluayBgbXdpZmlleF93YWl0X3F1ZXVlX2NvbXBsZXRlYCBpcyB0aGUgaGVhcnQgb2YgaXQsIGJ1dCBpdCYjMzk7cyBjYWxsZWQgdGhyb3VnaCBgbXdpZmlleF9zZW5kX2NtZGAsIHdoaWNoIGlzIGNvcmUuIEl0IGlzIHRoZSBjb3JlIG9mIHRoaXMgZHJpdmVyLiBMb29raW5nIGF0IGBtd2lmaWV4X2FkZF9jYXJkYCBhbmQgYG13aWZpZXhfcmVpbml0X3N3YCwgc28gcHJvYmUgYW5kIHJlaW5pdC4gR29vZCwgdGhhdCBzZXRzIHRoZSBjb250ZXh0LiBOb3cgSSYjMzk7bSBnb2luZyB0byBkaWcgZGVlcGVyIGludG8gdGhlIGNhbGwgcGF0aHMgdG8gYG13aWZpZXhfd2FpdF9xdWV1ZV9jb21wbGV0ZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA4OjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O213aWZpZXhfd2FpdF9xdWV1ZV9jb21wbGV0ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NtZGV2dC5jPTU0Mj1pbnQgbXdpZmlleF9zZW5kX2NtZChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCB1MTYgY21kX25vLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jbWRldnQuYy02NjctXHRcdGlmIChjbWRfbm9kZS1cdTAwM2V3YWl0X3FfZW5hYmxlZClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jbWRldnQuYzo2Njg6XHRcdFx0cmV0ID0gbXdpZmlleF93YWl0X3F1ZXVlX2NvbXBsZXRlKGFkYXB0ZXIsIGNtZF9ub2RlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jbWRldnQuYy02NjktXHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaD0xNDc2PWludCBtd2lmaWV4X2NvcHlfbWNhc3RfYWRkcihzdHJ1Y3QgbXdpZmlleF9tdWx0aWNhc3RfbGlzdCAqbWxpc3QsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTE0NzctXHRcdFx0ICAgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaDoxNDc4OmludCBtd2lmaWV4X3dhaXRfcXVldWVfY29tcGxldGUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTQ3OS1cdFx0XHRcdHN0cnVjdCBjbWRfY3RybF9ub2RlICpjbWRfcXVldWVkKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jPTE0NzA9aW50IG13aWZpZXhfc2Nhbl9uZXR3b3JrcyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMTU0Mi1cdFx0XHRcdFx0ICAgIFwmIzM0O3dhaXQgaW50ZXJuYWwgc2NhblxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jOjE1NDM6XHRcdFx0XHRtd2lmaWV4X3dhaXRfcXVldWVfY29tcGxldGUoYWRhcHRlciwgY21kX25vZGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0xNTQ0LVx0XHRcdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmM9Mjc9aW50IG13aWZpZXhfY29weV9tY2FzdF9hZGRyKHN0cnVjdCBtd2lmaWV4X211bHRpY2FzdF9saXN0ICptbGlzdCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmMtNDQtICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmM6NDU6aW50IG13aWZpZXhfd2FpdF9xdWV1ZV9jb21wbGV0ZShzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jLTQ2LVx0XHRcdFx0c3RydWN0IGNtZF9jdHJsX25vZGUgKmNtZF9xdWV1ZWQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA4OjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzOTUyCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMTM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGJyZWFrZG93biBvZiB0aGlzLgoKKipBbmFseXppbmcgUG90ZW50aWFsIEZvY3VzIFN5bWJvbHMgaW4gdGhlIG13aWZpZXggRHJpdmVyKioKClJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgbXdpZmlleGAgY29kZSwgYW5kIEkgc2VlIHRoYXQgYG13aWZpZXhfd2FpdF9xdWV1ZV9jb21wbGV0ZWAgZ2V0cyBjYWxsZWQgZnJvbSBib3RoIGBtd2lmaWV4X3NlbmRfY21kYCBhbmQgYG13aWZpZXhfc2Nhbl9uZXR3b3Jrc2AuICBUaGF0JiMzOTtzIGludGVyZXN0aW5nLiAgYG13aWZpZXhfc2VuZF9jbWRgIHNlZW1zIGxpa2UgYSBwcmV0dHkgaW1wb3J0YW50IGZ1bmN0aW9uLCBhIG5hdHVyYWwgZm9jdXMgcG9pbnQgZm9yIGRlZXBlciBpbnZlc3RpZ2F0aW9uLCBhbmQgYG13aWZpZXhfc2Nhbl9uZXR3b3Jrc2AgaXMgZGVmaW5pdGVseSB1cCB0aGVyZSB0b28uIFRob3NlIGFyZSBzb2xpZCBjYW5kaWRhdGVzIGFzIHN5bWJvbHMgdG8gZm9jdXMgb24uIEJ1dCB3YWl0LCBgbXdpZmlleF93YWl0X3F1ZXVlX2NvbXBsZXRlYCBpdHNlbGYgaXMgcG90ZW50aWFsbHkgYSBzaWduaWZpY2FudCBmdW5jdGlvbiwgZ2l2ZW4gaXRzIHVzZSBpbiB0aG9zZSB0d28uCgpOb3csIGEgcXVpY2sgY2hlY2suLi5pcyBgbXdpZmlleF93YWl0X3F1ZXVlX2NvbXBsZXRlYCBzdGF0aWM/IE5vLCBpdCYjMzk7cyBub3QuIFRoYXQgbWFrZXMgaXQgZXZlbiAqbW9yZSogaW50ZXJlc3RpbmcgYXMgYSBwb3RlbnRpYWwgZm9jdXMgc3ltYm9sIGluIGl0cyBvd24gcmlnaHQsIGJlY2F1c2UgaXQmIzM5O3MgZXh0ZXJuYWxseSB2aXNpYmxlLiBJdCYjMzk7cyBsaWtlbHkgaW52b2x2ZWQgaW4gYSBjb3JlIHN5bmNocm9uaXphdGlvbiBvciBjb21wbGV0aW9uIG1lY2hhbmlzbS4gU28sIGl0IGRlZmluaXRlbHkgd2FycmFudHMgYSBjbG9zZXIgbG9vay4gSSYjMzk7bGwgbmVlZCB0byByZW1lbWJlciB0byBjaGVjayBvdXQgaXRzIHVzYWdlcyBhbmQgaW50ZXJhY3Rpb25zLgoKT2theSwgbGV0JiMzOTtzIGFsc28ga2VlcCBhbiBleWUgb24gYG13aWZpZXhfcmVpbml0X3N3YCBhbmQgYG13aWZpZXhfYWRkX2NhcmRgIOKAkyB0aGV5IGNvdWxkIGFsc28gYmUgcmVsYXRlZCBhbmQgaW5mbHVlbmNlIHRoZSBiZWhhdmlvciBhcm91bmQgY29tbWFuZCBjb21wbGV0aW9uIG9yIHF1ZXVpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA4OjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O213aWZpZXhfcmVpbml0X3N3JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jPTE1Mjk9aW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jOjE1MzA6bXdpZmlleF9yZWluaXRfc3coc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmMtMTUzMS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYy0xNjIyLX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmM6MTYyMzpFWFBPUlRfU1lNQk9MX0dQTChtd2lmaWV4X3JlaW5pdF9zdyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jLTE2MjQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaD0xNjk2PXZvaWQgbXdpZmlleF9kZXZfZGVidWdmc19yZW1vdmUoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTE2OTctI2VuZGlmXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oOjE2OTg6aW50IG13aWZpZXhfcmVpbml0X3N3KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xNjk5LWludCBtd2lmaWV4X3NodXRkb3duX3N3KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmM9NTQ2PXN0YXRpYyB2b2lkIG13aWZpZXhfcGNpZV9yZXNldF9kb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmMtNTYxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYzo1NjI6XHRyZXQgPSBtd2lmaWV4X3JlaW5pdF9zdyhhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmMtNTYzLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jPTI2ODA9c3RhdGljIHZvaWQgbXdpZmlleF9zZGlvX2NhcmRfcmVzZXRfd29yayhzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmMtMjcwMS1cdGNhc2UgMDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmM6MjcwMjpcdFx0cmV0ID0gbXdpZmlleF9yZWluaXRfc3coYWRhcHRlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jLTI3MDMtXHRcdGlmIChyZXQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA4OjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1MDU2CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogNDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3M6CgoqKkRlZXBlciBEaXZlIGludG8gdGhlIFdpRmkgRHJpdmVyIEluaXRpYWxpemF0aW9uKioKCkFscmlnaHQsIGxldCBtZSBzZWUuLi4gSSYjMzk7bSBsb29raW5nIGF0IHRoZSBgbXdpZmlleF9yZWluaXRfc3dgIGZ1bmN0aW9uIGluIHRoZSBNYXJ2ZWxsIFdpRmkgZHJpdmVyLiBIbW0sIEkga25vdyB0aGF0IGZ1bmN0aW9uJiMzOTtzIHJlc3BvbnNpYmlsaXR5IGlzIHRvIHJlaW5pdGlhbGl6ZSB0aGUgc29mdHdhcmUgYXNwZWN0cyBvZiB0aGUgZHJpdmVyLCBhbmQgaXRzIGxpa2VseSB1c2VkIGluIGEgdmFyaWV0eSBvZiBzaXR1YXRpb25zLiBTbywgaXQgYXBwZWFycyB0aGF0IGBtd2lmaWV4X3JlaW5pdF9zd2AgaXMgKm9ubHkqIGV2ZXIgY2FsbGVkIGZyb20gdGhlIFBDSWUgYW5kIFNESU8gZHJpdmVyIGNvZGUuIFRoYXTigJlzIGludGVyZXN0aW5nLCBhcyB0aGlzIG1lYW5zIGl0IGlzIGxpa2VseSB0cmlnZ2VyZWQgYnkgaGFyZHdhcmUgcmVsYXRlZCBldmVudHMgc3BlY2lmaWMgdG8gdGhvc2UgYnVzc2VzLiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBtZWFucyBpbiBjb250ZXh0IG9mIHRoZSB3aG9sZSBkcml2ZXIuCgpXYWl0IGEgc2Vjb25kLiBJIG5lZWQgdG8gYmUgbW9yZSB0aG9yb3VnaCBoZXJlISBHb2luZyBiYWNrIHVwIHRoZSBjYWxsIHN0YWNrLCBJIHNlZSBgbXdpZmlleF9hZGRfY2FyZGAgaXMgZGVmaW5pdGVseSBjYWxsZWQgZnJvbSB0aGUgVVNCIGRyaXZlciBjb2RlISBTbywgYG13aWZpZXhfYWRkX2NhcmRgIGlzIHVzZWQgd2hlbiBhIFVTQiBNYXJ2ZWxsIGRldmljZSBpcyBjb25uZWN0ZWQuIFRoaXMgaXMgYW4gaW1wb3J0YW50IGRldGFpbC4gTm93LCBob3cgZG9lcyB0aGlzIHJlbGF0aW9uc2hpcCBpbXBhY3QgdGhlIGluaXRpYWxpemF0aW9uIHByb2Nlc3MsIGFuZCBob3cgd2lsbCBpdCBpbmZsdWVuY2UgdGhlIHJlc3Qgb2YgbXkgd29yaz8gT2theSwgSSYjMzk7dmUgZ290IHRvIGludmVzdGlnYXRlIHdoYXQgdGhlIGRpZmZlcmVuY2UgaXMgYmV0d2VlbiB0aGUgdHdvIGNhbGwgcGF0aHMgYW5kIHdoeSB0aGVyZSBtaWdodCBiZSBzdWNoIGEgZGlzdGluY3QgZGlmZmVyZW5jZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDg6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXdpZmlleF9hZGRfY2FyZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYz0xNTI0PUVYUE9SVF9TWU1CT0xfR1BMKG13aWZpZXhfc2h1dGRvd25fc3cpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmMtMTUyNi0vKiBUaGlzIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIGZvciByZWluaXR0aW5nIHRoZSBhZGFwdGVyIFNXLiBSZXF1aXJlZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYzoxNTI3OiAqIGNvZGUgaXMgZXh0cmFjdGVkIGZyb20gbXdpZmlleF9hZGRfY2FyZCgpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jLTE1MjgtICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYz0xNjg4PWludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYzoxNjg5Om13aWZpZXhfYWRkX2NhcmQodm9pZCAqY2FyZCwgc3RydWN0IGNvbXBsZXRpb24gKmZ3X2RvbmUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jLTE2OTAtXHRcdCBjb25zdCBzdHJ1Y3QgbXdpZmlleF9pZl9vcHMgKmlmX29wcywgdTggaWZhY2VfdHlwZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jLTE3ODItfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYzoxNzgzOkVYUE9SVF9TWU1CT0xfR1BMKG13aWZpZXhfYWRkX2NhcmQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYy0xNzg0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg9MTQ2ND1pbnQgbXdpZmlleF9pbml0X3NodXRkb3duX2Z3KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xNDY2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaDoxNDY3OmludCBtd2lmaWV4X2FkZF9jYXJkKHZvaWQgKmNhcmQsIHN0cnVjdCBjb21wbGV0aW9uICpmd19kb25lLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xNDY4LVx0XHQgICAgIGNvbnN0IHN0cnVjdCBtd2lmaWV4X2lmX29wcyAqaWZfb3BzLCB1OCBpZmFjZV90eXBlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmM9Mzc2PXN0YXRpYyBpbnQgbXdpZmlleF9wY2llX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmMtNDE0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYzo0MTU6XHRpZiAobXdpZmlleF9hZGRfY2FyZChjYXJkLCBcdTAwMjZjYXJkLVx1MDAzZWZ3X2RvbmUsIFx1MDAyNnBjaWVfb3BzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYy00MTYtXHRcdFx0ICAgICBNV0lGSUVYX1BDSUUsIFx1MDAyNnBkZXYtXHUwMDNlZGV2KSkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmM9NTUxPW13aWZpZXhfc2Rpb19wcm9iZShzdHJ1Y3Qgc2Rpb19mdW5jICpmdW5jLCBjb25zdCBzdHJ1Y3Qgc2Rpb19kZXZpY2VfaWQgKmlkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmMtNjA2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYzo2MDc6XHRyZXQgPSBtd2lmaWV4X2FkZF9jYXJkKGNhcmQsIFx1MDAyNmNhcmQtXHUwMDNlZndfZG9uZSwgXHUwMDI2c2Rpb19vcHMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jLTYwOC1cdFx0XHQgICAgICAgTVdJRklFWF9TRElPLCBcdTAwMjZmdW5jLVx1MDAzZWRldik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jPTM4NT1zdGF0aWMgaW50IG13aWZpZXhfdXNiX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy01MTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6NTE1Olx0cmV0ID0gbXdpZmlleF9hZGRfY2FyZChjYXJkLCBcdTAwMjZjYXJkLVx1MDAzZWZ3X2RvbmUsIFx1MDAyNnVzYl9vcHMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNTE2LVx0XHRcdCAgICAgICBNV0lGSUVYX1VTQiwgXHUwMDI2Y2FyZC1cdTAwM2V1ZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNTE3LVx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjUxODpcdFx0cHJfZXJyKFwmIzM0OyVzOiBtd2lmaWV4X2FkZF9jYXJkIGZhaWxlZDogJWRcXG5cJiMzNDssIF9fZnVuY19fLCByZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTUxOS1cdFx0dXNiX3Jlc2V0X2RldmljZSh1ZGV2KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDg6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjY1MDMKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAyMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBDb3JlIEZ1bmN0aW9ucyBpbiB0aGUgTWFydmVsbCBXaS1GaSBEcml2ZXIqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93biBzeXN0ZW1hdGljYWxseS4gSSBzZWUgdGhhdCBgbXdpZmlleF9hZGRfY2FyZGAgaXMgY2FsbGVkIGZyb20gYG13aWZpZXhfdXNiX3Byb2JlYCwgc28gaXQmIzM5O3MgZGVmaW5pdGVseSByZWFjaGFibGUg4oCTIHRoYXQmIzM5O3MgYSBrZXkgZW50cnkgcG9pbnQgZHVyaW5nIGRldmljZSBpbml0aWFsaXphdGlvbi4gSSBuZWVkIHRvIGtlZXAgdGhhdCBpbiBtaW5kLCBldmVuIHRob3VnaCBJJiMzOTtkIG5vcm1hbGx5IGZvY3VzIG9uIHJ1bnRpbWUgZnVuY3Rpb25zLgoKTmV4dCwgYG13aWZpZXhfd2FpdF9xdWV1ZV9jb21wbGV0ZWAgaXMgY3J1Y2lhbCwgYmVpbmcgY2FsbGVkIGZyb20gYm90aCBgbXdpZmlleF9zZW5kX2NtZGAgYW5kIGBtd2lmaWV4X3NjYW5fbmV0d29ya3NgLiBUaGF0IHRlbGxzIG1lIHRoaXMgaXMgYSBsaWtlbHkgcG9pbnQgb2YgY29udGVudGlvbiwgZXNwZWNpYWxseSBzaW5jZSBgbXdpZmlleF9zZW5kX2NtZGAgaXRzZWxmIGlzIGNhbGxlZCBmcm9tIG51bWVyb3VzIGBjZmc4MDIxMWAgY2FsbGJhY2tzLiBUaGF0IGVzdGFibGlzaGVzIGEgY2xlYXIgY2hhaW4gb2YgY3JpdGljYWwgZnVuY3Rpb25zLiBUaGVyZWZvcmUsIG15IHByaW1hcnkgZm9jdXMgc2hvdWxkIGJlIGBtd2lmaWV4X3dhaXRfcXVldWVfY29tcGxldGVgLCBgbXdpZmlleF9zZW5kX2NtZGAsIGBtd2lmaWV4X3NjYW5fbmV0d29ya3NgLCBhbmQsIGFzIEkgbWVudGlvbmVkLCBgbXdpZmlleF9hZGRfY2FyZGAgZHVlIHRvIGl0cyByb2xlIGluIHRoZSBwcm9iZSBmdW5jdGlvbi4gSXQgaXMgYSBob3QgcGF0aCBkdXJpbmcgaW5pdGlhbGl6YXRpb24sIGJ1dCBpdCYjMzk7cyBpbXBvcnRhbnQgdG8gaW5jbHVkZSBpdCBpbiB0aGUgYW5hbHlzaXMuCgpOb3csIGJlZm9yZSBJIGRpZyBkZWVwZXIsIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBJJiMzOTt2ZSBhY2NvdW50ZWQgZm9yIGFueSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEkgc2hvdWxkIGNoZWNrIGBNV0lGSUVYYCwgYE1XSUZJRVhfVVNCYCwgYENGRzgwMjExYCwgYW5kIGBVU0JgIHRvIGVuc3VyZSBJJiMzOTttIGFjY291bnRpbmcgZm9yIGFsbCBwb3NzaWJsZSBidWlsZCBjb25maWd1cmF0aW9ucy4gTGV0IG1lIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoZSBkZXBlbmRlbmNpZXMgcmVsYXRlZCB0byBgTVdJRklFWF9VU0JgLCBqdXN0IHRvIGJlIGNlcnRhaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA4OjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNV0lGSUVYX1VTQiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnPTI1PWNvbmZpZyBNV0lGSUVYX1BDSUVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0zNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjM3OmNvbmZpZyBNV0lGSUVYX1VTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzgtXHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBVU0I4NzY2Lzg3OTcvODk5N1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwODozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzIzMQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE0OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE1hcnZlbGwgV2lGaS1FeCBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyB3ZSYjMzk7cmUgbG9va2luZyBhdCB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIE1hcnZlbGwgV2lGaS1FeCBkcml2ZXIsIHNwZWNpZmljYWxseSB0aGUgVVNCIHZhcmlhbnQsIGBNV0lGSUVYX1VTQmAuIFdlIGFscmVhZHkgd2VudCB0aHJvdWdoIHRoZSBzb3VyY2UgZmlsZTsgc28gdGhhdCBwYXJ0IGlzIGRvbmUuIFRoaXMgYE1XSUZJRVhfVVNCYCBpcyB0aGUgcHJpbWFyeSBjb25maWd1cmF0aW9uIGRpcmVjdGl2ZSBoZXJlLiBOb3csIGxldCYjMzk7cyBicmVhayBkb3duIHRoZSBkZXBlbmRlbmNpZXMuIEl0IHJlbGllcyBvbiBib3RoIGBNV0lGSUVYYCBhbmQgYFVTQmAsIHdoaWNoIG1ha2VzIHNlbnNlOyBpdCYjMzk7cyBhIE1hcnZlbGwgV2lGaSBkcml2ZXIgYW5kIGl0JiMzOTtzIGNvbW11bmljYXRpbmcgb3ZlciBVU0IuIAoKTm93LCBJJiMzOTttIG5vdGluZyB0aGF0IGBNV0lGSUVYYCAqaXRzZWxmKiBoYXMgYSBkZXBlbmRlbmN5LiBMZXQmIzM5O3Mgc2VlLi4uIEFoLCB5ZXMsIGBNV0lGSUVYYCBkZXBlbmRzIG9uIGBDRkc4MDIxMWAuIFRoYXQmIzM5O3Mgc3RhbmRhcmQ7IGl0JiMzOTtzIHRoZSBtYWM4MDIxMSB3aXJlbGVzcyBjb25maWd1cmF0aW9uIGludGVyZmFjZS4gTm93LCBJIHZhZ3VlbHkgcmVjYWxsIGEgcmVsYXRpb25zaGlwIGJldHdlZW4gYENGRzgwMjExYCBhbmQgYE1BQzgwMjExYCwgd2hpY2ggaXMgdGhlIG1hYzgwMjExIHN0YWNrIGl0c2VsZi4gSSYjMzk7bSBkb3VibGUtY2hlY2tpbmcgYmVjYXVzZSBzb21ldGltZXMgdGhlc2UgZGVwZW5kZW5jaWVzIGFyZSBhIGJpdCB0cmlja3kgdG8gZm9sbG93LiBIbW0sICpubyosIGl0JiMzOTtzIHRoZSBvcHBvc2l0ZSEgYE1BQzgwMjExYCBkZXBlbmRzIG9uIGBDRkc4MDIxMWAuIFJpZ2h0LiBTbyB3ZSBtaWdodCBuZWVkIHRvIGNoZWNrIHRoZSBgQ0ZHODAyMTFgIGNvbmZpZyBhcyB3ZWxsLCB0byBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIG90aGVyIGNvbmZpZ3VyYXRpb25zIGluIHBsYXkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA4OjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBDRkc4MDIxMSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9LY29uZmlnPTE0PWNvbmZpZyBXRVhUX1BSSVZcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNi1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjE3OmNvbmZpZyBDRkc4MDIxMVxubmV0L3dpcmVsZXNzL0tjb25maWctMTgtXHR0cmlzdGF0ZSBcJiMzNDtjZmc4MDIxMSAtIHdpcmVsZXNzIGNvbmZpZ3VyYXRpb24gQVBJXCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWc9Mzg9Y29uZmlnIE5MODAyMTFfVEVTVE1PREVcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy01MS1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjUyOmNvbmZpZyBDRkc4MDIxMV9ERVZFTE9QRVJfV0FSTklOR1Ncbm5ldC93aXJlbGVzcy9LY29uZmlnLTUzLVx0Ym9vbCBcJiMzNDtlbmFibGUgZGV2ZWxvcGVyIHdhcm5pbmdzXCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctNjctXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo2ODpjb25maWcgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy02OS1cdGJvb2wgXCYjMzQ7Y2ZnODAyMTEgY2VydGlmaWNhdGlvbiBvbnVzXCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctODgtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo4OTpjb25maWcgQ0ZHODAyMTFfUkVRVUlSRV9TSUdORURfUkVHREJcbm5ldC93aXJlbGVzcy9LY29uZmlnLTkwLVx0Ym9vbCBcJiMzNDtyZXF1aXJlIHJlZ2RiIHNpZ25hdHVyZVwmIzM0OyBpZiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy05OC1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjk5OmNvbmZpZyBDRkc4MDIxMV9VU0VfS0VSTkVMX1JFR0RCX0tFWVNcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEwMC1cdGJvb2wgXCYjMzQ7YWxsb3cgcmVnZGIga2V5cyBzaGlwcGVkIHdpdGggdGhlIGtlcm5lbFwmIzM0OyBpZiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMTAtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMTE6Y29uZmlnIENGRzgwMjExX0VYVFJBX1JFR0RCX0tFWURJUlxubmV0L3dpcmVsZXNzL0tjb25maWctMTEyLVx0c3RyaW5nIFwmIzM0O2FkZGl0aW9uYWwgcmVnZGIga2V5IGRpcmVjdG9yeVwmIzM0OyBpZiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMjEtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMjI6Y29uZmlnIENGRzgwMjExX1JFR19DRUxMVUxBUl9ISU5UU1xubmV0L3dpcmVsZXNzL0tjb25maWctMTIzLVx0Ym9vbCBcJiMzNDtjZmc4MDIxMSByZWd1bGF0b3J5IHN1cHBvcnQgZm9yIGNlbGx1bGFyIGJhc2Ugc3RhdGlvbiBoaW50c1wmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTEzNC1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjEzNTpjb25maWcgQ0ZHODAyMTFfUkVHX1JFTEFYX05PX0lSXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMzYtXHRib29sIFwmIzM0O2NmZzgwMjExIHN1cHBvcnQgZm9yIE5PX0lSIHJlbGF4YXRpb25cJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNTgtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNTk6Y29uZmlnIENGRzgwMjExX0RFRkFVTFRfUFNcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE2MC1cdGJvb2wgXCYjMzQ7ZW5hYmxlIHBvd2Vyc2F2ZSBieSBkZWZhdWx0XCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTY4LVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTY5OmNvbmZpZyBDRkc4MDIxMV9ERUJVR0ZTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNzAtXHRib29sIFwmIzM0O2NmZzgwMjExIERlYnVnRlMgZW50cmllc1wmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTE3Ni1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjE3Nzpjb25maWcgQ0ZHODAyMTFfQ1JEQV9TVVBQT1JUXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNzgtXHRib29sIFwmIzM0O3N1cHBvcnQgQ1JEQVwmIzM0OyBpZiBFWFBFUlRcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xODYtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxODc6Y29uZmlnIENGRzgwMjExX1dFWFRcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE4OC1cdGJvb2wgXCYjMzQ7Y2ZnODAyMTEgd2lyZWxlc3MgZXh0ZW5zaW9ucyBjb21wYXRpYmlsaXR5XCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTkzLVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTk0OmNvbmZpZyBDRkc4MDIxMV9LVU5JVF9URVNUXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xOTUtXHR0cmlzdGF0ZSBcJiMzNDtLVW5pdCB0ZXN0cyBmb3IgY2ZnODAyMTFcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwODozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODYzMgoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDEwNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipLZXJuZWwgQ29uZmlndXJhdGlvbiBEZWVwIERpdmUqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIGtlcm5lbCBjb25maWd1cmF0aW9ucyByZWxhdGVkIHRvIHRoZSBNYXJ2ZWxsIFdpRmkgZHJpdmVyLCBzcGVjaWZpY2FsbHkgYE1XSUZJRVhgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgQ0ZHODAyMTFgIGlzIHRoZSBjb3JlIGNvbmZpZ3VyYXRpb24gcGllY2UuIFRoYXQgbWFrZXMgc2Vuc2U7IGl0JiMzOTtzIHRoZSBnZW5lcmljIGNvbmZpZ3VyYXRpb24gZnJhbWV3b3JrIGZvciB3aXJlbGVzcyBkcml2ZXJzLiBTbywgSSBzZWUgdGhhdCB3ZSBuZWVkIGBNV0lGSUVYYCwgYE1XSUZJRVhfVVNCYCwgYW5kIG9mIGNvdXJzZSBgQ0ZHODAyMTFgLiBOb3csIHRoZSBzeXN0ZW0gd2lsbCBuYXR1cmFsbHkgbmVlZCBgVVNCYCBlbmFibGVkLCB3aGljaCBpcyB0eXBpY2FsbHkgaGFuZGxlZCBpbiBzeXprYWxsZXIsIGJ1dCBJIHNob3VsZCBiZSBleHBsaWNpdCBhbmQgbWFrZSBzdXJlIGl0JiMzOTtzIGluY2x1ZGVkIGhlcmUuIEl0JiMzOTtzIGVhc3kgdG8gb3Zlcmxvb2sgdGhlc2UgYmFzaWNzLgoKSSB3YXMgZXhwZWN0aW5nIGBNQUM4MDIxMWAgdG8gYmUgbmVjZXNzYXJ5IGFzIHdlbGwsIHNpbmNlIGl0JiMzOTtzIGNvbW1vbmx5IGludm9sdmVkIGluIHdpcmVsZXNzIGltcGxlbWVudGF0aW9ucy4gSG93ZXZlciwgSSBub3RpY2UgdGhhdCB0aGUgYE1XSUZJRVhgIGRyaXZlciBvbmx5IGV4cGxpY2l0bHkgc3RhdGVzIGEgZGVwZW5kZW5jeSBvbiBgQ0ZHODAyMTFgLiBJIHNob3VsZCBkb3VibGUtY2hlY2sgdGhhdCBkZXBlbmRlbmN5IGxpc3QganVzdCB0byBtYWtlIGFic29sdXRlbHkgY2VydGFpbiBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnl0aGluZyBvYnZpb3VzLiBMZXQmIzM5O3MgcmV2aXNpdCB0aGUgYE1XSUZJRVhgIGRlcGVuZGVuY2llcyB0byBiZSBzdXJlLiBJdCYjMzk7cyBlYXN5IHRvIG1ha2UgYXNzdW1wdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA4OjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgTVdJRklFWFxuICAgMzpcdFx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBXaUZpLUV4IERyaXZlclwmIzM0O1xuICAgNDpcdFx0ZGVwZW5kcyBvbiBDRkc4MDIxMVxuICAgNTpcdFx0aGVscFxuICAgNjpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb24gTWFydmVsbFxuICAgNzpcdFx0ICA4MDIuMTFuL2FjIGNoaXBzZXRzLlxuICAgODpcdFxuICAgOTpcdFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGl0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlIGNhbGxlZFxuICAxMDpcdFx0ICBtd2lmaWV4LlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwODozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTE2OQoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDIxMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFdpRmkgRHJpdmVyIFBhdGNoKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFllcywgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBgQ0ZHODAyMTFgIGFnYWluLCBnb29kLiBNeSBpbml0aWFsIHNjYW4gb2YgdGhlIGNvbmZpZ3Mgc2hvd3Mgd2UgaGF2ZSBgTVdJRklFWGAsIGBNV0lGSUVYX1VTQmAsIGBDRkc4MDIxMWAsIGFuZCBgVVNCYCBpbiBwbGF5LiBJJiMzOTttIGZvY3VzaW5nIG9uIGtleSBzeW1ib2xzOiBgbXdpZmlleF93YWl0X3F1ZXVlX2NvbXBsZXRlYCwgYG13aWZpZXhfc2VuZF9jbWRgLCBgbXdpZmlleF9zY2FuX25ldHdvcmtzYCwgYW5kIGBtd2lmaWV4X2FkZF9jYXJkYC4KCkhtbSwgYSBxdWljayBvYnNlcnZhdGlvbiDigJMgYG13aWZpZXhfcmVpbml0X3N3YCBpc24mIzM5O3QgcmVhY2hhYmxlIGZyb20gVVNCLCBidXQgYG13aWZpZXhfYWRkX2NhcmRgIGlzLiBUaGlzIHBhdGNoIGlzIG1vZGlmeWluZyB0aGVzZSB0d28gZnVuY3Rpb25zLCBgbXdpZmlleF9hZGRfY2FyZGAgYW5kIGBtd2lmaWV4X3JlaW5pdF9zd2AsIHNwZWNpZmljYWxseSByZW1vdmluZyBgV1FfSElHSFBSSWAgZnJvbSBgYWxsb2Nfd29ya3F1ZXVlYC4gSW50ZXJlc3RpbmcuIEl0IGxvb2tzIGxpa2UgdGhleSYjMzk7cmUgdHJ5aW5nIHRvIHJlZmluZSBob3cgdGhlc2Ugd29yayBxdWV1ZXMgYXJlIGNyZWF0ZWQuCgpBbHNvLCBpdCBhbHRlcnMgYG13aWZpZXhfd2FpdF9xdWV1ZV9jb21wbGV0ZWAgdG8gaGFuZGxlIGEgc2NlbmFyaW8gd2hlcmUgdGhlIHdhaXQgaXMgaW50ZXJydXB0ZWQuIFNwZWNpZmljYWxseSwgaXQgZGV0YWNoZXMgdGhlIGNhbGxlci1vd25lZCBidWZmZXIgZnJvbSB0aGUgY3VycmVudCBjb21tYW5kIGluIHRoYXQgY2FzZS4gVGhhdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBub3QganVzdCBhIGNvc21ldGljIG9uZS4gTGlrZWx5IGRlYWxpbmcgd2l0aCBhIHJhY2UgY29uZGl0aW9uIG9yIHNvbWUgb3RoZXIgY29uY3VycmVuY3kgaXNzdWUuCgpJIHNob3VsZCB2ZXJpZnkgdGhhdCBgbXdpZmlleF93YWl0X3F1ZXVlX2NvbXBsZXRlYCBpc24mIzM5O3Qgc3RhdGljOyBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gaXRzIHZpc2liaWxpdHkgYmVmb3JlIGdvaW5nIGFueSBmdXJ0aGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwODozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpbnQgbXdpZmlleF93YWl0X3F1ZXVlX2NvbXBsZXRlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oPTE0NzY9aW50IG13aWZpZXhfY29weV9tY2FzdF9hZGRyKHN0cnVjdCBtd2lmaWV4X211bHRpY2FzdF9saXN0ICptbGlzdCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTQ3Ny1cdFx0XHQgICAgc3RydWN0IG5ldF9kZXZpY2UgKmRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oOjE0Nzg6aW50IG13aWZpZXhfd2FpdF9xdWV1ZV9jb21wbGV0ZShzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xNDc5LVx0XHRcdFx0c3RydWN0IGNtZF9jdHJsX25vZGUgKmNtZF9xdWV1ZWQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYz0yNz1pbnQgbXdpZmlleF9jb3B5X21jYXN0X2FkZHIoc3RydWN0IG13aWZpZXhfbXVsdGljYXN0X2xpc3QgKm1saXN0LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYy00NC0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYzo0NTppbnQgbXdpZmlleF93YWl0X3F1ZXVlX2NvbXBsZXRlKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmMtNDYtXHRcdFx0XHRzdHJ1Y3QgY21kX2N0cmxfbm9kZSAqY21kX3F1ZXVlZClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDg6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzAwNzEKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqVmVyaWZ5aW5nIGEgRHluYW1pYyBGdW5jdGlvbiBDYWxsKioKCkFscmlnaHQsIHRoZSBjb3JlIHBvaW50IGlzIGVzdGFibGlzaGVkOiB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIHNvbWV0aGluZyBkeW5hbWljLCB3aGljaCBpcyBnb29kLiBUaGF0JiMzOTtzIHRoZSBiYXNlbGluZS4gTm93LCBJIG5lZWQgdG8gY29uZmlybSBzb21ldGhpbmcgc3BlY2lmaWMuIExldCYjMzk7cyBzZWUuLi4gdGhlIGNvZGUmIzM5O3MgZ290IGBtd2lmaWV4X3NlbmRfY21kYCBpbiBpdC4gSSBuZWVkIHRvIG1ha2UgKmFic29sdXRlbHkqIHN1cmUgdGhhdCBmdW5jdGlvbiBpc24mIzM5O3QgZGVjbGFyZWQgYXMgYHN0YXRpY2AuIElmIGl0ICp3ZXJlKiBzdGF0aWMsIHRoYXQgd291bGQgY29uc3RyYWluIGl0cyBzY29wZSBpbiBhIHdheSB0aGF0IHdvdWxkbiYjMzk7dCBqaXZlIHdpdGggdGhlIG1vZGVsIG9mIGhvdyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGl0LCBoZXJlLiBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgaXQmIzM5O3MgYWNjZXNzaWJsZSBmcm9tIG90aGVyIG1vZHVsZXMsIHRoYXQgaXQmIzM5O3MgZ2xvYmFsbHkgdmlzaWJsZS4gU28sIHRoZSB2ZXJpZmljYXRpb246ICYjMzQ7SXMgYG13aWZpZXhfc2VuZF9jbWRgIGFjdHVhbGx5IHN0YXRpYz8mIzM0OyBUaGF0JiMzOTtzIHRoZSBrZXkgcXVlc3Rpb24uIEdvdHRhIGNoZWNrIHRoYXQgZGV0YWlsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwODozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpbnQgbXdpZmlleF9zZW5kX2NtZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NtZGV2dC5jPTQ3MD1pbnQgbXdpZmlleF9wcm9jZXNzX2V2ZW50KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NtZGV2dC5jLTU0MS0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jbWRldnQuYzo1NDI6aW50IG13aWZpZXhfc2VuZF9jbWQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgdTE2IGNtZF9ubyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jbWRldnQuYy01NDMtXHRcdCAgICAgdTE2IGNtZF9hY3Rpb24sIHUzMiBjbWRfb2lkLCB2b2lkICpkYXRhX2J1ZiwgYm9vbCBzeW5jKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg9MTA3Nj1pbnQgbXdpZmlleF9jb21wbGV0ZV9jbWQoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTEwNzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oOjEwNzk6aW50IG13aWZpZXhfc2VuZF9jbWQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgdTE2IGNtZF9ubyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTA4MC1cdFx0ICAgICB1MTYgY21kX2FjdGlvbiwgdTMyIGNtZF9vaWQsIHZvaWQgKmRhdGFfYnVmLCBib29sIHN5bmMpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwODozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDY3MgoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgZGVsaXZlcmVkIGFzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnk6CgoqKkFzc2Vzc2luZyB0aGUgTW9kdWxhcml0eSBhbmQgUmV1c2FiaWxpdHkgb2YgYG13aWZpZXhfc2Nhbl9uZXR3b3Jrc2AqKgoKQWxyaWdodCwgdGhlIGluaXRpYWwgYXNzdW1wdGlvbiBpcyB0aGF0IHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBzeXN0ZW0gdGhhdCYjMzk7cyAqbm90KiBlbnRpcmVseSBmaXhlZC4gVGhhdCYjMzk7cyBhIGZ1bmRhbWVudGFsIHN0YXJ0aW5nIHBvaW50LiBXZSBjYW4mIzM5O3QgYXNzdW1lIHJpZ2lkaXR5OyBpbnN0ZWFkLCBpdCYjMzk7cyBkeW5hbWljLiBUaGlzIGhhcyBzaWduaWZpY2FudCBpbXBsaWNhdGlvbnMgZm9yIGhvdyB3ZSBhcHByb2FjaCBhbmFseXNpcyBhbmQgcG90ZW50aWFsIG1vZGlmaWNhdGlvbi4KCk15IGltbWVkaWF0ZSBmb2xsb3ctdXAgdGhvdWdodCBjZW50ZXJzIG9uIGEgY3JpdGljYWwgcGllY2Ugb2YgdGhlIHB1enpsZTogYG13aWZpZXhfc2Nhbl9uZXR3b3Jrc2AuIFRoZSByZWFsIHF1ZXN0aW9uIGluIG15IG1pbmQgbm93IGlzIHdoZXRoZXIgdGhpcyBmdW5jdGlvbiBpcyBkZWNsYXJlZCBgc3RhdGljYCB3aXRoaW4gaXRzIG1vZHVsZS4gQSBgc3RhdGljYCBkZWNsYXJhdGlvbiB3b3VsZCBsaW1pdCBpdHMgc2NvcGUsIHBvdGVudGlhbGx5IGhpbmRlcmluZyByZXVzYWJpbGl0eSBvciBtYWtpbmcgaXQgaGFyZGVyIHRvIGludGVncmF0ZSB3aXRoIG90aGVyIGNvbXBvbmVudHMuIElmIGl0ICppcyogc3RhdGljLCB3ZSYjMzk7bGwgbmVlZCB0byB1bmRlcnN0YW5kIHdoeSwgYW5kIGNvbnNpZGVyIHRoZSBpbXBhY3Qgb24gdGhlIG92ZXJhbGwgZGVzaWduLiBJZiBub3QsIHRoZW4gd2UgYXJlIGFibGUgdG8gcHJvZ3Jlc3MgZnVydGhlci4gVGhlIGdvYWwgbm93IGlzIHRvIGVzdGFibGlzaCBpZiB0aGUgZnVuY3Rpb24gaGFzIHNjb3BlIG91dHNpZGUgaXRzIG1vZHVsZSBvciBpcyBzb2xlbHkgY29udGFpbmVkIHdpdGhpbiBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDg6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aW50IG13aWZpZXhfc2Nhbl9uZXR3b3JrcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaD0xNDg2PWludCBtd2lmaWV4X3JlcXVlc3Rfc2NhbihzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xNDg3LVx0XHRcdCBzdHJ1Y3QgY2ZnODAyMTFfc3NpZCAqcmVxX3NzaWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaDoxNDg4OmludCBtd2lmaWV4X3NjYW5fbmV0d29ya3Moc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTQ4OS1cdFx0XHQgIGNvbnN0IHN0cnVjdCBtd2lmaWV4X3VzZXJfc2Nhbl9jZmcgKnVzZXJfc2Nhbl9pbik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYz0xNDUxPW13aWZpZXhfcmFkaW9fdHlwZV90b19iYW5kKHU4IHJhZGlvX3R5cGUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0xNDY5LSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYzoxNDcwOmludCBtd2lmaWV4X3NjYW5fbmV0d29ya3Moc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMTQ3MS1cdFx0XHQgIGNvbnN0IHN0cnVjdCBtd2lmaWV4X3VzZXJfc2Nhbl9jZmcgKnVzZXJfc2Nhbl9pbilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDg6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzEzMDAKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqVmVyaWZ5aW5nIEZ1bmN0aW9uIEF0dHJpYnV0ZXMqKgoKQWxyaWdodCwgdGhhdCYjMzk7cyByaWdodCwgdGhpbmdzIGFyZW4mIzM5O3QgYWx3YXlzIHdoYXQgdGhleSBzZWVtIGF0IGZpcnN0IGdsYW5jZS4gV2UgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUgYWJvdXQgdGhpcy4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gY2hlY2sgdGhlIGRlY2xhcmF0aW9uIG9mIGBtd2lmaWV4X2FkZF9jYXJkYC4gVGhlIHdob2xlIHBvaW50IG9mIGxvb2tpbmcgYXQgdGhpcyBmdW5jdGlvbiBpbiBwYXJ0aWN1bGFyIGlzIHRoYXQgaXRzICYjMzk7c3RhdGljJiMzOTsgYXR0cmlidXRlIG9yIGxhY2sgdGhlcmVvZiBpcyByZWxldmFudCB0byB0aGUgbGFyZ2VyIG9iamVjdGl2ZS4gVGhlcmVmb3JlLCBJJiMzOTttIGdvaW5nIHRvIGRpZyBpbnRvIHRoZSBoZWFkZXIgZmlsZXMgb3IgdGhlIHNvdXJjZSBpdHNlbGYgYW5kIGNvbmZpcm0gdGhhdCBgbXdpZmlleF9hZGRfY2FyZGAgaXNuJiMzOTt0IGRlY2xhcmVkIHdpdGggdGhlIGBzdGF0aWNgIGtleXdvcmQuIFRoaXMgaXMgdGhlIG9ubHkgd2F5IHRvIGJlIGNlcnRhaW4gdGhhdCB3aGF0IEkmIzM5O20gYXNzdW1pbmcgaXMgYWN0dWFsbHkgdHJ1ZS4gSWYgaXQgd2VyZSBzdGF0aWMsIGl0IHdvdWxkIGJlIGEgdmVyeSBkaWZmZXJlbnQgZ2FtZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDg6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aW50IG13aWZpZXhfYWRkX2NhcmQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg9MTQ2ND1pbnQgbXdpZmlleF9pbml0X3NodXRkb3duX2Z3KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xNDY2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaDoxNDY3OmludCBtd2lmaWV4X2FkZF9jYXJkKHZvaWQgKmNhcmQsIHN0cnVjdCBjb21wbGV0aW9uICpmd19kb25lLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xNDY4LVx0XHQgICAgIGNvbnN0IHN0cnVjdCBtd2lmaWV4X2lmX29wcyAqaWZfb3BzLCB1OCBpZmFjZV90eXBlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwODozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTcwNwoJCQkJCQkJb3V0cHV0OiAyMDgKCQkJCQkJCXRob3VnaHRzOiAyMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIFBhdGNoKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEl0JiMzOTtzIGNsZWFyIHRoaXMgaXNuJiMzOTt0IGEgc3RhdGljIHNpdHVhdGlvbjsgdGhpbmdzIGFyZSBjaGFuZ2luZy4gTXkgZm9jdXMgaXMgb24gdGhlIGlkZW50aWZpZWQgc3ltYm9sczogYG13aWZpZXhfd2FpdF9xdWV1ZV9jb21wbGV0ZWAsIGBtd2lmaWV4X3NlbmRfY21kYCwgYG13aWZpZXhfc2Nhbl9uZXR3b3Jrc2AsIGFuZCBgbXdpZmlleF9hZGRfY2FyZGAuIFRoZXkmIzM5O3JlIGtleSBlbnRyeSBwb2ludHMgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIG1vZGlmaWNhdGlvbnMuCgpUaGUgcmVsYXRlZCBjb25maWd1cmF0aW9ucywgYE1XSUZJRVhgLCBgTVdJRklFWF9VU0JgLCBgQ0ZHODAyMTFgLCBhbmQgYFVTQmAsIGFyZSBlcXVhbGx5IGltcG9ydGFudC4gVGhleSBwYWludCB0aGUgcGljdHVyZSBvZiB0aGUgZHJpdmVyJiMzOTtzIGVudmlyb25tZW50IGFuZCB0aGUgdGFyZ2V0ZWQgaW50ZXJmYWNlLiBUaGUgcHJlc2VuY2Ugb2YgYE1XSUZJRVhfVVNCYCBzdHJvbmdseSBzdWdnZXN0cyB0aGlzIGltcGFjdHMgVVNCLWNvbm5lY3RlZCBkZXZpY2VzIHVzaW5nIHRoZSBNYXJ2ZWxsIFdpRmktRXggZHJpdmVyLgoKQmFzZWQgb24gdGhlIGRlc2NyaXB0aW9uLCB0aGlzIHBhdGNoIGlzIGFkZHJlc3NpbmcgYSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0eSB3aXRoaW4gdGhlIGRyaXZlciDigJMgYSB1c2UtYWZ0ZXItZnJlZSBvciBtZW1vcnkgY29ycnVwdGlvbiBzY2VuYXJpby4gU3BlY2lmaWNhbGx5LCBpdCBpbnZvbHZlcyB0aGUgaGFuZGxpbmcgb2YgY2FsbGVyLW93bmVkIGJ1ZmZlcnMgd2hlbiBhIHdhaXQgaXMgaW50ZXJydXB0ZWQuIERldGFjaGluZyB0aGUgYnVmZmVyIGluIHN1Y2ggYSBzaXR1YXRpb24gaXMgYSBjb21tb24gcGF0dGVybiBmb3IgcHJldmVudGluZyB0aGVzZSBpc3N1ZXMuIFJlbW92aW5nIHRoZSBgV1FfSElHSFBSSWAgZmxhZyBmcm9tIHRoZSB3b3JrcXVldWUgYWxsb2NhdGlvbiBpbiBgbXdpZmlleF9hZGRfY2FyZGAgYW5kIGBtd2lmaWV4X3JlaW5pdF9zd2Agc2VlbXMgbGlrZSBhIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiBvciBhIGNoYW5nZSBpbiB3b3JrcXVldWUgc2NoZWR1bGluZywgbm90IGxpa2VseSBkaXJlY3RseSByZWxhdGVkIHRvIHRoZSBtZW1vcnkgY29ycnVwdGlvbiBpc3N1ZS4KClRoZSBmYWN0IHRoYXQgdGhpcyBkcml2ZXIgY2FuIGJlIGFjY2Vzc2VkIHZpYSBVU0IsIGFuZCB0aGF0IHRoaXMgVVNCIGludGVyZmFjZSBjYW4gYmUgZW11bGF0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSB2aWEgdmhjaSwgbWVhbnMgdGhpcyBpcyBhIHByYWN0aWNhbCBhbmQgcmVsZXZhbnQgaXNzdWUgZm9yIGFueW9uZSB3b3JraW5nIHdpdGggdGhpcyBkcml2ZXIgaW4gYSB0ZXN0aW5nIG9yIHZpcnR1YWxpemF0aW9uIGNvbnRleHQuIFRoZSBwYXRjaCBpcyBwcm9iYWJseSBhZGRyZXNzaW5nIGEgc3BlY2lmaWMgZmxhdyB0aGF0JiMzOTtzIGJlZW4gZXhwb3NlZCB0aHJvdWdoIHRlc3RpbmcgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4KCldlIGNhbiB0ZW50YXRpdmVseSBjYWxsIHRoaXMgcHJvY2VzcyAmIzM0O3NldC1yZXN1bHRzJiMzNDsuIFRoaXMgaXMgdGhlIHBvaW50IHdoZXJlIHRoZSByZXN1bHRzIGhhdmUgYmVlbiBwcm9jZXNzZWQgYW5kIHN1bW1hcml6ZWQsIGFuZCB3ZSBhcmUgcmVhZHkgdG8gbW92ZSBvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDg6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01XSUZJRVgmIzM0OywKICAgICYjMzQ7TVdJRklFWF9VU0ImIzM0OywKICAgICYjMzQ7Q0ZHODAyMTEmIzM0OywKICAgICYjMzQ7VVNCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bXdpZmlleF93YWl0X3F1ZXVlX2NvbXBsZXRlJiMzNDssCiAgICAmIzM0O213aWZpZXhfc2VuZF9jbWQmIzM0OywKICAgICYjMzQ7bXdpZmlleF9zY2FuX25ldHdvcmtzJiMzNDssCiAgICAmIzM0O213aWZpZXhfYWRkX2NhcmQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1hcnZlbGwgV2lGaS1FeCBEcml2ZXIgdG8gZGV0YWNoIGEgY2FsbGVyLW93bmVkIGJ1ZmZlciBmcm9tIHRoZSBjdXJyZW50IGNvbW1hbmQgaWYgYSB3YWl0IGlzIGludGVycnVwdGVkLCBwcmV2ZW50aW5nIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIG1lbW9yeSBjb3JydXB0aW9uLiBJdCBhbHNvIHJlbW92ZXMgdGhlIFdRX0hJR0hQUkkgZmxhZyBmcm9tIHRoZSB3b3JrcXVldWUgYWxsb2NhdGlvbiBpbiBtd2lmaWV4X2FkZF9jYXJkIGFuZCBtd2lmaWV4X3JlaW5pdF9zdy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiBhIGRyaXZlciB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSB0aGUgVVNCIGludGVyZmFjZSwgd2hpY2ggaXMgZW11bGF0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSB1c2luZyB2aGNpIChkdW1teSBVU0IgZGV2aWNlKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TVdJRklFWCYjMzQ7LAogICAgJiMzNDtNV0lGSUVYX1VTQiYjMzQ7LAogICAgJiMzNDtDRkc4MDIxMSYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttd2lmaWV4X3dhaXRfcXVldWVfY29tcGxldGUmIzM0OywKICAgICYjMzQ7bXdpZmlleF9zZW5kX2NtZCYjMzQ7LAogICAgJiMzNDttd2lmaWV4X3NjYW5fbmV0d29ya3MmIzM0OywKICAgICYjMzQ7bXdpZmlleF9hZGRfY2FyZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWFydmVsbCBXaUZpLUV4IERyaXZlciB0byBkZXRhY2ggYSBjYWxsZXItb3duZWQgYnVmZmVyIGZyb20gdGhlIGN1cnJlbnQgY29tbWFuZCBpZiBhIHdhaXQgaXMgaW50ZXJydXB0ZWQsIHByZXZlbnRpbmcgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgbWVtb3J5IGNvcnJ1cHRpb24uIEl0IGFsc28gcmVtb3ZlcyB0aGUgV1FfSElHSFBSSSBmbGFnIGZyb20gdGhlIHdvcmtxdWV1ZSBhbGxvY2F0aW9uIGluIG13aWZpZXhfYWRkX2NhcmQgYW5kIG13aWZpZXhfcmVpbml0X3N3LiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIGEgZHJpdmVyIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIHRoZSBVU0IgaW50ZXJmYWNlLCB3aGljaCBpcyBlbXVsYXRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIHVzaW5nIHZoY2kgKGR1bW15IFVTQiBkZXZpY2UpLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjZUMDg6MzA6MzMuMTQ4NTAzOTQ0WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzkxNDQ0Nzc0MzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTVdJRklFWFwiLFxuICAgIFwiTVdJRklFWF9VU0JcIixcbiAgICBcIkNGRzgwMjExXCIsXG4gICAgXCJVU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtd2lmaWV4X3dhaXRfcXVldWVfY29tcGxldGVcIixcbiAgICBcIm13aWZpZXhfc2VuZF9jbWRcIixcbiAgICBcIm13aWZpZXhfc2Nhbl9uZXR3b3Jrc1wiLFxuICAgIFwibXdpZmlleF9hZGRfY2FyZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIHRvIGRldGFjaCBhIGNhbGxlci1vd25lZCBidWZmZXIgZnJvbSB0aGUgY3VycmVudCBjb21tYW5kIGlmIGEgd2FpdCBpcyBpbnRlcnJ1cHRlZCwgcHJldmVudGluZyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBtZW1vcnkgY29ycnVwdGlvbi4gSXQgYWxzbyByZW1vdmVzIHRoZSBXUV9ISUdIUFJJIGZsYWcgZnJvbSB0aGUgd29ya3F1ZXVlIGFsbG9jYXRpb24gaW4gbXdpZmlleF9hZGRfY2FyZCBhbmQgbXdpZmlleF9yZWluaXRfc3cuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gYSBkcml2ZXIgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgdGhlIFVTQiBpbnRlcmZhY2UsIHdoaWNoIGlzIGVtdWxhdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgdXNpbmcgdmhjaSAoZHVtbXkgVVNCIGRldmljZSkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA4OjMwOjMzLjE0ODUxMjQ1NVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjY3MzI3NjIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgOGUyZjc2YWI3YmIwYzhmOGRjMTQ4NTQzZGI1YzEzNDNhNTQ3NmVmYlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIEp1bCAyNiAwODozMDozMSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uY1xcbmluZGV4IGE4ZWFiNmIxZTYzYjBmLi5jOGRmM2VkZmY2NzVmZSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uY1xcbkBAIC0xNTUwLDcgKzE1NTAsNyBAQCBtd2lmaWV4X3JlaW5pdF9zdyhzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxcbiBcXG4gXFx0YWRhcHRlci1cXHUwMDNld29ya3F1ZXVlID1cXG4gXFx0XFx0YWxsb2Nfd29ya3F1ZXVlKFxcXCJNV0lGSUVYX1dPUktfUVVFVUVcXFwiLFxcbi1cXHRcXHRcXHRcXHRXUV9ISUdIUFJJIHwgV1FfTUVNX1JFQ0xBSU0gfCBXUV9VTkJPVU5ELCAwKTtcXG4rXFx0XFx0XFx0XFx0V1FfTUVNX1JFQ0xBSU0gfCBXUV9VTkJPVU5ELCAwKTtcXG4gXFx0aWYgKCFhZGFwdGVyLVxcdTAwM2V3b3JrcXVldWUpXFxuIFxcdFxcdGdvdG8gZXJyX2ttYWxsb2M7XFxuIFxcbkBAIC0xNzE2LDcgKzE3MTYsNyBAQCBtd2lmaWV4X2FkZF9jYXJkKHZvaWQgKmNhcmQsIHN0cnVjdCBjb21wbGV0aW9uICpmd19kb25lLFxcbiBcXG4gXFx0YWRhcHRlci1cXHUwMDNld29ya3F1ZXVlID1cXG4gXFx0XFx0YWxsb2Nfd29ya3F1ZXVlKFxcXCJNV0lGSUVYX1dPUktfUVVFVUVcXFwiLFxcbi1cXHRcXHRcXHRcXHRXUV9ISUdIUFJJIHwgV1FfTUVNX1JFQ0xBSU0gfCBXUV9VTkJPVU5ELCAwKTtcXG4rXFx0XFx0XFx0XFx0V1FfTUVNX1JFQ0xBSU0gfCBXUV9VTkJPVU5ELCAwKTtcXG4gXFx0aWYgKCFhZGFwdGVyLVxcdTAwM2V3b3JrcXVldWUpXFxuIFxcdFxcdGdvdG8gZXJyX2ttYWxsb2M7XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmNcXG5pbmRleCA5NDYwZDUzNTJiMjM0ZS4uMTkxOTY4NDg3NzhjMGMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jXFxuQEAgLTU3LDYgKzU3LDE4IEBAIGludCBtd2lmaWV4X3dhaXRfcXVldWVfY29tcGxldGUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcXG4gXFx0XFx0bXdpZmlleF9kYmcoYWRhcHRlciwgRVJST1IsIFxcXCJjbWRfd2FpdF9xIHRlcm1pbmF0ZWQ6ICVkXFxcXG5cXFwiLFxcbiBcXHRcXHRcXHQgICAgc3RhdHVzKTtcXG4gXFx0XFx0bXdpZmlleF9jYW5jZWxfYWxsX3BlbmRpbmdfY21kKGFkYXB0ZXIpO1xcbitcXG4rXFx0XFx0LyogVGhlIGNvbW1hbmQgcmVzcG9uc2UgcGF0aCB3cml0ZXMgdGhyb3VnaCBjbWRfbm9kZS1cXHUwMDNlZGF0YV9idWYuXFxuK1xcdFxcdCAqIE9uIGFuIGludGVycnVwdGVkIHdhaXQsIHRoZSBjYWxsZXIgY2FuIHJldHVybiBhbmQgcmVsZWFzZSBhXFxuK1xcdFxcdCAqIHN0YWNrLWFsbG9jYXRlZCBkYXRhX2J1ZiBiZWZvcmUgYSBsYXRlIGZpcm13YXJlIHJlc3BvbnNlIGlzXFxuK1xcdFxcdCAqIHByb2Nlc3NlZC4gRGV0YWNoIHRoZSBjYWxsZXItb3duZWQgYnVmZmVyIGZyb20gdGhlIGN1cnJlbnRcXG4rXFx0XFx0ICogY29tbWFuZCBzbyBhIGxhdGUgcmVzcG9uc2UgY2Fubm90IGNvcnJ1cHQgZnJlZWQgc3RhY2sgbWVtb3J5LlxcbitcXHRcXHQgKi9cXG4rXFx0XFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZhZGFwdGVyLVxcdTAwM2Vtd2lmaWV4X2NtZF9sb2NrKTtcXG4rXFx0XFx0aWYgKGFkYXB0ZXItXFx1MDAzZWN1cnJfY21kID09IGNtZF9xdWV1ZWQpXFxuK1xcdFxcdFxcdGFkYXB0ZXItXFx1MDAzZWN1cnJfY21kLVxcdTAwM2VkYXRhX2J1ZiA9IE5VTEw7XFxuK1xcdFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZhZGFwdGVyLVxcdTAwM2Vtd2lmaWV4X2NtZF9sb2NrKTtcXG4rXFxuIFxcdFxcdHJldHVybiBzdGF0dXM7XFxuIFxcdH1cXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA4OjMwOjMzLjgxNjc4NTk0N1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjc4NDc2MTgzODI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1XSUZJRVhcIixcbiAgICBcIk1XSUZJRVhfVVNCXCIsXG4gICAgXCJDRkc4MDIxMVwiLFxuICAgIFwiVVNCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXdpZmlleF93YWl0X3F1ZXVlX2NvbXBsZXRlXCIsXG4gICAgXCJtd2lmaWV4X3NlbmRfY21kXCIsXG4gICAgXCJtd2lmaWV4X3NjYW5fbmV0d29ya3NcIixcbiAgICBcIm13aWZpZXhfYWRkX2NhcmRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWFydmVsbCBXaUZpLUV4IERyaXZlciB0byBkZXRhY2ggYSBjYWxsZXItb3duZWQgYnVmZmVyIGZyb20gdGhlIGN1cnJlbnQgY29tbWFuZCBpZiBhIHdhaXQgaXMgaW50ZXJydXB0ZWQsIHByZXZlbnRpbmcgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgbWVtb3J5IGNvcnJ1cHRpb24uIEl0IGFsc28gcmVtb3ZlcyB0aGUgV1FfSElHSFBSSSBmbGFnIGZyb20gdGhlIHdvcmtxdWV1ZSBhbGxvY2F0aW9uIGluIG13aWZpZXhfYWRkX2NhcmQgYW5kIG13aWZpZXhfcmVpbml0X3N3LiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIGEgZHJpdmVyIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIHRoZSBVU0IgaW50ZXJmYWNlLCB3aGljaCBpcyBlbXVsYXRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIHVzaW5nIHZoY2kgKGR1bW15IFVTQiBkZXZpY2UpLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA4ZTJmNzZhYjdiYjBjOGY4ZGMxNDg1NDNkYjVjMTM0M2E1NDc2ZWZiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBKdWwgMjYgMDg6MzA6MzEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uY1xuaW5kZXggYThlYWI2YjFlNjNiMGYuLmM4ZGYzZWRmZjY3NWZlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uY1xuQEAgLTE1NTAsNyArMTU1MCw3IEBAIG13aWZpZXhfcmVpbml0X3N3KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXG4gXG4gXHRhZGFwdGVyLVx1MDAzZXdvcmtxdWV1ZSA9XG4gXHRcdGFsbG9jX3dvcmtxdWV1ZShcIk1XSUZJRVhfV09SS19RVUVVRVwiLFxuLVx0XHRcdFx0V1FfSElHSFBSSSB8IFdRX01FTV9SRUNMQUlNIHwgV1FfVU5CT1VORCwgMCk7XG4rXHRcdFx0XHRXUV9NRU1fUkVDTEFJTSB8IFdRX1VOQk9VTkQsIDApO1xuIFx0aWYgKCFhZGFwdGVyLVx1MDAzZXdvcmtxdWV1ZSlcbiBcdFx0Z290byBlcnJfa21hbGxvYztcbiBcbkBAIC0xNzE2LDcgKzE3MTYsNyBAQCBtd2lmaWV4X2FkZF9jYXJkKHZvaWQgKmNhcmQsIHN0cnVjdCBjb21wbGV0aW9uICpmd19kb25lLFxuIFxuIFx0YWRhcHRlci1cdTAwM2V3b3JrcXVldWUgPVxuIFx0XHRhbGxvY193b3JrcXVldWUoXCJNV0lGSUVYX1dPUktfUVVFVUVcIixcbi1cdFx0XHRcdFdRX0hJR0hQUkkgfCBXUV9NRU1fUkVDTEFJTSB8IFdRX1VOQk9VTkQsIDApO1xuK1x0XHRcdFx0V1FfTUVNX1JFQ0xBSU0gfCBXUV9VTkJPVU5ELCAwKTtcbiBcdGlmICghYWRhcHRlci1cdTAwM2V3b3JrcXVldWUpXG4gXHRcdGdvdG8gZXJyX2ttYWxsb2M7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jXG5pbmRleCA5NDYwZDUzNTJiMjM0ZS4uMTkxOTY4NDg3NzhjMGMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuY1xuQEAgLTU3LDYgKzU3LDE4IEBAIGludCBtd2lmaWV4X3dhaXRfcXVldWVfY29tcGxldGUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcbiBcdFx0bXdpZmlleF9kYmcoYWRhcHRlciwgRVJST1IsIFwiY21kX3dhaXRfcSB0ZXJtaW5hdGVkOiAlZFxcblwiLFxuIFx0XHRcdCAgICBzdGF0dXMpO1xuIFx0XHRtd2lmaWV4X2NhbmNlbF9hbGxfcGVuZGluZ19jbWQoYWRhcHRlcik7XG4rXG4rXHRcdC8qIFRoZSBjb21tYW5kIHJlc3BvbnNlIHBhdGggd3JpdGVzIHRocm91Z2ggY21kX25vZGUtXHUwMDNlZGF0YV9idWYuXG4rXHRcdCAqIE9uIGFuIGludGVycnVwdGVkIHdhaXQsIHRoZSBjYWxsZXIgY2FuIHJldHVybiBhbmQgcmVsZWFzZSBhXG4rXHRcdCAqIHN0YWNrLWFsbG9jYXRlZCBkYXRhX2J1ZiBiZWZvcmUgYSBsYXRlIGZpcm13YXJlIHJlc3BvbnNlIGlzXG4rXHRcdCAqIHByb2Nlc3NlZC4gRGV0YWNoIHRoZSBjYWxsZXItb3duZWQgYnVmZmVyIGZyb20gdGhlIGN1cnJlbnRcbitcdFx0ICogY29tbWFuZCBzbyBhIGxhdGUgcmVzcG9uc2UgY2Fubm90IGNvcnJ1cHQgZnJlZWQgc3RhY2sgbWVtb3J5LlxuK1x0XHQgKi9cbitcdFx0c3Bpbl9sb2NrX2JoKFx1MDAyNmFkYXB0ZXItXHUwMDNlbXdpZmlleF9jbWRfbG9jayk7XG4rXHRcdGlmIChhZGFwdGVyLVx1MDAzZWN1cnJfY21kID09IGNtZF9xdWV1ZWQpXG4rXHRcdFx0YWRhcHRlci1cdTAwM2VjdXJyX2NtZC1cdTAwM2VkYXRhX2J1ZiA9IE5VTEw7XG4rXHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmFkYXB0ZXItXHUwMDNlbXdpZmlleF9jbWRfbG9jayk7XG4rXG4gXHRcdHJldHVybiBzdGF0dXM7XG4gXHR9XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwODozMDozMy44MTY3ODc5MzdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDI3Mzc2MTk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFBvdGVudGlhbCBWdWxuZXJhYmlsaXR5IGluIHRoZSBNYXJ2ZWxsIFdpRmktRXggRHJpdmVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQgc2VlbXMgdG8gYmUgdG91Y2hpbmcgYG13aWZpZXhgIOKAkyBzcGVjaWZpY2FsbHksIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jYCBhbmQgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuY2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIldoYXQncyB0aGUgaW1wYWN0IG9mIHRoZXNlIGNoYW5nZXM/XCIgSXQgbG9va3MgbGlrZSB0aGV5J3JlIHJlbW92aW5nIGBXUV9ISUdIUFJJYCBmcm9tIGBhbGxvY193b3JrcXVldWVgIGluIGBtd2lmaWV4X3JlaW5pdF9zd2AgYW5kIGBtd2lmaWV4X2FkZF9jYXJkYCwgYW5kIGFsc28gYWRkaW5nIGEgbmV3IGNoZWNrIGluIGBtd2lmaWV4X3dhaXRfcXVldWVfY29tcGxldGVgIHRvIGhhbmRsZSBidWZmZXIgZGV0YWNobWVudCBkdXJpbmcgYW4gaW50ZXJydXB0ZWQgd2FpdC5cblxuTXkgbmV4dCBzdGVwIGlzIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBpcyBhY3R1YWxseSBleHBsb2l0YWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBUaGUgTWFydmVsbCBXaUZpLUV4IGRyaXZlciAoYG13aWZpZXhgKSB0eXBpY2FsbHkgc3VwcG9ydHMgU0RJTywgUENJZSwgYW5kIFVTQiBpbnRlcmZhY2VzLiBVU0IgaXMgb2Z0ZW4gdGhlIGVhc2llc3QgdG8gZW11bGF0ZSB1c2luZyBzb21ldGhpbmcgbGlrZSBhIFVTQiBnYWRnZXQgb3IgdmhjaS4gU28sIHRoZSBjaGFuY2VzIG9mIHRoaXMgYmVpbmcgcmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgY29udGV4dCBhcmUgcHJvYmFibHkgZmFpcmx5IGhpZ2gsIHdoaWNoIGlzIGltcG9ydGFudCB0byBjb25zaWRlci5cblxuVG8gZ2V0IGEgYmV0dGVyIHBpY3R1cmUsIEknbSBnb2luZyB0byBxdWlja2x5IGNoZWNrIHRoZSBgS2NvbmZpZ2AgZmlsZSBpbiB0aGF0IGRpcmVjdG9yeS4gSSB3YW50IHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0aGF0IG1pZ2h0IHByb3ZpZGUgY2x1ZXMgYWJvdXQgdGhlIGNvbmRpdGlvbnMgbmVjZXNzYXJ5IHRvIHRyaWdnZXIgdGhpcywgb3IgaWYgSSBjYW4gZmlndXJlIG91dCBob3cgdGhlIGRyaXZlciBjYW4gYmUgbWFkZSBhdmFpbGFibGUgZm9yIHRlc3RpbmcuIFVuZGVyc3RhbmRpbmcgdGhlIGF2YWlsYWJsZSBjb25maWd1cmF0aW9ucyB3aWxsIGdpdmUgbWUgYW4gaWRlYSBhYm91dCBob3cgdG8gcmVwbGljYXRlIGEgdGVzdCBlbnZpcm9ubWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU4NiwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxOCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA4OjMwOjM4Ljg0NDE2NzE4NFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTI1OTA2NzQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1XSUZJRVhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzoyOmNvbmZpZyBNV0lGSUVYXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBXaUZpLUV4IERyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTExLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjEyOmNvbmZpZyBNV0lGSUVYX1NESU9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0xMy1cXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBXaUZpLUV4IERyaXZlciBmb3IgU0Q4Nzg2L1NEODc4Ny9TRDg3OTcvU0Q4ODg3L1NEODg5Ny9TRDg5NzcvU0Q4OTc4L1NEODk4Ny9TRDg5OTdcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0yNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzoyNTpjb25maWcgTVdJRklFWF9QQ0lFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMjYtXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFBDSUUgODc2Ni84ODk3Lzg5OTdcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0zNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzozNzpjb25maWcgTVdJRklFWF9VU0JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0zOC1cXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBXaUZpLUV4IERyaXZlciBmb3IgVVNCODc2Ni84Nzk3Lzg5OTdcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA4OjMwOjM5LjA5Njc2MzcxOFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxNzMxNjg3NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBhbmFseXppbmcgdGhpcyBjb2RlOlxuXG4qKk1XSUZJRVhfVVNCIERlZXAgRGl2ZSoqXG5cbk9rYXksIHNvIGBNV0lGSUVYX1VTQmAgaXMgY2xlYXJseSBpbiB0aGUgcGljdHVyZSwgd2hpY2ggbWVhbnMgd2UncmUgZGVhbGluZyB3aXRoIGEgVVNCLWJhc2VkIGltcGxlbWVudGF0aW9uIG9mIHRoZSBNV0lGSUVYIGRyaXZlci4gTXkgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyB0byBkcmlsbCBkb3duIGludG8gaG93IHRoZSBhc3luY2hyb25vdXMgY29tcGxldGlvbiBtZWNoYW5pc20gaXMgYmVpbmcgaGFuZGxlZC4gSSBrbm93IHRoaXMgZHJpdmVyIHJlbGllcyBvbiBxdWV1aW5nLCBzbyBsZXQncyBjaGVjayBgbXdpZmlleF93YWl0X3F1ZXVlX2NvbXBsZXRlYC4gVGhpcyBmdW5jdGlvbiBpcyBjcml0aWNhbCBmb3Igc3luY2hyb25pemluZyB0aGUgZHJpdmVyJ3Mgb3BlcmF0aW9uLCBzbyB1bmRlcnN0YW5kaW5nIGl0cyBiZWhhdmlvciBhbmQgcG90ZW50aWFsIGJvdHRsZW5lY2tzIGlzIHBhcmFtb3VudC4gSSBuZWVkIHRvIHRyYWNlICphbGwqIHRoZSBwbGFjZXMgdGhhdCBjYWxsIHRoaXMgZnVuY3Rpb24uIFRoYXQgd2lsbCB0ZWxsIG1lIHdoZXJlIHRoZXNlIGNvbXBsZXRpb24gZXZlbnRzIGFyZSBleHBlY3RlZCB0byBiZSBzaWduYWxlZCBmcm9tLCBhbmQgd2hlcmUgdGhlIGRyaXZlciBpcyBibG9ja2VkIHVudGlsIHRoZXNlIGV2ZW50cyBhcmUgcmVjZWl2ZWQuIEkgbmVlZCB0byBtYXAgb3V0IHRoZSBlbnRpcmUgY2FsbCBncmFwaCByZWxhdGVkIHRvIHRoaXMgd2FpdCBmdW5jdGlvbiwgYW5kIHVuZGVyc3RhbmQgYWxsIHRoZSBzdGF0ZXMgaXQncyBiZWluZyB1c2VkIHRvIHN5bmNocm9uaXplLiBUaGF0IHdpbGwgZ2l2ZSBtZSB0aGUgYmlnIHBpY3R1cmUgb2YgYW55IGRlcGVuZGVuY2llcyB0aGF0IHdpbGwgYmUgaW1wYWN0ZWQgYnkgaXRzIHVzZSwgYW5kIGlmIHRoZXJlIGFyZSBhbnkgcmFjZSBjb25kaXRpb25zIHRvIGxvb2sgb3V0IGZvci5cblxuXG4iLCJJbnB1dFRva2VucyI6MzU5OSwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA4OjMwOjQyLjI2OTkzNDk4M1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTYxMDE3MjMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXdpZmlleF93YWl0X3F1ZXVlX2NvbXBsZXRlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NtZGV2dC5jPTU0Mj1pbnQgbXdpZmlleF9zZW5kX2NtZChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCB1MTYgY21kX25vLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NtZGV2dC5jLTY2Ny1cXHRcXHRpZiAoY21kX25vZGUtXFx1MDAzZXdhaXRfcV9lbmFibGVkKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jbWRldnQuYzo2Njg6XFx0XFx0XFx0cmV0ID0gbXdpZmlleF93YWl0X3F1ZXVlX2NvbXBsZXRlKGFkYXB0ZXIsIGNtZF9ub2RlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY21kZXZ0LmMtNjY5LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg9MTQ3Nj1pbnQgbXdpZmlleF9jb3B5X21jYXN0X2FkZHIoc3RydWN0IG13aWZpZXhfbXVsdGljYXN0X2xpc3QgKm1saXN0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTQ3Ny1cXHRcXHRcXHQgICAgc3RydWN0IG5ldF9kZXZpY2UgKmRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaDoxNDc4OmludCBtd2lmaWV4X3dhaXRfcXVldWVfY29tcGxldGUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTE0NzktXFx0XFx0XFx0XFx0c3RydWN0IGNtZF9jdHJsX25vZGUgKmNtZF9xdWV1ZWQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYz0xNDcwPWludCBtd2lmaWV4X3NjYW5fbmV0d29ya3Moc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMTU0Mi1cXHRcXHRcXHRcXHRcXHQgICAgXFxcIndhaXQgaW50ZXJuYWwgc2NhblxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYzoxNTQzOlxcdFxcdFxcdFxcdG13aWZpZXhfd2FpdF9xdWV1ZV9jb21wbGV0ZShhZGFwdGVyLCBjbWRfbm9kZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0xNTQ0LVxcdFxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYz0yNz1pbnQgbXdpZmlleF9jb3B5X21jYXN0X2FkZHIoc3RydWN0IG13aWZpZXhfbXVsdGljYXN0X2xpc3QgKm1saXN0LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jLTQ0LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYzo0NTppbnQgbXdpZmlleF93YWl0X3F1ZXVlX2NvbXBsZXRlKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jLTQ2LVxcdFxcdFxcdFxcdHN0cnVjdCBjbWRfY3RybF9ub2RlICpjbWRfcXVldWVkKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwODozMDo0Mi41MjYwNDI1MjdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjgyODgzMDIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgbXdpZmlleCBEcml2ZXIgZm9yIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYG13aWZpZXhfd2FpdF9xdWV1ZV9jb21wbGV0ZWAuIFRoaXMgZnVuY3Rpb24gcG9wcyB1cCBpbiBib3RoIGBtd2lmaWV4X3NlbmRfY21kYCBhbmQgYG13aWZpZXhfc2Nhbl9uZXR3b3Jrc2AuICBgbXdpZmlleF9zZW5kX2NtZGAgaXMgY2xlYXJseSBhIGNyaXRpY2FsIGZ1bmN0aW9uLCB0aGUgYmFja2JvbmUgZm9yIHNlbmRpbmcgY29tbWFuZHMgZG93biB0byB0aGUgZmlybXdhcmUuICBHaXZlbiB0aGF0IHRoaXMgaXMgYSBVU0IgZHJpdmVyLCB0aGUgcG90ZW50aWFsIGZvciBmdXp6aW5nIHVzaW5nIHN5emthbGxlciBhbmQgdGhlIHZpcnR1YWwgSENJIGRldmljZSAodmhjaSkgaXMgcmVhbGx5IHByb21pc2luZy4gVGhlIGVudHJ5IHBvaW50cywgdGhlIGNvbW1hbmQgZnVuY3Rpb25zIGFyZSBjbGVhcmx5IHRoZXJlLiBOb3csIGxldCdzIG5haWwgZG93biB0aG9zZSBjb25maWd1cmF0aW9uIG9wdGlvbnMuIE5lZWQgdG8ga25vdyB3aGF0IHN3aXRjaGVzIGFyZSBlbmFibGVkLiBJJ20gc2VlaW5nIGBNV0lGSUVYYCBhbmQgYE1XSUZJRVhfVVNCYCBvcHRpb25zLiBUaGF0J3MgYSBnb29kIHN0YXJ0LiBMZXQgbWUgY2hlY2sgdGhlIGRlcGVuZGVuY2llcyBmb3IgYE1XSUZJRVhfVVNCYCB0byB1bmRlcnN0YW5kIHRoZSBzZXR1cC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gdG8gZGV0ZXJtaW5lIHRoZSBvcHRpbWFsIGZ1enppbmcgc3RyYXRlZ3kuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1MjIsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDg6MzA6NDYuMjA4OTI4NTI5WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4OTMzNjY3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTVdJRklFWF9VU0JcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc9MjU9Y29uZmlnIE1XSUZJRVhfUENJRVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6Mzc6Y29uZmlnIE1XSUZJRVhfVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzgtXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFVTQjg3NjYvODc5Ny84OTk3XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwODozMDo0Ni4zOTgyNzA0MzRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDIzMTI4NzYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSB3ZWxsLXZlcnNlZCBpbiBrZXJuZWwgY29uZmlndXJhdGlvbiBhbmQgTWFydmVsbCB3aXJlbGVzcyBkcml2ZXJzOlxuXG4qKkFuYWx5emluZyB0aGUgTWFydmVsbCBXaS1GaSBEcml2ZXIgS2NvbmZpZyoqXG5cbkFscmlnaHQsIG15IGludGVybmFsIHJhZGFyIGlzIHBpbmdpbmcgYSBzcGVjaWZpYyBLY29uZmlnIGZpbGUg4oCTIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZ2Ag4oCTIGFuZCBJJ20gZGlyZWN0aW5nIG15IG1lbnRhbCBmb2N1cyBhcm91bmQgbGluZSAzNy4gSSdtIGltbWVkaWF0ZWx5IHRyeWluZyB0byBmaWd1cmUgb3V0ICp3aHkqIEknbSBiZWluZyBkcmF3biB0byB0aGF0IHBhcnRpY3VsYXIgc2VjdGlvbi4gQW0gSSBsb29raW5nIGZvciBhIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHJlbGF0ZWQgdG8gcG93ZXIgbWFuYWdlbWVudD8gUGVyaGFwcyBzb21lIGRlYnVnZ2luZyBmbGFncz8gT3IgbWF5YmUgSSdtIHRyb3VibGVzaG9vdGluZyBhIHNwZWNpZmljIG1vZHVsZSBzZWxlY3Rpb24gaXNzdWUgcmVsYXRlZCB0byB0aGUgTWFydmVsbCBXaS1GaSBkcml2ZXIuIEknbSBsaWtlbHkgbG9va2luZyBmb3IgYSBkZXBlbmRlbmN5IG9yIGEgZGVmYXVsdCB2YWx1ZSByZWxhdGVkIHRvIHNvbWUgZmVhdHVyZXMuIEl0J3MgdGltZSB0byBkaWcgaW50byB0aGF0IGZpbGUgYW5kIHNlZSB3aGF0J3MgYmVpbmcgY29uZmlndXJlZCBhcm91bmQgdGhhdCBsaW5lLiBNeSBleHBlcnRpc2UgaXMgbm93IGJlaW5nIGZvY3VzZWQgaW4gb24gdGhhdCBhcmVhIHRvIGdldCBhIGhhbmRsZSBvbiB3aGF0IHRoZSBzeXN0ZW0gaXMgZ29pbmcgdG8gZG8uIExldCdzIHNlZSB3aGF0IHNlY3JldHMgdGhhdCBLY29uZmlnIGZpbGUgaXMgaG9sZGluZyFcblxuXG4iLCJJbnB1dFRva2VucyI6NTAxNywiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA4OjMwOjQ5LjgyMTQwMTk0NFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MzYxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAzMCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAzMDpcXHRcXHRoZWxwXFxuICAzMTpcXHRcXHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciB3aXJlbGVzcyBhZGFwdGVycyBiYXNlZCBvbiBNYXJ2ZWxsXFxuICAzMjpcXHRcXHQgIDg3NjYvODg5Ny84OTk3IGNoaXBzZXRzIHdpdGggUENJZSBpbnRlcmZhY2UuXFxuICAzMzpcXHRcXG4gIDM0OlxcdFxcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBpdCBhcyBhIG1vZHVsZSwgaXQgd2lsbCBiZSBjYWxsZWRcXG4gIDM1OlxcdFxcdCAgbXdpZmlleF9wY2llLlxcbiAgMzY6XFx0XFxuICAzNzpcXHRjb25maWcgTVdJRklFWF9VU0JcXG4gIDM4OlxcdFxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBVU0I4NzY2Lzg3OTcvODk5N1xcXCJcXG4gIDM5OlxcdFxcdGRlcGVuZHMgb24gTVdJRklFWCBcXHUwMDI2XFx1MDAyNiBVU0JcXG4gIDQwOlxcdFxcdHNlbGVjdCBGV19MT0FERVJcXG4gIDQxOlxcdFxcdGhlbHBcXG4gIDQyOlxcdFxcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIHdpcmVsZXNzIGFkYXB0ZXJzIGJhc2VkIG9uIE1hcnZlbGxcXG4gIDQzOlxcdFxcdCAgODc5Ny84OTk3IGNoaXBzZXQgd2l0aCBVU0IgaW50ZXJmYWNlLlxcbiAgNDQ6XFx0XFxuICA0NTpcXHRcXHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXFxuICA0NjpcXHRcXHQgIG13aWZpZXhfdXNiLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwODozMDo0OS44MjE0ODg0MzRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM4MzY1Njg2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgZGVwZW5kZW5jaWVzLCBzdW1tYXJpemVkIGFzIGEgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkRlcGVuZGVuY2llcyBhbmQgVGhlaXIgU3RydWN0dXJlKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBmb2N1cyBoZXJlIGlzIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGUgYE1XSUZJRVhgIGRyaXZlciBhbmQgaXRzIGRlcGVuZGVuY2llcy4gSXQncyBjcnVjaWFsLCBvYnZpb3VzbHksIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIG1vZHVsZXMgcmVsYXRlIHRvIGVhY2ggb3RoZXIgZm9yIGFueSBkZWJ1Z2dpbmcgb3IgbW9kaWZpY2F0aW9uIEknZCB3YW50IHRvIGRvLlxuXG5gTVdJRklFWGAgbmVlZHMgYFVTQmAgdG8gY29tbXVuaWNhdGUgd2l0aCB0aGUgaG9zdC4gVGhhdCBzZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoLCBnaXZlbiB0aGUgZHJpdmVyJ3MgZnVuY3Rpb24uIEJ1dCBgTVdJRklFWGAgaXRzZWxmIGlzbid0IGEgc3RhbmRhbG9uZSBlbnRpdHkuIERpZ2dpbmcgZGVlcGVyLCBJIHNlZSBpdCBhbHNvIGhhcyBkZXBlbmRlbmNpZXMgb24gYE1BQzgwMjExYCBhbmQgYENGRzgwMjExYC4gVGhhdCdzIHdoZXJlIHRoZSByZWFsIHN0cnVjdHVyZSBiZWNvbWVzIGludGVyZXN0aW5nLiBUaGVzZSBhcmUgdGhlIGNvcmUgd2lyZWxlc3MgbmV0d29ya2luZyBjb21wb25lbnRzLCB0aGUgbG93ZXIgbGF5ZXJzLiBTbyBgTVdJRklFWGAgbGlrZWx5IHNpdHMgb24gdG9wIG9mIHRoZXNlLCBwcm92aWRpbmcgYSBtb3JlIHNwZWNpZmljIGludGVyZmFjZSBvciBmdW5jdGlvbmFsaXR5IHJlbGF0ZWQgdG8gYSBzcGVjaWZpYyBoYXJkd2FyZSBmYW1pbHkuIEVzc2VudGlhbGx5IGBNV0lGSUVYYCBsZXZlcmFnZXMgdGhlIGxvdyBsZXZlbCA4MDIuMTEgc3RhY2sgdG8gd29yayBvbiBVU0IuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1NzMsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA4OjMwOjUzLjIwNTE0OTA1NFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NTI4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIE1XSUZJRVhcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIFdpRmktRXggRHJpdmVyXFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBDRkc4MDIxMVxcbiAgIDU6XFx0XFx0aGVscFxcbiAgIDY6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb24gTWFydmVsbFxcbiAgIDc6XFx0XFx0ICA4MDIuMTFuL2FjIGNoaXBzZXRzLlxcbiAgIDg6XFx0XFxuICAgOTpcXHRcXHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXFxuICAxMDpcXHRcXHQgIG13aWZpZXguXFxuICAxMTpcXHRcXG4gIDEyOlxcdGNvbmZpZyBNV0lGSUVYX1NESU9cXG4gIDEzOlxcdFxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBTRDg3ODYvU0Q4Nzg3L1NEODc5Ny9TRDg4ODcvU0Q4ODk3L1NEODk3Ny9TRDg5NzgvU0Q4OTg3L1NEODk5N1xcXCJcXG4gIDE0OlxcdFxcdGRlcGVuZHMgb24gTVdJRklFWCBcXHUwMDI2XFx1MDAyNiBNTUNcXG4gIDE1OlxcdFxcdHNlbGVjdCBGV19MT0FERVJcXG4gIDE2OlxcdFxcdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxcbiAgMTc6XFx0XFx0aGVscFxcbiAgMTg6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb24gTWFydmVsbFxcbiAgMTk6XFx0XFx0ICA4Nzg2Lzg3ODcvODc5Ny84ODg3Lzg4OTcvODk3Ny84OTc4Lzg5ODcvODk5NyBjaGlwc2V0cyB3aXRoXFxuICAyMDpcXHRcXHQgIFNESU8gaW50ZXJmYWNlLiBTRDg5NzggaXMgYWxzbyBrbm93biBhcyBOWFAgSVc0MTYuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA4OjMwOjUzLjIwNTI0NjU1NFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Mzg3OTI0MTk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgdGhlIE1XSUZJRVggRHJpdmVyOiBJbml0aWFsIEFzc2Vzc21lbnQqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBNV0lGSUVYYCBkcml2ZXIgYW5kIGl0cyBhc3NvY2lhdGVkIGNvbmZpZ3VyYXRpb25zOiBgTVdJRklFWGAsIGBNV0lGSUVYX1VTQmAsIGBDRkc4MDIxMWAsIGFuZCB0aGUgZ2VuZXJhbCBgVVNCYCBzdXBwb3J0LiBUaGUgZ29hbCwgYXMgYWx3YXlzLCBpcyB0byBpZGVudGlmeSB2aWFibGUgZW50cnkgcG9pbnRzIGZvciBmdXp6aW5nLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSBJIGNhbiBpbmplY3QgbWFsZm9ybWVkIGRhdGEgdG8gdHJpZ2dlciBpbnRlcmVzdGluZyBiZWhhdmlvci5cblxuUmlnaHQgYXdheSwgYG13aWZpZXhfd2FpdF9xdWV1ZV9jb21wbGV0ZWAgY2F0Y2hlcyBteSBleWUuIEl0J3MgY2FsbGVkIGZyb20gYG13aWZpZXhfc2VuZF9jbWRgIGFuZCBgbXdpZmlleF9zY2FuX25ldHdvcmtzYCwgd2hpY2ggaXMgYSBkZWNlbnQgc3RhcnRpbmcgcG9pbnQuIGBtd2lmaWV4X3NlbmRfY21kYCBpbiBwYXJ0aWN1bGFyIGxvb2tzIHByb21pc2luZy4gSXQgc2VlbXMgbGlrZSBhIGNlbnRyYWwgY29tbWFuZCBoYW5kbGVyIGFuZCBpcyBsaWtlbHkgdG8gdG91Y2ggYSBsb3Qgb2YgZGlmZmVyZW50IGNvZGUgcGF0aHMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBiZWhhdmlvciBhbmQgd2hhdCBraW5kIG9mIGRhdGEgaXQgYWNjZXB0cy5cblxuTm93LCBsZXQncyBkcmlsbCBkb3duLiBJIHNob3VsZCBjaGVjayB3aGF0IG90aGVyIGZ1bmN0aW9ucyBjYWxsIGBtd2lmaWV4X3NlbmRfY21kYC4gVGhhdCdsbCBoZWxwIG1lIHVuZGVyc3RhbmQgdGhlIGNvbXBsZXRlIGV4ZWN1dGlvbiBmbG93IHRvIGZpbmQgbW9yZSBpbnRlcmVzdGluZyBlbnRyeXBvaW50cy4gRmluZGluZyBhbGwgdGhlIGNhbGwgc2l0ZXMgdG8gdGhpcyBjb21tYW5kIGhhbmRsZXIgd291bGQgZ2l2ZSBtZSBhIGdvb2QgaW5zaWdodCBpbnRvIHRoZSBvdmVyYWxsIGRyaXZlciBzdHJ1Y3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYyNTQsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwODozMDo1Ny41OTMxNzQzMDhaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxNTgxNTA3NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtd2lmaWV4X3NlbmRfY21kXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA3MzcgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYz03MD1pbnQgbXdpZmlleF8xMWhfYWN0aXZhdGUoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgYm9vbCBmbGFnKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTc3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzo3ODpcXHRyZXR1cm4gbXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF84MDJfMTFfU05NUF9NSUIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTc5LVxcdFxcdFxcdFxcdEhvc3RDbWRfQUNUX0dFTl9TRVQsIERPVDExSF9JLCBcXHUwMDI2ZW5hYmxlLCB0cnVlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYz0xNTk9aW50IG13aWZpZXhfc3RvcF9yYWRhcl9kZXRlY3Rpb24oc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xNjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjE2ODpcXHRyZXR1cm4gbXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF9DSEFOX1JFUE9SVF9SRVFVRVNULFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xNjktXFx0XFx0XFx0XFx0SG9zdENtZF9BQ1RfR0VOX1NFVCwgMCwgXFx1MDAyNnJhZGFyX3BhcmFtcywgdHJ1ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM9NTc2PWludCBtd2lmaWV4X3NlbmRfYWRkYmEoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgaW50IHRpZCwgdTggKnBlZXJfbWFjKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTYyOC1cXHQvKiBXZSBkb24ndCB3YWl0IGZvciB0aGUgcmVzcG9uc2Ugb2YgdGhpcyBjb21tYW5kICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjYyOTpcXHRyZXQgPSBtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EXzExTl9BRERCQV9SRVEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTYzMC1cXHRcXHRcXHQgICAgICAgMCwgMCwgXFx1MDAyNmFkZF9iYV9yZXEsIGZhbHNlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYz02Mzg9aW50IG13aWZpZXhfc2VuZF9kZWxiYShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCBpbnQgdGlkLCB1OCAqcGVlcl9tYWMsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtNjU3LVxcdC8qIFdlIGRvbid0IHdhaXQgZm9yIHRoZSByZXNwb25zZSBvZiB0aGlzIGNvbW1hbmQgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NjU4OlxcdHJldCA9IG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfMTFOX0RFTEJBLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy02NTktXFx0XFx0XFx0ICAgICAgIEhvc3RDbWRfQUNUX0dFTl9TRVQsIDAsIFxcdTAwMjZkZWxiYSwgZmFsc2UpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbl9yeHJlb3JkZXIuYz03NjU9dm9pZCBtd2lmaWV4XzExbl9iYV9zdHJlYW1fdGltZW91dChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbl9yeHJlb3JkZXIuYy03NzctXFx0ZGVsYmEucmVhc29uX2NvZGUgPSBjcHVfdG9fbGUxNihXTEFOX1JFQVNPTl9RU1RBX1RJTUVPVVQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW5fcnhyZW9yZGVyLmM6Nzc4OlxcdG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfMTFOX0RFTEJBLCAwLCAwLCBcXHUwMDI2ZGVsYmEsIGZhbHNlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuX3J4cmVvcmRlci5jLTc3OS19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYz0yODI9bXdpZmlleF9jZmc4MDIxMV91cGRhdGVfbWdtdF9mcmFtZV9yZWdpc3RyYXRpb25zKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0yOTItXFx0XFx0XFx0cHJpdi1cXHUwMDNlbWdtdF9mcmFtZV9tYXNrIHw9IEhPU1RfTUxNRV9NR01UX01BU0s7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM6MjkzOlxcdFxcdG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfTUdNVF9GUkFNRV9SRUcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMjk0LVxcdFxcdFxcdFxcdCBIb3N0Q21kX0FDVF9HRU5fU0VULCAwLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM9NDEzPW13aWZpZXhfY2ZnODAyMTFfZ2V0X3R4X3Bvd2VyKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy00MjAtXFx0XFx0XFx0XFx0XFx0XFx0XFx0TVdJRklFWF9CU1NfUk9MRV9BTlkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jOjQyMTpcXHRpbnQgcmV0ID0gbXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF9SRl9UWF9QV1IsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtNDIyLVxcdFxcdFxcdFxcdCAgIEhvc3RDbWRfQUNUX0dFTl9HRVQsIDAsIE5VTEwsIHRydWUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM9NTIxPW13aWZpZXhfY2ZnODAyMTFfc2V0X2RlZmF1bHRfbWdtdF9rZXkoc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTUzOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYzo1NDA6XFx0aWYgKG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfODAyXzExX0tFWV9NQVRFUklBTCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy01NDEtXFx0XFx0XFx0ICAgICBIb3N0Q21kX0FDVF9HRU5fU0VULCB0cnVlLCBcXHUwMDI2ZW5jcnlwdF9rZXksIHRydWUpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYz01NTc9aW50IG13aWZpZXhfc2VuZF9kb21haW5faW5mb19jbWRfZncoc3RydWN0IHdpcGh5ICp3aXBoeSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTYyNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYzo2Mjg6XFx0aWYgKG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfODAyXzExRF9ET01BSU5fSU5GTyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy02MjktXFx0XFx0XFx0ICAgICBIb3N0Q21kX0FDVF9HRU5fU0VULCAwLCBOVUxMLCBmYWxzZSkpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jPTcwNz1td2lmaWV4X3NldF9mcmFnKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsIHUzMiBmcmFnX3RocilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTcxMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYzo3MTM6XFx0cmV0dXJuIG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfODAyXzExX1NOTVBfTUlCLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTcxNC1cXHRcXHRcXHRcXHRIb3N0Q21kX0FDVF9HRU5fU0VULCBGUkFHX1RIUkVTSF9JLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM9NzI1PW13aWZpZXhfc2V0X3J0cyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCB1MzIgcnRzX3RocilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTcyOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYzo3MzA6XFx0cmV0dXJuIG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfODAyXzExX1NOTVBfTUlCLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTczMS1cXHRcXHRcXHRcXHRIb3N0Q21kX0FDVF9HRU5fU0VULCBSVFNfVEhSRVNIX0ksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYz03NDI9bXdpZmlleF9jZmc4MDIxMV9zZXRfd2lwaHlfcGFyYW1zKHN0cnVjdCB3aXBoeSAqd2lwaHksIGludCByYWRpb19pZHgsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy03NzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM6NzczOlxcdFxcdHJldCA9IG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfVUFQX1NZU19DT05GSUcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtNzc0LVxcdFxcdFxcdFxcdCAgICAgICBIb3N0Q21kX0FDVF9HRU5fU0VULFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM9ODExPW13aWZpZXhfY2ZnODAyMTFfZGVpbml0X3AycChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtODE0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jOjgxNTpcXHRpZiAobXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF9QMlBfTU9ERV9DRkcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtODE2LVxcdFxcdFxcdCAgICAgSG9zdENtZF9BQ1RfR0VOX1NFVCwgMCwgXFx1MDAyNm1vZGUsIHRydWUpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM9ODI4PW13aWZpZXhfY2ZnODAyMTFfaW5pdF9wMnBfY2xpZW50KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy04MzUtXFx0bW9kZSA9IFAyUF9NT0RFX0RFVklDRTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYzo4MzY6XFx0aWYgKG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfUDJQX01PREVfQ0ZHLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTgzNy1cXHRcXHRcXHQgICAgIEhvc3RDbWRfQUNUX0dFTl9TRVQsIDAsIFxcdTAwMjZtb2RlLCB0cnVlKSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTg0MC1cXHRtb2RlID0gUDJQX01PREVfQ0xJRU5UO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jOjg0MTpcXHRpZiAobXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF9QMlBfTU9ERV9DRkcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtODQyLVxcdFxcdFxcdCAgICAgSG9zdENtZF9BQ1RfR0VOX1NFVCwgMCwgXFx1MDAyNm1vZGUsIHRydWUpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM9ODU0PW13aWZpZXhfY2ZnODAyMTFfaW5pdF9wMnBfZ28oc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTg2MS1cXHRtb2RlID0gUDJQX01PREVfREVWSUNFO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jOjg2MjpcXHRpZiAobXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF9QMlBfTU9ERV9DRkcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtODYzLVxcdFxcdFxcdCAgICAgSG9zdENtZF9BQ1RfR0VOX1NFVCwgMCwgXFx1MDAyNm1vZGUsIHRydWUpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtODY2LVxcdG1vZGUgPSBQMlBfTU9ERV9HTztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYzo4Njc6XFx0aWYgKG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfUDJQX01PREVfQ0ZHLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTg2OC1cXHRcXHRcXHQgICAgIEhvc3RDbWRfQUNUX0dFTl9TRVQsIDAsIFxcdTAwMjZtb2RlLCB0cnVlKSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jPTg3ND1zdGF0aWMgaW50IG13aWZpZXhfZGVpbml0X3ByaXZfcGFyYW1zKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy04ODAtXFx0cHJpdi1cXHUwMDNlbWdtdF9mcmFtZV9tYXNrID0gMDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYzo4ODE6XFx0aWYgKG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfTUdNVF9GUkFNRV9SRUcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtODgyLVxcdFxcdFxcdCAgICAgSG9zdENtZF9BQ1RfR0VOX1NFVCwgMCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jPTEwODU9bXdpZmlleF9jaGFuZ2VfdmlmX3RvX3AycChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMTEyNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYzoxMTI4OlxcdGlmIChtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX1NFVF9CU1NfTU9ERSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0xMTI5LVxcdFxcdFxcdCAgICAgSG9zdENtZF9BQ1RfR0VOX1NFVCwgMCwgTlVMTCwgdHJ1ZSkpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYz0xMTM5PW13aWZpZXhfY2hhbmdlX3ZpZl90b19zdGFfYWRob2Moc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTExNjktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM6MTE3MDpcXHRpZiAobXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF9TRVRfQlNTX01PREUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMTE3MS1cXHRcXHRcXHQgICAgIEhvc3RDbWRfQUNUX0dFTl9TRVQsIDAsIE5VTEwsIHRydWUpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM9MTE4MD1td2lmaWV4X2NoYW5nZV92aWZfdG9fYXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTEyMDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM6MTIwNzpcXHRpZiAobXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF9TRVRfQlNTX01PREUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMTIwOC1cXHRcXHRcXHQgICAgIEhvc3RDbWRfQUNUX0dFTl9TRVQsIDAsIE5VTEwsIHRydWUpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM9MTIxOT1td2lmaWV4X2NmZzgwMjExX2NoYW5nZV92aXJ0dWFsX2ludGYoc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTEyNjItXFx0XFx0XFx0bXdpZmlleF9kZWF1dGhlbnRpY2F0ZShwcml2LCBOVUxMKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYzoxMjYzOlxcdFxcdFxcdHJldHVybiBtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX1NFVF9CU1NfTU9ERSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0xMjY0LVxcdFxcdFxcdFxcdFxcdFxcdEhvc3RDbWRfQUNUX0dFTl9TRVQsIDAsIE5VTEwsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0xMjg0LVxcdFxcdFxcdG13aWZpZXhfZGVhdXRoZW50aWNhdGUocHJpdiwgTlVMTCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM6MTI4NTpcXHRcXHRcXHRyZXR1cm4gbXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF9TRVRfQlNTX01PREUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMTI4Ni1cXHRcXHRcXHRcXHRcXHRcXHRIb3N0Q21kX0FDVF9HRU5fU0VULCAwLCBOVUxMLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM9MTQ2MT1td2lmaWV4X2R1bXBfc3RhdGlvbl9pbmZvKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0xNDk3LVxcdC8qIEdldCBzaWduYWwgaW5mb3JtYXRpb24gZnJvbSB0aGUgZmlybXdhcmUgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYzoxNDk4OlxcdGlmIChtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX1JTU0lfSU5GTyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0xNDk5LVxcdFxcdFxcdCAgICAgSG9zdENtZF9BQ1RfR0VOX0dFVCwgMCwgTlVMTCwgdHJ1ZSkpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTE1MTEtXFx0LyogR2V0IERUSU0gcGVyaW9kIGluZm9ybWF0aW9uIGZyb20gZmlybXdhcmUgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYzoxNTEyOlxcdG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfODAyXzExX1NOTVBfTUlCLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTE1MTMtXFx0XFx0XFx0IEhvc3RDbWRfQUNUX0dFTl9HRVQsIERUSU1fUEVSSU9EX0ksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYz0xNTc1PW13aWZpZXhfY2ZnODAyMTFfZHVtcF9zdGF0aW9uKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0xNTg2LVxcdH0gZWxzZSBpZiAoR0VUX0JTU19ST0xFKHByaXYpID09IE1XSUZJRVhfQlNTX1JPTEVfVUFQKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM6MTU4NzpcXHRcXHRtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhPU1RfQ01EX0FQQ01EX1NUQV9MSVNULFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTE1ODgtXFx0XFx0XFx0XFx0IEhvc3RDbWRfQUNUX0dFTl9HRVQsIDAsIE5VTEwsIHRydWUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM9MTc3OD1td2lmaWV4X2NmZzgwMjExX3NldF9iaXRyYXRlX21hc2soc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTE4MjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM6MTgyMTpcXHRyZXR1cm4gbXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF9UWF9SQVRFX0NGRyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0xODIyLVxcdFxcdFxcdFxcdEhvc3RDbWRfQUNUX0dFTl9TRVQsIDAsIGJpdG1hcF9yYXRlcywgdHJ1ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYz0xODMxPXN0YXRpYyBpbnQgbXdpZmlleF9jZmc4MDIxMV9zZXRfY3FtX3Jzc2lfY29uZmlnKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0xODUwLVxcdFxcdHN1YnNjX2V2dC5iY25faF9yc3NpX2NmZy5ldnRfZnJlcSA9IDE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM6MTg1MTpcXHRcXHRyZXR1cm4gbXdpZmlleF9zZW5kX2NtZChwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTE4NTItXFx0XFx0XFx0XFx0XFx0SG9zdENtZF9DTURfODAyXzExX1NVQlNDUklCRV9FVkVOVCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTE4NTUtXFx0XFx0c3Vic2NfZXZ0LmFjdGlvbiA9IEhvc3RDbWRfQUNUX0JJVFdJU0VfQ0xSO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jOjE4NTY6XFx0XFx0cmV0dXJuIG13aWZpZXhfc2VuZF9jbWQocHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0xODU3LVxcdFxcdFxcdFxcdFxcdEhvc3RDbWRfQ01EXzgwMl8xMV9TVUJTQ1JJQkVfRVZFTlQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYz0xOTA1PW13aWZpZXhfY2ZnODAyMTFfZGVsX3N0YXRpb24oc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTE5MzUtXFx0aWYgKGlzX3ZhbGlkX2V0aGVyX2FkZHIoZGVhdXRoX21hYykpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYzoxOTM2OlxcdFxcdGlmIChtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX1VBUF9TVEFfREVBVVRILFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTE5MzctXFx0XFx0XFx0XFx0ICAgICBIb3N0Q21kX0FDVF9HRU5fU0VULCAwLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM9MTk0Nj1td2lmaWV4X2NmZzgwMjExX3NldF9hbnRlbm5hKHN0cnVjdCB3aXBoeSAqd2lwaHksIGludCByYWRpb19pZHgsIHUzMiB0eF9hbnQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0yMDA0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jOjIwMDU6XFx0cmV0dXJuIG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfUkZfQU5URU5OQSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0yMDA2LVxcdFxcdFxcdFxcdEhvc3RDbWRfQUNUX0dFTl9TRVQsIDAsIFxcdTAwMjZhbnRfY2ZnLCB0cnVlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jPTIwMTA9bXdpZmlleF9jZmc4MDIxMV9nZXRfYW50ZW5uYShzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBpbnQgcmFkaW9faWR4LCB1MzIgKnR4X2FudCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTIwMTUtXFx0XFx0XFx0XFx0XFx0XFx0XFx0TVdJRklFWF9CU1NfUk9MRV9BTlkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jOjIwMTY6XFx0bXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF9SRl9BTlRFTk5BLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTIwMTctXFx0XFx0XFx0IEhvc3RDbWRfQUNUX0dFTl9HRVQsIDAsIE5VTEwsIHRydWUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM9MjAyOD1zdGF0aWMgaW50IG13aWZpZXhfY2ZnODAyMTFfc3RvcF9hcChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMjA0MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYzoyMDQyOlxcdGlmIChtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX1VBUF9CU1NfU1RPUCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0yMDQzLVxcdFxcdFxcdCAgICAgSG9zdENtZF9BQ1RfR0VOX1NFVCwgMCwgTlVMTCwgdHJ1ZSkpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTIwNDgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM6MjA0OTpcXHRpZiAobXdpZmlleF9zZW5kX2NtZChwcml2LCBIT1NUX0NNRF9BUENNRF9TWVNfUkVTRVQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMjA1MC1cXHRcXHRcXHQgICAgIEhvc3RDbWRfQUNUX0dFTl9TRVQsIDAsIE5VTEwsIHRydWUpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYz0yMjY2PW13aWZpZXhfY2ZnODAyMTFfYXNzb2Moc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgc2l6ZV90IHNzaWRfbGVuLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMjMwMy1cXHRcXHQvKiBzZXQgaWJzcyBjb2FsZXNjaW5nX3N0YXR1cyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jOjIzMDQ6XFx0XFx0cmV0ID0gbXdpZmlleF9zZW5kX2NtZChcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0yMzA1LVxcdFxcdFxcdFxcdHByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYz0yNzcwPW13aWZpZXhfY2ZnODAyMTFfc2NoZWRfc2Nhbl9zdGFydChzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMjg1Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYzoyODUzOlxcdGlmIChtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EXzgwMl8xMV9CR19TQ0FOX0NPTkZJRyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0yODU0LVxcdFxcdFxcdCAgICAgSG9zdENtZF9BQ1RfR0VOX1NFVCwgMCwgYmdzY2FuX2NmZywgdHJ1ZSkpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jPTI5ODI9c3RydWN0IHdpcmVsZXNzX2RldiAqbXdpZmlleF9hZGRfdmlydHVhbF9pbnRmKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0zMTEzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jOjMxMTQ6XFx0XFx0cmV0ID0gbXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF9TRVRfQlNTX01PREUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMzExNS1cXHRcXHRcXHRcXHQgICAgICAgSG9zdENtZF9BQ1RfR0VOX1NFVCwgMCwgTlVMTCwgdHJ1ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYz0zNDQ3PXN0YXRpYyBpbnQgbXdpZmlleF9zZXRfbWVmX2ZpbHRlcihzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMzQ4MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYzozNDgxOlxcdHJldCA9IG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfTUVGX0NGRyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0zNDgyLVxcdFxcdFxcdEhvc3RDbWRfQUNUX0dFTl9TRVQsIDAsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYz0zNjUzPXN0YXRpYyBpbnQgbXdpZmlleF9zZXRfcmVrZXlfZGF0YShzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMzY2My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYzozNjY0OlxcdHJldHVybiBtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX0dUS19SRUtFWV9PRkZMT0FEX0NGRyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0zNjY1LVxcdFxcdFxcdFxcdEhvc3RDbWRfQUNUX0dFTl9TRVQsIDAsIGRhdGEsIHRydWUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM9Mzc1MD1zdGF0aWMgaW50IG13aWZpZXhfY2ZnODAyMTFfc2V0X2NvYWxlc2NlKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0zNzYyLVxcdFxcdFxcdCAgICBcXFwiRGlzYWJsZSBjb2FsZXNjZSBhbmQgcmVzZXQgYWxsIHByZXZpb3VzIHJ1bGVzXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYzozNzYzOlxcdFxcdHJldHVybiBtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX0NPQUxFU0NFX0NGRyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0zNzY0LVxcdFxcdFxcdFxcdFxcdEhvc3RDbWRfQUNUX0dFTl9TRVQsIDAsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0zNzc5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jOjM3ODA6XFx0cmV0dXJuIG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfQ09BTEVTQ0VfQ0ZHLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTM3ODEtXFx0XFx0XFx0XFx0SG9zdENtZF9BQ1RfR0VOX1NFVCwgMCwgXFx1MDAyNmNvYWxlc2NlX2NmZywgdHJ1ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYz0zOTc5PW13aWZpZXhfY2ZnODAyMTFfdWFwX2FkZF9zdGF0aW9uKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsIGNvbnN0IHU4ICptYWMsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0zOTg3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jOjM5ODg6XFx0cmV0ID0gbXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF9BRERfTkVXX1NUQVRJT04sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMzk4OS1cXHRcXHRcXHQgICAgICAgSG9zdENtZF9BQ1RfQUREX1NUQSwgMCwgKHZvaWQgKilcXHUwMDI2YWRkX3N0YSwgdHJ1ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYz00MTQyPXN0YXRpYyBpbnQgbXdpZmlleF90bV9jbWQoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTQxNzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM6NDE3NTpcXHRcXHRpZiAobXdpZmlleF9zZW5kX2NtZChwcml2LCAwLCAwLCAwLCBob3N0Y21kLCB0cnVlKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTQxNzYtXFx0XFx0XFx0ZGV2X2Vycihwcml2LVxcdTAwM2VhZGFwdGVyLVxcdTAwM2VkZXYsIFxcXCJGYWlsZWQgdG8gcHJvY2VzcyBob3N0Y21kXFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jPTQyMDU9bXdpZmlleF9jZmc4MDIxMV9zdGFydF9yYWRhcl9kZXRlY3Rpb24oc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTQyMzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM6NDIzNjpcXHRpZiAobXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF9DSEFOX1JFUE9SVF9SRVFVRVNULFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTQyMzctXFx0XFx0XFx0ICAgICBIb3N0Q21kX0FDVF9HRU5fU0VULCAwLCBcXHUwMDI2cmFkYXJfcGFyYW1zLCB0cnVlKSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jPTQyNzQ9bXdpZmlleF9jZmc4MDIxMV9hdXRoZW50aWNhdGUoc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTQzMDktXFx0XFx0cHJpdi1cXHUwMDNlbWdtdF9mcmFtZV9tYXNrIHw9IEhPU1RfTUxNRV9NR01UX01BU0s7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM6NDMxMDpcXHRcXHRtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX01HTVRfRlJBTUVfUkVHLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTQzMTEtXFx0XFx0XFx0XFx0IEhvc3RDbWRfQUNUX0dFTl9TRVQsIDAsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYz00NzAwPWludCBtd2lmaWV4X3JlZ2lzdGVyX2NmZzgwMjExKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy00OTA5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jOjQ5MTA6XFx0bXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF84MDJfMTFfU05NUF9NSUIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtNDkxMS1cXHRcXHRcXHQgSG9zdENtZF9BQ1RfR0VOX0dFVCwgRlJBR19USFJFU0hfSSwgXFx1MDAyNnRociwgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtNDkxMi1cXHR3aXBoeS1cXHUwMDNlZnJhZ190aHJlc2hvbGQgPSB0aHI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM6NDkxMzpcXHRtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EXzgwMl8xMV9TTk1QX01JQixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy00OTE0LVxcdFxcdFxcdCBIb3N0Q21kX0FDVF9HRU5fR0VULCBSVFNfVEhSRVNIX0ksIFxcdTAwMjZ0aHIsIHRydWUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTQ5MTUtXFx0d2lwaHktXFx1MDAzZXJ0c190aHJlc2hvbGQgPSB0aHI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM6NDkxNjpcXHRtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EXzgwMl8xMV9TTk1QX01JQixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy00OTE3LVxcdFxcdFxcdCBIb3N0Q21kX0FDVF9HRU5fR0VULCBTSE9SVF9SRVRSWV9MSU1fSSwgXFx1MDAyNnJldHJ5LCB0cnVlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy00OTE4LVxcdHdpcGh5LVxcdTAwM2VyZXRyeV9zaG9ydCA9ICh1OCkgcmV0cnk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM6NDkxOTpcXHRtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EXzgwMl8xMV9TTk1QX01JQixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy00OTIwLVxcdFxcdFxcdCBIb3N0Q21kX0FDVF9HRU5fR0VULCBMT05HX1JFVFJZX0xJTV9JLCBcXHUwMDI2cmV0cnksIHRydWUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NtZGV2dC5jPTQ3MD1pbnQgbXdpZmlleF9wcm9jZXNzX2V2ZW50KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY21kZXZ0LmMtNTQxLSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jbWRldnQuYzo1NDI6aW50IG13aWZpZXhfc2VuZF9jbWQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgdTE2IGNtZF9ubyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY21kZXZ0LmMtNTQzLVxcdFxcdCAgICAgdTE2IGNtZF9hY3Rpb24sIHUzMiBjbWRfb2lkLCB2b2lkICpkYXRhX2J1ZiwgYm9vbCBzeW5jKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2RlYnVnZnMuYz02MDQ9bXdpZmlleF9tZW1yd193cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKnVidWYsIHNpemVfdCBjb3VudCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9kZWJ1Z2ZzLmMtNjM0LVxcdG1lbWNweShcXHUwMDI2cHJpdi1cXHUwMDNlbWVtX3J3LCBcXHUwMDI2bWVtX3J3LCBzaXplb2YobWVtX3J3KSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2RlYnVnZnMuYzo2MzU6XFx0aWYgKG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfTUVNX0FDQ0VTUywgY21kX2FjdGlvbiwgMCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvZGVidWdmcy5jLTYzNi1cXHRcXHRcXHQgICAgIFxcdTAwMjZtZW1fcncsIHRydWUpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2RlYnVnZnMuYz04NDQ9bXdpZmlleF90aW1lc2hhcmVfY29leF9yZWFkKHN0cnVjdCBmaWxlICpmaWxlLCBjaGFyIF9fdXNlciAqdWJ1ZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9kZWJ1Z2ZzLmMtODU1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9kZWJ1Z2ZzLmM6ODU2OlxcdHJldCA9IG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfUk9CVVNUX0NPRVgsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2RlYnVnZnMuYy04NTctXFx0XFx0XFx0ICAgICAgIEhvc3RDbWRfQUNUX0dFTl9HRVQsIDAsIFxcdTAwMjZ0aW1lc2hhcmVfY29leCwgdHJ1ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvZGVidWdmcy5jPTg2Nj1td2lmaWV4X3RpbWVzaGFyZV9jb2V4X3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqdWJ1ZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9kZWJ1Z2ZzLmMtODc5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9kZWJ1Z2ZzLmM6ODgwOlxcdHJldCA9IG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfUk9CVVNUX0NPRVgsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2RlYnVnZnMuYy04ODEtXFx0XFx0XFx0ICAgICAgIEhvc3RDbWRfQUNUX0dFTl9TRVQsIDAsIFxcdTAwMjZ0aW1lc2hhcmVfY29leCwgdHJ1ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvaWUuYz02OT1td2lmaWV4X3VwZGF0ZV9hdXRvaW5kZXhfaWVzKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvaWUuYy0xMjktXFx0aWYgKEdFVF9CU1NfUk9MRShwcml2KSA9PSBNV0lGSUVYX0JTU19ST0xFX1VBUClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvaWUuYzoxMzA6XFx0XFx0cmV0dXJuIG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfVUFQX1NZU19DT05GSUcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2llLmMtMTMxLVxcdFxcdFxcdFxcdFxcdEhvc3RDbWRfQUNUX0dFTl9TRVQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvam9pbi5jPTg2OD1td2lmaWV4X2NtZF84MDJfMTFfYWRfaG9jX3N0YXJ0KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvam9pbi5jLTk5OC1cXHQgICAgKHByaXYtXFx1MDAzZWN1cnJfcGt0X2ZpbHRlciBcXHUwMDI2IEhvc3RDbWRfQUNUX01BQ19BREhPQ19HX1BST1RFQ1RJT05fT04pKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2pvaW4uYzo5OTk6XFx0XFx0aWYgKG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfTUFDX0NPTlRST0wsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2pvaW4uYy0xMDAwLVxcdFxcdFxcdFxcdCAgICAgSG9zdENtZF9BQ1RfR0VOX1NFVCwgMCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9qb2luLmM9MTE0OD1td2lmaWV4X2NtZF84MDJfMTFfYWRfaG9jX2pvaW4oc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9qb2luLmMtMTE3MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvam9pbi5jOjExNzE6XFx0XFx0aWYgKG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfTUFDX0NPTlRST0wsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2pvaW4uYy0xMTcyLVxcdFxcdFxcdFxcdCAgICAgSG9zdENtZF9BQ1RfR0VOX1NFVCwgMCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9qb2luLmM9MTM5Nz1pbnQgbXdpZmlleF9hc3NvY2lhdGUoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9qb2luLmMtMTQxNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvam9pbi5jOjE0MTg6XFx0cmV0dXJuIG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfODAyXzExX0FTU09DSUFURSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvam9pbi5jLTE0MTktXFx0XFx0XFx0XFx0SG9zdENtZF9BQ1RfR0VOX1NFVCwgMCwgYnNzX2Rlc2MsIHRydWUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2pvaW4uYz0xNDI4PW13aWZpZXhfYWRob2Nfc3RhcnQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9qb2luLmMtMTQ0My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvam9pbi5jOjE0NDQ6XFx0cmV0dXJuIG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfODAyXzExX0FEX0hPQ19TVEFSVCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvam9pbi5jLTE0NDUtXFx0XFx0XFx0XFx0SG9zdENtZF9BQ1RfR0VOX1NFVCwgMCwgYWRob2Nfc3NpZCwgdHJ1ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvam9pbi5jPTE0NTQ9aW50IG13aWZpZXhfYWRob2Nfam9pbihzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2pvaW4uYy0xNDkzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9qb2luLmM6MTQ5NDpcXHRyZXR1cm4gbXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF84MDJfMTFfQURfSE9DX0pPSU4sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2pvaW4uYy0xNDk1LVxcdFxcdFxcdFxcdEhvc3RDbWRfQUNUX0dFTl9TRVQsIDAsIGJzc19kZXNjLCB0cnVlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9qb2luLmM9MTUwMj1zdGF0aWMgaW50IG13aWZpZXhfZGVhdXRoZW50aWNhdGVfaW5mcmEoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgdTggKm1hYylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9qb2luLmMtMTUxMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvam9pbi5jOjE1MTQ6XFx0cmV0ID0gbXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF84MDJfMTFfREVBVVRIRU5USUNBVEUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2pvaW4uYy0xNTE1LVxcdFxcdFxcdCAgICAgICBIb3N0Q21kX0FDVF9HRU5fU0VULCAwLCBtYWNfYWRkcmVzcywgdHJ1ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvam9pbi5jPTE1Mjc9aW50IG13aWZpZXhfZGVhdXRoZW50aWNhdGUoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgdTggKm1hYylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9qb2luLmMtMTUzOC1cXHRcXHRwcml2LVxcdTAwM2VtZ210X2ZyYW1lX21hc2sgPSAwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9qb2luLmM6MTUzOTpcXHRcXHRpZiAobXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF9NR01UX0ZSQU1FX1JFRyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvam9pbi5jLTE1NDAtXFx0XFx0XFx0XFx0ICAgICBIb3N0Q21kX0FDVF9HRU5fU0VULCAwLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2pvaW4uYy0xNTU2LVxcdGNhc2UgTkw4MDIxMV9JRlRZUEVfQURIT0M6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2pvaW4uYzoxNTU3OlxcdFxcdHJldHVybiBtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EXzgwMl8xMV9BRF9IT0NfU1RPUCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvam9pbi5jLTE1NTgtXFx0XFx0XFx0XFx0XFx0SG9zdENtZF9BQ1RfR0VOX1NFVCwgMCwgTlVMTCwgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2pvaW4uYy0xNTU5LVxcdGNhc2UgTkw4MDIxMV9JRlRZUEVfQVA6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2pvaW4uYzoxNTYwOlxcdFxcdHJldHVybiBtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX1VBUF9CU1NfU1RPUCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvam9pbi5jLTE1NjEtXFx0XFx0XFx0XFx0XFx0SG9zdENtZF9BQ1RfR0VOX1NFVCwgMCwgTlVMTCwgdHJ1ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jPTIxNj1zdGF0aWMgdm9pZCBtYXliZV9xdWlya19md19kaXNhYmxlX2RzKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jLTIyNS1cXHR2ZXJfZXh0LnZlcnNpb25fc3RyX3NlbCA9IDE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYzoyMjY6XFx0aWYgKG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfVkVSU0lPTl9FWFQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYy0yMjctXFx0XFx0XFx0ICAgICBIb3N0Q21kX0FDVF9HRU5fR0VULCAwLCBcXHUwMDI2dmVyX2V4dCwgZmFsc2UpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jPTk0OD1pbnQgbXdpZmlleF9zZXRfbWFjX2FkZHJlc3Moc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmMtOTc4LVxcdC8qIFNlbmQgcmVxdWVzdCB0byBmaXJtd2FyZSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmM6OTc5OlxcdHJldCA9IG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfODAyXzExX01BQ19BRERSRVNTLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmMtOTgwLVxcdFxcdFxcdCAgICAgICBIb3N0Q21kX0FDVF9HRU5fU0VULCAwLCBOVUxMLCB0cnVlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmM9MTA1MD12b2lkIG13aWZpZXhfbXVsdGlfY2hhbl9yZXN5bmMoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmMtMTA2Ny1cXHRwcml2ID0gbXdpZmlleF9nZXRfcHJpdihhZGFwdGVyLCBNV0lGSUVYX0JTU19ST0xFX0FOWSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYzoxMDY4OlxcdHJldCA9IG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfUkVDT05GSUdVUkVfVFhfQlVGRixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jLTEwNjktXFx0XFx0XFx0ICAgICAgIEhvc3RDbWRfQUNUX0dFTl9TRVQsIDAsIFxcdTAwMjZ0eF9idWZfc2l6ZSwgZmFsc2UpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaD0xMDc2PWludCBtd2lmaWV4X2NvbXBsZXRlX2NtZChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xMDc4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg6MTA3OTppbnQgbXdpZmlleF9zZW5kX2NtZChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCB1MTYgY21kX25vLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTA4MC1cXHRcXHQgICAgIHUxNiBjbWRfYWN0aW9uLCB1MzIgY21kX29pZCwgdm9pZCAqZGF0YV9idWYsIGJvb2wgc3luYyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jPTU5ND1td2lmaWV4X3NjYW5fY2hhbm5lbF9saXN0KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTc0NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jOjc0NjpcXHRcXHRyZXQgPSBtd2lmaWV4X3NlbmRfY21kKHByaXYsIGNtZF9ubywgSG9zdENtZF9BQ1RfR0VOX1NFVCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTc0Ny1cXHRcXHRcXHRcXHQgICAgICAgMCwgc2Nhbl9jZmdfb3V0LCBmYWxzZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jPTI0NDM9aW50IG13aWZpZXhfc3RvcF9iZ19zY2FuKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTI0NTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYzoyNDYwOlxcdGlmIChtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EXzgwMl8xMV9CR19TQ0FOX0NPTkZJRyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTI0NjEtXFx0XFx0XFx0ICAgICBIb3N0Q21kX0FDVF9HRU5fU0VULCAwLCBiZ3NjYW5fY2ZnLCB0cnVlKSkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYz0xNDU4PWludCBtd2lmaWV4X2RubGRfZHRfY2ZnZGF0YShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYy0xNDc0LVxcdFxcdCAgICBwcm9wLVxcdTAwM2VsZW5ndGggXFx1MDAzYz0gTVdJRklFWF9TSVpFX09GX0NNRF9CVUZGRVIgLSBTX0RTX0dFTikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmM6MTQ3NTpcXHRcXHRcXHRyZXQgPSBtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX0NGR19EQVRBLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmMtMTQ3Ni1cXHRcXHRcXHRcXHRcXHQgICAgICAgSG9zdENtZF9BQ1RfR0VOX1NFVCwgMCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmM9MTUwOT1pbnQgbXdpZmlleF9zZW5kX3JncG93ZXJfdGFibGUoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgY29uc3QgdTggKmRhdGEsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZC5jLTE1NDAtXFx0XFx0XFx0aG9zdGNtZC1cXHUwMDNlbGVuID0gZ2V0X3VuYWxpZ25lZF9sZTE2KFxcdTAwMjZob3N0Y21kLVxcdTAwM2VjbWRbMl0pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmM6MTU0MTpcXHRcXHRcXHRyZXQgPSBtd2lmaWV4X3NlbmRfY21kKHByaXYsIDAsIDAsIDAsIGhvc3RjbWQsIGZhbHNlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZC5jLTE1NDItXFx0XFx0XFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYz0yMzU0PWludCBtd2lmaWV4X3N0YV9pbml0X2NtZChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCB1OCBmaXJzdF9zdGEpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZC5jLTIzNjctXFx0XFx0aWYgKHByaXYtXFx1MDAzZWFkYXB0ZXItXFx1MDAzZWlmYWNlX3R5cGUgPT0gTVdJRklFWF9QQ0lFKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYzoyMzY4OlxcdFxcdFxcdHJldCA9IG13aWZpZXhfc2VuZF9jbWQocHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZC5jLTIzNjktXFx0XFx0XFx0XFx0XFx0ICAgICAgIEhvc3RDbWRfQ01EX1BDSUVfREVTQ19ERVRBSUxTLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYy0yMzc1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmM6MjM3NjpcXHRcXHRyZXQgPSBtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX0ZVTkNfSU5JVCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZC5jLTIzNzctXFx0XFx0XFx0XFx0ICAgICAgIEhvc3RDbWRfQUNUX0dFTl9TRVQsIDAsIE5VTEwsIHRydWUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYy0yMzk3LVxcdFxcdGlmIChhZGFwdGVyLVxcdTAwM2VjYWxfZGF0YSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmM6MjM5ODpcXHRcXHRcXHRtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX0NGR19EQVRBLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmMtMjM5OS1cXHRcXHRcXHRcXHRcXHQgSG9zdENtZF9BQ1RfR0VOX1NFVCwgMCwgTlVMTCwgdHJ1ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZC5jLTI0MDUtXFx0XFx0LyogUmVhZCBNQUMgYWRkcmVzcyBmcm9tIEhXICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYzoyNDA2OlxcdFxcdHJldCA9IG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfR0VUX0hXX1NQRUMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYy0yNDA3LVxcdFxcdFxcdFxcdCAgICAgICBIb3N0Q21kX0FDVF9HRU5fR0VULCAwLCBOVUxMLCB0cnVlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmMtMjQxNS1cXHRcXHRcXHRzZGlvX3NwX3J4X2FnZ3JfZW5hYmxlID0gdHJ1ZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZC5jOjI0MTY6XFx0XFx0XFx0cmV0ID0gbXdpZmlleF9zZW5kX2NtZChwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmMtMjQxNy1cXHRcXHRcXHRcXHRcXHQgICAgICAgSG9zdENtZF9DTURfU0RJT19TUF9SWF9BR0dSX0NGRyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmMtMjQyOC1cXHRcXHQvKiBSZWNvbmZpZ3VyZSB0eCBidWYgc2l6ZSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmM6MjQyOTpcXHRcXHRyZXQgPSBtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX1JFQ09ORklHVVJFX1RYX0JVRkYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYy0yNDMwLVxcdFxcdFxcdFxcdCAgICAgICBIb3N0Q21kX0FDVF9HRU5fU0VULCAwLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYy0yNDM3LVxcdFxcdFxcdHByaXYtXFx1MDAzZWFkYXB0ZXItXFx1MDAzZXBzX21vZGUgPSBNV0lGSUVYXzgwMl8xMV9QT1dFUl9NT0RFX1BTUDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZC5jOjI0Mzg6XFx0XFx0XFx0cmV0ID0gbXdpZmlleF9zZW5kX2NtZChwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmMtMjQzOS1cXHRcXHRcXHRcXHRcXHQgICAgICAgSG9zdENtZF9DTURfODAyXzExX1BTX01PREVfRU5ILFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYy0yNDQ4LVxcdFxcdFxcdGlmIChJU1NVUFBfRFJDU19FTkFCTEVEKGFkYXB0ZXItXFx1MDAzZWZ3X2NhcF9pbmZvKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZC5jOjI0NDk6XFx0XFx0XFx0XFx0cmV0ID0gbXdpZmlleF9zZW5kX2NtZChwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmMtMjQ1MC1cXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgSG9zdENtZF9DTURfTUNfUE9MSUNZLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYy0yNDU3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmM6MjQ1ODpcXHRcXHRtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX0NIQU5fUkVHSU9OX0NGRyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZC5jLTI0NTktXFx0XFx0XFx0XFx0IEhvc3RDbWRfQUNUX0dFTl9HRVQsIDAsIE5VTEwsIHRydWUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYy0yNDYyLVxcdC8qIGdldCB0eCByYXRlICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYzoyNDYzOlxcdHJldCA9IG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfVFhfUkFURV9DRkcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYy0yNDY0LVxcdFxcdFxcdCAgICAgICBIb3N0Q21kX0FDVF9HRU5fR0VULCAwLCBOVUxMLCB0cnVlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmMtMjQ2OS1cXHQvKiBnZXQgdHggcG93ZXIgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZC5jOjI0NzA6XFx0cmV0ID0gbXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF9SRl9UWF9QV1IsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYy0yNDcxLVxcdFxcdFxcdCAgICAgICBIb3N0Q21kX0FDVF9HRU5fR0VULCAwLCBOVUxMLCB0cnVlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmMtMjQ3Ny1cXHQvKiBTZW5kIHJlcXVlc3QgdG8gZmlybXdhcmUgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZC5jOjI0Nzg6XFx0cmV0ID0gbXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF9BTVNEVV9BR0dSX0NUUkwsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYy0yNDc5LVxcdFxcdFxcdCAgICAgICBIb3N0Q21kX0FDVF9HRU5fU0VULCAwLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYy0yNDg0LVxcdC8qIHNldCBNQUMgQ29udHJvbCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmM6MjQ4NTpcXHRyZXQgPSBtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX01BQ19DT05UUk9MLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmMtMjQ4Ni1cXHRcXHRcXHQgICAgICAgSG9zdENtZF9BQ1RfR0VOX1NFVCwgMCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmMtMjQ5NS1cXHRcXHRhdXRvX2RzLmlkbGVfdGltZSA9IERFRVBfU0xFRVBfSURMRV9USU1FO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmM6MjQ5NjpcXHRcXHRyZXQgPSBtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EXzgwMl8xMV9QU19NT0RFX0VOSCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZC5jLTI0OTctXFx0XFx0XFx0XFx0ICAgICAgIEVOX0FVVE9fUFMsIEJJVE1BUF9BVVRPX0RTLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYy0yNTA1LVxcdFxcdHN0YXRlXzExZCA9IEVOQUJMRV8xMUQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYzoyNTA2OlxcdFxcdHJldCA9IG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfODAyXzExX1NOTVBfTUlCLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmMtMjUwNy1cXHRcXHRcXHRcXHQgICAgICAgSG9zdENtZF9BQ1RfR0VOX1NFVCwgRE9UMTFEX0ksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZC5jLTI1MTYtXFx0XFx0cGFja2V0X2FnZ3JfZW5hYmxlID0gdHJ1ZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZC5jOjI1MTc6XFx0XFx0bXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF9QQUNLRVRfQUdHUl9DVFJMLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmMtMjUxOC1cXHRcXHRcXHRcXHQgSG9zdENtZF9BQ1RfR0VOX1NFVCwgMCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmMtMjUyNS1cXHR0eF9jZmcudHhfaHRjYXAgPSBNV0lGSUVYX0ZXX0RFRl9IVFRYQ0ZHO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmM6MjUyNjpcXHRyZXQgPSBtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EXzExTl9DRkcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYy0yNTI3LVxcdFxcdFxcdCAgICAgICBIb3N0Q21kX0FDVF9HRU5fU0VULCAwLCBcXHUwMDI2dHhfY2ZnLCB0cnVlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jPTk1PXN0YXRpYyBpbnQgbXdpZmlleF9yZXRfODAyXzExX3Jzc2lfaW5mbyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWRyZXNwLmMtMTM2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jOjEzNzpcXHRtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EXzgwMl8xMV9TVUJTQ1JJQkVfRVZFTlQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWRyZXNwLmMtMTM4LVxcdFxcdFxcdCAwLCAwLCBzdWJzY19ldnQsIGZhbHNlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jPTI1Nj1zdGF0aWMgaW50IG13aWZpZXhfcmV0X3R4X3JhdGVfY2ZnKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZHJlc3AuYy0zMTEtXFx0ZWxzZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jOjMxMjpcXHRcXHRyZXR1cm4gbXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF84MDJfMTFfVFhfUkFURV9RVUVSWSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZHJlc3AuYy0zMTMtXFx0XFx0XFx0XFx0XFx0SG9zdENtZF9BQ1RfR0VOX0dFVCwgMCwgTlVMTCwgZmFsc2UpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWRyZXNwLmM9NjkzPXN0YXRpYyBpbnQgbXdpZmlleF9yZXRfdmVyX2V4dChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWRyZXNwLmMtNzA4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jOjcwOTpcXHRcXHRcXHRpZiAobXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF84MDJfMTFfUFNfTU9ERV9FTkgsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWRyZXNwLmMtNzEwLVxcdFxcdFxcdFxcdFxcdCAgICAgRElTX0FVVE9fUFMsIEJJVE1BUF9BVVRPX0RTLCBcXHUwMDI2YXV0b19kcywgZmFsc2UpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2V2ZW50LmM9MTI1PXZvaWQgbXdpZmlleF9yZXNldF9jb25uZWN0X3N0YXRlKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsIHUxNiByZWFzb25fY29kZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfZXZlbnQuYy0yNDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9ldmVudC5jOjI0MTpcXHRtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX0dUS19SRUtFWV9PRkZMT0FEX0NGRyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2V2ZW50LmMtMjQyLVxcdFxcdFxcdCBIb3N0Q21kX0FDVF9HRU5fUkVNT1ZFLCAwLCBOVUxMLCBmYWxzZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2V2ZW50LmM9Njk2PWludCBtd2lmaWV4X3Byb2Nlc3Nfc3RhX2V2ZW50KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2V2ZW50LmMtODE5LVxcdFxcdG13aWZpZXhfZGJnKGFkYXB0ZXIsIEVWRU5ULCBcXFwiZXZlbnQ6IEhTX0FDVF9SRVFcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfZXZlbnQuYzo4MjA6XFx0XFx0cmV0ID0gbXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF84MDJfMTFfSFNfQ0ZHX0VOSCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2V2ZW50LmMtODIxLVxcdFxcdFxcdFxcdCAgICAgICAwLCAwLCBOVUxMLCBmYWxzZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2V2ZW50LmMtODUwLVxcdFxcdG13aWZpZXhfZGJnKGFkYXB0ZXIsIEVWRU5ULCBcXFwiZXZlbnQ6IEJHU19SRVBPUlRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfZXZlbnQuYzo4NTE6XFx0XFx0cmV0ID0gbXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF84MDJfMTFfQkdfU0NBTl9RVUVSWSxcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDg6MzA6NTcuODA4OTk1ODgyWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcxOTcyODc1NTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBtd2lmaWV4IERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYG13aWZpZXhgIGRyaXZlciBwYXRjaC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHRyYWNlIHRoZSBpbXBhY3Qgb2YgY2hhbmdlcywgc28gSSdtIHN0YXJ0aW5nIHdpdGggYG13aWZpZXhfc2VuZF9jbWRgIOKAkyBpdCdzIGEgY29tbW9uIGVudHJ5IHBvaW50LCBhbmQgSSBzZWUgYG13aWZpZXhfd2FpdF9xdWV1ZV9jb21wbGV0ZWAgY2FsbGVkIGZyb20gaXQuIFRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIEkgbm90aWNlIHRoYXQgYG13aWZpZXhfd2FpdF9xdWV1ZV9jb21wbGV0ZWAgaXMgYWxzbyB1c2VkIGluIGBtd2lmaWV4X3NjYW5fbmV0d29ya3NgLlxuXG5BaCwgdGhlIHBhdGNoIG1vZGlmaWVzIGBtd2lmaWV4X3dhaXRfcXVldWVfY29tcGxldGVgLiBJdCBsb29rcyBsaWtlIHRoZXkncmUgZGV0YWNoaW5nIHRoZSBjYWxsZXItb3duZWQgYnVmZmVyIGlmIHRoZSB3YWl0IGlzIGludGVycnVwdGVkLiBTbWFydCwgdGhhdCdzIGEgY2xhc3NpYyBmaXggZm9yIGEgdXNlLWFmdGVyLWZyZWUgb3IgYSBwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24gaXNzdWUgd2hlbiBhIGNvbW1hbmQgaXMgaW50ZXJydXB0ZWQuIFRoaXMgY2hhbmdlIGlzIHNwZWNpZmljYWxseSB0YXJnZXRpbmcgYG13aWZpZXhfd2FpdF9xdWV1ZV9jb21wbGV0ZWAuIEkgbmVlZCB0byBjb25maXJtIHRoZSByZWFjaGFiaWxpdHkgb2YgdGhpcywgaXQncyBjcml0aWNhbC5cblxuT2theSwgbGV0J3Mgc2VlLCBJcyB0aGlzIGFjdHVhbGx5IHJlYWNoYWJsZSwgYW5kIGZyb20gd2hlcmU/IEkgc2VlIGl0J3MgY2FsbGVkIGZyb20gYm90aCBgbXdpZmlleF9zZW5kX2NtZGAgYW5kIGBtd2lmaWV4X3NjYW5fbmV0d29ya3NgLiBTbywgY2FuIHRoaXMgYmUgdHJpZ2dlcmVkIGZyb20gdXNlciBzcGFjZT8gTGV0J3MgdHJhY2UgaXQuIGBtd2lmaWV4X3NlbmRfY21kYCBpdHNlbGYgaXMgY2FsbGVkIGJ5IGEgYnVuY2ggb2YgY2ZnODAyMTEgY2FsbGJhY2tzOiBgbXdpZmlleF9jZmc4MDIxMV9zZXRfdHhfcG93ZXJgLCBgbXdpZmlleF9jZmc4MDIxMV9kdW1wX3N0YXRpb25gLCBgbXdpZmlleF9jZmc4MDIxMV9zZXRfYW50ZW5uYWAsIGFuZCBvdGhlcnMuIEJpbmdvISBUaGF0J3MgZGVmaW5pdGVseSByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlIHZpYSBuZXRsaW5rLiBUaGF0J3MgZ29vZCB0byBrbm93LlxuXG5UaGUgcGF0Y2ggYWxzbyB0b3VjaGVzIGBtd2lmaWV4X3JlaW5pdF9zd2AgYW5kIGBtd2lmaWV4X2FkZF9jYXJkYCwgcmVtb3ZpbmcgYFdRX0hJR0hQUklgIGZyb20gYGFsbG9jX3dvcmtxdWV1ZWAuIE9rYXksIHRoYXQncyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBub3Qgc2VjdXJpdHktcmVsYXRlZCwgYnV0IHdvcnRoIG5vdGluZy5cblxuVGltZSB0byBmb2N1cyBpbiBvbiB0aGUga2V5IHN5bWJvbHMsIEkgdGhpbmsgYG13aWZpZXhfd2FpdF9xdWV1ZV9jb21wbGV0ZWAgaXMgdGhlIGhlYXJ0IG9mIGl0LCBidXQgaXQncyBjYWxsZWQgdGhyb3VnaCBgbXdpZmlleF9zZW5kX2NtZGAsIHdoaWNoIGlzIGNvcmUuIEl0IGlzIHRoZSBjb3JlIG9mIHRoaXMgZHJpdmVyLiBMb29raW5nIGF0IGBtd2lmaWV4X2FkZF9jYXJkYCBhbmQgYG13aWZpZXhfcmVpbml0X3N3YCwgc28gcHJvYmUgYW5kIHJlaW5pdC4gR29vZCwgdGhhdCBzZXRzIHRoZSBjb250ZXh0LiBOb3cgSSdtIGdvaW5nIHRvIGRpZyBkZWVwZXIgaW50byB0aGUgY2FsbCBwYXRocyB0byBgbXdpZmlleF93YWl0X3F1ZXVlX2NvbXBsZXRlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjIyOTQsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDg6MzE6MDUuMDA2Mjg3ODI1WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODE3MTM5MjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXdpZmlleF93YWl0X3F1ZXVlX2NvbXBsZXRlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NtZGV2dC5jPTU0Mj1pbnQgbXdpZmlleF9zZW5kX2NtZChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCB1MTYgY21kX25vLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NtZGV2dC5jLTY2Ny1cXHRcXHRpZiAoY21kX25vZGUtXFx1MDAzZXdhaXRfcV9lbmFibGVkKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jbWRldnQuYzo2Njg6XFx0XFx0XFx0cmV0ID0gbXdpZmlleF93YWl0X3F1ZXVlX2NvbXBsZXRlKGFkYXB0ZXIsIGNtZF9ub2RlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY21kZXZ0LmMtNjY5LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg9MTQ3Nj1pbnQgbXdpZmlleF9jb3B5X21jYXN0X2FkZHIoc3RydWN0IG13aWZpZXhfbXVsdGljYXN0X2xpc3QgKm1saXN0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTQ3Ny1cXHRcXHRcXHQgICAgc3RydWN0IG5ldF9kZXZpY2UgKmRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaDoxNDc4OmludCBtd2lmaWV4X3dhaXRfcXVldWVfY29tcGxldGUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTE0NzktXFx0XFx0XFx0XFx0c3RydWN0IGNtZF9jdHJsX25vZGUgKmNtZF9xdWV1ZWQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYz0xNDcwPWludCBtd2lmaWV4X3NjYW5fbmV0d29ya3Moc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMTU0Mi1cXHRcXHRcXHRcXHRcXHQgICAgXFxcIndhaXQgaW50ZXJuYWwgc2NhblxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYzoxNTQzOlxcdFxcdFxcdFxcdG13aWZpZXhfd2FpdF9xdWV1ZV9jb21wbGV0ZShhZGFwdGVyLCBjbWRfbm9kZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0xNTQ0LVxcdFxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYz0yNz1pbnQgbXdpZmlleF9jb3B5X21jYXN0X2FkZHIoc3RydWN0IG13aWZpZXhfbXVsdGljYXN0X2xpc3QgKm1saXN0LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jLTQ0LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYzo0NTppbnQgbXdpZmlleF93YWl0X3F1ZXVlX2NvbXBsZXRlKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jLTQ2LVxcdFxcdFxcdFxcdHN0cnVjdCBjbWRfY3RybF9ub2RlICpjbWRfcXVldWVkKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwODozMTowNS4xODgwMTAwNzFaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDEyNDA2MDczMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGJyZWFrZG93biBvZiB0aGlzLlxuXG4qKkFuYWx5emluZyBQb3RlbnRpYWwgRm9jdXMgU3ltYm9scyBpbiB0aGUgbXdpZmlleCBEcml2ZXIqKlxuXG5SaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgbXdpZmlleGAgY29kZSwgYW5kIEkgc2VlIHRoYXQgYG13aWZpZXhfd2FpdF9xdWV1ZV9jb21wbGV0ZWAgZ2V0cyBjYWxsZWQgZnJvbSBib3RoIGBtd2lmaWV4X3NlbmRfY21kYCBhbmQgYG13aWZpZXhfc2Nhbl9uZXR3b3Jrc2AuICBUaGF0J3MgaW50ZXJlc3RpbmcuICBgbXdpZmlleF9zZW5kX2NtZGAgc2VlbXMgbGlrZSBhIHByZXR0eSBpbXBvcnRhbnQgZnVuY3Rpb24sIGEgbmF0dXJhbCBmb2N1cyBwb2ludCBmb3IgZGVlcGVyIGludmVzdGlnYXRpb24sIGFuZCBgbXdpZmlleF9zY2FuX25ldHdvcmtzYCBpcyBkZWZpbml0ZWx5IHVwIHRoZXJlIHRvby4gVGhvc2UgYXJlIHNvbGlkIGNhbmRpZGF0ZXMgYXMgc3ltYm9scyB0byBmb2N1cyBvbi4gQnV0IHdhaXQsIGBtd2lmaWV4X3dhaXRfcXVldWVfY29tcGxldGVgIGl0c2VsZiBpcyBwb3RlbnRpYWxseSBhIHNpZ25pZmljYW50IGZ1bmN0aW9uLCBnaXZlbiBpdHMgdXNlIGluIHRob3NlIHR3by5cblxuTm93LCBhIHF1aWNrIGNoZWNrLi4uaXMgYG13aWZpZXhfd2FpdF9xdWV1ZV9jb21wbGV0ZWAgc3RhdGljPyBObywgaXQncyBub3QuIFRoYXQgbWFrZXMgaXQgZXZlbiAqbW9yZSogaW50ZXJlc3RpbmcgYXMgYSBwb3RlbnRpYWwgZm9jdXMgc3ltYm9sIGluIGl0cyBvd24gcmlnaHQsIGJlY2F1c2UgaXQncyBleHRlcm5hbGx5IHZpc2libGUuIEl0J3MgbGlrZWx5IGludm9sdmVkIGluIGEgY29yZSBzeW5jaHJvbml6YXRpb24gb3IgY29tcGxldGlvbiBtZWNoYW5pc20uIFNvLCBpdCBkZWZpbml0ZWx5IHdhcnJhbnRzIGEgY2xvc2VyIGxvb2suIEknbGwgbmVlZCB0byByZW1lbWJlciB0byBjaGVjayBvdXQgaXRzIHVzYWdlcyBhbmQgaW50ZXJhY3Rpb25zLlxuXG5Pa2F5LCBsZXQncyBhbHNvIGtlZXAgYW4gZXllIG9uIGBtd2lmaWV4X3JlaW5pdF9zd2AgYW5kIGBtd2lmaWV4X2FkZF9jYXJkYCDigJMgdGhleSBjb3VsZCBhbHNvIGJlIHJlbGF0ZWQgYW5kIGluZmx1ZW5jZSB0aGUgYmVoYXZpb3IgYXJvdW5kIGNvbW1hbmQgY29tcGxldGlvbiBvciBxdWV1aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzk1MiwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwODozMTowOS4zMTIwNzQyMjJaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyODQyMjEwNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtd2lmaWV4X3JlaW5pdF9zd1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmM9MTUyOT1pbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jOjE1MzA6bXdpZmlleF9yZWluaXRfc3coc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jLTE1MzEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYy0xNjIyLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jOjE2MjM6RVhQT1JUX1NZTUJPTF9HUEwobXdpZmlleF9yZWluaXRfc3cpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmMtMTYyNC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg9MTY5Nj12b2lkIG13aWZpZXhfZGV2X2RlYnVnZnNfcmVtb3ZlKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTY5Ny0jZW5kaWZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oOjE2OTg6aW50IG13aWZpZXhfcmVpbml0X3N3KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTY5OS1pbnQgbXdpZmlleF9zaHV0ZG93bl9zdyhzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmM9NTQ2PXN0YXRpYyB2b2lkIG13aWZpZXhfcGNpZV9yZXNldF9kb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYy01NjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYzo1NjI6XFx0cmV0ID0gbXdpZmlleF9yZWluaXRfc3coYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYy01NjMtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmM9MjY4MD1zdGF0aWMgdm9pZCBtd2lmaWV4X3NkaW9fY2FyZF9yZXNldF93b3JrKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jLTI3MDEtXFx0Y2FzZSAwOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmM6MjcwMjpcXHRcXHRyZXQgPSBtd2lmaWV4X3JlaW5pdF9zdyhhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jLTI3MDMtXFx0XFx0aWYgKHJldClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDg6MzE6MDkuNTQwNTAyMjk2WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1MzMzMTM3NTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzczpcblxuKipEZWVwZXIgRGl2ZSBpbnRvIHRoZSBXaUZpIERyaXZlciBJbml0aWFsaXphdGlvbioqXG5cbkFscmlnaHQsIGxldCBtZSBzZWUuLi4gSSdtIGxvb2tpbmcgYXQgdGhlIGBtd2lmaWV4X3JlaW5pdF9zd2AgZnVuY3Rpb24gaW4gdGhlIE1hcnZlbGwgV2lGaSBkcml2ZXIuIEhtbSwgSSBrbm93IHRoYXQgZnVuY3Rpb24ncyByZXNwb25zaWJpbGl0eSBpcyB0byByZWluaXRpYWxpemUgdGhlIHNvZnR3YXJlIGFzcGVjdHMgb2YgdGhlIGRyaXZlciwgYW5kIGl0cyBsaWtlbHkgdXNlZCBpbiBhIHZhcmlldHkgb2Ygc2l0dWF0aW9ucy4gU28sIGl0IGFwcGVhcnMgdGhhdCBgbXdpZmlleF9yZWluaXRfc3dgIGlzICpvbmx5KiBldmVyIGNhbGxlZCBmcm9tIHRoZSBQQ0llIGFuZCBTRElPIGRyaXZlciBjb2RlLiBUaGF04oCZcyBpbnRlcmVzdGluZywgYXMgdGhpcyBtZWFucyBpdCBpcyBsaWtlbHkgdHJpZ2dlcmVkIGJ5IGhhcmR3YXJlIHJlbGF0ZWQgZXZlbnRzIHNwZWNpZmljIHRvIHRob3NlIGJ1c3Nlcy4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgbWVhbnMgaW4gY29udGV4dCBvZiB0aGUgd2hvbGUgZHJpdmVyLlxuXG5XYWl0IGEgc2Vjb25kLiBJIG5lZWQgdG8gYmUgbW9yZSB0aG9yb3VnaCBoZXJlISBHb2luZyBiYWNrIHVwIHRoZSBjYWxsIHN0YWNrLCBJIHNlZSBgbXdpZmlleF9hZGRfY2FyZGAgaXMgZGVmaW5pdGVseSBjYWxsZWQgZnJvbSB0aGUgVVNCIGRyaXZlciBjb2RlISBTbywgYG13aWZpZXhfYWRkX2NhcmRgIGlzIHVzZWQgd2hlbiBhIFVTQiBNYXJ2ZWxsIGRldmljZSBpcyBjb25uZWN0ZWQuIFRoaXMgaXMgYW4gaW1wb3J0YW50IGRldGFpbC4gTm93LCBob3cgZG9lcyB0aGlzIHJlbGF0aW9uc2hpcCBpbXBhY3QgdGhlIGluaXRpYWxpemF0aW9uIHByb2Nlc3MsIGFuZCBob3cgd2lsbCBpdCBpbmZsdWVuY2UgdGhlIHJlc3Qgb2YgbXkgd29yaz8gT2theSwgSSd2ZSBnb3QgdG8gaW52ZXN0aWdhdGUgd2hhdCB0aGUgZGlmZmVyZW5jZSBpcyBiZXR3ZWVuIHRoZSB0d28gY2FsbCBwYXRocyBhbmQgd2h5IHRoZXJlIG1pZ2h0IGJlIHN1Y2ggYSBkaXN0aW5jdCBkaWZmZXJlbmNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTA1NiwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA4OjMxOjEzLjA3MzgxOTYyM1oiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYzMDIxOTk2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm13aWZpZXhfYWRkX2NhcmRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jPTE1MjQ9RVhQT1JUX1NZTUJPTF9HUEwobXdpZmlleF9zaHV0ZG93bl9zdyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jLTE1MjYtLyogVGhpcyBmdW5jdGlvbiBjYW4gYmUgdXNlZCBmb3IgcmVpbml0dGluZyB0aGUgYWRhcHRlciBTVy4gUmVxdWlyZWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jOjE1Mjc6ICogY29kZSBpcyBleHRyYWN0ZWQgZnJvbSBtd2lmaWV4X2FkZF9jYXJkKClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jLTE1MjgtICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jPTE2ODg9aW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYzoxNjg5Om13aWZpZXhfYWRkX2NhcmQodm9pZCAqY2FyZCwgc3RydWN0IGNvbXBsZXRpb24gKmZ3X2RvbmUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYy0xNjkwLVxcdFxcdCBjb25zdCBzdHJ1Y3QgbXdpZmlleF9pZl9vcHMgKmlmX29wcywgdTggaWZhY2VfdHlwZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmMtMTc4Mi19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYzoxNzgzOkVYUE9SVF9TWU1CT0xfR1BMKG13aWZpZXhfYWRkX2NhcmQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmMtMTc4NC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg9MTQ2ND1pbnQgbXdpZmlleF9pbml0X3NodXRkb3duX2Z3KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTE0NjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaDoxNDY3OmludCBtd2lmaWV4X2FkZF9jYXJkKHZvaWQgKmNhcmQsIHN0cnVjdCBjb21wbGV0aW9uICpmd19kb25lLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTQ2OC1cXHRcXHQgICAgIGNvbnN0IHN0cnVjdCBtd2lmaWV4X2lmX29wcyAqaWZfb3BzLCB1OCBpZmFjZV90eXBlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYz0zNzY9c3RhdGljIGludCBtd2lmaWV4X3BjaWVfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jLTQxNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jOjQxNTpcXHRpZiAobXdpZmlleF9hZGRfY2FyZChjYXJkLCBcXHUwMDI2Y2FyZC1cXHUwMDNlZndfZG9uZSwgXFx1MDAyNnBjaWVfb3BzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmMtNDE2LVxcdFxcdFxcdCAgICAgTVdJRklFWF9QQ0lFLCBcXHUwMDI2cGRldi1cXHUwMDNlZGV2KSkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYz01NTE9bXdpZmlleF9zZGlvX3Byb2JlKHN0cnVjdCBzZGlvX2Z1bmMgKmZ1bmMsIGNvbnN0IHN0cnVjdCBzZGlvX2RldmljZV9pZCAqaWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jLTYwNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jOjYwNzpcXHRyZXQgPSBtd2lmaWV4X2FkZF9jYXJkKGNhcmQsIFxcdTAwMjZjYXJkLVxcdTAwM2Vmd19kb25lLCBcXHUwMDI2c2Rpb19vcHMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYy02MDgtXFx0XFx0XFx0ICAgICAgIE1XSUZJRVhfU0RJTywgXFx1MDAyNmZ1bmMtXFx1MDAzZWRldik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM9Mzg1PXN0YXRpYyBpbnQgbXdpZmlleF91c2JfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNTE0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo1MTU6XFx0cmV0ID0gbXdpZmlleF9hZGRfY2FyZChjYXJkLCBcXHUwMDI2Y2FyZC1cXHUwMDNlZndfZG9uZSwgXFx1MDAyNnVzYl9vcHMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTUxNi1cXHRcXHRcXHQgICAgICAgTVdJRklFWF9VU0IsIFxcdTAwMjZjYXJkLVxcdTAwM2V1ZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy01MTctXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo1MTg6XFx0XFx0cHJfZXJyKFxcXCIlczogbXdpZmlleF9hZGRfY2FyZCBmYWlsZWQ6ICVkXFxcXG5cXFwiLCBfX2Z1bmNfXywgcmV0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNTE5LVxcdFxcdHVzYl9yZXNldF9kZXZpY2UodWRldik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA4OjMxOjEzLjIzNjg0ODE2OFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODQxNjc5MjAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQ29yZSBGdW5jdGlvbnMgaW4gdGhlIE1hcnZlbGwgV2ktRmkgRHJpdmVyKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duIHN5c3RlbWF0aWNhbGx5LiBJIHNlZSB0aGF0IGBtd2lmaWV4X2FkZF9jYXJkYCBpcyBjYWxsZWQgZnJvbSBgbXdpZmlleF91c2JfcHJvYmVgLCBzbyBpdCdzIGRlZmluaXRlbHkgcmVhY2hhYmxlIOKAkyB0aGF0J3MgYSBrZXkgZW50cnkgcG9pbnQgZHVyaW5nIGRldmljZSBpbml0aWFsaXphdGlvbi4gSSBuZWVkIHRvIGtlZXAgdGhhdCBpbiBtaW5kLCBldmVuIHRob3VnaCBJJ2Qgbm9ybWFsbHkgZm9jdXMgb24gcnVudGltZSBmdW5jdGlvbnMuXG5cbk5leHQsIGBtd2lmaWV4X3dhaXRfcXVldWVfY29tcGxldGVgIGlzIGNydWNpYWwsIGJlaW5nIGNhbGxlZCBmcm9tIGJvdGggYG13aWZpZXhfc2VuZF9jbWRgIGFuZCBgbXdpZmlleF9zY2FuX25ldHdvcmtzYC4gVGhhdCB0ZWxscyBtZSB0aGlzIGlzIGEgbGlrZWx5IHBvaW50IG9mIGNvbnRlbnRpb24sIGVzcGVjaWFsbHkgc2luY2UgYG13aWZpZXhfc2VuZF9jbWRgIGl0c2VsZiBpcyBjYWxsZWQgZnJvbSBudW1lcm91cyBgY2ZnODAyMTFgIGNhbGxiYWNrcy4gVGhhdCBlc3RhYmxpc2hlcyBhIGNsZWFyIGNoYWluIG9mIGNyaXRpY2FsIGZ1bmN0aW9ucy4gVGhlcmVmb3JlLCBteSBwcmltYXJ5IGZvY3VzIHNob3VsZCBiZSBgbXdpZmlleF93YWl0X3F1ZXVlX2NvbXBsZXRlYCwgYG13aWZpZXhfc2VuZF9jbWRgLCBgbXdpZmlleF9zY2FuX25ldHdvcmtzYCwgYW5kLCBhcyBJIG1lbnRpb25lZCwgYG13aWZpZXhfYWRkX2NhcmRgIGR1ZSB0byBpdHMgcm9sZSBpbiB0aGUgcHJvYmUgZnVuY3Rpb24uIEl0IGlzIGEgaG90IHBhdGggZHVyaW5nIGluaXRpYWxpemF0aW9uLCBidXQgaXQncyBpbXBvcnRhbnQgdG8gaW5jbHVkZSBpdCBpbiB0aGUgYW5hbHlzaXMuXG5cbk5vdywgYmVmb3JlIEkgZGlnIGRlZXBlciwgSSBuZWVkIHRvIHZlcmlmeSB0aGF0IEkndmUgYWNjb3VudGVkIGZvciBhbnkgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJIHNob3VsZCBjaGVjayBgTVdJRklFWGAsIGBNV0lGSUVYX1VTQmAsIGBDRkc4MDIxMWAsIGFuZCBgVVNCYCB0byBlbnN1cmUgSSdtIGFjY291bnRpbmcgZm9yIGFsbCBwb3NzaWJsZSBidWlsZCBjb25maWd1cmF0aW9ucy4gTGV0IG1lIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoZSBkZXBlbmRlbmNpZXMgcmVsYXRlZCB0byBgTVdJRklFWF9VU0JgLCBqdXN0IHRvIGJlIGNlcnRhaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2NTAzLCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA4OjMxOjE4LjA3ODUzMDk4WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODE5NTg0ODkyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNV0lGSUVYX1VTQlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZz0yNT1jb25maWcgTVdJRklFWF9QQ0lFXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0zNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzozNzpjb25maWcgTVdJRklFWF9VU0JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0zOC1cXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBXaUZpLUV4IERyaXZlciBmb3IgVVNCODc2Ni84Nzk3Lzg5OTdcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA4OjMxOjE5Ljg5ODEyNDgzMloiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTc0MDI0MjA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTWFydmVsbCBXaUZpLUV4IERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gd2UncmUgbG9va2luZyBhdCB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIE1hcnZlbGwgV2lGaS1FeCBkcml2ZXIsIHNwZWNpZmljYWxseSB0aGUgVVNCIHZhcmlhbnQsIGBNV0lGSUVYX1VTQmAuIFdlIGFscmVhZHkgd2VudCB0aHJvdWdoIHRoZSBzb3VyY2UgZmlsZTsgc28gdGhhdCBwYXJ0IGlzIGRvbmUuIFRoaXMgYE1XSUZJRVhfVVNCYCBpcyB0aGUgcHJpbWFyeSBjb25maWd1cmF0aW9uIGRpcmVjdGl2ZSBoZXJlLiBOb3csIGxldCdzIGJyZWFrIGRvd24gdGhlIGRlcGVuZGVuY2llcy4gSXQgcmVsaWVzIG9uIGJvdGggYE1XSUZJRVhgIGFuZCBgVVNCYCwgd2hpY2ggbWFrZXMgc2Vuc2U7IGl0J3MgYSBNYXJ2ZWxsIFdpRmkgZHJpdmVyIGFuZCBpdCdzIGNvbW11bmljYXRpbmcgb3ZlciBVU0IuIFxuXG5Ob3csIEknbSBub3RpbmcgdGhhdCBgTVdJRklFWGAgKml0c2VsZiogaGFzIGEgZGVwZW5kZW5jeS4gTGV0J3Mgc2VlLi4uIEFoLCB5ZXMsIGBNV0lGSUVYYCBkZXBlbmRzIG9uIGBDRkc4MDIxMWAuIFRoYXQncyBzdGFuZGFyZDsgaXQncyB0aGUgbWFjODAyMTEgd2lyZWxlc3MgY29uZmlndXJhdGlvbiBpbnRlcmZhY2UuIE5vdywgSSB2YWd1ZWx5IHJlY2FsbCBhIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGBDRkc4MDIxMWAgYW5kIGBNQUM4MDIxMWAsIHdoaWNoIGlzIHRoZSBtYWM4MDIxMSBzdGFjayBpdHNlbGYuIEknbSBkb3VibGUtY2hlY2tpbmcgYmVjYXVzZSBzb21ldGltZXMgdGhlc2UgZGVwZW5kZW5jaWVzIGFyZSBhIGJpdCB0cmlja3kgdG8gZm9sbG93LiBIbW0sICpubyosIGl0J3MgdGhlIG9wcG9zaXRlISBgTUFDODAyMTFgIGRlcGVuZHMgb24gYENGRzgwMjExYC4gUmlnaHQuIFNvIHdlIG1pZ2h0IG5lZWQgdG8gY2hlY2sgdGhlIGBDRkc4MDIxMWAgY29uZmlnIGFzIHdlbGwsIHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gb3RoZXIgY29uZmlndXJhdGlvbnMgaW4gcGxheS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjcyMzEsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDg6MzE6MjQuNDcyMTUxNzAxWiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MDc3MjQ1NjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIENGRzgwMjExXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC93aXJlbGVzcy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC93aXJlbGVzcy9LY29uZmlnPTE0PWNvbmZpZyBXRVhUX1BSSVZcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE2LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE3OmNvbmZpZyBDRkc4MDIxMVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE4LVxcdHRyaXN0YXRlIFxcXCJjZmc4MDIxMSAtIHdpcmVsZXNzIGNvbmZpZ3VyYXRpb24gQVBJXFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWc9Mzg9Y29uZmlnIE5MODAyMTFfVEVTVE1PREVcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTUxLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjUyOmNvbmZpZyBDRkc4MDIxMV9ERVZFTE9QRVJfV0FSTklOR1NcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy01My1cXHRib29sIFxcXCJlbmFibGUgZGV2ZWxvcGVyIHdhcm5pbmdzXFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctNjctXFxubmV0L3dpcmVsZXNzL0tjb25maWc6Njg6Y29uZmlnIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTY5LVxcdGJvb2wgXFxcImNmZzgwMjExIGNlcnRpZmljYXRpb24gb251c1xcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTg4LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjg5OmNvbmZpZyBDRkc4MDIxMV9SRVFVSVJFX1NJR05FRF9SRUdEQlxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTkwLVxcdGJvb2wgXFxcInJlcXVpcmUgcmVnZGIgc2lnbmF0dXJlXFxcIiBpZiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTk4LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjk5OmNvbmZpZyBDRkc4MDIxMV9VU0VfS0VSTkVMX1JFR0RCX0tFWVNcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMDAtXFx0Ym9vbCBcXFwiYWxsb3cgcmVnZGIga2V5cyBzaGlwcGVkIHdpdGggdGhlIGtlcm5lbFxcXCIgaWYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMTAtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTExOmNvbmZpZyBDRkc4MDIxMV9FWFRSQV9SRUdEQl9LRVlESVJcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMTItXFx0c3RyaW5nIFxcXCJhZGRpdGlvbmFsIHJlZ2RiIGtleSBkaXJlY3RvcnlcXFwiIGlmIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTIxLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjEyMjpjb25maWcgQ0ZHODAyMTFfUkVHX0NFTExVTEFSX0hJTlRTXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTIzLVxcdGJvb2wgXFxcImNmZzgwMjExIHJlZ3VsYXRvcnkgc3VwcG9ydCBmb3IgY2VsbHVsYXIgYmFzZSBzdGF0aW9uIGhpbnRzXFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTM0LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjEzNTpjb25maWcgQ0ZHODAyMTFfUkVHX1JFTEFYX05PX0lSXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTM2LVxcdGJvb2wgXFxcImNmZzgwMjExIHN1cHBvcnQgZm9yIE5PX0lSIHJlbGF4YXRpb25cXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNTgtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTU5OmNvbmZpZyBDRkc4MDIxMV9ERUZBVUxUX1BTXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTYwLVxcdGJvb2wgXFxcImVuYWJsZSBwb3dlcnNhdmUgYnkgZGVmYXVsdFxcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE2OC1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNjk6Y29uZmlnIENGRzgwMjExX0RFQlVHRlNcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNzAtXFx0Ym9vbCBcXFwiY2ZnODAyMTEgRGVidWdGUyBlbnRyaWVzXFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTc2LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE3Nzpjb25maWcgQ0ZHODAyMTFfQ1JEQV9TVVBQT1JUXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTc4LVxcdGJvb2wgXFxcInN1cHBvcnQgQ1JEQVxcXCIgaWYgRVhQRVJUXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xODYtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTg3OmNvbmZpZyBDRkc4MDIxMV9XRVhUXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTg4LVxcdGJvb2wgXFxcImNmZzgwMjExIHdpcmVsZXNzIGV4dGVuc2lvbnMgY29tcGF0aWJpbGl0eVxcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE5My1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxOTQ6Y29uZmlnIENGRzgwMjExX0tVTklUX1RFU1RcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xOTUtXFx0dHJpc3RhdGUgXFxcIktVbml0IHRlc3RzIGZvciBjZmc4MDIxMVxcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwODozMToyNS4xNzk4ODIzMzJaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDkzNTcwODI2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipLZXJuZWwgQ29uZmlndXJhdGlvbiBEZWVwIERpdmUqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSBrZXJuZWwgY29uZmlndXJhdGlvbnMgcmVsYXRlZCB0byB0aGUgTWFydmVsbCBXaUZpIGRyaXZlciwgc3BlY2lmaWNhbGx5IGBNV0lGSUVYYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgYENGRzgwMjExYCBpcyB0aGUgY29yZSBjb25maWd1cmF0aW9uIHBpZWNlLiBUaGF0IG1ha2VzIHNlbnNlOyBpdCdzIHRoZSBnZW5lcmljIGNvbmZpZ3VyYXRpb24gZnJhbWV3b3JrIGZvciB3aXJlbGVzcyBkcml2ZXJzLiBTbywgSSBzZWUgdGhhdCB3ZSBuZWVkIGBNV0lGSUVYYCwgYE1XSUZJRVhfVVNCYCwgYW5kIG9mIGNvdXJzZSBgQ0ZHODAyMTFgLiBOb3csIHRoZSBzeXN0ZW0gd2lsbCBuYXR1cmFsbHkgbmVlZCBgVVNCYCBlbmFibGVkLCB3aGljaCBpcyB0eXBpY2FsbHkgaGFuZGxlZCBpbiBzeXprYWxsZXIsIGJ1dCBJIHNob3VsZCBiZSBleHBsaWNpdCBhbmQgbWFrZSBzdXJlIGl0J3MgaW5jbHVkZWQgaGVyZS4gSXQncyBlYXN5IHRvIG92ZXJsb29rIHRoZXNlIGJhc2ljcy5cblxuSSB3YXMgZXhwZWN0aW5nIGBNQUM4MDIxMWAgdG8gYmUgbmVjZXNzYXJ5IGFzIHdlbGwsIHNpbmNlIGl0J3MgY29tbW9ubHkgaW52b2x2ZWQgaW4gd2lyZWxlc3MgaW1wbGVtZW50YXRpb25zLiBIb3dldmVyLCBJIG5vdGljZSB0aGF0IHRoZSBgTVdJRklFWGAgZHJpdmVyIG9ubHkgZXhwbGljaXRseSBzdGF0ZXMgYSBkZXBlbmRlbmN5IG9uIGBDRkc4MDIxMWAuIEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0aGF0IGRlcGVuZGVuY3kgbGlzdCBqdXN0IHRvIG1ha2UgYWJzb2x1dGVseSBjZXJ0YWluIEkgaGF2ZW4ndCBtaXNzZWQgYW55dGhpbmcgb2J2aW91cy4gTGV0J3MgcmV2aXNpdCB0aGUgYE1XSUZJRVhgIGRlcGVuZGVuY2llcyB0byBiZSBzdXJlLiBJdCdzIGVhc3kgdG8gbWFrZSBhc3N1bXB0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg2MzIsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDg6MzE6MzAuMTE1NTk1MDIyWiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwNjI1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIE1XSUZJRVhcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIFdpRmktRXggRHJpdmVyXFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBDRkc4MDIxMVxcbiAgIDU6XFx0XFx0aGVscFxcbiAgIDY6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb24gTWFydmVsbFxcbiAgIDc6XFx0XFx0ICA4MDIuMTFuL2FjIGNoaXBzZXRzLlxcbiAgIDg6XFx0XFxuICAgOTpcXHRcXHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXFxuICAxMDpcXHRcXHQgIG13aWZpZXguXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA4OjMxOjMwLjExNTgwNDAzMloiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTUyOTI2NzYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgV2lGaSBEcml2ZXIgUGF0Y2gqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFllcywgd2UncmUgZGVhbGluZyB3aXRoIGBDRkc4MDIxMWAgYWdhaW4sIGdvb2QuIE15IGluaXRpYWwgc2NhbiBvZiB0aGUgY29uZmlncyBzaG93cyB3ZSBoYXZlIGBNV0lGSUVYYCwgYE1XSUZJRVhfVVNCYCwgYENGRzgwMjExYCwgYW5kIGBVU0JgIGluIHBsYXkuIEknbSBmb2N1c2luZyBvbiBrZXkgc3ltYm9sczogYG13aWZpZXhfd2FpdF9xdWV1ZV9jb21wbGV0ZWAsIGBtd2lmaWV4X3NlbmRfY21kYCwgYG13aWZpZXhfc2Nhbl9uZXR3b3Jrc2AsIGFuZCBgbXdpZmlleF9hZGRfY2FyZGAuXG5cbkhtbSwgYSBxdWljayBvYnNlcnZhdGlvbiDigJMgYG13aWZpZXhfcmVpbml0X3N3YCBpc24ndCByZWFjaGFibGUgZnJvbSBVU0IsIGJ1dCBgbXdpZmlleF9hZGRfY2FyZGAgaXMuIFRoaXMgcGF0Y2ggaXMgbW9kaWZ5aW5nIHRoZXNlIHR3byBmdW5jdGlvbnMsIGBtd2lmaWV4X2FkZF9jYXJkYCBhbmQgYG13aWZpZXhfcmVpbml0X3N3YCwgc3BlY2lmaWNhbGx5IHJlbW92aW5nIGBXUV9ISUdIUFJJYCBmcm9tIGBhbGxvY193b3JrcXVldWVgLiBJbnRlcmVzdGluZy4gSXQgbG9va3MgbGlrZSB0aGV5J3JlIHRyeWluZyB0byByZWZpbmUgaG93IHRoZXNlIHdvcmsgcXVldWVzIGFyZSBjcmVhdGVkLlxuXG5BbHNvLCBpdCBhbHRlcnMgYG13aWZpZXhfd2FpdF9xdWV1ZV9jb21wbGV0ZWAgdG8gaGFuZGxlIGEgc2NlbmFyaW8gd2hlcmUgdGhlIHdhaXQgaXMgaW50ZXJydXB0ZWQuIFNwZWNpZmljYWxseSwgaXQgZGV0YWNoZXMgdGhlIGNhbGxlci1vd25lZCBidWZmZXIgZnJvbSB0aGUgY3VycmVudCBjb21tYW5kIGluIHRoYXQgY2FzZS4gVGhhdCdzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIG5vdCBqdXN0IGEgY29zbWV0aWMgb25lLiBMaWtlbHkgZGVhbGluZyB3aXRoIGEgcmFjZSBjb25kaXRpb24gb3Igc29tZSBvdGhlciBjb25jdXJyZW5jeSBpc3N1ZS5cblxuSSBzaG91bGQgdmVyaWZ5IHRoYXQgYG13aWZpZXhfd2FpdF9xdWV1ZV9jb21wbGV0ZWAgaXNuJ3Qgc3RhdGljOyBJJ2xsIG5lZWQgdG8gY29uZmlybSBpdHMgdmlzaWJpbGl0eSBiZWZvcmUgZ29pbmcgYW55IGZ1cnRoZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5MTY5LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDg6MzE6MzUuMjY4NzM0NTM2WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NDU0NDQ2MTIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaW50IG13aWZpZXhfd2FpdF9xdWV1ZV9jb21wbGV0ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg9MTQ3Nj1pbnQgbXdpZmlleF9jb3B5X21jYXN0X2FkZHIoc3RydWN0IG13aWZpZXhfbXVsdGljYXN0X2xpc3QgKm1saXN0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTQ3Ny1cXHRcXHRcXHQgICAgc3RydWN0IG5ldF9kZXZpY2UgKmRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaDoxNDc4OmludCBtd2lmaWV4X3dhaXRfcXVldWVfY29tcGxldGUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTE0NzktXFx0XFx0XFx0XFx0c3RydWN0IGNtZF9jdHJsX25vZGUgKmNtZF9xdWV1ZWQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jPTI3PWludCBtd2lmaWV4X2NvcHlfbWNhc3RfYWRkcihzdHJ1Y3QgbXdpZmlleF9tdWx0aWNhc3RfbGlzdCAqbWxpc3QsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmMtNDQtICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jOjQ1OmludCBtd2lmaWV4X3dhaXRfcXVldWVfY29tcGxldGUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmMtNDYtXFx0XFx0XFx0XFx0c3RydWN0IGNtZF9jdHJsX25vZGUgKmNtZF9xdWV1ZWQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA4OjMxOjM1LjkxNDE4NDg5OVoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTM2NzcyOTM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipWZXJpZnlpbmcgYSBEeW5hbWljIEZ1bmN0aW9uIENhbGwqKlxuXG5BbHJpZ2h0LCB0aGUgY29yZSBwb2ludCBpcyBlc3RhYmxpc2hlZDogd2UncmUgZGVhbGluZyB3aXRoIHNvbWV0aGluZyBkeW5hbWljLCB3aGljaCBpcyBnb29kLiBUaGF0J3MgdGhlIGJhc2VsaW5lLiBOb3csIEkgbmVlZCB0byBjb25maXJtIHNvbWV0aGluZyBzcGVjaWZpYy4gTGV0J3Mgc2VlLi4uIHRoZSBjb2RlJ3MgZ290IGBtd2lmaWV4X3NlbmRfY21kYCBpbiBpdC4gSSBuZWVkIHRvIG1ha2UgKmFic29sdXRlbHkqIHN1cmUgdGhhdCBmdW5jdGlvbiBpc24ndCBkZWNsYXJlZCBhcyBgc3RhdGljYC4gSWYgaXQgKndlcmUqIHN0YXRpYywgdGhhdCB3b3VsZCBjb25zdHJhaW4gaXRzIHNjb3BlIGluIGEgd2F5IHRoYXQgd291bGRuJ3Qgaml2ZSB3aXRoIHRoZSBtb2RlbCBvZiBob3cgSSdtIHRoaW5raW5nIGFib3V0IGl0LCBoZXJlLiBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgaXQncyBhY2Nlc3NpYmxlIGZyb20gb3RoZXIgbW9kdWxlcywgdGhhdCBpdCdzIGdsb2JhbGx5IHZpc2libGUuIFNvLCB0aGUgdmVyaWZpY2F0aW9uOiBcIklzIGBtd2lmaWV4X3NlbmRfY21kYCBhY3R1YWxseSBzdGF0aWM/XCIgVGhhdCdzIHRoZSBrZXkgcXVlc3Rpb24uIEdvdHRhIGNoZWNrIHRoYXQgZGV0YWlsLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDA3MSwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA4OjMxOjM5LjA1MDk2MDkwNVoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU4ODQyNjg2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImludCBtd2lmaWV4X3NlbmRfY21kXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NtZGV2dC5jPTQ3MD1pbnQgbXdpZmlleF9wcm9jZXNzX2V2ZW50KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY21kZXZ0LmMtNTQxLSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jbWRldnQuYzo1NDI6aW50IG13aWZpZXhfc2VuZF9jbWQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgdTE2IGNtZF9ubyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY21kZXZ0LmMtNTQzLVxcdFxcdCAgICAgdTE2IGNtZF9hY3Rpb24sIHUzMiBjbWRfb2lkLCB2b2lkICpkYXRhX2J1ZiwgYm9vbCBzeW5jKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaD0xMDc2PWludCBtd2lmaWV4X2NvbXBsZXRlX2NtZChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xMDc4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg6MTA3OTppbnQgbXdpZmlleF9zZW5kX2NtZChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCB1MTYgY21kX25vLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTA4MC1cXHRcXHQgICAgIHUxNiBjbWRfYWN0aW9uLCB1MzIgY21kX29pZCwgdm9pZCAqZGF0YV9idWYsIGJvb2wgc3luYyk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA4OjMxOjM5LjIwOTgwOTQ1MVoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzg5MzE5NDAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBkZWxpdmVyZWQgYXMgYSBmaXJzdC1wZXJzb24gc3VtbWFyeTpcblxuKipBc3Nlc3NpbmcgdGhlIE1vZHVsYXJpdHkgYW5kIFJldXNhYmlsaXR5IG9mIGBtd2lmaWV4X3NjYW5fbmV0d29ya3NgKipcblxuQWxyaWdodCwgdGhlIGluaXRpYWwgYXNzdW1wdGlvbiBpcyB0aGF0IHdlJ3JlIGRlYWxpbmcgd2l0aCBhIHN5c3RlbSB0aGF0J3MgKm5vdCogZW50aXJlbHkgZml4ZWQuIFRoYXQncyBhIGZ1bmRhbWVudGFsIHN0YXJ0aW5nIHBvaW50LiBXZSBjYW4ndCBhc3N1bWUgcmlnaWRpdHk7IGluc3RlYWQsIGl0J3MgZHluYW1pYy4gVGhpcyBoYXMgc2lnbmlmaWNhbnQgaW1wbGljYXRpb25zIGZvciBob3cgd2UgYXBwcm9hY2ggYW5hbHlzaXMgYW5kIHBvdGVudGlhbCBtb2RpZmljYXRpb24uXG5cbk15IGltbWVkaWF0ZSBmb2xsb3ctdXAgdGhvdWdodCBjZW50ZXJzIG9uIGEgY3JpdGljYWwgcGllY2Ugb2YgdGhlIHB1enpsZTogYG13aWZpZXhfc2Nhbl9uZXR3b3Jrc2AuIFRoZSByZWFsIHF1ZXN0aW9uIGluIG15IG1pbmQgbm93IGlzIHdoZXRoZXIgdGhpcyBmdW5jdGlvbiBpcyBkZWNsYXJlZCBgc3RhdGljYCB3aXRoaW4gaXRzIG1vZHVsZS4gQSBgc3RhdGljYCBkZWNsYXJhdGlvbiB3b3VsZCBsaW1pdCBpdHMgc2NvcGUsIHBvdGVudGlhbGx5IGhpbmRlcmluZyByZXVzYWJpbGl0eSBvciBtYWtpbmcgaXQgaGFyZGVyIHRvIGludGVncmF0ZSB3aXRoIG90aGVyIGNvbXBvbmVudHMuIElmIGl0ICppcyogc3RhdGljLCB3ZSdsbCBuZWVkIHRvIHVuZGVyc3RhbmQgd2h5LCBhbmQgY29uc2lkZXIgdGhlIGltcGFjdCBvbiB0aGUgb3ZlcmFsbCBkZXNpZ24uIElmIG5vdCwgdGhlbiB3ZSBhcmUgYWJsZSB0byBwcm9ncmVzcyBmdXJ0aGVyLiBUaGUgZ29hbCBub3cgaXMgdG8gZXN0YWJsaXNoIGlmIHRoZSBmdW5jdGlvbiBoYXMgc2NvcGUgb3V0c2lkZSBpdHMgbW9kdWxlIG9yIGlzIHNvbGVseSBjb250YWluZWQgd2l0aGluIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDY3MiwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA4OjMxOjQyLjU5OTEzMjcyMloiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc4NjI2NTQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImludCBtd2lmaWV4X3NjYW5fbmV0d29ya3NcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oPTE0ODY9aW50IG13aWZpZXhfcmVxdWVzdF9zY2FuKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xNDg3LVxcdFxcdFxcdCBzdHJ1Y3QgY2ZnODAyMTFfc3NpZCAqcmVxX3NzaWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg6MTQ4ODppbnQgbXdpZmlleF9zY2FuX25ldHdvcmtzKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xNDg5LVxcdFxcdFxcdCAgY29uc3Qgc3RydWN0IG13aWZpZXhfdXNlcl9zY2FuX2NmZyAqdXNlcl9zY2FuX2luKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM9MTQ1MT1td2lmaWV4X3JhZGlvX3R5cGVfdG9fYmFuZCh1OCByYWRpb190eXBlKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0xNDY5LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM6MTQ3MDppbnQgbXdpZmlleF9zY2FuX25ldHdvcmtzKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0xNDcxLVxcdFxcdFxcdCAgY29uc3Qgc3RydWN0IG13aWZpZXhfdXNlcl9zY2FuX2NmZyAqdXNlcl9zY2FuX2luKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwODozMTo0Mi43Nzc3NjUwOTdaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzEzNzEzNTE0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqVmVyaWZ5aW5nIEZ1bmN0aW9uIEF0dHJpYnV0ZXMqKlxuXG5BbHJpZ2h0LCB0aGF0J3MgcmlnaHQsIHRoaW5ncyBhcmVuJ3QgYWx3YXlzIHdoYXQgdGhleSBzZWVtIGF0IGZpcnN0IGdsYW5jZS4gV2UgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUgYWJvdXQgdGhpcy4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gY2hlY2sgdGhlIGRlY2xhcmF0aW9uIG9mIGBtd2lmaWV4X2FkZF9jYXJkYC4gVGhlIHdob2xlIHBvaW50IG9mIGxvb2tpbmcgYXQgdGhpcyBmdW5jdGlvbiBpbiBwYXJ0aWN1bGFyIGlzIHRoYXQgaXRzICdzdGF0aWMnIGF0dHJpYnV0ZSBvciBsYWNrIHRoZXJlb2YgaXMgcmVsZXZhbnQgdG8gdGhlIGxhcmdlciBvYmplY3RpdmUuIFRoZXJlZm9yZSwgSSdtIGdvaW5nIHRvIGRpZyBpbnRvIHRoZSBoZWFkZXIgZmlsZXMgb3IgdGhlIHNvdXJjZSBpdHNlbGYgYW5kIGNvbmZpcm0gdGhhdCBgbXdpZmlleF9hZGRfY2FyZGAgaXNuJ3QgZGVjbGFyZWQgd2l0aCB0aGUgYHN0YXRpY2Aga2V5d29yZC4gVGhpcyBpcyB0aGUgb25seSB3YXkgdG8gYmUgY2VydGFpbiB0aGF0IHdoYXQgSSdtIGFzc3VtaW5nIGlzIGFjdHVhbGx5IHRydWUuIElmIGl0IHdlcmUgc3RhdGljLCBpdCB3b3VsZCBiZSBhIHZlcnkgZGlmZmVyZW50IGdhbWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxMzAwLCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDg6MzE6NDUuOTE0OTAzNzg0WiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzgzMTU4MDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaW50IG13aWZpZXhfYWRkX2NhcmRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oPTE0NjQ9aW50IG13aWZpZXhfaW5pdF9zaHV0ZG93bl9mdyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xNDY2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg6MTQ2NzppbnQgbXdpZmlleF9hZGRfY2FyZCh2b2lkICpjYXJkLCBzdHJ1Y3QgY29tcGxldGlvbiAqZndfZG9uZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTE0NjgtXFx0XFx0ICAgICBjb25zdCBzdHJ1Y3QgbXdpZmlleF9pZl9vcHMgKmlmX29wcywgdTggaWZhY2VfdHlwZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDg6MzE6NDYuMDkzMjI4OTM5WiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU4NzA1NTE0MTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIFBhdGNoKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBJdCdzIGNsZWFyIHRoaXMgaXNuJ3QgYSBzdGF0aWMgc2l0dWF0aW9uOyB0aGluZ3MgYXJlIGNoYW5naW5nLiBNeSBmb2N1cyBpcyBvbiB0aGUgaWRlbnRpZmllZCBzeW1ib2xzOiBgbXdpZmlleF93YWl0X3F1ZXVlX2NvbXBsZXRlYCwgYG13aWZpZXhfc2VuZF9jbWRgLCBgbXdpZmlleF9zY2FuX25ldHdvcmtzYCwgYW5kIGBtd2lmaWV4X2FkZF9jYXJkYC4gVGhleSdyZSBrZXkgZW50cnkgcG9pbnRzIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBtb2RpZmljYXRpb25zLlxuXG5UaGUgcmVsYXRlZCBjb25maWd1cmF0aW9ucywgYE1XSUZJRVhgLCBgTVdJRklFWF9VU0JgLCBgQ0ZHODAyMTFgLCBhbmQgYFVTQmAsIGFyZSBlcXVhbGx5IGltcG9ydGFudC4gVGhleSBwYWludCB0aGUgcGljdHVyZSBvZiB0aGUgZHJpdmVyJ3MgZW52aXJvbm1lbnQgYW5kIHRoZSB0YXJnZXRlZCBpbnRlcmZhY2UuIFRoZSBwcmVzZW5jZSBvZiBgTVdJRklFWF9VU0JgIHN0cm9uZ2x5IHN1Z2dlc3RzIHRoaXMgaW1wYWN0cyBVU0ItY29ubmVjdGVkIGRldmljZXMgdXNpbmcgdGhlIE1hcnZlbGwgV2lGaS1FeCBkcml2ZXIuXG5cbkJhc2VkIG9uIHRoZSBkZXNjcmlwdGlvbiwgdGhpcyBwYXRjaCBpcyBhZGRyZXNzaW5nIGEgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHkgd2l0aGluIHRoZSBkcml2ZXIg4oCTIGEgdXNlLWFmdGVyLWZyZWUgb3IgbWVtb3J5IGNvcnJ1cHRpb24gc2NlbmFyaW8uIFNwZWNpZmljYWxseSwgaXQgaW52b2x2ZXMgdGhlIGhhbmRsaW5nIG9mIGNhbGxlci1vd25lZCBidWZmZXJzIHdoZW4gYSB3YWl0IGlzIGludGVycnVwdGVkLiBEZXRhY2hpbmcgdGhlIGJ1ZmZlciBpbiBzdWNoIGEgc2l0dWF0aW9uIGlzIGEgY29tbW9uIHBhdHRlcm4gZm9yIHByZXZlbnRpbmcgdGhlc2UgaXNzdWVzLiBSZW1vdmluZyB0aGUgYFdRX0hJR0hQUklgIGZsYWcgZnJvbSB0aGUgd29ya3F1ZXVlIGFsbG9jYXRpb24gaW4gYG13aWZpZXhfYWRkX2NhcmRgIGFuZCBgbXdpZmlleF9yZWluaXRfc3dgIHNlZW1zIGxpa2UgYSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24gb3IgYSBjaGFuZ2UgaW4gd29ya3F1ZXVlIHNjaGVkdWxpbmcsIG5vdCBsaWtlbHkgZGlyZWN0bHkgcmVsYXRlZCB0byB0aGUgbWVtb3J5IGNvcnJ1cHRpb24gaXNzdWUuXG5cblRoZSBmYWN0IHRoYXQgdGhpcyBkcml2ZXIgY2FuIGJlIGFjY2Vzc2VkIHZpYSBVU0IsIGFuZCB0aGF0IHRoaXMgVVNCIGludGVyZmFjZSBjYW4gYmUgZW11bGF0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSB2aWEgdmhjaSwgbWVhbnMgdGhpcyBpcyBhIHByYWN0aWNhbCBhbmQgcmVsZXZhbnQgaXNzdWUgZm9yIGFueW9uZSB3b3JraW5nIHdpdGggdGhpcyBkcml2ZXIgaW4gYSB0ZXN0aW5nIG9yIHZpcnR1YWxpemF0aW9uIGNvbnRleHQuIFRoZSBwYXRjaCBpcyBwcm9iYWJseSBhZGRyZXNzaW5nIGEgc3BlY2lmaWMgZmxhdyB0aGF0J3MgYmVlbiBleHBvc2VkIHRocm91Z2ggdGVzdGluZyBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LlxuXG5XZSBjYW4gdGVudGF0aXZlbHkgY2FsbCB0aGlzIHByb2Nlc3MgXCJzZXQtcmVzdWx0c1wiLiBUaGlzIGlzIHRoZSBwb2ludCB3aGVyZSB0aGUgcmVzdWx0cyBoYXZlIGJlZW4gcHJvY2Vzc2VkIGFuZCBzdW1tYXJpemVkLCBhbmQgd2UgYXJlIHJlYWR5IHRvIG1vdmUgb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxNzA3LCJPdXRwdXRUb2tlbnMiOjIwOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwODozMTo1MS45NjM3ODQwMzRaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMjkxODE3NjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1XSUZJRVhcIixcbiAgICBcIk1XSUZJRVhfVVNCXCIsXG4gICAgXCJDRkc4MDIxMVwiLFxuICAgIFwiVVNCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXdpZmlleF93YWl0X3F1ZXVlX2NvbXBsZXRlXCIsXG4gICAgXCJtd2lmaWV4X3NlbmRfY21kXCIsXG4gICAgXCJtd2lmaWV4X3NjYW5fbmV0d29ya3NcIixcbiAgICBcIm13aWZpZXhfYWRkX2NhcmRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWFydmVsbCBXaUZpLUV4IERyaXZlciB0byBkZXRhY2ggYSBjYWxsZXItb3duZWQgYnVmZmVyIGZyb20gdGhlIGN1cnJlbnQgY29tbWFuZCBpZiBhIHdhaXQgaXMgaW50ZXJydXB0ZWQsIHByZXZlbnRpbmcgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgbWVtb3J5IGNvcnJ1cHRpb24uIEl0IGFsc28gcmVtb3ZlcyB0aGUgV1FfSElHSFBSSSBmbGFnIGZyb20gdGhlIHdvcmtxdWV1ZSBhbGxvY2F0aW9uIGluIG13aWZpZXhfYWRkX2NhcmQgYW5kIG13aWZpZXhfcmVpbml0X3N3LiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIGEgZHJpdmVyIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIHRoZSBVU0IgaW50ZXJmYWNlLCB3aGljaCBpcyBlbXVsYXRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIHVzaW5nIHZoY2kgKGR1bW15IFVTQiBkZXZpY2UpLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1XSUZJRVhcIixcbiAgICBcIk1XSUZJRVhfVVNCXCIsXG4gICAgXCJDRkc4MDIxMVwiLFxuICAgIFwiVVNCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXdpZmlleF93YWl0X3F1ZXVlX2NvbXBsZXRlXCIsXG4gICAgXCJtd2lmaWV4X3NlbmRfY21kXCIsXG4gICAgXCJtd2lmaWV4X3NjYW5fbmV0d29ya3NcIixcbiAgICBcIm13aWZpZXhfYWRkX2NhcmRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWFydmVsbCBXaUZpLUV4IERyaXZlciB0byBkZXRhY2ggYSBjYWxsZXItb3duZWQgYnVmZmVyIGZyb20gdGhlIGN1cnJlbnQgY29tbWFuZCBpZiBhIHdhaXQgaXMgaW50ZXJydXB0ZWQsIHByZXZlbnRpbmcgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgbWVtb3J5IGNvcnJ1cHRpb24uIEl0IGFsc28gcmVtb3ZlcyB0aGUgV1FfSElHSFBSSSBmbGFnIGZyb20gdGhlIHdvcmtxdWV1ZSBhbGxvY2F0aW9uIGluIG13aWZpZXhfYWRkX2NhcmQgYW5kIG13aWZpZXhfcmVpbml0X3N3LiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIGEgZHJpdmVyIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIHRoZSBVU0IgaW50ZXJmYWNlLCB3aGljaCBpcyBlbXVsYXRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIHVzaW5nIHZoY2kgKGR1bW15IFVTQiBkZXZpY2UpLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflow4dqm9[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-26 07:54:48 +0000 UTC FinishedAt: 2026-07-26 08:31:53 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "3dab139d4795f688e4f243e40c7474df00d329d9", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MWIFIEX", "MWIFIEX_USB", "CFG80211", "USB" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "3dab139d4795f688e4f243e40c7474df00d329d9", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MWIFIEX", "MWIFIEX_USB", "CFG80211", "USB" ], "series_id": "a5f2d648-c9ae-4f69-b71a-620ef4288d84" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mwifiex_wait_queue_complete", "mwifiex_send_cmd", "mwifiex_scan_networks", "mwifiex_add_card" ], "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+CgkJCTx0ZD4yMDI2LzA3LzI2IDA4OjMwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01XSUZJRVgmIzM0OywKICAgICYjMzQ7TVdJRklFWF9VU0ImIzM0OywKICAgICYjMzQ7Q0ZHODAyMTEmIzM0OywKICAgICYjMzQ7VVNCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bXdpZmlleF93YWl0X3F1ZXVlX2NvbXBsZXRlJiMzNDssCiAgICAmIzM0O213aWZpZXhfc2VuZF9jbWQmIzM0OywKICAgICYjMzQ7bXdpZmlleF9zY2FuX25ldHdvcmtzJiMzNDssCiAgICAmIzM0O213aWZpZXhfYWRkX2NhcmQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1hcnZlbGwgV2lGaS1FeCBEcml2ZXIgdG8gZGV0YWNoIGEgY2FsbGVyLW93bmVkIGJ1ZmZlciBmcm9tIHRoZSBjdXJyZW50IGNvbW1hbmQgaWYgYSB3YWl0IGlzIGludGVycnVwdGVkLCBwcmV2ZW50aW5nIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIG1lbW9yeSBjb3JydXB0aW9uLiBJdCBhbHNvIHJlbW92ZXMgdGhlIFdRX0hJR0hQUkkgZmxhZyBmcm9tIHRoZSB3b3JrcXVldWUgYWxsb2NhdGlvbiBpbiBtd2lmaWV4X2FkZF9jYXJkIGFuZCBtd2lmaWV4X3JlaW5pdF9zdy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiBhIGRyaXZlciB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSB0aGUgVVNCIGludGVyZmFjZSwgd2hpY2ggaXMgZW11bGF0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSB1c2luZyB2aGNpIChkdW1teSBVU0IgZGV2aWNlKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwODozMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDhlMmY3NmFiN2JiMGM4ZjhkYzE0ODU0M2RiNWMxMzQzYTU0NzZlZmJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEp1bCAyNiAwODozMDozMSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uY1xuaW5kZXggYThlYWI2YjFlNjNiMGYuLmM4ZGYzZWRmZjY3NWZlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uY1xuQEAgLTE1NTAsNyAmIzQzOzE1NTAsNyBAQCBtd2lmaWV4X3JlaW5pdF9zdyhzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxuIFxuIFx0YWRhcHRlci1cdTAwM2V3b3JrcXVldWUgPVxuIFx0XHRhbGxvY193b3JrcXVldWUoXCYjMzQ7TVdJRklFWF9XT1JLX1FVRVVFXCYjMzQ7LFxuLVx0XHRcdFx0V1FfSElHSFBSSSB8IFdRX01FTV9SRUNMQUlNIHwgV1FfVU5CT1VORCwgMCk7XG4mIzQzO1x0XHRcdFx0V1FfTUVNX1JFQ0xBSU0gfCBXUV9VTkJPVU5ELCAwKTtcbiBcdGlmICghYWRhcHRlci1cdTAwM2V3b3JrcXVldWUpXG4gXHRcdGdvdG8gZXJyX2ttYWxsb2M7XG4gXG5AQCAtMTcxNiw3ICYjNDM7MTcxNiw3IEBAIG13aWZpZXhfYWRkX2NhcmQodm9pZCAqY2FyZCwgc3RydWN0IGNvbXBsZXRpb24gKmZ3X2RvbmUsXG4gXG4gXHRhZGFwdGVyLVx1MDAzZXdvcmtxdWV1ZSA9XG4gXHRcdGFsbG9jX3dvcmtxdWV1ZShcJiMzNDtNV0lGSUVYX1dPUktfUVVFVUVcJiMzNDssXG4tXHRcdFx0XHRXUV9ISUdIUFJJIHwgV1FfTUVNX1JFQ0xBSU0gfCBXUV9VTkJPVU5ELCAwKTtcbiYjNDM7XHRcdFx0XHRXUV9NRU1fUkVDTEFJTSB8IFdRX1VOQk9VTkQsIDApO1xuIFx0aWYgKCFhZGFwdGVyLVx1MDAzZXdvcmtxdWV1ZSlcbiBcdFx0Z290byBlcnJfa21hbGxvYztcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmNcbmluZGV4IDk0NjBkNTM1MmIyMzRlLi4xOTE5Njg0ODc3OGMwYyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jXG5AQCAtNTcsNiAmIzQzOzU3LDE4IEBAIGludCBtd2lmaWV4X3dhaXRfcXVldWVfY29tcGxldGUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcbiBcdFx0bXdpZmlleF9kYmcoYWRhcHRlciwgRVJST1IsIFwmIzM0O2NtZF93YWl0X3EgdGVybWluYXRlZDogJWRcXG5cJiMzNDssXG4gXHRcdFx0ICAgIHN0YXR1cyk7XG4gXHRcdG13aWZpZXhfY2FuY2VsX2FsbF9wZW5kaW5nX2NtZChhZGFwdGVyKTtcbiYjNDM7XG4mIzQzO1x0XHQvKiBUaGUgY29tbWFuZCByZXNwb25zZSBwYXRoIHdyaXRlcyB0aHJvdWdoIGNtZF9ub2RlLVx1MDAzZWRhdGFfYnVmLlxuJiM0MztcdFx0ICogT24gYW4gaW50ZXJydXB0ZWQgd2FpdCwgdGhlIGNhbGxlciBjYW4gcmV0dXJuIGFuZCByZWxlYXNlIGFcbiYjNDM7XHRcdCAqIHN0YWNrLWFsbG9jYXRlZCBkYXRhX2J1ZiBiZWZvcmUgYSBsYXRlIGZpcm13YXJlIHJlc3BvbnNlIGlzXG4mIzQzO1x0XHQgKiBwcm9jZXNzZWQuIERldGFjaCB0aGUgY2FsbGVyLW93bmVkIGJ1ZmZlciBmcm9tIHRoZSBjdXJyZW50XG4mIzQzO1x0XHQgKiBjb21tYW5kIHNvIGEgbGF0ZSByZXNwb25zZSBjYW5ub3QgY29ycnVwdCBmcmVlZCBzdGFjayBtZW1vcnkuXG4mIzQzO1x0XHQgKi9cbiYjNDM7XHRcdHNwaW5fbG9ja19iaChcdTAwMjZhZGFwdGVyLVx1MDAzZW13aWZpZXhfY21kX2xvY2spO1xuJiM0MztcdFx0aWYgKGFkYXB0ZXItXHUwMDNlY3Vycl9jbWQgPT0gY21kX3F1ZXVlZClcbiYjNDM7XHRcdFx0YWRhcHRlci1cdTAwM2VjdXJyX2NtZC1cdTAwM2VkYXRhX2J1ZiA9IE5VTEw7XG4mIzQzO1x0XHRzcGluX3VubG9ja19iaChcdTAwMjZhZGFwdGVyLVx1MDAzZW13aWZpZXhfY21kX2xvY2spO1xuJiM0MztcbiBcdFx0cmV0dXJuIHN0YXR1cztcbiBcdH1cbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwODozMDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TVdJRklFWCYjMzQ7LAogICAgJiMzNDtNV0lGSUVYX1VTQiYjMzQ7LAogICAgJiMzNDtDRkc4MDIxMSYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttd2lmaWV4X3dhaXRfcXVldWVfY29tcGxldGUmIzM0OywKICAgICYjMzQ7bXdpZmlleF9zZW5kX2NtZCYjMzQ7LAogICAgJiMzNDttd2lmaWV4X3NjYW5fbmV0d29ya3MmIzM0OywKICAgICYjMzQ7bXdpZmlleF9hZGRfY2FyZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWFydmVsbCBXaUZpLUV4IERyaXZlciB0byBkZXRhY2ggYSBjYWxsZXItb3duZWQgYnVmZmVyIGZyb20gdGhlIGN1cnJlbnQgY29tbWFuZCBpZiBhIHdhaXQgaXMgaW50ZXJydXB0ZWQsIHByZXZlbnRpbmcgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgbWVtb3J5IGNvcnJ1cHRpb24uIEl0IGFsc28gcmVtb3ZlcyB0aGUgV1FfSElHSFBSSSBmbGFnIGZyb20gdGhlIHdvcmtxdWV1ZSBhbGxvY2F0aW9uIGluIG13aWZpZXhfYWRkX2NhcmQgYW5kIG13aWZpZXhfcmVpbml0X3N3LiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIGEgZHJpdmVyIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIHRoZSBVU0IgaW50ZXJmYWNlLCB3aGljaCBpcyBlbXVsYXRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIHVzaW5nIHZoY2kgKGR1bW15IFVTQiBkZXZpY2UpLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgOGUyZjc2YWI3YmIwYzhmOGRjMTQ4NTQzZGI1YzEzNDNhNTQ3NmVmYgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gSnVsIDI2IDA4OjMwOjMxIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmMKaW5kZXggYThlYWI2YjFlNjNiMGYuLmM4ZGYzZWRmZjY3NWZlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmMKQEAgLTE1NTAsNyAmIzQzOzE1NTAsNyBAQCBtd2lmaWV4X3JlaW5pdF9zdyhzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKQogCiAJYWRhcHRlci0mZ3Q7d29ya3F1ZXVlID0KIAkJYWxsb2Nfd29ya3F1ZXVlKCYjMzQ7TVdJRklFWF9XT1JLX1FVRVVFJiMzNDssCi0JCQkJV1FfSElHSFBSSSB8IFdRX01FTV9SRUNMQUlNIHwgV1FfVU5CT1VORCwgMCk7CiYjNDM7CQkJCVdRX01FTV9SRUNMQUlNIHwgV1FfVU5CT1VORCwgMCk7CiAJaWYgKCFhZGFwdGVyLSZndDt3b3JrcXVldWUpCiAJCWdvdG8gZXJyX2ttYWxsb2M7CiAKQEAgLTE3MTYsNyAmIzQzOzE3MTYsNyBAQCBtd2lmaWV4X2FkZF9jYXJkKHZvaWQgKmNhcmQsIHN0cnVjdCBjb21wbGV0aW9uICpmd19kb25lLAogCiAJYWRhcHRlci0mZ3Q7d29ya3F1ZXVlID0KIAkJYWxsb2Nfd29ya3F1ZXVlKCYjMzQ7TVdJRklFWF9XT1JLX1FVRVVFJiMzNDssCi0JCQkJV1FfSElHSFBSSSB8IFdRX01FTV9SRUNMQUlNIHwgV1FfVU5CT1VORCwgMCk7CiYjNDM7CQkJCVdRX01FTV9SRUNMQUlNIHwgV1FfVU5CT1VORCwgMCk7CiAJaWYgKCFhZGFwdGVyLSZndDt3b3JrcXVldWUpCiAJCWdvdG8gZXJyX2ttYWxsb2M7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYwppbmRleCA5NDYwZDUzNTJiMjM0ZS4uMTkxOTY4NDg3NzhjMGMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmMKQEAgLTU3LDYgJiM0Mzs1NywxOCBAQCBpbnQgbXdpZmlleF93YWl0X3F1ZXVlX2NvbXBsZXRlKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsCiAJCW13aWZpZXhfZGJnKGFkYXB0ZXIsIEVSUk9SLCAmIzM0O2NtZF93YWl0X3EgdGVybWluYXRlZDogJWRcbiYjMzQ7LAogCQkJICAgIHN0YXR1cyk7CiAJCW13aWZpZXhfY2FuY2VsX2FsbF9wZW5kaW5nX2NtZChhZGFwdGVyKTsKJiM0MzsKJiM0MzsJCS8qIFRoZSBjb21tYW5kIHJlc3BvbnNlIHBhdGggd3JpdGVzIHRocm91Z2ggY21kX25vZGUtJmd0O2RhdGFfYnVmLgomIzQzOwkJICogT24gYW4gaW50ZXJydXB0ZWQgd2FpdCwgdGhlIGNhbGxlciBjYW4gcmV0dXJuIGFuZCByZWxlYXNlIGEKJiM0MzsJCSAqIHN0YWNrLWFsbG9jYXRlZCBkYXRhX2J1ZiBiZWZvcmUgYSBsYXRlIGZpcm13YXJlIHJlc3BvbnNlIGlzCiYjNDM7CQkgKiBwcm9jZXNzZWQuIERldGFjaCB0aGUgY2FsbGVyLW93bmVkIGJ1ZmZlciBmcm9tIHRoZSBjdXJyZW50CiYjNDM7CQkgKiBjb21tYW5kIHNvIGEgbGF0ZSByZXNwb25zZSBjYW5ub3QgY29ycnVwdCBmcmVlZCBzdGFjayBtZW1vcnkuCiYjNDM7CQkgKi8KJiM0MzsJCXNwaW5fbG9ja19iaCgmYW1wO2FkYXB0ZXItJmd0O213aWZpZXhfY21kX2xvY2spOwomIzQzOwkJaWYgKGFkYXB0ZXItJmd0O2N1cnJfY21kID09IGNtZF9xdWV1ZWQpCiYjNDM7CQkJYWRhcHRlci0mZ3Q7Y3Vycl9jbWQtJmd0O2RhdGFfYnVmID0gTlVMTDsKJiM0MzsJCXNwaW5fdW5sb2NrX2JoKCZhbXA7YWRhcHRlci0mZ3Q7bXdpZmlleF9jbWRfbG9jayk7CiYjNDM7CiAJCXJldHVybiBzdGF0dXM7CiAJfQogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA4OjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1ODYKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAyMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIFZ1bG5lcmFiaWxpdHkgaW4gdGhlIE1hcnZlbGwgV2lGaS1FeCBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0IHNlZW1zIHRvIGJlIHRvdWNoaW5nIGBtd2lmaWV4YCDigJMgc3BlY2lmaWNhbGx5LCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uY2AgYW5kIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmNgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtXaGF0JiMzOTtzIHRoZSBpbXBhY3Qgb2YgdGhlc2UgY2hhbmdlcz8mIzM0OyBJdCBsb29rcyBsaWtlIHRoZXkmIzM5O3JlIHJlbW92aW5nIGBXUV9ISUdIUFJJYCBmcm9tIGBhbGxvY193b3JrcXVldWVgIGluIGBtd2lmaWV4X3JlaW5pdF9zd2AgYW5kIGBtd2lmaWV4X2FkZF9jYXJkYCwgYW5kIGFsc28gYWRkaW5nIGEgbmV3IGNoZWNrIGluIGBtd2lmaWV4X3dhaXRfcXVldWVfY29tcGxldGVgIHRvIGhhbmRsZSBidWZmZXIgZGV0YWNobWVudCBkdXJpbmcgYW4gaW50ZXJydXB0ZWQgd2FpdC4KCk15IG5leHQgc3RlcCBpcyB0byBmaWd1cmUgb3V0IGlmIHRoaXMgaXMgYWN0dWFsbHkgZXhwbG9pdGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGhlIE1hcnZlbGwgV2lGaS1FeCBkcml2ZXIgKGBtd2lmaWV4YCkgdHlwaWNhbGx5IHN1cHBvcnRzIFNESU8sIFBDSWUsIGFuZCBVU0IgaW50ZXJmYWNlcy4gVVNCIGlzIG9mdGVuIHRoZSBlYXNpZXN0IHRvIGVtdWxhdGUgdXNpbmcgc29tZXRoaW5nIGxpa2UgYSBVU0IgZ2FkZ2V0IG9yIHZoY2kuIFNvLCB0aGUgY2hhbmNlcyBvZiB0aGlzIGJlaW5nIHJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGNvbnRleHQgYXJlIHByb2JhYmx5IGZhaXJseSBoaWdoLCB3aGljaCBpcyBpbXBvcnRhbnQgdG8gY29uc2lkZXIuCgpUbyBnZXQgYSBiZXR0ZXIgcGljdHVyZSwgSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNoZWNrIHRoZSBgS2NvbmZpZ2AgZmlsZSBpbiB0aGF0IGRpcmVjdG9yeS4gSSB3YW50IHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0aGF0IG1pZ2h0IHByb3ZpZGUgY2x1ZXMgYWJvdXQgdGhlIGNvbmRpdGlvbnMgbmVjZXNzYXJ5IHRvIHRyaWdnZXIgdGhpcywgb3IgaWYgSSBjYW4gZmlndXJlIG91dCBob3cgdGhlIGRyaXZlciBjYW4gYmUgbWFkZSBhdmFpbGFibGUgZm9yIHRlc3RpbmcuIFVuZGVyc3RhbmRpbmcgdGhlIGF2YWlsYWJsZSBjb25maWd1cmF0aW9ucyB3aWxsIGdpdmUgbWUgYW4gaWRlYSBhYm91dCBob3cgdG8gcmVwbGljYXRlIGEgdGVzdCBlbnZpcm9ubWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwODozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTVdJRklFWCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzoyOmNvbmZpZyBNV0lGSUVYXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBXaUZpLUV4IERyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTExLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6MTI6Y29uZmlnIE1XSUZJRVhfU0RJT1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMTMtXHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBTRDg3ODYvU0Q4Nzg3L1NEODc5Ny9TRDg4ODcvU0Q4ODk3L1NEODk3Ny9TRDg5NzgvU0Q4OTg3L1NEODk5N1wmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTI0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6MjU6Y29uZmlnIE1XSUZJRVhfUENJRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMjYtXHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBQQ0lFIDg3NjYvODg5Ny84OTk3XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzozNzpjb25maWcgTVdJRklFWF9VU0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTM4LVx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBXaUZpLUV4IERyaXZlciBmb3IgVVNCODc2Ni84Nzk3Lzg5OTdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwODozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTk5CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgYW5hbHl6aW5nIHRoaXMgY29kZToKCioqTVdJRklFWF9VU0IgRGVlcCBEaXZlKioKCk9rYXksIHNvIGBNV0lGSUVYX1VTQmAgaXMgY2xlYXJseSBpbiB0aGUgcGljdHVyZSwgd2hpY2ggbWVhbnMgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIFVTQi1iYXNlZCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgTVdJRklFWCBkcml2ZXIuIE15IGltbWVkaWF0ZSBuZXh0IHN0ZXAgaXMgdG8gZHJpbGwgZG93biBpbnRvIGhvdyB0aGUgYXN5bmNocm9ub3VzIGNvbXBsZXRpb24gbWVjaGFuaXNtIGlzIGJlaW5nIGhhbmRsZWQuIEkga25vdyB0aGlzIGRyaXZlciByZWxpZXMgb24gcXVldWluZywgc28gbGV0JiMzOTtzIGNoZWNrIGBtd2lmaWV4X3dhaXRfcXVldWVfY29tcGxldGVgLiBUaGlzIGZ1bmN0aW9uIGlzIGNyaXRpY2FsIGZvciBzeW5jaHJvbml6aW5nIHRoZSBkcml2ZXImIzM5O3Mgb3BlcmF0aW9uLCBzbyB1bmRlcnN0YW5kaW5nIGl0cyBiZWhhdmlvciBhbmQgcG90ZW50aWFsIGJvdHRsZW5lY2tzIGlzIHBhcmFtb3VudC4gSSBuZWVkIHRvIHRyYWNlICphbGwqIHRoZSBwbGFjZXMgdGhhdCBjYWxsIHRoaXMgZnVuY3Rpb24uIFRoYXQgd2lsbCB0ZWxsIG1lIHdoZXJlIHRoZXNlIGNvbXBsZXRpb24gZXZlbnRzIGFyZSBleHBlY3RlZCB0byBiZSBzaWduYWxlZCBmcm9tLCBhbmQgd2hlcmUgdGhlIGRyaXZlciBpcyBibG9ja2VkIHVudGlsIHRoZXNlIGV2ZW50cyBhcmUgcmVjZWl2ZWQuIEkgbmVlZCB0byBtYXAgb3V0IHRoZSBlbnRpcmUgY2FsbCBncmFwaCByZWxhdGVkIHRvIHRoaXMgd2FpdCBmdW5jdGlvbiwgYW5kIHVuZGVyc3RhbmQgYWxsIHRoZSBzdGF0ZXMgaXQmIzM5O3MgYmVpbmcgdXNlZCB0byBzeW5jaHJvbml6ZS4gVGhhdCB3aWxsIGdpdmUgbWUgdGhlIGJpZyBwaWN0dXJlIG9mIGFueSBkZXBlbmRlbmNpZXMgdGhhdCB3aWxsIGJlIGltcGFjdGVkIGJ5IGl0cyB1c2UsIGFuZCBpZiB0aGVyZSBhcmUgYW55IHJhY2UgY29uZGl0aW9ucyB0byBsb29rIG91dCBmb3IuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDg6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXdpZmlleF93YWl0X3F1ZXVlX2NvbXBsZXRlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY21kZXZ0LmM9NTQyPWludCBtd2lmaWV4X3NlbmRfY21kKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsIHUxNiBjbWRfbm8sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NtZGV2dC5jLTY2Ny1cdFx0aWYgKGNtZF9ub2RlLVx1MDAzZXdhaXRfcV9lbmFibGVkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NtZGV2dC5jOjY2ODpcdFx0XHRyZXQgPSBtd2lmaWV4X3dhaXRfcXVldWVfY29tcGxldGUoYWRhcHRlciwgY21kX25vZGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NtZGV2dC5jLTY2OS1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oPTE0NzY9aW50IG13aWZpZXhfY29weV9tY2FzdF9hZGRyKHN0cnVjdCBtd2lmaWV4X211bHRpY2FzdF9saXN0ICptbGlzdCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTQ3Ny1cdFx0XHQgICAgc3RydWN0IG5ldF9kZXZpY2UgKmRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oOjE0Nzg6aW50IG13aWZpZXhfd2FpdF9xdWV1ZV9jb21wbGV0ZShzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xNDc5LVx0XHRcdFx0c3RydWN0IGNtZF9jdHJsX25vZGUgKmNtZF9xdWV1ZWQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM9MTQ3MD1pbnQgbXdpZmlleF9zY2FuX25ldHdvcmtzKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0xNTQyLVx0XHRcdFx0XHQgICAgXCYjMzQ7d2FpdCBpbnRlcm5hbCBzY2FuXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM6MTU0MzpcdFx0XHRcdG13aWZpZXhfd2FpdF9xdWV1ZV9jb21wbGV0ZShhZGFwdGVyLCBjbWRfbm9kZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTE1NDQtXHRcdFx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYz0yNz1pbnQgbXdpZmlleF9jb3B5X21jYXN0X2FkZHIoc3RydWN0IG13aWZpZXhfbXVsdGljYXN0X2xpc3QgKm1saXN0LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYy00NC0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYzo0NTppbnQgbXdpZmlleF93YWl0X3F1ZXVlX2NvbXBsZXRlKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmMtNDYtXHRcdFx0XHRzdHJ1Y3QgY21kX2N0cmxfbm9kZSAqY21kX3F1ZXVlZClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwODozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NTIyCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMTE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgbXdpZmlleCBEcml2ZXIgZm9yIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgbXdpZmlleF93YWl0X3F1ZXVlX2NvbXBsZXRlYC4gVGhpcyBmdW5jdGlvbiBwb3BzIHVwIGluIGJvdGggYG13aWZpZXhfc2VuZF9jbWRgIGFuZCBgbXdpZmlleF9zY2FuX25ldHdvcmtzYC4gIGBtd2lmaWV4X3NlbmRfY21kYCBpcyBjbGVhcmx5IGEgY3JpdGljYWwgZnVuY3Rpb24sIHRoZSBiYWNrYm9uZSBmb3Igc2VuZGluZyBjb21tYW5kcyBkb3duIHRvIHRoZSBmaXJtd2FyZS4gIEdpdmVuIHRoYXQgdGhpcyBpcyBhIFVTQiBkcml2ZXIsIHRoZSBwb3RlbnRpYWwgZm9yIGZ1enppbmcgdXNpbmcgc3l6a2FsbGVyIGFuZCB0aGUgdmlydHVhbCBIQ0kgZGV2aWNlICh2aGNpKSBpcyByZWFsbHkgcHJvbWlzaW5nLiBUaGUgZW50cnkgcG9pbnRzLCB0aGUgY29tbWFuZCBmdW5jdGlvbnMgYXJlIGNsZWFybHkgdGhlcmUuIE5vdywgbGV0JiMzOTtzIG5haWwgZG93biB0aG9zZSBjb25maWd1cmF0aW9uIG9wdGlvbnMuIE5lZWQgdG8ga25vdyB3aGF0IHN3aXRjaGVzIGFyZSBlbmFibGVkLiBJJiMzOTttIHNlZWluZyBgTVdJRklFWGAgYW5kIGBNV0lGSUVYX1VTQmAgb3B0aW9ucy4gVGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnQuIExldCBtZSBjaGVjayB0aGUgZGVwZW5kZW5jaWVzIGZvciBgTVdJRklFWF9VU0JgIHRvIHVuZGVyc3RhbmQgdGhlIHNldHVwLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiB0byBkZXRlcm1pbmUgdGhlIG9wdGltYWwgZnV6emluZyBzdHJhdGVneS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwODozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTVdJRklFWF9VU0ImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZz0yNT1jb25maWcgTVdJRklFWF9QQ0lFXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzozNzpjb25maWcgTVdJRklFWF9VU0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTM4LVx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBXaUZpLUV4IERyaXZlciBmb3IgVVNCODc2Ni84Nzk3Lzg5OTdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwODozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MDE3CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEkmIzM5O20gd2VsbC12ZXJzZWQgaW4ga2VybmVsIGNvbmZpZ3VyYXRpb24gYW5kIE1hcnZlbGwgd2lyZWxlc3MgZHJpdmVyczoKCioqQW5hbHl6aW5nIHRoZSBNYXJ2ZWxsIFdpLUZpIERyaXZlciBLY29uZmlnKioKCkFscmlnaHQsIG15IGludGVybmFsIHJhZGFyIGlzIHBpbmdpbmcgYSBzcGVjaWZpYyBLY29uZmlnIGZpbGUg4oCTIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZ2Ag4oCTIGFuZCBJJiMzOTttIGRpcmVjdGluZyBteSBtZW50YWwgZm9jdXMgYXJvdW5kIGxpbmUgMzcuIEkmIzM5O20gaW1tZWRpYXRlbHkgdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgKndoeSogSSYjMzk7bSBiZWluZyBkcmF3biB0byB0aGF0IHBhcnRpY3VsYXIgc2VjdGlvbi4gQW0gSSBsb29raW5nIGZvciBhIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHJlbGF0ZWQgdG8gcG93ZXIgbWFuYWdlbWVudD8gUGVyaGFwcyBzb21lIGRlYnVnZ2luZyBmbGFncz8gT3IgbWF5YmUgSSYjMzk7bSB0cm91Ymxlc2hvb3RpbmcgYSBzcGVjaWZpYyBtb2R1bGUgc2VsZWN0aW9uIGlzc3VlIHJlbGF0ZWQgdG8gdGhlIE1hcnZlbGwgV2ktRmkgZHJpdmVyLiBJJiMzOTttIGxpa2VseSBsb29raW5nIGZvciBhIGRlcGVuZGVuY3kgb3IgYSBkZWZhdWx0IHZhbHVlIHJlbGF0ZWQgdG8gc29tZSBmZWF0dXJlcy4gSXQmIzM5O3MgdGltZSB0byBkaWcgaW50byB0aGF0IGZpbGUgYW5kIHNlZSB3aGF0JiMzOTtzIGJlaW5nIGNvbmZpZ3VyZWQgYXJvdW5kIHRoYXQgbGluZS4gTXkgZXhwZXJ0aXNlIGlzIG5vdyBiZWluZyBmb2N1c2VkIGluIG9uIHRoYXQgYXJlYSB0byBnZXQgYSBoYW5kbGUgb24gd2hhdCB0aGUgc3lzdGVtIGlzIGdvaW5nIHRvIGRvLiBMZXQmIzM5O3Mgc2VlIHdoYXQgc2VjcmV0cyB0aGF0IEtjb25maWcgZmlsZSBpcyBob2xkaW5nIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwODozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAzMDpcdFx0aGVscFxuICAzMTpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb24gTWFydmVsbFxuICAzMjpcdFx0ICA4NzY2Lzg4OTcvODk5NyBjaGlwc2V0cyB3aXRoIFBDSWUgaW50ZXJmYWNlLlxuICAzMzpcdFxuICAzNDpcdFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGl0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlIGNhbGxlZFxuICAzNTpcdFx0ICBtd2lmaWV4X3BjaWUuXG4gIDM2Olx0XG4gIDM3Olx0Y29uZmlnIE1XSUZJRVhfVVNCXG4gIDM4Olx0XHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBVU0I4NzY2Lzg3OTcvODk5N1wmIzM0O1xuICAzOTpcdFx0ZGVwZW5kcyBvbiBNV0lGSUVYIFx1MDAyNlx1MDAyNiBVU0JcbiAgNDA6XHRcdHNlbGVjdCBGV19MT0FERVJcbiAgNDE6XHRcdGhlbHBcbiAgNDI6XHRcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIHdpcmVsZXNzIGFkYXB0ZXJzIGJhc2VkIG9uIE1hcnZlbGxcbiAgNDM6XHRcdCAgODc5Ny84OTk3IGNoaXBzZXQgd2l0aCBVU0IgaW50ZXJmYWNlLlxuICA0NDpcdFxuICA0NTpcdFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGl0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlIGNhbGxlZFxuICA0NjpcdFx0ICBtd2lmaWV4X3VzYi5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDg6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTU3MwoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgZGVwZW5kZW5jaWVzLCBzdW1tYXJpemVkIGFzIGEgdGhvdWdodCBwcm9jZXNzOgoKKipEZXBlbmRlbmNpZXMgYW5kIFRoZWlyIFN0cnVjdHVyZSoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBmb2N1cyBoZXJlIGlzIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGUgYE1XSUZJRVhgIGRyaXZlciBhbmQgaXRzIGRlcGVuZGVuY2llcy4gSXQmIzM5O3MgY3J1Y2lhbCwgb2J2aW91c2x5LCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBtb2R1bGVzIHJlbGF0ZSB0byBlYWNoIG90aGVyIGZvciBhbnkgZGVidWdnaW5nIG9yIG1vZGlmaWNhdGlvbiBJJiMzOTtkIHdhbnQgdG8gZG8uCgpgTVdJRklFWGAgbmVlZHMgYFVTQmAgdG8gY29tbXVuaWNhdGUgd2l0aCB0aGUgaG9zdC4gVGhhdCBzZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoLCBnaXZlbiB0aGUgZHJpdmVyJiMzOTtzIGZ1bmN0aW9uLiBCdXQgYE1XSUZJRVhgIGl0c2VsZiBpc24mIzM5O3QgYSBzdGFuZGFsb25lIGVudGl0eS4gRGlnZ2luZyBkZWVwZXIsIEkgc2VlIGl0IGFsc28gaGFzIGRlcGVuZGVuY2llcyBvbiBgTUFDODAyMTFgIGFuZCBgQ0ZHODAyMTFgLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSByZWFsIHN0cnVjdHVyZSBiZWNvbWVzIGludGVyZXN0aW5nLiBUaGVzZSBhcmUgdGhlIGNvcmUgd2lyZWxlc3MgbmV0d29ya2luZyBjb21wb25lbnRzLCB0aGUgbG93ZXIgbGF5ZXJzLiBTbyBgTVdJRklFWGAgbGlrZWx5IHNpdHMgb24gdG9wIG9mIHRoZXNlLCBwcm92aWRpbmcgYSBtb3JlIHNwZWNpZmljIGludGVyZmFjZSBvciBmdW5jdGlvbmFsaXR5IHJlbGF0ZWQgdG8gYSBzcGVjaWZpYyBoYXJkd2FyZSBmYW1pbHkuIEVzc2VudGlhbGx5IGBNV0lGSUVYYCBsZXZlcmFnZXMgdGhlIGxvdyBsZXZlbCA4MDIuMTEgc3RhY2sgdG8gd29yayBvbiBVU0IuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA4OjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgTVdJRklFWFxuICAgMzpcdFx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBXaUZpLUV4IERyaXZlclwmIzM0O1xuICAgNDpcdFx0ZGVwZW5kcyBvbiBDRkc4MDIxMVxuICAgNTpcdFx0aGVscFxuICAgNjpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb24gTWFydmVsbFxuICAgNzpcdFx0ICA4MDIuMTFuL2FjIGNoaXBzZXRzLlxuICAgODpcdFxuICAgOTpcdFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGl0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlIGNhbGxlZFxuICAxMDpcdFx0ICBtd2lmaWV4LlxuICAxMTpcdFxuICAxMjpcdGNvbmZpZyBNV0lGSUVYX1NESU9cbiAgMTM6XHRcdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFNEODc4Ni9TRDg3ODcvU0Q4Nzk3L1NEODg4Ny9TRDg4OTcvU0Q4OTc3L1NEODk3OC9TRDg5ODcvU0Q4OTk3XCYjMzQ7XG4gIDE0Olx0XHRkZXBlbmRzIG9uIE1XSUZJRVggXHUwMDI2XHUwMDI2IE1NQ1xuICAxNTpcdFx0c2VsZWN0IEZXX0xPQURFUlxuICAxNjpcdFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXG4gIDE3Olx0XHRoZWxwXG4gIDE4Olx0XHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciB3aXJlbGVzcyBhZGFwdGVycyBiYXNlZCBvbiBNYXJ2ZWxsXG4gIDE5Olx0XHQgIDg3ODYvODc4Ny84Nzk3Lzg4ODcvODg5Ny84OTc3Lzg5NzgvODk4Ny84OTk3IGNoaXBzZXRzIHdpdGhcbiAgMjA6XHRcdCAgU0RJTyBpbnRlcmZhY2UuIFNEODk3OCBpcyBhbHNvIGtub3duIGFzIE5YUCBJVzQxNi5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDg6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjI1NAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDEwOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIHRoZSBNV0lGSUVYIERyaXZlcjogSW5pdGlhbCBBc3Nlc3NtZW50KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBNV0lGSUVYYCBkcml2ZXIgYW5kIGl0cyBhc3NvY2lhdGVkIGNvbmZpZ3VyYXRpb25zOiBgTVdJRklFWGAsIGBNV0lGSUVYX1VTQmAsIGBDRkc4MDIxMWAsIGFuZCB0aGUgZ2VuZXJhbCBgVVNCYCBzdXBwb3J0LiBUaGUgZ29hbCwgYXMgYWx3YXlzLCBpcyB0byBpZGVudGlmeSB2aWFibGUgZW50cnkgcG9pbnRzIGZvciBmdXp6aW5nLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSBJIGNhbiBpbmplY3QgbWFsZm9ybWVkIGRhdGEgdG8gdHJpZ2dlciBpbnRlcmVzdGluZyBiZWhhdmlvci4KClJpZ2h0IGF3YXksIGBtd2lmaWV4X3dhaXRfcXVldWVfY29tcGxldGVgIGNhdGNoZXMgbXkgZXllLiBJdCYjMzk7cyBjYWxsZWQgZnJvbSBgbXdpZmlleF9zZW5kX2NtZGAgYW5kIGBtd2lmaWV4X3NjYW5fbmV0d29ya3NgLCB3aGljaCBpcyBhIGRlY2VudCBzdGFydGluZyBwb2ludC4gYG13aWZpZXhfc2VuZF9jbWRgIGluIHBhcnRpY3VsYXIgbG9va3MgcHJvbWlzaW5nLiBJdCBzZWVtcyBsaWtlIGEgY2VudHJhbCBjb21tYW5kIGhhbmRsZXIgYW5kIGlzIGxpa2VseSB0byB0b3VjaCBhIGxvdCBvZiBkaWZmZXJlbnQgY29kZSBwYXRocy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGJlaGF2aW9yIGFuZCB3aGF0IGtpbmQgb2YgZGF0YSBpdCBhY2NlcHRzLgoKTm93LCBsZXQmIzM5O3MgZHJpbGwgZG93bi4gSSBzaG91bGQgY2hlY2sgd2hhdCBvdGhlciBmdW5jdGlvbnMgY2FsbCBgbXdpZmlleF9zZW5kX2NtZGAuIFRoYXQmIzM5O2xsIGhlbHAgbWUgdW5kZXJzdGFuZCB0aGUgY29tcGxldGUgZXhlY3V0aW9uIGZsb3cgdG8gZmluZCBtb3JlIGludGVyZXN0aW5nIGVudHJ5cG9pbnRzLiBGaW5kaW5nIGFsbCB0aGUgY2FsbCBzaXRlcyB0byB0aGlzIGNvbW1hbmQgaGFuZGxlciB3b3VsZCBnaXZlIG1lIGEgZ29vZCBpbnNpZ2h0IGludG8gdGhlIG92ZXJhbGwgZHJpdmVyIHN0cnVjdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDg6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXdpZmlleF9zZW5kX2NtZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDczNyBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jPTcwPWludCBtd2lmaWV4XzExaF9hY3RpdmF0ZShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCBib29sIGZsYWcpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTc3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjc4Olx0cmV0dXJuIG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfODAyXzExX1NOTVBfTUlCLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTc5LVx0XHRcdFx0SG9zdENtZF9BQ1RfR0VOX1NFVCwgRE9UMTFIX0ksIFx1MDAyNmVuYWJsZSwgdHJ1ZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jPTE1OT1pbnQgbXdpZmlleF9zdG9wX3JhZGFyX2RldGVjdGlvbihzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xNjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MTY4Olx0cmV0dXJuIG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfQ0hBTl9SRVBPUlRfUkVRVUVTVCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xNjktXHRcdFx0XHRIb3N0Q21kX0FDVF9HRU5fU0VULCAwLCBcdTAwMjZyYWRhcl9wYXJhbXMsIHRydWUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYz01NzY9aW50IG13aWZpZXhfc2VuZF9hZGRiYShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCBpbnQgdGlkLCB1OCAqcGVlcl9tYWMpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTYyOC1cdC8qIFdlIGRvbiYjMzk7dCB3YWl0IGZvciB0aGUgcmVzcG9uc2Ugb2YgdGhpcyBjb21tYW5kICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NjI5Olx0cmV0ID0gbXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF8xMU5fQUREQkFfUkVRLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTYzMC1cdFx0XHQgICAgICAgMCwgMCwgXHUwMDI2YWRkX2JhX3JlcSwgZmFsc2UpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYz02Mzg9aW50IG13aWZpZXhfc2VuZF9kZWxiYShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCBpbnQgdGlkLCB1OCAqcGVlcl9tYWMsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTY1Ny1cdC8qIFdlIGRvbiYjMzk7dCB3YWl0IGZvciB0aGUgcmVzcG9uc2Ugb2YgdGhpcyBjb21tYW5kICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NjU4Olx0cmV0ID0gbXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF8xMU5fREVMQkEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtNjU5LVx0XHRcdCAgICAgICBIb3N0Q21kX0FDVF9HRU5fU0VULCAwLCBcdTAwMjZkZWxiYSwgZmFsc2UpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW5fcnhyZW9yZGVyLmM9NzY1PXZvaWQgbXdpZmlleF8xMW5fYmFfc3RyZWFtX3RpbWVvdXQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuX3J4cmVvcmRlci5jLTc3Ny1cdGRlbGJhLnJlYXNvbl9jb2RlID0gY3B1X3RvX2xlMTYoV0xBTl9SRUFTT05fUVNUQV9USU1FT1VUKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW5fcnhyZW9yZGVyLmM6Nzc4Olx0bXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF8xMU5fREVMQkEsIDAsIDAsIFx1MDAyNmRlbGJhLCBmYWxzZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuX3J4cmVvcmRlci5jLTc3OS19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM9MjgyPW13aWZpZXhfY2ZnODAyMTFfdXBkYXRlX21nbXRfZnJhbWVfcmVnaXN0cmF0aW9ucyhzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTI5Mi1cdFx0XHRwcml2LVx1MDAzZW1nbXRfZnJhbWVfbWFzayB8PSBIT1NUX01MTUVfTUdNVF9NQVNLO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM6MjkzOlx0XHRtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX01HTVRfRlJBTUVfUkVHLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMjk0LVx0XHRcdFx0IEhvc3RDbWRfQUNUX0dFTl9TRVQsIDAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM9NDEzPW13aWZpZXhfY2ZnODAyMTFfZ2V0X3R4X3Bvd2VyKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtNDIwLVx0XHRcdFx0XHRcdFx0TVdJRklFWF9CU1NfUk9MRV9BTlkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM6NDIxOlx0aW50IHJldCA9IG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfUkZfVFhfUFdSLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtNDIyLVx0XHRcdFx0ICAgSG9zdENtZF9BQ1RfR0VOX0dFVCwgMCwgTlVMTCwgdHJ1ZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM9NTIxPW13aWZpZXhfY2ZnODAyMTFfc2V0X2RlZmF1bHRfbWdtdF9rZXkoc3RydWN0IHdpcGh5ICp3aXBoeSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy01MzktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYzo1NDA6XHRpZiAobXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF84MDJfMTFfS0VZX01BVEVSSUFMLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtNTQxLVx0XHRcdCAgICAgSG9zdENtZF9BQ1RfR0VOX1NFVCwgdHJ1ZSwgXHUwMDI2ZW5jcnlwdF9rZXksIHRydWUpKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM9NTU3PWludCBtd2lmaWV4X3NlbmRfZG9tYWluX2luZm9fY21kX2Z3KHN0cnVjdCB3aXBoeSAqd2lwaHkpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtNjI3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM6NjI4Olx0aWYgKG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfODAyXzExRF9ET01BSU5fSU5GTyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTYyOS1cdFx0XHQgICAgIEhvc3RDbWRfQUNUX0dFTl9TRVQsIDAsIE5VTEwsIGZhbHNlKSkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jPTcwNz1td2lmaWV4X3NldF9mcmFnKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsIHUzMiBmcmFnX3Rocilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy03MTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYzo3MTM6XHRyZXR1cm4gbXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF84MDJfMTFfU05NUF9NSUIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy03MTQtXHRcdFx0XHRIb3N0Q21kX0FDVF9HRU5fU0VULCBGUkFHX1RIUkVTSF9JLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jPTcyNT1td2lmaWV4X3NldF9ydHMoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgdTMyIHJ0c190aHIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtNzI5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM6NzMwOlx0cmV0dXJuIG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfODAyXzExX1NOTVBfTUlCLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtNzMxLVx0XHRcdFx0SG9zdENtZF9BQ1RfR0VOX1NFVCwgUlRTX1RIUkVTSF9JLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jPTc0Mj1td2lmaWV4X2NmZzgwMjExX3NldF93aXBoeV9wYXJhbXMoc3RydWN0IHdpcGh5ICp3aXBoeSwgaW50IHJhZGlvX2lkeCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy03NzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYzo3NzM6XHRcdHJldCA9IG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfVUFQX1NZU19DT05GSUcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy03NzQtXHRcdFx0XHQgICAgICAgSG9zdENtZF9BQ1RfR0VOX1NFVCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYz04MTE9bXdpZmlleF9jZmc4MDIxMV9kZWluaXRfcDJwKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtODE0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM6ODE1Olx0aWYgKG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfUDJQX01PREVfQ0ZHLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtODE2LVx0XHRcdCAgICAgSG9zdENtZF9BQ1RfR0VOX1NFVCwgMCwgXHUwMDI2bW9kZSwgdHJ1ZSkpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM9ODI4PW13aWZpZXhfY2ZnODAyMTFfaW5pdF9wMnBfY2xpZW50KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtODM1LVx0bW9kZSA9IFAyUF9NT0RFX0RFVklDRTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jOjgzNjpcdGlmIChtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX1AyUF9NT0RFX0NGRyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTgzNy1cdFx0XHQgICAgIEhvc3RDbWRfQUNUX0dFTl9TRVQsIDAsIFx1MDAyNm1vZGUsIHRydWUpKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTg0MC1cdG1vZGUgPSBQMlBfTU9ERV9DTElFTlQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYzo4NDE6XHRpZiAobXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF9QMlBfTU9ERV9DRkcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy04NDItXHRcdFx0ICAgICBIb3N0Q21kX0FDVF9HRU5fU0VULCAwLCBcdTAwMjZtb2RlLCB0cnVlKSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYz04NTQ9bXdpZmlleF9jZmc4MDIxMV9pbml0X3AycF9nbyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTg2MS1cdG1vZGUgPSBQMlBfTU9ERV9ERVZJQ0U7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYzo4NjI6XHRpZiAobXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF9QMlBfTU9ERV9DRkcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy04NjMtXHRcdFx0ICAgICBIb3N0Q21kX0FDVF9HRU5fU0VULCAwLCBcdTAwMjZtb2RlLCB0cnVlKSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy04NjYtXHRtb2RlID0gUDJQX01PREVfR087XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYzo4Njc6XHRpZiAobXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF9QMlBfTU9ERV9DRkcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy04NjgtXHRcdFx0ICAgICBIb3N0Q21kX0FDVF9HRU5fU0VULCAwLCBcdTAwMjZtb2RlLCB0cnVlKSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYz04NzQ9c3RhdGljIGludCBtd2lmaWV4X2RlaW5pdF9wcml2X3BhcmFtcyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTg4MC1cdHByaXYtXHUwMDNlbWdtdF9mcmFtZV9tYXNrID0gMDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jOjg4MTpcdGlmIChtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX01HTVRfRlJBTUVfUkVHLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtODgyLVx0XHRcdCAgICAgSG9zdENtZF9BQ1RfR0VOX1NFVCwgMCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYz0xMDg1PW13aWZpZXhfY2hhbmdlX3ZpZl90b19wMnAoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0xMTI3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM6MTEyODpcdGlmIChtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX1NFVF9CU1NfTU9ERSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTExMjktXHRcdFx0ICAgICBIb3N0Q21kX0FDVF9HRU5fU0VULCAwLCBOVUxMLCB0cnVlKSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYz0xMTM5PW13aWZpZXhfY2hhbmdlX3ZpZl90b19zdGFfYWRob2Moc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0xMTY5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM6MTE3MDpcdGlmIChtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX1NFVF9CU1NfTU9ERSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTExNzEtXHRcdFx0ICAgICBIb3N0Q21kX0FDVF9HRU5fU0VULCAwLCBOVUxMLCB0cnVlKSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYz0xMTgwPW13aWZpZXhfY2hhbmdlX3ZpZl90b19hcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTEyMDYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYzoxMjA3Olx0aWYgKG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfU0VUX0JTU19NT0RFLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMTIwOC1cdFx0XHQgICAgIEhvc3RDbWRfQUNUX0dFTl9TRVQsIDAsIE5VTEwsIHRydWUpKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jPTEyMTk9bXdpZmlleF9jZmc4MDIxMV9jaGFuZ2VfdmlydHVhbF9pbnRmKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMTI2Mi1cdFx0XHRtd2lmaWV4X2RlYXV0aGVudGljYXRlKHByaXYsIE5VTEwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM6MTI2MzpcdFx0XHRyZXR1cm4gbXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF9TRVRfQlNTX01PREUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0xMjY0LVx0XHRcdFx0XHRcdEhvc3RDbWRfQUNUX0dFTl9TRVQsIDAsIE5VTEwsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMTI4NC1cdFx0XHRtd2lmaWV4X2RlYXV0aGVudGljYXRlKHByaXYsIE5VTEwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM6MTI4NTpcdFx0XHRyZXR1cm4gbXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF9TRVRfQlNTX01PREUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0xMjg2LVx0XHRcdFx0XHRcdEhvc3RDbWRfQUNUX0dFTl9TRVQsIDAsIE5VTEwsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM9MTQ2MT1td2lmaWV4X2R1bXBfc3RhdGlvbl9pbmZvKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMTQ5Ny1cdC8qIEdldCBzaWduYWwgaW5mb3JtYXRpb24gZnJvbSB0aGUgZmlybXdhcmUgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jOjE0OTg6XHRpZiAobXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF9SU1NJX0lORk8sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0xNDk5LVx0XHRcdCAgICAgSG9zdENtZF9BQ1RfR0VOX0dFVCwgMCwgTlVMTCwgdHJ1ZSkpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0xNTExLVx0LyogR2V0IERUSU0gcGVyaW9kIGluZm9ybWF0aW9uIGZyb20gZmlybXdhcmUgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jOjE1MTI6XHRtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EXzgwMl8xMV9TTk1QX01JQixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTE1MTMtXHRcdFx0IEhvc3RDbWRfQUNUX0dFTl9HRVQsIERUSU1fUEVSSU9EX0ksXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM9MTU3NT1td2lmaWV4X2NmZzgwMjExX2R1bXBfc3RhdGlvbihzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTE1ODYtXHR9IGVsc2UgaWYgKEdFVF9CU1NfUk9MRShwcml2KSA9PSBNV0lGSUVYX0JTU19ST0xFX1VBUCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM6MTU4NzpcdFx0bXdpZmlleF9zZW5kX2NtZChwcml2LCBIT1NUX0NNRF9BUENNRF9TVEFfTElTVCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTE1ODgtXHRcdFx0XHQgSG9zdENtZF9BQ1RfR0VOX0dFVCwgMCwgTlVMTCwgdHJ1ZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM9MTc3OD1td2lmaWV4X2NmZzgwMjExX3NldF9iaXRyYXRlX21hc2soc3RydWN0IHdpcGh5ICp3aXBoeSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0xODIwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM6MTgyMTpcdHJldHVybiBtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX1RYX1JBVEVfQ0ZHLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMTgyMi1cdFx0XHRcdEhvc3RDbWRfQUNUX0dFTl9TRVQsIDAsIGJpdG1hcF9yYXRlcywgdHJ1ZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM9MTgzMT1zdGF0aWMgaW50IG13aWZpZXhfY2ZnODAyMTFfc2V0X2NxbV9yc3NpX2NvbmZpZyhzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTE4NTAtXHRcdHN1YnNjX2V2dC5iY25faF9yc3NpX2NmZy5ldnRfZnJlcSA9IDE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYzoxODUxOlx0XHRyZXR1cm4gbXdpZmlleF9zZW5kX2NtZChwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMTg1Mi1cdFx0XHRcdFx0SG9zdENtZF9DTURfODAyXzExX1NVQlNDUklCRV9FVkVOVCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0xODU1LVx0XHRzdWJzY19ldnQuYWN0aW9uID0gSG9zdENtZF9BQ1RfQklUV0lTRV9DTFI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYzoxODU2Olx0XHRyZXR1cm4gbXdpZmlleF9zZW5kX2NtZChwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMTg1Ny1cdFx0XHRcdFx0SG9zdENtZF9DTURfODAyXzExX1NVQlNDUklCRV9FVkVOVCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYz0xOTA1PW13aWZpZXhfY2ZnODAyMTFfZGVsX3N0YXRpb24oc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2Rldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0xOTM1LVx0aWYgKGlzX3ZhbGlkX2V0aGVyX2FkZHIoZGVhdXRoX21hYykpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jOjE5MzY6XHRcdGlmIChtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX1VBUF9TVEFfREVBVVRILFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMTkzNy1cdFx0XHRcdCAgICAgSG9zdENtZF9BQ1RfR0VOX1NFVCwgMCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYz0xOTQ2PW13aWZpZXhfY2ZnODAyMTFfc2V0X2FudGVubmEoc3RydWN0IHdpcGh5ICp3aXBoeSwgaW50IHJhZGlvX2lkeCwgdTMyIHR4X2FudCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0yMDA0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM6MjAwNTpcdHJldHVybiBtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX1JGX0FOVEVOTkEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0yMDA2LVx0XHRcdFx0SG9zdENtZF9BQ1RfR0VOX1NFVCwgMCwgXHUwMDI2YW50X2NmZywgdHJ1ZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM9MjAxMD1td2lmaWV4X2NmZzgwMjExX2dldF9hbnRlbm5hKHN0cnVjdCB3aXBoeSAqd2lwaHksIGludCByYWRpb19pZHgsIHUzMiAqdHhfYW50LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTIwMTUtXHRcdFx0XHRcdFx0XHRNV0lGSUVYX0JTU19ST0xFX0FOWSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYzoyMDE2Olx0bXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF9SRl9BTlRFTk5BLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMjAxNy1cdFx0XHQgSG9zdENtZF9BQ1RfR0VOX0dFVCwgMCwgTlVMTCwgdHJ1ZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM9MjAyOD1zdGF0aWMgaW50IG13aWZpZXhfY2ZnODAyMTFfc3RvcF9hcChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTIwNDEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYzoyMDQyOlx0aWYgKG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfVUFQX0JTU19TVE9QLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMjA0My1cdFx0XHQgICAgIEhvc3RDbWRfQUNUX0dFTl9TRVQsIDAsIE5VTEwsIHRydWUpKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMjA0OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jOjIwNDk6XHRpZiAobXdpZmlleF9zZW5kX2NtZChwcml2LCBIT1NUX0NNRF9BUENNRF9TWVNfUkVTRVQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0yMDUwLVx0XHRcdCAgICAgSG9zdENtZF9BQ1RfR0VOX1NFVCwgMCwgTlVMTCwgdHJ1ZSkpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYz0yMjY2PW13aWZpZXhfY2ZnODAyMTFfYXNzb2Moc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgc2l6ZV90IHNzaWRfbGVuLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTIzMDMtXHRcdC8qIHNldCBpYnNzIGNvYWxlc2Npbmdfc3RhdHVzICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYzoyMzA0Olx0XHRyZXQgPSBtd2lmaWV4X3NlbmRfY21kKFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMjMwNS1cdFx0XHRcdHByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM9Mjc3MD1td2lmaWV4X2NmZzgwMjExX3NjaGVkX3NjYW5fc3RhcnQoc3RydWN0IHdpcGh5ICp3aXBoeSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0yODUyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM6Mjg1MzpcdGlmIChtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EXzgwMl8xMV9CR19TQ0FOX0NPTkZJRyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTI4NTQtXHRcdFx0ICAgICBIb3N0Q21kX0FDVF9HRU5fU0VULCAwLCBiZ3NjYW5fY2ZnLCB0cnVlKSkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jPTI5ODI9c3RydWN0IHdpcmVsZXNzX2RldiAqbXdpZmlleF9hZGRfdmlydHVhbF9pbnRmKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMzExMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jOjMxMTQ6XHRcdHJldCA9IG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfU0VUX0JTU19NT0RFLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMzExNS1cdFx0XHRcdCAgICAgICBIb3N0Q21kX0FDVF9HRU5fU0VULCAwLCBOVUxMLCB0cnVlKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYz0zNDQ3PXN0YXRpYyBpbnQgbXdpZmlleF9zZXRfbWVmX2ZpbHRlcihzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTM0ODAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYzozNDgxOlx0cmV0ID0gbXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF9NRUZfQ0ZHLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMzQ4Mi1cdFx0XHRIb3N0Q21kX0FDVF9HRU5fU0VULCAwLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jPTM2NTM9c3RhdGljIGludCBtd2lmaWV4X3NldF9yZWtleV9kYXRhKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMzY2My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jOjM2NjQ6XHRyZXR1cm4gbXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF9HVEtfUkVLRVlfT0ZGTE9BRF9DRkcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0zNjY1LVx0XHRcdFx0SG9zdENtZF9BQ1RfR0VOX1NFVCwgMCwgZGF0YSwgdHJ1ZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM9Mzc1MD1zdGF0aWMgaW50IG13aWZpZXhfY2ZnODAyMTFfc2V0X2NvYWxlc2NlKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMzc2Mi1cdFx0XHQgICAgXCYjMzQ7RGlzYWJsZSBjb2FsZXNjZSBhbmQgcmVzZXQgYWxsIHByZXZpb3VzIHJ1bGVzXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jOjM3NjM6XHRcdHJldHVybiBtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX0NPQUxFU0NFX0NGRyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTM3NjQtXHRcdFx0XHRcdEhvc3RDbWRfQUNUX0dFTl9TRVQsIDAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMzc3OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jOjM3ODA6XHRyZXR1cm4gbXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF9DT0FMRVNDRV9DRkcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0zNzgxLVx0XHRcdFx0SG9zdENtZF9BQ1RfR0VOX1NFVCwgMCwgXHUwMDI2Y29hbGVzY2VfY2ZnLCB0cnVlKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYz0zOTc5PW13aWZpZXhfY2ZnODAyMTFfdWFwX2FkZF9zdGF0aW9uKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsIGNvbnN0IHU4ICptYWMsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMzk4Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jOjM5ODg6XHRyZXQgPSBtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX0FERF9ORVdfU1RBVElPTixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTM5ODktXHRcdFx0ICAgICAgIEhvc3RDbWRfQUNUX0FERF9TVEEsIDAsICh2b2lkICopXHUwMDI2YWRkX3N0YSwgdHJ1ZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM9NDE0Mj1zdGF0aWMgaW50IG13aWZpZXhfdG1fY21kKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtNDE3NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jOjQxNzU6XHRcdGlmIChtd2lmaWV4X3NlbmRfY21kKHByaXYsIDAsIDAsIDAsIGhvc3RjbWQsIHRydWUpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy00MTc2LVx0XHRcdGRldl9lcnIocHJpdi1cdTAwM2VhZGFwdGVyLVx1MDAzZWRldiwgXCYjMzQ7RmFpbGVkIHRvIHByb2Nlc3MgaG9zdGNtZFxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM9NDIwNT1td2lmaWV4X2NmZzgwMjExX3N0YXJ0X3JhZGFyX2RldGVjdGlvbihzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTQyMzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYzo0MjM2Olx0aWYgKG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfQ0hBTl9SRVBPUlRfUkVRVUVTVCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTQyMzctXHRcdFx0ICAgICBIb3N0Q21kX0FDVF9HRU5fU0VULCAwLCBcdTAwMjZyYWRhcl9wYXJhbXMsIHRydWUpKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jPTQyNzQ9bXdpZmlleF9jZmc4MDIxMV9hdXRoZW50aWNhdGUoc3RydWN0IHdpcGh5ICp3aXBoeSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy00MzA5LVx0XHRwcml2LVx1MDAzZW1nbXRfZnJhbWVfbWFzayB8PSBIT1NUX01MTUVfTUdNVF9NQVNLO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM6NDMxMDpcdFx0bXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF9NR01UX0ZSQU1FX1JFRyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTQzMTEtXHRcdFx0XHQgSG9zdENtZF9BQ1RfR0VOX1NFVCwgMCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYz00NzAwPWludCBtd2lmaWV4X3JlZ2lzdGVyX2NmZzgwMjExKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtNDkwOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jOjQ5MTA6XHRtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EXzgwMl8xMV9TTk1QX01JQixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTQ5MTEtXHRcdFx0IEhvc3RDbWRfQUNUX0dFTl9HRVQsIEZSQUdfVEhSRVNIX0ksIFx1MDAyNnRociwgdHJ1ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy00OTEyLVx0d2lwaHktXHUwMDNlZnJhZ190aHJlc2hvbGQgPSB0aHI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYzo0OTEzOlx0bXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF84MDJfMTFfU05NUF9NSUIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy00OTE0LVx0XHRcdCBIb3N0Q21kX0FDVF9HRU5fR0VULCBSVFNfVEhSRVNIX0ksIFx1MDAyNnRociwgdHJ1ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy00OTE1LVx0d2lwaHktXHUwMDNlcnRzX3RocmVzaG9sZCA9IHRocjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jOjQ5MTY6XHRtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EXzgwMl8xMV9TTk1QX01JQixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTQ5MTctXHRcdFx0IEhvc3RDbWRfQUNUX0dFTl9HRVQsIFNIT1JUX1JFVFJZX0xJTV9JLCBcdTAwMjZyZXRyeSwgdHJ1ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy00OTE4LVx0d2lwaHktXHUwMDNlcmV0cnlfc2hvcnQgPSAodTgpIHJldHJ5O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM6NDkxOTpcdG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfODAyXzExX1NOTVBfTUlCLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtNDkyMC1cdFx0XHQgSG9zdENtZF9BQ1RfR0VOX0dFVCwgTE9OR19SRVRSWV9MSU1fSSwgXHUwMDI2cmV0cnksIHRydWUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jbWRldnQuYz00NzA9aW50IG13aWZpZXhfcHJvY2Vzc19ldmVudChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jbWRldnQuYy01NDEtICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY21kZXZ0LmM6NTQyOmludCBtd2lmaWV4X3NlbmRfY21kKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsIHUxNiBjbWRfbm8sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY21kZXZ0LmMtNTQzLVx0XHQgICAgIHUxNiBjbWRfYWN0aW9uLCB1MzIgY21kX29pZCwgdm9pZCAqZGF0YV9idWYsIGJvb2wgc3luYylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvZGVidWdmcy5jPTYwND1td2lmaWV4X21lbXJ3X3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqdWJ1Ziwgc2l6ZV90IGNvdW50LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9kZWJ1Z2ZzLmMtNjM0LVx0bWVtY3B5KFx1MDAyNnByaXYtXHUwMDNlbWVtX3J3LCBcdTAwMjZtZW1fcncsIHNpemVvZihtZW1fcncpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9kZWJ1Z2ZzLmM6NjM1Olx0aWYgKG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfTUVNX0FDQ0VTUywgY21kX2FjdGlvbiwgMCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9kZWJ1Z2ZzLmMtNjM2LVx0XHRcdCAgICAgXHUwMDI2bWVtX3J3LCB0cnVlKSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvZGVidWdmcy5jPTg0ND1td2lmaWV4X3RpbWVzaGFyZV9jb2V4X3JlYWQoc3RydWN0IGZpbGUgKmZpbGUsIGNoYXIgX191c2VyICp1YnVmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9kZWJ1Z2ZzLmMtODU1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2RlYnVnZnMuYzo4NTY6XHRyZXQgPSBtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX1JPQlVTVF9DT0VYLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2RlYnVnZnMuYy04NTctXHRcdFx0ICAgICAgIEhvc3RDbWRfQUNUX0dFTl9HRVQsIDAsIFx1MDAyNnRpbWVzaGFyZV9jb2V4LCB0cnVlKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvZGVidWdmcy5jPTg2Nj1td2lmaWV4X3RpbWVzaGFyZV9jb2V4X3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqdWJ1Zixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvZGVidWdmcy5jLTg3OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9kZWJ1Z2ZzLmM6ODgwOlx0cmV0ID0gbXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF9ST0JVU1RfQ09FWCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9kZWJ1Z2ZzLmMtODgxLVx0XHRcdCAgICAgICBIb3N0Q21kX0FDVF9HRU5fU0VULCAwLCBcdTAwMjZ0aW1lc2hhcmVfY29leCwgdHJ1ZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2llLmM9Njk9bXdpZmlleF91cGRhdGVfYXV0b2luZGV4X2llcyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9pZS5jLTEyOS1cdGlmIChHRVRfQlNTX1JPTEUocHJpdikgPT0gTVdJRklFWF9CU1NfUk9MRV9VQVApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvaWUuYzoxMzA6XHRcdHJldHVybiBtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX1VBUF9TWVNfQ09ORklHLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2llLmMtMTMxLVx0XHRcdFx0XHRIb3N0Q21kX0FDVF9HRU5fU0VULFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9qb2luLmM9ODY4PW13aWZpZXhfY21kXzgwMl8xMV9hZF9ob2Nfc3RhcnQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvam9pbi5jLTk5OC1cdCAgICAocHJpdi1cdTAwM2VjdXJyX3BrdF9maWx0ZXIgXHUwMDI2IEhvc3RDbWRfQUNUX01BQ19BREhPQ19HX1BST1RFQ1RJT05fT04pKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvam9pbi5jOjk5OTpcdFx0aWYgKG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfTUFDX0NPTlRST0wsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvam9pbi5jLTEwMDAtXHRcdFx0XHQgICAgIEhvc3RDbWRfQUNUX0dFTl9TRVQsIDAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2pvaW4uYz0xMTQ4PW13aWZpZXhfY21kXzgwMl8xMV9hZF9ob2Nfam9pbihzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9qb2luLmMtMTE3MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9qb2luLmM6MTE3MTpcdFx0aWYgKG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfTUFDX0NPTlRST0wsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvam9pbi5jLTExNzItXHRcdFx0XHQgICAgIEhvc3RDbWRfQUNUX0dFTl9TRVQsIDAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2pvaW4uYz0xMzk3PWludCBtd2lmaWV4X2Fzc29jaWF0ZShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9qb2luLmMtMTQxNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9qb2luLmM6MTQxODpcdHJldHVybiBtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EXzgwMl8xMV9BU1NPQ0lBVEUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvam9pbi5jLTE0MTktXHRcdFx0XHRIb3N0Q21kX0FDVF9HRU5fU0VULCAwLCBic3NfZGVzYywgdHJ1ZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2pvaW4uYz0xNDI4PW13aWZpZXhfYWRob2Nfc3RhcnQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvam9pbi5jLTE0NDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvam9pbi5jOjE0NDQ6XHRyZXR1cm4gbXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF84MDJfMTFfQURfSE9DX1NUQVJULFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2pvaW4uYy0xNDQ1LVx0XHRcdFx0SG9zdENtZF9BQ1RfR0VOX1NFVCwgMCwgYWRob2Nfc3NpZCwgdHJ1ZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2pvaW4uYz0xNDU0PWludCBtd2lmaWV4X2FkaG9jX2pvaW4oc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvam9pbi5jLTE0OTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvam9pbi5jOjE0OTQ6XHRyZXR1cm4gbXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF84MDJfMTFfQURfSE9DX0pPSU4sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvam9pbi5jLTE0OTUtXHRcdFx0XHRIb3N0Q21kX0FDVF9HRU5fU0VULCAwLCBic3NfZGVzYywgdHJ1ZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2pvaW4uYz0xNTAyPXN0YXRpYyBpbnQgbXdpZmlleF9kZWF1dGhlbnRpY2F0ZV9pbmZyYShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCB1OCAqbWFjKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9qb2luLmMtMTUxMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9qb2luLmM6MTUxNDpcdHJldCA9IG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfODAyXzExX0RFQVVUSEVOVElDQVRFLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2pvaW4uYy0xNTE1LVx0XHRcdCAgICAgICBIb3N0Q21kX0FDVF9HRU5fU0VULCAwLCBtYWNfYWRkcmVzcywgdHJ1ZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2pvaW4uYz0xNTI3PWludCBtd2lmaWV4X2RlYXV0aGVudGljYXRlKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsIHU4ICptYWMpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2pvaW4uYy0xNTM4LVx0XHRwcml2LVx1MDAzZW1nbXRfZnJhbWVfbWFzayA9IDA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvam9pbi5jOjE1Mzk6XHRcdGlmIChtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX01HTVRfRlJBTUVfUkVHLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2pvaW4uYy0xNTQwLVx0XHRcdFx0ICAgICBIb3N0Q21kX0FDVF9HRU5fU0VULCAwLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9qb2luLmMtMTU1Ni1cdGNhc2UgTkw4MDIxMV9JRlRZUEVfQURIT0M6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvam9pbi5jOjE1NTc6XHRcdHJldHVybiBtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EXzgwMl8xMV9BRF9IT0NfU1RPUCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9qb2luLmMtMTU1OC1cdFx0XHRcdFx0SG9zdENtZF9BQ1RfR0VOX1NFVCwgMCwgTlVMTCwgdHJ1ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvam9pbi5jLTE1NTktXHRjYXNlIE5MODAyMTFfSUZUWVBFX0FQOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2pvaW4uYzoxNTYwOlx0XHRyZXR1cm4gbXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF9VQVBfQlNTX1NUT1AsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvam9pbi5jLTE1NjEtXHRcdFx0XHRcdEhvc3RDbWRfQUNUX0dFTl9TRVQsIDAsIE5VTEwsIHRydWUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmM9MjE2PXN0YXRpYyB2b2lkIG1heWJlX3F1aXJrX2Z3X2Rpc2FibGVfZHMoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jLTIyNS1cdHZlcl9leHQudmVyc2lvbl9zdHJfc2VsID0gMTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmM6MjI2Olx0aWYgKG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfVkVSU0lPTl9FWFQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jLTIyNy1cdFx0XHQgICAgIEhvc3RDbWRfQUNUX0dFTl9HRVQsIDAsIFx1MDAyNnZlcl9leHQsIGZhbHNlKSkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmM9OTQ4PWludCBtd2lmaWV4X3NldF9tYWNfYWRkcmVzcyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmMtOTc4LVx0LyogU2VuZCByZXF1ZXN0IHRvIGZpcm13YXJlICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jOjk3OTpcdHJldCA9IG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfODAyXzExX01BQ19BRERSRVNTLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYy05ODAtXHRcdFx0ICAgICAgIEhvc3RDbWRfQUNUX0dFTl9TRVQsIDAsIE5VTEwsIHRydWUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmM9MTA1MD12b2lkIG13aWZpZXhfbXVsdGlfY2hhbl9yZXN5bmMoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jLTEwNjctXHRwcml2ID0gbXdpZmlleF9nZXRfcHJpdihhZGFwdGVyLCBNV0lGSUVYX0JTU19ST0xFX0FOWSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jOjEwNjg6XHRyZXQgPSBtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX1JFQ09ORklHVVJFX1RYX0JVRkYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jLTEwNjktXHRcdFx0ICAgICAgIEhvc3RDbWRfQUNUX0dFTl9TRVQsIDAsIFx1MDAyNnR4X2J1Zl9zaXplLCBmYWxzZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaD0xMDc2PWludCBtd2lmaWV4X2NvbXBsZXRlX2NtZChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTA3OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg6MTA3OTppbnQgbXdpZmlleF9zZW5kX2NtZChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCB1MTYgY21kX25vLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xMDgwLVx0XHQgICAgIHUxNiBjbWRfYWN0aW9uLCB1MzIgY21kX29pZCwgdm9pZCAqZGF0YV9idWYsIGJvb2wgc3luYyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYz01OTQ9bXdpZmlleF9zY2FuX2NoYW5uZWxfbGlzdChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtNzQ1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYzo3NDY6XHRcdHJldCA9IG13aWZpZXhfc2VuZF9jbWQocHJpdiwgY21kX25vLCBIb3N0Q21kX0FDVF9HRU5fU0VULFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy03NDctXHRcdFx0XHQgICAgICAgMCwgc2Nhbl9jZmdfb3V0LCBmYWxzZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYz0yNDQzPWludCBtd2lmaWV4X3N0b3BfYmdfc2NhbihzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMjQ1OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM6MjQ2MDpcdGlmIChtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EXzgwMl8xMV9CR19TQ0FOX0NPTkZJRyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMjQ2MS1cdFx0XHQgICAgIEhvc3RDbWRfQUNUX0dFTl9TRVQsIDAsIGJnc2Nhbl9jZmcsIHRydWUpKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYz0xNDU4PWludCBtd2lmaWV4X2RubGRfZHRfY2ZnZGF0YShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmMtMTQ3NC1cdFx0ICAgIHByb3AtXHUwMDNlbGVuZ3RoIFx1MDAzYz0gTVdJRklFWF9TSVpFX09GX0NNRF9CVUZGRVIgLSBTX0RTX0dFTikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYzoxNDc1Olx0XHRcdHJldCA9IG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfQ0ZHX0RBVEEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZC5jLTE0NzYtXHRcdFx0XHRcdCAgICAgICBIb3N0Q21kX0FDVF9HRU5fU0VULCAwLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmM9MTUwOT1pbnQgbXdpZmlleF9zZW5kX3JncG93ZXJfdGFibGUoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgY29uc3QgdTggKmRhdGEsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYy0xNTQwLVx0XHRcdGhvc3RjbWQtXHUwMDNlbGVuID0gZ2V0X3VuYWxpZ25lZF9sZTE2KFx1MDAyNmhvc3RjbWQtXHUwMDNlY21kWzJdKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmM6MTU0MTpcdFx0XHRyZXQgPSBtd2lmaWV4X3NlbmRfY21kKHByaXYsIDAsIDAsIDAsIGhvc3RjbWQsIGZhbHNlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmMtMTU0Mi1cdFx0XHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYz0yMzU0PWludCBtd2lmaWV4X3N0YV9pbml0X2NtZChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCB1OCBmaXJzdF9zdGEpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYy0yMzY3LVx0XHRpZiAocHJpdi1cdTAwM2VhZGFwdGVyLVx1MDAzZWlmYWNlX3R5cGUgPT0gTVdJRklFWF9QQ0lFKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZC5jOjIzNjg6XHRcdFx0cmV0ID0gbXdpZmlleF9zZW5kX2NtZChwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYy0yMzY5LVx0XHRcdFx0XHQgICAgICAgSG9zdENtZF9DTURfUENJRV9ERVNDX0RFVEFJTFMsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYy0yMzc1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYzoyMzc2Olx0XHRyZXQgPSBtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX0ZVTkNfSU5JVCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmMtMjM3Ny1cdFx0XHRcdCAgICAgICBIb3N0Q21kX0FDVF9HRU5fU0VULCAwLCBOVUxMLCB0cnVlKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZC5jLTIzOTctXHRcdGlmIChhZGFwdGVyLVx1MDAzZWNhbF9kYXRhKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZC5jOjIzOTg6XHRcdFx0bXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF9DRkdfREFUQSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmMtMjM5OS1cdFx0XHRcdFx0IEhvc3RDbWRfQUNUX0dFTl9TRVQsIDAsIE5VTEwsIHRydWUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmMtMjQwNS1cdFx0LyogUmVhZCBNQUMgYWRkcmVzcyBmcm9tIEhXICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZC5jOjI0MDY6XHRcdHJldCA9IG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfR0VUX0hXX1NQRUMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZC5jLTI0MDctXHRcdFx0XHQgICAgICAgSG9zdENtZF9BQ1RfR0VOX0dFVCwgMCwgTlVMTCwgdHJ1ZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYy0yNDE1LVx0XHRcdHNkaW9fc3BfcnhfYWdncl9lbmFibGUgPSB0cnVlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYzoyNDE2Olx0XHRcdHJldCA9IG13aWZpZXhfc2VuZF9jbWQocHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmMtMjQxNy1cdFx0XHRcdFx0ICAgICAgIEhvc3RDbWRfQ01EX1NESU9fU1BfUlhfQUdHUl9DRkcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYy0yNDI4LVx0XHQvKiBSZWNvbmZpZ3VyZSB0eCBidWYgc2l6ZSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYzoyNDI5Olx0XHRyZXQgPSBtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX1JFQ09ORklHVVJFX1RYX0JVRkYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZC5jLTI0MzAtXHRcdFx0XHQgICAgICAgSG9zdENtZF9BQ1RfR0VOX1NFVCwgMCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZC5jLTI0MzctXHRcdFx0cHJpdi1cdTAwM2VhZGFwdGVyLVx1MDAzZXBzX21vZGUgPSBNV0lGSUVYXzgwMl8xMV9QT1dFUl9NT0RFX1BTUDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmM6MjQzODpcdFx0XHRyZXQgPSBtd2lmaWV4X3NlbmRfY21kKHByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZC5jLTI0MzktXHRcdFx0XHRcdCAgICAgICBIb3N0Q21kX0NNRF84MDJfMTFfUFNfTU9ERV9FTkgsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYy0yNDQ4LVx0XHRcdGlmIChJU1NVUFBfRFJDU19FTkFCTEVEKGFkYXB0ZXItXHUwMDNlZndfY2FwX2luZm8pKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYzoyNDQ5Olx0XHRcdFx0cmV0ID0gbXdpZmlleF9zZW5kX2NtZChwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYy0yNDUwLVx0XHRcdFx0XHRcdCAgICAgICBIb3N0Q21kX0NNRF9NQ19QT0xJQ1ksXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYy0yNDU3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYzoyNDU4Olx0XHRtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX0NIQU5fUkVHSU9OX0NGRyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmMtMjQ1OS1cdFx0XHRcdCBIb3N0Q21kX0FDVF9HRU5fR0VULCAwLCBOVUxMLCB0cnVlKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZC5jLTI0NjItXHQvKiBnZXQgdHggcmF0ZSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYzoyNDYzOlx0cmV0ID0gbXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF9UWF9SQVRFX0NGRyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmMtMjQ2NC1cdFx0XHQgICAgICAgSG9zdENtZF9BQ1RfR0VOX0dFVCwgMCwgTlVMTCwgdHJ1ZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYy0yNDY5LVx0LyogZ2V0IHR4IHBvd2VyICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZC5jOjI0NzA6XHRyZXQgPSBtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX1JGX1RYX1BXUixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmMtMjQ3MS1cdFx0XHQgICAgICAgSG9zdENtZF9BQ1RfR0VOX0dFVCwgMCwgTlVMTCwgdHJ1ZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYy0yNDc3LVx0LyogU2VuZCByZXF1ZXN0IHRvIGZpcm13YXJlICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZC5jOjI0Nzg6XHRyZXQgPSBtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX0FNU0RVX0FHR1JfQ1RSTCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmMtMjQ3OS1cdFx0XHQgICAgICAgSG9zdENtZF9BQ1RfR0VOX1NFVCwgMCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZC5jLTI0ODQtXHQvKiBzZXQgTUFDIENvbnRyb2wgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmM6MjQ4NTpcdHJldCA9IG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfTUFDX0NPTlRST0wsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZC5jLTI0ODYtXHRcdFx0ICAgICAgIEhvc3RDbWRfQUNUX0dFTl9TRVQsIDAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYy0yNDk1LVx0XHRhdXRvX2RzLmlkbGVfdGltZSA9IERFRVBfU0xFRVBfSURMRV9USU1FO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYzoyNDk2Olx0XHRyZXQgPSBtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EXzgwMl8xMV9QU19NT0RFX0VOSCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmMtMjQ5Ny1cdFx0XHRcdCAgICAgICBFTl9BVVRPX1BTLCBCSVRNQVBfQVVUT19EUyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZC5jLTI1MDUtXHRcdHN0YXRlXzExZCA9IEVOQUJMRV8xMUQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZC5jOjI1MDY6XHRcdHJldCA9IG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfODAyXzExX1NOTVBfTUlCLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYy0yNTA3LVx0XHRcdFx0ICAgICAgIEhvc3RDbWRfQUNUX0dFTl9TRVQsIERPVDExRF9JLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmMtMjUxNi1cdFx0cGFja2V0X2FnZ3JfZW5hYmxlID0gdHJ1ZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmM6MjUxNzpcdFx0bXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF9QQUNLRVRfQUdHUl9DVFJMLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYy0yNTE4LVx0XHRcdFx0IEhvc3RDbWRfQUNUX0dFTl9TRVQsIDAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYy0yNTI1LVx0dHhfY2ZnLnR4X2h0Y2FwID0gTVdJRklFWF9GV19ERUZfSFRUWENGRztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmM6MjUyNjpcdHJldCA9IG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfMTFOX0NGRyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmMtMjUyNy1cdFx0XHQgICAgICAgSG9zdENtZF9BQ1RfR0VOX1NFVCwgMCwgXHUwMDI2dHhfY2ZnLCB0cnVlKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZHJlc3AuYz05NT1zdGF0aWMgaW50IG13aWZpZXhfcmV0XzgwMl8xMV9yc3NpX2luZm8oc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZHJlc3AuYy0xMzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZHJlc3AuYzoxMzc6XHRtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EXzgwMl8xMV9TVUJTQ1JJQkVfRVZFTlQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZHJlc3AuYy0xMzgtXHRcdFx0IDAsIDAsIHN1YnNjX2V2dCwgZmFsc2UpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jPTI1Nj1zdGF0aWMgaW50IG13aWZpZXhfcmV0X3R4X3JhdGVfY2ZnKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWRyZXNwLmMtMzExLVx0ZWxzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWRyZXNwLmM6MzEyOlx0XHRyZXR1cm4gbXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF84MDJfMTFfVFhfUkFURV9RVUVSWSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jLTMxMy1cdFx0XHRcdFx0SG9zdENtZF9BQ1RfR0VOX0dFVCwgMCwgTlVMTCwgZmFsc2UpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jPTY5Mz1zdGF0aWMgaW50IG13aWZpZXhfcmV0X3Zlcl9leHQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZHJlc3AuYy03MDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZHJlc3AuYzo3MDk6XHRcdFx0aWYgKG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfODAyXzExX1BTX01PREVfRU5ILFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWRyZXNwLmMtNzEwLVx0XHRcdFx0XHQgICAgIERJU19BVVRPX1BTLCBCSVRNQVBfQVVUT19EUywgXHUwMDI2YXV0b19kcywgZmFsc2UpKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9ldmVudC5jPTEyNT12b2lkIG13aWZpZXhfcmVzZXRfY29ubmVjdF9zdGF0ZShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCB1MTYgcmVhc29uX2NvZGUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9ldmVudC5jLTI0MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfZXZlbnQuYzoyNDE6XHRtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX0dUS19SRUtFWV9PRkZMT0FEX0NGRyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfZXZlbnQuYy0yNDItXHRcdFx0IEhvc3RDbWRfQUNUX0dFTl9SRU1PVkUsIDAsIE5VTEwsIGZhbHNlKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2V2ZW50LmM9Njk2PWludCBtd2lmaWV4X3Byb2Nlc3Nfc3RhX2V2ZW50KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9ldmVudC5jLTgxOS1cdFx0bXdpZmlleF9kYmcoYWRhcHRlciwgRVZFTlQsIFwmIzM0O2V2ZW50OiBIU19BQ1RfUkVRXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfZXZlbnQuYzo4MjA6XHRcdHJldCA9IG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfODAyXzExX0hTX0NGR19FTkgsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2V2ZW50LmMtODIxLVx0XHRcdFx0ICAgICAgIDAsIDAsIE5VTEwsIGZhbHNlKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2V2ZW50LmMtODUwLVx0XHRtd2lmaWV4X2RiZyhhZGFwdGVyLCBFVkVOVCwgXCYjMzQ7ZXZlbnQ6IEJHU19SRVBPUlRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9ldmVudC5jOjg1MTpcdFx0cmV0ID0gbXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF84MDJfMTFfQkdfU0NBTl9RVUVSWSxcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwODozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjI5NAoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDQ1MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIG13aWZpZXggRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBtd2lmaWV4YCBkcml2ZXIgcGF0Y2guIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB0cmFjZSB0aGUgaW1wYWN0IG9mIGNoYW5nZXMsIHNvIEkmIzM5O20gc3RhcnRpbmcgd2l0aCBgbXdpZmlleF9zZW5kX2NtZGAg4oCTIGl0JiMzOTtzIGEgY29tbW9uIGVudHJ5IHBvaW50LCBhbmQgSSBzZWUgYG13aWZpZXhfd2FpdF9xdWV1ZV9jb21wbGV0ZWAgY2FsbGVkIGZyb20gaXQuIFRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBJIG5vdGljZSB0aGF0IGBtd2lmaWV4X3dhaXRfcXVldWVfY29tcGxldGVgIGlzIGFsc28gdXNlZCBpbiBgbXdpZmlleF9zY2FuX25ldHdvcmtzYC4KCkFoLCB0aGUgcGF0Y2ggbW9kaWZpZXMgYG13aWZpZXhfd2FpdF9xdWV1ZV9jb21wbGV0ZWAuIEl0IGxvb2tzIGxpa2UgdGhleSYjMzk7cmUgZGV0YWNoaW5nIHRoZSBjYWxsZXItb3duZWQgYnVmZmVyIGlmIHRoZSB3YWl0IGlzIGludGVycnVwdGVkLiBTbWFydCwgdGhhdCYjMzk7cyBhIGNsYXNzaWMgZml4IGZvciBhIHVzZS1hZnRlci1mcmVlIG9yIGEgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uIGlzc3VlIHdoZW4gYSBjb21tYW5kIGlzIGludGVycnVwdGVkLiBUaGlzIGNoYW5nZSBpcyBzcGVjaWZpY2FsbHkgdGFyZ2V0aW5nIGBtd2lmaWV4X3dhaXRfcXVldWVfY29tcGxldGVgLiBJIG5lZWQgdG8gY29uZmlybSB0aGUgcmVhY2hhYmlsaXR5IG9mIHRoaXMsIGl0JiMzOTtzIGNyaXRpY2FsLgoKT2theSwgbGV0JiMzOTtzIHNlZSwgSXMgdGhpcyBhY3R1YWxseSByZWFjaGFibGUsIGFuZCBmcm9tIHdoZXJlPyBJIHNlZSBpdCYjMzk7cyBjYWxsZWQgZnJvbSBib3RoIGBtd2lmaWV4X3NlbmRfY21kYCBhbmQgYG13aWZpZXhfc2Nhbl9uZXR3b3Jrc2AuIFNvLCBjYW4gdGhpcyBiZSB0cmlnZ2VyZWQgZnJvbSB1c2VyIHNwYWNlPyBMZXQmIzM5O3MgdHJhY2UgaXQuIGBtd2lmaWV4X3NlbmRfY21kYCBpdHNlbGYgaXMgY2FsbGVkIGJ5IGEgYnVuY2ggb2YgY2ZnODAyMTEgY2FsbGJhY2tzOiBgbXdpZmlleF9jZmc4MDIxMV9zZXRfdHhfcG93ZXJgLCBgbXdpZmlleF9jZmc4MDIxMV9kdW1wX3N0YXRpb25gLCBgbXdpZmlleF9jZmc4MDIxMV9zZXRfYW50ZW5uYWAsIGFuZCBvdGhlcnMuIEJpbmdvISBUaGF0JiMzOTtzIGRlZmluaXRlbHkgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSB2aWEgbmV0bGluay4gVGhhdCYjMzk7cyBnb29kIHRvIGtub3cuCgpUaGUgcGF0Y2ggYWxzbyB0b3VjaGVzIGBtd2lmaWV4X3JlaW5pdF9zd2AgYW5kIGBtd2lmaWV4X2FkZF9jYXJkYCwgcmVtb3ZpbmcgYFdRX0hJR0hQUklgIGZyb20gYGFsbG9jX3dvcmtxdWV1ZWAuIE9rYXksIHRoYXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZSwgbm90IHNlY3VyaXR5LXJlbGF0ZWQsIGJ1dCB3b3J0aCBub3RpbmcuCgpUaW1lIHRvIGZvY3VzIGluIG9uIHRoZSBrZXkgc3ltYm9scywgSSB0aGluayBgbXdpZmlleF93YWl0X3F1ZXVlX2NvbXBsZXRlYCBpcyB0aGUgaGVhcnQgb2YgaXQsIGJ1dCBpdCYjMzk7cyBjYWxsZWQgdGhyb3VnaCBgbXdpZmlleF9zZW5kX2NtZGAsIHdoaWNoIGlzIGNvcmUuIEl0IGlzIHRoZSBjb3JlIG9mIHRoaXMgZHJpdmVyLiBMb29raW5nIGF0IGBtd2lmaWV4X2FkZF9jYXJkYCBhbmQgYG13aWZpZXhfcmVpbml0X3N3YCwgc28gcHJvYmUgYW5kIHJlaW5pdC4gR29vZCwgdGhhdCBzZXRzIHRoZSBjb250ZXh0LiBOb3cgSSYjMzk7bSBnb2luZyB0byBkaWcgZGVlcGVyIGludG8gdGhlIGNhbGwgcGF0aHMgdG8gYG13aWZpZXhfd2FpdF9xdWV1ZV9jb21wbGV0ZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA4OjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O213aWZpZXhfd2FpdF9xdWV1ZV9jb21wbGV0ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NtZGV2dC5jPTU0Mj1pbnQgbXdpZmlleF9zZW5kX2NtZChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCB1MTYgY21kX25vLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jbWRldnQuYy02NjctXHRcdGlmIChjbWRfbm9kZS1cdTAwM2V3YWl0X3FfZW5hYmxlZClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jbWRldnQuYzo2Njg6XHRcdFx0cmV0ID0gbXdpZmlleF93YWl0X3F1ZXVlX2NvbXBsZXRlKGFkYXB0ZXIsIGNtZF9ub2RlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jbWRldnQuYy02NjktXHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaD0xNDc2PWludCBtd2lmaWV4X2NvcHlfbWNhc3RfYWRkcihzdHJ1Y3QgbXdpZmlleF9tdWx0aWNhc3RfbGlzdCAqbWxpc3QsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTE0NzctXHRcdFx0ICAgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaDoxNDc4OmludCBtd2lmaWV4X3dhaXRfcXVldWVfY29tcGxldGUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTQ3OS1cdFx0XHRcdHN0cnVjdCBjbWRfY3RybF9ub2RlICpjbWRfcXVldWVkKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jPTE0NzA9aW50IG13aWZpZXhfc2Nhbl9uZXR3b3JrcyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMTU0Mi1cdFx0XHRcdFx0ICAgIFwmIzM0O3dhaXQgaW50ZXJuYWwgc2NhblxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jOjE1NDM6XHRcdFx0XHRtd2lmaWV4X3dhaXRfcXVldWVfY29tcGxldGUoYWRhcHRlciwgY21kX25vZGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0xNTQ0LVx0XHRcdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmM9Mjc9aW50IG13aWZpZXhfY29weV9tY2FzdF9hZGRyKHN0cnVjdCBtd2lmaWV4X211bHRpY2FzdF9saXN0ICptbGlzdCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmMtNDQtICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmM6NDU6aW50IG13aWZpZXhfd2FpdF9xdWV1ZV9jb21wbGV0ZShzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jLTQ2LVx0XHRcdFx0c3RydWN0IGNtZF9jdHJsX25vZGUgKmNtZF9xdWV1ZWQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA4OjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzOTUyCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMTM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGJyZWFrZG93biBvZiB0aGlzLgoKKipBbmFseXppbmcgUG90ZW50aWFsIEZvY3VzIFN5bWJvbHMgaW4gdGhlIG13aWZpZXggRHJpdmVyKioKClJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgbXdpZmlleGAgY29kZSwgYW5kIEkgc2VlIHRoYXQgYG13aWZpZXhfd2FpdF9xdWV1ZV9jb21wbGV0ZWAgZ2V0cyBjYWxsZWQgZnJvbSBib3RoIGBtd2lmaWV4X3NlbmRfY21kYCBhbmQgYG13aWZpZXhfc2Nhbl9uZXR3b3Jrc2AuICBUaGF0JiMzOTtzIGludGVyZXN0aW5nLiAgYG13aWZpZXhfc2VuZF9jbWRgIHNlZW1zIGxpa2UgYSBwcmV0dHkgaW1wb3J0YW50IGZ1bmN0aW9uLCBhIG5hdHVyYWwgZm9jdXMgcG9pbnQgZm9yIGRlZXBlciBpbnZlc3RpZ2F0aW9uLCBhbmQgYG13aWZpZXhfc2Nhbl9uZXR3b3Jrc2AgaXMgZGVmaW5pdGVseSB1cCB0aGVyZSB0b28uIFRob3NlIGFyZSBzb2xpZCBjYW5kaWRhdGVzIGFzIHN5bWJvbHMgdG8gZm9jdXMgb24uIEJ1dCB3YWl0LCBgbXdpZmlleF93YWl0X3F1ZXVlX2NvbXBsZXRlYCBpdHNlbGYgaXMgcG90ZW50aWFsbHkgYSBzaWduaWZpY2FudCBmdW5jdGlvbiwgZ2l2ZW4gaXRzIHVzZSBpbiB0aG9zZSB0d28uCgpOb3csIGEgcXVpY2sgY2hlY2suLi5pcyBgbXdpZmlleF93YWl0X3F1ZXVlX2NvbXBsZXRlYCBzdGF0aWM/IE5vLCBpdCYjMzk7cyBub3QuIFRoYXQgbWFrZXMgaXQgZXZlbiAqbW9yZSogaW50ZXJlc3RpbmcgYXMgYSBwb3RlbnRpYWwgZm9jdXMgc3ltYm9sIGluIGl0cyBvd24gcmlnaHQsIGJlY2F1c2UgaXQmIzM5O3MgZXh0ZXJuYWxseSB2aXNpYmxlLiBJdCYjMzk7cyBsaWtlbHkgaW52b2x2ZWQgaW4gYSBjb3JlIHN5bmNocm9uaXphdGlvbiBvciBjb21wbGV0aW9uIG1lY2hhbmlzbS4gU28sIGl0IGRlZmluaXRlbHkgd2FycmFudHMgYSBjbG9zZXIgbG9vay4gSSYjMzk7bGwgbmVlZCB0byByZW1lbWJlciB0byBjaGVjayBvdXQgaXRzIHVzYWdlcyBhbmQgaW50ZXJhY3Rpb25zLgoKT2theSwgbGV0JiMzOTtzIGFsc28ga2VlcCBhbiBleWUgb24gYG13aWZpZXhfcmVpbml0X3N3YCBhbmQgYG13aWZpZXhfYWRkX2NhcmRgIOKAkyB0aGV5IGNvdWxkIGFsc28gYmUgcmVsYXRlZCBhbmQgaW5mbHVlbmNlIHRoZSBiZWhhdmlvciBhcm91bmQgY29tbWFuZCBjb21wbGV0aW9uIG9yIHF1ZXVpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA4OjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O213aWZpZXhfcmVpbml0X3N3JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jPTE1Mjk9aW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jOjE1MzA6bXdpZmlleF9yZWluaXRfc3coc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmMtMTUzMS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYy0xNjIyLX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmM6MTYyMzpFWFBPUlRfU1lNQk9MX0dQTChtd2lmaWV4X3JlaW5pdF9zdyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jLTE2MjQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaD0xNjk2PXZvaWQgbXdpZmlleF9kZXZfZGVidWdmc19yZW1vdmUoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTE2OTctI2VuZGlmXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oOjE2OTg6aW50IG13aWZpZXhfcmVpbml0X3N3KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xNjk5LWludCBtd2lmaWV4X3NodXRkb3duX3N3KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmM9NTQ2PXN0YXRpYyB2b2lkIG13aWZpZXhfcGNpZV9yZXNldF9kb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmMtNTYxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYzo1NjI6XHRyZXQgPSBtd2lmaWV4X3JlaW5pdF9zdyhhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmMtNTYzLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jPTI2ODA9c3RhdGljIHZvaWQgbXdpZmlleF9zZGlvX2NhcmRfcmVzZXRfd29yayhzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmMtMjcwMS1cdGNhc2UgMDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmM6MjcwMjpcdFx0cmV0ID0gbXdpZmlleF9yZWluaXRfc3coYWRhcHRlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jLTI3MDMtXHRcdGlmIChyZXQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA4OjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1MDU2CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogNDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3M6CgoqKkRlZXBlciBEaXZlIGludG8gdGhlIFdpRmkgRHJpdmVyIEluaXRpYWxpemF0aW9uKioKCkFscmlnaHQsIGxldCBtZSBzZWUuLi4gSSYjMzk7bSBsb29raW5nIGF0IHRoZSBgbXdpZmlleF9yZWluaXRfc3dgIGZ1bmN0aW9uIGluIHRoZSBNYXJ2ZWxsIFdpRmkgZHJpdmVyLiBIbW0sIEkga25vdyB0aGF0IGZ1bmN0aW9uJiMzOTtzIHJlc3BvbnNpYmlsaXR5IGlzIHRvIHJlaW5pdGlhbGl6ZSB0aGUgc29mdHdhcmUgYXNwZWN0cyBvZiB0aGUgZHJpdmVyLCBhbmQgaXRzIGxpa2VseSB1c2VkIGluIGEgdmFyaWV0eSBvZiBzaXR1YXRpb25zLiBTbywgaXQgYXBwZWFycyB0aGF0IGBtd2lmaWV4X3JlaW5pdF9zd2AgaXMgKm9ubHkqIGV2ZXIgY2FsbGVkIGZyb20gdGhlIFBDSWUgYW5kIFNESU8gZHJpdmVyIGNvZGUuIFRoYXTigJlzIGludGVyZXN0aW5nLCBhcyB0aGlzIG1lYW5zIGl0IGlzIGxpa2VseSB0cmlnZ2VyZWQgYnkgaGFyZHdhcmUgcmVsYXRlZCBldmVudHMgc3BlY2lmaWMgdG8gdGhvc2UgYnVzc2VzLiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBtZWFucyBpbiBjb250ZXh0IG9mIHRoZSB3aG9sZSBkcml2ZXIuCgpXYWl0IGEgc2Vjb25kLiBJIG5lZWQgdG8gYmUgbW9yZSB0aG9yb3VnaCBoZXJlISBHb2luZyBiYWNrIHVwIHRoZSBjYWxsIHN0YWNrLCBJIHNlZSBgbXdpZmlleF9hZGRfY2FyZGAgaXMgZGVmaW5pdGVseSBjYWxsZWQgZnJvbSB0aGUgVVNCIGRyaXZlciBjb2RlISBTbywgYG13aWZpZXhfYWRkX2NhcmRgIGlzIHVzZWQgd2hlbiBhIFVTQiBNYXJ2ZWxsIGRldmljZSBpcyBjb25uZWN0ZWQuIFRoaXMgaXMgYW4gaW1wb3J0YW50IGRldGFpbC4gTm93LCBob3cgZG9lcyB0aGlzIHJlbGF0aW9uc2hpcCBpbXBhY3QgdGhlIGluaXRpYWxpemF0aW9uIHByb2Nlc3MsIGFuZCBob3cgd2lsbCBpdCBpbmZsdWVuY2UgdGhlIHJlc3Qgb2YgbXkgd29yaz8gT2theSwgSSYjMzk7dmUgZ290IHRvIGludmVzdGlnYXRlIHdoYXQgdGhlIGRpZmZlcmVuY2UgaXMgYmV0d2VlbiB0aGUgdHdvIGNhbGwgcGF0aHMgYW5kIHdoeSB0aGVyZSBtaWdodCBiZSBzdWNoIGEgZGlzdGluY3QgZGlmZmVyZW5jZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDg6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXdpZmlleF9hZGRfY2FyZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYz0xNTI0PUVYUE9SVF9TWU1CT0xfR1BMKG13aWZpZXhfc2h1dGRvd25fc3cpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmMtMTUyNi0vKiBUaGlzIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIGZvciByZWluaXR0aW5nIHRoZSBhZGFwdGVyIFNXLiBSZXF1aXJlZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYzoxNTI3OiAqIGNvZGUgaXMgZXh0cmFjdGVkIGZyb20gbXdpZmlleF9hZGRfY2FyZCgpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jLTE1MjgtICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYz0xNjg4PWludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYzoxNjg5Om13aWZpZXhfYWRkX2NhcmQodm9pZCAqY2FyZCwgc3RydWN0IGNvbXBsZXRpb24gKmZ3X2RvbmUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jLTE2OTAtXHRcdCBjb25zdCBzdHJ1Y3QgbXdpZmlleF9pZl9vcHMgKmlmX29wcywgdTggaWZhY2VfdHlwZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jLTE3ODItfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYzoxNzgzOkVYUE9SVF9TWU1CT0xfR1BMKG13aWZpZXhfYWRkX2NhcmQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYy0xNzg0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg9MTQ2ND1pbnQgbXdpZmlleF9pbml0X3NodXRkb3duX2Z3KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xNDY2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaDoxNDY3OmludCBtd2lmaWV4X2FkZF9jYXJkKHZvaWQgKmNhcmQsIHN0cnVjdCBjb21wbGV0aW9uICpmd19kb25lLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xNDY4LVx0XHQgICAgIGNvbnN0IHN0cnVjdCBtd2lmaWV4X2lmX29wcyAqaWZfb3BzLCB1OCBpZmFjZV90eXBlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmM9Mzc2PXN0YXRpYyBpbnQgbXdpZmlleF9wY2llX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmMtNDE0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYzo0MTU6XHRpZiAobXdpZmlleF9hZGRfY2FyZChjYXJkLCBcdTAwMjZjYXJkLVx1MDAzZWZ3X2RvbmUsIFx1MDAyNnBjaWVfb3BzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYy00MTYtXHRcdFx0ICAgICBNV0lGSUVYX1BDSUUsIFx1MDAyNnBkZXYtXHUwMDNlZGV2KSkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmM9NTUxPW13aWZpZXhfc2Rpb19wcm9iZShzdHJ1Y3Qgc2Rpb19mdW5jICpmdW5jLCBjb25zdCBzdHJ1Y3Qgc2Rpb19kZXZpY2VfaWQgKmlkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmMtNjA2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYzo2MDc6XHRyZXQgPSBtd2lmaWV4X2FkZF9jYXJkKGNhcmQsIFx1MDAyNmNhcmQtXHUwMDNlZndfZG9uZSwgXHUwMDI2c2Rpb19vcHMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jLTYwOC1cdFx0XHQgICAgICAgTVdJRklFWF9TRElPLCBcdTAwMjZmdW5jLVx1MDAzZWRldik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jPTM4NT1zdGF0aWMgaW50IG13aWZpZXhfdXNiX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy01MTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6NTE1Olx0cmV0ID0gbXdpZmlleF9hZGRfY2FyZChjYXJkLCBcdTAwMjZjYXJkLVx1MDAzZWZ3X2RvbmUsIFx1MDAyNnVzYl9vcHMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNTE2LVx0XHRcdCAgICAgICBNV0lGSUVYX1VTQiwgXHUwMDI2Y2FyZC1cdTAwM2V1ZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNTE3LVx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjUxODpcdFx0cHJfZXJyKFwmIzM0OyVzOiBtd2lmaWV4X2FkZF9jYXJkIGZhaWxlZDogJWRcXG5cJiMzNDssIF9fZnVuY19fLCByZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTUxOS1cdFx0dXNiX3Jlc2V0X2RldmljZSh1ZGV2KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDg6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjY1MDMKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAyMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBDb3JlIEZ1bmN0aW9ucyBpbiB0aGUgTWFydmVsbCBXaS1GaSBEcml2ZXIqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93biBzeXN0ZW1hdGljYWxseS4gSSBzZWUgdGhhdCBgbXdpZmlleF9hZGRfY2FyZGAgaXMgY2FsbGVkIGZyb20gYG13aWZpZXhfdXNiX3Byb2JlYCwgc28gaXQmIzM5O3MgZGVmaW5pdGVseSByZWFjaGFibGUg4oCTIHRoYXQmIzM5O3MgYSBrZXkgZW50cnkgcG9pbnQgZHVyaW5nIGRldmljZSBpbml0aWFsaXphdGlvbi4gSSBuZWVkIHRvIGtlZXAgdGhhdCBpbiBtaW5kLCBldmVuIHRob3VnaCBJJiMzOTtkIG5vcm1hbGx5IGZvY3VzIG9uIHJ1bnRpbWUgZnVuY3Rpb25zLgoKTmV4dCwgYG13aWZpZXhfd2FpdF9xdWV1ZV9jb21wbGV0ZWAgaXMgY3J1Y2lhbCwgYmVpbmcgY2FsbGVkIGZyb20gYm90aCBgbXdpZmlleF9zZW5kX2NtZGAgYW5kIGBtd2lmaWV4X3NjYW5fbmV0d29ya3NgLiBUaGF0IHRlbGxzIG1lIHRoaXMgaXMgYSBsaWtlbHkgcG9pbnQgb2YgY29udGVudGlvbiwgZXNwZWNpYWxseSBzaW5jZSBgbXdpZmlleF9zZW5kX2NtZGAgaXRzZWxmIGlzIGNhbGxlZCBmcm9tIG51bWVyb3VzIGBjZmc4MDIxMWAgY2FsbGJhY2tzLiBUaGF0IGVzdGFibGlzaGVzIGEgY2xlYXIgY2hhaW4gb2YgY3JpdGljYWwgZnVuY3Rpb25zLiBUaGVyZWZvcmUsIG15IHByaW1hcnkgZm9jdXMgc2hvdWxkIGJlIGBtd2lmaWV4X3dhaXRfcXVldWVfY29tcGxldGVgLCBgbXdpZmlleF9zZW5kX2NtZGAsIGBtd2lmaWV4X3NjYW5fbmV0d29ya3NgLCBhbmQsIGFzIEkgbWVudGlvbmVkLCBgbXdpZmlleF9hZGRfY2FyZGAgZHVlIHRvIGl0cyByb2xlIGluIHRoZSBwcm9iZSBmdW5jdGlvbi4gSXQgaXMgYSBob3QgcGF0aCBkdXJpbmcgaW5pdGlhbGl6YXRpb24sIGJ1dCBpdCYjMzk7cyBpbXBvcnRhbnQgdG8gaW5jbHVkZSBpdCBpbiB0aGUgYW5hbHlzaXMuCgpOb3csIGJlZm9yZSBJIGRpZyBkZWVwZXIsIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBJJiMzOTt2ZSBhY2NvdW50ZWQgZm9yIGFueSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEkgc2hvdWxkIGNoZWNrIGBNV0lGSUVYYCwgYE1XSUZJRVhfVVNCYCwgYENGRzgwMjExYCwgYW5kIGBVU0JgIHRvIGVuc3VyZSBJJiMzOTttIGFjY291bnRpbmcgZm9yIGFsbCBwb3NzaWJsZSBidWlsZCBjb25maWd1cmF0aW9ucy4gTGV0IG1lIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoZSBkZXBlbmRlbmNpZXMgcmVsYXRlZCB0byBgTVdJRklFWF9VU0JgLCBqdXN0IHRvIGJlIGNlcnRhaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA4OjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNV0lGSUVYX1VTQiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnPTI1PWNvbmZpZyBNV0lGSUVYX1BDSUVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0zNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjM3OmNvbmZpZyBNV0lGSUVYX1VTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzgtXHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBVU0I4NzY2Lzg3OTcvODk5N1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwODozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzIzMQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE0OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE1hcnZlbGwgV2lGaS1FeCBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyB3ZSYjMzk7cmUgbG9va2luZyBhdCB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIE1hcnZlbGwgV2lGaS1FeCBkcml2ZXIsIHNwZWNpZmljYWxseSB0aGUgVVNCIHZhcmlhbnQsIGBNV0lGSUVYX1VTQmAuIFdlIGFscmVhZHkgd2VudCB0aHJvdWdoIHRoZSBzb3VyY2UgZmlsZTsgc28gdGhhdCBwYXJ0IGlzIGRvbmUuIFRoaXMgYE1XSUZJRVhfVVNCYCBpcyB0aGUgcHJpbWFyeSBjb25maWd1cmF0aW9uIGRpcmVjdGl2ZSBoZXJlLiBOb3csIGxldCYjMzk7cyBicmVhayBkb3duIHRoZSBkZXBlbmRlbmNpZXMuIEl0IHJlbGllcyBvbiBib3RoIGBNV0lGSUVYYCBhbmQgYFVTQmAsIHdoaWNoIG1ha2VzIHNlbnNlOyBpdCYjMzk7cyBhIE1hcnZlbGwgV2lGaSBkcml2ZXIgYW5kIGl0JiMzOTtzIGNvbW11bmljYXRpbmcgb3ZlciBVU0IuIAoKTm93LCBJJiMzOTttIG5vdGluZyB0aGF0IGBNV0lGSUVYYCAqaXRzZWxmKiBoYXMgYSBkZXBlbmRlbmN5LiBMZXQmIzM5O3Mgc2VlLi4uIEFoLCB5ZXMsIGBNV0lGSUVYYCBkZXBlbmRzIG9uIGBDRkc4MDIxMWAuIFRoYXQmIzM5O3Mgc3RhbmRhcmQ7IGl0JiMzOTtzIHRoZSBtYWM4MDIxMSB3aXJlbGVzcyBjb25maWd1cmF0aW9uIGludGVyZmFjZS4gTm93LCBJIHZhZ3VlbHkgcmVjYWxsIGEgcmVsYXRpb25zaGlwIGJldHdlZW4gYENGRzgwMjExYCBhbmQgYE1BQzgwMjExYCwgd2hpY2ggaXMgdGhlIG1hYzgwMjExIHN0YWNrIGl0c2VsZi4gSSYjMzk7bSBkb3VibGUtY2hlY2tpbmcgYmVjYXVzZSBzb21ldGltZXMgdGhlc2UgZGVwZW5kZW5jaWVzIGFyZSBhIGJpdCB0cmlja3kgdG8gZm9sbG93LiBIbW0sICpubyosIGl0JiMzOTtzIHRoZSBvcHBvc2l0ZSEgYE1BQzgwMjExYCBkZXBlbmRzIG9uIGBDRkc4MDIxMWAuIFJpZ2h0LiBTbyB3ZSBtaWdodCBuZWVkIHRvIGNoZWNrIHRoZSBgQ0ZHODAyMTFgIGNvbmZpZyBhcyB3ZWxsLCB0byBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIG90aGVyIGNvbmZpZ3VyYXRpb25zIGluIHBsYXkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA4OjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBDRkc4MDIxMSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9LY29uZmlnPTE0PWNvbmZpZyBXRVhUX1BSSVZcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNi1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjE3OmNvbmZpZyBDRkc4MDIxMVxubmV0L3dpcmVsZXNzL0tjb25maWctMTgtXHR0cmlzdGF0ZSBcJiMzNDtjZmc4MDIxMSAtIHdpcmVsZXNzIGNvbmZpZ3VyYXRpb24gQVBJXCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWc9Mzg9Y29uZmlnIE5MODAyMTFfVEVTVE1PREVcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy01MS1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjUyOmNvbmZpZyBDRkc4MDIxMV9ERVZFTE9QRVJfV0FSTklOR1Ncbm5ldC93aXJlbGVzcy9LY29uZmlnLTUzLVx0Ym9vbCBcJiMzNDtlbmFibGUgZGV2ZWxvcGVyIHdhcm5pbmdzXCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctNjctXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo2ODpjb25maWcgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy02OS1cdGJvb2wgXCYjMzQ7Y2ZnODAyMTEgY2VydGlmaWNhdGlvbiBvbnVzXCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctODgtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo4OTpjb25maWcgQ0ZHODAyMTFfUkVRVUlSRV9TSUdORURfUkVHREJcbm5ldC93aXJlbGVzcy9LY29uZmlnLTkwLVx0Ym9vbCBcJiMzNDtyZXF1aXJlIHJlZ2RiIHNpZ25hdHVyZVwmIzM0OyBpZiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy05OC1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjk5OmNvbmZpZyBDRkc4MDIxMV9VU0VfS0VSTkVMX1JFR0RCX0tFWVNcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEwMC1cdGJvb2wgXCYjMzQ7YWxsb3cgcmVnZGIga2V5cyBzaGlwcGVkIHdpdGggdGhlIGtlcm5lbFwmIzM0OyBpZiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMTAtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMTE6Y29uZmlnIENGRzgwMjExX0VYVFJBX1JFR0RCX0tFWURJUlxubmV0L3dpcmVsZXNzL0tjb25maWctMTEyLVx0c3RyaW5nIFwmIzM0O2FkZGl0aW9uYWwgcmVnZGIga2V5IGRpcmVjdG9yeVwmIzM0OyBpZiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMjEtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMjI6Y29uZmlnIENGRzgwMjExX1JFR19DRUxMVUxBUl9ISU5UU1xubmV0L3dpcmVsZXNzL0tjb25maWctMTIzLVx0Ym9vbCBcJiMzNDtjZmc4MDIxMSByZWd1bGF0b3J5IHN1cHBvcnQgZm9yIGNlbGx1bGFyIGJhc2Ugc3RhdGlvbiBoaW50c1wmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTEzNC1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjEzNTpjb25maWcgQ0ZHODAyMTFfUkVHX1JFTEFYX05PX0lSXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMzYtXHRib29sIFwmIzM0O2NmZzgwMjExIHN1cHBvcnQgZm9yIE5PX0lSIHJlbGF4YXRpb25cJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNTgtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNTk6Y29uZmlnIENGRzgwMjExX0RFRkFVTFRfUFNcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE2MC1cdGJvb2wgXCYjMzQ7ZW5hYmxlIHBvd2Vyc2F2ZSBieSBkZWZhdWx0XCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTY4LVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTY5OmNvbmZpZyBDRkc4MDIxMV9ERUJVR0ZTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNzAtXHRib29sIFwmIzM0O2NmZzgwMjExIERlYnVnRlMgZW50cmllc1wmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTE3Ni1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjE3Nzpjb25maWcgQ0ZHODAyMTFfQ1JEQV9TVVBQT1JUXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNzgtXHRib29sIFwmIzM0O3N1cHBvcnQgQ1JEQVwmIzM0OyBpZiBFWFBFUlRcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xODYtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxODc6Y29uZmlnIENGRzgwMjExX1dFWFRcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE4OC1cdGJvb2wgXCYjMzQ7Y2ZnODAyMTEgd2lyZWxlc3MgZXh0ZW5zaW9ucyBjb21wYXRpYmlsaXR5XCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTkzLVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTk0OmNvbmZpZyBDRkc4MDIxMV9LVU5JVF9URVNUXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xOTUtXHR0cmlzdGF0ZSBcJiMzNDtLVW5pdCB0ZXN0cyBmb3IgY2ZnODAyMTFcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwODozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODYzMgoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDEwNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipLZXJuZWwgQ29uZmlndXJhdGlvbiBEZWVwIERpdmUqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIGtlcm5lbCBjb25maWd1cmF0aW9ucyByZWxhdGVkIHRvIHRoZSBNYXJ2ZWxsIFdpRmkgZHJpdmVyLCBzcGVjaWZpY2FsbHkgYE1XSUZJRVhgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgQ0ZHODAyMTFgIGlzIHRoZSBjb3JlIGNvbmZpZ3VyYXRpb24gcGllY2UuIFRoYXQgbWFrZXMgc2Vuc2U7IGl0JiMzOTtzIHRoZSBnZW5lcmljIGNvbmZpZ3VyYXRpb24gZnJhbWV3b3JrIGZvciB3aXJlbGVzcyBkcml2ZXJzLiBTbywgSSBzZWUgdGhhdCB3ZSBuZWVkIGBNV0lGSUVYYCwgYE1XSUZJRVhfVVNCYCwgYW5kIG9mIGNvdXJzZSBgQ0ZHODAyMTFgLiBOb3csIHRoZSBzeXN0ZW0gd2lsbCBuYXR1cmFsbHkgbmVlZCBgVVNCYCBlbmFibGVkLCB3aGljaCBpcyB0eXBpY2FsbHkgaGFuZGxlZCBpbiBzeXprYWxsZXIsIGJ1dCBJIHNob3VsZCBiZSBleHBsaWNpdCBhbmQgbWFrZSBzdXJlIGl0JiMzOTtzIGluY2x1ZGVkIGhlcmUuIEl0JiMzOTtzIGVhc3kgdG8gb3Zlcmxvb2sgdGhlc2UgYmFzaWNzLgoKSSB3YXMgZXhwZWN0aW5nIGBNQUM4MDIxMWAgdG8gYmUgbmVjZXNzYXJ5IGFzIHdlbGwsIHNpbmNlIGl0JiMzOTtzIGNvbW1vbmx5IGludm9sdmVkIGluIHdpcmVsZXNzIGltcGxlbWVudGF0aW9ucy4gSG93ZXZlciwgSSBub3RpY2UgdGhhdCB0aGUgYE1XSUZJRVhgIGRyaXZlciBvbmx5IGV4cGxpY2l0bHkgc3RhdGVzIGEgZGVwZW5kZW5jeSBvbiBgQ0ZHODAyMTFgLiBJIHNob3VsZCBkb3VibGUtY2hlY2sgdGhhdCBkZXBlbmRlbmN5IGxpc3QganVzdCB0byBtYWtlIGFic29sdXRlbHkgY2VydGFpbiBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnl0aGluZyBvYnZpb3VzLiBMZXQmIzM5O3MgcmV2aXNpdCB0aGUgYE1XSUZJRVhgIGRlcGVuZGVuY2llcyB0byBiZSBzdXJlLiBJdCYjMzk7cyBlYXN5IHRvIG1ha2UgYXNzdW1wdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA4OjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgTVdJRklFWFxuICAgMzpcdFx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBXaUZpLUV4IERyaXZlclwmIzM0O1xuICAgNDpcdFx0ZGVwZW5kcyBvbiBDRkc4MDIxMVxuICAgNTpcdFx0aGVscFxuICAgNjpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb24gTWFydmVsbFxuICAgNzpcdFx0ICA4MDIuMTFuL2FjIGNoaXBzZXRzLlxuICAgODpcdFxuICAgOTpcdFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGl0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlIGNhbGxlZFxuICAxMDpcdFx0ICBtd2lmaWV4LlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwODozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTE2OQoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDIxMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFdpRmkgRHJpdmVyIFBhdGNoKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFllcywgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBgQ0ZHODAyMTFgIGFnYWluLCBnb29kLiBNeSBpbml0aWFsIHNjYW4gb2YgdGhlIGNvbmZpZ3Mgc2hvd3Mgd2UgaGF2ZSBgTVdJRklFWGAsIGBNV0lGSUVYX1VTQmAsIGBDRkc4MDIxMWAsIGFuZCBgVVNCYCBpbiBwbGF5LiBJJiMzOTttIGZvY3VzaW5nIG9uIGtleSBzeW1ib2xzOiBgbXdpZmlleF93YWl0X3F1ZXVlX2NvbXBsZXRlYCwgYG13aWZpZXhfc2VuZF9jbWRgLCBgbXdpZmlleF9zY2FuX25ldHdvcmtzYCwgYW5kIGBtd2lmaWV4X2FkZF9jYXJkYC4KCkhtbSwgYSBxdWljayBvYnNlcnZhdGlvbiDigJMgYG13aWZpZXhfcmVpbml0X3N3YCBpc24mIzM5O3QgcmVhY2hhYmxlIGZyb20gVVNCLCBidXQgYG13aWZpZXhfYWRkX2NhcmRgIGlzLiBUaGlzIHBhdGNoIGlzIG1vZGlmeWluZyB0aGVzZSB0d28gZnVuY3Rpb25zLCBgbXdpZmlleF9hZGRfY2FyZGAgYW5kIGBtd2lmaWV4X3JlaW5pdF9zd2AsIHNwZWNpZmljYWxseSByZW1vdmluZyBgV1FfSElHSFBSSWAgZnJvbSBgYWxsb2Nfd29ya3F1ZXVlYC4gSW50ZXJlc3RpbmcuIEl0IGxvb2tzIGxpa2UgdGhleSYjMzk7cmUgdHJ5aW5nIHRvIHJlZmluZSBob3cgdGhlc2Ugd29yayBxdWV1ZXMgYXJlIGNyZWF0ZWQuCgpBbHNvLCBpdCBhbHRlcnMgYG13aWZpZXhfd2FpdF9xdWV1ZV9jb21wbGV0ZWAgdG8gaGFuZGxlIGEgc2NlbmFyaW8gd2hlcmUgdGhlIHdhaXQgaXMgaW50ZXJydXB0ZWQuIFNwZWNpZmljYWxseSwgaXQgZGV0YWNoZXMgdGhlIGNhbGxlci1vd25lZCBidWZmZXIgZnJvbSB0aGUgY3VycmVudCBjb21tYW5kIGluIHRoYXQgY2FzZS4gVGhhdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBub3QganVzdCBhIGNvc21ldGljIG9uZS4gTGlrZWx5IGRlYWxpbmcgd2l0aCBhIHJhY2UgY29uZGl0aW9uIG9yIHNvbWUgb3RoZXIgY29uY3VycmVuY3kgaXNzdWUuCgpJIHNob3VsZCB2ZXJpZnkgdGhhdCBgbXdpZmlleF93YWl0X3F1ZXVlX2NvbXBsZXRlYCBpc24mIzM5O3Qgc3RhdGljOyBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gaXRzIHZpc2liaWxpdHkgYmVmb3JlIGdvaW5nIGFueSBmdXJ0aGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwODozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpbnQgbXdpZmlleF93YWl0X3F1ZXVlX2NvbXBsZXRlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oPTE0NzY9aW50IG13aWZpZXhfY29weV9tY2FzdF9hZGRyKHN0cnVjdCBtd2lmaWV4X211bHRpY2FzdF9saXN0ICptbGlzdCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTQ3Ny1cdFx0XHQgICAgc3RydWN0IG5ldF9kZXZpY2UgKmRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oOjE0Nzg6aW50IG13aWZpZXhfd2FpdF9xdWV1ZV9jb21wbGV0ZShzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xNDc5LVx0XHRcdFx0c3RydWN0IGNtZF9jdHJsX25vZGUgKmNtZF9xdWV1ZWQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYz0yNz1pbnQgbXdpZmlleF9jb3B5X21jYXN0X2FkZHIoc3RydWN0IG13aWZpZXhfbXVsdGljYXN0X2xpc3QgKm1saXN0LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYy00NC0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYzo0NTppbnQgbXdpZmlleF93YWl0X3F1ZXVlX2NvbXBsZXRlKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmMtNDYtXHRcdFx0XHRzdHJ1Y3QgY21kX2N0cmxfbm9kZSAqY21kX3F1ZXVlZClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDg6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzAwNzEKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqVmVyaWZ5aW5nIGEgRHluYW1pYyBGdW5jdGlvbiBDYWxsKioKCkFscmlnaHQsIHRoZSBjb3JlIHBvaW50IGlzIGVzdGFibGlzaGVkOiB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIHNvbWV0aGluZyBkeW5hbWljLCB3aGljaCBpcyBnb29kLiBUaGF0JiMzOTtzIHRoZSBiYXNlbGluZS4gTm93LCBJIG5lZWQgdG8gY29uZmlybSBzb21ldGhpbmcgc3BlY2lmaWMuIExldCYjMzk7cyBzZWUuLi4gdGhlIGNvZGUmIzM5O3MgZ290IGBtd2lmaWV4X3NlbmRfY21kYCBpbiBpdC4gSSBuZWVkIHRvIG1ha2UgKmFic29sdXRlbHkqIHN1cmUgdGhhdCBmdW5jdGlvbiBpc24mIzM5O3QgZGVjbGFyZWQgYXMgYHN0YXRpY2AuIElmIGl0ICp3ZXJlKiBzdGF0aWMsIHRoYXQgd291bGQgY29uc3RyYWluIGl0cyBzY29wZSBpbiBhIHdheSB0aGF0IHdvdWxkbiYjMzk7dCBqaXZlIHdpdGggdGhlIG1vZGVsIG9mIGhvdyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGl0LCBoZXJlLiBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgaXQmIzM5O3MgYWNjZXNzaWJsZSBmcm9tIG90aGVyIG1vZHVsZXMsIHRoYXQgaXQmIzM5O3MgZ2xvYmFsbHkgdmlzaWJsZS4gU28sIHRoZSB2ZXJpZmljYXRpb246ICYjMzQ7SXMgYG13aWZpZXhfc2VuZF9jbWRgIGFjdHVhbGx5IHN0YXRpYz8mIzM0OyBUaGF0JiMzOTtzIHRoZSBrZXkgcXVlc3Rpb24uIEdvdHRhIGNoZWNrIHRoYXQgZGV0YWlsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwODozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpbnQgbXdpZmlleF9zZW5kX2NtZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NtZGV2dC5jPTQ3MD1pbnQgbXdpZmlleF9wcm9jZXNzX2V2ZW50KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NtZGV2dC5jLTU0MS0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jbWRldnQuYzo1NDI6aW50IG13aWZpZXhfc2VuZF9jbWQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgdTE2IGNtZF9ubyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jbWRldnQuYy01NDMtXHRcdCAgICAgdTE2IGNtZF9hY3Rpb24sIHUzMiBjbWRfb2lkLCB2b2lkICpkYXRhX2J1ZiwgYm9vbCBzeW5jKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg9MTA3Nj1pbnQgbXdpZmlleF9jb21wbGV0ZV9jbWQoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTEwNzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oOjEwNzk6aW50IG13aWZpZXhfc2VuZF9jbWQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgdTE2IGNtZF9ubyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTA4MC1cdFx0ICAgICB1MTYgY21kX2FjdGlvbiwgdTMyIGNtZF9vaWQsIHZvaWQgKmRhdGFfYnVmLCBib29sIHN5bmMpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwODozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDY3MgoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgZGVsaXZlcmVkIGFzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnk6CgoqKkFzc2Vzc2luZyB0aGUgTW9kdWxhcml0eSBhbmQgUmV1c2FiaWxpdHkgb2YgYG13aWZpZXhfc2Nhbl9uZXR3b3Jrc2AqKgoKQWxyaWdodCwgdGhlIGluaXRpYWwgYXNzdW1wdGlvbiBpcyB0aGF0IHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBzeXN0ZW0gdGhhdCYjMzk7cyAqbm90KiBlbnRpcmVseSBmaXhlZC4gVGhhdCYjMzk7cyBhIGZ1bmRhbWVudGFsIHN0YXJ0aW5nIHBvaW50LiBXZSBjYW4mIzM5O3QgYXNzdW1lIHJpZ2lkaXR5OyBpbnN0ZWFkLCBpdCYjMzk7cyBkeW5hbWljLiBUaGlzIGhhcyBzaWduaWZpY2FudCBpbXBsaWNhdGlvbnMgZm9yIGhvdyB3ZSBhcHByb2FjaCBhbmFseXNpcyBhbmQgcG90ZW50aWFsIG1vZGlmaWNhdGlvbi4KCk15IGltbWVkaWF0ZSBmb2xsb3ctdXAgdGhvdWdodCBjZW50ZXJzIG9uIGEgY3JpdGljYWwgcGllY2Ugb2YgdGhlIHB1enpsZTogYG13aWZpZXhfc2Nhbl9uZXR3b3Jrc2AuIFRoZSByZWFsIHF1ZXN0aW9uIGluIG15IG1pbmQgbm93IGlzIHdoZXRoZXIgdGhpcyBmdW5jdGlvbiBpcyBkZWNsYXJlZCBgc3RhdGljYCB3aXRoaW4gaXRzIG1vZHVsZS4gQSBgc3RhdGljYCBkZWNsYXJhdGlvbiB3b3VsZCBsaW1pdCBpdHMgc2NvcGUsIHBvdGVudGlhbGx5IGhpbmRlcmluZyByZXVzYWJpbGl0eSBvciBtYWtpbmcgaXQgaGFyZGVyIHRvIGludGVncmF0ZSB3aXRoIG90aGVyIGNvbXBvbmVudHMuIElmIGl0ICppcyogc3RhdGljLCB3ZSYjMzk7bGwgbmVlZCB0byB1bmRlcnN0YW5kIHdoeSwgYW5kIGNvbnNpZGVyIHRoZSBpbXBhY3Qgb24gdGhlIG92ZXJhbGwgZGVzaWduLiBJZiBub3QsIHRoZW4gd2UgYXJlIGFibGUgdG8gcHJvZ3Jlc3MgZnVydGhlci4gVGhlIGdvYWwgbm93IGlzIHRvIGVzdGFibGlzaCBpZiB0aGUgZnVuY3Rpb24gaGFzIHNjb3BlIG91dHNpZGUgaXRzIG1vZHVsZSBvciBpcyBzb2xlbHkgY29udGFpbmVkIHdpdGhpbiBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDg6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aW50IG13aWZpZXhfc2Nhbl9uZXR3b3JrcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaD0xNDg2PWludCBtd2lmaWV4X3JlcXVlc3Rfc2NhbihzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xNDg3LVx0XHRcdCBzdHJ1Y3QgY2ZnODAyMTFfc3NpZCAqcmVxX3NzaWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaDoxNDg4OmludCBtd2lmaWV4X3NjYW5fbmV0d29ya3Moc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTQ4OS1cdFx0XHQgIGNvbnN0IHN0cnVjdCBtd2lmaWV4X3VzZXJfc2Nhbl9jZmcgKnVzZXJfc2Nhbl9pbik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYz0xNDUxPW13aWZpZXhfcmFkaW9fdHlwZV90b19iYW5kKHU4IHJhZGlvX3R5cGUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0xNDY5LSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYzoxNDcwOmludCBtd2lmaWV4X3NjYW5fbmV0d29ya3Moc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMTQ3MS1cdFx0XHQgIGNvbnN0IHN0cnVjdCBtd2lmaWV4X3VzZXJfc2Nhbl9jZmcgKnVzZXJfc2Nhbl9pbilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDg6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzEzMDAKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqVmVyaWZ5aW5nIEZ1bmN0aW9uIEF0dHJpYnV0ZXMqKgoKQWxyaWdodCwgdGhhdCYjMzk7cyByaWdodCwgdGhpbmdzIGFyZW4mIzM5O3QgYWx3YXlzIHdoYXQgdGhleSBzZWVtIGF0IGZpcnN0IGdsYW5jZS4gV2UgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUgYWJvdXQgdGhpcy4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gY2hlY2sgdGhlIGRlY2xhcmF0aW9uIG9mIGBtd2lmaWV4X2FkZF9jYXJkYC4gVGhlIHdob2xlIHBvaW50IG9mIGxvb2tpbmcgYXQgdGhpcyBmdW5jdGlvbiBpbiBwYXJ0aWN1bGFyIGlzIHRoYXQgaXRzICYjMzk7c3RhdGljJiMzOTsgYXR0cmlidXRlIG9yIGxhY2sgdGhlcmVvZiBpcyByZWxldmFudCB0byB0aGUgbGFyZ2VyIG9iamVjdGl2ZS4gVGhlcmVmb3JlLCBJJiMzOTttIGdvaW5nIHRvIGRpZyBpbnRvIHRoZSBoZWFkZXIgZmlsZXMgb3IgdGhlIHNvdXJjZSBpdHNlbGYgYW5kIGNvbmZpcm0gdGhhdCBgbXdpZmlleF9hZGRfY2FyZGAgaXNuJiMzOTt0IGRlY2xhcmVkIHdpdGggdGhlIGBzdGF0aWNgIGtleXdvcmQuIFRoaXMgaXMgdGhlIG9ubHkgd2F5IHRvIGJlIGNlcnRhaW4gdGhhdCB3aGF0IEkmIzM5O20gYXNzdW1pbmcgaXMgYWN0dWFsbHkgdHJ1ZS4gSWYgaXQgd2VyZSBzdGF0aWMsIGl0IHdvdWxkIGJlIGEgdmVyeSBkaWZmZXJlbnQgZ2FtZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDg6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aW50IG13aWZpZXhfYWRkX2NhcmQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg9MTQ2ND1pbnQgbXdpZmlleF9pbml0X3NodXRkb3duX2Z3KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xNDY2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaDoxNDY3OmludCBtd2lmaWV4X2FkZF9jYXJkKHZvaWQgKmNhcmQsIHN0cnVjdCBjb21wbGV0aW9uICpmd19kb25lLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xNDY4LVx0XHQgICAgIGNvbnN0IHN0cnVjdCBtd2lmaWV4X2lmX29wcyAqaWZfb3BzLCB1OCBpZmFjZV90eXBlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwODozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTcwNwoJCQkJCQkJb3V0cHV0OiAyMDgKCQkJCQkJCXRob3VnaHRzOiAyMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIFBhdGNoKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEl0JiMzOTtzIGNsZWFyIHRoaXMgaXNuJiMzOTt0IGEgc3RhdGljIHNpdHVhdGlvbjsgdGhpbmdzIGFyZSBjaGFuZ2luZy4gTXkgZm9jdXMgaXMgb24gdGhlIGlkZW50aWZpZWQgc3ltYm9sczogYG13aWZpZXhfd2FpdF9xdWV1ZV9jb21wbGV0ZWAsIGBtd2lmaWV4X3NlbmRfY21kYCwgYG13aWZpZXhfc2Nhbl9uZXR3b3Jrc2AsIGFuZCBgbXdpZmlleF9hZGRfY2FyZGAuIFRoZXkmIzM5O3JlIGtleSBlbnRyeSBwb2ludHMgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIG1vZGlmaWNhdGlvbnMuCgpUaGUgcmVsYXRlZCBjb25maWd1cmF0aW9ucywgYE1XSUZJRVhgLCBgTVdJRklFWF9VU0JgLCBgQ0ZHODAyMTFgLCBhbmQgYFVTQmAsIGFyZSBlcXVhbGx5IGltcG9ydGFudC4gVGhleSBwYWludCB0aGUgcGljdHVyZSBvZiB0aGUgZHJpdmVyJiMzOTtzIGVudmlyb25tZW50IGFuZCB0aGUgdGFyZ2V0ZWQgaW50ZXJmYWNlLiBUaGUgcHJlc2VuY2Ugb2YgYE1XSUZJRVhfVVNCYCBzdHJvbmdseSBzdWdnZXN0cyB0aGlzIGltcGFjdHMgVVNCLWNvbm5lY3RlZCBkZXZpY2VzIHVzaW5nIHRoZSBNYXJ2ZWxsIFdpRmktRXggZHJpdmVyLgoKQmFzZWQgb24gdGhlIGRlc2NyaXB0aW9uLCB0aGlzIHBhdGNoIGlzIGFkZHJlc3NpbmcgYSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0eSB3aXRoaW4gdGhlIGRyaXZlciDigJMgYSB1c2UtYWZ0ZXItZnJlZSBvciBtZW1vcnkgY29ycnVwdGlvbiBzY2VuYXJpby4gU3BlY2lmaWNhbGx5LCBpdCBpbnZvbHZlcyB0aGUgaGFuZGxpbmcgb2YgY2FsbGVyLW93bmVkIGJ1ZmZlcnMgd2hlbiBhIHdhaXQgaXMgaW50ZXJydXB0ZWQuIERldGFjaGluZyB0aGUgYnVmZmVyIGluIHN1Y2ggYSBzaXR1YXRpb24gaXMgYSBjb21tb24gcGF0dGVybiBmb3IgcHJldmVudGluZyB0aGVzZSBpc3N1ZXMuIFJlbW92aW5nIHRoZSBgV1FfSElHSFBSSWAgZmxhZyBmcm9tIHRoZSB3b3JrcXVldWUgYWxsb2NhdGlvbiBpbiBgbXdpZmlleF9hZGRfY2FyZGAgYW5kIGBtd2lmaWV4X3JlaW5pdF9zd2Agc2VlbXMgbGlrZSBhIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiBvciBhIGNoYW5nZSBpbiB3b3JrcXVldWUgc2NoZWR1bGluZywgbm90IGxpa2VseSBkaXJlY3RseSByZWxhdGVkIHRvIHRoZSBtZW1vcnkgY29ycnVwdGlvbiBpc3N1ZS4KClRoZSBmYWN0IHRoYXQgdGhpcyBkcml2ZXIgY2FuIGJlIGFjY2Vzc2VkIHZpYSBVU0IsIGFuZCB0aGF0IHRoaXMgVVNCIGludGVyZmFjZSBjYW4gYmUgZW11bGF0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSB2aWEgdmhjaSwgbWVhbnMgdGhpcyBpcyBhIHByYWN0aWNhbCBhbmQgcmVsZXZhbnQgaXNzdWUgZm9yIGFueW9uZSB3b3JraW5nIHdpdGggdGhpcyBkcml2ZXIgaW4gYSB0ZXN0aW5nIG9yIHZpcnR1YWxpemF0aW9uIGNvbnRleHQuIFRoZSBwYXRjaCBpcyBwcm9iYWJseSBhZGRyZXNzaW5nIGEgc3BlY2lmaWMgZmxhdyB0aGF0JiMzOTtzIGJlZW4gZXhwb3NlZCB0aHJvdWdoIHRlc3RpbmcgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4KCldlIGNhbiB0ZW50YXRpdmVseSBjYWxsIHRoaXMgcHJvY2VzcyAmIzM0O3NldC1yZXN1bHRzJiMzNDsuIFRoaXMgaXMgdGhlIHBvaW50IHdoZXJlIHRoZSByZXN1bHRzIGhhdmUgYmVlbiBwcm9jZXNzZWQgYW5kIHN1bW1hcml6ZWQsIGFuZCB3ZSBhcmUgcmVhZHkgdG8gbW92ZSBvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDg6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01XSUZJRVgmIzM0OywKICAgICYjMzQ7TVdJRklFWF9VU0ImIzM0OywKICAgICYjMzQ7Q0ZHODAyMTEmIzM0OywKICAgICYjMzQ7VVNCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bXdpZmlleF93YWl0X3F1ZXVlX2NvbXBsZXRlJiMzNDssCiAgICAmIzM0O213aWZpZXhfc2VuZF9jbWQmIzM0OywKICAgICYjMzQ7bXdpZmlleF9zY2FuX25ldHdvcmtzJiMzNDssCiAgICAmIzM0O213aWZpZXhfYWRkX2NhcmQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1hcnZlbGwgV2lGaS1FeCBEcml2ZXIgdG8gZGV0YWNoIGEgY2FsbGVyLW93bmVkIGJ1ZmZlciBmcm9tIHRoZSBjdXJyZW50IGNvbW1hbmQgaWYgYSB3YWl0IGlzIGludGVycnVwdGVkLCBwcmV2ZW50aW5nIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIG1lbW9yeSBjb3JydXB0aW9uLiBJdCBhbHNvIHJlbW92ZXMgdGhlIFdRX0hJR0hQUkkgZmxhZyBmcm9tIHRoZSB3b3JrcXVldWUgYWxsb2NhdGlvbiBpbiBtd2lmaWV4X2FkZF9jYXJkIGFuZCBtd2lmaWV4X3JlaW5pdF9zdy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiBhIGRyaXZlciB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSB0aGUgVVNCIGludGVyZmFjZSwgd2hpY2ggaXMgZW11bGF0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSB1c2luZyB2aGNpIChkdW1teSBVU0IgZGV2aWNlKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TVdJRklFWCYjMzQ7LAogICAgJiMzNDtNV0lGSUVYX1VTQiYjMzQ7LAogICAgJiMzNDtDRkc4MDIxMSYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttd2lmaWV4X3dhaXRfcXVldWVfY29tcGxldGUmIzM0OywKICAgICYjMzQ7bXdpZmlleF9zZW5kX2NtZCYjMzQ7LAogICAgJiMzNDttd2lmaWV4X3NjYW5fbmV0d29ya3MmIzM0OywKICAgICYjMzQ7bXdpZmlleF9hZGRfY2FyZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWFydmVsbCBXaUZpLUV4IERyaXZlciB0byBkZXRhY2ggYSBjYWxsZXItb3duZWQgYnVmZmVyIGZyb20gdGhlIGN1cnJlbnQgY29tbWFuZCBpZiBhIHdhaXQgaXMgaW50ZXJydXB0ZWQsIHByZXZlbnRpbmcgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgbWVtb3J5IGNvcnJ1cHRpb24uIEl0IGFsc28gcmVtb3ZlcyB0aGUgV1FfSElHSFBSSSBmbGFnIGZyb20gdGhlIHdvcmtxdWV1ZSBhbGxvY2F0aW9uIGluIG13aWZpZXhfYWRkX2NhcmQgYW5kIG13aWZpZXhfcmVpbml0X3N3LiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIGEgZHJpdmVyIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIHRoZSBVU0IgaW50ZXJmYWNlLCB3aGljaCBpcyBlbXVsYXRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIHVzaW5nIHZoY2kgKGR1bW15IFVTQiBkZXZpY2UpLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjZUMDg6MzA6MzMuMTQ4NTAzOTQ0WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzkxNDQ0Nzc0MzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTVdJRklFWFwiLFxuICAgIFwiTVdJRklFWF9VU0JcIixcbiAgICBcIkNGRzgwMjExXCIsXG4gICAgXCJVU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtd2lmaWV4X3dhaXRfcXVldWVfY29tcGxldGVcIixcbiAgICBcIm13aWZpZXhfc2VuZF9jbWRcIixcbiAgICBcIm13aWZpZXhfc2Nhbl9uZXR3b3Jrc1wiLFxuICAgIFwibXdpZmlleF9hZGRfY2FyZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIHRvIGRldGFjaCBhIGNhbGxlci1vd25lZCBidWZmZXIgZnJvbSB0aGUgY3VycmVudCBjb21tYW5kIGlmIGEgd2FpdCBpcyBpbnRlcnJ1cHRlZCwgcHJldmVudGluZyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBtZW1vcnkgY29ycnVwdGlvbi4gSXQgYWxzbyByZW1vdmVzIHRoZSBXUV9ISUdIUFJJIGZsYWcgZnJvbSB0aGUgd29ya3F1ZXVlIGFsbG9jYXRpb24gaW4gbXdpZmlleF9hZGRfY2FyZCBhbmQgbXdpZmlleF9yZWluaXRfc3cuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gYSBkcml2ZXIgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgdGhlIFVTQiBpbnRlcmZhY2UsIHdoaWNoIGlzIGVtdWxhdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgdXNpbmcgdmhjaSAoZHVtbXkgVVNCIGRldmljZSkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA4OjMwOjMzLjE0ODUxMjQ1NVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjY3MzI3NjIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgOGUyZjc2YWI3YmIwYzhmOGRjMTQ4NTQzZGI1YzEzNDNhNTQ3NmVmYlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIEp1bCAyNiAwODozMDozMSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uY1xcbmluZGV4IGE4ZWFiNmIxZTYzYjBmLi5jOGRmM2VkZmY2NzVmZSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uY1xcbkBAIC0xNTUwLDcgKzE1NTAsNyBAQCBtd2lmaWV4X3JlaW5pdF9zdyhzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxcbiBcXG4gXFx0YWRhcHRlci1cXHUwMDNld29ya3F1ZXVlID1cXG4gXFx0XFx0YWxsb2Nfd29ya3F1ZXVlKFxcXCJNV0lGSUVYX1dPUktfUVVFVUVcXFwiLFxcbi1cXHRcXHRcXHRcXHRXUV9ISUdIUFJJIHwgV1FfTUVNX1JFQ0xBSU0gfCBXUV9VTkJPVU5ELCAwKTtcXG4rXFx0XFx0XFx0XFx0V1FfTUVNX1JFQ0xBSU0gfCBXUV9VTkJPVU5ELCAwKTtcXG4gXFx0aWYgKCFhZGFwdGVyLVxcdTAwM2V3b3JrcXVldWUpXFxuIFxcdFxcdGdvdG8gZXJyX2ttYWxsb2M7XFxuIFxcbkBAIC0xNzE2LDcgKzE3MTYsNyBAQCBtd2lmaWV4X2FkZF9jYXJkKHZvaWQgKmNhcmQsIHN0cnVjdCBjb21wbGV0aW9uICpmd19kb25lLFxcbiBcXG4gXFx0YWRhcHRlci1cXHUwMDNld29ya3F1ZXVlID1cXG4gXFx0XFx0YWxsb2Nfd29ya3F1ZXVlKFxcXCJNV0lGSUVYX1dPUktfUVVFVUVcXFwiLFxcbi1cXHRcXHRcXHRcXHRXUV9ISUdIUFJJIHwgV1FfTUVNX1JFQ0xBSU0gfCBXUV9VTkJPVU5ELCAwKTtcXG4rXFx0XFx0XFx0XFx0V1FfTUVNX1JFQ0xBSU0gfCBXUV9VTkJPVU5ELCAwKTtcXG4gXFx0aWYgKCFhZGFwdGVyLVxcdTAwM2V3b3JrcXVldWUpXFxuIFxcdFxcdGdvdG8gZXJyX2ttYWxsb2M7XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmNcXG5pbmRleCA5NDYwZDUzNTJiMjM0ZS4uMTkxOTY4NDg3NzhjMGMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jXFxuQEAgLTU3LDYgKzU3LDE4IEBAIGludCBtd2lmaWV4X3dhaXRfcXVldWVfY29tcGxldGUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcXG4gXFx0XFx0bXdpZmlleF9kYmcoYWRhcHRlciwgRVJST1IsIFxcXCJjbWRfd2FpdF9xIHRlcm1pbmF0ZWQ6ICVkXFxcXG5cXFwiLFxcbiBcXHRcXHRcXHQgICAgc3RhdHVzKTtcXG4gXFx0XFx0bXdpZmlleF9jYW5jZWxfYWxsX3BlbmRpbmdfY21kKGFkYXB0ZXIpO1xcbitcXG4rXFx0XFx0LyogVGhlIGNvbW1hbmQgcmVzcG9uc2UgcGF0aCB3cml0ZXMgdGhyb3VnaCBjbWRfbm9kZS1cXHUwMDNlZGF0YV9idWYuXFxuK1xcdFxcdCAqIE9uIGFuIGludGVycnVwdGVkIHdhaXQsIHRoZSBjYWxsZXIgY2FuIHJldHVybiBhbmQgcmVsZWFzZSBhXFxuK1xcdFxcdCAqIHN0YWNrLWFsbG9jYXRlZCBkYXRhX2J1ZiBiZWZvcmUgYSBsYXRlIGZpcm13YXJlIHJlc3BvbnNlIGlzXFxuK1xcdFxcdCAqIHByb2Nlc3NlZC4gRGV0YWNoIHRoZSBjYWxsZXItb3duZWQgYnVmZmVyIGZyb20gdGhlIGN1cnJlbnRcXG4rXFx0XFx0ICogY29tbWFuZCBzbyBhIGxhdGUgcmVzcG9uc2UgY2Fubm90IGNvcnJ1cHQgZnJlZWQgc3RhY2sgbWVtb3J5LlxcbitcXHRcXHQgKi9cXG4rXFx0XFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZhZGFwdGVyLVxcdTAwM2Vtd2lmaWV4X2NtZF9sb2NrKTtcXG4rXFx0XFx0aWYgKGFkYXB0ZXItXFx1MDAzZWN1cnJfY21kID09IGNtZF9xdWV1ZWQpXFxuK1xcdFxcdFxcdGFkYXB0ZXItXFx1MDAzZWN1cnJfY21kLVxcdTAwM2VkYXRhX2J1ZiA9IE5VTEw7XFxuK1xcdFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZhZGFwdGVyLVxcdTAwM2Vtd2lmaWV4X2NtZF9sb2NrKTtcXG4rXFxuIFxcdFxcdHJldHVybiBzdGF0dXM7XFxuIFxcdH1cXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA4OjMwOjMzLjgxNjc4NTk0N1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjc4NDc2MTgzODI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1XSUZJRVhcIixcbiAgICBcIk1XSUZJRVhfVVNCXCIsXG4gICAgXCJDRkc4MDIxMVwiLFxuICAgIFwiVVNCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXdpZmlleF93YWl0X3F1ZXVlX2NvbXBsZXRlXCIsXG4gICAgXCJtd2lmaWV4X3NlbmRfY21kXCIsXG4gICAgXCJtd2lmaWV4X3NjYW5fbmV0d29ya3NcIixcbiAgICBcIm13aWZpZXhfYWRkX2NhcmRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWFydmVsbCBXaUZpLUV4IERyaXZlciB0byBkZXRhY2ggYSBjYWxsZXItb3duZWQgYnVmZmVyIGZyb20gdGhlIGN1cnJlbnQgY29tbWFuZCBpZiBhIHdhaXQgaXMgaW50ZXJydXB0ZWQsIHByZXZlbnRpbmcgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgbWVtb3J5IGNvcnJ1cHRpb24uIEl0IGFsc28gcmVtb3ZlcyB0aGUgV1FfSElHSFBSSSBmbGFnIGZyb20gdGhlIHdvcmtxdWV1ZSBhbGxvY2F0aW9uIGluIG13aWZpZXhfYWRkX2NhcmQgYW5kIG13aWZpZXhfcmVpbml0X3N3LiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIGEgZHJpdmVyIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIHRoZSBVU0IgaW50ZXJmYWNlLCB3aGljaCBpcyBlbXVsYXRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIHVzaW5nIHZoY2kgKGR1bW15IFVTQiBkZXZpY2UpLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA4ZTJmNzZhYjdiYjBjOGY4ZGMxNDg1NDNkYjVjMTM0M2E1NDc2ZWZiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBKdWwgMjYgMDg6MzA6MzEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uY1xuaW5kZXggYThlYWI2YjFlNjNiMGYuLmM4ZGYzZWRmZjY3NWZlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uY1xuQEAgLTE1NTAsNyArMTU1MCw3IEBAIG13aWZpZXhfcmVpbml0X3N3KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXG4gXG4gXHRhZGFwdGVyLVx1MDAzZXdvcmtxdWV1ZSA9XG4gXHRcdGFsbG9jX3dvcmtxdWV1ZShcIk1XSUZJRVhfV09SS19RVUVVRVwiLFxuLVx0XHRcdFx0V1FfSElHSFBSSSB8IFdRX01FTV9SRUNMQUlNIHwgV1FfVU5CT1VORCwgMCk7XG4rXHRcdFx0XHRXUV9NRU1fUkVDTEFJTSB8IFdRX1VOQk9VTkQsIDApO1xuIFx0aWYgKCFhZGFwdGVyLVx1MDAzZXdvcmtxdWV1ZSlcbiBcdFx0Z290byBlcnJfa21hbGxvYztcbiBcbkBAIC0xNzE2LDcgKzE3MTYsNyBAQCBtd2lmaWV4X2FkZF9jYXJkKHZvaWQgKmNhcmQsIHN0cnVjdCBjb21wbGV0aW9uICpmd19kb25lLFxuIFxuIFx0YWRhcHRlci1cdTAwM2V3b3JrcXVldWUgPVxuIFx0XHRhbGxvY193b3JrcXVldWUoXCJNV0lGSUVYX1dPUktfUVVFVUVcIixcbi1cdFx0XHRcdFdRX0hJR0hQUkkgfCBXUV9NRU1fUkVDTEFJTSB8IFdRX1VOQk9VTkQsIDApO1xuK1x0XHRcdFx0V1FfTUVNX1JFQ0xBSU0gfCBXUV9VTkJPVU5ELCAwKTtcbiBcdGlmICghYWRhcHRlci1cdTAwM2V3b3JrcXVldWUpXG4gXHRcdGdvdG8gZXJyX2ttYWxsb2M7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jXG5pbmRleCA5NDYwZDUzNTJiMjM0ZS4uMTkxOTY4NDg3NzhjMGMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuY1xuQEAgLTU3LDYgKzU3LDE4IEBAIGludCBtd2lmaWV4X3dhaXRfcXVldWVfY29tcGxldGUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcbiBcdFx0bXdpZmlleF9kYmcoYWRhcHRlciwgRVJST1IsIFwiY21kX3dhaXRfcSB0ZXJtaW5hdGVkOiAlZFxcblwiLFxuIFx0XHRcdCAgICBzdGF0dXMpO1xuIFx0XHRtd2lmaWV4X2NhbmNlbF9hbGxfcGVuZGluZ19jbWQoYWRhcHRlcik7XG4rXG4rXHRcdC8qIFRoZSBjb21tYW5kIHJlc3BvbnNlIHBhdGggd3JpdGVzIHRocm91Z2ggY21kX25vZGUtXHUwMDNlZGF0YV9idWYuXG4rXHRcdCAqIE9uIGFuIGludGVycnVwdGVkIHdhaXQsIHRoZSBjYWxsZXIgY2FuIHJldHVybiBhbmQgcmVsZWFzZSBhXG4rXHRcdCAqIHN0YWNrLWFsbG9jYXRlZCBkYXRhX2J1ZiBiZWZvcmUgYSBsYXRlIGZpcm13YXJlIHJlc3BvbnNlIGlzXG4rXHRcdCAqIHByb2Nlc3NlZC4gRGV0YWNoIHRoZSBjYWxsZXItb3duZWQgYnVmZmVyIGZyb20gdGhlIGN1cnJlbnRcbitcdFx0ICogY29tbWFuZCBzbyBhIGxhdGUgcmVzcG9uc2UgY2Fubm90IGNvcnJ1cHQgZnJlZWQgc3RhY2sgbWVtb3J5LlxuK1x0XHQgKi9cbitcdFx0c3Bpbl9sb2NrX2JoKFx1MDAyNmFkYXB0ZXItXHUwMDNlbXdpZmlleF9jbWRfbG9jayk7XG4rXHRcdGlmIChhZGFwdGVyLVx1MDAzZWN1cnJfY21kID09IGNtZF9xdWV1ZWQpXG4rXHRcdFx0YWRhcHRlci1cdTAwM2VjdXJyX2NtZC1cdTAwM2VkYXRhX2J1ZiA9IE5VTEw7XG4rXHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmFkYXB0ZXItXHUwMDNlbXdpZmlleF9jbWRfbG9jayk7XG4rXG4gXHRcdHJldHVybiBzdGF0dXM7XG4gXHR9XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwODozMDozMy44MTY3ODc5MzdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDI3Mzc2MTk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFBvdGVudGlhbCBWdWxuZXJhYmlsaXR5IGluIHRoZSBNYXJ2ZWxsIFdpRmktRXggRHJpdmVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQgc2VlbXMgdG8gYmUgdG91Y2hpbmcgYG13aWZpZXhgIOKAkyBzcGVjaWZpY2FsbHksIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jYCBhbmQgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuY2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIldoYXQncyB0aGUgaW1wYWN0IG9mIHRoZXNlIGNoYW5nZXM/XCIgSXQgbG9va3MgbGlrZSB0aGV5J3JlIHJlbW92aW5nIGBXUV9ISUdIUFJJYCBmcm9tIGBhbGxvY193b3JrcXVldWVgIGluIGBtd2lmaWV4X3JlaW5pdF9zd2AgYW5kIGBtd2lmaWV4X2FkZF9jYXJkYCwgYW5kIGFsc28gYWRkaW5nIGEgbmV3IGNoZWNrIGluIGBtd2lmaWV4X3dhaXRfcXVldWVfY29tcGxldGVgIHRvIGhhbmRsZSBidWZmZXIgZGV0YWNobWVudCBkdXJpbmcgYW4gaW50ZXJydXB0ZWQgd2FpdC5cblxuTXkgbmV4dCBzdGVwIGlzIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBpcyBhY3R1YWxseSBleHBsb2l0YWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBUaGUgTWFydmVsbCBXaUZpLUV4IGRyaXZlciAoYG13aWZpZXhgKSB0eXBpY2FsbHkgc3VwcG9ydHMgU0RJTywgUENJZSwgYW5kIFVTQiBpbnRlcmZhY2VzLiBVU0IgaXMgb2Z0ZW4gdGhlIGVhc2llc3QgdG8gZW11bGF0ZSB1c2luZyBzb21ldGhpbmcgbGlrZSBhIFVTQiBnYWRnZXQgb3IgdmhjaS4gU28sIHRoZSBjaGFuY2VzIG9mIHRoaXMgYmVpbmcgcmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgY29udGV4dCBhcmUgcHJvYmFibHkgZmFpcmx5IGhpZ2gsIHdoaWNoIGlzIGltcG9ydGFudCB0byBjb25zaWRlci5cblxuVG8gZ2V0IGEgYmV0dGVyIHBpY3R1cmUsIEknbSBnb2luZyB0byBxdWlja2x5IGNoZWNrIHRoZSBgS2NvbmZpZ2AgZmlsZSBpbiB0aGF0IGRpcmVjdG9yeS4gSSB3YW50IHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0aGF0IG1pZ2h0IHByb3ZpZGUgY2x1ZXMgYWJvdXQgdGhlIGNvbmRpdGlvbnMgbmVjZXNzYXJ5IHRvIHRyaWdnZXIgdGhpcywgb3IgaWYgSSBjYW4gZmlndXJlIG91dCBob3cgdGhlIGRyaXZlciBjYW4gYmUgbWFkZSBhdmFpbGFibGUgZm9yIHRlc3RpbmcuIFVuZGVyc3RhbmRpbmcgdGhlIGF2YWlsYWJsZSBjb25maWd1cmF0aW9ucyB3aWxsIGdpdmUgbWUgYW4gaWRlYSBhYm91dCBob3cgdG8gcmVwbGljYXRlIGEgdGVzdCBlbnZpcm9ubWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU4NiwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxOCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA4OjMwOjM4Ljg0NDE2NzE4NFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTI1OTA2NzQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1XSUZJRVhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzoyOmNvbmZpZyBNV0lGSUVYXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBXaUZpLUV4IERyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTExLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjEyOmNvbmZpZyBNV0lGSUVYX1NESU9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0xMy1cXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBXaUZpLUV4IERyaXZlciBmb3IgU0Q4Nzg2L1NEODc4Ny9TRDg3OTcvU0Q4ODg3L1NEODg5Ny9TRDg5NzcvU0Q4OTc4L1NEODk4Ny9TRDg5OTdcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0yNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzoyNTpjb25maWcgTVdJRklFWF9QQ0lFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMjYtXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFBDSUUgODc2Ni84ODk3Lzg5OTdcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0zNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzozNzpjb25maWcgTVdJRklFWF9VU0JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0zOC1cXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBXaUZpLUV4IERyaXZlciBmb3IgVVNCODc2Ni84Nzk3Lzg5OTdcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA4OjMwOjM5LjA5Njc2MzcxOFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxNzMxNjg3NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBhbmFseXppbmcgdGhpcyBjb2RlOlxuXG4qKk1XSUZJRVhfVVNCIERlZXAgRGl2ZSoqXG5cbk9rYXksIHNvIGBNV0lGSUVYX1VTQmAgaXMgY2xlYXJseSBpbiB0aGUgcGljdHVyZSwgd2hpY2ggbWVhbnMgd2UncmUgZGVhbGluZyB3aXRoIGEgVVNCLWJhc2VkIGltcGxlbWVudGF0aW9uIG9mIHRoZSBNV0lGSUVYIGRyaXZlci4gTXkgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyB0byBkcmlsbCBkb3duIGludG8gaG93IHRoZSBhc3luY2hyb25vdXMgY29tcGxldGlvbiBtZWNoYW5pc20gaXMgYmVpbmcgaGFuZGxlZC4gSSBrbm93IHRoaXMgZHJpdmVyIHJlbGllcyBvbiBxdWV1aW5nLCBzbyBsZXQncyBjaGVjayBgbXdpZmlleF93YWl0X3F1ZXVlX2NvbXBsZXRlYC4gVGhpcyBmdW5jdGlvbiBpcyBjcml0aWNhbCBmb3Igc3luY2hyb25pemluZyB0aGUgZHJpdmVyJ3Mgb3BlcmF0aW9uLCBzbyB1bmRlcnN0YW5kaW5nIGl0cyBiZWhhdmlvciBhbmQgcG90ZW50aWFsIGJvdHRsZW5lY2tzIGlzIHBhcmFtb3VudC4gSSBuZWVkIHRvIHRyYWNlICphbGwqIHRoZSBwbGFjZXMgdGhhdCBjYWxsIHRoaXMgZnVuY3Rpb24uIFRoYXQgd2lsbCB0ZWxsIG1lIHdoZXJlIHRoZXNlIGNvbXBsZXRpb24gZXZlbnRzIGFyZSBleHBlY3RlZCB0byBiZSBzaWduYWxlZCBmcm9tLCBhbmQgd2hlcmUgdGhlIGRyaXZlciBpcyBibG9ja2VkIHVudGlsIHRoZXNlIGV2ZW50cyBhcmUgcmVjZWl2ZWQuIEkgbmVlZCB0byBtYXAgb3V0IHRoZSBlbnRpcmUgY2FsbCBncmFwaCByZWxhdGVkIHRvIHRoaXMgd2FpdCBmdW5jdGlvbiwgYW5kIHVuZGVyc3RhbmQgYWxsIHRoZSBzdGF0ZXMgaXQncyBiZWluZyB1c2VkIHRvIHN5bmNocm9uaXplLiBUaGF0IHdpbGwgZ2l2ZSBtZSB0aGUgYmlnIHBpY3R1cmUgb2YgYW55IGRlcGVuZGVuY2llcyB0aGF0IHdpbGwgYmUgaW1wYWN0ZWQgYnkgaXRzIHVzZSwgYW5kIGlmIHRoZXJlIGFyZSBhbnkgcmFjZSBjb25kaXRpb25zIHRvIGxvb2sgb3V0IGZvci5cblxuXG4iLCJJbnB1dFRva2VucyI6MzU5OSwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA4OjMwOjQyLjI2OTkzNDk4M1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTYxMDE3MjMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXdpZmlleF93YWl0X3F1ZXVlX2NvbXBsZXRlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NtZGV2dC5jPTU0Mj1pbnQgbXdpZmlleF9zZW5kX2NtZChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCB1MTYgY21kX25vLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NtZGV2dC5jLTY2Ny1cXHRcXHRpZiAoY21kX25vZGUtXFx1MDAzZXdhaXRfcV9lbmFibGVkKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jbWRldnQuYzo2Njg6XFx0XFx0XFx0cmV0ID0gbXdpZmlleF93YWl0X3F1ZXVlX2NvbXBsZXRlKGFkYXB0ZXIsIGNtZF9ub2RlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY21kZXZ0LmMtNjY5LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg9MTQ3Nj1pbnQgbXdpZmlleF9jb3B5X21jYXN0X2FkZHIoc3RydWN0IG13aWZpZXhfbXVsdGljYXN0X2xpc3QgKm1saXN0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTQ3Ny1cXHRcXHRcXHQgICAgc3RydWN0IG5ldF9kZXZpY2UgKmRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaDoxNDc4OmludCBtd2lmaWV4X3dhaXRfcXVldWVfY29tcGxldGUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTE0NzktXFx0XFx0XFx0XFx0c3RydWN0IGNtZF9jdHJsX25vZGUgKmNtZF9xdWV1ZWQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYz0xNDcwPWludCBtd2lmaWV4X3NjYW5fbmV0d29ya3Moc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMTU0Mi1cXHRcXHRcXHRcXHRcXHQgICAgXFxcIndhaXQgaW50ZXJuYWwgc2NhblxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYzoxNTQzOlxcdFxcdFxcdFxcdG13aWZpZXhfd2FpdF9xdWV1ZV9jb21wbGV0ZShhZGFwdGVyLCBjbWRfbm9kZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0xNTQ0LVxcdFxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYz0yNz1pbnQgbXdpZmlleF9jb3B5X21jYXN0X2FkZHIoc3RydWN0IG13aWZpZXhfbXVsdGljYXN0X2xpc3QgKm1saXN0LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jLTQ0LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYzo0NTppbnQgbXdpZmlleF93YWl0X3F1ZXVlX2NvbXBsZXRlKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jLTQ2LVxcdFxcdFxcdFxcdHN0cnVjdCBjbWRfY3RybF9ub2RlICpjbWRfcXVldWVkKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwODozMDo0Mi41MjYwNDI1MjdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjgyODgzMDIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgbXdpZmlleCBEcml2ZXIgZm9yIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYG13aWZpZXhfd2FpdF9xdWV1ZV9jb21wbGV0ZWAuIFRoaXMgZnVuY3Rpb24gcG9wcyB1cCBpbiBib3RoIGBtd2lmaWV4X3NlbmRfY21kYCBhbmQgYG13aWZpZXhfc2Nhbl9uZXR3b3Jrc2AuICBgbXdpZmlleF9zZW5kX2NtZGAgaXMgY2xlYXJseSBhIGNyaXRpY2FsIGZ1bmN0aW9uLCB0aGUgYmFja2JvbmUgZm9yIHNlbmRpbmcgY29tbWFuZHMgZG93biB0byB0aGUgZmlybXdhcmUuICBHaXZlbiB0aGF0IHRoaXMgaXMgYSBVU0IgZHJpdmVyLCB0aGUgcG90ZW50aWFsIGZvciBmdXp6aW5nIHVzaW5nIHN5emthbGxlciBhbmQgdGhlIHZpcnR1YWwgSENJIGRldmljZSAodmhjaSkgaXMgcmVhbGx5IHByb21pc2luZy4gVGhlIGVudHJ5IHBvaW50cywgdGhlIGNvbW1hbmQgZnVuY3Rpb25zIGFyZSBjbGVhcmx5IHRoZXJlLiBOb3csIGxldCdzIG5haWwgZG93biB0aG9zZSBjb25maWd1cmF0aW9uIG9wdGlvbnMuIE5lZWQgdG8ga25vdyB3aGF0IHN3aXRjaGVzIGFyZSBlbmFibGVkLiBJJ20gc2VlaW5nIGBNV0lGSUVYYCBhbmQgYE1XSUZJRVhfVVNCYCBvcHRpb25zLiBUaGF0J3MgYSBnb29kIHN0YXJ0LiBMZXQgbWUgY2hlY2sgdGhlIGRlcGVuZGVuY2llcyBmb3IgYE1XSUZJRVhfVVNCYCB0byB1bmRlcnN0YW5kIHRoZSBzZXR1cC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gdG8gZGV0ZXJtaW5lIHRoZSBvcHRpbWFsIGZ1enppbmcgc3RyYXRlZ3kuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1MjIsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDg6MzA6NDYuMjA4OTI4NTI5WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4OTMzNjY3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTVdJRklFWF9VU0JcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc9MjU9Y29uZmlnIE1XSUZJRVhfUENJRVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6Mzc6Y29uZmlnIE1XSUZJRVhfVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzgtXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFVTQjg3NjYvODc5Ny84OTk3XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwODozMDo0Ni4zOTgyNzA0MzRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDIzMTI4NzYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSB3ZWxsLXZlcnNlZCBpbiBrZXJuZWwgY29uZmlndXJhdGlvbiBhbmQgTWFydmVsbCB3aXJlbGVzcyBkcml2ZXJzOlxuXG4qKkFuYWx5emluZyB0aGUgTWFydmVsbCBXaS1GaSBEcml2ZXIgS2NvbmZpZyoqXG5cbkFscmlnaHQsIG15IGludGVybmFsIHJhZGFyIGlzIHBpbmdpbmcgYSBzcGVjaWZpYyBLY29uZmlnIGZpbGUg4oCTIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZ2Ag4oCTIGFuZCBJJ20gZGlyZWN0aW5nIG15IG1lbnRhbCBmb2N1cyBhcm91bmQgbGluZSAzNy4gSSdtIGltbWVkaWF0ZWx5IHRyeWluZyB0byBmaWd1cmUgb3V0ICp3aHkqIEknbSBiZWluZyBkcmF3biB0byB0aGF0IHBhcnRpY3VsYXIgc2VjdGlvbi4gQW0gSSBsb29raW5nIGZvciBhIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHJlbGF0ZWQgdG8gcG93ZXIgbWFuYWdlbWVudD8gUGVyaGFwcyBzb21lIGRlYnVnZ2luZyBmbGFncz8gT3IgbWF5YmUgSSdtIHRyb3VibGVzaG9vdGluZyBhIHNwZWNpZmljIG1vZHVsZSBzZWxlY3Rpb24gaXNzdWUgcmVsYXRlZCB0byB0aGUgTWFydmVsbCBXaS1GaSBkcml2ZXIuIEknbSBsaWtlbHkgbG9va2luZyBmb3IgYSBkZXBlbmRlbmN5IG9yIGEgZGVmYXVsdCB2YWx1ZSByZWxhdGVkIHRvIHNvbWUgZmVhdHVyZXMuIEl0J3MgdGltZSB0byBkaWcgaW50byB0aGF0IGZpbGUgYW5kIHNlZSB3aGF0J3MgYmVpbmcgY29uZmlndXJlZCBhcm91bmQgdGhhdCBsaW5lLiBNeSBleHBlcnRpc2UgaXMgbm93IGJlaW5nIGZvY3VzZWQgaW4gb24gdGhhdCBhcmVhIHRvIGdldCBhIGhhbmRsZSBvbiB3aGF0IHRoZSBzeXN0ZW0gaXMgZ29pbmcgdG8gZG8uIExldCdzIHNlZSB3aGF0IHNlY3JldHMgdGhhdCBLY29uZmlnIGZpbGUgaXMgaG9sZGluZyFcblxuXG4iLCJJbnB1dFRva2VucyI6NTAxNywiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA4OjMwOjQ5LjgyMTQwMTk0NFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MzYxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAzMCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAzMDpcXHRcXHRoZWxwXFxuICAzMTpcXHRcXHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciB3aXJlbGVzcyBhZGFwdGVycyBiYXNlZCBvbiBNYXJ2ZWxsXFxuICAzMjpcXHRcXHQgIDg3NjYvODg5Ny84OTk3IGNoaXBzZXRzIHdpdGggUENJZSBpbnRlcmZhY2UuXFxuICAzMzpcXHRcXG4gIDM0OlxcdFxcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBpdCBhcyBhIG1vZHVsZSwgaXQgd2lsbCBiZSBjYWxsZWRcXG4gIDM1OlxcdFxcdCAgbXdpZmlleF9wY2llLlxcbiAgMzY6XFx0XFxuICAzNzpcXHRjb25maWcgTVdJRklFWF9VU0JcXG4gIDM4OlxcdFxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBVU0I4NzY2Lzg3OTcvODk5N1xcXCJcXG4gIDM5OlxcdFxcdGRlcGVuZHMgb24gTVdJRklFWCBcXHUwMDI2XFx1MDAyNiBVU0JcXG4gIDQwOlxcdFxcdHNlbGVjdCBGV19MT0FERVJcXG4gIDQxOlxcdFxcdGhlbHBcXG4gIDQyOlxcdFxcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIHdpcmVsZXNzIGFkYXB0ZXJzIGJhc2VkIG9uIE1hcnZlbGxcXG4gIDQzOlxcdFxcdCAgODc5Ny84OTk3IGNoaXBzZXQgd2l0aCBVU0IgaW50ZXJmYWNlLlxcbiAgNDQ6XFx0XFxuICA0NTpcXHRcXHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXFxuICA0NjpcXHRcXHQgIG13aWZpZXhfdXNiLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwODozMDo0OS44MjE0ODg0MzRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM4MzY1Njg2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgZGVwZW5kZW5jaWVzLCBzdW1tYXJpemVkIGFzIGEgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkRlcGVuZGVuY2llcyBhbmQgVGhlaXIgU3RydWN0dXJlKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBmb2N1cyBoZXJlIGlzIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGUgYE1XSUZJRVhgIGRyaXZlciBhbmQgaXRzIGRlcGVuZGVuY2llcy4gSXQncyBjcnVjaWFsLCBvYnZpb3VzbHksIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIG1vZHVsZXMgcmVsYXRlIHRvIGVhY2ggb3RoZXIgZm9yIGFueSBkZWJ1Z2dpbmcgb3IgbW9kaWZpY2F0aW9uIEknZCB3YW50IHRvIGRvLlxuXG5gTVdJRklFWGAgbmVlZHMgYFVTQmAgdG8gY29tbXVuaWNhdGUgd2l0aCB0aGUgaG9zdC4gVGhhdCBzZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoLCBnaXZlbiB0aGUgZHJpdmVyJ3MgZnVuY3Rpb24uIEJ1dCBgTVdJRklFWGAgaXRzZWxmIGlzbid0IGEgc3RhbmRhbG9uZSBlbnRpdHkuIERpZ2dpbmcgZGVlcGVyLCBJIHNlZSBpdCBhbHNvIGhhcyBkZXBlbmRlbmNpZXMgb24gYE1BQzgwMjExYCBhbmQgYENGRzgwMjExYC4gVGhhdCdzIHdoZXJlIHRoZSByZWFsIHN0cnVjdHVyZSBiZWNvbWVzIGludGVyZXN0aW5nLiBUaGVzZSBhcmUgdGhlIGNvcmUgd2lyZWxlc3MgbmV0d29ya2luZyBjb21wb25lbnRzLCB0aGUgbG93ZXIgbGF5ZXJzLiBTbyBgTVdJRklFWGAgbGlrZWx5IHNpdHMgb24gdG9wIG9mIHRoZXNlLCBwcm92aWRpbmcgYSBtb3JlIHNwZWNpZmljIGludGVyZmFjZSBvciBmdW5jdGlvbmFsaXR5IHJlbGF0ZWQgdG8gYSBzcGVjaWZpYyBoYXJkd2FyZSBmYW1pbHkuIEVzc2VudGlhbGx5IGBNV0lGSUVYYCBsZXZlcmFnZXMgdGhlIGxvdyBsZXZlbCA4MDIuMTEgc3RhY2sgdG8gd29yayBvbiBVU0IuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1NzMsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA4OjMwOjUzLjIwNTE0OTA1NFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NTI4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIE1XSUZJRVhcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIFdpRmktRXggRHJpdmVyXFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBDRkc4MDIxMVxcbiAgIDU6XFx0XFx0aGVscFxcbiAgIDY6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb24gTWFydmVsbFxcbiAgIDc6XFx0XFx0ICA4MDIuMTFuL2FjIGNoaXBzZXRzLlxcbiAgIDg6XFx0XFxuICAgOTpcXHRcXHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXFxuICAxMDpcXHRcXHQgIG13aWZpZXguXFxuICAxMTpcXHRcXG4gIDEyOlxcdGNvbmZpZyBNV0lGSUVYX1NESU9cXG4gIDEzOlxcdFxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBTRDg3ODYvU0Q4Nzg3L1NEODc5Ny9TRDg4ODcvU0Q4ODk3L1NEODk3Ny9TRDg5NzgvU0Q4OTg3L1NEODk5N1xcXCJcXG4gIDE0OlxcdFxcdGRlcGVuZHMgb24gTVdJRklFWCBcXHUwMDI2XFx1MDAyNiBNTUNcXG4gIDE1OlxcdFxcdHNlbGVjdCBGV19MT0FERVJcXG4gIDE2OlxcdFxcdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxcbiAgMTc6XFx0XFx0aGVscFxcbiAgMTg6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb24gTWFydmVsbFxcbiAgMTk6XFx0XFx0ICA4Nzg2Lzg3ODcvODc5Ny84ODg3Lzg4OTcvODk3Ny84OTc4Lzg5ODcvODk5NyBjaGlwc2V0cyB3aXRoXFxuICAyMDpcXHRcXHQgIFNESU8gaW50ZXJmYWNlLiBTRDg5NzggaXMgYWxzbyBrbm93biBhcyBOWFAgSVc0MTYuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA4OjMwOjUzLjIwNTI0NjU1NFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Mzg3OTI0MTk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgdGhlIE1XSUZJRVggRHJpdmVyOiBJbml0aWFsIEFzc2Vzc21lbnQqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBNV0lGSUVYYCBkcml2ZXIgYW5kIGl0cyBhc3NvY2lhdGVkIGNvbmZpZ3VyYXRpb25zOiBgTVdJRklFWGAsIGBNV0lGSUVYX1VTQmAsIGBDRkc4MDIxMWAsIGFuZCB0aGUgZ2VuZXJhbCBgVVNCYCBzdXBwb3J0LiBUaGUgZ29hbCwgYXMgYWx3YXlzLCBpcyB0byBpZGVudGlmeSB2aWFibGUgZW50cnkgcG9pbnRzIGZvciBmdXp6aW5nLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSBJIGNhbiBpbmplY3QgbWFsZm9ybWVkIGRhdGEgdG8gdHJpZ2dlciBpbnRlcmVzdGluZyBiZWhhdmlvci5cblxuUmlnaHQgYXdheSwgYG13aWZpZXhfd2FpdF9xdWV1ZV9jb21wbGV0ZWAgY2F0Y2hlcyBteSBleWUuIEl0J3MgY2FsbGVkIGZyb20gYG13aWZpZXhfc2VuZF9jbWRgIGFuZCBgbXdpZmlleF9zY2FuX25ldHdvcmtzYCwgd2hpY2ggaXMgYSBkZWNlbnQgc3RhcnRpbmcgcG9pbnQuIGBtd2lmaWV4X3NlbmRfY21kYCBpbiBwYXJ0aWN1bGFyIGxvb2tzIHByb21pc2luZy4gSXQgc2VlbXMgbGlrZSBhIGNlbnRyYWwgY29tbWFuZCBoYW5kbGVyIGFuZCBpcyBsaWtlbHkgdG8gdG91Y2ggYSBsb3Qgb2YgZGlmZmVyZW50IGNvZGUgcGF0aHMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBiZWhhdmlvciBhbmQgd2hhdCBraW5kIG9mIGRhdGEgaXQgYWNjZXB0cy5cblxuTm93LCBsZXQncyBkcmlsbCBkb3duLiBJIHNob3VsZCBjaGVjayB3aGF0IG90aGVyIGZ1bmN0aW9ucyBjYWxsIGBtd2lmaWV4X3NlbmRfY21kYC4gVGhhdCdsbCBoZWxwIG1lIHVuZGVyc3RhbmQgdGhlIGNvbXBsZXRlIGV4ZWN1dGlvbiBmbG93IHRvIGZpbmQgbW9yZSBpbnRlcmVzdGluZyBlbnRyeXBvaW50cy4gRmluZGluZyBhbGwgdGhlIGNhbGwgc2l0ZXMgdG8gdGhpcyBjb21tYW5kIGhhbmRsZXIgd291bGQgZ2l2ZSBtZSBhIGdvb2QgaW5zaWdodCBpbnRvIHRoZSBvdmVyYWxsIGRyaXZlciBzdHJ1Y3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYyNTQsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwODozMDo1Ny41OTMxNzQzMDhaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxNTgxNTA3NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtd2lmaWV4X3NlbmRfY21kXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA3MzcgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYz03MD1pbnQgbXdpZmlleF8xMWhfYWN0aXZhdGUoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgYm9vbCBmbGFnKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTc3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzo3ODpcXHRyZXR1cm4gbXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF84MDJfMTFfU05NUF9NSUIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTc5LVxcdFxcdFxcdFxcdEhvc3RDbWRfQUNUX0dFTl9TRVQsIERPVDExSF9JLCBcXHUwMDI2ZW5hYmxlLCB0cnVlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYz0xNTk9aW50IG13aWZpZXhfc3RvcF9yYWRhcl9kZXRlY3Rpb24oc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xNjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjE2ODpcXHRyZXR1cm4gbXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF9DSEFOX1JFUE9SVF9SRVFVRVNULFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xNjktXFx0XFx0XFx0XFx0SG9zdENtZF9BQ1RfR0VOX1NFVCwgMCwgXFx1MDAyNnJhZGFyX3BhcmFtcywgdHJ1ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM9NTc2PWludCBtd2lmaWV4X3NlbmRfYWRkYmEoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgaW50IHRpZCwgdTggKnBlZXJfbWFjKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTYyOC1cXHQvKiBXZSBkb24ndCB3YWl0IGZvciB0aGUgcmVzcG9uc2Ugb2YgdGhpcyBjb21tYW5kICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjYyOTpcXHRyZXQgPSBtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EXzExTl9BRERCQV9SRVEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTYzMC1cXHRcXHRcXHQgICAgICAgMCwgMCwgXFx1MDAyNmFkZF9iYV9yZXEsIGZhbHNlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYz02Mzg9aW50IG13aWZpZXhfc2VuZF9kZWxiYShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCBpbnQgdGlkLCB1OCAqcGVlcl9tYWMsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtNjU3LVxcdC8qIFdlIGRvbid0IHdhaXQgZm9yIHRoZSByZXNwb25zZSBvZiB0aGlzIGNvbW1hbmQgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NjU4OlxcdHJldCA9IG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfMTFOX0RFTEJBLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy02NTktXFx0XFx0XFx0ICAgICAgIEhvc3RDbWRfQUNUX0dFTl9TRVQsIDAsIFxcdTAwMjZkZWxiYSwgZmFsc2UpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbl9yeHJlb3JkZXIuYz03NjU9dm9pZCBtd2lmaWV4XzExbl9iYV9zdHJlYW1fdGltZW91dChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbl9yeHJlb3JkZXIuYy03NzctXFx0ZGVsYmEucmVhc29uX2NvZGUgPSBjcHVfdG9fbGUxNihXTEFOX1JFQVNPTl9RU1RBX1RJTUVPVVQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW5fcnhyZW9yZGVyLmM6Nzc4OlxcdG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfMTFOX0RFTEJBLCAwLCAwLCBcXHUwMDI2ZGVsYmEsIGZhbHNlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuX3J4cmVvcmRlci5jLTc3OS19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYz0yODI9bXdpZmlleF9jZmc4MDIxMV91cGRhdGVfbWdtdF9mcmFtZV9yZWdpc3RyYXRpb25zKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0yOTItXFx0XFx0XFx0cHJpdi1cXHUwMDNlbWdtdF9mcmFtZV9tYXNrIHw9IEhPU1RfTUxNRV9NR01UX01BU0s7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM6MjkzOlxcdFxcdG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfTUdNVF9GUkFNRV9SRUcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMjk0LVxcdFxcdFxcdFxcdCBIb3N0Q21kX0FDVF9HRU5fU0VULCAwLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM9NDEzPW13aWZpZXhfY2ZnODAyMTFfZ2V0X3R4X3Bvd2VyKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy00MjAtXFx0XFx0XFx0XFx0XFx0XFx0XFx0TVdJRklFWF9CU1NfUk9MRV9BTlkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jOjQyMTpcXHRpbnQgcmV0ID0gbXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF9SRl9UWF9QV1IsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtNDIyLVxcdFxcdFxcdFxcdCAgIEhvc3RDbWRfQUNUX0dFTl9HRVQsIDAsIE5VTEwsIHRydWUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM9NTIxPW13aWZpZXhfY2ZnODAyMTFfc2V0X2RlZmF1bHRfbWdtdF9rZXkoc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTUzOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYzo1NDA6XFx0aWYgKG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfODAyXzExX0tFWV9NQVRFUklBTCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy01NDEtXFx0XFx0XFx0ICAgICBIb3N0Q21kX0FDVF9HRU5fU0VULCB0cnVlLCBcXHUwMDI2ZW5jcnlwdF9rZXksIHRydWUpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYz01NTc9aW50IG13aWZpZXhfc2VuZF9kb21haW5faW5mb19jbWRfZncoc3RydWN0IHdpcGh5ICp3aXBoeSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTYyNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYzo2Mjg6XFx0aWYgKG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfODAyXzExRF9ET01BSU5fSU5GTyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy02MjktXFx0XFx0XFx0ICAgICBIb3N0Q21kX0FDVF9HRU5fU0VULCAwLCBOVUxMLCBmYWxzZSkpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jPTcwNz1td2lmaWV4X3NldF9mcmFnKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsIHUzMiBmcmFnX3RocilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTcxMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYzo3MTM6XFx0cmV0dXJuIG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfODAyXzExX1NOTVBfTUlCLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTcxNC1cXHRcXHRcXHRcXHRIb3N0Q21kX0FDVF9HRU5fU0VULCBGUkFHX1RIUkVTSF9JLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM9NzI1PW13aWZpZXhfc2V0X3J0cyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCB1MzIgcnRzX3RocilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTcyOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYzo3MzA6XFx0cmV0dXJuIG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfODAyXzExX1NOTVBfTUlCLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTczMS1cXHRcXHRcXHRcXHRIb3N0Q21kX0FDVF9HRU5fU0VULCBSVFNfVEhSRVNIX0ksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYz03NDI9bXdpZmlleF9jZmc4MDIxMV9zZXRfd2lwaHlfcGFyYW1zKHN0cnVjdCB3aXBoeSAqd2lwaHksIGludCByYWRpb19pZHgsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy03NzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM6NzczOlxcdFxcdHJldCA9IG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfVUFQX1NZU19DT05GSUcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtNzc0LVxcdFxcdFxcdFxcdCAgICAgICBIb3N0Q21kX0FDVF9HRU5fU0VULFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM9ODExPW13aWZpZXhfY2ZnODAyMTFfZGVpbml0X3AycChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtODE0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jOjgxNTpcXHRpZiAobXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF9QMlBfTU9ERV9DRkcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtODE2LVxcdFxcdFxcdCAgICAgSG9zdENtZF9BQ1RfR0VOX1NFVCwgMCwgXFx1MDAyNm1vZGUsIHRydWUpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM9ODI4PW13aWZpZXhfY2ZnODAyMTFfaW5pdF9wMnBfY2xpZW50KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy04MzUtXFx0bW9kZSA9IFAyUF9NT0RFX0RFVklDRTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYzo4MzY6XFx0aWYgKG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfUDJQX01PREVfQ0ZHLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTgzNy1cXHRcXHRcXHQgICAgIEhvc3RDbWRfQUNUX0dFTl9TRVQsIDAsIFxcdTAwMjZtb2RlLCB0cnVlKSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTg0MC1cXHRtb2RlID0gUDJQX01PREVfQ0xJRU5UO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jOjg0MTpcXHRpZiAobXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF9QMlBfTU9ERV9DRkcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtODQyLVxcdFxcdFxcdCAgICAgSG9zdENtZF9BQ1RfR0VOX1NFVCwgMCwgXFx1MDAyNm1vZGUsIHRydWUpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM9ODU0PW13aWZpZXhfY2ZnODAyMTFfaW5pdF9wMnBfZ28oc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTg2MS1cXHRtb2RlID0gUDJQX01PREVfREVWSUNFO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jOjg2MjpcXHRpZiAobXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF9QMlBfTU9ERV9DRkcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtODYzLVxcdFxcdFxcdCAgICAgSG9zdENtZF9BQ1RfR0VOX1NFVCwgMCwgXFx1MDAyNm1vZGUsIHRydWUpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtODY2LVxcdG1vZGUgPSBQMlBfTU9ERV9HTztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYzo4Njc6XFx0aWYgKG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfUDJQX01PREVfQ0ZHLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTg2OC1cXHRcXHRcXHQgICAgIEhvc3RDbWRfQUNUX0dFTl9TRVQsIDAsIFxcdTAwMjZtb2RlLCB0cnVlKSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jPTg3ND1zdGF0aWMgaW50IG13aWZpZXhfZGVpbml0X3ByaXZfcGFyYW1zKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy04ODAtXFx0cHJpdi1cXHUwMDNlbWdtdF9mcmFtZV9tYXNrID0gMDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYzo4ODE6XFx0aWYgKG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfTUdNVF9GUkFNRV9SRUcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtODgyLVxcdFxcdFxcdCAgICAgSG9zdENtZF9BQ1RfR0VOX1NFVCwgMCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jPTEwODU9bXdpZmlleF9jaGFuZ2VfdmlmX3RvX3AycChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMTEyNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYzoxMTI4OlxcdGlmIChtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX1NFVF9CU1NfTU9ERSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0xMTI5LVxcdFxcdFxcdCAgICAgSG9zdENtZF9BQ1RfR0VOX1NFVCwgMCwgTlVMTCwgdHJ1ZSkpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYz0xMTM5PW13aWZpZXhfY2hhbmdlX3ZpZl90b19zdGFfYWRob2Moc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTExNjktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM6MTE3MDpcXHRpZiAobXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF9TRVRfQlNTX01PREUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMTE3MS1cXHRcXHRcXHQgICAgIEhvc3RDbWRfQUNUX0dFTl9TRVQsIDAsIE5VTEwsIHRydWUpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM9MTE4MD1td2lmaWV4X2NoYW5nZV92aWZfdG9fYXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTEyMDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM6MTIwNzpcXHRpZiAobXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF9TRVRfQlNTX01PREUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMTIwOC1cXHRcXHRcXHQgICAgIEhvc3RDbWRfQUNUX0dFTl9TRVQsIDAsIE5VTEwsIHRydWUpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM9MTIxOT1td2lmaWV4X2NmZzgwMjExX2NoYW5nZV92aXJ0dWFsX2ludGYoc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTEyNjItXFx0XFx0XFx0bXdpZmlleF9kZWF1dGhlbnRpY2F0ZShwcml2LCBOVUxMKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYzoxMjYzOlxcdFxcdFxcdHJldHVybiBtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX1NFVF9CU1NfTU9ERSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0xMjY0LVxcdFxcdFxcdFxcdFxcdFxcdEhvc3RDbWRfQUNUX0dFTl9TRVQsIDAsIE5VTEwsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0xMjg0LVxcdFxcdFxcdG13aWZpZXhfZGVhdXRoZW50aWNhdGUocHJpdiwgTlVMTCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM6MTI4NTpcXHRcXHRcXHRyZXR1cm4gbXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF9TRVRfQlNTX01PREUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMTI4Ni1cXHRcXHRcXHRcXHRcXHRcXHRIb3N0Q21kX0FDVF9HRU5fU0VULCAwLCBOVUxMLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM9MTQ2MT1td2lmaWV4X2R1bXBfc3RhdGlvbl9pbmZvKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0xNDk3LVxcdC8qIEdldCBzaWduYWwgaW5mb3JtYXRpb24gZnJvbSB0aGUgZmlybXdhcmUgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYzoxNDk4OlxcdGlmIChtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX1JTU0lfSU5GTyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0xNDk5LVxcdFxcdFxcdCAgICAgSG9zdENtZF9BQ1RfR0VOX0dFVCwgMCwgTlVMTCwgdHJ1ZSkpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTE1MTEtXFx0LyogR2V0IERUSU0gcGVyaW9kIGluZm9ybWF0aW9uIGZyb20gZmlybXdhcmUgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYzoxNTEyOlxcdG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfODAyXzExX1NOTVBfTUlCLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTE1MTMtXFx0XFx0XFx0IEhvc3RDbWRfQUNUX0dFTl9HRVQsIERUSU1fUEVSSU9EX0ksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYz0xNTc1PW13aWZpZXhfY2ZnODAyMTFfZHVtcF9zdGF0aW9uKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0xNTg2LVxcdH0gZWxzZSBpZiAoR0VUX0JTU19ST0xFKHByaXYpID09IE1XSUZJRVhfQlNTX1JPTEVfVUFQKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM6MTU4NzpcXHRcXHRtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhPU1RfQ01EX0FQQ01EX1NUQV9MSVNULFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTE1ODgtXFx0XFx0XFx0XFx0IEhvc3RDbWRfQUNUX0dFTl9HRVQsIDAsIE5VTEwsIHRydWUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM9MTc3OD1td2lmaWV4X2NmZzgwMjExX3NldF9iaXRyYXRlX21hc2soc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTE4MjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM6MTgyMTpcXHRyZXR1cm4gbXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF9UWF9SQVRFX0NGRyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0xODIyLVxcdFxcdFxcdFxcdEhvc3RDbWRfQUNUX0dFTl9TRVQsIDAsIGJpdG1hcF9yYXRlcywgdHJ1ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYz0xODMxPXN0YXRpYyBpbnQgbXdpZmlleF9jZmc4MDIxMV9zZXRfY3FtX3Jzc2lfY29uZmlnKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0xODUwLVxcdFxcdHN1YnNjX2V2dC5iY25faF9yc3NpX2NmZy5ldnRfZnJlcSA9IDE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM6MTg1MTpcXHRcXHRyZXR1cm4gbXdpZmlleF9zZW5kX2NtZChwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTE4NTItXFx0XFx0XFx0XFx0XFx0SG9zdENtZF9DTURfODAyXzExX1NVQlNDUklCRV9FVkVOVCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTE4NTUtXFx0XFx0c3Vic2NfZXZ0LmFjdGlvbiA9IEhvc3RDbWRfQUNUX0JJVFdJU0VfQ0xSO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jOjE4NTY6XFx0XFx0cmV0dXJuIG13aWZpZXhfc2VuZF9jbWQocHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0xODU3LVxcdFxcdFxcdFxcdFxcdEhvc3RDbWRfQ01EXzgwMl8xMV9TVUJTQ1JJQkVfRVZFTlQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYz0xOTA1PW13aWZpZXhfY2ZnODAyMTFfZGVsX3N0YXRpb24oc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTE5MzUtXFx0aWYgKGlzX3ZhbGlkX2V0aGVyX2FkZHIoZGVhdXRoX21hYykpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYzoxOTM2OlxcdFxcdGlmIChtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX1VBUF9TVEFfREVBVVRILFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTE5MzctXFx0XFx0XFx0XFx0ICAgICBIb3N0Q21kX0FDVF9HRU5fU0VULCAwLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM9MTk0Nj1td2lmaWV4X2NmZzgwMjExX3NldF9hbnRlbm5hKHN0cnVjdCB3aXBoeSAqd2lwaHksIGludCByYWRpb19pZHgsIHUzMiB0eF9hbnQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0yMDA0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jOjIwMDU6XFx0cmV0dXJuIG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfUkZfQU5URU5OQSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0yMDA2LVxcdFxcdFxcdFxcdEhvc3RDbWRfQUNUX0dFTl9TRVQsIDAsIFxcdTAwMjZhbnRfY2ZnLCB0cnVlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jPTIwMTA9bXdpZmlleF9jZmc4MDIxMV9nZXRfYW50ZW5uYShzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBpbnQgcmFkaW9faWR4LCB1MzIgKnR4X2FudCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTIwMTUtXFx0XFx0XFx0XFx0XFx0XFx0XFx0TVdJRklFWF9CU1NfUk9MRV9BTlkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jOjIwMTY6XFx0bXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF9SRl9BTlRFTk5BLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTIwMTctXFx0XFx0XFx0IEhvc3RDbWRfQUNUX0dFTl9HRVQsIDAsIE5VTEwsIHRydWUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM9MjAyOD1zdGF0aWMgaW50IG13aWZpZXhfY2ZnODAyMTFfc3RvcF9hcChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMjA0MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYzoyMDQyOlxcdGlmIChtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX1VBUF9CU1NfU1RPUCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0yMDQzLVxcdFxcdFxcdCAgICAgSG9zdENtZF9BQ1RfR0VOX1NFVCwgMCwgTlVMTCwgdHJ1ZSkpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTIwNDgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM6MjA0OTpcXHRpZiAobXdpZmlleF9zZW5kX2NtZChwcml2LCBIT1NUX0NNRF9BUENNRF9TWVNfUkVTRVQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMjA1MC1cXHRcXHRcXHQgICAgIEhvc3RDbWRfQUNUX0dFTl9TRVQsIDAsIE5VTEwsIHRydWUpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYz0yMjY2PW13aWZpZXhfY2ZnODAyMTFfYXNzb2Moc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgc2l6ZV90IHNzaWRfbGVuLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMjMwMy1cXHRcXHQvKiBzZXQgaWJzcyBjb2FsZXNjaW5nX3N0YXR1cyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jOjIzMDQ6XFx0XFx0cmV0ID0gbXdpZmlleF9zZW5kX2NtZChcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0yMzA1LVxcdFxcdFxcdFxcdHByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYz0yNzcwPW13aWZpZXhfY2ZnODAyMTFfc2NoZWRfc2Nhbl9zdGFydChzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMjg1Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYzoyODUzOlxcdGlmIChtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EXzgwMl8xMV9CR19TQ0FOX0NPTkZJRyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0yODU0LVxcdFxcdFxcdCAgICAgSG9zdENtZF9BQ1RfR0VOX1NFVCwgMCwgYmdzY2FuX2NmZywgdHJ1ZSkpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jPTI5ODI9c3RydWN0IHdpcmVsZXNzX2RldiAqbXdpZmlleF9hZGRfdmlydHVhbF9pbnRmKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0zMTEzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jOjMxMTQ6XFx0XFx0cmV0ID0gbXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF9TRVRfQlNTX01PREUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMzExNS1cXHRcXHRcXHRcXHQgICAgICAgSG9zdENtZF9BQ1RfR0VOX1NFVCwgMCwgTlVMTCwgdHJ1ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYz0zNDQ3PXN0YXRpYyBpbnQgbXdpZmlleF9zZXRfbWVmX2ZpbHRlcihzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMzQ4MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYzozNDgxOlxcdHJldCA9IG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfTUVGX0NGRyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0zNDgyLVxcdFxcdFxcdEhvc3RDbWRfQUNUX0dFTl9TRVQsIDAsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYz0zNjUzPXN0YXRpYyBpbnQgbXdpZmlleF9zZXRfcmVrZXlfZGF0YShzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMzY2My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYzozNjY0OlxcdHJldHVybiBtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX0dUS19SRUtFWV9PRkZMT0FEX0NGRyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0zNjY1LVxcdFxcdFxcdFxcdEhvc3RDbWRfQUNUX0dFTl9TRVQsIDAsIGRhdGEsIHRydWUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM9Mzc1MD1zdGF0aWMgaW50IG13aWZpZXhfY2ZnODAyMTFfc2V0X2NvYWxlc2NlKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0zNzYyLVxcdFxcdFxcdCAgICBcXFwiRGlzYWJsZSBjb2FsZXNjZSBhbmQgcmVzZXQgYWxsIHByZXZpb3VzIHJ1bGVzXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYzozNzYzOlxcdFxcdHJldHVybiBtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX0NPQUxFU0NFX0NGRyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0zNzY0LVxcdFxcdFxcdFxcdFxcdEhvc3RDbWRfQUNUX0dFTl9TRVQsIDAsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0zNzc5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jOjM3ODA6XFx0cmV0dXJuIG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfQ09BTEVTQ0VfQ0ZHLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTM3ODEtXFx0XFx0XFx0XFx0SG9zdENtZF9BQ1RfR0VOX1NFVCwgMCwgXFx1MDAyNmNvYWxlc2NlX2NmZywgdHJ1ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYz0zOTc5PW13aWZpZXhfY2ZnODAyMTFfdWFwX2FkZF9zdGF0aW9uKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsIGNvbnN0IHU4ICptYWMsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0zOTg3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jOjM5ODg6XFx0cmV0ID0gbXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF9BRERfTkVXX1NUQVRJT04sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMzk4OS1cXHRcXHRcXHQgICAgICAgSG9zdENtZF9BQ1RfQUREX1NUQSwgMCwgKHZvaWQgKilcXHUwMDI2YWRkX3N0YSwgdHJ1ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYz00MTQyPXN0YXRpYyBpbnQgbXdpZmlleF90bV9jbWQoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTQxNzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM6NDE3NTpcXHRcXHRpZiAobXdpZmlleF9zZW5kX2NtZChwcml2LCAwLCAwLCAwLCBob3N0Y21kLCB0cnVlKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTQxNzYtXFx0XFx0XFx0ZGV2X2Vycihwcml2LVxcdTAwM2VhZGFwdGVyLVxcdTAwM2VkZXYsIFxcXCJGYWlsZWQgdG8gcHJvY2VzcyBob3N0Y21kXFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jPTQyMDU9bXdpZmlleF9jZmc4MDIxMV9zdGFydF9yYWRhcl9kZXRlY3Rpb24oc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTQyMzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM6NDIzNjpcXHRpZiAobXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF9DSEFOX1JFUE9SVF9SRVFVRVNULFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTQyMzctXFx0XFx0XFx0ICAgICBIb3N0Q21kX0FDVF9HRU5fU0VULCAwLCBcXHUwMDI2cmFkYXJfcGFyYW1zLCB0cnVlKSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jPTQyNzQ9bXdpZmlleF9jZmc4MDIxMV9hdXRoZW50aWNhdGUoc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTQzMDktXFx0XFx0cHJpdi1cXHUwMDNlbWdtdF9mcmFtZV9tYXNrIHw9IEhPU1RfTUxNRV9NR01UX01BU0s7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM6NDMxMDpcXHRcXHRtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX01HTVRfRlJBTUVfUkVHLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTQzMTEtXFx0XFx0XFx0XFx0IEhvc3RDbWRfQUNUX0dFTl9TRVQsIDAsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYz00NzAwPWludCBtd2lmaWV4X3JlZ2lzdGVyX2NmZzgwMjExKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy00OTA5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jOjQ5MTA6XFx0bXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF84MDJfMTFfU05NUF9NSUIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtNDkxMS1cXHRcXHRcXHQgSG9zdENtZF9BQ1RfR0VOX0dFVCwgRlJBR19USFJFU0hfSSwgXFx1MDAyNnRociwgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtNDkxMi1cXHR3aXBoeS1cXHUwMDNlZnJhZ190aHJlc2hvbGQgPSB0aHI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM6NDkxMzpcXHRtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EXzgwMl8xMV9TTk1QX01JQixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy00OTE0LVxcdFxcdFxcdCBIb3N0Q21kX0FDVF9HRU5fR0VULCBSVFNfVEhSRVNIX0ksIFxcdTAwMjZ0aHIsIHRydWUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTQ5MTUtXFx0d2lwaHktXFx1MDAzZXJ0c190aHJlc2hvbGQgPSB0aHI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM6NDkxNjpcXHRtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EXzgwMl8xMV9TTk1QX01JQixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy00OTE3LVxcdFxcdFxcdCBIb3N0Q21kX0FDVF9HRU5fR0VULCBTSE9SVF9SRVRSWV9MSU1fSSwgXFx1MDAyNnJldHJ5LCB0cnVlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy00OTE4LVxcdHdpcGh5LVxcdTAwM2VyZXRyeV9zaG9ydCA9ICh1OCkgcmV0cnk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM6NDkxOTpcXHRtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EXzgwMl8xMV9TTk1QX01JQixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy00OTIwLVxcdFxcdFxcdCBIb3N0Q21kX0FDVF9HRU5fR0VULCBMT05HX1JFVFJZX0xJTV9JLCBcXHUwMDI2cmV0cnksIHRydWUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NtZGV2dC5jPTQ3MD1pbnQgbXdpZmlleF9wcm9jZXNzX2V2ZW50KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY21kZXZ0LmMtNTQxLSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jbWRldnQuYzo1NDI6aW50IG13aWZpZXhfc2VuZF9jbWQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgdTE2IGNtZF9ubyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY21kZXZ0LmMtNTQzLVxcdFxcdCAgICAgdTE2IGNtZF9hY3Rpb24sIHUzMiBjbWRfb2lkLCB2b2lkICpkYXRhX2J1ZiwgYm9vbCBzeW5jKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2RlYnVnZnMuYz02MDQ9bXdpZmlleF9tZW1yd193cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKnVidWYsIHNpemVfdCBjb3VudCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9kZWJ1Z2ZzLmMtNjM0LVxcdG1lbWNweShcXHUwMDI2cHJpdi1cXHUwMDNlbWVtX3J3LCBcXHUwMDI2bWVtX3J3LCBzaXplb2YobWVtX3J3KSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2RlYnVnZnMuYzo2MzU6XFx0aWYgKG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfTUVNX0FDQ0VTUywgY21kX2FjdGlvbiwgMCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvZGVidWdmcy5jLTYzNi1cXHRcXHRcXHQgICAgIFxcdTAwMjZtZW1fcncsIHRydWUpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2RlYnVnZnMuYz04NDQ9bXdpZmlleF90aW1lc2hhcmVfY29leF9yZWFkKHN0cnVjdCBmaWxlICpmaWxlLCBjaGFyIF9fdXNlciAqdWJ1ZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9kZWJ1Z2ZzLmMtODU1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9kZWJ1Z2ZzLmM6ODU2OlxcdHJldCA9IG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfUk9CVVNUX0NPRVgsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2RlYnVnZnMuYy04NTctXFx0XFx0XFx0ICAgICAgIEhvc3RDbWRfQUNUX0dFTl9HRVQsIDAsIFxcdTAwMjZ0aW1lc2hhcmVfY29leCwgdHJ1ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvZGVidWdmcy5jPTg2Nj1td2lmaWV4X3RpbWVzaGFyZV9jb2V4X3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqdWJ1ZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9kZWJ1Z2ZzLmMtODc5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9kZWJ1Z2ZzLmM6ODgwOlxcdHJldCA9IG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfUk9CVVNUX0NPRVgsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2RlYnVnZnMuYy04ODEtXFx0XFx0XFx0ICAgICAgIEhvc3RDbWRfQUNUX0dFTl9TRVQsIDAsIFxcdTAwMjZ0aW1lc2hhcmVfY29leCwgdHJ1ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvaWUuYz02OT1td2lmaWV4X3VwZGF0ZV9hdXRvaW5kZXhfaWVzKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvaWUuYy0xMjktXFx0aWYgKEdFVF9CU1NfUk9MRShwcml2KSA9PSBNV0lGSUVYX0JTU19ST0xFX1VBUClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvaWUuYzoxMzA6XFx0XFx0cmV0dXJuIG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfVUFQX1NZU19DT05GSUcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2llLmMtMTMxLVxcdFxcdFxcdFxcdFxcdEhvc3RDbWRfQUNUX0dFTl9TRVQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvam9pbi5jPTg2OD1td2lmaWV4X2NtZF84MDJfMTFfYWRfaG9jX3N0YXJ0KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvam9pbi5jLTk5OC1cXHQgICAgKHByaXYtXFx1MDAzZWN1cnJfcGt0X2ZpbHRlciBcXHUwMDI2IEhvc3RDbWRfQUNUX01BQ19BREhPQ19HX1BST1RFQ1RJT05fT04pKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2pvaW4uYzo5OTk6XFx0XFx0aWYgKG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfTUFDX0NPTlRST0wsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2pvaW4uYy0xMDAwLVxcdFxcdFxcdFxcdCAgICAgSG9zdENtZF9BQ1RfR0VOX1NFVCwgMCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9qb2luLmM9MTE0OD1td2lmaWV4X2NtZF84MDJfMTFfYWRfaG9jX2pvaW4oc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9qb2luLmMtMTE3MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvam9pbi5jOjExNzE6XFx0XFx0aWYgKG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfTUFDX0NPTlRST0wsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2pvaW4uYy0xMTcyLVxcdFxcdFxcdFxcdCAgICAgSG9zdENtZF9BQ1RfR0VOX1NFVCwgMCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9qb2luLmM9MTM5Nz1pbnQgbXdpZmlleF9hc3NvY2lhdGUoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9qb2luLmMtMTQxNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvam9pbi5jOjE0MTg6XFx0cmV0dXJuIG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfODAyXzExX0FTU09DSUFURSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvam9pbi5jLTE0MTktXFx0XFx0XFx0XFx0SG9zdENtZF9BQ1RfR0VOX1NFVCwgMCwgYnNzX2Rlc2MsIHRydWUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2pvaW4uYz0xNDI4PW13aWZpZXhfYWRob2Nfc3RhcnQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9qb2luLmMtMTQ0My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvam9pbi5jOjE0NDQ6XFx0cmV0dXJuIG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfODAyXzExX0FEX0hPQ19TVEFSVCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvam9pbi5jLTE0NDUtXFx0XFx0XFx0XFx0SG9zdENtZF9BQ1RfR0VOX1NFVCwgMCwgYWRob2Nfc3NpZCwgdHJ1ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvam9pbi5jPTE0NTQ9aW50IG13aWZpZXhfYWRob2Nfam9pbihzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2pvaW4uYy0xNDkzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9qb2luLmM6MTQ5NDpcXHRyZXR1cm4gbXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF84MDJfMTFfQURfSE9DX0pPSU4sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2pvaW4uYy0xNDk1LVxcdFxcdFxcdFxcdEhvc3RDbWRfQUNUX0dFTl9TRVQsIDAsIGJzc19kZXNjLCB0cnVlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9qb2luLmM9MTUwMj1zdGF0aWMgaW50IG13aWZpZXhfZGVhdXRoZW50aWNhdGVfaW5mcmEoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgdTggKm1hYylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9qb2luLmMtMTUxMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvam9pbi5jOjE1MTQ6XFx0cmV0ID0gbXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF84MDJfMTFfREVBVVRIRU5USUNBVEUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2pvaW4uYy0xNTE1LVxcdFxcdFxcdCAgICAgICBIb3N0Q21kX0FDVF9HRU5fU0VULCAwLCBtYWNfYWRkcmVzcywgdHJ1ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvam9pbi5jPTE1Mjc9aW50IG13aWZpZXhfZGVhdXRoZW50aWNhdGUoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgdTggKm1hYylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9qb2luLmMtMTUzOC1cXHRcXHRwcml2LVxcdTAwM2VtZ210X2ZyYW1lX21hc2sgPSAwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9qb2luLmM6MTUzOTpcXHRcXHRpZiAobXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF9NR01UX0ZSQU1FX1JFRyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvam9pbi5jLTE1NDAtXFx0XFx0XFx0XFx0ICAgICBIb3N0Q21kX0FDVF9HRU5fU0VULCAwLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2pvaW4uYy0xNTU2LVxcdGNhc2UgTkw4MDIxMV9JRlRZUEVfQURIT0M6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2pvaW4uYzoxNTU3OlxcdFxcdHJldHVybiBtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EXzgwMl8xMV9BRF9IT0NfU1RPUCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvam9pbi5jLTE1NTgtXFx0XFx0XFx0XFx0XFx0SG9zdENtZF9BQ1RfR0VOX1NFVCwgMCwgTlVMTCwgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2pvaW4uYy0xNTU5LVxcdGNhc2UgTkw4MDIxMV9JRlRZUEVfQVA6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2pvaW4uYzoxNTYwOlxcdFxcdHJldHVybiBtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX1VBUF9CU1NfU1RPUCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvam9pbi5jLTE1NjEtXFx0XFx0XFx0XFx0XFx0SG9zdENtZF9BQ1RfR0VOX1NFVCwgMCwgTlVMTCwgdHJ1ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jPTIxNj1zdGF0aWMgdm9pZCBtYXliZV9xdWlya19md19kaXNhYmxlX2RzKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jLTIyNS1cXHR2ZXJfZXh0LnZlcnNpb25fc3RyX3NlbCA9IDE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYzoyMjY6XFx0aWYgKG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfVkVSU0lPTl9FWFQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYy0yMjctXFx0XFx0XFx0ICAgICBIb3N0Q21kX0FDVF9HRU5fR0VULCAwLCBcXHUwMDI2dmVyX2V4dCwgZmFsc2UpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jPTk0OD1pbnQgbXdpZmlleF9zZXRfbWFjX2FkZHJlc3Moc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmMtOTc4LVxcdC8qIFNlbmQgcmVxdWVzdCB0byBmaXJtd2FyZSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmM6OTc5OlxcdHJldCA9IG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfODAyXzExX01BQ19BRERSRVNTLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmMtOTgwLVxcdFxcdFxcdCAgICAgICBIb3N0Q21kX0FDVF9HRU5fU0VULCAwLCBOVUxMLCB0cnVlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmM9MTA1MD12b2lkIG13aWZpZXhfbXVsdGlfY2hhbl9yZXN5bmMoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmMtMTA2Ny1cXHRwcml2ID0gbXdpZmlleF9nZXRfcHJpdihhZGFwdGVyLCBNV0lGSUVYX0JTU19ST0xFX0FOWSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYzoxMDY4OlxcdHJldCA9IG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfUkVDT05GSUdVUkVfVFhfQlVGRixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jLTEwNjktXFx0XFx0XFx0ICAgICAgIEhvc3RDbWRfQUNUX0dFTl9TRVQsIDAsIFxcdTAwMjZ0eF9idWZfc2l6ZSwgZmFsc2UpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaD0xMDc2PWludCBtd2lmaWV4X2NvbXBsZXRlX2NtZChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xMDc4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg6MTA3OTppbnQgbXdpZmlleF9zZW5kX2NtZChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCB1MTYgY21kX25vLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTA4MC1cXHRcXHQgICAgIHUxNiBjbWRfYWN0aW9uLCB1MzIgY21kX29pZCwgdm9pZCAqZGF0YV9idWYsIGJvb2wgc3luYyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jPTU5ND1td2lmaWV4X3NjYW5fY2hhbm5lbF9saXN0KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTc0NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jOjc0NjpcXHRcXHRyZXQgPSBtd2lmaWV4X3NlbmRfY21kKHByaXYsIGNtZF9ubywgSG9zdENtZF9BQ1RfR0VOX1NFVCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTc0Ny1cXHRcXHRcXHRcXHQgICAgICAgMCwgc2Nhbl9jZmdfb3V0LCBmYWxzZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jPTI0NDM9aW50IG13aWZpZXhfc3RvcF9iZ19zY2FuKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTI0NTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYzoyNDYwOlxcdGlmIChtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EXzgwMl8xMV9CR19TQ0FOX0NPTkZJRyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTI0NjEtXFx0XFx0XFx0ICAgICBIb3N0Q21kX0FDVF9HRU5fU0VULCAwLCBiZ3NjYW5fY2ZnLCB0cnVlKSkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYz0xNDU4PWludCBtd2lmaWV4X2RubGRfZHRfY2ZnZGF0YShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYy0xNDc0LVxcdFxcdCAgICBwcm9wLVxcdTAwM2VsZW5ndGggXFx1MDAzYz0gTVdJRklFWF9TSVpFX09GX0NNRF9CVUZGRVIgLSBTX0RTX0dFTikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmM6MTQ3NTpcXHRcXHRcXHRyZXQgPSBtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX0NGR19EQVRBLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmMtMTQ3Ni1cXHRcXHRcXHRcXHRcXHQgICAgICAgSG9zdENtZF9BQ1RfR0VOX1NFVCwgMCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmM9MTUwOT1pbnQgbXdpZmlleF9zZW5kX3JncG93ZXJfdGFibGUoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgY29uc3QgdTggKmRhdGEsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZC5jLTE1NDAtXFx0XFx0XFx0aG9zdGNtZC1cXHUwMDNlbGVuID0gZ2V0X3VuYWxpZ25lZF9sZTE2KFxcdTAwMjZob3N0Y21kLVxcdTAwM2VjbWRbMl0pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmM6MTU0MTpcXHRcXHRcXHRyZXQgPSBtd2lmaWV4X3NlbmRfY21kKHByaXYsIDAsIDAsIDAsIGhvc3RjbWQsIGZhbHNlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZC5jLTE1NDItXFx0XFx0XFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYz0yMzU0PWludCBtd2lmaWV4X3N0YV9pbml0X2NtZChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCB1OCBmaXJzdF9zdGEpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZC5jLTIzNjctXFx0XFx0aWYgKHByaXYtXFx1MDAzZWFkYXB0ZXItXFx1MDAzZWlmYWNlX3R5cGUgPT0gTVdJRklFWF9QQ0lFKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYzoyMzY4OlxcdFxcdFxcdHJldCA9IG13aWZpZXhfc2VuZF9jbWQocHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZC5jLTIzNjktXFx0XFx0XFx0XFx0XFx0ICAgICAgIEhvc3RDbWRfQ01EX1BDSUVfREVTQ19ERVRBSUxTLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYy0yMzc1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmM6MjM3NjpcXHRcXHRyZXQgPSBtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX0ZVTkNfSU5JVCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZC5jLTIzNzctXFx0XFx0XFx0XFx0ICAgICAgIEhvc3RDbWRfQUNUX0dFTl9TRVQsIDAsIE5VTEwsIHRydWUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYy0yMzk3LVxcdFxcdGlmIChhZGFwdGVyLVxcdTAwM2VjYWxfZGF0YSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmM6MjM5ODpcXHRcXHRcXHRtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX0NGR19EQVRBLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmMtMjM5OS1cXHRcXHRcXHRcXHRcXHQgSG9zdENtZF9BQ1RfR0VOX1NFVCwgMCwgTlVMTCwgdHJ1ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZC5jLTI0MDUtXFx0XFx0LyogUmVhZCBNQUMgYWRkcmVzcyBmcm9tIEhXICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYzoyNDA2OlxcdFxcdHJldCA9IG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfR0VUX0hXX1NQRUMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYy0yNDA3LVxcdFxcdFxcdFxcdCAgICAgICBIb3N0Q21kX0FDVF9HRU5fR0VULCAwLCBOVUxMLCB0cnVlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmMtMjQxNS1cXHRcXHRcXHRzZGlvX3NwX3J4X2FnZ3JfZW5hYmxlID0gdHJ1ZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZC5jOjI0MTY6XFx0XFx0XFx0cmV0ID0gbXdpZmlleF9zZW5kX2NtZChwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmMtMjQxNy1cXHRcXHRcXHRcXHRcXHQgICAgICAgSG9zdENtZF9DTURfU0RJT19TUF9SWF9BR0dSX0NGRyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmMtMjQyOC1cXHRcXHQvKiBSZWNvbmZpZ3VyZSB0eCBidWYgc2l6ZSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmM6MjQyOTpcXHRcXHRyZXQgPSBtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX1JFQ09ORklHVVJFX1RYX0JVRkYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYy0yNDMwLVxcdFxcdFxcdFxcdCAgICAgICBIb3N0Q21kX0FDVF9HRU5fU0VULCAwLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYy0yNDM3LVxcdFxcdFxcdHByaXYtXFx1MDAzZWFkYXB0ZXItXFx1MDAzZXBzX21vZGUgPSBNV0lGSUVYXzgwMl8xMV9QT1dFUl9NT0RFX1BTUDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZC5jOjI0Mzg6XFx0XFx0XFx0cmV0ID0gbXdpZmlleF9zZW5kX2NtZChwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmMtMjQzOS1cXHRcXHRcXHRcXHRcXHQgICAgICAgSG9zdENtZF9DTURfODAyXzExX1BTX01PREVfRU5ILFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYy0yNDQ4LVxcdFxcdFxcdGlmIChJU1NVUFBfRFJDU19FTkFCTEVEKGFkYXB0ZXItXFx1MDAzZWZ3X2NhcF9pbmZvKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZC5jOjI0NDk6XFx0XFx0XFx0XFx0cmV0ID0gbXdpZmlleF9zZW5kX2NtZChwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmMtMjQ1MC1cXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgSG9zdENtZF9DTURfTUNfUE9MSUNZLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYy0yNDU3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmM6MjQ1ODpcXHRcXHRtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX0NIQU5fUkVHSU9OX0NGRyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZC5jLTI0NTktXFx0XFx0XFx0XFx0IEhvc3RDbWRfQUNUX0dFTl9HRVQsIDAsIE5VTEwsIHRydWUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYy0yNDYyLVxcdC8qIGdldCB0eCByYXRlICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYzoyNDYzOlxcdHJldCA9IG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfVFhfUkFURV9DRkcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYy0yNDY0LVxcdFxcdFxcdCAgICAgICBIb3N0Q21kX0FDVF9HRU5fR0VULCAwLCBOVUxMLCB0cnVlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmMtMjQ2OS1cXHQvKiBnZXQgdHggcG93ZXIgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZC5jOjI0NzA6XFx0cmV0ID0gbXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF9SRl9UWF9QV1IsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYy0yNDcxLVxcdFxcdFxcdCAgICAgICBIb3N0Q21kX0FDVF9HRU5fR0VULCAwLCBOVUxMLCB0cnVlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmMtMjQ3Ny1cXHQvKiBTZW5kIHJlcXVlc3QgdG8gZmlybXdhcmUgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZC5jOjI0Nzg6XFx0cmV0ID0gbXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF9BTVNEVV9BR0dSX0NUUkwsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYy0yNDc5LVxcdFxcdFxcdCAgICAgICBIb3N0Q21kX0FDVF9HRU5fU0VULCAwLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYy0yNDg0LVxcdC8qIHNldCBNQUMgQ29udHJvbCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmM6MjQ4NTpcXHRyZXQgPSBtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX01BQ19DT05UUk9MLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmMtMjQ4Ni1cXHRcXHRcXHQgICAgICAgSG9zdENtZF9BQ1RfR0VOX1NFVCwgMCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmMtMjQ5NS1cXHRcXHRhdXRvX2RzLmlkbGVfdGltZSA9IERFRVBfU0xFRVBfSURMRV9USU1FO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmM6MjQ5NjpcXHRcXHRyZXQgPSBtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EXzgwMl8xMV9QU19NT0RFX0VOSCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZC5jLTI0OTctXFx0XFx0XFx0XFx0ICAgICAgIEVOX0FVVE9fUFMsIEJJVE1BUF9BVVRPX0RTLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYy0yNTA1LVxcdFxcdHN0YXRlXzExZCA9IEVOQUJMRV8xMUQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYzoyNTA2OlxcdFxcdHJldCA9IG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfODAyXzExX1NOTVBfTUlCLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmMtMjUwNy1cXHRcXHRcXHRcXHQgICAgICAgSG9zdENtZF9BQ1RfR0VOX1NFVCwgRE9UMTFEX0ksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZC5jLTI1MTYtXFx0XFx0cGFja2V0X2FnZ3JfZW5hYmxlID0gdHJ1ZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZC5jOjI1MTc6XFx0XFx0bXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF9QQUNLRVRfQUdHUl9DVFJMLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmMtMjUxOC1cXHRcXHRcXHRcXHQgSG9zdENtZF9BQ1RfR0VOX1NFVCwgMCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmMtMjUyNS1cXHR0eF9jZmcudHhfaHRjYXAgPSBNV0lGSUVYX0ZXX0RFRl9IVFRYQ0ZHO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kLmM6MjUyNjpcXHRyZXQgPSBtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EXzExTl9DRkcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWQuYy0yNTI3LVxcdFxcdFxcdCAgICAgICBIb3N0Q21kX0FDVF9HRU5fU0VULCAwLCBcXHUwMDI2dHhfY2ZnLCB0cnVlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jPTk1PXN0YXRpYyBpbnQgbXdpZmlleF9yZXRfODAyXzExX3Jzc2lfaW5mbyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWRyZXNwLmMtMTM2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jOjEzNzpcXHRtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EXzgwMl8xMV9TVUJTQ1JJQkVfRVZFTlQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWRyZXNwLmMtMTM4LVxcdFxcdFxcdCAwLCAwLCBzdWJzY19ldnQsIGZhbHNlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jPTI1Nj1zdGF0aWMgaW50IG13aWZpZXhfcmV0X3R4X3JhdGVfY2ZnKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZHJlc3AuYy0zMTEtXFx0ZWxzZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jOjMxMjpcXHRcXHRyZXR1cm4gbXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF84MDJfMTFfVFhfUkFURV9RVUVSWSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZHJlc3AuYy0zMTMtXFx0XFx0XFx0XFx0XFx0SG9zdENtZF9BQ1RfR0VOX0dFVCwgMCwgTlVMTCwgZmFsc2UpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWRyZXNwLmM9NjkzPXN0YXRpYyBpbnQgbXdpZmlleF9yZXRfdmVyX2V4dChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWRyZXNwLmMtNzA4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jOjcwOTpcXHRcXHRcXHRpZiAobXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF84MDJfMTFfUFNfTU9ERV9FTkgsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWRyZXNwLmMtNzEwLVxcdFxcdFxcdFxcdFxcdCAgICAgRElTX0FVVE9fUFMsIEJJVE1BUF9BVVRPX0RTLCBcXHUwMDI2YXV0b19kcywgZmFsc2UpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2V2ZW50LmM9MTI1PXZvaWQgbXdpZmlleF9yZXNldF9jb25uZWN0X3N0YXRlKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsIHUxNiByZWFzb25fY29kZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfZXZlbnQuYy0yNDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9ldmVudC5jOjI0MTpcXHRtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX0dUS19SRUtFWV9PRkZMT0FEX0NGRyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2V2ZW50LmMtMjQyLVxcdFxcdFxcdCBIb3N0Q21kX0FDVF9HRU5fUkVNT1ZFLCAwLCBOVUxMLCBmYWxzZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2V2ZW50LmM9Njk2PWludCBtd2lmaWV4X3Byb2Nlc3Nfc3RhX2V2ZW50KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2V2ZW50LmMtODE5LVxcdFxcdG13aWZpZXhfZGJnKGFkYXB0ZXIsIEVWRU5ULCBcXFwiZXZlbnQ6IEhTX0FDVF9SRVFcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfZXZlbnQuYzo4MjA6XFx0XFx0cmV0ID0gbXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF84MDJfMTFfSFNfQ0ZHX0VOSCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2V2ZW50LmMtODIxLVxcdFxcdFxcdFxcdCAgICAgICAwLCAwLCBOVUxMLCBmYWxzZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2V2ZW50LmMtODUwLVxcdFxcdG13aWZpZXhfZGJnKGFkYXB0ZXIsIEVWRU5ULCBcXFwiZXZlbnQ6IEJHU19SRVBPUlRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfZXZlbnQuYzo4NTE6XFx0XFx0cmV0ID0gbXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF84MDJfMTFfQkdfU0NBTl9RVUVSWSxcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDg6MzA6NTcuODA4OTk1ODgyWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcxOTcyODc1NTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBtd2lmaWV4IERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYG13aWZpZXhgIGRyaXZlciBwYXRjaC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHRyYWNlIHRoZSBpbXBhY3Qgb2YgY2hhbmdlcywgc28gSSdtIHN0YXJ0aW5nIHdpdGggYG13aWZpZXhfc2VuZF9jbWRgIOKAkyBpdCdzIGEgY29tbW9uIGVudHJ5IHBvaW50LCBhbmQgSSBzZWUgYG13aWZpZXhfd2FpdF9xdWV1ZV9jb21wbGV0ZWAgY2FsbGVkIGZyb20gaXQuIFRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIEkgbm90aWNlIHRoYXQgYG13aWZpZXhfd2FpdF9xdWV1ZV9jb21wbGV0ZWAgaXMgYWxzbyB1c2VkIGluIGBtd2lmaWV4X3NjYW5fbmV0d29ya3NgLlxuXG5BaCwgdGhlIHBhdGNoIG1vZGlmaWVzIGBtd2lmaWV4X3dhaXRfcXVldWVfY29tcGxldGVgLiBJdCBsb29rcyBsaWtlIHRoZXkncmUgZGV0YWNoaW5nIHRoZSBjYWxsZXItb3duZWQgYnVmZmVyIGlmIHRoZSB3YWl0IGlzIGludGVycnVwdGVkLiBTbWFydCwgdGhhdCdzIGEgY2xhc3NpYyBmaXggZm9yIGEgdXNlLWFmdGVyLWZyZWUgb3IgYSBwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24gaXNzdWUgd2hlbiBhIGNvbW1hbmQgaXMgaW50ZXJydXB0ZWQuIFRoaXMgY2hhbmdlIGlzIHNwZWNpZmljYWxseSB0YXJnZXRpbmcgYG13aWZpZXhfd2FpdF9xdWV1ZV9jb21wbGV0ZWAuIEkgbmVlZCB0byBjb25maXJtIHRoZSByZWFjaGFiaWxpdHkgb2YgdGhpcywgaXQncyBjcml0aWNhbC5cblxuT2theSwgbGV0J3Mgc2VlLCBJcyB0aGlzIGFjdHVhbGx5IHJlYWNoYWJsZSwgYW5kIGZyb20gd2hlcmU/IEkgc2VlIGl0J3MgY2FsbGVkIGZyb20gYm90aCBgbXdpZmlleF9zZW5kX2NtZGAgYW5kIGBtd2lmaWV4X3NjYW5fbmV0d29ya3NgLiBTbywgY2FuIHRoaXMgYmUgdHJpZ2dlcmVkIGZyb20gdXNlciBzcGFjZT8gTGV0J3MgdHJhY2UgaXQuIGBtd2lmaWV4X3NlbmRfY21kYCBpdHNlbGYgaXMgY2FsbGVkIGJ5IGEgYnVuY2ggb2YgY2ZnODAyMTEgY2FsbGJhY2tzOiBgbXdpZmlleF9jZmc4MDIxMV9zZXRfdHhfcG93ZXJgLCBgbXdpZmlleF9jZmc4MDIxMV9kdW1wX3N0YXRpb25gLCBgbXdpZmlleF9jZmc4MDIxMV9zZXRfYW50ZW5uYWAsIGFuZCBvdGhlcnMuIEJpbmdvISBUaGF0J3MgZGVmaW5pdGVseSByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlIHZpYSBuZXRsaW5rLiBUaGF0J3MgZ29vZCB0byBrbm93LlxuXG5UaGUgcGF0Y2ggYWxzbyB0b3VjaGVzIGBtd2lmaWV4X3JlaW5pdF9zd2AgYW5kIGBtd2lmaWV4X2FkZF9jYXJkYCwgcmVtb3ZpbmcgYFdRX0hJR0hQUklgIGZyb20gYGFsbG9jX3dvcmtxdWV1ZWAuIE9rYXksIHRoYXQncyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBub3Qgc2VjdXJpdHktcmVsYXRlZCwgYnV0IHdvcnRoIG5vdGluZy5cblxuVGltZSB0byBmb2N1cyBpbiBvbiB0aGUga2V5IHN5bWJvbHMsIEkgdGhpbmsgYG13aWZpZXhfd2FpdF9xdWV1ZV9jb21wbGV0ZWAgaXMgdGhlIGhlYXJ0IG9mIGl0LCBidXQgaXQncyBjYWxsZWQgdGhyb3VnaCBgbXdpZmlleF9zZW5kX2NtZGAsIHdoaWNoIGlzIGNvcmUuIEl0IGlzIHRoZSBjb3JlIG9mIHRoaXMgZHJpdmVyLiBMb29raW5nIGF0IGBtd2lmaWV4X2FkZF9jYXJkYCBhbmQgYG13aWZpZXhfcmVpbml0X3N3YCwgc28gcHJvYmUgYW5kIHJlaW5pdC4gR29vZCwgdGhhdCBzZXRzIHRoZSBjb250ZXh0LiBOb3cgSSdtIGdvaW5nIHRvIGRpZyBkZWVwZXIgaW50byB0aGUgY2FsbCBwYXRocyB0byBgbXdpZmlleF93YWl0X3F1ZXVlX2NvbXBsZXRlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjIyOTQsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDg6MzE6MDUuMDA2Mjg3ODI1WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODE3MTM5MjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXdpZmlleF93YWl0X3F1ZXVlX2NvbXBsZXRlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NtZGV2dC5jPTU0Mj1pbnQgbXdpZmlleF9zZW5kX2NtZChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCB1MTYgY21kX25vLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NtZGV2dC5jLTY2Ny1cXHRcXHRpZiAoY21kX25vZGUtXFx1MDAzZXdhaXRfcV9lbmFibGVkKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jbWRldnQuYzo2Njg6XFx0XFx0XFx0cmV0ID0gbXdpZmlleF93YWl0X3F1ZXVlX2NvbXBsZXRlKGFkYXB0ZXIsIGNtZF9ub2RlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY21kZXZ0LmMtNjY5LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg9MTQ3Nj1pbnQgbXdpZmlleF9jb3B5X21jYXN0X2FkZHIoc3RydWN0IG13aWZpZXhfbXVsdGljYXN0X2xpc3QgKm1saXN0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTQ3Ny1cXHRcXHRcXHQgICAgc3RydWN0IG5ldF9kZXZpY2UgKmRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaDoxNDc4OmludCBtd2lmaWV4X3dhaXRfcXVldWVfY29tcGxldGUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTE0NzktXFx0XFx0XFx0XFx0c3RydWN0IGNtZF9jdHJsX25vZGUgKmNtZF9xdWV1ZWQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYz0xNDcwPWludCBtd2lmaWV4X3NjYW5fbmV0d29ya3Moc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMTU0Mi1cXHRcXHRcXHRcXHRcXHQgICAgXFxcIndhaXQgaW50ZXJuYWwgc2NhblxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYzoxNTQzOlxcdFxcdFxcdFxcdG13aWZpZXhfd2FpdF9xdWV1ZV9jb21wbGV0ZShhZGFwdGVyLCBjbWRfbm9kZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0xNTQ0LVxcdFxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYz0yNz1pbnQgbXdpZmlleF9jb3B5X21jYXN0X2FkZHIoc3RydWN0IG13aWZpZXhfbXVsdGljYXN0X2xpc3QgKm1saXN0LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jLTQ0LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYzo0NTppbnQgbXdpZmlleF93YWl0X3F1ZXVlX2NvbXBsZXRlKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jLTQ2LVxcdFxcdFxcdFxcdHN0cnVjdCBjbWRfY3RybF9ub2RlICpjbWRfcXVldWVkKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwODozMTowNS4xODgwMTAwNzFaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDEyNDA2MDczMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGJyZWFrZG93biBvZiB0aGlzLlxuXG4qKkFuYWx5emluZyBQb3RlbnRpYWwgRm9jdXMgU3ltYm9scyBpbiB0aGUgbXdpZmlleCBEcml2ZXIqKlxuXG5SaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgbXdpZmlleGAgY29kZSwgYW5kIEkgc2VlIHRoYXQgYG13aWZpZXhfd2FpdF9xdWV1ZV9jb21wbGV0ZWAgZ2V0cyBjYWxsZWQgZnJvbSBib3RoIGBtd2lmaWV4X3NlbmRfY21kYCBhbmQgYG13aWZpZXhfc2Nhbl9uZXR3b3Jrc2AuICBUaGF0J3MgaW50ZXJlc3RpbmcuICBgbXdpZmlleF9zZW5kX2NtZGAgc2VlbXMgbGlrZSBhIHByZXR0eSBpbXBvcnRhbnQgZnVuY3Rpb24sIGEgbmF0dXJhbCBmb2N1cyBwb2ludCBmb3IgZGVlcGVyIGludmVzdGlnYXRpb24sIGFuZCBgbXdpZmlleF9zY2FuX25ldHdvcmtzYCBpcyBkZWZpbml0ZWx5IHVwIHRoZXJlIHRvby4gVGhvc2UgYXJlIHNvbGlkIGNhbmRpZGF0ZXMgYXMgc3ltYm9scyB0byBmb2N1cyBvbi4gQnV0IHdhaXQsIGBtd2lmaWV4X3dhaXRfcXVldWVfY29tcGxldGVgIGl0c2VsZiBpcyBwb3RlbnRpYWxseSBhIHNpZ25pZmljYW50IGZ1bmN0aW9uLCBnaXZlbiBpdHMgdXNlIGluIHRob3NlIHR3by5cblxuTm93LCBhIHF1aWNrIGNoZWNrLi4uaXMgYG13aWZpZXhfd2FpdF9xdWV1ZV9jb21wbGV0ZWAgc3RhdGljPyBObywgaXQncyBub3QuIFRoYXQgbWFrZXMgaXQgZXZlbiAqbW9yZSogaW50ZXJlc3RpbmcgYXMgYSBwb3RlbnRpYWwgZm9jdXMgc3ltYm9sIGluIGl0cyBvd24gcmlnaHQsIGJlY2F1c2UgaXQncyBleHRlcm5hbGx5IHZpc2libGUuIEl0J3MgbGlrZWx5IGludm9sdmVkIGluIGEgY29yZSBzeW5jaHJvbml6YXRpb24gb3IgY29tcGxldGlvbiBtZWNoYW5pc20uIFNvLCBpdCBkZWZpbml0ZWx5IHdhcnJhbnRzIGEgY2xvc2VyIGxvb2suIEknbGwgbmVlZCB0byByZW1lbWJlciB0byBjaGVjayBvdXQgaXRzIHVzYWdlcyBhbmQgaW50ZXJhY3Rpb25zLlxuXG5Pa2F5LCBsZXQncyBhbHNvIGtlZXAgYW4gZXllIG9uIGBtd2lmaWV4X3JlaW5pdF9zd2AgYW5kIGBtd2lmaWV4X2FkZF9jYXJkYCDigJMgdGhleSBjb3VsZCBhbHNvIGJlIHJlbGF0ZWQgYW5kIGluZmx1ZW5jZSB0aGUgYmVoYXZpb3IgYXJvdW5kIGNvbW1hbmQgY29tcGxldGlvbiBvciBxdWV1aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzk1MiwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwODozMTowOS4zMTIwNzQyMjJaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyODQyMjEwNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtd2lmaWV4X3JlaW5pdF9zd1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmM9MTUyOT1pbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jOjE1MzA6bXdpZmlleF9yZWluaXRfc3coc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jLTE1MzEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYy0xNjIyLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jOjE2MjM6RVhQT1JUX1NZTUJPTF9HUEwobXdpZmlleF9yZWluaXRfc3cpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmMtMTYyNC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg9MTY5Nj12b2lkIG13aWZpZXhfZGV2X2RlYnVnZnNfcmVtb3ZlKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTY5Ny0jZW5kaWZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oOjE2OTg6aW50IG13aWZpZXhfcmVpbml0X3N3KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTY5OS1pbnQgbXdpZmlleF9zaHV0ZG93bl9zdyhzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmM9NTQ2PXN0YXRpYyB2b2lkIG13aWZpZXhfcGNpZV9yZXNldF9kb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYy01NjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYzo1NjI6XFx0cmV0ID0gbXdpZmlleF9yZWluaXRfc3coYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYy01NjMtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmM9MjY4MD1zdGF0aWMgdm9pZCBtd2lmaWV4X3NkaW9fY2FyZF9yZXNldF93b3JrKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jLTI3MDEtXFx0Y2FzZSAwOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmM6MjcwMjpcXHRcXHRyZXQgPSBtd2lmaWV4X3JlaW5pdF9zdyhhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jLTI3MDMtXFx0XFx0aWYgKHJldClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDg6MzE6MDkuNTQwNTAyMjk2WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1MzMzMTM3NTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzczpcblxuKipEZWVwZXIgRGl2ZSBpbnRvIHRoZSBXaUZpIERyaXZlciBJbml0aWFsaXphdGlvbioqXG5cbkFscmlnaHQsIGxldCBtZSBzZWUuLi4gSSdtIGxvb2tpbmcgYXQgdGhlIGBtd2lmaWV4X3JlaW5pdF9zd2AgZnVuY3Rpb24gaW4gdGhlIE1hcnZlbGwgV2lGaSBkcml2ZXIuIEhtbSwgSSBrbm93IHRoYXQgZnVuY3Rpb24ncyByZXNwb25zaWJpbGl0eSBpcyB0byByZWluaXRpYWxpemUgdGhlIHNvZnR3YXJlIGFzcGVjdHMgb2YgdGhlIGRyaXZlciwgYW5kIGl0cyBsaWtlbHkgdXNlZCBpbiBhIHZhcmlldHkgb2Ygc2l0dWF0aW9ucy4gU28sIGl0IGFwcGVhcnMgdGhhdCBgbXdpZmlleF9yZWluaXRfc3dgIGlzICpvbmx5KiBldmVyIGNhbGxlZCBmcm9tIHRoZSBQQ0llIGFuZCBTRElPIGRyaXZlciBjb2RlLiBUaGF04oCZcyBpbnRlcmVzdGluZywgYXMgdGhpcyBtZWFucyBpdCBpcyBsaWtlbHkgdHJpZ2dlcmVkIGJ5IGhhcmR3YXJlIHJlbGF0ZWQgZXZlbnRzIHNwZWNpZmljIHRvIHRob3NlIGJ1c3Nlcy4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgbWVhbnMgaW4gY29udGV4dCBvZiB0aGUgd2hvbGUgZHJpdmVyLlxuXG5XYWl0IGEgc2Vjb25kLiBJIG5lZWQgdG8gYmUgbW9yZSB0aG9yb3VnaCBoZXJlISBHb2luZyBiYWNrIHVwIHRoZSBjYWxsIHN0YWNrLCBJIHNlZSBgbXdpZmlleF9hZGRfY2FyZGAgaXMgZGVmaW5pdGVseSBjYWxsZWQgZnJvbSB0aGUgVVNCIGRyaXZlciBjb2RlISBTbywgYG13aWZpZXhfYWRkX2NhcmRgIGlzIHVzZWQgd2hlbiBhIFVTQiBNYXJ2ZWxsIGRldmljZSBpcyBjb25uZWN0ZWQuIFRoaXMgaXMgYW4gaW1wb3J0YW50IGRldGFpbC4gTm93LCBob3cgZG9lcyB0aGlzIHJlbGF0aW9uc2hpcCBpbXBhY3QgdGhlIGluaXRpYWxpemF0aW9uIHByb2Nlc3MsIGFuZCBob3cgd2lsbCBpdCBpbmZsdWVuY2UgdGhlIHJlc3Qgb2YgbXkgd29yaz8gT2theSwgSSd2ZSBnb3QgdG8gaW52ZXN0aWdhdGUgd2hhdCB0aGUgZGlmZmVyZW5jZSBpcyBiZXR3ZWVuIHRoZSB0d28gY2FsbCBwYXRocyBhbmQgd2h5IHRoZXJlIG1pZ2h0IGJlIHN1Y2ggYSBkaXN0aW5jdCBkaWZmZXJlbmNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTA1NiwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA4OjMxOjEzLjA3MzgxOTYyM1oiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYzMDIxOTk2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm13aWZpZXhfYWRkX2NhcmRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jPTE1MjQ9RVhQT1JUX1NZTUJPTF9HUEwobXdpZmlleF9zaHV0ZG93bl9zdyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jLTE1MjYtLyogVGhpcyBmdW5jdGlvbiBjYW4gYmUgdXNlZCBmb3IgcmVpbml0dGluZyB0aGUgYWRhcHRlciBTVy4gUmVxdWlyZWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jOjE1Mjc6ICogY29kZSBpcyBleHRyYWN0ZWQgZnJvbSBtd2lmaWV4X2FkZF9jYXJkKClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jLTE1MjgtICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jPTE2ODg9aW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYzoxNjg5Om13aWZpZXhfYWRkX2NhcmQodm9pZCAqY2FyZCwgc3RydWN0IGNvbXBsZXRpb24gKmZ3X2RvbmUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYy0xNjkwLVxcdFxcdCBjb25zdCBzdHJ1Y3QgbXdpZmlleF9pZl9vcHMgKmlmX29wcywgdTggaWZhY2VfdHlwZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmMtMTc4Mi19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYzoxNzgzOkVYUE9SVF9TWU1CT0xfR1BMKG13aWZpZXhfYWRkX2NhcmQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmMtMTc4NC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg9MTQ2ND1pbnQgbXdpZmlleF9pbml0X3NodXRkb3duX2Z3KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTE0NjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaDoxNDY3OmludCBtd2lmaWV4X2FkZF9jYXJkKHZvaWQgKmNhcmQsIHN0cnVjdCBjb21wbGV0aW9uICpmd19kb25lLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTQ2OC1cXHRcXHQgICAgIGNvbnN0IHN0cnVjdCBtd2lmaWV4X2lmX29wcyAqaWZfb3BzLCB1OCBpZmFjZV90eXBlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYz0zNzY9c3RhdGljIGludCBtd2lmaWV4X3BjaWVfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jLTQxNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jOjQxNTpcXHRpZiAobXdpZmlleF9hZGRfY2FyZChjYXJkLCBcXHUwMDI2Y2FyZC1cXHUwMDNlZndfZG9uZSwgXFx1MDAyNnBjaWVfb3BzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmMtNDE2LVxcdFxcdFxcdCAgICAgTVdJRklFWF9QQ0lFLCBcXHUwMDI2cGRldi1cXHUwMDNlZGV2KSkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYz01NTE9bXdpZmlleF9zZGlvX3Byb2JlKHN0cnVjdCBzZGlvX2Z1bmMgKmZ1bmMsIGNvbnN0IHN0cnVjdCBzZGlvX2RldmljZV9pZCAqaWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jLTYwNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jOjYwNzpcXHRyZXQgPSBtd2lmaWV4X2FkZF9jYXJkKGNhcmQsIFxcdTAwMjZjYXJkLVxcdTAwM2Vmd19kb25lLCBcXHUwMDI2c2Rpb19vcHMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYy02MDgtXFx0XFx0XFx0ICAgICAgIE1XSUZJRVhfU0RJTywgXFx1MDAyNmZ1bmMtXFx1MDAzZWRldik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM9Mzg1PXN0YXRpYyBpbnQgbXdpZmlleF91c2JfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNTE0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo1MTU6XFx0cmV0ID0gbXdpZmlleF9hZGRfY2FyZChjYXJkLCBcXHUwMDI2Y2FyZC1cXHUwMDNlZndfZG9uZSwgXFx1MDAyNnVzYl9vcHMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTUxNi1cXHRcXHRcXHQgICAgICAgTVdJRklFWF9VU0IsIFxcdTAwMjZjYXJkLVxcdTAwM2V1ZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy01MTctXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo1MTg6XFx0XFx0cHJfZXJyKFxcXCIlczogbXdpZmlleF9hZGRfY2FyZCBmYWlsZWQ6ICVkXFxcXG5cXFwiLCBfX2Z1bmNfXywgcmV0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNTE5LVxcdFxcdHVzYl9yZXNldF9kZXZpY2UodWRldik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA4OjMxOjEzLjIzNjg0ODE2OFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODQxNjc5MjAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQ29yZSBGdW5jdGlvbnMgaW4gdGhlIE1hcnZlbGwgV2ktRmkgRHJpdmVyKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duIHN5c3RlbWF0aWNhbGx5LiBJIHNlZSB0aGF0IGBtd2lmaWV4X2FkZF9jYXJkYCBpcyBjYWxsZWQgZnJvbSBgbXdpZmlleF91c2JfcHJvYmVgLCBzbyBpdCdzIGRlZmluaXRlbHkgcmVhY2hhYmxlIOKAkyB0aGF0J3MgYSBrZXkgZW50cnkgcG9pbnQgZHVyaW5nIGRldmljZSBpbml0aWFsaXphdGlvbi4gSSBuZWVkIHRvIGtlZXAgdGhhdCBpbiBtaW5kLCBldmVuIHRob3VnaCBJJ2Qgbm9ybWFsbHkgZm9jdXMgb24gcnVudGltZSBmdW5jdGlvbnMuXG5cbk5leHQsIGBtd2lmaWV4X3dhaXRfcXVldWVfY29tcGxldGVgIGlzIGNydWNpYWwsIGJlaW5nIGNhbGxlZCBmcm9tIGJvdGggYG13aWZpZXhfc2VuZF9jbWRgIGFuZCBgbXdpZmlleF9zY2FuX25ldHdvcmtzYC4gVGhhdCB0ZWxscyBtZSB0aGlzIGlzIGEgbGlrZWx5IHBvaW50IG9mIGNvbnRlbnRpb24sIGVzcGVjaWFsbHkgc2luY2UgYG13aWZpZXhfc2VuZF9jbWRgIGl0c2VsZiBpcyBjYWxsZWQgZnJvbSBudW1lcm91cyBgY2ZnODAyMTFgIGNhbGxiYWNrcy4gVGhhdCBlc3RhYmxpc2hlcyBhIGNsZWFyIGNoYWluIG9mIGNyaXRpY2FsIGZ1bmN0aW9ucy4gVGhlcmVmb3JlLCBteSBwcmltYXJ5IGZvY3VzIHNob3VsZCBiZSBgbXdpZmlleF93YWl0X3F1ZXVlX2NvbXBsZXRlYCwgYG13aWZpZXhfc2VuZF9jbWRgLCBgbXdpZmlleF9zY2FuX25ldHdvcmtzYCwgYW5kLCBhcyBJIG1lbnRpb25lZCwgYG13aWZpZXhfYWRkX2NhcmRgIGR1ZSB0byBpdHMgcm9sZSBpbiB0aGUgcHJvYmUgZnVuY3Rpb24uIEl0IGlzIGEgaG90IHBhdGggZHVyaW5nIGluaXRpYWxpemF0aW9uLCBidXQgaXQncyBpbXBvcnRhbnQgdG8gaW5jbHVkZSBpdCBpbiB0aGUgYW5hbHlzaXMuXG5cbk5vdywgYmVmb3JlIEkgZGlnIGRlZXBlciwgSSBuZWVkIHRvIHZlcmlmeSB0aGF0IEkndmUgYWNjb3VudGVkIGZvciBhbnkgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJIHNob3VsZCBjaGVjayBgTVdJRklFWGAsIGBNV0lGSUVYX1VTQmAsIGBDRkc4MDIxMWAsIGFuZCBgVVNCYCB0byBlbnN1cmUgSSdtIGFjY291bnRpbmcgZm9yIGFsbCBwb3NzaWJsZSBidWlsZCBjb25maWd1cmF0aW9ucy4gTGV0IG1lIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoZSBkZXBlbmRlbmNpZXMgcmVsYXRlZCB0byBgTVdJRklFWF9VU0JgLCBqdXN0IHRvIGJlIGNlcnRhaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2NTAzLCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA4OjMxOjE4LjA3ODUzMDk4WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODE5NTg0ODkyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNV0lGSUVYX1VTQlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZz0yNT1jb25maWcgTVdJRklFWF9QQ0lFXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0zNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzozNzpjb25maWcgTVdJRklFWF9VU0JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0zOC1cXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBXaUZpLUV4IERyaXZlciBmb3IgVVNCODc2Ni84Nzk3Lzg5OTdcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA4OjMxOjE5Ljg5ODEyNDgzMloiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTc0MDI0MjA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTWFydmVsbCBXaUZpLUV4IERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gd2UncmUgbG9va2luZyBhdCB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIE1hcnZlbGwgV2lGaS1FeCBkcml2ZXIsIHNwZWNpZmljYWxseSB0aGUgVVNCIHZhcmlhbnQsIGBNV0lGSUVYX1VTQmAuIFdlIGFscmVhZHkgd2VudCB0aHJvdWdoIHRoZSBzb3VyY2UgZmlsZTsgc28gdGhhdCBwYXJ0IGlzIGRvbmUuIFRoaXMgYE1XSUZJRVhfVVNCYCBpcyB0aGUgcHJpbWFyeSBjb25maWd1cmF0aW9uIGRpcmVjdGl2ZSBoZXJlLiBOb3csIGxldCdzIGJyZWFrIGRvd24gdGhlIGRlcGVuZGVuY2llcy4gSXQgcmVsaWVzIG9uIGJvdGggYE1XSUZJRVhgIGFuZCBgVVNCYCwgd2hpY2ggbWFrZXMgc2Vuc2U7IGl0J3MgYSBNYXJ2ZWxsIFdpRmkgZHJpdmVyIGFuZCBpdCdzIGNvbW11bmljYXRpbmcgb3ZlciBVU0IuIFxuXG5Ob3csIEknbSBub3RpbmcgdGhhdCBgTVdJRklFWGAgKml0c2VsZiogaGFzIGEgZGVwZW5kZW5jeS4gTGV0J3Mgc2VlLi4uIEFoLCB5ZXMsIGBNV0lGSUVYYCBkZXBlbmRzIG9uIGBDRkc4MDIxMWAuIFRoYXQncyBzdGFuZGFyZDsgaXQncyB0aGUgbWFjODAyMTEgd2lyZWxlc3MgY29uZmlndXJhdGlvbiBpbnRlcmZhY2UuIE5vdywgSSB2YWd1ZWx5IHJlY2FsbCBhIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGBDRkc4MDIxMWAgYW5kIGBNQUM4MDIxMWAsIHdoaWNoIGlzIHRoZSBtYWM4MDIxMSBzdGFjayBpdHNlbGYuIEknbSBkb3VibGUtY2hlY2tpbmcgYmVjYXVzZSBzb21ldGltZXMgdGhlc2UgZGVwZW5kZW5jaWVzIGFyZSBhIGJpdCB0cmlja3kgdG8gZm9sbG93LiBIbW0sICpubyosIGl0J3MgdGhlIG9wcG9zaXRlISBgTUFDODAyMTFgIGRlcGVuZHMgb24gYENGRzgwMjExYC4gUmlnaHQuIFNvIHdlIG1pZ2h0IG5lZWQgdG8gY2hlY2sgdGhlIGBDRkc4MDIxMWAgY29uZmlnIGFzIHdlbGwsIHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gb3RoZXIgY29uZmlndXJhdGlvbnMgaW4gcGxheS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjcyMzEsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDg6MzE6MjQuNDcyMTUxNzAxWiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MDc3MjQ1NjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIENGRzgwMjExXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC93aXJlbGVzcy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC93aXJlbGVzcy9LY29uZmlnPTE0PWNvbmZpZyBXRVhUX1BSSVZcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE2LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE3OmNvbmZpZyBDRkc4MDIxMVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE4LVxcdHRyaXN0YXRlIFxcXCJjZmc4MDIxMSAtIHdpcmVsZXNzIGNvbmZpZ3VyYXRpb24gQVBJXFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWc9Mzg9Y29uZmlnIE5MODAyMTFfVEVTVE1PREVcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTUxLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjUyOmNvbmZpZyBDRkc4MDIxMV9ERVZFTE9QRVJfV0FSTklOR1NcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy01My1cXHRib29sIFxcXCJlbmFibGUgZGV2ZWxvcGVyIHdhcm5pbmdzXFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctNjctXFxubmV0L3dpcmVsZXNzL0tjb25maWc6Njg6Y29uZmlnIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTY5LVxcdGJvb2wgXFxcImNmZzgwMjExIGNlcnRpZmljYXRpb24gb251c1xcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTg4LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjg5OmNvbmZpZyBDRkc4MDIxMV9SRVFVSVJFX1NJR05FRF9SRUdEQlxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTkwLVxcdGJvb2wgXFxcInJlcXVpcmUgcmVnZGIgc2lnbmF0dXJlXFxcIiBpZiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTk4LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjk5OmNvbmZpZyBDRkc4MDIxMV9VU0VfS0VSTkVMX1JFR0RCX0tFWVNcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMDAtXFx0Ym9vbCBcXFwiYWxsb3cgcmVnZGIga2V5cyBzaGlwcGVkIHdpdGggdGhlIGtlcm5lbFxcXCIgaWYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMTAtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTExOmNvbmZpZyBDRkc4MDIxMV9FWFRSQV9SRUdEQl9LRVlESVJcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMTItXFx0c3RyaW5nIFxcXCJhZGRpdGlvbmFsIHJlZ2RiIGtleSBkaXJlY3RvcnlcXFwiIGlmIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTIxLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjEyMjpjb25maWcgQ0ZHODAyMTFfUkVHX0NFTExVTEFSX0hJTlRTXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTIzLVxcdGJvb2wgXFxcImNmZzgwMjExIHJlZ3VsYXRvcnkgc3VwcG9ydCBmb3IgY2VsbHVsYXIgYmFzZSBzdGF0aW9uIGhpbnRzXFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTM0LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjEzNTpjb25maWcgQ0ZHODAyMTFfUkVHX1JFTEFYX05PX0lSXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTM2LVxcdGJvb2wgXFxcImNmZzgwMjExIHN1cHBvcnQgZm9yIE5PX0lSIHJlbGF4YXRpb25cXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNTgtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTU5OmNvbmZpZyBDRkc4MDIxMV9ERUZBVUxUX1BTXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTYwLVxcdGJvb2wgXFxcImVuYWJsZSBwb3dlcnNhdmUgYnkgZGVmYXVsdFxcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE2OC1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNjk6Y29uZmlnIENGRzgwMjExX0RFQlVHRlNcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNzAtXFx0Ym9vbCBcXFwiY2ZnODAyMTEgRGVidWdGUyBlbnRyaWVzXFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTc2LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE3Nzpjb25maWcgQ0ZHODAyMTFfQ1JEQV9TVVBQT1JUXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTc4LVxcdGJvb2wgXFxcInN1cHBvcnQgQ1JEQVxcXCIgaWYgRVhQRVJUXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xODYtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTg3OmNvbmZpZyBDRkc4MDIxMV9XRVhUXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTg4LVxcdGJvb2wgXFxcImNmZzgwMjExIHdpcmVsZXNzIGV4dGVuc2lvbnMgY29tcGF0aWJpbGl0eVxcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE5My1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxOTQ6Y29uZmlnIENGRzgwMjExX0tVTklUX1RFU1RcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xOTUtXFx0dHJpc3RhdGUgXFxcIktVbml0IHRlc3RzIGZvciBjZmc4MDIxMVxcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwODozMToyNS4xNzk4ODIzMzJaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDkzNTcwODI2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipLZXJuZWwgQ29uZmlndXJhdGlvbiBEZWVwIERpdmUqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSBrZXJuZWwgY29uZmlndXJhdGlvbnMgcmVsYXRlZCB0byB0aGUgTWFydmVsbCBXaUZpIGRyaXZlciwgc3BlY2lmaWNhbGx5IGBNV0lGSUVYYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgYENGRzgwMjExYCBpcyB0aGUgY29yZSBjb25maWd1cmF0aW9uIHBpZWNlLiBUaGF0IG1ha2VzIHNlbnNlOyBpdCdzIHRoZSBnZW5lcmljIGNvbmZpZ3VyYXRpb24gZnJhbWV3b3JrIGZvciB3aXJlbGVzcyBkcml2ZXJzLiBTbywgSSBzZWUgdGhhdCB3ZSBuZWVkIGBNV0lGSUVYYCwgYE1XSUZJRVhfVVNCYCwgYW5kIG9mIGNvdXJzZSBgQ0ZHODAyMTFgLiBOb3csIHRoZSBzeXN0ZW0gd2lsbCBuYXR1cmFsbHkgbmVlZCBgVVNCYCBlbmFibGVkLCB3aGljaCBpcyB0eXBpY2FsbHkgaGFuZGxlZCBpbiBzeXprYWxsZXIsIGJ1dCBJIHNob3VsZCBiZSBleHBsaWNpdCBhbmQgbWFrZSBzdXJlIGl0J3MgaW5jbHVkZWQgaGVyZS4gSXQncyBlYXN5IHRvIG92ZXJsb29rIHRoZXNlIGJhc2ljcy5cblxuSSB3YXMgZXhwZWN0aW5nIGBNQUM4MDIxMWAgdG8gYmUgbmVjZXNzYXJ5IGFzIHdlbGwsIHNpbmNlIGl0J3MgY29tbW9ubHkgaW52b2x2ZWQgaW4gd2lyZWxlc3MgaW1wbGVtZW50YXRpb25zLiBIb3dldmVyLCBJIG5vdGljZSB0aGF0IHRoZSBgTVdJRklFWGAgZHJpdmVyIG9ubHkgZXhwbGljaXRseSBzdGF0ZXMgYSBkZXBlbmRlbmN5IG9uIGBDRkc4MDIxMWAuIEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0aGF0IGRlcGVuZGVuY3kgbGlzdCBqdXN0IHRvIG1ha2UgYWJzb2x1dGVseSBjZXJ0YWluIEkgaGF2ZW4ndCBtaXNzZWQgYW55dGhpbmcgb2J2aW91cy4gTGV0J3MgcmV2aXNpdCB0aGUgYE1XSUZJRVhgIGRlcGVuZGVuY2llcyB0byBiZSBzdXJlLiBJdCdzIGVhc3kgdG8gbWFrZSBhc3N1bXB0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg2MzIsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDg6MzE6MzAuMTE1NTk1MDIyWiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwNjI1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIE1XSUZJRVhcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIFdpRmktRXggRHJpdmVyXFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBDRkc4MDIxMVxcbiAgIDU6XFx0XFx0aGVscFxcbiAgIDY6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb24gTWFydmVsbFxcbiAgIDc6XFx0XFx0ICA4MDIuMTFuL2FjIGNoaXBzZXRzLlxcbiAgIDg6XFx0XFxuICAgOTpcXHRcXHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXFxuICAxMDpcXHRcXHQgIG13aWZpZXguXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA4OjMxOjMwLjExNTgwNDAzMloiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTUyOTI2NzYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgV2lGaSBEcml2ZXIgUGF0Y2gqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFllcywgd2UncmUgZGVhbGluZyB3aXRoIGBDRkc4MDIxMWAgYWdhaW4sIGdvb2QuIE15IGluaXRpYWwgc2NhbiBvZiB0aGUgY29uZmlncyBzaG93cyB3ZSBoYXZlIGBNV0lGSUVYYCwgYE1XSUZJRVhfVVNCYCwgYENGRzgwMjExYCwgYW5kIGBVU0JgIGluIHBsYXkuIEknbSBmb2N1c2luZyBvbiBrZXkgc3ltYm9sczogYG13aWZpZXhfd2FpdF9xdWV1ZV9jb21wbGV0ZWAsIGBtd2lmaWV4X3NlbmRfY21kYCwgYG13aWZpZXhfc2Nhbl9uZXR3b3Jrc2AsIGFuZCBgbXdpZmlleF9hZGRfY2FyZGAuXG5cbkhtbSwgYSBxdWljayBvYnNlcnZhdGlvbiDigJMgYG13aWZpZXhfcmVpbml0X3N3YCBpc24ndCByZWFjaGFibGUgZnJvbSBVU0IsIGJ1dCBgbXdpZmlleF9hZGRfY2FyZGAgaXMuIFRoaXMgcGF0Y2ggaXMgbW9kaWZ5aW5nIHRoZXNlIHR3byBmdW5jdGlvbnMsIGBtd2lmaWV4X2FkZF9jYXJkYCBhbmQgYG13aWZpZXhfcmVpbml0X3N3YCwgc3BlY2lmaWNhbGx5IHJlbW92aW5nIGBXUV9ISUdIUFJJYCBmcm9tIGBhbGxvY193b3JrcXVldWVgLiBJbnRlcmVzdGluZy4gSXQgbG9va3MgbGlrZSB0aGV5J3JlIHRyeWluZyB0byByZWZpbmUgaG93IHRoZXNlIHdvcmsgcXVldWVzIGFyZSBjcmVhdGVkLlxuXG5BbHNvLCBpdCBhbHRlcnMgYG13aWZpZXhfd2FpdF9xdWV1ZV9jb21wbGV0ZWAgdG8gaGFuZGxlIGEgc2NlbmFyaW8gd2hlcmUgdGhlIHdhaXQgaXMgaW50ZXJydXB0ZWQuIFNwZWNpZmljYWxseSwgaXQgZGV0YWNoZXMgdGhlIGNhbGxlci1vd25lZCBidWZmZXIgZnJvbSB0aGUgY3VycmVudCBjb21tYW5kIGluIHRoYXQgY2FzZS4gVGhhdCdzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIG5vdCBqdXN0IGEgY29zbWV0aWMgb25lLiBMaWtlbHkgZGVhbGluZyB3aXRoIGEgcmFjZSBjb25kaXRpb24gb3Igc29tZSBvdGhlciBjb25jdXJyZW5jeSBpc3N1ZS5cblxuSSBzaG91bGQgdmVyaWZ5IHRoYXQgYG13aWZpZXhfd2FpdF9xdWV1ZV9jb21wbGV0ZWAgaXNuJ3Qgc3RhdGljOyBJJ2xsIG5lZWQgdG8gY29uZmlybSBpdHMgdmlzaWJpbGl0eSBiZWZvcmUgZ29pbmcgYW55IGZ1cnRoZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5MTY5LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDg6MzE6MzUuMjY4NzM0NTM2WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NDU0NDQ2MTIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaW50IG13aWZpZXhfd2FpdF9xdWV1ZV9jb21wbGV0ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg9MTQ3Nj1pbnQgbXdpZmlleF9jb3B5X21jYXN0X2FkZHIoc3RydWN0IG13aWZpZXhfbXVsdGljYXN0X2xpc3QgKm1saXN0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTQ3Ny1cXHRcXHRcXHQgICAgc3RydWN0IG5ldF9kZXZpY2UgKmRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaDoxNDc4OmludCBtd2lmaWV4X3dhaXRfcXVldWVfY29tcGxldGUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTE0NzktXFx0XFx0XFx0XFx0c3RydWN0IGNtZF9jdHJsX25vZGUgKmNtZF9xdWV1ZWQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jPTI3PWludCBtd2lmaWV4X2NvcHlfbWNhc3RfYWRkcihzdHJ1Y3QgbXdpZmlleF9tdWx0aWNhc3RfbGlzdCAqbWxpc3QsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmMtNDQtICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jOjQ1OmludCBtd2lmaWV4X3dhaXRfcXVldWVfY29tcGxldGUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmMtNDYtXFx0XFx0XFx0XFx0c3RydWN0IGNtZF9jdHJsX25vZGUgKmNtZF9xdWV1ZWQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA4OjMxOjM1LjkxNDE4NDg5OVoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTM2NzcyOTM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipWZXJpZnlpbmcgYSBEeW5hbWljIEZ1bmN0aW9uIENhbGwqKlxuXG5BbHJpZ2h0LCB0aGUgY29yZSBwb2ludCBpcyBlc3RhYmxpc2hlZDogd2UncmUgZGVhbGluZyB3aXRoIHNvbWV0aGluZyBkeW5hbWljLCB3aGljaCBpcyBnb29kLiBUaGF0J3MgdGhlIGJhc2VsaW5lLiBOb3csIEkgbmVlZCB0byBjb25maXJtIHNvbWV0aGluZyBzcGVjaWZpYy4gTGV0J3Mgc2VlLi4uIHRoZSBjb2RlJ3MgZ290IGBtd2lmaWV4X3NlbmRfY21kYCBpbiBpdC4gSSBuZWVkIHRvIG1ha2UgKmFic29sdXRlbHkqIHN1cmUgdGhhdCBmdW5jdGlvbiBpc24ndCBkZWNsYXJlZCBhcyBgc3RhdGljYC4gSWYgaXQgKndlcmUqIHN0YXRpYywgdGhhdCB3b3VsZCBjb25zdHJhaW4gaXRzIHNjb3BlIGluIGEgd2F5IHRoYXQgd291bGRuJ3Qgaml2ZSB3aXRoIHRoZSBtb2RlbCBvZiBob3cgSSdtIHRoaW5raW5nIGFib3V0IGl0LCBoZXJlLiBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgaXQncyBhY2Nlc3NpYmxlIGZyb20gb3RoZXIgbW9kdWxlcywgdGhhdCBpdCdzIGdsb2JhbGx5IHZpc2libGUuIFNvLCB0aGUgdmVyaWZpY2F0aW9uOiBcIklzIGBtd2lmaWV4X3NlbmRfY21kYCBhY3R1YWxseSBzdGF0aWM/XCIgVGhhdCdzIHRoZSBrZXkgcXVlc3Rpb24uIEdvdHRhIGNoZWNrIHRoYXQgZGV0YWlsLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDA3MSwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA4OjMxOjM5LjA1MDk2MDkwNVoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU4ODQyNjg2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImludCBtd2lmaWV4X3NlbmRfY21kXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NtZGV2dC5jPTQ3MD1pbnQgbXdpZmlleF9wcm9jZXNzX2V2ZW50KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY21kZXZ0LmMtNTQxLSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jbWRldnQuYzo1NDI6aW50IG13aWZpZXhfc2VuZF9jbWQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgdTE2IGNtZF9ubyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY21kZXZ0LmMtNTQzLVxcdFxcdCAgICAgdTE2IGNtZF9hY3Rpb24sIHUzMiBjbWRfb2lkLCB2b2lkICpkYXRhX2J1ZiwgYm9vbCBzeW5jKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaD0xMDc2PWludCBtd2lmaWV4X2NvbXBsZXRlX2NtZChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xMDc4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg6MTA3OTppbnQgbXdpZmlleF9zZW5kX2NtZChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCB1MTYgY21kX25vLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTA4MC1cXHRcXHQgICAgIHUxNiBjbWRfYWN0aW9uLCB1MzIgY21kX29pZCwgdm9pZCAqZGF0YV9idWYsIGJvb2wgc3luYyk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA4OjMxOjM5LjIwOTgwOTQ1MVoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzg5MzE5NDAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBkZWxpdmVyZWQgYXMgYSBmaXJzdC1wZXJzb24gc3VtbWFyeTpcblxuKipBc3Nlc3NpbmcgdGhlIE1vZHVsYXJpdHkgYW5kIFJldXNhYmlsaXR5IG9mIGBtd2lmaWV4X3NjYW5fbmV0d29ya3NgKipcblxuQWxyaWdodCwgdGhlIGluaXRpYWwgYXNzdW1wdGlvbiBpcyB0aGF0IHdlJ3JlIGRlYWxpbmcgd2l0aCBhIHN5c3RlbSB0aGF0J3MgKm5vdCogZW50aXJlbHkgZml4ZWQuIFRoYXQncyBhIGZ1bmRhbWVudGFsIHN0YXJ0aW5nIHBvaW50LiBXZSBjYW4ndCBhc3N1bWUgcmlnaWRpdHk7IGluc3RlYWQsIGl0J3MgZHluYW1pYy4gVGhpcyBoYXMgc2lnbmlmaWNhbnQgaW1wbGljYXRpb25zIGZvciBob3cgd2UgYXBwcm9hY2ggYW5hbHlzaXMgYW5kIHBvdGVudGlhbCBtb2RpZmljYXRpb24uXG5cbk15IGltbWVkaWF0ZSBmb2xsb3ctdXAgdGhvdWdodCBjZW50ZXJzIG9uIGEgY3JpdGljYWwgcGllY2Ugb2YgdGhlIHB1enpsZTogYG13aWZpZXhfc2Nhbl9uZXR3b3Jrc2AuIFRoZSByZWFsIHF1ZXN0aW9uIGluIG15IG1pbmQgbm93IGlzIHdoZXRoZXIgdGhpcyBmdW5jdGlvbiBpcyBkZWNsYXJlZCBgc3RhdGljYCB3aXRoaW4gaXRzIG1vZHVsZS4gQSBgc3RhdGljYCBkZWNsYXJhdGlvbiB3b3VsZCBsaW1pdCBpdHMgc2NvcGUsIHBvdGVudGlhbGx5IGhpbmRlcmluZyByZXVzYWJpbGl0eSBvciBtYWtpbmcgaXQgaGFyZGVyIHRvIGludGVncmF0ZSB3aXRoIG90aGVyIGNvbXBvbmVudHMuIElmIGl0ICppcyogc3RhdGljLCB3ZSdsbCBuZWVkIHRvIHVuZGVyc3RhbmQgd2h5LCBhbmQgY29uc2lkZXIgdGhlIGltcGFjdCBvbiB0aGUgb3ZlcmFsbCBkZXNpZ24uIElmIG5vdCwgdGhlbiB3ZSBhcmUgYWJsZSB0byBwcm9ncmVzcyBmdXJ0aGVyLiBUaGUgZ29hbCBub3cgaXMgdG8gZXN0YWJsaXNoIGlmIHRoZSBmdW5jdGlvbiBoYXMgc2NvcGUgb3V0c2lkZSBpdHMgbW9kdWxlIG9yIGlzIHNvbGVseSBjb250YWluZWQgd2l0aGluIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDY3MiwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA4OjMxOjQyLjU5OTEzMjcyMloiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc4NjI2NTQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImludCBtd2lmaWV4X3NjYW5fbmV0d29ya3NcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oPTE0ODY9aW50IG13aWZpZXhfcmVxdWVzdF9zY2FuKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xNDg3LVxcdFxcdFxcdCBzdHJ1Y3QgY2ZnODAyMTFfc3NpZCAqcmVxX3NzaWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg6MTQ4ODppbnQgbXdpZmlleF9zY2FuX25ldHdvcmtzKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xNDg5LVxcdFxcdFxcdCAgY29uc3Qgc3RydWN0IG13aWZpZXhfdXNlcl9zY2FuX2NmZyAqdXNlcl9zY2FuX2luKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM9MTQ1MT1td2lmaWV4X3JhZGlvX3R5cGVfdG9fYmFuZCh1OCByYWRpb190eXBlKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0xNDY5LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM6MTQ3MDppbnQgbXdpZmlleF9zY2FuX25ldHdvcmtzKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0xNDcxLVxcdFxcdFxcdCAgY29uc3Qgc3RydWN0IG13aWZpZXhfdXNlcl9zY2FuX2NmZyAqdXNlcl9zY2FuX2luKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwODozMTo0Mi43Nzc3NjUwOTdaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzEzNzEzNTE0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqVmVyaWZ5aW5nIEZ1bmN0aW9uIEF0dHJpYnV0ZXMqKlxuXG5BbHJpZ2h0LCB0aGF0J3MgcmlnaHQsIHRoaW5ncyBhcmVuJ3QgYWx3YXlzIHdoYXQgdGhleSBzZWVtIGF0IGZpcnN0IGdsYW5jZS4gV2UgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUgYWJvdXQgdGhpcy4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gY2hlY2sgdGhlIGRlY2xhcmF0aW9uIG9mIGBtd2lmaWV4X2FkZF9jYXJkYC4gVGhlIHdob2xlIHBvaW50IG9mIGxvb2tpbmcgYXQgdGhpcyBmdW5jdGlvbiBpbiBwYXJ0aWN1bGFyIGlzIHRoYXQgaXRzICdzdGF0aWMnIGF0dHJpYnV0ZSBvciBsYWNrIHRoZXJlb2YgaXMgcmVsZXZhbnQgdG8gdGhlIGxhcmdlciBvYmplY3RpdmUuIFRoZXJlZm9yZSwgSSdtIGdvaW5nIHRvIGRpZyBpbnRvIHRoZSBoZWFkZXIgZmlsZXMgb3IgdGhlIHNvdXJjZSBpdHNlbGYgYW5kIGNvbmZpcm0gdGhhdCBgbXdpZmlleF9hZGRfY2FyZGAgaXNuJ3QgZGVjbGFyZWQgd2l0aCB0aGUgYHN0YXRpY2Aga2V5d29yZC4gVGhpcyBpcyB0aGUgb25seSB3YXkgdG8gYmUgY2VydGFpbiB0aGF0IHdoYXQgSSdtIGFzc3VtaW5nIGlzIGFjdHVhbGx5IHRydWUuIElmIGl0IHdlcmUgc3RhdGljLCBpdCB3b3VsZCBiZSBhIHZlcnkgZGlmZmVyZW50IGdhbWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxMzAwLCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDg6MzE6NDUuOTE0OTAzNzg0WiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzgzMTU4MDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaW50IG13aWZpZXhfYWRkX2NhcmRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oPTE0NjQ9aW50IG13aWZpZXhfaW5pdF9zaHV0ZG93bl9mdyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xNDY2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg6MTQ2NzppbnQgbXdpZmlleF9hZGRfY2FyZCh2b2lkICpjYXJkLCBzdHJ1Y3QgY29tcGxldGlvbiAqZndfZG9uZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTE0NjgtXFx0XFx0ICAgICBjb25zdCBzdHJ1Y3QgbXdpZmlleF9pZl9vcHMgKmlmX29wcywgdTggaWZhY2VfdHlwZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDg6MzE6NDYuMDkzMjI4OTM5WiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU4NzA1NTE0MTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIFBhdGNoKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBJdCdzIGNsZWFyIHRoaXMgaXNuJ3QgYSBzdGF0aWMgc2l0dWF0aW9uOyB0aGluZ3MgYXJlIGNoYW5naW5nLiBNeSBmb2N1cyBpcyBvbiB0aGUgaWRlbnRpZmllZCBzeW1ib2xzOiBgbXdpZmlleF93YWl0X3F1ZXVlX2NvbXBsZXRlYCwgYG13aWZpZXhfc2VuZF9jbWRgLCBgbXdpZmlleF9zY2FuX25ldHdvcmtzYCwgYW5kIGBtd2lmaWV4X2FkZF9jYXJkYC4gVGhleSdyZSBrZXkgZW50cnkgcG9pbnRzIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBtb2RpZmljYXRpb25zLlxuXG5UaGUgcmVsYXRlZCBjb25maWd1cmF0aW9ucywgYE1XSUZJRVhgLCBgTVdJRklFWF9VU0JgLCBgQ0ZHODAyMTFgLCBhbmQgYFVTQmAsIGFyZSBlcXVhbGx5IGltcG9ydGFudC4gVGhleSBwYWludCB0aGUgcGljdHVyZSBvZiB0aGUgZHJpdmVyJ3MgZW52aXJvbm1lbnQgYW5kIHRoZSB0YXJnZXRlZCBpbnRlcmZhY2UuIFRoZSBwcmVzZW5jZSBvZiBgTVdJRklFWF9VU0JgIHN0cm9uZ2x5IHN1Z2dlc3RzIHRoaXMgaW1wYWN0cyBVU0ItY29ubmVjdGVkIGRldmljZXMgdXNpbmcgdGhlIE1hcnZlbGwgV2lGaS1FeCBkcml2ZXIuXG5cbkJhc2VkIG9uIHRoZSBkZXNjcmlwdGlvbiwgdGhpcyBwYXRjaCBpcyBhZGRyZXNzaW5nIGEgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHkgd2l0aGluIHRoZSBkcml2ZXIg4oCTIGEgdXNlLWFmdGVyLWZyZWUgb3IgbWVtb3J5IGNvcnJ1cHRpb24gc2NlbmFyaW8uIFNwZWNpZmljYWxseSwgaXQgaW52b2x2ZXMgdGhlIGhhbmRsaW5nIG9mIGNhbGxlci1vd25lZCBidWZmZXJzIHdoZW4gYSB3YWl0IGlzIGludGVycnVwdGVkLiBEZXRhY2hpbmcgdGhlIGJ1ZmZlciBpbiBzdWNoIGEgc2l0dWF0aW9uIGlzIGEgY29tbW9uIHBhdHRlcm4gZm9yIHByZXZlbnRpbmcgdGhlc2UgaXNzdWVzLiBSZW1vdmluZyB0aGUgYFdRX0hJR0hQUklgIGZsYWcgZnJvbSB0aGUgd29ya3F1ZXVlIGFsbG9jYXRpb24gaW4gYG13aWZpZXhfYWRkX2NhcmRgIGFuZCBgbXdpZmlleF9yZWluaXRfc3dgIHNlZW1zIGxpa2UgYSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24gb3IgYSBjaGFuZ2UgaW4gd29ya3F1ZXVlIHNjaGVkdWxpbmcsIG5vdCBsaWtlbHkgZGlyZWN0bHkgcmVsYXRlZCB0byB0aGUgbWVtb3J5IGNvcnJ1cHRpb24gaXNzdWUuXG5cblRoZSBmYWN0IHRoYXQgdGhpcyBkcml2ZXIgY2FuIGJlIGFjY2Vzc2VkIHZpYSBVU0IsIGFuZCB0aGF0IHRoaXMgVVNCIGludGVyZmFjZSBjYW4gYmUgZW11bGF0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSB2aWEgdmhjaSwgbWVhbnMgdGhpcyBpcyBhIHByYWN0aWNhbCBhbmQgcmVsZXZhbnQgaXNzdWUgZm9yIGFueW9uZSB3b3JraW5nIHdpdGggdGhpcyBkcml2ZXIgaW4gYSB0ZXN0aW5nIG9yIHZpcnR1YWxpemF0aW9uIGNvbnRleHQuIFRoZSBwYXRjaCBpcyBwcm9iYWJseSBhZGRyZXNzaW5nIGEgc3BlY2lmaWMgZmxhdyB0aGF0J3MgYmVlbiBleHBvc2VkIHRocm91Z2ggdGVzdGluZyBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LlxuXG5XZSBjYW4gdGVudGF0aXZlbHkgY2FsbCB0aGlzIHByb2Nlc3MgXCJzZXQtcmVzdWx0c1wiLiBUaGlzIGlzIHRoZSBwb2ludCB3aGVyZSB0aGUgcmVzdWx0cyBoYXZlIGJlZW4gcHJvY2Vzc2VkIGFuZCBzdW1tYXJpemVkLCBhbmQgd2UgYXJlIHJlYWR5IHRvIG1vdmUgb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxNzA3LCJPdXRwdXRUb2tlbnMiOjIwOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwODozMTo1MS45NjM3ODQwMzRaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMjkxODE3NjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1XSUZJRVhcIixcbiAgICBcIk1XSUZJRVhfVVNCXCIsXG4gICAgXCJDRkc4MDIxMVwiLFxuICAgIFwiVVNCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXdpZmlleF93YWl0X3F1ZXVlX2NvbXBsZXRlXCIsXG4gICAgXCJtd2lmaWV4X3NlbmRfY21kXCIsXG4gICAgXCJtd2lmaWV4X3NjYW5fbmV0d29ya3NcIixcbiAgICBcIm13aWZpZXhfYWRkX2NhcmRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWFydmVsbCBXaUZpLUV4IERyaXZlciB0byBkZXRhY2ggYSBjYWxsZXItb3duZWQgYnVmZmVyIGZyb20gdGhlIGN1cnJlbnQgY29tbWFuZCBpZiBhIHdhaXQgaXMgaW50ZXJydXB0ZWQsIHByZXZlbnRpbmcgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgbWVtb3J5IGNvcnJ1cHRpb24uIEl0IGFsc28gcmVtb3ZlcyB0aGUgV1FfSElHSFBSSSBmbGFnIGZyb20gdGhlIHdvcmtxdWV1ZSBhbGxvY2F0aW9uIGluIG13aWZpZXhfYWRkX2NhcmQgYW5kIG13aWZpZXhfcmVpbml0X3N3LiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIGEgZHJpdmVyIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIHRoZSBVU0IgaW50ZXJmYWNlLCB3aGljaCBpcyBlbXVsYXRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIHVzaW5nIHZoY2kgKGR1bW15IFVTQiBkZXZpY2UpLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1XSUZJRVhcIixcbiAgICBcIk1XSUZJRVhfVVNCXCIsXG4gICAgXCJDRkc4MDIxMVwiLFxuICAgIFwiVVNCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXdpZmlleF93YWl0X3F1ZXVlX2NvbXBsZXRlXCIsXG4gICAgXCJtd2lmaWV4X3NlbmRfY21kXCIsXG4gICAgXCJtd2lmaWV4X3NjYW5fbmV0d29ya3NcIixcbiAgICBcIm13aWZpZXhfYWRkX2NhcmRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWFydmVsbCBXaUZpLUV4IERyaXZlciB0byBkZXRhY2ggYSBjYWxsZXItb3duZWQgYnVmZmVyIGZyb20gdGhlIGN1cnJlbnQgY29tbWFuZCBpZiBhIHdhaXQgaXMgaW50ZXJydXB0ZWQsIHByZXZlbnRpbmcgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgbWVtb3J5IGNvcnJ1cHRpb24uIEl0IGFsc28gcmVtb3ZlcyB0aGUgV1FfSElHSFBSSSBmbGFnIGZyb20gdGhlIHdvcmtxdWV1ZSBhbGxvY2F0aW9uIGluIG13aWZpZXhfYWRkX2NhcmQgYW5kIG13aWZpZXhfcmVpbml0X3N3LiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIGEgZHJpdmVyIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIHRoZSBVU0IgaW50ZXJmYWNlLCB3aGljaCBpcyBlbXVsYXRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIHVzaW5nIHZoY2kgKGR1bW15IFVTQiBkZXZpY2UpLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflow4dqm9[1] Phase: Succeeded StartedAt: 2026-07-26 08:32:04 +0000 UTC FinishedAt: 2026-07-26 08:32:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4dqm9[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-26 08:32:04 +0000 UTC FinishedAt: 2026-07-26 08:32:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4dqm9[2] Phase: Succeeded StartedAt: 2026-07-26 08:32:04 +0000 UTC FinishedAt: 2026-07-26 10:27:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4dqm9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_wait_queue_complete","mwifiex_send_cmd","mwifiex_scan_networks","mwifiex_add_card"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"a5f2d648-c9ae-4f69-b71a-620ef4288d84","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-26 08:32:04 +0000 UTC FinishedAt: 2026-07-26 10:27:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_wait_queue_complete","mwifiex_send_cmd","mwifiex_scan_networks","mwifiex_add_card"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"a5f2d648-c9ae-4f69-b71a-620ef4288d84","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow4dqm9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_wait_queue_complete","mwifiex_send_cmd","mwifiex_scan_networks","mwifiex_add_card"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"a5f2d648-c9ae-4f69-b71a-620ef4288d84","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-26 08:32:04 +0000 UTC FinishedAt: 2026-07-26 08:33:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4dqm9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_wait_queue_complete","mwifiex_send_cmd","mwifiex_scan_networks","mwifiex_add_card"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"a5f2d648-c9ae-4f69-b71a-620ef4288d84","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-26 08:32:04 +0000 UTC FinishedAt: 2026-07-26 08:33:30 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow4dqm9/series-workflow4dqm9-convert-artifact-72214122/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4dqm9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_wait_queue_complete","mwifiex_send_cmd","mwifiex_scan_networks","mwifiex_add_card"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"a5f2d648-c9ae-4f69-b71a-620ef4288d84","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-26 08:33:50 +0000 UTC FinishedAt: 2026-07-26 09:25:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4dqm9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_wait_queue_complete","mwifiex_send_cmd","mwifiex_scan_networks","mwifiex_add_card"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"a5f2d648-c9ae-4f69-b71a-620ef4288d84","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-26 08:33:52 +0000 UTC FinishedAt: 2026-07-26 09:25:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*a44f5345-9b3c-4a0c-8177-0a21903ea1cd,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-workflow4dqm9/series-workflow4dqm9-convert-artifact-72214122/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": "e726a98f-1e10-42f2-af73-3cf1ad5622af", "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-workflow4dqm9/series-workflow4dqm9-build-action-3077348568/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4dqm9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_wait_queue_complete","mwifiex_send_cmd","mwifiex_scan_networks","mwifiex_add_card"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"a5f2d648-c9ae-4f69-b71a-620ef4288d84","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-26 08:33:52 +0000 UTC FinishedAt: 2026-07-26 09:25:29 +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:*a44f5345-9b3c-4a0c-8177-0a21903ea1cd,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-workflow4dqm9/series-workflow4dqm9-convert-artifact-72214122/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": "e726a98f-1e10-42f2-af73-3cf1ad5622af", "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-workflow4dqm9/series-workflow4dqm9-build-action-3077348568/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4dqm9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_wait_queue_complete","mwifiex_send_cmd","mwifiex_scan_networks","mwifiex_add_card"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"a5f2d648-c9ae-4f69-b71a-620ef4288d84","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-26 09:25:39 +0000 UTC FinishedAt: 2026-07-26 09:25:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4dqm9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_wait_queue_complete","mwifiex_send_cmd","mwifiex_scan_networks","mwifiex_add_card"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"a5f2d648-c9ae-4f69-b71a-620ef4288d84","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-26 09:25:39 +0000 UTC FinishedAt: 2026-07-26 09:25:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4dqm9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_wait_queue_complete","mwifiex_send_cmd","mwifiex_scan_networks","mwifiex_add_card"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"a5f2d648-c9ae-4f69-b71a-620ef4288d84","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-26 09:25:39 +0000 UTC FinishedAt: 2026-07-26 09:26:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4dqm9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_wait_queue_complete","mwifiex_send_cmd","mwifiex_scan_networks","mwifiex_add_card"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"a5f2d648-c9ae-4f69-b71a-620ef4288d84","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-26 09:25:39 +0000 UTC FinishedAt: 2026-07-26 09:25:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"a5f2d648-c9ae-4f69-b71a-620ef4288d84","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow4dqm9/series-workflow4dqm9-convert-artifact-465360261/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4dqm9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_wait_queue_complete","mwifiex_send_cmd","mwifiex_scan_networks","mwifiex_add_card"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"a5f2d648-c9ae-4f69-b71a-620ef4288d84","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-26 09:26:00 +0000 UTC FinishedAt: 2026-07-26 09:28:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4dqm9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_wait_queue_complete","mwifiex_send_cmd","mwifiex_scan_networks","mwifiex_add_card"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"a5f2d648-c9ae-4f69-b71a-620ef4288d84","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-26 09:26:00 +0000 UTC FinishedAt: 2026-07-26 09:27:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*e726a98f-1e10-42f2-af73-3cf1ad5622af,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-workflow4dqm9/series-workflow4dqm9-build-action-3077348568/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-workflow4dqm9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_wait_queue_complete","mwifiex_send_cmd","mwifiex_scan_networks","mwifiex_add_card"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"a5f2d648-c9ae-4f69-b71a-620ef4288d84","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-26 09:28:01 +0000 UTC FinishedAt: 2026-07-26 09:28:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4dqm9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_wait_queue_complete","mwifiex_send_cmd","mwifiex_scan_networks","mwifiex_add_card"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"a5f2d648-c9ae-4f69-b71a-620ef4288d84","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-26 09:28:01 +0000 UTC FinishedAt: 2026-07-26 09:28:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4dqm9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_wait_queue_complete","mwifiex_send_cmd","mwifiex_scan_networks","mwifiex_add_card"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"a5f2d648-c9ae-4f69-b71a-620ef4288d84","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-26 09:28:01 +0000 UTC FinishedAt: 2026-07-26 10:22:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4dqm9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_wait_queue_complete","mwifiex_send_cmd","mwifiex_scan_networks","mwifiex_add_card"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"a5f2d648-c9ae-4f69-b71a-620ef4288d84","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-26 09:28:01 +0000 UTC FinishedAt: 2026-07-26 10:22:18 +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:*a44f5345-9b3c-4a0c-8177-0a21903ea1cd,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-workflow4dqm9/series-workflow4dqm9-convert-artifact-465360261/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": "b0b68794-8f86-47e5-8a03-789dbd5b7fdd", "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-workflow4dqm9/series-workflow4dqm9-build-action-1827240145/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4dqm9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_wait_queue_complete","mwifiex_send_cmd","mwifiex_scan_networks","mwifiex_add_card"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"a5f2d648-c9ae-4f69-b71a-620ef4288d84","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-26 09:28:01 +0000 UTC FinishedAt: 2026-07-26 10:22:08 +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:*a44f5345-9b3c-4a0c-8177-0a21903ea1cd,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-workflow4dqm9/series-workflow4dqm9-convert-artifact-465360261/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": "b0b68794-8f86-47e5-8a03-789dbd5b7fdd", "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-workflow4dqm9/series-workflow4dqm9-build-action-1827240145/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4dqm9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_wait_queue_complete","mwifiex_send_cmd","mwifiex_scan_networks","mwifiex_add_card"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"a5f2d648-c9ae-4f69-b71a-620ef4288d84","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-26 10:22:18 +0000 UTC FinishedAt: 2026-07-26 10:22:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4dqm9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_wait_queue_complete","mwifiex_send_cmd","mwifiex_scan_networks","mwifiex_add_card"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"a5f2d648-c9ae-4f69-b71a-620ef4288d84","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-26 10:22:18 +0000 UTC FinishedAt: 2026-07-26 10:22:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4dqm9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_wait_queue_complete","mwifiex_send_cmd","mwifiex_scan_networks","mwifiex_add_card"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"a5f2d648-c9ae-4f69-b71a-620ef4288d84","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-26 10:22:18 +0000 UTC FinishedAt: 2026-07-26 10:24:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4dqm9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_wait_queue_complete","mwifiex_send_cmd","mwifiex_scan_networks","mwifiex_add_card"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"a5f2d648-c9ae-4f69-b71a-620ef4288d84","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-26 10:22:18 +0000 UTC FinishedAt: 2026-07-26 10:24:11 +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:*b0b68794-8f86-47e5-8a03-789dbd5b7fdd,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-workflow4dqm9/series-workflow4dqm9-build-action-1827240145/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-workflow4dqm9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_wait_queue_complete","mwifiex_send_cmd","mwifiex_scan_networks","mwifiex_add_card"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"a5f2d648-c9ae-4f69-b71a-620ef4288d84","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-26 10:24:21 +0000 UTC FinishedAt: 2026-07-26 10:27:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4dqm9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_wait_queue_complete","mwifiex_send_cmd","mwifiex_scan_networks","mwifiex_add_card"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"a5f2d648-c9ae-4f69-b71a-620ef4288d84","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-26 10:24:21 +0000 UTC FinishedAt: 2026-07-26 10:27:00 +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_wait_queue_complete","mwifiex_send_cmd","mwifiex_scan_networks","mwifiex_add_card"],"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:*e726a98f-1e10-42f2-af73-3cf1ad5622af,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*b0b68794-8f86-47e5-8a03-789dbd5b7fdd,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-workflow4dqm9/series-workflow4dqm9-build-action-3077348568/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-workflow4dqm9/series-workflow4dqm9-build-action-1827240145/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow4dqm9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_wait_queue_complete","mwifiex_send_cmd","mwifiex_scan_networks","mwifiex_add_card"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"a5f2d648-c9ae-4f69-b71a-620ef4288d84","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-26 10:24:21 +0000 UTC FinishedAt: 2026-07-26 10:24:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4dqm9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_wait_queue_complete","mwifiex_send_cmd","mwifiex_scan_networks","mwifiex_add_card"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"a5f2d648-c9ae-4f69-b71a-620ef4288d84","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-26 10:24:21 +0000 UTC FinishedAt: 2026-07-26 10:24:26 +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_wait_queue_complete","mwifiex_send_cmd","mwifiex_scan_networks","mwifiex_add_card"],"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-workflow4dqm9/series-workflow4dqm9-convert-artifact-1827713290/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4dqm9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_wait_queue_complete","mwifiex_send_cmd","mwifiex_scan_networks","mwifiex_add_card"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"a5f2d648-c9ae-4f69-b71a-620ef4288d84","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-26 10:24:21 +0000 UTC FinishedAt: 2026-07-26 10:24:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4dqm9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_wait_queue_complete","mwifiex_send_cmd","mwifiex_scan_networks","mwifiex_add_card"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"a5f2d648-c9ae-4f69-b71a-620ef4288d84","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-26 10:24:21 +0000 UTC FinishedAt: 2026-07-26 10:24:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4dqm9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_wait_queue_complete","mwifiex_send_cmd","mwifiex_scan_networks","mwifiex_add_card"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"a5f2d648-c9ae-4f69-b71a-620ef4288d84","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-26 10:24:21 +0000 UTC FinishedAt: 2026-07-26 10:24:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4dqm9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_wait_queue_complete","mwifiex_send_cmd","mwifiex_scan_networks","mwifiex_add_card"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"a5f2d648-c9ae-4f69-b71a-620ef4288d84","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-26 10:24:31 +0000 UTC FinishedAt: 2026-07-26 10:27:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4dqm9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_wait_queue_complete","mwifiex_send_cmd","mwifiex_scan_networks","mwifiex_add_card"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"a5f2d648-c9ae-4f69-b71a-620ef4288d84","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-26 10:24:31 +0000 UTC FinishedAt: 2026-07-26 10:26:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*e726a98f-1e10-42f2-af73-3cf1ad5622af,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*b0b68794-8f86-47e5-8a03-789dbd5b7fdd,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-workflow4dqm9/series-workflow4dqm9-build-action-3077348568/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-workflow4dqm9/series-workflow4dqm9-build-action-1827240145/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-workflow4dqm9/series-workflow4dqm9-convert-artifact-1827713290/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,}