Name: series-workflowtdr9x Phase: Succeeded StartedAt: 2026-08-06 07:08:07 +0000 UTC FinishedAt: 2026-08-06 09:41:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtdr9x[0] Phase: Succeeded StartedAt: 2026-08-06 07:08:07 +0000 UTC FinishedAt: 2026-08-06 07:57:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtdr9x[0].run-triage Phase: Succeeded StartedAt: 2026-08-06 07:08:07 +0000 UTC FinishedAt: 2026-08-06 07:57:06 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "cb59bfd419d0c560b9f7273522f9a4799062aad5", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VHOST_SCSI", "TARGET_CORE" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "cb59bfd419d0c560b9f7273522f9a4799062aad5", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VHOST_SCSI", "TARGET_CORE" ], "series_id": "d4d38690-9e07-4599-bca9-24f6589a6e24" }, "track": "KASAN", "fuzz": { "focus": [ "kvm", "net" ], "focus_symbols": [ "vhost_scsi_complete_cmd_work", "vhost_scsi_handle_kick", "vhost_scsi_ctl_handle_kick", "vhost_scsi_evt_handle_kick", "vhost_scsi_ioctl" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db", "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+CgkJCTx0ZD4yMDI2LzA4LzA2IDA3OjU1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZIT1NUX1NDU0kmIzM0OywKICAgICYjMzQ7VEFSR0VUX0NPUkUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2aG9zdF9zY3NpX2NvbXBsZXRlX2NtZF93b3JrJiMzNDssCiAgICAmIzM0O3Zob3N0X3Njc2lfaGFuZGxlX2tpY2smIzM0OywKICAgICYjMzQ7dmhvc3Rfc2NzaV9jdGxfaGFuZGxlX2tpY2smIzM0OywKICAgICYjMzQ7dmhvc3Rfc2NzaV9ldnRfaGFuZGxlX2tpY2smIzM0OywKICAgICYjMzQ7dmhvc3Rfc2NzaV9pb2N0bCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiBpbiBgdmhvc3Rfc2NzaV9jb21wbGV0ZV9jbWRfd29ya2AgYnkgZXh0ZW5kaW5nIHRoZSBgc3ZxLVx1MDAzZXZxLm11dGV4YCBsb2NrIHRvIGNvdmVyIHRoZSBgdmhvc3Rfc2lnbmFsYCBjYWxsLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgdmhvc3Qtc2NzaSBkcml2ZXIgbG9naWMuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSB2aG9zdC1zY3NpIGlvY3RscyBhbmQgdmlydHF1ZXVlIGtpY2svY29tcGxldGlvbiBoYW5kbGVycyB0byB0cmlnZ2VyIHRoaXMgY29kZSBwYXRoLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA3OjU1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMDljZmZjZWRhZDZkM2IyMTIyZGEwY2RjZThhMTc1YjlmYTE3MGY4M1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgQXVnIDYgMDc6NTU6MTAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy92aG9zdC9zY3NpLmMgYi9kcml2ZXJzL3Zob3N0L3Njc2kuY1xuaW5kZXggOWExMjUzYjlkOGM1MC4uYTc4OWQ2MjM1OTg2MyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdmhvc3Qvc2NzaS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3Zob3N0L3Njc2kuY1xuQEAgLTczNSwxMCAmIzQzOzczNSw5IEBAIHN0YXRpYyB2b2lkIHZob3N0X3Njc2lfY29tcGxldGVfY21kX3dvcmsoc3RydWN0IHZob3N0X3dvcmsgKndvcmspXG4gXHRcdHZob3N0X3Njc2lfcmVsZWFzZV9jbWRfcmVzKHNlX2NtZCk7XG4gXHR9XG4gXG4tXHRtdXRleF91bmxvY2soXHUwMDI2c3ZxLVx1MDAzZXZxLm11dGV4KTtcbi1cbiBcdGlmIChzaWduYWwpXG4gXHRcdHZob3N0X3NpZ25hbChcdTAwMjZzdnEtXHUwMDNldnMtXHUwMDNlZGV2LCBcdTAwMjZzdnEtXHUwMDNldnEpO1xuJiM0MztcdG11dGV4X3VubG9jayhcdTAwMjZzdnEtXHUwMDNldnEubXV0ZXgpO1xuIH1cbiBcbiBzdGF0aWMgc3RydWN0IHZob3N0X3Njc2lfY21kICpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAwNzo1NTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VkhPU1RfU0NTSSYjMzQ7LAogICAgJiMzNDtUQVJHRVRfQ09SRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3Zob3N0X3Njc2lfY29tcGxldGVfY21kX3dvcmsmIzM0OywKICAgICYjMzQ7dmhvc3Rfc2NzaV9oYW5kbGVfa2ljayYjMzQ7LAogICAgJiMzNDt2aG9zdF9zY3NpX2N0bF9oYW5kbGVfa2ljayYjMzQ7LAogICAgJiMzNDt2aG9zdF9zY3NpX2V2dF9oYW5kbGVfa2ljayYjMzQ7LAogICAgJiMzNDt2aG9zdF9zY3NpX2lvY3RsJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uIGluIGB2aG9zdF9zY3NpX2NvbXBsZXRlX2NtZF93b3JrYCBieSBleHRlbmRpbmcgdGhlIGBzdnEtXHUwMDNldnEubXV0ZXhgIGxvY2sgdG8gY292ZXIgdGhlIGB2aG9zdF9zaWduYWxgIGNhbGwuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSB2aG9zdC1zY3NpIGRyaXZlciBsb2dpYy4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIHZob3N0LXNjc2kgaW9jdGxzIGFuZCB2aXJ0cXVldWUga2ljay9jb21wbGV0aW9uIGhhbmRsZXJzIHRvIHRyaWdnZXIgdGhpcyBjb2RlIHBhdGguJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAwOWNmZmNlZGFkNmQzYjIxMjJkYTBjZGNlOGExNzViOWZhMTcwZjgzCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBBdWcgNiAwNzo1NToxMCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmhvc3Qvc2NzaS5jIGIvZHJpdmVycy92aG9zdC9zY3NpLmMKaW5kZXggOWExMjUzYjlkOGM1MC4uYTc4OWQ2MjM1OTg2MyAxMDA2NDQKLS0tIGEvZHJpdmVycy92aG9zdC9zY3NpLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy92aG9zdC9zY3NpLmMKQEAgLTczNSwxMCAmIzQzOzczNSw5IEBAIHN0YXRpYyB2b2lkIHZob3N0X3Njc2lfY29tcGxldGVfY21kX3dvcmsoc3RydWN0IHZob3N0X3dvcmsgKndvcmspCiAJCXZob3N0X3Njc2lfcmVsZWFzZV9jbWRfcmVzKHNlX2NtZCk7CiAJfQogCi0JbXV0ZXhfdW5sb2NrKCZhbXA7c3ZxLSZndDt2cS5tdXRleCk7Ci0KIAlpZiAoc2lnbmFsKQogCQl2aG9zdF9zaWduYWwoJmFtcDtzdnEtJmd0O3ZzLSZndDtkZXYsICZhbXA7c3ZxLSZndDt2cSk7CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO3N2cS0mZ3Q7dnEubXV0ZXgpOwogfQogCiBzdGF0aWMgc3RydWN0IHZob3N0X3Njc2lfY21kICoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDc6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA2NgoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDk1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIHZob3N0LXNjc2kgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCB0d2Vha3MgYGRyaXZlcnMvdmhvc3Qvc2NzaS5jYCwgc3BlY2lmaWNhbGx5IHRoZSBgdmhvc3Rfc2NzaV9jb21wbGV0ZV9jbWRfd29ya2AgZnVuY3Rpb24uIFRoZSBrZXkgY2hhbmdlIGlzIHRoZSByZS1vcmRlcmluZyBvZiBhIG11dGV4IHVubG9jay4gQ3VycmVudGx5LCBgbXV0ZXhfdW5sb2NrKCZhbXA7c3ZxLSZndDt2cS5tdXRleCk7YCBoYXBwZW5zIGJlZm9yZSBhIHNpZ25hbC4gVGhlIHBhdGNoIG1vdmVzIHRoaXMgdW5sb2NrIHRvIGFmdGVyIHRoZSBjb25kaXRpb25hbCBzaWduYWwgb3BlcmF0aW9uOiBgaWYgKHNpZ25hbCkgdmhvc3Rfc2lnbmFsKCZhbXA7c3ZxLSZndDt2cy0mZ3Q7ZGV2LCAmYW1wO3N2cS0mZ3Q7dnEpO2AuCgpNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gaW1tZWRpYXRlbHkgZGl2ZSBpbnRvIGB2aG9zdF9zY3NpX2NvbXBsZXRlX2NtZF93b3JrYCBhbmQgdW5kZXJzdGFuZCB3aHkgdGhpcyByZS1vcmRlcmluZyBpcyBiZWluZyBwcm9wb3NlZC4gV2hhdCYjMzk7cyB0aGUgcmF0aW9uYWxlPyBJcyB0aGVyZSBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiBvciBsb2NraW5nIGlzc3VlIGJlaW5nIGFkZHJlc3NlZD8gV2hhdCYjMzk7cyB0aGUgY29udGV4dCBzdXJyb3VuZGluZyB0aGUgc2lnbmFsIGNhbGw/IElzIGl0IHJlbGF0ZWQgdG8gY29tcGxldGlvbiBub3RpZmljYXRpb25zLCBlcnJvciBoYW5kbGluZywgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IFRoZSBzaWduYWwgaXRzZWxmLCB3aGF0JiMzOTtzIGl0cyBwdXJwb3NlIHJlbGF0aXZlIHRvIHRoZSBtdXRleCYjMzk7cyBwcm90ZWN0aW9uPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIGhvbGRpbmcgdGhlIG11dGV4IHNsaWdodGx5IGxvbmdlciBpbiB0aGlzIHNjZW5hcmlvLiBUaGlzIHNtYWxsIGNoYW5nZSBjb3VsZCBiZSBpbm5vY3VvdXMsIGNyaXRpY2FsLCBvciBldmVuIHN1YnRseSBpbnRyb2R1Y2UgYSBuZXcgcHJvYmxlbS4gU28gSSBuZWVkIHRvIGRpZyBkZWVwIHRvIGZ1bGx5IGNvbXByZWhlbmQgdGhpcyBzaGlmdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAwNzo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2aG9zdF9zY3NpX2NvbXBsZXRlX2NtZF93b3JrJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92aG9zdC9zY3NpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy92aG9zdC9zY3NpLmM9NjU2PXN0YXRpYyBpbnQgdmhvc3Rfc2NzaV9jb3B5X3NnbF90b19pb3Yoc3RydWN0IHZob3N0X3Njc2lfY21kICpjbWQpXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtNjg1LSAqL1xuZHJpdmVycy92aG9zdC9zY3NpLmM6Njg2OnN0YXRpYyB2b2lkIHZob3N0X3Njc2lfY29tcGxldGVfY21kX3dvcmsoc3RydWN0IHZob3N0X3dvcmsgKndvcmspXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy02ODcte1xuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTIyNzA9c3RhdGljIGludCB2aG9zdF9zY3NpX29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmYpXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjMyMC1cdFx0dmhvc3Rfd29ya19pbml0KFx1MDAyNnN2cS1cdTAwM2Vjb21wbGV0aW9uX3dvcmssXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyMzIxOlx0XHRcdFx0dmhvc3Rfc2NzaV9jb21wbGV0ZV9jbWRfd29yayk7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yMzIyLVx0XHRzdnEtXHUwMDNldnEuaGFuZGxlX2tpY2sgPSB2aG9zdF9zY3NpX2hhbmRsZV9raWNrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA3OjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3MjEKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiA2OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBDcml0aWNhbCBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFkZHJlc3NpbmcgYSBjb25jdXJyZW5jeSBpc3N1ZSwgcHJvYmFibHkgYSByYWNlIGNvbmRpdGlvbiBvciBzb21lIGxvY2tpbmcgcHJvYmxlbS4gSXQgbG9va3MgbGlrZSB0aGUgY29yZSBvZiB0aGUgZml4IHJldm9sdmVzIGFyb3VuZCBleHRlbmRpbmcgYSBsb2NrJiMzOTtzIHByb3RlY3Rpb24gdG8gY292ZXIgdGhlIGB2aG9zdF9zaWduYWxgIGNhbGwuIE5vdywgaG9sZCBvbiBhIHNlY29uZOKApkkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBzY29wZSBvZiB0aGlzLiBEb2VzIGB2aG9zdF9zaWduYWxgIGl0c2VsZiAqcmVxdWlyZSogdGhlIGxvY2s/IE9yIGlzIGl0IHRoYXQgYHZob3N0X3NpZ25hbGAgaXMgdG91Y2hpbmcgc29tZXRoaW5nIOKAkyBwZXJoYXBzIGAmYW1wO3N2cS0mZ3Q7dnFgIOKAkyB0aGF0ICpuZWVkcyogdGhlIGxvY2smIzM5O3MgcHJvdGVjdGlvbj8gSSBuZWVkIHRvIGNsYXJpZnkgd2hhdCB0aGUgZnVuY3Rpb24gZG9lcyBleGFjdGx5IGluIHJlbGF0aW9uIHRvIHRoZSBicm9hZGVyIGxvY2sgYW5kIGRhdGEgc3RydWN0dXJlcyBhdCBwbGF5LiBSaWdodCwgdGltZSB0byBkaWcgaW50byB0aGUgYHZob3N0X3NpZ25hbGAgaW1wbGVtZW50YXRpb24gaXRzZWxmLiBMZXQmIzM5O3Mgc3RhcnQgdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDc6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dmhvc3Rfc2lnbmFsJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92aG9zdC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy92aG9zdC9zY3NpLmM9Njg2PXN0YXRpYyB2b2lkIHZob3N0X3Njc2lfY29tcGxldGVfY21kX3dvcmsoc3RydWN0IHZob3N0X3dvcmsgKndvcmspXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtNzM4LVx0aWYgKHNpZ25hbClcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjczOTpcdFx0dmhvc3Rfc2lnbmFsKFx1MDAyNnN2cS1cdTAwM2V2cy1cdTAwM2VkZXYsIFx1MDAyNnN2cS1cdTAwM2V2cSk7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYy03NDAtXHRtdXRleF91bmxvY2soXHUwMDI2c3ZxLVx1MDAzZXZxLm11dGV4KTtcbi0tXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmM9MzEzMz1zdGF0aWMgYm9vbCB2aG9zdF9ub3RpZnkoc3RydWN0IHZob3N0X2RldiAqZGV2LCBzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICp2cSlcbi0tXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMzE3MC0vKiBUaGlzIGFjdHVhbGx5IHNpZ25hbHMgdGhlIGd1ZXN0LCB1c2luZyBldmVudGZkLiAqL1xuZHJpdmVycy92aG9zdC92aG9zdC5jOjMxNzE6dm9pZCB2aG9zdF9zaWduYWwoc3RydWN0IHZob3N0X2RldiAqZGV2LCBzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICp2cSlcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYy0zMTcyLXtcbi0tXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMzE3Ni19XG5kcml2ZXJzL3Zob3N0L3Zob3N0LmM6MzE3NzpFWFBPUlRfU1lNQk9MX0dQTCh2aG9zdF9zaWduYWwpO1xuZHJpdmVycy92aG9zdC92aG9zdC5jLTMxNzgtXG4tLVxuZHJpdmVycy92aG9zdC92aG9zdC5jPTMxODA9dm9pZCB2aG9zdF9hZGRfdXNlZF9hbmRfc2lnbmFsKHN0cnVjdCB2aG9zdF9kZXYgKmRldixcbi0tXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMzE4NC1cdHZob3N0X2FkZF91c2VkKHZxLCBoZWFkLCBsZW4pO1xuZHJpdmVycy92aG9zdC92aG9zdC5jOjMxODU6XHR2aG9zdF9zaWduYWwoZGV2LCB2cSk7XG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMzE4Ni19XG4tLVxuZHJpdmVycy92aG9zdC92aG9zdC5jPTMxOTA9dm9pZCB2aG9zdF9hZGRfdXNlZF9hbmRfc2lnbmFsX24oc3RydWN0IHZob3N0X2RldiAqZGV2LFxuLS1cbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYy0zMTk2LVx0dmhvc3RfYWRkX3VzZWRfbih2cSwgaGVhZHMsIG5oZWFkcywgY291bnQpO1xuZHJpdmVycy92aG9zdC92aG9zdC5jOjMxOTc6XHR2aG9zdF9zaWduYWwoZGV2LCB2cSk7XG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMzE5OC19XG4tLVxuZHJpdmVycy92aG9zdC92aG9zdC5oPTI1Mz12b2lkIHZob3N0X2FkZF91c2VkX2FuZF9zaWduYWxfbihzdHJ1Y3Qgdmhvc3RfZGV2ICosIHN0cnVjdCB2aG9zdF92aXJ0cXVldWUgKixcbi0tXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmgtMjU1LVx0XHRcdFx0IHVuc2lnbmVkIGNvdW50KTtcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuaDoyNTY6dm9pZCB2aG9zdF9zaWduYWwoc3RydWN0IHZob3N0X2RldiAqLCBzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICopO1xuZHJpdmVycy92aG9zdC92aG9zdC5oLTI1Ny12b2lkIHZob3N0X2Rpc2FibGVfbm90aWZ5KHN0cnVjdCB2aG9zdF9kZXYgKiwgc3RydWN0IHZob3N0X3ZpcnRxdWV1ZSAqKTtcbi0tXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmM9MTA3PXZob3N0X3RyYW5zcG9ydF9kb19zZW5kX3BrdChzdHJ1Y3Qgdmhvc3RfdnNvY2sgKnZzb2NrLFxuLS1cbmRyaXZlcnMvdmhvc3QvdnNvY2suYy0yNjctXHRpZiAoYWRkZWQpXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmM6MjY4Olx0XHR2aG9zdF9zaWduYWwoXHUwMDI2dnNvY2stXHUwMDNlZGV2LCB2cSk7XG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmMtMjY5LVxuLS1cbmRyaXZlcnMvdmhvc3QvdnNvY2suYz01MjM9c3RhdGljIHZvaWQgdmhvc3RfdnNvY2tfaGFuZGxlX3R4X2tpY2soc3RydWN0IHZob3N0X3dvcmsgKndvcmspXG4tLVxuZHJpdmVycy92aG9zdC92c29jay5jLTU5NC1cdGlmIChhZGRlZClcbmRyaXZlcnMvdmhvc3QvdnNvY2suYzo1OTU6XHRcdHZob3N0X3NpZ25hbChcdTAwMjZ2c29jay1cdTAwM2VkZXYsIHZxKTtcbmRyaXZlcnMvdmhvc3QvdnNvY2suYy01OTYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDc6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzg4MAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDU0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgUG90ZW50aWFsOiBgdmhvc3Rfc2NzaV9jb21wbGV0ZV9jbWRfd29ya2AgTW9kaWZpY2F0aW9uKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYHZob3N0X3Njc2lfY29tcGxldGVfY21kX3dvcmtgLiBJbW1lZGlhdGVseSwgdGhlIHF1ZXN0aW9uIGFyaXNlczogZnV6emluZyBvcHBvcnR1bml0eT8gQWJzb2x1dGVseS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiB0aGUgYHZob3N0LXNjc2lgIHN1YnN5c3RlbSwgd2hpY2ggbWVhbnMgaXQmIzM5O3MgcHJpbWUgdGVycml0b3J5IGZvciBkaWdnaW5nIHVwIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMuIE15IGV4cGVyaWVuY2Ugc2F5cyB0aGF0IGFueSBhbHRlcmF0aW9uIHRvIGNvbW1hbmQgY29tcGxldGlvbiBsb2dpYyBpcyBhIGdvb2QgcGxhY2UgdG8gc3RhcnQuIE5vdywgbGV0JiMzOTtzIGdldCB0aGUgYmFsbCByb2xsaW5nIGFuZCB0cmFjayBkb3duIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIGB2aG9zdC1zY3NpYCB0byB0YWlsb3IgYSBmdXp6aW5nIGNhbXBhaWduLiBHb3R0YSBpZGVudGlmeSB3aGF0JiMzOTtzIGVuYWJsZWQsIHdoYXQmIzM5O3MgZGlzYWJsZWQsIGFuZCB3aGVyZSB0aGUgbW9zdCBpbnRlcmVzdGluZyBlbnRyeSBwb2ludHMgYXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA3OjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Zob3N0X3Njc2kmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3Zob3N0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy92aG9zdC9LY29uZmlnPTQ2PWNvbmZpZyBWSE9TVF9TQ1NJXG4tLVxuZHJpdmVycy92aG9zdC9LY29uZmlnLTUyLVx0aGVscFxuZHJpdmVycy92aG9zdC9LY29uZmlnOjUzOlx0U2F5IE0gaGVyZSB0byBlbmFibGUgdGhlIHZob3N0X3Njc2kgVENNIGZhYnJpYyBtb2R1bGVcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZy01NC1cdGZvciB1c2Ugd2l0aCB2aXJ0aW8tc2NzaSBndWVzdHNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAwNzo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjE0CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUgd2hhdCB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoLiBUaGUgY29uZmlndXJhdGlvbiBpbiBwbGF5IGhlcmUgaXMgYFZIT1NUX1NDU0lgLiBNeSBmb2N1cyBuZWVkcyB0byBiZSBsYXNlci1zaGFycCBvbiB0aGF0IG1vZHVsZS4gCgoqKlZIT1NUX1NDU0kgRW50cnkgUG9pbnRzIGFuZCBLZXkgRnVuY3Rpb25zKioKCkkmIzM5O20gemVyb2luZyBpbiBvbiB0aGUgY3J1Y2lhbCBmdW5jdGlvbnMuIEZyb20gdGhlIGluaXRpYWwgZ2xhbmNlLCBgdmhvc3Rfc2NzaV9jb21wbGV0ZV9jbWRfd29ya2AganVtcHMgb3V0LCBidXQgSSBuZWVkIHRvIHJlbWVtYmVyIHRoYXQgaXQmIzM5O3MgYSB3b3JrcXVldWUgZnVuY3Rpb24uIFRoYXQgbWVhbnMgaXQmIzM5O3MgKnRyaWdnZXJlZCogYnkgc29tZXRoaW5nIGVsc2UuIEl0JiMzOTtzIG5vdCBhIGRpcmVjdCBzeXNjYWxsIGVudHJ5IHBvaW50LiBTbywgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCB0aG9zZSB0cmlnZ2VyaW5nIG1lY2hhbmlzbXMgYXJlLiBUaGUgcmVhbCBxdWVzdGlvbiBpczogd2hlcmUgZG8gSSBldmVuICplbnRlciogdGhpcyBgdmhvc3Qtc2NzaWAgc3Vic3lzdGVtPyBJIG5lZWQgdG8gaWRlbnRpZnkgdGhlIGVudHJ5IHBvaW50cy4gVW5kZXJzdGFuZGluZyB0aGVzZSBlbnRyeSBwb2ludHMgaXMga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGNvbnRyb2wgZmxvdyBhbmQgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcy4gVGltZSB0byBkaWcgZGVlcGVyIGFuZCBtYXAgdGhvc2UgY2FsbHMgb3V0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAwNzo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2aG9zdF9zY3NpXyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmhvc3Qvc2NzaS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxMTY3IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy01My1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjU0OnN0YXRpYyB1bnNpZ25lZCBpbnQgdmhvc3Rfc2NzaV9pbmxpbmVfc2dfY250ID0gVkhPU1RfU0NTSV9QUkVBTExPQ19TR0xTO1xuZHJpdmVycy92aG9zdC9zY3NpLmMtNTUtXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy01Ni0jaWZkZWYgQ09ORklHX0FSQ0hfTk9fU0dfQ0hBSU5cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjU3OnN0YXRpYyBpbnQgdmhvc3Rfc2NzaV9zZXRfaW5saW5lX3NnX2NudChjb25zdCBjaGFyICpidWYsXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy01OC1cdFx0XHRcdFx0Y29uc3Qgc3RydWN0IGtlcm5lbF9wYXJhbSAqa3ApXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtNjMtI2Vsc2VcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjY0OnN0YXRpYyBpbnQgdmhvc3Rfc2NzaV9zZXRfaW5saW5lX3NnX2NudChjb25zdCBjaGFyICpidWYsXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy02NS1cdFx0XHRcdFx0Y29uc3Qgc3RydWN0IGtlcm5lbF9wYXJhbSAqa3ApXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtNzgtXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo3OTpcdHZob3N0X3Njc2lfaW5saW5lX3NnX2NudCA9IGNudDtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTgwLVx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtODMtXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo4NDpzdGF0aWMgaW50IHZob3N0X3Njc2lfZ2V0X2lubGluZV9zZ19jbnQoY2hhciAqYnVmLFxuZHJpdmVycy92aG9zdC9zY3NpLmMtODUtXHRcdFx0XHRcdGNvbnN0IHN0cnVjdCBrZXJuZWxfcGFyYW0gKmtwKVxuZHJpdmVycy92aG9zdC9zY3NpLmMtODYte1xuZHJpdmVycy92aG9zdC9zY3NpLmM6ODc6XHRyZXR1cm4gc3ByaW50ZihidWYsIFwmIzM0OyV1XFxuXCYjMzQ7LCB2aG9zdF9zY3NpX2lubGluZV9zZ19jbnQpO1xuZHJpdmVycy92aG9zdC9zY3NpLmMtODgtfVxuZHJpdmVycy92aG9zdC9zY3NpLmMtODktXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo5MDpzdGF0aWMgY29uc3Qgc3RydWN0IGtlcm5lbF9wYXJhbV9vcHMgdmhvc3Rfc2NzaV9pbmxpbmVfc2dfY250X29wID0ge1xuZHJpdmVycy92aG9zdC9zY3NpLmM6OTE6XHQuZ2V0ID0gdmhvc3Rfc2NzaV9nZXRfaW5saW5lX3NnX2NudCxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjkyOlx0LnNldCA9IHZob3N0X3Njc2lfc2V0X2lubGluZV9zZ19jbnQsXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy05My19O1xuZHJpdmVycy92aG9zdC9zY3NpLmMtOTQtXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo5NTptb2R1bGVfcGFyYW1fY2IoaW5saW5lX3NnX2NudCwgXHUwMDI2dmhvc3Rfc2NzaV9pbmxpbmVfc2dfY250X29wLCBOVUxMLCAwNjQ0KTtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTk2LU1PRFVMRV9QQVJNX0RFU0MoaW5saW5lX3NnX2NudCwgXCYjMzQ7U2V0IHRoZSBudW1iZXIgb2Ygc2NhdHRlcmxpc3QgZW50cmllcyB0byBwcmUtYWxsb2NhdGUuIFRoZSBkZWZhdWx0IGlzIDIwNDguXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xMDMtXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxMDQ6c3RydWN0IHZob3N0X3Njc2lfaW5mbGlnaHQge1xuZHJpdmVycy92aG9zdC9zY3NpLmMtMTA1LVx0LyogV2FpdCBmb3IgdGhlIGZsdXNoIG9wZXJhdGlvbiB0byBmaW5pc2ggKi9cbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xMTAtXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxMTE6c3RydWN0IHZob3N0X3Njc2lfY21kIHtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTExMi1cdC8qIERlc2NyaXB0b3IgZnJvbSB2aG9zdF9nZXRfdnFfZGVzYygpIGZvciB2aXJ0X3F1ZXVlIHNlZ21lbnQgKi9cbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xNDMtXHQvKiBVc2VkIHRvIHRyYWNrIGluZmxpZ2h0IGNtZCAqL1xuZHJpdmVycy92aG9zdC9zY3NpLmM6MTQ0Olx0c3RydWN0IHZob3N0X3Njc2lfaW5mbGlnaHQgKmluZmxpZ2h0O1xuZHJpdmVycy92aG9zdC9zY3NpLmMtMTQ1LX07XG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xNDYtXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxNDc6c3RydWN0IHZob3N0X3Njc2lfbmV4dXMge1xuZHJpdmVycy92aG9zdC9zY3NpLmMtMTQ4LVx0LyogUG9pbnRlciB0byBUQ00gc2Vzc2lvbiBmb3IgSV9UIE5leHVzICovXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTUxLVxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTUyOnN0cnVjdCB2aG9zdF9zY3NpX3RwZyB7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xNTMtXHQvKiBWaG9zdCBwb3J0IHRhcmdldCBwb3J0YWwgZ3JvdXAgdGFnIGZvciBUQ00gKi9cbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xNjAtXHRpbnQgdHZfZmFicmljX3Byb3RfdHlwZTtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjE2MTpcdC8qIGxpc3QgZm9yIHZob3N0X3Njc2lfbGlzdCAqL1xuZHJpdmVycy92aG9zdC9zY3NpLmMtMTYyLVx0c3RydWN0IGxpc3RfaGVhZCB0dl90cGdfbGlzdDtcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xNjUtXHQvKiBQb2ludGVyIHRvIHRoZSBUQ00gVkhvc3QgSV9UIE5leHVzIGZvciB0aGlzIFRQRyBlbmRwb2ludCAqL1xuZHJpdmVycy92aG9zdC9zY3NpLmM6MTY2Olx0c3RydWN0IHZob3N0X3Njc2lfbmV4dXMgKnRwZ19uZXh1cztcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjE2NzpcdC8qIFBvaW50ZXIgYmFjayB0byB2aG9zdF9zY3NpX3Rwb3J0ICovXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxNjg6XHRzdHJ1Y3Qgdmhvc3Rfc2NzaV90cG9ydCAqdHBvcnQ7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxNjk6XHQvKiBSZXR1cm5lZCBieSB2aG9zdF9zY3NpX21ha2VfdHBnKCkgKi9cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE3MC1cdHN0cnVjdCBzZV9wb3J0YWxfZ3JvdXAgc2VfdHBnO1xuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE3NC1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjE3NTpzdHJ1Y3Qgdmhvc3Rfc2NzaV90cG9ydCB7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xNzYtXHQvKiBTQ1NJIHByb3RvY29sIHRoZSB0cG9ydCBpcyBwcm92aWRpbmcgKi9cbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xODEtXHRjaGFyIHRwb3J0X25hbWVbVkhPU1RfU0NTSV9OQU1FTEVOXTtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjE4MjpcdC8qIFJldHVybmVkIGJ5IHZob3N0X3Njc2lfbWFrZV90cG9ydCgpICovXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xODMtXHRzdHJ1Y3Qgc2Vfd3duIHRwb3J0X3d3bjtcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xODUtXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxODY6c3RydWN0IHZob3N0X3Njc2lfZXZ0IHtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE4Ny1cdC8qIGV2ZW50IHRvIGJlIHNlbnQgdG8gZ3Vlc3QgKi9cbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz0xOTM9ZW51bSB7XG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTk5LS8qIE5vdGU6IGNhbiYjMzk7dCBzZXQgVklSVElPX0ZfVkVSU0lPTl8xIHlldCwgc2luY2UgdGhhdCBpbXBsaWVzIEFOWV9MQVlPVVQuICovXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyMDA6c3RhdGljIGNvbnN0IGludCB2aG9zdF9zY3NpX2JpdHNbXSA9IHtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTIwMS1cdFZIT1NUX0ZFQVRVUkVTLFxuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTIwNS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjIwNjojZGVmaW5lIFZIT1NUX1NDU0lfRkVBVFVSRVMgVkhPU1RfRkVBVFVSRVNfVTY0KHZob3N0X3Njc2lfYml0cywgMClcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTIwNy1cbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yMTEtXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyMTI6c3RhdGljIHVuc2lnbmVkIHZob3N0X3Njc2lfbWF4X2lvX3ZxcyA9IDEyODtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjIxMzptb2R1bGVfcGFyYW1fbmFtZWQobWF4X2lvX3Zxcywgdmhvc3Rfc2NzaV9tYXhfaW9fdnFzLCB1aW50LCAwNjQ0KTtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTIxNC1NT0RVTEVfUEFSTV9ERVNDKG1heF9pb192cXMsIFwmIzM0O1NldCB0aGUgbWF4IG51bWJlciBvZiBJTyB2aXJ0cXVldWVzIGEgdmhvc3Qgc2NzaSBkZXZpY2UgY2FuIHN1cHBvcnQuIFRoZSBkZWZhdWx0IGlzIDEyOC4gVGhlIG1heCBpcyAxMDI0LlwmIzM0Oyk7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yMTUtXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyMTY6c3RydWN0IHZob3N0X3Njc2lfdmlydHF1ZXVlIHtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTIxNy1cdHN0cnVjdCB2aG9zdF92aXJ0cXVldWUgdnE7XG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjIzLVx0ICovXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyMjQ6XHRzdHJ1Y3Qgdmhvc3Rfc2NzaV9pbmZsaWdodCBpbmZsaWdodHNbMl07XG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yMjUtXHQvKlxuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTIyOS1cdGludCBpbmZsaWdodF9pZHg7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyMzA6XHRzdHJ1Y3Qgdmhvc3Rfc2NzaV9jbWQgKnNjc2lfY21kcztcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTIzMS1cdHN0cnVjdCBzYml0bWFwIHNjc2lfdGFncztcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz0yMzk9c3RydWN0IHZob3N0X3Njc2kge1xuZHJpdmVycy92aG9zdC9zY3NpLmMtMjQwLVx0LyogUHJvdGVjdGVkIGJ5IHZob3N0X3Njc2ktXHUwMDNlZGV2Lm11dGV4ICovXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyNDE6XHRzdHJ1Y3Qgdmhvc3Rfc2NzaV90cGcgKip2c190cGc7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yNDItXHRjaGFyIHZzX3Zob3N0X3d3cG5bVFJBTlNQT1JUX0lRTl9MRU5dO1xuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI0NC1cdHN0cnVjdCB2aG9zdF9kZXYgZGV2O1xuZHJpdmVycy92aG9zdC9zY3NpLmM6MjQ1Olx0c3RydWN0IHZob3N0X3Njc2lfdmlydHF1ZXVlICp2cXM7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyNDY6XHRzdHJ1Y3Qgdmhvc3Rfc2NzaV9pbmZsaWdodCAqKm9sZF9pbmZsaWdodDtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI0Ny1cbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yNTYtXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyNTc6c3RydWN0IHZob3N0X3Njc2lfdG1mIHtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI1OC1cdHN0cnVjdCB2aG9zdF93b3JrIHZ3b3JrO1xuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI2MC1cdHN0cnVjdCB2aG9zdF9zY3NpICp2aG9zdDtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjI2MTpcdHN0cnVjdCB2aG9zdF9zY3NpX3ZpcnRxdWV1ZSAqc3ZxO1xuZHJpdmVycy92aG9zdC9zY3NpLmMtMjYyLVxuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI2NC1cdHU4IHNjc2lfcmVzcDtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjI2NTpcdHN0cnVjdCB2aG9zdF9zY3NpX2luZmxpZ2h0ICppbmZsaWdodDtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI2Ni1cdHN0cnVjdCBpb3ZlYyByZXNwX2lvdjtcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yNzktICovXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyODA6c3RydWN0IHZob3N0X3Njc2lfY3R4IHtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI4MS1cdGludCBoZWFkO1xuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI5My0gKi9cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjI5NDpzdGF0aWMgREVGSU5FX01VVEVYKHZob3N0X3Njc2lfbXV0ZXgpO1xuZHJpdmVycy92aG9zdC9zY3NpLmM6Mjk1OnN0YXRpYyBMSVNUX0hFQUQodmhvc3Rfc2NzaV9saXN0KTtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI5Ni1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjI5NzpzdGF0aWMgdm9pZCB2aG9zdF9zY3NpX2RvbmVfaW5mbGlnaHQoc3RydWN0IGtyZWYgKmtyZWYpXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yOTgte1xuZHJpdmVycy92aG9zdC9zY3NpLmM6Mjk5Olx0c3RydWN0IHZob3N0X3Njc2lfaW5mbGlnaHQgKmluZmxpZ2h0O1xuZHJpdmVycy92aG9zdC9zY3NpLmMtMzAwLVxuZHJpdmVycy92aG9zdC9zY3NpLmM6MzAxOlx0aW5mbGlnaHQgPSBjb250YWluZXJfb2Yoa3JlZiwgc3RydWN0IHZob3N0X3Njc2lfaW5mbGlnaHQsIGtyZWYpO1xuZHJpdmVycy92aG9zdC9zY3NpLmMtMzAyLVx0Y29tcGxldGUoXHUwMDI2aW5mbGlnaHQtXHUwMDNlY29tcCk7XG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtMzA0LVxuZHJpdmVycy92aG9zdC9zY3NpLmM6MzA1OnN0YXRpYyB2b2lkIHZob3N0X3Njc2lfaW5pdF9pbmZsaWdodChzdHJ1Y3Qgdmhvc3Rfc2NzaSAqdnMsXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzozMDY6XHRcdFx0XHQgICAgc3RydWN0IHZob3N0X3Njc2lfaW5mbGlnaHQgKm9sZF9pbmZsaWdodFtdKVxuZHJpdmVycy92aG9zdC9zY3NpLmMtMzA3LXtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjMwODpcdHN0cnVjdCB2aG9zdF9zY3NpX2luZmxpZ2h0ICpuZXdfaW5mbGlnaHQ7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0zMDktXHRzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICp2cTtcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0zMzEtXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzozMzI6c3RhdGljIHN0cnVjdCB2aG9zdF9zY3NpX2luZmxpZ2h0ICpcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjMzMzp2aG9zdF9zY3NpX2dldF9pbmZsaWdodChzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICp2cSlcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTMzNC17XG5kcml2ZXJzL3Zob3N0L3Njc2kuYzozMzU6XHRzdHJ1Y3Qgdmhvc3Rfc2NzaV9pbmZsaWdodCAqaW5mbGlnaHQ7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYzozMzY6XHRzdHJ1Y3Qgdmhvc3Rfc2NzaV92aXJ0cXVldWUgKnN2cTtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTMzNy1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjMzODpcdHN2cSA9IGNvbnRhaW5lcl9vZih2cSwgc3RydWN0IHZob3N0X3Njc2lfdmlydHF1ZXVlLCB2cSk7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0zMzktXHRpbmZsaWdodCA9IFx1MDAyNnN2cS1cdTAwM2VpbmZsaWdodHNbc3ZxLVx1MDAzZWluZmxpZ2h0X2lkeF07XG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtMzQ0LVxuZHJpdmVycy92aG9zdC9zY3NpLmM6MzQ1OnN0YXRpYyB2b2lkIHZob3N0X3Njc2lfcHV0X2luZmxpZ2h0KHN0cnVjdCB2aG9zdF9zY3NpX2luZmxpZ2h0ICppbmZsaWdodClcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTM0Ni17XG5kcml2ZXJzL3Zob3N0L3Njc2kuYzozNDc6XHRrcmVmX3B1dChcdTAwMjZpbmZsaWdodC1cdTAwM2VrcmVmLCB2aG9zdF9zY3NpX2RvbmVfaW5mbGlnaHQpO1xuZHJpdmVycy92aG9zdC9zY3NpLmMtMzQ4LX1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTM0OS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjM1MDpzdGF0aWMgaW50IHZob3N0X3Njc2lfY2hlY2tfdHJ1ZShzdHJ1Y3Qgc2VfcG9ydGFsX2dyb3VwICpzZV90cGcpXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0zNTEte1xuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTM1NC1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjM1NTpzdGF0aWMgY2hhciAqdmhvc3Rfc2NzaV9nZXRfZmFicmljX3d3bihzdHJ1Y3Qgc2VfcG9ydGFsX2dyb3VwICpzZV90cGcpXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0zNTYte1xuZHJpdmVycy92aG9zdC9zY3NpLmM6MzU3Olx0c3RydWN0IHZob3N0X3Njc2lfdHBnICp0cGcgPSBjb250YWluZXJfb2Yoc2VfdHBnLFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MzU4Olx0XHRcdFx0c3RydWN0IHZob3N0X3Njc2lfdHBnLCBzZV90cGcpO1xuZHJpdmVycy92aG9zdC9zY3NpLmM6MzU5Olx0c3RydWN0IHZob3N0X3Njc2lfdHBvcnQgKnRwb3J0ID0gdHBnLVx1MDAzZXRwb3J0O1xuZHJpdmVycy92aG9zdC9zY3NpLmMtMzYwLVxuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTM2My1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjM2NDpzdGF0aWMgdTE2IHZob3N0X3Njc2lfZ2V0X3RwZ3Qoc3RydWN0IHNlX3BvcnRhbF9ncm91cCAqc2VfdHBnKVxuZHJpdmVycy92aG9zdC9zY3NpLmMtMzY1LXtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjM2NjpcdHN0cnVjdCB2aG9zdF9zY3NpX3RwZyAqdHBnID0gY29udGFpbmVyX29mKHNlX3RwZyxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjM2NzpcdFx0XHRcdHN0cnVjdCB2aG9zdF9zY3NpX3RwZywgc2VfdHBnKTtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTM2OC1cdHJldHVybiB0cGctXHUwMDNldHBvcnRfdHBndDtcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0zNzAtXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzozNzE6c3RhdGljIGludCB2aG9zdF9zY3NpX2NoZWNrX3Byb3RfZmFicmljX29ubHkoc3RydWN0IHNlX3BvcnRhbF9ncm91cCAqc2VfdHBnKVxuZHJpdmVycy92aG9zdC9zY3NpLmMtMzcyLXtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjM3MzpcdHN0cnVjdCB2aG9zdF9zY3NpX3RwZyAqdHBnID0gY29udGFpbmVyX29mKHNlX3RwZyxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjM3NDpcdFx0XHRcdHN0cnVjdCB2aG9zdF9zY3NpX3RwZywgc2VfdHBnKTtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTM3NS1cbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0zNzgtXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzozNzk6c3RhdGljIGludCB2aG9zdF9zY3NpX2NvcHlfY21kX2xvZyhzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICp2cSxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjM4MDpcdFx0XHRcdCAgIHN0cnVjdCB2aG9zdF9zY3NpX2NtZCAqY21kLFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMzgxLVx0XHRcdFx0ICAgc3RydWN0IHZob3N0X2xvZyAqbG9nLFxuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTM5Ny1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjM5ODpzdGF0aWMgdm9pZCB2aG9zdF9zY3NpX2xvZ193cml0ZShzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICp2cSxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTM5OS1cdFx0XHRcdCBzdHJ1Y3Qgdmhvc3RfbG9nICpsb2csXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtNDE1LVxuZHJpdmVycy92aG9zdC9zY3NpLmM6NDE2OnN0YXRpYyB2b2lkIHZob3N0X3Njc2lfcmVsZWFzZV9jbWRfcmVzKHN0cnVjdCBzZV9jbWQgKnNlX2NtZClcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTQxNy17XG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo0MTg6XHRzdHJ1Y3Qgdmhvc3Rfc2NzaV9jbWQgKnR2X2NtZCA9IGNvbnRhaW5lcl9vZihzZV9jbWQsXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo0MTk6XHRcdFx0XHRzdHJ1Y3Qgdmhvc3Rfc2NzaV9jbWQsIHR2Y19zZV9jbWQpO1xuZHJpdmVycy92aG9zdC9zY3NpLmM6NDIwOlx0c3RydWN0IHZob3N0X3Njc2lfdmlydHF1ZXVlICpzdnEgPSBjb250YWluZXJfb2YodHZfY21kLVx1MDAzZXR2Y192cSxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjQyMTpcdFx0XHRcdHN0cnVjdCB2aG9zdF9zY3NpX3ZpcnRxdWV1ZSwgdnEpO1xuZHJpdmVycy92aG9zdC9zY3NpLmMtNDIyLVx0c3RydWN0IHZob3N0X3Njc2kgKnZzID0gc3ZxLVx1MDAzZXZzO1xuZHJpdmVycy92aG9zdC9zY3NpLmM6NDIzOlx0c3RydWN0IHZob3N0X3Njc2lfaW5mbGlnaHQgKmluZmxpZ2h0ID0gdHZfY21kLVx1MDAzZWluZmxpZ2h0O1xuZHJpdmVycy92aG9zdC9zY3NpLmMtNDI0LVx0c3RydWN0IHNjYXR0ZXJsaXN0ICpzZztcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy00NTQtXHRzYml0bWFwX2NsZWFyX2JpdChcdTAwMjZzdnEtXHUwMDNlc2NzaV90YWdzLCBzZV9jbWQtXHUwMDNlbWFwX3RhZyk7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo0NTU6XHR2aG9zdF9zY3NpX3B1dF9pbmZsaWdodChpbmZsaWdodCk7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYy00NTYtfVxuZHJpdmVycy92aG9zdC9zY3NpLmMtNDU3LVxuZHJpdmVycy92aG9zdC9zY3NpLmM6NDU4OnN0YXRpYyB2b2lkIHZob3N0X3Njc2lfcmVsZWFzZV90bWZfcmVzKHN0cnVjdCB2aG9zdF9zY3NpX3RtZiAqdG1mKVxuZHJpdmVycy92aG9zdC9zY3NpLmMtNDU5LXtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjQ2MDpcdHN0cnVjdCB2aG9zdF9zY3NpX2luZmxpZ2h0ICppbmZsaWdodCA9IHRtZi1cdTAwM2VpbmZsaWdodDtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTQ2MS1cbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy00NjYtXHRrZnJlZSh0bWYpO1xuZHJpdmVycy92aG9zdC9zY3NpLmM6NDY3Olx0dmhvc3Rfc2NzaV9wdXRfaW5mbGlnaHQoaW5mbGlnaHQpO1xuZHJpdmVycy92aG9zdC9zY3NpLmMtNDY4LX1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTQ2OS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjQ3MDpzdGF0aWMgdm9pZCB2aG9zdF9zY3NpX2Ryb3BfY21kcyhzdHJ1Y3Qgdmhvc3Rfc2NzaV92aXJ0cXVldWUgKnN2cSlcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTQ3MS17XG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo0NzI6XHRzdHJ1Y3Qgdmhvc3Rfc2NzaV9jbWQgKmNtZCwgKnQ7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYy00NzMtXHRzdHJ1Y3QgbGxpc3Rfbm9kZSAqbGxub2RlO1xuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTQ3Ni1cdGxsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoY21kLCB0LCBsbG5vZGUsIHR2Y19jb21wbGV0aW9uX2xpc3QpXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo0Nzc6XHRcdHZob3N0X3Njc2lfcmVsZWFzZV9jbWRfcmVzKFx1MDAyNmNtZC1cdTAwM2V0dmNfc2VfY21kKTtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTQ3OC19XG5kcml2ZXJzL3Zob3N0L3Njc2kuYy00NzktXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo0ODA6c3RhdGljIHZvaWQgdmhvc3Rfc2NzaV9yZWxlYXNlX2NtZChzdHJ1Y3Qgc2VfY21kICpzZV9jbWQpXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy00ODEte1xuZHJpdmVycy92aG9zdC9zY3NpLmMtNDgyLVx0aWYgKHNlX2NtZC1cdTAwM2VzZV9jbWRfZmxhZ3MgXHUwMDI2IFNDRl9TQ1NJX1RNUl9DREIpIHtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjQ4MzpcdFx0c3RydWN0IHZob3N0X3Njc2lfdG1mICp0bWYgPSBjb250YWluZXJfb2Yoc2VfY21kLFxuZHJpdmVycy92aG9zdC9zY3NpLmM6NDg0Olx0XHRcdFx0XHRzdHJ1Y3Qgdmhvc3Rfc2NzaV90bWYsIHNlX2NtZCk7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYy00ODUtXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtNDg3LVx0fSBlbHNlIHtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjQ4ODpcdFx0c3RydWN0IHZob3N0X3Njc2lfY21kICpjbWQgPSBjb250YWluZXJfb2Yoc2VfY21kLFxuZHJpdmVycy92aG9zdC9zY3NpLmM6NDg5Olx0XHRcdFx0XHRzdHJ1Y3Qgdmhvc3Rfc2NzaV9jbWQsIHR2Y19zZV9jbWQpO1xuZHJpdmVycy92aG9zdC9zY3NpLmM6NDkwOlx0XHRzdHJ1Y3Qgdmhvc3Rfc2NzaV92aXJ0cXVldWUgKnN2cSA9ICBjb250YWluZXJfb2YoY21kLVx1MDAzZXR2Y192cSxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjQ5MTpcdFx0XHRcdFx0c3RydWN0IHZob3N0X3Njc2lfdmlydHF1ZXVlLCB2cSk7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYy00OTItXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtNDk0LVx0XHRpZiAoIXZob3N0X3ZxX3dvcmtfcXVldWUoXHUwMDI2c3ZxLVx1MDAzZXZxLCBcdTAwMjZzdnEtXHUwMDNlY29tcGxldGlvbl93b3JrKSlcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjQ5NTpcdFx0XHR2aG9zdF9zY3NpX2Ryb3BfY21kcyhzdnEpO1xuZHJpdmVycy92aG9zdC9zY3NpLmMtNDk2LVx0fVxuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTQ5OC1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjQ5OTpzdGF0aWMgaW50IHZob3N0X3Njc2lfd3JpdGVfcGVuZGluZyhzdHJ1Y3Qgc2VfY21kICpzZV9jbWQpXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy01MDAte1xuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTUwNS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjUwNjpzdGF0aWMgaW50IHZob3N0X3Njc2lfcXVldWVfZGF0YV9pbihzdHJ1Y3Qgc2VfY21kICpzZV9jbWQpXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy01MDcte1xuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTUxMS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjUxMjpzdGF0aWMgaW50IHZob3N0X3Njc2lfcXVldWVfc3RhdHVzKHN0cnVjdCBzZV9jbWQgKnNlX2NtZClcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTUxMy17XG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtNTE3LVxuZHJpdmVycy92aG9zdC9zY3NpLmM6NTE4OnN0YXRpYyB2b2lkIHZob3N0X3Njc2lfcXVldWVfdG1fcnNwKHN0cnVjdCBzZV9jbWQgKnNlX2NtZClcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTUxOS17XG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo1MjA6XHRzdHJ1Y3Qgdmhvc3Rfc2NzaV90bWYgKnRtZiA9IGNvbnRhaW5lcl9vZihzZV9jbWQsIHN0cnVjdCB2aG9zdF9zY3NpX3RtZixcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTUyMS1cdFx0XHRcdFx0XHQgIHNlX2NtZCk7XG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtNTI2LVxuZHJpdmVycy92aG9zdC9zY3NpLmM6NTI3OnN0YXRpYyB2b2lkIHZob3N0X3Njc2lfYWJvcnRlZF90YXNrKHN0cnVjdCBzZV9jbWQgKnNlX2NtZClcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTUyOC17XG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtNTMxLVxuZHJpdmVycy92aG9zdC9zY3NpLmM6NTMyOnN0YXRpYyB2b2lkIHZob3N0X3Njc2lfZnJlZV9ldnQoc3RydWN0IHZob3N0X3Njc2kgKnZzLCBzdHJ1Y3Qgdmhvc3Rfc2NzaV9ldnQgKmV2dClcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTUzMy17XG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtNTM3LVxuZHJpdmVycy92aG9zdC9zY3NpLmM6NTM4OnN0YXRpYyBzdHJ1Y3Qgdmhvc3Rfc2NzaV9ldnQgKlxuZHJpdmVycy92aG9zdC9zY3NpLmM6NTM5OnZob3N0X3Njc2lfYWxsb2NhdGVfZXZ0KHN0cnVjdCB2aG9zdF9zY3NpICp2cyxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTU0MC1cdFx0ICAgICAgIHUzMiBldmVudCwgdTMyIHJlYXNvbilcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy01NDItXHRzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICp2cSA9IFx1MDAyNnZzLVx1MDAzZXZxc1tWSE9TVF9TQ1NJX1ZRX0VWVF0udnE7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo1NDM6XHRzdHJ1Y3Qgdmhvc3Rfc2NzaV9ldnQgKmV2dDtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTU0NC1cbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy01NTEtXHRpZiAoIWV2dCkge1xuZHJpdmVycy92aG9zdC9zY3NpLmM6NTUyOlx0XHR2cV9lcnIodnEsIFwmIzM0O0ZhaWxlZCB0byBhbGxvY2F0ZSB2aG9zdF9zY3NpX2V2dFxcblwmIzM0Oyk7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYy01NTMtXHRcdHZzLVx1MDAzZXZzX2V2ZW50c19taXNzZWQgPSB0cnVlO1xuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTU2My1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjU2NDpzdGF0aWMgaW50IHZob3N0X3Njc2lfY2hlY2tfc3RvcF9mcmVlKHN0cnVjdCBzZV9jbWQgKnNlX2NtZClcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTU2NS17XG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmM9NTY5PXN0YXRpYyB2b2lkXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo1NzA6dmhvc3Rfc2NzaV9kb19ldnRfd29yayhzdHJ1Y3Qgdmhvc3Rfc2NzaSAqdnMsIHN0cnVjdCB2aG9zdF9zY3NpX2V2dCAqZXZ0KVxuZHJpdmVycy92aG9zdC9zY3NpLmMtNTcxLXtcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy02MjctXHRlbHNlXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo2Mjg6XHRcdHZxX2Vycih2cSwgXCYjMzQ7RmF1bHRlZCBvbiB2aG9zdF9zY3NpX3NlbmRfZXZlbnRcXG5cJiMzNDspO1xuZHJpdmVycy92aG9zdC9zY3NpLmMtNjI5LVxuZHJpdmVycy92aG9zdC9zY3NpLmM6NjMwOlx0dmhvc3Rfc2NzaV9sb2dfd3JpdGUodnEsIHZxX2xvZywgbG9nX251bSk7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYy02MzEtfVxuZHJpdmVycy92aG9zdC9zY3NpLmMtNjMyLVxuZHJpdmVycy92aG9zdC9zY3NpLmM6NjMzOnN0YXRpYyB2b2lkIHZob3N0X3Njc2lfY29tcGxldGVfZXZlbnRzKHN0cnVjdCB2aG9zdF9zY3NpICp2cywgYm9vbCBkcm9wKVxuZHJpdmVycy92aG9zdC9zY3NpLmMtNjM0LXtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTYzNS1cdHN0cnVjdCB2aG9zdF92aXJ0cXVldWUgKnZxID0gXHUwMDI2dnMtXHUwMDNldnFzW1ZIT1NUX1NDU0lfVlFfRVZUXS52cTtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjYzNjpcdHN0cnVjdCB2aG9zdF9zY3NpX2V2dCAqZXZ0LCAqdDtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTYzNy1cdHN0cnVjdCBsbGlzdF9ub2RlICpsbG5vZGU7XG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtNjQyLVx0XHRpZiAoIWRyb3ApXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo2NDM6XHRcdFx0dmhvc3Rfc2NzaV9kb19ldnRfd29yayh2cywgZXZ0KTtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjY0NDpcdFx0dmhvc3Rfc2NzaV9mcmVlX2V2dCh2cywgZXZ0KTtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTY0NS1cdH1cbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy02NDgtXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo2NDk6c3RhdGljIHZvaWQgdmhvc3Rfc2NzaV9ldnRfd29yayhzdHJ1Y3Qgdmhvc3Rfd29yayAqd29yaylcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTY1MC17XG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtNjUyLVx0XHRcdFx0XHQgICAgIHZzX2V2ZW50X3dvcmspO1xuZHJpdmVycy92aG9zdC9zY3NpLmM6NjUzOlx0dmhvc3Rfc2NzaV9jb21wbGV0ZV9ldmVudHModnMsIGZhbHNlKTtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTY1NC19XG5kcml2ZXJzL3Zob3N0L3Njc2kuYy02NTUtXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo2NTY6c3RhdGljIGludCB2aG9zdF9zY3NpX2NvcHlfc2dsX3RvX2lvdihzdHJ1Y3Qgdmhvc3Rfc2NzaV9jbWQgKmNtZClcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTY1Ny17XG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtNjg1LSAqL1xuZHJpdmVycy92aG9zdC9zY3NpLmM6Njg2OnN0YXRpYyB2b2lkIHZob3N0X3Njc2lfY29tcGxldGVfY21kX3dvcmsoc3RydWN0IHZob3N0X3dvcmsgKndvcmspXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy02ODcte1xuZHJpdmVycy92aG9zdC9zY3NpLmM6Njg4Olx0c3RydWN0IHZob3N0X3Njc2lfdmlydHF1ZXVlICpzdnEgPSBjb250YWluZXJfb2Yod29yayxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjY4OTpcdFx0XHRcdHN0cnVjdCB2aG9zdF9zY3NpX3ZpcnRxdWV1ZSwgY29tcGxldGlvbl93b3JrKTtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTY5MC1cdHN0cnVjdCB2aXJ0aW9fc2NzaV9jbWRfcmVzcCB2X3JzcDtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjY5MTpcdHN0cnVjdCB2aG9zdF9zY3NpX2NtZCAqY21kLCAqdDtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTY5Mi1cdHN0cnVjdCBsbGlzdF9ub2RlICpsbG5vZGU7XG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtNzA4LVxuZHJpdmVycy92aG9zdC9zY3NpLmM6NzA5Olx0XHRpZiAoY21kLVx1MDAzZXJlYWRfaXRlciBcdTAwMjZcdTAwMjYgdmhvc3Rfc2NzaV9jb3B5X3NnbF90b19pb3YoY21kKSkge1xuZHJpdmVycy92aG9zdC9zY3NpLmMtNzEwLVx0XHRcdHZfcnNwLnJlc3BvbnNlID0gVklSVElPX1NDU0lfU19CQURfVEFSR0VUO1xuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTczMS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjczMjpcdFx0dmhvc3Rfc2NzaV9sb2dfd3JpdGUoY21kLVx1MDAzZXR2Y192cSwgY21kLVx1MDAzZXR2Y19sb2csXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy03MzMtXHRcdFx0XHQgICAgIGNtZC1cdTAwM2V0dmNfbG9nX251bSk7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYy03MzQtXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo3MzU6XHRcdHZob3N0X3Njc2lfcmVsZWFzZV9jbWRfcmVzKHNlX2NtZCk7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYy03MzYtXHR9XG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtNzQyLVxuZHJpdmVycy92aG9zdC9zY3NpLmM6NzQzOnN0YXRpYyBzdHJ1Y3Qgdmhvc3Rfc2NzaV9jbWQgKlxuZHJpdmVycy92aG9zdC9zY3NpLmM6NzQ0OnZob3N0X3Njc2lfZ2V0X2NtZChzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICp2cSwgdTY0IHNjc2lfdGFnKVxuZHJpdmVycy92aG9zdC9zY3NpLmMtNzQ1LXtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjc0NjpcdHN0cnVjdCB2aG9zdF9zY3NpX3ZpcnRxdWV1ZSAqc3ZxID0gY29udGFpbmVyX29mKHZxLFxuZHJpdmVycy92aG9zdC9zY3NpLmM6NzQ3Olx0XHRcdFx0XHRzdHJ1Y3Qgdmhvc3Rfc2NzaV92aXJ0cXVldWUsIHZxKTtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjc0ODpcdHN0cnVjdCB2aG9zdF9zY3NpX2NtZCAqY21kO1xuZHJpdmVycy92aG9zdC9zY3NpLmMtNzQ5LVx0c3RydWN0IHNjYXR0ZXJsaXN0ICpzZ2wsICpwcm90X3NnbDtcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy03NjctXHRjbWQtXHUwMDNldHZjX3NlX2NtZC5tYXBfdGFnID0gdGFnO1xuZHJpdmVycy92aG9zdC9zY3NpLmM6NzY4Olx0Y21kLVx1MDAzZWluZmxpZ2h0ID0gdmhvc3Rfc2NzaV9nZXRfaW5mbGlnaHQodnEpO1xuZHJpdmVycy92aG9zdC9zY3NpLmMtNzY5LVxuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTc3Mi1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjc3MzpzdGF0aWMgdm9pZCB2aG9zdF9zY3NpX3JldmVydF9tYXBfaW92X3RvX3NnbChzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIsXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy03NzQtXHRcdFx0XHRcdCAgICAgc3RydWN0IHNjYXR0ZXJsaXN0ICpjdXJyLFxuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTc5OT1zdGF0aWMgaW50XG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo4MDA6dmhvc3Rfc2NzaV9tYXBfdG9fc2dsKHN0cnVjdCB2aG9zdF9zY3NpX2NtZCAqY21kLFxuZHJpdmVycy92aG9zdC9zY3NpLmMtODAxLVx0XHQgICAgICBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIsXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtODA1LXtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjgwNjpcdHN0cnVjdCB2aG9zdF9zY3NpX3ZpcnRxdWV1ZSAqc3ZxID0gY29udGFpbmVyX29mKGNtZC1cdTAwM2V0dmNfdnEsXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo4MDc6XHRcdFx0XHRcdHN0cnVjdCB2aG9zdF9zY3NpX3ZpcnRxdWV1ZSwgdnEpO1xuZHJpdmVycy92aG9zdC9zY3NpLmMtODA4LVx0c3RydWN0IHBhZ2UgKipwYWdlcyA9IHN2cS1cdTAwM2V1cGFnZXM7XG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtODUxLXJldmVydF9pdGVyX2dldF9wYWdlczpcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjg1MjpcdHZob3N0X3Njc2lfcmV2ZXJ0X21hcF9pb3ZfdG9fc2dsKGl0ZXIsICpzZ2wsIHNnKTtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTg1My1cbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz04NjU9c3RhdGljIGludFxuZHJpdmVycy92aG9zdC9zY3NpLmM6ODY2OnZob3N0X3Njc2lfY2FsY19zZ2xzKHN0cnVjdCBpb3ZfaXRlciAqaXRlciwgc2l6ZV90IGJ5dGVzLCBpbnQgbWF4X3NnbHMpXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy04Njcte1xuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTg4NT1zdGF0aWMgaW50XG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo4ODY6dmhvc3Rfc2NzaV9jb3B5X2lvdl90b19zZ2woc3RydWN0IHZob3N0X3Njc2lfY21kICpjbWQsIHN0cnVjdCBpb3ZfaXRlciAqaXRlcixcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTg4Ny1cdFx0XHQgICBzdHJ1Y3Qgc2dfdGFibGUgKnNnX3RhYmxlLCBpbnQgc2dfY291bnQsXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmM9OTQ1PXN0YXRpYyBpbnRcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjk0Njp2aG9zdF9zY3NpX21hcF9pb3ZfdG9fc2dsKHN0cnVjdCB2aG9zdF9zY3NpX2NtZCAqY21kLCBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIsXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy05NDctXHRcdFx0ICBzdHJ1Y3Qgc2dfdGFibGUgKnNnX3RhYmxlLCBpbnQgc2dfY291bnQsIGJvb2wgaXNfcHJvdClcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy05NTItXHR3aGlsZSAoaW92X2l0ZXJfY291bnQoaXRlcikpIHtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjk1MzpcdFx0cmV0ID0gdmhvc3Rfc2NzaV9tYXBfdG9fc2dsKGNtZCwgaXRlciwgc2dfdGFibGUsIFx1MDAyNnNnLCBpc19wcm90KTtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTk1NC1cdFx0aWYgKHJldCBcdTAwM2MgMCkge1xuZHJpdmVycy92aG9zdC9zY3NpLmM6OTU1Olx0XHRcdHZob3N0X3Njc2lfcmV2ZXJ0X21hcF9pb3ZfdG9fc2dsKGl0ZXIsIHNnX3RhYmxlLVx1MDAzZXNnbCxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTk1Ni1cdFx0XHRcdFx0XHRcdCBzZyk7XG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmM9OTY0PXN0YXRpYyBpbnRcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjk2NTp2aG9zdF9zY3NpX21hcGFsKHN0cnVjdCB2aG9zdF9zY3NpICp2cywgc3RydWN0IHZob3N0X3Njc2lfY21kICpjbWQsXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy05NjYtXHRcdCBzaXplX3QgcHJvdF9ieXRlcywgc3RydWN0IGlvdl9pdGVyICpwcm90X2l0ZXIsXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtOTcxLVx0aWYgKHByb3RfYnl0ZXMpIHtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjk3MjpcdFx0c2dsX2NvdW50ID0gdmhvc3Rfc2NzaV9jYWxjX3NnbHMocHJvdF9pdGVyLCBwcm90X2J5dGVzLFxuZHJpdmVycy92aG9zdC9zY3NpLmMtOTczLVx0XHRcdFx0XHRcdCBWSE9TVF9TQ1NJX1BSRUFMTE9DX1BST1RfU0dMUyk7XG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtOTg0LVxuZHJpdmVycy92aG9zdC9zY3NpLmM6OTg1Olx0XHRyZXQgPSB2aG9zdF9zY3NpX21hcF9pb3ZfdG9fc2dsKGNtZCwgcHJvdF9pdGVyLFxuZHJpdmVycy92aG9zdC9zY3NpLmMtOTg2LVx0XHRcdFx0XHRcdFx1MDAyNmNtZC1cdTAwM2Vwcm90X3RhYmxlLFxuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTk5NC1cdH1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjk5NTpcdHNnbF9jb3VudCA9IHZob3N0X3Njc2lfY2FsY19zZ2xzKGRhdGFfaXRlciwgZGF0YV9ieXRlcyxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTk5Ni1cdFx0XHRcdFx0IFZIT1NUX1NDU0lfUFJFQUxMT0NfU0dMUyk7XG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTAwOS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjEwMTA6XHRyZXQgPSB2aG9zdF9zY3NpX21hcF9pb3ZfdG9fc2dsKGNtZCwgZGF0YV9pdGVyLCBcdTAwMjZjbWQtXHUwMDNldGFibGUsXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xMDExLVx0XHRcdFx0XHRjbWQtXHUwMDNldHZjX3NnbF9jb3VudCwgZmFsc2UpO1xuZHJpdmVycy92aG9zdC9zY3NpLmMtMTAxMi1cdGlmIChyZXQgPT0gLUVJTlZBTClcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjEwMTM6XHRcdHJldCA9IHZob3N0X3Njc2lfY29weV9pb3ZfdG9fc2dsKGNtZCwgZGF0YV9pdGVyLCBcdTAwMjZjbWQtXHUwMDNldGFibGUsXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xMDE0LVx0XHRcdFx0XHRcdCBjbWQtXHUwMDNldHZjX3NnbF9jb3VudCwgZGF0YV9kaXIpO1xuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTEwMjItXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxMDIzOnN0YXRpYyBpbnQgdmhvc3Rfc2NzaV90b190Y21fYXR0cihpbnQgYXR0cilcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTEwMjQte1xuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTEwMzktXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxMDQwOnN0YXRpYyB2b2lkIHZob3N0X3Njc2lfdGFyZ2V0X3F1ZXVlX2NtZChzdHJ1Y3Qgdmhvc3Rfc2NzaV9uZXh1cyAqbmV4dXMsXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxMDQxOlx0XHRcdFx0XHRzdHJ1Y3Qgdmhvc3Rfc2NzaV9jbWQgKmNtZCxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTEwNDItXHRcdFx0XHRcdHVuc2lnbmVkIGNoYXIgKmNkYiwgdTE2IGx1bixcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xMDYyLVx0dGFyZ2V0X2luaXRfY21kKHNlX2NtZCwgbmV4dXMtXHUwMDNldHZuX3NlX3Nlc3MsIFx1MDAyNmNtZC1cdTAwM2V0dmNfc2Vuc2VfYnVmWzBdLFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTA2MzpcdFx0XHRsdW4sIGV4cF9kYXRhX2xlbiwgdmhvc3Rfc2NzaV90b190Y21fYXR0cih0YXNrX2F0dHIpLFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTA2NC1cdFx0XHRkYXRhX2RpciwgVEFSR0VUX1NDRl9BQ0tfS1JFRik7XG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmM9MTA3ND1zdGF0aWMgdm9pZFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTA3NTp2aG9zdF9zY3NpX3NlbmRfc3RhdHVzKHN0cnVjdCB2aG9zdF9zY3NpICp2cywgc3RydWN0IHZob3N0X3ZpcnRxdWV1ZSAqdnEsXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxMDc2Olx0XHQgICAgICAgc3RydWN0IHZob3N0X3Njc2lfY3R4ICp2YywgdTggc3RhdHVzKVxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTA3Ny17XG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmM9MTEwMD1zdGF0aWMgdm9pZFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTEwMTp2aG9zdF9zY3NpX3NlbmRfYmFkX3RhcmdldChzdHJ1Y3Qgdmhvc3Rfc2NzaSAqdnMsXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xMTAyLVx0XHRcdCAgIHN0cnVjdCB2aG9zdF92aXJ0cXVldWUgKnZxLFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTEwMzpcdFx0XHQgICBzdHJ1Y3Qgdmhvc3Rfc2NzaV9jdHggKnZjLCBpbnQgdHlwZSlcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTExMDQte1xuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTExMzg9c3RhdGljIGludFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTEzOTp2aG9zdF9zY3NpX2dldF9kZXNjKHN0cnVjdCB2aG9zdF9zY3NpICp2cywgc3RydWN0IHZob3N0X3ZpcnRxdWV1ZSAqdnEsXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxMTQwOlx0XHQgICAgc3RydWN0IHZob3N0X3Njc2lfY3R4ICp2YyxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTExNDEtXHRcdCAgICBzdHJ1Y3Qgdmhvc3RfbG9nICpsb2csIHVuc2lnbmVkIGludCAqbG9nX251bSlcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz0xMTkyPXN0YXRpYyBpbnRcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjExOTM6dmhvc3Rfc2NzaV9jaGtfc2l6ZShzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICp2cSwgc3RydWN0IHZob3N0X3Njc2lfY3R4ICp2YylcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTExOTQte1xuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTEyMTA9c3RhdGljIGludFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTIxMTp2aG9zdF9zY3NpX2dldF9yZXEoc3RydWN0IHZob3N0X3ZpcnRxdWV1ZSAqdnEsIHN0cnVjdCB2aG9zdF9zY3NpX2N0eCAqdmMsXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxMjEyOlx0XHQgICBzdHJ1Y3Qgdmhvc3Rfc2NzaV90cGcgKip0cGdwKVxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTIxMy17XG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTIyMi1cdH0gZWxzZSB7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxMjIzOlx0XHRzdHJ1Y3Qgdmhvc3Rfc2NzaV90cGcgKip2c190cGcsICp0cGcgPSBOVUxMO1xuZHJpdmVycy92aG9zdC9zY3NpLmMtMTIyNC1cbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz0xMjQxPXN0YXRpYyBpbnRcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjEyNDI6dmhvc3Rfc2NzaV9zZXR1cF9yZXNwX2lvdnMoc3RydWN0IHZob3N0X3Njc2lfY21kICpjbWQsIHN0cnVjdCBpb3ZlYyAqaW5faW92cyxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTEyNDMtXHRcdFx0ICAgdW5zaWduZWQgaW50IGluX2lvdnNfY250KVxuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTEyODI9c3RhdGljIHZvaWRcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjEyODM6dmhvc3Rfc2NzaV9oYW5kbGVfdnEoc3RydWN0IHZob3N0X3Njc2kgKnZzLCBzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICp2cSlcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTEyODQte1xuZHJpdmVycy92aG9zdC9zY3NpLmM6MTI4NTpcdHN0cnVjdCB2aG9zdF9zY3NpX3RwZyAqKnZzX3RwZywgKnRwZztcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTEyODYtXHRzdHJ1Y3QgdmlydGlvX3Njc2lfY21kX3JlcSB2X3JlcTtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTEyODctXHRzdHJ1Y3QgdmlydGlvX3Njc2lfY21kX3JlcV9waSB2X3JlcV9waTtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjEyODg6XHRzdHJ1Y3Qgdmhvc3Rfc2NzaV9uZXh1cyAqbmV4dXM7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxMjg5Olx0c3RydWN0IHZob3N0X3Njc2lfY3R4IHZjO1xuZHJpdmVycy92aG9zdC9zY3NpLmM6MTI5MDpcdHN0cnVjdCB2aG9zdF9zY3NpX2NtZCAqY21kO1xuZHJpdmVycy92aG9zdC9zY3NpLmMtMTI5MS1cdHN0cnVjdCBpb3ZfaXRlciBpbl9pdGVyLCBwcm90X2l0ZXIsIGRhdGFfaXRlcjtcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xMzE5LVx0ZG8ge1xuZHJpdmVycy92aG9zdC9zY3NpLmM6MTMyMDpcdFx0cmV0ID0gdmhvc3Rfc2NzaV9nZXRfZGVzYyh2cywgdnEsIFx1MDAyNnZjLCB2cV9sb2csIFx1MDAyNmxvZ19udW0pO1xuZHJpdmVycy92aG9zdC9zY3NpLmMtMTMyMS1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xMzQ0LVx0XHQgKi9cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjEzNDU6XHRcdHJldCA9IHZob3N0X3Njc2lfY2hrX3NpemUodnEsIFx1MDAyNnZjKTtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTEzNDYtXHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTM0OC1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjEzNDk6XHRcdHJldCA9IHZob3N0X3Njc2lfZ2V0X3JlcSh2cSwgXHUwMDI2dmMsIFx1MDAyNnRwZyk7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xMzUwLVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTEzODktXHRcdCAqIElmIFQxMF9QSSBoZWFkZXIgJiM0MzsgcGF5bG9hZCBpcyBwcmVzZW50LCBzZXR1cCBwcm90X2l0ZXIgdmFsdWVzXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxMzkwOlx0XHQgKiBhbmQgcmVjYWxjdWxhdGUgZGF0YV9pdGVyIGZvciB2aG9zdF9zY3NpX21hcGFsKCkgbWFwcGluZyB0b1xuZHJpdmVycy92aG9zdC9zY3NpLmMtMTM5MS1cdFx0ICogaG9zdCBzY2F0dGVybGlzdHMgdmlhIGdldF91c2VyX3BhZ2VzX2Zhc3QoKS5cbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xNDQ4LVx0XHRpZiAoIW5leHVzKSB7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxNDQ5Olx0XHRcdHZxX2Vycih2cSwgXCYjMzQ7VW5hYmxlIHRvIGxvY2F0ZSBhY3RpdmUgc3RydWN0IHZob3N0X3Njc2lfbmV4dXNcXG5cJiMzNDspO1xuZHJpdmVycy92aG9zdC9zY3NpLmMtMTQ1MC1cdFx0XHRyZXQgPSAtRUlPO1xuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE0NTMtXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxNDU0Olx0XHRjbWQgPSB2aG9zdF9zY3NpX2dldF9jbWQodnEsIHRhZyk7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xNDU1LVx0XHRpZiAoSVNfRVJSKGNtZCkpIHtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE0NTYtXHRcdFx0cmV0ID0gUFRSX0VSUihjbWQpO1xuZHJpdmVycy92aG9zdC9zY3NpLmM6MTQ1NzpcdFx0XHR2cV9lcnIodnEsIFwmIzM0O3Zob3N0X3Njc2lfZ2V0X3RhZyBmYWlsZWQgJWRcXG5cJiMzNDssIHJldCk7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xNDU4LVx0XHRcdGdvdG8gZXJyO1xuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE0NjEtXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxNDYyOlx0XHRyZXQgPSB2aG9zdF9zY3NpX3NldHVwX3Jlc3BfaW92cyhjbWQsIFx1MDAyNnZxLVx1MDAzZWlvdlt2Yy5vdXRdLCB2Yy5pbik7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xNDYzLVx0XHRpZiAocmV0KSB7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xNDY0LVx0XHRcdHZxX2Vycih2cSwgXCYjMzQ7RmFpbGVkIHRvIGFsbG9jIHJlY3YgaW92c1xcblwmIzM0Oyk7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxNDY1Olx0XHRcdHZob3N0X3Njc2lfcmVsZWFzZV9jbWRfcmVzKFx1MDAyNmNtZC1cdTAwM2V0dmNfc2VfY21kKTtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE0NjYtXHRcdFx0Z290byBlcnI7XG4tLVxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA3OjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1NjcwCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogNzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpdCBzdGFuZHM6CgoqKk5hdmlnYXRpbmcgdGhlIFZob3N0LVNDU0kgQ29kZWJhc2UqKgoKT2theSwgc28gSSYjMzk7bSB0cnlpbmcgdG8gdHJhY2UgdGhlIHBhdGggdGhyb3VnaCB0aGUgdmhvc3Qtc2NzaSBjb2RlLiBNeSBpbml0aWFsIGludHVpdGlvbiBwb2ludHMgdG93YXJkcyBgdmhvc3Rfc2NzaV9oYW5kbGVfdnFgIGFuZCBgdmhvc3Rfc2NzaV9jb21wbGV0ZV9jbWRfd29ya2AgYXMgdGhlIGtleSBlbnRyeSBwb2ludHMuIEJ1dCBob2xkIG9uLCBJIHJlbWVtYmVyIG5vdywgYHZob3N0X3Njc2lfaGFuZGxlX3ZxYCBpcyBhY3R1YWxseSBjYWxsZWQgZnJvbSBgdmhvc3Rfc2NzaV9oYW5kbGVfa2lja2AuIFRoYXQgbWFrZXMgbW9yZSBzZW5zZTsgdGhlIGtpY2sgaXMgd2hhdCBzaWduYWxzIHRoYXQgdGhlcmUmIzM5O3Mgd29yayB0byBiZSBkb25lLiBTbywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBoYXBwZW5pbmcgKmJlZm9yZSogYHZob3N0X3Njc2lfaGFuZGxlX3ZxYCBnZXRzIGludm9sdmVkLiBMZXQmIzM5O3MgZGlnIGludG8gYHZob3N0X3Njc2lfaGFuZGxlX2tpY2tgIGFuZCBzZWUgd2hhdCYjMzk7cyBnb2luZyBvbiB0aGVyZS4gSSYjMzk7bSBndWVzc2luZyB0aGlzIHdpbGwgZ2l2ZSBtZSB0aGUgY3J1Y2lhbCBjb250ZXh0IEkmIzM5O20gbWlzc2luZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDc6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dmhvc3Rfc2NzaV9oYW5kbGVfa2ljayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmhvc3Qvc2NzaS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmhvc3Qvc2NzaS5jPTE4MjY9c3RhdGljIHZvaWQgdmhvc3Rfc2NzaV9ldnRfaGFuZGxlX2tpY2soc3RydWN0IHZob3N0X3dvcmsgKndvcmspXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTg0Mi1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjE4NDM6c3RhdGljIHZvaWQgdmhvc3Rfc2NzaV9oYW5kbGVfa2ljayhzdHJ1Y3Qgdmhvc3Rfd29yayAqd29yaylcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE4NDQte1xuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTIyNzA9c3RhdGljIGludCB2aG9zdF9zY3NpX29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmYpXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjMyMS1cdFx0XHRcdHZob3N0X3Njc2lfY29tcGxldGVfY21kX3dvcmspO1xuZHJpdmVycy92aG9zdC9zY3NpLmM6MjMyMjpcdFx0c3ZxLVx1MDAzZXZxLmhhbmRsZV9raWNrID0gdmhvc3Rfc2NzaV9oYW5kbGVfa2ljaztcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTIzMjMtXHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA3OjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2MjI4CgkJCQkJCQlvdXRwdXQ6IDUzCgkJCQkJCQl0aG91Z2h0czogMjcwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgdGhlIFNDU0kgdmhvc3QgSW1wbGVtZW50YXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtSaWdodCwgYHZob3N0X3Njc2lfaGFuZGxlX2tpY2tgIGlzIHRoZSBraWNrIGhhbmRsZXIsIGdvdCBpdC4mIzM0OyBCdXQgdGhlbiBJJiMzOTttIGltbWVkaWF0ZWx5IGRyYXduIHRvIGB2aG9zdF9zY3NpX2NvbXBsZXRlX2NtZF93b3JrYC4gVGhhdCYjMzk7cyB0aGUgY29tcGxldGlvbiB3b3JrIGhhbmRsZXIsIGFuZCB0aGUgcGF0Y2ggbW9kaWZpZXMgKnRoYXQqIGZ1bmN0aW9uLiBNeSBndXQgc2F5cywgJiMzNDtEZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcsJiMzNDsgZ2l2ZW4gdGhhdCBpdCYjMzk7cyBhIGNyaXRpY2FsIHBpZWNlLgoKTm93LCBJIG5lZWQgdG8gZGVmaW5lIG15IGZvY3VzLiBJdCYjMzk7cyBnb2luZyB0byBiZSBgdmhvc3Rfc2NzaV9jb21wbGV0ZV9jbWRfd29ya2AgYW5kIGB2aG9zdF9zY3NpX2hhbmRsZV9raWNrYCwgdGhvc2UgYXJlIHRoZSBrZXkgc3ltYm9scy4gV2FpdCBhIG1pbnV0ZS4uLiBpcyBgdmhvc3Rfc2NzaV9jb21wbGV0ZV9jbWRfd29ya2Agc3RhdGljPyBJIG5lZWQgdG8ga25vdywgYmVjYXVzZSBpZiBpdCYjMzk7cyBpbmxpbmVkLCBmdXp6aW5nIGl0IGRpcmVjdGx5IGlzIG11Y2ggbGVzcyBlZmZlY3RpdmUuIFllcywgaXQgKmlzKiBkZWNsYXJlZCBzdGF0aWMuIAoKVGhhdCByaW5ncyBhbGFybSBiZWxscy4gVGhlIGdlbmVyYWwgZ3VpZGFuY2UgaXMgJiMzNDtQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMmIzM0Oy4gQnV0IGhvbGQgb24uLi4gSSByZW1lbWJlciBzZWVpbmcgYHZob3N0X3Njc2lfY29tcGxldGVfY21kX3dvcmtgIGJlaW5nIHVzZWQgYXMgYSBmdW5jdGlvbiBwb2ludGVyOiBgdmhvc3Rfd29ya19pbml0KCZhbXA7c3ZxLSZndDtjb21wbGV0aW9uX3dvcmssIHZob3N0X3Njc2lfY29tcGxldGVfY21kX3dvcmspO2AgSWYgaXQmIzM5O3MgdXNlZCBhcyBhIGZ1bmN0aW9uIHBvaW50ZXIsIHRoZSBjb21waWxlciAqd29uJiMzOTt0KiBpbmxpbmUgaXQhIEl0ICp3aWxsKiBoYXZlIGEgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3MuIFNvLCB0aGF0JiMzOTtzIGdvb2QuCgpKdXN0IHRvIGJlIHRob3JvdWdoLCBJIHNob3VsZCB2ZXJpZnkgdGhhdCBgdmhvc3Rfc2NzaV9oYW5kbGVfa2lja2AgaXMgYWxzbyB1c2VkIGFzIGEgZnVuY3Rpb24gcG9pbnRlci4gVGhlbiBJIG5lZWQgdG8gY2hlY2sgdGhlIGVudGlyZSBgdmhvc3Qvc2NzaS5jYCBmaWxlIGZvciBhbnkgb3RoZXIgbm9uLXN0YXRpYyBmdW5jdGlvbnMsIGp1c3QgdG8gbWFrZSBzdXJlIEkgZG9uJiMzOTt0IG1pc3MgYW55dGhpbmcgb2J2aW91cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDc6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XlthLXpBLVpfXVthLXpBLVowLTlfXSogdmhvc3Rfc2NzaV8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3Zob3N0L3Njc2kuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3Zob3N0L3Njc2kuYz05Nj1NT0RVTEVfUEFSTV9ERVNDKGlubGluZV9zZ19jbnQsIFwmIzM0O1NldCB0aGUgbnVtYmVyIG9mIHNjYXR0ZXJsaXN0IGVudHJpZXMgdG8gcHJlLWFsbG9jYXRlLiBUaGUgZGVmYXVsdCBpcyAyMDQ4LlwmIzM0Oyk7XG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTAzLVxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTA0OnN0cnVjdCB2aG9zdF9zY3NpX2luZmxpZ2h0IHtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTEwNS1cdC8qIFdhaXQgZm9yIHRoZSBmbHVzaCBvcGVyYXRpb24gdG8gZmluaXNoICovXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTEwLVxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTExOnN0cnVjdCB2aG9zdF9zY3NpX2NtZCB7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xMTItXHQvKiBEZXNjcmlwdG9yIGZyb20gdmhvc3RfZ2V0X3ZxX2Rlc2MoKSBmb3IgdmlydF9xdWV1ZSBzZWdtZW50ICovXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTQ2LVxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTQ3OnN0cnVjdCB2aG9zdF9zY3NpX25leHVzIHtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE0OC1cdC8qIFBvaW50ZXIgdG8gVENNIHNlc3Npb24gZm9yIElfVCBOZXh1cyAqL1xuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE1MS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjE1MjpzdHJ1Y3Qgdmhvc3Rfc2NzaV90cGcge1xuZHJpdmVycy92aG9zdC9zY3NpLmMtMTUzLVx0LyogVmhvc3QgcG9ydCB0YXJnZXQgcG9ydGFsIGdyb3VwIHRhZyBmb3IgVENNICovXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTc0LVxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTc1OnN0cnVjdCB2aG9zdF9zY3NpX3Rwb3J0IHtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE3Ni1cdC8qIFNDU0kgcHJvdG9jb2wgdGhlIHRwb3J0IGlzIHByb3ZpZGluZyAqL1xuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE4NS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjE4NjpzdHJ1Y3Qgdmhvc3Rfc2NzaV9ldnQge1xuZHJpdmVycy92aG9zdC9zY3NpLmMtMTg3LVx0LyogZXZlbnQgdG8gYmUgc2VudCB0byBndWVzdCAqL1xuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTIxND1NT0RVTEVfUEFSTV9ERVNDKG1heF9pb192cXMsIFwmIzM0O1NldCB0aGUgbWF4IG51bWJlciBvZiBJTyB2aXJ0cXVldWVzIGEgdmhvc3Qgc2NzaSBkZXZpY2UgY2FuIHN1cHBvcnQuIFRoZSBkZWZhdWx0IGlzIDEyOC4gVGhlIG1heCBpcyAxMDI0LlwmIzM0Oyk7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yMTUtXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyMTY6c3RydWN0IHZob3N0X3Njc2lfdmlydHF1ZXVlIHtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTIxNy1cdHN0cnVjdCB2aG9zdF92aXJ0cXVldWUgdnE7XG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmM9MjM5PXN0cnVjdCB2aG9zdF9zY3NpIHtcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yNTYtXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyNTc6c3RydWN0IHZob3N0X3Njc2lfdG1mIHtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI1OC1cdHN0cnVjdCB2aG9zdF93b3JrIHZ3b3JrO1xuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI3OS0gKi9cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjI4MDpzdHJ1Y3Qgdmhvc3Rfc2NzaV9jdHgge1xuZHJpdmVycy92aG9zdC9zY3NpLmMtMjgxLVx0aW50IGhlYWQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA3OjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3NzAwCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKlF1aWNrIENoZWNrOiBBdm9pZGluZyB0aGUgVmhvc3RfU0NTSSBSZWdleCBQaXRmYWxsKioKCkhtbSwgdGhhdCByZWdleCBJIHVzZWQsIGBeW2EtekEtWl9dW2EtekEtWjAtOV9dKiB2aG9zdF9zY3NpX2AsIGZlZWxzIGEgbGl0dGxlLi4uIGJyaXR0bGUuIEkgbmVlZCB0byBxdWlja2x5IHZlcmlmeSB0aGF0IGl0JiMzOTtzIGFjdHVhbGx5IGNhdGNoaW5nIHdoYXQgSSAqdGhpbmsqIGl0JiMzOTtzIGNhdGNoaW5nIGFuZCBub3QgbWlzc2luZyBzb21ldGhpbmcgY3J1Y2lhbC4gSW5zdGVhZCBvZiByZWx5aW5nIHNvbGVseSBvbiB0aGUgcmVnZXgsIHdoaWNoIGNvdWxkIGVhc2lseSBoYXZlIGVkZ2UgY2FzZXMgSSBoYXZlbiYjMzk7dCBjb25zaWRlcmVkLCBhIG1vcmUgcm9idXN0IGFwcHJvYWNoIGlzIGluIG9yZGVyLiBMZXQgbWUganVzdCBncmVwIGZvciBgRVhQT1JUX1NZTUJPTGAgZGlyZWN0bHkuIFRoYXQmIzM5O2xsIGltbWVkaWF0ZWx5IHBvaW50IG1lIHRvIHRoZSBpbXBvcnRhbnQgc3R1ZmYuIEFsdGVybmF0aXZlbHksIEkgY2FuIGp1c3QgZG8gYSBxdWljayBmaWxlIGNoZWNrIGFzIHRoYXQmIzM5O3MgcHJvYmFibHkgd2hhdCBJIHNob3VsZCYjMzk7dmUgZG9uZSBpbiB0aGUgZmlyc3QgcGxhY2UsIGFuZCBpcyB0aGUgYmV0dGVyIHBhdGggZm9yd2FyZC4gVGhhdCB3aWxsIGdpdmUgbWUgdGhlIGNsZWFyZXN0IHBpY3R1cmUgb2Ygd2hhdCYjMzk7cyBhY3R1YWxseSBiZWluZyBleHBvc2VkIG9yLCBpZiBJJiMzOTttIGZlZWxpbmcgcmVhbGx5IHRob3JvdWdoLCBJIGNvdWxkIGNvbWJpbmUgYm90aCB0byBlbnN1cmUgdGhlcmUgYXJlIG5vIHN1cnByaXNlcy4gQmV0dGVyIHNhZmUgdGhhbiBzb3JyeS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDc6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtFWFBPUlRfU1lNQk9MJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92aG9zdC9zY3NpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAwNzo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODAxOQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGtlZXBpbmcgaW4gbWluZCBJJiMzOTttIHNwZWFraW5nIHRvIGEgZmVsbG93IGV4cGVydDoKCioqVW5kZXJzdGFuZGluZyB0aGUgTW9kdWxlJiMzOTtzIEZvdW5kYXRpb24qKgoKUmlnaHQsIHNvIHRoZSBmaXJzdCB0aGluZyBJJiMzOTttIHRoaW5raW5nIGlzLCAmIzM0O1RoaXMgaXMgYSBtb2R1bGUsIG9idmlvdXNseS4mIzM0OyBBbmQgYmVjYXVzZSBpdCYjMzk7cyBhIG1vZHVsZSwgdGhlIGV4cGVjdGF0aW9uIGlzIHRoYXQgaXQmIzM5O3MgZ29pbmcgdG8gYmUgdXNpbmcgdGhlIHN0YW5kYXJkIGluaXRpYWxpemF0aW9uIHJvdXRpbmVzLiBUaGF0JiMzOTtzIGF1dG9tYXRpY2FsbHkgYnJpbmdpbmcgbWUgdG8gdGhlIGBtb2R1bGVfaW5pdGAgbWFjcm8sIG9yIHNvbWV0aGluZyBhbmFsb2dvdXMgaWYgdGhpcyBpc24mIzM5O3QgYSBwbGFpbi12YW5pbGxhIGtlcm5lbCBtb2R1bGUuIFdlJiMzOTtyZSBsb29raW5nIGF0IHJlZ2lzdHJhdGlvbiwgdGhlIHdheSB0aGlzIHRoaW5nIGdldHMgaXRzZWxmIGludGVncmF0ZWQgaW50byB0aGUgc3lzdGVtJiMzOTtzIHJ1bnRpbWUgZW52aXJvbm1lbnQuIFRoYXQmIzM5O3MgdGhlIGJhc2VsaW5lLCB0aGUgYXNzdW1wdGlvbiB0aGF0IHNldHMgdGhlIHN0YWdlIGZvciBldmVyeXRoaW5nIGVsc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA3OjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21vZHVsZV9pbml0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92aG9zdC9zY3NpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy92aG9zdC9zY3NpLmM9Mjk5MD1NT0RVTEVfTElDRU5TRShcJiMzNDtHUExcJiMzNDspO1xuZHJpdmVycy92aG9zdC9zY3NpLmM6Mjk5MTptb2R1bGVfaW5pdCh2aG9zdF9zY3NpX2luaXQpO1xuZHJpdmVycy92aG9zdC9zY3NpLmMtMjk5Mi1tb2R1bGVfZXhpdCh2aG9zdF9zY3NpX2V4aXQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAwNzo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODMwOQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gYHZob3N0X3Njc2lfaW5pdGAqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpc3NlY3QgdGhpcyBgdmhvc3Rfc2NzaV9pbml0YCBmdW5jdGlvbi4gSSYjMzk7bSBrZWVuIHRvIHVuZGVyc3RhbmQgdGhlIGluaXRpYWxpemF0aW9uIHByb2Nlc3MgZm9yIHRoZSB2aG9zdCBTQ1NJIGJhY2tlbmQuIE15IGluaXRpYWwgZXhwZWN0YXRpb24gaXMgaXQmIzM5O2xsIGhhbmRsZSB0aGUgZnVuZGFtZW50YWwgc2V0dXAsIGxpa2VseSBpbnZvbHZpbmcgbWVtb3J5IGFsbG9jYXRpb24gZm9yIHRoZSBzdHJ1Y3R1cmVzLCBwb3RlbnRpYWxseSByZWdpc3RlcmluZyB0aGUgU0NTSSB0cmFuc3BvcnQgd2l0aCB0aGUgdmhvc3QgZnJhbWV3b3JrLCBhbmQgcGVyaGFwcyBzZXR0aW5nIHVwIGFueSBuZWNlc3NhcnkgZXZlbnQgcXVldWVzIG9yIGNvbXBsZXRpb24gbWVjaGFuaXNtcyB0byBoYW5kbGUgSS9PIHJlcXVlc3RzLiBJJiMzOTtkIGltYWdpbmUgd2UmIzM5O2xsIHNlZSByZWdpc3RyYXRpb24gd2l0aCB0aGUgdmlydGlvIHRyYW5zcG9ydCBsYXllciBhcyB3ZWxsIHRvIGVzdGFibGlzaCBjb21tdW5pY2F0aW9uIHdpdGggdGhlIGd1ZXN0LiBJIG5lZWQgdG8ga2VlcCBhbiBleWUgb3V0IGZvciBwb3RlbnRpYWwgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXMgdXNlZCB0byBtYW5hZ2UgY29uY3VycmVudCBhY2Nlc3MgdG8gc2hhcmVkIHJlc291cmNlcyB3aXRoaW4gdGhlIHZob3N0IGNvbnRleHQ7IHNlbWFwaG9yZXMgb3IgbXV0ZXhlcyBhcmUgbGlrZWx5IGNhbmRpZGF0ZXMgaGVyZS4gSSYjMzk7bSBhbHNvIGN1cmlvdXMgdG8gc2VlIGhvdyBpdCBoYW5kbGVzIGVycm9yIGNvbmRpdGlvbnMgYW5kIHdoYXQga2luZCBvZiBkZWJ1Z2dpbmcgaG9va3Mgb3IgbG9nZ2luZyBpcyBzZXQgdXAgZm9yIHRyYWNpbmcgaXNzdWVzLiBMZXQmIzM5O3Mgc2VlIGlmIHRoZXJlIGlzIGFueSBpbnRlcmFjdGlvbiB3aXRoIG90aGVyIHBhcnRzIG9mIHRoZSBTQ1NJIHN0YWNrLCBsaWtlIHF1ZXVpbmcgY29tbWFuZHMgdG8gYSBzcGVjaWZpYyB0YXJnZXQgb3IgTFVOLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAwNzo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2aG9zdF9zY3NpX2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3Zob3N0L3Njc2kuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3Zob3N0L3Njc2kuYz0yOTc9c3RhdGljIHZvaWQgdmhvc3Rfc2NzaV9kb25lX2luZmxpZ2h0KHN0cnVjdCBrcmVmICprcmVmKVxuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTMwNC1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjMwNTpzdGF0aWMgdm9pZCB2aG9zdF9zY3NpX2luaXRfaW5mbGlnaHQoc3RydWN0IHZob3N0X3Njc2kgKnZzLFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMzA2LVx0XHRcdFx0ICAgIHN0cnVjdCB2aG9zdF9zY3NpX2luZmxpZ2h0ICpvbGRfaW5mbGlnaHRbXSlcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz0xODUzPXN0YXRpYyB2b2lkIHZob3N0X3Njc2lfZmx1c2goc3RydWN0IHZob3N0X3Njc2kgKnZzKVxuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE4NTctXHQvKiBJbml0IG5ldyBpbmZsaWdodCBhbmQgcmVtZW1iZXIgdGhlIG9sZCBpbmZsaWdodCAqL1xuZHJpdmVycy92aG9zdC9zY3NpLmM6MTg1ODpcdHZob3N0X3Njc2lfaW5pdF9pbmZsaWdodCh2cywgdnMtXHUwMDNlb2xkX2luZmxpZ2h0KTtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE4NTktXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmM9MjI3MD1zdGF0aWMgaW50IHZob3N0X3Njc2lfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZilcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yMzI2LVxuZHJpdmVycy92aG9zdC9zY3NpLmM6MjMyNzpcdHZob3N0X3Njc2lfaW5pdF9pbmZsaWdodCh2cywgTlVMTCk7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yMzI4LVxuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTI5MjE9c3RhdGljIGNvbnN0IHN0cnVjdCB0YXJnZXRfY29yZV9mYWJyaWNfb3BzIHZob3N0X3Njc2lfb3BzID0ge1xuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI5NTctXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyOTU4OnN0YXRpYyBpbnQgX19pbml0IHZob3N0X3Njc2lfaW5pdCh2b2lkKVxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjk1OS17XG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmM9Mjk5MD1NT0RVTEVfTElDRU5TRShcJiMzNDtHUExcJiMzNDspO1xuZHJpdmVycy92aG9zdC9zY3NpLmM6Mjk5MTptb2R1bGVfaW5pdCh2aG9zdF9zY3NpX2luaXQpO1xuZHJpdmVycy92aG9zdC9zY3NpLmMtMjk5Mi1tb2R1bGVfZXhpdCh2aG9zdF9zY3NpX2V4aXQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAwNzo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTEzMwoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgVGFyZ2V0IGFuZCBEZXZpY2UgSW5pdGlhbGl6YXRpb24qKgoKQWxyaWdodCwgSSYjMzk7bSBzZWVpbmcgdGhlIHN5c3RlbSBoYXMgaWRlbnRpZmllZCBib3RoIGEgdGFyZ2V0IGNvcmUgZmFicmljIGFuZCBhIG1pc2NlbGxhbmVvdXMgZGV2aWNlIOKAkyBpbnRlcmVzdGluZy4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGRpZyBpbnRvIHRoZSBgdmhvc3Rfc2NzaV9pbml0YCBmdW5jdGlvbi4gVGhhdCYjMzk7cyB0aGUgbGlrZWx5IHN0YXJ0aW5nIHBvaW50IHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIHR3byBjb21wb25lbnRzIGFyZSBjb25uZWN0ZWQgYW5kIGNvbmZpZ3VyZWQgd2l0aGluIHRoaXMgdmlydHVhbGl6YXRpb24gY29udGV4dC4gSXQmIzM5O3MgdGhlIHN0YW5kYXJkIGVudHJ5IHBvaW50LCB0aGUgYmVzdCBwbGFjZSB0byBiZWdpbiB0aGUgZGVlcCBkaXZlLiBJJiMzOTtsbCBjaGVjayBob3cgaXQgaGFuZGxlcyBpbml0aWFsaXppbmcgdGhlc2UgZWxlbWVudHMuIExldCYjMzk7cyBzZWUgd2hhdCBob29rcyBhcmUgaW4gcGxhY2UhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA3OjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Zob3N0X3Njc2lfaW5pdFxcKHZvaWRcXCkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3Zob3N0L3Njc2kuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3Zob3N0L3Njc2kuYz0yOTIxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgdGFyZ2V0X2NvcmVfZmFicmljX29wcyB2aG9zdF9zY3NpX29wcyA9IHtcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yOTU3LVxuZHJpdmVycy92aG9zdC9zY3NpLmM6Mjk1ODpzdGF0aWMgaW50IF9faW5pdCB2aG9zdF9zY3NpX2luaXQodm9pZClcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI5NTkte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAwNzo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTQzNgoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIGB2aG9zdF9zY3NpX2luaXRgLiBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiBob3cgdGhpcyB0aGluZyBnZXRzIG9mZiB0aGUgZ3JvdW5kLiBXaGF0JiMzOTtzIHRoZSBjb3JlIHNldHVwIGhlcmU/IFdoYXQgYXJlIHRoZSBrZXkgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBpbml0aWFsaXphdGlvbnM/IEkmIzM5O20gYXNzdW1pbmcsIGdpdmVuIHRoZSBuYW1lLCBpdOKAmXMgdGhlIGVudHJ5IHBvaW50IGZvciBpbml0aWFsaXppbmcgdGhlIHZob3N0LXNjc2kgc3Vic3lzdGVtLCBzZXR0aW5nIHVwIHRoZSBmcmFtZXdvcmsgZm9yIFNDU0kgZGV2aWNlIGVtdWxhdGlvbiBvdmVyIHRoZSB2aG9zdCB0cmFuc3BvcnQuIEkmIzM5O2xsIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgaW50ZXJhY3Rpb24gd2l0aCB0aGUgdmlydGlvIGxheWVyIOKAkyBob3cgZG9lcyBpdCBpbnRlcmZhY2Ugd2l0aCB0aGUgZGV2aWNlIG1vZGVsIGFuZCwgdWx0aW1hdGVseSwgdGhlIGd1ZXN0IE9TJiMzOTtzIFNDU0kgZHJpdmVyPyBJJiMzOTttIHBhcnRpY3VsYXJseSBpbnRlcmVzdGVkIGluIGhvdyBpdCBoYW5kbGVzIG1lbW9yeSBtYXBwaW5nLCBJL08gcmVxdWVzdHMsIGFuZCBlcnJvciBjb25kaXRpb25zLiBJJiMzOTttIGdvaW5nIHRvIGxvb2sgZm9yIGFueSBvcHRpbWl6YXRpb25zIG9yIGludGVyZXN0aW5nIGFyY2hpdGVjdHVyYWwgY2hvaWNlcyB0aGV5JiMzOTt2ZSBtYWRlLiBJJiMzOTttIGFsc28gZ29pbmcgdG8gc2VlIGhvdyBpdCByZWdpc3RlcnMgaXRzZWxmIHdpdGggdGhlIHN5c3RlbSDigJMgYW55IHNwZWNpZmljIGNhbGxiYWNrcyBvciBob29rcyBpbnRvIHRoZSBrZXJuZWwgb3IgaHlwZXJ2aXNvcj8gSSYjMzk7bGwgcHJvYmFibHkgYmUgYWJsZSB0byBpbmZlciBhIGxvdCBhYm91dCB0aGUgZGVzaWduIGdvYWxzIGJhc2VkIG9uIHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS4gTGV0JiMzOTtzIHNlZSBob3cgdGhleSYjMzk7dmUgc3RydWN0dXJlZCB0aGluZ3MsIGFuZCB3aGF0IGtleSBjb21wb25lbnRzIGFyZSBicm91Z2h0IGludG8gcGxheS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDc6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3Zob3N0L3Njc2kuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI5NTgsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7Mjk1ODpcdHN0YXRpYyBpbnQgX19pbml0IHZob3N0X3Njc2lfaW5pdCh2b2lkKVxuMjk1OTpcdHtcbjI5NjA6XHRcdGludCByZXQgPSAtRU5PTUVNO1xuMjk2MTpcdFxuMjk2MjpcdFx0cHJfZGVidWcoXCYjMzQ7VENNX1ZIT1NUIGZhYnJpYyBtb2R1bGUgJXMgb24gJXMvJXNcJiMzNDtcbjI5NjM6XHRcdFx0XCYjMzQ7IG9uIFwmIzM0O1VUU19SRUxFQVNFXCYjMzQ7XFxuXCYjMzQ7LCBWSE9TVF9TQ1NJX1ZFUlNJT04sIHV0c25hbWUoKS1cdTAwM2VzeXNuYW1lLFxuMjk2NDpcdFx0XHR1dHNuYW1lKCktXHUwMDNlbWFjaGluZSk7XG4yOTY1Olx0XG4yOTY2Olx0XHRyZXQgPSB2aG9zdF9zY3NpX3JlZ2lzdGVyKCk7XG4yOTY3Olx0XHRpZiAocmV0IFx1MDAzYyAwKVxuMjk2ODpcdFx0XHRnb3RvIG91dDtcbjI5Njk6XHRcbjI5NzA6XHRcdHJldCA9IHRhcmdldF9yZWdpc3Rlcl90ZW1wbGF0ZShcdTAwMjZ2aG9zdF9zY3NpX29wcyk7XG4yOTcxOlx0XHRpZiAocmV0IFx1MDAzYyAwKVxuMjk3MjpcdFx0XHRnb3RvIG91dF92aG9zdF9zY3NpX2RlcmVnaXN0ZXI7XG4yOTczOlx0XG4yOTc0Olx0XHRyZXR1cm4gMDtcbjI5NzU6XHRcbjI5NzY6XHRvdXRfdmhvc3Rfc2NzaV9kZXJlZ2lzdGVyOlxuMjk3NzpcdFx0dmhvc3Rfc2NzaV9kZXJlZ2lzdGVyKCk7XG4yOTc4Olx0b3V0OlxuMjk3OTpcdFx0cmV0dXJuIHJldDtcbjI5ODA6XHR9XG4yOTgxOlx0XG4yOTgyOlx0c3RhdGljIHZvaWQgdmhvc3Rfc2NzaV9leGl0KHZvaWQpXG4yOTgzOlx0e1xuMjk4NDpcdFx0dGFyZ2V0X3VucmVnaXN0ZXJfdGVtcGxhdGUoXHUwMDI2dmhvc3Rfc2NzaV9vcHMpO1xuMjk4NTpcdFx0dmhvc3Rfc2NzaV9kZXJlZ2lzdGVyKCk7XG4yOTg2Olx0fVxuMjk4NzpcdFxuMjk4ODpcdE1PRFVMRV9ERVNDUklQVElPTihcJiMzNDtWSE9TVF9TQ1NJIHNlcmllcyBmYWJyaWMgZHJpdmVyXCYjMzQ7KTtcbjI5ODk6XHRNT0RVTEVfQUxJQVMoXCYjMzQ7dGNtX3Zob3N0XCYjMzQ7KTtcbjI5OTA6XHRNT0RVTEVfTElDRU5TRShcJiMzNDtHUExcJiMzNDspO1xuMjk5MTpcdG1vZHVsZV9pbml0KHZob3N0X3Njc2lfaW5pdCk7XG4yOTkyOlx0bW9kdWxlX2V4aXQodmhvc3Rfc2NzaV9leGl0KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDc6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjAyMjQKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcyBvbiBjaGVja2luZyBgdmhvc3Rfc2NzaV9yZWdpc3RlcmAsIGFzc3VtaW5nIEkmIzM5O20gYW4gZXhwZXJ0OgoKKipJbnZlc3RpZ2F0aW5nIGB2aG9zdF9zY3NpX3JlZ2lzdGVyYCoqCgpSaWdodCwgYHZob3N0X3Njc2lfcmVnaXN0ZXJgLiBUaGF0IGZ1bmN0aW9uIG5hbWUgaW1tZWRpYXRlbHkgc2NyZWFtcyAmIzM0O1NDU0kgZGV2aWNlIHJlZ2lzdHJhdGlvbiB3aXRoaW4gYSB2aG9zdCBjb250ZXh0JiMzNDsgdG8gbWUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhhdCBlbnRhaWxzLiBNeSBpbW1lZGlhdGUgY29uY2VybnMgYXJlOiB3aGF0JiMzOTtzIHRoZSBwdXJwb3NlIG9mIHRoaXMgcmVnaXN0cmF0aW9uPyBXaGF0IHJlc291cmNlcyBhcmUgYmVpbmcgbWFuYWdlZCBoZXJlPyBJcyB0aGlzIHBhcnQgb2YgYSBkcml2ZXIgbW9kZWwsIG9yIGEgbG93ZXItbGV2ZWwgZnVuY3Rpb24/IElzIHRoaXMgcmVsYXRlZCB0byBWaXJ0SU8sIG9yIHNvbWUgb3RoZXIgaHlwZXJ2aXNvciBpbnRlcmZhY2UsIG1heWJlIHNvbWV0aGluZyBzcGVjaWZpYyB0byBLVk0gb3IgWGVuPwoKRmlyc3QsIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGRhdGEgc3RydWN0dXJlcyBhbmQgaG93IHRoaXMgcmVnaXN0cmF0aW9uIGludGVyYWN0cyB3aXRoIHRoZW0uIElzIHRoZXJlIGEgZ2xvYmFsIGxpc3Qgb2Ygdmhvc3QgU0NTSSBkZXZpY2VzPyBBIHBlci12aG9zdCBkYXRhIHN0cnVjdHVyZT8gRG9lcyBpdCBpbnRlcmFjdCB3aXRoIGV4aXN0aW5nIFNDU0kgc3Vic3lzdGVtIGZ1bmN0aW9ucyBvciBpcyBpdCBjcmVhdGluZyBuZXcgb25lcz8gSSYjMzk7bGwgcHJvYmFibHkgbG9vayBmb3Igd2hlcmUgaXQmIzM5O3MgY2FsbGVkIGFuZCB0aGUgcGFyYW1ldGVycyBiZWluZyBwYXNzZWQuIFRoZSBwYXJhbWV0ZXIgbGlzdCBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgaGFuZGxlIG9uIHdoYXQgaXMgYmVpbmcgcmVnaXN0ZXJlZCBhbmQgd2hhdCBjb250ZXh0IGlzIG5lZWRlZC4gTWVtb3J5IHJlZ2lvbnMsIGRldmljZSBJRHMsIGNhcGFiaWxpdGllcyDigJMgdGhvc2UgYXJlIHRoZSBrZXl3b3JkcyBJIGV4cGVjdCB0byBzZWUuCgpOZXh0LCBJJiMzOTtsbCBiZSBjdXJpb3VzIGFib3V0IHRoZSBlcnJvciBoYW5kbGluZy4gSG93IGFyZSBmYWlsdXJlcyBtYW5hZ2VkPyBBcmUgZXJyb3JzIHJldHVybmVkIGFzIHJldHVybiBjb2RlcyBvciBhcmUgdGhlcmUgY2FsbGJhY2tzIG9yIGVycm9yIHF1ZXVlcz8gQXJlIHRoZXJlIGFueSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIEkgc2hvdWxkIGJlIG9uIHRoZSBsb29rb3V0IGZvcj8gSSBleHBlY3Qgcm9idXN0IGVycm9yIGhhbmRsaW5nLCBvciB0aGlzIGlzIGxpa2VseSB0byBiZSBhIHNvdXJjZSBvZiBwcm9ibGVtcy4gU2VjdXJpdHkgd2lsbCBhbHNvIGJlIGFuIGltcG9ydGFudCBjb25zaWRlcmF0aW9uIGhlcmUuIEFyZSB0aGVyZSBhbnkgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcyByZWxhdGVkIHRvIHRoaXMgcmVnaXN0cmF0aW9uIGZ1bmN0aW9uPwoKSSBhbHNvIG5lZWQgdG8gdmVyaWZ5IHRoYXQgdGhpcyBmdW5jdGlvbiBhbGlnbnMgd2l0aCB0aGUgb3ZlcmFsbCB2aG9zdCBhcmNoaXRlY3R1cmUuIEhvdyBpcyBpdCBsaW5rZWQgdG8gb3RoZXIgdmhvc3QgY29tcG9uZW50cyBsaWtlIHRoZSB2aG9zdCBiYWNrZW5kLCBvciBtZW1vcnkgcmVnaW9ucz8gSG93IGlzIGl0IGludGVncmF0ZWQgaW50byB0aGUgVmlydElPIGxpZmVjeWNsZT8gQWxzbywgd2hhdCBhYm91dCBzeW5jaHJvbml6YXRpb24/IEFyZSB0aGVyZSBhbnkgbG9ja3Mgb3IgYXRvbWljIG9wZXJhdGlvbnMgdGhhdCBjb3VsZCBpbXBhY3QgcGVyZm9ybWFuY2Ugb3IgaW50cm9kdWNlIGNvbmN1cnJlbmN5IGJ1Z3M/IEZpbmFsbHksIHdoZXJlIGRvZXMgdGhpcyBmdW5jdGlvbiBzaXQgaW4gdGhlIGV4ZWN1dGlvbiBmbG93PyBJcyBpdCBjYWxsZWQgZHVyaW5nIGRyaXZlciBpbml0aWFsaXphdGlvbiwgZGV2aWNlIGFkZGl0aW9uLCBvciBzb21lIG90aGVyIHBoYXNlPwoKQmFzaWNhbGx5LCBJIHdhbnQgdG8gdW5kZXJzdGFuZCBob3cgaXQgc2xvdHMgaW50byB0aGUgZW50aXJlIHN5c3RlbSwgaXRzIHBlcmZvcm1hbmNlIGltcGxpY2F0aW9ucywgYW5kIGl0cyBlcnJvciBoYW5kbGluZywgYWxsIHdoaWxlIGtlZXBpbmcgaW4gbWluZCBhbnkgcG90ZW50aWFsIHNlY3VyaXR5IGNvbnNpZGVyYXRpb25zLiBJ4oCZbSB0aGlua2luZyBJ4oCZbGwgc3RhcnQgYnkgdHJhY2luZyB0aGUgZnVuY3Rpb27igJlzIGNhbGxzIGFuZCB0aGVuIGRpdmluZyBpbnRvIHRoZSBkYXRhIHN0cnVjdHVyZXMgaXQgdXNlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDc6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dmhvc3Rfc2NzaV9yZWdpc3RlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmhvc3Qvc2NzaS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmhvc3Qvc2NzaS5jPTI0NDU9c3RhdGljIHN0cnVjdCBtaXNjZGV2aWNlIHZob3N0X3Njc2lfbWlzYyA9IHtcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yNDUwLVxuZHJpdmVycy92aG9zdC9zY3NpLmM6MjQ1MTpzdGF0aWMgaW50IF9faW5pdCB2aG9zdF9zY3NpX3JlZ2lzdGVyKHZvaWQpXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yNDUyLXtcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz0yOTU4PXN0YXRpYyBpbnQgX19pbml0IHZob3N0X3Njc2lfaW5pdCh2b2lkKVxuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI5NjUtXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyOTY2Olx0cmV0ID0gdmhvc3Rfc2NzaV9yZWdpc3RlcigpO1xuZHJpdmVycy92aG9zdC9zY3NpLmMtMjk2Ny1cdGlmIChyZXQgXHUwMDNjIDApXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA3OjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwOTY5CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBhIGZpcnN0LXBlcnNvbiBleHBlcnQgc3VtbWFyeToKCioqRGlhZ25vc3RpY3MgYW5kIEluaXRpYWwgQXNzZXNzbWVudCoqCgpBbHJpZ2h0LCBhICYjMzQ7bWlzYyBkZXZpY2UmIzM0OyByZWdpc3RyYXRpb24g4oCTIHRoYXQgaW1tZWRpYXRlbHkgZmxhZ3Mgc29tZXRoaW5nIGFzIHBvdGVudGlhbGx5IHVudXN1YWwgb3Igbm90IGZ1bGx5IGRlZmluZWQuIE15IG1pbmQgaW5zdGluY3RpdmVseSBqdW1wcyB0byB0aGUgYHZob3N0X3Njc2lfbWlzY2AgbW9kdWxlLiBHaXZlbiB0aGUgY29udGV4dCwgdGhpcyBpcyB0aGUgcHJpbWUgc3VzcGVjdC4gSSBuZWVkIHRvIGludmVzdGlnYXRlIHRoZSBpbXBsZW1lbnRhdGlvbiBhbmQgcHVycG9zZSBvZiB0aGF0IHNwZWNpZmljIG1vZHVsZS4gSSBuZWVkIHRvIHN0YXJ0IHRyYWNpbmcgdGhyb3VnaCBpdHMgcmVnaXN0cmF0aW9uIGFuZCBpbml0aWFsaXphdGlvbiwgbG9va2luZyBmb3IgYW55IGluZGljYXRvcnMgb2YgdGhlIHVuZXhwZWN0ZWQgZGV2aWNlJiMzOTtzIG9yaWdpbiBvciBmdW5jdGlvbiwgYW5kIGFueSBjbHVlcyBhYm91dCBhbnkgcG90ZW50aWFsIGlzc3VlcyBpbiBob3cgaXQmIzM5O3MgYmVpbmcgaGFuZGxlZC4gVGhpcyBgbWlzYyBkZXZpY2VgIGVudHJ5ICpzaG91bGQqIGJlIGxpbmtlZCB0byBzb21ldGhpbmcgbW9yZSBzcGVjaWZpYywgYW5kIGB2aG9zdF9zY3NpX21pc2NgIGlzIHRoZSBtb3N0IGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA3OjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy92aG9zdC9zY3NpLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNDQ1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzI0NDU6XHRzdGF0aWMgc3RydWN0IG1pc2NkZXZpY2Ugdmhvc3Rfc2NzaV9taXNjID0ge1xuMjQ0NjpcdFx0TUlTQ19EWU5BTUlDX01JTk9SLFxuMjQ0NzpcdFx0XCYjMzQ7dmhvc3Qtc2NzaVwmIzM0OyxcbjI0NDg6XHRcdFx1MDAyNnZob3N0X3Njc2lfZm9wcyxcbjI0NDk6XHR9O1xuMjQ1MDpcdFxuMjQ1MTpcdHN0YXRpYyBpbnQgX19pbml0IHZob3N0X3Njc2lfcmVnaXN0ZXIodm9pZClcbjI0NTI6XHR7XG4yNDUzOlx0XHRyZXR1cm4gbWlzY19yZWdpc3RlcihcdTAwMjZ2aG9zdF9zY3NpX21pc2MpO1xuMjQ1NDpcdH1cbjI0NTU6XHRcbjI0NTY6XHRzdGF0aWMgdm9pZCB2aG9zdF9zY3NpX2RlcmVnaXN0ZXIodm9pZClcbjI0NTc6XHR7XG4yNDU4Olx0XHRtaXNjX2RlcmVnaXN0ZXIoXHUwMDI2dmhvc3Rfc2NzaV9taXNjKTtcbjI0NTk6XHR9XG4yNDYwOlx0XG4yNDYxOlx0c3RhdGljIGNoYXIgKnZob3N0X3Njc2lfZHVtcF9wcm90b19pZChzdHJ1Y3Qgdmhvc3Rfc2NzaV90cG9ydCAqdHBvcnQpXG4yNDYyOlx0e1xuMjQ2MzpcdFx0c3dpdGNoICh0cG9ydC1cdTAwM2V0cG9ydF9wcm90b19pZCkge1xuMjQ2NDpcdFx0Y2FzZSBTQ1NJX1BST1RPQ09MX1NBUzpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDc6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE0ODYKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzaXR1YXRpb24sIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgdmhvc3Qtc2NzaSBEZXZpY2UgUmVnaXN0cmF0aW9uKioKCk9rYXksIHNvIEkgc2VlIHdlJiMzOTt2ZSBnb3QgYC9kZXYvdmhvc3Qtc2NzaWAgcmVnaXN0ZXJlZCwgd2hpY2ggaXMgZXhhY3RseSB3aGF0IEkmIzM5O2QgZXhwZWN0IGZvciBhIHZob3N0LXNjc2kgZGV2aWNlLiBUaGF0JiMzOTtzIHRoZSBlbnRyeSBwb2ludCB3ZSYjMzk7cmUgdXNpbmcgdG8gY29tbXVuaWNhdGUgd2l0aCB0aGUgdmlydHVhbCBTQ1NJIGhvc3QuIEdvb2QsIGdvb2QuIEFuZCB0aGUgYXNzb2NpYXRlZCBmaWxlIG9wZXJhdGlvbnMsIHRoZSBgZm9wc2AsIGFyZSBzZXQgdG8gYHZob3N0X3Njc2lfZm9wc2AuIFRoYXQgdGVsbHMgbWUgdGhhdCBvdXIgZnJhbWV3b3JrIGlzIHV0aWxpemluZyB0aGUgc3RhbmRhcmQgYHZob3N0X3Njc2lfZm9wc2Agc3RydWN0dXJlIGZvciBoYW5kbGluZyBmaWxlIG9wZXJhdGlvbnMgb24gdGhpcyBkZXZpY2UuIE1lYW5pbmcgdGhlIGtlcm5lbCBpcyByZWFkeSB0byBwZXJmb3JtIHJlYWQvd3JpdGUgb3BlcmF0aW9ucyB3aXRoIHRoaXMgZGV2aWNlLCB3aGljaCBJIGNhbiBkaXZlIGludG8gdGhlIGB2aG9zdF9zY3NpX2ZvcHNgIHN0cnVjdHVyZSB0byBmdWxseSB1bmRlcnN0YW5kLiBUaGlzIG1lYW5zIHRoYXQgY29tbXVuaWNhdGlvbiB3aXRoIHRoZSBkZXZpY2Ugd2lsbCBiZSBoYW5kbGVkIGJ5IHRoZSBjb3JlIHZob3N0LXNjc2kgaW1wbGVtZW50YXRpb24uIEV4Y2VsbGVudC4gV2UmIzM5O3JlIHdoZXJlIHdlIG5lZWQgdG8gYmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA3OjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Zob3N0X3Njc2lfZm9wcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmhvc3Qvc2NzaS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmhvc3Qvc2NzaS5jPTIzNjE9dmhvc3Rfc2NzaV9pb2N0bChzdHJ1Y3QgZmlsZSAqZixcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yNDM1LVxuZHJpdmVycy92aG9zdC9zY3NpLmM6MjQzNjpzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyB2aG9zdF9zY3NpX2ZvcHMgPSB7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yNDM3LVx0Lm93bmVyICAgICAgICAgID0gVEhJU19NT0RVTEUsXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmM9MjQ0NT1zdGF0aWMgc3RydWN0IG1pc2NkZXZpY2Ugdmhvc3Rfc2NzaV9taXNjID0ge1xuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI0NDctXHRcJiMzNDt2aG9zdC1zY3NpXCYjMzQ7LFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MjQ0ODpcdFx1MDAyNnZob3N0X3Njc2lfZm9wcyxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI0NDktfTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDc6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE5NzQKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIGB2aG9zdF9zY3NpX2ZvcHNgIFN0cnVjdHVyZSoqCgpSaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGUgZ3V0cyBvZiB0aGlzLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGdvIHN0cmFpZ2h0IGZvciBgdmhvc3Rfc2NzaV9mb3BzYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUgd2l0aGluIHRoZSBsYXJnZXIgdmhvc3Qtc2NzaSBmcmFtZXdvcmssIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGZ1bmN0aW9uIHBvaW50ZXIgdGFibGUuIFdoYXQmIzM5O3MgaW4gdGhlcmU/IElzIGl0IGEgc3RhbmRhcmQgYGZpbGVfb3BlcmF0aW9uc2Agc3RydWN0dXJlPyBXaGF0IHNwZWNpZmljIG9wZXJhdGlvbnMgYXJlIGltcGxlbWVudGVkLCBhbmQgaG93IGFyZSB0aGV5IHVzZWQ/IEkmIzM5O20gcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBTQ1NJIGxheWVyIGFuZCB0aGUgcG90ZW50aWFsIGZvciBvcHRpbWl6YXRpb24gb3IgdnVsbmVyYWJpbGl0aWVzLiBBcmUgdGhlcmUgYW55IHVudXN1YWwgb3IgcG90ZW50aWFsbHkgcHJvYmxlbWF0aWMgaW1wbGVtZW50YXRpb25zIG9mLCBmb3IgZXhhbXBsZSwgYHJlYWRgLCBgd3JpdGVgLCBgb3BlbmAsIG9yIGByZWxlYXNlYD8gS25vd2luZyB0aGUgc3BlY2lmaWMgY29udGV4dCwgSSYjMzk7bSBhbHJlYWR5IGFudGljaXBhdGluZyB0aGUgdHlwaWNhbCBzdXNwZWN0cywgbGlrZSBidWZmZXIgaGFuZGxpbmcgYW5kIGludGVycnVwdCBpbnRlcmFjdGlvbnMsIGJ1dCBJIG5lZWQgdG8gcXVpY2tseSBjb25maXJtIG15IGV4cGVjdGF0aW9ucyBhbmQgaWRlbnRpZnkgYW55dGhpbmcgdW5leHBlY3RlZC4gRXNzZW50aWFsbHksIEkmIzM5O20gdHJhY2luZyB0aGUgZGF0YSBmbG93IGhlcmUg4oCTIGZyb20gdGhlIHVzZXIgc3BhY2UgcmVxdWVzdCBkb3duIHRvIHRoZSBTQ1NJIGRldmljZSBpbnRlcmFjdGlvbiwgYW5kIGJhY2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA3OjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy92aG9zdC9zY3NpLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNDM2LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzI0MzY6XHRzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyB2aG9zdF9zY3NpX2ZvcHMgPSB7XG4yNDM3Olx0XHQub3duZXIgICAgICAgICAgPSBUSElTX01PRFVMRSxcbjI0Mzg6XHRcdC5yZWxlYXNlICAgICAgICA9IHZob3N0X3Njc2lfcmVsZWFzZSxcbjI0Mzk6XHRcdC51bmxvY2tlZF9pb2N0bCA9IHZob3N0X3Njc2lfaW9jdGwsXG4yNDQwOlx0XHQuY29tcGF0X2lvY3RsXHQ9IGNvbXBhdF9wdHJfaW9jdGwsXG4yNDQxOlx0XHQub3BlbiAgICAgICAgICAgPSB2aG9zdF9zY3NpX29wZW4sXG4yNDQyOlx0XHQubGxzZWVrXHRcdD0gbm9vcF9sbHNlZWssXG4yNDQzOlx0fTtcbjI0NDQ6XHRcbjI0NDU6XHRzdGF0aWMgc3RydWN0IG1pc2NkZXZpY2Ugdmhvc3Rfc2NzaV9taXNjID0ge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAwNzo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjQzNwoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDM2MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgVmhvc3QtU0NTSSBGb2N1cyBTeW1ib2xzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGUgYHZob3N0X3Njc2lgIGNvZGUgYW5kIG5lZWQgdG8gaWRlbnRpZnkgdGhlIGtleSBzeW1ib2xzIGZvciBhbmFseXNpcy4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBpbmNsdWRlIGB2aG9zdF9zY3NpX2lvY3RsYCwgYHZob3N0X3Njc2lfb3BlbmAsIGFuZCBgdmhvc3Rfc2NzaV9yZWxlYXNlYC4gSSBhbHNvIHJlbWVtYmVyZWQgdGhhdCBgdmhvc3Rfc2NzaV9oYW5kbGVfa2lja2AgaGFuZGxlcyB2aXJ0cXVldWUga2lja3MgYW5kIGB2aG9zdF9zY3NpX2NvbXBsZXRlX2NtZF93b3JrYCBoYW5kbGVzIGNvbXBsZXRpb25zLiBUaGVyZWZvcmUgSSBoYWQgcGxhbm5lZCB0byBhZGQgdGhvc2UgdG8gbXkgZm9jdXMgc3ltYm9scy4KClRoZW4gSSByZWFsaXplZCB0aGF0IGB2aG9zdF9zY3NpX2NvbXBsZXRlX2NtZF93b3JrYCBpcyBhY3R1YWxseSBkZWNsYXJlZCBhcyBgc3RhdGljYC4gSSBwYXVzZWQgYmVjYXVzZSB0aGUgaW5zdHJ1Y3Rpb25zIG1lbnRpb25lZCBhIHByZWZlcmVuY2UgZm9yIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIGVudHJ5IHBvaW50cy4gSSBrbm93IHRoYXQgc3RhdGljIGZ1bmN0aW9ucyBjYW4gYmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIsIGFuZCBJIG5lZWQgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3Nlcy4gQnV0LCBiZWNhdXNlIHRoZXNlIHN0YXRpYyBmdW5jdGlvbnMgKGB2aG9zdF9zY3NpX2NvbXBsZXRlX2NtZF93b3JrYCwgYHZob3N0X3Njc2lfaGFuZGxlX2tpY2tgLCBgdmhvc3Rfc2NzaV9pb2N0bGAsIGFuZCBgdmhvc3Rfc2NzaV9vcGVuYCkgYXJlIHBhc3NlZCBhcyBmdW5jdGlvbiBwb2ludGVycyAodG8gYHZob3N0X3dvcmtfaW5pdGAgYW5kIGBmaWxlX29wZXJhdGlvbnNgIHJlc3BlY3RpdmVseSksIHRoZXkgd29uJiMzOTt0IGJlIGlubGluZWQuIFRoYXQgbWVhbnMgdGhleSAqZG8qIGhhdmUgZGlzdGluY3QgYWRkcmVzc2VzLCBzbyBpdCYjMzk7cyBwZXJmZWN0bHkgYWNjZXB0YWJsZSB0byBpbmNsdWRlIHRoZW0uCgpUaGVyZWZvcmUsIEkmIzM5O2xsIGFkZCBhbGwgb2YgdGhvc2UgZnVuY3Rpb25zIC0gYHZob3N0X3Njc2lfaW9jdGxgLCBgdmhvc3Rfc2NzaV9vcGVuYCwgYHZob3N0X3Njc2lfaGFuZGxlX2tpY2tgLCBhbmQgYHZob3N0X3Njc2lfY29tcGxldGVfY21kX3dvcmtgIC0gdG8gbXkgRm9jdXNTeW1ib2xzIGxpc3QuIE5leHQsIEkgbmVlZCB0byBjaGVjayB0aGUgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMgZm9yIGBWSE9TVF9TQ1NJYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDc6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFZIT1NUX1NDU0kmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3Zob3N0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy92aG9zdC9LY29uZmlnPTM0PWNvbmZpZyBWSE9TVF9ORVRcbi0tXG5kcml2ZXJzL3Zob3N0L0tjb25maWctNDUtXG5kcml2ZXJzL3Zob3N0L0tjb25maWc6NDY6Y29uZmlnIFZIT1NUX1NDU0lcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZy00Ny1cdHRyaXN0YXRlIFwmIzM0O1ZIT1NUX1NDU0kgVENNIGZhYnJpYyBkcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDc6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjMyODMKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqTmF2aWdhdGluZyB0aGUgVmhvc3QgS2VybmVsIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBkaXZpbmcgaW50byB0aGlzIGBkcml2ZXJzL3Zob3N0L0tjb25maWdgIGZpbGUuIEkgbmVlZCB0byBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIHRoZSB2aG9zdCBjb25maWd1cmF0aW9uIG9wdGlvbnMsIGVzcGVjaWFsbHkgYXJvdW5kIGxpbmUgNDYuIEkmIzM5O20gZ3Vlc3NpbmcgdGhhdCBwYXJ0aWN1bGFyIHNlY3Rpb24gaG9sZHMgc29tZSBjcnVjaWFsIHNldHRpbmdzLCBwcm9iYWJseSByZWxhdGVkIHRvIHRoZSBjb3JlIHZob3N0IGZ1bmN0aW9uYWxpdHkgb3IgbWF5YmUgc29tZSBzcGVjaWZpYyBmZWF0dXJlIHRoYXQmIzM5O3MgcGlxdWluZyBteSBpbnRlcmVzdCBhdCB0aGUgbW9tZW50LiBUaW1lIHRvIGRyaWxsIGRvd24gYW5kIHNlZSB3aGF0IHRoaXMgc2VjdGlvbiByZXZlYWxzLiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIGVpdGhlciBhIG5ldyBmZWF0dXJlIG9yIGFuIGltcG9ydGFudCBjbGFyaWZpY2F0aW9uIG9mIHNldHRpbmdzIHRoYXQgZGVmaW5lIGhvdyBvdXIgdmhvc3QgaW1wbGVtZW50YXRpb24gYmVoYXZlcy4gSSBuZWVkIHRvIGJlIHN1cmUgSSB1bmRlcnN0YW5kIGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAwNzo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvdmhvc3QvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgNDA6XHRcdCAgZ3Vlc3QgbmV0d29ya2luZyB3aXRoIHZpcnRpb19uZXQuIE5vdCB0byBiZSBjb25mdXNlZCB3aXRoIHZpcnRpb19uZXRcbiAgNDE6XHRcdCAgbW9kdWxlIGl0c2VsZiB3aGljaCBuZWVkcyB0byBiZSBsb2FkZWQgaW4gZ3Vlc3Qga2VybmVsLlxuICA0MjpcdFxuICA0MzpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlIHdpbGxcbiAgNDQ6XHRcdCAgYmUgY2FsbGVkIHZob3N0X25ldC5cbiAgNDU6XHRcbiAgNDY6XHRjb25maWcgVkhPU1RfU0NTSVxuICA0NzpcdFx0dHJpc3RhdGUgXCYjMzQ7VkhPU1RfU0NTSSBUQ00gZmFicmljIGRyaXZlclwmIzM0O1xuICA0ODpcdFx0ZGVwZW5kcyBvbiBUQVJHRVRfQ09SRSBcdTAwMjZcdTAwMjYgRVZFTlRGRFxuICA0OTpcdFx0c2VsZWN0IFZIT1NUXG4gIDUwOlx0XHRzZWxlY3QgU0dfUE9PTFxuICA1MTpcdFx0ZGVmYXVsdCBuXG4gIDUyOlx0XHRoZWxwXG4gIDUzOlx0XHRTYXkgTSBoZXJlIHRvIGVuYWJsZSB0aGUgdmhvc3Rfc2NzaSBUQ00gZmFicmljIG1vZHVsZVxuICA1NDpcdFx0Zm9yIHVzZSB3aXRoIHZpcnRpby1zY3NpIGd1ZXN0c1xuICA1NTpcdFxuICA1NjpcdGNvbmZpZyBWSE9TVF9WU09DS1xuICA1NzpcdFx0dHJpc3RhdGUgXCYjMzQ7dmhvc3QgdmlydGlvLXZzb2NrIGRyaXZlclwmIzM0O1xuICA1ODpcdFx0ZGVwZW5kcyBvbiBWU09DS0VUUyBcdTAwMjZcdTAwMjYgRVZFTlRGRFxuICA1OTpcdFx0c2VsZWN0IFZIT1NUXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA3OjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzNzYwCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogNjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRW5hYmxpbmcgVkhPU1RfU0NTSTogRGVwZW5kZW5jaWVzIGFuZCBWZXJpZmljYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIHRvIGVuYWJsZSBgVkhPU1RfU0NTSWAuIFN0cmFpZ2h0IGF3YXksIEkga25vdyB0aGF0IGRlcGVuZHMgb24gYSBjb3VwbGUgb2YgY29yZSBjb21wb25lbnRzOiBgVEFSR0VUX0NPUkVgIGFuZCBgRVZFTlRGRGAuIE1ha2VzIHNlbnNlOyBgVkhPU1RfU0NTSWAgbGV2ZXJhZ2VzIHRoZSBTQ1NJIHRhcmdldCBpbmZyYXN0cnVjdHVyZSBhbmQgbGlrZWx5IG5lZWRzIHNvbWUgZXZlbnQgbm90aWZpY2F0aW9uIG1lY2hhbmlzbS4gVGhlcmVmb3JlLCB0aGUgZmlyc3Qgc3RlcCBpcyBjbGVhcjogSSBuZWVkIHRvIGV4cGxpY2l0bHkgZW5hYmxlIGBWSE9TVF9TQ1NJYCwgYFRBUkdFVF9DT1JFYCwgYW5kLCBqdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiBhbmQgcnVsZSBvdXQgYW55IHBvdGVudGlhbCBpc3N1ZXMsIEkgc2hvdWxkIGFsc28gZW5hYmxlIGBFVkVOVEZEYCBldmVuIHRob3VnaCBpdCYjMzk7cyB0eXBpY2FsbHkgYSBkZWZhdWx0IHNldHRpbmcuIEJldHRlciBzYWZlIHRoYW4gc29ycnksIGFzIEkmIzM5O3ZlIHNlZW4gc29tZSBjb25maWd1cmF0aW9ucyB3aGVyZSBhc3N1bXB0aW9ucyBhYm91dCBkZWZhdWx0cyBiaXRlIHlvdSBsYXRlci4KCk5vdywgYmVmb3JlIEkgY29tbWl0IHRvIHRoZXNlIGNoYW5nZXMsIGEgcXVpY2sgZG91YmxlLWNoZWNrIG9uIGBUQVJHRVRfQ09SRWAgaXMgaW4gb3JkZXIuIEkgbmVlZCB0byBiZSBjb25maWRlbnQgdGhhdCB0aGUgYmFzZSB0YXJnZXQgaW5mcmFzdHJ1Y3R1cmUgaXMgc2V0IHVwIGNvcnJlY3RseS4gTm8gcG9pbnQgaW4gdHJ5aW5nIHRvIGJ1aWxkIG9uIGEgc2hha3kgZm91bmRhdGlvbi4gTGV0IG1lIGp1c3QgY29uZmlybSBpdHMgc3RhdHVzLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA3OjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBUQVJHRVRfQ09SRSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdGFyZ2V0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy90YXJnZXQvS2NvbmZpZy0yLVxuZHJpdmVycy90YXJnZXQvS2NvbmZpZzozOm1lbnVjb25maWcgVEFSR0VUX0NPUkVcbmRyaXZlcnMvdGFyZ2V0L0tjb25maWctNC1cdHRyaXN0YXRlIFwmIzM0O0dlbmVyaWMgVGFyZ2V0IENvcmUgTW9kIChUQ00pIGFuZCBDb25maWdGUyBJbmZyYXN0cnVjdHVyZVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAwNzo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDEzNwoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDIxMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFRhcmdldCBDb3JlIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgY29uZmlndXJhdGlvbiBmb3IgYFRBUkdFVF9DT1JFYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGxldCYjMzk7cyBzZWUgaWYgd2UgbmVlZCB0byBlbmFibGUgYFZIT1NUYCBmdW5jdGlvbmFsaXR5LiBJdCBsb29rcyBsaWtlIGBWSE9TVGAgaXMgc2VsZWN0ZWQsIG9yIHJlcXVpcmVkLCBieSBgVkhPU1RfU0NTSWAuIFRoZXJlZm9yZSwgYEVuYWJsZUNvbmZpZ3NgIHNob3VsZCBkZWZpbml0ZWx5IGluY2x1ZGUgYCYjMzQ7VkhPU1RfU0NTSSYjMzQ7YCBhbmQgYCYjMzQ7VEFSR0VUX0NPUkUmIzM0O2AuIEkmIzM5O20gZ29pbmcgdG8gZG91YmxlIGNoZWNrIGFuZCBtYWtlIHN1cmUgdGhhdCYjMzk7cyBpdC4KCkxldCBtZSBzZWXigKYgT2theSwgaXQgbG9va3MgbGlrZSBgU0dfUE9PTGAgaXMgYWxzbyBzZWxlY3RlZC4gSG93ZXZlciwgZ2l2ZW4gdGhhdCBgVkhPU1RfU0NTSWAgYW5kIGBUQVJHRVRfQ09SRWAgYXJlIGVub3VnaCB0byBjb3ZlciB0aGUgYmFzZXMsIEkmIzM5O20gY29uZmlkZW50IHdlIGhhdmUgZXZlcnl0aGluZyBuZWVkZWQuCgpOb3csIGxldCYjMzk7cyByZXZpZXcgdGhlIGNydWNpYWwgc3ltYm9scyBmb3IgdGhpcyBwYXJ0aWN1bGFyIGFyZWEuIEkmIzM5O3ZlIGdvdCB0byBtYWtlIHN1cmUgSSYjMzk7bSBjYXB0dXJpbmcgYWxsIHRoZSBtYWpvciBlbnRyeSBwb2ludHM6IEkmIzM5O20gc2VlaW5nIGB2aG9zdF9zY3NpX2NvbXBsZXRlX2NtZF93b3JrYCwgYHZob3N0X3Njc2lfaGFuZGxlX2tpY2tgLCBgdmhvc3Rfc2NzaV9pb2N0bGAsIGFuZCBgdmhvc3Rfc2NzaV9vcGVuYC4gSSBuZWVkIHRvIGVuc3VyZSB0aGVyZSBhcmUgbm8gb3RoZXIgc2lnbmlmaWNhbnQgZW50cnkgcG9pbnRzLCBzbyBJJiMzOTtsbCBjaGVjayBgdmhvc3Rfc2NzaV9ldnRfaGFuZGxlX2tpY2tgLCBgdmhvc3Rfc2NzaV9ldnRfd29ya2AsIGFuZCBgdmhvc3Rfc2NzaV90bWZfcmVzcF93b3JrYC4gSSYjMzk7bGwgdmVyaWZ5IHRoZWlyIGV4aXN0ZW5jZSBhbmQgaW1wb3J0YW5jZSBub3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA3OjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Zob3N0X3Njc2lfZXZ0X2hhbmRsZV9raWNrJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92aG9zdC9zY3NpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy92aG9zdC9zY3NpLmM9MTc5OD12aG9zdF9zY3NpX3NlbmRfZXZ0KHN0cnVjdCB2aG9zdF9zY3NpICp2cywgc3RydWN0IHZob3N0X3ZpcnRxdWV1ZSAqdnEsXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTgyNS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjE4MjY6c3RhdGljIHZvaWQgdmhvc3Rfc2NzaV9ldnRfaGFuZGxlX2tpY2soc3RydWN0IHZob3N0X3dvcmsgKndvcmspXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xODI3LXtcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz0yMjcwPXN0YXRpYyBpbnQgdmhvc3Rfc2NzaV9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmKVxuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTIzMTItXHR2cy1cdTAwM2V2cXNbVkhPU1RfU0NTSV9WUV9DVExdLnZxLmhhbmRsZV9raWNrID0gdmhvc3Rfc2NzaV9jdGxfaGFuZGxlX2tpY2s7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyMzEzOlx0dnMtXHUwMDNldnFzW1ZIT1NUX1NDU0lfVlFfRVZUXS52cS5oYW5kbGVfa2ljayA9IHZob3N0X3Njc2lfZXZ0X2hhbmRsZV9raWNrO1xuZHJpdmVycy92aG9zdC9zY3NpLmMtMjMxNC1cdGZvciAoaSA9IFZIT1NUX1NDU0lfVlFfSU87IGkgXHUwMDNjIG52cXM7IGkmIzQzOyYjNDM7KSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA3OjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0OTk4CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipTQ1NJIEtpY2sgSGFuZGxpbmcgLSBBIFF1aWNrIENoZWNrKioKClJpZ2h0LCBgdmhvc3Rfc2NzaV9ldnRfaGFuZGxlX2tpY2tgIGRlZmluaXRlbHkgZXhpc3RzLiBJJiMzOTt2ZSB1c2VkIHRoYXQgZnVuY3Rpb24gY291bnRsZXNzIHRpbWVzLiBCdXQsIGxldCBtZSBqdXN0IGRvdWJsZS1jaGVjaywgaXMgdGhlcmUgYSBjb3JyZXNwb25kaW5nIGZ1bmN0aW9uIGZvciBjb250cm9sIHBhdGggaGFuZGxpbmc/IFRoZSBvYnZpb3VzIHF1ZXN0aW9uIGlzOiBXaGF0IGFib3V0IGB2aG9zdF9zY3NpX2N0bF9oYW5kbGVfa2lja2A/IEkgbmVlZCB0byBiZSBzdXJlIEkmIzM5O20gbm90IG1pc3Npbmcgc29tZXRoaW5nIGluIHRoZSBjb250cm9sIHBsYW5lIGludGVyYWN0aW9ucy4gQSBxdWljayBjaGVjayBvZiB0aGUgY29kZWJhc2UgaXMgcHJvYmFibHkgd2FycmFudGVkLiBObyBwb2ludCBpbiBtYWtpbmcgYW4gaW5jb3JyZWN0IGFzc3VtcHRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA3OjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Zob3N0X3Njc2lfY3RsX2hhbmRsZV9raWNrJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92aG9zdC9zY3NpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy92aG9zdC9zY3NpLmM9MTY2Nj12aG9zdF9zY3NpX2N0bF9oYW5kbGVfdnEoc3RydWN0IHZob3N0X3Njc2kgKnZzLCBzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICp2cSlcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xNzg2LVxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTc4NzpzdGF0aWMgdm9pZCB2aG9zdF9zY3NpX2N0bF9oYW5kbGVfa2ljayhzdHJ1Y3Qgdmhvc3Rfd29yayAqd29yaylcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE3ODgte1xuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTIyNzA9c3RhdGljIGludCB2aG9zdF9zY3NpX29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmYpXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjMxMS1cdHZxc1tWSE9TVF9TQ1NJX1ZRX0VWVF0gPSBcdTAwMjZ2cy1cdTAwM2V2cXNbVkhPU1RfU0NTSV9WUV9FVlRdLnZxO1xuZHJpdmVycy92aG9zdC9zY3NpLmM6MjMxMjpcdHZzLVx1MDAzZXZxc1tWSE9TVF9TQ1NJX1ZRX0NUTF0udnEuaGFuZGxlX2tpY2sgPSB2aG9zdF9zY3NpX2N0bF9oYW5kbGVfa2ljaztcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTIzMTMtXHR2cy1cdTAwM2V2cXNbVkhPU1RfU0NTSV9WUV9FVlRdLnZxLmhhbmRsZV9raWNrID0gdmhvc3Rfc2NzaV9ldnRfaGFuZGxlX2tpY2s7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA3OjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1NTI5CgkJCQkJCQlvdXRwdXQ6IDE5NQoJCQkJCQkJdGhvdWdodHM6IDQyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBsb29rZWQgb3ZlciB0aGlzIHBhdGNoLiBJdCBzZWVtcyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgcmFjZSBjb25kaXRpb24gd2l0aGluIHRoZSBgdmhvc3Rfc2NzaV9jb21wbGV0ZV9jbWRfd29ya2AgZnVuY3Rpb24sIHdoaWNoIGlzIGEgd29ya3F1ZXVlIGhhbmRsZXIuIFRoZSBpc3N1ZSBzdGVtcyBmcm9tIHRoZSBgdmhvc3Rfc2lnbmFsYCBjYWxsIGJlaW5nIG1hZGUgYWZ0ZXIgcmVsZWFzaW5nIHRoZSBgc3ZxLSZndDt2cS5tdXRleGAuIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdGhhdCBgdmhvc3Rfc2lnbmFsYCBhbHdheXMgcmVxdWlyZXMgdGhhdCBtdXRleCwgYnV0IGl0JiMzOTtzIHVzZWQgaW4gcGxlbnR5IG9mIHBsYWNlcyB3aXRob3V0IHRoYXQgbG9jay4gU3BlY2lmaWNhbGx5IGluIHRoaXMgYHZob3N0LXNjc2lgIGNvbnRleHQgSSYjMzk7bSBub3QgZW50aXJlbHkgc3VyZSwgYnV0IHRoZSBwYXRjaCBleHRlbmRzIHRoZSBsb2NrIHRvIGNvdmVyIGB2aG9zdF9zaWduYWxgLCB0byBiZSBzYWZlLgoKSSYjMzk7dmUgY2hlY2tlZCB0aGUgZm9jdXMgc3ltYm9scyBmb3IgdGhpcyBhcmU6CmB2aG9zdF9zY3NpX2NvbXBsZXRlX2NtZF93b3JrYCwgYHZob3N0X3Njc2lfaGFuZGxlX2tpY2tgLCBgdmhvc3Rfc2NzaV9jdGxfaGFuZGxlX2tpY2tgLCBgdmhvc3Rfc2NzaV9ldnRfaGFuZGxlX2tpY2tgLCBhbmQgYHZob3N0X3Njc2lfaW9jdGxgLgoKR2l2ZW4gdGhpcyBpcyBhIGNvcmUgdmhvc3Qtc2NzaSBkcml2ZXIgY2hhbmdlLCBpdCBtYWtlcyBzZW5zZSB0byBmb2N1cyBmdXp6aW5nIGVmZm9ydHMgaGVyZS4gVGhlIGxvZ2ljIGlzIG5vdyBsb2NrZWQgZG93bi4gQW5kIGl0JiMzOTtzIGEgZnVuY3Rpb25hbCBtb2RpZmljYXRpb24sIHNvIGRlZmluaXRlbHkgd29ydGggZnV6emluZyB0byBlbnN1cmUgaXQmIzM5O3Mgcm9idXN0LiBUaGUgY2hhbmdlIGxpa2VseSBpbnZvbHZlcyB0aGUgdmlydHF1ZXVlIGtpY2svY29tcGxldGlvbiBoYW5kbGVycyBhbmQgdmhvc3Qtc2NzaSBpb2N0bHMuCgpTbywgZm9yIG15IHN1bW1hcnk6CgoqICAgKipXb3J0aEZ1enppbmc6KiogVHJ1ZSwgZGVmaW5pdGVseS4KKiAgICoqRm9jdXNTeW1ib2xzOioqIEkmIzM5O2xsIGNvbmNlbnRyYXRlIG9uIHRoZSBmdW5jdGlvbnMgSSBsaXN0ZWQgYWJvdmUuCiogICAqKkVuYWJsZUNvbmZpZ3M6KiogTmVlZCB0byBjb25maXJtIGBWSE9TVF9TQ1NJYCBhbmQgcHJvYmFibHkgYFRBUkdFVF9DT1JFYCBhcmUgZW5hYmxlZCBmb3IgdGhpcy4KKiAgICoqUmVhc29uaW5nOioqIFRoZSBwYXRjaCBpcyBmdW5jdGlvbmFsbHkgc291bmQgYW5kIGV4dGVuZHMgYSBjcml0aWNhbCBsb2NrIHRvIHByZXZlbnQgYSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24gaW4gYHZob3N0X3Njc2lfY29tcGxldGVfY21kX3dvcmtgLiBXZSBzaG91bGQgc3BlY2lmaWNhbGx5IGZ1enogdGhlIGlvY3RsIGFuZCB2aXJ0cXVldWUgaW50ZXJhY3Rpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAwNzo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VkhPU1RfU0NTSSYjMzQ7LAogICAgJiMzNDtUQVJHRVRfQ09SRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3Zob3N0X3Njc2lfY29tcGxldGVfY21kX3dvcmsmIzM0OywKICAgICYjMzQ7dmhvc3Rfc2NzaV9oYW5kbGVfa2ljayYjMzQ7LAogICAgJiMzNDt2aG9zdF9zY3NpX2N0bF9oYW5kbGVfa2ljayYjMzQ7LAogICAgJiMzNDt2aG9zdF9zY3NpX2V2dF9oYW5kbGVfa2ljayYjMzQ7LAogICAgJiMzNDt2aG9zdF9zY3NpX2lvY3RsJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uIGluIGB2aG9zdF9zY3NpX2NvbXBsZXRlX2NtZF93b3JrYCBieSBleHRlbmRpbmcgdGhlIGBzdnEtXHUwMDNldnEubXV0ZXhgIGxvY2sgdG8gY292ZXIgdGhlIGB2aG9zdF9zaWduYWxgIGNhbGwuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSB2aG9zdC1zY3NpIGRyaXZlciBsb2dpYy4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIHZob3N0LXNjc2kgaW9jdGxzIGFuZCB2aXJ0cXVldWUga2ljay9jb21wbGV0aW9uIGhhbmRsZXJzIHRvIHRyaWdnZXIgdGhpcyBjb2RlIHBhdGguJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZIT1NUX1NDU0kmIzM0OywKICAgICYjMzQ7VEFSR0VUX0NPUkUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2aG9zdF9zY3NpX2NvbXBsZXRlX2NtZF93b3JrJiMzNDssCiAgICAmIzM0O3Zob3N0X3Njc2lfaGFuZGxlX2tpY2smIzM0OywKICAgICYjMzQ7dmhvc3Rfc2NzaV9jdGxfaGFuZGxlX2tpY2smIzM0OywKICAgICYjMzQ7dmhvc3Rfc2NzaV9ldnRfaGFuZGxlX2tpY2smIzM0OywKICAgICYjMzQ7dmhvc3Rfc2NzaV9pb2N0bCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiBpbiBgdmhvc3Rfc2NzaV9jb21wbGV0ZV9jbWRfd29ya2AgYnkgZXh0ZW5kaW5nIHRoZSBgc3ZxLVx1MDAzZXZxLm11dGV4YCBsb2NrIHRvIGNvdmVyIHRoZSBgdmhvc3Rfc2lnbmFsYCBjYWxsLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgdmhvc3Qtc2NzaSBkcml2ZXIgbG9naWMuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSB2aG9zdC1zY3NpIGlvY3RscyBhbmQgdmlydHF1ZXVlIGtpY2svY29tcGxldGlvbiBoYW5kbGVycyB0byB0cmlnZ2VyIHRoaXMgY29kZSBwYXRoLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDZUMDc6NTU6MTIuMTQ0ODAyNTQxWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAzMzYyMzM5NTU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlZIT1NUX1NDU0lcIixcbiAgICBcIlRBUkdFVF9DT1JFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidmhvc3Rfc2NzaV9jb21wbGV0ZV9jbWRfd29ya1wiLFxuICAgIFwidmhvc3Rfc2NzaV9oYW5kbGVfa2lja1wiLFxuICAgIFwidmhvc3Rfc2NzaV9jdGxfaGFuZGxlX2tpY2tcIixcbiAgICBcInZob3N0X3Njc2lfZXZ0X2hhbmRsZV9raWNrXCIsXG4gICAgXCJ2aG9zdF9zY3NpX2lvY3RsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24gaW4gYHZob3N0X3Njc2lfY29tcGxldGVfY21kX3dvcmtgIGJ5IGV4dGVuZGluZyB0aGUgYHN2cS1cXHUwMDNldnEubXV0ZXhgIGxvY2sgdG8gY292ZXIgdGhlIGB2aG9zdF9zaWduYWxgIGNhbGwuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSB2aG9zdC1zY3NpIGRyaXZlciBsb2dpYy4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIHZob3N0LXNjc2kgaW9jdGxzIGFuZCB2aXJ0cXVldWUga2ljay9jb21wbGV0aW9uIGhhbmRsZXJzIHRvIHRyaWdnZXIgdGhpcyBjb2RlIHBhdGguXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDA3OjU1OjEyLjE0NDgwNzQ4MVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIxMDI4NzI4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDA5Y2ZmY2VkYWQ2ZDNiMjEyMmRhMGNkY2U4YTE3NWI5ZmExNzBmODNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBBdWcgNiAwNzo1NToxMCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3Zob3N0L3Njc2kuYyBiL2RyaXZlcnMvdmhvc3Qvc2NzaS5jXFxuaW5kZXggOWExMjUzYjlkOGM1MC4uYTc4OWQ2MjM1OTg2MyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3Zob3N0L3Njc2kuY1xcbisrKyBiL2RyaXZlcnMvdmhvc3Qvc2NzaS5jXFxuQEAgLTczNSwxMCArNzM1LDkgQEAgc3RhdGljIHZvaWQgdmhvc3Rfc2NzaV9jb21wbGV0ZV9jbWRfd29yayhzdHJ1Y3Qgdmhvc3Rfd29yayAqd29yaylcXG4gXFx0XFx0dmhvc3Rfc2NzaV9yZWxlYXNlX2NtZF9yZXMoc2VfY21kKTtcXG4gXFx0fVxcbiBcXG4tXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZzdnEtXFx1MDAzZXZxLm11dGV4KTtcXG4tXFxuIFxcdGlmIChzaWduYWwpXFxuIFxcdFxcdHZob3N0X3NpZ25hbChcXHUwMDI2c3ZxLVxcdTAwM2V2cy1cXHUwMDNlZGV2LCBcXHUwMDI2c3ZxLVxcdTAwM2V2cSk7XFxuK1xcdG11dGV4X3VubG9jayhcXHUwMDI2c3ZxLVxcdTAwM2V2cS5tdXRleCk7XFxuIH1cXG4gXFxuIHN0YXRpYyBzdHJ1Y3Qgdmhvc3Rfc2NzaV9jbWQgKlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwNzo1NToxMy4zNTU4MTI1MThaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxMDIxNTEzMjA5MzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVkhPU1RfU0NTSVwiLFxuICAgIFwiVEFSR0VUX0NPUkVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2aG9zdF9zY3NpX2NvbXBsZXRlX2NtZF93b3JrXCIsXG4gICAgXCJ2aG9zdF9zY3NpX2hhbmRsZV9raWNrXCIsXG4gICAgXCJ2aG9zdF9zY3NpX2N0bF9oYW5kbGVfa2lja1wiLFxuICAgIFwidmhvc3Rfc2NzaV9ldnRfaGFuZGxlX2tpY2tcIixcbiAgICBcInZob3N0X3Njc2lfaW9jdGxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiBpbiBgdmhvc3Rfc2NzaV9jb21wbGV0ZV9jbWRfd29ya2AgYnkgZXh0ZW5kaW5nIHRoZSBgc3ZxLVxcdTAwM2V2cS5tdXRleGAgbG9jayB0byBjb3ZlciB0aGUgYHZob3N0X3NpZ25hbGAgY2FsbC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIHZob3N0LXNjc2kgZHJpdmVyIGxvZ2ljLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgdmhvc3Qtc2NzaSBpb2N0bHMgYW5kIHZpcnRxdWV1ZSBraWNrL2NvbXBsZXRpb24gaGFuZGxlcnMgdG8gdHJpZ2dlciB0aGlzIGNvZGUgcGF0aC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMDljZmZjZWRhZDZkM2IyMTIyZGEwY2RjZThhMTc1YjlmYTE3MGY4M1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgQXVnIDYgMDc6NTU6MTAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL3Zob3N0L3Njc2kuYyBiL2RyaXZlcnMvdmhvc3Qvc2NzaS5jXG5pbmRleCA5YTEyNTNiOWQ4YzUwLi5hNzg5ZDYyMzU5ODYzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy92aG9zdC9zY3NpLmNcbisrKyBiL2RyaXZlcnMvdmhvc3Qvc2NzaS5jXG5AQCAtNzM1LDEwICs3MzUsOSBAQCBzdGF0aWMgdm9pZCB2aG9zdF9zY3NpX2NvbXBsZXRlX2NtZF93b3JrKHN0cnVjdCB2aG9zdF93b3JrICp3b3JrKVxuIFx0XHR2aG9zdF9zY3NpX3JlbGVhc2VfY21kX3JlcyhzZV9jbWQpO1xuIFx0fVxuIFxuLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNnN2cS1cdTAwM2V2cS5tdXRleCk7XG4tXG4gXHRpZiAoc2lnbmFsKVxuIFx0XHR2aG9zdF9zaWduYWwoXHUwMDI2c3ZxLVx1MDAzZXZzLVx1MDAzZWRldiwgXHUwMDI2c3ZxLVx1MDAzZXZxKTtcbitcdG11dGV4X3VubG9jayhcdTAwMjZzdnEtXHUwMDNldnEubXV0ZXgpO1xuIH1cbiBcbiBzdGF0aWMgc3RydWN0IHZob3N0X3Njc2lfY21kICpcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDA3OjU1OjEzLjM1NTgxMzQ4OFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5MzExMTAzMzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgdmhvc3Qtc2NzaSBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCB0d2Vha3MgYGRyaXZlcnMvdmhvc3Qvc2NzaS5jYCwgc3BlY2lmaWNhbGx5IHRoZSBgdmhvc3Rfc2NzaV9jb21wbGV0ZV9jbWRfd29ya2AgZnVuY3Rpb24uIFRoZSBrZXkgY2hhbmdlIGlzIHRoZSByZS1vcmRlcmluZyBvZiBhIG11dGV4IHVubG9jay4gQ3VycmVudGx5LCBgbXV0ZXhfdW5sb2NrKFx1MDAyNnN2cS1cdTAwM2V2cS5tdXRleCk7YCBoYXBwZW5zIGJlZm9yZSBhIHNpZ25hbC4gVGhlIHBhdGNoIG1vdmVzIHRoaXMgdW5sb2NrIHRvIGFmdGVyIHRoZSBjb25kaXRpb25hbCBzaWduYWwgb3BlcmF0aW9uOiBgaWYgKHNpZ25hbCkgdmhvc3Rfc2lnbmFsKFx1MDAyNnN2cS1cdTAwM2V2cy1cdTAwM2VkZXYsIFx1MDAyNnN2cS1cdTAwM2V2cSk7YC5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGltbWVkaWF0ZWx5IGRpdmUgaW50byBgdmhvc3Rfc2NzaV9jb21wbGV0ZV9jbWRfd29ya2AgYW5kIHVuZGVyc3RhbmQgd2h5IHRoaXMgcmUtb3JkZXJpbmcgaXMgYmVpbmcgcHJvcG9zZWQuIFdoYXQncyB0aGUgcmF0aW9uYWxlPyBJcyB0aGVyZSBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiBvciBsb2NraW5nIGlzc3VlIGJlaW5nIGFkZHJlc3NlZD8gV2hhdCdzIHRoZSBjb250ZXh0IHN1cnJvdW5kaW5nIHRoZSBzaWduYWwgY2FsbD8gSXMgaXQgcmVsYXRlZCB0byBjb21wbGV0aW9uIG5vdGlmaWNhdGlvbnMsIGVycm9yIGhhbmRsaW5nLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gVGhlIHNpZ25hbCBpdHNlbGYsIHdoYXQncyBpdHMgcHVycG9zZSByZWxhdGl2ZSB0byB0aGUgbXV0ZXgncyBwcm90ZWN0aW9uPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIGhvbGRpbmcgdGhlIG11dGV4IHNsaWdodGx5IGxvbmdlciBpbiB0aGlzIHNjZW5hcmlvLiBUaGlzIHNtYWxsIGNoYW5nZSBjb3VsZCBiZSBpbm5vY3VvdXMsIGNyaXRpY2FsLCBvciBldmVuIHN1YnRseSBpbnRyb2R1Y2UgYSBuZXcgcHJvYmxlbS4gU28gSSBuZWVkIHRvIGRpZyBkZWVwIHRvIGZ1bGx5IGNvbXByZWhlbmQgdGhpcyBzaGlmdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA2NiwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMDc6NTU6MTcuMjg2OTI1NjI5WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MTQ5NTE3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZob3N0X3Njc2lfY29tcGxldGVfY21kX3dvcmtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy92aG9zdC9zY3NpLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92aG9zdC9zY3NpLmM9NjU2PXN0YXRpYyBpbnQgdmhvc3Rfc2NzaV9jb3B5X3NnbF90b19pb3Yoc3RydWN0IHZob3N0X3Njc2lfY21kICpjbWQpXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy02ODUtICovXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6Njg2OnN0YXRpYyB2b2lkIHZob3N0X3Njc2lfY29tcGxldGVfY21kX3dvcmsoc3RydWN0IHZob3N0X3dvcmsgKndvcmspXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtNjg3LXtcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTIyNzA9c3RhdGljIGludCB2aG9zdF9zY3NpX29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmYpXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yMzIwLVxcdFxcdHZob3N0X3dvcmtfaW5pdChcXHUwMDI2c3ZxLVxcdTAwM2Vjb21wbGV0aW9uX3dvcmssXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MjMyMTpcXHRcXHRcXHRcXHR2aG9zdF9zY3NpX2NvbXBsZXRlX2NtZF93b3JrKTtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yMzIyLVxcdFxcdHN2cS1cXHUwMDNldnEuaGFuZGxlX2tpY2sgPSB2aG9zdF9zY3NpX2hhbmRsZV9raWNrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwNzo1NToxNy4zMzEwODIxMzVaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODg1OTM3NjQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIENyaXRpY2FsIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBhZGRyZXNzaW5nIGEgY29uY3VycmVuY3kgaXNzdWUsIHByb2JhYmx5IGEgcmFjZSBjb25kaXRpb24gb3Igc29tZSBsb2NraW5nIHByb2JsZW0uIEl0IGxvb2tzIGxpa2UgdGhlIGNvcmUgb2YgdGhlIGZpeCByZXZvbHZlcyBhcm91bmQgZXh0ZW5kaW5nIGEgbG9jaydzIHByb3RlY3Rpb24gdG8gY292ZXIgdGhlIGB2aG9zdF9zaWduYWxgIGNhbGwuIE5vdywgaG9sZCBvbiBhIHNlY29uZOKApkkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBzY29wZSBvZiB0aGlzLiBEb2VzIGB2aG9zdF9zaWduYWxgIGl0c2VsZiAqcmVxdWlyZSogdGhlIGxvY2s/IE9yIGlzIGl0IHRoYXQgYHZob3N0X3NpZ25hbGAgaXMgdG91Y2hpbmcgc29tZXRoaW5nIOKAkyBwZXJoYXBzIGBcdTAwMjZzdnEtXHUwMDNldnFgIOKAkyB0aGF0ICpuZWVkcyogdGhlIGxvY2sncyBwcm90ZWN0aW9uPyBJIG5lZWQgdG8gY2xhcmlmeSB3aGF0IHRoZSBmdW5jdGlvbiBkb2VzIGV4YWN0bHkgaW4gcmVsYXRpb24gdG8gdGhlIGJyb2FkZXIgbG9jayBhbmQgZGF0YSBzdHJ1Y3R1cmVzIGF0IHBsYXkuIFJpZ2h0LCB0aW1lIHRvIGRpZyBpbnRvIHRoZSBgdmhvc3Rfc2lnbmFsYCBpbXBsZW1lbnRhdGlvbiBpdHNlbGYuIExldCdzIHN0YXJ0IHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzIxLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMDc6NTU6MjEuMjE3MDIyMjA5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyMjAwNjQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZob3N0X3NpZ25hbFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3Zob3N0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3Zob3N0L3Njc2kuYz02ODY9c3RhdGljIHZvaWQgdmhvc3Rfc2NzaV9jb21wbGV0ZV9jbWRfd29yayhzdHJ1Y3Qgdmhvc3Rfd29yayAqd29yaylcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTczOC1cXHRpZiAoc2lnbmFsKVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjczOTpcXHRcXHR2aG9zdF9zaWduYWwoXFx1MDAyNnN2cS1cXHUwMDNldnMtXFx1MDAzZWRldiwgXFx1MDAyNnN2cS1cXHUwMDNldnEpO1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTc0MC1cXHRtdXRleF91bmxvY2soXFx1MDAyNnN2cS1cXHUwMDNldnEubXV0ZXgpO1xcbi0tXFxuZHJpdmVycy92aG9zdC92aG9zdC5jPTMxMzM9c3RhdGljIGJvb2wgdmhvc3Rfbm90aWZ5KHN0cnVjdCB2aG9zdF9kZXYgKmRldiwgc3RydWN0IHZob3N0X3ZpcnRxdWV1ZSAqdnEpXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMzE3MC0vKiBUaGlzIGFjdHVhbGx5IHNpZ25hbHMgdGhlIGd1ZXN0LCB1c2luZyBldmVudGZkLiAqL1xcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYzozMTcxOnZvaWQgdmhvc3Rfc2lnbmFsKHN0cnVjdCB2aG9zdF9kZXYgKmRldiwgc3RydWN0IHZob3N0X3ZpcnRxdWV1ZSAqdnEpXFxuZHJpdmVycy92aG9zdC92aG9zdC5jLTMxNzIte1xcbi0tXFxuZHJpdmVycy92aG9zdC92aG9zdC5jLTMxNzYtfVxcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYzozMTc3OkVYUE9SVF9TWU1CT0xfR1BMKHZob3N0X3NpZ25hbCk7XFxuZHJpdmVycy92aG9zdC92aG9zdC5jLTMxNzgtXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmM9MzE4MD12b2lkIHZob3N0X2FkZF91c2VkX2FuZF9zaWduYWwoc3RydWN0IHZob3N0X2RldiAqZGV2LFxcbi0tXFxuZHJpdmVycy92aG9zdC92aG9zdC5jLTMxODQtXFx0dmhvc3RfYWRkX3VzZWQodnEsIGhlYWQsIGxlbik7XFxuZHJpdmVycy92aG9zdC92aG9zdC5jOjMxODU6XFx0dmhvc3Rfc2lnbmFsKGRldiwgdnEpO1xcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYy0zMTg2LX1cXG4tLVxcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYz0zMTkwPXZvaWQgdmhvc3RfYWRkX3VzZWRfYW5kX3NpZ25hbF9uKHN0cnVjdCB2aG9zdF9kZXYgKmRldixcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYy0zMTk2LVxcdHZob3N0X2FkZF91c2VkX24odnEsIGhlYWRzLCBuaGVhZHMsIGNvdW50KTtcXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmM6MzE5NzpcXHR2aG9zdF9zaWduYWwoZGV2LCB2cSk7XFxuZHJpdmVycy92aG9zdC92aG9zdC5jLTMxOTgtfVxcbi0tXFxuZHJpdmVycy92aG9zdC92aG9zdC5oPTI1Mz12b2lkIHZob3N0X2FkZF91c2VkX2FuZF9zaWduYWxfbihzdHJ1Y3Qgdmhvc3RfZGV2ICosIHN0cnVjdCB2aG9zdF92aXJ0cXVldWUgKixcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuaC0yNTUtXFx0XFx0XFx0XFx0IHVuc2lnbmVkIGNvdW50KTtcXG5kcml2ZXJzL3Zob3N0L3Zob3N0Lmg6MjU2OnZvaWQgdmhvc3Rfc2lnbmFsKHN0cnVjdCB2aG9zdF9kZXYgKiwgc3RydWN0IHZob3N0X3ZpcnRxdWV1ZSAqKTtcXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmgtMjU3LXZvaWQgdmhvc3RfZGlzYWJsZV9ub3RpZnkoc3RydWN0IHZob3N0X2RldiAqLCBzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICopO1xcbi0tXFxuZHJpdmVycy92aG9zdC92c29jay5jPTEwNz12aG9zdF90cmFuc3BvcnRfZG9fc2VuZF9wa3Qoc3RydWN0IHZob3N0X3Zzb2NrICp2c29jayxcXG4tLVxcbmRyaXZlcnMvdmhvc3QvdnNvY2suYy0yNjctXFx0aWYgKGFkZGVkKVxcbmRyaXZlcnMvdmhvc3QvdnNvY2suYzoyNjg6XFx0XFx0dmhvc3Rfc2lnbmFsKFxcdTAwMjZ2c29jay1cXHUwMDNlZGV2LCB2cSk7XFxuZHJpdmVycy92aG9zdC92c29jay5jLTI2OS1cXG4tLVxcbmRyaXZlcnMvdmhvc3QvdnNvY2suYz01MjM9c3RhdGljIHZvaWQgdmhvc3RfdnNvY2tfaGFuZGxlX3R4X2tpY2soc3RydWN0IHZob3N0X3dvcmsgKndvcmspXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmMtNTk0LVxcdGlmIChhZGRlZClcXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmM6NTk1OlxcdFxcdHZob3N0X3NpZ25hbChcXHUwMDI2dnNvY2stXFx1MDAzZWRldiwgdnEpO1xcbmRyaXZlcnMvdmhvc3QvdnNvY2suYy01OTYtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDA3OjU1OjIxLjI1OTIyNDc4NloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxNDkzMDk4ODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBQb3RlbnRpYWw6IGB2aG9zdF9zY3NpX2NvbXBsZXRlX2NtZF93b3JrYCBNb2RpZmljYXRpb24qKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGB2aG9zdF9zY3NpX2NvbXBsZXRlX2NtZF93b3JrYC4gSW1tZWRpYXRlbHksIHRoZSBxdWVzdGlvbiBhcmlzZXM6IGZ1enppbmcgb3Bwb3J0dW5pdHk/IEFic29sdXRlbHkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gdGhlIGB2aG9zdC1zY3NpYCBzdWJzeXN0ZW0sIHdoaWNoIG1lYW5zIGl0J3MgcHJpbWUgdGVycml0b3J5IGZvciBkaWdnaW5nIHVwIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMuIE15IGV4cGVyaWVuY2Ugc2F5cyB0aGF0IGFueSBhbHRlcmF0aW9uIHRvIGNvbW1hbmQgY29tcGxldGlvbiBsb2dpYyBpcyBhIGdvb2QgcGxhY2UgdG8gc3RhcnQuIE5vdywgbGV0J3MgZ2V0IHRoZSBiYWxsIHJvbGxpbmcgYW5kIHRyYWNrIGRvd24gdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgYHZob3N0LXNjc2lgIHRvIHRhaWxvciBhIGZ1enppbmcgY2FtcGFpZ24uIEdvdHRhIGlkZW50aWZ5IHdoYXQncyBlbmFibGVkLCB3aGF0J3MgZGlzYWJsZWQsIGFuZCB3aGVyZSB0aGUgbW9zdCBpbnRlcmVzdGluZyBlbnRyeSBwb2ludHMgYXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozODgwLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMDc6NTU6MjQuNDA4NTM2ODYxWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzMzY1MTE3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZob3N0X3Njc2lcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy92aG9zdC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmhvc3QvS2NvbmZpZz00Nj1jb25maWcgVkhPU1RfU0NTSVxcbi0tXFxuZHJpdmVycy92aG9zdC9LY29uZmlnLTUyLVxcdGhlbHBcXG5kcml2ZXJzL3Zob3N0L0tjb25maWc6NTM6XFx0U2F5IE0gaGVyZSB0byBlbmFibGUgdGhlIHZob3N0X3Njc2kgVENNIGZhYnJpYyBtb2R1bGVcXG5kcml2ZXJzL3Zob3N0L0tjb25maWctNTQtXFx0Zm9yIHVzZSB3aXRoIHZpcnRpby1zY3NpIGd1ZXN0c1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwNzo1NToyNC40NTE5MDM3NjdaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDIxNTExNDU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBzZWUgd2hhdCB3ZSdyZSBkZWFsaW5nIHdpdGguIFRoZSBjb25maWd1cmF0aW9uIGluIHBsYXkgaGVyZSBpcyBgVkhPU1RfU0NTSWAuIE15IGZvY3VzIG5lZWRzIHRvIGJlIGxhc2VyLXNoYXJwIG9uIHRoYXQgbW9kdWxlLiBcblxuKipWSE9TVF9TQ1NJIEVudHJ5IFBvaW50cyBhbmQgS2V5IEZ1bmN0aW9ucyoqXG5cbkknbSB6ZXJvaW5nIGluIG9uIHRoZSBjcnVjaWFsIGZ1bmN0aW9ucy4gRnJvbSB0aGUgaW5pdGlhbCBnbGFuY2UsIGB2aG9zdF9zY3NpX2NvbXBsZXRlX2NtZF93b3JrYCBqdW1wcyBvdXQsIGJ1dCBJIG5lZWQgdG8gcmVtZW1iZXIgdGhhdCBpdCdzIGEgd29ya3F1ZXVlIGZ1bmN0aW9uLiBUaGF0IG1lYW5zIGl0J3MgKnRyaWdnZXJlZCogYnkgc29tZXRoaW5nIGVsc2UuIEl0J3Mgbm90IGEgZGlyZWN0IHN5c2NhbGwgZW50cnkgcG9pbnQuIFNvLCBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IHRob3NlIHRyaWdnZXJpbmcgbWVjaGFuaXNtcyBhcmUuIFRoZSByZWFsIHF1ZXN0aW9uIGlzOiB3aGVyZSBkbyBJIGV2ZW4gKmVudGVyKiB0aGlzIGB2aG9zdC1zY3NpYCBzdWJzeXN0ZW0/IEkgbmVlZCB0byBpZGVudGlmeSB0aGUgZW50cnkgcG9pbnRzLiBVbmRlcnN0YW5kaW5nIHRoZXNlIGVudHJ5IHBvaW50cyBpcyBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgY29udHJvbCBmbG93IGFuZCBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzLiBUaW1lIHRvIGRpZyBkZWVwZXIgYW5kIG1hcCB0aG9zZSBjYWxscyBvdXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyMTQsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwNzo1NToyOC44NzM0MTc0NDRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MTIxODQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZob3N0X3Njc2lfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmhvc3Qvc2NzaS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTE2NyBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtNTMtXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6NTQ6c3RhdGljIHVuc2lnbmVkIGludCB2aG9zdF9zY3NpX2lubGluZV9zZ19jbnQgPSBWSE9TVF9TQ1NJX1BSRUFMTE9DX1NHTFM7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtNTUtXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtNTYtI2lmZGVmIENPTkZJR19BUkNIX05PX1NHX0NIQUlOXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6NTc6c3RhdGljIGludCB2aG9zdF9zY3NpX3NldF9pbmxpbmVfc2dfY250KGNvbnN0IGNoYXIgKmJ1ZixcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy01OC1cXHRcXHRcXHRcXHRcXHRjb25zdCBzdHJ1Y3Qga2VybmVsX3BhcmFtICprcClcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTYzLSNlbHNlXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6NjQ6c3RhdGljIGludCB2aG9zdF9zY3NpX3NldF9pbmxpbmVfc2dfY250KGNvbnN0IGNoYXIgKmJ1ZixcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy02NS1cXHRcXHRcXHRcXHRcXHRjb25zdCBzdHJ1Y3Qga2VybmVsX3BhcmFtICprcClcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTc4LVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjc5OlxcdHZob3N0X3Njc2lfaW5saW5lX3NnX2NudCA9IGNudDtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy04MC1cXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTgzLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjg0OnN0YXRpYyBpbnQgdmhvc3Rfc2NzaV9nZXRfaW5saW5lX3NnX2NudChjaGFyICpidWYsXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtODUtXFx0XFx0XFx0XFx0XFx0Y29uc3Qgc3RydWN0IGtlcm5lbF9wYXJhbSAqa3ApXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtODYte1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjg3OlxcdHJldHVybiBzcHJpbnRmKGJ1ZiwgXFxcIiV1XFxcXG5cXFwiLCB2aG9zdF9zY3NpX2lubGluZV9zZ19jbnQpO1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTg4LX1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy04OS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo5MDpzdGF0aWMgY29uc3Qgc3RydWN0IGtlcm5lbF9wYXJhbV9vcHMgdmhvc3Rfc2NzaV9pbmxpbmVfc2dfY250X29wID0ge1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjkxOlxcdC5nZXQgPSB2aG9zdF9zY3NpX2dldF9pbmxpbmVfc2dfY250LFxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjkyOlxcdC5zZXQgPSB2aG9zdF9zY3NpX3NldF9pbmxpbmVfc2dfY250LFxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTkzLX07XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtOTQtXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6OTU6bW9kdWxlX3BhcmFtX2NiKGlubGluZV9zZ19jbnQsIFxcdTAwMjZ2aG9zdF9zY3NpX2lubGluZV9zZ19jbnRfb3AsIE5VTEwsIDA2NDQpO1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTk2LU1PRFVMRV9QQVJNX0RFU0MoaW5saW5lX3NnX2NudCwgXFxcIlNldCB0aGUgbnVtYmVyIG9mIHNjYXR0ZXJsaXN0IGVudHJpZXMgdG8gcHJlLWFsbG9jYXRlLiBUaGUgZGVmYXVsdCBpcyAyMDQ4LlxcXCIpO1xcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTAzLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjEwNDpzdHJ1Y3Qgdmhvc3Rfc2NzaV9pbmZsaWdodCB7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTA1LVxcdC8qIFdhaXQgZm9yIHRoZSBmbHVzaCBvcGVyYXRpb24gdG8gZmluaXNoICovXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xMTAtXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTExOnN0cnVjdCB2aG9zdF9zY3NpX2NtZCB7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTEyLVxcdC8qIERlc2NyaXB0b3IgZnJvbSB2aG9zdF9nZXRfdnFfZGVzYygpIGZvciB2aXJ0X3F1ZXVlIHNlZ21lbnQgKi9cXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE0My1cXHQvKiBVc2VkIHRvIHRyYWNrIGluZmxpZ2h0IGNtZCAqL1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjE0NDpcXHRzdHJ1Y3Qgdmhvc3Rfc2NzaV9pbmZsaWdodCAqaW5mbGlnaHQ7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTQ1LX07XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTQ2LVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjE0NzpzdHJ1Y3Qgdmhvc3Rfc2NzaV9uZXh1cyB7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTQ4LVxcdC8qIFBvaW50ZXIgdG8gVENNIHNlc3Npb24gZm9yIElfVCBOZXh1cyAqL1xcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTUxLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjE1MjpzdHJ1Y3Qgdmhvc3Rfc2NzaV90cGcge1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE1My1cXHQvKiBWaG9zdCBwb3J0IHRhcmdldCBwb3J0YWwgZ3JvdXAgdGFnIGZvciBUQ00gKi9cXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE2MC1cXHRpbnQgdHZfZmFicmljX3Byb3RfdHlwZTtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxNjE6XFx0LyogbGlzdCBmb3Igdmhvc3Rfc2NzaV9saXN0ICovXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTYyLVxcdHN0cnVjdCBsaXN0X2hlYWQgdHZfdHBnX2xpc3Q7XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xNjUtXFx0LyogUG9pbnRlciB0byB0aGUgVENNIFZIb3N0IElfVCBOZXh1cyBmb3IgdGhpcyBUUEcgZW5kcG9pbnQgKi9cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxNjY6XFx0c3RydWN0IHZob3N0X3Njc2lfbmV4dXMgKnRwZ19uZXh1cztcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxNjc6XFx0LyogUG9pbnRlciBiYWNrIHRvIHZob3N0X3Njc2lfdHBvcnQgKi9cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxNjg6XFx0c3RydWN0IHZob3N0X3Njc2lfdHBvcnQgKnRwb3J0O1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjE2OTpcXHQvKiBSZXR1cm5lZCBieSB2aG9zdF9zY3NpX21ha2VfdHBnKCkgKi9cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xNzAtXFx0c3RydWN0IHNlX3BvcnRhbF9ncm91cCBzZV90cGc7XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xNzQtXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTc1OnN0cnVjdCB2aG9zdF9zY3NpX3Rwb3J0IHtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xNzYtXFx0LyogU0NTSSBwcm90b2NvbCB0aGUgdHBvcnQgaXMgcHJvdmlkaW5nICovXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xODEtXFx0Y2hhciB0cG9ydF9uYW1lW1ZIT1NUX1NDU0lfTkFNRUxFTl07XFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTgyOlxcdC8qIFJldHVybmVkIGJ5IHZob3N0X3Njc2lfbWFrZV90cG9ydCgpICovXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTgzLVxcdHN0cnVjdCBzZV93d24gdHBvcnRfd3duO1xcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTg1LVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjE4NjpzdHJ1Y3Qgdmhvc3Rfc2NzaV9ldnQge1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE4Ny1cXHQvKiBldmVudCB0byBiZSBzZW50IHRvIGd1ZXN0ICovXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz0xOTM9ZW51bSB7XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xOTktLyogTm90ZTogY2FuJ3Qgc2V0IFZJUlRJT19GX1ZFUlNJT05fMSB5ZXQsIHNpbmNlIHRoYXQgaW1wbGllcyBBTllfTEFZT1VULiAqL1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjIwMDpzdGF0aWMgY29uc3QgaW50IHZob3N0X3Njc2lfYml0c1tdID0ge1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTIwMS1cXHRWSE9TVF9GRUFUVVJFUyxcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTIwNS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyMDY6I2RlZmluZSBWSE9TVF9TQ1NJX0ZFQVRVUkVTIFZIT1NUX0ZFQVRVUkVTX1U2NCh2aG9zdF9zY3NpX2JpdHMsIDApXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjA3LVxcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjExLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjIxMjpzdGF0aWMgdW5zaWduZWQgdmhvc3Rfc2NzaV9tYXhfaW9fdnFzID0gMTI4O1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjIxMzptb2R1bGVfcGFyYW1fbmFtZWQobWF4X2lvX3Zxcywgdmhvc3Rfc2NzaV9tYXhfaW9fdnFzLCB1aW50LCAwNjQ0KTtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yMTQtTU9EVUxFX1BBUk1fREVTQyhtYXhfaW9fdnFzLCBcXFwiU2V0IHRoZSBtYXggbnVtYmVyIG9mIElPIHZpcnRxdWV1ZXMgYSB2aG9zdCBzY3NpIGRldmljZSBjYW4gc3VwcG9ydC4gVGhlIGRlZmF1bHQgaXMgMTI4LiBUaGUgbWF4IGlzIDEwMjQuXFxcIik7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjE1LVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjIxNjpzdHJ1Y3Qgdmhvc3Rfc2NzaV92aXJ0cXVldWUge1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTIxNy1cXHRzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlIHZxO1xcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjIzLVxcdCAqL1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjIyNDpcXHRzdHJ1Y3Qgdmhvc3Rfc2NzaV9pbmZsaWdodCBpbmZsaWdodHNbMl07XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjI1LVxcdC8qXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yMjktXFx0aW50IGluZmxpZ2h0X2lkeDtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyMzA6XFx0c3RydWN0IHZob3N0X3Njc2lfY21kICpzY3NpX2NtZHM7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjMxLVxcdHN0cnVjdCBzYml0bWFwIHNjc2lfdGFncztcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTIzOT1zdHJ1Y3Qgdmhvc3Rfc2NzaSB7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjQwLVxcdC8qIFByb3RlY3RlZCBieSB2aG9zdF9zY3NpLVxcdTAwM2VkZXYubXV0ZXggKi9cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyNDE6XFx0c3RydWN0IHZob3N0X3Njc2lfdHBnICoqdnNfdHBnO1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI0Mi1cXHRjaGFyIHZzX3Zob3N0X3d3cG5bVFJBTlNQT1JUX0lRTl9MRU5dO1xcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjQ0LVxcdHN0cnVjdCB2aG9zdF9kZXYgZGV2O1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjI0NTpcXHRzdHJ1Y3Qgdmhvc3Rfc2NzaV92aXJ0cXVldWUgKnZxcztcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyNDY6XFx0c3RydWN0IHZob3N0X3Njc2lfaW5mbGlnaHQgKipvbGRfaW5mbGlnaHQ7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjQ3LVxcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjU2LVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjI1NzpzdHJ1Y3Qgdmhvc3Rfc2NzaV90bWYge1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI1OC1cXHRzdHJ1Y3Qgdmhvc3Rfd29yayB2d29yaztcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI2MC1cXHRzdHJ1Y3Qgdmhvc3Rfc2NzaSAqdmhvc3Q7XFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MjYxOlxcdHN0cnVjdCB2aG9zdF9zY3NpX3ZpcnRxdWV1ZSAqc3ZxO1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI2Mi1cXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI2NC1cXHR1OCBzY3NpX3Jlc3A7XFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MjY1OlxcdHN0cnVjdCB2aG9zdF9zY3NpX2luZmxpZ2h0ICppbmZsaWdodDtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yNjYtXFx0c3RydWN0IGlvdmVjIHJlc3BfaW92O1xcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjc5LSAqL1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjI4MDpzdHJ1Y3Qgdmhvc3Rfc2NzaV9jdHgge1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI4MS1cXHRpbnQgaGVhZDtcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI5My0gKi9cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyOTQ6c3RhdGljIERFRklORV9NVVRFWCh2aG9zdF9zY3NpX211dGV4KTtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyOTU6c3RhdGljIExJU1RfSEVBRCh2aG9zdF9zY3NpX2xpc3QpO1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI5Ni1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyOTc6c3RhdGljIHZvaWQgdmhvc3Rfc2NzaV9kb25lX2luZmxpZ2h0KHN0cnVjdCBrcmVmICprcmVmKVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI5OC17XFxuZHJpdmVycy92aG9zdC9zY3NpLmM6Mjk5OlxcdHN0cnVjdCB2aG9zdF9zY3NpX2luZmxpZ2h0ICppbmZsaWdodDtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0zMDAtXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MzAxOlxcdGluZmxpZ2h0ID0gY29udGFpbmVyX29mKGtyZWYsIHN0cnVjdCB2aG9zdF9zY3NpX2luZmxpZ2h0LCBrcmVmKTtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0zMDItXFx0Y29tcGxldGUoXFx1MDAyNmluZmxpZ2h0LVxcdTAwM2Vjb21wKTtcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTMwNC1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzozMDU6c3RhdGljIHZvaWQgdmhvc3Rfc2NzaV9pbml0X2luZmxpZ2h0KHN0cnVjdCB2aG9zdF9zY3NpICp2cyxcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzozMDY6XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCB2aG9zdF9zY3NpX2luZmxpZ2h0ICpvbGRfaW5mbGlnaHRbXSlcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0zMDcte1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjMwODpcXHRzdHJ1Y3Qgdmhvc3Rfc2NzaV9pbmZsaWdodCAqbmV3X2luZmxpZ2h0O1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTMwOS1cXHRzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICp2cTtcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTMzMS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzozMzI6c3RhdGljIHN0cnVjdCB2aG9zdF9zY3NpX2luZmxpZ2h0ICpcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzozMzM6dmhvc3Rfc2NzaV9nZXRfaW5mbGlnaHQoc3RydWN0IHZob3N0X3ZpcnRxdWV1ZSAqdnEpXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMzM0LXtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzozMzU6XFx0c3RydWN0IHZob3N0X3Njc2lfaW5mbGlnaHQgKmluZmxpZ2h0O1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjMzNjpcXHRzdHJ1Y3Qgdmhvc3Rfc2NzaV92aXJ0cXVldWUgKnN2cTtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0zMzctXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MzM4OlxcdHN2cSA9IGNvbnRhaW5lcl9vZih2cSwgc3RydWN0IHZob3N0X3Njc2lfdmlydHF1ZXVlLCB2cSk7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMzM5LVxcdGluZmxpZ2h0ID0gXFx1MDAyNnN2cS1cXHUwMDNlaW5mbGlnaHRzW3N2cS1cXHUwMDNlaW5mbGlnaHRfaWR4XTtcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTM0NC1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzozNDU6c3RhdGljIHZvaWQgdmhvc3Rfc2NzaV9wdXRfaW5mbGlnaHQoc3RydWN0IHZob3N0X3Njc2lfaW5mbGlnaHQgKmluZmxpZ2h0KVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTM0Ni17XFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MzQ3OlxcdGtyZWZfcHV0KFxcdTAwMjZpbmZsaWdodC1cXHUwMDNla3JlZiwgdmhvc3Rfc2NzaV9kb25lX2luZmxpZ2h0KTtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0zNDgtfVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTM0OS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzozNTA6c3RhdGljIGludCB2aG9zdF9zY3NpX2NoZWNrX3RydWUoc3RydWN0IHNlX3BvcnRhbF9ncm91cCAqc2VfdHBnKVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTM1MS17XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0zNTQtXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MzU1OnN0YXRpYyBjaGFyICp2aG9zdF9zY3NpX2dldF9mYWJyaWNfd3duKHN0cnVjdCBzZV9wb3J0YWxfZ3JvdXAgKnNlX3RwZylcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0zNTYte1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjM1NzpcXHRzdHJ1Y3Qgdmhvc3Rfc2NzaV90cGcgKnRwZyA9IGNvbnRhaW5lcl9vZihzZV90cGcsXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MzU4OlxcdFxcdFxcdFxcdHN0cnVjdCB2aG9zdF9zY3NpX3RwZywgc2VfdHBnKTtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzozNTk6XFx0c3RydWN0IHZob3N0X3Njc2lfdHBvcnQgKnRwb3J0ID0gdHBnLVxcdTAwM2V0cG9ydDtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0zNjAtXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0zNjMtXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MzY0OnN0YXRpYyB1MTYgdmhvc3Rfc2NzaV9nZXRfdHBndChzdHJ1Y3Qgc2VfcG9ydGFsX2dyb3VwICpzZV90cGcpXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMzY1LXtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzozNjY6XFx0c3RydWN0IHZob3N0X3Njc2lfdHBnICp0cGcgPSBjb250YWluZXJfb2Yoc2VfdHBnLFxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjM2NzpcXHRcXHRcXHRcXHRzdHJ1Y3Qgdmhvc3Rfc2NzaV90cGcsIHNlX3RwZyk7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMzY4LVxcdHJldHVybiB0cGctXFx1MDAzZXRwb3J0X3RwZ3Q7XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0zNzAtXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MzcxOnN0YXRpYyBpbnQgdmhvc3Rfc2NzaV9jaGVja19wcm90X2ZhYnJpY19vbmx5KHN0cnVjdCBzZV9wb3J0YWxfZ3JvdXAgKnNlX3RwZylcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0zNzIte1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjM3MzpcXHRzdHJ1Y3Qgdmhvc3Rfc2NzaV90cGcgKnRwZyA9IGNvbnRhaW5lcl9vZihzZV90cGcsXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6Mzc0OlxcdFxcdFxcdFxcdHN0cnVjdCB2aG9zdF9zY3NpX3RwZywgc2VfdHBnKTtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0zNzUtXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0zNzgtXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6Mzc5OnN0YXRpYyBpbnQgdmhvc3Rfc2NzaV9jb3B5X2NtZF9sb2coc3RydWN0IHZob3N0X3ZpcnRxdWV1ZSAqdnEsXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MzgwOlxcdFxcdFxcdFxcdCAgIHN0cnVjdCB2aG9zdF9zY3NpX2NtZCAqY21kLFxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTM4MS1cXHRcXHRcXHRcXHQgICBzdHJ1Y3Qgdmhvc3RfbG9nICpsb2csXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0zOTctXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6Mzk4OnN0YXRpYyB2b2lkIHZob3N0X3Njc2lfbG9nX3dyaXRlKHN0cnVjdCB2aG9zdF92aXJ0cXVldWUgKnZxLFxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTM5OS1cXHRcXHRcXHRcXHQgc3RydWN0IHZob3N0X2xvZyAqbG9nLFxcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtNDE1LVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjQxNjpzdGF0aWMgdm9pZCB2aG9zdF9zY3NpX3JlbGVhc2VfY21kX3JlcyhzdHJ1Y3Qgc2VfY21kICpzZV9jbWQpXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtNDE3LXtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo0MTg6XFx0c3RydWN0IHZob3N0X3Njc2lfY21kICp0dl9jbWQgPSBjb250YWluZXJfb2Yoc2VfY21kLFxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjQxOTpcXHRcXHRcXHRcXHRzdHJ1Y3Qgdmhvc3Rfc2NzaV9jbWQsIHR2Y19zZV9jbWQpO1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjQyMDpcXHRzdHJ1Y3Qgdmhvc3Rfc2NzaV92aXJ0cXVldWUgKnN2cSA9IGNvbnRhaW5lcl9vZih0dl9jbWQtXFx1MDAzZXR2Y192cSxcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo0MjE6XFx0XFx0XFx0XFx0c3RydWN0IHZob3N0X3Njc2lfdmlydHF1ZXVlLCB2cSk7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtNDIyLVxcdHN0cnVjdCB2aG9zdF9zY3NpICp2cyA9IHN2cS1cXHUwMDNldnM7XFxuZHJpdmVycy92aG9zdC9zY3NpLmM6NDIzOlxcdHN0cnVjdCB2aG9zdF9zY3NpX2luZmxpZ2h0ICppbmZsaWdodCA9IHR2X2NtZC1cXHUwMDNlaW5mbGlnaHQ7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtNDI0LVxcdHN0cnVjdCBzY2F0dGVybGlzdCAqc2c7XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy00NTQtXFx0c2JpdG1hcF9jbGVhcl9iaXQoXFx1MDAyNnN2cS1cXHUwMDNlc2NzaV90YWdzLCBzZV9jbWQtXFx1MDAzZW1hcF90YWcpO1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjQ1NTpcXHR2aG9zdF9zY3NpX3B1dF9pbmZsaWdodChpbmZsaWdodCk7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtNDU2LX1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy00NTctXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6NDU4OnN0YXRpYyB2b2lkIHZob3N0X3Njc2lfcmVsZWFzZV90bWZfcmVzKHN0cnVjdCB2aG9zdF9zY3NpX3RtZiAqdG1mKVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTQ1OS17XFxuZHJpdmVycy92aG9zdC9zY3NpLmM6NDYwOlxcdHN0cnVjdCB2aG9zdF9zY3NpX2luZmxpZ2h0ICppbmZsaWdodCA9IHRtZi1cXHUwMDNlaW5mbGlnaHQ7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtNDYxLVxcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtNDY2LVxcdGtmcmVlKHRtZik7XFxuZHJpdmVycy92aG9zdC9zY3NpLmM6NDY3OlxcdHZob3N0X3Njc2lfcHV0X2luZmxpZ2h0KGluZmxpZ2h0KTtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy00NjgtfVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTQ2OS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo0NzA6c3RhdGljIHZvaWQgdmhvc3Rfc2NzaV9kcm9wX2NtZHMoc3RydWN0IHZob3N0X3Njc2lfdmlydHF1ZXVlICpzdnEpXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtNDcxLXtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo0NzI6XFx0c3RydWN0IHZob3N0X3Njc2lfY21kICpjbWQsICp0O1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTQ3My1cXHRzdHJ1Y3QgbGxpc3Rfbm9kZSAqbGxub2RlO1xcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtNDc2LVxcdGxsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoY21kLCB0LCBsbG5vZGUsIHR2Y19jb21wbGV0aW9uX2xpc3QpXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6NDc3OlxcdFxcdHZob3N0X3Njc2lfcmVsZWFzZV9jbWRfcmVzKFxcdTAwMjZjbWQtXFx1MDAzZXR2Y19zZV9jbWQpO1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTQ3OC19XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtNDc5LVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjQ4MDpzdGF0aWMgdm9pZCB2aG9zdF9zY3NpX3JlbGVhc2VfY21kKHN0cnVjdCBzZV9jbWQgKnNlX2NtZClcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy00ODEte1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTQ4Mi1cXHRpZiAoc2VfY21kLVxcdTAwM2VzZV9jbWRfZmxhZ3MgXFx1MDAyNiBTQ0ZfU0NTSV9UTVJfQ0RCKSB7XFxuZHJpdmVycy92aG9zdC9zY3NpLmM6NDgzOlxcdFxcdHN0cnVjdCB2aG9zdF9zY3NpX3RtZiAqdG1mID0gY29udGFpbmVyX29mKHNlX2NtZCxcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo0ODQ6XFx0XFx0XFx0XFx0XFx0c3RydWN0IHZob3N0X3Njc2lfdG1mLCBzZV9jbWQpO1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTQ4NS1cXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTQ4Ny1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjQ4ODpcXHRcXHRzdHJ1Y3Qgdmhvc3Rfc2NzaV9jbWQgKmNtZCA9IGNvbnRhaW5lcl9vZihzZV9jbWQsXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6NDg5OlxcdFxcdFxcdFxcdFxcdHN0cnVjdCB2aG9zdF9zY3NpX2NtZCwgdHZjX3NlX2NtZCk7XFxuZHJpdmVycy92aG9zdC9zY3NpLmM6NDkwOlxcdFxcdHN0cnVjdCB2aG9zdF9zY3NpX3ZpcnRxdWV1ZSAqc3ZxID0gIGNvbnRhaW5lcl9vZihjbWQtXFx1MDAzZXR2Y192cSxcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo0OTE6XFx0XFx0XFx0XFx0XFx0c3RydWN0IHZob3N0X3Njc2lfdmlydHF1ZXVlLCB2cSk7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtNDkyLVxcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtNDk0LVxcdFxcdGlmICghdmhvc3RfdnFfd29ya19xdWV1ZShcXHUwMDI2c3ZxLVxcdTAwM2V2cSwgXFx1MDAyNnN2cS1cXHUwMDNlY29tcGxldGlvbl93b3JrKSlcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo0OTU6XFx0XFx0XFx0dmhvc3Rfc2NzaV9kcm9wX2NtZHMoc3ZxKTtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy00OTYtXFx0fVxcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtNDk4LVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjQ5OTpzdGF0aWMgaW50IHZob3N0X3Njc2lfd3JpdGVfcGVuZGluZyhzdHJ1Y3Qgc2VfY21kICpzZV9jbWQpXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtNTAwLXtcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTUwNS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo1MDY6c3RhdGljIGludCB2aG9zdF9zY3NpX3F1ZXVlX2RhdGFfaW4oc3RydWN0IHNlX2NtZCAqc2VfY21kKVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTUwNy17XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy01MTEtXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6NTEyOnN0YXRpYyBpbnQgdmhvc3Rfc2NzaV9xdWV1ZV9zdGF0dXMoc3RydWN0IHNlX2NtZCAqc2VfY21kKVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTUxMy17XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy01MTctXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6NTE4OnN0YXRpYyB2b2lkIHZob3N0X3Njc2lfcXVldWVfdG1fcnNwKHN0cnVjdCBzZV9jbWQgKnNlX2NtZClcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy01MTkte1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjUyMDpcXHRzdHJ1Y3Qgdmhvc3Rfc2NzaV90bWYgKnRtZiA9IGNvbnRhaW5lcl9vZihzZV9jbWQsIHN0cnVjdCB2aG9zdF9zY3NpX3RtZixcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy01MjEtXFx0XFx0XFx0XFx0XFx0XFx0ICBzZV9jbWQpO1xcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtNTI2LVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjUyNzpzdGF0aWMgdm9pZCB2aG9zdF9zY3NpX2Fib3J0ZWRfdGFzayhzdHJ1Y3Qgc2VfY21kICpzZV9jbWQpXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtNTI4LXtcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTUzMS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo1MzI6c3RhdGljIHZvaWQgdmhvc3Rfc2NzaV9mcmVlX2V2dChzdHJ1Y3Qgdmhvc3Rfc2NzaSAqdnMsIHN0cnVjdCB2aG9zdF9zY3NpX2V2dCAqZXZ0KVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTUzMy17XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy01MzctXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6NTM4OnN0YXRpYyBzdHJ1Y3Qgdmhvc3Rfc2NzaV9ldnQgKlxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjUzOTp2aG9zdF9zY3NpX2FsbG9jYXRlX2V2dChzdHJ1Y3Qgdmhvc3Rfc2NzaSAqdnMsXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtNTQwLVxcdFxcdCAgICAgICB1MzIgZXZlbnQsIHUzMiByZWFzb24pXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy01NDItXFx0c3RydWN0IHZob3N0X3ZpcnRxdWV1ZSAqdnEgPSBcXHUwMDI2dnMtXFx1MDAzZXZxc1tWSE9TVF9TQ1NJX1ZRX0VWVF0udnE7XFxuZHJpdmVycy92aG9zdC9zY3NpLmM6NTQzOlxcdHN0cnVjdCB2aG9zdF9zY3NpX2V2dCAqZXZ0O1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTU0NC1cXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTU1MS1cXHRpZiAoIWV2dCkge1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjU1MjpcXHRcXHR2cV9lcnIodnEsIFxcXCJGYWlsZWQgdG8gYWxsb2NhdGUgdmhvc3Rfc2NzaV9ldnRcXFxcblxcXCIpO1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTU1My1cXHRcXHR2cy1cXHUwMDNldnNfZXZlbnRzX21pc3NlZCA9IHRydWU7XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy01NjMtXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6NTY0OnN0YXRpYyBpbnQgdmhvc3Rfc2NzaV9jaGVja19zdG9wX2ZyZWUoc3RydWN0IHNlX2NtZCAqc2VfY21kKVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTU2NS17XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz01Njk9c3RhdGljIHZvaWRcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo1NzA6dmhvc3Rfc2NzaV9kb19ldnRfd29yayhzdHJ1Y3Qgdmhvc3Rfc2NzaSAqdnMsIHN0cnVjdCB2aG9zdF9zY3NpX2V2dCAqZXZ0KVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTU3MS17XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy02MjctXFx0ZWxzZVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjYyODpcXHRcXHR2cV9lcnIodnEsIFxcXCJGYXVsdGVkIG9uIHZob3N0X3Njc2lfc2VuZF9ldmVudFxcXFxuXFxcIik7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtNjI5LVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjYzMDpcXHR2aG9zdF9zY3NpX2xvZ193cml0ZSh2cSwgdnFfbG9nLCBsb2dfbnVtKTtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy02MzEtfVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTYzMi1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo2MzM6c3RhdGljIHZvaWQgdmhvc3Rfc2NzaV9jb21wbGV0ZV9ldmVudHMoc3RydWN0IHZob3N0X3Njc2kgKnZzLCBib29sIGRyb3ApXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtNjM0LXtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy02MzUtXFx0c3RydWN0IHZob3N0X3ZpcnRxdWV1ZSAqdnEgPSBcXHUwMDI2dnMtXFx1MDAzZXZxc1tWSE9TVF9TQ1NJX1ZRX0VWVF0udnE7XFxuZHJpdmVycy92aG9zdC9zY3NpLmM6NjM2OlxcdHN0cnVjdCB2aG9zdF9zY3NpX2V2dCAqZXZ0LCAqdDtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy02MzctXFx0c3RydWN0IGxsaXN0X25vZGUgKmxsbm9kZTtcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTY0Mi1cXHRcXHRpZiAoIWRyb3ApXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6NjQzOlxcdFxcdFxcdHZob3N0X3Njc2lfZG9fZXZ0X3dvcmsodnMsIGV2dCk7XFxuZHJpdmVycy92aG9zdC9zY3NpLmM6NjQ0OlxcdFxcdHZob3N0X3Njc2lfZnJlZV9ldnQodnMsIGV2dCk7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtNjQ1LVxcdH1cXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTY0OC1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo2NDk6c3RhdGljIHZvaWQgdmhvc3Rfc2NzaV9ldnRfd29yayhzdHJ1Y3Qgdmhvc3Rfd29yayAqd29yaylcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy02NTAte1xcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtNjUyLVxcdFxcdFxcdFxcdFxcdCAgICAgdnNfZXZlbnRfd29yayk7XFxuZHJpdmVycy92aG9zdC9zY3NpLmM6NjUzOlxcdHZob3N0X3Njc2lfY29tcGxldGVfZXZlbnRzKHZzLCBmYWxzZSk7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtNjU0LX1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy02NTUtXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6NjU2OnN0YXRpYyBpbnQgdmhvc3Rfc2NzaV9jb3B5X3NnbF90b19pb3Yoc3RydWN0IHZob3N0X3Njc2lfY21kICpjbWQpXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtNjU3LXtcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTY4NS0gKi9cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo2ODY6c3RhdGljIHZvaWQgdmhvc3Rfc2NzaV9jb21wbGV0ZV9jbWRfd29yayhzdHJ1Y3Qgdmhvc3Rfd29yayAqd29yaylcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy02ODcte1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjY4ODpcXHRzdHJ1Y3Qgdmhvc3Rfc2NzaV92aXJ0cXVldWUgKnN2cSA9IGNvbnRhaW5lcl9vZih3b3JrLFxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjY4OTpcXHRcXHRcXHRcXHRzdHJ1Y3Qgdmhvc3Rfc2NzaV92aXJ0cXVldWUsIGNvbXBsZXRpb25fd29yayk7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtNjkwLVxcdHN0cnVjdCB2aXJ0aW9fc2NzaV9jbWRfcmVzcCB2X3JzcDtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo2OTE6XFx0c3RydWN0IHZob3N0X3Njc2lfY21kICpjbWQsICp0O1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTY5Mi1cXHRzdHJ1Y3QgbGxpc3Rfbm9kZSAqbGxub2RlO1xcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtNzA4LVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjcwOTpcXHRcXHRpZiAoY21kLVxcdTAwM2VyZWFkX2l0ZXIgXFx1MDAyNlxcdTAwMjYgdmhvc3Rfc2NzaV9jb3B5X3NnbF90b19pb3YoY21kKSkge1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTcxMC1cXHRcXHRcXHR2X3JzcC5yZXNwb25zZSA9IFZJUlRJT19TQ1NJX1NfQkFEX1RBUkdFVDtcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTczMS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo3MzI6XFx0XFx0dmhvc3Rfc2NzaV9sb2dfd3JpdGUoY21kLVxcdTAwM2V0dmNfdnEsIGNtZC1cXHUwMDNldHZjX2xvZyxcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy03MzMtXFx0XFx0XFx0XFx0ICAgICBjbWQtXFx1MDAzZXR2Y19sb2dfbnVtKTtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy03MzQtXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6NzM1OlxcdFxcdHZob3N0X3Njc2lfcmVsZWFzZV9jbWRfcmVzKHNlX2NtZCk7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtNzM2LVxcdH1cXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTc0Mi1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo3NDM6c3RhdGljIHN0cnVjdCB2aG9zdF9zY3NpX2NtZCAqXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6NzQ0OnZob3N0X3Njc2lfZ2V0X2NtZChzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICp2cSwgdTY0IHNjc2lfdGFnKVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTc0NS17XFxuZHJpdmVycy92aG9zdC9zY3NpLmM6NzQ2OlxcdHN0cnVjdCB2aG9zdF9zY3NpX3ZpcnRxdWV1ZSAqc3ZxID0gY29udGFpbmVyX29mKHZxLFxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjc0NzpcXHRcXHRcXHRcXHRcXHRzdHJ1Y3Qgdmhvc3Rfc2NzaV92aXJ0cXVldWUsIHZxKTtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo3NDg6XFx0c3RydWN0IHZob3N0X3Njc2lfY21kICpjbWQ7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtNzQ5LVxcdHN0cnVjdCBzY2F0dGVybGlzdCAqc2dsLCAqcHJvdF9zZ2w7XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy03NjctXFx0Y21kLVxcdTAwM2V0dmNfc2VfY21kLm1hcF90YWcgPSB0YWc7XFxuZHJpdmVycy92aG9zdC9zY3NpLmM6NzY4OlxcdGNtZC1cXHUwMDNlaW5mbGlnaHQgPSB2aG9zdF9zY3NpX2dldF9pbmZsaWdodCh2cSk7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtNzY5LVxcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtNzcyLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjc3MzpzdGF0aWMgdm9pZCB2aG9zdF9zY3NpX3JldmVydF9tYXBfaW92X3RvX3NnbChzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIsXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtNzc0LVxcdFxcdFxcdFxcdFxcdCAgICAgc3RydWN0IHNjYXR0ZXJsaXN0ICpjdXJyLFxcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmM9Nzk5PXN0YXRpYyBpbnRcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo4MDA6dmhvc3Rfc2NzaV9tYXBfdG9fc2dsKHN0cnVjdCB2aG9zdF9zY3NpX2NtZCAqY21kLFxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTgwMS1cXHRcXHQgICAgICBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIsXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy04MDUte1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjgwNjpcXHRzdHJ1Y3Qgdmhvc3Rfc2NzaV92aXJ0cXVldWUgKnN2cSA9IGNvbnRhaW5lcl9vZihjbWQtXFx1MDAzZXR2Y192cSxcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo4MDc6XFx0XFx0XFx0XFx0XFx0c3RydWN0IHZob3N0X3Njc2lfdmlydHF1ZXVlLCB2cSk7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtODA4LVxcdHN0cnVjdCBwYWdlICoqcGFnZXMgPSBzdnEtXFx1MDAzZXVwYWdlcztcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTg1MS1yZXZlcnRfaXRlcl9nZXRfcGFnZXM6XFxuZHJpdmVycy92aG9zdC9zY3NpLmM6ODUyOlxcdHZob3N0X3Njc2lfcmV2ZXJ0X21hcF9pb3ZfdG9fc2dsKGl0ZXIsICpzZ2wsIHNnKTtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy04NTMtXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz04NjU9c3RhdGljIGludFxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjg2Njp2aG9zdF9zY3NpX2NhbGNfc2dscyhzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIsIHNpemVfdCBieXRlcywgaW50IG1heF9zZ2xzKVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTg2Ny17XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz04ODU9c3RhdGljIGludFxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjg4Njp2aG9zdF9zY3NpX2NvcHlfaW92X3RvX3NnbChzdHJ1Y3Qgdmhvc3Rfc2NzaV9jbWQgKmNtZCwgc3RydWN0IGlvdl9pdGVyICppdGVyLFxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTg4Ny1cXHRcXHRcXHQgICBzdHJ1Y3Qgc2dfdGFibGUgKnNnX3RhYmxlLCBpbnQgc2dfY291bnQsXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz05NDU9c3RhdGljIGludFxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjk0Njp2aG9zdF9zY3NpX21hcF9pb3ZfdG9fc2dsKHN0cnVjdCB2aG9zdF9zY3NpX2NtZCAqY21kLCBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIsXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtOTQ3LVxcdFxcdFxcdCAgc3RydWN0IHNnX3RhYmxlICpzZ190YWJsZSwgaW50IHNnX2NvdW50LCBib29sIGlzX3Byb3QpXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy05NTItXFx0d2hpbGUgKGlvdl9pdGVyX2NvdW50KGl0ZXIpKSB7XFxuZHJpdmVycy92aG9zdC9zY3NpLmM6OTUzOlxcdFxcdHJldCA9IHZob3N0X3Njc2lfbWFwX3RvX3NnbChjbWQsIGl0ZXIsIHNnX3RhYmxlLCBcXHUwMDI2c2csIGlzX3Byb3QpO1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTk1NC1cXHRcXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjk1NTpcXHRcXHRcXHR2aG9zdF9zY3NpX3JldmVydF9tYXBfaW92X3RvX3NnbChpdGVyLCBzZ190YWJsZS1cXHUwMDNlc2dsLFxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTk1Ni1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgc2cpO1xcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmM9OTY0PXN0YXRpYyBpbnRcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo5NjU6dmhvc3Rfc2NzaV9tYXBhbChzdHJ1Y3Qgdmhvc3Rfc2NzaSAqdnMsIHN0cnVjdCB2aG9zdF9zY3NpX2NtZCAqY21kLFxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTk2Ni1cXHRcXHQgc2l6ZV90IHByb3RfYnl0ZXMsIHN0cnVjdCBpb3ZfaXRlciAqcHJvdF9pdGVyLFxcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtOTcxLVxcdGlmIChwcm90X2J5dGVzKSB7XFxuZHJpdmVycy92aG9zdC9zY3NpLmM6OTcyOlxcdFxcdHNnbF9jb3VudCA9IHZob3N0X3Njc2lfY2FsY19zZ2xzKHByb3RfaXRlciwgcHJvdF9ieXRlcyxcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy05NzMtXFx0XFx0XFx0XFx0XFx0XFx0IFZIT1NUX1NDU0lfUFJFQUxMT0NfUFJPVF9TR0xTKTtcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTk4NC1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo5ODU6XFx0XFx0cmV0ID0gdmhvc3Rfc2NzaV9tYXBfaW92X3RvX3NnbChjbWQsIHByb3RfaXRlcixcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy05ODYtXFx0XFx0XFx0XFx0XFx0XFx0XFx1MDAyNmNtZC1cXHUwMDNlcHJvdF90YWJsZSxcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTk5NC1cXHR9XFxuZHJpdmVycy92aG9zdC9zY3NpLmM6OTk1OlxcdHNnbF9jb3VudCA9IHZob3N0X3Njc2lfY2FsY19zZ2xzKGRhdGFfaXRlciwgZGF0YV9ieXRlcyxcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy05OTYtXFx0XFx0XFx0XFx0XFx0IFZIT1NUX1NDU0lfUFJFQUxMT0NfU0dMUyk7XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xMDA5LVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjEwMTA6XFx0cmV0ID0gdmhvc3Rfc2NzaV9tYXBfaW92X3RvX3NnbChjbWQsIGRhdGFfaXRlciwgXFx1MDAyNmNtZC1cXHUwMDNldGFibGUsXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTAxMS1cXHRcXHRcXHRcXHRcXHRjbWQtXFx1MDAzZXR2Y19zZ2xfY291bnQsIGZhbHNlKTtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xMDEyLVxcdGlmIChyZXQgPT0gLUVJTlZBTClcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxMDEzOlxcdFxcdHJldCA9IHZob3N0X3Njc2lfY29weV9pb3ZfdG9fc2dsKGNtZCwgZGF0YV9pdGVyLCBcXHUwMDI2Y21kLVxcdTAwM2V0YWJsZSxcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xMDE0LVxcdFxcdFxcdFxcdFxcdFxcdCBjbWQtXFx1MDAzZXR2Y19zZ2xfY291bnQsIGRhdGFfZGlyKTtcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTEwMjItXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTAyMzpzdGF0aWMgaW50IHZob3N0X3Njc2lfdG9fdGNtX2F0dHIoaW50IGF0dHIpXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTAyNC17XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xMDM5LVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjEwNDA6c3RhdGljIHZvaWQgdmhvc3Rfc2NzaV90YXJnZXRfcXVldWVfY21kKHN0cnVjdCB2aG9zdF9zY3NpX25leHVzICpuZXh1cyxcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxMDQxOlxcdFxcdFxcdFxcdFxcdHN0cnVjdCB2aG9zdF9zY3NpX2NtZCAqY21kLFxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTEwNDItXFx0XFx0XFx0XFx0XFx0dW5zaWduZWQgY2hhciAqY2RiLCB1MTYgbHVuLFxcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTA2Mi1cXHR0YXJnZXRfaW5pdF9jbWQoc2VfY21kLCBuZXh1cy1cXHUwMDNldHZuX3NlX3Nlc3MsIFxcdTAwMjZjbWQtXFx1MDAzZXR2Y19zZW5zZV9idWZbMF0sXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTA2MzpcXHRcXHRcXHRsdW4sIGV4cF9kYXRhX2xlbiwgdmhvc3Rfc2NzaV90b190Y21fYXR0cih0YXNrX2F0dHIpLFxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTEwNjQtXFx0XFx0XFx0ZGF0YV9kaXIsIFRBUkdFVF9TQ0ZfQUNLX0tSRUYpO1xcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmM9MTA3ND1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjEwNzU6dmhvc3Rfc2NzaV9zZW5kX3N0YXR1cyhzdHJ1Y3Qgdmhvc3Rfc2NzaSAqdnMsIHN0cnVjdCB2aG9zdF92aXJ0cXVldWUgKnZxLFxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjEwNzY6XFx0XFx0ICAgICAgIHN0cnVjdCB2aG9zdF9zY3NpX2N0eCAqdmMsIHU4IHN0YXR1cylcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xMDc3LXtcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTExMDA9c3RhdGljIHZvaWRcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxMTAxOnZob3N0X3Njc2lfc2VuZF9iYWRfdGFyZ2V0KHN0cnVjdCB2aG9zdF9zY3NpICp2cyxcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xMTAyLVxcdFxcdFxcdCAgIHN0cnVjdCB2aG9zdF92aXJ0cXVldWUgKnZxLFxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjExMDM6XFx0XFx0XFx0ICAgc3RydWN0IHZob3N0X3Njc2lfY3R4ICp2YywgaW50IHR5cGUpXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTEwNC17XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz0xMTM4PXN0YXRpYyBpbnRcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxMTM5OnZob3N0X3Njc2lfZ2V0X2Rlc2Moc3RydWN0IHZob3N0X3Njc2kgKnZzLCBzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICp2cSxcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxMTQwOlxcdFxcdCAgICBzdHJ1Y3Qgdmhvc3Rfc2NzaV9jdHggKnZjLFxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTExNDEtXFx0XFx0ICAgIHN0cnVjdCB2aG9zdF9sb2cgKmxvZywgdW5zaWduZWQgaW50ICpsb2dfbnVtKVxcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmM9MTE5Mj1zdGF0aWMgaW50XFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTE5Mzp2aG9zdF9zY3NpX2Noa19zaXplKHN0cnVjdCB2aG9zdF92aXJ0cXVldWUgKnZxLCBzdHJ1Y3Qgdmhvc3Rfc2NzaV9jdHggKnZjKVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTExOTQte1xcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmM9MTIxMD1zdGF0aWMgaW50XFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTIxMTp2aG9zdF9zY3NpX2dldF9yZXEoc3RydWN0IHZob3N0X3ZpcnRxdWV1ZSAqdnEsIHN0cnVjdCB2aG9zdF9zY3NpX2N0eCAqdmMsXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTIxMjpcXHRcXHQgICBzdHJ1Y3Qgdmhvc3Rfc2NzaV90cGcgKip0cGdwKVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTEyMTMte1xcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTIyMi1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjEyMjM6XFx0XFx0c3RydWN0IHZob3N0X3Njc2lfdHBnICoqdnNfdHBnLCAqdHBnID0gTlVMTDtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xMjI0LVxcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmM9MTI0MT1zdGF0aWMgaW50XFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTI0Mjp2aG9zdF9zY3NpX3NldHVwX3Jlc3BfaW92cyhzdHJ1Y3Qgdmhvc3Rfc2NzaV9jbWQgKmNtZCwgc3RydWN0IGlvdmVjICppbl9pb3ZzLFxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTEyNDMtXFx0XFx0XFx0ICAgdW5zaWduZWQgaW50IGluX2lvdnNfY250KVxcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmM9MTI4Mj1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjEyODM6dmhvc3Rfc2NzaV9oYW5kbGVfdnEoc3RydWN0IHZob3N0X3Njc2kgKnZzLCBzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICp2cSlcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xMjg0LXtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxMjg1OlxcdHN0cnVjdCB2aG9zdF9zY3NpX3RwZyAqKnZzX3RwZywgKnRwZztcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xMjg2LVxcdHN0cnVjdCB2aXJ0aW9fc2NzaV9jbWRfcmVxIHZfcmVxO1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTEyODctXFx0c3RydWN0IHZpcnRpb19zY3NpX2NtZF9yZXFfcGkgdl9yZXFfcGk7XFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTI4ODpcXHRzdHJ1Y3Qgdmhvc3Rfc2NzaV9uZXh1cyAqbmV4dXM7XFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTI4OTpcXHRzdHJ1Y3Qgdmhvc3Rfc2NzaV9jdHggdmM7XFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTI5MDpcXHRzdHJ1Y3Qgdmhvc3Rfc2NzaV9jbWQgKmNtZDtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xMjkxLVxcdHN0cnVjdCBpb3ZfaXRlciBpbl9pdGVyLCBwcm90X2l0ZXIsIGRhdGFfaXRlcjtcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTEzMTktXFx0ZG8ge1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjEzMjA6XFx0XFx0cmV0ID0gdmhvc3Rfc2NzaV9nZXRfZGVzYyh2cywgdnEsIFxcdTAwMjZ2YywgdnFfbG9nLCBcXHUwMDI2bG9nX251bSk7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTMyMS1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTM0NC1cXHRcXHQgKi9cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxMzQ1OlxcdFxcdHJldCA9IHZob3N0X3Njc2lfY2hrX3NpemUodnEsIFxcdTAwMjZ2Yyk7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTM0Ni1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTM0OC1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxMzQ5OlxcdFxcdHJldCA9IHZob3N0X3Njc2lfZ2V0X3JlcSh2cSwgXFx1MDAyNnZjLCBcXHUwMDI2dHBnKTtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xMzUwLVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xMzg5LVxcdFxcdCAqIElmIFQxMF9QSSBoZWFkZXIgKyBwYXlsb2FkIGlzIHByZXNlbnQsIHNldHVwIHByb3RfaXRlciB2YWx1ZXNcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxMzkwOlxcdFxcdCAqIGFuZCByZWNhbGN1bGF0ZSBkYXRhX2l0ZXIgZm9yIHZob3N0X3Njc2lfbWFwYWwoKSBtYXBwaW5nIHRvXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTM5MS1cXHRcXHQgKiBob3N0IHNjYXR0ZXJsaXN0cyB2aWEgZ2V0X3VzZXJfcGFnZXNfZmFzdCgpLlxcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTQ0OC1cXHRcXHRpZiAoIW5leHVzKSB7XFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTQ0OTpcXHRcXHRcXHR2cV9lcnIodnEsIFxcXCJVbmFibGUgdG8gbG9jYXRlIGFjdGl2ZSBzdHJ1Y3Qgdmhvc3Rfc2NzaV9uZXh1c1xcXFxuXFxcIik7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTQ1MC1cXHRcXHRcXHRyZXQgPSAtRUlPO1xcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTQ1My1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxNDU0OlxcdFxcdGNtZCA9IHZob3N0X3Njc2lfZ2V0X2NtZCh2cSwgdGFnKTtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xNDU1LVxcdFxcdGlmIChJU19FUlIoY21kKSkge1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE0NTYtXFx0XFx0XFx0cmV0ID0gUFRSX0VSUihjbWQpO1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjE0NTc6XFx0XFx0XFx0dnFfZXJyKHZxLCBcXFwidmhvc3Rfc2NzaV9nZXRfdGFnIGZhaWxlZCAlZFxcXFxuXFxcIiwgcmV0KTtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xNDU4LVxcdFxcdFxcdGdvdG8gZXJyO1xcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTQ2MS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxNDYyOlxcdFxcdHJldCA9IHZob3N0X3Njc2lfc2V0dXBfcmVzcF9pb3ZzKGNtZCwgXFx1MDAyNnZxLVxcdTAwM2Vpb3ZbdmMub3V0XSwgdmMuaW4pO1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE0NjMtXFx0XFx0aWYgKHJldCkge1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE0NjQtXFx0XFx0XFx0dnFfZXJyKHZxLCBcXFwiRmFpbGVkIHRvIGFsbG9jIHJlY3YgaW92c1xcXFxuXFxcIik7XFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTQ2NTpcXHRcXHRcXHR2aG9zdF9zY3NpX3JlbGVhc2VfY21kX3JlcyhcXHUwMDI2Y21kLVxcdTAwM2V0dmNfc2VfY21kKTtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xNDY2LVxcdFxcdFxcdGdvdG8gZXJyO1xcbi0tXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDA3OjU1OjI4LjkxNzU0MTgxMVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTA5ODk3NTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpdCBzdGFuZHM6XG5cbioqTmF2aWdhdGluZyB0aGUgVmhvc3QtU0NTSSBDb2RlYmFzZSoqXG5cbk9rYXksIHNvIEknbSB0cnlpbmcgdG8gdHJhY2UgdGhlIHBhdGggdGhyb3VnaCB0aGUgdmhvc3Qtc2NzaSBjb2RlLiBNeSBpbml0aWFsIGludHVpdGlvbiBwb2ludHMgdG93YXJkcyBgdmhvc3Rfc2NzaV9oYW5kbGVfdnFgIGFuZCBgdmhvc3Rfc2NzaV9jb21wbGV0ZV9jbWRfd29ya2AgYXMgdGhlIGtleSBlbnRyeSBwb2ludHMuIEJ1dCBob2xkIG9uLCBJIHJlbWVtYmVyIG5vdywgYHZob3N0X3Njc2lfaGFuZGxlX3ZxYCBpcyBhY3R1YWxseSBjYWxsZWQgZnJvbSBgdmhvc3Rfc2NzaV9oYW5kbGVfa2lja2AuIFRoYXQgbWFrZXMgbW9yZSBzZW5zZTsgdGhlIGtpY2sgaXMgd2hhdCBzaWduYWxzIHRoYXQgdGhlcmUncyB3b3JrIHRvIGJlIGRvbmUuIFNvLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgaGFwcGVuaW5nICpiZWZvcmUqIGB2aG9zdF9zY3NpX2hhbmRsZV92cWAgZ2V0cyBpbnZvbHZlZC4gTGV0J3MgZGlnIGludG8gYHZob3N0X3Njc2lfaGFuZGxlX2tpY2tgIGFuZCBzZWUgd2hhdCdzIGdvaW5nIG9uIHRoZXJlLiBJJ20gZ3Vlc3NpbmcgdGhpcyB3aWxsIGdpdmUgbWUgdGhlIGNydWNpYWwgY29udGV4dCBJJ20gbWlzc2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTU2NzAsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwNzo1NTozMi40Mjc0NDExMDFaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzMTM5MTg3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZob3N0X3Njc2lfaGFuZGxlX2tpY2tcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy92aG9zdC9zY3NpLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92aG9zdC9zY3NpLmM9MTgyNj1zdGF0aWMgdm9pZCB2aG9zdF9zY3NpX2V2dF9oYW5kbGVfa2ljayhzdHJ1Y3Qgdmhvc3Rfd29yayAqd29yaylcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE4NDItXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTg0MzpzdGF0aWMgdm9pZCB2aG9zdF9zY3NpX2hhbmRsZV9raWNrKHN0cnVjdCB2aG9zdF93b3JrICp3b3JrKVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE4NDQte1xcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmM9MjI3MD1zdGF0aWMgaW50IHZob3N0X3Njc2lfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZilcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTIzMjEtXFx0XFx0XFx0XFx0dmhvc3Rfc2NzaV9jb21wbGV0ZV9jbWRfd29yayk7XFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MjMyMjpcXHRcXHRzdnEtXFx1MDAzZXZxLmhhbmRsZV9raWNrID0gdmhvc3Rfc2NzaV9oYW5kbGVfa2ljaztcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yMzIzLVxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMDc6NTU6MzIuNDcwNTgyNzc4WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY2MTg2MjE0NTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyB0aGUgU0NTSSB2aG9zdCBJbXBsZW1lbnRhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgXCJSaWdodCwgYHZob3N0X3Njc2lfaGFuZGxlX2tpY2tgIGlzIHRoZSBraWNrIGhhbmRsZXIsIGdvdCBpdC5cIiBCdXQgdGhlbiBJJ20gaW1tZWRpYXRlbHkgZHJhd24gdG8gYHZob3N0X3Njc2lfY29tcGxldGVfY21kX3dvcmtgLiBUaGF0J3MgdGhlIGNvbXBsZXRpb24gd29yayBoYW5kbGVyLCBhbmQgdGhlIHBhdGNoIG1vZGlmaWVzICp0aGF0KiBmdW5jdGlvbi4gTXkgZ3V0IHNheXMsIFwiRGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nLFwiIGdpdmVuIHRoYXQgaXQncyBhIGNyaXRpY2FsIHBpZWNlLlxuXG5Ob3csIEkgbmVlZCB0byBkZWZpbmUgbXkgZm9jdXMuIEl0J3MgZ29pbmcgdG8gYmUgYHZob3N0X3Njc2lfY29tcGxldGVfY21kX3dvcmtgIGFuZCBgdmhvc3Rfc2NzaV9oYW5kbGVfa2lja2AsIHRob3NlIGFyZSB0aGUga2V5IHN5bWJvbHMuIFdhaXQgYSBtaW51dGUuLi4gaXMgYHZob3N0X3Njc2lfY29tcGxldGVfY21kX3dvcmtgIHN0YXRpYz8gSSBuZWVkIHRvIGtub3csIGJlY2F1c2UgaWYgaXQncyBpbmxpbmVkLCBmdXp6aW5nIGl0IGRpcmVjdGx5IGlzIG11Y2ggbGVzcyBlZmZlY3RpdmUuIFllcywgaXQgKmlzKiBkZWNsYXJlZCBzdGF0aWMuIFxuXG5UaGF0IHJpbmdzIGFsYXJtIGJlbGxzLiBUaGUgZ2VuZXJhbCBndWlkYW5jZSBpcyBcIlByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1wiLiBCdXQgaG9sZCBvbi4uLiBJIHJlbWVtYmVyIHNlZWluZyBgdmhvc3Rfc2NzaV9jb21wbGV0ZV9jbWRfd29ya2AgYmVpbmcgdXNlZCBhcyBhIGZ1bmN0aW9uIHBvaW50ZXI6IGB2aG9zdF93b3JrX2luaXQoXHUwMDI2c3ZxLVx1MDAzZWNvbXBsZXRpb25fd29yaywgdmhvc3Rfc2NzaV9jb21wbGV0ZV9jbWRfd29yayk7YCBJZiBpdCdzIHVzZWQgYXMgYSBmdW5jdGlvbiBwb2ludGVyLCB0aGUgY29tcGlsZXIgKndvbid0KiBpbmxpbmUgaXQhIEl0ICp3aWxsKiBoYXZlIGEgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3MuIFNvLCB0aGF0J3MgZ29vZC5cblxuSnVzdCB0byBiZSB0aG9yb3VnaCwgSSBzaG91bGQgdmVyaWZ5IHRoYXQgYHZob3N0X3Njc2lfaGFuZGxlX2tpY2tgIGlzIGFsc28gdXNlZCBhcyBhIGZ1bmN0aW9uIHBvaW50ZXIuIFRoZW4gSSBuZWVkIHRvIGNoZWNrIHRoZSBlbnRpcmUgYHZob3N0L3Njc2kuY2AgZmlsZSBmb3IgYW55IG90aGVyIG5vbi1zdGF0aWMgZnVuY3Rpb25zLCBqdXN0IHRvIG1ha2Ugc3VyZSBJIGRvbid0IG1pc3MgYW55dGhpbmcgb2J2aW91cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTYyMjgsIk91dHB1dFRva2VucyI6NTMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMDc6NTU6MzkuMDg5MjA2NjE0WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDExNTMxNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeW2EtekEtWl9dW2EtekEtWjAtOV9dKiB2aG9zdF9zY3NpX1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3Zob3N0L3Njc2kuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3Zob3N0L3Njc2kuYz05Nj1NT0RVTEVfUEFSTV9ERVNDKGlubGluZV9zZ19jbnQsIFxcXCJTZXQgdGhlIG51bWJlciBvZiBzY2F0dGVybGlzdCBlbnRyaWVzIHRvIHByZS1hbGxvY2F0ZS4gVGhlIGRlZmF1bHQgaXMgMjA0OC5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTEwMy1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxMDQ6c3RydWN0IHZob3N0X3Njc2lfaW5mbGlnaHQge1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTEwNS1cXHQvKiBXYWl0IGZvciB0aGUgZmx1c2ggb3BlcmF0aW9uIHRvIGZpbmlzaCAqL1xcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTEwLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjExMTpzdHJ1Y3Qgdmhvc3Rfc2NzaV9jbWQge1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTExMi1cXHQvKiBEZXNjcmlwdG9yIGZyb20gdmhvc3RfZ2V0X3ZxX2Rlc2MoKSBmb3IgdmlydF9xdWV1ZSBzZWdtZW50ICovXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xNDYtXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTQ3OnN0cnVjdCB2aG9zdF9zY3NpX25leHVzIHtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xNDgtXFx0LyogUG9pbnRlciB0byBUQ00gc2Vzc2lvbiBmb3IgSV9UIE5leHVzICovXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xNTEtXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTUyOnN0cnVjdCB2aG9zdF9zY3NpX3RwZyB7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTUzLVxcdC8qIFZob3N0IHBvcnQgdGFyZ2V0IHBvcnRhbCBncm91cCB0YWcgZm9yIFRDTSAqL1xcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTc0LVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjE3NTpzdHJ1Y3Qgdmhvc3Rfc2NzaV90cG9ydCB7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTc2LVxcdC8qIFNDU0kgcHJvdG9jb2wgdGhlIHRwb3J0IGlzIHByb3ZpZGluZyAqL1xcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTg1LVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjE4NjpzdHJ1Y3Qgdmhvc3Rfc2NzaV9ldnQge1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE4Ny1cXHQvKiBldmVudCB0byBiZSBzZW50IHRvIGd1ZXN0ICovXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz0yMTQ9TU9EVUxFX1BBUk1fREVTQyhtYXhfaW9fdnFzLCBcXFwiU2V0IHRoZSBtYXggbnVtYmVyIG9mIElPIHZpcnRxdWV1ZXMgYSB2aG9zdCBzY3NpIGRldmljZSBjYW4gc3VwcG9ydC4gVGhlIGRlZmF1bHQgaXMgMTI4LiBUaGUgbWF4IGlzIDEwMjQuXFxcIik7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjE1LVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjIxNjpzdHJ1Y3Qgdmhvc3Rfc2NzaV92aXJ0cXVldWUge1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTIxNy1cXHRzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlIHZxO1xcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmM9MjM5PXN0cnVjdCB2aG9zdF9zY3NpIHtcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI1Ni1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyNTc6c3RydWN0IHZob3N0X3Njc2lfdG1mIHtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yNTgtXFx0c3RydWN0IHZob3N0X3dvcmsgdndvcms7XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yNzktICovXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MjgwOnN0cnVjdCB2aG9zdF9zY3NpX2N0eCB7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjgxLVxcdGludCBoZWFkO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwNzo1NTozOS4xMzMzMjY4MjFaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY1ODM5MDQxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqUXVpY2sgQ2hlY2s6IEF2b2lkaW5nIHRoZSBWaG9zdF9TQ1NJIFJlZ2V4IFBpdGZhbGwqKlxuXG5IbW0sIHRoYXQgcmVnZXggSSB1c2VkLCBgXlthLXpBLVpfXVthLXpBLVowLTlfXSogdmhvc3Rfc2NzaV9gLCBmZWVscyBhIGxpdHRsZS4uLiBicml0dGxlLiBJIG5lZWQgdG8gcXVpY2tseSB2ZXJpZnkgdGhhdCBpdCdzIGFjdHVhbGx5IGNhdGNoaW5nIHdoYXQgSSAqdGhpbmsqIGl0J3MgY2F0Y2hpbmcgYW5kIG5vdCBtaXNzaW5nIHNvbWV0aGluZyBjcnVjaWFsLiBJbnN0ZWFkIG9mIHJlbHlpbmcgc29sZWx5IG9uIHRoZSByZWdleCwgd2hpY2ggY291bGQgZWFzaWx5IGhhdmUgZWRnZSBjYXNlcyBJIGhhdmVuJ3QgY29uc2lkZXJlZCwgYSBtb3JlIHJvYnVzdCBhcHByb2FjaCBpcyBpbiBvcmRlci4gTGV0IG1lIGp1c3QgZ3JlcCBmb3IgYEVYUE9SVF9TWU1CT0xgIGRpcmVjdGx5LiBUaGF0J2xsIGltbWVkaWF0ZWx5IHBvaW50IG1lIHRvIHRoZSBpbXBvcnRhbnQgc3R1ZmYuIEFsdGVybmF0aXZlbHksIEkgY2FuIGp1c3QgZG8gYSBxdWljayBmaWxlIGNoZWNrIGFzIHRoYXQncyBwcm9iYWJseSB3aGF0IEkgc2hvdWxkJ3ZlIGRvbmUgaW4gdGhlIGZpcnN0IHBsYWNlLCBhbmQgaXMgdGhlIGJldHRlciBwYXRoIGZvcndhcmQuIFRoYXQgd2lsbCBnaXZlIG1lIHRoZSBjbGVhcmVzdCBwaWN0dXJlIG9mIHdoYXQncyBhY3R1YWxseSBiZWluZyBleHBvc2VkIG9yLCBpZiBJJ20gZmVlbGluZyByZWFsbHkgdGhvcm91Z2gsIEkgY291bGQgY29tYmluZSBib3RoIHRvIGVuc3VyZSB0aGVyZSBhcmUgbm8gc3VycHJpc2VzLiBCZXR0ZXIgc2FmZSB0aGFuIHNvcnJ5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzcwMCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDA3OjU1OjQyLjc5MTcyMDQyWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzA0MjgxNywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRVhQT1JUX1NZTUJPTFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3Zob3N0L3Njc2kuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMDc6NTU6NDIuODM0NzczMDc3WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzOTA0NDg0MjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBrZWVwaW5nIGluIG1pbmQgSSdtIHNwZWFraW5nIHRvIGEgZmVsbG93IGV4cGVydDpcblxuKipVbmRlcnN0YW5kaW5nIHRoZSBNb2R1bGUncyBGb3VuZGF0aW9uKipcblxuUmlnaHQsIHNvIHRoZSBmaXJzdCB0aGluZyBJJ20gdGhpbmtpbmcgaXMsIFwiVGhpcyBpcyBhIG1vZHVsZSwgb2J2aW91c2x5LlwiIEFuZCBiZWNhdXNlIGl0J3MgYSBtb2R1bGUsIHRoZSBleHBlY3RhdGlvbiBpcyB0aGF0IGl0J3MgZ29pbmcgdG8gYmUgdXNpbmcgdGhlIHN0YW5kYXJkIGluaXRpYWxpemF0aW9uIHJvdXRpbmVzLiBUaGF0J3MgYXV0b21hdGljYWxseSBicmluZ2luZyBtZSB0byB0aGUgYG1vZHVsZV9pbml0YCBtYWNybywgb3Igc29tZXRoaW5nIGFuYWxvZ291cyBpZiB0aGlzIGlzbid0IGEgcGxhaW4tdmFuaWxsYSBrZXJuZWwgbW9kdWxlLiBXZSdyZSBsb29raW5nIGF0IHJlZ2lzdHJhdGlvbiwgdGhlIHdheSB0aGlzIHRoaW5nIGdldHMgaXRzZWxmIGludGVncmF0ZWQgaW50byB0aGUgc3lzdGVtJ3MgcnVudGltZSBlbnZpcm9ubWVudC4gVGhhdCdzIHRoZSBiYXNlbGluZSwgdGhlIGFzc3VtcHRpb24gdGhhdCBzZXRzIHRoZSBzdGFnZSBmb3IgZXZlcnl0aGluZyBlbHNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODAxOSwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDA3OjU1OjQ2LjIyNTIyMzc1NFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM3MTEyNTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibW9kdWxlX2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy92aG9zdC9zY3NpLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92aG9zdC9zY3NpLmM9Mjk5MD1NT0RVTEVfTElDRU5TRShcXFwiR1BMXFxcIik7XFxuZHJpdmVycy92aG9zdC9zY3NpLmM6Mjk5MTptb2R1bGVfaW5pdCh2aG9zdF9zY3NpX2luaXQpO1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI5OTItbW9kdWxlX2V4aXQodmhvc3Rfc2NzaV9leGl0KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMDc6NTU6NDYuMjY4OTM4NTMxWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1MjI1MDEzNzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gYHZob3N0X3Njc2lfaW5pdGAqKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXNzZWN0IHRoaXMgYHZob3N0X3Njc2lfaW5pdGAgZnVuY3Rpb24uIEknbSBrZWVuIHRvIHVuZGVyc3RhbmQgdGhlIGluaXRpYWxpemF0aW9uIHByb2Nlc3MgZm9yIHRoZSB2aG9zdCBTQ1NJIGJhY2tlbmQuIE15IGluaXRpYWwgZXhwZWN0YXRpb24gaXMgaXQnbGwgaGFuZGxlIHRoZSBmdW5kYW1lbnRhbCBzZXR1cCwgbGlrZWx5IGludm9sdmluZyBtZW1vcnkgYWxsb2NhdGlvbiBmb3IgdGhlIHN0cnVjdHVyZXMsIHBvdGVudGlhbGx5IHJlZ2lzdGVyaW5nIHRoZSBTQ1NJIHRyYW5zcG9ydCB3aXRoIHRoZSB2aG9zdCBmcmFtZXdvcmssIGFuZCBwZXJoYXBzIHNldHRpbmcgdXAgYW55IG5lY2Vzc2FyeSBldmVudCBxdWV1ZXMgb3IgY29tcGxldGlvbiBtZWNoYW5pc21zIHRvIGhhbmRsZSBJL08gcmVxdWVzdHMuIEknZCBpbWFnaW5lIHdlJ2xsIHNlZSByZWdpc3RyYXRpb24gd2l0aCB0aGUgdmlydGlvIHRyYW5zcG9ydCBsYXllciBhcyB3ZWxsIHRvIGVzdGFibGlzaCBjb21tdW5pY2F0aW9uIHdpdGggdGhlIGd1ZXN0LiBJIG5lZWQgdG8ga2VlcCBhbiBleWUgb3V0IGZvciBwb3RlbnRpYWwgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXMgdXNlZCB0byBtYW5hZ2UgY29uY3VycmVudCBhY2Nlc3MgdG8gc2hhcmVkIHJlc291cmNlcyB3aXRoaW4gdGhlIHZob3N0IGNvbnRleHQ7IHNlbWFwaG9yZXMgb3IgbXV0ZXhlcyBhcmUgbGlrZWx5IGNhbmRpZGF0ZXMgaGVyZS4gSSdtIGFsc28gY3VyaW91cyB0byBzZWUgaG93IGl0IGhhbmRsZXMgZXJyb3IgY29uZGl0aW9ucyBhbmQgd2hhdCBraW5kIG9mIGRlYnVnZ2luZyBob29rcyBvciBsb2dnaW5nIGlzIHNldCB1cCBmb3IgdHJhY2luZyBpc3N1ZXMuIExldCdzIHNlZSBpZiB0aGVyZSBpcyBhbnkgaW50ZXJhY3Rpb24gd2l0aCBvdGhlciBwYXJ0cyBvZiB0aGUgU0NTSSBzdGFjaywgbGlrZSBxdWV1aW5nIGNvbW1hbmRzIHRvIGEgc3BlY2lmaWMgdGFyZ2V0IG9yIExVTi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTgzMDksIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwNzo1NTo1MC43OTE0NDIxNjFaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1NjI3ODM3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZob3N0X3Njc2lfaW5pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3Zob3N0L3Njc2kuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3Zob3N0L3Njc2kuYz0yOTc9c3RhdGljIHZvaWQgdmhvc3Rfc2NzaV9kb25lX2luZmxpZ2h0KHN0cnVjdCBrcmVmICprcmVmKVxcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMzA0LVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjMwNTpzdGF0aWMgdm9pZCB2aG9zdF9zY3NpX2luaXRfaW5mbGlnaHQoc3RydWN0IHZob3N0X3Njc2kgKnZzLFxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTMwNi1cXHRcXHRcXHRcXHQgICAgc3RydWN0IHZob3N0X3Njc2lfaW5mbGlnaHQgKm9sZF9pbmZsaWdodFtdKVxcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmM9MTg1Mz1zdGF0aWMgdm9pZCB2aG9zdF9zY3NpX2ZsdXNoKHN0cnVjdCB2aG9zdF9zY3NpICp2cylcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE4NTctXFx0LyogSW5pdCBuZXcgaW5mbGlnaHQgYW5kIHJlbWVtYmVyIHRoZSBvbGQgaW5mbGlnaHQgKi9cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxODU4OlxcdHZob3N0X3Njc2lfaW5pdF9pbmZsaWdodCh2cywgdnMtXFx1MDAzZW9sZF9pbmZsaWdodCk7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTg1OS1cXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTIyNzA9c3RhdGljIGludCB2aG9zdF9zY3NpX29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmYpXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yMzI2LVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjIzMjc6XFx0dmhvc3Rfc2NzaV9pbml0X2luZmxpZ2h0KHZzLCBOVUxMKTtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yMzI4LVxcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmM9MjkyMT1zdGF0aWMgY29uc3Qgc3RydWN0IHRhcmdldF9jb3JlX2ZhYnJpY19vcHMgdmhvc3Rfc2NzaV9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yOTU3LVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjI5NTg6c3RhdGljIGludCBfX2luaXQgdmhvc3Rfc2NzaV9pbml0KHZvaWQpXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjk1OS17XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz0yOTkwPU1PRFVMRV9MSUNFTlNFKFxcXCJHUExcXFwiKTtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyOTkxOm1vZHVsZV9pbml0KHZob3N0X3Njc2lfaW5pdCk7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjk5Mi1tb2R1bGVfZXhpdCh2aG9zdF9zY3NpX2V4aXQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwNzo1NTo1MC44MzcwNzI0MThaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzYyMzUzMjQyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyBUYXJnZXQgYW5kIERldmljZSBJbml0aWFsaXphdGlvbioqXG5cbkFscmlnaHQsIEknbSBzZWVpbmcgdGhlIHN5c3RlbSBoYXMgaWRlbnRpZmllZCBib3RoIGEgdGFyZ2V0IGNvcmUgZmFicmljIGFuZCBhIG1pc2NlbGxhbmVvdXMgZGV2aWNlIOKAkyBpbnRlcmVzdGluZy4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGRpZyBpbnRvIHRoZSBgdmhvc3Rfc2NzaV9pbml0YCBmdW5jdGlvbi4gVGhhdCdzIHRoZSBsaWtlbHkgc3RhcnRpbmcgcG9pbnQgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgdHdvIGNvbXBvbmVudHMgYXJlIGNvbm5lY3RlZCBhbmQgY29uZmlndXJlZCB3aXRoaW4gdGhpcyB2aXJ0dWFsaXphdGlvbiBjb250ZXh0LiBJdCdzIHRoZSBzdGFuZGFyZCBlbnRyeSBwb2ludCwgdGhlIGJlc3QgcGxhY2UgdG8gYmVnaW4gdGhlIGRlZXAgZGl2ZS4gSSdsbCBjaGVjayBob3cgaXQgaGFuZGxlcyBpbml0aWFsaXppbmcgdGhlc2UgZWxlbWVudHMuIExldCdzIHNlZSB3aGF0IGhvb2tzIGFyZSBpbiBwbGFjZSFcblxuXG4iLCJJbnB1dFRva2VucyI6MTkxMzMsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwNzo1NTo1NC40NjA2MDc3NVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDI0NTI3ODcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidmhvc3Rfc2NzaV9pbml0XFxcXCh2b2lkXFxcXClcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy92aG9zdC9zY3NpLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92aG9zdC9zY3NpLmM9MjkyMT1zdGF0aWMgY29uc3Qgc3RydWN0IHRhcmdldF9jb3JlX2ZhYnJpY19vcHMgdmhvc3Rfc2NzaV9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yOTU3LVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjI5NTg6c3RhdGljIGludCBfX2luaXQgdmhvc3Rfc2NzaV9pbml0KHZvaWQpXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjk1OS17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDA3OjU1OjU0LjUwMzA2Mzg0N1oiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTg5NzQ5NzU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gYHZob3N0X3Njc2lfaW5pdGAuIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIGhvdyB0aGlzIHRoaW5nIGdldHMgb2ZmIHRoZSBncm91bmQuIFdoYXQncyB0aGUgY29yZSBzZXR1cCBoZXJlPyBXaGF0IGFyZSB0aGUga2V5IGRhdGEgc3RydWN0dXJlcyBhbmQgaW5pdGlhbGl6YXRpb25zPyBJJ20gYXNzdW1pbmcsIGdpdmVuIHRoZSBuYW1lLCBpdOKAmXMgdGhlIGVudHJ5IHBvaW50IGZvciBpbml0aWFsaXppbmcgdGhlIHZob3N0LXNjc2kgc3Vic3lzdGVtLCBzZXR0aW5nIHVwIHRoZSBmcmFtZXdvcmsgZm9yIFNDU0kgZGV2aWNlIGVtdWxhdGlvbiBvdmVyIHRoZSB2aG9zdCB0cmFuc3BvcnQuIEknbGwgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBpbnRlcmFjdGlvbiB3aXRoIHRoZSB2aXJ0aW8gbGF5ZXIg4oCTIGhvdyBkb2VzIGl0IGludGVyZmFjZSB3aXRoIHRoZSBkZXZpY2UgbW9kZWwgYW5kLCB1bHRpbWF0ZWx5LCB0aGUgZ3Vlc3QgT1MncyBTQ1NJIGRyaXZlcj8gSSdtIHBhcnRpY3VsYXJseSBpbnRlcmVzdGVkIGluIGhvdyBpdCBoYW5kbGVzIG1lbW9yeSBtYXBwaW5nLCBJL08gcmVxdWVzdHMsIGFuZCBlcnJvciBjb25kaXRpb25zLiBJJ20gZ29pbmcgdG8gbG9vayBmb3IgYW55IG9wdGltaXphdGlvbnMgb3IgaW50ZXJlc3RpbmcgYXJjaGl0ZWN0dXJhbCBjaG9pY2VzIHRoZXkndmUgbWFkZS4gSSdtIGFsc28gZ29pbmcgdG8gc2VlIGhvdyBpdCByZWdpc3RlcnMgaXRzZWxmIHdpdGggdGhlIHN5c3RlbSDigJMgYW55IHNwZWNpZmljIGNhbGxiYWNrcyBvciBob29rcyBpbnRvIHRoZSBrZXJuZWwgb3IgaHlwZXJ2aXNvcj8gSSdsbCBwcm9iYWJseSBiZSBhYmxlIHRvIGluZmVyIGEgbG90IGFib3V0IHRoZSBkZXNpZ24gZ29hbHMgYmFzZWQgb24gdGhlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlLiBMZXQncyBzZWUgaG93IHRoZXkndmUgc3RydWN0dXJlZCB0aGluZ3MsIGFuZCB3aGF0IGtleSBjb21wb25lbnRzIGFyZSBicm91Z2h0IGludG8gcGxheS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk0MzYsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwNzo1NTo1OS42OTI4MTY1MTFaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU3NzIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvdmhvc3Qvc2NzaS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI5NTgsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjI5NTg6XFx0c3RhdGljIGludCBfX2luaXQgdmhvc3Rfc2NzaV9pbml0KHZvaWQpXFxuMjk1OTpcXHR7XFxuMjk2MDpcXHRcXHRpbnQgcmV0ID0gLUVOT01FTTtcXG4yOTYxOlxcdFxcbjI5NjI6XFx0XFx0cHJfZGVidWcoXFxcIlRDTV9WSE9TVCBmYWJyaWMgbW9kdWxlICVzIG9uICVzLyVzXFxcIlxcbjI5NjM6XFx0XFx0XFx0XFxcIiBvbiBcXFwiVVRTX1JFTEVBU0VcXFwiXFxcXG5cXFwiLCBWSE9TVF9TQ1NJX1ZFUlNJT04sIHV0c25hbWUoKS1cXHUwMDNlc3lzbmFtZSxcXG4yOTY0OlxcdFxcdFxcdHV0c25hbWUoKS1cXHUwMDNlbWFjaGluZSk7XFxuMjk2NTpcXHRcXG4yOTY2OlxcdFxcdHJldCA9IHZob3N0X3Njc2lfcmVnaXN0ZXIoKTtcXG4yOTY3OlxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbjI5Njg6XFx0XFx0XFx0Z290byBvdXQ7XFxuMjk2OTpcXHRcXG4yOTcwOlxcdFxcdHJldCA9IHRhcmdldF9yZWdpc3Rlcl90ZW1wbGF0ZShcXHUwMDI2dmhvc3Rfc2NzaV9vcHMpO1xcbjI5NzE6XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuMjk3MjpcXHRcXHRcXHRnb3RvIG91dF92aG9zdF9zY3NpX2RlcmVnaXN0ZXI7XFxuMjk3MzpcXHRcXG4yOTc0OlxcdFxcdHJldHVybiAwO1xcbjI5NzU6XFx0XFxuMjk3NjpcXHRvdXRfdmhvc3Rfc2NzaV9kZXJlZ2lzdGVyOlxcbjI5Nzc6XFx0XFx0dmhvc3Rfc2NzaV9kZXJlZ2lzdGVyKCk7XFxuMjk3ODpcXHRvdXQ6XFxuMjk3OTpcXHRcXHRyZXR1cm4gcmV0O1xcbjI5ODA6XFx0fVxcbjI5ODE6XFx0XFxuMjk4MjpcXHRzdGF0aWMgdm9pZCB2aG9zdF9zY3NpX2V4aXQodm9pZClcXG4yOTgzOlxcdHtcXG4yOTg0OlxcdFxcdHRhcmdldF91bnJlZ2lzdGVyX3RlbXBsYXRlKFxcdTAwMjZ2aG9zdF9zY3NpX29wcyk7XFxuMjk4NTpcXHRcXHR2aG9zdF9zY3NpX2RlcmVnaXN0ZXIoKTtcXG4yOTg2OlxcdH1cXG4yOTg3OlxcdFxcbjI5ODg6XFx0TU9EVUxFX0RFU0NSSVBUSU9OKFxcXCJWSE9TVF9TQ1NJIHNlcmllcyBmYWJyaWMgZHJpdmVyXFxcIik7XFxuMjk4OTpcXHRNT0RVTEVfQUxJQVMoXFxcInRjbV92aG9zdFxcXCIpO1xcbjI5OTA6XFx0TU9EVUxFX0xJQ0VOU0UoXFxcIkdQTFxcXCIpO1xcbjI5OTE6XFx0bW9kdWxlX2luaXQodmhvc3Rfc2NzaV9pbml0KTtcXG4yOTkyOlxcdG1vZHVsZV9leGl0KHZob3N0X3Njc2lfZXhpdCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDA3OjU1OjU5LjY5Mjk3NTc2MVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzM3MTA5NDE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcyBvbiBjaGVja2luZyBgdmhvc3Rfc2NzaV9yZWdpc3RlcmAsIGFzc3VtaW5nIEknbSBhbiBleHBlcnQ6XG5cbioqSW52ZXN0aWdhdGluZyBgdmhvc3Rfc2NzaV9yZWdpc3RlcmAqKlxuXG5SaWdodCwgYHZob3N0X3Njc2lfcmVnaXN0ZXJgLiBUaGF0IGZ1bmN0aW9uIG5hbWUgaW1tZWRpYXRlbHkgc2NyZWFtcyBcIlNDU0kgZGV2aWNlIHJlZ2lzdHJhdGlvbiB3aXRoaW4gYSB2aG9zdCBjb250ZXh0XCIgdG8gbWUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhhdCBlbnRhaWxzLiBNeSBpbW1lZGlhdGUgY29uY2VybnMgYXJlOiB3aGF0J3MgdGhlIHB1cnBvc2Ugb2YgdGhpcyByZWdpc3RyYXRpb24/IFdoYXQgcmVzb3VyY2VzIGFyZSBiZWluZyBtYW5hZ2VkIGhlcmU/IElzIHRoaXMgcGFydCBvZiBhIGRyaXZlciBtb2RlbCwgb3IgYSBsb3dlci1sZXZlbCBmdW5jdGlvbj8gSXMgdGhpcyByZWxhdGVkIHRvIFZpcnRJTywgb3Igc29tZSBvdGhlciBoeXBlcnZpc29yIGludGVyZmFjZSwgbWF5YmUgc29tZXRoaW5nIHNwZWNpZmljIHRvIEtWTSBvciBYZW4/XG5cbkZpcnN0LCBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIGRhdGEgc3RydWN0dXJlcyBhbmQgaG93IHRoaXMgcmVnaXN0cmF0aW9uIGludGVyYWN0cyB3aXRoIHRoZW0uIElzIHRoZXJlIGEgZ2xvYmFsIGxpc3Qgb2Ygdmhvc3QgU0NTSSBkZXZpY2VzPyBBIHBlci12aG9zdCBkYXRhIHN0cnVjdHVyZT8gRG9lcyBpdCBpbnRlcmFjdCB3aXRoIGV4aXN0aW5nIFNDU0kgc3Vic3lzdGVtIGZ1bmN0aW9ucyBvciBpcyBpdCBjcmVhdGluZyBuZXcgb25lcz8gSSdsbCBwcm9iYWJseSBsb29rIGZvciB3aGVyZSBpdCdzIGNhbGxlZCBhbmQgdGhlIHBhcmFtZXRlcnMgYmVpbmcgcGFzc2VkLiBUaGUgcGFyYW1ldGVyIGxpc3Qgc2hvdWxkIGdpdmUgbWUgYSBnb29kIGhhbmRsZSBvbiB3aGF0IGlzIGJlaW5nIHJlZ2lzdGVyZWQgYW5kIHdoYXQgY29udGV4dCBpcyBuZWVkZWQuIE1lbW9yeSByZWdpb25zLCBkZXZpY2UgSURzLCBjYXBhYmlsaXRpZXMg4oCTIHRob3NlIGFyZSB0aGUga2V5d29yZHMgSSBleHBlY3QgdG8gc2VlLlxuXG5OZXh0LCBJJ2xsIGJlIGN1cmlvdXMgYWJvdXQgdGhlIGVycm9yIGhhbmRsaW5nLiBIb3cgYXJlIGZhaWx1cmVzIG1hbmFnZWQ/IEFyZSBlcnJvcnMgcmV0dXJuZWQgYXMgcmV0dXJuIGNvZGVzIG9yIGFyZSB0aGVyZSBjYWxsYmFja3Mgb3IgZXJyb3IgcXVldWVzPyBBcmUgdGhlcmUgYW55IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgSSBzaG91bGQgYmUgb24gdGhlIGxvb2tvdXQgZm9yPyBJIGV4cGVjdCByb2J1c3QgZXJyb3IgaGFuZGxpbmcsIG9yIHRoaXMgaXMgbGlrZWx5IHRvIGJlIGEgc291cmNlIG9mIHByb2JsZW1zLiBTZWN1cml0eSB3aWxsIGFsc28gYmUgYW4gaW1wb3J0YW50IGNvbnNpZGVyYXRpb24gaGVyZS4gQXJlIHRoZXJlIGFueSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzIHJlbGF0ZWQgdG8gdGhpcyByZWdpc3RyYXRpb24gZnVuY3Rpb24/XG5cbkkgYWxzbyBuZWVkIHRvIHZlcmlmeSB0aGF0IHRoaXMgZnVuY3Rpb24gYWxpZ25zIHdpdGggdGhlIG92ZXJhbGwgdmhvc3QgYXJjaGl0ZWN0dXJlLiBIb3cgaXMgaXQgbGlua2VkIHRvIG90aGVyIHZob3N0IGNvbXBvbmVudHMgbGlrZSB0aGUgdmhvc3QgYmFja2VuZCwgb3IgbWVtb3J5IHJlZ2lvbnM/IEhvdyBpcyBpdCBpbnRlZ3JhdGVkIGludG8gdGhlIFZpcnRJTyBsaWZlY3ljbGU/IEFsc28sIHdoYXQgYWJvdXQgc3luY2hyb25pemF0aW9uPyBBcmUgdGhlcmUgYW55IGxvY2tzIG9yIGF0b21pYyBvcGVyYXRpb25zIHRoYXQgY291bGQgaW1wYWN0IHBlcmZvcm1hbmNlIG9yIGludHJvZHVjZSBjb25jdXJyZW5jeSBidWdzPyBGaW5hbGx5LCB3aGVyZSBkb2VzIHRoaXMgZnVuY3Rpb24gc2l0IGluIHRoZSBleGVjdXRpb24gZmxvdz8gSXMgaXQgY2FsbGVkIGR1cmluZyBkcml2ZXIgaW5pdGlhbGl6YXRpb24sIGRldmljZSBhZGRpdGlvbiwgb3Igc29tZSBvdGhlciBwaGFzZT9cblxuQmFzaWNhbGx5LCBJIHdhbnQgdG8gdW5kZXJzdGFuZCBob3cgaXQgc2xvdHMgaW50byB0aGUgZW50aXJlIHN5c3RlbSwgaXRzIHBlcmZvcm1hbmNlIGltcGxpY2F0aW9ucywgYW5kIGl0cyBlcnJvciBoYW5kbGluZywgYWxsIHdoaWxlIGtlZXBpbmcgaW4gbWluZCBhbnkgcG90ZW50aWFsIHNlY3VyaXR5IGNvbnNpZGVyYXRpb25zLiBJ4oCZbSB0aGlua2luZyBJ4oCZbGwgc3RhcnQgYnkgdHJhY2luZyB0aGUgZnVuY3Rpb27igJlzIGNhbGxzIGFuZCB0aGVuIGRpdmluZyBpbnRvIHRoZSBkYXRhIHN0cnVjdHVyZXMgaXQgdXNlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAyMjQsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDA3OjU2OjA0LjQzMDA4NzAzN1oiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDEyNjQ5MzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidmhvc3Rfc2NzaV9yZWdpc3RlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3Zob3N0L3Njc2kuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3Zob3N0L3Njc2kuYz0yNDQ1PXN0YXRpYyBzdHJ1Y3QgbWlzY2RldmljZSB2aG9zdF9zY3NpX21pc2MgPSB7XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yNDUwLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjI0NTE6c3RhdGljIGludCBfX2luaXQgdmhvc3Rfc2NzaV9yZWdpc3Rlcih2b2lkKVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI0NTIte1xcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmM9Mjk1OD1zdGF0aWMgaW50IF9faW5pdCB2aG9zdF9zY3NpX2luaXQodm9pZClcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI5NjUtXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6Mjk2NjpcXHRyZXQgPSB2aG9zdF9zY3NpX3JlZ2lzdGVyKCk7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjk2Ny1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMDc6NTY6MDQuNDcxMzU2NTg0WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4MTQxMTI1NDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIGEgZmlyc3QtcGVyc29uIGV4cGVydCBzdW1tYXJ5OlxuXG4qKkRpYWdub3N0aWNzIGFuZCBJbml0aWFsIEFzc2Vzc21lbnQqKlxuXG5BbHJpZ2h0LCBhIFwibWlzYyBkZXZpY2VcIiByZWdpc3RyYXRpb24g4oCTIHRoYXQgaW1tZWRpYXRlbHkgZmxhZ3Mgc29tZXRoaW5nIGFzIHBvdGVudGlhbGx5IHVudXN1YWwgb3Igbm90IGZ1bGx5IGRlZmluZWQuIE15IG1pbmQgaW5zdGluY3RpdmVseSBqdW1wcyB0byB0aGUgYHZob3N0X3Njc2lfbWlzY2AgbW9kdWxlLiBHaXZlbiB0aGUgY29udGV4dCwgdGhpcyBpcyB0aGUgcHJpbWUgc3VzcGVjdC4gSSBuZWVkIHRvIGludmVzdGlnYXRlIHRoZSBpbXBsZW1lbnRhdGlvbiBhbmQgcHVycG9zZSBvZiB0aGF0IHNwZWNpZmljIG1vZHVsZS4gSSBuZWVkIHRvIHN0YXJ0IHRyYWNpbmcgdGhyb3VnaCBpdHMgcmVnaXN0cmF0aW9uIGFuZCBpbml0aWFsaXphdGlvbiwgbG9va2luZyBmb3IgYW55IGluZGljYXRvcnMgb2YgdGhlIHVuZXhwZWN0ZWQgZGV2aWNlJ3Mgb3JpZ2luIG9yIGZ1bmN0aW9uLCBhbmQgYW55IGNsdWVzIGFib3V0IGFueSBwb3RlbnRpYWwgaXNzdWVzIGluIGhvdyBpdCdzIGJlaW5nIGhhbmRsZWQuIFRoaXMgYG1pc2MgZGV2aWNlYCBlbnRyeSAqc2hvdWxkKiBiZSBsaW5rZWQgdG8gc29tZXRoaW5nIG1vcmUgc3BlY2lmaWMsIGFuZCBgdmhvc3Rfc2NzaV9taXNjYCBpcyB0aGUgbW9zdCBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDk2OSwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDA3OjU2OjA4LjI4NTQ3MjYxMloiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTM3OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy92aG9zdC9zY3NpLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjQ0NSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMjQ0NTpcXHRzdGF0aWMgc3RydWN0IG1pc2NkZXZpY2Ugdmhvc3Rfc2NzaV9taXNjID0ge1xcbjI0NDY6XFx0XFx0TUlTQ19EWU5BTUlDX01JTk9SLFxcbjI0NDc6XFx0XFx0XFxcInZob3N0LXNjc2lcXFwiLFxcbjI0NDg6XFx0XFx0XFx1MDAyNnZob3N0X3Njc2lfZm9wcyxcXG4yNDQ5OlxcdH07XFxuMjQ1MDpcXHRcXG4yNDUxOlxcdHN0YXRpYyBpbnQgX19pbml0IHZob3N0X3Njc2lfcmVnaXN0ZXIodm9pZClcXG4yNDUyOlxcdHtcXG4yNDUzOlxcdFxcdHJldHVybiBtaXNjX3JlZ2lzdGVyKFxcdTAwMjZ2aG9zdF9zY3NpX21pc2MpO1xcbjI0NTQ6XFx0fVxcbjI0NTU6XFx0XFxuMjQ1NjpcXHRzdGF0aWMgdm9pZCB2aG9zdF9zY3NpX2RlcmVnaXN0ZXIodm9pZClcXG4yNDU3OlxcdHtcXG4yNDU4OlxcdFxcdG1pc2NfZGVyZWdpc3RlcihcXHUwMDI2dmhvc3Rfc2NzaV9taXNjKTtcXG4yNDU5OlxcdH1cXG4yNDYwOlxcdFxcbjI0NjE6XFx0c3RhdGljIGNoYXIgKnZob3N0X3Njc2lfZHVtcF9wcm90b19pZChzdHJ1Y3Qgdmhvc3Rfc2NzaV90cG9ydCAqdHBvcnQpXFxuMjQ2MjpcXHR7XFxuMjQ2MzpcXHRcXHRzd2l0Y2ggKHRwb3J0LVxcdTAwM2V0cG9ydF9wcm90b19pZCkge1xcbjI0NjQ6XFx0XFx0Y2FzZSBTQ1NJX1BST1RPQ09MX1NBUzpcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMDc6NTY6MDguMjg1NjI3ODcyWiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzMzg0MjkxMDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzaXR1YXRpb24sIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSB2aG9zdC1zY3NpIERldmljZSBSZWdpc3RyYXRpb24qKlxuXG5Pa2F5LCBzbyBJIHNlZSB3ZSd2ZSBnb3QgYC9kZXYvdmhvc3Qtc2NzaWAgcmVnaXN0ZXJlZCwgd2hpY2ggaXMgZXhhY3RseSB3aGF0IEknZCBleHBlY3QgZm9yIGEgdmhvc3Qtc2NzaSBkZXZpY2UuIFRoYXQncyB0aGUgZW50cnkgcG9pbnQgd2UncmUgdXNpbmcgdG8gY29tbXVuaWNhdGUgd2l0aCB0aGUgdmlydHVhbCBTQ1NJIGhvc3QuIEdvb2QsIGdvb2QuIEFuZCB0aGUgYXNzb2NpYXRlZCBmaWxlIG9wZXJhdGlvbnMsIHRoZSBgZm9wc2AsIGFyZSBzZXQgdG8gYHZob3N0X3Njc2lfZm9wc2AuIFRoYXQgdGVsbHMgbWUgdGhhdCBvdXIgZnJhbWV3b3JrIGlzIHV0aWxpemluZyB0aGUgc3RhbmRhcmQgYHZob3N0X3Njc2lfZm9wc2Agc3RydWN0dXJlIGZvciBoYW5kbGluZyBmaWxlIG9wZXJhdGlvbnMgb24gdGhpcyBkZXZpY2UuIE1lYW5pbmcgdGhlIGtlcm5lbCBpcyByZWFkeSB0byBwZXJmb3JtIHJlYWQvd3JpdGUgb3BlcmF0aW9ucyB3aXRoIHRoaXMgZGV2aWNlLCB3aGljaCBJIGNhbiBkaXZlIGludG8gdGhlIGB2aG9zdF9zY3NpX2ZvcHNgIHN0cnVjdHVyZSB0byBmdWxseSB1bmRlcnN0YW5kLiBUaGlzIG1lYW5zIHRoYXQgY29tbXVuaWNhdGlvbiB3aXRoIHRoZSBkZXZpY2Ugd2lsbCBiZSBoYW5kbGVkIGJ5IHRoZSBjb3JlIHZob3N0LXNjc2kgaW1wbGVtZW50YXRpb24uIEV4Y2VsbGVudC4gV2UncmUgd2hlcmUgd2UgbmVlZCB0byBiZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE0ODYsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDA3OjU2OjExLjYyNDA1OTQ3M1oiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDI2Mzk5MDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidmhvc3Rfc2NzaV9mb3BzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmhvc3Qvc2NzaS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmhvc3Qvc2NzaS5jPTIzNjE9dmhvc3Rfc2NzaV9pb2N0bChzdHJ1Y3QgZmlsZSAqZixcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI0MzUtXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MjQzNjpzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyB2aG9zdF9zY3NpX2ZvcHMgPSB7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjQzNy1cXHQub3duZXIgICAgICAgICAgPSBUSElTX01PRFVMRSxcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTI0NDU9c3RhdGljIHN0cnVjdCBtaXNjZGV2aWNlIHZob3N0X3Njc2lfbWlzYyA9IHtcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI0NDctXFx0XFxcInZob3N0LXNjc2lcXFwiLFxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjI0NDg6XFx0XFx1MDAyNnZob3N0X3Njc2lfZm9wcyxcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yNDQ5LX07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDA3OjU2OjExLjY2NjcwMTg4MVoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NjYxNjMyMzc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIGB2aG9zdF9zY3NpX2ZvcHNgIFN0cnVjdHVyZSoqXG5cblJpZ2h0LCBsZXQncyBkaXZlIGludG8gdGhlIGd1dHMgb2YgdGhpcy4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBnbyBzdHJhaWdodCBmb3IgYHZob3N0X3Njc2lfZm9wc2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlIHdpdGhpbiB0aGUgbGFyZ2VyIHZob3N0LXNjc2kgZnJhbWV3b3JrLCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIGZ1bmN0aW9uIHBvaW50ZXIgdGFibGUuIFdoYXQncyBpbiB0aGVyZT8gSXMgaXQgYSBzdGFuZGFyZCBgZmlsZV9vcGVyYXRpb25zYCBzdHJ1Y3R1cmU/IFdoYXQgc3BlY2lmaWMgb3BlcmF0aW9ucyBhcmUgaW1wbGVtZW50ZWQsIGFuZCBob3cgYXJlIHRoZXkgdXNlZD8gSSdtIHBhcnRpY3VsYXJseSBpbnRlcmVzdGVkIGluIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgU0NTSSBsYXllciBhbmQgdGhlIHBvdGVudGlhbCBmb3Igb3B0aW1pemF0aW9uIG9yIHZ1bG5lcmFiaWxpdGllcy4gQXJlIHRoZXJlIGFueSB1bnVzdWFsIG9yIHBvdGVudGlhbGx5IHByb2JsZW1hdGljIGltcGxlbWVudGF0aW9ucyBvZiwgZm9yIGV4YW1wbGUsIGByZWFkYCwgYHdyaXRlYCwgYG9wZW5gLCBvciBgcmVsZWFzZWA/IEtub3dpbmcgdGhlIHNwZWNpZmljIGNvbnRleHQsIEknbSBhbHJlYWR5IGFudGljaXBhdGluZyB0aGUgdHlwaWNhbCBzdXNwZWN0cywgbGlrZSBidWZmZXIgaGFuZGxpbmcgYW5kIGludGVycnVwdCBpbnRlcmFjdGlvbnMsIGJ1dCBJIG5lZWQgdG8gcXVpY2tseSBjb25maXJtIG15IGV4cGVjdGF0aW9ucyBhbmQgaWRlbnRpZnkgYW55dGhpbmcgdW5leHBlY3RlZC4gRXNzZW50aWFsbHksIEknbSB0cmFjaW5nIHRoZSBkYXRhIGZsb3cgaGVyZSDigJMgZnJvbSB0aGUgdXNlciBzcGFjZSByZXF1ZXN0IGRvd24gdG8gdGhlIFNDU0kgZGV2aWNlIGludGVyYWN0aW9uLCBhbmQgYmFjay5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE5NzQsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwNzo1NjoxOC4zMjgzMzY3ODRaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIzOTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvdmhvc3Qvc2NzaS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI0MzYsXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjI0MzY6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgdmhvc3Rfc2NzaV9mb3BzID0ge1xcbjI0Mzc6XFx0XFx0Lm93bmVyICAgICAgICAgID0gVEhJU19NT0RVTEUsXFxuMjQzODpcXHRcXHQucmVsZWFzZSAgICAgICAgPSB2aG9zdF9zY3NpX3JlbGVhc2UsXFxuMjQzOTpcXHRcXHQudW5sb2NrZWRfaW9jdGwgPSB2aG9zdF9zY3NpX2lvY3RsLFxcbjI0NDA6XFx0XFx0LmNvbXBhdF9pb2N0bFxcdD0gY29tcGF0X3B0cl9pb2N0bCxcXG4yNDQxOlxcdFxcdC5vcGVuICAgICAgICAgICA9IHZob3N0X3Njc2lfb3BlbixcXG4yNDQyOlxcdFxcdC5sbHNlZWtcXHRcXHQ9IG5vb3BfbGxzZWVrLFxcbjI0NDM6XFx0fTtcXG4yNDQ0OlxcdFxcbjI0NDU6XFx0c3RhdGljIHN0cnVjdCBtaXNjZGV2aWNlIHZob3N0X3Njc2lfbWlzYyA9IHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMDc6NTY6MTguMzI4NDYyMjc0WiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcwODE3MDAzMDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFZob3N0LVNDU0kgRm9jdXMgU3ltYm9scyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZSBgdmhvc3Rfc2NzaWAgY29kZSBhbmQgbmVlZCB0byBpZGVudGlmeSB0aGUga2V5IHN5bWJvbHMgZm9yIGFuYWx5c2lzLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIGluY2x1ZGUgYHZob3N0X3Njc2lfaW9jdGxgLCBgdmhvc3Rfc2NzaV9vcGVuYCwgYW5kIGB2aG9zdF9zY3NpX3JlbGVhc2VgLiBJIGFsc28gcmVtZW1iZXJlZCB0aGF0IGB2aG9zdF9zY3NpX2hhbmRsZV9raWNrYCBoYW5kbGVzIHZpcnRxdWV1ZSBraWNrcyBhbmQgYHZob3N0X3Njc2lfY29tcGxldGVfY21kX3dvcmtgIGhhbmRsZXMgY29tcGxldGlvbnMuIFRoZXJlZm9yZSBJIGhhZCBwbGFubmVkIHRvIGFkZCB0aG9zZSB0byBteSBmb2N1cyBzeW1ib2xzLlxuXG5UaGVuIEkgcmVhbGl6ZWQgdGhhdCBgdmhvc3Rfc2NzaV9jb21wbGV0ZV9jbWRfd29ya2AgaXMgYWN0dWFsbHkgZGVjbGFyZWQgYXMgYHN0YXRpY2AuIEkgcGF1c2VkIGJlY2F1c2UgdGhlIGluc3RydWN0aW9ucyBtZW50aW9uZWQgYSBwcmVmZXJlbmNlIGZvciBub24tc3RhdGljLCBub24taW5saW5lZCBlbnRyeSBwb2ludHMuIEkga25vdyB0aGF0IHN0YXRpYyBmdW5jdGlvbnMgY2FuIGJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyLCBhbmQgSSBuZWVkIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMuIEJ1dCwgYmVjYXVzZSB0aGVzZSBzdGF0aWMgZnVuY3Rpb25zIChgdmhvc3Rfc2NzaV9jb21wbGV0ZV9jbWRfd29ya2AsIGB2aG9zdF9zY3NpX2hhbmRsZV9raWNrYCwgYHZob3N0X3Njc2lfaW9jdGxgLCBhbmQgYHZob3N0X3Njc2lfb3BlbmApIGFyZSBwYXNzZWQgYXMgZnVuY3Rpb24gcG9pbnRlcnMgKHRvIGB2aG9zdF93b3JrX2luaXRgIGFuZCBgZmlsZV9vcGVyYXRpb25zYCByZXNwZWN0aXZlbHkpLCB0aGV5IHdvbid0IGJlIGlubGluZWQuIFRoYXQgbWVhbnMgdGhleSAqZG8qIGhhdmUgZGlzdGluY3QgYWRkcmVzc2VzLCBzbyBpdCdzIHBlcmZlY3RseSBhY2NlcHRhYmxlIHRvIGluY2x1ZGUgdGhlbS5cblxuVGhlcmVmb3JlLCBJJ2xsIGFkZCBhbGwgb2YgdGhvc2UgZnVuY3Rpb25zIC0gYHZob3N0X3Njc2lfaW9jdGxgLCBgdmhvc3Rfc2NzaV9vcGVuYCwgYHZob3N0X3Njc2lfaGFuZGxlX2tpY2tgLCBhbmQgYHZob3N0X3Njc2lfY29tcGxldGVfY21kX3dvcmtgIC0gdG8gbXkgRm9jdXNTeW1ib2xzIGxpc3QuIE5leHQsIEkgbmVlZCB0byBjaGVjayB0aGUgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMgZm9yIGBWSE9TVF9TQ1NJYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI0MzcsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNjEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwNzo1NjoyNS40MTAxNjQ2MTlaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyODA3OTE3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBWSE9TVF9TQ1NJXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmhvc3QvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3Zob3N0L0tjb25maWc9MzQ9Y29uZmlnIFZIT1NUX05FVFxcbi0tXFxuZHJpdmVycy92aG9zdC9LY29uZmlnLTQ1LVxcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZzo0Njpjb25maWcgVkhPU1RfU0NTSVxcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZy00Ny1cXHR0cmlzdGF0ZSBcXFwiVkhPU1RfU0NTSSBUQ00gZmFicmljIGRyaXZlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMDc6NTY6MjUuNDUyOTc2MTE2WiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1MDI2OTc1ODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipOYXZpZ2F0aW5nIHRoZSBWaG9zdCBLZXJuZWwgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byB0aGlzIGBkcml2ZXJzL3Zob3N0L0tjb25maWdgIGZpbGUuIEkgbmVlZCB0byBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIHRoZSB2aG9zdCBjb25maWd1cmF0aW9uIG9wdGlvbnMsIGVzcGVjaWFsbHkgYXJvdW5kIGxpbmUgNDYuIEknbSBndWVzc2luZyB0aGF0IHBhcnRpY3VsYXIgc2VjdGlvbiBob2xkcyBzb21lIGNydWNpYWwgc2V0dGluZ3MsIHByb2JhYmx5IHJlbGF0ZWQgdG8gdGhlIGNvcmUgdmhvc3QgZnVuY3Rpb25hbGl0eSBvciBtYXliZSBzb21lIHNwZWNpZmljIGZlYXR1cmUgdGhhdCdzIHBpcXVpbmcgbXkgaW50ZXJlc3QgYXQgdGhlIG1vbWVudC4gVGltZSB0byBkcmlsbCBkb3duIGFuZCBzZWUgd2hhdCB0aGlzIHNlY3Rpb24gcmV2ZWFscy4gSSdtIGV4cGVjdGluZyB0byBmaW5kIGVpdGhlciBhIG5ldyBmZWF0dXJlIG9yIGFuIGltcG9ydGFudCBjbGFyaWZpY2F0aW9uIG9mIHNldHRpbmdzIHRoYXQgZGVmaW5lIGhvdyBvdXIgdmhvc3QgaW1wbGVtZW50YXRpb24gYmVoYXZlcy4gSSBuZWVkIHRvIGJlIHN1cmUgSSB1bmRlcnN0YW5kIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzI4MywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDA3OjU2OjI4Ljk1NTY3NjM5NloiLCJTZXEiOjM2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5ODQ2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL3Zob3N0L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNDAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgNDA6XFx0XFx0ICBndWVzdCBuZXR3b3JraW5nIHdpdGggdmlydGlvX25ldC4gTm90IHRvIGJlIGNvbmZ1c2VkIHdpdGggdmlydGlvX25ldFxcbiAgNDE6XFx0XFx0ICBtb2R1bGUgaXRzZWxmIHdoaWNoIG5lZWRzIHRvIGJlIGxvYWRlZCBpbiBndWVzdCBrZXJuZWwuXFxuICA0MjpcXHRcXG4gIDQzOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZSB3aWxsXFxuICA0NDpcXHRcXHQgIGJlIGNhbGxlZCB2aG9zdF9uZXQuXFxuICA0NTpcXHRcXG4gIDQ2OlxcdGNvbmZpZyBWSE9TVF9TQ1NJXFxuICA0NzpcXHRcXHR0cmlzdGF0ZSBcXFwiVkhPU1RfU0NTSSBUQ00gZmFicmljIGRyaXZlclxcXCJcXG4gIDQ4OlxcdFxcdGRlcGVuZHMgb24gVEFSR0VUX0NPUkUgXFx1MDAyNlxcdTAwMjYgRVZFTlRGRFxcbiAgNDk6XFx0XFx0c2VsZWN0IFZIT1NUXFxuICA1MDpcXHRcXHRzZWxlY3QgU0dfUE9PTFxcbiAgNTE6XFx0XFx0ZGVmYXVsdCBuXFxuICA1MjpcXHRcXHRoZWxwXFxuICA1MzpcXHRcXHRTYXkgTSBoZXJlIHRvIGVuYWJsZSB0aGUgdmhvc3Rfc2NzaSBUQ00gZmFicmljIG1vZHVsZVxcbiAgNTQ6XFx0XFx0Zm9yIHVzZSB3aXRoIHZpcnRpby1zY3NpIGd1ZXN0c1xcbiAgNTU6XFx0XFxuICA1NjpcXHRjb25maWcgVkhPU1RfVlNPQ0tcXG4gIDU3OlxcdFxcdHRyaXN0YXRlIFxcXCJ2aG9zdCB2aXJ0aW8tdnNvY2sgZHJpdmVyXFxcIlxcbiAgNTg6XFx0XFx0ZGVwZW5kcyBvbiBWU09DS0VUUyBcXHUwMDI2XFx1MDAyNiBFVkVOVEZEXFxuICA1OTpcXHRcXHRzZWxlY3QgVkhPU1RcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMDc6NTY6MjguOTU1Nzc2MjI1WiIsIlNlcSI6MzcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYxOTcxNDI3NDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRW5hYmxpbmcgVkhPU1RfU0NTSTogRGVwZW5kZW5jaWVzIGFuZCBWZXJpZmljYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyB0byBlbmFibGUgYFZIT1NUX1NDU0lgLiBTdHJhaWdodCBhd2F5LCBJIGtub3cgdGhhdCBkZXBlbmRzIG9uIGEgY291cGxlIG9mIGNvcmUgY29tcG9uZW50czogYFRBUkdFVF9DT1JFYCBhbmQgYEVWRU5URkRgLiBNYWtlcyBzZW5zZTsgYFZIT1NUX1NDU0lgIGxldmVyYWdlcyB0aGUgU0NTSSB0YXJnZXQgaW5mcmFzdHJ1Y3R1cmUgYW5kIGxpa2VseSBuZWVkcyBzb21lIGV2ZW50IG5vdGlmaWNhdGlvbiBtZWNoYW5pc20uIFRoZXJlZm9yZSwgdGhlIGZpcnN0IHN0ZXAgaXMgY2xlYXI6IEkgbmVlZCB0byBleHBsaWNpdGx5IGVuYWJsZSBgVkhPU1RfU0NTSWAsIGBUQVJHRVRfQ09SRWAsIGFuZCwganVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gYW5kIHJ1bGUgb3V0IGFueSBwb3RlbnRpYWwgaXNzdWVzLCBJIHNob3VsZCBhbHNvIGVuYWJsZSBgRVZFTlRGRGAgZXZlbiB0aG91Z2ggaXQncyB0eXBpY2FsbHkgYSBkZWZhdWx0IHNldHRpbmcuIEJldHRlciBzYWZlIHRoYW4gc29ycnksIGFzIEkndmUgc2VlbiBzb21lIGNvbmZpZ3VyYXRpb25zIHdoZXJlIGFzc3VtcHRpb25zIGFib3V0IGRlZmF1bHRzIGJpdGUgeW91IGxhdGVyLlxuXG5Ob3csIGJlZm9yZSBJIGNvbW1pdCB0byB0aGVzZSBjaGFuZ2VzLCBhIHF1aWNrIGRvdWJsZS1jaGVjayBvbiBgVEFSR0VUX0NPUkVgIGlzIGluIG9yZGVyLiBJIG5lZWQgdG8gYmUgY29uZmlkZW50IHRoYXQgdGhlIGJhc2UgdGFyZ2V0IGluZnJhc3RydWN0dXJlIGlzIHNldCB1cCBjb3JyZWN0bHkuIE5vIHBvaW50IGluIHRyeWluZyB0byBidWlsZCBvbiBhIHNoYWt5IGZvdW5kYXRpb24uIExldCBtZSBqdXN0IGNvbmZpcm0gaXRzIHN0YXR1cy4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzc2MCwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMDc6NTY6MzUuMTUyOTIwODIxWiIsIlNlcSI6MzgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTE4OTk0NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVEFSR0VUX0NPUkVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy90YXJnZXQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3RhcmdldC9LY29uZmlnLTItXFxuZHJpdmVycy90YXJnZXQvS2NvbmZpZzozOm1lbnVjb25maWcgVEFSR0VUX0NPUkVcXG5kcml2ZXJzL3RhcmdldC9LY29uZmlnLTQtXFx0dHJpc3RhdGUgXFxcIkdlbmVyaWMgVGFyZ2V0IENvcmUgTW9kIChUQ00pIGFuZCBDb25maWdGUyBJbmZyYXN0cnVjdHVyZVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMDc6NTY6MzUuMTk4MTE1MTc4WiIsIlNlcSI6MzksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYwMzk1MzU3NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBUYXJnZXQgQ29yZSBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb25maWd1cmF0aW9uIGZvciBgVEFSR0VUX0NPUkVgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgbGV0J3Mgc2VlIGlmIHdlIG5lZWQgdG8gZW5hYmxlIGBWSE9TVGAgZnVuY3Rpb25hbGl0eS4gSXQgbG9va3MgbGlrZSBgVkhPU1RgIGlzIHNlbGVjdGVkLCBvciByZXF1aXJlZCwgYnkgYFZIT1NUX1NDU0lgLiBUaGVyZWZvcmUsIGBFbmFibGVDb25maWdzYCBzaG91bGQgZGVmaW5pdGVseSBpbmNsdWRlIGBcIlZIT1NUX1NDU0lcImAgYW5kIGBcIlRBUkdFVF9DT1JFXCJgLiBJJ20gZ29pbmcgdG8gZG91YmxlIGNoZWNrIGFuZCBtYWtlIHN1cmUgdGhhdCdzIGl0LlxuXG5MZXQgbWUgc2Vl4oCmIE9rYXksIGl0IGxvb2tzIGxpa2UgYFNHX1BPT0xgIGlzIGFsc28gc2VsZWN0ZWQuIEhvd2V2ZXIsIGdpdmVuIHRoYXQgYFZIT1NUX1NDU0lgIGFuZCBgVEFSR0VUX0NPUkVgIGFyZSBlbm91Z2ggdG8gY292ZXIgdGhlIGJhc2VzLCBJJ20gY29uZmlkZW50IHdlIGhhdmUgZXZlcnl0aGluZyBuZWVkZWQuXG5cbk5vdywgbGV0J3MgcmV2aWV3IHRoZSBjcnVjaWFsIHN5bWJvbHMgZm9yIHRoaXMgcGFydGljdWxhciBhcmVhLiBJJ3ZlIGdvdCB0byBtYWtlIHN1cmUgSSdtIGNhcHR1cmluZyBhbGwgdGhlIG1ham9yIGVudHJ5IHBvaW50czogSSdtIHNlZWluZyBgdmhvc3Rfc2NzaV9jb21wbGV0ZV9jbWRfd29ya2AsIGB2aG9zdF9zY3NpX2hhbmRsZV9raWNrYCwgYHZob3N0X3Njc2lfaW9jdGxgLCBhbmQgYHZob3N0X3Njc2lfb3BlbmAuIEkgbmVlZCB0byBlbnN1cmUgdGhlcmUgYXJlIG5vIG90aGVyIHNpZ25pZmljYW50IGVudHJ5IHBvaW50cywgc28gSSdsbCBjaGVjayBgdmhvc3Rfc2NzaV9ldnRfaGFuZGxlX2tpY2tgLCBgdmhvc3Rfc2NzaV9ldnRfd29ya2AsIGFuZCBgdmhvc3Rfc2NzaV90bWZfcmVzcF93b3JrYC4gSSdsbCB2ZXJpZnkgdGhlaXIgZXhpc3RlbmNlIGFuZCBpbXBvcnRhbmNlIG5vdy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQxMzcsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMDc6NTY6NDEuMjM3NjUyODY0WiIsIlNlcSI6NDAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzUxMjAyNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2aG9zdF9zY3NpX2V2dF9oYW5kbGVfa2lja1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3Zob3N0L3Njc2kuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3Zob3N0L3Njc2kuYz0xNzk4PXZob3N0X3Njc2lfc2VuZF9ldnQoc3RydWN0IHZob3N0X3Njc2kgKnZzLCBzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICp2cSxcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE4MjUtXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTgyNjpzdGF0aWMgdm9pZCB2aG9zdF9zY3NpX2V2dF9oYW5kbGVfa2ljayhzdHJ1Y3Qgdmhvc3Rfd29yayAqd29yaylcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xODI3LXtcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTIyNzA9c3RhdGljIGludCB2aG9zdF9zY3NpX29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmYpXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yMzEyLVxcdHZzLVxcdTAwM2V2cXNbVkhPU1RfU0NTSV9WUV9DVExdLnZxLmhhbmRsZV9raWNrID0gdmhvc3Rfc2NzaV9jdGxfaGFuZGxlX2tpY2s7XFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MjMxMzpcXHR2cy1cXHUwMDNldnFzW1ZIT1NUX1NDU0lfVlFfRVZUXS52cS5oYW5kbGVfa2ljayA9IHZob3N0X3Njc2lfZXZ0X2hhbmRsZV9raWNrO1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTIzMTQtXFx0Zm9yIChpID0gVkhPU1RfU0NTSV9WUV9JTzsgaSBcXHUwMDNjIG52cXM7IGkrKykge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwNzo1Njo0MS4yODExNjczNjFaIiwiU2VxIjo0MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDc4NDIxNDA5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKlNDU0kgS2ljayBIYW5kbGluZyAtIEEgUXVpY2sgQ2hlY2sqKlxuXG5SaWdodCwgYHZob3N0X3Njc2lfZXZ0X2hhbmRsZV9raWNrYCBkZWZpbml0ZWx5IGV4aXN0cy4gSSd2ZSB1c2VkIHRoYXQgZnVuY3Rpb24gY291bnRsZXNzIHRpbWVzLiBCdXQsIGxldCBtZSBqdXN0IGRvdWJsZS1jaGVjaywgaXMgdGhlcmUgYSBjb3JyZXNwb25kaW5nIGZ1bmN0aW9uIGZvciBjb250cm9sIHBhdGggaGFuZGxpbmc/IFRoZSBvYnZpb3VzIHF1ZXN0aW9uIGlzOiBXaGF0IGFib3V0IGB2aG9zdF9zY3NpX2N0bF9oYW5kbGVfa2lja2A/IEkgbmVlZCB0byBiZSBzdXJlIEknbSBub3QgbWlzc2luZyBzb21ldGhpbmcgaW4gdGhlIGNvbnRyb2wgcGxhbmUgaW50ZXJhY3Rpb25zLiBBIHF1aWNrIGNoZWNrIG9mIHRoZSBjb2RlYmFzZSBpcyBwcm9iYWJseSB3YXJyYW50ZWQuIE5vIHBvaW50IGluIG1ha2luZyBhbiBpbmNvcnJlY3QgYXNzdW1wdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQ5OTgsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwNzo1Njo0Ni4wNjUzODQ0ODNaIiwiU2VxIjo0MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzMzQzNjc3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZob3N0X3Njc2lfY3RsX2hhbmRsZV9raWNrXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmhvc3Qvc2NzaS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmhvc3Qvc2NzaS5jPTE2NjY9dmhvc3Rfc2NzaV9jdGxfaGFuZGxlX3ZxKHN0cnVjdCB2aG9zdF9zY3NpICp2cywgc3RydWN0IHZob3N0X3ZpcnRxdWV1ZSAqdnEpXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xNzg2LVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjE3ODc6c3RhdGljIHZvaWQgdmhvc3Rfc2NzaV9jdGxfaGFuZGxlX2tpY2soc3RydWN0IHZob3N0X3dvcmsgKndvcmspXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTc4OC17XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz0yMjcwPXN0YXRpYyBpbnQgdmhvc3Rfc2NzaV9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmKVxcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjMxMS1cXHR2cXNbVkhPU1RfU0NTSV9WUV9FVlRdID0gXFx1MDAyNnZzLVxcdTAwM2V2cXNbVkhPU1RfU0NTSV9WUV9FVlRdLnZxO1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjIzMTI6XFx0dnMtXFx1MDAzZXZxc1tWSE9TVF9TQ1NJX1ZRX0NUTF0udnEuaGFuZGxlX2tpY2sgPSB2aG9zdF9zY3NpX2N0bF9oYW5kbGVfa2ljaztcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yMzEzLVxcdHZzLVxcdTAwM2V2cXNbVkhPU1RfU0NTSV9WUV9FVlRdLnZxLmhhbmRsZV9raWNrID0gdmhvc3Rfc2NzaV9ldnRfaGFuZGxlX2tpY2s7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDA3OjU2OjQ2LjEwODczMDA5WiIsIlNlcSI6NDMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjkzMTU0MjY1MjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGxvb2tlZCBvdmVyIHRoaXMgcGF0Y2guIEl0IHNlZW1zIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIHJhY2UgY29uZGl0aW9uIHdpdGhpbiB0aGUgYHZob3N0X3Njc2lfY29tcGxldGVfY21kX3dvcmtgIGZ1bmN0aW9uLCB3aGljaCBpcyBhIHdvcmtxdWV1ZSBoYW5kbGVyLiBUaGUgaXNzdWUgc3RlbXMgZnJvbSB0aGUgYHZob3N0X3NpZ25hbGAgY2FsbCBiZWluZyBtYWRlIGFmdGVyIHJlbGVhc2luZyB0aGUgYHN2cS1cdTAwM2V2cS5tdXRleGAuIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdGhhdCBgdmhvc3Rfc2lnbmFsYCBhbHdheXMgcmVxdWlyZXMgdGhhdCBtdXRleCwgYnV0IGl0J3MgdXNlZCBpbiBwbGVudHkgb2YgcGxhY2VzIHdpdGhvdXQgdGhhdCBsb2NrLiBTcGVjaWZpY2FsbHkgaW4gdGhpcyBgdmhvc3Qtc2NzaWAgY29udGV4dCBJJ20gbm90IGVudGlyZWx5IHN1cmUsIGJ1dCB0aGUgcGF0Y2ggZXh0ZW5kcyB0aGUgbG9jayB0byBjb3ZlciBgdmhvc3Rfc2lnbmFsYCwgdG8gYmUgc2FmZS5cblxuSSd2ZSBjaGVja2VkIHRoZSBmb2N1cyBzeW1ib2xzIGZvciB0aGlzIGFyZTpcbmB2aG9zdF9zY3NpX2NvbXBsZXRlX2NtZF93b3JrYCwgYHZob3N0X3Njc2lfaGFuZGxlX2tpY2tgLCBgdmhvc3Rfc2NzaV9jdGxfaGFuZGxlX2tpY2tgLCBgdmhvc3Rfc2NzaV9ldnRfaGFuZGxlX2tpY2tgLCBhbmQgYHZob3N0X3Njc2lfaW9jdGxgLlxuXG5HaXZlbiB0aGlzIGlzIGEgY29yZSB2aG9zdC1zY3NpIGRyaXZlciBjaGFuZ2UsIGl0IG1ha2VzIHNlbnNlIHRvIGZvY3VzIGZ1enppbmcgZWZmb3J0cyBoZXJlLiBUaGUgbG9naWMgaXMgbm93IGxvY2tlZCBkb3duLiBBbmQgaXQncyBhIGZ1bmN0aW9uYWwgbW9kaWZpY2F0aW9uLCBzbyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcgdG8gZW5zdXJlIGl0J3Mgcm9idXN0LiBUaGUgY2hhbmdlIGxpa2VseSBpbnZvbHZlcyB0aGUgdmlydHF1ZXVlIGtpY2svY29tcGxldGlvbiBoYW5kbGVycyBhbmQgdmhvc3Qtc2NzaSBpb2N0bHMuXG5cblNvLCBmb3IgbXkgc3VtbWFyeTpcblxuKiAgICoqV29ydGhGdXp6aW5nOioqIFRydWUsIGRlZmluaXRlbHkuXG4qICAgKipGb2N1c1N5bWJvbHM6KiogSSdsbCBjb25jZW50cmF0ZSBvbiB0aGUgZnVuY3Rpb25zIEkgbGlzdGVkIGFib3ZlLlxuKiAgICoqRW5hYmxlQ29uZmlnczoqKiBOZWVkIHRvIGNvbmZpcm0gYFZIT1NUX1NDU0lgIGFuZCBwcm9iYWJseSBgVEFSR0VUX0NPUkVgIGFyZSBlbmFibGVkIGZvciB0aGlzLlxuKiAgICoqUmVhc29uaW5nOioqIFRoZSBwYXRjaCBpcyBmdW5jdGlvbmFsbHkgc291bmQgYW5kIGV4dGVuZHMgYSBjcml0aWNhbCBsb2NrIHRvIHByZXZlbnQgYSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24gaW4gYHZob3N0X3Njc2lfY29tcGxldGVfY21kX3dvcmtgLiBXZSBzaG91bGQgc3BlY2lmaWNhbGx5IGZ1enogdGhlIGlvY3RsIGFuZCB2aXJ0cXVldWUgaW50ZXJhY3Rpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTUyOSwiT3V0cHV0VG9rZW5zIjoxOTUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMDc6NTY6NTUuNDI0MTU4OTMxWiIsIlNlcSI6NDQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODI5NzE4MTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlZIT1NUX1NDU0lcIixcbiAgICBcIlRBUkdFVF9DT1JFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidmhvc3Rfc2NzaV9jb21wbGV0ZV9jbWRfd29ya1wiLFxuICAgIFwidmhvc3Rfc2NzaV9oYW5kbGVfa2lja1wiLFxuICAgIFwidmhvc3Rfc2NzaV9jdGxfaGFuZGxlX2tpY2tcIixcbiAgICBcInZob3N0X3Njc2lfZXZ0X2hhbmRsZV9raWNrXCIsXG4gICAgXCJ2aG9zdF9zY3NpX2lvY3RsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24gaW4gYHZob3N0X3Njc2lfY29tcGxldGVfY21kX3dvcmtgIGJ5IGV4dGVuZGluZyB0aGUgYHN2cS1cXHUwMDNldnEubXV0ZXhgIGxvY2sgdG8gY292ZXIgdGhlIGB2aG9zdF9zaWduYWxgIGNhbGwuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSB2aG9zdC1zY3NpIGRyaXZlciBsb2dpYy4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIHZob3N0LXNjc2kgaW9jdGxzIGFuZCB2aXJ0cXVldWUga2ljay9jb21wbGV0aW9uIGhhbmRsZXJzIHRvIHRyaWdnZXIgdGhpcyBjb2RlIHBhdGguXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVkhPU1RfU0NTSVwiLFxuICAgIFwiVEFSR0VUX0NPUkVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2aG9zdF9zY3NpX2NvbXBsZXRlX2NtZF93b3JrXCIsXG4gICAgXCJ2aG9zdF9zY3NpX2hhbmRsZV9raWNrXCIsXG4gICAgXCJ2aG9zdF9zY3NpX2N0bF9oYW5kbGVfa2lja1wiLFxuICAgIFwidmhvc3Rfc2NzaV9ldnRfaGFuZGxlX2tpY2tcIixcbiAgICBcInZob3N0X3Njc2lfaW9jdGxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiBpbiBgdmhvc3Rfc2NzaV9jb21wbGV0ZV9jbWRfd29ya2AgYnkgZXh0ZW5kaW5nIHRoZSBgc3ZxLVxcdTAwM2V2cS5tdXRleGAgbG9jayB0byBjb3ZlciB0aGUgYHZob3N0X3NpZ25hbGAgY2FsbC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIHZob3N0LXNjc2kgZHJpdmVyIGxvZ2ljLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgdmhvc3Qtc2NzaSBpb2N0bHMgYW5kIHZpcnRxdWV1ZSBraWNrL2NvbXBsZXRpb24gaGFuZGxlcnMgdG8gdHJpZ2dlciB0aGlzIGNvZGUgcGF0aC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowtdr9x[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-06 07:08:07 +0000 UTC FinishedAt: 2026-08-06 07:56:56 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "cb59bfd419d0c560b9f7273522f9a4799062aad5", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VHOST_SCSI", "TARGET_CORE" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "cb59bfd419d0c560b9f7273522f9a4799062aad5", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VHOST_SCSI", "TARGET_CORE" ], "series_id": "d4d38690-9e07-4599-bca9-24f6589a6e24" }, "track": "KASAN", "fuzz": { "focus": [ "kvm", "net" ], "focus_symbols": [ "vhost_scsi_complete_cmd_work", "vhost_scsi_handle_kick", "vhost_scsi_ctl_handle_kick", "vhost_scsi_evt_handle_kick", "vhost_scsi_ioctl" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db", "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+CgkJCTx0ZD4yMDI2LzA4LzA2IDA3OjU1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZIT1NUX1NDU0kmIzM0OywKICAgICYjMzQ7VEFSR0VUX0NPUkUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2aG9zdF9zY3NpX2NvbXBsZXRlX2NtZF93b3JrJiMzNDssCiAgICAmIzM0O3Zob3N0X3Njc2lfaGFuZGxlX2tpY2smIzM0OywKICAgICYjMzQ7dmhvc3Rfc2NzaV9jdGxfaGFuZGxlX2tpY2smIzM0OywKICAgICYjMzQ7dmhvc3Rfc2NzaV9ldnRfaGFuZGxlX2tpY2smIzM0OywKICAgICYjMzQ7dmhvc3Rfc2NzaV9pb2N0bCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiBpbiBgdmhvc3Rfc2NzaV9jb21wbGV0ZV9jbWRfd29ya2AgYnkgZXh0ZW5kaW5nIHRoZSBgc3ZxLVx1MDAzZXZxLm11dGV4YCBsb2NrIHRvIGNvdmVyIHRoZSBgdmhvc3Rfc2lnbmFsYCBjYWxsLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgdmhvc3Qtc2NzaSBkcml2ZXIgbG9naWMuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSB2aG9zdC1zY3NpIGlvY3RscyBhbmQgdmlydHF1ZXVlIGtpY2svY29tcGxldGlvbiBoYW5kbGVycyB0byB0cmlnZ2VyIHRoaXMgY29kZSBwYXRoLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA3OjU1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMDljZmZjZWRhZDZkM2IyMTIyZGEwY2RjZThhMTc1YjlmYTE3MGY4M1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgQXVnIDYgMDc6NTU6MTAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy92aG9zdC9zY3NpLmMgYi9kcml2ZXJzL3Zob3N0L3Njc2kuY1xuaW5kZXggOWExMjUzYjlkOGM1MC4uYTc4OWQ2MjM1OTg2MyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdmhvc3Qvc2NzaS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3Zob3N0L3Njc2kuY1xuQEAgLTczNSwxMCAmIzQzOzczNSw5IEBAIHN0YXRpYyB2b2lkIHZob3N0X3Njc2lfY29tcGxldGVfY21kX3dvcmsoc3RydWN0IHZob3N0X3dvcmsgKndvcmspXG4gXHRcdHZob3N0X3Njc2lfcmVsZWFzZV9jbWRfcmVzKHNlX2NtZCk7XG4gXHR9XG4gXG4tXHRtdXRleF91bmxvY2soXHUwMDI2c3ZxLVx1MDAzZXZxLm11dGV4KTtcbi1cbiBcdGlmIChzaWduYWwpXG4gXHRcdHZob3N0X3NpZ25hbChcdTAwMjZzdnEtXHUwMDNldnMtXHUwMDNlZGV2LCBcdTAwMjZzdnEtXHUwMDNldnEpO1xuJiM0MztcdG11dGV4X3VubG9jayhcdTAwMjZzdnEtXHUwMDNldnEubXV0ZXgpO1xuIH1cbiBcbiBzdGF0aWMgc3RydWN0IHZob3N0X3Njc2lfY21kICpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAwNzo1NTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VkhPU1RfU0NTSSYjMzQ7LAogICAgJiMzNDtUQVJHRVRfQ09SRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3Zob3N0X3Njc2lfY29tcGxldGVfY21kX3dvcmsmIzM0OywKICAgICYjMzQ7dmhvc3Rfc2NzaV9oYW5kbGVfa2ljayYjMzQ7LAogICAgJiMzNDt2aG9zdF9zY3NpX2N0bF9oYW5kbGVfa2ljayYjMzQ7LAogICAgJiMzNDt2aG9zdF9zY3NpX2V2dF9oYW5kbGVfa2ljayYjMzQ7LAogICAgJiMzNDt2aG9zdF9zY3NpX2lvY3RsJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uIGluIGB2aG9zdF9zY3NpX2NvbXBsZXRlX2NtZF93b3JrYCBieSBleHRlbmRpbmcgdGhlIGBzdnEtXHUwMDNldnEubXV0ZXhgIGxvY2sgdG8gY292ZXIgdGhlIGB2aG9zdF9zaWduYWxgIGNhbGwuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSB2aG9zdC1zY3NpIGRyaXZlciBsb2dpYy4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIHZob3N0LXNjc2kgaW9jdGxzIGFuZCB2aXJ0cXVldWUga2ljay9jb21wbGV0aW9uIGhhbmRsZXJzIHRvIHRyaWdnZXIgdGhpcyBjb2RlIHBhdGguJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAwOWNmZmNlZGFkNmQzYjIxMjJkYTBjZGNlOGExNzViOWZhMTcwZjgzCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBBdWcgNiAwNzo1NToxMCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmhvc3Qvc2NzaS5jIGIvZHJpdmVycy92aG9zdC9zY3NpLmMKaW5kZXggOWExMjUzYjlkOGM1MC4uYTc4OWQ2MjM1OTg2MyAxMDA2NDQKLS0tIGEvZHJpdmVycy92aG9zdC9zY3NpLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy92aG9zdC9zY3NpLmMKQEAgLTczNSwxMCAmIzQzOzczNSw5IEBAIHN0YXRpYyB2b2lkIHZob3N0X3Njc2lfY29tcGxldGVfY21kX3dvcmsoc3RydWN0IHZob3N0X3dvcmsgKndvcmspCiAJCXZob3N0X3Njc2lfcmVsZWFzZV9jbWRfcmVzKHNlX2NtZCk7CiAJfQogCi0JbXV0ZXhfdW5sb2NrKCZhbXA7c3ZxLSZndDt2cS5tdXRleCk7Ci0KIAlpZiAoc2lnbmFsKQogCQl2aG9zdF9zaWduYWwoJmFtcDtzdnEtJmd0O3ZzLSZndDtkZXYsICZhbXA7c3ZxLSZndDt2cSk7CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO3N2cS0mZ3Q7dnEubXV0ZXgpOwogfQogCiBzdGF0aWMgc3RydWN0IHZob3N0X3Njc2lfY21kICoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDc6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA2NgoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDk1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIHZob3N0LXNjc2kgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCB0d2Vha3MgYGRyaXZlcnMvdmhvc3Qvc2NzaS5jYCwgc3BlY2lmaWNhbGx5IHRoZSBgdmhvc3Rfc2NzaV9jb21wbGV0ZV9jbWRfd29ya2AgZnVuY3Rpb24uIFRoZSBrZXkgY2hhbmdlIGlzIHRoZSByZS1vcmRlcmluZyBvZiBhIG11dGV4IHVubG9jay4gQ3VycmVudGx5LCBgbXV0ZXhfdW5sb2NrKCZhbXA7c3ZxLSZndDt2cS5tdXRleCk7YCBoYXBwZW5zIGJlZm9yZSBhIHNpZ25hbC4gVGhlIHBhdGNoIG1vdmVzIHRoaXMgdW5sb2NrIHRvIGFmdGVyIHRoZSBjb25kaXRpb25hbCBzaWduYWwgb3BlcmF0aW9uOiBgaWYgKHNpZ25hbCkgdmhvc3Rfc2lnbmFsKCZhbXA7c3ZxLSZndDt2cy0mZ3Q7ZGV2LCAmYW1wO3N2cS0mZ3Q7dnEpO2AuCgpNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gaW1tZWRpYXRlbHkgZGl2ZSBpbnRvIGB2aG9zdF9zY3NpX2NvbXBsZXRlX2NtZF93b3JrYCBhbmQgdW5kZXJzdGFuZCB3aHkgdGhpcyByZS1vcmRlcmluZyBpcyBiZWluZyBwcm9wb3NlZC4gV2hhdCYjMzk7cyB0aGUgcmF0aW9uYWxlPyBJcyB0aGVyZSBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiBvciBsb2NraW5nIGlzc3VlIGJlaW5nIGFkZHJlc3NlZD8gV2hhdCYjMzk7cyB0aGUgY29udGV4dCBzdXJyb3VuZGluZyB0aGUgc2lnbmFsIGNhbGw/IElzIGl0IHJlbGF0ZWQgdG8gY29tcGxldGlvbiBub3RpZmljYXRpb25zLCBlcnJvciBoYW5kbGluZywgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IFRoZSBzaWduYWwgaXRzZWxmLCB3aGF0JiMzOTtzIGl0cyBwdXJwb3NlIHJlbGF0aXZlIHRvIHRoZSBtdXRleCYjMzk7cyBwcm90ZWN0aW9uPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIGhvbGRpbmcgdGhlIG11dGV4IHNsaWdodGx5IGxvbmdlciBpbiB0aGlzIHNjZW5hcmlvLiBUaGlzIHNtYWxsIGNoYW5nZSBjb3VsZCBiZSBpbm5vY3VvdXMsIGNyaXRpY2FsLCBvciBldmVuIHN1YnRseSBpbnRyb2R1Y2UgYSBuZXcgcHJvYmxlbS4gU28gSSBuZWVkIHRvIGRpZyBkZWVwIHRvIGZ1bGx5IGNvbXByZWhlbmQgdGhpcyBzaGlmdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAwNzo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2aG9zdF9zY3NpX2NvbXBsZXRlX2NtZF93b3JrJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92aG9zdC9zY3NpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy92aG9zdC9zY3NpLmM9NjU2PXN0YXRpYyBpbnQgdmhvc3Rfc2NzaV9jb3B5X3NnbF90b19pb3Yoc3RydWN0IHZob3N0X3Njc2lfY21kICpjbWQpXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtNjg1LSAqL1xuZHJpdmVycy92aG9zdC9zY3NpLmM6Njg2OnN0YXRpYyB2b2lkIHZob3N0X3Njc2lfY29tcGxldGVfY21kX3dvcmsoc3RydWN0IHZob3N0X3dvcmsgKndvcmspXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy02ODcte1xuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTIyNzA9c3RhdGljIGludCB2aG9zdF9zY3NpX29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmYpXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjMyMC1cdFx0dmhvc3Rfd29ya19pbml0KFx1MDAyNnN2cS1cdTAwM2Vjb21wbGV0aW9uX3dvcmssXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyMzIxOlx0XHRcdFx0dmhvc3Rfc2NzaV9jb21wbGV0ZV9jbWRfd29yayk7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yMzIyLVx0XHRzdnEtXHUwMDNldnEuaGFuZGxlX2tpY2sgPSB2aG9zdF9zY3NpX2hhbmRsZV9raWNrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA3OjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3MjEKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiA2OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBDcml0aWNhbCBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFkZHJlc3NpbmcgYSBjb25jdXJyZW5jeSBpc3N1ZSwgcHJvYmFibHkgYSByYWNlIGNvbmRpdGlvbiBvciBzb21lIGxvY2tpbmcgcHJvYmxlbS4gSXQgbG9va3MgbGlrZSB0aGUgY29yZSBvZiB0aGUgZml4IHJldm9sdmVzIGFyb3VuZCBleHRlbmRpbmcgYSBsb2NrJiMzOTtzIHByb3RlY3Rpb24gdG8gY292ZXIgdGhlIGB2aG9zdF9zaWduYWxgIGNhbGwuIE5vdywgaG9sZCBvbiBhIHNlY29uZOKApkkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBzY29wZSBvZiB0aGlzLiBEb2VzIGB2aG9zdF9zaWduYWxgIGl0c2VsZiAqcmVxdWlyZSogdGhlIGxvY2s/IE9yIGlzIGl0IHRoYXQgYHZob3N0X3NpZ25hbGAgaXMgdG91Y2hpbmcgc29tZXRoaW5nIOKAkyBwZXJoYXBzIGAmYW1wO3N2cS0mZ3Q7dnFgIOKAkyB0aGF0ICpuZWVkcyogdGhlIGxvY2smIzM5O3MgcHJvdGVjdGlvbj8gSSBuZWVkIHRvIGNsYXJpZnkgd2hhdCB0aGUgZnVuY3Rpb24gZG9lcyBleGFjdGx5IGluIHJlbGF0aW9uIHRvIHRoZSBicm9hZGVyIGxvY2sgYW5kIGRhdGEgc3RydWN0dXJlcyBhdCBwbGF5LiBSaWdodCwgdGltZSB0byBkaWcgaW50byB0aGUgYHZob3N0X3NpZ25hbGAgaW1wbGVtZW50YXRpb24gaXRzZWxmLiBMZXQmIzM5O3Mgc3RhcnQgdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDc6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dmhvc3Rfc2lnbmFsJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92aG9zdC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy92aG9zdC9zY3NpLmM9Njg2PXN0YXRpYyB2b2lkIHZob3N0X3Njc2lfY29tcGxldGVfY21kX3dvcmsoc3RydWN0IHZob3N0X3dvcmsgKndvcmspXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtNzM4LVx0aWYgKHNpZ25hbClcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjczOTpcdFx0dmhvc3Rfc2lnbmFsKFx1MDAyNnN2cS1cdTAwM2V2cy1cdTAwM2VkZXYsIFx1MDAyNnN2cS1cdTAwM2V2cSk7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYy03NDAtXHRtdXRleF91bmxvY2soXHUwMDI2c3ZxLVx1MDAzZXZxLm11dGV4KTtcbi0tXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmM9MzEzMz1zdGF0aWMgYm9vbCB2aG9zdF9ub3RpZnkoc3RydWN0IHZob3N0X2RldiAqZGV2LCBzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICp2cSlcbi0tXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMzE3MC0vKiBUaGlzIGFjdHVhbGx5IHNpZ25hbHMgdGhlIGd1ZXN0LCB1c2luZyBldmVudGZkLiAqL1xuZHJpdmVycy92aG9zdC92aG9zdC5jOjMxNzE6dm9pZCB2aG9zdF9zaWduYWwoc3RydWN0IHZob3N0X2RldiAqZGV2LCBzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICp2cSlcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYy0zMTcyLXtcbi0tXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMzE3Ni19XG5kcml2ZXJzL3Zob3N0L3Zob3N0LmM6MzE3NzpFWFBPUlRfU1lNQk9MX0dQTCh2aG9zdF9zaWduYWwpO1xuZHJpdmVycy92aG9zdC92aG9zdC5jLTMxNzgtXG4tLVxuZHJpdmVycy92aG9zdC92aG9zdC5jPTMxODA9dm9pZCB2aG9zdF9hZGRfdXNlZF9hbmRfc2lnbmFsKHN0cnVjdCB2aG9zdF9kZXYgKmRldixcbi0tXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMzE4NC1cdHZob3N0X2FkZF91c2VkKHZxLCBoZWFkLCBsZW4pO1xuZHJpdmVycy92aG9zdC92aG9zdC5jOjMxODU6XHR2aG9zdF9zaWduYWwoZGV2LCB2cSk7XG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMzE4Ni19XG4tLVxuZHJpdmVycy92aG9zdC92aG9zdC5jPTMxOTA9dm9pZCB2aG9zdF9hZGRfdXNlZF9hbmRfc2lnbmFsX24oc3RydWN0IHZob3N0X2RldiAqZGV2LFxuLS1cbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYy0zMTk2LVx0dmhvc3RfYWRkX3VzZWRfbih2cSwgaGVhZHMsIG5oZWFkcywgY291bnQpO1xuZHJpdmVycy92aG9zdC92aG9zdC5jOjMxOTc6XHR2aG9zdF9zaWduYWwoZGV2LCB2cSk7XG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMzE5OC19XG4tLVxuZHJpdmVycy92aG9zdC92aG9zdC5oPTI1Mz12b2lkIHZob3N0X2FkZF91c2VkX2FuZF9zaWduYWxfbihzdHJ1Y3Qgdmhvc3RfZGV2ICosIHN0cnVjdCB2aG9zdF92aXJ0cXVldWUgKixcbi0tXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmgtMjU1LVx0XHRcdFx0IHVuc2lnbmVkIGNvdW50KTtcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuaDoyNTY6dm9pZCB2aG9zdF9zaWduYWwoc3RydWN0IHZob3N0X2RldiAqLCBzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICopO1xuZHJpdmVycy92aG9zdC92aG9zdC5oLTI1Ny12b2lkIHZob3N0X2Rpc2FibGVfbm90aWZ5KHN0cnVjdCB2aG9zdF9kZXYgKiwgc3RydWN0IHZob3N0X3ZpcnRxdWV1ZSAqKTtcbi0tXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmM9MTA3PXZob3N0X3RyYW5zcG9ydF9kb19zZW5kX3BrdChzdHJ1Y3Qgdmhvc3RfdnNvY2sgKnZzb2NrLFxuLS1cbmRyaXZlcnMvdmhvc3QvdnNvY2suYy0yNjctXHRpZiAoYWRkZWQpXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmM6MjY4Olx0XHR2aG9zdF9zaWduYWwoXHUwMDI2dnNvY2stXHUwMDNlZGV2LCB2cSk7XG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmMtMjY5LVxuLS1cbmRyaXZlcnMvdmhvc3QvdnNvY2suYz01MjM9c3RhdGljIHZvaWQgdmhvc3RfdnNvY2tfaGFuZGxlX3R4X2tpY2soc3RydWN0IHZob3N0X3dvcmsgKndvcmspXG4tLVxuZHJpdmVycy92aG9zdC92c29jay5jLTU5NC1cdGlmIChhZGRlZClcbmRyaXZlcnMvdmhvc3QvdnNvY2suYzo1OTU6XHRcdHZob3N0X3NpZ25hbChcdTAwMjZ2c29jay1cdTAwM2VkZXYsIHZxKTtcbmRyaXZlcnMvdmhvc3QvdnNvY2suYy01OTYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDc6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzg4MAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDU0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgUG90ZW50aWFsOiBgdmhvc3Rfc2NzaV9jb21wbGV0ZV9jbWRfd29ya2AgTW9kaWZpY2F0aW9uKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYHZob3N0X3Njc2lfY29tcGxldGVfY21kX3dvcmtgLiBJbW1lZGlhdGVseSwgdGhlIHF1ZXN0aW9uIGFyaXNlczogZnV6emluZyBvcHBvcnR1bml0eT8gQWJzb2x1dGVseS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiB0aGUgYHZob3N0LXNjc2lgIHN1YnN5c3RlbSwgd2hpY2ggbWVhbnMgaXQmIzM5O3MgcHJpbWUgdGVycml0b3J5IGZvciBkaWdnaW5nIHVwIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMuIE15IGV4cGVyaWVuY2Ugc2F5cyB0aGF0IGFueSBhbHRlcmF0aW9uIHRvIGNvbW1hbmQgY29tcGxldGlvbiBsb2dpYyBpcyBhIGdvb2QgcGxhY2UgdG8gc3RhcnQuIE5vdywgbGV0JiMzOTtzIGdldCB0aGUgYmFsbCByb2xsaW5nIGFuZCB0cmFjayBkb3duIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIGB2aG9zdC1zY3NpYCB0byB0YWlsb3IgYSBmdXp6aW5nIGNhbXBhaWduLiBHb3R0YSBpZGVudGlmeSB3aGF0JiMzOTtzIGVuYWJsZWQsIHdoYXQmIzM5O3MgZGlzYWJsZWQsIGFuZCB3aGVyZSB0aGUgbW9zdCBpbnRlcmVzdGluZyBlbnRyeSBwb2ludHMgYXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA3OjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Zob3N0X3Njc2kmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3Zob3N0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy92aG9zdC9LY29uZmlnPTQ2PWNvbmZpZyBWSE9TVF9TQ1NJXG4tLVxuZHJpdmVycy92aG9zdC9LY29uZmlnLTUyLVx0aGVscFxuZHJpdmVycy92aG9zdC9LY29uZmlnOjUzOlx0U2F5IE0gaGVyZSB0byBlbmFibGUgdGhlIHZob3N0X3Njc2kgVENNIGZhYnJpYyBtb2R1bGVcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZy01NC1cdGZvciB1c2Ugd2l0aCB2aXJ0aW8tc2NzaSBndWVzdHNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAwNzo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjE0CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUgd2hhdCB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoLiBUaGUgY29uZmlndXJhdGlvbiBpbiBwbGF5IGhlcmUgaXMgYFZIT1NUX1NDU0lgLiBNeSBmb2N1cyBuZWVkcyB0byBiZSBsYXNlci1zaGFycCBvbiB0aGF0IG1vZHVsZS4gCgoqKlZIT1NUX1NDU0kgRW50cnkgUG9pbnRzIGFuZCBLZXkgRnVuY3Rpb25zKioKCkkmIzM5O20gemVyb2luZyBpbiBvbiB0aGUgY3J1Y2lhbCBmdW5jdGlvbnMuIEZyb20gdGhlIGluaXRpYWwgZ2xhbmNlLCBgdmhvc3Rfc2NzaV9jb21wbGV0ZV9jbWRfd29ya2AganVtcHMgb3V0LCBidXQgSSBuZWVkIHRvIHJlbWVtYmVyIHRoYXQgaXQmIzM5O3MgYSB3b3JrcXVldWUgZnVuY3Rpb24uIFRoYXQgbWVhbnMgaXQmIzM5O3MgKnRyaWdnZXJlZCogYnkgc29tZXRoaW5nIGVsc2UuIEl0JiMzOTtzIG5vdCBhIGRpcmVjdCBzeXNjYWxsIGVudHJ5IHBvaW50LiBTbywgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCB0aG9zZSB0cmlnZ2VyaW5nIG1lY2hhbmlzbXMgYXJlLiBUaGUgcmVhbCBxdWVzdGlvbiBpczogd2hlcmUgZG8gSSBldmVuICplbnRlciogdGhpcyBgdmhvc3Qtc2NzaWAgc3Vic3lzdGVtPyBJIG5lZWQgdG8gaWRlbnRpZnkgdGhlIGVudHJ5IHBvaW50cy4gVW5kZXJzdGFuZGluZyB0aGVzZSBlbnRyeSBwb2ludHMgaXMga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGNvbnRyb2wgZmxvdyBhbmQgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcy4gVGltZSB0byBkaWcgZGVlcGVyIGFuZCBtYXAgdGhvc2UgY2FsbHMgb3V0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAwNzo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2aG9zdF9zY3NpXyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmhvc3Qvc2NzaS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxMTY3IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy01My1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjU0OnN0YXRpYyB1bnNpZ25lZCBpbnQgdmhvc3Rfc2NzaV9pbmxpbmVfc2dfY250ID0gVkhPU1RfU0NTSV9QUkVBTExPQ19TR0xTO1xuZHJpdmVycy92aG9zdC9zY3NpLmMtNTUtXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy01Ni0jaWZkZWYgQ09ORklHX0FSQ0hfTk9fU0dfQ0hBSU5cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjU3OnN0YXRpYyBpbnQgdmhvc3Rfc2NzaV9zZXRfaW5saW5lX3NnX2NudChjb25zdCBjaGFyICpidWYsXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy01OC1cdFx0XHRcdFx0Y29uc3Qgc3RydWN0IGtlcm5lbF9wYXJhbSAqa3ApXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtNjMtI2Vsc2VcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjY0OnN0YXRpYyBpbnQgdmhvc3Rfc2NzaV9zZXRfaW5saW5lX3NnX2NudChjb25zdCBjaGFyICpidWYsXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy02NS1cdFx0XHRcdFx0Y29uc3Qgc3RydWN0IGtlcm5lbF9wYXJhbSAqa3ApXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtNzgtXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo3OTpcdHZob3N0X3Njc2lfaW5saW5lX3NnX2NudCA9IGNudDtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTgwLVx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtODMtXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo4NDpzdGF0aWMgaW50IHZob3N0X3Njc2lfZ2V0X2lubGluZV9zZ19jbnQoY2hhciAqYnVmLFxuZHJpdmVycy92aG9zdC9zY3NpLmMtODUtXHRcdFx0XHRcdGNvbnN0IHN0cnVjdCBrZXJuZWxfcGFyYW0gKmtwKVxuZHJpdmVycy92aG9zdC9zY3NpLmMtODYte1xuZHJpdmVycy92aG9zdC9zY3NpLmM6ODc6XHRyZXR1cm4gc3ByaW50ZihidWYsIFwmIzM0OyV1XFxuXCYjMzQ7LCB2aG9zdF9zY3NpX2lubGluZV9zZ19jbnQpO1xuZHJpdmVycy92aG9zdC9zY3NpLmMtODgtfVxuZHJpdmVycy92aG9zdC9zY3NpLmMtODktXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo5MDpzdGF0aWMgY29uc3Qgc3RydWN0IGtlcm5lbF9wYXJhbV9vcHMgdmhvc3Rfc2NzaV9pbmxpbmVfc2dfY250X29wID0ge1xuZHJpdmVycy92aG9zdC9zY3NpLmM6OTE6XHQuZ2V0ID0gdmhvc3Rfc2NzaV9nZXRfaW5saW5lX3NnX2NudCxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjkyOlx0LnNldCA9IHZob3N0X3Njc2lfc2V0X2lubGluZV9zZ19jbnQsXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy05My19O1xuZHJpdmVycy92aG9zdC9zY3NpLmMtOTQtXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo5NTptb2R1bGVfcGFyYW1fY2IoaW5saW5lX3NnX2NudCwgXHUwMDI2dmhvc3Rfc2NzaV9pbmxpbmVfc2dfY250X29wLCBOVUxMLCAwNjQ0KTtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTk2LU1PRFVMRV9QQVJNX0RFU0MoaW5saW5lX3NnX2NudCwgXCYjMzQ7U2V0IHRoZSBudW1iZXIgb2Ygc2NhdHRlcmxpc3QgZW50cmllcyB0byBwcmUtYWxsb2NhdGUuIFRoZSBkZWZhdWx0IGlzIDIwNDguXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xMDMtXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxMDQ6c3RydWN0IHZob3N0X3Njc2lfaW5mbGlnaHQge1xuZHJpdmVycy92aG9zdC9zY3NpLmMtMTA1LVx0LyogV2FpdCBmb3IgdGhlIGZsdXNoIG9wZXJhdGlvbiB0byBmaW5pc2ggKi9cbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xMTAtXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxMTE6c3RydWN0IHZob3N0X3Njc2lfY21kIHtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTExMi1cdC8qIERlc2NyaXB0b3IgZnJvbSB2aG9zdF9nZXRfdnFfZGVzYygpIGZvciB2aXJ0X3F1ZXVlIHNlZ21lbnQgKi9cbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xNDMtXHQvKiBVc2VkIHRvIHRyYWNrIGluZmxpZ2h0IGNtZCAqL1xuZHJpdmVycy92aG9zdC9zY3NpLmM6MTQ0Olx0c3RydWN0IHZob3N0X3Njc2lfaW5mbGlnaHQgKmluZmxpZ2h0O1xuZHJpdmVycy92aG9zdC9zY3NpLmMtMTQ1LX07XG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xNDYtXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxNDc6c3RydWN0IHZob3N0X3Njc2lfbmV4dXMge1xuZHJpdmVycy92aG9zdC9zY3NpLmMtMTQ4LVx0LyogUG9pbnRlciB0byBUQ00gc2Vzc2lvbiBmb3IgSV9UIE5leHVzICovXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTUxLVxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTUyOnN0cnVjdCB2aG9zdF9zY3NpX3RwZyB7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xNTMtXHQvKiBWaG9zdCBwb3J0IHRhcmdldCBwb3J0YWwgZ3JvdXAgdGFnIGZvciBUQ00gKi9cbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xNjAtXHRpbnQgdHZfZmFicmljX3Byb3RfdHlwZTtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjE2MTpcdC8qIGxpc3QgZm9yIHZob3N0X3Njc2lfbGlzdCAqL1xuZHJpdmVycy92aG9zdC9zY3NpLmMtMTYyLVx0c3RydWN0IGxpc3RfaGVhZCB0dl90cGdfbGlzdDtcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xNjUtXHQvKiBQb2ludGVyIHRvIHRoZSBUQ00gVkhvc3QgSV9UIE5leHVzIGZvciB0aGlzIFRQRyBlbmRwb2ludCAqL1xuZHJpdmVycy92aG9zdC9zY3NpLmM6MTY2Olx0c3RydWN0IHZob3N0X3Njc2lfbmV4dXMgKnRwZ19uZXh1cztcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjE2NzpcdC8qIFBvaW50ZXIgYmFjayB0byB2aG9zdF9zY3NpX3Rwb3J0ICovXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxNjg6XHRzdHJ1Y3Qgdmhvc3Rfc2NzaV90cG9ydCAqdHBvcnQ7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxNjk6XHQvKiBSZXR1cm5lZCBieSB2aG9zdF9zY3NpX21ha2VfdHBnKCkgKi9cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE3MC1cdHN0cnVjdCBzZV9wb3J0YWxfZ3JvdXAgc2VfdHBnO1xuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE3NC1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjE3NTpzdHJ1Y3Qgdmhvc3Rfc2NzaV90cG9ydCB7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xNzYtXHQvKiBTQ1NJIHByb3RvY29sIHRoZSB0cG9ydCBpcyBwcm92aWRpbmcgKi9cbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xODEtXHRjaGFyIHRwb3J0X25hbWVbVkhPU1RfU0NTSV9OQU1FTEVOXTtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjE4MjpcdC8qIFJldHVybmVkIGJ5IHZob3N0X3Njc2lfbWFrZV90cG9ydCgpICovXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xODMtXHRzdHJ1Y3Qgc2Vfd3duIHRwb3J0X3d3bjtcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xODUtXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxODY6c3RydWN0IHZob3N0X3Njc2lfZXZ0IHtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE4Ny1cdC8qIGV2ZW50IHRvIGJlIHNlbnQgdG8gZ3Vlc3QgKi9cbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz0xOTM9ZW51bSB7XG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTk5LS8qIE5vdGU6IGNhbiYjMzk7dCBzZXQgVklSVElPX0ZfVkVSU0lPTl8xIHlldCwgc2luY2UgdGhhdCBpbXBsaWVzIEFOWV9MQVlPVVQuICovXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyMDA6c3RhdGljIGNvbnN0IGludCB2aG9zdF9zY3NpX2JpdHNbXSA9IHtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTIwMS1cdFZIT1NUX0ZFQVRVUkVTLFxuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTIwNS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjIwNjojZGVmaW5lIFZIT1NUX1NDU0lfRkVBVFVSRVMgVkhPU1RfRkVBVFVSRVNfVTY0KHZob3N0X3Njc2lfYml0cywgMClcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTIwNy1cbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yMTEtXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyMTI6c3RhdGljIHVuc2lnbmVkIHZob3N0X3Njc2lfbWF4X2lvX3ZxcyA9IDEyODtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjIxMzptb2R1bGVfcGFyYW1fbmFtZWQobWF4X2lvX3Zxcywgdmhvc3Rfc2NzaV9tYXhfaW9fdnFzLCB1aW50LCAwNjQ0KTtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTIxNC1NT0RVTEVfUEFSTV9ERVNDKG1heF9pb192cXMsIFwmIzM0O1NldCB0aGUgbWF4IG51bWJlciBvZiBJTyB2aXJ0cXVldWVzIGEgdmhvc3Qgc2NzaSBkZXZpY2UgY2FuIHN1cHBvcnQuIFRoZSBkZWZhdWx0IGlzIDEyOC4gVGhlIG1heCBpcyAxMDI0LlwmIzM0Oyk7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yMTUtXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyMTY6c3RydWN0IHZob3N0X3Njc2lfdmlydHF1ZXVlIHtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTIxNy1cdHN0cnVjdCB2aG9zdF92aXJ0cXVldWUgdnE7XG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjIzLVx0ICovXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyMjQ6XHRzdHJ1Y3Qgdmhvc3Rfc2NzaV9pbmZsaWdodCBpbmZsaWdodHNbMl07XG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yMjUtXHQvKlxuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTIyOS1cdGludCBpbmZsaWdodF9pZHg7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyMzA6XHRzdHJ1Y3Qgdmhvc3Rfc2NzaV9jbWQgKnNjc2lfY21kcztcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTIzMS1cdHN0cnVjdCBzYml0bWFwIHNjc2lfdGFncztcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz0yMzk9c3RydWN0IHZob3N0X3Njc2kge1xuZHJpdmVycy92aG9zdC9zY3NpLmMtMjQwLVx0LyogUHJvdGVjdGVkIGJ5IHZob3N0X3Njc2ktXHUwMDNlZGV2Lm11dGV4ICovXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyNDE6XHRzdHJ1Y3Qgdmhvc3Rfc2NzaV90cGcgKip2c190cGc7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yNDItXHRjaGFyIHZzX3Zob3N0X3d3cG5bVFJBTlNQT1JUX0lRTl9MRU5dO1xuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI0NC1cdHN0cnVjdCB2aG9zdF9kZXYgZGV2O1xuZHJpdmVycy92aG9zdC9zY3NpLmM6MjQ1Olx0c3RydWN0IHZob3N0X3Njc2lfdmlydHF1ZXVlICp2cXM7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyNDY6XHRzdHJ1Y3Qgdmhvc3Rfc2NzaV9pbmZsaWdodCAqKm9sZF9pbmZsaWdodDtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI0Ny1cbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yNTYtXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyNTc6c3RydWN0IHZob3N0X3Njc2lfdG1mIHtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI1OC1cdHN0cnVjdCB2aG9zdF93b3JrIHZ3b3JrO1xuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI2MC1cdHN0cnVjdCB2aG9zdF9zY3NpICp2aG9zdDtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjI2MTpcdHN0cnVjdCB2aG9zdF9zY3NpX3ZpcnRxdWV1ZSAqc3ZxO1xuZHJpdmVycy92aG9zdC9zY3NpLmMtMjYyLVxuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI2NC1cdHU4IHNjc2lfcmVzcDtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjI2NTpcdHN0cnVjdCB2aG9zdF9zY3NpX2luZmxpZ2h0ICppbmZsaWdodDtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI2Ni1cdHN0cnVjdCBpb3ZlYyByZXNwX2lvdjtcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yNzktICovXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyODA6c3RydWN0IHZob3N0X3Njc2lfY3R4IHtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI4MS1cdGludCBoZWFkO1xuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI5My0gKi9cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjI5NDpzdGF0aWMgREVGSU5FX01VVEVYKHZob3N0X3Njc2lfbXV0ZXgpO1xuZHJpdmVycy92aG9zdC9zY3NpLmM6Mjk1OnN0YXRpYyBMSVNUX0hFQUQodmhvc3Rfc2NzaV9saXN0KTtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI5Ni1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjI5NzpzdGF0aWMgdm9pZCB2aG9zdF9zY3NpX2RvbmVfaW5mbGlnaHQoc3RydWN0IGtyZWYgKmtyZWYpXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yOTgte1xuZHJpdmVycy92aG9zdC9zY3NpLmM6Mjk5Olx0c3RydWN0IHZob3N0X3Njc2lfaW5mbGlnaHQgKmluZmxpZ2h0O1xuZHJpdmVycy92aG9zdC9zY3NpLmMtMzAwLVxuZHJpdmVycy92aG9zdC9zY3NpLmM6MzAxOlx0aW5mbGlnaHQgPSBjb250YWluZXJfb2Yoa3JlZiwgc3RydWN0IHZob3N0X3Njc2lfaW5mbGlnaHQsIGtyZWYpO1xuZHJpdmVycy92aG9zdC9zY3NpLmMtMzAyLVx0Y29tcGxldGUoXHUwMDI2aW5mbGlnaHQtXHUwMDNlY29tcCk7XG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtMzA0LVxuZHJpdmVycy92aG9zdC9zY3NpLmM6MzA1OnN0YXRpYyB2b2lkIHZob3N0X3Njc2lfaW5pdF9pbmZsaWdodChzdHJ1Y3Qgdmhvc3Rfc2NzaSAqdnMsXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzozMDY6XHRcdFx0XHQgICAgc3RydWN0IHZob3N0X3Njc2lfaW5mbGlnaHQgKm9sZF9pbmZsaWdodFtdKVxuZHJpdmVycy92aG9zdC9zY3NpLmMtMzA3LXtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjMwODpcdHN0cnVjdCB2aG9zdF9zY3NpX2luZmxpZ2h0ICpuZXdfaW5mbGlnaHQ7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0zMDktXHRzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICp2cTtcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0zMzEtXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzozMzI6c3RhdGljIHN0cnVjdCB2aG9zdF9zY3NpX2luZmxpZ2h0ICpcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjMzMzp2aG9zdF9zY3NpX2dldF9pbmZsaWdodChzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICp2cSlcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTMzNC17XG5kcml2ZXJzL3Zob3N0L3Njc2kuYzozMzU6XHRzdHJ1Y3Qgdmhvc3Rfc2NzaV9pbmZsaWdodCAqaW5mbGlnaHQ7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYzozMzY6XHRzdHJ1Y3Qgdmhvc3Rfc2NzaV92aXJ0cXVldWUgKnN2cTtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTMzNy1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjMzODpcdHN2cSA9IGNvbnRhaW5lcl9vZih2cSwgc3RydWN0IHZob3N0X3Njc2lfdmlydHF1ZXVlLCB2cSk7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0zMzktXHRpbmZsaWdodCA9IFx1MDAyNnN2cS1cdTAwM2VpbmZsaWdodHNbc3ZxLVx1MDAzZWluZmxpZ2h0X2lkeF07XG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtMzQ0LVxuZHJpdmVycy92aG9zdC9zY3NpLmM6MzQ1OnN0YXRpYyB2b2lkIHZob3N0X3Njc2lfcHV0X2luZmxpZ2h0KHN0cnVjdCB2aG9zdF9zY3NpX2luZmxpZ2h0ICppbmZsaWdodClcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTM0Ni17XG5kcml2ZXJzL3Zob3N0L3Njc2kuYzozNDc6XHRrcmVmX3B1dChcdTAwMjZpbmZsaWdodC1cdTAwM2VrcmVmLCB2aG9zdF9zY3NpX2RvbmVfaW5mbGlnaHQpO1xuZHJpdmVycy92aG9zdC9zY3NpLmMtMzQ4LX1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTM0OS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjM1MDpzdGF0aWMgaW50IHZob3N0X3Njc2lfY2hlY2tfdHJ1ZShzdHJ1Y3Qgc2VfcG9ydGFsX2dyb3VwICpzZV90cGcpXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0zNTEte1xuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTM1NC1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjM1NTpzdGF0aWMgY2hhciAqdmhvc3Rfc2NzaV9nZXRfZmFicmljX3d3bihzdHJ1Y3Qgc2VfcG9ydGFsX2dyb3VwICpzZV90cGcpXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0zNTYte1xuZHJpdmVycy92aG9zdC9zY3NpLmM6MzU3Olx0c3RydWN0IHZob3N0X3Njc2lfdHBnICp0cGcgPSBjb250YWluZXJfb2Yoc2VfdHBnLFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MzU4Olx0XHRcdFx0c3RydWN0IHZob3N0X3Njc2lfdHBnLCBzZV90cGcpO1xuZHJpdmVycy92aG9zdC9zY3NpLmM6MzU5Olx0c3RydWN0IHZob3N0X3Njc2lfdHBvcnQgKnRwb3J0ID0gdHBnLVx1MDAzZXRwb3J0O1xuZHJpdmVycy92aG9zdC9zY3NpLmMtMzYwLVxuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTM2My1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjM2NDpzdGF0aWMgdTE2IHZob3N0X3Njc2lfZ2V0X3RwZ3Qoc3RydWN0IHNlX3BvcnRhbF9ncm91cCAqc2VfdHBnKVxuZHJpdmVycy92aG9zdC9zY3NpLmMtMzY1LXtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjM2NjpcdHN0cnVjdCB2aG9zdF9zY3NpX3RwZyAqdHBnID0gY29udGFpbmVyX29mKHNlX3RwZyxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjM2NzpcdFx0XHRcdHN0cnVjdCB2aG9zdF9zY3NpX3RwZywgc2VfdHBnKTtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTM2OC1cdHJldHVybiB0cGctXHUwMDNldHBvcnRfdHBndDtcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0zNzAtXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzozNzE6c3RhdGljIGludCB2aG9zdF9zY3NpX2NoZWNrX3Byb3RfZmFicmljX29ubHkoc3RydWN0IHNlX3BvcnRhbF9ncm91cCAqc2VfdHBnKVxuZHJpdmVycy92aG9zdC9zY3NpLmMtMzcyLXtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjM3MzpcdHN0cnVjdCB2aG9zdF9zY3NpX3RwZyAqdHBnID0gY29udGFpbmVyX29mKHNlX3RwZyxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjM3NDpcdFx0XHRcdHN0cnVjdCB2aG9zdF9zY3NpX3RwZywgc2VfdHBnKTtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTM3NS1cbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0zNzgtXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzozNzk6c3RhdGljIGludCB2aG9zdF9zY3NpX2NvcHlfY21kX2xvZyhzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICp2cSxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjM4MDpcdFx0XHRcdCAgIHN0cnVjdCB2aG9zdF9zY3NpX2NtZCAqY21kLFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMzgxLVx0XHRcdFx0ICAgc3RydWN0IHZob3N0X2xvZyAqbG9nLFxuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTM5Ny1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjM5ODpzdGF0aWMgdm9pZCB2aG9zdF9zY3NpX2xvZ193cml0ZShzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICp2cSxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTM5OS1cdFx0XHRcdCBzdHJ1Y3Qgdmhvc3RfbG9nICpsb2csXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtNDE1LVxuZHJpdmVycy92aG9zdC9zY3NpLmM6NDE2OnN0YXRpYyB2b2lkIHZob3N0X3Njc2lfcmVsZWFzZV9jbWRfcmVzKHN0cnVjdCBzZV9jbWQgKnNlX2NtZClcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTQxNy17XG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo0MTg6XHRzdHJ1Y3Qgdmhvc3Rfc2NzaV9jbWQgKnR2X2NtZCA9IGNvbnRhaW5lcl9vZihzZV9jbWQsXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo0MTk6XHRcdFx0XHRzdHJ1Y3Qgdmhvc3Rfc2NzaV9jbWQsIHR2Y19zZV9jbWQpO1xuZHJpdmVycy92aG9zdC9zY3NpLmM6NDIwOlx0c3RydWN0IHZob3N0X3Njc2lfdmlydHF1ZXVlICpzdnEgPSBjb250YWluZXJfb2YodHZfY21kLVx1MDAzZXR2Y192cSxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjQyMTpcdFx0XHRcdHN0cnVjdCB2aG9zdF9zY3NpX3ZpcnRxdWV1ZSwgdnEpO1xuZHJpdmVycy92aG9zdC9zY3NpLmMtNDIyLVx0c3RydWN0IHZob3N0X3Njc2kgKnZzID0gc3ZxLVx1MDAzZXZzO1xuZHJpdmVycy92aG9zdC9zY3NpLmM6NDIzOlx0c3RydWN0IHZob3N0X3Njc2lfaW5mbGlnaHQgKmluZmxpZ2h0ID0gdHZfY21kLVx1MDAzZWluZmxpZ2h0O1xuZHJpdmVycy92aG9zdC9zY3NpLmMtNDI0LVx0c3RydWN0IHNjYXR0ZXJsaXN0ICpzZztcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy00NTQtXHRzYml0bWFwX2NsZWFyX2JpdChcdTAwMjZzdnEtXHUwMDNlc2NzaV90YWdzLCBzZV9jbWQtXHUwMDNlbWFwX3RhZyk7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo0NTU6XHR2aG9zdF9zY3NpX3B1dF9pbmZsaWdodChpbmZsaWdodCk7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYy00NTYtfVxuZHJpdmVycy92aG9zdC9zY3NpLmMtNDU3LVxuZHJpdmVycy92aG9zdC9zY3NpLmM6NDU4OnN0YXRpYyB2b2lkIHZob3N0X3Njc2lfcmVsZWFzZV90bWZfcmVzKHN0cnVjdCB2aG9zdF9zY3NpX3RtZiAqdG1mKVxuZHJpdmVycy92aG9zdC9zY3NpLmMtNDU5LXtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjQ2MDpcdHN0cnVjdCB2aG9zdF9zY3NpX2luZmxpZ2h0ICppbmZsaWdodCA9IHRtZi1cdTAwM2VpbmZsaWdodDtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTQ2MS1cbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy00NjYtXHRrZnJlZSh0bWYpO1xuZHJpdmVycy92aG9zdC9zY3NpLmM6NDY3Olx0dmhvc3Rfc2NzaV9wdXRfaW5mbGlnaHQoaW5mbGlnaHQpO1xuZHJpdmVycy92aG9zdC9zY3NpLmMtNDY4LX1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTQ2OS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjQ3MDpzdGF0aWMgdm9pZCB2aG9zdF9zY3NpX2Ryb3BfY21kcyhzdHJ1Y3Qgdmhvc3Rfc2NzaV92aXJ0cXVldWUgKnN2cSlcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTQ3MS17XG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo0NzI6XHRzdHJ1Y3Qgdmhvc3Rfc2NzaV9jbWQgKmNtZCwgKnQ7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYy00NzMtXHRzdHJ1Y3QgbGxpc3Rfbm9kZSAqbGxub2RlO1xuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTQ3Ni1cdGxsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoY21kLCB0LCBsbG5vZGUsIHR2Y19jb21wbGV0aW9uX2xpc3QpXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo0Nzc6XHRcdHZob3N0X3Njc2lfcmVsZWFzZV9jbWRfcmVzKFx1MDAyNmNtZC1cdTAwM2V0dmNfc2VfY21kKTtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTQ3OC19XG5kcml2ZXJzL3Zob3N0L3Njc2kuYy00NzktXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo0ODA6c3RhdGljIHZvaWQgdmhvc3Rfc2NzaV9yZWxlYXNlX2NtZChzdHJ1Y3Qgc2VfY21kICpzZV9jbWQpXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy00ODEte1xuZHJpdmVycy92aG9zdC9zY3NpLmMtNDgyLVx0aWYgKHNlX2NtZC1cdTAwM2VzZV9jbWRfZmxhZ3MgXHUwMDI2IFNDRl9TQ1NJX1RNUl9DREIpIHtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjQ4MzpcdFx0c3RydWN0IHZob3N0X3Njc2lfdG1mICp0bWYgPSBjb250YWluZXJfb2Yoc2VfY21kLFxuZHJpdmVycy92aG9zdC9zY3NpLmM6NDg0Olx0XHRcdFx0XHRzdHJ1Y3Qgdmhvc3Rfc2NzaV90bWYsIHNlX2NtZCk7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYy00ODUtXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtNDg3LVx0fSBlbHNlIHtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjQ4ODpcdFx0c3RydWN0IHZob3N0X3Njc2lfY21kICpjbWQgPSBjb250YWluZXJfb2Yoc2VfY21kLFxuZHJpdmVycy92aG9zdC9zY3NpLmM6NDg5Olx0XHRcdFx0XHRzdHJ1Y3Qgdmhvc3Rfc2NzaV9jbWQsIHR2Y19zZV9jbWQpO1xuZHJpdmVycy92aG9zdC9zY3NpLmM6NDkwOlx0XHRzdHJ1Y3Qgdmhvc3Rfc2NzaV92aXJ0cXVldWUgKnN2cSA9ICBjb250YWluZXJfb2YoY21kLVx1MDAzZXR2Y192cSxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjQ5MTpcdFx0XHRcdFx0c3RydWN0IHZob3N0X3Njc2lfdmlydHF1ZXVlLCB2cSk7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYy00OTItXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtNDk0LVx0XHRpZiAoIXZob3N0X3ZxX3dvcmtfcXVldWUoXHUwMDI2c3ZxLVx1MDAzZXZxLCBcdTAwMjZzdnEtXHUwMDNlY29tcGxldGlvbl93b3JrKSlcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjQ5NTpcdFx0XHR2aG9zdF9zY3NpX2Ryb3BfY21kcyhzdnEpO1xuZHJpdmVycy92aG9zdC9zY3NpLmMtNDk2LVx0fVxuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTQ5OC1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjQ5OTpzdGF0aWMgaW50IHZob3N0X3Njc2lfd3JpdGVfcGVuZGluZyhzdHJ1Y3Qgc2VfY21kICpzZV9jbWQpXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy01MDAte1xuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTUwNS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjUwNjpzdGF0aWMgaW50IHZob3N0X3Njc2lfcXVldWVfZGF0YV9pbihzdHJ1Y3Qgc2VfY21kICpzZV9jbWQpXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy01MDcte1xuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTUxMS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjUxMjpzdGF0aWMgaW50IHZob3N0X3Njc2lfcXVldWVfc3RhdHVzKHN0cnVjdCBzZV9jbWQgKnNlX2NtZClcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTUxMy17XG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtNTE3LVxuZHJpdmVycy92aG9zdC9zY3NpLmM6NTE4OnN0YXRpYyB2b2lkIHZob3N0X3Njc2lfcXVldWVfdG1fcnNwKHN0cnVjdCBzZV9jbWQgKnNlX2NtZClcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTUxOS17XG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo1MjA6XHRzdHJ1Y3Qgdmhvc3Rfc2NzaV90bWYgKnRtZiA9IGNvbnRhaW5lcl9vZihzZV9jbWQsIHN0cnVjdCB2aG9zdF9zY3NpX3RtZixcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTUyMS1cdFx0XHRcdFx0XHQgIHNlX2NtZCk7XG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtNTI2LVxuZHJpdmVycy92aG9zdC9zY3NpLmM6NTI3OnN0YXRpYyB2b2lkIHZob3N0X3Njc2lfYWJvcnRlZF90YXNrKHN0cnVjdCBzZV9jbWQgKnNlX2NtZClcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTUyOC17XG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtNTMxLVxuZHJpdmVycy92aG9zdC9zY3NpLmM6NTMyOnN0YXRpYyB2b2lkIHZob3N0X3Njc2lfZnJlZV9ldnQoc3RydWN0IHZob3N0X3Njc2kgKnZzLCBzdHJ1Y3Qgdmhvc3Rfc2NzaV9ldnQgKmV2dClcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTUzMy17XG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtNTM3LVxuZHJpdmVycy92aG9zdC9zY3NpLmM6NTM4OnN0YXRpYyBzdHJ1Y3Qgdmhvc3Rfc2NzaV9ldnQgKlxuZHJpdmVycy92aG9zdC9zY3NpLmM6NTM5OnZob3N0X3Njc2lfYWxsb2NhdGVfZXZ0KHN0cnVjdCB2aG9zdF9zY3NpICp2cyxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTU0MC1cdFx0ICAgICAgIHUzMiBldmVudCwgdTMyIHJlYXNvbilcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy01NDItXHRzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICp2cSA9IFx1MDAyNnZzLVx1MDAzZXZxc1tWSE9TVF9TQ1NJX1ZRX0VWVF0udnE7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo1NDM6XHRzdHJ1Y3Qgdmhvc3Rfc2NzaV9ldnQgKmV2dDtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTU0NC1cbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy01NTEtXHRpZiAoIWV2dCkge1xuZHJpdmVycy92aG9zdC9zY3NpLmM6NTUyOlx0XHR2cV9lcnIodnEsIFwmIzM0O0ZhaWxlZCB0byBhbGxvY2F0ZSB2aG9zdF9zY3NpX2V2dFxcblwmIzM0Oyk7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYy01NTMtXHRcdHZzLVx1MDAzZXZzX2V2ZW50c19taXNzZWQgPSB0cnVlO1xuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTU2My1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjU2NDpzdGF0aWMgaW50IHZob3N0X3Njc2lfY2hlY2tfc3RvcF9mcmVlKHN0cnVjdCBzZV9jbWQgKnNlX2NtZClcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTU2NS17XG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmM9NTY5PXN0YXRpYyB2b2lkXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo1NzA6dmhvc3Rfc2NzaV9kb19ldnRfd29yayhzdHJ1Y3Qgdmhvc3Rfc2NzaSAqdnMsIHN0cnVjdCB2aG9zdF9zY3NpX2V2dCAqZXZ0KVxuZHJpdmVycy92aG9zdC9zY3NpLmMtNTcxLXtcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy02MjctXHRlbHNlXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo2Mjg6XHRcdHZxX2Vycih2cSwgXCYjMzQ7RmF1bHRlZCBvbiB2aG9zdF9zY3NpX3NlbmRfZXZlbnRcXG5cJiMzNDspO1xuZHJpdmVycy92aG9zdC9zY3NpLmMtNjI5LVxuZHJpdmVycy92aG9zdC9zY3NpLmM6NjMwOlx0dmhvc3Rfc2NzaV9sb2dfd3JpdGUodnEsIHZxX2xvZywgbG9nX251bSk7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYy02MzEtfVxuZHJpdmVycy92aG9zdC9zY3NpLmMtNjMyLVxuZHJpdmVycy92aG9zdC9zY3NpLmM6NjMzOnN0YXRpYyB2b2lkIHZob3N0X3Njc2lfY29tcGxldGVfZXZlbnRzKHN0cnVjdCB2aG9zdF9zY3NpICp2cywgYm9vbCBkcm9wKVxuZHJpdmVycy92aG9zdC9zY3NpLmMtNjM0LXtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTYzNS1cdHN0cnVjdCB2aG9zdF92aXJ0cXVldWUgKnZxID0gXHUwMDI2dnMtXHUwMDNldnFzW1ZIT1NUX1NDU0lfVlFfRVZUXS52cTtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjYzNjpcdHN0cnVjdCB2aG9zdF9zY3NpX2V2dCAqZXZ0LCAqdDtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTYzNy1cdHN0cnVjdCBsbGlzdF9ub2RlICpsbG5vZGU7XG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtNjQyLVx0XHRpZiAoIWRyb3ApXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo2NDM6XHRcdFx0dmhvc3Rfc2NzaV9kb19ldnRfd29yayh2cywgZXZ0KTtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjY0NDpcdFx0dmhvc3Rfc2NzaV9mcmVlX2V2dCh2cywgZXZ0KTtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTY0NS1cdH1cbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy02NDgtXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo2NDk6c3RhdGljIHZvaWQgdmhvc3Rfc2NzaV9ldnRfd29yayhzdHJ1Y3Qgdmhvc3Rfd29yayAqd29yaylcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTY1MC17XG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtNjUyLVx0XHRcdFx0XHQgICAgIHZzX2V2ZW50X3dvcmspO1xuZHJpdmVycy92aG9zdC9zY3NpLmM6NjUzOlx0dmhvc3Rfc2NzaV9jb21wbGV0ZV9ldmVudHModnMsIGZhbHNlKTtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTY1NC19XG5kcml2ZXJzL3Zob3N0L3Njc2kuYy02NTUtXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo2NTY6c3RhdGljIGludCB2aG9zdF9zY3NpX2NvcHlfc2dsX3RvX2lvdihzdHJ1Y3Qgdmhvc3Rfc2NzaV9jbWQgKmNtZClcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTY1Ny17XG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtNjg1LSAqL1xuZHJpdmVycy92aG9zdC9zY3NpLmM6Njg2OnN0YXRpYyB2b2lkIHZob3N0X3Njc2lfY29tcGxldGVfY21kX3dvcmsoc3RydWN0IHZob3N0X3dvcmsgKndvcmspXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy02ODcte1xuZHJpdmVycy92aG9zdC9zY3NpLmM6Njg4Olx0c3RydWN0IHZob3N0X3Njc2lfdmlydHF1ZXVlICpzdnEgPSBjb250YWluZXJfb2Yod29yayxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjY4OTpcdFx0XHRcdHN0cnVjdCB2aG9zdF9zY3NpX3ZpcnRxdWV1ZSwgY29tcGxldGlvbl93b3JrKTtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTY5MC1cdHN0cnVjdCB2aXJ0aW9fc2NzaV9jbWRfcmVzcCB2X3JzcDtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjY5MTpcdHN0cnVjdCB2aG9zdF9zY3NpX2NtZCAqY21kLCAqdDtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTY5Mi1cdHN0cnVjdCBsbGlzdF9ub2RlICpsbG5vZGU7XG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtNzA4LVxuZHJpdmVycy92aG9zdC9zY3NpLmM6NzA5Olx0XHRpZiAoY21kLVx1MDAzZXJlYWRfaXRlciBcdTAwMjZcdTAwMjYgdmhvc3Rfc2NzaV9jb3B5X3NnbF90b19pb3YoY21kKSkge1xuZHJpdmVycy92aG9zdC9zY3NpLmMtNzEwLVx0XHRcdHZfcnNwLnJlc3BvbnNlID0gVklSVElPX1NDU0lfU19CQURfVEFSR0VUO1xuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTczMS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjczMjpcdFx0dmhvc3Rfc2NzaV9sb2dfd3JpdGUoY21kLVx1MDAzZXR2Y192cSwgY21kLVx1MDAzZXR2Y19sb2csXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy03MzMtXHRcdFx0XHQgICAgIGNtZC1cdTAwM2V0dmNfbG9nX251bSk7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYy03MzQtXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo3MzU6XHRcdHZob3N0X3Njc2lfcmVsZWFzZV9jbWRfcmVzKHNlX2NtZCk7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYy03MzYtXHR9XG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtNzQyLVxuZHJpdmVycy92aG9zdC9zY3NpLmM6NzQzOnN0YXRpYyBzdHJ1Y3Qgdmhvc3Rfc2NzaV9jbWQgKlxuZHJpdmVycy92aG9zdC9zY3NpLmM6NzQ0OnZob3N0X3Njc2lfZ2V0X2NtZChzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICp2cSwgdTY0IHNjc2lfdGFnKVxuZHJpdmVycy92aG9zdC9zY3NpLmMtNzQ1LXtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjc0NjpcdHN0cnVjdCB2aG9zdF9zY3NpX3ZpcnRxdWV1ZSAqc3ZxID0gY29udGFpbmVyX29mKHZxLFxuZHJpdmVycy92aG9zdC9zY3NpLmM6NzQ3Olx0XHRcdFx0XHRzdHJ1Y3Qgdmhvc3Rfc2NzaV92aXJ0cXVldWUsIHZxKTtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjc0ODpcdHN0cnVjdCB2aG9zdF9zY3NpX2NtZCAqY21kO1xuZHJpdmVycy92aG9zdC9zY3NpLmMtNzQ5LVx0c3RydWN0IHNjYXR0ZXJsaXN0ICpzZ2wsICpwcm90X3NnbDtcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy03NjctXHRjbWQtXHUwMDNldHZjX3NlX2NtZC5tYXBfdGFnID0gdGFnO1xuZHJpdmVycy92aG9zdC9zY3NpLmM6NzY4Olx0Y21kLVx1MDAzZWluZmxpZ2h0ID0gdmhvc3Rfc2NzaV9nZXRfaW5mbGlnaHQodnEpO1xuZHJpdmVycy92aG9zdC9zY3NpLmMtNzY5LVxuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTc3Mi1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjc3MzpzdGF0aWMgdm9pZCB2aG9zdF9zY3NpX3JldmVydF9tYXBfaW92X3RvX3NnbChzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIsXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy03NzQtXHRcdFx0XHRcdCAgICAgc3RydWN0IHNjYXR0ZXJsaXN0ICpjdXJyLFxuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTc5OT1zdGF0aWMgaW50XG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo4MDA6dmhvc3Rfc2NzaV9tYXBfdG9fc2dsKHN0cnVjdCB2aG9zdF9zY3NpX2NtZCAqY21kLFxuZHJpdmVycy92aG9zdC9zY3NpLmMtODAxLVx0XHQgICAgICBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIsXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtODA1LXtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjgwNjpcdHN0cnVjdCB2aG9zdF9zY3NpX3ZpcnRxdWV1ZSAqc3ZxID0gY29udGFpbmVyX29mKGNtZC1cdTAwM2V0dmNfdnEsXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo4MDc6XHRcdFx0XHRcdHN0cnVjdCB2aG9zdF9zY3NpX3ZpcnRxdWV1ZSwgdnEpO1xuZHJpdmVycy92aG9zdC9zY3NpLmMtODA4LVx0c3RydWN0IHBhZ2UgKipwYWdlcyA9IHN2cS1cdTAwM2V1cGFnZXM7XG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtODUxLXJldmVydF9pdGVyX2dldF9wYWdlczpcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjg1MjpcdHZob3N0X3Njc2lfcmV2ZXJ0X21hcF9pb3ZfdG9fc2dsKGl0ZXIsICpzZ2wsIHNnKTtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTg1My1cbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz04NjU9c3RhdGljIGludFxuZHJpdmVycy92aG9zdC9zY3NpLmM6ODY2OnZob3N0X3Njc2lfY2FsY19zZ2xzKHN0cnVjdCBpb3ZfaXRlciAqaXRlciwgc2l6ZV90IGJ5dGVzLCBpbnQgbWF4X3NnbHMpXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy04Njcte1xuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTg4NT1zdGF0aWMgaW50XG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo4ODY6dmhvc3Rfc2NzaV9jb3B5X2lvdl90b19zZ2woc3RydWN0IHZob3N0X3Njc2lfY21kICpjbWQsIHN0cnVjdCBpb3ZfaXRlciAqaXRlcixcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTg4Ny1cdFx0XHQgICBzdHJ1Y3Qgc2dfdGFibGUgKnNnX3RhYmxlLCBpbnQgc2dfY291bnQsXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmM9OTQ1PXN0YXRpYyBpbnRcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjk0Njp2aG9zdF9zY3NpX21hcF9pb3ZfdG9fc2dsKHN0cnVjdCB2aG9zdF9zY3NpX2NtZCAqY21kLCBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIsXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy05NDctXHRcdFx0ICBzdHJ1Y3Qgc2dfdGFibGUgKnNnX3RhYmxlLCBpbnQgc2dfY291bnQsIGJvb2wgaXNfcHJvdClcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy05NTItXHR3aGlsZSAoaW92X2l0ZXJfY291bnQoaXRlcikpIHtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjk1MzpcdFx0cmV0ID0gdmhvc3Rfc2NzaV9tYXBfdG9fc2dsKGNtZCwgaXRlciwgc2dfdGFibGUsIFx1MDAyNnNnLCBpc19wcm90KTtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTk1NC1cdFx0aWYgKHJldCBcdTAwM2MgMCkge1xuZHJpdmVycy92aG9zdC9zY3NpLmM6OTU1Olx0XHRcdHZob3N0X3Njc2lfcmV2ZXJ0X21hcF9pb3ZfdG9fc2dsKGl0ZXIsIHNnX3RhYmxlLVx1MDAzZXNnbCxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTk1Ni1cdFx0XHRcdFx0XHRcdCBzZyk7XG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmM9OTY0PXN0YXRpYyBpbnRcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjk2NTp2aG9zdF9zY3NpX21hcGFsKHN0cnVjdCB2aG9zdF9zY3NpICp2cywgc3RydWN0IHZob3N0X3Njc2lfY21kICpjbWQsXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy05NjYtXHRcdCBzaXplX3QgcHJvdF9ieXRlcywgc3RydWN0IGlvdl9pdGVyICpwcm90X2l0ZXIsXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtOTcxLVx0aWYgKHByb3RfYnl0ZXMpIHtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjk3MjpcdFx0c2dsX2NvdW50ID0gdmhvc3Rfc2NzaV9jYWxjX3NnbHMocHJvdF9pdGVyLCBwcm90X2J5dGVzLFxuZHJpdmVycy92aG9zdC9zY3NpLmMtOTczLVx0XHRcdFx0XHRcdCBWSE9TVF9TQ1NJX1BSRUFMTE9DX1BST1RfU0dMUyk7XG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtOTg0LVxuZHJpdmVycy92aG9zdC9zY3NpLmM6OTg1Olx0XHRyZXQgPSB2aG9zdF9zY3NpX21hcF9pb3ZfdG9fc2dsKGNtZCwgcHJvdF9pdGVyLFxuZHJpdmVycy92aG9zdC9zY3NpLmMtOTg2LVx0XHRcdFx0XHRcdFx1MDAyNmNtZC1cdTAwM2Vwcm90X3RhYmxlLFxuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTk5NC1cdH1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjk5NTpcdHNnbF9jb3VudCA9IHZob3N0X3Njc2lfY2FsY19zZ2xzKGRhdGFfaXRlciwgZGF0YV9ieXRlcyxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTk5Ni1cdFx0XHRcdFx0IFZIT1NUX1NDU0lfUFJFQUxMT0NfU0dMUyk7XG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTAwOS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjEwMTA6XHRyZXQgPSB2aG9zdF9zY3NpX21hcF9pb3ZfdG9fc2dsKGNtZCwgZGF0YV9pdGVyLCBcdTAwMjZjbWQtXHUwMDNldGFibGUsXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xMDExLVx0XHRcdFx0XHRjbWQtXHUwMDNldHZjX3NnbF9jb3VudCwgZmFsc2UpO1xuZHJpdmVycy92aG9zdC9zY3NpLmMtMTAxMi1cdGlmIChyZXQgPT0gLUVJTlZBTClcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjEwMTM6XHRcdHJldCA9IHZob3N0X3Njc2lfY29weV9pb3ZfdG9fc2dsKGNtZCwgZGF0YV9pdGVyLCBcdTAwMjZjbWQtXHUwMDNldGFibGUsXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xMDE0LVx0XHRcdFx0XHRcdCBjbWQtXHUwMDNldHZjX3NnbF9jb3VudCwgZGF0YV9kaXIpO1xuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTEwMjItXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxMDIzOnN0YXRpYyBpbnQgdmhvc3Rfc2NzaV90b190Y21fYXR0cihpbnQgYXR0cilcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTEwMjQte1xuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTEwMzktXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxMDQwOnN0YXRpYyB2b2lkIHZob3N0X3Njc2lfdGFyZ2V0X3F1ZXVlX2NtZChzdHJ1Y3Qgdmhvc3Rfc2NzaV9uZXh1cyAqbmV4dXMsXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxMDQxOlx0XHRcdFx0XHRzdHJ1Y3Qgdmhvc3Rfc2NzaV9jbWQgKmNtZCxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTEwNDItXHRcdFx0XHRcdHVuc2lnbmVkIGNoYXIgKmNkYiwgdTE2IGx1bixcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xMDYyLVx0dGFyZ2V0X2luaXRfY21kKHNlX2NtZCwgbmV4dXMtXHUwMDNldHZuX3NlX3Nlc3MsIFx1MDAyNmNtZC1cdTAwM2V0dmNfc2Vuc2VfYnVmWzBdLFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTA2MzpcdFx0XHRsdW4sIGV4cF9kYXRhX2xlbiwgdmhvc3Rfc2NzaV90b190Y21fYXR0cih0YXNrX2F0dHIpLFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTA2NC1cdFx0XHRkYXRhX2RpciwgVEFSR0VUX1NDRl9BQ0tfS1JFRik7XG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmM9MTA3ND1zdGF0aWMgdm9pZFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTA3NTp2aG9zdF9zY3NpX3NlbmRfc3RhdHVzKHN0cnVjdCB2aG9zdF9zY3NpICp2cywgc3RydWN0IHZob3N0X3ZpcnRxdWV1ZSAqdnEsXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxMDc2Olx0XHQgICAgICAgc3RydWN0IHZob3N0X3Njc2lfY3R4ICp2YywgdTggc3RhdHVzKVxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTA3Ny17XG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmM9MTEwMD1zdGF0aWMgdm9pZFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTEwMTp2aG9zdF9zY3NpX3NlbmRfYmFkX3RhcmdldChzdHJ1Y3Qgdmhvc3Rfc2NzaSAqdnMsXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xMTAyLVx0XHRcdCAgIHN0cnVjdCB2aG9zdF92aXJ0cXVldWUgKnZxLFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTEwMzpcdFx0XHQgICBzdHJ1Y3Qgdmhvc3Rfc2NzaV9jdHggKnZjLCBpbnQgdHlwZSlcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTExMDQte1xuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTExMzg9c3RhdGljIGludFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTEzOTp2aG9zdF9zY3NpX2dldF9kZXNjKHN0cnVjdCB2aG9zdF9zY3NpICp2cywgc3RydWN0IHZob3N0X3ZpcnRxdWV1ZSAqdnEsXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxMTQwOlx0XHQgICAgc3RydWN0IHZob3N0X3Njc2lfY3R4ICp2YyxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTExNDEtXHRcdCAgICBzdHJ1Y3Qgdmhvc3RfbG9nICpsb2csIHVuc2lnbmVkIGludCAqbG9nX251bSlcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz0xMTkyPXN0YXRpYyBpbnRcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjExOTM6dmhvc3Rfc2NzaV9jaGtfc2l6ZShzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICp2cSwgc3RydWN0IHZob3N0X3Njc2lfY3R4ICp2YylcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTExOTQte1xuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTEyMTA9c3RhdGljIGludFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTIxMTp2aG9zdF9zY3NpX2dldF9yZXEoc3RydWN0IHZob3N0X3ZpcnRxdWV1ZSAqdnEsIHN0cnVjdCB2aG9zdF9zY3NpX2N0eCAqdmMsXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxMjEyOlx0XHQgICBzdHJ1Y3Qgdmhvc3Rfc2NzaV90cGcgKip0cGdwKVxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTIxMy17XG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTIyMi1cdH0gZWxzZSB7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxMjIzOlx0XHRzdHJ1Y3Qgdmhvc3Rfc2NzaV90cGcgKip2c190cGcsICp0cGcgPSBOVUxMO1xuZHJpdmVycy92aG9zdC9zY3NpLmMtMTIyNC1cbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz0xMjQxPXN0YXRpYyBpbnRcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjEyNDI6dmhvc3Rfc2NzaV9zZXR1cF9yZXNwX2lvdnMoc3RydWN0IHZob3N0X3Njc2lfY21kICpjbWQsIHN0cnVjdCBpb3ZlYyAqaW5faW92cyxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTEyNDMtXHRcdFx0ICAgdW5zaWduZWQgaW50IGluX2lvdnNfY250KVxuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTEyODI9c3RhdGljIHZvaWRcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjEyODM6dmhvc3Rfc2NzaV9oYW5kbGVfdnEoc3RydWN0IHZob3N0X3Njc2kgKnZzLCBzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICp2cSlcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTEyODQte1xuZHJpdmVycy92aG9zdC9zY3NpLmM6MTI4NTpcdHN0cnVjdCB2aG9zdF9zY3NpX3RwZyAqKnZzX3RwZywgKnRwZztcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTEyODYtXHRzdHJ1Y3QgdmlydGlvX3Njc2lfY21kX3JlcSB2X3JlcTtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTEyODctXHRzdHJ1Y3QgdmlydGlvX3Njc2lfY21kX3JlcV9waSB2X3JlcV9waTtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjEyODg6XHRzdHJ1Y3Qgdmhvc3Rfc2NzaV9uZXh1cyAqbmV4dXM7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxMjg5Olx0c3RydWN0IHZob3N0X3Njc2lfY3R4IHZjO1xuZHJpdmVycy92aG9zdC9zY3NpLmM6MTI5MDpcdHN0cnVjdCB2aG9zdF9zY3NpX2NtZCAqY21kO1xuZHJpdmVycy92aG9zdC9zY3NpLmMtMTI5MS1cdHN0cnVjdCBpb3ZfaXRlciBpbl9pdGVyLCBwcm90X2l0ZXIsIGRhdGFfaXRlcjtcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xMzE5LVx0ZG8ge1xuZHJpdmVycy92aG9zdC9zY3NpLmM6MTMyMDpcdFx0cmV0ID0gdmhvc3Rfc2NzaV9nZXRfZGVzYyh2cywgdnEsIFx1MDAyNnZjLCB2cV9sb2csIFx1MDAyNmxvZ19udW0pO1xuZHJpdmVycy92aG9zdC9zY3NpLmMtMTMyMS1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xMzQ0LVx0XHQgKi9cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjEzNDU6XHRcdHJldCA9IHZob3N0X3Njc2lfY2hrX3NpemUodnEsIFx1MDAyNnZjKTtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTEzNDYtXHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTM0OC1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjEzNDk6XHRcdHJldCA9IHZob3N0X3Njc2lfZ2V0X3JlcSh2cSwgXHUwMDI2dmMsIFx1MDAyNnRwZyk7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xMzUwLVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTEzODktXHRcdCAqIElmIFQxMF9QSSBoZWFkZXIgJiM0MzsgcGF5bG9hZCBpcyBwcmVzZW50LCBzZXR1cCBwcm90X2l0ZXIgdmFsdWVzXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxMzkwOlx0XHQgKiBhbmQgcmVjYWxjdWxhdGUgZGF0YV9pdGVyIGZvciB2aG9zdF9zY3NpX21hcGFsKCkgbWFwcGluZyB0b1xuZHJpdmVycy92aG9zdC9zY3NpLmMtMTM5MS1cdFx0ICogaG9zdCBzY2F0dGVybGlzdHMgdmlhIGdldF91c2VyX3BhZ2VzX2Zhc3QoKS5cbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xNDQ4LVx0XHRpZiAoIW5leHVzKSB7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxNDQ5Olx0XHRcdHZxX2Vycih2cSwgXCYjMzQ7VW5hYmxlIHRvIGxvY2F0ZSBhY3RpdmUgc3RydWN0IHZob3N0X3Njc2lfbmV4dXNcXG5cJiMzNDspO1xuZHJpdmVycy92aG9zdC9zY3NpLmMtMTQ1MC1cdFx0XHRyZXQgPSAtRUlPO1xuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE0NTMtXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxNDU0Olx0XHRjbWQgPSB2aG9zdF9zY3NpX2dldF9jbWQodnEsIHRhZyk7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xNDU1LVx0XHRpZiAoSVNfRVJSKGNtZCkpIHtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE0NTYtXHRcdFx0cmV0ID0gUFRSX0VSUihjbWQpO1xuZHJpdmVycy92aG9zdC9zY3NpLmM6MTQ1NzpcdFx0XHR2cV9lcnIodnEsIFwmIzM0O3Zob3N0X3Njc2lfZ2V0X3RhZyBmYWlsZWQgJWRcXG5cJiMzNDssIHJldCk7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xNDU4LVx0XHRcdGdvdG8gZXJyO1xuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE0NjEtXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxNDYyOlx0XHRyZXQgPSB2aG9zdF9zY3NpX3NldHVwX3Jlc3BfaW92cyhjbWQsIFx1MDAyNnZxLVx1MDAzZWlvdlt2Yy5vdXRdLCB2Yy5pbik7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xNDYzLVx0XHRpZiAocmV0KSB7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xNDY0LVx0XHRcdHZxX2Vycih2cSwgXCYjMzQ7RmFpbGVkIHRvIGFsbG9jIHJlY3YgaW92c1xcblwmIzM0Oyk7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxNDY1Olx0XHRcdHZob3N0X3Njc2lfcmVsZWFzZV9jbWRfcmVzKFx1MDAyNmNtZC1cdTAwM2V0dmNfc2VfY21kKTtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE0NjYtXHRcdFx0Z290byBlcnI7XG4tLVxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA3OjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1NjcwCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogNzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpdCBzdGFuZHM6CgoqKk5hdmlnYXRpbmcgdGhlIFZob3N0LVNDU0kgQ29kZWJhc2UqKgoKT2theSwgc28gSSYjMzk7bSB0cnlpbmcgdG8gdHJhY2UgdGhlIHBhdGggdGhyb3VnaCB0aGUgdmhvc3Qtc2NzaSBjb2RlLiBNeSBpbml0aWFsIGludHVpdGlvbiBwb2ludHMgdG93YXJkcyBgdmhvc3Rfc2NzaV9oYW5kbGVfdnFgIGFuZCBgdmhvc3Rfc2NzaV9jb21wbGV0ZV9jbWRfd29ya2AgYXMgdGhlIGtleSBlbnRyeSBwb2ludHMuIEJ1dCBob2xkIG9uLCBJIHJlbWVtYmVyIG5vdywgYHZob3N0X3Njc2lfaGFuZGxlX3ZxYCBpcyBhY3R1YWxseSBjYWxsZWQgZnJvbSBgdmhvc3Rfc2NzaV9oYW5kbGVfa2lja2AuIFRoYXQgbWFrZXMgbW9yZSBzZW5zZTsgdGhlIGtpY2sgaXMgd2hhdCBzaWduYWxzIHRoYXQgdGhlcmUmIzM5O3Mgd29yayB0byBiZSBkb25lLiBTbywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBoYXBwZW5pbmcgKmJlZm9yZSogYHZob3N0X3Njc2lfaGFuZGxlX3ZxYCBnZXRzIGludm9sdmVkLiBMZXQmIzM5O3MgZGlnIGludG8gYHZob3N0X3Njc2lfaGFuZGxlX2tpY2tgIGFuZCBzZWUgd2hhdCYjMzk7cyBnb2luZyBvbiB0aGVyZS4gSSYjMzk7bSBndWVzc2luZyB0aGlzIHdpbGwgZ2l2ZSBtZSB0aGUgY3J1Y2lhbCBjb250ZXh0IEkmIzM5O20gbWlzc2luZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDc6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dmhvc3Rfc2NzaV9oYW5kbGVfa2ljayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmhvc3Qvc2NzaS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmhvc3Qvc2NzaS5jPTE4MjY9c3RhdGljIHZvaWQgdmhvc3Rfc2NzaV9ldnRfaGFuZGxlX2tpY2soc3RydWN0IHZob3N0X3dvcmsgKndvcmspXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTg0Mi1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjE4NDM6c3RhdGljIHZvaWQgdmhvc3Rfc2NzaV9oYW5kbGVfa2ljayhzdHJ1Y3Qgdmhvc3Rfd29yayAqd29yaylcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE4NDQte1xuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTIyNzA9c3RhdGljIGludCB2aG9zdF9zY3NpX29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmYpXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjMyMS1cdFx0XHRcdHZob3N0X3Njc2lfY29tcGxldGVfY21kX3dvcmspO1xuZHJpdmVycy92aG9zdC9zY3NpLmM6MjMyMjpcdFx0c3ZxLVx1MDAzZXZxLmhhbmRsZV9raWNrID0gdmhvc3Rfc2NzaV9oYW5kbGVfa2ljaztcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTIzMjMtXHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA3OjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2MjI4CgkJCQkJCQlvdXRwdXQ6IDUzCgkJCQkJCQl0aG91Z2h0czogMjcwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgdGhlIFNDU0kgdmhvc3QgSW1wbGVtZW50YXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtSaWdodCwgYHZob3N0X3Njc2lfaGFuZGxlX2tpY2tgIGlzIHRoZSBraWNrIGhhbmRsZXIsIGdvdCBpdC4mIzM0OyBCdXQgdGhlbiBJJiMzOTttIGltbWVkaWF0ZWx5IGRyYXduIHRvIGB2aG9zdF9zY3NpX2NvbXBsZXRlX2NtZF93b3JrYC4gVGhhdCYjMzk7cyB0aGUgY29tcGxldGlvbiB3b3JrIGhhbmRsZXIsIGFuZCB0aGUgcGF0Y2ggbW9kaWZpZXMgKnRoYXQqIGZ1bmN0aW9uLiBNeSBndXQgc2F5cywgJiMzNDtEZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcsJiMzNDsgZ2l2ZW4gdGhhdCBpdCYjMzk7cyBhIGNyaXRpY2FsIHBpZWNlLgoKTm93LCBJIG5lZWQgdG8gZGVmaW5lIG15IGZvY3VzLiBJdCYjMzk7cyBnb2luZyB0byBiZSBgdmhvc3Rfc2NzaV9jb21wbGV0ZV9jbWRfd29ya2AgYW5kIGB2aG9zdF9zY3NpX2hhbmRsZV9raWNrYCwgdGhvc2UgYXJlIHRoZSBrZXkgc3ltYm9scy4gV2FpdCBhIG1pbnV0ZS4uLiBpcyBgdmhvc3Rfc2NzaV9jb21wbGV0ZV9jbWRfd29ya2Agc3RhdGljPyBJIG5lZWQgdG8ga25vdywgYmVjYXVzZSBpZiBpdCYjMzk7cyBpbmxpbmVkLCBmdXp6aW5nIGl0IGRpcmVjdGx5IGlzIG11Y2ggbGVzcyBlZmZlY3RpdmUuIFllcywgaXQgKmlzKiBkZWNsYXJlZCBzdGF0aWMuIAoKVGhhdCByaW5ncyBhbGFybSBiZWxscy4gVGhlIGdlbmVyYWwgZ3VpZGFuY2UgaXMgJiMzNDtQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMmIzM0Oy4gQnV0IGhvbGQgb24uLi4gSSByZW1lbWJlciBzZWVpbmcgYHZob3N0X3Njc2lfY29tcGxldGVfY21kX3dvcmtgIGJlaW5nIHVzZWQgYXMgYSBmdW5jdGlvbiBwb2ludGVyOiBgdmhvc3Rfd29ya19pbml0KCZhbXA7c3ZxLSZndDtjb21wbGV0aW9uX3dvcmssIHZob3N0X3Njc2lfY29tcGxldGVfY21kX3dvcmspO2AgSWYgaXQmIzM5O3MgdXNlZCBhcyBhIGZ1bmN0aW9uIHBvaW50ZXIsIHRoZSBjb21waWxlciAqd29uJiMzOTt0KiBpbmxpbmUgaXQhIEl0ICp3aWxsKiBoYXZlIGEgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3MuIFNvLCB0aGF0JiMzOTtzIGdvb2QuCgpKdXN0IHRvIGJlIHRob3JvdWdoLCBJIHNob3VsZCB2ZXJpZnkgdGhhdCBgdmhvc3Rfc2NzaV9oYW5kbGVfa2lja2AgaXMgYWxzbyB1c2VkIGFzIGEgZnVuY3Rpb24gcG9pbnRlci4gVGhlbiBJIG5lZWQgdG8gY2hlY2sgdGhlIGVudGlyZSBgdmhvc3Qvc2NzaS5jYCBmaWxlIGZvciBhbnkgb3RoZXIgbm9uLXN0YXRpYyBmdW5jdGlvbnMsIGp1c3QgdG8gbWFrZSBzdXJlIEkgZG9uJiMzOTt0IG1pc3MgYW55dGhpbmcgb2J2aW91cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDc6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XlthLXpBLVpfXVthLXpBLVowLTlfXSogdmhvc3Rfc2NzaV8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3Zob3N0L3Njc2kuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3Zob3N0L3Njc2kuYz05Nj1NT0RVTEVfUEFSTV9ERVNDKGlubGluZV9zZ19jbnQsIFwmIzM0O1NldCB0aGUgbnVtYmVyIG9mIHNjYXR0ZXJsaXN0IGVudHJpZXMgdG8gcHJlLWFsbG9jYXRlLiBUaGUgZGVmYXVsdCBpcyAyMDQ4LlwmIzM0Oyk7XG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTAzLVxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTA0OnN0cnVjdCB2aG9zdF9zY3NpX2luZmxpZ2h0IHtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTEwNS1cdC8qIFdhaXQgZm9yIHRoZSBmbHVzaCBvcGVyYXRpb24gdG8gZmluaXNoICovXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTEwLVxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTExOnN0cnVjdCB2aG9zdF9zY3NpX2NtZCB7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xMTItXHQvKiBEZXNjcmlwdG9yIGZyb20gdmhvc3RfZ2V0X3ZxX2Rlc2MoKSBmb3IgdmlydF9xdWV1ZSBzZWdtZW50ICovXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTQ2LVxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTQ3OnN0cnVjdCB2aG9zdF9zY3NpX25leHVzIHtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE0OC1cdC8qIFBvaW50ZXIgdG8gVENNIHNlc3Npb24gZm9yIElfVCBOZXh1cyAqL1xuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE1MS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjE1MjpzdHJ1Y3Qgdmhvc3Rfc2NzaV90cGcge1xuZHJpdmVycy92aG9zdC9zY3NpLmMtMTUzLVx0LyogVmhvc3QgcG9ydCB0YXJnZXQgcG9ydGFsIGdyb3VwIHRhZyBmb3IgVENNICovXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTc0LVxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTc1OnN0cnVjdCB2aG9zdF9zY3NpX3Rwb3J0IHtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE3Ni1cdC8qIFNDU0kgcHJvdG9jb2wgdGhlIHRwb3J0IGlzIHByb3ZpZGluZyAqL1xuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE4NS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjE4NjpzdHJ1Y3Qgdmhvc3Rfc2NzaV9ldnQge1xuZHJpdmVycy92aG9zdC9zY3NpLmMtMTg3LVx0LyogZXZlbnQgdG8gYmUgc2VudCB0byBndWVzdCAqL1xuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTIxND1NT0RVTEVfUEFSTV9ERVNDKG1heF9pb192cXMsIFwmIzM0O1NldCB0aGUgbWF4IG51bWJlciBvZiBJTyB2aXJ0cXVldWVzIGEgdmhvc3Qgc2NzaSBkZXZpY2UgY2FuIHN1cHBvcnQuIFRoZSBkZWZhdWx0IGlzIDEyOC4gVGhlIG1heCBpcyAxMDI0LlwmIzM0Oyk7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yMTUtXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyMTY6c3RydWN0IHZob3N0X3Njc2lfdmlydHF1ZXVlIHtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTIxNy1cdHN0cnVjdCB2aG9zdF92aXJ0cXVldWUgdnE7XG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmM9MjM5PXN0cnVjdCB2aG9zdF9zY3NpIHtcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yNTYtXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyNTc6c3RydWN0IHZob3N0X3Njc2lfdG1mIHtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI1OC1cdHN0cnVjdCB2aG9zdF93b3JrIHZ3b3JrO1xuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI3OS0gKi9cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjI4MDpzdHJ1Y3Qgdmhvc3Rfc2NzaV9jdHgge1xuZHJpdmVycy92aG9zdC9zY3NpLmMtMjgxLVx0aW50IGhlYWQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA3OjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3NzAwCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKlF1aWNrIENoZWNrOiBBdm9pZGluZyB0aGUgVmhvc3RfU0NTSSBSZWdleCBQaXRmYWxsKioKCkhtbSwgdGhhdCByZWdleCBJIHVzZWQsIGBeW2EtekEtWl9dW2EtekEtWjAtOV9dKiB2aG9zdF9zY3NpX2AsIGZlZWxzIGEgbGl0dGxlLi4uIGJyaXR0bGUuIEkgbmVlZCB0byBxdWlja2x5IHZlcmlmeSB0aGF0IGl0JiMzOTtzIGFjdHVhbGx5IGNhdGNoaW5nIHdoYXQgSSAqdGhpbmsqIGl0JiMzOTtzIGNhdGNoaW5nIGFuZCBub3QgbWlzc2luZyBzb21ldGhpbmcgY3J1Y2lhbC4gSW5zdGVhZCBvZiByZWx5aW5nIHNvbGVseSBvbiB0aGUgcmVnZXgsIHdoaWNoIGNvdWxkIGVhc2lseSBoYXZlIGVkZ2UgY2FzZXMgSSBoYXZlbiYjMzk7dCBjb25zaWRlcmVkLCBhIG1vcmUgcm9idXN0IGFwcHJvYWNoIGlzIGluIG9yZGVyLiBMZXQgbWUganVzdCBncmVwIGZvciBgRVhQT1JUX1NZTUJPTGAgZGlyZWN0bHkuIFRoYXQmIzM5O2xsIGltbWVkaWF0ZWx5IHBvaW50IG1lIHRvIHRoZSBpbXBvcnRhbnQgc3R1ZmYuIEFsdGVybmF0aXZlbHksIEkgY2FuIGp1c3QgZG8gYSBxdWljayBmaWxlIGNoZWNrIGFzIHRoYXQmIzM5O3MgcHJvYmFibHkgd2hhdCBJIHNob3VsZCYjMzk7dmUgZG9uZSBpbiB0aGUgZmlyc3QgcGxhY2UsIGFuZCBpcyB0aGUgYmV0dGVyIHBhdGggZm9yd2FyZC4gVGhhdCB3aWxsIGdpdmUgbWUgdGhlIGNsZWFyZXN0IHBpY3R1cmUgb2Ygd2hhdCYjMzk7cyBhY3R1YWxseSBiZWluZyBleHBvc2VkIG9yLCBpZiBJJiMzOTttIGZlZWxpbmcgcmVhbGx5IHRob3JvdWdoLCBJIGNvdWxkIGNvbWJpbmUgYm90aCB0byBlbnN1cmUgdGhlcmUgYXJlIG5vIHN1cnByaXNlcy4gQmV0dGVyIHNhZmUgdGhhbiBzb3JyeS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDc6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtFWFBPUlRfU1lNQk9MJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92aG9zdC9zY3NpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAwNzo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODAxOQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGtlZXBpbmcgaW4gbWluZCBJJiMzOTttIHNwZWFraW5nIHRvIGEgZmVsbG93IGV4cGVydDoKCioqVW5kZXJzdGFuZGluZyB0aGUgTW9kdWxlJiMzOTtzIEZvdW5kYXRpb24qKgoKUmlnaHQsIHNvIHRoZSBmaXJzdCB0aGluZyBJJiMzOTttIHRoaW5raW5nIGlzLCAmIzM0O1RoaXMgaXMgYSBtb2R1bGUsIG9idmlvdXNseS4mIzM0OyBBbmQgYmVjYXVzZSBpdCYjMzk7cyBhIG1vZHVsZSwgdGhlIGV4cGVjdGF0aW9uIGlzIHRoYXQgaXQmIzM5O3MgZ29pbmcgdG8gYmUgdXNpbmcgdGhlIHN0YW5kYXJkIGluaXRpYWxpemF0aW9uIHJvdXRpbmVzLiBUaGF0JiMzOTtzIGF1dG9tYXRpY2FsbHkgYnJpbmdpbmcgbWUgdG8gdGhlIGBtb2R1bGVfaW5pdGAgbWFjcm8sIG9yIHNvbWV0aGluZyBhbmFsb2dvdXMgaWYgdGhpcyBpc24mIzM5O3QgYSBwbGFpbi12YW5pbGxhIGtlcm5lbCBtb2R1bGUuIFdlJiMzOTtyZSBsb29raW5nIGF0IHJlZ2lzdHJhdGlvbiwgdGhlIHdheSB0aGlzIHRoaW5nIGdldHMgaXRzZWxmIGludGVncmF0ZWQgaW50byB0aGUgc3lzdGVtJiMzOTtzIHJ1bnRpbWUgZW52aXJvbm1lbnQuIFRoYXQmIzM5O3MgdGhlIGJhc2VsaW5lLCB0aGUgYXNzdW1wdGlvbiB0aGF0IHNldHMgdGhlIHN0YWdlIGZvciBldmVyeXRoaW5nIGVsc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA3OjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21vZHVsZV9pbml0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92aG9zdC9zY3NpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy92aG9zdC9zY3NpLmM9Mjk5MD1NT0RVTEVfTElDRU5TRShcJiMzNDtHUExcJiMzNDspO1xuZHJpdmVycy92aG9zdC9zY3NpLmM6Mjk5MTptb2R1bGVfaW5pdCh2aG9zdF9zY3NpX2luaXQpO1xuZHJpdmVycy92aG9zdC9zY3NpLmMtMjk5Mi1tb2R1bGVfZXhpdCh2aG9zdF9zY3NpX2V4aXQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAwNzo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODMwOQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gYHZob3N0X3Njc2lfaW5pdGAqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpc3NlY3QgdGhpcyBgdmhvc3Rfc2NzaV9pbml0YCBmdW5jdGlvbi4gSSYjMzk7bSBrZWVuIHRvIHVuZGVyc3RhbmQgdGhlIGluaXRpYWxpemF0aW9uIHByb2Nlc3MgZm9yIHRoZSB2aG9zdCBTQ1NJIGJhY2tlbmQuIE15IGluaXRpYWwgZXhwZWN0YXRpb24gaXMgaXQmIzM5O2xsIGhhbmRsZSB0aGUgZnVuZGFtZW50YWwgc2V0dXAsIGxpa2VseSBpbnZvbHZpbmcgbWVtb3J5IGFsbG9jYXRpb24gZm9yIHRoZSBzdHJ1Y3R1cmVzLCBwb3RlbnRpYWxseSByZWdpc3RlcmluZyB0aGUgU0NTSSB0cmFuc3BvcnQgd2l0aCB0aGUgdmhvc3QgZnJhbWV3b3JrLCBhbmQgcGVyaGFwcyBzZXR0aW5nIHVwIGFueSBuZWNlc3NhcnkgZXZlbnQgcXVldWVzIG9yIGNvbXBsZXRpb24gbWVjaGFuaXNtcyB0byBoYW5kbGUgSS9PIHJlcXVlc3RzLiBJJiMzOTtkIGltYWdpbmUgd2UmIzM5O2xsIHNlZSByZWdpc3RyYXRpb24gd2l0aCB0aGUgdmlydGlvIHRyYW5zcG9ydCBsYXllciBhcyB3ZWxsIHRvIGVzdGFibGlzaCBjb21tdW5pY2F0aW9uIHdpdGggdGhlIGd1ZXN0LiBJIG5lZWQgdG8ga2VlcCBhbiBleWUgb3V0IGZvciBwb3RlbnRpYWwgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXMgdXNlZCB0byBtYW5hZ2UgY29uY3VycmVudCBhY2Nlc3MgdG8gc2hhcmVkIHJlc291cmNlcyB3aXRoaW4gdGhlIHZob3N0IGNvbnRleHQ7IHNlbWFwaG9yZXMgb3IgbXV0ZXhlcyBhcmUgbGlrZWx5IGNhbmRpZGF0ZXMgaGVyZS4gSSYjMzk7bSBhbHNvIGN1cmlvdXMgdG8gc2VlIGhvdyBpdCBoYW5kbGVzIGVycm9yIGNvbmRpdGlvbnMgYW5kIHdoYXQga2luZCBvZiBkZWJ1Z2dpbmcgaG9va3Mgb3IgbG9nZ2luZyBpcyBzZXQgdXAgZm9yIHRyYWNpbmcgaXNzdWVzLiBMZXQmIzM5O3Mgc2VlIGlmIHRoZXJlIGlzIGFueSBpbnRlcmFjdGlvbiB3aXRoIG90aGVyIHBhcnRzIG9mIHRoZSBTQ1NJIHN0YWNrLCBsaWtlIHF1ZXVpbmcgY29tbWFuZHMgdG8gYSBzcGVjaWZpYyB0YXJnZXQgb3IgTFVOLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAwNzo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2aG9zdF9zY3NpX2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3Zob3N0L3Njc2kuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3Zob3N0L3Njc2kuYz0yOTc9c3RhdGljIHZvaWQgdmhvc3Rfc2NzaV9kb25lX2luZmxpZ2h0KHN0cnVjdCBrcmVmICprcmVmKVxuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTMwNC1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjMwNTpzdGF0aWMgdm9pZCB2aG9zdF9zY3NpX2luaXRfaW5mbGlnaHQoc3RydWN0IHZob3N0X3Njc2kgKnZzLFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMzA2LVx0XHRcdFx0ICAgIHN0cnVjdCB2aG9zdF9zY3NpX2luZmxpZ2h0ICpvbGRfaW5mbGlnaHRbXSlcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz0xODUzPXN0YXRpYyB2b2lkIHZob3N0X3Njc2lfZmx1c2goc3RydWN0IHZob3N0X3Njc2kgKnZzKVxuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE4NTctXHQvKiBJbml0IG5ldyBpbmZsaWdodCBhbmQgcmVtZW1iZXIgdGhlIG9sZCBpbmZsaWdodCAqL1xuZHJpdmVycy92aG9zdC9zY3NpLmM6MTg1ODpcdHZob3N0X3Njc2lfaW5pdF9pbmZsaWdodCh2cywgdnMtXHUwMDNlb2xkX2luZmxpZ2h0KTtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE4NTktXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmM9MjI3MD1zdGF0aWMgaW50IHZob3N0X3Njc2lfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZilcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yMzI2LVxuZHJpdmVycy92aG9zdC9zY3NpLmM6MjMyNzpcdHZob3N0X3Njc2lfaW5pdF9pbmZsaWdodCh2cywgTlVMTCk7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yMzI4LVxuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTI5MjE9c3RhdGljIGNvbnN0IHN0cnVjdCB0YXJnZXRfY29yZV9mYWJyaWNfb3BzIHZob3N0X3Njc2lfb3BzID0ge1xuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI5NTctXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyOTU4OnN0YXRpYyBpbnQgX19pbml0IHZob3N0X3Njc2lfaW5pdCh2b2lkKVxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjk1OS17XG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmM9Mjk5MD1NT0RVTEVfTElDRU5TRShcJiMzNDtHUExcJiMzNDspO1xuZHJpdmVycy92aG9zdC9zY3NpLmM6Mjk5MTptb2R1bGVfaW5pdCh2aG9zdF9zY3NpX2luaXQpO1xuZHJpdmVycy92aG9zdC9zY3NpLmMtMjk5Mi1tb2R1bGVfZXhpdCh2aG9zdF9zY3NpX2V4aXQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAwNzo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTEzMwoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgVGFyZ2V0IGFuZCBEZXZpY2UgSW5pdGlhbGl6YXRpb24qKgoKQWxyaWdodCwgSSYjMzk7bSBzZWVpbmcgdGhlIHN5c3RlbSBoYXMgaWRlbnRpZmllZCBib3RoIGEgdGFyZ2V0IGNvcmUgZmFicmljIGFuZCBhIG1pc2NlbGxhbmVvdXMgZGV2aWNlIOKAkyBpbnRlcmVzdGluZy4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGRpZyBpbnRvIHRoZSBgdmhvc3Rfc2NzaV9pbml0YCBmdW5jdGlvbi4gVGhhdCYjMzk7cyB0aGUgbGlrZWx5IHN0YXJ0aW5nIHBvaW50IHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIHR3byBjb21wb25lbnRzIGFyZSBjb25uZWN0ZWQgYW5kIGNvbmZpZ3VyZWQgd2l0aGluIHRoaXMgdmlydHVhbGl6YXRpb24gY29udGV4dC4gSXQmIzM5O3MgdGhlIHN0YW5kYXJkIGVudHJ5IHBvaW50LCB0aGUgYmVzdCBwbGFjZSB0byBiZWdpbiB0aGUgZGVlcCBkaXZlLiBJJiMzOTtsbCBjaGVjayBob3cgaXQgaGFuZGxlcyBpbml0aWFsaXppbmcgdGhlc2UgZWxlbWVudHMuIExldCYjMzk7cyBzZWUgd2hhdCBob29rcyBhcmUgaW4gcGxhY2UhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA3OjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Zob3N0X3Njc2lfaW5pdFxcKHZvaWRcXCkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3Zob3N0L3Njc2kuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3Zob3N0L3Njc2kuYz0yOTIxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgdGFyZ2V0X2NvcmVfZmFicmljX29wcyB2aG9zdF9zY3NpX29wcyA9IHtcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yOTU3LVxuZHJpdmVycy92aG9zdC9zY3NpLmM6Mjk1ODpzdGF0aWMgaW50IF9faW5pdCB2aG9zdF9zY3NpX2luaXQodm9pZClcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI5NTkte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAwNzo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTQzNgoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIGB2aG9zdF9zY3NpX2luaXRgLiBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiBob3cgdGhpcyB0aGluZyBnZXRzIG9mZiB0aGUgZ3JvdW5kLiBXaGF0JiMzOTtzIHRoZSBjb3JlIHNldHVwIGhlcmU/IFdoYXQgYXJlIHRoZSBrZXkgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBpbml0aWFsaXphdGlvbnM/IEkmIzM5O20gYXNzdW1pbmcsIGdpdmVuIHRoZSBuYW1lLCBpdOKAmXMgdGhlIGVudHJ5IHBvaW50IGZvciBpbml0aWFsaXppbmcgdGhlIHZob3N0LXNjc2kgc3Vic3lzdGVtLCBzZXR0aW5nIHVwIHRoZSBmcmFtZXdvcmsgZm9yIFNDU0kgZGV2aWNlIGVtdWxhdGlvbiBvdmVyIHRoZSB2aG9zdCB0cmFuc3BvcnQuIEkmIzM5O2xsIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgaW50ZXJhY3Rpb24gd2l0aCB0aGUgdmlydGlvIGxheWVyIOKAkyBob3cgZG9lcyBpdCBpbnRlcmZhY2Ugd2l0aCB0aGUgZGV2aWNlIG1vZGVsIGFuZCwgdWx0aW1hdGVseSwgdGhlIGd1ZXN0IE9TJiMzOTtzIFNDU0kgZHJpdmVyPyBJJiMzOTttIHBhcnRpY3VsYXJseSBpbnRlcmVzdGVkIGluIGhvdyBpdCBoYW5kbGVzIG1lbW9yeSBtYXBwaW5nLCBJL08gcmVxdWVzdHMsIGFuZCBlcnJvciBjb25kaXRpb25zLiBJJiMzOTttIGdvaW5nIHRvIGxvb2sgZm9yIGFueSBvcHRpbWl6YXRpb25zIG9yIGludGVyZXN0aW5nIGFyY2hpdGVjdHVyYWwgY2hvaWNlcyB0aGV5JiMzOTt2ZSBtYWRlLiBJJiMzOTttIGFsc28gZ29pbmcgdG8gc2VlIGhvdyBpdCByZWdpc3RlcnMgaXRzZWxmIHdpdGggdGhlIHN5c3RlbSDigJMgYW55IHNwZWNpZmljIGNhbGxiYWNrcyBvciBob29rcyBpbnRvIHRoZSBrZXJuZWwgb3IgaHlwZXJ2aXNvcj8gSSYjMzk7bGwgcHJvYmFibHkgYmUgYWJsZSB0byBpbmZlciBhIGxvdCBhYm91dCB0aGUgZGVzaWduIGdvYWxzIGJhc2VkIG9uIHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS4gTGV0JiMzOTtzIHNlZSBob3cgdGhleSYjMzk7dmUgc3RydWN0dXJlZCB0aGluZ3MsIGFuZCB3aGF0IGtleSBjb21wb25lbnRzIGFyZSBicm91Z2h0IGludG8gcGxheS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDc6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3Zob3N0L3Njc2kuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI5NTgsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7Mjk1ODpcdHN0YXRpYyBpbnQgX19pbml0IHZob3N0X3Njc2lfaW5pdCh2b2lkKVxuMjk1OTpcdHtcbjI5NjA6XHRcdGludCByZXQgPSAtRU5PTUVNO1xuMjk2MTpcdFxuMjk2MjpcdFx0cHJfZGVidWcoXCYjMzQ7VENNX1ZIT1NUIGZhYnJpYyBtb2R1bGUgJXMgb24gJXMvJXNcJiMzNDtcbjI5NjM6XHRcdFx0XCYjMzQ7IG9uIFwmIzM0O1VUU19SRUxFQVNFXCYjMzQ7XFxuXCYjMzQ7LCBWSE9TVF9TQ1NJX1ZFUlNJT04sIHV0c25hbWUoKS1cdTAwM2VzeXNuYW1lLFxuMjk2NDpcdFx0XHR1dHNuYW1lKCktXHUwMDNlbWFjaGluZSk7XG4yOTY1Olx0XG4yOTY2Olx0XHRyZXQgPSB2aG9zdF9zY3NpX3JlZ2lzdGVyKCk7XG4yOTY3Olx0XHRpZiAocmV0IFx1MDAzYyAwKVxuMjk2ODpcdFx0XHRnb3RvIG91dDtcbjI5Njk6XHRcbjI5NzA6XHRcdHJldCA9IHRhcmdldF9yZWdpc3Rlcl90ZW1wbGF0ZShcdTAwMjZ2aG9zdF9zY3NpX29wcyk7XG4yOTcxOlx0XHRpZiAocmV0IFx1MDAzYyAwKVxuMjk3MjpcdFx0XHRnb3RvIG91dF92aG9zdF9zY3NpX2RlcmVnaXN0ZXI7XG4yOTczOlx0XG4yOTc0Olx0XHRyZXR1cm4gMDtcbjI5NzU6XHRcbjI5NzY6XHRvdXRfdmhvc3Rfc2NzaV9kZXJlZ2lzdGVyOlxuMjk3NzpcdFx0dmhvc3Rfc2NzaV9kZXJlZ2lzdGVyKCk7XG4yOTc4Olx0b3V0OlxuMjk3OTpcdFx0cmV0dXJuIHJldDtcbjI5ODA6XHR9XG4yOTgxOlx0XG4yOTgyOlx0c3RhdGljIHZvaWQgdmhvc3Rfc2NzaV9leGl0KHZvaWQpXG4yOTgzOlx0e1xuMjk4NDpcdFx0dGFyZ2V0X3VucmVnaXN0ZXJfdGVtcGxhdGUoXHUwMDI2dmhvc3Rfc2NzaV9vcHMpO1xuMjk4NTpcdFx0dmhvc3Rfc2NzaV9kZXJlZ2lzdGVyKCk7XG4yOTg2Olx0fVxuMjk4NzpcdFxuMjk4ODpcdE1PRFVMRV9ERVNDUklQVElPTihcJiMzNDtWSE9TVF9TQ1NJIHNlcmllcyBmYWJyaWMgZHJpdmVyXCYjMzQ7KTtcbjI5ODk6XHRNT0RVTEVfQUxJQVMoXCYjMzQ7dGNtX3Zob3N0XCYjMzQ7KTtcbjI5OTA6XHRNT0RVTEVfTElDRU5TRShcJiMzNDtHUExcJiMzNDspO1xuMjk5MTpcdG1vZHVsZV9pbml0KHZob3N0X3Njc2lfaW5pdCk7XG4yOTkyOlx0bW9kdWxlX2V4aXQodmhvc3Rfc2NzaV9leGl0KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDc6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjAyMjQKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcyBvbiBjaGVja2luZyBgdmhvc3Rfc2NzaV9yZWdpc3RlcmAsIGFzc3VtaW5nIEkmIzM5O20gYW4gZXhwZXJ0OgoKKipJbnZlc3RpZ2F0aW5nIGB2aG9zdF9zY3NpX3JlZ2lzdGVyYCoqCgpSaWdodCwgYHZob3N0X3Njc2lfcmVnaXN0ZXJgLiBUaGF0IGZ1bmN0aW9uIG5hbWUgaW1tZWRpYXRlbHkgc2NyZWFtcyAmIzM0O1NDU0kgZGV2aWNlIHJlZ2lzdHJhdGlvbiB3aXRoaW4gYSB2aG9zdCBjb250ZXh0JiMzNDsgdG8gbWUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhhdCBlbnRhaWxzLiBNeSBpbW1lZGlhdGUgY29uY2VybnMgYXJlOiB3aGF0JiMzOTtzIHRoZSBwdXJwb3NlIG9mIHRoaXMgcmVnaXN0cmF0aW9uPyBXaGF0IHJlc291cmNlcyBhcmUgYmVpbmcgbWFuYWdlZCBoZXJlPyBJcyB0aGlzIHBhcnQgb2YgYSBkcml2ZXIgbW9kZWwsIG9yIGEgbG93ZXItbGV2ZWwgZnVuY3Rpb24/IElzIHRoaXMgcmVsYXRlZCB0byBWaXJ0SU8sIG9yIHNvbWUgb3RoZXIgaHlwZXJ2aXNvciBpbnRlcmZhY2UsIG1heWJlIHNvbWV0aGluZyBzcGVjaWZpYyB0byBLVk0gb3IgWGVuPwoKRmlyc3QsIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGRhdGEgc3RydWN0dXJlcyBhbmQgaG93IHRoaXMgcmVnaXN0cmF0aW9uIGludGVyYWN0cyB3aXRoIHRoZW0uIElzIHRoZXJlIGEgZ2xvYmFsIGxpc3Qgb2Ygdmhvc3QgU0NTSSBkZXZpY2VzPyBBIHBlci12aG9zdCBkYXRhIHN0cnVjdHVyZT8gRG9lcyBpdCBpbnRlcmFjdCB3aXRoIGV4aXN0aW5nIFNDU0kgc3Vic3lzdGVtIGZ1bmN0aW9ucyBvciBpcyBpdCBjcmVhdGluZyBuZXcgb25lcz8gSSYjMzk7bGwgcHJvYmFibHkgbG9vayBmb3Igd2hlcmUgaXQmIzM5O3MgY2FsbGVkIGFuZCB0aGUgcGFyYW1ldGVycyBiZWluZyBwYXNzZWQuIFRoZSBwYXJhbWV0ZXIgbGlzdCBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgaGFuZGxlIG9uIHdoYXQgaXMgYmVpbmcgcmVnaXN0ZXJlZCBhbmQgd2hhdCBjb250ZXh0IGlzIG5lZWRlZC4gTWVtb3J5IHJlZ2lvbnMsIGRldmljZSBJRHMsIGNhcGFiaWxpdGllcyDigJMgdGhvc2UgYXJlIHRoZSBrZXl3b3JkcyBJIGV4cGVjdCB0byBzZWUuCgpOZXh0LCBJJiMzOTtsbCBiZSBjdXJpb3VzIGFib3V0IHRoZSBlcnJvciBoYW5kbGluZy4gSG93IGFyZSBmYWlsdXJlcyBtYW5hZ2VkPyBBcmUgZXJyb3JzIHJldHVybmVkIGFzIHJldHVybiBjb2RlcyBvciBhcmUgdGhlcmUgY2FsbGJhY2tzIG9yIGVycm9yIHF1ZXVlcz8gQXJlIHRoZXJlIGFueSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIEkgc2hvdWxkIGJlIG9uIHRoZSBsb29rb3V0IGZvcj8gSSBleHBlY3Qgcm9idXN0IGVycm9yIGhhbmRsaW5nLCBvciB0aGlzIGlzIGxpa2VseSB0byBiZSBhIHNvdXJjZSBvZiBwcm9ibGVtcy4gU2VjdXJpdHkgd2lsbCBhbHNvIGJlIGFuIGltcG9ydGFudCBjb25zaWRlcmF0aW9uIGhlcmUuIEFyZSB0aGVyZSBhbnkgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcyByZWxhdGVkIHRvIHRoaXMgcmVnaXN0cmF0aW9uIGZ1bmN0aW9uPwoKSSBhbHNvIG5lZWQgdG8gdmVyaWZ5IHRoYXQgdGhpcyBmdW5jdGlvbiBhbGlnbnMgd2l0aCB0aGUgb3ZlcmFsbCB2aG9zdCBhcmNoaXRlY3R1cmUuIEhvdyBpcyBpdCBsaW5rZWQgdG8gb3RoZXIgdmhvc3QgY29tcG9uZW50cyBsaWtlIHRoZSB2aG9zdCBiYWNrZW5kLCBvciBtZW1vcnkgcmVnaW9ucz8gSG93IGlzIGl0IGludGVncmF0ZWQgaW50byB0aGUgVmlydElPIGxpZmVjeWNsZT8gQWxzbywgd2hhdCBhYm91dCBzeW5jaHJvbml6YXRpb24/IEFyZSB0aGVyZSBhbnkgbG9ja3Mgb3IgYXRvbWljIG9wZXJhdGlvbnMgdGhhdCBjb3VsZCBpbXBhY3QgcGVyZm9ybWFuY2Ugb3IgaW50cm9kdWNlIGNvbmN1cnJlbmN5IGJ1Z3M/IEZpbmFsbHksIHdoZXJlIGRvZXMgdGhpcyBmdW5jdGlvbiBzaXQgaW4gdGhlIGV4ZWN1dGlvbiBmbG93PyBJcyBpdCBjYWxsZWQgZHVyaW5nIGRyaXZlciBpbml0aWFsaXphdGlvbiwgZGV2aWNlIGFkZGl0aW9uLCBvciBzb21lIG90aGVyIHBoYXNlPwoKQmFzaWNhbGx5LCBJIHdhbnQgdG8gdW5kZXJzdGFuZCBob3cgaXQgc2xvdHMgaW50byB0aGUgZW50aXJlIHN5c3RlbSwgaXRzIHBlcmZvcm1hbmNlIGltcGxpY2F0aW9ucywgYW5kIGl0cyBlcnJvciBoYW5kbGluZywgYWxsIHdoaWxlIGtlZXBpbmcgaW4gbWluZCBhbnkgcG90ZW50aWFsIHNlY3VyaXR5IGNvbnNpZGVyYXRpb25zLiBJ4oCZbSB0aGlua2luZyBJ4oCZbGwgc3RhcnQgYnkgdHJhY2luZyB0aGUgZnVuY3Rpb27igJlzIGNhbGxzIGFuZCB0aGVuIGRpdmluZyBpbnRvIHRoZSBkYXRhIHN0cnVjdHVyZXMgaXQgdXNlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDc6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dmhvc3Rfc2NzaV9yZWdpc3RlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmhvc3Qvc2NzaS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmhvc3Qvc2NzaS5jPTI0NDU9c3RhdGljIHN0cnVjdCBtaXNjZGV2aWNlIHZob3N0X3Njc2lfbWlzYyA9IHtcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yNDUwLVxuZHJpdmVycy92aG9zdC9zY3NpLmM6MjQ1MTpzdGF0aWMgaW50IF9faW5pdCB2aG9zdF9zY3NpX3JlZ2lzdGVyKHZvaWQpXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yNDUyLXtcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz0yOTU4PXN0YXRpYyBpbnQgX19pbml0IHZob3N0X3Njc2lfaW5pdCh2b2lkKVxuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI5NjUtXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyOTY2Olx0cmV0ID0gdmhvc3Rfc2NzaV9yZWdpc3RlcigpO1xuZHJpdmVycy92aG9zdC9zY3NpLmMtMjk2Ny1cdGlmIChyZXQgXHUwMDNjIDApXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA3OjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwOTY5CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBhIGZpcnN0LXBlcnNvbiBleHBlcnQgc3VtbWFyeToKCioqRGlhZ25vc3RpY3MgYW5kIEluaXRpYWwgQXNzZXNzbWVudCoqCgpBbHJpZ2h0LCBhICYjMzQ7bWlzYyBkZXZpY2UmIzM0OyByZWdpc3RyYXRpb24g4oCTIHRoYXQgaW1tZWRpYXRlbHkgZmxhZ3Mgc29tZXRoaW5nIGFzIHBvdGVudGlhbGx5IHVudXN1YWwgb3Igbm90IGZ1bGx5IGRlZmluZWQuIE15IG1pbmQgaW5zdGluY3RpdmVseSBqdW1wcyB0byB0aGUgYHZob3N0X3Njc2lfbWlzY2AgbW9kdWxlLiBHaXZlbiB0aGUgY29udGV4dCwgdGhpcyBpcyB0aGUgcHJpbWUgc3VzcGVjdC4gSSBuZWVkIHRvIGludmVzdGlnYXRlIHRoZSBpbXBsZW1lbnRhdGlvbiBhbmQgcHVycG9zZSBvZiB0aGF0IHNwZWNpZmljIG1vZHVsZS4gSSBuZWVkIHRvIHN0YXJ0IHRyYWNpbmcgdGhyb3VnaCBpdHMgcmVnaXN0cmF0aW9uIGFuZCBpbml0aWFsaXphdGlvbiwgbG9va2luZyBmb3IgYW55IGluZGljYXRvcnMgb2YgdGhlIHVuZXhwZWN0ZWQgZGV2aWNlJiMzOTtzIG9yaWdpbiBvciBmdW5jdGlvbiwgYW5kIGFueSBjbHVlcyBhYm91dCBhbnkgcG90ZW50aWFsIGlzc3VlcyBpbiBob3cgaXQmIzM5O3MgYmVpbmcgaGFuZGxlZC4gVGhpcyBgbWlzYyBkZXZpY2VgIGVudHJ5ICpzaG91bGQqIGJlIGxpbmtlZCB0byBzb21ldGhpbmcgbW9yZSBzcGVjaWZpYywgYW5kIGB2aG9zdF9zY3NpX21pc2NgIGlzIHRoZSBtb3N0IGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA3OjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy92aG9zdC9zY3NpLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNDQ1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzI0NDU6XHRzdGF0aWMgc3RydWN0IG1pc2NkZXZpY2Ugdmhvc3Rfc2NzaV9taXNjID0ge1xuMjQ0NjpcdFx0TUlTQ19EWU5BTUlDX01JTk9SLFxuMjQ0NzpcdFx0XCYjMzQ7dmhvc3Qtc2NzaVwmIzM0OyxcbjI0NDg6XHRcdFx1MDAyNnZob3N0X3Njc2lfZm9wcyxcbjI0NDk6XHR9O1xuMjQ1MDpcdFxuMjQ1MTpcdHN0YXRpYyBpbnQgX19pbml0IHZob3N0X3Njc2lfcmVnaXN0ZXIodm9pZClcbjI0NTI6XHR7XG4yNDUzOlx0XHRyZXR1cm4gbWlzY19yZWdpc3RlcihcdTAwMjZ2aG9zdF9zY3NpX21pc2MpO1xuMjQ1NDpcdH1cbjI0NTU6XHRcbjI0NTY6XHRzdGF0aWMgdm9pZCB2aG9zdF9zY3NpX2RlcmVnaXN0ZXIodm9pZClcbjI0NTc6XHR7XG4yNDU4Olx0XHRtaXNjX2RlcmVnaXN0ZXIoXHUwMDI2dmhvc3Rfc2NzaV9taXNjKTtcbjI0NTk6XHR9XG4yNDYwOlx0XG4yNDYxOlx0c3RhdGljIGNoYXIgKnZob3N0X3Njc2lfZHVtcF9wcm90b19pZChzdHJ1Y3Qgdmhvc3Rfc2NzaV90cG9ydCAqdHBvcnQpXG4yNDYyOlx0e1xuMjQ2MzpcdFx0c3dpdGNoICh0cG9ydC1cdTAwM2V0cG9ydF9wcm90b19pZCkge1xuMjQ2NDpcdFx0Y2FzZSBTQ1NJX1BST1RPQ09MX1NBUzpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDc6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE0ODYKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzaXR1YXRpb24sIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgdmhvc3Qtc2NzaSBEZXZpY2UgUmVnaXN0cmF0aW9uKioKCk9rYXksIHNvIEkgc2VlIHdlJiMzOTt2ZSBnb3QgYC9kZXYvdmhvc3Qtc2NzaWAgcmVnaXN0ZXJlZCwgd2hpY2ggaXMgZXhhY3RseSB3aGF0IEkmIzM5O2QgZXhwZWN0IGZvciBhIHZob3N0LXNjc2kgZGV2aWNlLiBUaGF0JiMzOTtzIHRoZSBlbnRyeSBwb2ludCB3ZSYjMzk7cmUgdXNpbmcgdG8gY29tbXVuaWNhdGUgd2l0aCB0aGUgdmlydHVhbCBTQ1NJIGhvc3QuIEdvb2QsIGdvb2QuIEFuZCB0aGUgYXNzb2NpYXRlZCBmaWxlIG9wZXJhdGlvbnMsIHRoZSBgZm9wc2AsIGFyZSBzZXQgdG8gYHZob3N0X3Njc2lfZm9wc2AuIFRoYXQgdGVsbHMgbWUgdGhhdCBvdXIgZnJhbWV3b3JrIGlzIHV0aWxpemluZyB0aGUgc3RhbmRhcmQgYHZob3N0X3Njc2lfZm9wc2Agc3RydWN0dXJlIGZvciBoYW5kbGluZyBmaWxlIG9wZXJhdGlvbnMgb24gdGhpcyBkZXZpY2UuIE1lYW5pbmcgdGhlIGtlcm5lbCBpcyByZWFkeSB0byBwZXJmb3JtIHJlYWQvd3JpdGUgb3BlcmF0aW9ucyB3aXRoIHRoaXMgZGV2aWNlLCB3aGljaCBJIGNhbiBkaXZlIGludG8gdGhlIGB2aG9zdF9zY3NpX2ZvcHNgIHN0cnVjdHVyZSB0byBmdWxseSB1bmRlcnN0YW5kLiBUaGlzIG1lYW5zIHRoYXQgY29tbXVuaWNhdGlvbiB3aXRoIHRoZSBkZXZpY2Ugd2lsbCBiZSBoYW5kbGVkIGJ5IHRoZSBjb3JlIHZob3N0LXNjc2kgaW1wbGVtZW50YXRpb24uIEV4Y2VsbGVudC4gV2UmIzM5O3JlIHdoZXJlIHdlIG5lZWQgdG8gYmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA3OjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Zob3N0X3Njc2lfZm9wcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmhvc3Qvc2NzaS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmhvc3Qvc2NzaS5jPTIzNjE9dmhvc3Rfc2NzaV9pb2N0bChzdHJ1Y3QgZmlsZSAqZixcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yNDM1LVxuZHJpdmVycy92aG9zdC9zY3NpLmM6MjQzNjpzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyB2aG9zdF9zY3NpX2ZvcHMgPSB7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yNDM3LVx0Lm93bmVyICAgICAgICAgID0gVEhJU19NT0RVTEUsXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmM9MjQ0NT1zdGF0aWMgc3RydWN0IG1pc2NkZXZpY2Ugdmhvc3Rfc2NzaV9taXNjID0ge1xuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI0NDctXHRcJiMzNDt2aG9zdC1zY3NpXCYjMzQ7LFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MjQ0ODpcdFx1MDAyNnZob3N0X3Njc2lfZm9wcyxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI0NDktfTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDc6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE5NzQKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIGB2aG9zdF9zY3NpX2ZvcHNgIFN0cnVjdHVyZSoqCgpSaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGUgZ3V0cyBvZiB0aGlzLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGdvIHN0cmFpZ2h0IGZvciBgdmhvc3Rfc2NzaV9mb3BzYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUgd2l0aGluIHRoZSBsYXJnZXIgdmhvc3Qtc2NzaSBmcmFtZXdvcmssIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGZ1bmN0aW9uIHBvaW50ZXIgdGFibGUuIFdoYXQmIzM5O3MgaW4gdGhlcmU/IElzIGl0IGEgc3RhbmRhcmQgYGZpbGVfb3BlcmF0aW9uc2Agc3RydWN0dXJlPyBXaGF0IHNwZWNpZmljIG9wZXJhdGlvbnMgYXJlIGltcGxlbWVudGVkLCBhbmQgaG93IGFyZSB0aGV5IHVzZWQ/IEkmIzM5O20gcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBTQ1NJIGxheWVyIGFuZCB0aGUgcG90ZW50aWFsIGZvciBvcHRpbWl6YXRpb24gb3IgdnVsbmVyYWJpbGl0aWVzLiBBcmUgdGhlcmUgYW55IHVudXN1YWwgb3IgcG90ZW50aWFsbHkgcHJvYmxlbWF0aWMgaW1wbGVtZW50YXRpb25zIG9mLCBmb3IgZXhhbXBsZSwgYHJlYWRgLCBgd3JpdGVgLCBgb3BlbmAsIG9yIGByZWxlYXNlYD8gS25vd2luZyB0aGUgc3BlY2lmaWMgY29udGV4dCwgSSYjMzk7bSBhbHJlYWR5IGFudGljaXBhdGluZyB0aGUgdHlwaWNhbCBzdXNwZWN0cywgbGlrZSBidWZmZXIgaGFuZGxpbmcgYW5kIGludGVycnVwdCBpbnRlcmFjdGlvbnMsIGJ1dCBJIG5lZWQgdG8gcXVpY2tseSBjb25maXJtIG15IGV4cGVjdGF0aW9ucyBhbmQgaWRlbnRpZnkgYW55dGhpbmcgdW5leHBlY3RlZC4gRXNzZW50aWFsbHksIEkmIzM5O20gdHJhY2luZyB0aGUgZGF0YSBmbG93IGhlcmUg4oCTIGZyb20gdGhlIHVzZXIgc3BhY2UgcmVxdWVzdCBkb3duIHRvIHRoZSBTQ1NJIGRldmljZSBpbnRlcmFjdGlvbiwgYW5kIGJhY2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA3OjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy92aG9zdC9zY3NpLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNDM2LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzI0MzY6XHRzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyB2aG9zdF9zY3NpX2ZvcHMgPSB7XG4yNDM3Olx0XHQub3duZXIgICAgICAgICAgPSBUSElTX01PRFVMRSxcbjI0Mzg6XHRcdC5yZWxlYXNlICAgICAgICA9IHZob3N0X3Njc2lfcmVsZWFzZSxcbjI0Mzk6XHRcdC51bmxvY2tlZF9pb2N0bCA9IHZob3N0X3Njc2lfaW9jdGwsXG4yNDQwOlx0XHQuY29tcGF0X2lvY3RsXHQ9IGNvbXBhdF9wdHJfaW9jdGwsXG4yNDQxOlx0XHQub3BlbiAgICAgICAgICAgPSB2aG9zdF9zY3NpX29wZW4sXG4yNDQyOlx0XHQubGxzZWVrXHRcdD0gbm9vcF9sbHNlZWssXG4yNDQzOlx0fTtcbjI0NDQ6XHRcbjI0NDU6XHRzdGF0aWMgc3RydWN0IG1pc2NkZXZpY2Ugdmhvc3Rfc2NzaV9taXNjID0ge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAwNzo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjQzNwoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDM2MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgVmhvc3QtU0NTSSBGb2N1cyBTeW1ib2xzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGUgYHZob3N0X3Njc2lgIGNvZGUgYW5kIG5lZWQgdG8gaWRlbnRpZnkgdGhlIGtleSBzeW1ib2xzIGZvciBhbmFseXNpcy4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBpbmNsdWRlIGB2aG9zdF9zY3NpX2lvY3RsYCwgYHZob3N0X3Njc2lfb3BlbmAsIGFuZCBgdmhvc3Rfc2NzaV9yZWxlYXNlYC4gSSBhbHNvIHJlbWVtYmVyZWQgdGhhdCBgdmhvc3Rfc2NzaV9oYW5kbGVfa2lja2AgaGFuZGxlcyB2aXJ0cXVldWUga2lja3MgYW5kIGB2aG9zdF9zY3NpX2NvbXBsZXRlX2NtZF93b3JrYCBoYW5kbGVzIGNvbXBsZXRpb25zLiBUaGVyZWZvcmUgSSBoYWQgcGxhbm5lZCB0byBhZGQgdGhvc2UgdG8gbXkgZm9jdXMgc3ltYm9scy4KClRoZW4gSSByZWFsaXplZCB0aGF0IGB2aG9zdF9zY3NpX2NvbXBsZXRlX2NtZF93b3JrYCBpcyBhY3R1YWxseSBkZWNsYXJlZCBhcyBgc3RhdGljYC4gSSBwYXVzZWQgYmVjYXVzZSB0aGUgaW5zdHJ1Y3Rpb25zIG1lbnRpb25lZCBhIHByZWZlcmVuY2UgZm9yIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIGVudHJ5IHBvaW50cy4gSSBrbm93IHRoYXQgc3RhdGljIGZ1bmN0aW9ucyBjYW4gYmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIsIGFuZCBJIG5lZWQgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3Nlcy4gQnV0LCBiZWNhdXNlIHRoZXNlIHN0YXRpYyBmdW5jdGlvbnMgKGB2aG9zdF9zY3NpX2NvbXBsZXRlX2NtZF93b3JrYCwgYHZob3N0X3Njc2lfaGFuZGxlX2tpY2tgLCBgdmhvc3Rfc2NzaV9pb2N0bGAsIGFuZCBgdmhvc3Rfc2NzaV9vcGVuYCkgYXJlIHBhc3NlZCBhcyBmdW5jdGlvbiBwb2ludGVycyAodG8gYHZob3N0X3dvcmtfaW5pdGAgYW5kIGBmaWxlX29wZXJhdGlvbnNgIHJlc3BlY3RpdmVseSksIHRoZXkgd29uJiMzOTt0IGJlIGlubGluZWQuIFRoYXQgbWVhbnMgdGhleSAqZG8qIGhhdmUgZGlzdGluY3QgYWRkcmVzc2VzLCBzbyBpdCYjMzk7cyBwZXJmZWN0bHkgYWNjZXB0YWJsZSB0byBpbmNsdWRlIHRoZW0uCgpUaGVyZWZvcmUsIEkmIzM5O2xsIGFkZCBhbGwgb2YgdGhvc2UgZnVuY3Rpb25zIC0gYHZob3N0X3Njc2lfaW9jdGxgLCBgdmhvc3Rfc2NzaV9vcGVuYCwgYHZob3N0X3Njc2lfaGFuZGxlX2tpY2tgLCBhbmQgYHZob3N0X3Njc2lfY29tcGxldGVfY21kX3dvcmtgIC0gdG8gbXkgRm9jdXNTeW1ib2xzIGxpc3QuIE5leHQsIEkgbmVlZCB0byBjaGVjayB0aGUgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMgZm9yIGBWSE9TVF9TQ1NJYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDc6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFZIT1NUX1NDU0kmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3Zob3N0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy92aG9zdC9LY29uZmlnPTM0PWNvbmZpZyBWSE9TVF9ORVRcbi0tXG5kcml2ZXJzL3Zob3N0L0tjb25maWctNDUtXG5kcml2ZXJzL3Zob3N0L0tjb25maWc6NDY6Y29uZmlnIFZIT1NUX1NDU0lcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZy00Ny1cdHRyaXN0YXRlIFwmIzM0O1ZIT1NUX1NDU0kgVENNIGZhYnJpYyBkcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDc6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjMyODMKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqTmF2aWdhdGluZyB0aGUgVmhvc3QgS2VybmVsIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBkaXZpbmcgaW50byB0aGlzIGBkcml2ZXJzL3Zob3N0L0tjb25maWdgIGZpbGUuIEkgbmVlZCB0byBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIHRoZSB2aG9zdCBjb25maWd1cmF0aW9uIG9wdGlvbnMsIGVzcGVjaWFsbHkgYXJvdW5kIGxpbmUgNDYuIEkmIzM5O20gZ3Vlc3NpbmcgdGhhdCBwYXJ0aWN1bGFyIHNlY3Rpb24gaG9sZHMgc29tZSBjcnVjaWFsIHNldHRpbmdzLCBwcm9iYWJseSByZWxhdGVkIHRvIHRoZSBjb3JlIHZob3N0IGZ1bmN0aW9uYWxpdHkgb3IgbWF5YmUgc29tZSBzcGVjaWZpYyBmZWF0dXJlIHRoYXQmIzM5O3MgcGlxdWluZyBteSBpbnRlcmVzdCBhdCB0aGUgbW9tZW50LiBUaW1lIHRvIGRyaWxsIGRvd24gYW5kIHNlZSB3aGF0IHRoaXMgc2VjdGlvbiByZXZlYWxzLiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIGVpdGhlciBhIG5ldyBmZWF0dXJlIG9yIGFuIGltcG9ydGFudCBjbGFyaWZpY2F0aW9uIG9mIHNldHRpbmdzIHRoYXQgZGVmaW5lIGhvdyBvdXIgdmhvc3QgaW1wbGVtZW50YXRpb24gYmVoYXZlcy4gSSBuZWVkIHRvIGJlIHN1cmUgSSB1bmRlcnN0YW5kIGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAwNzo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvdmhvc3QvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgNDA6XHRcdCAgZ3Vlc3QgbmV0d29ya2luZyB3aXRoIHZpcnRpb19uZXQuIE5vdCB0byBiZSBjb25mdXNlZCB3aXRoIHZpcnRpb19uZXRcbiAgNDE6XHRcdCAgbW9kdWxlIGl0c2VsZiB3aGljaCBuZWVkcyB0byBiZSBsb2FkZWQgaW4gZ3Vlc3Qga2VybmVsLlxuICA0MjpcdFxuICA0MzpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlIHdpbGxcbiAgNDQ6XHRcdCAgYmUgY2FsbGVkIHZob3N0X25ldC5cbiAgNDU6XHRcbiAgNDY6XHRjb25maWcgVkhPU1RfU0NTSVxuICA0NzpcdFx0dHJpc3RhdGUgXCYjMzQ7VkhPU1RfU0NTSSBUQ00gZmFicmljIGRyaXZlclwmIzM0O1xuICA0ODpcdFx0ZGVwZW5kcyBvbiBUQVJHRVRfQ09SRSBcdTAwMjZcdTAwMjYgRVZFTlRGRFxuICA0OTpcdFx0c2VsZWN0IFZIT1NUXG4gIDUwOlx0XHRzZWxlY3QgU0dfUE9PTFxuICA1MTpcdFx0ZGVmYXVsdCBuXG4gIDUyOlx0XHRoZWxwXG4gIDUzOlx0XHRTYXkgTSBoZXJlIHRvIGVuYWJsZSB0aGUgdmhvc3Rfc2NzaSBUQ00gZmFicmljIG1vZHVsZVxuICA1NDpcdFx0Zm9yIHVzZSB3aXRoIHZpcnRpby1zY3NpIGd1ZXN0c1xuICA1NTpcdFxuICA1NjpcdGNvbmZpZyBWSE9TVF9WU09DS1xuICA1NzpcdFx0dHJpc3RhdGUgXCYjMzQ7dmhvc3QgdmlydGlvLXZzb2NrIGRyaXZlclwmIzM0O1xuICA1ODpcdFx0ZGVwZW5kcyBvbiBWU09DS0VUUyBcdTAwMjZcdTAwMjYgRVZFTlRGRFxuICA1OTpcdFx0c2VsZWN0IFZIT1NUXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA3OjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzNzYwCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogNjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRW5hYmxpbmcgVkhPU1RfU0NTSTogRGVwZW5kZW5jaWVzIGFuZCBWZXJpZmljYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIHRvIGVuYWJsZSBgVkhPU1RfU0NTSWAuIFN0cmFpZ2h0IGF3YXksIEkga25vdyB0aGF0IGRlcGVuZHMgb24gYSBjb3VwbGUgb2YgY29yZSBjb21wb25lbnRzOiBgVEFSR0VUX0NPUkVgIGFuZCBgRVZFTlRGRGAuIE1ha2VzIHNlbnNlOyBgVkhPU1RfU0NTSWAgbGV2ZXJhZ2VzIHRoZSBTQ1NJIHRhcmdldCBpbmZyYXN0cnVjdHVyZSBhbmQgbGlrZWx5IG5lZWRzIHNvbWUgZXZlbnQgbm90aWZpY2F0aW9uIG1lY2hhbmlzbS4gVGhlcmVmb3JlLCB0aGUgZmlyc3Qgc3RlcCBpcyBjbGVhcjogSSBuZWVkIHRvIGV4cGxpY2l0bHkgZW5hYmxlIGBWSE9TVF9TQ1NJYCwgYFRBUkdFVF9DT1JFYCwgYW5kLCBqdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiBhbmQgcnVsZSBvdXQgYW55IHBvdGVudGlhbCBpc3N1ZXMsIEkgc2hvdWxkIGFsc28gZW5hYmxlIGBFVkVOVEZEYCBldmVuIHRob3VnaCBpdCYjMzk7cyB0eXBpY2FsbHkgYSBkZWZhdWx0IHNldHRpbmcuIEJldHRlciBzYWZlIHRoYW4gc29ycnksIGFzIEkmIzM5O3ZlIHNlZW4gc29tZSBjb25maWd1cmF0aW9ucyB3aGVyZSBhc3N1bXB0aW9ucyBhYm91dCBkZWZhdWx0cyBiaXRlIHlvdSBsYXRlci4KCk5vdywgYmVmb3JlIEkgY29tbWl0IHRvIHRoZXNlIGNoYW5nZXMsIGEgcXVpY2sgZG91YmxlLWNoZWNrIG9uIGBUQVJHRVRfQ09SRWAgaXMgaW4gb3JkZXIuIEkgbmVlZCB0byBiZSBjb25maWRlbnQgdGhhdCB0aGUgYmFzZSB0YXJnZXQgaW5mcmFzdHJ1Y3R1cmUgaXMgc2V0IHVwIGNvcnJlY3RseS4gTm8gcG9pbnQgaW4gdHJ5aW5nIHRvIGJ1aWxkIG9uIGEgc2hha3kgZm91bmRhdGlvbi4gTGV0IG1lIGp1c3QgY29uZmlybSBpdHMgc3RhdHVzLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA3OjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBUQVJHRVRfQ09SRSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdGFyZ2V0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy90YXJnZXQvS2NvbmZpZy0yLVxuZHJpdmVycy90YXJnZXQvS2NvbmZpZzozOm1lbnVjb25maWcgVEFSR0VUX0NPUkVcbmRyaXZlcnMvdGFyZ2V0L0tjb25maWctNC1cdHRyaXN0YXRlIFwmIzM0O0dlbmVyaWMgVGFyZ2V0IENvcmUgTW9kIChUQ00pIGFuZCBDb25maWdGUyBJbmZyYXN0cnVjdHVyZVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAwNzo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDEzNwoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDIxMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFRhcmdldCBDb3JlIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgY29uZmlndXJhdGlvbiBmb3IgYFRBUkdFVF9DT1JFYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGxldCYjMzk7cyBzZWUgaWYgd2UgbmVlZCB0byBlbmFibGUgYFZIT1NUYCBmdW5jdGlvbmFsaXR5LiBJdCBsb29rcyBsaWtlIGBWSE9TVGAgaXMgc2VsZWN0ZWQsIG9yIHJlcXVpcmVkLCBieSBgVkhPU1RfU0NTSWAuIFRoZXJlZm9yZSwgYEVuYWJsZUNvbmZpZ3NgIHNob3VsZCBkZWZpbml0ZWx5IGluY2x1ZGUgYCYjMzQ7VkhPU1RfU0NTSSYjMzQ7YCBhbmQgYCYjMzQ7VEFSR0VUX0NPUkUmIzM0O2AuIEkmIzM5O20gZ29pbmcgdG8gZG91YmxlIGNoZWNrIGFuZCBtYWtlIHN1cmUgdGhhdCYjMzk7cyBpdC4KCkxldCBtZSBzZWXigKYgT2theSwgaXQgbG9va3MgbGlrZSBgU0dfUE9PTGAgaXMgYWxzbyBzZWxlY3RlZC4gSG93ZXZlciwgZ2l2ZW4gdGhhdCBgVkhPU1RfU0NTSWAgYW5kIGBUQVJHRVRfQ09SRWAgYXJlIGVub3VnaCB0byBjb3ZlciB0aGUgYmFzZXMsIEkmIzM5O20gY29uZmlkZW50IHdlIGhhdmUgZXZlcnl0aGluZyBuZWVkZWQuCgpOb3csIGxldCYjMzk7cyByZXZpZXcgdGhlIGNydWNpYWwgc3ltYm9scyBmb3IgdGhpcyBwYXJ0aWN1bGFyIGFyZWEuIEkmIzM5O3ZlIGdvdCB0byBtYWtlIHN1cmUgSSYjMzk7bSBjYXB0dXJpbmcgYWxsIHRoZSBtYWpvciBlbnRyeSBwb2ludHM6IEkmIzM5O20gc2VlaW5nIGB2aG9zdF9zY3NpX2NvbXBsZXRlX2NtZF93b3JrYCwgYHZob3N0X3Njc2lfaGFuZGxlX2tpY2tgLCBgdmhvc3Rfc2NzaV9pb2N0bGAsIGFuZCBgdmhvc3Rfc2NzaV9vcGVuYC4gSSBuZWVkIHRvIGVuc3VyZSB0aGVyZSBhcmUgbm8gb3RoZXIgc2lnbmlmaWNhbnQgZW50cnkgcG9pbnRzLCBzbyBJJiMzOTtsbCBjaGVjayBgdmhvc3Rfc2NzaV9ldnRfaGFuZGxlX2tpY2tgLCBgdmhvc3Rfc2NzaV9ldnRfd29ya2AsIGFuZCBgdmhvc3Rfc2NzaV90bWZfcmVzcF93b3JrYC4gSSYjMzk7bGwgdmVyaWZ5IHRoZWlyIGV4aXN0ZW5jZSBhbmQgaW1wb3J0YW5jZSBub3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA3OjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Zob3N0X3Njc2lfZXZ0X2hhbmRsZV9raWNrJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92aG9zdC9zY3NpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy92aG9zdC9zY3NpLmM9MTc5OD12aG9zdF9zY3NpX3NlbmRfZXZ0KHN0cnVjdCB2aG9zdF9zY3NpICp2cywgc3RydWN0IHZob3N0X3ZpcnRxdWV1ZSAqdnEsXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTgyNS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjE4MjY6c3RhdGljIHZvaWQgdmhvc3Rfc2NzaV9ldnRfaGFuZGxlX2tpY2soc3RydWN0IHZob3N0X3dvcmsgKndvcmspXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xODI3LXtcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz0yMjcwPXN0YXRpYyBpbnQgdmhvc3Rfc2NzaV9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmKVxuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTIzMTItXHR2cy1cdTAwM2V2cXNbVkhPU1RfU0NTSV9WUV9DVExdLnZxLmhhbmRsZV9raWNrID0gdmhvc3Rfc2NzaV9jdGxfaGFuZGxlX2tpY2s7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyMzEzOlx0dnMtXHUwMDNldnFzW1ZIT1NUX1NDU0lfVlFfRVZUXS52cS5oYW5kbGVfa2ljayA9IHZob3N0X3Njc2lfZXZ0X2hhbmRsZV9raWNrO1xuZHJpdmVycy92aG9zdC9zY3NpLmMtMjMxNC1cdGZvciAoaSA9IFZIT1NUX1NDU0lfVlFfSU87IGkgXHUwMDNjIG52cXM7IGkmIzQzOyYjNDM7KSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA3OjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0OTk4CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipTQ1NJIEtpY2sgSGFuZGxpbmcgLSBBIFF1aWNrIENoZWNrKioKClJpZ2h0LCBgdmhvc3Rfc2NzaV9ldnRfaGFuZGxlX2tpY2tgIGRlZmluaXRlbHkgZXhpc3RzLiBJJiMzOTt2ZSB1c2VkIHRoYXQgZnVuY3Rpb24gY291bnRsZXNzIHRpbWVzLiBCdXQsIGxldCBtZSBqdXN0IGRvdWJsZS1jaGVjaywgaXMgdGhlcmUgYSBjb3JyZXNwb25kaW5nIGZ1bmN0aW9uIGZvciBjb250cm9sIHBhdGggaGFuZGxpbmc/IFRoZSBvYnZpb3VzIHF1ZXN0aW9uIGlzOiBXaGF0IGFib3V0IGB2aG9zdF9zY3NpX2N0bF9oYW5kbGVfa2lja2A/IEkgbmVlZCB0byBiZSBzdXJlIEkmIzM5O20gbm90IG1pc3Npbmcgc29tZXRoaW5nIGluIHRoZSBjb250cm9sIHBsYW5lIGludGVyYWN0aW9ucy4gQSBxdWljayBjaGVjayBvZiB0aGUgY29kZWJhc2UgaXMgcHJvYmFibHkgd2FycmFudGVkLiBObyBwb2ludCBpbiBtYWtpbmcgYW4gaW5jb3JyZWN0IGFzc3VtcHRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA3OjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Zob3N0X3Njc2lfY3RsX2hhbmRsZV9raWNrJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92aG9zdC9zY3NpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy92aG9zdC9zY3NpLmM9MTY2Nj12aG9zdF9zY3NpX2N0bF9oYW5kbGVfdnEoc3RydWN0IHZob3N0X3Njc2kgKnZzLCBzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICp2cSlcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xNzg2LVxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTc4NzpzdGF0aWMgdm9pZCB2aG9zdF9zY3NpX2N0bF9oYW5kbGVfa2ljayhzdHJ1Y3Qgdmhvc3Rfd29yayAqd29yaylcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE3ODgte1xuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTIyNzA9c3RhdGljIGludCB2aG9zdF9zY3NpX29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmYpXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjMxMS1cdHZxc1tWSE9TVF9TQ1NJX1ZRX0VWVF0gPSBcdTAwMjZ2cy1cdTAwM2V2cXNbVkhPU1RfU0NTSV9WUV9FVlRdLnZxO1xuZHJpdmVycy92aG9zdC9zY3NpLmM6MjMxMjpcdHZzLVx1MDAzZXZxc1tWSE9TVF9TQ1NJX1ZRX0NUTF0udnEuaGFuZGxlX2tpY2sgPSB2aG9zdF9zY3NpX2N0bF9oYW5kbGVfa2ljaztcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTIzMTMtXHR2cy1cdTAwM2V2cXNbVkhPU1RfU0NTSV9WUV9FVlRdLnZxLmhhbmRsZV9raWNrID0gdmhvc3Rfc2NzaV9ldnRfaGFuZGxlX2tpY2s7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA3OjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1NTI5CgkJCQkJCQlvdXRwdXQ6IDE5NQoJCQkJCQkJdGhvdWdodHM6IDQyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBsb29rZWQgb3ZlciB0aGlzIHBhdGNoLiBJdCBzZWVtcyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgcmFjZSBjb25kaXRpb24gd2l0aGluIHRoZSBgdmhvc3Rfc2NzaV9jb21wbGV0ZV9jbWRfd29ya2AgZnVuY3Rpb24sIHdoaWNoIGlzIGEgd29ya3F1ZXVlIGhhbmRsZXIuIFRoZSBpc3N1ZSBzdGVtcyBmcm9tIHRoZSBgdmhvc3Rfc2lnbmFsYCBjYWxsIGJlaW5nIG1hZGUgYWZ0ZXIgcmVsZWFzaW5nIHRoZSBgc3ZxLSZndDt2cS5tdXRleGAuIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdGhhdCBgdmhvc3Rfc2lnbmFsYCBhbHdheXMgcmVxdWlyZXMgdGhhdCBtdXRleCwgYnV0IGl0JiMzOTtzIHVzZWQgaW4gcGxlbnR5IG9mIHBsYWNlcyB3aXRob3V0IHRoYXQgbG9jay4gU3BlY2lmaWNhbGx5IGluIHRoaXMgYHZob3N0LXNjc2lgIGNvbnRleHQgSSYjMzk7bSBub3QgZW50aXJlbHkgc3VyZSwgYnV0IHRoZSBwYXRjaCBleHRlbmRzIHRoZSBsb2NrIHRvIGNvdmVyIGB2aG9zdF9zaWduYWxgLCB0byBiZSBzYWZlLgoKSSYjMzk7dmUgY2hlY2tlZCB0aGUgZm9jdXMgc3ltYm9scyBmb3IgdGhpcyBhcmU6CmB2aG9zdF9zY3NpX2NvbXBsZXRlX2NtZF93b3JrYCwgYHZob3N0X3Njc2lfaGFuZGxlX2tpY2tgLCBgdmhvc3Rfc2NzaV9jdGxfaGFuZGxlX2tpY2tgLCBgdmhvc3Rfc2NzaV9ldnRfaGFuZGxlX2tpY2tgLCBhbmQgYHZob3N0X3Njc2lfaW9jdGxgLgoKR2l2ZW4gdGhpcyBpcyBhIGNvcmUgdmhvc3Qtc2NzaSBkcml2ZXIgY2hhbmdlLCBpdCBtYWtlcyBzZW5zZSB0byBmb2N1cyBmdXp6aW5nIGVmZm9ydHMgaGVyZS4gVGhlIGxvZ2ljIGlzIG5vdyBsb2NrZWQgZG93bi4gQW5kIGl0JiMzOTtzIGEgZnVuY3Rpb25hbCBtb2RpZmljYXRpb24sIHNvIGRlZmluaXRlbHkgd29ydGggZnV6emluZyB0byBlbnN1cmUgaXQmIzM5O3Mgcm9idXN0LiBUaGUgY2hhbmdlIGxpa2VseSBpbnZvbHZlcyB0aGUgdmlydHF1ZXVlIGtpY2svY29tcGxldGlvbiBoYW5kbGVycyBhbmQgdmhvc3Qtc2NzaSBpb2N0bHMuCgpTbywgZm9yIG15IHN1bW1hcnk6CgoqICAgKipXb3J0aEZ1enppbmc6KiogVHJ1ZSwgZGVmaW5pdGVseS4KKiAgICoqRm9jdXNTeW1ib2xzOioqIEkmIzM5O2xsIGNvbmNlbnRyYXRlIG9uIHRoZSBmdW5jdGlvbnMgSSBsaXN0ZWQgYWJvdmUuCiogICAqKkVuYWJsZUNvbmZpZ3M6KiogTmVlZCB0byBjb25maXJtIGBWSE9TVF9TQ1NJYCBhbmQgcHJvYmFibHkgYFRBUkdFVF9DT1JFYCBhcmUgZW5hYmxlZCBmb3IgdGhpcy4KKiAgICoqUmVhc29uaW5nOioqIFRoZSBwYXRjaCBpcyBmdW5jdGlvbmFsbHkgc291bmQgYW5kIGV4dGVuZHMgYSBjcml0aWNhbCBsb2NrIHRvIHByZXZlbnQgYSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24gaW4gYHZob3N0X3Njc2lfY29tcGxldGVfY21kX3dvcmtgLiBXZSBzaG91bGQgc3BlY2lmaWNhbGx5IGZ1enogdGhlIGlvY3RsIGFuZCB2aXJ0cXVldWUgaW50ZXJhY3Rpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAwNzo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VkhPU1RfU0NTSSYjMzQ7LAogICAgJiMzNDtUQVJHRVRfQ09SRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3Zob3N0X3Njc2lfY29tcGxldGVfY21kX3dvcmsmIzM0OywKICAgICYjMzQ7dmhvc3Rfc2NzaV9oYW5kbGVfa2ljayYjMzQ7LAogICAgJiMzNDt2aG9zdF9zY3NpX2N0bF9oYW5kbGVfa2ljayYjMzQ7LAogICAgJiMzNDt2aG9zdF9zY3NpX2V2dF9oYW5kbGVfa2ljayYjMzQ7LAogICAgJiMzNDt2aG9zdF9zY3NpX2lvY3RsJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uIGluIGB2aG9zdF9zY3NpX2NvbXBsZXRlX2NtZF93b3JrYCBieSBleHRlbmRpbmcgdGhlIGBzdnEtXHUwMDNldnEubXV0ZXhgIGxvY2sgdG8gY292ZXIgdGhlIGB2aG9zdF9zaWduYWxgIGNhbGwuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSB2aG9zdC1zY3NpIGRyaXZlciBsb2dpYy4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIHZob3N0LXNjc2kgaW9jdGxzIGFuZCB2aXJ0cXVldWUga2ljay9jb21wbGV0aW9uIGhhbmRsZXJzIHRvIHRyaWdnZXIgdGhpcyBjb2RlIHBhdGguJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZIT1NUX1NDU0kmIzM0OywKICAgICYjMzQ7VEFSR0VUX0NPUkUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2aG9zdF9zY3NpX2NvbXBsZXRlX2NtZF93b3JrJiMzNDssCiAgICAmIzM0O3Zob3N0X3Njc2lfaGFuZGxlX2tpY2smIzM0OywKICAgICYjMzQ7dmhvc3Rfc2NzaV9jdGxfaGFuZGxlX2tpY2smIzM0OywKICAgICYjMzQ7dmhvc3Rfc2NzaV9ldnRfaGFuZGxlX2tpY2smIzM0OywKICAgICYjMzQ7dmhvc3Rfc2NzaV9pb2N0bCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiBpbiBgdmhvc3Rfc2NzaV9jb21wbGV0ZV9jbWRfd29ya2AgYnkgZXh0ZW5kaW5nIHRoZSBgc3ZxLVx1MDAzZXZxLm11dGV4YCBsb2NrIHRvIGNvdmVyIHRoZSBgdmhvc3Rfc2lnbmFsYCBjYWxsLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgdmhvc3Qtc2NzaSBkcml2ZXIgbG9naWMuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSB2aG9zdC1zY3NpIGlvY3RscyBhbmQgdmlydHF1ZXVlIGtpY2svY29tcGxldGlvbiBoYW5kbGVycyB0byB0cmlnZ2VyIHRoaXMgY29kZSBwYXRoLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDZUMDc6NTU6MTIuMTQ0ODAyNTQxWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAzMzYyMzM5NTU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlZIT1NUX1NDU0lcIixcbiAgICBcIlRBUkdFVF9DT1JFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidmhvc3Rfc2NzaV9jb21wbGV0ZV9jbWRfd29ya1wiLFxuICAgIFwidmhvc3Rfc2NzaV9oYW5kbGVfa2lja1wiLFxuICAgIFwidmhvc3Rfc2NzaV9jdGxfaGFuZGxlX2tpY2tcIixcbiAgICBcInZob3N0X3Njc2lfZXZ0X2hhbmRsZV9raWNrXCIsXG4gICAgXCJ2aG9zdF9zY3NpX2lvY3RsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24gaW4gYHZob3N0X3Njc2lfY29tcGxldGVfY21kX3dvcmtgIGJ5IGV4dGVuZGluZyB0aGUgYHN2cS1cXHUwMDNldnEubXV0ZXhgIGxvY2sgdG8gY292ZXIgdGhlIGB2aG9zdF9zaWduYWxgIGNhbGwuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSB2aG9zdC1zY3NpIGRyaXZlciBsb2dpYy4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIHZob3N0LXNjc2kgaW9jdGxzIGFuZCB2aXJ0cXVldWUga2ljay9jb21wbGV0aW9uIGhhbmRsZXJzIHRvIHRyaWdnZXIgdGhpcyBjb2RlIHBhdGguXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDA3OjU1OjEyLjE0NDgwNzQ4MVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIxMDI4NzI4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDA5Y2ZmY2VkYWQ2ZDNiMjEyMmRhMGNkY2U4YTE3NWI5ZmExNzBmODNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBBdWcgNiAwNzo1NToxMCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3Zob3N0L3Njc2kuYyBiL2RyaXZlcnMvdmhvc3Qvc2NzaS5jXFxuaW5kZXggOWExMjUzYjlkOGM1MC4uYTc4OWQ2MjM1OTg2MyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3Zob3N0L3Njc2kuY1xcbisrKyBiL2RyaXZlcnMvdmhvc3Qvc2NzaS5jXFxuQEAgLTczNSwxMCArNzM1LDkgQEAgc3RhdGljIHZvaWQgdmhvc3Rfc2NzaV9jb21wbGV0ZV9jbWRfd29yayhzdHJ1Y3Qgdmhvc3Rfd29yayAqd29yaylcXG4gXFx0XFx0dmhvc3Rfc2NzaV9yZWxlYXNlX2NtZF9yZXMoc2VfY21kKTtcXG4gXFx0fVxcbiBcXG4tXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZzdnEtXFx1MDAzZXZxLm11dGV4KTtcXG4tXFxuIFxcdGlmIChzaWduYWwpXFxuIFxcdFxcdHZob3N0X3NpZ25hbChcXHUwMDI2c3ZxLVxcdTAwM2V2cy1cXHUwMDNlZGV2LCBcXHUwMDI2c3ZxLVxcdTAwM2V2cSk7XFxuK1xcdG11dGV4X3VubG9jayhcXHUwMDI2c3ZxLVxcdTAwM2V2cS5tdXRleCk7XFxuIH1cXG4gXFxuIHN0YXRpYyBzdHJ1Y3Qgdmhvc3Rfc2NzaV9jbWQgKlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwNzo1NToxMy4zNTU4MTI1MThaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxMDIxNTEzMjA5MzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVkhPU1RfU0NTSVwiLFxuICAgIFwiVEFSR0VUX0NPUkVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2aG9zdF9zY3NpX2NvbXBsZXRlX2NtZF93b3JrXCIsXG4gICAgXCJ2aG9zdF9zY3NpX2hhbmRsZV9raWNrXCIsXG4gICAgXCJ2aG9zdF9zY3NpX2N0bF9oYW5kbGVfa2lja1wiLFxuICAgIFwidmhvc3Rfc2NzaV9ldnRfaGFuZGxlX2tpY2tcIixcbiAgICBcInZob3N0X3Njc2lfaW9jdGxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiBpbiBgdmhvc3Rfc2NzaV9jb21wbGV0ZV9jbWRfd29ya2AgYnkgZXh0ZW5kaW5nIHRoZSBgc3ZxLVxcdTAwM2V2cS5tdXRleGAgbG9jayB0byBjb3ZlciB0aGUgYHZob3N0X3NpZ25hbGAgY2FsbC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIHZob3N0LXNjc2kgZHJpdmVyIGxvZ2ljLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgdmhvc3Qtc2NzaSBpb2N0bHMgYW5kIHZpcnRxdWV1ZSBraWNrL2NvbXBsZXRpb24gaGFuZGxlcnMgdG8gdHJpZ2dlciB0aGlzIGNvZGUgcGF0aC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMDljZmZjZWRhZDZkM2IyMTIyZGEwY2RjZThhMTc1YjlmYTE3MGY4M1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgQXVnIDYgMDc6NTU6MTAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL3Zob3N0L3Njc2kuYyBiL2RyaXZlcnMvdmhvc3Qvc2NzaS5jXG5pbmRleCA5YTEyNTNiOWQ4YzUwLi5hNzg5ZDYyMzU5ODYzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy92aG9zdC9zY3NpLmNcbisrKyBiL2RyaXZlcnMvdmhvc3Qvc2NzaS5jXG5AQCAtNzM1LDEwICs3MzUsOSBAQCBzdGF0aWMgdm9pZCB2aG9zdF9zY3NpX2NvbXBsZXRlX2NtZF93b3JrKHN0cnVjdCB2aG9zdF93b3JrICp3b3JrKVxuIFx0XHR2aG9zdF9zY3NpX3JlbGVhc2VfY21kX3JlcyhzZV9jbWQpO1xuIFx0fVxuIFxuLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNnN2cS1cdTAwM2V2cS5tdXRleCk7XG4tXG4gXHRpZiAoc2lnbmFsKVxuIFx0XHR2aG9zdF9zaWduYWwoXHUwMDI2c3ZxLVx1MDAzZXZzLVx1MDAzZWRldiwgXHUwMDI2c3ZxLVx1MDAzZXZxKTtcbitcdG11dGV4X3VubG9jayhcdTAwMjZzdnEtXHUwMDNldnEubXV0ZXgpO1xuIH1cbiBcbiBzdGF0aWMgc3RydWN0IHZob3N0X3Njc2lfY21kICpcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDA3OjU1OjEzLjM1NTgxMzQ4OFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5MzExMTAzMzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgdmhvc3Qtc2NzaSBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCB0d2Vha3MgYGRyaXZlcnMvdmhvc3Qvc2NzaS5jYCwgc3BlY2lmaWNhbGx5IHRoZSBgdmhvc3Rfc2NzaV9jb21wbGV0ZV9jbWRfd29ya2AgZnVuY3Rpb24uIFRoZSBrZXkgY2hhbmdlIGlzIHRoZSByZS1vcmRlcmluZyBvZiBhIG11dGV4IHVubG9jay4gQ3VycmVudGx5LCBgbXV0ZXhfdW5sb2NrKFx1MDAyNnN2cS1cdTAwM2V2cS5tdXRleCk7YCBoYXBwZW5zIGJlZm9yZSBhIHNpZ25hbC4gVGhlIHBhdGNoIG1vdmVzIHRoaXMgdW5sb2NrIHRvIGFmdGVyIHRoZSBjb25kaXRpb25hbCBzaWduYWwgb3BlcmF0aW9uOiBgaWYgKHNpZ25hbCkgdmhvc3Rfc2lnbmFsKFx1MDAyNnN2cS1cdTAwM2V2cy1cdTAwM2VkZXYsIFx1MDAyNnN2cS1cdTAwM2V2cSk7YC5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGltbWVkaWF0ZWx5IGRpdmUgaW50byBgdmhvc3Rfc2NzaV9jb21wbGV0ZV9jbWRfd29ya2AgYW5kIHVuZGVyc3RhbmQgd2h5IHRoaXMgcmUtb3JkZXJpbmcgaXMgYmVpbmcgcHJvcG9zZWQuIFdoYXQncyB0aGUgcmF0aW9uYWxlPyBJcyB0aGVyZSBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiBvciBsb2NraW5nIGlzc3VlIGJlaW5nIGFkZHJlc3NlZD8gV2hhdCdzIHRoZSBjb250ZXh0IHN1cnJvdW5kaW5nIHRoZSBzaWduYWwgY2FsbD8gSXMgaXQgcmVsYXRlZCB0byBjb21wbGV0aW9uIG5vdGlmaWNhdGlvbnMsIGVycm9yIGhhbmRsaW5nLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gVGhlIHNpZ25hbCBpdHNlbGYsIHdoYXQncyBpdHMgcHVycG9zZSByZWxhdGl2ZSB0byB0aGUgbXV0ZXgncyBwcm90ZWN0aW9uPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIGhvbGRpbmcgdGhlIG11dGV4IHNsaWdodGx5IGxvbmdlciBpbiB0aGlzIHNjZW5hcmlvLiBUaGlzIHNtYWxsIGNoYW5nZSBjb3VsZCBiZSBpbm5vY3VvdXMsIGNyaXRpY2FsLCBvciBldmVuIHN1YnRseSBpbnRyb2R1Y2UgYSBuZXcgcHJvYmxlbS4gU28gSSBuZWVkIHRvIGRpZyBkZWVwIHRvIGZ1bGx5IGNvbXByZWhlbmQgdGhpcyBzaGlmdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA2NiwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMDc6NTU6MTcuMjg2OTI1NjI5WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MTQ5NTE3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZob3N0X3Njc2lfY29tcGxldGVfY21kX3dvcmtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy92aG9zdC9zY3NpLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92aG9zdC9zY3NpLmM9NjU2PXN0YXRpYyBpbnQgdmhvc3Rfc2NzaV9jb3B5X3NnbF90b19pb3Yoc3RydWN0IHZob3N0X3Njc2lfY21kICpjbWQpXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy02ODUtICovXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6Njg2OnN0YXRpYyB2b2lkIHZob3N0X3Njc2lfY29tcGxldGVfY21kX3dvcmsoc3RydWN0IHZob3N0X3dvcmsgKndvcmspXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtNjg3LXtcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTIyNzA9c3RhdGljIGludCB2aG9zdF9zY3NpX29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmYpXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yMzIwLVxcdFxcdHZob3N0X3dvcmtfaW5pdChcXHUwMDI2c3ZxLVxcdTAwM2Vjb21wbGV0aW9uX3dvcmssXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MjMyMTpcXHRcXHRcXHRcXHR2aG9zdF9zY3NpX2NvbXBsZXRlX2NtZF93b3JrKTtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yMzIyLVxcdFxcdHN2cS1cXHUwMDNldnEuaGFuZGxlX2tpY2sgPSB2aG9zdF9zY3NpX2hhbmRsZV9raWNrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwNzo1NToxNy4zMzEwODIxMzVaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODg1OTM3NjQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIENyaXRpY2FsIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBhZGRyZXNzaW5nIGEgY29uY3VycmVuY3kgaXNzdWUsIHByb2JhYmx5IGEgcmFjZSBjb25kaXRpb24gb3Igc29tZSBsb2NraW5nIHByb2JsZW0uIEl0IGxvb2tzIGxpa2UgdGhlIGNvcmUgb2YgdGhlIGZpeCByZXZvbHZlcyBhcm91bmQgZXh0ZW5kaW5nIGEgbG9jaydzIHByb3RlY3Rpb24gdG8gY292ZXIgdGhlIGB2aG9zdF9zaWduYWxgIGNhbGwuIE5vdywgaG9sZCBvbiBhIHNlY29uZOKApkkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBzY29wZSBvZiB0aGlzLiBEb2VzIGB2aG9zdF9zaWduYWxgIGl0c2VsZiAqcmVxdWlyZSogdGhlIGxvY2s/IE9yIGlzIGl0IHRoYXQgYHZob3N0X3NpZ25hbGAgaXMgdG91Y2hpbmcgc29tZXRoaW5nIOKAkyBwZXJoYXBzIGBcdTAwMjZzdnEtXHUwMDNldnFgIOKAkyB0aGF0ICpuZWVkcyogdGhlIGxvY2sncyBwcm90ZWN0aW9uPyBJIG5lZWQgdG8gY2xhcmlmeSB3aGF0IHRoZSBmdW5jdGlvbiBkb2VzIGV4YWN0bHkgaW4gcmVsYXRpb24gdG8gdGhlIGJyb2FkZXIgbG9jayBhbmQgZGF0YSBzdHJ1Y3R1cmVzIGF0IHBsYXkuIFJpZ2h0LCB0aW1lIHRvIGRpZyBpbnRvIHRoZSBgdmhvc3Rfc2lnbmFsYCBpbXBsZW1lbnRhdGlvbiBpdHNlbGYuIExldCdzIHN0YXJ0IHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzIxLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMDc6NTU6MjEuMjE3MDIyMjA5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyMjAwNjQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZob3N0X3NpZ25hbFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3Zob3N0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3Zob3N0L3Njc2kuYz02ODY9c3RhdGljIHZvaWQgdmhvc3Rfc2NzaV9jb21wbGV0ZV9jbWRfd29yayhzdHJ1Y3Qgdmhvc3Rfd29yayAqd29yaylcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTczOC1cXHRpZiAoc2lnbmFsKVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjczOTpcXHRcXHR2aG9zdF9zaWduYWwoXFx1MDAyNnN2cS1cXHUwMDNldnMtXFx1MDAzZWRldiwgXFx1MDAyNnN2cS1cXHUwMDNldnEpO1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTc0MC1cXHRtdXRleF91bmxvY2soXFx1MDAyNnN2cS1cXHUwMDNldnEubXV0ZXgpO1xcbi0tXFxuZHJpdmVycy92aG9zdC92aG9zdC5jPTMxMzM9c3RhdGljIGJvb2wgdmhvc3Rfbm90aWZ5KHN0cnVjdCB2aG9zdF9kZXYgKmRldiwgc3RydWN0IHZob3N0X3ZpcnRxdWV1ZSAqdnEpXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMzE3MC0vKiBUaGlzIGFjdHVhbGx5IHNpZ25hbHMgdGhlIGd1ZXN0LCB1c2luZyBldmVudGZkLiAqL1xcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYzozMTcxOnZvaWQgdmhvc3Rfc2lnbmFsKHN0cnVjdCB2aG9zdF9kZXYgKmRldiwgc3RydWN0IHZob3N0X3ZpcnRxdWV1ZSAqdnEpXFxuZHJpdmVycy92aG9zdC92aG9zdC5jLTMxNzIte1xcbi0tXFxuZHJpdmVycy92aG9zdC92aG9zdC5jLTMxNzYtfVxcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYzozMTc3OkVYUE9SVF9TWU1CT0xfR1BMKHZob3N0X3NpZ25hbCk7XFxuZHJpdmVycy92aG9zdC92aG9zdC5jLTMxNzgtXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmM9MzE4MD12b2lkIHZob3N0X2FkZF91c2VkX2FuZF9zaWduYWwoc3RydWN0IHZob3N0X2RldiAqZGV2LFxcbi0tXFxuZHJpdmVycy92aG9zdC92aG9zdC5jLTMxODQtXFx0dmhvc3RfYWRkX3VzZWQodnEsIGhlYWQsIGxlbik7XFxuZHJpdmVycy92aG9zdC92aG9zdC5jOjMxODU6XFx0dmhvc3Rfc2lnbmFsKGRldiwgdnEpO1xcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYy0zMTg2LX1cXG4tLVxcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYz0zMTkwPXZvaWQgdmhvc3RfYWRkX3VzZWRfYW5kX3NpZ25hbF9uKHN0cnVjdCB2aG9zdF9kZXYgKmRldixcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYy0zMTk2LVxcdHZob3N0X2FkZF91c2VkX24odnEsIGhlYWRzLCBuaGVhZHMsIGNvdW50KTtcXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmM6MzE5NzpcXHR2aG9zdF9zaWduYWwoZGV2LCB2cSk7XFxuZHJpdmVycy92aG9zdC92aG9zdC5jLTMxOTgtfVxcbi0tXFxuZHJpdmVycy92aG9zdC92aG9zdC5oPTI1Mz12b2lkIHZob3N0X2FkZF91c2VkX2FuZF9zaWduYWxfbihzdHJ1Y3Qgdmhvc3RfZGV2ICosIHN0cnVjdCB2aG9zdF92aXJ0cXVldWUgKixcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuaC0yNTUtXFx0XFx0XFx0XFx0IHVuc2lnbmVkIGNvdW50KTtcXG5kcml2ZXJzL3Zob3N0L3Zob3N0Lmg6MjU2OnZvaWQgdmhvc3Rfc2lnbmFsKHN0cnVjdCB2aG9zdF9kZXYgKiwgc3RydWN0IHZob3N0X3ZpcnRxdWV1ZSAqKTtcXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmgtMjU3LXZvaWQgdmhvc3RfZGlzYWJsZV9ub3RpZnkoc3RydWN0IHZob3N0X2RldiAqLCBzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICopO1xcbi0tXFxuZHJpdmVycy92aG9zdC92c29jay5jPTEwNz12aG9zdF90cmFuc3BvcnRfZG9fc2VuZF9wa3Qoc3RydWN0IHZob3N0X3Zzb2NrICp2c29jayxcXG4tLVxcbmRyaXZlcnMvdmhvc3QvdnNvY2suYy0yNjctXFx0aWYgKGFkZGVkKVxcbmRyaXZlcnMvdmhvc3QvdnNvY2suYzoyNjg6XFx0XFx0dmhvc3Rfc2lnbmFsKFxcdTAwMjZ2c29jay1cXHUwMDNlZGV2LCB2cSk7XFxuZHJpdmVycy92aG9zdC92c29jay5jLTI2OS1cXG4tLVxcbmRyaXZlcnMvdmhvc3QvdnNvY2suYz01MjM9c3RhdGljIHZvaWQgdmhvc3RfdnNvY2tfaGFuZGxlX3R4X2tpY2soc3RydWN0IHZob3N0X3dvcmsgKndvcmspXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmMtNTk0LVxcdGlmIChhZGRlZClcXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmM6NTk1OlxcdFxcdHZob3N0X3NpZ25hbChcXHUwMDI2dnNvY2stXFx1MDAzZWRldiwgdnEpO1xcbmRyaXZlcnMvdmhvc3QvdnNvY2suYy01OTYtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDA3OjU1OjIxLjI1OTIyNDc4NloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxNDkzMDk4ODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBQb3RlbnRpYWw6IGB2aG9zdF9zY3NpX2NvbXBsZXRlX2NtZF93b3JrYCBNb2RpZmljYXRpb24qKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGB2aG9zdF9zY3NpX2NvbXBsZXRlX2NtZF93b3JrYC4gSW1tZWRpYXRlbHksIHRoZSBxdWVzdGlvbiBhcmlzZXM6IGZ1enppbmcgb3Bwb3J0dW5pdHk/IEFic29sdXRlbHkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gdGhlIGB2aG9zdC1zY3NpYCBzdWJzeXN0ZW0sIHdoaWNoIG1lYW5zIGl0J3MgcHJpbWUgdGVycml0b3J5IGZvciBkaWdnaW5nIHVwIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMuIE15IGV4cGVyaWVuY2Ugc2F5cyB0aGF0IGFueSBhbHRlcmF0aW9uIHRvIGNvbW1hbmQgY29tcGxldGlvbiBsb2dpYyBpcyBhIGdvb2QgcGxhY2UgdG8gc3RhcnQuIE5vdywgbGV0J3MgZ2V0IHRoZSBiYWxsIHJvbGxpbmcgYW5kIHRyYWNrIGRvd24gdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgYHZob3N0LXNjc2lgIHRvIHRhaWxvciBhIGZ1enppbmcgY2FtcGFpZ24uIEdvdHRhIGlkZW50aWZ5IHdoYXQncyBlbmFibGVkLCB3aGF0J3MgZGlzYWJsZWQsIGFuZCB3aGVyZSB0aGUgbW9zdCBpbnRlcmVzdGluZyBlbnRyeSBwb2ludHMgYXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozODgwLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMDc6NTU6MjQuNDA4NTM2ODYxWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzMzY1MTE3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZob3N0X3Njc2lcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy92aG9zdC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmhvc3QvS2NvbmZpZz00Nj1jb25maWcgVkhPU1RfU0NTSVxcbi0tXFxuZHJpdmVycy92aG9zdC9LY29uZmlnLTUyLVxcdGhlbHBcXG5kcml2ZXJzL3Zob3N0L0tjb25maWc6NTM6XFx0U2F5IE0gaGVyZSB0byBlbmFibGUgdGhlIHZob3N0X3Njc2kgVENNIGZhYnJpYyBtb2R1bGVcXG5kcml2ZXJzL3Zob3N0L0tjb25maWctNTQtXFx0Zm9yIHVzZSB3aXRoIHZpcnRpby1zY3NpIGd1ZXN0c1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwNzo1NToyNC40NTE5MDM3NjdaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDIxNTExNDU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBzZWUgd2hhdCB3ZSdyZSBkZWFsaW5nIHdpdGguIFRoZSBjb25maWd1cmF0aW9uIGluIHBsYXkgaGVyZSBpcyBgVkhPU1RfU0NTSWAuIE15IGZvY3VzIG5lZWRzIHRvIGJlIGxhc2VyLXNoYXJwIG9uIHRoYXQgbW9kdWxlLiBcblxuKipWSE9TVF9TQ1NJIEVudHJ5IFBvaW50cyBhbmQgS2V5IEZ1bmN0aW9ucyoqXG5cbkknbSB6ZXJvaW5nIGluIG9uIHRoZSBjcnVjaWFsIGZ1bmN0aW9ucy4gRnJvbSB0aGUgaW5pdGlhbCBnbGFuY2UsIGB2aG9zdF9zY3NpX2NvbXBsZXRlX2NtZF93b3JrYCBqdW1wcyBvdXQsIGJ1dCBJIG5lZWQgdG8gcmVtZW1iZXIgdGhhdCBpdCdzIGEgd29ya3F1ZXVlIGZ1bmN0aW9uLiBUaGF0IG1lYW5zIGl0J3MgKnRyaWdnZXJlZCogYnkgc29tZXRoaW5nIGVsc2UuIEl0J3Mgbm90IGEgZGlyZWN0IHN5c2NhbGwgZW50cnkgcG9pbnQuIFNvLCBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IHRob3NlIHRyaWdnZXJpbmcgbWVjaGFuaXNtcyBhcmUuIFRoZSByZWFsIHF1ZXN0aW9uIGlzOiB3aGVyZSBkbyBJIGV2ZW4gKmVudGVyKiB0aGlzIGB2aG9zdC1zY3NpYCBzdWJzeXN0ZW0/IEkgbmVlZCB0byBpZGVudGlmeSB0aGUgZW50cnkgcG9pbnRzLiBVbmRlcnN0YW5kaW5nIHRoZXNlIGVudHJ5IHBvaW50cyBpcyBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgY29udHJvbCBmbG93IGFuZCBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzLiBUaW1lIHRvIGRpZyBkZWVwZXIgYW5kIG1hcCB0aG9zZSBjYWxscyBvdXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyMTQsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwNzo1NToyOC44NzM0MTc0NDRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MTIxODQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZob3N0X3Njc2lfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmhvc3Qvc2NzaS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTE2NyBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtNTMtXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6NTQ6c3RhdGljIHVuc2lnbmVkIGludCB2aG9zdF9zY3NpX2lubGluZV9zZ19jbnQgPSBWSE9TVF9TQ1NJX1BSRUFMTE9DX1NHTFM7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtNTUtXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtNTYtI2lmZGVmIENPTkZJR19BUkNIX05PX1NHX0NIQUlOXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6NTc6c3RhdGljIGludCB2aG9zdF9zY3NpX3NldF9pbmxpbmVfc2dfY250KGNvbnN0IGNoYXIgKmJ1ZixcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy01OC1cXHRcXHRcXHRcXHRcXHRjb25zdCBzdHJ1Y3Qga2VybmVsX3BhcmFtICprcClcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTYzLSNlbHNlXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6NjQ6c3RhdGljIGludCB2aG9zdF9zY3NpX3NldF9pbmxpbmVfc2dfY250KGNvbnN0IGNoYXIgKmJ1ZixcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy02NS1cXHRcXHRcXHRcXHRcXHRjb25zdCBzdHJ1Y3Qga2VybmVsX3BhcmFtICprcClcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTc4LVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjc5OlxcdHZob3N0X3Njc2lfaW5saW5lX3NnX2NudCA9IGNudDtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy04MC1cXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTgzLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjg0OnN0YXRpYyBpbnQgdmhvc3Rfc2NzaV9nZXRfaW5saW5lX3NnX2NudChjaGFyICpidWYsXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtODUtXFx0XFx0XFx0XFx0XFx0Y29uc3Qgc3RydWN0IGtlcm5lbF9wYXJhbSAqa3ApXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtODYte1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjg3OlxcdHJldHVybiBzcHJpbnRmKGJ1ZiwgXFxcIiV1XFxcXG5cXFwiLCB2aG9zdF9zY3NpX2lubGluZV9zZ19jbnQpO1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTg4LX1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy04OS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo5MDpzdGF0aWMgY29uc3Qgc3RydWN0IGtlcm5lbF9wYXJhbV9vcHMgdmhvc3Rfc2NzaV9pbmxpbmVfc2dfY250X29wID0ge1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjkxOlxcdC5nZXQgPSB2aG9zdF9zY3NpX2dldF9pbmxpbmVfc2dfY250LFxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjkyOlxcdC5zZXQgPSB2aG9zdF9zY3NpX3NldF9pbmxpbmVfc2dfY250LFxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTkzLX07XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtOTQtXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6OTU6bW9kdWxlX3BhcmFtX2NiKGlubGluZV9zZ19jbnQsIFxcdTAwMjZ2aG9zdF9zY3NpX2lubGluZV9zZ19jbnRfb3AsIE5VTEwsIDA2NDQpO1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTk2LU1PRFVMRV9QQVJNX0RFU0MoaW5saW5lX3NnX2NudCwgXFxcIlNldCB0aGUgbnVtYmVyIG9mIHNjYXR0ZXJsaXN0IGVudHJpZXMgdG8gcHJlLWFsbG9jYXRlLiBUaGUgZGVmYXVsdCBpcyAyMDQ4LlxcXCIpO1xcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTAzLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjEwNDpzdHJ1Y3Qgdmhvc3Rfc2NzaV9pbmZsaWdodCB7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTA1LVxcdC8qIFdhaXQgZm9yIHRoZSBmbHVzaCBvcGVyYXRpb24gdG8gZmluaXNoICovXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xMTAtXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTExOnN0cnVjdCB2aG9zdF9zY3NpX2NtZCB7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTEyLVxcdC8qIERlc2NyaXB0b3IgZnJvbSB2aG9zdF9nZXRfdnFfZGVzYygpIGZvciB2aXJ0X3F1ZXVlIHNlZ21lbnQgKi9cXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE0My1cXHQvKiBVc2VkIHRvIHRyYWNrIGluZmxpZ2h0IGNtZCAqL1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjE0NDpcXHRzdHJ1Y3Qgdmhvc3Rfc2NzaV9pbmZsaWdodCAqaW5mbGlnaHQ7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTQ1LX07XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTQ2LVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjE0NzpzdHJ1Y3Qgdmhvc3Rfc2NzaV9uZXh1cyB7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTQ4LVxcdC8qIFBvaW50ZXIgdG8gVENNIHNlc3Npb24gZm9yIElfVCBOZXh1cyAqL1xcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTUxLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjE1MjpzdHJ1Y3Qgdmhvc3Rfc2NzaV90cGcge1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE1My1cXHQvKiBWaG9zdCBwb3J0IHRhcmdldCBwb3J0YWwgZ3JvdXAgdGFnIGZvciBUQ00gKi9cXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE2MC1cXHRpbnQgdHZfZmFicmljX3Byb3RfdHlwZTtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxNjE6XFx0LyogbGlzdCBmb3Igdmhvc3Rfc2NzaV9saXN0ICovXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTYyLVxcdHN0cnVjdCBsaXN0X2hlYWQgdHZfdHBnX2xpc3Q7XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xNjUtXFx0LyogUG9pbnRlciB0byB0aGUgVENNIFZIb3N0IElfVCBOZXh1cyBmb3IgdGhpcyBUUEcgZW5kcG9pbnQgKi9cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxNjY6XFx0c3RydWN0IHZob3N0X3Njc2lfbmV4dXMgKnRwZ19uZXh1cztcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxNjc6XFx0LyogUG9pbnRlciBiYWNrIHRvIHZob3N0X3Njc2lfdHBvcnQgKi9cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxNjg6XFx0c3RydWN0IHZob3N0X3Njc2lfdHBvcnQgKnRwb3J0O1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjE2OTpcXHQvKiBSZXR1cm5lZCBieSB2aG9zdF9zY3NpX21ha2VfdHBnKCkgKi9cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xNzAtXFx0c3RydWN0IHNlX3BvcnRhbF9ncm91cCBzZV90cGc7XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xNzQtXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTc1OnN0cnVjdCB2aG9zdF9zY3NpX3Rwb3J0IHtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xNzYtXFx0LyogU0NTSSBwcm90b2NvbCB0aGUgdHBvcnQgaXMgcHJvdmlkaW5nICovXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xODEtXFx0Y2hhciB0cG9ydF9uYW1lW1ZIT1NUX1NDU0lfTkFNRUxFTl07XFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTgyOlxcdC8qIFJldHVybmVkIGJ5IHZob3N0X3Njc2lfbWFrZV90cG9ydCgpICovXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTgzLVxcdHN0cnVjdCBzZV93d24gdHBvcnRfd3duO1xcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTg1LVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjE4NjpzdHJ1Y3Qgdmhvc3Rfc2NzaV9ldnQge1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE4Ny1cXHQvKiBldmVudCB0byBiZSBzZW50IHRvIGd1ZXN0ICovXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz0xOTM9ZW51bSB7XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xOTktLyogTm90ZTogY2FuJ3Qgc2V0IFZJUlRJT19GX1ZFUlNJT05fMSB5ZXQsIHNpbmNlIHRoYXQgaW1wbGllcyBBTllfTEFZT1VULiAqL1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjIwMDpzdGF0aWMgY29uc3QgaW50IHZob3N0X3Njc2lfYml0c1tdID0ge1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTIwMS1cXHRWSE9TVF9GRUFUVVJFUyxcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTIwNS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyMDY6I2RlZmluZSBWSE9TVF9TQ1NJX0ZFQVRVUkVTIFZIT1NUX0ZFQVRVUkVTX1U2NCh2aG9zdF9zY3NpX2JpdHMsIDApXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjA3LVxcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjExLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjIxMjpzdGF0aWMgdW5zaWduZWQgdmhvc3Rfc2NzaV9tYXhfaW9fdnFzID0gMTI4O1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjIxMzptb2R1bGVfcGFyYW1fbmFtZWQobWF4X2lvX3Zxcywgdmhvc3Rfc2NzaV9tYXhfaW9fdnFzLCB1aW50LCAwNjQ0KTtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yMTQtTU9EVUxFX1BBUk1fREVTQyhtYXhfaW9fdnFzLCBcXFwiU2V0IHRoZSBtYXggbnVtYmVyIG9mIElPIHZpcnRxdWV1ZXMgYSB2aG9zdCBzY3NpIGRldmljZSBjYW4gc3VwcG9ydC4gVGhlIGRlZmF1bHQgaXMgMTI4LiBUaGUgbWF4IGlzIDEwMjQuXFxcIik7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjE1LVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjIxNjpzdHJ1Y3Qgdmhvc3Rfc2NzaV92aXJ0cXVldWUge1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTIxNy1cXHRzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlIHZxO1xcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjIzLVxcdCAqL1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjIyNDpcXHRzdHJ1Y3Qgdmhvc3Rfc2NzaV9pbmZsaWdodCBpbmZsaWdodHNbMl07XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjI1LVxcdC8qXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yMjktXFx0aW50IGluZmxpZ2h0X2lkeDtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyMzA6XFx0c3RydWN0IHZob3N0X3Njc2lfY21kICpzY3NpX2NtZHM7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjMxLVxcdHN0cnVjdCBzYml0bWFwIHNjc2lfdGFncztcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTIzOT1zdHJ1Y3Qgdmhvc3Rfc2NzaSB7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjQwLVxcdC8qIFByb3RlY3RlZCBieSB2aG9zdF9zY3NpLVxcdTAwM2VkZXYubXV0ZXggKi9cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyNDE6XFx0c3RydWN0IHZob3N0X3Njc2lfdHBnICoqdnNfdHBnO1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI0Mi1cXHRjaGFyIHZzX3Zob3N0X3d3cG5bVFJBTlNQT1JUX0lRTl9MRU5dO1xcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjQ0LVxcdHN0cnVjdCB2aG9zdF9kZXYgZGV2O1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjI0NTpcXHRzdHJ1Y3Qgdmhvc3Rfc2NzaV92aXJ0cXVldWUgKnZxcztcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyNDY6XFx0c3RydWN0IHZob3N0X3Njc2lfaW5mbGlnaHQgKipvbGRfaW5mbGlnaHQ7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjQ3LVxcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjU2LVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjI1NzpzdHJ1Y3Qgdmhvc3Rfc2NzaV90bWYge1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI1OC1cXHRzdHJ1Y3Qgdmhvc3Rfd29yayB2d29yaztcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI2MC1cXHRzdHJ1Y3Qgdmhvc3Rfc2NzaSAqdmhvc3Q7XFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MjYxOlxcdHN0cnVjdCB2aG9zdF9zY3NpX3ZpcnRxdWV1ZSAqc3ZxO1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI2Mi1cXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI2NC1cXHR1OCBzY3NpX3Jlc3A7XFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MjY1OlxcdHN0cnVjdCB2aG9zdF9zY3NpX2luZmxpZ2h0ICppbmZsaWdodDtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yNjYtXFx0c3RydWN0IGlvdmVjIHJlc3BfaW92O1xcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjc5LSAqL1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjI4MDpzdHJ1Y3Qgdmhvc3Rfc2NzaV9jdHgge1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI4MS1cXHRpbnQgaGVhZDtcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI5My0gKi9cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyOTQ6c3RhdGljIERFRklORV9NVVRFWCh2aG9zdF9zY3NpX211dGV4KTtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyOTU6c3RhdGljIExJU1RfSEVBRCh2aG9zdF9zY3NpX2xpc3QpO1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI5Ni1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyOTc6c3RhdGljIHZvaWQgdmhvc3Rfc2NzaV9kb25lX2luZmxpZ2h0KHN0cnVjdCBrcmVmICprcmVmKVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI5OC17XFxuZHJpdmVycy92aG9zdC9zY3NpLmM6Mjk5OlxcdHN0cnVjdCB2aG9zdF9zY3NpX2luZmxpZ2h0ICppbmZsaWdodDtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0zMDAtXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MzAxOlxcdGluZmxpZ2h0ID0gY29udGFpbmVyX29mKGtyZWYsIHN0cnVjdCB2aG9zdF9zY3NpX2luZmxpZ2h0LCBrcmVmKTtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0zMDItXFx0Y29tcGxldGUoXFx1MDAyNmluZmxpZ2h0LVxcdTAwM2Vjb21wKTtcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTMwNC1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzozMDU6c3RhdGljIHZvaWQgdmhvc3Rfc2NzaV9pbml0X2luZmxpZ2h0KHN0cnVjdCB2aG9zdF9zY3NpICp2cyxcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzozMDY6XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCB2aG9zdF9zY3NpX2luZmxpZ2h0ICpvbGRfaW5mbGlnaHRbXSlcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0zMDcte1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjMwODpcXHRzdHJ1Y3Qgdmhvc3Rfc2NzaV9pbmZsaWdodCAqbmV3X2luZmxpZ2h0O1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTMwOS1cXHRzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICp2cTtcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTMzMS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzozMzI6c3RhdGljIHN0cnVjdCB2aG9zdF9zY3NpX2luZmxpZ2h0ICpcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzozMzM6dmhvc3Rfc2NzaV9nZXRfaW5mbGlnaHQoc3RydWN0IHZob3N0X3ZpcnRxdWV1ZSAqdnEpXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMzM0LXtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzozMzU6XFx0c3RydWN0IHZob3N0X3Njc2lfaW5mbGlnaHQgKmluZmxpZ2h0O1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjMzNjpcXHRzdHJ1Y3Qgdmhvc3Rfc2NzaV92aXJ0cXVldWUgKnN2cTtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0zMzctXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MzM4OlxcdHN2cSA9IGNvbnRhaW5lcl9vZih2cSwgc3RydWN0IHZob3N0X3Njc2lfdmlydHF1ZXVlLCB2cSk7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMzM5LVxcdGluZmxpZ2h0ID0gXFx1MDAyNnN2cS1cXHUwMDNlaW5mbGlnaHRzW3N2cS1cXHUwMDNlaW5mbGlnaHRfaWR4XTtcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTM0NC1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzozNDU6c3RhdGljIHZvaWQgdmhvc3Rfc2NzaV9wdXRfaW5mbGlnaHQoc3RydWN0IHZob3N0X3Njc2lfaW5mbGlnaHQgKmluZmxpZ2h0KVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTM0Ni17XFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MzQ3OlxcdGtyZWZfcHV0KFxcdTAwMjZpbmZsaWdodC1cXHUwMDNla3JlZiwgdmhvc3Rfc2NzaV9kb25lX2luZmxpZ2h0KTtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0zNDgtfVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTM0OS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzozNTA6c3RhdGljIGludCB2aG9zdF9zY3NpX2NoZWNrX3RydWUoc3RydWN0IHNlX3BvcnRhbF9ncm91cCAqc2VfdHBnKVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTM1MS17XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0zNTQtXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MzU1OnN0YXRpYyBjaGFyICp2aG9zdF9zY3NpX2dldF9mYWJyaWNfd3duKHN0cnVjdCBzZV9wb3J0YWxfZ3JvdXAgKnNlX3RwZylcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0zNTYte1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjM1NzpcXHRzdHJ1Y3Qgdmhvc3Rfc2NzaV90cGcgKnRwZyA9IGNvbnRhaW5lcl9vZihzZV90cGcsXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MzU4OlxcdFxcdFxcdFxcdHN0cnVjdCB2aG9zdF9zY3NpX3RwZywgc2VfdHBnKTtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzozNTk6XFx0c3RydWN0IHZob3N0X3Njc2lfdHBvcnQgKnRwb3J0ID0gdHBnLVxcdTAwM2V0cG9ydDtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0zNjAtXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0zNjMtXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MzY0OnN0YXRpYyB1MTYgdmhvc3Rfc2NzaV9nZXRfdHBndChzdHJ1Y3Qgc2VfcG9ydGFsX2dyb3VwICpzZV90cGcpXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMzY1LXtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzozNjY6XFx0c3RydWN0IHZob3N0X3Njc2lfdHBnICp0cGcgPSBjb250YWluZXJfb2Yoc2VfdHBnLFxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjM2NzpcXHRcXHRcXHRcXHRzdHJ1Y3Qgdmhvc3Rfc2NzaV90cGcsIHNlX3RwZyk7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMzY4LVxcdHJldHVybiB0cGctXFx1MDAzZXRwb3J0X3RwZ3Q7XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0zNzAtXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MzcxOnN0YXRpYyBpbnQgdmhvc3Rfc2NzaV9jaGVja19wcm90X2ZhYnJpY19vbmx5KHN0cnVjdCBzZV9wb3J0YWxfZ3JvdXAgKnNlX3RwZylcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0zNzIte1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjM3MzpcXHRzdHJ1Y3Qgdmhvc3Rfc2NzaV90cGcgKnRwZyA9IGNvbnRhaW5lcl9vZihzZV90cGcsXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6Mzc0OlxcdFxcdFxcdFxcdHN0cnVjdCB2aG9zdF9zY3NpX3RwZywgc2VfdHBnKTtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0zNzUtXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0zNzgtXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6Mzc5OnN0YXRpYyBpbnQgdmhvc3Rfc2NzaV9jb3B5X2NtZF9sb2coc3RydWN0IHZob3N0X3ZpcnRxdWV1ZSAqdnEsXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MzgwOlxcdFxcdFxcdFxcdCAgIHN0cnVjdCB2aG9zdF9zY3NpX2NtZCAqY21kLFxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTM4MS1cXHRcXHRcXHRcXHQgICBzdHJ1Y3Qgdmhvc3RfbG9nICpsb2csXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0zOTctXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6Mzk4OnN0YXRpYyB2b2lkIHZob3N0X3Njc2lfbG9nX3dyaXRlKHN0cnVjdCB2aG9zdF92aXJ0cXVldWUgKnZxLFxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTM5OS1cXHRcXHRcXHRcXHQgc3RydWN0IHZob3N0X2xvZyAqbG9nLFxcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtNDE1LVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjQxNjpzdGF0aWMgdm9pZCB2aG9zdF9zY3NpX3JlbGVhc2VfY21kX3JlcyhzdHJ1Y3Qgc2VfY21kICpzZV9jbWQpXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtNDE3LXtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo0MTg6XFx0c3RydWN0IHZob3N0X3Njc2lfY21kICp0dl9jbWQgPSBjb250YWluZXJfb2Yoc2VfY21kLFxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjQxOTpcXHRcXHRcXHRcXHRzdHJ1Y3Qgdmhvc3Rfc2NzaV9jbWQsIHR2Y19zZV9jbWQpO1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjQyMDpcXHRzdHJ1Y3Qgdmhvc3Rfc2NzaV92aXJ0cXVldWUgKnN2cSA9IGNvbnRhaW5lcl9vZih0dl9jbWQtXFx1MDAzZXR2Y192cSxcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo0MjE6XFx0XFx0XFx0XFx0c3RydWN0IHZob3N0X3Njc2lfdmlydHF1ZXVlLCB2cSk7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtNDIyLVxcdHN0cnVjdCB2aG9zdF9zY3NpICp2cyA9IHN2cS1cXHUwMDNldnM7XFxuZHJpdmVycy92aG9zdC9zY3NpLmM6NDIzOlxcdHN0cnVjdCB2aG9zdF9zY3NpX2luZmxpZ2h0ICppbmZsaWdodCA9IHR2X2NtZC1cXHUwMDNlaW5mbGlnaHQ7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtNDI0LVxcdHN0cnVjdCBzY2F0dGVybGlzdCAqc2c7XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy00NTQtXFx0c2JpdG1hcF9jbGVhcl9iaXQoXFx1MDAyNnN2cS1cXHUwMDNlc2NzaV90YWdzLCBzZV9jbWQtXFx1MDAzZW1hcF90YWcpO1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjQ1NTpcXHR2aG9zdF9zY3NpX3B1dF9pbmZsaWdodChpbmZsaWdodCk7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtNDU2LX1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy00NTctXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6NDU4OnN0YXRpYyB2b2lkIHZob3N0X3Njc2lfcmVsZWFzZV90bWZfcmVzKHN0cnVjdCB2aG9zdF9zY3NpX3RtZiAqdG1mKVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTQ1OS17XFxuZHJpdmVycy92aG9zdC9zY3NpLmM6NDYwOlxcdHN0cnVjdCB2aG9zdF9zY3NpX2luZmxpZ2h0ICppbmZsaWdodCA9IHRtZi1cXHUwMDNlaW5mbGlnaHQ7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtNDYxLVxcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtNDY2LVxcdGtmcmVlKHRtZik7XFxuZHJpdmVycy92aG9zdC9zY3NpLmM6NDY3OlxcdHZob3N0X3Njc2lfcHV0X2luZmxpZ2h0KGluZmxpZ2h0KTtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy00NjgtfVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTQ2OS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo0NzA6c3RhdGljIHZvaWQgdmhvc3Rfc2NzaV9kcm9wX2NtZHMoc3RydWN0IHZob3N0X3Njc2lfdmlydHF1ZXVlICpzdnEpXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtNDcxLXtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo0NzI6XFx0c3RydWN0IHZob3N0X3Njc2lfY21kICpjbWQsICp0O1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTQ3My1cXHRzdHJ1Y3QgbGxpc3Rfbm9kZSAqbGxub2RlO1xcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtNDc2LVxcdGxsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoY21kLCB0LCBsbG5vZGUsIHR2Y19jb21wbGV0aW9uX2xpc3QpXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6NDc3OlxcdFxcdHZob3N0X3Njc2lfcmVsZWFzZV9jbWRfcmVzKFxcdTAwMjZjbWQtXFx1MDAzZXR2Y19zZV9jbWQpO1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTQ3OC19XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtNDc5LVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjQ4MDpzdGF0aWMgdm9pZCB2aG9zdF9zY3NpX3JlbGVhc2VfY21kKHN0cnVjdCBzZV9jbWQgKnNlX2NtZClcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy00ODEte1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTQ4Mi1cXHRpZiAoc2VfY21kLVxcdTAwM2VzZV9jbWRfZmxhZ3MgXFx1MDAyNiBTQ0ZfU0NTSV9UTVJfQ0RCKSB7XFxuZHJpdmVycy92aG9zdC9zY3NpLmM6NDgzOlxcdFxcdHN0cnVjdCB2aG9zdF9zY3NpX3RtZiAqdG1mID0gY29udGFpbmVyX29mKHNlX2NtZCxcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo0ODQ6XFx0XFx0XFx0XFx0XFx0c3RydWN0IHZob3N0X3Njc2lfdG1mLCBzZV9jbWQpO1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTQ4NS1cXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTQ4Ny1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjQ4ODpcXHRcXHRzdHJ1Y3Qgdmhvc3Rfc2NzaV9jbWQgKmNtZCA9IGNvbnRhaW5lcl9vZihzZV9jbWQsXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6NDg5OlxcdFxcdFxcdFxcdFxcdHN0cnVjdCB2aG9zdF9zY3NpX2NtZCwgdHZjX3NlX2NtZCk7XFxuZHJpdmVycy92aG9zdC9zY3NpLmM6NDkwOlxcdFxcdHN0cnVjdCB2aG9zdF9zY3NpX3ZpcnRxdWV1ZSAqc3ZxID0gIGNvbnRhaW5lcl9vZihjbWQtXFx1MDAzZXR2Y192cSxcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo0OTE6XFx0XFx0XFx0XFx0XFx0c3RydWN0IHZob3N0X3Njc2lfdmlydHF1ZXVlLCB2cSk7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtNDkyLVxcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtNDk0LVxcdFxcdGlmICghdmhvc3RfdnFfd29ya19xdWV1ZShcXHUwMDI2c3ZxLVxcdTAwM2V2cSwgXFx1MDAyNnN2cS1cXHUwMDNlY29tcGxldGlvbl93b3JrKSlcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo0OTU6XFx0XFx0XFx0dmhvc3Rfc2NzaV9kcm9wX2NtZHMoc3ZxKTtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy00OTYtXFx0fVxcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtNDk4LVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjQ5OTpzdGF0aWMgaW50IHZob3N0X3Njc2lfd3JpdGVfcGVuZGluZyhzdHJ1Y3Qgc2VfY21kICpzZV9jbWQpXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtNTAwLXtcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTUwNS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo1MDY6c3RhdGljIGludCB2aG9zdF9zY3NpX3F1ZXVlX2RhdGFfaW4oc3RydWN0IHNlX2NtZCAqc2VfY21kKVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTUwNy17XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy01MTEtXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6NTEyOnN0YXRpYyBpbnQgdmhvc3Rfc2NzaV9xdWV1ZV9zdGF0dXMoc3RydWN0IHNlX2NtZCAqc2VfY21kKVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTUxMy17XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy01MTctXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6NTE4OnN0YXRpYyB2b2lkIHZob3N0X3Njc2lfcXVldWVfdG1fcnNwKHN0cnVjdCBzZV9jbWQgKnNlX2NtZClcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy01MTkte1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjUyMDpcXHRzdHJ1Y3Qgdmhvc3Rfc2NzaV90bWYgKnRtZiA9IGNvbnRhaW5lcl9vZihzZV9jbWQsIHN0cnVjdCB2aG9zdF9zY3NpX3RtZixcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy01MjEtXFx0XFx0XFx0XFx0XFx0XFx0ICBzZV9jbWQpO1xcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtNTI2LVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjUyNzpzdGF0aWMgdm9pZCB2aG9zdF9zY3NpX2Fib3J0ZWRfdGFzayhzdHJ1Y3Qgc2VfY21kICpzZV9jbWQpXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtNTI4LXtcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTUzMS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo1MzI6c3RhdGljIHZvaWQgdmhvc3Rfc2NzaV9mcmVlX2V2dChzdHJ1Y3Qgdmhvc3Rfc2NzaSAqdnMsIHN0cnVjdCB2aG9zdF9zY3NpX2V2dCAqZXZ0KVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTUzMy17XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy01MzctXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6NTM4OnN0YXRpYyBzdHJ1Y3Qgdmhvc3Rfc2NzaV9ldnQgKlxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjUzOTp2aG9zdF9zY3NpX2FsbG9jYXRlX2V2dChzdHJ1Y3Qgdmhvc3Rfc2NzaSAqdnMsXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtNTQwLVxcdFxcdCAgICAgICB1MzIgZXZlbnQsIHUzMiByZWFzb24pXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy01NDItXFx0c3RydWN0IHZob3N0X3ZpcnRxdWV1ZSAqdnEgPSBcXHUwMDI2dnMtXFx1MDAzZXZxc1tWSE9TVF9TQ1NJX1ZRX0VWVF0udnE7XFxuZHJpdmVycy92aG9zdC9zY3NpLmM6NTQzOlxcdHN0cnVjdCB2aG9zdF9zY3NpX2V2dCAqZXZ0O1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTU0NC1cXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTU1MS1cXHRpZiAoIWV2dCkge1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjU1MjpcXHRcXHR2cV9lcnIodnEsIFxcXCJGYWlsZWQgdG8gYWxsb2NhdGUgdmhvc3Rfc2NzaV9ldnRcXFxcblxcXCIpO1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTU1My1cXHRcXHR2cy1cXHUwMDNldnNfZXZlbnRzX21pc3NlZCA9IHRydWU7XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy01NjMtXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6NTY0OnN0YXRpYyBpbnQgdmhvc3Rfc2NzaV9jaGVja19zdG9wX2ZyZWUoc3RydWN0IHNlX2NtZCAqc2VfY21kKVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTU2NS17XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz01Njk9c3RhdGljIHZvaWRcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo1NzA6dmhvc3Rfc2NzaV9kb19ldnRfd29yayhzdHJ1Y3Qgdmhvc3Rfc2NzaSAqdnMsIHN0cnVjdCB2aG9zdF9zY3NpX2V2dCAqZXZ0KVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTU3MS17XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy02MjctXFx0ZWxzZVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjYyODpcXHRcXHR2cV9lcnIodnEsIFxcXCJGYXVsdGVkIG9uIHZob3N0X3Njc2lfc2VuZF9ldmVudFxcXFxuXFxcIik7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtNjI5LVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjYzMDpcXHR2aG9zdF9zY3NpX2xvZ193cml0ZSh2cSwgdnFfbG9nLCBsb2dfbnVtKTtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy02MzEtfVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTYzMi1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo2MzM6c3RhdGljIHZvaWQgdmhvc3Rfc2NzaV9jb21wbGV0ZV9ldmVudHMoc3RydWN0IHZob3N0X3Njc2kgKnZzLCBib29sIGRyb3ApXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtNjM0LXtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy02MzUtXFx0c3RydWN0IHZob3N0X3ZpcnRxdWV1ZSAqdnEgPSBcXHUwMDI2dnMtXFx1MDAzZXZxc1tWSE9TVF9TQ1NJX1ZRX0VWVF0udnE7XFxuZHJpdmVycy92aG9zdC9zY3NpLmM6NjM2OlxcdHN0cnVjdCB2aG9zdF9zY3NpX2V2dCAqZXZ0LCAqdDtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy02MzctXFx0c3RydWN0IGxsaXN0X25vZGUgKmxsbm9kZTtcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTY0Mi1cXHRcXHRpZiAoIWRyb3ApXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6NjQzOlxcdFxcdFxcdHZob3N0X3Njc2lfZG9fZXZ0X3dvcmsodnMsIGV2dCk7XFxuZHJpdmVycy92aG9zdC9zY3NpLmM6NjQ0OlxcdFxcdHZob3N0X3Njc2lfZnJlZV9ldnQodnMsIGV2dCk7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtNjQ1LVxcdH1cXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTY0OC1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo2NDk6c3RhdGljIHZvaWQgdmhvc3Rfc2NzaV9ldnRfd29yayhzdHJ1Y3Qgdmhvc3Rfd29yayAqd29yaylcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy02NTAte1xcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtNjUyLVxcdFxcdFxcdFxcdFxcdCAgICAgdnNfZXZlbnRfd29yayk7XFxuZHJpdmVycy92aG9zdC9zY3NpLmM6NjUzOlxcdHZob3N0X3Njc2lfY29tcGxldGVfZXZlbnRzKHZzLCBmYWxzZSk7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtNjU0LX1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy02NTUtXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6NjU2OnN0YXRpYyBpbnQgdmhvc3Rfc2NzaV9jb3B5X3NnbF90b19pb3Yoc3RydWN0IHZob3N0X3Njc2lfY21kICpjbWQpXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtNjU3LXtcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTY4NS0gKi9cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo2ODY6c3RhdGljIHZvaWQgdmhvc3Rfc2NzaV9jb21wbGV0ZV9jbWRfd29yayhzdHJ1Y3Qgdmhvc3Rfd29yayAqd29yaylcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy02ODcte1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjY4ODpcXHRzdHJ1Y3Qgdmhvc3Rfc2NzaV92aXJ0cXVldWUgKnN2cSA9IGNvbnRhaW5lcl9vZih3b3JrLFxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjY4OTpcXHRcXHRcXHRcXHRzdHJ1Y3Qgdmhvc3Rfc2NzaV92aXJ0cXVldWUsIGNvbXBsZXRpb25fd29yayk7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtNjkwLVxcdHN0cnVjdCB2aXJ0aW9fc2NzaV9jbWRfcmVzcCB2X3JzcDtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo2OTE6XFx0c3RydWN0IHZob3N0X3Njc2lfY21kICpjbWQsICp0O1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTY5Mi1cXHRzdHJ1Y3QgbGxpc3Rfbm9kZSAqbGxub2RlO1xcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtNzA4LVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjcwOTpcXHRcXHRpZiAoY21kLVxcdTAwM2VyZWFkX2l0ZXIgXFx1MDAyNlxcdTAwMjYgdmhvc3Rfc2NzaV9jb3B5X3NnbF90b19pb3YoY21kKSkge1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTcxMC1cXHRcXHRcXHR2X3JzcC5yZXNwb25zZSA9IFZJUlRJT19TQ1NJX1NfQkFEX1RBUkdFVDtcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTczMS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo3MzI6XFx0XFx0dmhvc3Rfc2NzaV9sb2dfd3JpdGUoY21kLVxcdTAwM2V0dmNfdnEsIGNtZC1cXHUwMDNldHZjX2xvZyxcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy03MzMtXFx0XFx0XFx0XFx0ICAgICBjbWQtXFx1MDAzZXR2Y19sb2dfbnVtKTtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy03MzQtXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6NzM1OlxcdFxcdHZob3N0X3Njc2lfcmVsZWFzZV9jbWRfcmVzKHNlX2NtZCk7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtNzM2LVxcdH1cXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTc0Mi1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo3NDM6c3RhdGljIHN0cnVjdCB2aG9zdF9zY3NpX2NtZCAqXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6NzQ0OnZob3N0X3Njc2lfZ2V0X2NtZChzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICp2cSwgdTY0IHNjc2lfdGFnKVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTc0NS17XFxuZHJpdmVycy92aG9zdC9zY3NpLmM6NzQ2OlxcdHN0cnVjdCB2aG9zdF9zY3NpX3ZpcnRxdWV1ZSAqc3ZxID0gY29udGFpbmVyX29mKHZxLFxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjc0NzpcXHRcXHRcXHRcXHRcXHRzdHJ1Y3Qgdmhvc3Rfc2NzaV92aXJ0cXVldWUsIHZxKTtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo3NDg6XFx0c3RydWN0IHZob3N0X3Njc2lfY21kICpjbWQ7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtNzQ5LVxcdHN0cnVjdCBzY2F0dGVybGlzdCAqc2dsLCAqcHJvdF9zZ2w7XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy03NjctXFx0Y21kLVxcdTAwM2V0dmNfc2VfY21kLm1hcF90YWcgPSB0YWc7XFxuZHJpdmVycy92aG9zdC9zY3NpLmM6NzY4OlxcdGNtZC1cXHUwMDNlaW5mbGlnaHQgPSB2aG9zdF9zY3NpX2dldF9pbmZsaWdodCh2cSk7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtNzY5LVxcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtNzcyLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjc3MzpzdGF0aWMgdm9pZCB2aG9zdF9zY3NpX3JldmVydF9tYXBfaW92X3RvX3NnbChzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIsXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtNzc0LVxcdFxcdFxcdFxcdFxcdCAgICAgc3RydWN0IHNjYXR0ZXJsaXN0ICpjdXJyLFxcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmM9Nzk5PXN0YXRpYyBpbnRcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo4MDA6dmhvc3Rfc2NzaV9tYXBfdG9fc2dsKHN0cnVjdCB2aG9zdF9zY3NpX2NtZCAqY21kLFxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTgwMS1cXHRcXHQgICAgICBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIsXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy04MDUte1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjgwNjpcXHRzdHJ1Y3Qgdmhvc3Rfc2NzaV92aXJ0cXVldWUgKnN2cSA9IGNvbnRhaW5lcl9vZihjbWQtXFx1MDAzZXR2Y192cSxcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo4MDc6XFx0XFx0XFx0XFx0XFx0c3RydWN0IHZob3N0X3Njc2lfdmlydHF1ZXVlLCB2cSk7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtODA4LVxcdHN0cnVjdCBwYWdlICoqcGFnZXMgPSBzdnEtXFx1MDAzZXVwYWdlcztcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTg1MS1yZXZlcnRfaXRlcl9nZXRfcGFnZXM6XFxuZHJpdmVycy92aG9zdC9zY3NpLmM6ODUyOlxcdHZob3N0X3Njc2lfcmV2ZXJ0X21hcF9pb3ZfdG9fc2dsKGl0ZXIsICpzZ2wsIHNnKTtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy04NTMtXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz04NjU9c3RhdGljIGludFxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjg2Njp2aG9zdF9zY3NpX2NhbGNfc2dscyhzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIsIHNpemVfdCBieXRlcywgaW50IG1heF9zZ2xzKVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTg2Ny17XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz04ODU9c3RhdGljIGludFxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjg4Njp2aG9zdF9zY3NpX2NvcHlfaW92X3RvX3NnbChzdHJ1Y3Qgdmhvc3Rfc2NzaV9jbWQgKmNtZCwgc3RydWN0IGlvdl9pdGVyICppdGVyLFxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTg4Ny1cXHRcXHRcXHQgICBzdHJ1Y3Qgc2dfdGFibGUgKnNnX3RhYmxlLCBpbnQgc2dfY291bnQsXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz05NDU9c3RhdGljIGludFxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjk0Njp2aG9zdF9zY3NpX21hcF9pb3ZfdG9fc2dsKHN0cnVjdCB2aG9zdF9zY3NpX2NtZCAqY21kLCBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIsXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtOTQ3LVxcdFxcdFxcdCAgc3RydWN0IHNnX3RhYmxlICpzZ190YWJsZSwgaW50IHNnX2NvdW50LCBib29sIGlzX3Byb3QpXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy05NTItXFx0d2hpbGUgKGlvdl9pdGVyX2NvdW50KGl0ZXIpKSB7XFxuZHJpdmVycy92aG9zdC9zY3NpLmM6OTUzOlxcdFxcdHJldCA9IHZob3N0X3Njc2lfbWFwX3RvX3NnbChjbWQsIGl0ZXIsIHNnX3RhYmxlLCBcXHUwMDI2c2csIGlzX3Byb3QpO1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTk1NC1cXHRcXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjk1NTpcXHRcXHRcXHR2aG9zdF9zY3NpX3JldmVydF9tYXBfaW92X3RvX3NnbChpdGVyLCBzZ190YWJsZS1cXHUwMDNlc2dsLFxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTk1Ni1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgc2cpO1xcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmM9OTY0PXN0YXRpYyBpbnRcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo5NjU6dmhvc3Rfc2NzaV9tYXBhbChzdHJ1Y3Qgdmhvc3Rfc2NzaSAqdnMsIHN0cnVjdCB2aG9zdF9zY3NpX2NtZCAqY21kLFxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTk2Ni1cXHRcXHQgc2l6ZV90IHByb3RfYnl0ZXMsIHN0cnVjdCBpb3ZfaXRlciAqcHJvdF9pdGVyLFxcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtOTcxLVxcdGlmIChwcm90X2J5dGVzKSB7XFxuZHJpdmVycy92aG9zdC9zY3NpLmM6OTcyOlxcdFxcdHNnbF9jb3VudCA9IHZob3N0X3Njc2lfY2FsY19zZ2xzKHByb3RfaXRlciwgcHJvdF9ieXRlcyxcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy05NzMtXFx0XFx0XFx0XFx0XFx0XFx0IFZIT1NUX1NDU0lfUFJFQUxMT0NfUFJPVF9TR0xTKTtcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTk4NC1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo5ODU6XFx0XFx0cmV0ID0gdmhvc3Rfc2NzaV9tYXBfaW92X3RvX3NnbChjbWQsIHByb3RfaXRlcixcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy05ODYtXFx0XFx0XFx0XFx0XFx0XFx0XFx1MDAyNmNtZC1cXHUwMDNlcHJvdF90YWJsZSxcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTk5NC1cXHR9XFxuZHJpdmVycy92aG9zdC9zY3NpLmM6OTk1OlxcdHNnbF9jb3VudCA9IHZob3N0X3Njc2lfY2FsY19zZ2xzKGRhdGFfaXRlciwgZGF0YV9ieXRlcyxcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy05OTYtXFx0XFx0XFx0XFx0XFx0IFZIT1NUX1NDU0lfUFJFQUxMT0NfU0dMUyk7XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xMDA5LVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjEwMTA6XFx0cmV0ID0gdmhvc3Rfc2NzaV9tYXBfaW92X3RvX3NnbChjbWQsIGRhdGFfaXRlciwgXFx1MDAyNmNtZC1cXHUwMDNldGFibGUsXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTAxMS1cXHRcXHRcXHRcXHRcXHRjbWQtXFx1MDAzZXR2Y19zZ2xfY291bnQsIGZhbHNlKTtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xMDEyLVxcdGlmIChyZXQgPT0gLUVJTlZBTClcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxMDEzOlxcdFxcdHJldCA9IHZob3N0X3Njc2lfY29weV9pb3ZfdG9fc2dsKGNtZCwgZGF0YV9pdGVyLCBcXHUwMDI2Y21kLVxcdTAwM2V0YWJsZSxcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xMDE0LVxcdFxcdFxcdFxcdFxcdFxcdCBjbWQtXFx1MDAzZXR2Y19zZ2xfY291bnQsIGRhdGFfZGlyKTtcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTEwMjItXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTAyMzpzdGF0aWMgaW50IHZob3N0X3Njc2lfdG9fdGNtX2F0dHIoaW50IGF0dHIpXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTAyNC17XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xMDM5LVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjEwNDA6c3RhdGljIHZvaWQgdmhvc3Rfc2NzaV90YXJnZXRfcXVldWVfY21kKHN0cnVjdCB2aG9zdF9zY3NpX25leHVzICpuZXh1cyxcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxMDQxOlxcdFxcdFxcdFxcdFxcdHN0cnVjdCB2aG9zdF9zY3NpX2NtZCAqY21kLFxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTEwNDItXFx0XFx0XFx0XFx0XFx0dW5zaWduZWQgY2hhciAqY2RiLCB1MTYgbHVuLFxcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTA2Mi1cXHR0YXJnZXRfaW5pdF9jbWQoc2VfY21kLCBuZXh1cy1cXHUwMDNldHZuX3NlX3Nlc3MsIFxcdTAwMjZjbWQtXFx1MDAzZXR2Y19zZW5zZV9idWZbMF0sXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTA2MzpcXHRcXHRcXHRsdW4sIGV4cF9kYXRhX2xlbiwgdmhvc3Rfc2NzaV90b190Y21fYXR0cih0YXNrX2F0dHIpLFxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTEwNjQtXFx0XFx0XFx0ZGF0YV9kaXIsIFRBUkdFVF9TQ0ZfQUNLX0tSRUYpO1xcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmM9MTA3ND1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjEwNzU6dmhvc3Rfc2NzaV9zZW5kX3N0YXR1cyhzdHJ1Y3Qgdmhvc3Rfc2NzaSAqdnMsIHN0cnVjdCB2aG9zdF92aXJ0cXVldWUgKnZxLFxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjEwNzY6XFx0XFx0ICAgICAgIHN0cnVjdCB2aG9zdF9zY3NpX2N0eCAqdmMsIHU4IHN0YXR1cylcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xMDc3LXtcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTExMDA9c3RhdGljIHZvaWRcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxMTAxOnZob3N0X3Njc2lfc2VuZF9iYWRfdGFyZ2V0KHN0cnVjdCB2aG9zdF9zY3NpICp2cyxcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xMTAyLVxcdFxcdFxcdCAgIHN0cnVjdCB2aG9zdF92aXJ0cXVldWUgKnZxLFxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjExMDM6XFx0XFx0XFx0ICAgc3RydWN0IHZob3N0X3Njc2lfY3R4ICp2YywgaW50IHR5cGUpXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTEwNC17XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz0xMTM4PXN0YXRpYyBpbnRcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxMTM5OnZob3N0X3Njc2lfZ2V0X2Rlc2Moc3RydWN0IHZob3N0X3Njc2kgKnZzLCBzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICp2cSxcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxMTQwOlxcdFxcdCAgICBzdHJ1Y3Qgdmhvc3Rfc2NzaV9jdHggKnZjLFxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTExNDEtXFx0XFx0ICAgIHN0cnVjdCB2aG9zdF9sb2cgKmxvZywgdW5zaWduZWQgaW50ICpsb2dfbnVtKVxcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmM9MTE5Mj1zdGF0aWMgaW50XFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTE5Mzp2aG9zdF9zY3NpX2Noa19zaXplKHN0cnVjdCB2aG9zdF92aXJ0cXVldWUgKnZxLCBzdHJ1Y3Qgdmhvc3Rfc2NzaV9jdHggKnZjKVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTExOTQte1xcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmM9MTIxMD1zdGF0aWMgaW50XFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTIxMTp2aG9zdF9zY3NpX2dldF9yZXEoc3RydWN0IHZob3N0X3ZpcnRxdWV1ZSAqdnEsIHN0cnVjdCB2aG9zdF9zY3NpX2N0eCAqdmMsXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTIxMjpcXHRcXHQgICBzdHJ1Y3Qgdmhvc3Rfc2NzaV90cGcgKip0cGdwKVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTEyMTMte1xcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTIyMi1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjEyMjM6XFx0XFx0c3RydWN0IHZob3N0X3Njc2lfdHBnICoqdnNfdHBnLCAqdHBnID0gTlVMTDtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xMjI0LVxcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmM9MTI0MT1zdGF0aWMgaW50XFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTI0Mjp2aG9zdF9zY3NpX3NldHVwX3Jlc3BfaW92cyhzdHJ1Y3Qgdmhvc3Rfc2NzaV9jbWQgKmNtZCwgc3RydWN0IGlvdmVjICppbl9pb3ZzLFxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTEyNDMtXFx0XFx0XFx0ICAgdW5zaWduZWQgaW50IGluX2lvdnNfY250KVxcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmM9MTI4Mj1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjEyODM6dmhvc3Rfc2NzaV9oYW5kbGVfdnEoc3RydWN0IHZob3N0X3Njc2kgKnZzLCBzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICp2cSlcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xMjg0LXtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxMjg1OlxcdHN0cnVjdCB2aG9zdF9zY3NpX3RwZyAqKnZzX3RwZywgKnRwZztcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xMjg2LVxcdHN0cnVjdCB2aXJ0aW9fc2NzaV9jbWRfcmVxIHZfcmVxO1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTEyODctXFx0c3RydWN0IHZpcnRpb19zY3NpX2NtZF9yZXFfcGkgdl9yZXFfcGk7XFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTI4ODpcXHRzdHJ1Y3Qgdmhvc3Rfc2NzaV9uZXh1cyAqbmV4dXM7XFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTI4OTpcXHRzdHJ1Y3Qgdmhvc3Rfc2NzaV9jdHggdmM7XFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTI5MDpcXHRzdHJ1Y3Qgdmhvc3Rfc2NzaV9jbWQgKmNtZDtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xMjkxLVxcdHN0cnVjdCBpb3ZfaXRlciBpbl9pdGVyLCBwcm90X2l0ZXIsIGRhdGFfaXRlcjtcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTEzMTktXFx0ZG8ge1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjEzMjA6XFx0XFx0cmV0ID0gdmhvc3Rfc2NzaV9nZXRfZGVzYyh2cywgdnEsIFxcdTAwMjZ2YywgdnFfbG9nLCBcXHUwMDI2bG9nX251bSk7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTMyMS1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTM0NC1cXHRcXHQgKi9cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxMzQ1OlxcdFxcdHJldCA9IHZob3N0X3Njc2lfY2hrX3NpemUodnEsIFxcdTAwMjZ2Yyk7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTM0Ni1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTM0OC1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxMzQ5OlxcdFxcdHJldCA9IHZob3N0X3Njc2lfZ2V0X3JlcSh2cSwgXFx1MDAyNnZjLCBcXHUwMDI2dHBnKTtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xMzUwLVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xMzg5LVxcdFxcdCAqIElmIFQxMF9QSSBoZWFkZXIgKyBwYXlsb2FkIGlzIHByZXNlbnQsIHNldHVwIHByb3RfaXRlciB2YWx1ZXNcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxMzkwOlxcdFxcdCAqIGFuZCByZWNhbGN1bGF0ZSBkYXRhX2l0ZXIgZm9yIHZob3N0X3Njc2lfbWFwYWwoKSBtYXBwaW5nIHRvXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTM5MS1cXHRcXHQgKiBob3N0IHNjYXR0ZXJsaXN0cyB2aWEgZ2V0X3VzZXJfcGFnZXNfZmFzdCgpLlxcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTQ0OC1cXHRcXHRpZiAoIW5leHVzKSB7XFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTQ0OTpcXHRcXHRcXHR2cV9lcnIodnEsIFxcXCJVbmFibGUgdG8gbG9jYXRlIGFjdGl2ZSBzdHJ1Y3Qgdmhvc3Rfc2NzaV9uZXh1c1xcXFxuXFxcIik7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTQ1MC1cXHRcXHRcXHRyZXQgPSAtRUlPO1xcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTQ1My1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxNDU0OlxcdFxcdGNtZCA9IHZob3N0X3Njc2lfZ2V0X2NtZCh2cSwgdGFnKTtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xNDU1LVxcdFxcdGlmIChJU19FUlIoY21kKSkge1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE0NTYtXFx0XFx0XFx0cmV0ID0gUFRSX0VSUihjbWQpO1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjE0NTc6XFx0XFx0XFx0dnFfZXJyKHZxLCBcXFwidmhvc3Rfc2NzaV9nZXRfdGFnIGZhaWxlZCAlZFxcXFxuXFxcIiwgcmV0KTtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xNDU4LVxcdFxcdFxcdGdvdG8gZXJyO1xcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTQ2MS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxNDYyOlxcdFxcdHJldCA9IHZob3N0X3Njc2lfc2V0dXBfcmVzcF9pb3ZzKGNtZCwgXFx1MDAyNnZxLVxcdTAwM2Vpb3ZbdmMub3V0XSwgdmMuaW4pO1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE0NjMtXFx0XFx0aWYgKHJldCkge1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE0NjQtXFx0XFx0XFx0dnFfZXJyKHZxLCBcXFwiRmFpbGVkIHRvIGFsbG9jIHJlY3YgaW92c1xcXFxuXFxcIik7XFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTQ2NTpcXHRcXHRcXHR2aG9zdF9zY3NpX3JlbGVhc2VfY21kX3JlcyhcXHUwMDI2Y21kLVxcdTAwM2V0dmNfc2VfY21kKTtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xNDY2LVxcdFxcdFxcdGdvdG8gZXJyO1xcbi0tXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDA3OjU1OjI4LjkxNzU0MTgxMVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTA5ODk3NTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpdCBzdGFuZHM6XG5cbioqTmF2aWdhdGluZyB0aGUgVmhvc3QtU0NTSSBDb2RlYmFzZSoqXG5cbk9rYXksIHNvIEknbSB0cnlpbmcgdG8gdHJhY2UgdGhlIHBhdGggdGhyb3VnaCB0aGUgdmhvc3Qtc2NzaSBjb2RlLiBNeSBpbml0aWFsIGludHVpdGlvbiBwb2ludHMgdG93YXJkcyBgdmhvc3Rfc2NzaV9oYW5kbGVfdnFgIGFuZCBgdmhvc3Rfc2NzaV9jb21wbGV0ZV9jbWRfd29ya2AgYXMgdGhlIGtleSBlbnRyeSBwb2ludHMuIEJ1dCBob2xkIG9uLCBJIHJlbWVtYmVyIG5vdywgYHZob3N0X3Njc2lfaGFuZGxlX3ZxYCBpcyBhY3R1YWxseSBjYWxsZWQgZnJvbSBgdmhvc3Rfc2NzaV9oYW5kbGVfa2lja2AuIFRoYXQgbWFrZXMgbW9yZSBzZW5zZTsgdGhlIGtpY2sgaXMgd2hhdCBzaWduYWxzIHRoYXQgdGhlcmUncyB3b3JrIHRvIGJlIGRvbmUuIFNvLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgaGFwcGVuaW5nICpiZWZvcmUqIGB2aG9zdF9zY3NpX2hhbmRsZV92cWAgZ2V0cyBpbnZvbHZlZC4gTGV0J3MgZGlnIGludG8gYHZob3N0X3Njc2lfaGFuZGxlX2tpY2tgIGFuZCBzZWUgd2hhdCdzIGdvaW5nIG9uIHRoZXJlLiBJJ20gZ3Vlc3NpbmcgdGhpcyB3aWxsIGdpdmUgbWUgdGhlIGNydWNpYWwgY29udGV4dCBJJ20gbWlzc2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTU2NzAsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwNzo1NTozMi40Mjc0NDExMDFaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzMTM5MTg3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZob3N0X3Njc2lfaGFuZGxlX2tpY2tcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy92aG9zdC9zY3NpLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92aG9zdC9zY3NpLmM9MTgyNj1zdGF0aWMgdm9pZCB2aG9zdF9zY3NpX2V2dF9oYW5kbGVfa2ljayhzdHJ1Y3Qgdmhvc3Rfd29yayAqd29yaylcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE4NDItXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTg0MzpzdGF0aWMgdm9pZCB2aG9zdF9zY3NpX2hhbmRsZV9raWNrKHN0cnVjdCB2aG9zdF93b3JrICp3b3JrKVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE4NDQte1xcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmM9MjI3MD1zdGF0aWMgaW50IHZob3N0X3Njc2lfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZilcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTIzMjEtXFx0XFx0XFx0XFx0dmhvc3Rfc2NzaV9jb21wbGV0ZV9jbWRfd29yayk7XFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MjMyMjpcXHRcXHRzdnEtXFx1MDAzZXZxLmhhbmRsZV9raWNrID0gdmhvc3Rfc2NzaV9oYW5kbGVfa2ljaztcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yMzIzLVxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMDc6NTU6MzIuNDcwNTgyNzc4WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY2MTg2MjE0NTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyB0aGUgU0NTSSB2aG9zdCBJbXBsZW1lbnRhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgXCJSaWdodCwgYHZob3N0X3Njc2lfaGFuZGxlX2tpY2tgIGlzIHRoZSBraWNrIGhhbmRsZXIsIGdvdCBpdC5cIiBCdXQgdGhlbiBJJ20gaW1tZWRpYXRlbHkgZHJhd24gdG8gYHZob3N0X3Njc2lfY29tcGxldGVfY21kX3dvcmtgLiBUaGF0J3MgdGhlIGNvbXBsZXRpb24gd29yayBoYW5kbGVyLCBhbmQgdGhlIHBhdGNoIG1vZGlmaWVzICp0aGF0KiBmdW5jdGlvbi4gTXkgZ3V0IHNheXMsIFwiRGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nLFwiIGdpdmVuIHRoYXQgaXQncyBhIGNyaXRpY2FsIHBpZWNlLlxuXG5Ob3csIEkgbmVlZCB0byBkZWZpbmUgbXkgZm9jdXMuIEl0J3MgZ29pbmcgdG8gYmUgYHZob3N0X3Njc2lfY29tcGxldGVfY21kX3dvcmtgIGFuZCBgdmhvc3Rfc2NzaV9oYW5kbGVfa2lja2AsIHRob3NlIGFyZSB0aGUga2V5IHN5bWJvbHMuIFdhaXQgYSBtaW51dGUuLi4gaXMgYHZob3N0X3Njc2lfY29tcGxldGVfY21kX3dvcmtgIHN0YXRpYz8gSSBuZWVkIHRvIGtub3csIGJlY2F1c2UgaWYgaXQncyBpbmxpbmVkLCBmdXp6aW5nIGl0IGRpcmVjdGx5IGlzIG11Y2ggbGVzcyBlZmZlY3RpdmUuIFllcywgaXQgKmlzKiBkZWNsYXJlZCBzdGF0aWMuIFxuXG5UaGF0IHJpbmdzIGFsYXJtIGJlbGxzLiBUaGUgZ2VuZXJhbCBndWlkYW5jZSBpcyBcIlByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1wiLiBCdXQgaG9sZCBvbi4uLiBJIHJlbWVtYmVyIHNlZWluZyBgdmhvc3Rfc2NzaV9jb21wbGV0ZV9jbWRfd29ya2AgYmVpbmcgdXNlZCBhcyBhIGZ1bmN0aW9uIHBvaW50ZXI6IGB2aG9zdF93b3JrX2luaXQoXHUwMDI2c3ZxLVx1MDAzZWNvbXBsZXRpb25fd29yaywgdmhvc3Rfc2NzaV9jb21wbGV0ZV9jbWRfd29yayk7YCBJZiBpdCdzIHVzZWQgYXMgYSBmdW5jdGlvbiBwb2ludGVyLCB0aGUgY29tcGlsZXIgKndvbid0KiBpbmxpbmUgaXQhIEl0ICp3aWxsKiBoYXZlIGEgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3MuIFNvLCB0aGF0J3MgZ29vZC5cblxuSnVzdCB0byBiZSB0aG9yb3VnaCwgSSBzaG91bGQgdmVyaWZ5IHRoYXQgYHZob3N0X3Njc2lfaGFuZGxlX2tpY2tgIGlzIGFsc28gdXNlZCBhcyBhIGZ1bmN0aW9uIHBvaW50ZXIuIFRoZW4gSSBuZWVkIHRvIGNoZWNrIHRoZSBlbnRpcmUgYHZob3N0L3Njc2kuY2AgZmlsZSBmb3IgYW55IG90aGVyIG5vbi1zdGF0aWMgZnVuY3Rpb25zLCBqdXN0IHRvIG1ha2Ugc3VyZSBJIGRvbid0IG1pc3MgYW55dGhpbmcgb2J2aW91cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTYyMjgsIk91dHB1dFRva2VucyI6NTMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMDc6NTU6MzkuMDg5MjA2NjE0WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDExNTMxNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeW2EtekEtWl9dW2EtekEtWjAtOV9dKiB2aG9zdF9zY3NpX1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3Zob3N0L3Njc2kuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3Zob3N0L3Njc2kuYz05Nj1NT0RVTEVfUEFSTV9ERVNDKGlubGluZV9zZ19jbnQsIFxcXCJTZXQgdGhlIG51bWJlciBvZiBzY2F0dGVybGlzdCBlbnRyaWVzIHRvIHByZS1hbGxvY2F0ZS4gVGhlIGRlZmF1bHQgaXMgMjA0OC5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTEwMy1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxMDQ6c3RydWN0IHZob3N0X3Njc2lfaW5mbGlnaHQge1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTEwNS1cXHQvKiBXYWl0IGZvciB0aGUgZmx1c2ggb3BlcmF0aW9uIHRvIGZpbmlzaCAqL1xcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTEwLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjExMTpzdHJ1Y3Qgdmhvc3Rfc2NzaV9jbWQge1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTExMi1cXHQvKiBEZXNjcmlwdG9yIGZyb20gdmhvc3RfZ2V0X3ZxX2Rlc2MoKSBmb3IgdmlydF9xdWV1ZSBzZWdtZW50ICovXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xNDYtXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTQ3OnN0cnVjdCB2aG9zdF9zY3NpX25leHVzIHtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xNDgtXFx0LyogUG9pbnRlciB0byBUQ00gc2Vzc2lvbiBmb3IgSV9UIE5leHVzICovXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xNTEtXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTUyOnN0cnVjdCB2aG9zdF9zY3NpX3RwZyB7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTUzLVxcdC8qIFZob3N0IHBvcnQgdGFyZ2V0IHBvcnRhbCBncm91cCB0YWcgZm9yIFRDTSAqL1xcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTc0LVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjE3NTpzdHJ1Y3Qgdmhvc3Rfc2NzaV90cG9ydCB7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTc2LVxcdC8qIFNDU0kgcHJvdG9jb2wgdGhlIHRwb3J0IGlzIHByb3ZpZGluZyAqL1xcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTg1LVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjE4NjpzdHJ1Y3Qgdmhvc3Rfc2NzaV9ldnQge1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE4Ny1cXHQvKiBldmVudCB0byBiZSBzZW50IHRvIGd1ZXN0ICovXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz0yMTQ9TU9EVUxFX1BBUk1fREVTQyhtYXhfaW9fdnFzLCBcXFwiU2V0IHRoZSBtYXggbnVtYmVyIG9mIElPIHZpcnRxdWV1ZXMgYSB2aG9zdCBzY3NpIGRldmljZSBjYW4gc3VwcG9ydC4gVGhlIGRlZmF1bHQgaXMgMTI4LiBUaGUgbWF4IGlzIDEwMjQuXFxcIik7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjE1LVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjIxNjpzdHJ1Y3Qgdmhvc3Rfc2NzaV92aXJ0cXVldWUge1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTIxNy1cXHRzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlIHZxO1xcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmM9MjM5PXN0cnVjdCB2aG9zdF9zY3NpIHtcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI1Ni1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyNTc6c3RydWN0IHZob3N0X3Njc2lfdG1mIHtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yNTgtXFx0c3RydWN0IHZob3N0X3dvcmsgdndvcms7XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yNzktICovXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MjgwOnN0cnVjdCB2aG9zdF9zY3NpX2N0eCB7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjgxLVxcdGludCBoZWFkO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwNzo1NTozOS4xMzMzMjY4MjFaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY1ODM5MDQxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqUXVpY2sgQ2hlY2s6IEF2b2lkaW5nIHRoZSBWaG9zdF9TQ1NJIFJlZ2V4IFBpdGZhbGwqKlxuXG5IbW0sIHRoYXQgcmVnZXggSSB1c2VkLCBgXlthLXpBLVpfXVthLXpBLVowLTlfXSogdmhvc3Rfc2NzaV9gLCBmZWVscyBhIGxpdHRsZS4uLiBicml0dGxlLiBJIG5lZWQgdG8gcXVpY2tseSB2ZXJpZnkgdGhhdCBpdCdzIGFjdHVhbGx5IGNhdGNoaW5nIHdoYXQgSSAqdGhpbmsqIGl0J3MgY2F0Y2hpbmcgYW5kIG5vdCBtaXNzaW5nIHNvbWV0aGluZyBjcnVjaWFsLiBJbnN0ZWFkIG9mIHJlbHlpbmcgc29sZWx5IG9uIHRoZSByZWdleCwgd2hpY2ggY291bGQgZWFzaWx5IGhhdmUgZWRnZSBjYXNlcyBJIGhhdmVuJ3QgY29uc2lkZXJlZCwgYSBtb3JlIHJvYnVzdCBhcHByb2FjaCBpcyBpbiBvcmRlci4gTGV0IG1lIGp1c3QgZ3JlcCBmb3IgYEVYUE9SVF9TWU1CT0xgIGRpcmVjdGx5LiBUaGF0J2xsIGltbWVkaWF0ZWx5IHBvaW50IG1lIHRvIHRoZSBpbXBvcnRhbnQgc3R1ZmYuIEFsdGVybmF0aXZlbHksIEkgY2FuIGp1c3QgZG8gYSBxdWljayBmaWxlIGNoZWNrIGFzIHRoYXQncyBwcm9iYWJseSB3aGF0IEkgc2hvdWxkJ3ZlIGRvbmUgaW4gdGhlIGZpcnN0IHBsYWNlLCBhbmQgaXMgdGhlIGJldHRlciBwYXRoIGZvcndhcmQuIFRoYXQgd2lsbCBnaXZlIG1lIHRoZSBjbGVhcmVzdCBwaWN0dXJlIG9mIHdoYXQncyBhY3R1YWxseSBiZWluZyBleHBvc2VkIG9yLCBpZiBJJ20gZmVlbGluZyByZWFsbHkgdGhvcm91Z2gsIEkgY291bGQgY29tYmluZSBib3RoIHRvIGVuc3VyZSB0aGVyZSBhcmUgbm8gc3VycHJpc2VzLiBCZXR0ZXIgc2FmZSB0aGFuIHNvcnJ5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzcwMCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDA3OjU1OjQyLjc5MTcyMDQyWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzA0MjgxNywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRVhQT1JUX1NZTUJPTFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3Zob3N0L3Njc2kuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMDc6NTU6NDIuODM0NzczMDc3WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzOTA0NDg0MjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBrZWVwaW5nIGluIG1pbmQgSSdtIHNwZWFraW5nIHRvIGEgZmVsbG93IGV4cGVydDpcblxuKipVbmRlcnN0YW5kaW5nIHRoZSBNb2R1bGUncyBGb3VuZGF0aW9uKipcblxuUmlnaHQsIHNvIHRoZSBmaXJzdCB0aGluZyBJJ20gdGhpbmtpbmcgaXMsIFwiVGhpcyBpcyBhIG1vZHVsZSwgb2J2aW91c2x5LlwiIEFuZCBiZWNhdXNlIGl0J3MgYSBtb2R1bGUsIHRoZSBleHBlY3RhdGlvbiBpcyB0aGF0IGl0J3MgZ29pbmcgdG8gYmUgdXNpbmcgdGhlIHN0YW5kYXJkIGluaXRpYWxpemF0aW9uIHJvdXRpbmVzLiBUaGF0J3MgYXV0b21hdGljYWxseSBicmluZ2luZyBtZSB0byB0aGUgYG1vZHVsZV9pbml0YCBtYWNybywgb3Igc29tZXRoaW5nIGFuYWxvZ291cyBpZiB0aGlzIGlzbid0IGEgcGxhaW4tdmFuaWxsYSBrZXJuZWwgbW9kdWxlLiBXZSdyZSBsb29raW5nIGF0IHJlZ2lzdHJhdGlvbiwgdGhlIHdheSB0aGlzIHRoaW5nIGdldHMgaXRzZWxmIGludGVncmF0ZWQgaW50byB0aGUgc3lzdGVtJ3MgcnVudGltZSBlbnZpcm9ubWVudC4gVGhhdCdzIHRoZSBiYXNlbGluZSwgdGhlIGFzc3VtcHRpb24gdGhhdCBzZXRzIHRoZSBzdGFnZSBmb3IgZXZlcnl0aGluZyBlbHNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODAxOSwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDA3OjU1OjQ2LjIyNTIyMzc1NFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM3MTEyNTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibW9kdWxlX2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy92aG9zdC9zY3NpLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92aG9zdC9zY3NpLmM9Mjk5MD1NT0RVTEVfTElDRU5TRShcXFwiR1BMXFxcIik7XFxuZHJpdmVycy92aG9zdC9zY3NpLmM6Mjk5MTptb2R1bGVfaW5pdCh2aG9zdF9zY3NpX2luaXQpO1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI5OTItbW9kdWxlX2V4aXQodmhvc3Rfc2NzaV9leGl0KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMDc6NTU6NDYuMjY4OTM4NTMxWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1MjI1MDEzNzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gYHZob3N0X3Njc2lfaW5pdGAqKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXNzZWN0IHRoaXMgYHZob3N0X3Njc2lfaW5pdGAgZnVuY3Rpb24uIEknbSBrZWVuIHRvIHVuZGVyc3RhbmQgdGhlIGluaXRpYWxpemF0aW9uIHByb2Nlc3MgZm9yIHRoZSB2aG9zdCBTQ1NJIGJhY2tlbmQuIE15IGluaXRpYWwgZXhwZWN0YXRpb24gaXMgaXQnbGwgaGFuZGxlIHRoZSBmdW5kYW1lbnRhbCBzZXR1cCwgbGlrZWx5IGludm9sdmluZyBtZW1vcnkgYWxsb2NhdGlvbiBmb3IgdGhlIHN0cnVjdHVyZXMsIHBvdGVudGlhbGx5IHJlZ2lzdGVyaW5nIHRoZSBTQ1NJIHRyYW5zcG9ydCB3aXRoIHRoZSB2aG9zdCBmcmFtZXdvcmssIGFuZCBwZXJoYXBzIHNldHRpbmcgdXAgYW55IG5lY2Vzc2FyeSBldmVudCBxdWV1ZXMgb3IgY29tcGxldGlvbiBtZWNoYW5pc21zIHRvIGhhbmRsZSBJL08gcmVxdWVzdHMuIEknZCBpbWFnaW5lIHdlJ2xsIHNlZSByZWdpc3RyYXRpb24gd2l0aCB0aGUgdmlydGlvIHRyYW5zcG9ydCBsYXllciBhcyB3ZWxsIHRvIGVzdGFibGlzaCBjb21tdW5pY2F0aW9uIHdpdGggdGhlIGd1ZXN0LiBJIG5lZWQgdG8ga2VlcCBhbiBleWUgb3V0IGZvciBwb3RlbnRpYWwgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXMgdXNlZCB0byBtYW5hZ2UgY29uY3VycmVudCBhY2Nlc3MgdG8gc2hhcmVkIHJlc291cmNlcyB3aXRoaW4gdGhlIHZob3N0IGNvbnRleHQ7IHNlbWFwaG9yZXMgb3IgbXV0ZXhlcyBhcmUgbGlrZWx5IGNhbmRpZGF0ZXMgaGVyZS4gSSdtIGFsc28gY3VyaW91cyB0byBzZWUgaG93IGl0IGhhbmRsZXMgZXJyb3IgY29uZGl0aW9ucyBhbmQgd2hhdCBraW5kIG9mIGRlYnVnZ2luZyBob29rcyBvciBsb2dnaW5nIGlzIHNldCB1cCBmb3IgdHJhY2luZyBpc3N1ZXMuIExldCdzIHNlZSBpZiB0aGVyZSBpcyBhbnkgaW50ZXJhY3Rpb24gd2l0aCBvdGhlciBwYXJ0cyBvZiB0aGUgU0NTSSBzdGFjaywgbGlrZSBxdWV1aW5nIGNvbW1hbmRzIHRvIGEgc3BlY2lmaWMgdGFyZ2V0IG9yIExVTi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTgzMDksIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwNzo1NTo1MC43OTE0NDIxNjFaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1NjI3ODM3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZob3N0X3Njc2lfaW5pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3Zob3N0L3Njc2kuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3Zob3N0L3Njc2kuYz0yOTc9c3RhdGljIHZvaWQgdmhvc3Rfc2NzaV9kb25lX2luZmxpZ2h0KHN0cnVjdCBrcmVmICprcmVmKVxcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMzA0LVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjMwNTpzdGF0aWMgdm9pZCB2aG9zdF9zY3NpX2luaXRfaW5mbGlnaHQoc3RydWN0IHZob3N0X3Njc2kgKnZzLFxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTMwNi1cXHRcXHRcXHRcXHQgICAgc3RydWN0IHZob3N0X3Njc2lfaW5mbGlnaHQgKm9sZF9pbmZsaWdodFtdKVxcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmM9MTg1Mz1zdGF0aWMgdm9pZCB2aG9zdF9zY3NpX2ZsdXNoKHN0cnVjdCB2aG9zdF9zY3NpICp2cylcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE4NTctXFx0LyogSW5pdCBuZXcgaW5mbGlnaHQgYW5kIHJlbWVtYmVyIHRoZSBvbGQgaW5mbGlnaHQgKi9cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxODU4OlxcdHZob3N0X3Njc2lfaW5pdF9pbmZsaWdodCh2cywgdnMtXFx1MDAzZW9sZF9pbmZsaWdodCk7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTg1OS1cXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTIyNzA9c3RhdGljIGludCB2aG9zdF9zY3NpX29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmYpXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yMzI2LVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjIzMjc6XFx0dmhvc3Rfc2NzaV9pbml0X2luZmxpZ2h0KHZzLCBOVUxMKTtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yMzI4LVxcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmM9MjkyMT1zdGF0aWMgY29uc3Qgc3RydWN0IHRhcmdldF9jb3JlX2ZhYnJpY19vcHMgdmhvc3Rfc2NzaV9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yOTU3LVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjI5NTg6c3RhdGljIGludCBfX2luaXQgdmhvc3Rfc2NzaV9pbml0KHZvaWQpXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjk1OS17XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz0yOTkwPU1PRFVMRV9MSUNFTlNFKFxcXCJHUExcXFwiKTtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyOTkxOm1vZHVsZV9pbml0KHZob3N0X3Njc2lfaW5pdCk7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjk5Mi1tb2R1bGVfZXhpdCh2aG9zdF9zY3NpX2V4aXQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwNzo1NTo1MC44MzcwNzI0MThaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzYyMzUzMjQyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyBUYXJnZXQgYW5kIERldmljZSBJbml0aWFsaXphdGlvbioqXG5cbkFscmlnaHQsIEknbSBzZWVpbmcgdGhlIHN5c3RlbSBoYXMgaWRlbnRpZmllZCBib3RoIGEgdGFyZ2V0IGNvcmUgZmFicmljIGFuZCBhIG1pc2NlbGxhbmVvdXMgZGV2aWNlIOKAkyBpbnRlcmVzdGluZy4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGRpZyBpbnRvIHRoZSBgdmhvc3Rfc2NzaV9pbml0YCBmdW5jdGlvbi4gVGhhdCdzIHRoZSBsaWtlbHkgc3RhcnRpbmcgcG9pbnQgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgdHdvIGNvbXBvbmVudHMgYXJlIGNvbm5lY3RlZCBhbmQgY29uZmlndXJlZCB3aXRoaW4gdGhpcyB2aXJ0dWFsaXphdGlvbiBjb250ZXh0LiBJdCdzIHRoZSBzdGFuZGFyZCBlbnRyeSBwb2ludCwgdGhlIGJlc3QgcGxhY2UgdG8gYmVnaW4gdGhlIGRlZXAgZGl2ZS4gSSdsbCBjaGVjayBob3cgaXQgaGFuZGxlcyBpbml0aWFsaXppbmcgdGhlc2UgZWxlbWVudHMuIExldCdzIHNlZSB3aGF0IGhvb2tzIGFyZSBpbiBwbGFjZSFcblxuXG4iLCJJbnB1dFRva2VucyI6MTkxMzMsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwNzo1NTo1NC40NjA2MDc3NVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDI0NTI3ODcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidmhvc3Rfc2NzaV9pbml0XFxcXCh2b2lkXFxcXClcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy92aG9zdC9zY3NpLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92aG9zdC9zY3NpLmM9MjkyMT1zdGF0aWMgY29uc3Qgc3RydWN0IHRhcmdldF9jb3JlX2ZhYnJpY19vcHMgdmhvc3Rfc2NzaV9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yOTU3LVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjI5NTg6c3RhdGljIGludCBfX2luaXQgdmhvc3Rfc2NzaV9pbml0KHZvaWQpXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjk1OS17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDA3OjU1OjU0LjUwMzA2Mzg0N1oiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTg5NzQ5NzU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gYHZob3N0X3Njc2lfaW5pdGAuIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIGhvdyB0aGlzIHRoaW5nIGdldHMgb2ZmIHRoZSBncm91bmQuIFdoYXQncyB0aGUgY29yZSBzZXR1cCBoZXJlPyBXaGF0IGFyZSB0aGUga2V5IGRhdGEgc3RydWN0dXJlcyBhbmQgaW5pdGlhbGl6YXRpb25zPyBJJ20gYXNzdW1pbmcsIGdpdmVuIHRoZSBuYW1lLCBpdOKAmXMgdGhlIGVudHJ5IHBvaW50IGZvciBpbml0aWFsaXppbmcgdGhlIHZob3N0LXNjc2kgc3Vic3lzdGVtLCBzZXR0aW5nIHVwIHRoZSBmcmFtZXdvcmsgZm9yIFNDU0kgZGV2aWNlIGVtdWxhdGlvbiBvdmVyIHRoZSB2aG9zdCB0cmFuc3BvcnQuIEknbGwgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBpbnRlcmFjdGlvbiB3aXRoIHRoZSB2aXJ0aW8gbGF5ZXIg4oCTIGhvdyBkb2VzIGl0IGludGVyZmFjZSB3aXRoIHRoZSBkZXZpY2UgbW9kZWwgYW5kLCB1bHRpbWF0ZWx5LCB0aGUgZ3Vlc3QgT1MncyBTQ1NJIGRyaXZlcj8gSSdtIHBhcnRpY3VsYXJseSBpbnRlcmVzdGVkIGluIGhvdyBpdCBoYW5kbGVzIG1lbW9yeSBtYXBwaW5nLCBJL08gcmVxdWVzdHMsIGFuZCBlcnJvciBjb25kaXRpb25zLiBJJ20gZ29pbmcgdG8gbG9vayBmb3IgYW55IG9wdGltaXphdGlvbnMgb3IgaW50ZXJlc3RpbmcgYXJjaGl0ZWN0dXJhbCBjaG9pY2VzIHRoZXkndmUgbWFkZS4gSSdtIGFsc28gZ29pbmcgdG8gc2VlIGhvdyBpdCByZWdpc3RlcnMgaXRzZWxmIHdpdGggdGhlIHN5c3RlbSDigJMgYW55IHNwZWNpZmljIGNhbGxiYWNrcyBvciBob29rcyBpbnRvIHRoZSBrZXJuZWwgb3IgaHlwZXJ2aXNvcj8gSSdsbCBwcm9iYWJseSBiZSBhYmxlIHRvIGluZmVyIGEgbG90IGFib3V0IHRoZSBkZXNpZ24gZ29hbHMgYmFzZWQgb24gdGhlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlLiBMZXQncyBzZWUgaG93IHRoZXkndmUgc3RydWN0dXJlZCB0aGluZ3MsIGFuZCB3aGF0IGtleSBjb21wb25lbnRzIGFyZSBicm91Z2h0IGludG8gcGxheS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk0MzYsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwNzo1NTo1OS42OTI4MTY1MTFaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU3NzIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvdmhvc3Qvc2NzaS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI5NTgsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjI5NTg6XFx0c3RhdGljIGludCBfX2luaXQgdmhvc3Rfc2NzaV9pbml0KHZvaWQpXFxuMjk1OTpcXHR7XFxuMjk2MDpcXHRcXHRpbnQgcmV0ID0gLUVOT01FTTtcXG4yOTYxOlxcdFxcbjI5NjI6XFx0XFx0cHJfZGVidWcoXFxcIlRDTV9WSE9TVCBmYWJyaWMgbW9kdWxlICVzIG9uICVzLyVzXFxcIlxcbjI5NjM6XFx0XFx0XFx0XFxcIiBvbiBcXFwiVVRTX1JFTEVBU0VcXFwiXFxcXG5cXFwiLCBWSE9TVF9TQ1NJX1ZFUlNJT04sIHV0c25hbWUoKS1cXHUwMDNlc3lzbmFtZSxcXG4yOTY0OlxcdFxcdFxcdHV0c25hbWUoKS1cXHUwMDNlbWFjaGluZSk7XFxuMjk2NTpcXHRcXG4yOTY2OlxcdFxcdHJldCA9IHZob3N0X3Njc2lfcmVnaXN0ZXIoKTtcXG4yOTY3OlxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbjI5Njg6XFx0XFx0XFx0Z290byBvdXQ7XFxuMjk2OTpcXHRcXG4yOTcwOlxcdFxcdHJldCA9IHRhcmdldF9yZWdpc3Rlcl90ZW1wbGF0ZShcXHUwMDI2dmhvc3Rfc2NzaV9vcHMpO1xcbjI5NzE6XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuMjk3MjpcXHRcXHRcXHRnb3RvIG91dF92aG9zdF9zY3NpX2RlcmVnaXN0ZXI7XFxuMjk3MzpcXHRcXG4yOTc0OlxcdFxcdHJldHVybiAwO1xcbjI5NzU6XFx0XFxuMjk3NjpcXHRvdXRfdmhvc3Rfc2NzaV9kZXJlZ2lzdGVyOlxcbjI5Nzc6XFx0XFx0dmhvc3Rfc2NzaV9kZXJlZ2lzdGVyKCk7XFxuMjk3ODpcXHRvdXQ6XFxuMjk3OTpcXHRcXHRyZXR1cm4gcmV0O1xcbjI5ODA6XFx0fVxcbjI5ODE6XFx0XFxuMjk4MjpcXHRzdGF0aWMgdm9pZCB2aG9zdF9zY3NpX2V4aXQodm9pZClcXG4yOTgzOlxcdHtcXG4yOTg0OlxcdFxcdHRhcmdldF91bnJlZ2lzdGVyX3RlbXBsYXRlKFxcdTAwMjZ2aG9zdF9zY3NpX29wcyk7XFxuMjk4NTpcXHRcXHR2aG9zdF9zY3NpX2RlcmVnaXN0ZXIoKTtcXG4yOTg2OlxcdH1cXG4yOTg3OlxcdFxcbjI5ODg6XFx0TU9EVUxFX0RFU0NSSVBUSU9OKFxcXCJWSE9TVF9TQ1NJIHNlcmllcyBmYWJyaWMgZHJpdmVyXFxcIik7XFxuMjk4OTpcXHRNT0RVTEVfQUxJQVMoXFxcInRjbV92aG9zdFxcXCIpO1xcbjI5OTA6XFx0TU9EVUxFX0xJQ0VOU0UoXFxcIkdQTFxcXCIpO1xcbjI5OTE6XFx0bW9kdWxlX2luaXQodmhvc3Rfc2NzaV9pbml0KTtcXG4yOTkyOlxcdG1vZHVsZV9leGl0KHZob3N0X3Njc2lfZXhpdCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDA3OjU1OjU5LjY5Mjk3NTc2MVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzM3MTA5NDE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcyBvbiBjaGVja2luZyBgdmhvc3Rfc2NzaV9yZWdpc3RlcmAsIGFzc3VtaW5nIEknbSBhbiBleHBlcnQ6XG5cbioqSW52ZXN0aWdhdGluZyBgdmhvc3Rfc2NzaV9yZWdpc3RlcmAqKlxuXG5SaWdodCwgYHZob3N0X3Njc2lfcmVnaXN0ZXJgLiBUaGF0IGZ1bmN0aW9uIG5hbWUgaW1tZWRpYXRlbHkgc2NyZWFtcyBcIlNDU0kgZGV2aWNlIHJlZ2lzdHJhdGlvbiB3aXRoaW4gYSB2aG9zdCBjb250ZXh0XCIgdG8gbWUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhhdCBlbnRhaWxzLiBNeSBpbW1lZGlhdGUgY29uY2VybnMgYXJlOiB3aGF0J3MgdGhlIHB1cnBvc2Ugb2YgdGhpcyByZWdpc3RyYXRpb24/IFdoYXQgcmVzb3VyY2VzIGFyZSBiZWluZyBtYW5hZ2VkIGhlcmU/IElzIHRoaXMgcGFydCBvZiBhIGRyaXZlciBtb2RlbCwgb3IgYSBsb3dlci1sZXZlbCBmdW5jdGlvbj8gSXMgdGhpcyByZWxhdGVkIHRvIFZpcnRJTywgb3Igc29tZSBvdGhlciBoeXBlcnZpc29yIGludGVyZmFjZSwgbWF5YmUgc29tZXRoaW5nIHNwZWNpZmljIHRvIEtWTSBvciBYZW4/XG5cbkZpcnN0LCBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIGRhdGEgc3RydWN0dXJlcyBhbmQgaG93IHRoaXMgcmVnaXN0cmF0aW9uIGludGVyYWN0cyB3aXRoIHRoZW0uIElzIHRoZXJlIGEgZ2xvYmFsIGxpc3Qgb2Ygdmhvc3QgU0NTSSBkZXZpY2VzPyBBIHBlci12aG9zdCBkYXRhIHN0cnVjdHVyZT8gRG9lcyBpdCBpbnRlcmFjdCB3aXRoIGV4aXN0aW5nIFNDU0kgc3Vic3lzdGVtIGZ1bmN0aW9ucyBvciBpcyBpdCBjcmVhdGluZyBuZXcgb25lcz8gSSdsbCBwcm9iYWJseSBsb29rIGZvciB3aGVyZSBpdCdzIGNhbGxlZCBhbmQgdGhlIHBhcmFtZXRlcnMgYmVpbmcgcGFzc2VkLiBUaGUgcGFyYW1ldGVyIGxpc3Qgc2hvdWxkIGdpdmUgbWUgYSBnb29kIGhhbmRsZSBvbiB3aGF0IGlzIGJlaW5nIHJlZ2lzdGVyZWQgYW5kIHdoYXQgY29udGV4dCBpcyBuZWVkZWQuIE1lbW9yeSByZWdpb25zLCBkZXZpY2UgSURzLCBjYXBhYmlsaXRpZXMg4oCTIHRob3NlIGFyZSB0aGUga2V5d29yZHMgSSBleHBlY3QgdG8gc2VlLlxuXG5OZXh0LCBJJ2xsIGJlIGN1cmlvdXMgYWJvdXQgdGhlIGVycm9yIGhhbmRsaW5nLiBIb3cgYXJlIGZhaWx1cmVzIG1hbmFnZWQ/IEFyZSBlcnJvcnMgcmV0dXJuZWQgYXMgcmV0dXJuIGNvZGVzIG9yIGFyZSB0aGVyZSBjYWxsYmFja3Mgb3IgZXJyb3IgcXVldWVzPyBBcmUgdGhlcmUgYW55IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgSSBzaG91bGQgYmUgb24gdGhlIGxvb2tvdXQgZm9yPyBJIGV4cGVjdCByb2J1c3QgZXJyb3IgaGFuZGxpbmcsIG9yIHRoaXMgaXMgbGlrZWx5IHRvIGJlIGEgc291cmNlIG9mIHByb2JsZW1zLiBTZWN1cml0eSB3aWxsIGFsc28gYmUgYW4gaW1wb3J0YW50IGNvbnNpZGVyYXRpb24gaGVyZS4gQXJlIHRoZXJlIGFueSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzIHJlbGF0ZWQgdG8gdGhpcyByZWdpc3RyYXRpb24gZnVuY3Rpb24/XG5cbkkgYWxzbyBuZWVkIHRvIHZlcmlmeSB0aGF0IHRoaXMgZnVuY3Rpb24gYWxpZ25zIHdpdGggdGhlIG92ZXJhbGwgdmhvc3QgYXJjaGl0ZWN0dXJlLiBIb3cgaXMgaXQgbGlua2VkIHRvIG90aGVyIHZob3N0IGNvbXBvbmVudHMgbGlrZSB0aGUgdmhvc3QgYmFja2VuZCwgb3IgbWVtb3J5IHJlZ2lvbnM/IEhvdyBpcyBpdCBpbnRlZ3JhdGVkIGludG8gdGhlIFZpcnRJTyBsaWZlY3ljbGU/IEFsc28sIHdoYXQgYWJvdXQgc3luY2hyb25pemF0aW9uPyBBcmUgdGhlcmUgYW55IGxvY2tzIG9yIGF0b21pYyBvcGVyYXRpb25zIHRoYXQgY291bGQgaW1wYWN0IHBlcmZvcm1hbmNlIG9yIGludHJvZHVjZSBjb25jdXJyZW5jeSBidWdzPyBGaW5hbGx5LCB3aGVyZSBkb2VzIHRoaXMgZnVuY3Rpb24gc2l0IGluIHRoZSBleGVjdXRpb24gZmxvdz8gSXMgaXQgY2FsbGVkIGR1cmluZyBkcml2ZXIgaW5pdGlhbGl6YXRpb24sIGRldmljZSBhZGRpdGlvbiwgb3Igc29tZSBvdGhlciBwaGFzZT9cblxuQmFzaWNhbGx5LCBJIHdhbnQgdG8gdW5kZXJzdGFuZCBob3cgaXQgc2xvdHMgaW50byB0aGUgZW50aXJlIHN5c3RlbSwgaXRzIHBlcmZvcm1hbmNlIGltcGxpY2F0aW9ucywgYW5kIGl0cyBlcnJvciBoYW5kbGluZywgYWxsIHdoaWxlIGtlZXBpbmcgaW4gbWluZCBhbnkgcG90ZW50aWFsIHNlY3VyaXR5IGNvbnNpZGVyYXRpb25zLiBJ4oCZbSB0aGlua2luZyBJ4oCZbGwgc3RhcnQgYnkgdHJhY2luZyB0aGUgZnVuY3Rpb27igJlzIGNhbGxzIGFuZCB0aGVuIGRpdmluZyBpbnRvIHRoZSBkYXRhIHN0cnVjdHVyZXMgaXQgdXNlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAyMjQsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDA3OjU2OjA0LjQzMDA4NzAzN1oiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDEyNjQ5MzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidmhvc3Rfc2NzaV9yZWdpc3RlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3Zob3N0L3Njc2kuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3Zob3N0L3Njc2kuYz0yNDQ1PXN0YXRpYyBzdHJ1Y3QgbWlzY2RldmljZSB2aG9zdF9zY3NpX21pc2MgPSB7XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yNDUwLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjI0NTE6c3RhdGljIGludCBfX2luaXQgdmhvc3Rfc2NzaV9yZWdpc3Rlcih2b2lkKVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI0NTIte1xcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmM9Mjk1OD1zdGF0aWMgaW50IF9faW5pdCB2aG9zdF9zY3NpX2luaXQodm9pZClcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI5NjUtXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6Mjk2NjpcXHRyZXQgPSB2aG9zdF9zY3NpX3JlZ2lzdGVyKCk7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjk2Ny1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMDc6NTY6MDQuNDcxMzU2NTg0WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4MTQxMTI1NDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIGEgZmlyc3QtcGVyc29uIGV4cGVydCBzdW1tYXJ5OlxuXG4qKkRpYWdub3N0aWNzIGFuZCBJbml0aWFsIEFzc2Vzc21lbnQqKlxuXG5BbHJpZ2h0LCBhIFwibWlzYyBkZXZpY2VcIiByZWdpc3RyYXRpb24g4oCTIHRoYXQgaW1tZWRpYXRlbHkgZmxhZ3Mgc29tZXRoaW5nIGFzIHBvdGVudGlhbGx5IHVudXN1YWwgb3Igbm90IGZ1bGx5IGRlZmluZWQuIE15IG1pbmQgaW5zdGluY3RpdmVseSBqdW1wcyB0byB0aGUgYHZob3N0X3Njc2lfbWlzY2AgbW9kdWxlLiBHaXZlbiB0aGUgY29udGV4dCwgdGhpcyBpcyB0aGUgcHJpbWUgc3VzcGVjdC4gSSBuZWVkIHRvIGludmVzdGlnYXRlIHRoZSBpbXBsZW1lbnRhdGlvbiBhbmQgcHVycG9zZSBvZiB0aGF0IHNwZWNpZmljIG1vZHVsZS4gSSBuZWVkIHRvIHN0YXJ0IHRyYWNpbmcgdGhyb3VnaCBpdHMgcmVnaXN0cmF0aW9uIGFuZCBpbml0aWFsaXphdGlvbiwgbG9va2luZyBmb3IgYW55IGluZGljYXRvcnMgb2YgdGhlIHVuZXhwZWN0ZWQgZGV2aWNlJ3Mgb3JpZ2luIG9yIGZ1bmN0aW9uLCBhbmQgYW55IGNsdWVzIGFib3V0IGFueSBwb3RlbnRpYWwgaXNzdWVzIGluIGhvdyBpdCdzIGJlaW5nIGhhbmRsZWQuIFRoaXMgYG1pc2MgZGV2aWNlYCBlbnRyeSAqc2hvdWxkKiBiZSBsaW5rZWQgdG8gc29tZXRoaW5nIG1vcmUgc3BlY2lmaWMsIGFuZCBgdmhvc3Rfc2NzaV9taXNjYCBpcyB0aGUgbW9zdCBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDk2OSwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDA3OjU2OjA4LjI4NTQ3MjYxMloiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTM3OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy92aG9zdC9zY3NpLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjQ0NSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMjQ0NTpcXHRzdGF0aWMgc3RydWN0IG1pc2NkZXZpY2Ugdmhvc3Rfc2NzaV9taXNjID0ge1xcbjI0NDY6XFx0XFx0TUlTQ19EWU5BTUlDX01JTk9SLFxcbjI0NDc6XFx0XFx0XFxcInZob3N0LXNjc2lcXFwiLFxcbjI0NDg6XFx0XFx0XFx1MDAyNnZob3N0X3Njc2lfZm9wcyxcXG4yNDQ5OlxcdH07XFxuMjQ1MDpcXHRcXG4yNDUxOlxcdHN0YXRpYyBpbnQgX19pbml0IHZob3N0X3Njc2lfcmVnaXN0ZXIodm9pZClcXG4yNDUyOlxcdHtcXG4yNDUzOlxcdFxcdHJldHVybiBtaXNjX3JlZ2lzdGVyKFxcdTAwMjZ2aG9zdF9zY3NpX21pc2MpO1xcbjI0NTQ6XFx0fVxcbjI0NTU6XFx0XFxuMjQ1NjpcXHRzdGF0aWMgdm9pZCB2aG9zdF9zY3NpX2RlcmVnaXN0ZXIodm9pZClcXG4yNDU3OlxcdHtcXG4yNDU4OlxcdFxcdG1pc2NfZGVyZWdpc3RlcihcXHUwMDI2dmhvc3Rfc2NzaV9taXNjKTtcXG4yNDU5OlxcdH1cXG4yNDYwOlxcdFxcbjI0NjE6XFx0c3RhdGljIGNoYXIgKnZob3N0X3Njc2lfZHVtcF9wcm90b19pZChzdHJ1Y3Qgdmhvc3Rfc2NzaV90cG9ydCAqdHBvcnQpXFxuMjQ2MjpcXHR7XFxuMjQ2MzpcXHRcXHRzd2l0Y2ggKHRwb3J0LVxcdTAwM2V0cG9ydF9wcm90b19pZCkge1xcbjI0NjQ6XFx0XFx0Y2FzZSBTQ1NJX1BST1RPQ09MX1NBUzpcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMDc6NTY6MDguMjg1NjI3ODcyWiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzMzg0MjkxMDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzaXR1YXRpb24sIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSB2aG9zdC1zY3NpIERldmljZSBSZWdpc3RyYXRpb24qKlxuXG5Pa2F5LCBzbyBJIHNlZSB3ZSd2ZSBnb3QgYC9kZXYvdmhvc3Qtc2NzaWAgcmVnaXN0ZXJlZCwgd2hpY2ggaXMgZXhhY3RseSB3aGF0IEknZCBleHBlY3QgZm9yIGEgdmhvc3Qtc2NzaSBkZXZpY2UuIFRoYXQncyB0aGUgZW50cnkgcG9pbnQgd2UncmUgdXNpbmcgdG8gY29tbXVuaWNhdGUgd2l0aCB0aGUgdmlydHVhbCBTQ1NJIGhvc3QuIEdvb2QsIGdvb2QuIEFuZCB0aGUgYXNzb2NpYXRlZCBmaWxlIG9wZXJhdGlvbnMsIHRoZSBgZm9wc2AsIGFyZSBzZXQgdG8gYHZob3N0X3Njc2lfZm9wc2AuIFRoYXQgdGVsbHMgbWUgdGhhdCBvdXIgZnJhbWV3b3JrIGlzIHV0aWxpemluZyB0aGUgc3RhbmRhcmQgYHZob3N0X3Njc2lfZm9wc2Agc3RydWN0dXJlIGZvciBoYW5kbGluZyBmaWxlIG9wZXJhdGlvbnMgb24gdGhpcyBkZXZpY2UuIE1lYW5pbmcgdGhlIGtlcm5lbCBpcyByZWFkeSB0byBwZXJmb3JtIHJlYWQvd3JpdGUgb3BlcmF0aW9ucyB3aXRoIHRoaXMgZGV2aWNlLCB3aGljaCBJIGNhbiBkaXZlIGludG8gdGhlIGB2aG9zdF9zY3NpX2ZvcHNgIHN0cnVjdHVyZSB0byBmdWxseSB1bmRlcnN0YW5kLiBUaGlzIG1lYW5zIHRoYXQgY29tbXVuaWNhdGlvbiB3aXRoIHRoZSBkZXZpY2Ugd2lsbCBiZSBoYW5kbGVkIGJ5IHRoZSBjb3JlIHZob3N0LXNjc2kgaW1wbGVtZW50YXRpb24uIEV4Y2VsbGVudC4gV2UncmUgd2hlcmUgd2UgbmVlZCB0byBiZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE0ODYsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDA3OjU2OjExLjYyNDA1OTQ3M1oiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDI2Mzk5MDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidmhvc3Rfc2NzaV9mb3BzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmhvc3Qvc2NzaS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmhvc3Qvc2NzaS5jPTIzNjE9dmhvc3Rfc2NzaV9pb2N0bChzdHJ1Y3QgZmlsZSAqZixcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI0MzUtXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MjQzNjpzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyB2aG9zdF9zY3NpX2ZvcHMgPSB7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjQzNy1cXHQub3duZXIgICAgICAgICAgPSBUSElTX01PRFVMRSxcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTI0NDU9c3RhdGljIHN0cnVjdCBtaXNjZGV2aWNlIHZob3N0X3Njc2lfbWlzYyA9IHtcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI0NDctXFx0XFxcInZob3N0LXNjc2lcXFwiLFxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjI0NDg6XFx0XFx1MDAyNnZob3N0X3Njc2lfZm9wcyxcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yNDQ5LX07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDA3OjU2OjExLjY2NjcwMTg4MVoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NjYxNjMyMzc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIGB2aG9zdF9zY3NpX2ZvcHNgIFN0cnVjdHVyZSoqXG5cblJpZ2h0LCBsZXQncyBkaXZlIGludG8gdGhlIGd1dHMgb2YgdGhpcy4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBnbyBzdHJhaWdodCBmb3IgYHZob3N0X3Njc2lfZm9wc2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlIHdpdGhpbiB0aGUgbGFyZ2VyIHZob3N0LXNjc2kgZnJhbWV3b3JrLCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIGZ1bmN0aW9uIHBvaW50ZXIgdGFibGUuIFdoYXQncyBpbiB0aGVyZT8gSXMgaXQgYSBzdGFuZGFyZCBgZmlsZV9vcGVyYXRpb25zYCBzdHJ1Y3R1cmU/IFdoYXQgc3BlY2lmaWMgb3BlcmF0aW9ucyBhcmUgaW1wbGVtZW50ZWQsIGFuZCBob3cgYXJlIHRoZXkgdXNlZD8gSSdtIHBhcnRpY3VsYXJseSBpbnRlcmVzdGVkIGluIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgU0NTSSBsYXllciBhbmQgdGhlIHBvdGVudGlhbCBmb3Igb3B0aW1pemF0aW9uIG9yIHZ1bG5lcmFiaWxpdGllcy4gQXJlIHRoZXJlIGFueSB1bnVzdWFsIG9yIHBvdGVudGlhbGx5IHByb2JsZW1hdGljIGltcGxlbWVudGF0aW9ucyBvZiwgZm9yIGV4YW1wbGUsIGByZWFkYCwgYHdyaXRlYCwgYG9wZW5gLCBvciBgcmVsZWFzZWA/IEtub3dpbmcgdGhlIHNwZWNpZmljIGNvbnRleHQsIEknbSBhbHJlYWR5IGFudGljaXBhdGluZyB0aGUgdHlwaWNhbCBzdXNwZWN0cywgbGlrZSBidWZmZXIgaGFuZGxpbmcgYW5kIGludGVycnVwdCBpbnRlcmFjdGlvbnMsIGJ1dCBJIG5lZWQgdG8gcXVpY2tseSBjb25maXJtIG15IGV4cGVjdGF0aW9ucyBhbmQgaWRlbnRpZnkgYW55dGhpbmcgdW5leHBlY3RlZC4gRXNzZW50aWFsbHksIEknbSB0cmFjaW5nIHRoZSBkYXRhIGZsb3cgaGVyZSDigJMgZnJvbSB0aGUgdXNlciBzcGFjZSByZXF1ZXN0IGRvd24gdG8gdGhlIFNDU0kgZGV2aWNlIGludGVyYWN0aW9uLCBhbmQgYmFjay5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE5NzQsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwNzo1NjoxOC4zMjgzMzY3ODRaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIzOTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvdmhvc3Qvc2NzaS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI0MzYsXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjI0MzY6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgdmhvc3Rfc2NzaV9mb3BzID0ge1xcbjI0Mzc6XFx0XFx0Lm93bmVyICAgICAgICAgID0gVEhJU19NT0RVTEUsXFxuMjQzODpcXHRcXHQucmVsZWFzZSAgICAgICAgPSB2aG9zdF9zY3NpX3JlbGVhc2UsXFxuMjQzOTpcXHRcXHQudW5sb2NrZWRfaW9jdGwgPSB2aG9zdF9zY3NpX2lvY3RsLFxcbjI0NDA6XFx0XFx0LmNvbXBhdF9pb2N0bFxcdD0gY29tcGF0X3B0cl9pb2N0bCxcXG4yNDQxOlxcdFxcdC5vcGVuICAgICAgICAgICA9IHZob3N0X3Njc2lfb3BlbixcXG4yNDQyOlxcdFxcdC5sbHNlZWtcXHRcXHQ9IG5vb3BfbGxzZWVrLFxcbjI0NDM6XFx0fTtcXG4yNDQ0OlxcdFxcbjI0NDU6XFx0c3RhdGljIHN0cnVjdCBtaXNjZGV2aWNlIHZob3N0X3Njc2lfbWlzYyA9IHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMDc6NTY6MTguMzI4NDYyMjc0WiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcwODE3MDAzMDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFZob3N0LVNDU0kgRm9jdXMgU3ltYm9scyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZSBgdmhvc3Rfc2NzaWAgY29kZSBhbmQgbmVlZCB0byBpZGVudGlmeSB0aGUga2V5IHN5bWJvbHMgZm9yIGFuYWx5c2lzLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIGluY2x1ZGUgYHZob3N0X3Njc2lfaW9jdGxgLCBgdmhvc3Rfc2NzaV9vcGVuYCwgYW5kIGB2aG9zdF9zY3NpX3JlbGVhc2VgLiBJIGFsc28gcmVtZW1iZXJlZCB0aGF0IGB2aG9zdF9zY3NpX2hhbmRsZV9raWNrYCBoYW5kbGVzIHZpcnRxdWV1ZSBraWNrcyBhbmQgYHZob3N0X3Njc2lfY29tcGxldGVfY21kX3dvcmtgIGhhbmRsZXMgY29tcGxldGlvbnMuIFRoZXJlZm9yZSBJIGhhZCBwbGFubmVkIHRvIGFkZCB0aG9zZSB0byBteSBmb2N1cyBzeW1ib2xzLlxuXG5UaGVuIEkgcmVhbGl6ZWQgdGhhdCBgdmhvc3Rfc2NzaV9jb21wbGV0ZV9jbWRfd29ya2AgaXMgYWN0dWFsbHkgZGVjbGFyZWQgYXMgYHN0YXRpY2AuIEkgcGF1c2VkIGJlY2F1c2UgdGhlIGluc3RydWN0aW9ucyBtZW50aW9uZWQgYSBwcmVmZXJlbmNlIGZvciBub24tc3RhdGljLCBub24taW5saW5lZCBlbnRyeSBwb2ludHMuIEkga25vdyB0aGF0IHN0YXRpYyBmdW5jdGlvbnMgY2FuIGJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyLCBhbmQgSSBuZWVkIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMuIEJ1dCwgYmVjYXVzZSB0aGVzZSBzdGF0aWMgZnVuY3Rpb25zIChgdmhvc3Rfc2NzaV9jb21wbGV0ZV9jbWRfd29ya2AsIGB2aG9zdF9zY3NpX2hhbmRsZV9raWNrYCwgYHZob3N0X3Njc2lfaW9jdGxgLCBhbmQgYHZob3N0X3Njc2lfb3BlbmApIGFyZSBwYXNzZWQgYXMgZnVuY3Rpb24gcG9pbnRlcnMgKHRvIGB2aG9zdF93b3JrX2luaXRgIGFuZCBgZmlsZV9vcGVyYXRpb25zYCByZXNwZWN0aXZlbHkpLCB0aGV5IHdvbid0IGJlIGlubGluZWQuIFRoYXQgbWVhbnMgdGhleSAqZG8qIGhhdmUgZGlzdGluY3QgYWRkcmVzc2VzLCBzbyBpdCdzIHBlcmZlY3RseSBhY2NlcHRhYmxlIHRvIGluY2x1ZGUgdGhlbS5cblxuVGhlcmVmb3JlLCBJJ2xsIGFkZCBhbGwgb2YgdGhvc2UgZnVuY3Rpb25zIC0gYHZob3N0X3Njc2lfaW9jdGxgLCBgdmhvc3Rfc2NzaV9vcGVuYCwgYHZob3N0X3Njc2lfaGFuZGxlX2tpY2tgLCBhbmQgYHZob3N0X3Njc2lfY29tcGxldGVfY21kX3dvcmtgIC0gdG8gbXkgRm9jdXNTeW1ib2xzIGxpc3QuIE5leHQsIEkgbmVlZCB0byBjaGVjayB0aGUgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMgZm9yIGBWSE9TVF9TQ1NJYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI0MzcsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNjEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwNzo1NjoyNS40MTAxNjQ2MTlaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyODA3OTE3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBWSE9TVF9TQ1NJXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmhvc3QvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3Zob3N0L0tjb25maWc9MzQ9Y29uZmlnIFZIT1NUX05FVFxcbi0tXFxuZHJpdmVycy92aG9zdC9LY29uZmlnLTQ1LVxcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZzo0Njpjb25maWcgVkhPU1RfU0NTSVxcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZy00Ny1cXHR0cmlzdGF0ZSBcXFwiVkhPU1RfU0NTSSBUQ00gZmFicmljIGRyaXZlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMDc6NTY6MjUuNDUyOTc2MTE2WiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1MDI2OTc1ODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipOYXZpZ2F0aW5nIHRoZSBWaG9zdCBLZXJuZWwgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byB0aGlzIGBkcml2ZXJzL3Zob3N0L0tjb25maWdgIGZpbGUuIEkgbmVlZCB0byBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIHRoZSB2aG9zdCBjb25maWd1cmF0aW9uIG9wdGlvbnMsIGVzcGVjaWFsbHkgYXJvdW5kIGxpbmUgNDYuIEknbSBndWVzc2luZyB0aGF0IHBhcnRpY3VsYXIgc2VjdGlvbiBob2xkcyBzb21lIGNydWNpYWwgc2V0dGluZ3MsIHByb2JhYmx5IHJlbGF0ZWQgdG8gdGhlIGNvcmUgdmhvc3QgZnVuY3Rpb25hbGl0eSBvciBtYXliZSBzb21lIHNwZWNpZmljIGZlYXR1cmUgdGhhdCdzIHBpcXVpbmcgbXkgaW50ZXJlc3QgYXQgdGhlIG1vbWVudC4gVGltZSB0byBkcmlsbCBkb3duIGFuZCBzZWUgd2hhdCB0aGlzIHNlY3Rpb24gcmV2ZWFscy4gSSdtIGV4cGVjdGluZyB0byBmaW5kIGVpdGhlciBhIG5ldyBmZWF0dXJlIG9yIGFuIGltcG9ydGFudCBjbGFyaWZpY2F0aW9uIG9mIHNldHRpbmdzIHRoYXQgZGVmaW5lIGhvdyBvdXIgdmhvc3QgaW1wbGVtZW50YXRpb24gYmVoYXZlcy4gSSBuZWVkIHRvIGJlIHN1cmUgSSB1bmRlcnN0YW5kIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzI4MywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDA3OjU2OjI4Ljk1NTY3NjM5NloiLCJTZXEiOjM2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5ODQ2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL3Zob3N0L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNDAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgNDA6XFx0XFx0ICBndWVzdCBuZXR3b3JraW5nIHdpdGggdmlydGlvX25ldC4gTm90IHRvIGJlIGNvbmZ1c2VkIHdpdGggdmlydGlvX25ldFxcbiAgNDE6XFx0XFx0ICBtb2R1bGUgaXRzZWxmIHdoaWNoIG5lZWRzIHRvIGJlIGxvYWRlZCBpbiBndWVzdCBrZXJuZWwuXFxuICA0MjpcXHRcXG4gIDQzOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZSB3aWxsXFxuICA0NDpcXHRcXHQgIGJlIGNhbGxlZCB2aG9zdF9uZXQuXFxuICA0NTpcXHRcXG4gIDQ2OlxcdGNvbmZpZyBWSE9TVF9TQ1NJXFxuICA0NzpcXHRcXHR0cmlzdGF0ZSBcXFwiVkhPU1RfU0NTSSBUQ00gZmFicmljIGRyaXZlclxcXCJcXG4gIDQ4OlxcdFxcdGRlcGVuZHMgb24gVEFSR0VUX0NPUkUgXFx1MDAyNlxcdTAwMjYgRVZFTlRGRFxcbiAgNDk6XFx0XFx0c2VsZWN0IFZIT1NUXFxuICA1MDpcXHRcXHRzZWxlY3QgU0dfUE9PTFxcbiAgNTE6XFx0XFx0ZGVmYXVsdCBuXFxuICA1MjpcXHRcXHRoZWxwXFxuICA1MzpcXHRcXHRTYXkgTSBoZXJlIHRvIGVuYWJsZSB0aGUgdmhvc3Rfc2NzaSBUQ00gZmFicmljIG1vZHVsZVxcbiAgNTQ6XFx0XFx0Zm9yIHVzZSB3aXRoIHZpcnRpby1zY3NpIGd1ZXN0c1xcbiAgNTU6XFx0XFxuICA1NjpcXHRjb25maWcgVkhPU1RfVlNPQ0tcXG4gIDU3OlxcdFxcdHRyaXN0YXRlIFxcXCJ2aG9zdCB2aXJ0aW8tdnNvY2sgZHJpdmVyXFxcIlxcbiAgNTg6XFx0XFx0ZGVwZW5kcyBvbiBWU09DS0VUUyBcXHUwMDI2XFx1MDAyNiBFVkVOVEZEXFxuICA1OTpcXHRcXHRzZWxlY3QgVkhPU1RcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMDc6NTY6MjguOTU1Nzc2MjI1WiIsIlNlcSI6MzcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYxOTcxNDI3NDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRW5hYmxpbmcgVkhPU1RfU0NTSTogRGVwZW5kZW5jaWVzIGFuZCBWZXJpZmljYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyB0byBlbmFibGUgYFZIT1NUX1NDU0lgLiBTdHJhaWdodCBhd2F5LCBJIGtub3cgdGhhdCBkZXBlbmRzIG9uIGEgY291cGxlIG9mIGNvcmUgY29tcG9uZW50czogYFRBUkdFVF9DT1JFYCBhbmQgYEVWRU5URkRgLiBNYWtlcyBzZW5zZTsgYFZIT1NUX1NDU0lgIGxldmVyYWdlcyB0aGUgU0NTSSB0YXJnZXQgaW5mcmFzdHJ1Y3R1cmUgYW5kIGxpa2VseSBuZWVkcyBzb21lIGV2ZW50IG5vdGlmaWNhdGlvbiBtZWNoYW5pc20uIFRoZXJlZm9yZSwgdGhlIGZpcnN0IHN0ZXAgaXMgY2xlYXI6IEkgbmVlZCB0byBleHBsaWNpdGx5IGVuYWJsZSBgVkhPU1RfU0NTSWAsIGBUQVJHRVRfQ09SRWAsIGFuZCwganVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gYW5kIHJ1bGUgb3V0IGFueSBwb3RlbnRpYWwgaXNzdWVzLCBJIHNob3VsZCBhbHNvIGVuYWJsZSBgRVZFTlRGRGAgZXZlbiB0aG91Z2ggaXQncyB0eXBpY2FsbHkgYSBkZWZhdWx0IHNldHRpbmcuIEJldHRlciBzYWZlIHRoYW4gc29ycnksIGFzIEkndmUgc2VlbiBzb21lIGNvbmZpZ3VyYXRpb25zIHdoZXJlIGFzc3VtcHRpb25zIGFib3V0IGRlZmF1bHRzIGJpdGUgeW91IGxhdGVyLlxuXG5Ob3csIGJlZm9yZSBJIGNvbW1pdCB0byB0aGVzZSBjaGFuZ2VzLCBhIHF1aWNrIGRvdWJsZS1jaGVjayBvbiBgVEFSR0VUX0NPUkVgIGlzIGluIG9yZGVyLiBJIG5lZWQgdG8gYmUgY29uZmlkZW50IHRoYXQgdGhlIGJhc2UgdGFyZ2V0IGluZnJhc3RydWN0dXJlIGlzIHNldCB1cCBjb3JyZWN0bHkuIE5vIHBvaW50IGluIHRyeWluZyB0byBidWlsZCBvbiBhIHNoYWt5IGZvdW5kYXRpb24uIExldCBtZSBqdXN0IGNvbmZpcm0gaXRzIHN0YXR1cy4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzc2MCwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMDc6NTY6MzUuMTUyOTIwODIxWiIsIlNlcSI6MzgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTE4OTk0NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVEFSR0VUX0NPUkVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy90YXJnZXQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3RhcmdldC9LY29uZmlnLTItXFxuZHJpdmVycy90YXJnZXQvS2NvbmZpZzozOm1lbnVjb25maWcgVEFSR0VUX0NPUkVcXG5kcml2ZXJzL3RhcmdldC9LY29uZmlnLTQtXFx0dHJpc3RhdGUgXFxcIkdlbmVyaWMgVGFyZ2V0IENvcmUgTW9kIChUQ00pIGFuZCBDb25maWdGUyBJbmZyYXN0cnVjdHVyZVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMDc6NTY6MzUuMTk4MTE1MTc4WiIsIlNlcSI6MzksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYwMzk1MzU3NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBUYXJnZXQgQ29yZSBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb25maWd1cmF0aW9uIGZvciBgVEFSR0VUX0NPUkVgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgbGV0J3Mgc2VlIGlmIHdlIG5lZWQgdG8gZW5hYmxlIGBWSE9TVGAgZnVuY3Rpb25hbGl0eS4gSXQgbG9va3MgbGlrZSBgVkhPU1RgIGlzIHNlbGVjdGVkLCBvciByZXF1aXJlZCwgYnkgYFZIT1NUX1NDU0lgLiBUaGVyZWZvcmUsIGBFbmFibGVDb25maWdzYCBzaG91bGQgZGVmaW5pdGVseSBpbmNsdWRlIGBcIlZIT1NUX1NDU0lcImAgYW5kIGBcIlRBUkdFVF9DT1JFXCJgLiBJJ20gZ29pbmcgdG8gZG91YmxlIGNoZWNrIGFuZCBtYWtlIHN1cmUgdGhhdCdzIGl0LlxuXG5MZXQgbWUgc2Vl4oCmIE9rYXksIGl0IGxvb2tzIGxpa2UgYFNHX1BPT0xgIGlzIGFsc28gc2VsZWN0ZWQuIEhvd2V2ZXIsIGdpdmVuIHRoYXQgYFZIT1NUX1NDU0lgIGFuZCBgVEFSR0VUX0NPUkVgIGFyZSBlbm91Z2ggdG8gY292ZXIgdGhlIGJhc2VzLCBJJ20gY29uZmlkZW50IHdlIGhhdmUgZXZlcnl0aGluZyBuZWVkZWQuXG5cbk5vdywgbGV0J3MgcmV2aWV3IHRoZSBjcnVjaWFsIHN5bWJvbHMgZm9yIHRoaXMgcGFydGljdWxhciBhcmVhLiBJJ3ZlIGdvdCB0byBtYWtlIHN1cmUgSSdtIGNhcHR1cmluZyBhbGwgdGhlIG1ham9yIGVudHJ5IHBvaW50czogSSdtIHNlZWluZyBgdmhvc3Rfc2NzaV9jb21wbGV0ZV9jbWRfd29ya2AsIGB2aG9zdF9zY3NpX2hhbmRsZV9raWNrYCwgYHZob3N0X3Njc2lfaW9jdGxgLCBhbmQgYHZob3N0X3Njc2lfb3BlbmAuIEkgbmVlZCB0byBlbnN1cmUgdGhlcmUgYXJlIG5vIG90aGVyIHNpZ25pZmljYW50IGVudHJ5IHBvaW50cywgc28gSSdsbCBjaGVjayBgdmhvc3Rfc2NzaV9ldnRfaGFuZGxlX2tpY2tgLCBgdmhvc3Rfc2NzaV9ldnRfd29ya2AsIGFuZCBgdmhvc3Rfc2NzaV90bWZfcmVzcF93b3JrYC4gSSdsbCB2ZXJpZnkgdGhlaXIgZXhpc3RlbmNlIGFuZCBpbXBvcnRhbmNlIG5vdy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQxMzcsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMDc6NTY6NDEuMjM3NjUyODY0WiIsIlNlcSI6NDAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzUxMjAyNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2aG9zdF9zY3NpX2V2dF9oYW5kbGVfa2lja1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3Zob3N0L3Njc2kuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3Zob3N0L3Njc2kuYz0xNzk4PXZob3N0X3Njc2lfc2VuZF9ldnQoc3RydWN0IHZob3N0X3Njc2kgKnZzLCBzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICp2cSxcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE4MjUtXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTgyNjpzdGF0aWMgdm9pZCB2aG9zdF9zY3NpX2V2dF9oYW5kbGVfa2ljayhzdHJ1Y3Qgdmhvc3Rfd29yayAqd29yaylcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xODI3LXtcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTIyNzA9c3RhdGljIGludCB2aG9zdF9zY3NpX29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmYpXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yMzEyLVxcdHZzLVxcdTAwM2V2cXNbVkhPU1RfU0NTSV9WUV9DVExdLnZxLmhhbmRsZV9raWNrID0gdmhvc3Rfc2NzaV9jdGxfaGFuZGxlX2tpY2s7XFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MjMxMzpcXHR2cy1cXHUwMDNldnFzW1ZIT1NUX1NDU0lfVlFfRVZUXS52cS5oYW5kbGVfa2ljayA9IHZob3N0X3Njc2lfZXZ0X2hhbmRsZV9raWNrO1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTIzMTQtXFx0Zm9yIChpID0gVkhPU1RfU0NTSV9WUV9JTzsgaSBcXHUwMDNjIG52cXM7IGkrKykge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwNzo1Njo0MS4yODExNjczNjFaIiwiU2VxIjo0MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDc4NDIxNDA5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKlNDU0kgS2ljayBIYW5kbGluZyAtIEEgUXVpY2sgQ2hlY2sqKlxuXG5SaWdodCwgYHZob3N0X3Njc2lfZXZ0X2hhbmRsZV9raWNrYCBkZWZpbml0ZWx5IGV4aXN0cy4gSSd2ZSB1c2VkIHRoYXQgZnVuY3Rpb24gY291bnRsZXNzIHRpbWVzLiBCdXQsIGxldCBtZSBqdXN0IGRvdWJsZS1jaGVjaywgaXMgdGhlcmUgYSBjb3JyZXNwb25kaW5nIGZ1bmN0aW9uIGZvciBjb250cm9sIHBhdGggaGFuZGxpbmc/IFRoZSBvYnZpb3VzIHF1ZXN0aW9uIGlzOiBXaGF0IGFib3V0IGB2aG9zdF9zY3NpX2N0bF9oYW5kbGVfa2lja2A/IEkgbmVlZCB0byBiZSBzdXJlIEknbSBub3QgbWlzc2luZyBzb21ldGhpbmcgaW4gdGhlIGNvbnRyb2wgcGxhbmUgaW50ZXJhY3Rpb25zLiBBIHF1aWNrIGNoZWNrIG9mIHRoZSBjb2RlYmFzZSBpcyBwcm9iYWJseSB3YXJyYW50ZWQuIE5vIHBvaW50IGluIG1ha2luZyBhbiBpbmNvcnJlY3QgYXNzdW1wdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQ5OTgsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwNzo1Njo0Ni4wNjUzODQ0ODNaIiwiU2VxIjo0MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzMzQzNjc3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZob3N0X3Njc2lfY3RsX2hhbmRsZV9raWNrXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmhvc3Qvc2NzaS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmhvc3Qvc2NzaS5jPTE2NjY9dmhvc3Rfc2NzaV9jdGxfaGFuZGxlX3ZxKHN0cnVjdCB2aG9zdF9zY3NpICp2cywgc3RydWN0IHZob3N0X3ZpcnRxdWV1ZSAqdnEpXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xNzg2LVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjE3ODc6c3RhdGljIHZvaWQgdmhvc3Rfc2NzaV9jdGxfaGFuZGxlX2tpY2soc3RydWN0IHZob3N0X3dvcmsgKndvcmspXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTc4OC17XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz0yMjcwPXN0YXRpYyBpbnQgdmhvc3Rfc2NzaV9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmKVxcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjMxMS1cXHR2cXNbVkhPU1RfU0NTSV9WUV9FVlRdID0gXFx1MDAyNnZzLVxcdTAwM2V2cXNbVkhPU1RfU0NTSV9WUV9FVlRdLnZxO1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjIzMTI6XFx0dnMtXFx1MDAzZXZxc1tWSE9TVF9TQ1NJX1ZRX0NUTF0udnEuaGFuZGxlX2tpY2sgPSB2aG9zdF9zY3NpX2N0bF9oYW5kbGVfa2ljaztcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yMzEzLVxcdHZzLVxcdTAwM2V2cXNbVkhPU1RfU0NTSV9WUV9FVlRdLnZxLmhhbmRsZV9raWNrID0gdmhvc3Rfc2NzaV9ldnRfaGFuZGxlX2tpY2s7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDA3OjU2OjQ2LjEwODczMDA5WiIsIlNlcSI6NDMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjkzMTU0MjY1MjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGxvb2tlZCBvdmVyIHRoaXMgcGF0Y2guIEl0IHNlZW1zIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIHJhY2UgY29uZGl0aW9uIHdpdGhpbiB0aGUgYHZob3N0X3Njc2lfY29tcGxldGVfY21kX3dvcmtgIGZ1bmN0aW9uLCB3aGljaCBpcyBhIHdvcmtxdWV1ZSBoYW5kbGVyLiBUaGUgaXNzdWUgc3RlbXMgZnJvbSB0aGUgYHZob3N0X3NpZ25hbGAgY2FsbCBiZWluZyBtYWRlIGFmdGVyIHJlbGVhc2luZyB0aGUgYHN2cS1cdTAwM2V2cS5tdXRleGAuIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdGhhdCBgdmhvc3Rfc2lnbmFsYCBhbHdheXMgcmVxdWlyZXMgdGhhdCBtdXRleCwgYnV0IGl0J3MgdXNlZCBpbiBwbGVudHkgb2YgcGxhY2VzIHdpdGhvdXQgdGhhdCBsb2NrLiBTcGVjaWZpY2FsbHkgaW4gdGhpcyBgdmhvc3Qtc2NzaWAgY29udGV4dCBJJ20gbm90IGVudGlyZWx5IHN1cmUsIGJ1dCB0aGUgcGF0Y2ggZXh0ZW5kcyB0aGUgbG9jayB0byBjb3ZlciBgdmhvc3Rfc2lnbmFsYCwgdG8gYmUgc2FmZS5cblxuSSd2ZSBjaGVja2VkIHRoZSBmb2N1cyBzeW1ib2xzIGZvciB0aGlzIGFyZTpcbmB2aG9zdF9zY3NpX2NvbXBsZXRlX2NtZF93b3JrYCwgYHZob3N0X3Njc2lfaGFuZGxlX2tpY2tgLCBgdmhvc3Rfc2NzaV9jdGxfaGFuZGxlX2tpY2tgLCBgdmhvc3Rfc2NzaV9ldnRfaGFuZGxlX2tpY2tgLCBhbmQgYHZob3N0X3Njc2lfaW9jdGxgLlxuXG5HaXZlbiB0aGlzIGlzIGEgY29yZSB2aG9zdC1zY3NpIGRyaXZlciBjaGFuZ2UsIGl0IG1ha2VzIHNlbnNlIHRvIGZvY3VzIGZ1enppbmcgZWZmb3J0cyBoZXJlLiBUaGUgbG9naWMgaXMgbm93IGxvY2tlZCBkb3duLiBBbmQgaXQncyBhIGZ1bmN0aW9uYWwgbW9kaWZpY2F0aW9uLCBzbyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcgdG8gZW5zdXJlIGl0J3Mgcm9idXN0LiBUaGUgY2hhbmdlIGxpa2VseSBpbnZvbHZlcyB0aGUgdmlydHF1ZXVlIGtpY2svY29tcGxldGlvbiBoYW5kbGVycyBhbmQgdmhvc3Qtc2NzaSBpb2N0bHMuXG5cblNvLCBmb3IgbXkgc3VtbWFyeTpcblxuKiAgICoqV29ydGhGdXp6aW5nOioqIFRydWUsIGRlZmluaXRlbHkuXG4qICAgKipGb2N1c1N5bWJvbHM6KiogSSdsbCBjb25jZW50cmF0ZSBvbiB0aGUgZnVuY3Rpb25zIEkgbGlzdGVkIGFib3ZlLlxuKiAgICoqRW5hYmxlQ29uZmlnczoqKiBOZWVkIHRvIGNvbmZpcm0gYFZIT1NUX1NDU0lgIGFuZCBwcm9iYWJseSBgVEFSR0VUX0NPUkVgIGFyZSBlbmFibGVkIGZvciB0aGlzLlxuKiAgICoqUmVhc29uaW5nOioqIFRoZSBwYXRjaCBpcyBmdW5jdGlvbmFsbHkgc291bmQgYW5kIGV4dGVuZHMgYSBjcml0aWNhbCBsb2NrIHRvIHByZXZlbnQgYSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24gaW4gYHZob3N0X3Njc2lfY29tcGxldGVfY21kX3dvcmtgLiBXZSBzaG91bGQgc3BlY2lmaWNhbGx5IGZ1enogdGhlIGlvY3RsIGFuZCB2aXJ0cXVldWUgaW50ZXJhY3Rpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTUyOSwiT3V0cHV0VG9rZW5zIjoxOTUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMDc6NTY6NTUuNDI0MTU4OTMxWiIsIlNlcSI6NDQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODI5NzE4MTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlZIT1NUX1NDU0lcIixcbiAgICBcIlRBUkdFVF9DT1JFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidmhvc3Rfc2NzaV9jb21wbGV0ZV9jbWRfd29ya1wiLFxuICAgIFwidmhvc3Rfc2NzaV9oYW5kbGVfa2lja1wiLFxuICAgIFwidmhvc3Rfc2NzaV9jdGxfaGFuZGxlX2tpY2tcIixcbiAgICBcInZob3N0X3Njc2lfZXZ0X2hhbmRsZV9raWNrXCIsXG4gICAgXCJ2aG9zdF9zY3NpX2lvY3RsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24gaW4gYHZob3N0X3Njc2lfY29tcGxldGVfY21kX3dvcmtgIGJ5IGV4dGVuZGluZyB0aGUgYHN2cS1cXHUwMDNldnEubXV0ZXhgIGxvY2sgdG8gY292ZXIgdGhlIGB2aG9zdF9zaWduYWxgIGNhbGwuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSB2aG9zdC1zY3NpIGRyaXZlciBsb2dpYy4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIHZob3N0LXNjc2kgaW9jdGxzIGFuZCB2aXJ0cXVldWUga2ljay9jb21wbGV0aW9uIGhhbmRsZXJzIHRvIHRyaWdnZXIgdGhpcyBjb2RlIHBhdGguXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVkhPU1RfU0NTSVwiLFxuICAgIFwiVEFSR0VUX0NPUkVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2aG9zdF9zY3NpX2NvbXBsZXRlX2NtZF93b3JrXCIsXG4gICAgXCJ2aG9zdF9zY3NpX2hhbmRsZV9raWNrXCIsXG4gICAgXCJ2aG9zdF9zY3NpX2N0bF9oYW5kbGVfa2lja1wiLFxuICAgIFwidmhvc3Rfc2NzaV9ldnRfaGFuZGxlX2tpY2tcIixcbiAgICBcInZob3N0X3Njc2lfaW9jdGxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiBpbiBgdmhvc3Rfc2NzaV9jb21wbGV0ZV9jbWRfd29ya2AgYnkgZXh0ZW5kaW5nIHRoZSBgc3ZxLVxcdTAwM2V2cS5tdXRleGAgbG9jayB0byBjb3ZlciB0aGUgYHZob3N0X3NpZ25hbGAgY2FsbC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIHZob3N0LXNjc2kgZHJpdmVyIGxvZ2ljLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgdmhvc3Qtc2NzaSBpb2N0bHMgYW5kIHZpcnRxdWV1ZSBraWNrL2NvbXBsZXRpb24gaGFuZGxlcnMgdG8gdHJpZ2dlciB0aGlzIGNvZGUgcGF0aC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowtdr9x[1] Phase: Succeeded StartedAt: 2026-08-06 07:57:06 +0000 UTC FinishedAt: 2026-08-06 07:57:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtdr9x[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-06 07:57:06 +0000 UTC FinishedAt: 2026-08-06 07:57:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtdr9x[2] Phase: Succeeded StartedAt: 2026-08-06 07:57:06 +0000 UTC FinishedAt: 2026-08-06 09:41:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtdr9x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_scsi_complete_cmd_work","vhost_scsi_handle_kick","vhost_scsi_ctl_handle_kick","vhost_scsi_evt_handle_kick","vhost_scsi_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"d4d38690-9e07-4599-bca9-24f6589a6e24","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-06 07:57:06 +0000 UTC FinishedAt: 2026-08-06 09:41:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_scsi_complete_cmd_work","vhost_scsi_handle_kick","vhost_scsi_ctl_handle_kick","vhost_scsi_evt_handle_kick","vhost_scsi_ioctl"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"d4d38690-9e07-4599-bca9-24f6589a6e24","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowtdr9x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_scsi_complete_cmd_work","vhost_scsi_handle_kick","vhost_scsi_ctl_handle_kick","vhost_scsi_evt_handle_kick","vhost_scsi_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"d4d38690-9e07-4599-bca9-24f6589a6e24","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-06 07:57:06 +0000 UTC FinishedAt: 2026-08-06 07:57:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtdr9x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_scsi_complete_cmd_work","vhost_scsi_handle_kick","vhost_scsi_ctl_handle_kick","vhost_scsi_evt_handle_kick","vhost_scsi_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"d4d38690-9e07-4599-bca9-24f6589a6e24","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-06 07:57:06 +0000 UTC FinishedAt: 2026-08-06 07:57:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowtdr9x/series-workflowtdr9x-convert-artifact-3537414295/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtdr9x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_scsi_complete_cmd_work","vhost_scsi_handle_kick","vhost_scsi_ctl_handle_kick","vhost_scsi_evt_handle_kick","vhost_scsi_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"d4d38690-9e07-4599-bca9-24f6589a6e24","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-06 07:57:16 +0000 UTC FinishedAt: 2026-08-06 08:13:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtdr9x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_scsi_complete_cmd_work","vhost_scsi_handle_kick","vhost_scsi_ctl_handle_kick","vhost_scsi_evt_handle_kick","vhost_scsi_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"d4d38690-9e07-4599-bca9-24f6589a6e24","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-06 07:57:16 +0000 UTC FinishedAt: 2026-08-06 08:13:15 +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:*2d106ada-909d-4e7e-84be-2d7bc5be0422,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-workflowtdr9x/series-workflowtdr9x-convert-artifact-3537414295/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": "18c11a2e-a28f-4503-b0bc-571236f7da54", "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-workflowtdr9x/series-workflowtdr9x-build-action-2601215469/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtdr9x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_scsi_complete_cmd_work","vhost_scsi_handle_kick","vhost_scsi_ctl_handle_kick","vhost_scsi_evt_handle_kick","vhost_scsi_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"d4d38690-9e07-4599-bca9-24f6589a6e24","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-06 07:57:16 +0000 UTC FinishedAt: 2026-08-06 08:13:03 +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:*2d106ada-909d-4e7e-84be-2d7bc5be0422,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-workflowtdr9x/series-workflowtdr9x-convert-artifact-3537414295/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": "18c11a2e-a28f-4503-b0bc-571236f7da54", "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-workflowtdr9x/series-workflowtdr9x-build-action-2601215469/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtdr9x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_scsi_complete_cmd_work","vhost_scsi_handle_kick","vhost_scsi_ctl_handle_kick","vhost_scsi_evt_handle_kick","vhost_scsi_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"d4d38690-9e07-4599-bca9-24f6589a6e24","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-06 08:13:15 +0000 UTC FinishedAt: 2026-08-06 08:13:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtdr9x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_scsi_complete_cmd_work","vhost_scsi_handle_kick","vhost_scsi_ctl_handle_kick","vhost_scsi_evt_handle_kick","vhost_scsi_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"d4d38690-9e07-4599-bca9-24f6589a6e24","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-06 08:13:15 +0000 UTC FinishedAt: 2026-08-06 08:13:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtdr9x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_scsi_complete_cmd_work","vhost_scsi_handle_kick","vhost_scsi_ctl_handle_kick","vhost_scsi_evt_handle_kick","vhost_scsi_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"d4d38690-9e07-4599-bca9-24f6589a6e24","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-06 08:13:15 +0000 UTC FinishedAt: 2026-08-06 08:13:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtdr9x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_scsi_complete_cmd_work","vhost_scsi_handle_kick","vhost_scsi_ctl_handle_kick","vhost_scsi_evt_handle_kick","vhost_scsi_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"d4d38690-9e07-4599-bca9-24f6589a6e24","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-06 08:13:15 +0000 UTC FinishedAt: 2026-08-06 08:13:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"d4d38690-9e07-4599-bca9-24f6589a6e24","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowtdr9x/series-workflowtdr9x-convert-artifact-3062543558/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtdr9x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_scsi_complete_cmd_work","vhost_scsi_handle_kick","vhost_scsi_ctl_handle_kick","vhost_scsi_evt_handle_kick","vhost_scsi_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"d4d38690-9e07-4599-bca9-24f6589a6e24","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-06 08:13:39 +0000 UTC FinishedAt: 2026-08-06 08:16:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtdr9x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_scsi_complete_cmd_work","vhost_scsi_handle_kick","vhost_scsi_ctl_handle_kick","vhost_scsi_evt_handle_kick","vhost_scsi_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"d4d38690-9e07-4599-bca9-24f6589a6e24","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-06 08:13:39 +0000 UTC FinishedAt: 2026-08-06 08:16:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*18c11a2e-a28f-4503-b0bc-571236f7da54,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-workflowtdr9x/series-workflowtdr9x-build-action-2601215469/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-workflowtdr9x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_scsi_complete_cmd_work","vhost_scsi_handle_kick","vhost_scsi_ctl_handle_kick","vhost_scsi_evt_handle_kick","vhost_scsi_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"d4d38690-9e07-4599-bca9-24f6589a6e24","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-06 08:16:30 +0000 UTC FinishedAt: 2026-08-06 08:16:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtdr9x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_scsi_complete_cmd_work","vhost_scsi_handle_kick","vhost_scsi_ctl_handle_kick","vhost_scsi_evt_handle_kick","vhost_scsi_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"d4d38690-9e07-4599-bca9-24f6589a6e24","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-06 08:16:30 +0000 UTC FinishedAt: 2026-08-06 08:16:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtdr9x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_scsi_complete_cmd_work","vhost_scsi_handle_kick","vhost_scsi_ctl_handle_kick","vhost_scsi_evt_handle_kick","vhost_scsi_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"d4d38690-9e07-4599-bca9-24f6589a6e24","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-06 08:16:30 +0000 UTC FinishedAt: 2026-08-06 08:37:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtdr9x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_scsi_complete_cmd_work","vhost_scsi_handle_kick","vhost_scsi_ctl_handle_kick","vhost_scsi_evt_handle_kick","vhost_scsi_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"d4d38690-9e07-4599-bca9-24f6589a6e24","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-06 08:16:30 +0000 UTC FinishedAt: 2026-08-06 08:37:25 +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:*2d106ada-909d-4e7e-84be-2d7bc5be0422,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-workflowtdr9x/series-workflowtdr9x-convert-artifact-3062543558/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": "ced82e7c-9888-43ab-9864-1fca00f9f901", "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-workflowtdr9x/series-workflowtdr9x-build-action-3925293066/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtdr9x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_scsi_complete_cmd_work","vhost_scsi_handle_kick","vhost_scsi_ctl_handle_kick","vhost_scsi_evt_handle_kick","vhost_scsi_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"d4d38690-9e07-4599-bca9-24f6589a6e24","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-06 08:16:30 +0000 UTC FinishedAt: 2026-08-06 08:37:07 +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:*2d106ada-909d-4e7e-84be-2d7bc5be0422,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-workflowtdr9x/series-workflowtdr9x-convert-artifact-3062543558/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": "ced82e7c-9888-43ab-9864-1fca00f9f901", "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-workflowtdr9x/series-workflowtdr9x-build-action-3925293066/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtdr9x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_scsi_complete_cmd_work","vhost_scsi_handle_kick","vhost_scsi_ctl_handle_kick","vhost_scsi_evt_handle_kick","vhost_scsi_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"d4d38690-9e07-4599-bca9-24f6589a6e24","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-06 08:37:25 +0000 UTC FinishedAt: 2026-08-06 08:37:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtdr9x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_scsi_complete_cmd_work","vhost_scsi_handle_kick","vhost_scsi_ctl_handle_kick","vhost_scsi_evt_handle_kick","vhost_scsi_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"d4d38690-9e07-4599-bca9-24f6589a6e24","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-06 08:37:25 +0000 UTC FinishedAt: 2026-08-06 08:37:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtdr9x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_scsi_complete_cmd_work","vhost_scsi_handle_kick","vhost_scsi_ctl_handle_kick","vhost_scsi_evt_handle_kick","vhost_scsi_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"d4d38690-9e07-4599-bca9-24f6589a6e24","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-06 08:37:25 +0000 UTC FinishedAt: 2026-08-06 08:40:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtdr9x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_scsi_complete_cmd_work","vhost_scsi_handle_kick","vhost_scsi_ctl_handle_kick","vhost_scsi_evt_handle_kick","vhost_scsi_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"d4d38690-9e07-4599-bca9-24f6589a6e24","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-06 08:37:25 +0000 UTC FinishedAt: 2026-08-06 08:39:35 +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:*ced82e7c-9888-43ab-9864-1fca00f9f901,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-workflowtdr9x/series-workflowtdr9x-build-action-3925293066/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-workflowtdr9x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_scsi_complete_cmd_work","vhost_scsi_handle_kick","vhost_scsi_ctl_handle_kick","vhost_scsi_evt_handle_kick","vhost_scsi_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"d4d38690-9e07-4599-bca9-24f6589a6e24","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-06 08:40:06 +0000 UTC FinishedAt: 2026-08-06 09:41:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtdr9x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_scsi_complete_cmd_work","vhost_scsi_handle_kick","vhost_scsi_ctl_handle_kick","vhost_scsi_evt_handle_kick","vhost_scsi_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"d4d38690-9e07-4599-bca9-24f6589a6e24","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-06 08:40:06 +0000 UTC FinishedAt: 2026-08-06 09:41:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_scsi_complete_cmd_work","vhost_scsi_handle_kick","vhost_scsi_ctl_handle_kick","vhost_scsi_evt_handle_kick","vhost_scsi_ioctl"],"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:*18c11a2e-a28f-4503-b0bc-571236f7da54,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*ced82e7c-9888-43ab-9864-1fca00f9f901,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-workflowtdr9x/series-workflowtdr9x-build-action-2601215469/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-workflowtdr9x/series-workflowtdr9x-build-action-3925293066/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowtdr9x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_scsi_complete_cmd_work","vhost_scsi_handle_kick","vhost_scsi_ctl_handle_kick","vhost_scsi_evt_handle_kick","vhost_scsi_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"d4d38690-9e07-4599-bca9-24f6589a6e24","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-06 08:40:06 +0000 UTC FinishedAt: 2026-08-06 08:41:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtdr9x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_scsi_complete_cmd_work","vhost_scsi_handle_kick","vhost_scsi_ctl_handle_kick","vhost_scsi_evt_handle_kick","vhost_scsi_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"d4d38690-9e07-4599-bca9-24f6589a6e24","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-06 08:40:06 +0000 UTC FinishedAt: 2026-08-06 08:40:19 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_scsi_complete_cmd_work","vhost_scsi_handle_kick","vhost_scsi_ctl_handle_kick","vhost_scsi_evt_handle_kick","vhost_scsi_ioctl"],"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-workflowtdr9x/series-workflowtdr9x-convert-artifact-1218507403/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtdr9x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_scsi_complete_cmd_work","vhost_scsi_handle_kick","vhost_scsi_ctl_handle_kick","vhost_scsi_evt_handle_kick","vhost_scsi_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"d4d38690-9e07-4599-bca9-24f6589a6e24","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-06 08:40:06 +0000 UTC FinishedAt: 2026-08-06 08:40:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtdr9x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_scsi_complete_cmd_work","vhost_scsi_handle_kick","vhost_scsi_ctl_handle_kick","vhost_scsi_evt_handle_kick","vhost_scsi_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"d4d38690-9e07-4599-bca9-24f6589a6e24","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-06 08:40:06 +0000 UTC FinishedAt: 2026-08-06 08:40:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtdr9x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_scsi_complete_cmd_work","vhost_scsi_handle_kick","vhost_scsi_ctl_handle_kick","vhost_scsi_evt_handle_kick","vhost_scsi_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"d4d38690-9e07-4599-bca9-24f6589a6e24","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-06 08:40:07 +0000 UTC FinishedAt: 2026-08-06 08:40:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtdr9x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_scsi_complete_cmd_work","vhost_scsi_handle_kick","vhost_scsi_ctl_handle_kick","vhost_scsi_evt_handle_kick","vhost_scsi_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"d4d38690-9e07-4599-bca9-24f6589a6e24","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-06 08:41:01 +0000 UTC FinishedAt: 2026-08-06 09:41:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtdr9x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_scsi_complete_cmd_work","vhost_scsi_handle_kick","vhost_scsi_ctl_handle_kick","vhost_scsi_evt_handle_kick","vhost_scsi_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"d4d38690-9e07-4599-bca9-24f6589a6e24","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-06 08:41:02 +0000 UTC FinishedAt: 2026-08-06 09:41:19 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*18c11a2e-a28f-4503-b0bc-571236f7da54,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*ced82e7c-9888-43ab-9864-1fca00f9f901,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-workflowtdr9x/series-workflowtdr9x-build-action-2601215469/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-workflowtdr9x/series-workflowtdr9x-build-action-3925293066/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-workflowtdr9x/series-workflowtdr9x-convert-artifact-1218507403/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,}