Name: series-workflow595q9 Phase: Failed StartedAt: 2026-09-15 09:53:07 +0000 UTC FinishedAt: 2026-09-15 10:39:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow595q9[0] Phase: Succeeded StartedAt: 2026-09-15 09:53:07 +0000 UTC FinishedAt: 2026-09-15 10:38:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflow595q9[0].run-triage Phase: Succeeded StartedAt: 2026-09-15 09:53:07 +0000 UTC FinishedAt: 2026-09-15 10:38:55 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDEwOjM3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYXRoMTJrX21hY19vcF9zdGFfc3RhdGUoKSBpbiBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jLCB3aGljaCBiZWxvbmdzIHRvIHRoZSBRdWFsY29tbSBXaS1GaSA3IChhdGgxMmspIGRyaXZlci4gVGhpcyBkcml2ZXIgdGFyZ2V0cyBwaHlzaWNhbCBRdWFsY29tbSBQQ0llL0FIQiBjaGlwc2V0cyAoZS5nLiwgV0NONzg1MCwgUUNOOTI3NCkgcmVxdWlyaW5nIHNwZWNpZmljIHBoeXNpY2FsIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLiBDb25zZXF1ZW50bHksIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTA6Mzc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBiYmMyZTZiYTYyZDBkYTgyMDQ4M2JhYTEyMGE4ZmNmMzA1MDU5Y2QyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBTZXAgMTUgMTA6Mzc6MDQgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmNcbmluZGV4IGQ0MTE2YmEwZGEwODkuLjU3ODYxMDAzYzE1YjAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jXG5AQCAtNzg0NSw3ICYjNDM7Nzg0NSw3IEBAIGludCBhdGgxMmtfbWFjX29wX3N0YV9zdGF0ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbiBcdFx0XHRcdGF0aDEya19od193YXJuKGFoLCBcJiMzNDtmYWlsZWQgdG8gdmVyaWZ5IGFzc29jIGxpbmsgc2V0dGluZyB3aXRoIGxpbmsgaWQgJXVcXG5cJiMzNDssXG4gXHRcdFx0XHRcdCAgICAgICBsaW5rX2lkKTtcbiBcdFx0XHRcdHJldCA9IC1FSU5WQUw7XG4tXHRcdFx0XHRnb3RvIGV4aXQ7XG4mIzQzO1x0XHRcdFx0Z290byBmcmVlX3VuYXNzaWduX2xpbms7XG4gXHRcdFx0fVxuIFxuIFx0XHRcdGFyc3RhLVx1MDAzZWlzX2Fzc29jX2xpbmsgPSB0cnVlO1xuQEAgLTc5MDMsNyAmIzQzOzc5MDMsNyBAQCBpbnQgYXRoMTJrX21hY19vcF9zdGFfc3RhdGUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4gXG4gXHRcdFx0aWYgKG9sZF9zdGF0ZSA9PSBJRUVFODAyMTFfU1RBX05PVEVYSVNUIFx1MDAyNlx1MDAyNlxuIFx0XHRcdCAgICBuZXdfc3RhdGUgPT0gSUVFRTgwMjExX1NUQV9OT05FKVxuLVx0XHRcdFx0Z290byBwZWVyX2RlbGV0ZTtcbiYjNDM7XHRcdFx0XHRnb3RvIGZyZWVfdW5hc3NpZ25fbGluaztcbiBcdFx0XHRlbHNlXG4gXHRcdFx0XHRnb3RvIGV4aXQ7XG4gXHRcdH1cbkBAIC03OTQzLDYgJiM0Mzs3OTQzLDggQEAgaW50IGF0aDEya19tYWNfb3Bfc3RhX3N0YXRlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFx0cmV0ID0gMDtcbiBcdGdvdG8gZXhpdDtcbiBcbiYjNDM7ZnJlZV91bmFzc2lnbl9saW5rOlxuJiM0MztcdGF0aDEya19tYWNfZnJlZV91bmFzc2lnbl9saW5rX3N0YShhaCwgYWhzdGEsIGxpbmtfaWQpO1xuIHBlZXJfZGVsZXRlOlxuIFx0YXRoMTJrX2RwX3BlZXJfZGVsZXRlKFx1MDAyNmFoLVx1MDAzZWRwX2h3LCBzdGEtXHUwMDNlYWRkciwgc3RhKTtcbiBtbF9wZWVyX2lkX2NsZWFyOlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDEwOjM3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGF0aDEya19tYWNfb3Bfc3RhX3N0YXRlKCkgaW4gZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYywgd2hpY2ggYmVsb25ncyB0byB0aGUgUXVhbGNvbW0gV2ktRmkgNyAoYXRoMTJrKSBkcml2ZXIuIFRoaXMgZHJpdmVyIHRhcmdldHMgcGh5c2ljYWwgUXVhbGNvbW0gUENJZS9BSEIgY2hpcHNldHMgKGUuZy4sIFdDTjc4NTAsIFFDTjkyNzQpIHJlcXVpcmluZyBzcGVjaWZpYyBwaHlzaWNhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKS4gQ29uc2VxdWVudGx5LCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYmJjMmU2YmE2MmQwZGE4MjA0ODNiYWExMjBhOGZjZjMwNTA1OWNkMgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgU2VwIDE1IDEwOjM3OjA0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMKaW5kZXggZDQxMTZiYTBkYTA4OS4uNTc4NjEwMDNjMTViMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jCkBAIC03ODQ1LDcgJiM0Mzs3ODQ1LDcgQEAgaW50IGF0aDEya19tYWNfb3Bfc3RhX3N0YXRlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LAogCQkJCWF0aDEya19od193YXJuKGFoLCAmIzM0O2ZhaWxlZCB0byB2ZXJpZnkgYXNzb2MgbGluayBzZXR0aW5nIHdpdGggbGluayBpZCAldVxuJiMzNDssCiAJCQkJCSAgICAgICBsaW5rX2lkKTsKIAkJCQlyZXQgPSAtRUlOVkFMOwotCQkJCWdvdG8gZXhpdDsKJiM0MzsJCQkJZ290byBmcmVlX3VuYXNzaWduX2xpbms7CiAJCQl9CiAKIAkJCWFyc3RhLSZndDtpc19hc3NvY19saW5rID0gdHJ1ZTsKQEAgLTc5MDMsNyAmIzQzOzc5MDMsNyBAQCBpbnQgYXRoMTJrX21hY19vcF9zdGFfc3RhdGUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsCiAKIAkJCWlmIChvbGRfc3RhdGUgPT0gSUVFRTgwMjExX1NUQV9OT1RFWElTVCAmYW1wOyZhbXA7CiAJCQkgICAgbmV3X3N0YXRlID09IElFRUU4MDIxMV9TVEFfTk9ORSkKLQkJCQlnb3RvIHBlZXJfZGVsZXRlOwomIzQzOwkJCQlnb3RvIGZyZWVfdW5hc3NpZ25fbGluazsKIAkJCWVsc2UKIAkJCQlnb3RvIGV4aXQ7CiAJCX0KQEAgLTc5NDMsNiAmIzQzOzc5NDMsOCBAQCBpbnQgYXRoMTJrX21hY19vcF9zdGFfc3RhdGUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsCiAJcmV0ID0gMDsKIAlnb3RvIGV4aXQ7CiAKJiM0MztmcmVlX3VuYXNzaWduX2xpbms6CiYjNDM7CWF0aDEya19tYWNfZnJlZV91bmFzc2lnbl9saW5rX3N0YShhaCwgYWhzdGEsIGxpbmtfaWQpOwogcGVlcl9kZWxldGU6CiAJYXRoMTJrX2RwX3BlZXJfZGVsZXRlKCZhbXA7YWgtJmd0O2RwX2h3LCBzdGEtJmd0O2FkZHIsIHN0YSk7CiBtbF9wZWVyX2lkX2NsZWFyOgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxMDozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTU1CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMzc1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gqKgoKT2theSwgc28gdGhlIHBhdGNoIGlzIHRvdWNoaW5nIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jYC4gIE15IGZpcnN0IG1vdmUgaXMgdG8gZGl2ZSByaWdodCBpbiBhbmQgZGlzc2VjdCB0aGUgZGlmZi4gIEl0IHNlZW1zIHRvIGJlIG1vZGlmeWluZyBgYXRoMTJrX21hY19vcF9zdGFfc3RhdGVgIHdpdGhpbiB0aGUgYGF0aDEya2AgZHJpdmVyLiAgTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7V2hhdCYjMzk7cyB0aGUgY29udGV4dCBoZXJlPyBXaGF0IGlzIGBhdGgxMmtgIGFjdHVhbGx5IHJlc3BvbnNpYmxlIGZvcj8mIzM0OwoKUmlnaHQsIHRoYXQmIzM5O3MgdGhlIFF1YWxjb21tIFdpLUZpIDcgKDgwMi4xMWJlKSBkcml2ZXIuICBOb3csIHRoZSBjcml0aWNhbCBxdWVzdGlvbiwgZ2l2ZW4gbXkgbmVlZCBmb3IgYSBzdWl0YWJsZSBlbnZpcm9ubWVudCwgaXM6IENhbiBJIGV2ZW4gKnJlYWNoKiB0aGlzIGluIGEgc3RhbmRhcmQgdmlydHVhbGl6ZWQgc2V0dXAgbGlrZSBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZT8gIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBjYW4gZXZlbiB0ZXN0IGl0LgoKSG9sZCBvbiwgbGV0IG1lIHF1aWNrbHkgcmUtcmVhZCB0aGUgZW52aXJvbm1lbnQgc2V0dXAgaW5zdHJ1Y3Rpb25zLiBPaCB5ZXMsIHNlY3Rpb24gMiBhZGRyZXNzZXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlLiBMZXQgbWUgcXVpY2tseSByZWZyZXNoIHdoYXQgdGhhdCBlbnRhaWxzOiBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIEdQVSBkcml2ZXJzIChtbHhzdywgcGRzX2NvcmUsIHFlZCwgaW9uaWMsIGFtZGdwdSkgdGhhdCBuZWVkIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcy4gU28gdGhhdCYjMzk7cyB0aGUgaHVyZGxlIEkmIzM5O20gdHJ5aW5nIHRvIG92ZXJjb21lLgoKU28sIGRvZXMgYGF0aDEya2AgZmFsbCBpbnRvIHRoYXQgY2F0ZWdvcnk/IERvZXMgaXQgKnJlcXVpcmUqIHBoeXNpY2FsIGhhcmR3YXJlLCBiZSBpdCBQQ0llIG9yIHBsYXRmb3JtLXNwZWNpZmljPyBUaGlzIGlzIGNydWNpYWwuIEkgbmVlZCB0byBrbm93IGlmIGl0IGNhbiBiZSBlbXVsYXRlZCBvciBzaW11bGF0ZWQgYXQgYWxsLCBvciBpZiBpdCYjMzk7cyBzdHJpY3RseSB0aWVkIHRvIFF1YWxjb21tIGhhcmR3YXJlLgoKT2theSwgbGV0JiMzOTtzIGV4cGxvcmUgdGhhdCBkcml2ZXIgZGlyZWN0b3J5LiAgTm8sIGBhdGgxMmtgIGRvZXNuJiMzOTt0IHN1cHBvcnQgdGhlIG1hYzgwMjExX2h3c2ltIGZyYW1ld29yay4gIEl0JiMzOTtzIGEgdmVuZG9yIGRyaXZlciwgdGFyZ2V0ZWQgYXQgUXVhbGNvbW0gc2lsaWNvbiwgbGlrZSBRQ045Mjc0LCBXQ043ODUwLCBJUFE1MzMyLCBldGMuCgpDYW4gSSBnZXQgYXJvdW5kIHRoaXMgd2l0aCBVU0IsIGlzIGl0IGF2YWlsYWJsZSB2aWEgVVNCPyBObywgdGhhdCYjMzk7cyBub3QgdGhlIGNhc2UgaGVyZSwgdGhhdCYjMzk7cyBQQ0kgb3IgcGxhdGZvcm0uCgpTbyBteSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgS2NvbmZpZyBmaWxlIGZvciBgYXRoMTJrYCB0byBzZWUgd2hhdCBvcHRpb25zIG1pZ2h0IHNoZWQgc29tZSBsaWdodCBvbiB0aGUgZGVwZW5kZW5jaWVzIGFuZCB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmUuIEkgbmVlZCB0byB2ZXJpZnkgd2hhdCBvcHRpb25zIGV4aXN0IGZvciBpdCwgYW5kIGhvdyBpdCBpcyBlbmFibGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDEwOjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBBVEgxMksmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjI6Y29uZmlnIEFUSDEyS1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtRdWFsY29tbSBXaS1GaSA3IHN1cHBvcnQgKGF0aDEyaylcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6MTc6Y29uZmlnIEFUSDEyS19BSEJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0xOC1cdGJvb2wgXCYjMzQ7UXVhbGNvbW0gYXRoMTJrIEFIQiBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTI0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjI1OmNvbmZpZyBBVEgxMktfREVCVUdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0yNi1cdGJvb2wgXCYjMzQ7YXRoMTJrIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0zNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzozNTpjb25maWcgQVRIMTJLX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0zNi1cdGJvb2wgXCYjMzQ7UXVhbGNvbW0gYXRoMTJrIGRlYnVnZnMgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy00My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzo0NDpjb25maWcgQVRIMTJLX1RSQUNJTkdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy00NS1cdGJvb2wgXCYjMzQ7YXRoMTJrIHRyYWNpbmcgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy01Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzo1Mzpjb25maWcgQVRIMTJLX0NPUkVEVU1QXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNTQtXHRib29sIFwmIzM0O2F0aDEyayBjb3JlZHVtcFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDEwOjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1NTcKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipFeGFtaW5pbmcgdGhlIEF0aGVyb3MgV2lyZWxlc3MgRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIGRpdmUgaW50byB0aGUgY29uZmlndXJhdGlvbiBmb3IgdGhlIGF0aDEyayB3aXJlbGVzcyBkcml2ZXIsIHNwZWNpZmljYWxseSBsb29raW5nIGF0IHRoZSBgS2NvbmZpZ2AgZmlsZS4gTXkgaW1tZWRpYXRlIGdvYWwgaXMgdG8gdW5kZXJzdGFuZCB0aGUgYnVpbGQgb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzIGZvciB0aGlzIHBhcnRpY3VsYXIgZHJpdmVyLiBJIG5lZWQgdG8gZ2V0IGEgY29tcHJlaGVuc2l2ZSB2aWV3IG9mIHdoYXQgZmVhdHVyZXMgYXJlIGNvbmZpZ3VyYWJsZSBhbmQgaG93IHRoZXkmIzM5O3JlIGVuYWJsZWQgb3IgZGlzYWJsZWQgZHVyaW5nIHRoZSBrZXJuZWwgYnVpbGQgcHJvY2Vzcy4gVGhpcyBmaWxlIGlzIHRoZSBrZXkgdG8gdGhhdC4gSSYjMzk7bSBhc3N1bWluZyBpdCBkZWZpbmVzIGFsbCB0aGUgcmVsZXZhbnQgcGFyYW1ldGVycywgdGhlaXIgZGVmYXVsdCBzZXR0aW5ncywgYW5kIGFueSBkZXBlbmRlbmNpZXMgb24gb3RoZXIga2VybmVsIGNvbXBvbmVudHMuIEkmIzM5O2xsIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIHZhcmlvdXMgZmVhdHVyZXMsIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIHRoZXkmIzM5O3JlIGFjdGl2YXRlZCwgYW5kIGFueSBpbnRlcmFjdGlvbnMgd2l0aCBoYXJkd2FyZSBvciBvdGhlciBzb2Z0d2FyZSBtb2R1bGVzLiBUaGlzIGNvdWxkIGJlIGFueXRoaW5nIGZyb20gcmVndWxhdG9yeSBkb21haW4gc2V0dGluZ3MgdG8gc3BlY2lmaWMgaGFyZHdhcmUgc3VwcG9ydC4gVW5kZXJzdGFuZGluZyB0aGlzIGNvbmZpZ3VyYXRpb24gaXMgdml0YWwgZm9yIGFueSB0cm91Ymxlc2hvb3Rpbmcgb3IgY3VzdG9tIG1vZGlmaWNhdGlvbnMgSSBtaWdodCBuZWVkIHRvIHVuZGVydGFrZSBsYXRlciBvbi4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDEwOjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA2MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG4gICAyOlx0Y29uZmlnIEFUSDEyS1xuICAgMzpcdFx0dHJpc3RhdGUgXCYjMzQ7UXVhbGNvbW0gV2ktRmkgNyBzdXBwb3J0IChhdGgxMmspXCYjMzQ7XG4gICA0Olx0XHRkZXBlbmRzIG9uIE1BQzgwMjExIFx1MDAyNlx1MDAyNiBIQVNfRE1BIFx1MDAyNlx1MDAyNiBQQ0lcbiAgIDU6XHRcdHNlbGVjdCBRQ09NX1FNSV9IRUxQRVJTXG4gICA2Olx0XHRzZWxlY3QgTUhJX0JVU1xuICAgNzpcdFx0c2VsZWN0IFFSVFJcbiAgIDg6XHRcdHNlbGVjdCBRUlRSX01ISVxuICAgOTpcdFx0c2VsZWN0IFBDSV9QV1JDVFJMX1BXUlNFUSBpZiBIQVZFX1BXUkNUUkxcbiAgMTA6XHRcdGhlbHBcbiAgMTE6XHRcdCAgRW5hYmxlIHN1cHBvcnQgZm9yIFF1YWxjb21tIFRlY2hub2xvZ2llcyBXaS1GaSA3IChJRUVFXG4gIDEyOlx0XHQgIDgwMi4xMWJlKSBmYW1pbHkgb2YgY2hpcHNldHMsIGZvciBleGFtcGxlIFdDTjc4NTAgYW5kXG4gIDEzOlx0XHQgIFFDTjkyNzQuXG4gIDE0Olx0XG4gIDE1Olx0XHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgYSBtb2R1bGUsIGl0JiMzOTtsbCBiZSBjYWxsZWQgYXRoMTJrLlxuICAxNjpcdFxuICAxNzpcdGNvbmZpZyBBVEgxMktfQUhCXG4gIDE4Olx0XHRib29sIFwmIzM0O1F1YWxjb21tIGF0aDEyayBBSEIgc3VwcG9ydFwmIzM0O1xuICAxOTpcdFx0ZGVwZW5kcyBvbiBBVEgxMksgXHUwMDI2XHUwMDI2IFJFTU9URVBST0NcbiAgMjA6XHRcdHNlbGVjdCBRQ09NX01EVF9MT0FERVJcbiAgMjE6XHRcdHNlbGVjdCBRQ09NX1BBU1xuICAyMjpcdFx0aGVscFxuICAyMzpcdFx0ICBFbmFibGUgc3VwcG9ydCBmb3IgQXRoMTJrIEFIQiBidXMgY2hpcHNldHMsIGV4YW1wbGUgSVBRNTMzMi5cbiAgMjQ6XHRcbiAgMjU6XHRjb25maWcgQVRIMTJLX0RFQlVHXG4gIDI2Olx0XHRib29sIFwmIzM0O2F0aDEyayBkZWJ1Z2dpbmdcJiMzNDtcbiAgMjc6XHRcdGRlcGVuZHMgb24gQVRIMTJLXG4gIDI4Olx0XHRoZWxwXG4gIDI5Olx0XHQgIEVuYWJsZSBkZWJ1ZyBzdXBwb3J0LCBmb3IgZXhhbXBsZSBkZWJ1ZyBtZXNzYWdlcyB3aGljaCBtdXN0XG4gIDMwOlx0XHQgIGJlIGVuYWJsZWQgc2VwYXJhdGVseSB1c2luZyB0aGUgZGVidWdfbWFzayBtb2R1bGUgcGFyYW1ldGVyLlxuICAzMTpcdFxuICAzMjpcdFx0ICBJZiB1bnN1cmUsIHNheSBZIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGRlYnVnIHByb2JsZW1zLiBCdXQgaWZcbiAgMzM6XHRcdCAgeW91IHdhbnQgb3B0aW1hbCBwZXJmb3JtYW5jZSBjaG9vc2UgTi5cbiAgMzQ6XHRcbiAgMzU6XHRjb25maWcgQVRIMTJLX0RFQlVHRlNcbiAgMzY6XHRcdGJvb2wgXCYjMzQ7UXVhbGNvbW0gYXRoMTJrIGRlYnVnZnMgc3VwcG9ydFwmIzM0O1xuICAzNzpcdFx0ZGVwZW5kcyBvbiBBVEgxMksgXHUwMDI2XHUwMDI2IE1BQzgwMjExX0RFQlVHRlNcbiAgMzg6XHRcdGhlbHBcbiAgMzk6XHRcdCAgRW5hYmxlIGF0aDEyayBkZWJ1Z2ZzIHN1cHBvcnRcbiAgNDA6XHRcbiAgNDE6XHRcdCAgSWYgdW5zdXJlLCBzYXkgWSB0byBtYWtlIGl0IGVhc2llciB0byBkZWJ1ZyBwcm9ibGVtcy4gQnV0IGlmXG4gIDQyOlx0XHQgIHlvdSB3YW50IG9wdGltYWwgcGVyZm9ybWFuY2UgY2hvb3NlIE4uXG4gIDQzOlx0XG4gIDQ0Olx0Y29uZmlnIEFUSDEyS19UUkFDSU5HXG4gIDQ1Olx0XHRib29sIFwmIzM0O2F0aDEyayB0cmFjaW5nIHN1cHBvcnRcJiMzNDtcbiAgNDY6XHRcdGRlcGVuZHMgb24gQVRIMTJLIFx1MDAyNlx1MDAyNiBFVkVOVF9UUkFDSU5HXG4gIDQ3Olx0XHRoZWxwXG4gIDQ4Olx0XHQgIEVuYWJsZSBhdGgxMmsgdHJhY2luZyBpbmZyYXN0cnVjdHVyZS5cbiAgNDk6XHRcbiAgNTA6XHRcdCAgSWYgdW5zdXJlLCBzYXkgWSB0byBtYWtlIGl0IGVhc2llciB0byBkZWJ1ZyBwcm9ibGVtcy4gQnV0IGlmXG4gIDUxOlx0XHQgIHlvdSB3YW50IG9wdGltYWwgcGVyZm9ybWFuY2UgY2hvb3NlIE4uXG4gIDUyOlx0XG4gIDUzOlx0Y29uZmlnIEFUSDEyS19DT1JFRFVNUFxuICA1NDpcdFx0Ym9vbCBcJiMzNDthdGgxMmsgY29yZWR1bXBcJiMzNDtcbiAgNTU6XHRcdGRlcGVuZHMgb24gQVRIMTJLXG4gIDU2Olx0XHRzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVBcbiAgNTc6XHRcdGhlbHBcbiAgNTg6XHRcdCAgRW5hYmxlIGF0aDEyayBjb3JlZHVtcCBjb2xsZWN0aW9uXG4gIDU5Olx0XG4gIDYwOlx0XHQgIElmIHVuc3VyZSwgc2F5IFkgdG8gbWFrZSBpdCBlYXNpZXIgdG8gZGVidWcgcHJvYmxlbXMuIEJ1dCBpZlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDEwOjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU2NjEKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAyNTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiBhdGgxMmsgYW5kIGl0cyBFbXVsYXRpb24gT3B0aW9ucyoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGBhdGgxMmtgIHJpZ2h0IG5vdy4gSSBrbm93IGl0IGhpbmdlcyBvbiBgTUFDODAyMTFgLCBuZWVkcyBgSEFTX0RNQWAsIGFuZCBuZWVkcyB0byBiZSBydW5uaW5nIG9uIGBQQ0lgLiBJdCYjMzk7cyBwcmV0dHkgY2xlYXIgdGhhdCBpdCBzdXBwb3J0cyB0aG9zZSBRdWFsY29tbSBXaS1GaSA3IGNoaXBzZXRzIOKAkyBXQ043ODUwLCBRQ045Mjc0LCBJUFE1MzMyIOKAkyBhbGwgaGFyZHdhcmUuIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaW4gbXkgbWluZCBpczogY2FuIEkgZW11bGF0ZSB0aGlzIGluIFFFTVUsIG9yIGV2ZW4gd2l0aCBhIFVTQiBnYWRnZXQgc2V0dXAsIG9yIGEgdmlydHVhbCBlbnZpcm9ubWVudD8gSSBtZWFuLCBteSBpbml0aWFsIHVuZGVyc3RhbmRpbmcgaXMgdGhhdCBpdCYjMzk7cyBkZXNpZ25lZCBzcGVjaWZpY2FsbHkgZm9yIHRob3NlIFF1YWxjb21tIFdpLUZpIDcgY2hpcHMgdXNpbmcgUENJIG9yIEFIQiwgc28gbm8sIG5vdCByZWFsbHkuCgpCdXQsIGhvbGQgb24uIENhbiBJIGxvYWQgb3IgaW5pdGlhbGl6ZSBpdCB3aXRob3V0IHRoZSBwaHlzaWNhbCBoYXJkd2FyZSBwcmVzZW50PyBJIG5lZWQgdG8gY2hlY2sgdGhpcy4gTGV0IG1lIGxvb2sgaW50byBgYXRoMTJrX21hY19vcF9zdGFfc3RhdGVgLiBXaGVyZSBpcyB0aGF0IGZ1bmN0aW9uIHJlZ2lzdGVyZWQ/IEFoYSwgaXQmIzM5O3MgcGFydCBvZiBgaWVlZTgwMjExX29wcyBhdGgxMmtfbWFjX29wc2AsIHNwZWNpZmljYWxseSwgYC5zdGFfc3RhdGUgPSBhdGgxMmtfbWFjX29wX3N0YV9zdGF0ZWAuIFNvIHRvIGdldCB0aGF0IGZ1bmN0aW9uYWxpdHksIGBpZWVlODAyMTFfcmVnaXN0ZXJfaHdgIChmcm9tIG1hYzgwMjExKSBtdXN0IGJlIGNhbGxlZCB0byByZWdpc3RlciBgYXRoMTJrX21hY19vcHNgLiBOb3csIHdoZXJlIGRvZXMgYXRoMTJrIGFjdHVhbGx5IGNhbGwgdGhhdD8gSSBuZWVkIHRvIHRyYWNrIHRoYXQgY2FsbCBkb3duIHdpdGhpbiB0aGUgY29kZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxMDozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpZWVlODAyMTFfcmVnaXN0ZXJfaHcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmM9MTQ4MDU9c3RhdGljIGludCBhdGgxMmtfbWFjX2h3X3JlZ2lzdGVyKHN0cnVjdCBhdGgxMmtfaHcgKmFoKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtMTUwNDItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jOjE1MDQzOlx0cmV0ID0gaWVlZTgwMjExX3JlZ2lzdGVyX2h3KGh3KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtMTUwNDQtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYy0xNTA0OS1cdGlmIChpc19tb25pdG9yX2Rpc2FibGUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jOjE1MDUwOlx0XHQvKiBUaGVyZSYjMzk7cyBhIHJhY2UgYmV0d2VlbiBjYWxsaW5nIGllZWU4MDIxMV9yZWdpc3Rlcl9odygpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jLTE1MDUxLVx0XHQgKiBhbmQgaGVyZSB3aGVyZSB0aGUgbW9uaXRvciBtb2RlIGlzIGVuYWJsZWQgZm9yIGEgbGl0dGxlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTA6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjU1NgoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHRoZSBgYXRoMTJrX21hY19od19yZWdpc3RlcmAgY2FsbCwgYnJva2VuIGRvd24gYXMgSSYjMzk7ZCB0aGluayB0aHJvdWdoIGl0OgoKKipEaXZpbmcgaW50byBgYXRoMTJrX21hY19od19yZWdpc3RlcmAqKgoKT2theSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBgYXRoMTJrX21hY19od19yZWdpc3RlcmAgY2FsbC4gSXQmIzM5O3MgY2xlYXJseSBhIGNyaXRpY2FsIGZ1bmN0aW9uIHJlbGF0ZWQgdG8gdGhlIGhhcmR3YXJlIHJlZ2lzdHJhdGlvbiB3aXRoaW4gdGhlIGF0aDEyayBkcml2ZXIuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gY29uc2lkZXI6IFdoYXQgYXJlIHRoZSB0eXBpY2FsIGNvbnRleHRzIHdoZXJlIHlvdSYjMzk7ZCAqZXhwZWN0KiB0byBzZWUgYSBmdW5jdGlvbiB3aXRoIHRoaXMgbmFtZT8gR2l2ZW4gdGhhdCB0aGlzIGlzIGEgcmVnaXN0cmF0aW9uIGZ1bmN0aW9uLCBJJiMzOTtkIGltbWVkaWF0ZWx5IHN1c3BlY3QgaXQmIzM5O3MgY2FsbGVkIGR1cmluZyB0aGUgaW5pdGlhbGl6YXRpb24gb3IgYnJpbmctdXAgb2YgdGhlIGF0aDEyayBNQUMgaGFyZHdhcmUsIHByb2JhYmx5IGFzIGEgcGFydCBvZiB0aGUgb3ZlcmFsbCBkZXZpY2UgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UuIFRoZSBjb3JlIGlkZWEgaGVyZSBpcyB0byBtYWtlIHRoZSBoYXJkd2FyZSBhdmFpbGFibGUgdG8gdGhlIHJlc3Qgb2YgdGhlIHN5c3RlbS4gSSBhbHNvIG5lZWQgdG8gdGhpbmsgYWJvdXQgdGhlIGlucHV0cyBhbmQgb3V0cHV0cyBvZiB0aGlzIHNwZWNpZmljIGZ1bmN0aW9uLiBXaGF0IGRhdGEgaXMgaXQgcmVjZWl2aW5nLCBhbmQgd2hhdCByZXNvdXJjZXMgaXMgaXQgaW5pdGlhbGl6aW5nIG9yIGFsbG9jYXRpbmc/IElzIGl0IHJlbGF0ZWQgdG8gaW50ZXJydXB0cyBvciBETUEgY2hhbm5lbHMsIG9yIG90aGVyIGVzc2VudGlhbCByZWdpc3RlcnM/IFRoZSBmdW5jdGlvbiBuYW1lIGlzIHZlcnkgY2xlYXI6ICYjMzQ7aGFyZHdhcmUgcmVnaXN0cmF0aW9uLiYjMzQ7IFNvIHRoaXMgZnVuY3Rpb24gaXMgbGlrZWx5IGNhbGxlZCBmcm9tIHRoZSBNQUMgKG1lZGlhIGFjY2VzcyBjb250cm9sbGVyKSBzcGVjaWZpYyBwb3J0aW9uIG9mIHRoZSBjb2RlLCB3aGljaCBpcyBwcm9iYWJseSByZWxhdGVkIHRvIHRoZSBMaW51eCBrZXJuZWwmIzM5O3MgbWFjODAyMTEgZHJpdmVyLiBUaGlzIHdvdWxkIGJlIGEgZ29vZCBwbGFjZSB0byBzdGFydCBteSBzZWFyY2ggZm9yIGNhbGwgc2l0ZXMgYW5kIHRoZSBkYXRhIHRoYXQgaXQgcGFzc2VzIHRvIG90aGVyIHN1YnJvdXRpbmVzLiBJIHNob3VsZCB0aGluayBhYm91dCB0aGUgZGlmZmVyZW50IHN1Ym1vZHVsZXMgd2l0aGluIHRoZSBhdGgxMmsgZHJpdmVyIChsaWtlIHRoZSBmaXJtd2FyZSBpbnRlcmZhY2UsIHRoZSBoYXJkd2FyZSBhYnN0cmFjdGlvbiBsYXllciwgZXRjLikgYW5kIGNvbnNpZGVyIGhvdyB0aGlzIGZ1bmN0aW9uIGludGVyYWN0cyB3aXRoIHRob3NlIG1vZHVsZXMuIEZyb20gaGVyZSwgSSBuZWVkIHRvIHNlZSB3aGVyZSBpdCBnZXRzIGNhbGxlZCwgYW5kIGdvIHRocm91Z2ggdGhlIGNhbGwgZ3JhcGggdG8gc2VlIHdoYXQgdGhlIGNvbnRyb2wgZmxvdyBpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTA6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoMTJrX21hY19od19yZWdpc3RlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYz0xNDc3MT1zdGF0aWMgaW50IGF0aDEya19tYWNfc2V0dXBfcmVnaXN0ZXIoc3RydWN0IGF0aDEyayAqYXIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYy0xNDgwNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmM6MTQ4MDU6c3RhdGljIGludCBhdGgxMmtfbWFjX2h3X3JlZ2lzdGVyKHN0cnVjdCBhdGgxMmtfaHcgKmFoKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYy0xNDgwNi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYz0xNTMzOD1pbnQgYXRoMTJrX21hY19yZWdpc3RlcihzdHJ1Y3QgYXRoMTJrX2h3X2dyb3VwICphZylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jLTE1MzQ2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYzoxNTM0NzpcdFx0cmV0ID0gYXRoMTJrX21hY19od19yZWdpc3RlcihhaCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jLTE1MzQ4LVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmM9Njk1OT1zdGF0aWMgaW50IGF0aDEya19yZWdfY2hhbl9saXN0X2V2ZW50KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYy02OTgwLVx0ICogZXZlbnQgaXMgZHJvcHBlZCBvciBmYWxscyBiYWNrLCB0aGUgY29tcGxldGlvbiB0aGUgY2FsbGVyIGluXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jOjY5ODE6XHQgKiBhdGgxMmtfbWFjX2h3X3JlZ2lzdGVyKCkgbWF5IGJlIHdhaXRpbmcgb24gaXMgc3RpbGwgc2lnbmFsbGVkIGF0XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTY5ODItXHQgKiB0aGUgZW5kIGFuZCBpdCBkb2VzIG5vdCB0aW1lIG91dC5cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTcwNDQtXHQgKiBzbyB0aGUgY29tcGxldGlvbiBjYW5ub3QgYmUgbWFya2VkIGF0IHRoYXQgcG9pbnQuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jOjcwNDU6XHQgKiBUaGlzIGJvb3QtdGltZSB1cGRhdGUgaXMgaGFuZGxlZCBpbiBhdGgxMmtfbWFjX2h3X3JlZ2lzdGVyKClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMtNzA0Ni1cdCAqIGJlZm9yZSByZWdpc3RlcmluZyB0aGUgaGFyZHdhcmUuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDEwOjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc1NjgKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyBgYXRoMTJrX21hY19yZWdpc3RlcmAgQ2FsbGVycyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBjYWxsIGdyYXBoIGZvciBgYXRoMTJrX21hY19yZWdpc3RlcmAuIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIHdobyYjMzk7cyBzZXR0aW5nIHVwIHRoZSByZWdpc3RyYXRpb24/IE9idmlvdXNseSwgdGhlIGRyaXZlciBpdHNlbGYgaXMgZ29pbmcgdG8gYmUgY2VudHJhbCwgbGlrZWx5IHdpdGhpbiB0aGUgbW9kdWxlIGluaXRpYWxpemF0aW9uLiBJ4oCZZCBleHBlY3QgdGhlIGBhdGgxMmtfbWFjYCBzdHJ1Y3QgdG8gYmUgZ2V0dGluZyBhbGxvY2F0ZWQgYW5kIHBvcHVsYXRlZCwgcHJvYmFibHkgd2l0aCBhIHNlcXVlbmNlIG9mIGNhbGxzIHNldHRpbmcgdmFyaW91cyBwYXJhbWV0ZXJzIG5lZWRlZCBieSB0aGUgTUFDIGhhcmR3YXJlLiBJIGFtIGV4cGVjdGluZyB0aGF0IGFueSBmaXJtd2FyZSBsb2FkaW5nIHdvdWxkIG9jY3VyIGZpcnN0LCBsaWtlbHkgd2l0aCBhIHN1YnNlcXVlbnQgcmVnaXN0cmF0aW9uLiBTbyBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gaW5pdGlhbGl6YXRpb24gc3RlcHMsIGxvb2sgZm9yIGNvbnRleHQgd2hlcmUgdGhpcyBjYWxsIG1pZ2h0IGJlIGNvbmRpdGlvbmFsIChlcnJvciBoYW5kbGluZy9wcm9iZSBmYWlsdXJlcykuIElzIHRoZSByZWdpc3RyYXRpb24gaGFwcGVuaW5nIGRpcmVjdGx5IG9yIHRocm91Z2ggYSBoZWxwZXIgZnVuY3Rpb24vc3Vic3lzdGVtPyBUaGF0IHdvdWxkIG1ha2UgdGhlIGNhbGxncmFwaCBzbGlnaHRseSBsZXNzIG9idmlvdXMsIGJ1dCBwZXJoYXBzIGNsZWFyZXIgaW4gdGVybXMgb2YgbGF5ZXJpbmcuCgpJJiMzOTtsbCBrZWVwIGFuIGV5ZSBvdXQgZm9yIGhvdyBoYXJkd2FyZSByZXNvdXJjZXMgYXJlIGhhbmRlZCB0byB0aGlzLCB3aGF0IGxvY2tzIGFyZSBhY3F1aXJlZCBhbmQgcmVsZWFzZWQgYXJvdW5kIHRoaXMgcG9pbnQuIFdoYXQgYWJvdXQgZXJyb3IgaGFuZGxpbmcg4oCTIGhvdyBkb2VzIHRoZSByZWdpc3RyYXRpb24gZmFpbHVyZSBpbXBhY3QgdGhlIG92ZXJhbGwgbW9kdWxlIHN0YXJ0dXAgZmxvdz8gSSYjMzk7bSBhbnRpY2lwYXRpbmcgdGhhdCB1bnJlZ2lzdHJhdGlvbiB3aWxsIGJlIGVxdWFsbHkgY3J1Y2lhbDsgdGhlcmUgc2hvdWxkIGJlIGEgY29ycmVzcG9uZGluZyBgYXRoMTJrX21hY191bnJlZ2lzdGVyYCBmdW5jdGlvbiBjYWxsZWQgYXQgbW9kdWxlIGV4aXQgb3IgcHJvYmUgZmFpbHVyZSwgcmlnaHQ/IEFuZCBJIHdhbnQgdG8gY29tcGFyZSB0aG9zZSB0d28gY2FsbHMgYW5kIHNlZSB3aGF0LCBpZiBhbnksIGRlcGVuZGVuY2llcyBtYXkgZXhpc3QuIEkgYW0gYWxzbyBjb25zaWRlcmluZyBvdGhlciBzdWJzeXN0ZW1zIHN1Y2ggYXMgUEhZIGFuZCBXTUksIHRoYXQgbWF5IGluZmx1ZW5jZSB0aGUgcmVnaXN0cmF0aW9uIGFuZCB1bnJlZ2lzdHJhdGlvbiBwcm9jZXNzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxMDozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdGgxMmtfbWFjX3JlZ2lzdGVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYz0xMTU4PXN0YXRpYyBpbnQgYXRoMTJrX2NvcmVfaHdfZ3JvdXBfc3RhcnQoc3RydWN0IGF0aDEya19od19ncm91cCAqYWcpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmMtMTE4MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jOjExODI6XHRyZXQgPSBhdGgxMmtfbWFjX3JlZ2lzdGVyKGFnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jLTExODMtXHRpZiAoV0FSTl9PTihyZXQpKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmM9MTUzMTY9dm9pZCBhdGgxMmtfbWFjX21sb190ZWFyZG93bihzdHJ1Y3QgYXRoMTJrX2h3X2dyb3VwICphZylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jLTE1MzM3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYzoxNTMzODppbnQgYXRoMTJrX21hY19yZWdpc3RlcihzdHJ1Y3QgYXRoMTJrX2h3X2dyb3VwICphZylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtMTUzMzkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmg9MTU0PXZvaWQgYXRoMTJrX21hY191bnJlZ2lzdGVyKHN0cnVjdCBhdGgxMmtfaHdfZ3JvdXAgKmFnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmg6MTU1OmludCBhdGgxMmtfbWFjX3JlZ2lzdGVyKHN0cnVjdCBhdGgxMmtfaHdfZ3JvdXAgKmFnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmgtMTU2LWludCBhdGgxMmtfbWFjX2FsbG9jYXRlKHN0cnVjdCBhdGgxMmtfaHdfZ3JvdXAgKmFnKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTA6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODM4NAoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHRoZSBxdWVyeSwgcHJlc2VudGVkIGFzIGlmIGl0IHdlcmUgbXkgdGhvdWdodCBwcm9jZXNzOgoKKipEaXZpbmcgaW50byBgYXRoMTJrX2NvcmVfaHdfZ3JvdXBfc3RhcnRgIENhbGxlcnMqKgoKT2theSwgc28gdGhlIHByb21wdCBpcyBhc2tpbmcgbWUgdG8gdHJhY2UgdGhlIGNhbGxzIHRvIHRoZSBgYXRoMTJrX2NvcmVfaHdfZ3JvdXBfc3RhcnRgIGZ1bmN0aW9uLiBUaGF0IG1lYW5zIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgYmVpbmcgaW52b2tlZCB3aXRoaW4gdGhlIGBhdGgxMmtgIGRyaXZlci4gR2l2ZW4gdGhhdCB0aGlzIGlzIGEgaGFyZHdhcmUgZ3JvdXAtcmVsYXRlZCBmdW5jdGlvbiwgSSBpbW1lZGlhdGVseSBhc3N1bWUgaXQmIzM5O3MgZGVhbGluZyB3aXRoIHNvbWUgbGV2ZWwgb2YgY29uY3VycmVuY3kgb3IgdGFzayBncm91cGluZywgbGlrZWx5IHJlbGF0ZWQgdG8gdGhlIGV4ZWN1dGlvbiBvZiBjb21tYW5kcyBvbiB0aGUgaGFyZHdhcmUuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBlaXRoZXIgdXNlIHN0YXRpYyBhbmFseXNpcyB0byBzZWUgdGhlIGNvZGUgc3RydWN0dXJlIG9yIGR5bmFtaWMgYW5hbHlzaXMgdG8gc2VlIHdoZXJlIHRoZSBjYWxsIG9jY3VycyBpbiBleGVjdXRpb24uIEkgY291bGQgdXNlIHRvb2xzIGxpa2UgYGNzY29wZWAsIGBjdGFnc2AsIG9yIHBlcmhhcHMgZXZlbiBzb21ldGhpbmcgbGlrZSBgcGVyZmAgb3IgYSBrZXJuZWwgdHJhY2luZyB0b29sIGlmIEkgd2FudCB0aGUgZHluYW1pYyBiZWhhdmlvci4gSSYjMzk7bGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgY29udGV4dCB0cmlnZ2VycyBpdHMgZXhlY3V0aW9uLCB3aGF0IG90aGVyIGZ1bmN0aW9ucyBpdCBpbnRlcmFjdHMgd2l0aCwgYW5kIHdoYXQgaXRzIG92ZXJhbGwgcm9sZSBpbiB0aGUgbGFyZ2VyIGBhdGgxMmtgIGVjb3N5c3RlbSBpcy4gVGhpcyBpbnZlc3RpZ2F0aW9uIHdpbGwgcHJvYmFibHkgcHJvdmlkZSBjbHVlcyBhYm91dCB3aGF0IGFzcGVjdHMgb2YgdGhlIGhhcmR3YXJlIGFyZSBiZWluZyBhZmZlY3RlZCBieSBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTA6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoMTJrX2NvcmVfaHdfZ3JvdXBfc3RhcnQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jPTExMzI9c3RhdGljIGludCBhdGgxMmtfY29yZV9tbG9fc2V0dXAoc3RydWN0IGF0aDEya19od19ncm91cCAqYWcpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmMtMTE1Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jOjExNTg6c3RhdGljIGludCBhdGgxMmtfY29yZV9od19ncm91cF9zdGFydChzdHJ1Y3QgYXRoMTJrX2h3X2dyb3VwICphZylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jLTExNTkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jPTEyMzM9c3RhdGljIGlubGluZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmM6MTIzNDpib29sIGF0aDEya19jb3JlX2h3X2dyb3VwX3N0YXJ0X3JlYWR5KHN0cnVjdCBhdGgxMmtfaHdfZ3JvdXAgKmFnKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmMtMTIzNS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmM9MTMxND1pbnQgYXRoMTJrX2NvcmVfcW1pX2Zpcm13YXJlX3JlYWR5KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmMtMTM0Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jOjEzNDg6XHRpZiAoYXRoMTJrX2NvcmVfaHdfZ3JvdXBfc3RhcnRfcmVhZHkoYWcpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYzoxMzQ5Olx0XHRyZXQgPSBhdGgxMmtfY29yZV9od19ncm91cF9zdGFydChhZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYy0xMzUwLVx0XHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmM9MTY0Mj1zdGF0aWMgdm9pZCBhdGgxMmtfY29yZV9yZXN0YXJ0KHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYy0xNjY1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmM6MTY2NjpcdFx0aWYgKCFhdGgxMmtfY29yZV9od19ncm91cF9zdGFydF9yZWFkeShhZykpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jLTE2NjctXHRcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmFnLVx1MDAzZW11dGV4KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTA6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTI4OAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDExMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBhdGgxMmsgYW5kIFFNSSBGaXJtd2FyZSBSZWFkaW5lc3MqKgoKT2theSwgc28gYGF0aDEya19jb3JlX3FtaV9maXJtd2FyZV9yZWFkeWAgaGFzIGZpcmVkLCBtZWFuaW5nIHRoZSBRTUkgZmlybXdhcmUgaXMgZmluYWxseSB1cCBhbmQgcnVubmluZyBvbiB0aGUgUXVhbGNvbW0gTUhJLCBQQ0llLCBvciBBSEIgaGFyZHdhcmUuIEV4Y2VsbGVudCEgTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc3VwcG9ydGVkIGJ1cyBhcmNoaXRlY3R1cmVzIGZvciB0aGlzIG1vZHVsZS4gTGV0JiMzOTtzIHNlZS4uLiBsb29raW5nIGF0IHRoZSBgYXRoMTJrYCBkaXJlY3Rvcnkgc3RydWN0dXJlLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrYCwgcmV2ZWFscyBgcGNpLmNgIGFuZCBgYWhiLmNgLiBUaGF0IGdpdmVzIG1lIGEgZ29vZCBzdGFydGluZyBwb2ludC4gTm93LCBJJiMzOTttIGN1cmlvdXMgYWJvdXQgc29tZXRoaW5nIGVsc2UuIEhhcyBhbnlvbmUgYWRkZWQgVVNCIHN1cHBvcnQgZm9yIGF0aDEyaz8gTGV0IG1lIHNjYW4gdGhlIGNvbnRlbnRzIG9mIHRoYXQgYGF0aDEya2AgZGlyZWN0b3J5IHRvIG1ha2Ugc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnl0aGluZy4gSSYjMzk7bGwgY2hlY2sgdGhlIGRpcmVjdG9yeSBmaWxlcyB0byBzZWUgaWYgYW55dGhpbmcgaXMgdGhlcmUuIEkgYW0gY3VyaW91cyB0byBrbm93IGJlY2F1c2Ugb2YgcG90ZW50aWFsIHVzZSBjYXNlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTA6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5jb2Rlc2VhcmNoLWRpci1pbmRleDwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RGlyJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlcyYjMzQ7OiBbCiAgICAmIzM0O2FjcGkuYyYjMzQ7LAogICAgJiMzNDthY3BpLmgmIzM0OywKICAgICYjMzQ7YWhiLmMmIzM0OywKICAgICYjMzQ7YWhiLmgmIzM0OywKICAgICYjMzQ7Y2UuYyYjMzQ7LAogICAgJiMzNDtjZS5oJiMzNDssCiAgICAmIzM0O2Ntbl9kZWZzLmgmIzM0OywKICAgICYjMzQ7Y29yZS5jJiMzNDssCiAgICAmIzM0O2NvcmUuaCYjMzQ7LAogICAgJiMzNDtjb3JlZHVtcC5jJiMzNDssCiAgICAmIzM0O2NvcmVkdW1wLmgmIzM0OywKICAgICYjMzQ7ZGJyaW5nLmMmIzM0OywKICAgICYjMzQ7ZGJyaW5nLmgmIzM0OywKICAgICYjMzQ7ZGVidWcuYyYjMzQ7LAogICAgJiMzNDtkZWJ1Zy5oJiMzNDssCiAgICAmIzM0O2RlYnVnZnMuYyYjMzQ7LAogICAgJiMzNDtkZWJ1Z2ZzLmgmIzM0OywKICAgICYjMzQ7ZGVidWdmc19odHRfc3RhdHMuYyYjMzQ7LAogICAgJiMzNDtkZWJ1Z2ZzX2h0dF9zdGF0cy5oJiMzNDssCiAgICAmIzM0O2RlYnVnZnNfc3RhLmMmIzM0OywKICAgICYjMzQ7ZGVidWdmc19zdGEuaCYjMzQ7LAogICAgJiMzNDtkcC5jJiMzNDssCiAgICAmIzM0O2RwLmgmIzM0OywKICAgICYjMzQ7ZHBfY21uLmgmIzM0OywKICAgICYjMzQ7ZHBfaHR0LmMmIzM0OywKICAgICYjMzQ7ZHBfaHR0LmgmIzM0OywKICAgICYjMzQ7ZHBfbW9uLmMmIzM0OywKICAgICYjMzQ7ZHBfbW9uLmgmIzM0OywKICAgICYjMzQ7ZHBfcGVlci5jJiMzNDssCiAgICAmIzM0O2RwX3BlZXIuaCYjMzQ7LAogICAgJiMzNDtkcF9yeC5jJiMzNDssCiAgICAmIzM0O2RwX3J4LmgmIzM0OywKICAgICYjMzQ7ZHBfdHguYyYjMzQ7LAogICAgJiMzNDtkcF90eC5oJiMzNDssCiAgICAmIzM0O2Z3LmMmIzM0OywKICAgICYjMzQ7ZncuaCYjMzQ7LAogICAgJiMzNDtoYWwuYyYjMzQ7LAogICAgJiMzNDtoYWwuaCYjMzQ7LAogICAgJiMzNDtoaWYuaCYjMzQ7LAogICAgJiMzNDtodGMuYyYjMzQ7LAogICAgJiMzNDtodGMuaCYjMzQ7LAogICAgJiMzNDtody5oJiMzNDssCiAgICAmIzM0O21hYy5jJiMzNDssCiAgICAmIzM0O21hYy5oJiMzNDssCiAgICAmIzM0O21oaS5jJiMzNDssCiAgICAmIzM0O21oaS5oJiMzNDssCiAgICAmIzM0O3AycC5jJiMzNDssCiAgICAmIzM0O3AycC5oJiMzNDssCiAgICAmIzM0O3BjaS5jJiMzNDssCiAgICAmIzM0O3BjaS5oJiMzNDssCiAgICAmIzM0O3BlZXIuYyYjMzQ7LAogICAgJiMzNDtwZWVyLmgmIzM0OywKICAgICYjMzQ7cW1pLmMmIzM0OywKICAgICYjMzQ7cW1pLmgmIzM0OywKICAgICYjMzQ7cmVnLmMmIzM0OywKICAgICYjMzQ7cmVnLmgmIzM0OywKICAgICYjMzQ7dGVzdG1vZGUuYyYjMzQ7LAogICAgJiMzNDt0ZXN0bW9kZS5oJiMzNDssCiAgICAmIzM0O3RoZXJtYWwuYyYjMzQ7LAogICAgJiMzNDt0aGVybWFsLmgmIzM0OywKICAgICYjMzQ7dHJhY2UuYyYjMzQ7LAogICAgJiMzNDt0cmFjZS5oJiMzNDssCiAgICAmIzM0O3dtaS5jJiMzNDssCiAgICAmIzM0O3dtaS5oJiMzNDssCiAgICAmIzM0O3dvdy5jJiMzNDssCiAgICAmIzM0O3dvdy5oJiMzNDsKICBdLAogICYjMzQ7U3ViZGlycyYjMzQ7OiBbCiAgICAmIzM0O3dpZmk3JiMzNDsKICBdCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTA6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAxMTcKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA2MjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiBXb3J0aEZ1enppbmcgZm9yIGF0aDEyayoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZGVjaWRlIGlmIHRoaXMgYGF0aDEya2AgZHJpdmVyIGlzIHdvcnRoIGZ1enppbmcuIFRoZSBpbnN0cnVjdGlvbnMgYXJlIHByZXR0eSBjbGVhciBhYm91dCB0aGUgbmVnYXRpdmUgYW5kIHBvc2l0aXZlIGNyaXRlcmlhLCBzbyBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duIHN5c3RlbWF0aWNhbGx5LiBJdCBsb29rcyBsaWtlIHRoZSBvbmx5IGZpbGVzIHRvIGZvY3VzIG9uIGFyZSBgcGNpLmNgIGFuZCBgYWhiLmNgIGluIHRoZSBhdGgxMmsgZHJpdmVyLgoKRmlyc3QsIEkgbmVlZCB0byBjaGVjayB0aGUgJiMzNDtuZWdhdGl2ZSBjcml0ZXJpYSYjMzQ7IGluIFNlY3Rpb24gMi4gVGhlIGtleSBoZXJlIGlzICpzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUqIGFuZCAqdW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzKi4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGxvb2tpbmcgYXQgd2hldGhlciB0aGUgY2hhbmdlcyBhcmUgbGltaXRlZCB0bzoKCiogICBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcy9TbWFydE5JQ3MvR1BVIGRyaXZlcnMgKnJlcXVpcmluZyBwaHlzaWNhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gUUVNVSouCiogICBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIHRoYXQgb25seSBydW4gZHVyaW5nIGhvdC11bnBsdWcgb3IgbWFudWFsIHVuYmluZGluZy4KKiAgIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGRpZmZlcmVudCBhcmNoaXRlY3R1cmVzLgoKTm93LCBgYXRoMTJrYCBpcyBhIHZlbmRvci1zcGVjaWZpYyB3aXJlbGVzcyBkcml2ZXIgZm9yIFF1YWxjb21tJiMzOTtzIDgwMi4xMWJlIGhhcmR3YXJlLiBJdCBleHBsaWNpdGx5ICpyZXF1aXJlcyogYSBwaHlzaWNhbCBQQ0llL0FIQiBBU0lDLCBzcGVjaWZpY2FsbHkgdGhlIFdDTjc4NTAvUUNOOTI3NC9JUFE1MzMyIGNoaXBzLiBUaGlzIGlzIG5vdCBhY2Nlc3NpYmxlIHRocm91Z2ggdmlydHVhbCBidXNlcyBzdWNoIGFzIHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIG9yIGFueSBvZiB0aG9zZSBlbXVsYXRlZCBpbnRlcmZhY2VzLiBXaXRob3V0IHRoYXQgcGh5c2ljYWwgaGFyZHdhcmUgYW5kIHRoZSBhc3NvY2lhdGVkIGZpcm13YXJlLCBpdCYjMzk7cyBub3QgZ29pbmcgdG8gcHJvYmUsIHJlZ2lzdGVyIHdpdGggbWFjODAyMTEsIG9yIGV4ZWN1dGUgYW55IG9mIHRoZSBgYXRoMTJrYCBjb2RlLCBjZXJ0YWlubHkgbm90IGBhdGgxMmtfbWFjX29wX3N0YV9zdGF0ZWAuIFRoYXQgY2VydGFpbmx5IG1lZXRzIHRoZSBmaXJzdCBuZWdhdGl2ZSBjcml0ZXJpYTogU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlLgoKSSYjMzk7bGwgcXVpY2tseSBjaGVjayBmb3IgYW55IHZpcnR1YWwgaGFyZHdhcmUgb3Igc2ltdWxhdGlvbiBmb3IgYXRoMTJrLCBqdXN0IHRvIGJlIHN1cmUuIE1hYzgwMjExIGRvZXMgaGF2ZSBgbWFjODAyMTFfaHdzaW1gLCBidXQgdGhhdCBpcyBjb21wbGV0ZWx5IHNlcGFyYXRlIGFuZCBkb2VzbiYjMzk7dCBydW4gYW55IG9mIHRoZSBgYXRoMTJrYCBjb2RlLiBgYXRoMTJrYCBpcyBzcGVjaWZpY2FsbHkgdGllZCB0byBQQ0llIGRldmljZSBJRHMgb3IgQUhCIHBsYXRmb3JtIGRldmljZXMuCgpUaGVyZWZvcmUsIGJlY2F1c2UgdGhpcyBkcml2ZXIgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgcGh5c2ljYWwgZGV2aWNlIGRyaXZlciB0aGF0IGlzIGRlcGVuZGVudCBvbiB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUsIGl0IGZpdHMgc3F1YXJlbHkgd2l0aGluIHRoZSAmIzM0O3N0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSYjMzQ7IG5lZ2F0aXZlIGNyaXRlcmlhLiBCYXNlZCBvbiB0aGUgbmVnYXRpdmUgY3JpdGVyaWEgZnJvbSBTZWN0aW9uIDIgb2YgdGhlIGluc3RydWN0aW9ucywgSSYjMzk7ZCBzYXkgdGhpcyBpcyAqKm5vdCoqIFdvcnRoRnV6emluZy4gSSYjMzk7bGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhlIGBwY2kuY2AgZmlsZSB0byBlbnN1cmUgdGhhdCBteSBhc3N1bXB0aW9uIGlzIGNvcnJlY3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDEwOjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O01PRFVMRV9ERVZJQ0VfVEFCTEUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvYWhiLmM9NDg9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgYXRoMTJrX3dpZmk3X2FoYl9vZl9tYXRjaFtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvYWhiLmMtNTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2FoYi5jOjU4Ok1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGF0aDEya193aWZpN19haGJfb2ZfbWF0Y2gpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9haGIuYy01OS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L3BjaS5jPTM0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBhdGgxMmtfd2lmaTdfcGNpX2lkX3RhYmxlW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9wY2kuYy00MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvcGNpLmM6NDE6TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIGF0aDEya193aWZpN19wY2lfaWRfdGFibGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9wY2kuYy00Mi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTA6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE2MjQKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiA4NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFeGFtaW5pbmcgdGhlIERyaXZlciYjMzk7cyBEZXZpY2UgVGFibGUqKgoKT2theSwgc28gSSBzZWUgdGhlc2UgdHdvIGRldmljZSB0YWJsZSBkZWNsYXJhdGlvbnM6IGBNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgYXRoMTJrX3dpZmk3X3BjaV9pZF90YWJsZSk7YCBhbmQgYE1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGF0aDEya193aWZpN19haGJfb2ZfbWF0Y2gpO2AuIFJpZ2h0LCB0aGlzIHRlbGxzIG1lIHRoZSBkcml2ZXIgaXMgZGVzaWduZWQgdG8gd29yayB3aXRoIGJvdGggUENJIGFuZCBPbi1DaGlwIChBSEIpIGRldmljZXMuIE15IGltbWVkaWF0ZSBpbnRlcmVzdCBpcyBpbiB0aGUgUENJIGRldmljZXMsIHNwZWNpZmljYWxseSBzaW5jZSB0aGUgY29kZSBtZW50aW9ucyBRdWFsY29tbS4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGRyaWxsIGRvd24gaW50byB3aGF0IFBDSSBJRHMgYXJlIGFjdHVhbGx5IGxpc3RlZCBpbiBgYXRoMTJrX3dpZmk3X3BjaV9pZF90YWJsZWAuIEkgbmVlZCB0byBzZWUgd2hpY2ggc3BlY2lmaWMgdmVuZG9yIGFuZCBkZXZpY2UgSURzIHRoaXMgZHJpdmVyIGNsYWltcyB0byBzdXBwb3J0LCB0byBlbnN1cmUgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBoYXJkd2FyZSBJJiMzOTttIHRhcmdldGluZyBvciBleGFtaW5pbmcuIExldCYjMzk7cyBzZWUuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTA6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L3BjaS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAzMDpcdFxuICAzMTpcdCNkZWZpbmUgV0lORE9XX1JFR19BRERSRVNTXHRcdDB4MzEwY1xuICAzMjpcdCNkZWZpbmUgV0lORE9XX1JFR19BRERSRVNTX1FDQzIwNzJcdDB4MzI3OFxuICAzMzpcdFxuICAzNDpcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBhdGgxMmtfd2lmaTdfcGNpX2lkX3RhYmxlW10gPSB7XG4gIDM1Olx0XHR7IFBDSV9WREVWSUNFKFFDT00sIFFDTjkyNzRfREVWSUNFX0lEKSB9LFxuICAzNjpcdFx0eyBQQ0lfVkRFVklDRShRQ09NLCBXQ043ODUwX0RFVklDRV9JRCkgfSxcbiAgMzc6XHRcdHsgUENJX1ZERVZJQ0UoUUNPTSwgUUNDMjA3Ml9ERVZJQ0VfSUQpIH0sXG4gIDM4Olx0XHR7fVxuICAzOTpcdH07XG4gIDQwOlx0XG4gIDQxOlx0TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIGF0aDEya193aWZpN19wY2lfaWRfdGFibGUpO1xuICA0MjpcdFxuICA0MzpcdC8qIFRPRE86IHJldmlzaXQgSVJRIG1hcHBpbmcgZm9yIG5ldyBTUk5HJiMzOTtzICovXG4gIDQ0Olx0c3RhdGljIGNvbnN0IHN0cnVjdCBhdGgxMmtfbXNpX2NvbmZpZyBhdGgxMmtfd2lmaTdfbXNpX2NvbmZpZ1tdID0ge1xuICA0NTpcdFx0e1xuICA0NjpcdFx0XHQudG90YWxfdmVjdG9ycyA9IDE2LFxuICA0NzpcdFx0XHQudG90YWxfdXNlcnMgPSAzLFxuICA0ODpcdFx0XHQudXNlcnMgPSAoc3RydWN0IGF0aDEya19tc2lfdXNlcltdKSB7XG4gIDQ5Olx0XHRcdFx0eyAubmFtZSA9IFwmIzM0O01ISVwmIzM0OywgLm51bV92ZWN0b3JzID0gMywgLmJhc2VfdmVjdG9yID0gMCB9LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxMDozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjMxOAoJCQkJCQkJb3V0cHV0OiAxNDQKCQkJCQkJCXRob3VnaHRzOiAyOTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudDogVW5yZWFjaGFibGUgQ29kZSBpbiBhIFZpcnR1YWxpemVkIEVudmlyb25tZW50KioKCk9rYXksIHNvIHRoZSBjb2RlIEkmIzM5O20gbG9va2luZyBhdCBtb2RpZmllcyBgYXRoMTJrX21hY19vcF9zdGFfc3RhdGUoKWAgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmNgLiBJJiMzOTt2ZSBxdWlja2x5IGNvbmZpcm1lZCB0aGF0IHRoZSBgYXRoMTJrYCBkcml2ZXIgaXMsIGFzIGV4cGVjdGVkLCBkZXNpZ25lZCBmb3IgUXVhbGNvbW0gV2ktRmkgNyBjaGlwc2V0cy4gQ3J1Y2lhbGx5LCB0aGVzZSBjaGlwc2V0cyByZWx5IG9uIGVpdGhlciBQQ0llIG9yIEFIQiBidXMgY29ubmVjdGlvbnMsIHNwZWNpZmljYWxseSBkZXZpY2VzIGxpa2UgdGhlIFFDTjkyNzQsIFdDTjc4NTAsIG9yIFFDQzIwNzIuIEFuZCBoZXJlJiMzOTtzIHRoZSBraWNrZXI6IEkga25vdyBmcm9tIGV4cGVyaWVuY2UgdGhhdCB0aGVzZSBwYXJ0aWN1bGFyIGRldmljZXMsIG9yIGV2ZW4gdGhlIHVuZGVybHlpbmcgQUhCIG5vZGVzLCBhcmUgdXR0ZXJseSB1bmF2YWlsYWJsZSBhbmQgY2Fubm90IGJlIG1lYW5pbmdmdWxseSBwcm9iZWQgd2l0aGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIHN1Y2ggYXMgUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgKEdDRSkuIFRoZXkgKnJlcXVpcmUqIHBoeXNpY2FsIGhhcmR3YXJlLgoKVGhlcmVmb3JlLCB0aGlzIG1vZGlmaWNhdGlvbiBpcywgZm9yIGFsbCBpbnRlbnRzIGFuZCBwdXJwb3Nlcywgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGluIGFueSBmdXp6aW5nIGNvbnRleHQgSSBjYW4gcmVhbGlzdGljYWxseSBkZXBsb3kuIFRoZSBjb2RlIHNwZWNpZmljYWxseSBtZW50aW9ucyB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsIGlvbmljLCBhbWRncHUpIGFsbCBvZiB3aGljaCByZXF1aXJlIHRob3NlIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcy4gVGhlIGZhY3QgdGhhdCB0aGUgdGFyZ2V0IGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiB0aGVzZSBzdGFuZGFyZCBlbnZpcm9ubWVudHMgaXMgYSBjcml0aWNhbCBsaW1pdGF0aW9uIGZvciBmdXp6aW5nLgoKTXkgYW5hbHlzaXMgeWllbGRzIHRoaXMgY29uY2x1c2lvbiBmb3IgdGhlIHRvb2w6CgpgV29ydGhGdXp6aW5nYDogZmFsc2UKYEZvY3VzU3ltYm9sc2A6IFtdCmBFbmFibGVDb25maWdzYDogW10KYFJlYXNvbmluZ2A6IFRoZSBwYXRjaCBtb2RpZmllcyBgYXRoMTJrX21hY19vcF9zdGFfc3RhdGUoKWAgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmNgLiBUaGUgYGF0aDEya2AgZHJpdmVyIGlzIGZvciBRdWFsY29tbSBXaS1GaSA3IGNoaXBzZXRzIGNvbm5lY3RlZCB2aWEgUENJZSBvciBBSEIgYnVzIChlLmcuLCBXQ043ODUwLCBRQ045Mjc0KS4gSXQgcmVxdWlyZXMgdmVuZG9yLXNwZWNpZmljIHBoeXNpY2FsIEFTSUMvUENJZSBoYXJkd2FyZSBhbmQgcHJvcHJpZXRhcnkgZmlybXdhcmUgdGhhdCBjYW5ub3QgYmUgZW11bGF0ZWQgb3IgcHJvYmVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxMDozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGF0aDEya19tYWNfb3Bfc3RhX3N0YXRlKCkgaW4gZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYywgd2hpY2ggYmVsb25ncyB0byB0aGUgUXVhbGNvbW0gV2ktRmkgNyAoYXRoMTJrKSBkcml2ZXIuIFRoaXMgZHJpdmVyIHRhcmdldHMgcGh5c2ljYWwgUXVhbGNvbW0gUENJZS9BSEIgY2hpcHNldHMgKGUuZy4sIFdDTjc4NTAsIFFDTjkyNzQpIHJlcXVpcmluZyBzcGVjaWZpYyBwaHlzaWNhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKS4gQ29uc2VxdWVudGx5LCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBhdGgxMmtfbWFjX29wX3N0YV9zdGF0ZSgpIGluIGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMsIHdoaWNoIGJlbG9uZ3MgdG8gdGhlIFF1YWxjb21tIFdpLUZpIDcgKGF0aDEyaykgZHJpdmVyLiBUaGlzIGRyaXZlciB0YXJnZXRzIHBoeXNpY2FsIFF1YWxjb21tIFBDSWUvQUhCIGNoaXBzZXRzIChlLmcuLCBXQ043ODUwLCBRQ045Mjc0KSByZXF1aXJpbmcgc3BlY2lmaWMgcGh5c2ljYWwgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkuIENvbnNlcXVlbnRseSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTA6Mzg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDEwOjM3OjA2LjU5MDg5NDkwM1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk3NzcwMDc3Mzg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYXRoMTJrX21hY19vcF9zdGFfc3RhdGUoKSBpbiBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jLCB3aGljaCBiZWxvbmdzIHRvIHRoZSBRdWFsY29tbSBXaS1GaSA3IChhdGgxMmspIGRyaXZlci4gVGhpcyBkcml2ZXIgdGFyZ2V0cyBwaHlzaWNhbCBRdWFsY29tbSBQQ0llL0FIQiBjaGlwc2V0cyAoZS5nLiwgV0NONzg1MCwgUUNOOTI3NCkgcmVxdWlyaW5nIHNwZWNpZmljIHBoeXNpY2FsIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLiBDb25zZXF1ZW50bHksIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDEwOjM3OjA2LjU5MDkwMTA5M1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ5MjA3ODc3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGJiYzJlNmJhNjJkMGRhODIwNDgzYmFhMTIwYThmY2YzMDUwNTljZDJcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBTZXAgMTUgMTA6Mzc6MDQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmNcXG5pbmRleCBkNDExNmJhMGRhMDg5Li41Nzg2MTAwM2MxNWIwIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jXFxuQEAgLTc4NDUsNyArNzg0NSw3IEBAIGludCBhdGgxMmtfbWFjX29wX3N0YV9zdGF0ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4gXFx0XFx0XFx0XFx0YXRoMTJrX2h3X3dhcm4oYWgsIFxcXCJmYWlsZWQgdG8gdmVyaWZ5IGFzc29jIGxpbmsgc2V0dGluZyB3aXRoIGxpbmsgaWQgJXVcXFxcblxcXCIsXFxuIFxcdFxcdFxcdFxcdFxcdCAgICAgICBsaW5rX2lkKTtcXG4gXFx0XFx0XFx0XFx0cmV0ID0gLUVJTlZBTDtcXG4tXFx0XFx0XFx0XFx0Z290byBleGl0O1xcbitcXHRcXHRcXHRcXHRnb3RvIGZyZWVfdW5hc3NpZ25fbGluaztcXG4gXFx0XFx0XFx0fVxcbiBcXG4gXFx0XFx0XFx0YXJzdGEtXFx1MDAzZWlzX2Fzc29jX2xpbmsgPSB0cnVlO1xcbkBAIC03OTAzLDcgKzc5MDMsNyBAQCBpbnQgYXRoMTJrX21hY19vcF9zdGFfc3RhdGUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuIFxcbiBcXHRcXHRcXHRpZiAob2xkX3N0YXRlID09IElFRUU4MDIxMV9TVEFfTk9URVhJU1QgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0XFx0ICAgIG5ld19zdGF0ZSA9PSBJRUVFODAyMTFfU1RBX05PTkUpXFxuLVxcdFxcdFxcdFxcdGdvdG8gcGVlcl9kZWxldGU7XFxuK1xcdFxcdFxcdFxcdGdvdG8gZnJlZV91bmFzc2lnbl9saW5rO1xcbiBcXHRcXHRcXHRlbHNlXFxuIFxcdFxcdFxcdFxcdGdvdG8gZXhpdDtcXG4gXFx0XFx0fVxcbkBAIC03OTQzLDYgKzc5NDMsOCBAQCBpbnQgYXRoMTJrX21hY19vcF9zdGFfc3RhdGUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuIFxcdHJldCA9IDA7XFxuIFxcdGdvdG8gZXhpdDtcXG4gXFxuK2ZyZWVfdW5hc3NpZ25fbGluazpcXG4rXFx0YXRoMTJrX21hY19mcmVlX3VuYXNzaWduX2xpbmtfc3RhKGFoLCBhaHN0YSwgbGlua19pZCk7XFxuIHBlZXJfZGVsZXRlOlxcbiBcXHRhdGgxMmtfZHBfcGVlcl9kZWxldGUoXFx1MDAyNmFoLVxcdTAwM2VkcF9odywgc3RhLVxcdTAwM2VhZGRyLCBzdGEpO1xcbiBtbF9wZWVyX2lkX2NsZWFyOlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxMDozNzowOC4wODM3MjI0MjVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjk2Mjc3MjMwODk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBhdGgxMmtfbWFjX29wX3N0YV9zdGF0ZSgpIGluIGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMsIHdoaWNoIGJlbG9uZ3MgdG8gdGhlIFF1YWxjb21tIFdpLUZpIDcgKGF0aDEyaykgZHJpdmVyLiBUaGlzIGRyaXZlciB0YXJnZXRzIHBoeXNpY2FsIFF1YWxjb21tIFBDSWUvQUhCIGNoaXBzZXRzIChlLmcuLCBXQ043ODUwLCBRQ045Mjc0KSByZXF1aXJpbmcgc3BlY2lmaWMgcGh5c2ljYWwgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkuIENvbnNlcXVlbnRseSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBiYmMyZTZiYTYyZDBkYTgyMDQ4M2JhYTEyMGE4ZmNmMzA1MDU5Y2QyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBTZXAgMTUgMTA6Mzc6MDQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuY1xuaW5kZXggZDQxMTZiYTBkYTA4OS4uNTc4NjEwMDNjMTViMCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmNcbkBAIC03ODQ1LDcgKzc4NDUsNyBAQCBpbnQgYXRoMTJrX21hY19vcF9zdGFfc3RhdGUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4gXHRcdFx0XHRhdGgxMmtfaHdfd2FybihhaCwgXCJmYWlsZWQgdG8gdmVyaWZ5IGFzc29jIGxpbmsgc2V0dGluZyB3aXRoIGxpbmsgaWQgJXVcXG5cIixcbiBcdFx0XHRcdFx0ICAgICAgIGxpbmtfaWQpO1xuIFx0XHRcdFx0cmV0ID0gLUVJTlZBTDtcbi1cdFx0XHRcdGdvdG8gZXhpdDtcbitcdFx0XHRcdGdvdG8gZnJlZV91bmFzc2lnbl9saW5rO1xuIFx0XHRcdH1cbiBcbiBcdFx0XHRhcnN0YS1cdTAwM2Vpc19hc3NvY19saW5rID0gdHJ1ZTtcbkBAIC03OTAzLDcgKzc5MDMsNyBAQCBpbnQgYXRoMTJrX21hY19vcF9zdGFfc3RhdGUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4gXG4gXHRcdFx0aWYgKG9sZF9zdGF0ZSA9PSBJRUVFODAyMTFfU1RBX05PVEVYSVNUIFx1MDAyNlx1MDAyNlxuIFx0XHRcdCAgICBuZXdfc3RhdGUgPT0gSUVFRTgwMjExX1NUQV9OT05FKVxuLVx0XHRcdFx0Z290byBwZWVyX2RlbGV0ZTtcbitcdFx0XHRcdGdvdG8gZnJlZV91bmFzc2lnbl9saW5rO1xuIFx0XHRcdGVsc2VcbiBcdFx0XHRcdGdvdG8gZXhpdDtcbiBcdFx0fVxuQEAgLTc5NDMsNiArNzk0Myw4IEBAIGludCBhdGgxMmtfbWFjX29wX3N0YV9zdGF0ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbiBcdHJldCA9IDA7XG4gXHRnb3RvIGV4aXQ7XG4gXG4rZnJlZV91bmFzc2lnbl9saW5rOlxuK1x0YXRoMTJrX21hY19mcmVlX3VuYXNzaWduX2xpbmtfc3RhKGFoLCBhaHN0YSwgbGlua19pZCk7XG4gcGVlcl9kZWxldGU6XG4gXHRhdGgxMmtfZHBfcGVlcl9kZWxldGUoXHUwMDI2YWgtXHUwMDNlZHBfaHcsIHN0YS1cdTAwM2VhZGRyLCBzdGEpO1xuIG1sX3BlZXJfaWRfY2xlYXI6XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxMDozNzowOC4wODM3MjQyOTVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjo0ODk4OTA0MzQzNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoKipcblxuT2theSwgc28gdGhlIHBhdGNoIGlzIHRvdWNoaW5nIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jYC4gIE15IGZpcnN0IG1vdmUgaXMgdG8gZGl2ZSByaWdodCBpbiBhbmQgZGlzc2VjdCB0aGUgZGlmZi4gIEl0IHNlZW1zIHRvIGJlIG1vZGlmeWluZyBgYXRoMTJrX21hY19vcF9zdGFfc3RhdGVgIHdpdGhpbiB0aGUgYGF0aDEya2AgZHJpdmVyLiAgTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiV2hhdCdzIHRoZSBjb250ZXh0IGhlcmU/IFdoYXQgaXMgYGF0aDEya2AgYWN0dWFsbHkgcmVzcG9uc2libGUgZm9yP1wiXG5cblJpZ2h0LCB0aGF0J3MgdGhlIFF1YWxjb21tIFdpLUZpIDcgKDgwMi4xMWJlKSBkcml2ZXIuICBOb3csIHRoZSBjcml0aWNhbCBxdWVzdGlvbiwgZ2l2ZW4gbXkgbmVlZCBmb3IgYSBzdWl0YWJsZSBlbnZpcm9ubWVudCwgaXM6IENhbiBJIGV2ZW4gKnJlYWNoKiB0aGlzIGluIGEgc3RhbmRhcmQgdmlydHVhbGl6ZWQgc2V0dXAgbGlrZSBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZT8gIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBjYW4gZXZlbiB0ZXN0IGl0LlxuXG5Ib2xkIG9uLCBsZXQgbWUgcXVpY2tseSByZS1yZWFkIHRoZSBlbnZpcm9ubWVudCBzZXR1cCBpbnN0cnVjdGlvbnMuIE9oIHllcywgc2VjdGlvbiAyIGFkZHJlc3NlcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUuIExldCBtZSBxdWlja2x5IHJlZnJlc2ggd2hhdCB0aGF0IGVudGFpbHM6IFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgR1BVIGRyaXZlcnMgKG1seHN3LCBwZHNfY29yZSwgcWVkLCBpb25pYywgYW1kZ3B1KSB0aGF0IG5lZWQgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzLiBTbyB0aGF0J3MgdGhlIGh1cmRsZSBJJ20gdHJ5aW5nIHRvIG92ZXJjb21lLlxuXG5TbywgZG9lcyBgYXRoMTJrYCBmYWxsIGludG8gdGhhdCBjYXRlZ29yeT8gRG9lcyBpdCAqcmVxdWlyZSogcGh5c2ljYWwgaGFyZHdhcmUsIGJlIGl0IFBDSWUgb3IgcGxhdGZvcm0tc3BlY2lmaWM/IFRoaXMgaXMgY3J1Y2lhbC4gSSBuZWVkIHRvIGtub3cgaWYgaXQgY2FuIGJlIGVtdWxhdGVkIG9yIHNpbXVsYXRlZCBhdCBhbGwsIG9yIGlmIGl0J3Mgc3RyaWN0bHkgdGllZCB0byBRdWFsY29tbSBoYXJkd2FyZS5cblxuT2theSwgbGV0J3MgZXhwbG9yZSB0aGF0IGRyaXZlciBkaXJlY3RvcnkuICBObywgYGF0aDEya2AgZG9lc24ndCBzdXBwb3J0IHRoZSBtYWM4MDIxMV9od3NpbSBmcmFtZXdvcmsuICBJdCdzIGEgdmVuZG9yIGRyaXZlciwgdGFyZ2V0ZWQgYXQgUXVhbGNvbW0gc2lsaWNvbiwgbGlrZSBRQ045Mjc0LCBXQ043ODUwLCBJUFE1MzMyLCBldGMuXG5cbkNhbiBJIGdldCBhcm91bmQgdGhpcyB3aXRoIFVTQiwgaXMgaXQgYXZhaWxhYmxlIHZpYSBVU0I/IE5vLCB0aGF0J3Mgbm90IHRoZSBjYXNlIGhlcmUsIHRoYXQncyBQQ0kgb3IgcGxhdGZvcm0uXG5cblNvIG15IG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBLY29uZmlnIGZpbGUgZm9yIGBhdGgxMmtgIHRvIHNlZSB3aGF0IG9wdGlvbnMgbWlnaHQgc2hlZCBzb21lIGxpZ2h0IG9uIHRoZSBkZXBlbmRlbmNpZXMgYW5kIHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZS4gSSBuZWVkIHRvIHZlcmlmeSB3aGF0IG9wdGlvbnMgZXhpc3QgZm9yIGl0LCBhbmQgaG93IGl0IGlzIGVuYWJsZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxNTUsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNzUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxMDozNzo1Ny4wNzI3NzA2MDJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDk4MjU5NzIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEFUSDEyS1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzoyOmNvbmZpZyBBVEgxMktcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiUXVhbGNvbW0gV2ktRmkgNyBzdXBwb3J0IChhdGgxMmspXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzoxNzpjb25maWcgQVRIMTJLX0FIQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0xOC1cXHRib29sIFxcXCJRdWFsY29tbSBhdGgxMmsgQUhCIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjI1OmNvbmZpZyBBVEgxMktfREVCVUdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMjYtXFx0Ym9vbCBcXFwiYXRoMTJrIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0zNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6MzU6Y29uZmlnIEFUSDEyS19ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTM2LVxcdGJvb2wgXFxcIlF1YWxjb21tIGF0aDEyayBkZWJ1Z2ZzIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjQ0OmNvbmZpZyBBVEgxMktfVFJBQ0lOR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy00NS1cXHRib29sIFxcXCJhdGgxMmsgdHJhY2luZyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTUyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzo1Mzpjb25maWcgQVRIMTJLX0NPUkVEVU1QXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTU0LVxcdGJvb2wgXFxcImF0aDEyayBjb3JlZHVtcFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTA6Mzc6NTcuMTIyNjAxNzA1WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MjA5OTgzOTMwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqRXhhbWluaW5nIHRoZSBBdGhlcm9zIFdpcmVsZXNzIERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIGRpdmUgaW50byB0aGUgY29uZmlndXJhdGlvbiBmb3IgdGhlIGF0aDEyayB3aXJlbGVzcyBkcml2ZXIsIHNwZWNpZmljYWxseSBsb29raW5nIGF0IHRoZSBgS2NvbmZpZ2AgZmlsZS4gTXkgaW1tZWRpYXRlIGdvYWwgaXMgdG8gdW5kZXJzdGFuZCB0aGUgYnVpbGQgb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzIGZvciB0aGlzIHBhcnRpY3VsYXIgZHJpdmVyLiBJIG5lZWQgdG8gZ2V0IGEgY29tcHJlaGVuc2l2ZSB2aWV3IG9mIHdoYXQgZmVhdHVyZXMgYXJlIGNvbmZpZ3VyYWJsZSBhbmQgaG93IHRoZXkncmUgZW5hYmxlZCBvciBkaXNhYmxlZCBkdXJpbmcgdGhlIGtlcm5lbCBidWlsZCBwcm9jZXNzLiBUaGlzIGZpbGUgaXMgdGhlIGtleSB0byB0aGF0LiBJJ20gYXNzdW1pbmcgaXQgZGVmaW5lcyBhbGwgdGhlIHJlbGV2YW50IHBhcmFtZXRlcnMsIHRoZWlyIGRlZmF1bHQgc2V0dGluZ3MsIGFuZCBhbnkgZGVwZW5kZW5jaWVzIG9uIG90aGVyIGtlcm5lbCBjb21wb25lbnRzLiBJJ2xsIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIHZhcmlvdXMgZmVhdHVyZXMsIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIHRoZXkncmUgYWN0aXZhdGVkLCBhbmQgYW55IGludGVyYWN0aW9ucyB3aXRoIGhhcmR3YXJlIG9yIG90aGVyIHNvZnR3YXJlIG1vZHVsZXMuIFRoaXMgY291bGQgYmUgYW55dGhpbmcgZnJvbSByZWd1bGF0b3J5IGRvbWFpbiBzZXR0aW5ncyB0byBzcGVjaWZpYyBoYXJkd2FyZSBzdXBwb3J0LiBVbmRlcnN0YW5kaW5nIHRoaXMgY29uZmlndXJhdGlvbiBpcyB2aXRhbCBmb3IgYW55IHRyb3VibGVzaG9vdGluZyBvciBjdXN0b20gbW9kaWZpY2F0aW9ucyBJIG1pZ2h0IG5lZWQgdG8gdW5kZXJ0YWtlIGxhdGVyIG9uLiBMZXQncyBzZWUgd2hhdCB3ZSBjYW4gZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDU1NywiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDEwOjM3OjU5LjIyMjQ0NDAyN1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcxMjMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA2MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxcbiAgIDI6XFx0Y29uZmlnIEFUSDEyS1xcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIlF1YWxjb21tIFdpLUZpIDcgc3VwcG9ydCAoYXRoMTJrKVxcXCJcXG4gICA0OlxcdFxcdGRlcGVuZHMgb24gTUFDODAyMTEgXFx1MDAyNlxcdTAwMjYgSEFTX0RNQSBcXHUwMDI2XFx1MDAyNiBQQ0lcXG4gICA1OlxcdFxcdHNlbGVjdCBRQ09NX1FNSV9IRUxQRVJTXFxuICAgNjpcXHRcXHRzZWxlY3QgTUhJX0JVU1xcbiAgIDc6XFx0XFx0c2VsZWN0IFFSVFJcXG4gICA4OlxcdFxcdHNlbGVjdCBRUlRSX01ISVxcbiAgIDk6XFx0XFx0c2VsZWN0IFBDSV9QV1JDVFJMX1BXUlNFUSBpZiBIQVZFX1BXUkNUUkxcXG4gIDEwOlxcdFxcdGhlbHBcXG4gIDExOlxcdFxcdCAgRW5hYmxlIHN1cHBvcnQgZm9yIFF1YWxjb21tIFRlY2hub2xvZ2llcyBXaS1GaSA3IChJRUVFXFxuICAxMjpcXHRcXHQgIDgwMi4xMWJlKSBmYW1pbHkgb2YgY2hpcHNldHMsIGZvciBleGFtcGxlIFdDTjc4NTAgYW5kXFxuICAxMzpcXHRcXHQgIFFDTjkyNzQuXFxuICAxNDpcXHRcXG4gIDE1OlxcdFxcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBhIG1vZHVsZSwgaXQnbGwgYmUgY2FsbGVkIGF0aDEyay5cXG4gIDE2OlxcdFxcbiAgMTc6XFx0Y29uZmlnIEFUSDEyS19BSEJcXG4gIDE4OlxcdFxcdGJvb2wgXFxcIlF1YWxjb21tIGF0aDEyayBBSEIgc3VwcG9ydFxcXCJcXG4gIDE5OlxcdFxcdGRlcGVuZHMgb24gQVRIMTJLIFxcdTAwMjZcXHUwMDI2IFJFTU9URVBST0NcXG4gIDIwOlxcdFxcdHNlbGVjdCBRQ09NX01EVF9MT0FERVJcXG4gIDIxOlxcdFxcdHNlbGVjdCBRQ09NX1BBU1xcbiAgMjI6XFx0XFx0aGVscFxcbiAgMjM6XFx0XFx0ICBFbmFibGUgc3VwcG9ydCBmb3IgQXRoMTJrIEFIQiBidXMgY2hpcHNldHMsIGV4YW1wbGUgSVBRNTMzMi5cXG4gIDI0OlxcdFxcbiAgMjU6XFx0Y29uZmlnIEFUSDEyS19ERUJVR1xcbiAgMjY6XFx0XFx0Ym9vbCBcXFwiYXRoMTJrIGRlYnVnZ2luZ1xcXCJcXG4gIDI3OlxcdFxcdGRlcGVuZHMgb24gQVRIMTJLXFxuICAyODpcXHRcXHRoZWxwXFxuICAyOTpcXHRcXHQgIEVuYWJsZSBkZWJ1ZyBzdXBwb3J0LCBmb3IgZXhhbXBsZSBkZWJ1ZyBtZXNzYWdlcyB3aGljaCBtdXN0XFxuICAzMDpcXHRcXHQgIGJlIGVuYWJsZWQgc2VwYXJhdGVseSB1c2luZyB0aGUgZGVidWdfbWFzayBtb2R1bGUgcGFyYW1ldGVyLlxcbiAgMzE6XFx0XFxuICAzMjpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IFkgdG8gbWFrZSBpdCBlYXNpZXIgdG8gZGVidWcgcHJvYmxlbXMuIEJ1dCBpZlxcbiAgMzM6XFx0XFx0ICB5b3Ugd2FudCBvcHRpbWFsIHBlcmZvcm1hbmNlIGNob29zZSBOLlxcbiAgMzQ6XFx0XFxuICAzNTpcXHRjb25maWcgQVRIMTJLX0RFQlVHRlNcXG4gIDM2OlxcdFxcdGJvb2wgXFxcIlF1YWxjb21tIGF0aDEyayBkZWJ1Z2ZzIHN1cHBvcnRcXFwiXFxuICAzNzpcXHRcXHRkZXBlbmRzIG9uIEFUSDEySyBcXHUwMDI2XFx1MDAyNiBNQUM4MDIxMV9ERUJVR0ZTXFxuICAzODpcXHRcXHRoZWxwXFxuICAzOTpcXHRcXHQgIEVuYWJsZSBhdGgxMmsgZGVidWdmcyBzdXBwb3J0XFxuICA0MDpcXHRcXG4gIDQxOlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgWSB0byBtYWtlIGl0IGVhc2llciB0byBkZWJ1ZyBwcm9ibGVtcy4gQnV0IGlmXFxuICA0MjpcXHRcXHQgIHlvdSB3YW50IG9wdGltYWwgcGVyZm9ybWFuY2UgY2hvb3NlIE4uXFxuICA0MzpcXHRcXG4gIDQ0OlxcdGNvbmZpZyBBVEgxMktfVFJBQ0lOR1xcbiAgNDU6XFx0XFx0Ym9vbCBcXFwiYXRoMTJrIHRyYWNpbmcgc3VwcG9ydFxcXCJcXG4gIDQ2OlxcdFxcdGRlcGVuZHMgb24gQVRIMTJLIFxcdTAwMjZcXHUwMDI2IEVWRU5UX1RSQUNJTkdcXG4gIDQ3OlxcdFxcdGhlbHBcXG4gIDQ4OlxcdFxcdCAgRW5hYmxlIGF0aDEyayB0cmFjaW5nIGluZnJhc3RydWN0dXJlLlxcbiAgNDk6XFx0XFxuICA1MDpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IFkgdG8gbWFrZSBpdCBlYXNpZXIgdG8gZGVidWcgcHJvYmxlbXMuIEJ1dCBpZlxcbiAgNTE6XFx0XFx0ICB5b3Ugd2FudCBvcHRpbWFsIHBlcmZvcm1hbmNlIGNob29zZSBOLlxcbiAgNTI6XFx0XFxuICA1MzpcXHRjb25maWcgQVRIMTJLX0NPUkVEVU1QXFxuICA1NDpcXHRcXHRib29sIFxcXCJhdGgxMmsgY29yZWR1bXBcXFwiXFxuICA1NTpcXHRcXHRkZXBlbmRzIG9uIEFUSDEyS1xcbiAgNTY6XFx0XFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXFxuICA1NzpcXHRcXHRoZWxwXFxuICA1ODpcXHRcXHQgIEVuYWJsZSBhdGgxMmsgY29yZWR1bXAgY29sbGVjdGlvblxcbiAgNTk6XFx0XFxuICA2MDpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IFkgdG8gbWFrZSBpdCBlYXNpZXIgdG8gZGVidWcgcHJvYmxlbXMuIEJ1dCBpZlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxMDozNzo1OS4yMjI1MTc0NjdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjozNjM2NjQ0NjM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgYXRoMTJrIGFuZCBpdHMgRW11bGF0aW9uIE9wdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgYGF0aDEya2AgcmlnaHQgbm93LiBJIGtub3cgaXQgaGluZ2VzIG9uIGBNQUM4MDIxMWAsIG5lZWRzIGBIQVNfRE1BYCwgYW5kIG5lZWRzIHRvIGJlIHJ1bm5pbmcgb24gYFBDSWAuIEl0J3MgcHJldHR5IGNsZWFyIHRoYXQgaXQgc3VwcG9ydHMgdGhvc2UgUXVhbGNvbW0gV2ktRmkgNyBjaGlwc2V0cyDigJMgV0NONzg1MCwgUUNOOTI3NCwgSVBRNTMzMiDigJMgYWxsIGhhcmR3YXJlLiBUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIGluIG15IG1pbmQgaXM6IGNhbiBJIGVtdWxhdGUgdGhpcyBpbiBRRU1VLCBvciBldmVuIHdpdGggYSBVU0IgZ2FkZ2V0IHNldHVwLCBvciBhIHZpcnR1YWwgZW52aXJvbm1lbnQ/IEkgbWVhbiwgbXkgaW5pdGlhbCB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgaXQncyBkZXNpZ25lZCBzcGVjaWZpY2FsbHkgZm9yIHRob3NlIFF1YWxjb21tIFdpLUZpIDcgY2hpcHMgdXNpbmcgUENJIG9yIEFIQiwgc28gbm8sIG5vdCByZWFsbHkuXG5cbkJ1dCwgaG9sZCBvbi4gQ2FuIEkgbG9hZCBvciBpbml0aWFsaXplIGl0IHdpdGhvdXQgdGhlIHBoeXNpY2FsIGhhcmR3YXJlIHByZXNlbnQ/IEkgbmVlZCB0byBjaGVjayB0aGlzLiBMZXQgbWUgbG9vayBpbnRvIGBhdGgxMmtfbWFjX29wX3N0YV9zdGF0ZWAuIFdoZXJlIGlzIHRoYXQgZnVuY3Rpb24gcmVnaXN0ZXJlZD8gQWhhLCBpdCdzIHBhcnQgb2YgYGllZWU4MDIxMV9vcHMgYXRoMTJrX21hY19vcHNgLCBzcGVjaWZpY2FsbHksIGAuc3RhX3N0YXRlID0gYXRoMTJrX21hY19vcF9zdGFfc3RhdGVgLiBTbyB0byBnZXQgdGhhdCBmdW5jdGlvbmFsaXR5LCBgaWVlZTgwMjExX3JlZ2lzdGVyX2h3YCAoZnJvbSBtYWM4MDIxMSkgbXVzdCBiZSBjYWxsZWQgdG8gcmVnaXN0ZXIgYGF0aDEya19tYWNfb3BzYC4gTm93LCB3aGVyZSBkb2VzIGF0aDEyayBhY3R1YWxseSBjYWxsIHRoYXQ/IEkgbmVlZCB0byB0cmFjayB0aGF0IGNhbGwgZG93biB3aXRoaW4gdGhlIGNvZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU2NjEsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNTIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxMDozODowMi44NTkxNjUyMzNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDk3MDUyMDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaWVlZTgwMjExX3JlZ2lzdGVyX2h3XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmtcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYz0xNDgwNT1zdGF0aWMgaW50IGF0aDEya19tYWNfaHdfcmVnaXN0ZXIoc3RydWN0IGF0aDEya19odyAqYWgpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jLTE1MDQyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmM6MTUwNDM6XFx0cmV0ID0gaWVlZTgwMjExX3JlZ2lzdGVyX2h3KGh3KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jLTE1MDQ0LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtMTUwNDktXFx0aWYgKGlzX21vbml0b3JfZGlzYWJsZSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jOjE1MDUwOlxcdFxcdC8qIFRoZXJlJ3MgYSByYWNlIGJldHdlZW4gY2FsbGluZyBpZWVlODAyMTFfcmVnaXN0ZXJfaHcoKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtMTUwNTEtXFx0XFx0ICogYW5kIGhlcmUgd2hlcmUgdGhlIG1vbml0b3IgbW9kZSBpcyBlbmFibGVkIGZvciBhIGxpdHRsZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxMDozODowMi45MDg4NzYzMDVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjozNTIxNTg4OTM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIGBhdGgxMmtfbWFjX2h3X3JlZ2lzdGVyYCBjYWxsLCBicm9rZW4gZG93biBhcyBJJ2QgdGhpbmsgdGhyb3VnaCBpdDpcblxuKipEaXZpbmcgaW50byBgYXRoMTJrX21hY19od19yZWdpc3RlcmAqKlxuXG5Pa2F5LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGBhdGgxMmtfbWFjX2h3X3JlZ2lzdGVyYCBjYWxsLiBJdCdzIGNsZWFybHkgYSBjcml0aWNhbCBmdW5jdGlvbiByZWxhdGVkIHRvIHRoZSBoYXJkd2FyZSByZWdpc3RyYXRpb24gd2l0aGluIHRoZSBhdGgxMmsgZHJpdmVyLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGNvbnNpZGVyOiBXaGF0IGFyZSB0aGUgdHlwaWNhbCBjb250ZXh0cyB3aGVyZSB5b3UnZCAqZXhwZWN0KiB0byBzZWUgYSBmdW5jdGlvbiB3aXRoIHRoaXMgbmFtZT8gR2l2ZW4gdGhhdCB0aGlzIGlzIGEgcmVnaXN0cmF0aW9uIGZ1bmN0aW9uLCBJJ2QgaW1tZWRpYXRlbHkgc3VzcGVjdCBpdCdzIGNhbGxlZCBkdXJpbmcgdGhlIGluaXRpYWxpemF0aW9uIG9yIGJyaW5nLXVwIG9mIHRoZSBhdGgxMmsgTUFDIGhhcmR3YXJlLCBwcm9iYWJseSBhcyBhIHBhcnQgb2YgdGhlIG92ZXJhbGwgZGV2aWNlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlLiBUaGUgY29yZSBpZGVhIGhlcmUgaXMgdG8gbWFrZSB0aGUgaGFyZHdhcmUgYXZhaWxhYmxlIHRvIHRoZSByZXN0IG9mIHRoZSBzeXN0ZW0uIEkgYWxzbyBuZWVkIHRvIHRoaW5rIGFib3V0IHRoZSBpbnB1dHMgYW5kIG91dHB1dHMgb2YgdGhpcyBzcGVjaWZpYyBmdW5jdGlvbi4gV2hhdCBkYXRhIGlzIGl0IHJlY2VpdmluZywgYW5kIHdoYXQgcmVzb3VyY2VzIGlzIGl0IGluaXRpYWxpemluZyBvciBhbGxvY2F0aW5nPyBJcyBpdCByZWxhdGVkIHRvIGludGVycnVwdHMgb3IgRE1BIGNoYW5uZWxzLCBvciBvdGhlciBlc3NlbnRpYWwgcmVnaXN0ZXJzPyBUaGUgZnVuY3Rpb24gbmFtZSBpcyB2ZXJ5IGNsZWFyOiBcImhhcmR3YXJlIHJlZ2lzdHJhdGlvbi5cIiBTbyB0aGlzIGZ1bmN0aW9uIGlzIGxpa2VseSBjYWxsZWQgZnJvbSB0aGUgTUFDIChtZWRpYSBhY2Nlc3MgY29udHJvbGxlcikgc3BlY2lmaWMgcG9ydGlvbiBvZiB0aGUgY29kZSwgd2hpY2ggaXMgcHJvYmFibHkgcmVsYXRlZCB0byB0aGUgTGludXgga2VybmVsJ3MgbWFjODAyMTEgZHJpdmVyLiBUaGlzIHdvdWxkIGJlIGEgZ29vZCBwbGFjZSB0byBzdGFydCBteSBzZWFyY2ggZm9yIGNhbGwgc2l0ZXMgYW5kIHRoZSBkYXRhIHRoYXQgaXQgcGFzc2VzIHRvIG90aGVyIHN1YnJvdXRpbmVzLiBJIHNob3VsZCB0aGluayBhYm91dCB0aGUgZGlmZmVyZW50IHN1Ym1vZHVsZXMgd2l0aGluIHRoZSBhdGgxMmsgZHJpdmVyIChsaWtlIHRoZSBmaXJtd2FyZSBpbnRlcmZhY2UsIHRoZSBoYXJkd2FyZSBhYnN0cmFjdGlvbiBsYXllciwgZXRjLikgYW5kIGNvbnNpZGVyIGhvdyB0aGlzIGZ1bmN0aW9uIGludGVyYWN0cyB3aXRoIHRob3NlIG1vZHVsZXMuIEZyb20gaGVyZSwgSSBuZWVkIHRvIHNlZSB3aGVyZSBpdCBnZXRzIGNhbGxlZCwgYW5kIGdvIHRocm91Z2ggdGhlIGNhbGwgZ3JhcGggdG8gc2VlIHdoYXQgdGhlIGNvbnRyb2wgZmxvdyBpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjU1NiwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDEwOjM4OjA2LjQzMDQ2NzhaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyMzk4NTQxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0aDEya19tYWNfaHdfcmVnaXN0ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEya1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jPTE0NzcxPXN0YXRpYyBpbnQgYXRoMTJrX21hY19zZXR1cF9yZWdpc3RlcihzdHJ1Y3QgYXRoMTJrICphcixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtMTQ4MDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYzoxNDgwNTpzdGF0aWMgaW50IGF0aDEya19tYWNfaHdfcmVnaXN0ZXIoc3RydWN0IGF0aDEya19odyAqYWgpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYy0xNDgwNi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jPTE1MzM4PWludCBhdGgxMmtfbWFjX3JlZ2lzdGVyKHN0cnVjdCBhdGgxMmtfaHdfZ3JvdXAgKmFnKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYy0xNTM0Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jOjE1MzQ3OlxcdFxcdHJldCA9IGF0aDEya19tYWNfaHdfcmVnaXN0ZXIoYWgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtMTUzNDgtXFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmM9Njk1OT1zdGF0aWMgaW50IGF0aDEya19yZWdfY2hhbl9saXN0X2V2ZW50KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTY5ODAtXFx0ICogZXZlbnQgaXMgZHJvcHBlZCBvciBmYWxscyBiYWNrLCB0aGUgY29tcGxldGlvbiB0aGUgY2FsbGVyIGluXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYzo2OTgxOlxcdCAqIGF0aDEya19tYWNfaHdfcmVnaXN0ZXIoKSBtYXkgYmUgd2FpdGluZyBvbiBpcyBzdGlsbCBzaWduYWxsZWQgYXRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTY5ODItXFx0ICogdGhlIGVuZCBhbmQgaXQgZG9lcyBub3QgdGltZSBvdXQuXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTcwNDQtXFx0ICogc28gdGhlIGNvbXBsZXRpb24gY2Fubm90IGJlIG1hcmtlZCBhdCB0aGF0IHBvaW50LlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmM6NzA0NTpcXHQgKiBUaGlzIGJvb3QtdGltZSB1cGRhdGUgaXMgaGFuZGxlZCBpbiBhdGgxMmtfbWFjX2h3X3JlZ2lzdGVyKClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTcwNDYtXFx0ICogYmVmb3JlIHJlZ2lzdGVyaW5nIHRoZSBoYXJkd2FyZS5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTA6Mzg6MDYuNDgyODc0MDAxWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjI2MTc0NTM3MjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIGBhdGgxMmtfbWFjX3JlZ2lzdGVyYCBDYWxsZXJzKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoZSBjYWxsIGdyYXBoIGZvciBgYXRoMTJrX21hY19yZWdpc3RlcmAuIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIHdobydzIHNldHRpbmcgdXAgdGhlIHJlZ2lzdHJhdGlvbj8gT2J2aW91c2x5LCB0aGUgZHJpdmVyIGl0c2VsZiBpcyBnb2luZyB0byBiZSBjZW50cmFsLCBsaWtlbHkgd2l0aGluIHRoZSBtb2R1bGUgaW5pdGlhbGl6YXRpb24uIEnigJlkIGV4cGVjdCB0aGUgYGF0aDEya19tYWNgIHN0cnVjdCB0byBiZSBnZXR0aW5nIGFsbG9jYXRlZCBhbmQgcG9wdWxhdGVkLCBwcm9iYWJseSB3aXRoIGEgc2VxdWVuY2Ugb2YgY2FsbHMgc2V0dGluZyB2YXJpb3VzIHBhcmFtZXRlcnMgbmVlZGVkIGJ5IHRoZSBNQUMgaGFyZHdhcmUuIEkgYW0gZXhwZWN0aW5nIHRoYXQgYW55IGZpcm13YXJlIGxvYWRpbmcgd291bGQgb2NjdXIgZmlyc3QsIGxpa2VseSB3aXRoIGEgc3Vic2VxdWVudCByZWdpc3RyYXRpb24uIFNvIEknbGwgbmVlZCB0byBjb25maXJtIGluaXRpYWxpemF0aW9uIHN0ZXBzLCBsb29rIGZvciBjb250ZXh0IHdoZXJlIHRoaXMgY2FsbCBtaWdodCBiZSBjb25kaXRpb25hbCAoZXJyb3IgaGFuZGxpbmcvcHJvYmUgZmFpbHVyZXMpLiBJcyB0aGUgcmVnaXN0cmF0aW9uIGhhcHBlbmluZyBkaXJlY3RseSBvciB0aHJvdWdoIGEgaGVscGVyIGZ1bmN0aW9uL3N1YnN5c3RlbT8gVGhhdCB3b3VsZCBtYWtlIHRoZSBjYWxsZ3JhcGggc2xpZ2h0bHkgbGVzcyBvYnZpb3VzLCBidXQgcGVyaGFwcyBjbGVhcmVyIGluIHRlcm1zIG9mIGxheWVyaW5nLlxuXG5JJ2xsIGtlZXAgYW4gZXllIG91dCBmb3IgaG93IGhhcmR3YXJlIHJlc291cmNlcyBhcmUgaGFuZGVkIHRvIHRoaXMsIHdoYXQgbG9ja3MgYXJlIGFjcXVpcmVkIGFuZCByZWxlYXNlZCBhcm91bmQgdGhpcyBwb2ludC4gV2hhdCBhYm91dCBlcnJvciBoYW5kbGluZyDigJMgaG93IGRvZXMgdGhlIHJlZ2lzdHJhdGlvbiBmYWlsdXJlIGltcGFjdCB0aGUgb3ZlcmFsbCBtb2R1bGUgc3RhcnR1cCBmbG93PyBJJ20gYW50aWNpcGF0aW5nIHRoYXQgdW5yZWdpc3RyYXRpb24gd2lsbCBiZSBlcXVhbGx5IGNydWNpYWw7IHRoZXJlIHNob3VsZCBiZSBhIGNvcnJlc3BvbmRpbmcgYGF0aDEya19tYWNfdW5yZWdpc3RlcmAgZnVuY3Rpb24gY2FsbGVkIGF0IG1vZHVsZSBleGl0IG9yIHByb2JlIGZhaWx1cmUsIHJpZ2h0PyBBbmQgSSB3YW50IHRvIGNvbXBhcmUgdGhvc2UgdHdvIGNhbGxzIGFuZCBzZWUgd2hhdCwgaWYgYW55LCBkZXBlbmRlbmNpZXMgbWF5IGV4aXN0LiBJIGFtIGFsc28gY29uc2lkZXJpbmcgb3RoZXIgc3Vic3lzdGVtcyBzdWNoIGFzIFBIWSBhbmQgV01JLCB0aGF0IG1heSBpbmZsdWVuY2UgdGhlIHJlZ2lzdHJhdGlvbiBhbmQgdW5yZWdpc3RyYXRpb24gcHJvY2Vzcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzU2OCwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDEwOjM4OjA5LjEwMDMzMDk2MVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY1MDE2NjMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRoMTJrX21hY19yZWdpc3RlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jPTExNTg9c3RhdGljIGludCBhdGgxMmtfY29yZV9od19ncm91cF9zdGFydChzdHJ1Y3QgYXRoMTJrX2h3X2dyb3VwICphZylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jLTExODEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmM6MTE4MjpcXHRyZXQgPSBhdGgxMmtfbWFjX3JlZ2lzdGVyKGFnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYy0xMTgzLVxcdGlmIChXQVJOX09OKHJldCkpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jPTE1MzE2PXZvaWQgYXRoMTJrX21hY19tbG9fdGVhcmRvd24oc3RydWN0IGF0aDEya19od19ncm91cCAqYWcpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jLTE1MzM3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmM6MTUzMzg6aW50IGF0aDEya19tYWNfcmVnaXN0ZXIoc3RydWN0IGF0aDEya19od19ncm91cCAqYWcpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYy0xNTMzOS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5oPTE1ND12b2lkIGF0aDEya19tYWNfdW5yZWdpc3RlcihzdHJ1Y3QgYXRoMTJrX2h3X2dyb3VwICphZyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuaDoxNTU6aW50IGF0aDEya19tYWNfcmVnaXN0ZXIoc3RydWN0IGF0aDEya19od19ncm91cCAqYWcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmgtMTU2LWludCBhdGgxMmtfbWFjX2FsbG9jYXRlKHN0cnVjdCBhdGgxMmtfaHdfZ3JvdXAgKmFnKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTA6Mzg6MDkuMTQ2ODM4MjQ0WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjEwNjUyNTYwMzg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHF1ZXJ5LCBwcmVzZW50ZWQgYXMgaWYgaXQgd2VyZSBteSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gYGF0aDEya19jb3JlX2h3X2dyb3VwX3N0YXJ0YCBDYWxsZXJzKipcblxuT2theSwgc28gdGhlIHByb21wdCBpcyBhc2tpbmcgbWUgdG8gdHJhY2UgdGhlIGNhbGxzIHRvIHRoZSBgYXRoMTJrX2NvcmVfaHdfZ3JvdXBfc3RhcnRgIGZ1bmN0aW9uLiBUaGF0IG1lYW5zIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgYmVpbmcgaW52b2tlZCB3aXRoaW4gdGhlIGBhdGgxMmtgIGRyaXZlci4gR2l2ZW4gdGhhdCB0aGlzIGlzIGEgaGFyZHdhcmUgZ3JvdXAtcmVsYXRlZCBmdW5jdGlvbiwgSSBpbW1lZGlhdGVseSBhc3N1bWUgaXQncyBkZWFsaW5nIHdpdGggc29tZSBsZXZlbCBvZiBjb25jdXJyZW5jeSBvciB0YXNrIGdyb3VwaW5nLCBsaWtlbHkgcmVsYXRlZCB0byB0aGUgZXhlY3V0aW9uIG9mIGNvbW1hbmRzIG9uIHRoZSBoYXJkd2FyZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGVpdGhlciB1c2Ugc3RhdGljIGFuYWx5c2lzIHRvIHNlZSB0aGUgY29kZSBzdHJ1Y3R1cmUgb3IgZHluYW1pYyBhbmFseXNpcyB0byBzZWUgd2hlcmUgdGhlIGNhbGwgb2NjdXJzIGluIGV4ZWN1dGlvbi4gSSBjb3VsZCB1c2UgdG9vbHMgbGlrZSBgY3Njb3BlYCwgYGN0YWdzYCwgb3IgcGVyaGFwcyBldmVuIHNvbWV0aGluZyBsaWtlIGBwZXJmYCBvciBhIGtlcm5lbCB0cmFjaW5nIHRvb2wgaWYgSSB3YW50IHRoZSBkeW5hbWljIGJlaGF2aW9yLiBJJ2xsIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGNvbnRleHQgdHJpZ2dlcnMgaXRzIGV4ZWN1dGlvbiwgd2hhdCBvdGhlciBmdW5jdGlvbnMgaXQgaW50ZXJhY3RzIHdpdGgsIGFuZCB3aGF0IGl0cyBvdmVyYWxsIHJvbGUgaW4gdGhlIGxhcmdlciBgYXRoMTJrYCBlY29zeXN0ZW0gaXMuIFRoaXMgaW52ZXN0aWdhdGlvbiB3aWxsIHByb2JhYmx5IHByb3ZpZGUgY2x1ZXMgYWJvdXQgd2hhdCBhc3BlY3RzIG9mIHRoZSBoYXJkd2FyZSBhcmUgYmVpbmcgYWZmZWN0ZWQgYnkgaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgzODQsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxMDozODoxOS43OTk0MDE3NjNaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3ODIzMzQzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0aDEya19jb3JlX2h3X2dyb3VwX3N0YXJ0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmtcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmM9MTEzMj1zdGF0aWMgaW50IGF0aDEya19jb3JlX21sb19zZXR1cChzdHJ1Y3QgYXRoMTJrX2h3X2dyb3VwICphZylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jLTExNTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmM6MTE1ODpzdGF0aWMgaW50IGF0aDEya19jb3JlX2h3X2dyb3VwX3N0YXJ0KHN0cnVjdCBhdGgxMmtfaHdfZ3JvdXAgKmFnKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jLTExNTkte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmM9MTIzMz1zdGF0aWMgaW5saW5lXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmM6MTIzNDpib29sIGF0aDEya19jb3JlX2h3X2dyb3VwX3N0YXJ0X3JlYWR5KHN0cnVjdCBhdGgxMmtfaHdfZ3JvdXAgKmFnKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jLTEyMzUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmM9MTMxND1pbnQgYXRoMTJrX2NvcmVfcW1pX2Zpcm13YXJlX3JlYWR5KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYy0xMzQ3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jOjEzNDg6XFx0aWYgKGF0aDEya19jb3JlX2h3X2dyb3VwX3N0YXJ0X3JlYWR5KGFnKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jOjEzNDk6XFx0XFx0cmV0ID0gYXRoMTJrX2NvcmVfaHdfZ3JvdXBfc3RhcnQoYWcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jLTEzNTAtXFx0XFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmM9MTY0Mj1zdGF0aWMgdm9pZCBhdGgxMmtfY29yZV9yZXN0YXJ0KHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jLTE2NjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmM6MTY2NjpcXHRcXHRpZiAoIWF0aDEya19jb3JlX2h3X2dyb3VwX3N0YXJ0X3JlYWR5KGFnKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jLTE2NjctXFx0XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZhZy1cXHUwMDNlbXV0ZXgpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxMDozODoxOS44NDcyMzE4NTZaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MjM1MjEzMDg1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBhdGgxMmsgYW5kIFFNSSBGaXJtd2FyZSBSZWFkaW5lc3MqKlxuXG5Pa2F5LCBzbyBgYXRoMTJrX2NvcmVfcW1pX2Zpcm13YXJlX3JlYWR5YCBoYXMgZmlyZWQsIG1lYW5pbmcgdGhlIFFNSSBmaXJtd2FyZSBpcyBmaW5hbGx5IHVwIGFuZCBydW5uaW5nIG9uIHRoZSBRdWFsY29tbSBNSEksIFBDSWUsIG9yIEFIQiBoYXJkd2FyZS4gRXhjZWxsZW50ISBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzdXBwb3J0ZWQgYnVzIGFyY2hpdGVjdHVyZXMgZm9yIHRoaXMgbW9kdWxlLiBMZXQncyBzZWUuLi4gbG9va2luZyBhdCB0aGUgYGF0aDEya2AgZGlyZWN0b3J5IHN0cnVjdHVyZSwgc3BlY2lmaWNhbGx5IHdpdGhpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEya2AsIHJldmVhbHMgYHBjaS5jYCBhbmQgYGFoYi5jYC4gVGhhdCBnaXZlcyBtZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIE5vdywgSSdtIGN1cmlvdXMgYWJvdXQgc29tZXRoaW5nIGVsc2UuIEhhcyBhbnlvbmUgYWRkZWQgVVNCIHN1cHBvcnQgZm9yIGF0aDEyaz8gTGV0IG1lIHNjYW4gdGhlIGNvbnRlbnRzIG9mIHRoYXQgYGF0aDEya2AgZGlyZWN0b3J5IHRvIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nLiBJJ2xsIGNoZWNrIHRoZSBkaXJlY3RvcnkgZmlsZXMgdG8gc2VlIGlmIGFueXRoaW5nIGlzIHRoZXJlLiBJIGFtIGN1cmlvdXMgdG8ga25vdyBiZWNhdXNlIG9mIHBvdGVudGlhbCB1c2UgY2FzZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkyODgsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTA6Mzg6MjIuMTk5MzY2NTM4WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImNvZGVzZWFyY2gtZGlyLWluZGV4IiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIxOTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRGlyXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEya1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJGaWxlc1wiOiBbXG4gICAgXCJhY3BpLmNcIixcbiAgICBcImFjcGkuaFwiLFxuICAgIFwiYWhiLmNcIixcbiAgICBcImFoYi5oXCIsXG4gICAgXCJjZS5jXCIsXG4gICAgXCJjZS5oXCIsXG4gICAgXCJjbW5fZGVmcy5oXCIsXG4gICAgXCJjb3JlLmNcIixcbiAgICBcImNvcmUuaFwiLFxuICAgIFwiY29yZWR1bXAuY1wiLFxuICAgIFwiY29yZWR1bXAuaFwiLFxuICAgIFwiZGJyaW5nLmNcIixcbiAgICBcImRicmluZy5oXCIsXG4gICAgXCJkZWJ1Zy5jXCIsXG4gICAgXCJkZWJ1Zy5oXCIsXG4gICAgXCJkZWJ1Z2ZzLmNcIixcbiAgICBcImRlYnVnZnMuaFwiLFxuICAgIFwiZGVidWdmc19odHRfc3RhdHMuY1wiLFxuICAgIFwiZGVidWdmc19odHRfc3RhdHMuaFwiLFxuICAgIFwiZGVidWdmc19zdGEuY1wiLFxuICAgIFwiZGVidWdmc19zdGEuaFwiLFxuICAgIFwiZHAuY1wiLFxuICAgIFwiZHAuaFwiLFxuICAgIFwiZHBfY21uLmhcIixcbiAgICBcImRwX2h0dC5jXCIsXG4gICAgXCJkcF9odHQuaFwiLFxuICAgIFwiZHBfbW9uLmNcIixcbiAgICBcImRwX21vbi5oXCIsXG4gICAgXCJkcF9wZWVyLmNcIixcbiAgICBcImRwX3BlZXIuaFwiLFxuICAgIFwiZHBfcnguY1wiLFxuICAgIFwiZHBfcnguaFwiLFxuICAgIFwiZHBfdHguY1wiLFxuICAgIFwiZHBfdHguaFwiLFxuICAgIFwiZncuY1wiLFxuICAgIFwiZncuaFwiLFxuICAgIFwiaGFsLmNcIixcbiAgICBcImhhbC5oXCIsXG4gICAgXCJoaWYuaFwiLFxuICAgIFwiaHRjLmNcIixcbiAgICBcImh0Yy5oXCIsXG4gICAgXCJody5oXCIsXG4gICAgXCJtYWMuY1wiLFxuICAgIFwibWFjLmhcIixcbiAgICBcIm1oaS5jXCIsXG4gICAgXCJtaGkuaFwiLFxuICAgIFwicDJwLmNcIixcbiAgICBcInAycC5oXCIsXG4gICAgXCJwY2kuY1wiLFxuICAgIFwicGNpLmhcIixcbiAgICBcInBlZXIuY1wiLFxuICAgIFwicGVlci5oXCIsXG4gICAgXCJxbWkuY1wiLFxuICAgIFwicW1pLmhcIixcbiAgICBcInJlZy5jXCIsXG4gICAgXCJyZWcuaFwiLFxuICAgIFwidGVzdG1vZGUuY1wiLFxuICAgIFwidGVzdG1vZGUuaFwiLFxuICAgIFwidGhlcm1hbC5jXCIsXG4gICAgXCJ0aGVybWFsLmhcIixcbiAgICBcInRyYWNlLmNcIixcbiAgICBcInRyYWNlLmhcIixcbiAgICBcIndtaS5jXCIsXG4gICAgXCJ3bWkuaFwiLFxuICAgIFwid293LmNcIixcbiAgICBcIndvdy5oXCJcbiAgXSxcbiAgXCJTdWJkaXJzXCI6IFtcbiAgICBcIndpZmk3XCJcbiAgXVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTA6Mzg6MjIuMTk5NDkwODk4WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjc4NjM0MjMwMzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiBXb3J0aEZ1enppbmcgZm9yIGF0aDEyayoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBkZWNpZGUgaWYgdGhpcyBgYXRoMTJrYCBkcml2ZXIgaXMgd29ydGggZnV6emluZy4gVGhlIGluc3RydWN0aW9ucyBhcmUgcHJldHR5IGNsZWFyIGFib3V0IHRoZSBuZWdhdGl2ZSBhbmQgcG9zaXRpdmUgY3JpdGVyaWEsIHNvIGxldCdzIGJyZWFrIHRoaXMgZG93biBzeXN0ZW1hdGljYWxseS4gSXQgbG9va3MgbGlrZSB0aGUgb25seSBmaWxlcyB0byBmb2N1cyBvbiBhcmUgYHBjaS5jYCBhbmQgYGFoYi5jYCBpbiB0aGUgYXRoMTJrIGRyaXZlci5cblxuRmlyc3QsIEkgbmVlZCB0byBjaGVjayB0aGUgXCJuZWdhdGl2ZSBjcml0ZXJpYVwiIGluIFNlY3Rpb24gMi4gVGhlIGtleSBoZXJlIGlzICpzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUqIGFuZCAqdW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzKi4gU3BlY2lmaWNhbGx5LCBJJ20gbG9va2luZyBhdCB3aGV0aGVyIHRoZSBjaGFuZ2VzIGFyZSBsaW1pdGVkIHRvOlxuXG4qICAgVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMvU21hcnROSUNzL0dQVSBkcml2ZXJzICpyZXF1aXJpbmcgcGh5c2ljYWwgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIFFFTVUqLlxuKiAgIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgdGhhdCBvbmx5IHJ1biBkdXJpbmcgaG90LXVucGx1ZyBvciBtYW51YWwgdW5iaW5kaW5nLlxuKiAgIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGRpZmZlcmVudCBhcmNoaXRlY3R1cmVzLlxuXG5Ob3csIGBhdGgxMmtgIGlzIGEgdmVuZG9yLXNwZWNpZmljIHdpcmVsZXNzIGRyaXZlciBmb3IgUXVhbGNvbW0ncyA4MDIuMTFiZSBoYXJkd2FyZS4gSXQgZXhwbGljaXRseSAqcmVxdWlyZXMqIGEgcGh5c2ljYWwgUENJZS9BSEIgQVNJQywgc3BlY2lmaWNhbGx5IHRoZSBXQ043ODUwL1FDTjkyNzQvSVBRNTMzMiBjaGlwcy4gVGhpcyBpcyBub3QgYWNjZXNzaWJsZSB0aHJvdWdoIHZpcnR1YWwgYnVzZXMgc3VjaCBhcyB2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBvciBhbnkgb2YgdGhvc2UgZW11bGF0ZWQgaW50ZXJmYWNlcy4gV2l0aG91dCB0aGF0IHBoeXNpY2FsIGhhcmR3YXJlIGFuZCB0aGUgYXNzb2NpYXRlZCBmaXJtd2FyZSwgaXQncyBub3QgZ29pbmcgdG8gcHJvYmUsIHJlZ2lzdGVyIHdpdGggbWFjODAyMTEsIG9yIGV4ZWN1dGUgYW55IG9mIHRoZSBgYXRoMTJrYCBjb2RlLCBjZXJ0YWlubHkgbm90IGBhdGgxMmtfbWFjX29wX3N0YV9zdGF0ZWAuIFRoYXQgY2VydGFpbmx5IG1lZXRzIHRoZSBmaXJzdCBuZWdhdGl2ZSBjcml0ZXJpYTogU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlLlxuXG5JJ2xsIHF1aWNrbHkgY2hlY2sgZm9yIGFueSB2aXJ0dWFsIGhhcmR3YXJlIG9yIHNpbXVsYXRpb24gZm9yIGF0aDEyaywganVzdCB0byBiZSBzdXJlLiBNYWM4MDIxMSBkb2VzIGhhdmUgYG1hYzgwMjExX2h3c2ltYCwgYnV0IHRoYXQgaXMgY29tcGxldGVseSBzZXBhcmF0ZSBhbmQgZG9lc24ndCBydW4gYW55IG9mIHRoZSBgYXRoMTJrYCBjb2RlLiBgYXRoMTJrYCBpcyBzcGVjaWZpY2FsbHkgdGllZCB0byBQQ0llIGRldmljZSBJRHMgb3IgQUhCIHBsYXRmb3JtIGRldmljZXMuXG5cblRoZXJlZm9yZSwgYmVjYXVzZSB0aGlzIGRyaXZlciBpcyBhIHZlbmRvci1zcGVjaWZpYyBwaHlzaWNhbCBkZXZpY2UgZHJpdmVyIHRoYXQgaXMgZGVwZW5kZW50IG9uIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSwgaXQgZml0cyBzcXVhcmVseSB3aXRoaW4gdGhlIFwic3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlXCIgbmVnYXRpdmUgY3JpdGVyaWEuIEJhc2VkIG9uIHRoZSBuZWdhdGl2ZSBjcml0ZXJpYSBmcm9tIFNlY3Rpb24gMiBvZiB0aGUgaW5zdHJ1Y3Rpb25zLCBJJ2Qgc2F5IHRoaXMgaXMgKipub3QqKiBXb3J0aEZ1enppbmcuIEknbGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhlIGBwY2kuY2AgZmlsZSB0byBlbnN1cmUgdGhhdCBteSBhc3N1bXB0aW9uIGlzIGNvcnJlY3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMTE3LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjI2LCJUb29sQ2FsbHMiOlsiY29kZXNlYXJjaC1kaXItaW5kZXgiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxMDozODozMC4wNjI5MTYwODVaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2NjM4MzczLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk1PRFVMRV9ERVZJQ0VfVEFCTEVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEya1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2FoYi5jPTQ4PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGF0aDEya193aWZpN19haGJfb2ZfbWF0Y2hbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvYWhiLmMtNTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9haGIuYzo1ODpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBhdGgxMmtfd2lmaTdfYWhiX29mX21hdGNoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2FoYi5jLTU5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9wY2kuYz0zND1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgYXRoMTJrX3dpZmk3X3BjaV9pZF90YWJsZVtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9wY2kuYy00MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L3BjaS5jOjQxOk1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBhdGgxMmtfd2lmaTdfcGNpX2lkX3RhYmxlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L3BjaS5jLTQyLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxMDozODozMC4xMDk1Njc3MThaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6NTkxNzgyODQ1OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFeGFtaW5pbmcgdGhlIERyaXZlcidzIERldmljZSBUYWJsZSoqXG5cbk9rYXksIHNvIEkgc2VlIHRoZXNlIHR3byBkZXZpY2UgdGFibGUgZGVjbGFyYXRpb25zOiBgTU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIGF0aDEya193aWZpN19wY2lfaWRfdGFibGUpO2AgYW5kIGBNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBhdGgxMmtfd2lmaTdfYWhiX29mX21hdGNoKTtgLiBSaWdodCwgdGhpcyB0ZWxscyBtZSB0aGUgZHJpdmVyIGlzIGRlc2lnbmVkIHRvIHdvcmsgd2l0aCBib3RoIFBDSSBhbmQgT24tQ2hpcCAoQUhCKSBkZXZpY2VzLiBNeSBpbW1lZGlhdGUgaW50ZXJlc3QgaXMgaW4gdGhlIFBDSSBkZXZpY2VzLCBzcGVjaWZpY2FsbHkgc2luY2UgdGhlIGNvZGUgbWVudGlvbnMgUXVhbGNvbW0uIEknbSBnb2luZyB0byBxdWlja2x5IGRyaWxsIGRvd24gaW50byB3aGF0IFBDSSBJRHMgYXJlIGFjdHVhbGx5IGxpc3RlZCBpbiBgYXRoMTJrX3dpZmk3X3BjaV9pZF90YWJsZWAuIEkgbmVlZCB0byBzZWUgd2hpY2ggc3BlY2lmaWMgdmVuZG9yIGFuZCBkZXZpY2UgSURzIHRoaXMgZHJpdmVyIGNsYWltcyB0byBzdXBwb3J0LCB0byBlbnN1cmUgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBoYXJkd2FyZSBJJ20gdGFyZ2V0aW5nIG9yIGV4YW1pbmluZy4gTGV0J3Mgc2VlLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNjI0LCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTA6Mzg6MzYuMDI3Mzk4NTI3WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjczMzcxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvcGNpLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMzA6XFx0XFxuICAzMTpcXHQjZGVmaW5lIFdJTkRPV19SRUdfQUREUkVTU1xcdFxcdDB4MzEwY1xcbiAgMzI6XFx0I2RlZmluZSBXSU5ET1dfUkVHX0FERFJFU1NfUUNDMjA3MlxcdDB4MzI3OFxcbiAgMzM6XFx0XFxuICAzNDpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgYXRoMTJrX3dpZmk3X3BjaV9pZF90YWJsZVtdID0ge1xcbiAgMzU6XFx0XFx0eyBQQ0lfVkRFVklDRShRQ09NLCBRQ045Mjc0X0RFVklDRV9JRCkgfSxcXG4gIDM2OlxcdFxcdHsgUENJX1ZERVZJQ0UoUUNPTSwgV0NONzg1MF9ERVZJQ0VfSUQpIH0sXFxuICAzNzpcXHRcXHR7IFBDSV9WREVWSUNFKFFDT00sIFFDQzIwNzJfREVWSUNFX0lEKSB9LFxcbiAgMzg6XFx0XFx0e31cXG4gIDM5OlxcdH07XFxuICA0MDpcXHRcXG4gIDQxOlxcdE1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBhdGgxMmtfd2lmaTdfcGNpX2lkX3RhYmxlKTtcXG4gIDQyOlxcdFxcbiAgNDM6XFx0LyogVE9ETzogcmV2aXNpdCBJUlEgbWFwcGluZyBmb3IgbmV3IFNSTkcncyAqL1xcbiAgNDQ6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBhdGgxMmtfbXNpX2NvbmZpZyBhdGgxMmtfd2lmaTdfbXNpX2NvbmZpZ1tdID0ge1xcbiAgNDU6XFx0XFx0e1xcbiAgNDY6XFx0XFx0XFx0LnRvdGFsX3ZlY3RvcnMgPSAxNixcXG4gIDQ3OlxcdFxcdFxcdC50b3RhbF91c2VycyA9IDMsXFxuICA0ODpcXHRcXHRcXHQudXNlcnMgPSAoc3RydWN0IGF0aDEya19tc2lfdXNlcltdKSB7XFxuICA0OTpcXHRcXHRcXHRcXHR7IC5uYW1lID0gXFxcIk1ISVxcXCIsIC5udW1fdmVjdG9ycyA9IDMsIC5iYXNlX3ZlY3RvciA9IDAgfSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTA6Mzg6MzYuMDI3NDczODg3WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjgzMzM0NTMzNjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudDogVW5yZWFjaGFibGUgQ29kZSBpbiBhIFZpcnR1YWxpemVkIEVudmlyb25tZW50KipcblxuT2theSwgc28gdGhlIGNvZGUgSSdtIGxvb2tpbmcgYXQgbW9kaWZpZXMgYGF0aDEya19tYWNfb3Bfc3RhX3N0YXRlKClgIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jYC4gSSd2ZSBxdWlja2x5IGNvbmZpcm1lZCB0aGF0IHRoZSBgYXRoMTJrYCBkcml2ZXIgaXMsIGFzIGV4cGVjdGVkLCBkZXNpZ25lZCBmb3IgUXVhbGNvbW0gV2ktRmkgNyBjaGlwc2V0cy4gQ3J1Y2lhbGx5LCB0aGVzZSBjaGlwc2V0cyByZWx5IG9uIGVpdGhlciBQQ0llIG9yIEFIQiBidXMgY29ubmVjdGlvbnMsIHNwZWNpZmljYWxseSBkZXZpY2VzIGxpa2UgdGhlIFFDTjkyNzQsIFdDTjc4NTAsIG9yIFFDQzIwNzIuIEFuZCBoZXJlJ3MgdGhlIGtpY2tlcjogSSBrbm93IGZyb20gZXhwZXJpZW5jZSB0aGF0IHRoZXNlIHBhcnRpY3VsYXIgZGV2aWNlcywgb3IgZXZlbiB0aGUgdW5kZXJseWluZyBBSEIgbm9kZXMsIGFyZSB1dHRlcmx5IHVuYXZhaWxhYmxlIGFuZCBjYW5ub3QgYmUgbWVhbmluZ2Z1bGx5IHByb2JlZCB3aXRoaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgc3VjaCBhcyBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZSAoR0NFKS4gVGhleSAqcmVxdWlyZSogcGh5c2ljYWwgaGFyZHdhcmUuXG5cblRoZXJlZm9yZSwgdGhpcyBtb2RpZmljYXRpb24gaXMsIGZvciBhbGwgaW50ZW50cyBhbmQgcHVycG9zZXMsIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBpbiBhbnkgZnV6emluZyBjb250ZXh0IEkgY2FuIHJlYWxpc3RpY2FsbHkgZGVwbG95LiBUaGUgY29kZSBzcGVjaWZpY2FsbHkgbWVudGlvbnMgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLCBpb25pYywgYW1kZ3B1KSBhbGwgb2Ygd2hpY2ggcmVxdWlyZSB0aG9zZSBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMuIFRoZSBmYWN0IHRoYXQgdGhlIHRhcmdldCBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gdGhlc2Ugc3RhbmRhcmQgZW52aXJvbm1lbnRzIGlzIGEgY3JpdGljYWwgbGltaXRhdGlvbiBmb3IgZnV6emluZy5cblxuTXkgYW5hbHlzaXMgeWllbGRzIHRoaXMgY29uY2x1c2lvbiBmb3IgdGhlIHRvb2w6XG5cbmBXb3J0aEZ1enppbmdgOiBmYWxzZVxuYEZvY3VzU3ltYm9sc2A6IFtdXG5gRW5hYmxlQ29uZmlnc2A6IFtdXG5gUmVhc29uaW5nYDogVGhlIHBhdGNoIG1vZGlmaWVzIGBhdGgxMmtfbWFjX29wX3N0YV9zdGF0ZSgpYCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuY2AuIFRoZSBgYXRoMTJrYCBkcml2ZXIgaXMgZm9yIFF1YWxjb21tIFdpLUZpIDcgY2hpcHNldHMgY29ubmVjdGVkIHZpYSBQQ0llIG9yIEFIQiBidXMgKGUuZy4sIFdDTjc4NTAsIFFDTjkyNzQpLiBJdCByZXF1aXJlcyB2ZW5kb3Itc3BlY2lmaWMgcGh5c2ljYWwgQVNJQy9QQ0llIGhhcmR3YXJlIGFuZCBwcm9wcmlldGFyeSBmaXJtd2FyZSB0aGF0IGNhbm5vdCBiZSBlbXVsYXRlZCBvciBwcm9iZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMzE4LCJPdXRwdXRUb2tlbnMiOjE0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5NSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDEwOjM4OjQ0LjM2MDkyOTY4OVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxODQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGF0aDEya19tYWNfb3Bfc3RhX3N0YXRlKCkgaW4gZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYywgd2hpY2ggYmVsb25ncyB0byB0aGUgUXVhbGNvbW0gV2ktRmkgNyAoYXRoMTJrKSBkcml2ZXIuIFRoaXMgZHJpdmVyIHRhcmdldHMgcGh5c2ljYWwgUXVhbGNvbW0gUENJZS9BSEIgY2hpcHNldHMgKGUuZy4sIFdDTjc4NTAsIFFDTjkyNzQpIHJlcXVpcmluZyBzcGVjaWZpYyBwaHlzaWNhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKS4gQ29uc2VxdWVudGx5LCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBhdGgxMmtfbWFjX29wX3N0YV9zdGF0ZSgpIGluIGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMsIHdoaWNoIGJlbG9uZ3MgdG8gdGhlIFF1YWxjb21tIFdpLUZpIDcgKGF0aDEyaykgZHJpdmVyLiBUaGlzIGRyaXZlciB0YXJnZXRzIHBoeXNpY2FsIFF1YWxjb21tIFBDSWUvQUhCIGNoaXBzZXRzIChlLmcuLCBXQ043ODUwLCBRQ045Mjc0KSByZXF1aXJpbmcgc3BlY2lmaWMgcGh5c2ljYWwgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkuIENvbnNlcXVlbnRseSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTA6Mzg6NDQuMzYwOTU1NDhaIiwiU2VxIjoyMywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc4NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflow595q9[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-15 09:53:07 +0000 UTC FinishedAt: 2026-09-15 10:38:45 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDEwOjM3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYXRoMTJrX21hY19vcF9zdGFfc3RhdGUoKSBpbiBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jLCB3aGljaCBiZWxvbmdzIHRvIHRoZSBRdWFsY29tbSBXaS1GaSA3IChhdGgxMmspIGRyaXZlci4gVGhpcyBkcml2ZXIgdGFyZ2V0cyBwaHlzaWNhbCBRdWFsY29tbSBQQ0llL0FIQiBjaGlwc2V0cyAoZS5nLiwgV0NONzg1MCwgUUNOOTI3NCkgcmVxdWlyaW5nIHNwZWNpZmljIHBoeXNpY2FsIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLiBDb25zZXF1ZW50bHksIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTA6Mzc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBiYmMyZTZiYTYyZDBkYTgyMDQ4M2JhYTEyMGE4ZmNmMzA1MDU5Y2QyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBTZXAgMTUgMTA6Mzc6MDQgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmNcbmluZGV4IGQ0MTE2YmEwZGEwODkuLjU3ODYxMDAzYzE1YjAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jXG5AQCAtNzg0NSw3ICYjNDM7Nzg0NSw3IEBAIGludCBhdGgxMmtfbWFjX29wX3N0YV9zdGF0ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbiBcdFx0XHRcdGF0aDEya19od193YXJuKGFoLCBcJiMzNDtmYWlsZWQgdG8gdmVyaWZ5IGFzc29jIGxpbmsgc2V0dGluZyB3aXRoIGxpbmsgaWQgJXVcXG5cJiMzNDssXG4gXHRcdFx0XHRcdCAgICAgICBsaW5rX2lkKTtcbiBcdFx0XHRcdHJldCA9IC1FSU5WQUw7XG4tXHRcdFx0XHRnb3RvIGV4aXQ7XG4mIzQzO1x0XHRcdFx0Z290byBmcmVlX3VuYXNzaWduX2xpbms7XG4gXHRcdFx0fVxuIFxuIFx0XHRcdGFyc3RhLVx1MDAzZWlzX2Fzc29jX2xpbmsgPSB0cnVlO1xuQEAgLTc5MDMsNyAmIzQzOzc5MDMsNyBAQCBpbnQgYXRoMTJrX21hY19vcF9zdGFfc3RhdGUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4gXG4gXHRcdFx0aWYgKG9sZF9zdGF0ZSA9PSBJRUVFODAyMTFfU1RBX05PVEVYSVNUIFx1MDAyNlx1MDAyNlxuIFx0XHRcdCAgICBuZXdfc3RhdGUgPT0gSUVFRTgwMjExX1NUQV9OT05FKVxuLVx0XHRcdFx0Z290byBwZWVyX2RlbGV0ZTtcbiYjNDM7XHRcdFx0XHRnb3RvIGZyZWVfdW5hc3NpZ25fbGluaztcbiBcdFx0XHRlbHNlXG4gXHRcdFx0XHRnb3RvIGV4aXQ7XG4gXHRcdH1cbkBAIC03OTQzLDYgJiM0Mzs3OTQzLDggQEAgaW50IGF0aDEya19tYWNfb3Bfc3RhX3N0YXRlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFx0cmV0ID0gMDtcbiBcdGdvdG8gZXhpdDtcbiBcbiYjNDM7ZnJlZV91bmFzc2lnbl9saW5rOlxuJiM0MztcdGF0aDEya19tYWNfZnJlZV91bmFzc2lnbl9saW5rX3N0YShhaCwgYWhzdGEsIGxpbmtfaWQpO1xuIHBlZXJfZGVsZXRlOlxuIFx0YXRoMTJrX2RwX3BlZXJfZGVsZXRlKFx1MDAyNmFoLVx1MDAzZWRwX2h3LCBzdGEtXHUwMDNlYWRkciwgc3RhKTtcbiBtbF9wZWVyX2lkX2NsZWFyOlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDEwOjM3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGF0aDEya19tYWNfb3Bfc3RhX3N0YXRlKCkgaW4gZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYywgd2hpY2ggYmVsb25ncyB0byB0aGUgUXVhbGNvbW0gV2ktRmkgNyAoYXRoMTJrKSBkcml2ZXIuIFRoaXMgZHJpdmVyIHRhcmdldHMgcGh5c2ljYWwgUXVhbGNvbW0gUENJZS9BSEIgY2hpcHNldHMgKGUuZy4sIFdDTjc4NTAsIFFDTjkyNzQpIHJlcXVpcmluZyBzcGVjaWZpYyBwaHlzaWNhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKS4gQ29uc2VxdWVudGx5LCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYmJjMmU2YmE2MmQwZGE4MjA0ODNiYWExMjBhOGZjZjMwNTA1OWNkMgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgU2VwIDE1IDEwOjM3OjA0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMKaW5kZXggZDQxMTZiYTBkYTA4OS4uNTc4NjEwMDNjMTViMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jCkBAIC03ODQ1LDcgJiM0Mzs3ODQ1LDcgQEAgaW50IGF0aDEya19tYWNfb3Bfc3RhX3N0YXRlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LAogCQkJCWF0aDEya19od193YXJuKGFoLCAmIzM0O2ZhaWxlZCB0byB2ZXJpZnkgYXNzb2MgbGluayBzZXR0aW5nIHdpdGggbGluayBpZCAldVxuJiMzNDssCiAJCQkJCSAgICAgICBsaW5rX2lkKTsKIAkJCQlyZXQgPSAtRUlOVkFMOwotCQkJCWdvdG8gZXhpdDsKJiM0MzsJCQkJZ290byBmcmVlX3VuYXNzaWduX2xpbms7CiAJCQl9CiAKIAkJCWFyc3RhLSZndDtpc19hc3NvY19saW5rID0gdHJ1ZTsKQEAgLTc5MDMsNyAmIzQzOzc5MDMsNyBAQCBpbnQgYXRoMTJrX21hY19vcF9zdGFfc3RhdGUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsCiAKIAkJCWlmIChvbGRfc3RhdGUgPT0gSUVFRTgwMjExX1NUQV9OT1RFWElTVCAmYW1wOyZhbXA7CiAJCQkgICAgbmV3X3N0YXRlID09IElFRUU4MDIxMV9TVEFfTk9ORSkKLQkJCQlnb3RvIHBlZXJfZGVsZXRlOwomIzQzOwkJCQlnb3RvIGZyZWVfdW5hc3NpZ25fbGluazsKIAkJCWVsc2UKIAkJCQlnb3RvIGV4aXQ7CiAJCX0KQEAgLTc5NDMsNiAmIzQzOzc5NDMsOCBAQCBpbnQgYXRoMTJrX21hY19vcF9zdGFfc3RhdGUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsCiAJcmV0ID0gMDsKIAlnb3RvIGV4aXQ7CiAKJiM0MztmcmVlX3VuYXNzaWduX2xpbms6CiYjNDM7CWF0aDEya19tYWNfZnJlZV91bmFzc2lnbl9saW5rX3N0YShhaCwgYWhzdGEsIGxpbmtfaWQpOwogcGVlcl9kZWxldGU6CiAJYXRoMTJrX2RwX3BlZXJfZGVsZXRlKCZhbXA7YWgtJmd0O2RwX2h3LCBzdGEtJmd0O2FkZHIsIHN0YSk7CiBtbF9wZWVyX2lkX2NsZWFyOgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxMDozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTU1CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMzc1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gqKgoKT2theSwgc28gdGhlIHBhdGNoIGlzIHRvdWNoaW5nIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jYC4gIE15IGZpcnN0IG1vdmUgaXMgdG8gZGl2ZSByaWdodCBpbiBhbmQgZGlzc2VjdCB0aGUgZGlmZi4gIEl0IHNlZW1zIHRvIGJlIG1vZGlmeWluZyBgYXRoMTJrX21hY19vcF9zdGFfc3RhdGVgIHdpdGhpbiB0aGUgYGF0aDEya2AgZHJpdmVyLiAgTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7V2hhdCYjMzk7cyB0aGUgY29udGV4dCBoZXJlPyBXaGF0IGlzIGBhdGgxMmtgIGFjdHVhbGx5IHJlc3BvbnNpYmxlIGZvcj8mIzM0OwoKUmlnaHQsIHRoYXQmIzM5O3MgdGhlIFF1YWxjb21tIFdpLUZpIDcgKDgwMi4xMWJlKSBkcml2ZXIuICBOb3csIHRoZSBjcml0aWNhbCBxdWVzdGlvbiwgZ2l2ZW4gbXkgbmVlZCBmb3IgYSBzdWl0YWJsZSBlbnZpcm9ubWVudCwgaXM6IENhbiBJIGV2ZW4gKnJlYWNoKiB0aGlzIGluIGEgc3RhbmRhcmQgdmlydHVhbGl6ZWQgc2V0dXAgbGlrZSBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZT8gIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBjYW4gZXZlbiB0ZXN0IGl0LgoKSG9sZCBvbiwgbGV0IG1lIHF1aWNrbHkgcmUtcmVhZCB0aGUgZW52aXJvbm1lbnQgc2V0dXAgaW5zdHJ1Y3Rpb25zLiBPaCB5ZXMsIHNlY3Rpb24gMiBhZGRyZXNzZXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlLiBMZXQgbWUgcXVpY2tseSByZWZyZXNoIHdoYXQgdGhhdCBlbnRhaWxzOiBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIEdQVSBkcml2ZXJzIChtbHhzdywgcGRzX2NvcmUsIHFlZCwgaW9uaWMsIGFtZGdwdSkgdGhhdCBuZWVkIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcy4gU28gdGhhdCYjMzk7cyB0aGUgaHVyZGxlIEkmIzM5O20gdHJ5aW5nIHRvIG92ZXJjb21lLgoKU28sIGRvZXMgYGF0aDEya2AgZmFsbCBpbnRvIHRoYXQgY2F0ZWdvcnk/IERvZXMgaXQgKnJlcXVpcmUqIHBoeXNpY2FsIGhhcmR3YXJlLCBiZSBpdCBQQ0llIG9yIHBsYXRmb3JtLXNwZWNpZmljPyBUaGlzIGlzIGNydWNpYWwuIEkgbmVlZCB0byBrbm93IGlmIGl0IGNhbiBiZSBlbXVsYXRlZCBvciBzaW11bGF0ZWQgYXQgYWxsLCBvciBpZiBpdCYjMzk7cyBzdHJpY3RseSB0aWVkIHRvIFF1YWxjb21tIGhhcmR3YXJlLgoKT2theSwgbGV0JiMzOTtzIGV4cGxvcmUgdGhhdCBkcml2ZXIgZGlyZWN0b3J5LiAgTm8sIGBhdGgxMmtgIGRvZXNuJiMzOTt0IHN1cHBvcnQgdGhlIG1hYzgwMjExX2h3c2ltIGZyYW1ld29yay4gIEl0JiMzOTtzIGEgdmVuZG9yIGRyaXZlciwgdGFyZ2V0ZWQgYXQgUXVhbGNvbW0gc2lsaWNvbiwgbGlrZSBRQ045Mjc0LCBXQ043ODUwLCBJUFE1MzMyLCBldGMuCgpDYW4gSSBnZXQgYXJvdW5kIHRoaXMgd2l0aCBVU0IsIGlzIGl0IGF2YWlsYWJsZSB2aWEgVVNCPyBObywgdGhhdCYjMzk7cyBub3QgdGhlIGNhc2UgaGVyZSwgdGhhdCYjMzk7cyBQQ0kgb3IgcGxhdGZvcm0uCgpTbyBteSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgS2NvbmZpZyBmaWxlIGZvciBgYXRoMTJrYCB0byBzZWUgd2hhdCBvcHRpb25zIG1pZ2h0IHNoZWQgc29tZSBsaWdodCBvbiB0aGUgZGVwZW5kZW5jaWVzIGFuZCB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmUuIEkgbmVlZCB0byB2ZXJpZnkgd2hhdCBvcHRpb25zIGV4aXN0IGZvciBpdCwgYW5kIGhvdyBpdCBpcyBlbmFibGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDEwOjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBBVEgxMksmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjI6Y29uZmlnIEFUSDEyS1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtRdWFsY29tbSBXaS1GaSA3IHN1cHBvcnQgKGF0aDEyaylcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6MTc6Y29uZmlnIEFUSDEyS19BSEJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0xOC1cdGJvb2wgXCYjMzQ7UXVhbGNvbW0gYXRoMTJrIEFIQiBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTI0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjI1OmNvbmZpZyBBVEgxMktfREVCVUdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0yNi1cdGJvb2wgXCYjMzQ7YXRoMTJrIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0zNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzozNTpjb25maWcgQVRIMTJLX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0zNi1cdGJvb2wgXCYjMzQ7UXVhbGNvbW0gYXRoMTJrIGRlYnVnZnMgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy00My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzo0NDpjb25maWcgQVRIMTJLX1RSQUNJTkdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy00NS1cdGJvb2wgXCYjMzQ7YXRoMTJrIHRyYWNpbmcgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy01Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzo1Mzpjb25maWcgQVRIMTJLX0NPUkVEVU1QXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNTQtXHRib29sIFwmIzM0O2F0aDEyayBjb3JlZHVtcFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDEwOjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1NTcKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipFeGFtaW5pbmcgdGhlIEF0aGVyb3MgV2lyZWxlc3MgRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIGRpdmUgaW50byB0aGUgY29uZmlndXJhdGlvbiBmb3IgdGhlIGF0aDEyayB3aXJlbGVzcyBkcml2ZXIsIHNwZWNpZmljYWxseSBsb29raW5nIGF0IHRoZSBgS2NvbmZpZ2AgZmlsZS4gTXkgaW1tZWRpYXRlIGdvYWwgaXMgdG8gdW5kZXJzdGFuZCB0aGUgYnVpbGQgb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzIGZvciB0aGlzIHBhcnRpY3VsYXIgZHJpdmVyLiBJIG5lZWQgdG8gZ2V0IGEgY29tcHJlaGVuc2l2ZSB2aWV3IG9mIHdoYXQgZmVhdHVyZXMgYXJlIGNvbmZpZ3VyYWJsZSBhbmQgaG93IHRoZXkmIzM5O3JlIGVuYWJsZWQgb3IgZGlzYWJsZWQgZHVyaW5nIHRoZSBrZXJuZWwgYnVpbGQgcHJvY2Vzcy4gVGhpcyBmaWxlIGlzIHRoZSBrZXkgdG8gdGhhdC4gSSYjMzk7bSBhc3N1bWluZyBpdCBkZWZpbmVzIGFsbCB0aGUgcmVsZXZhbnQgcGFyYW1ldGVycywgdGhlaXIgZGVmYXVsdCBzZXR0aW5ncywgYW5kIGFueSBkZXBlbmRlbmNpZXMgb24gb3RoZXIga2VybmVsIGNvbXBvbmVudHMuIEkmIzM5O2xsIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIHZhcmlvdXMgZmVhdHVyZXMsIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIHRoZXkmIzM5O3JlIGFjdGl2YXRlZCwgYW5kIGFueSBpbnRlcmFjdGlvbnMgd2l0aCBoYXJkd2FyZSBvciBvdGhlciBzb2Z0d2FyZSBtb2R1bGVzLiBUaGlzIGNvdWxkIGJlIGFueXRoaW5nIGZyb20gcmVndWxhdG9yeSBkb21haW4gc2V0dGluZ3MgdG8gc3BlY2lmaWMgaGFyZHdhcmUgc3VwcG9ydC4gVW5kZXJzdGFuZGluZyB0aGlzIGNvbmZpZ3VyYXRpb24gaXMgdml0YWwgZm9yIGFueSB0cm91Ymxlc2hvb3Rpbmcgb3IgY3VzdG9tIG1vZGlmaWNhdGlvbnMgSSBtaWdodCBuZWVkIHRvIHVuZGVydGFrZSBsYXRlciBvbi4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDEwOjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA2MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG4gICAyOlx0Y29uZmlnIEFUSDEyS1xuICAgMzpcdFx0dHJpc3RhdGUgXCYjMzQ7UXVhbGNvbW0gV2ktRmkgNyBzdXBwb3J0IChhdGgxMmspXCYjMzQ7XG4gICA0Olx0XHRkZXBlbmRzIG9uIE1BQzgwMjExIFx1MDAyNlx1MDAyNiBIQVNfRE1BIFx1MDAyNlx1MDAyNiBQQ0lcbiAgIDU6XHRcdHNlbGVjdCBRQ09NX1FNSV9IRUxQRVJTXG4gICA2Olx0XHRzZWxlY3QgTUhJX0JVU1xuICAgNzpcdFx0c2VsZWN0IFFSVFJcbiAgIDg6XHRcdHNlbGVjdCBRUlRSX01ISVxuICAgOTpcdFx0c2VsZWN0IFBDSV9QV1JDVFJMX1BXUlNFUSBpZiBIQVZFX1BXUkNUUkxcbiAgMTA6XHRcdGhlbHBcbiAgMTE6XHRcdCAgRW5hYmxlIHN1cHBvcnQgZm9yIFF1YWxjb21tIFRlY2hub2xvZ2llcyBXaS1GaSA3IChJRUVFXG4gIDEyOlx0XHQgIDgwMi4xMWJlKSBmYW1pbHkgb2YgY2hpcHNldHMsIGZvciBleGFtcGxlIFdDTjc4NTAgYW5kXG4gIDEzOlx0XHQgIFFDTjkyNzQuXG4gIDE0Olx0XG4gIDE1Olx0XHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgYSBtb2R1bGUsIGl0JiMzOTtsbCBiZSBjYWxsZWQgYXRoMTJrLlxuICAxNjpcdFxuICAxNzpcdGNvbmZpZyBBVEgxMktfQUhCXG4gIDE4Olx0XHRib29sIFwmIzM0O1F1YWxjb21tIGF0aDEyayBBSEIgc3VwcG9ydFwmIzM0O1xuICAxOTpcdFx0ZGVwZW5kcyBvbiBBVEgxMksgXHUwMDI2XHUwMDI2IFJFTU9URVBST0NcbiAgMjA6XHRcdHNlbGVjdCBRQ09NX01EVF9MT0FERVJcbiAgMjE6XHRcdHNlbGVjdCBRQ09NX1BBU1xuICAyMjpcdFx0aGVscFxuICAyMzpcdFx0ICBFbmFibGUgc3VwcG9ydCBmb3IgQXRoMTJrIEFIQiBidXMgY2hpcHNldHMsIGV4YW1wbGUgSVBRNTMzMi5cbiAgMjQ6XHRcbiAgMjU6XHRjb25maWcgQVRIMTJLX0RFQlVHXG4gIDI2Olx0XHRib29sIFwmIzM0O2F0aDEyayBkZWJ1Z2dpbmdcJiMzNDtcbiAgMjc6XHRcdGRlcGVuZHMgb24gQVRIMTJLXG4gIDI4Olx0XHRoZWxwXG4gIDI5Olx0XHQgIEVuYWJsZSBkZWJ1ZyBzdXBwb3J0LCBmb3IgZXhhbXBsZSBkZWJ1ZyBtZXNzYWdlcyB3aGljaCBtdXN0XG4gIDMwOlx0XHQgIGJlIGVuYWJsZWQgc2VwYXJhdGVseSB1c2luZyB0aGUgZGVidWdfbWFzayBtb2R1bGUgcGFyYW1ldGVyLlxuICAzMTpcdFxuICAzMjpcdFx0ICBJZiB1bnN1cmUsIHNheSBZIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGRlYnVnIHByb2JsZW1zLiBCdXQgaWZcbiAgMzM6XHRcdCAgeW91IHdhbnQgb3B0aW1hbCBwZXJmb3JtYW5jZSBjaG9vc2UgTi5cbiAgMzQ6XHRcbiAgMzU6XHRjb25maWcgQVRIMTJLX0RFQlVHRlNcbiAgMzY6XHRcdGJvb2wgXCYjMzQ7UXVhbGNvbW0gYXRoMTJrIGRlYnVnZnMgc3VwcG9ydFwmIzM0O1xuICAzNzpcdFx0ZGVwZW5kcyBvbiBBVEgxMksgXHUwMDI2XHUwMDI2IE1BQzgwMjExX0RFQlVHRlNcbiAgMzg6XHRcdGhlbHBcbiAgMzk6XHRcdCAgRW5hYmxlIGF0aDEyayBkZWJ1Z2ZzIHN1cHBvcnRcbiAgNDA6XHRcbiAgNDE6XHRcdCAgSWYgdW5zdXJlLCBzYXkgWSB0byBtYWtlIGl0IGVhc2llciB0byBkZWJ1ZyBwcm9ibGVtcy4gQnV0IGlmXG4gIDQyOlx0XHQgIHlvdSB3YW50IG9wdGltYWwgcGVyZm9ybWFuY2UgY2hvb3NlIE4uXG4gIDQzOlx0XG4gIDQ0Olx0Y29uZmlnIEFUSDEyS19UUkFDSU5HXG4gIDQ1Olx0XHRib29sIFwmIzM0O2F0aDEyayB0cmFjaW5nIHN1cHBvcnRcJiMzNDtcbiAgNDY6XHRcdGRlcGVuZHMgb24gQVRIMTJLIFx1MDAyNlx1MDAyNiBFVkVOVF9UUkFDSU5HXG4gIDQ3Olx0XHRoZWxwXG4gIDQ4Olx0XHQgIEVuYWJsZSBhdGgxMmsgdHJhY2luZyBpbmZyYXN0cnVjdHVyZS5cbiAgNDk6XHRcbiAgNTA6XHRcdCAgSWYgdW5zdXJlLCBzYXkgWSB0byBtYWtlIGl0IGVhc2llciB0byBkZWJ1ZyBwcm9ibGVtcy4gQnV0IGlmXG4gIDUxOlx0XHQgIHlvdSB3YW50IG9wdGltYWwgcGVyZm9ybWFuY2UgY2hvb3NlIE4uXG4gIDUyOlx0XG4gIDUzOlx0Y29uZmlnIEFUSDEyS19DT1JFRFVNUFxuICA1NDpcdFx0Ym9vbCBcJiMzNDthdGgxMmsgY29yZWR1bXBcJiMzNDtcbiAgNTU6XHRcdGRlcGVuZHMgb24gQVRIMTJLXG4gIDU2Olx0XHRzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVBcbiAgNTc6XHRcdGhlbHBcbiAgNTg6XHRcdCAgRW5hYmxlIGF0aDEyayBjb3JlZHVtcCBjb2xsZWN0aW9uXG4gIDU5Olx0XG4gIDYwOlx0XHQgIElmIHVuc3VyZSwgc2F5IFkgdG8gbWFrZSBpdCBlYXNpZXIgdG8gZGVidWcgcHJvYmxlbXMuIEJ1dCBpZlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDEwOjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU2NjEKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAyNTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiBhdGgxMmsgYW5kIGl0cyBFbXVsYXRpb24gT3B0aW9ucyoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGBhdGgxMmtgIHJpZ2h0IG5vdy4gSSBrbm93IGl0IGhpbmdlcyBvbiBgTUFDODAyMTFgLCBuZWVkcyBgSEFTX0RNQWAsIGFuZCBuZWVkcyB0byBiZSBydW5uaW5nIG9uIGBQQ0lgLiBJdCYjMzk7cyBwcmV0dHkgY2xlYXIgdGhhdCBpdCBzdXBwb3J0cyB0aG9zZSBRdWFsY29tbSBXaS1GaSA3IGNoaXBzZXRzIOKAkyBXQ043ODUwLCBRQ045Mjc0LCBJUFE1MzMyIOKAkyBhbGwgaGFyZHdhcmUuIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaW4gbXkgbWluZCBpczogY2FuIEkgZW11bGF0ZSB0aGlzIGluIFFFTVUsIG9yIGV2ZW4gd2l0aCBhIFVTQiBnYWRnZXQgc2V0dXAsIG9yIGEgdmlydHVhbCBlbnZpcm9ubWVudD8gSSBtZWFuLCBteSBpbml0aWFsIHVuZGVyc3RhbmRpbmcgaXMgdGhhdCBpdCYjMzk7cyBkZXNpZ25lZCBzcGVjaWZpY2FsbHkgZm9yIHRob3NlIFF1YWxjb21tIFdpLUZpIDcgY2hpcHMgdXNpbmcgUENJIG9yIEFIQiwgc28gbm8sIG5vdCByZWFsbHkuCgpCdXQsIGhvbGQgb24uIENhbiBJIGxvYWQgb3IgaW5pdGlhbGl6ZSBpdCB3aXRob3V0IHRoZSBwaHlzaWNhbCBoYXJkd2FyZSBwcmVzZW50PyBJIG5lZWQgdG8gY2hlY2sgdGhpcy4gTGV0IG1lIGxvb2sgaW50byBgYXRoMTJrX21hY19vcF9zdGFfc3RhdGVgLiBXaGVyZSBpcyB0aGF0IGZ1bmN0aW9uIHJlZ2lzdGVyZWQ/IEFoYSwgaXQmIzM5O3MgcGFydCBvZiBgaWVlZTgwMjExX29wcyBhdGgxMmtfbWFjX29wc2AsIHNwZWNpZmljYWxseSwgYC5zdGFfc3RhdGUgPSBhdGgxMmtfbWFjX29wX3N0YV9zdGF0ZWAuIFNvIHRvIGdldCB0aGF0IGZ1bmN0aW9uYWxpdHksIGBpZWVlODAyMTFfcmVnaXN0ZXJfaHdgIChmcm9tIG1hYzgwMjExKSBtdXN0IGJlIGNhbGxlZCB0byByZWdpc3RlciBgYXRoMTJrX21hY19vcHNgLiBOb3csIHdoZXJlIGRvZXMgYXRoMTJrIGFjdHVhbGx5IGNhbGwgdGhhdD8gSSBuZWVkIHRvIHRyYWNrIHRoYXQgY2FsbCBkb3duIHdpdGhpbiB0aGUgY29kZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxMDozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpZWVlODAyMTFfcmVnaXN0ZXJfaHcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmM9MTQ4MDU9c3RhdGljIGludCBhdGgxMmtfbWFjX2h3X3JlZ2lzdGVyKHN0cnVjdCBhdGgxMmtfaHcgKmFoKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtMTUwNDItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jOjE1MDQzOlx0cmV0ID0gaWVlZTgwMjExX3JlZ2lzdGVyX2h3KGh3KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtMTUwNDQtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYy0xNTA0OS1cdGlmIChpc19tb25pdG9yX2Rpc2FibGUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jOjE1MDUwOlx0XHQvKiBUaGVyZSYjMzk7cyBhIHJhY2UgYmV0d2VlbiBjYWxsaW5nIGllZWU4MDIxMV9yZWdpc3Rlcl9odygpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jLTE1MDUxLVx0XHQgKiBhbmQgaGVyZSB3aGVyZSB0aGUgbW9uaXRvciBtb2RlIGlzIGVuYWJsZWQgZm9yIGEgbGl0dGxlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTA6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjU1NgoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHRoZSBgYXRoMTJrX21hY19od19yZWdpc3RlcmAgY2FsbCwgYnJva2VuIGRvd24gYXMgSSYjMzk7ZCB0aGluayB0aHJvdWdoIGl0OgoKKipEaXZpbmcgaW50byBgYXRoMTJrX21hY19od19yZWdpc3RlcmAqKgoKT2theSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBgYXRoMTJrX21hY19od19yZWdpc3RlcmAgY2FsbC4gSXQmIzM5O3MgY2xlYXJseSBhIGNyaXRpY2FsIGZ1bmN0aW9uIHJlbGF0ZWQgdG8gdGhlIGhhcmR3YXJlIHJlZ2lzdHJhdGlvbiB3aXRoaW4gdGhlIGF0aDEyayBkcml2ZXIuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gY29uc2lkZXI6IFdoYXQgYXJlIHRoZSB0eXBpY2FsIGNvbnRleHRzIHdoZXJlIHlvdSYjMzk7ZCAqZXhwZWN0KiB0byBzZWUgYSBmdW5jdGlvbiB3aXRoIHRoaXMgbmFtZT8gR2l2ZW4gdGhhdCB0aGlzIGlzIGEgcmVnaXN0cmF0aW9uIGZ1bmN0aW9uLCBJJiMzOTtkIGltbWVkaWF0ZWx5IHN1c3BlY3QgaXQmIzM5O3MgY2FsbGVkIGR1cmluZyB0aGUgaW5pdGlhbGl6YXRpb24gb3IgYnJpbmctdXAgb2YgdGhlIGF0aDEyayBNQUMgaGFyZHdhcmUsIHByb2JhYmx5IGFzIGEgcGFydCBvZiB0aGUgb3ZlcmFsbCBkZXZpY2UgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UuIFRoZSBjb3JlIGlkZWEgaGVyZSBpcyB0byBtYWtlIHRoZSBoYXJkd2FyZSBhdmFpbGFibGUgdG8gdGhlIHJlc3Qgb2YgdGhlIHN5c3RlbS4gSSBhbHNvIG5lZWQgdG8gdGhpbmsgYWJvdXQgdGhlIGlucHV0cyBhbmQgb3V0cHV0cyBvZiB0aGlzIHNwZWNpZmljIGZ1bmN0aW9uLiBXaGF0IGRhdGEgaXMgaXQgcmVjZWl2aW5nLCBhbmQgd2hhdCByZXNvdXJjZXMgaXMgaXQgaW5pdGlhbGl6aW5nIG9yIGFsbG9jYXRpbmc/IElzIGl0IHJlbGF0ZWQgdG8gaW50ZXJydXB0cyBvciBETUEgY2hhbm5lbHMsIG9yIG90aGVyIGVzc2VudGlhbCByZWdpc3RlcnM/IFRoZSBmdW5jdGlvbiBuYW1lIGlzIHZlcnkgY2xlYXI6ICYjMzQ7aGFyZHdhcmUgcmVnaXN0cmF0aW9uLiYjMzQ7IFNvIHRoaXMgZnVuY3Rpb24gaXMgbGlrZWx5IGNhbGxlZCBmcm9tIHRoZSBNQUMgKG1lZGlhIGFjY2VzcyBjb250cm9sbGVyKSBzcGVjaWZpYyBwb3J0aW9uIG9mIHRoZSBjb2RlLCB3aGljaCBpcyBwcm9iYWJseSByZWxhdGVkIHRvIHRoZSBMaW51eCBrZXJuZWwmIzM5O3MgbWFjODAyMTEgZHJpdmVyLiBUaGlzIHdvdWxkIGJlIGEgZ29vZCBwbGFjZSB0byBzdGFydCBteSBzZWFyY2ggZm9yIGNhbGwgc2l0ZXMgYW5kIHRoZSBkYXRhIHRoYXQgaXQgcGFzc2VzIHRvIG90aGVyIHN1YnJvdXRpbmVzLiBJIHNob3VsZCB0aGluayBhYm91dCB0aGUgZGlmZmVyZW50IHN1Ym1vZHVsZXMgd2l0aGluIHRoZSBhdGgxMmsgZHJpdmVyIChsaWtlIHRoZSBmaXJtd2FyZSBpbnRlcmZhY2UsIHRoZSBoYXJkd2FyZSBhYnN0cmFjdGlvbiBsYXllciwgZXRjLikgYW5kIGNvbnNpZGVyIGhvdyB0aGlzIGZ1bmN0aW9uIGludGVyYWN0cyB3aXRoIHRob3NlIG1vZHVsZXMuIEZyb20gaGVyZSwgSSBuZWVkIHRvIHNlZSB3aGVyZSBpdCBnZXRzIGNhbGxlZCwgYW5kIGdvIHRocm91Z2ggdGhlIGNhbGwgZ3JhcGggdG8gc2VlIHdoYXQgdGhlIGNvbnRyb2wgZmxvdyBpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTA6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoMTJrX21hY19od19yZWdpc3RlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYz0xNDc3MT1zdGF0aWMgaW50IGF0aDEya19tYWNfc2V0dXBfcmVnaXN0ZXIoc3RydWN0IGF0aDEyayAqYXIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYy0xNDgwNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmM6MTQ4MDU6c3RhdGljIGludCBhdGgxMmtfbWFjX2h3X3JlZ2lzdGVyKHN0cnVjdCBhdGgxMmtfaHcgKmFoKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYy0xNDgwNi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYz0xNTMzOD1pbnQgYXRoMTJrX21hY19yZWdpc3RlcihzdHJ1Y3QgYXRoMTJrX2h3X2dyb3VwICphZylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jLTE1MzQ2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYzoxNTM0NzpcdFx0cmV0ID0gYXRoMTJrX21hY19od19yZWdpc3RlcihhaCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jLTE1MzQ4LVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmM9Njk1OT1zdGF0aWMgaW50IGF0aDEya19yZWdfY2hhbl9saXN0X2V2ZW50KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYy02OTgwLVx0ICogZXZlbnQgaXMgZHJvcHBlZCBvciBmYWxscyBiYWNrLCB0aGUgY29tcGxldGlvbiB0aGUgY2FsbGVyIGluXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jOjY5ODE6XHQgKiBhdGgxMmtfbWFjX2h3X3JlZ2lzdGVyKCkgbWF5IGJlIHdhaXRpbmcgb24gaXMgc3RpbGwgc2lnbmFsbGVkIGF0XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTY5ODItXHQgKiB0aGUgZW5kIGFuZCBpdCBkb2VzIG5vdCB0aW1lIG91dC5cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTcwNDQtXHQgKiBzbyB0aGUgY29tcGxldGlvbiBjYW5ub3QgYmUgbWFya2VkIGF0IHRoYXQgcG9pbnQuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jOjcwNDU6XHQgKiBUaGlzIGJvb3QtdGltZSB1cGRhdGUgaXMgaGFuZGxlZCBpbiBhdGgxMmtfbWFjX2h3X3JlZ2lzdGVyKClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMtNzA0Ni1cdCAqIGJlZm9yZSByZWdpc3RlcmluZyB0aGUgaGFyZHdhcmUuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDEwOjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc1NjgKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyBgYXRoMTJrX21hY19yZWdpc3RlcmAgQ2FsbGVycyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBjYWxsIGdyYXBoIGZvciBgYXRoMTJrX21hY19yZWdpc3RlcmAuIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIHdobyYjMzk7cyBzZXR0aW5nIHVwIHRoZSByZWdpc3RyYXRpb24/IE9idmlvdXNseSwgdGhlIGRyaXZlciBpdHNlbGYgaXMgZ29pbmcgdG8gYmUgY2VudHJhbCwgbGlrZWx5IHdpdGhpbiB0aGUgbW9kdWxlIGluaXRpYWxpemF0aW9uLiBJ4oCZZCBleHBlY3QgdGhlIGBhdGgxMmtfbWFjYCBzdHJ1Y3QgdG8gYmUgZ2V0dGluZyBhbGxvY2F0ZWQgYW5kIHBvcHVsYXRlZCwgcHJvYmFibHkgd2l0aCBhIHNlcXVlbmNlIG9mIGNhbGxzIHNldHRpbmcgdmFyaW91cyBwYXJhbWV0ZXJzIG5lZWRlZCBieSB0aGUgTUFDIGhhcmR3YXJlLiBJIGFtIGV4cGVjdGluZyB0aGF0IGFueSBmaXJtd2FyZSBsb2FkaW5nIHdvdWxkIG9jY3VyIGZpcnN0LCBsaWtlbHkgd2l0aCBhIHN1YnNlcXVlbnQgcmVnaXN0cmF0aW9uLiBTbyBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gaW5pdGlhbGl6YXRpb24gc3RlcHMsIGxvb2sgZm9yIGNvbnRleHQgd2hlcmUgdGhpcyBjYWxsIG1pZ2h0IGJlIGNvbmRpdGlvbmFsIChlcnJvciBoYW5kbGluZy9wcm9iZSBmYWlsdXJlcykuIElzIHRoZSByZWdpc3RyYXRpb24gaGFwcGVuaW5nIGRpcmVjdGx5IG9yIHRocm91Z2ggYSBoZWxwZXIgZnVuY3Rpb24vc3Vic3lzdGVtPyBUaGF0IHdvdWxkIG1ha2UgdGhlIGNhbGxncmFwaCBzbGlnaHRseSBsZXNzIG9idmlvdXMsIGJ1dCBwZXJoYXBzIGNsZWFyZXIgaW4gdGVybXMgb2YgbGF5ZXJpbmcuCgpJJiMzOTtsbCBrZWVwIGFuIGV5ZSBvdXQgZm9yIGhvdyBoYXJkd2FyZSByZXNvdXJjZXMgYXJlIGhhbmRlZCB0byB0aGlzLCB3aGF0IGxvY2tzIGFyZSBhY3F1aXJlZCBhbmQgcmVsZWFzZWQgYXJvdW5kIHRoaXMgcG9pbnQuIFdoYXQgYWJvdXQgZXJyb3IgaGFuZGxpbmcg4oCTIGhvdyBkb2VzIHRoZSByZWdpc3RyYXRpb24gZmFpbHVyZSBpbXBhY3QgdGhlIG92ZXJhbGwgbW9kdWxlIHN0YXJ0dXAgZmxvdz8gSSYjMzk7bSBhbnRpY2lwYXRpbmcgdGhhdCB1bnJlZ2lzdHJhdGlvbiB3aWxsIGJlIGVxdWFsbHkgY3J1Y2lhbDsgdGhlcmUgc2hvdWxkIGJlIGEgY29ycmVzcG9uZGluZyBgYXRoMTJrX21hY191bnJlZ2lzdGVyYCBmdW5jdGlvbiBjYWxsZWQgYXQgbW9kdWxlIGV4aXQgb3IgcHJvYmUgZmFpbHVyZSwgcmlnaHQ/IEFuZCBJIHdhbnQgdG8gY29tcGFyZSB0aG9zZSB0d28gY2FsbHMgYW5kIHNlZSB3aGF0LCBpZiBhbnksIGRlcGVuZGVuY2llcyBtYXkgZXhpc3QuIEkgYW0gYWxzbyBjb25zaWRlcmluZyBvdGhlciBzdWJzeXN0ZW1zIHN1Y2ggYXMgUEhZIGFuZCBXTUksIHRoYXQgbWF5IGluZmx1ZW5jZSB0aGUgcmVnaXN0cmF0aW9uIGFuZCB1bnJlZ2lzdHJhdGlvbiBwcm9jZXNzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxMDozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdGgxMmtfbWFjX3JlZ2lzdGVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYz0xMTU4PXN0YXRpYyBpbnQgYXRoMTJrX2NvcmVfaHdfZ3JvdXBfc3RhcnQoc3RydWN0IGF0aDEya19od19ncm91cCAqYWcpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmMtMTE4MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jOjExODI6XHRyZXQgPSBhdGgxMmtfbWFjX3JlZ2lzdGVyKGFnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jLTExODMtXHRpZiAoV0FSTl9PTihyZXQpKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmM9MTUzMTY9dm9pZCBhdGgxMmtfbWFjX21sb190ZWFyZG93bihzdHJ1Y3QgYXRoMTJrX2h3X2dyb3VwICphZylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jLTE1MzM3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYzoxNTMzODppbnQgYXRoMTJrX21hY19yZWdpc3RlcihzdHJ1Y3QgYXRoMTJrX2h3X2dyb3VwICphZylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtMTUzMzkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmg9MTU0PXZvaWQgYXRoMTJrX21hY191bnJlZ2lzdGVyKHN0cnVjdCBhdGgxMmtfaHdfZ3JvdXAgKmFnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmg6MTU1OmludCBhdGgxMmtfbWFjX3JlZ2lzdGVyKHN0cnVjdCBhdGgxMmtfaHdfZ3JvdXAgKmFnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmgtMTU2LWludCBhdGgxMmtfbWFjX2FsbG9jYXRlKHN0cnVjdCBhdGgxMmtfaHdfZ3JvdXAgKmFnKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTA6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODM4NAoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHRoZSBxdWVyeSwgcHJlc2VudGVkIGFzIGlmIGl0IHdlcmUgbXkgdGhvdWdodCBwcm9jZXNzOgoKKipEaXZpbmcgaW50byBgYXRoMTJrX2NvcmVfaHdfZ3JvdXBfc3RhcnRgIENhbGxlcnMqKgoKT2theSwgc28gdGhlIHByb21wdCBpcyBhc2tpbmcgbWUgdG8gdHJhY2UgdGhlIGNhbGxzIHRvIHRoZSBgYXRoMTJrX2NvcmVfaHdfZ3JvdXBfc3RhcnRgIGZ1bmN0aW9uLiBUaGF0IG1lYW5zIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgYmVpbmcgaW52b2tlZCB3aXRoaW4gdGhlIGBhdGgxMmtgIGRyaXZlci4gR2l2ZW4gdGhhdCB0aGlzIGlzIGEgaGFyZHdhcmUgZ3JvdXAtcmVsYXRlZCBmdW5jdGlvbiwgSSBpbW1lZGlhdGVseSBhc3N1bWUgaXQmIzM5O3MgZGVhbGluZyB3aXRoIHNvbWUgbGV2ZWwgb2YgY29uY3VycmVuY3kgb3IgdGFzayBncm91cGluZywgbGlrZWx5IHJlbGF0ZWQgdG8gdGhlIGV4ZWN1dGlvbiBvZiBjb21tYW5kcyBvbiB0aGUgaGFyZHdhcmUuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBlaXRoZXIgdXNlIHN0YXRpYyBhbmFseXNpcyB0byBzZWUgdGhlIGNvZGUgc3RydWN0dXJlIG9yIGR5bmFtaWMgYW5hbHlzaXMgdG8gc2VlIHdoZXJlIHRoZSBjYWxsIG9jY3VycyBpbiBleGVjdXRpb24uIEkgY291bGQgdXNlIHRvb2xzIGxpa2UgYGNzY29wZWAsIGBjdGFnc2AsIG9yIHBlcmhhcHMgZXZlbiBzb21ldGhpbmcgbGlrZSBgcGVyZmAgb3IgYSBrZXJuZWwgdHJhY2luZyB0b29sIGlmIEkgd2FudCB0aGUgZHluYW1pYyBiZWhhdmlvci4gSSYjMzk7bGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgY29udGV4dCB0cmlnZ2VycyBpdHMgZXhlY3V0aW9uLCB3aGF0IG90aGVyIGZ1bmN0aW9ucyBpdCBpbnRlcmFjdHMgd2l0aCwgYW5kIHdoYXQgaXRzIG92ZXJhbGwgcm9sZSBpbiB0aGUgbGFyZ2VyIGBhdGgxMmtgIGVjb3N5c3RlbSBpcy4gVGhpcyBpbnZlc3RpZ2F0aW9uIHdpbGwgcHJvYmFibHkgcHJvdmlkZSBjbHVlcyBhYm91dCB3aGF0IGFzcGVjdHMgb2YgdGhlIGhhcmR3YXJlIGFyZSBiZWluZyBhZmZlY3RlZCBieSBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTA6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoMTJrX2NvcmVfaHdfZ3JvdXBfc3RhcnQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jPTExMzI9c3RhdGljIGludCBhdGgxMmtfY29yZV9tbG9fc2V0dXAoc3RydWN0IGF0aDEya19od19ncm91cCAqYWcpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmMtMTE1Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jOjExNTg6c3RhdGljIGludCBhdGgxMmtfY29yZV9od19ncm91cF9zdGFydChzdHJ1Y3QgYXRoMTJrX2h3X2dyb3VwICphZylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jLTExNTkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jPTEyMzM9c3RhdGljIGlubGluZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmM6MTIzNDpib29sIGF0aDEya19jb3JlX2h3X2dyb3VwX3N0YXJ0X3JlYWR5KHN0cnVjdCBhdGgxMmtfaHdfZ3JvdXAgKmFnKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmMtMTIzNS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmM9MTMxND1pbnQgYXRoMTJrX2NvcmVfcW1pX2Zpcm13YXJlX3JlYWR5KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmMtMTM0Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jOjEzNDg6XHRpZiAoYXRoMTJrX2NvcmVfaHdfZ3JvdXBfc3RhcnRfcmVhZHkoYWcpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYzoxMzQ5Olx0XHRyZXQgPSBhdGgxMmtfY29yZV9od19ncm91cF9zdGFydChhZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYy0xMzUwLVx0XHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmM9MTY0Mj1zdGF0aWMgdm9pZCBhdGgxMmtfY29yZV9yZXN0YXJ0KHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYy0xNjY1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmM6MTY2NjpcdFx0aWYgKCFhdGgxMmtfY29yZV9od19ncm91cF9zdGFydF9yZWFkeShhZykpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jLTE2NjctXHRcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmFnLVx1MDAzZW11dGV4KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTA6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTI4OAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDExMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBhdGgxMmsgYW5kIFFNSSBGaXJtd2FyZSBSZWFkaW5lc3MqKgoKT2theSwgc28gYGF0aDEya19jb3JlX3FtaV9maXJtd2FyZV9yZWFkeWAgaGFzIGZpcmVkLCBtZWFuaW5nIHRoZSBRTUkgZmlybXdhcmUgaXMgZmluYWxseSB1cCBhbmQgcnVubmluZyBvbiB0aGUgUXVhbGNvbW0gTUhJLCBQQ0llLCBvciBBSEIgaGFyZHdhcmUuIEV4Y2VsbGVudCEgTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc3VwcG9ydGVkIGJ1cyBhcmNoaXRlY3R1cmVzIGZvciB0aGlzIG1vZHVsZS4gTGV0JiMzOTtzIHNlZS4uLiBsb29raW5nIGF0IHRoZSBgYXRoMTJrYCBkaXJlY3Rvcnkgc3RydWN0dXJlLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrYCwgcmV2ZWFscyBgcGNpLmNgIGFuZCBgYWhiLmNgLiBUaGF0IGdpdmVzIG1lIGEgZ29vZCBzdGFydGluZyBwb2ludC4gTm93LCBJJiMzOTttIGN1cmlvdXMgYWJvdXQgc29tZXRoaW5nIGVsc2UuIEhhcyBhbnlvbmUgYWRkZWQgVVNCIHN1cHBvcnQgZm9yIGF0aDEyaz8gTGV0IG1lIHNjYW4gdGhlIGNvbnRlbnRzIG9mIHRoYXQgYGF0aDEya2AgZGlyZWN0b3J5IHRvIG1ha2Ugc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnl0aGluZy4gSSYjMzk7bGwgY2hlY2sgdGhlIGRpcmVjdG9yeSBmaWxlcyB0byBzZWUgaWYgYW55dGhpbmcgaXMgdGhlcmUuIEkgYW0gY3VyaW91cyB0byBrbm93IGJlY2F1c2Ugb2YgcG90ZW50aWFsIHVzZSBjYXNlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTA6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5jb2Rlc2VhcmNoLWRpci1pbmRleDwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RGlyJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlcyYjMzQ7OiBbCiAgICAmIzM0O2FjcGkuYyYjMzQ7LAogICAgJiMzNDthY3BpLmgmIzM0OywKICAgICYjMzQ7YWhiLmMmIzM0OywKICAgICYjMzQ7YWhiLmgmIzM0OywKICAgICYjMzQ7Y2UuYyYjMzQ7LAogICAgJiMzNDtjZS5oJiMzNDssCiAgICAmIzM0O2Ntbl9kZWZzLmgmIzM0OywKICAgICYjMzQ7Y29yZS5jJiMzNDssCiAgICAmIzM0O2NvcmUuaCYjMzQ7LAogICAgJiMzNDtjb3JlZHVtcC5jJiMzNDssCiAgICAmIzM0O2NvcmVkdW1wLmgmIzM0OywKICAgICYjMzQ7ZGJyaW5nLmMmIzM0OywKICAgICYjMzQ7ZGJyaW5nLmgmIzM0OywKICAgICYjMzQ7ZGVidWcuYyYjMzQ7LAogICAgJiMzNDtkZWJ1Zy5oJiMzNDssCiAgICAmIzM0O2RlYnVnZnMuYyYjMzQ7LAogICAgJiMzNDtkZWJ1Z2ZzLmgmIzM0OywKICAgICYjMzQ7ZGVidWdmc19odHRfc3RhdHMuYyYjMzQ7LAogICAgJiMzNDtkZWJ1Z2ZzX2h0dF9zdGF0cy5oJiMzNDssCiAgICAmIzM0O2RlYnVnZnNfc3RhLmMmIzM0OywKICAgICYjMzQ7ZGVidWdmc19zdGEuaCYjMzQ7LAogICAgJiMzNDtkcC5jJiMzNDssCiAgICAmIzM0O2RwLmgmIzM0OywKICAgICYjMzQ7ZHBfY21uLmgmIzM0OywKICAgICYjMzQ7ZHBfaHR0LmMmIzM0OywKICAgICYjMzQ7ZHBfaHR0LmgmIzM0OywKICAgICYjMzQ7ZHBfbW9uLmMmIzM0OywKICAgICYjMzQ7ZHBfbW9uLmgmIzM0OywKICAgICYjMzQ7ZHBfcGVlci5jJiMzNDssCiAgICAmIzM0O2RwX3BlZXIuaCYjMzQ7LAogICAgJiMzNDtkcF9yeC5jJiMzNDssCiAgICAmIzM0O2RwX3J4LmgmIzM0OywKICAgICYjMzQ7ZHBfdHguYyYjMzQ7LAogICAgJiMzNDtkcF90eC5oJiMzNDssCiAgICAmIzM0O2Z3LmMmIzM0OywKICAgICYjMzQ7ZncuaCYjMzQ7LAogICAgJiMzNDtoYWwuYyYjMzQ7LAogICAgJiMzNDtoYWwuaCYjMzQ7LAogICAgJiMzNDtoaWYuaCYjMzQ7LAogICAgJiMzNDtodGMuYyYjMzQ7LAogICAgJiMzNDtodGMuaCYjMzQ7LAogICAgJiMzNDtody5oJiMzNDssCiAgICAmIzM0O21hYy5jJiMzNDssCiAgICAmIzM0O21hYy5oJiMzNDssCiAgICAmIzM0O21oaS5jJiMzNDssCiAgICAmIzM0O21oaS5oJiMzNDssCiAgICAmIzM0O3AycC5jJiMzNDssCiAgICAmIzM0O3AycC5oJiMzNDssCiAgICAmIzM0O3BjaS5jJiMzNDssCiAgICAmIzM0O3BjaS5oJiMzNDssCiAgICAmIzM0O3BlZXIuYyYjMzQ7LAogICAgJiMzNDtwZWVyLmgmIzM0OywKICAgICYjMzQ7cW1pLmMmIzM0OywKICAgICYjMzQ7cW1pLmgmIzM0OywKICAgICYjMzQ7cmVnLmMmIzM0OywKICAgICYjMzQ7cmVnLmgmIzM0OywKICAgICYjMzQ7dGVzdG1vZGUuYyYjMzQ7LAogICAgJiMzNDt0ZXN0bW9kZS5oJiMzNDssCiAgICAmIzM0O3RoZXJtYWwuYyYjMzQ7LAogICAgJiMzNDt0aGVybWFsLmgmIzM0OywKICAgICYjMzQ7dHJhY2UuYyYjMzQ7LAogICAgJiMzNDt0cmFjZS5oJiMzNDssCiAgICAmIzM0O3dtaS5jJiMzNDssCiAgICAmIzM0O3dtaS5oJiMzNDssCiAgICAmIzM0O3dvdy5jJiMzNDssCiAgICAmIzM0O3dvdy5oJiMzNDsKICBdLAogICYjMzQ7U3ViZGlycyYjMzQ7OiBbCiAgICAmIzM0O3dpZmk3JiMzNDsKICBdCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTA6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAxMTcKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA2MjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiBXb3J0aEZ1enppbmcgZm9yIGF0aDEyayoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZGVjaWRlIGlmIHRoaXMgYGF0aDEya2AgZHJpdmVyIGlzIHdvcnRoIGZ1enppbmcuIFRoZSBpbnN0cnVjdGlvbnMgYXJlIHByZXR0eSBjbGVhciBhYm91dCB0aGUgbmVnYXRpdmUgYW5kIHBvc2l0aXZlIGNyaXRlcmlhLCBzbyBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duIHN5c3RlbWF0aWNhbGx5LiBJdCBsb29rcyBsaWtlIHRoZSBvbmx5IGZpbGVzIHRvIGZvY3VzIG9uIGFyZSBgcGNpLmNgIGFuZCBgYWhiLmNgIGluIHRoZSBhdGgxMmsgZHJpdmVyLgoKRmlyc3QsIEkgbmVlZCB0byBjaGVjayB0aGUgJiMzNDtuZWdhdGl2ZSBjcml0ZXJpYSYjMzQ7IGluIFNlY3Rpb24gMi4gVGhlIGtleSBoZXJlIGlzICpzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUqIGFuZCAqdW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzKi4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGxvb2tpbmcgYXQgd2hldGhlciB0aGUgY2hhbmdlcyBhcmUgbGltaXRlZCB0bzoKCiogICBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcy9TbWFydE5JQ3MvR1BVIGRyaXZlcnMgKnJlcXVpcmluZyBwaHlzaWNhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gUUVNVSouCiogICBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIHRoYXQgb25seSBydW4gZHVyaW5nIGhvdC11bnBsdWcgb3IgbWFudWFsIHVuYmluZGluZy4KKiAgIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGRpZmZlcmVudCBhcmNoaXRlY3R1cmVzLgoKTm93LCBgYXRoMTJrYCBpcyBhIHZlbmRvci1zcGVjaWZpYyB3aXJlbGVzcyBkcml2ZXIgZm9yIFF1YWxjb21tJiMzOTtzIDgwMi4xMWJlIGhhcmR3YXJlLiBJdCBleHBsaWNpdGx5ICpyZXF1aXJlcyogYSBwaHlzaWNhbCBQQ0llL0FIQiBBU0lDLCBzcGVjaWZpY2FsbHkgdGhlIFdDTjc4NTAvUUNOOTI3NC9JUFE1MzMyIGNoaXBzLiBUaGlzIGlzIG5vdCBhY2Nlc3NpYmxlIHRocm91Z2ggdmlydHVhbCBidXNlcyBzdWNoIGFzIHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIG9yIGFueSBvZiB0aG9zZSBlbXVsYXRlZCBpbnRlcmZhY2VzLiBXaXRob3V0IHRoYXQgcGh5c2ljYWwgaGFyZHdhcmUgYW5kIHRoZSBhc3NvY2lhdGVkIGZpcm13YXJlLCBpdCYjMzk7cyBub3QgZ29pbmcgdG8gcHJvYmUsIHJlZ2lzdGVyIHdpdGggbWFjODAyMTEsIG9yIGV4ZWN1dGUgYW55IG9mIHRoZSBgYXRoMTJrYCBjb2RlLCBjZXJ0YWlubHkgbm90IGBhdGgxMmtfbWFjX29wX3N0YV9zdGF0ZWAuIFRoYXQgY2VydGFpbmx5IG1lZXRzIHRoZSBmaXJzdCBuZWdhdGl2ZSBjcml0ZXJpYTogU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlLgoKSSYjMzk7bGwgcXVpY2tseSBjaGVjayBmb3IgYW55IHZpcnR1YWwgaGFyZHdhcmUgb3Igc2ltdWxhdGlvbiBmb3IgYXRoMTJrLCBqdXN0IHRvIGJlIHN1cmUuIE1hYzgwMjExIGRvZXMgaGF2ZSBgbWFjODAyMTFfaHdzaW1gLCBidXQgdGhhdCBpcyBjb21wbGV0ZWx5IHNlcGFyYXRlIGFuZCBkb2VzbiYjMzk7dCBydW4gYW55IG9mIHRoZSBgYXRoMTJrYCBjb2RlLiBgYXRoMTJrYCBpcyBzcGVjaWZpY2FsbHkgdGllZCB0byBQQ0llIGRldmljZSBJRHMgb3IgQUhCIHBsYXRmb3JtIGRldmljZXMuCgpUaGVyZWZvcmUsIGJlY2F1c2UgdGhpcyBkcml2ZXIgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgcGh5c2ljYWwgZGV2aWNlIGRyaXZlciB0aGF0IGlzIGRlcGVuZGVudCBvbiB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUsIGl0IGZpdHMgc3F1YXJlbHkgd2l0aGluIHRoZSAmIzM0O3N0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSYjMzQ7IG5lZ2F0aXZlIGNyaXRlcmlhLiBCYXNlZCBvbiB0aGUgbmVnYXRpdmUgY3JpdGVyaWEgZnJvbSBTZWN0aW9uIDIgb2YgdGhlIGluc3RydWN0aW9ucywgSSYjMzk7ZCBzYXkgdGhpcyBpcyAqKm5vdCoqIFdvcnRoRnV6emluZy4gSSYjMzk7bGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhlIGBwY2kuY2AgZmlsZSB0byBlbnN1cmUgdGhhdCBteSBhc3N1bXB0aW9uIGlzIGNvcnJlY3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDEwOjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O01PRFVMRV9ERVZJQ0VfVEFCTEUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvYWhiLmM9NDg9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgYXRoMTJrX3dpZmk3X2FoYl9vZl9tYXRjaFtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvYWhiLmMtNTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2FoYi5jOjU4Ok1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGF0aDEya193aWZpN19haGJfb2ZfbWF0Y2gpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9haGIuYy01OS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L3BjaS5jPTM0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBhdGgxMmtfd2lmaTdfcGNpX2lkX3RhYmxlW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9wY2kuYy00MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvcGNpLmM6NDE6TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIGF0aDEya193aWZpN19wY2lfaWRfdGFibGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9wY2kuYy00Mi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTA6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE2MjQKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiA4NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFeGFtaW5pbmcgdGhlIERyaXZlciYjMzk7cyBEZXZpY2UgVGFibGUqKgoKT2theSwgc28gSSBzZWUgdGhlc2UgdHdvIGRldmljZSB0YWJsZSBkZWNsYXJhdGlvbnM6IGBNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgYXRoMTJrX3dpZmk3X3BjaV9pZF90YWJsZSk7YCBhbmQgYE1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGF0aDEya193aWZpN19haGJfb2ZfbWF0Y2gpO2AuIFJpZ2h0LCB0aGlzIHRlbGxzIG1lIHRoZSBkcml2ZXIgaXMgZGVzaWduZWQgdG8gd29yayB3aXRoIGJvdGggUENJIGFuZCBPbi1DaGlwIChBSEIpIGRldmljZXMuIE15IGltbWVkaWF0ZSBpbnRlcmVzdCBpcyBpbiB0aGUgUENJIGRldmljZXMsIHNwZWNpZmljYWxseSBzaW5jZSB0aGUgY29kZSBtZW50aW9ucyBRdWFsY29tbS4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGRyaWxsIGRvd24gaW50byB3aGF0IFBDSSBJRHMgYXJlIGFjdHVhbGx5IGxpc3RlZCBpbiBgYXRoMTJrX3dpZmk3X3BjaV9pZF90YWJsZWAuIEkgbmVlZCB0byBzZWUgd2hpY2ggc3BlY2lmaWMgdmVuZG9yIGFuZCBkZXZpY2UgSURzIHRoaXMgZHJpdmVyIGNsYWltcyB0byBzdXBwb3J0LCB0byBlbnN1cmUgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBoYXJkd2FyZSBJJiMzOTttIHRhcmdldGluZyBvciBleGFtaW5pbmcuIExldCYjMzk7cyBzZWUuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTA6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L3BjaS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAzMDpcdFxuICAzMTpcdCNkZWZpbmUgV0lORE9XX1JFR19BRERSRVNTXHRcdDB4MzEwY1xuICAzMjpcdCNkZWZpbmUgV0lORE9XX1JFR19BRERSRVNTX1FDQzIwNzJcdDB4MzI3OFxuICAzMzpcdFxuICAzNDpcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBhdGgxMmtfd2lmaTdfcGNpX2lkX3RhYmxlW10gPSB7XG4gIDM1Olx0XHR7IFBDSV9WREVWSUNFKFFDT00sIFFDTjkyNzRfREVWSUNFX0lEKSB9LFxuICAzNjpcdFx0eyBQQ0lfVkRFVklDRShRQ09NLCBXQ043ODUwX0RFVklDRV9JRCkgfSxcbiAgMzc6XHRcdHsgUENJX1ZERVZJQ0UoUUNPTSwgUUNDMjA3Ml9ERVZJQ0VfSUQpIH0sXG4gIDM4Olx0XHR7fVxuICAzOTpcdH07XG4gIDQwOlx0XG4gIDQxOlx0TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIGF0aDEya193aWZpN19wY2lfaWRfdGFibGUpO1xuICA0MjpcdFxuICA0MzpcdC8qIFRPRE86IHJldmlzaXQgSVJRIG1hcHBpbmcgZm9yIG5ldyBTUk5HJiMzOTtzICovXG4gIDQ0Olx0c3RhdGljIGNvbnN0IHN0cnVjdCBhdGgxMmtfbXNpX2NvbmZpZyBhdGgxMmtfd2lmaTdfbXNpX2NvbmZpZ1tdID0ge1xuICA0NTpcdFx0e1xuICA0NjpcdFx0XHQudG90YWxfdmVjdG9ycyA9IDE2LFxuICA0NzpcdFx0XHQudG90YWxfdXNlcnMgPSAzLFxuICA0ODpcdFx0XHQudXNlcnMgPSAoc3RydWN0IGF0aDEya19tc2lfdXNlcltdKSB7XG4gIDQ5Olx0XHRcdFx0eyAubmFtZSA9IFwmIzM0O01ISVwmIzM0OywgLm51bV92ZWN0b3JzID0gMywgLmJhc2VfdmVjdG9yID0gMCB9LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxMDozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjMxOAoJCQkJCQkJb3V0cHV0OiAxNDQKCQkJCQkJCXRob3VnaHRzOiAyOTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudDogVW5yZWFjaGFibGUgQ29kZSBpbiBhIFZpcnR1YWxpemVkIEVudmlyb25tZW50KioKCk9rYXksIHNvIHRoZSBjb2RlIEkmIzM5O20gbG9va2luZyBhdCBtb2RpZmllcyBgYXRoMTJrX21hY19vcF9zdGFfc3RhdGUoKWAgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmNgLiBJJiMzOTt2ZSBxdWlja2x5IGNvbmZpcm1lZCB0aGF0IHRoZSBgYXRoMTJrYCBkcml2ZXIgaXMsIGFzIGV4cGVjdGVkLCBkZXNpZ25lZCBmb3IgUXVhbGNvbW0gV2ktRmkgNyBjaGlwc2V0cy4gQ3J1Y2lhbGx5LCB0aGVzZSBjaGlwc2V0cyByZWx5IG9uIGVpdGhlciBQQ0llIG9yIEFIQiBidXMgY29ubmVjdGlvbnMsIHNwZWNpZmljYWxseSBkZXZpY2VzIGxpa2UgdGhlIFFDTjkyNzQsIFdDTjc4NTAsIG9yIFFDQzIwNzIuIEFuZCBoZXJlJiMzOTtzIHRoZSBraWNrZXI6IEkga25vdyBmcm9tIGV4cGVyaWVuY2UgdGhhdCB0aGVzZSBwYXJ0aWN1bGFyIGRldmljZXMsIG9yIGV2ZW4gdGhlIHVuZGVybHlpbmcgQUhCIG5vZGVzLCBhcmUgdXR0ZXJseSB1bmF2YWlsYWJsZSBhbmQgY2Fubm90IGJlIG1lYW5pbmdmdWxseSBwcm9iZWQgd2l0aGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIHN1Y2ggYXMgUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgKEdDRSkuIFRoZXkgKnJlcXVpcmUqIHBoeXNpY2FsIGhhcmR3YXJlLgoKVGhlcmVmb3JlLCB0aGlzIG1vZGlmaWNhdGlvbiBpcywgZm9yIGFsbCBpbnRlbnRzIGFuZCBwdXJwb3Nlcywgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGluIGFueSBmdXp6aW5nIGNvbnRleHQgSSBjYW4gcmVhbGlzdGljYWxseSBkZXBsb3kuIFRoZSBjb2RlIHNwZWNpZmljYWxseSBtZW50aW9ucyB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsIGlvbmljLCBhbWRncHUpIGFsbCBvZiB3aGljaCByZXF1aXJlIHRob3NlIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcy4gVGhlIGZhY3QgdGhhdCB0aGUgdGFyZ2V0IGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiB0aGVzZSBzdGFuZGFyZCBlbnZpcm9ubWVudHMgaXMgYSBjcml0aWNhbCBsaW1pdGF0aW9uIGZvciBmdXp6aW5nLgoKTXkgYW5hbHlzaXMgeWllbGRzIHRoaXMgY29uY2x1c2lvbiBmb3IgdGhlIHRvb2w6CgpgV29ydGhGdXp6aW5nYDogZmFsc2UKYEZvY3VzU3ltYm9sc2A6IFtdCmBFbmFibGVDb25maWdzYDogW10KYFJlYXNvbmluZ2A6IFRoZSBwYXRjaCBtb2RpZmllcyBgYXRoMTJrX21hY19vcF9zdGFfc3RhdGUoKWAgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmNgLiBUaGUgYGF0aDEya2AgZHJpdmVyIGlzIGZvciBRdWFsY29tbSBXaS1GaSA3IGNoaXBzZXRzIGNvbm5lY3RlZCB2aWEgUENJZSBvciBBSEIgYnVzIChlLmcuLCBXQ043ODUwLCBRQ045Mjc0KS4gSXQgcmVxdWlyZXMgdmVuZG9yLXNwZWNpZmljIHBoeXNpY2FsIEFTSUMvUENJZSBoYXJkd2FyZSBhbmQgcHJvcHJpZXRhcnkgZmlybXdhcmUgdGhhdCBjYW5ub3QgYmUgZW11bGF0ZWQgb3IgcHJvYmVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxMDozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGF0aDEya19tYWNfb3Bfc3RhX3N0YXRlKCkgaW4gZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYywgd2hpY2ggYmVsb25ncyB0byB0aGUgUXVhbGNvbW0gV2ktRmkgNyAoYXRoMTJrKSBkcml2ZXIuIFRoaXMgZHJpdmVyIHRhcmdldHMgcGh5c2ljYWwgUXVhbGNvbW0gUENJZS9BSEIgY2hpcHNldHMgKGUuZy4sIFdDTjc4NTAsIFFDTjkyNzQpIHJlcXVpcmluZyBzcGVjaWZpYyBwaHlzaWNhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKS4gQ29uc2VxdWVudGx5LCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBhdGgxMmtfbWFjX29wX3N0YV9zdGF0ZSgpIGluIGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMsIHdoaWNoIGJlbG9uZ3MgdG8gdGhlIFF1YWxjb21tIFdpLUZpIDcgKGF0aDEyaykgZHJpdmVyLiBUaGlzIGRyaXZlciB0YXJnZXRzIHBoeXNpY2FsIFF1YWxjb21tIFBDSWUvQUhCIGNoaXBzZXRzIChlLmcuLCBXQ043ODUwLCBRQ045Mjc0KSByZXF1aXJpbmcgc3BlY2lmaWMgcGh5c2ljYWwgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkuIENvbnNlcXVlbnRseSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTA6Mzg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDEwOjM3OjA2LjU5MDg5NDkwM1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk3NzcwMDc3Mzg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYXRoMTJrX21hY19vcF9zdGFfc3RhdGUoKSBpbiBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jLCB3aGljaCBiZWxvbmdzIHRvIHRoZSBRdWFsY29tbSBXaS1GaSA3IChhdGgxMmspIGRyaXZlci4gVGhpcyBkcml2ZXIgdGFyZ2V0cyBwaHlzaWNhbCBRdWFsY29tbSBQQ0llL0FIQiBjaGlwc2V0cyAoZS5nLiwgV0NONzg1MCwgUUNOOTI3NCkgcmVxdWlyaW5nIHNwZWNpZmljIHBoeXNpY2FsIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLiBDb25zZXF1ZW50bHksIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDEwOjM3OjA2LjU5MDkwMTA5M1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ5MjA3ODc3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGJiYzJlNmJhNjJkMGRhODIwNDgzYmFhMTIwYThmY2YzMDUwNTljZDJcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBTZXAgMTUgMTA6Mzc6MDQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmNcXG5pbmRleCBkNDExNmJhMGRhMDg5Li41Nzg2MTAwM2MxNWIwIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jXFxuQEAgLTc4NDUsNyArNzg0NSw3IEBAIGludCBhdGgxMmtfbWFjX29wX3N0YV9zdGF0ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4gXFx0XFx0XFx0XFx0YXRoMTJrX2h3X3dhcm4oYWgsIFxcXCJmYWlsZWQgdG8gdmVyaWZ5IGFzc29jIGxpbmsgc2V0dGluZyB3aXRoIGxpbmsgaWQgJXVcXFxcblxcXCIsXFxuIFxcdFxcdFxcdFxcdFxcdCAgICAgICBsaW5rX2lkKTtcXG4gXFx0XFx0XFx0XFx0cmV0ID0gLUVJTlZBTDtcXG4tXFx0XFx0XFx0XFx0Z290byBleGl0O1xcbitcXHRcXHRcXHRcXHRnb3RvIGZyZWVfdW5hc3NpZ25fbGluaztcXG4gXFx0XFx0XFx0fVxcbiBcXG4gXFx0XFx0XFx0YXJzdGEtXFx1MDAzZWlzX2Fzc29jX2xpbmsgPSB0cnVlO1xcbkBAIC03OTAzLDcgKzc5MDMsNyBAQCBpbnQgYXRoMTJrX21hY19vcF9zdGFfc3RhdGUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuIFxcbiBcXHRcXHRcXHRpZiAob2xkX3N0YXRlID09IElFRUU4MDIxMV9TVEFfTk9URVhJU1QgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0XFx0ICAgIG5ld19zdGF0ZSA9PSBJRUVFODAyMTFfU1RBX05PTkUpXFxuLVxcdFxcdFxcdFxcdGdvdG8gcGVlcl9kZWxldGU7XFxuK1xcdFxcdFxcdFxcdGdvdG8gZnJlZV91bmFzc2lnbl9saW5rO1xcbiBcXHRcXHRcXHRlbHNlXFxuIFxcdFxcdFxcdFxcdGdvdG8gZXhpdDtcXG4gXFx0XFx0fVxcbkBAIC03OTQzLDYgKzc5NDMsOCBAQCBpbnQgYXRoMTJrX21hY19vcF9zdGFfc3RhdGUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuIFxcdHJldCA9IDA7XFxuIFxcdGdvdG8gZXhpdDtcXG4gXFxuK2ZyZWVfdW5hc3NpZ25fbGluazpcXG4rXFx0YXRoMTJrX21hY19mcmVlX3VuYXNzaWduX2xpbmtfc3RhKGFoLCBhaHN0YSwgbGlua19pZCk7XFxuIHBlZXJfZGVsZXRlOlxcbiBcXHRhdGgxMmtfZHBfcGVlcl9kZWxldGUoXFx1MDAyNmFoLVxcdTAwM2VkcF9odywgc3RhLVxcdTAwM2VhZGRyLCBzdGEpO1xcbiBtbF9wZWVyX2lkX2NsZWFyOlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxMDozNzowOC4wODM3MjI0MjVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjk2Mjc3MjMwODk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBhdGgxMmtfbWFjX29wX3N0YV9zdGF0ZSgpIGluIGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMsIHdoaWNoIGJlbG9uZ3MgdG8gdGhlIFF1YWxjb21tIFdpLUZpIDcgKGF0aDEyaykgZHJpdmVyLiBUaGlzIGRyaXZlciB0YXJnZXRzIHBoeXNpY2FsIFF1YWxjb21tIFBDSWUvQUhCIGNoaXBzZXRzIChlLmcuLCBXQ043ODUwLCBRQ045Mjc0KSByZXF1aXJpbmcgc3BlY2lmaWMgcGh5c2ljYWwgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkuIENvbnNlcXVlbnRseSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBiYmMyZTZiYTYyZDBkYTgyMDQ4M2JhYTEyMGE4ZmNmMzA1MDU5Y2QyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBTZXAgMTUgMTA6Mzc6MDQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuY1xuaW5kZXggZDQxMTZiYTBkYTA4OS4uNTc4NjEwMDNjMTViMCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmNcbkBAIC03ODQ1LDcgKzc4NDUsNyBAQCBpbnQgYXRoMTJrX21hY19vcF9zdGFfc3RhdGUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4gXHRcdFx0XHRhdGgxMmtfaHdfd2FybihhaCwgXCJmYWlsZWQgdG8gdmVyaWZ5IGFzc29jIGxpbmsgc2V0dGluZyB3aXRoIGxpbmsgaWQgJXVcXG5cIixcbiBcdFx0XHRcdFx0ICAgICAgIGxpbmtfaWQpO1xuIFx0XHRcdFx0cmV0ID0gLUVJTlZBTDtcbi1cdFx0XHRcdGdvdG8gZXhpdDtcbitcdFx0XHRcdGdvdG8gZnJlZV91bmFzc2lnbl9saW5rO1xuIFx0XHRcdH1cbiBcbiBcdFx0XHRhcnN0YS1cdTAwM2Vpc19hc3NvY19saW5rID0gdHJ1ZTtcbkBAIC03OTAzLDcgKzc5MDMsNyBAQCBpbnQgYXRoMTJrX21hY19vcF9zdGFfc3RhdGUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4gXG4gXHRcdFx0aWYgKG9sZF9zdGF0ZSA9PSBJRUVFODAyMTFfU1RBX05PVEVYSVNUIFx1MDAyNlx1MDAyNlxuIFx0XHRcdCAgICBuZXdfc3RhdGUgPT0gSUVFRTgwMjExX1NUQV9OT05FKVxuLVx0XHRcdFx0Z290byBwZWVyX2RlbGV0ZTtcbitcdFx0XHRcdGdvdG8gZnJlZV91bmFzc2lnbl9saW5rO1xuIFx0XHRcdGVsc2VcbiBcdFx0XHRcdGdvdG8gZXhpdDtcbiBcdFx0fVxuQEAgLTc5NDMsNiArNzk0Myw4IEBAIGludCBhdGgxMmtfbWFjX29wX3N0YV9zdGF0ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbiBcdHJldCA9IDA7XG4gXHRnb3RvIGV4aXQ7XG4gXG4rZnJlZV91bmFzc2lnbl9saW5rOlxuK1x0YXRoMTJrX21hY19mcmVlX3VuYXNzaWduX2xpbmtfc3RhKGFoLCBhaHN0YSwgbGlua19pZCk7XG4gcGVlcl9kZWxldGU6XG4gXHRhdGgxMmtfZHBfcGVlcl9kZWxldGUoXHUwMDI2YWgtXHUwMDNlZHBfaHcsIHN0YS1cdTAwM2VhZGRyLCBzdGEpO1xuIG1sX3BlZXJfaWRfY2xlYXI6XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxMDozNzowOC4wODM3MjQyOTVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjo0ODk4OTA0MzQzNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoKipcblxuT2theSwgc28gdGhlIHBhdGNoIGlzIHRvdWNoaW5nIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jYC4gIE15IGZpcnN0IG1vdmUgaXMgdG8gZGl2ZSByaWdodCBpbiBhbmQgZGlzc2VjdCB0aGUgZGlmZi4gIEl0IHNlZW1zIHRvIGJlIG1vZGlmeWluZyBgYXRoMTJrX21hY19vcF9zdGFfc3RhdGVgIHdpdGhpbiB0aGUgYGF0aDEya2AgZHJpdmVyLiAgTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiV2hhdCdzIHRoZSBjb250ZXh0IGhlcmU/IFdoYXQgaXMgYGF0aDEya2AgYWN0dWFsbHkgcmVzcG9uc2libGUgZm9yP1wiXG5cblJpZ2h0LCB0aGF0J3MgdGhlIFF1YWxjb21tIFdpLUZpIDcgKDgwMi4xMWJlKSBkcml2ZXIuICBOb3csIHRoZSBjcml0aWNhbCBxdWVzdGlvbiwgZ2l2ZW4gbXkgbmVlZCBmb3IgYSBzdWl0YWJsZSBlbnZpcm9ubWVudCwgaXM6IENhbiBJIGV2ZW4gKnJlYWNoKiB0aGlzIGluIGEgc3RhbmRhcmQgdmlydHVhbGl6ZWQgc2V0dXAgbGlrZSBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZT8gIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBjYW4gZXZlbiB0ZXN0IGl0LlxuXG5Ib2xkIG9uLCBsZXQgbWUgcXVpY2tseSByZS1yZWFkIHRoZSBlbnZpcm9ubWVudCBzZXR1cCBpbnN0cnVjdGlvbnMuIE9oIHllcywgc2VjdGlvbiAyIGFkZHJlc3NlcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUuIExldCBtZSBxdWlja2x5IHJlZnJlc2ggd2hhdCB0aGF0IGVudGFpbHM6IFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgR1BVIGRyaXZlcnMgKG1seHN3LCBwZHNfY29yZSwgcWVkLCBpb25pYywgYW1kZ3B1KSB0aGF0IG5lZWQgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzLiBTbyB0aGF0J3MgdGhlIGh1cmRsZSBJJ20gdHJ5aW5nIHRvIG92ZXJjb21lLlxuXG5TbywgZG9lcyBgYXRoMTJrYCBmYWxsIGludG8gdGhhdCBjYXRlZ29yeT8gRG9lcyBpdCAqcmVxdWlyZSogcGh5c2ljYWwgaGFyZHdhcmUsIGJlIGl0IFBDSWUgb3IgcGxhdGZvcm0tc3BlY2lmaWM/IFRoaXMgaXMgY3J1Y2lhbC4gSSBuZWVkIHRvIGtub3cgaWYgaXQgY2FuIGJlIGVtdWxhdGVkIG9yIHNpbXVsYXRlZCBhdCBhbGwsIG9yIGlmIGl0J3Mgc3RyaWN0bHkgdGllZCB0byBRdWFsY29tbSBoYXJkd2FyZS5cblxuT2theSwgbGV0J3MgZXhwbG9yZSB0aGF0IGRyaXZlciBkaXJlY3RvcnkuICBObywgYGF0aDEya2AgZG9lc24ndCBzdXBwb3J0IHRoZSBtYWM4MDIxMV9od3NpbSBmcmFtZXdvcmsuICBJdCdzIGEgdmVuZG9yIGRyaXZlciwgdGFyZ2V0ZWQgYXQgUXVhbGNvbW0gc2lsaWNvbiwgbGlrZSBRQ045Mjc0LCBXQ043ODUwLCBJUFE1MzMyLCBldGMuXG5cbkNhbiBJIGdldCBhcm91bmQgdGhpcyB3aXRoIFVTQiwgaXMgaXQgYXZhaWxhYmxlIHZpYSBVU0I/IE5vLCB0aGF0J3Mgbm90IHRoZSBjYXNlIGhlcmUsIHRoYXQncyBQQ0kgb3IgcGxhdGZvcm0uXG5cblNvIG15IG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBLY29uZmlnIGZpbGUgZm9yIGBhdGgxMmtgIHRvIHNlZSB3aGF0IG9wdGlvbnMgbWlnaHQgc2hlZCBzb21lIGxpZ2h0IG9uIHRoZSBkZXBlbmRlbmNpZXMgYW5kIHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZS4gSSBuZWVkIHRvIHZlcmlmeSB3aGF0IG9wdGlvbnMgZXhpc3QgZm9yIGl0LCBhbmQgaG93IGl0IGlzIGVuYWJsZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxNTUsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNzUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxMDozNzo1Ny4wNzI3NzA2MDJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDk4MjU5NzIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEFUSDEyS1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzoyOmNvbmZpZyBBVEgxMktcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiUXVhbGNvbW0gV2ktRmkgNyBzdXBwb3J0IChhdGgxMmspXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzoxNzpjb25maWcgQVRIMTJLX0FIQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0xOC1cXHRib29sIFxcXCJRdWFsY29tbSBhdGgxMmsgQUhCIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjI1OmNvbmZpZyBBVEgxMktfREVCVUdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMjYtXFx0Ym9vbCBcXFwiYXRoMTJrIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0zNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6MzU6Y29uZmlnIEFUSDEyS19ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTM2LVxcdGJvb2wgXFxcIlF1YWxjb21tIGF0aDEyayBkZWJ1Z2ZzIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjQ0OmNvbmZpZyBBVEgxMktfVFJBQ0lOR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy00NS1cXHRib29sIFxcXCJhdGgxMmsgdHJhY2luZyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTUyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzo1Mzpjb25maWcgQVRIMTJLX0NPUkVEVU1QXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTU0LVxcdGJvb2wgXFxcImF0aDEyayBjb3JlZHVtcFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTA6Mzc6NTcuMTIyNjAxNzA1WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MjA5OTgzOTMwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqRXhhbWluaW5nIHRoZSBBdGhlcm9zIFdpcmVsZXNzIERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIGRpdmUgaW50byB0aGUgY29uZmlndXJhdGlvbiBmb3IgdGhlIGF0aDEyayB3aXJlbGVzcyBkcml2ZXIsIHNwZWNpZmljYWxseSBsb29raW5nIGF0IHRoZSBgS2NvbmZpZ2AgZmlsZS4gTXkgaW1tZWRpYXRlIGdvYWwgaXMgdG8gdW5kZXJzdGFuZCB0aGUgYnVpbGQgb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzIGZvciB0aGlzIHBhcnRpY3VsYXIgZHJpdmVyLiBJIG5lZWQgdG8gZ2V0IGEgY29tcHJlaGVuc2l2ZSB2aWV3IG9mIHdoYXQgZmVhdHVyZXMgYXJlIGNvbmZpZ3VyYWJsZSBhbmQgaG93IHRoZXkncmUgZW5hYmxlZCBvciBkaXNhYmxlZCBkdXJpbmcgdGhlIGtlcm5lbCBidWlsZCBwcm9jZXNzLiBUaGlzIGZpbGUgaXMgdGhlIGtleSB0byB0aGF0LiBJJ20gYXNzdW1pbmcgaXQgZGVmaW5lcyBhbGwgdGhlIHJlbGV2YW50IHBhcmFtZXRlcnMsIHRoZWlyIGRlZmF1bHQgc2V0dGluZ3MsIGFuZCBhbnkgZGVwZW5kZW5jaWVzIG9uIG90aGVyIGtlcm5lbCBjb21wb25lbnRzLiBJJ2xsIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIHZhcmlvdXMgZmVhdHVyZXMsIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIHRoZXkncmUgYWN0aXZhdGVkLCBhbmQgYW55IGludGVyYWN0aW9ucyB3aXRoIGhhcmR3YXJlIG9yIG90aGVyIHNvZnR3YXJlIG1vZHVsZXMuIFRoaXMgY291bGQgYmUgYW55dGhpbmcgZnJvbSByZWd1bGF0b3J5IGRvbWFpbiBzZXR0aW5ncyB0byBzcGVjaWZpYyBoYXJkd2FyZSBzdXBwb3J0LiBVbmRlcnN0YW5kaW5nIHRoaXMgY29uZmlndXJhdGlvbiBpcyB2aXRhbCBmb3IgYW55IHRyb3VibGVzaG9vdGluZyBvciBjdXN0b20gbW9kaWZpY2F0aW9ucyBJIG1pZ2h0IG5lZWQgdG8gdW5kZXJ0YWtlIGxhdGVyIG9uLiBMZXQncyBzZWUgd2hhdCB3ZSBjYW4gZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDU1NywiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDEwOjM3OjU5LjIyMjQ0NDAyN1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcxMjMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA2MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxcbiAgIDI6XFx0Y29uZmlnIEFUSDEyS1xcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIlF1YWxjb21tIFdpLUZpIDcgc3VwcG9ydCAoYXRoMTJrKVxcXCJcXG4gICA0OlxcdFxcdGRlcGVuZHMgb24gTUFDODAyMTEgXFx1MDAyNlxcdTAwMjYgSEFTX0RNQSBcXHUwMDI2XFx1MDAyNiBQQ0lcXG4gICA1OlxcdFxcdHNlbGVjdCBRQ09NX1FNSV9IRUxQRVJTXFxuICAgNjpcXHRcXHRzZWxlY3QgTUhJX0JVU1xcbiAgIDc6XFx0XFx0c2VsZWN0IFFSVFJcXG4gICA4OlxcdFxcdHNlbGVjdCBRUlRSX01ISVxcbiAgIDk6XFx0XFx0c2VsZWN0IFBDSV9QV1JDVFJMX1BXUlNFUSBpZiBIQVZFX1BXUkNUUkxcXG4gIDEwOlxcdFxcdGhlbHBcXG4gIDExOlxcdFxcdCAgRW5hYmxlIHN1cHBvcnQgZm9yIFF1YWxjb21tIFRlY2hub2xvZ2llcyBXaS1GaSA3IChJRUVFXFxuICAxMjpcXHRcXHQgIDgwMi4xMWJlKSBmYW1pbHkgb2YgY2hpcHNldHMsIGZvciBleGFtcGxlIFdDTjc4NTAgYW5kXFxuICAxMzpcXHRcXHQgIFFDTjkyNzQuXFxuICAxNDpcXHRcXG4gIDE1OlxcdFxcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBhIG1vZHVsZSwgaXQnbGwgYmUgY2FsbGVkIGF0aDEyay5cXG4gIDE2OlxcdFxcbiAgMTc6XFx0Y29uZmlnIEFUSDEyS19BSEJcXG4gIDE4OlxcdFxcdGJvb2wgXFxcIlF1YWxjb21tIGF0aDEyayBBSEIgc3VwcG9ydFxcXCJcXG4gIDE5OlxcdFxcdGRlcGVuZHMgb24gQVRIMTJLIFxcdTAwMjZcXHUwMDI2IFJFTU9URVBST0NcXG4gIDIwOlxcdFxcdHNlbGVjdCBRQ09NX01EVF9MT0FERVJcXG4gIDIxOlxcdFxcdHNlbGVjdCBRQ09NX1BBU1xcbiAgMjI6XFx0XFx0aGVscFxcbiAgMjM6XFx0XFx0ICBFbmFibGUgc3VwcG9ydCBmb3IgQXRoMTJrIEFIQiBidXMgY2hpcHNldHMsIGV4YW1wbGUgSVBRNTMzMi5cXG4gIDI0OlxcdFxcbiAgMjU6XFx0Y29uZmlnIEFUSDEyS19ERUJVR1xcbiAgMjY6XFx0XFx0Ym9vbCBcXFwiYXRoMTJrIGRlYnVnZ2luZ1xcXCJcXG4gIDI3OlxcdFxcdGRlcGVuZHMgb24gQVRIMTJLXFxuICAyODpcXHRcXHRoZWxwXFxuICAyOTpcXHRcXHQgIEVuYWJsZSBkZWJ1ZyBzdXBwb3J0LCBmb3IgZXhhbXBsZSBkZWJ1ZyBtZXNzYWdlcyB3aGljaCBtdXN0XFxuICAzMDpcXHRcXHQgIGJlIGVuYWJsZWQgc2VwYXJhdGVseSB1c2luZyB0aGUgZGVidWdfbWFzayBtb2R1bGUgcGFyYW1ldGVyLlxcbiAgMzE6XFx0XFxuICAzMjpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IFkgdG8gbWFrZSBpdCBlYXNpZXIgdG8gZGVidWcgcHJvYmxlbXMuIEJ1dCBpZlxcbiAgMzM6XFx0XFx0ICB5b3Ugd2FudCBvcHRpbWFsIHBlcmZvcm1hbmNlIGNob29zZSBOLlxcbiAgMzQ6XFx0XFxuICAzNTpcXHRjb25maWcgQVRIMTJLX0RFQlVHRlNcXG4gIDM2OlxcdFxcdGJvb2wgXFxcIlF1YWxjb21tIGF0aDEyayBkZWJ1Z2ZzIHN1cHBvcnRcXFwiXFxuICAzNzpcXHRcXHRkZXBlbmRzIG9uIEFUSDEySyBcXHUwMDI2XFx1MDAyNiBNQUM4MDIxMV9ERUJVR0ZTXFxuICAzODpcXHRcXHRoZWxwXFxuICAzOTpcXHRcXHQgIEVuYWJsZSBhdGgxMmsgZGVidWdmcyBzdXBwb3J0XFxuICA0MDpcXHRcXG4gIDQxOlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgWSB0byBtYWtlIGl0IGVhc2llciB0byBkZWJ1ZyBwcm9ibGVtcy4gQnV0IGlmXFxuICA0MjpcXHRcXHQgIHlvdSB3YW50IG9wdGltYWwgcGVyZm9ybWFuY2UgY2hvb3NlIE4uXFxuICA0MzpcXHRcXG4gIDQ0OlxcdGNvbmZpZyBBVEgxMktfVFJBQ0lOR1xcbiAgNDU6XFx0XFx0Ym9vbCBcXFwiYXRoMTJrIHRyYWNpbmcgc3VwcG9ydFxcXCJcXG4gIDQ2OlxcdFxcdGRlcGVuZHMgb24gQVRIMTJLIFxcdTAwMjZcXHUwMDI2IEVWRU5UX1RSQUNJTkdcXG4gIDQ3OlxcdFxcdGhlbHBcXG4gIDQ4OlxcdFxcdCAgRW5hYmxlIGF0aDEyayB0cmFjaW5nIGluZnJhc3RydWN0dXJlLlxcbiAgNDk6XFx0XFxuICA1MDpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IFkgdG8gbWFrZSBpdCBlYXNpZXIgdG8gZGVidWcgcHJvYmxlbXMuIEJ1dCBpZlxcbiAgNTE6XFx0XFx0ICB5b3Ugd2FudCBvcHRpbWFsIHBlcmZvcm1hbmNlIGNob29zZSBOLlxcbiAgNTI6XFx0XFxuICA1MzpcXHRjb25maWcgQVRIMTJLX0NPUkVEVU1QXFxuICA1NDpcXHRcXHRib29sIFxcXCJhdGgxMmsgY29yZWR1bXBcXFwiXFxuICA1NTpcXHRcXHRkZXBlbmRzIG9uIEFUSDEyS1xcbiAgNTY6XFx0XFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXFxuICA1NzpcXHRcXHRoZWxwXFxuICA1ODpcXHRcXHQgIEVuYWJsZSBhdGgxMmsgY29yZWR1bXAgY29sbGVjdGlvblxcbiAgNTk6XFx0XFxuICA2MDpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IFkgdG8gbWFrZSBpdCBlYXNpZXIgdG8gZGVidWcgcHJvYmxlbXMuIEJ1dCBpZlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxMDozNzo1OS4yMjI1MTc0NjdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjozNjM2NjQ0NjM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgYXRoMTJrIGFuZCBpdHMgRW11bGF0aW9uIE9wdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgYGF0aDEya2AgcmlnaHQgbm93LiBJIGtub3cgaXQgaGluZ2VzIG9uIGBNQUM4MDIxMWAsIG5lZWRzIGBIQVNfRE1BYCwgYW5kIG5lZWRzIHRvIGJlIHJ1bm5pbmcgb24gYFBDSWAuIEl0J3MgcHJldHR5IGNsZWFyIHRoYXQgaXQgc3VwcG9ydHMgdGhvc2UgUXVhbGNvbW0gV2ktRmkgNyBjaGlwc2V0cyDigJMgV0NONzg1MCwgUUNOOTI3NCwgSVBRNTMzMiDigJMgYWxsIGhhcmR3YXJlLiBUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIGluIG15IG1pbmQgaXM6IGNhbiBJIGVtdWxhdGUgdGhpcyBpbiBRRU1VLCBvciBldmVuIHdpdGggYSBVU0IgZ2FkZ2V0IHNldHVwLCBvciBhIHZpcnR1YWwgZW52aXJvbm1lbnQ/IEkgbWVhbiwgbXkgaW5pdGlhbCB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgaXQncyBkZXNpZ25lZCBzcGVjaWZpY2FsbHkgZm9yIHRob3NlIFF1YWxjb21tIFdpLUZpIDcgY2hpcHMgdXNpbmcgUENJIG9yIEFIQiwgc28gbm8sIG5vdCByZWFsbHkuXG5cbkJ1dCwgaG9sZCBvbi4gQ2FuIEkgbG9hZCBvciBpbml0aWFsaXplIGl0IHdpdGhvdXQgdGhlIHBoeXNpY2FsIGhhcmR3YXJlIHByZXNlbnQ/IEkgbmVlZCB0byBjaGVjayB0aGlzLiBMZXQgbWUgbG9vayBpbnRvIGBhdGgxMmtfbWFjX29wX3N0YV9zdGF0ZWAuIFdoZXJlIGlzIHRoYXQgZnVuY3Rpb24gcmVnaXN0ZXJlZD8gQWhhLCBpdCdzIHBhcnQgb2YgYGllZWU4MDIxMV9vcHMgYXRoMTJrX21hY19vcHNgLCBzcGVjaWZpY2FsbHksIGAuc3RhX3N0YXRlID0gYXRoMTJrX21hY19vcF9zdGFfc3RhdGVgLiBTbyB0byBnZXQgdGhhdCBmdW5jdGlvbmFsaXR5LCBgaWVlZTgwMjExX3JlZ2lzdGVyX2h3YCAoZnJvbSBtYWM4MDIxMSkgbXVzdCBiZSBjYWxsZWQgdG8gcmVnaXN0ZXIgYGF0aDEya19tYWNfb3BzYC4gTm93LCB3aGVyZSBkb2VzIGF0aDEyayBhY3R1YWxseSBjYWxsIHRoYXQ/IEkgbmVlZCB0byB0cmFjayB0aGF0IGNhbGwgZG93biB3aXRoaW4gdGhlIGNvZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU2NjEsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNTIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxMDozODowMi44NTkxNjUyMzNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDk3MDUyMDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaWVlZTgwMjExX3JlZ2lzdGVyX2h3XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmtcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYz0xNDgwNT1zdGF0aWMgaW50IGF0aDEya19tYWNfaHdfcmVnaXN0ZXIoc3RydWN0IGF0aDEya19odyAqYWgpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jLTE1MDQyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmM6MTUwNDM6XFx0cmV0ID0gaWVlZTgwMjExX3JlZ2lzdGVyX2h3KGh3KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jLTE1MDQ0LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtMTUwNDktXFx0aWYgKGlzX21vbml0b3JfZGlzYWJsZSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jOjE1MDUwOlxcdFxcdC8qIFRoZXJlJ3MgYSByYWNlIGJldHdlZW4gY2FsbGluZyBpZWVlODAyMTFfcmVnaXN0ZXJfaHcoKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtMTUwNTEtXFx0XFx0ICogYW5kIGhlcmUgd2hlcmUgdGhlIG1vbml0b3IgbW9kZSBpcyBlbmFibGVkIGZvciBhIGxpdHRsZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxMDozODowMi45MDg4NzYzMDVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjozNTIxNTg4OTM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIGBhdGgxMmtfbWFjX2h3X3JlZ2lzdGVyYCBjYWxsLCBicm9rZW4gZG93biBhcyBJJ2QgdGhpbmsgdGhyb3VnaCBpdDpcblxuKipEaXZpbmcgaW50byBgYXRoMTJrX21hY19od19yZWdpc3RlcmAqKlxuXG5Pa2F5LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGBhdGgxMmtfbWFjX2h3X3JlZ2lzdGVyYCBjYWxsLiBJdCdzIGNsZWFybHkgYSBjcml0aWNhbCBmdW5jdGlvbiByZWxhdGVkIHRvIHRoZSBoYXJkd2FyZSByZWdpc3RyYXRpb24gd2l0aGluIHRoZSBhdGgxMmsgZHJpdmVyLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGNvbnNpZGVyOiBXaGF0IGFyZSB0aGUgdHlwaWNhbCBjb250ZXh0cyB3aGVyZSB5b3UnZCAqZXhwZWN0KiB0byBzZWUgYSBmdW5jdGlvbiB3aXRoIHRoaXMgbmFtZT8gR2l2ZW4gdGhhdCB0aGlzIGlzIGEgcmVnaXN0cmF0aW9uIGZ1bmN0aW9uLCBJJ2QgaW1tZWRpYXRlbHkgc3VzcGVjdCBpdCdzIGNhbGxlZCBkdXJpbmcgdGhlIGluaXRpYWxpemF0aW9uIG9yIGJyaW5nLXVwIG9mIHRoZSBhdGgxMmsgTUFDIGhhcmR3YXJlLCBwcm9iYWJseSBhcyBhIHBhcnQgb2YgdGhlIG92ZXJhbGwgZGV2aWNlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlLiBUaGUgY29yZSBpZGVhIGhlcmUgaXMgdG8gbWFrZSB0aGUgaGFyZHdhcmUgYXZhaWxhYmxlIHRvIHRoZSByZXN0IG9mIHRoZSBzeXN0ZW0uIEkgYWxzbyBuZWVkIHRvIHRoaW5rIGFib3V0IHRoZSBpbnB1dHMgYW5kIG91dHB1dHMgb2YgdGhpcyBzcGVjaWZpYyBmdW5jdGlvbi4gV2hhdCBkYXRhIGlzIGl0IHJlY2VpdmluZywgYW5kIHdoYXQgcmVzb3VyY2VzIGlzIGl0IGluaXRpYWxpemluZyBvciBhbGxvY2F0aW5nPyBJcyBpdCByZWxhdGVkIHRvIGludGVycnVwdHMgb3IgRE1BIGNoYW5uZWxzLCBvciBvdGhlciBlc3NlbnRpYWwgcmVnaXN0ZXJzPyBUaGUgZnVuY3Rpb24gbmFtZSBpcyB2ZXJ5IGNsZWFyOiBcImhhcmR3YXJlIHJlZ2lzdHJhdGlvbi5cIiBTbyB0aGlzIGZ1bmN0aW9uIGlzIGxpa2VseSBjYWxsZWQgZnJvbSB0aGUgTUFDIChtZWRpYSBhY2Nlc3MgY29udHJvbGxlcikgc3BlY2lmaWMgcG9ydGlvbiBvZiB0aGUgY29kZSwgd2hpY2ggaXMgcHJvYmFibHkgcmVsYXRlZCB0byB0aGUgTGludXgga2VybmVsJ3MgbWFjODAyMTEgZHJpdmVyLiBUaGlzIHdvdWxkIGJlIGEgZ29vZCBwbGFjZSB0byBzdGFydCBteSBzZWFyY2ggZm9yIGNhbGwgc2l0ZXMgYW5kIHRoZSBkYXRhIHRoYXQgaXQgcGFzc2VzIHRvIG90aGVyIHN1YnJvdXRpbmVzLiBJIHNob3VsZCB0aGluayBhYm91dCB0aGUgZGlmZmVyZW50IHN1Ym1vZHVsZXMgd2l0aGluIHRoZSBhdGgxMmsgZHJpdmVyIChsaWtlIHRoZSBmaXJtd2FyZSBpbnRlcmZhY2UsIHRoZSBoYXJkd2FyZSBhYnN0cmFjdGlvbiBsYXllciwgZXRjLikgYW5kIGNvbnNpZGVyIGhvdyB0aGlzIGZ1bmN0aW9uIGludGVyYWN0cyB3aXRoIHRob3NlIG1vZHVsZXMuIEZyb20gaGVyZSwgSSBuZWVkIHRvIHNlZSB3aGVyZSBpdCBnZXRzIGNhbGxlZCwgYW5kIGdvIHRocm91Z2ggdGhlIGNhbGwgZ3JhcGggdG8gc2VlIHdoYXQgdGhlIGNvbnRyb2wgZmxvdyBpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjU1NiwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDEwOjM4OjA2LjQzMDQ2NzhaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyMzk4NTQxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0aDEya19tYWNfaHdfcmVnaXN0ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEya1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jPTE0NzcxPXN0YXRpYyBpbnQgYXRoMTJrX21hY19zZXR1cF9yZWdpc3RlcihzdHJ1Y3QgYXRoMTJrICphcixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtMTQ4MDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYzoxNDgwNTpzdGF0aWMgaW50IGF0aDEya19tYWNfaHdfcmVnaXN0ZXIoc3RydWN0IGF0aDEya19odyAqYWgpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYy0xNDgwNi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jPTE1MzM4PWludCBhdGgxMmtfbWFjX3JlZ2lzdGVyKHN0cnVjdCBhdGgxMmtfaHdfZ3JvdXAgKmFnKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYy0xNTM0Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jOjE1MzQ3OlxcdFxcdHJldCA9IGF0aDEya19tYWNfaHdfcmVnaXN0ZXIoYWgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtMTUzNDgtXFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmM9Njk1OT1zdGF0aWMgaW50IGF0aDEya19yZWdfY2hhbl9saXN0X2V2ZW50KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTY5ODAtXFx0ICogZXZlbnQgaXMgZHJvcHBlZCBvciBmYWxscyBiYWNrLCB0aGUgY29tcGxldGlvbiB0aGUgY2FsbGVyIGluXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYzo2OTgxOlxcdCAqIGF0aDEya19tYWNfaHdfcmVnaXN0ZXIoKSBtYXkgYmUgd2FpdGluZyBvbiBpcyBzdGlsbCBzaWduYWxsZWQgYXRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTY5ODItXFx0ICogdGhlIGVuZCBhbmQgaXQgZG9lcyBub3QgdGltZSBvdXQuXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTcwNDQtXFx0ICogc28gdGhlIGNvbXBsZXRpb24gY2Fubm90IGJlIG1hcmtlZCBhdCB0aGF0IHBvaW50LlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmM6NzA0NTpcXHQgKiBUaGlzIGJvb3QtdGltZSB1cGRhdGUgaXMgaGFuZGxlZCBpbiBhdGgxMmtfbWFjX2h3X3JlZ2lzdGVyKClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTcwNDYtXFx0ICogYmVmb3JlIHJlZ2lzdGVyaW5nIHRoZSBoYXJkd2FyZS5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTA6Mzg6MDYuNDgyODc0MDAxWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjI2MTc0NTM3MjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIGBhdGgxMmtfbWFjX3JlZ2lzdGVyYCBDYWxsZXJzKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoZSBjYWxsIGdyYXBoIGZvciBgYXRoMTJrX21hY19yZWdpc3RlcmAuIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIHdobydzIHNldHRpbmcgdXAgdGhlIHJlZ2lzdHJhdGlvbj8gT2J2aW91c2x5LCB0aGUgZHJpdmVyIGl0c2VsZiBpcyBnb2luZyB0byBiZSBjZW50cmFsLCBsaWtlbHkgd2l0aGluIHRoZSBtb2R1bGUgaW5pdGlhbGl6YXRpb24uIEnigJlkIGV4cGVjdCB0aGUgYGF0aDEya19tYWNgIHN0cnVjdCB0byBiZSBnZXR0aW5nIGFsbG9jYXRlZCBhbmQgcG9wdWxhdGVkLCBwcm9iYWJseSB3aXRoIGEgc2VxdWVuY2Ugb2YgY2FsbHMgc2V0dGluZyB2YXJpb3VzIHBhcmFtZXRlcnMgbmVlZGVkIGJ5IHRoZSBNQUMgaGFyZHdhcmUuIEkgYW0gZXhwZWN0aW5nIHRoYXQgYW55IGZpcm13YXJlIGxvYWRpbmcgd291bGQgb2NjdXIgZmlyc3QsIGxpa2VseSB3aXRoIGEgc3Vic2VxdWVudCByZWdpc3RyYXRpb24uIFNvIEknbGwgbmVlZCB0byBjb25maXJtIGluaXRpYWxpemF0aW9uIHN0ZXBzLCBsb29rIGZvciBjb250ZXh0IHdoZXJlIHRoaXMgY2FsbCBtaWdodCBiZSBjb25kaXRpb25hbCAoZXJyb3IgaGFuZGxpbmcvcHJvYmUgZmFpbHVyZXMpLiBJcyB0aGUgcmVnaXN0cmF0aW9uIGhhcHBlbmluZyBkaXJlY3RseSBvciB0aHJvdWdoIGEgaGVscGVyIGZ1bmN0aW9uL3N1YnN5c3RlbT8gVGhhdCB3b3VsZCBtYWtlIHRoZSBjYWxsZ3JhcGggc2xpZ2h0bHkgbGVzcyBvYnZpb3VzLCBidXQgcGVyaGFwcyBjbGVhcmVyIGluIHRlcm1zIG9mIGxheWVyaW5nLlxuXG5JJ2xsIGtlZXAgYW4gZXllIG91dCBmb3IgaG93IGhhcmR3YXJlIHJlc291cmNlcyBhcmUgaGFuZGVkIHRvIHRoaXMsIHdoYXQgbG9ja3MgYXJlIGFjcXVpcmVkIGFuZCByZWxlYXNlZCBhcm91bmQgdGhpcyBwb2ludC4gV2hhdCBhYm91dCBlcnJvciBoYW5kbGluZyDigJMgaG93IGRvZXMgdGhlIHJlZ2lzdHJhdGlvbiBmYWlsdXJlIGltcGFjdCB0aGUgb3ZlcmFsbCBtb2R1bGUgc3RhcnR1cCBmbG93PyBJJ20gYW50aWNpcGF0aW5nIHRoYXQgdW5yZWdpc3RyYXRpb24gd2lsbCBiZSBlcXVhbGx5IGNydWNpYWw7IHRoZXJlIHNob3VsZCBiZSBhIGNvcnJlc3BvbmRpbmcgYGF0aDEya19tYWNfdW5yZWdpc3RlcmAgZnVuY3Rpb24gY2FsbGVkIGF0IG1vZHVsZSBleGl0IG9yIHByb2JlIGZhaWx1cmUsIHJpZ2h0PyBBbmQgSSB3YW50IHRvIGNvbXBhcmUgdGhvc2UgdHdvIGNhbGxzIGFuZCBzZWUgd2hhdCwgaWYgYW55LCBkZXBlbmRlbmNpZXMgbWF5IGV4aXN0LiBJIGFtIGFsc28gY29uc2lkZXJpbmcgb3RoZXIgc3Vic3lzdGVtcyBzdWNoIGFzIFBIWSBhbmQgV01JLCB0aGF0IG1heSBpbmZsdWVuY2UgdGhlIHJlZ2lzdHJhdGlvbiBhbmQgdW5yZWdpc3RyYXRpb24gcHJvY2Vzcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzU2OCwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDEwOjM4OjA5LjEwMDMzMDk2MVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY1MDE2NjMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRoMTJrX21hY19yZWdpc3RlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jPTExNTg9c3RhdGljIGludCBhdGgxMmtfY29yZV9od19ncm91cF9zdGFydChzdHJ1Y3QgYXRoMTJrX2h3X2dyb3VwICphZylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jLTExODEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmM6MTE4MjpcXHRyZXQgPSBhdGgxMmtfbWFjX3JlZ2lzdGVyKGFnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYy0xMTgzLVxcdGlmIChXQVJOX09OKHJldCkpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jPTE1MzE2PXZvaWQgYXRoMTJrX21hY19tbG9fdGVhcmRvd24oc3RydWN0IGF0aDEya19od19ncm91cCAqYWcpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jLTE1MzM3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmM6MTUzMzg6aW50IGF0aDEya19tYWNfcmVnaXN0ZXIoc3RydWN0IGF0aDEya19od19ncm91cCAqYWcpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYy0xNTMzOS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5oPTE1ND12b2lkIGF0aDEya19tYWNfdW5yZWdpc3RlcihzdHJ1Y3QgYXRoMTJrX2h3X2dyb3VwICphZyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuaDoxNTU6aW50IGF0aDEya19tYWNfcmVnaXN0ZXIoc3RydWN0IGF0aDEya19od19ncm91cCAqYWcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmgtMTU2LWludCBhdGgxMmtfbWFjX2FsbG9jYXRlKHN0cnVjdCBhdGgxMmtfaHdfZ3JvdXAgKmFnKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTA6Mzg6MDkuMTQ2ODM4MjQ0WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjEwNjUyNTYwMzg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHF1ZXJ5LCBwcmVzZW50ZWQgYXMgaWYgaXQgd2VyZSBteSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gYGF0aDEya19jb3JlX2h3X2dyb3VwX3N0YXJ0YCBDYWxsZXJzKipcblxuT2theSwgc28gdGhlIHByb21wdCBpcyBhc2tpbmcgbWUgdG8gdHJhY2UgdGhlIGNhbGxzIHRvIHRoZSBgYXRoMTJrX2NvcmVfaHdfZ3JvdXBfc3RhcnRgIGZ1bmN0aW9uLiBUaGF0IG1lYW5zIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgYmVpbmcgaW52b2tlZCB3aXRoaW4gdGhlIGBhdGgxMmtgIGRyaXZlci4gR2l2ZW4gdGhhdCB0aGlzIGlzIGEgaGFyZHdhcmUgZ3JvdXAtcmVsYXRlZCBmdW5jdGlvbiwgSSBpbW1lZGlhdGVseSBhc3N1bWUgaXQncyBkZWFsaW5nIHdpdGggc29tZSBsZXZlbCBvZiBjb25jdXJyZW5jeSBvciB0YXNrIGdyb3VwaW5nLCBsaWtlbHkgcmVsYXRlZCB0byB0aGUgZXhlY3V0aW9uIG9mIGNvbW1hbmRzIG9uIHRoZSBoYXJkd2FyZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGVpdGhlciB1c2Ugc3RhdGljIGFuYWx5c2lzIHRvIHNlZSB0aGUgY29kZSBzdHJ1Y3R1cmUgb3IgZHluYW1pYyBhbmFseXNpcyB0byBzZWUgd2hlcmUgdGhlIGNhbGwgb2NjdXJzIGluIGV4ZWN1dGlvbi4gSSBjb3VsZCB1c2UgdG9vbHMgbGlrZSBgY3Njb3BlYCwgYGN0YWdzYCwgb3IgcGVyaGFwcyBldmVuIHNvbWV0aGluZyBsaWtlIGBwZXJmYCBvciBhIGtlcm5lbCB0cmFjaW5nIHRvb2wgaWYgSSB3YW50IHRoZSBkeW5hbWljIGJlaGF2aW9yLiBJJ2xsIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGNvbnRleHQgdHJpZ2dlcnMgaXRzIGV4ZWN1dGlvbiwgd2hhdCBvdGhlciBmdW5jdGlvbnMgaXQgaW50ZXJhY3RzIHdpdGgsIGFuZCB3aGF0IGl0cyBvdmVyYWxsIHJvbGUgaW4gdGhlIGxhcmdlciBgYXRoMTJrYCBlY29zeXN0ZW0gaXMuIFRoaXMgaW52ZXN0aWdhdGlvbiB3aWxsIHByb2JhYmx5IHByb3ZpZGUgY2x1ZXMgYWJvdXQgd2hhdCBhc3BlY3RzIG9mIHRoZSBoYXJkd2FyZSBhcmUgYmVpbmcgYWZmZWN0ZWQgYnkgaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgzODQsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxMDozODoxOS43OTk0MDE3NjNaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3ODIzMzQzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0aDEya19jb3JlX2h3X2dyb3VwX3N0YXJ0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmtcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmM9MTEzMj1zdGF0aWMgaW50IGF0aDEya19jb3JlX21sb19zZXR1cChzdHJ1Y3QgYXRoMTJrX2h3X2dyb3VwICphZylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jLTExNTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmM6MTE1ODpzdGF0aWMgaW50IGF0aDEya19jb3JlX2h3X2dyb3VwX3N0YXJ0KHN0cnVjdCBhdGgxMmtfaHdfZ3JvdXAgKmFnKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jLTExNTkte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmM9MTIzMz1zdGF0aWMgaW5saW5lXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmM6MTIzNDpib29sIGF0aDEya19jb3JlX2h3X2dyb3VwX3N0YXJ0X3JlYWR5KHN0cnVjdCBhdGgxMmtfaHdfZ3JvdXAgKmFnKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jLTEyMzUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmM9MTMxND1pbnQgYXRoMTJrX2NvcmVfcW1pX2Zpcm13YXJlX3JlYWR5KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYy0xMzQ3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jOjEzNDg6XFx0aWYgKGF0aDEya19jb3JlX2h3X2dyb3VwX3N0YXJ0X3JlYWR5KGFnKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jOjEzNDk6XFx0XFx0cmV0ID0gYXRoMTJrX2NvcmVfaHdfZ3JvdXBfc3RhcnQoYWcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jLTEzNTAtXFx0XFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmM9MTY0Mj1zdGF0aWMgdm9pZCBhdGgxMmtfY29yZV9yZXN0YXJ0KHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jLTE2NjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmM6MTY2NjpcXHRcXHRpZiAoIWF0aDEya19jb3JlX2h3X2dyb3VwX3N0YXJ0X3JlYWR5KGFnKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jLTE2NjctXFx0XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZhZy1cXHUwMDNlbXV0ZXgpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxMDozODoxOS44NDcyMzE4NTZaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MjM1MjEzMDg1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBhdGgxMmsgYW5kIFFNSSBGaXJtd2FyZSBSZWFkaW5lc3MqKlxuXG5Pa2F5LCBzbyBgYXRoMTJrX2NvcmVfcW1pX2Zpcm13YXJlX3JlYWR5YCBoYXMgZmlyZWQsIG1lYW5pbmcgdGhlIFFNSSBmaXJtd2FyZSBpcyBmaW5hbGx5IHVwIGFuZCBydW5uaW5nIG9uIHRoZSBRdWFsY29tbSBNSEksIFBDSWUsIG9yIEFIQiBoYXJkd2FyZS4gRXhjZWxsZW50ISBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzdXBwb3J0ZWQgYnVzIGFyY2hpdGVjdHVyZXMgZm9yIHRoaXMgbW9kdWxlLiBMZXQncyBzZWUuLi4gbG9va2luZyBhdCB0aGUgYGF0aDEya2AgZGlyZWN0b3J5IHN0cnVjdHVyZSwgc3BlY2lmaWNhbGx5IHdpdGhpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEya2AsIHJldmVhbHMgYHBjaS5jYCBhbmQgYGFoYi5jYC4gVGhhdCBnaXZlcyBtZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIE5vdywgSSdtIGN1cmlvdXMgYWJvdXQgc29tZXRoaW5nIGVsc2UuIEhhcyBhbnlvbmUgYWRkZWQgVVNCIHN1cHBvcnQgZm9yIGF0aDEyaz8gTGV0IG1lIHNjYW4gdGhlIGNvbnRlbnRzIG9mIHRoYXQgYGF0aDEya2AgZGlyZWN0b3J5IHRvIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nLiBJJ2xsIGNoZWNrIHRoZSBkaXJlY3RvcnkgZmlsZXMgdG8gc2VlIGlmIGFueXRoaW5nIGlzIHRoZXJlLiBJIGFtIGN1cmlvdXMgdG8ga25vdyBiZWNhdXNlIG9mIHBvdGVudGlhbCB1c2UgY2FzZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkyODgsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTA6Mzg6MjIuMTk5MzY2NTM4WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImNvZGVzZWFyY2gtZGlyLWluZGV4IiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIxOTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRGlyXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEya1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJGaWxlc1wiOiBbXG4gICAgXCJhY3BpLmNcIixcbiAgICBcImFjcGkuaFwiLFxuICAgIFwiYWhiLmNcIixcbiAgICBcImFoYi5oXCIsXG4gICAgXCJjZS5jXCIsXG4gICAgXCJjZS5oXCIsXG4gICAgXCJjbW5fZGVmcy5oXCIsXG4gICAgXCJjb3JlLmNcIixcbiAgICBcImNvcmUuaFwiLFxuICAgIFwiY29yZWR1bXAuY1wiLFxuICAgIFwiY29yZWR1bXAuaFwiLFxuICAgIFwiZGJyaW5nLmNcIixcbiAgICBcImRicmluZy5oXCIsXG4gICAgXCJkZWJ1Zy5jXCIsXG4gICAgXCJkZWJ1Zy5oXCIsXG4gICAgXCJkZWJ1Z2ZzLmNcIixcbiAgICBcImRlYnVnZnMuaFwiLFxuICAgIFwiZGVidWdmc19odHRfc3RhdHMuY1wiLFxuICAgIFwiZGVidWdmc19odHRfc3RhdHMuaFwiLFxuICAgIFwiZGVidWdmc19zdGEuY1wiLFxuICAgIFwiZGVidWdmc19zdGEuaFwiLFxuICAgIFwiZHAuY1wiLFxuICAgIFwiZHAuaFwiLFxuICAgIFwiZHBfY21uLmhcIixcbiAgICBcImRwX2h0dC5jXCIsXG4gICAgXCJkcF9odHQuaFwiLFxuICAgIFwiZHBfbW9uLmNcIixcbiAgICBcImRwX21vbi5oXCIsXG4gICAgXCJkcF9wZWVyLmNcIixcbiAgICBcImRwX3BlZXIuaFwiLFxuICAgIFwiZHBfcnguY1wiLFxuICAgIFwiZHBfcnguaFwiLFxuICAgIFwiZHBfdHguY1wiLFxuICAgIFwiZHBfdHguaFwiLFxuICAgIFwiZncuY1wiLFxuICAgIFwiZncuaFwiLFxuICAgIFwiaGFsLmNcIixcbiAgICBcImhhbC5oXCIsXG4gICAgXCJoaWYuaFwiLFxuICAgIFwiaHRjLmNcIixcbiAgICBcImh0Yy5oXCIsXG4gICAgXCJody5oXCIsXG4gICAgXCJtYWMuY1wiLFxuICAgIFwibWFjLmhcIixcbiAgICBcIm1oaS5jXCIsXG4gICAgXCJtaGkuaFwiLFxuICAgIFwicDJwLmNcIixcbiAgICBcInAycC5oXCIsXG4gICAgXCJwY2kuY1wiLFxuICAgIFwicGNpLmhcIixcbiAgICBcInBlZXIuY1wiLFxuICAgIFwicGVlci5oXCIsXG4gICAgXCJxbWkuY1wiLFxuICAgIFwicW1pLmhcIixcbiAgICBcInJlZy5jXCIsXG4gICAgXCJyZWcuaFwiLFxuICAgIFwidGVzdG1vZGUuY1wiLFxuICAgIFwidGVzdG1vZGUuaFwiLFxuICAgIFwidGhlcm1hbC5jXCIsXG4gICAgXCJ0aGVybWFsLmhcIixcbiAgICBcInRyYWNlLmNcIixcbiAgICBcInRyYWNlLmhcIixcbiAgICBcIndtaS5jXCIsXG4gICAgXCJ3bWkuaFwiLFxuICAgIFwid293LmNcIixcbiAgICBcIndvdy5oXCJcbiAgXSxcbiAgXCJTdWJkaXJzXCI6IFtcbiAgICBcIndpZmk3XCJcbiAgXVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTA6Mzg6MjIuMTk5NDkwODk4WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjc4NjM0MjMwMzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiBXb3J0aEZ1enppbmcgZm9yIGF0aDEyayoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBkZWNpZGUgaWYgdGhpcyBgYXRoMTJrYCBkcml2ZXIgaXMgd29ydGggZnV6emluZy4gVGhlIGluc3RydWN0aW9ucyBhcmUgcHJldHR5IGNsZWFyIGFib3V0IHRoZSBuZWdhdGl2ZSBhbmQgcG9zaXRpdmUgY3JpdGVyaWEsIHNvIGxldCdzIGJyZWFrIHRoaXMgZG93biBzeXN0ZW1hdGljYWxseS4gSXQgbG9va3MgbGlrZSB0aGUgb25seSBmaWxlcyB0byBmb2N1cyBvbiBhcmUgYHBjaS5jYCBhbmQgYGFoYi5jYCBpbiB0aGUgYXRoMTJrIGRyaXZlci5cblxuRmlyc3QsIEkgbmVlZCB0byBjaGVjayB0aGUgXCJuZWdhdGl2ZSBjcml0ZXJpYVwiIGluIFNlY3Rpb24gMi4gVGhlIGtleSBoZXJlIGlzICpzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUqIGFuZCAqdW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzKi4gU3BlY2lmaWNhbGx5LCBJJ20gbG9va2luZyBhdCB3aGV0aGVyIHRoZSBjaGFuZ2VzIGFyZSBsaW1pdGVkIHRvOlxuXG4qICAgVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMvU21hcnROSUNzL0dQVSBkcml2ZXJzICpyZXF1aXJpbmcgcGh5c2ljYWwgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIFFFTVUqLlxuKiAgIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgdGhhdCBvbmx5IHJ1biBkdXJpbmcgaG90LXVucGx1ZyBvciBtYW51YWwgdW5iaW5kaW5nLlxuKiAgIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGRpZmZlcmVudCBhcmNoaXRlY3R1cmVzLlxuXG5Ob3csIGBhdGgxMmtgIGlzIGEgdmVuZG9yLXNwZWNpZmljIHdpcmVsZXNzIGRyaXZlciBmb3IgUXVhbGNvbW0ncyA4MDIuMTFiZSBoYXJkd2FyZS4gSXQgZXhwbGljaXRseSAqcmVxdWlyZXMqIGEgcGh5c2ljYWwgUENJZS9BSEIgQVNJQywgc3BlY2lmaWNhbGx5IHRoZSBXQ043ODUwL1FDTjkyNzQvSVBRNTMzMiBjaGlwcy4gVGhpcyBpcyBub3QgYWNjZXNzaWJsZSB0aHJvdWdoIHZpcnR1YWwgYnVzZXMgc3VjaCBhcyB2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBvciBhbnkgb2YgdGhvc2UgZW11bGF0ZWQgaW50ZXJmYWNlcy4gV2l0aG91dCB0aGF0IHBoeXNpY2FsIGhhcmR3YXJlIGFuZCB0aGUgYXNzb2NpYXRlZCBmaXJtd2FyZSwgaXQncyBub3QgZ29pbmcgdG8gcHJvYmUsIHJlZ2lzdGVyIHdpdGggbWFjODAyMTEsIG9yIGV4ZWN1dGUgYW55IG9mIHRoZSBgYXRoMTJrYCBjb2RlLCBjZXJ0YWlubHkgbm90IGBhdGgxMmtfbWFjX29wX3N0YV9zdGF0ZWAuIFRoYXQgY2VydGFpbmx5IG1lZXRzIHRoZSBmaXJzdCBuZWdhdGl2ZSBjcml0ZXJpYTogU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlLlxuXG5JJ2xsIHF1aWNrbHkgY2hlY2sgZm9yIGFueSB2aXJ0dWFsIGhhcmR3YXJlIG9yIHNpbXVsYXRpb24gZm9yIGF0aDEyaywganVzdCB0byBiZSBzdXJlLiBNYWM4MDIxMSBkb2VzIGhhdmUgYG1hYzgwMjExX2h3c2ltYCwgYnV0IHRoYXQgaXMgY29tcGxldGVseSBzZXBhcmF0ZSBhbmQgZG9lc24ndCBydW4gYW55IG9mIHRoZSBgYXRoMTJrYCBjb2RlLiBgYXRoMTJrYCBpcyBzcGVjaWZpY2FsbHkgdGllZCB0byBQQ0llIGRldmljZSBJRHMgb3IgQUhCIHBsYXRmb3JtIGRldmljZXMuXG5cblRoZXJlZm9yZSwgYmVjYXVzZSB0aGlzIGRyaXZlciBpcyBhIHZlbmRvci1zcGVjaWZpYyBwaHlzaWNhbCBkZXZpY2UgZHJpdmVyIHRoYXQgaXMgZGVwZW5kZW50IG9uIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSwgaXQgZml0cyBzcXVhcmVseSB3aXRoaW4gdGhlIFwic3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlXCIgbmVnYXRpdmUgY3JpdGVyaWEuIEJhc2VkIG9uIHRoZSBuZWdhdGl2ZSBjcml0ZXJpYSBmcm9tIFNlY3Rpb24gMiBvZiB0aGUgaW5zdHJ1Y3Rpb25zLCBJJ2Qgc2F5IHRoaXMgaXMgKipub3QqKiBXb3J0aEZ1enppbmcuIEknbGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhlIGBwY2kuY2AgZmlsZSB0byBlbnN1cmUgdGhhdCBteSBhc3N1bXB0aW9uIGlzIGNvcnJlY3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMTE3LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjI2LCJUb29sQ2FsbHMiOlsiY29kZXNlYXJjaC1kaXItaW5kZXgiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxMDozODozMC4wNjI5MTYwODVaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2NjM4MzczLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk1PRFVMRV9ERVZJQ0VfVEFCTEVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEya1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2FoYi5jPTQ4PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGF0aDEya193aWZpN19haGJfb2ZfbWF0Y2hbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvYWhiLmMtNTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9haGIuYzo1ODpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBhdGgxMmtfd2lmaTdfYWhiX29mX21hdGNoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2FoYi5jLTU5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9wY2kuYz0zND1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgYXRoMTJrX3dpZmk3X3BjaV9pZF90YWJsZVtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9wY2kuYy00MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L3BjaS5jOjQxOk1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBhdGgxMmtfd2lmaTdfcGNpX2lkX3RhYmxlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L3BjaS5jLTQyLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxMDozODozMC4xMDk1Njc3MThaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6NTkxNzgyODQ1OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFeGFtaW5pbmcgdGhlIERyaXZlcidzIERldmljZSBUYWJsZSoqXG5cbk9rYXksIHNvIEkgc2VlIHRoZXNlIHR3byBkZXZpY2UgdGFibGUgZGVjbGFyYXRpb25zOiBgTU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIGF0aDEya193aWZpN19wY2lfaWRfdGFibGUpO2AgYW5kIGBNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBhdGgxMmtfd2lmaTdfYWhiX29mX21hdGNoKTtgLiBSaWdodCwgdGhpcyB0ZWxscyBtZSB0aGUgZHJpdmVyIGlzIGRlc2lnbmVkIHRvIHdvcmsgd2l0aCBib3RoIFBDSSBhbmQgT24tQ2hpcCAoQUhCKSBkZXZpY2VzLiBNeSBpbW1lZGlhdGUgaW50ZXJlc3QgaXMgaW4gdGhlIFBDSSBkZXZpY2VzLCBzcGVjaWZpY2FsbHkgc2luY2UgdGhlIGNvZGUgbWVudGlvbnMgUXVhbGNvbW0uIEknbSBnb2luZyB0byBxdWlja2x5IGRyaWxsIGRvd24gaW50byB3aGF0IFBDSSBJRHMgYXJlIGFjdHVhbGx5IGxpc3RlZCBpbiBgYXRoMTJrX3dpZmk3X3BjaV9pZF90YWJsZWAuIEkgbmVlZCB0byBzZWUgd2hpY2ggc3BlY2lmaWMgdmVuZG9yIGFuZCBkZXZpY2UgSURzIHRoaXMgZHJpdmVyIGNsYWltcyB0byBzdXBwb3J0LCB0byBlbnN1cmUgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBoYXJkd2FyZSBJJ20gdGFyZ2V0aW5nIG9yIGV4YW1pbmluZy4gTGV0J3Mgc2VlLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNjI0LCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTA6Mzg6MzYuMDI3Mzk4NTI3WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjczMzcxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvcGNpLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMzA6XFx0XFxuICAzMTpcXHQjZGVmaW5lIFdJTkRPV19SRUdfQUREUkVTU1xcdFxcdDB4MzEwY1xcbiAgMzI6XFx0I2RlZmluZSBXSU5ET1dfUkVHX0FERFJFU1NfUUNDMjA3MlxcdDB4MzI3OFxcbiAgMzM6XFx0XFxuICAzNDpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgYXRoMTJrX3dpZmk3X3BjaV9pZF90YWJsZVtdID0ge1xcbiAgMzU6XFx0XFx0eyBQQ0lfVkRFVklDRShRQ09NLCBRQ045Mjc0X0RFVklDRV9JRCkgfSxcXG4gIDM2OlxcdFxcdHsgUENJX1ZERVZJQ0UoUUNPTSwgV0NONzg1MF9ERVZJQ0VfSUQpIH0sXFxuICAzNzpcXHRcXHR7IFBDSV9WREVWSUNFKFFDT00sIFFDQzIwNzJfREVWSUNFX0lEKSB9LFxcbiAgMzg6XFx0XFx0e31cXG4gIDM5OlxcdH07XFxuICA0MDpcXHRcXG4gIDQxOlxcdE1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBhdGgxMmtfd2lmaTdfcGNpX2lkX3RhYmxlKTtcXG4gIDQyOlxcdFxcbiAgNDM6XFx0LyogVE9ETzogcmV2aXNpdCBJUlEgbWFwcGluZyBmb3IgbmV3IFNSTkcncyAqL1xcbiAgNDQ6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBhdGgxMmtfbXNpX2NvbmZpZyBhdGgxMmtfd2lmaTdfbXNpX2NvbmZpZ1tdID0ge1xcbiAgNDU6XFx0XFx0e1xcbiAgNDY6XFx0XFx0XFx0LnRvdGFsX3ZlY3RvcnMgPSAxNixcXG4gIDQ3OlxcdFxcdFxcdC50b3RhbF91c2VycyA9IDMsXFxuICA0ODpcXHRcXHRcXHQudXNlcnMgPSAoc3RydWN0IGF0aDEya19tc2lfdXNlcltdKSB7XFxuICA0OTpcXHRcXHRcXHRcXHR7IC5uYW1lID0gXFxcIk1ISVxcXCIsIC5udW1fdmVjdG9ycyA9IDMsIC5iYXNlX3ZlY3RvciA9IDAgfSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTA6Mzg6MzYuMDI3NDczODg3WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjgzMzM0NTMzNjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudDogVW5yZWFjaGFibGUgQ29kZSBpbiBhIFZpcnR1YWxpemVkIEVudmlyb25tZW50KipcblxuT2theSwgc28gdGhlIGNvZGUgSSdtIGxvb2tpbmcgYXQgbW9kaWZpZXMgYGF0aDEya19tYWNfb3Bfc3RhX3N0YXRlKClgIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jYC4gSSd2ZSBxdWlja2x5IGNvbmZpcm1lZCB0aGF0IHRoZSBgYXRoMTJrYCBkcml2ZXIgaXMsIGFzIGV4cGVjdGVkLCBkZXNpZ25lZCBmb3IgUXVhbGNvbW0gV2ktRmkgNyBjaGlwc2V0cy4gQ3J1Y2lhbGx5LCB0aGVzZSBjaGlwc2V0cyByZWx5IG9uIGVpdGhlciBQQ0llIG9yIEFIQiBidXMgY29ubmVjdGlvbnMsIHNwZWNpZmljYWxseSBkZXZpY2VzIGxpa2UgdGhlIFFDTjkyNzQsIFdDTjc4NTAsIG9yIFFDQzIwNzIuIEFuZCBoZXJlJ3MgdGhlIGtpY2tlcjogSSBrbm93IGZyb20gZXhwZXJpZW5jZSB0aGF0IHRoZXNlIHBhcnRpY3VsYXIgZGV2aWNlcywgb3IgZXZlbiB0aGUgdW5kZXJseWluZyBBSEIgbm9kZXMsIGFyZSB1dHRlcmx5IHVuYXZhaWxhYmxlIGFuZCBjYW5ub3QgYmUgbWVhbmluZ2Z1bGx5IHByb2JlZCB3aXRoaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgc3VjaCBhcyBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZSAoR0NFKS4gVGhleSAqcmVxdWlyZSogcGh5c2ljYWwgaGFyZHdhcmUuXG5cblRoZXJlZm9yZSwgdGhpcyBtb2RpZmljYXRpb24gaXMsIGZvciBhbGwgaW50ZW50cyBhbmQgcHVycG9zZXMsIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBpbiBhbnkgZnV6emluZyBjb250ZXh0IEkgY2FuIHJlYWxpc3RpY2FsbHkgZGVwbG95LiBUaGUgY29kZSBzcGVjaWZpY2FsbHkgbWVudGlvbnMgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLCBpb25pYywgYW1kZ3B1KSBhbGwgb2Ygd2hpY2ggcmVxdWlyZSB0aG9zZSBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMuIFRoZSBmYWN0IHRoYXQgdGhlIHRhcmdldCBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gdGhlc2Ugc3RhbmRhcmQgZW52aXJvbm1lbnRzIGlzIGEgY3JpdGljYWwgbGltaXRhdGlvbiBmb3IgZnV6emluZy5cblxuTXkgYW5hbHlzaXMgeWllbGRzIHRoaXMgY29uY2x1c2lvbiBmb3IgdGhlIHRvb2w6XG5cbmBXb3J0aEZ1enppbmdgOiBmYWxzZVxuYEZvY3VzU3ltYm9sc2A6IFtdXG5gRW5hYmxlQ29uZmlnc2A6IFtdXG5gUmVhc29uaW5nYDogVGhlIHBhdGNoIG1vZGlmaWVzIGBhdGgxMmtfbWFjX29wX3N0YV9zdGF0ZSgpYCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuY2AuIFRoZSBgYXRoMTJrYCBkcml2ZXIgaXMgZm9yIFF1YWxjb21tIFdpLUZpIDcgY2hpcHNldHMgY29ubmVjdGVkIHZpYSBQQ0llIG9yIEFIQiBidXMgKGUuZy4sIFdDTjc4NTAsIFFDTjkyNzQpLiBJdCByZXF1aXJlcyB2ZW5kb3Itc3BlY2lmaWMgcGh5c2ljYWwgQVNJQy9QQ0llIGhhcmR3YXJlIGFuZCBwcm9wcmlldGFyeSBmaXJtd2FyZSB0aGF0IGNhbm5vdCBiZSBlbXVsYXRlZCBvciBwcm9iZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMzE4LCJPdXRwdXRUb2tlbnMiOjE0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5NSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDEwOjM4OjQ0LjM2MDkyOTY4OVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxODQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGF0aDEya19tYWNfb3Bfc3RhX3N0YXRlKCkgaW4gZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYywgd2hpY2ggYmVsb25ncyB0byB0aGUgUXVhbGNvbW0gV2ktRmkgNyAoYXRoMTJrKSBkcml2ZXIuIFRoaXMgZHJpdmVyIHRhcmdldHMgcGh5c2ljYWwgUXVhbGNvbW0gUENJZS9BSEIgY2hpcHNldHMgKGUuZy4sIFdDTjc4NTAsIFFDTjkyNzQpIHJlcXVpcmluZyBzcGVjaWZpYyBwaHlzaWNhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKS4gQ29uc2VxdWVudGx5LCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBhdGgxMmtfbWFjX29wX3N0YV9zdGF0ZSgpIGluIGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMsIHdoaWNoIGJlbG9uZ3MgdG8gdGhlIFF1YWxjb21tIFdpLUZpIDcgKGF0aDEyaykgZHJpdmVyLiBUaGlzIGRyaXZlciB0YXJnZXRzIHBoeXNpY2FsIFF1YWxjb21tIFBDSWUvQUhCIGNoaXBzZXRzIChlLmcuLCBXQ043ODUwLCBRQ045Mjc0KSByZXF1aXJpbmcgc3BlY2lmaWMgcGh5c2ljYWwgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkuIENvbnNlcXVlbnRseSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTA6Mzg6NDQuMzYwOTU1NDhaIiwiU2VxIjoyMywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc4NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflow595q9[1] Phase: Running StartedAt: 2026-09-15 10:38:55 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow595q9[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-15 10:38:55 +0000 UTC FinishedAt: 2026-09-15 10:38:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}