Name: series-workflown27sn Phase: Failed StartedAt: 2026-08-16 09:12:49 +0000 UTC FinishedAt: 2026-08-16 09:31:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflown27sn[0] Phase: Succeeded StartedAt: 2026-08-16 09:12:49 +0000 UTC FinishedAt: 2026-08-16 09:30:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflown27sn[0].run-triage Phase: Succeeded StartedAt: 2026-08-16 09:12:49 +0000 UTC FinishedAt: 2026-08-16 09:30:57 +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+CgkJCTx0ZD4yMDI2LzA4LzE2IDA5OjMwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gaW50ZWdlciBvdmVyZmxvdyBpbiBga2hvX3ByZXNlcnZlZF9tZW1vcnlfcmVzZXJ2ZWAsIHdoaWNoIGlzIGFuIGBfX2luaXRgIGZ1bmN0aW9uIGNhbGxlZCBkdXJpbmcgYm9vdCB2aWEgYGtob19tZW1vcnlfaW5pdGAgYW5kIGBtbV9jb3JlX2luaXRgLiBCb290LXRpbWUgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb25zIGFyZSBub3QgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGFuZCBjYW5ub3QgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNiAwOTozMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGE0ODk5OTI3ZjhiODY4MjQ3MjQyMDY0Y2ViMmNiODE5NTkxYmRiYThcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEF1ZyAxNiAwOTozMDoyOCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jIGIva2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuY1xuaW5kZXggMTc1YzA4YTZlNDFlMy4uYzc5ZjQ4YmQ2NGFjNiAxMDA2NDRcbi0tLSBhL2tlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmNcbkBAIC01MDEsNyAmIzQzOzUwMSw3IEBAIHN0YXRpYyBpbnQgX19pbml0IGtob19wcmVzZXJ2ZWRfbWVtb3J5X3Jlc2VydmUocGh5c19hZGRyX3QgcGh5cyxcbiBcdHN0cnVjdCBwYWdlICpwYWdlO1xuIFx0dTY0IHN6O1xuIFxuLVx0c3ogPSAxIFx1MDAzY1x1MDAzYyAob3JkZXIgJiM0MzsgUEFHRV9TSElGVCk7XG4mIzQzO1x0c3ogPSAodTY0KTEgXHUwMDNjXHUwMDNjIChvcmRlciAmIzQzOyBQQUdFX1NISUZUKTtcbiBcdHBhZ2UgPSBraG9fZ2V0X3ByZXNlcnZlZF9wYWdlKHBoeXMsIG9yZGVyKTtcbiBcbiBcdC8qIFJlc2VydmUgdGhlIG1lbW9yeSBwcmVzZXJ2ZWQgaW4gS0hPIGluIG1lbWJsb2NrICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTYgMDk6MzA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIGludGVnZXIgb3ZlcmZsb3cgaW4gYGtob19wcmVzZXJ2ZWRfbWVtb3J5X3Jlc2VydmVgLCB3aGljaCBpcyBhbiBgX19pbml0YCBmdW5jdGlvbiBjYWxsZWQgZHVyaW5nIGJvb3QgdmlhIGBraG9fbWVtb3J5X2luaXRgIGFuZCBgbW1fY29yZV9pbml0YC4gQm9vdC10aW1lIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9ucyBhcmUgbm90IHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSBhbmQgY2Fubm90IGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBhNDg5OTkyN2Y4Yjg2ODI0NzI0MjA2NGNlYjJjYjgxOTU5MWJkYmE4CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBBdWcgMTYgMDk6MzA6MjggMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jIGIva2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYwppbmRleCAxNzVjMDhhNmU0MWUzLi5jNzlmNDhiZDY0YWM2IDEwMDY0NAotLS0gYS9rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jCiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMKQEAgLTUwMSw3ICYjNDM7NTAxLDcgQEAgc3RhdGljIGludCBfX2luaXQga2hvX3ByZXNlcnZlZF9tZW1vcnlfcmVzZXJ2ZShwaHlzX2FkZHJfdCBwaHlzLAogCXN0cnVjdCBwYWdlICpwYWdlOwogCXU2NCBzejsKIAotCXN6ID0gMSAmbHQ7Jmx0OyAob3JkZXIgJiM0MzsgUEFHRV9TSElGVCk7CiYjNDM7CXN6ID0gKHU2NCkxICZsdDsmbHQ7IChvcmRlciAmIzQzOyBQQUdFX1NISUZUKTsKIAlwYWdlID0ga2hvX2dldF9wcmVzZXJ2ZWRfcGFnZShwaHlzLCBvcmRlcik7CiAKIAkvKiBSZXNlcnZlIHRoZSBtZW1vcnkgcHJlc2VydmVkIGluIEtITyBpbiBtZW1ibG9jayAqLwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNiAwOTozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTk4CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogOTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgS2VybmVsIExpdmUgVXBkYXRlIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRhcmdldGluZyBga2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuY2AuIFJpZ2h0IGF3YXksIEkgc2VlIHRoZXkmIzM5O3JlIG1vZGlmeWluZyB0aGUgYGtob19wcmVzZXJ2ZWRfbWVtb3J5X3Jlc2VydmVgIGZ1bmN0aW9uLiBUaGUga2V5IGNoYW5nZSBpcyB0aGUgZXhwbGljaXQgY2FzdCB0byBgdTY0YCBpbiB0aGUgc2l6ZSBjYWxjdWxhdGlvbjogYHN6ID0gKHU2NCkxICZsdDsmbHQ7IChvcmRlciAmIzQzOyBQQUdFX1NISUZUKTtgLiBJdCBsb29rcyBsaWtlIHRoaXMgaXMgaW50ZW5kZWQgdG8gYWRkcmVzcyBhIHBvdGVudGlhbCBpbnRlZ2VyIG92ZXJmbG93IG9yIHNoaWZ0LW91dC1vZi1ib3VuZHMgaXNzdWUuIEtub3dpbmcgdGhpcyBhcmVhLCB0aGF0JiMzOTtzIGFsbW9zdCBjZXJ0YWlubHkgcmVsYXRlZCB0byBjYWxjdWxhdGluZyB0aGUgc2l6ZSBvZiBhIG1lbW9yeSByZWdpb24sIHByb2JhYmx5IGZvciBhIGxpdmUgdXBkYXRlIG9wZXJhdGlvbiBvciBhIGtleGVjIHRyYW5zaXRpb24uIEdpdmVuIHRoZSBjb250ZXh0LCB0aGUgYG9yZGVyICYjNDM7IFBBR0VfU0hJRlRgIHBhcnQgc3VnZ2VzdHMgdGhleSYjMzk7cmUgZGVhbGluZyB3aXRoIHBhZ2Ugc2l6ZXMgYW5kIHBvd2VycyBvZiB0d28sIGFzIGV4cGVjdGVkLgoKSSBzaG91bGQgcHJvYmFibHkgZGl2ZSBpbnRvIGBrZXhlY19oYW5kb3Zlci5jYCB0byB1bmRlcnN0YW5kIHRoZSBzcGVjaWZpY3Mgb2Ygd2hhdCB0aGV5JiMzOTtyZSB0cnlpbmcgdG8gcmVzZXJ2ZSBhbmQgd2h5IHRoaXMgd2FzIG5lY2Vzc2FyeS4gQSBxdWljayBsb29rIGF0IHRoZSBzdXJyb3VuZGluZyBjb2RlIHdpbGwgdGVsbCBtZSB0aGUgYWN0dWFsIGludGVudCBvZiB0aGUgZnVuY3Rpb24sIGFuZCBsZXQgbWUgYmUgYWJzb2x1dGVseSBzdXJlIHdoYXQgdGhleSYjMzk7dmUgZml4ZWQuIEl0JiMzOTtzIGFsbW9zdCBjZXJ0YWluIGl0JiMzOTtzIGEgc2l6ZSBjYWxjdWxhdGlvbiBwcm9ibGVtLCBidXQgYmVzdCB0byBjb25maXJtIHRoZSBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE2IDA5OjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2tob19wcmVzZXJ2ZWRfbWVtb3J5X3Jlc2VydmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmM9NDcwPUVYUE9SVF9TWU1CT0xfR1BMKGtob19yZXN0b3JlX3BhZ2VzKTtcbi0tXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jLTQ3Ny0gKiBFbnN1cmUgYWxsIHRoZSBzdHJ1Y3QgcGFnZXMgaW4gdGhlIHByZXNlcnZhdGlvbiBhcmVcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmM6NDc4OiAqIGluaXRpYWxpemVkLiBraG9fcHJlc2VydmVkX21lbW9yeV9yZXNlcnZlKCkgbWFya3MgdGhlIHJlc2VydmF0aW9uIGFzIG5vaW5pdFxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYy00NzktICogdG8gbWFrZSBzdXJlIHRoZXkgZG9uJiMzOTt0IGdldCByZS1pbml0aWFsaXplZCBsYXRlci5cbi0tXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jPTQ4MT1zdGF0aWMgc3RydWN0IHBhZ2UgKl9faW5pdCBraG9fZ2V0X3ByZXNlcnZlZF9wYWdlKHBoeXNfYWRkcl90IHBoeXMsXG4tLVxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYy00OTYtXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jOjQ5NzpzdGF0aWMgaW50IF9faW5pdCBraG9fcHJlc2VydmVkX21lbW9yeV9yZXNlcnZlKHBoeXNfYWRkcl90IHBoeXMsXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jLTQ5OC1cdFx0XHRcdFx0ICAgICAgIHVuc2lnbmVkIGludCBvcmRlcilcbi0tXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jPTE0MTE9c3RhdGljIGludCBfX2luaXQga2hvX21lbV9yZXRyaWV2ZShjb25zdCB2b2lkICpmZHQpXG4tLVxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYy0xNDI5LVx0bXV0ZXhfaW5pdChcdTAwMjZ0cmVlLmxvY2spO1xua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYzoxNDMwOlx0cmV0dXJuIGtob19yYWRpeF93YWxrX3RyZWUoXHUwMDI2dHJlZSwga2hvX3ByZXNlcnZlZF9tZW1vcnlfcmVzZXJ2ZSk7XG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jLTE0MzEtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE2IDA5OjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3NzkKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4KCioqSW52ZXN0aWdhdGluZyBNZW1vcnkgUmVzZXJ2YXRpb24gaW4gdGhlIGBraG9gIFN5c3RlbSoqCgpSaWdodCwgc28gYGtob19wcmVzZXJ2ZWRfbWVtb3J5X3Jlc2VydmVgIGlzIGJlaW5nIGNhbGxlZCBieSBga2hvX21lbV9yZXRyaWV2ZWAuIFRoYXQgbWFrZXMgc2Vuc2U7IGEgcmVzZXJ2YXRpb24gZnVuY3Rpb24gbGlrZWx5IG5lZWRzIHRvIGJlIGNhbGxlZCB3aGVuIHJldHJpZXZpbmcgc29tZXRoaW5nLiBCdXQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgZmxvdyBoZXJlLCBhbmQgd2hlcmUgdGhlICpyZXRyaWV2YWwqIGl0c2VsZiBpcyBvcmlnaW5hdGluZy4gVGltZSB0byBkcmlsbCBkb3duIGludG8gYGtob19tZW1fcmV0cmlldmVgLiBXaGVyZSBpcyAqdGhhdCogZnVuY3Rpb24gYmVpbmcgY2FsbGVkIGZyb20/IEkgbmVlZCB0byB0cmFjZSB0aGlzIGJhY2sgdG8gdGhlIHNvdXJjZSB0byBmdWxseSBncmFzcCB0aGUgbWVtb3J5IGFsbG9jYXRpb24gYW5kIGRlYWxsb2NhdGlvbiBsaWZlY3ljbGUgd2l0aGluIHRoaXMgYGtob2AgY29tcG9uZW50LiBUaGlzIGlzIGxpa2VseSBhIGNyaXRpY2FsIHNlY3Rpb24gZm9yIHBlcmZvcm1hbmNlIGFuZCBwb3RlbnRpYWwgbWVtb3J5IGxlYWtzLCBzbyB1bmRlcnN0YW5kaW5nIHRoZSBjYWxsIHN0YWNrIGlzIHBhcmFtb3VudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNiAwOTozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtraG9fbWVtX3JldHJpZXZlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jPTE0MDk9RVhQT1JUX1NZTUJPTF9HUEwoa2hvX3JldHJpZXZlX3N1YnRyZWUpO1xua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYy0xNDEwLVxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYzoxNDExOnN0YXRpYyBpbnQgX19pbml0IGtob19tZW1fcmV0cmlldmUoY29uc3Qgdm9pZCAqZmR0KVxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYy0xNDEyLXtcbi0tXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jPTE2MzI9dm9pZCBfX2luaXQga2hvX21lbW9yeV9pbml0KHZvaWQpXG4tLVxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYy0xNjM2LVxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYzoxNjM3Olx0XHRpZiAoa2hvX21lbV9yZXRyaWV2ZShraG9fZ2V0X2ZkdCgpKSlcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtMTYzOC1cdFx0XHRraG9faW4uZmR0X3BoeXMgPSAwO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE2IDA5OjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyNDYKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiA5OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBCb290LVRpbWUgSW5pdGlhbGl6YXRpb24gQnVnKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBraG9fbWVtb3J5X2luaXRgIGZ1bmN0aW9uLCB3aGljaCwgZnJvbSB0aGUgY29kZSwgSSBjYW4gc2VlIGlzIGdldHRpbmcgY2FsbGVkIGVhcmx5IG9uLCBkdXJpbmcgdGhlIHN5c3RlbSBib290IHByb2Nlc3MuIFNwZWNpZmljYWxseSwgaXQmIzM5O3MgY2FsbGVkIGZyb20gYHNldHVwX2FyY2hgIG9yIHNvbWV0aGluZyBhbmFsb2dvdXMgdG8gaXQuIFRoYXQgbWVhbnMgaXQmIzM5O3MgYW4gYF9faW5pdGAgZnVuY3Rpb24sIHdoaWNoIGlzIGEga2V5IGRldGFpbC4gVGhlIGNoYW5nZSBub3RlcyBhIGZpeCBmb3IgYW4gaW50ZWdlciBvdmVyZmxvdyBpc3N1ZSB3aGVuIGNhbGN1bGF0aW5nIGBzemAgZm9yIG1lbW9yeSByZXNlcnZhdGlvbi4gSG1tLCB0aGUgYmlnIHF1ZXN0aW9uIGluIG15IG1pbmQgaXMgd2hldGhlciB0aGlzIGlzIHNvbWV0aGluZyB3ZSBzaG91bGQgZXZlbiBib3RoZXIgZnV6emluZy4KCktub3dpbmcgdGhhdCBpdCYjMzk7cyBhIGJvb3QtdGltZSBmdW5jdGlvbiBpbW1lZGlhdGVseSB0ZWxscyBtZSBpdCYjMzk7cyBsaWtlbHkgKm5vdCogc29tZXRoaW5nIFN5emthbGxlciBvciBzdGFuZGFyZCB1c2VyLXNwYWNlIGZ1enppbmcgaXMgZ29pbmcgdG8gYmUgYWJsZSB0byByZWFjaC4gQm9vdC10aW1lIGluaXRpYWxpemF0aW9ucyBhcmUsIGluIGdlbmVyYWwsIHNoaWVsZGVkIGZyb20gdXNlci1zcGFjZSBpbnRlcmFjdGlvbiBhZnRlciB0aGUga2VybmVsIGlzIHVwIGFuZCBydW5uaW5nLiBTeXprYWxsZXIsIGluIGl0cyBjdXJyZW50IGNvbmZpZ3VyYXRpb24sIGdlbmVyYWxseSBmb2N1c2VzIG9uIGZ1bmN0aW9ucyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYWZ0ZXIgdGhlIHN5c3RlbSBpcyBydW5uaW5nLiBTbywgdGhlIGRpcmVjdCBpbXBhY3Qgb24gc3lzdGVtIHNlY3VyaXR5ICptYXkqIGJlIGxpbWl0ZWQuCgpCdXQsIGJlZm9yZSBJIGRpc21pc3MgaXQgY29tcGxldGVseSwgSSYjMzk7ZCBiZXR0ZXIgZG91YmxlLWNoZWNrIHdoZXJlIGBraG9fbWVtb3J5X2luaXRgIGlzIGNhbGxlZCBmcm9tIHRvIGJlIGFic29sdXRlbHkgc3VyZS4gQSBxdWljayByZXZpZXcgb2YgdGhlIGNhbGwgc2l0ZXMgd2lsbCBjb25maXJtIHRoZSBib290LXRpbWUgbmF0dXJlIG9mIHRoaXMgZnVuY3Rpb24gYW5kLCBob3BlZnVsbHksIHNvbGlkaWZ5IG15IGluaXRpYWwgYXNzZXNzbWVudC4gSSBuZWVkIHRvIGtub3cgd2hlcmUgaXQmIzM5O3MgY2FsbGVkIHRvIGNvbmZpcm0gaXRzIGxvY2F0aW9uIGluIG1lbW9yeSBhbmQgaW50ZXJhY3Rpb24gd2l0aCBvdGhlciBjb21wb25lbnRzLiBJZiBpdHMgdHJ1bHkgZHVyaW5nIGluaXRpYWxpemF0aW9uLCB0aGUgdnVsbmVyYWJpbGl0eSwgd2hpbGUgcHJlc2VudCwgbWF5IG5vdCBiZSBleHBsb2l0YWJsZSB2aWEgdGhlIHNhbWUgdmVjdG9ycyBhcyBvdGhlciB1c2VyLWFjY2Vzc2libGUgY29kZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNiAwOTozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtraG9fbWVtb3J5X2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9rZXhlY19oYW5kb3Zlci5oPTM3PWludCBraG9fcmV0cmlldmVfc3VidHJlZShjb25zdCBjaGFyICpuYW1lLCBwaHlzX2FkZHJfdCAqcGh5cywgc2l6ZV90ICpzaXplKTtcbmluY2x1ZGUvbGludXgva2V4ZWNfaGFuZG92ZXIuaC0zOC1cbmluY2x1ZGUvbGludXgva2V4ZWNfaGFuZG92ZXIuaDozOTp2b2lkIGtob19tZW1vcnlfaW5pdCh2b2lkKTtcbmluY2x1ZGUvbGludXgva2V4ZWNfaGFuZG92ZXIuaC00MC1cbi0tXG5pbmNsdWRlL2xpbnV4L2tleGVjX2hhbmRvdmVyLmg9MTA3PXN0YXRpYyBpbmxpbmUgaW50IGtob19yZXRyaWV2ZV9zdWJ0cmVlKGNvbnN0IGNoYXIgKm5hbWUsIHBoeXNfYWRkcl90ICpwaHlzLFxuLS1cbmluY2x1ZGUvbGludXgva2V4ZWNfaGFuZG92ZXIuaC0xMTItXG5pbmNsdWRlL2xpbnV4L2tleGVjX2hhbmRvdmVyLmg6MTEzOnN0YXRpYyBpbmxpbmUgdm9pZCBraG9fbWVtb3J5X2luaXQodm9pZCkgeyB9XG5pbmNsdWRlL2xpbnV4L2tleGVjX2hhbmRvdmVyLmgtMTE0LVxuLS1cbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmM9MTYzMD1mc19pbml0Y2FsbChraG9faW5pdCk7XG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jLTE2MzEtXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jOjE2MzI6dm9pZCBfX2luaXQga2hvX21lbW9yeV9pbml0KHZvaWQpXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jLTE2MzMte1xuLS1cbm1tL21tX2luaXQuYz0yNzA2PXZvaWQgX19pbml0IG1tX2NvcmVfaW5pdCh2b2lkKVxuLS1cbm1tL21tX2luaXQuYy0yNzMwLVx0ICovXG5tbS9tbV9pbml0LmM6MjczMTpcdGtob19tZW1vcnlfaW5pdCgpO1xubW0vbW1faW5pdC5jLTI3MzItXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTYgMDk6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDA5OAoJCQkJCQkJb3V0cHV0OiA5MgoJCQkJCQkJdGhvdWdodHM6IDY2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIGBraG9fbWVtb3J5X2luaXRgIEZ1bmN0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBraG9fbWVtb3J5X2luaXRgIGZ1bmN0aW9uLiBJdCYjMzk7cyBjYWxsZWQgZnJvbSBgbW1fY29yZV9pbml0YCwgYW5kIHRoYXQsIGluIHR1cm4sIGlzIHBhcnQgb2YgdGhlIGJvb3QgcHJvY2Vzcy4gIFJpZ2h0LCBzbyBpdCYjMzk7cyBoYXBwZW5pbmcgZWFybHksIGVhcmx5IG9uLiBBbmQgYmVjYXVzZSBpdCYjMzk7cyBtYXJrZWQgYXMgYW4gYF9faW5pdGAgZnVuY3Rpb24sIEkmIzM5O20gZ29pbmcgdG8gYXNzdW1lIGl0JiMzOTtzIG9ubHkgbWVhbnQgdG8gcnVuIG9uY2UsIGF0IGJvb3QsIGFuZCB0aGVuIGl0JiMzOTtzIGVmZmVjdGl2ZWx5IGRpc2NhcmRlZC4gIFRoYXQmIzM5O3MgaW1wb3J0YW50LgoKQmVjYXVzZSBvZiB0aGlzIGJvb3QtdGltZSBuYXR1cmUsIHRoZXJlJiMzOTtzIG5vIHdheSBhIHVzZXItc3BhY2UgZnV6emVyIGxpa2Ugc3l6a2FsbGVyIGNhbiByZWFjaCB0aGlzIGNvZGUuIEl0JiMzOTtzIGp1c3Qgbm90IGFjY2Vzc2libGUgYWZ0ZXIgdGhlIGtlcm5lbCBoYXMgZmluaXNoZWQgYm9vdGluZy4gTXkgY29uY2x1c2lvbiBoZXJlIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQ6IGBXb3J0aEZ1enppbmdgIGlzIGdvaW5nIHRvIGJlIGBmYWxzZWAuIE5vIHBvaW50IGluIGV4cGVuZGluZyBhbnkgZWZmb3J0IHRyeWluZyB0byBmdXp6IHNvbWV0aGluZyBJIGNhbiYjMzk7dCBldmVuIGdldCB0byB3aXRoIHVzZXItc3BhY2UgdG9vbHMuIEl0JiMzOTtzIGVmZmVjdGl2ZWx5IG9mZi1saW1pdHMgZm9yIHRoYXQga2luZCBvZiBhbmFseXNpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTYgMDk6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBpbnRlZ2VyIG92ZXJmbG93IGluIGBraG9fcHJlc2VydmVkX21lbW9yeV9yZXNlcnZlYCwgd2hpY2ggaXMgYW4gYF9faW5pdGAgZnVuY3Rpb24gY2FsbGVkIGR1cmluZyBib290IHZpYSBga2hvX21lbW9yeV9pbml0YCBhbmQgYG1tX2NvcmVfaW5pdGAuIEJvb3QtdGltZSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbnMgYXJlIG5vdCByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYW5kIGNhbm5vdCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBpbnRlZ2VyIG92ZXJmbG93IGluIGBraG9fcHJlc2VydmVkX21lbW9yeV9yZXNlcnZlYCwgd2hpY2ggaXMgYW4gYF9faW5pdGAgZnVuY3Rpb24gY2FsbGVkIGR1cmluZyBib290IHZpYSBga2hvX21lbW9yeV9pbml0YCBhbmQgYG1tX2NvcmVfaW5pdGAuIEJvb3QtdGltZSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbnMgYXJlIG5vdCByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYW5kIGNhbm5vdCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNiAwOTozMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMTZUMDk6MzA6MjkuNTk3OTc4NDU0WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY3MDU5MjQxODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBpbnRlZ2VyIG92ZXJmbG93IGluIGBraG9fcHJlc2VydmVkX21lbW9yeV9yZXNlcnZlYCwgd2hpY2ggaXMgYW4gYF9faW5pdGAgZnVuY3Rpb24gY2FsbGVkIGR1cmluZyBib290IHZpYSBga2hvX21lbW9yeV9pbml0YCBhbmQgYG1tX2NvcmVfaW5pdGAuIEJvb3QtdGltZSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbnMgYXJlIG5vdCByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYW5kIGNhbm5vdCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNlQwOTozMDoyOS41OTc5ODQzNjRaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQwNzk3MjA1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGE0ODk5OTI3ZjhiODY4MjQ3MjQyMDY0Y2ViMmNiODE5NTkxYmRiYThcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFN1biBBdWcgMTYgMDk6MzA6MjggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEva2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYyBiL2tlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmNcXG5pbmRleCAxNzVjMDhhNmU0MWUzLi5jNzlmNDhiZDY0YWM2IDEwMDY0NFxcbi0tLSBhL2tlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmNcXG4rKysgYi9rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jXFxuQEAgLTUwMSw3ICs1MDEsNyBAQCBzdGF0aWMgaW50IF9faW5pdCBraG9fcHJlc2VydmVkX21lbW9yeV9yZXNlcnZlKHBoeXNfYWRkcl90IHBoeXMsXFxuIFxcdHN0cnVjdCBwYWdlICpwYWdlO1xcbiBcXHR1NjQgc3o7XFxuIFxcbi1cXHRzeiA9IDEgXFx1MDAzY1xcdTAwM2MgKG9yZGVyICsgUEFHRV9TSElGVCk7XFxuK1xcdHN6ID0gKHU2NCkxIFxcdTAwM2NcXHUwMDNjIChvcmRlciArIFBBR0VfU0hJRlQpO1xcbiBcXHRwYWdlID0ga2hvX2dldF9wcmVzZXJ2ZWRfcGFnZShwaHlzLCBvcmRlcik7XFxuIFxcbiBcXHQvKiBSZXNlcnZlIHRoZSBtZW1vcnkgcHJlc2VydmVkIGluIEtITyBpbiBtZW1ibG9jayAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNlQwOTozMDozMC4wMDY4MDM3MDJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxNjI5NzA4NDc2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gaW50ZWdlciBvdmVyZmxvdyBpbiBga2hvX3ByZXNlcnZlZF9tZW1vcnlfcmVzZXJ2ZWAsIHdoaWNoIGlzIGFuIGBfX2luaXRgIGZ1bmN0aW9uIGNhbGxlZCBkdXJpbmcgYm9vdCB2aWEgYGtob19tZW1vcnlfaW5pdGAgYW5kIGBtbV9jb3JlX2luaXRgLiBCb290LXRpbWUgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb25zIGFyZSBub3QgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGFuZCBjYW5ub3QgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYTQ4OTk5MjdmOGI4NjgyNDcyNDIwNjRjZWIyY2I4MTk1OTFiZGJhOFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gQXVnIDE2IDA5OjMwOjI4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEva2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYyBiL2tlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmNcbmluZGV4IDE3NWMwOGE2ZTQxZTMuLmM3OWY0OGJkNjRhYzYgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jXG4rKysgYi9rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jXG5AQCAtNTAxLDcgKzUwMSw3IEBAIHN0YXRpYyBpbnQgX19pbml0IGtob19wcmVzZXJ2ZWRfbWVtb3J5X3Jlc2VydmUocGh5c19hZGRyX3QgcGh5cyxcbiBcdHN0cnVjdCBwYWdlICpwYWdlO1xuIFx0dTY0IHN6O1xuIFxuLVx0c3ogPSAxIFx1MDAzY1x1MDAzYyAob3JkZXIgKyBQQUdFX1NISUZUKTtcbitcdHN6ID0gKHU2NCkxIFx1MDAzY1x1MDAzYyAob3JkZXIgKyBQQUdFX1NISUZUKTtcbiBcdHBhZ2UgPSBraG9fZ2V0X3ByZXNlcnZlZF9wYWdlKHBoeXMsIG9yZGVyKTtcbiBcbiBcdC8qIFJlc2VydmUgdGhlIG1lbW9yeSBwcmVzZXJ2ZWQgaW4gS0hPIGluIG1lbWJsb2NrICovXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNlQwOTozMDozMC4wMDY4MDUyNDJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTQ2NjMzNjUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEtlcm5lbCBMaXZlIFVwZGF0ZSBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGFyZ2V0aW5nIGBrZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jYC4gUmlnaHQgYXdheSwgSSBzZWUgdGhleSdyZSBtb2RpZnlpbmcgdGhlIGBraG9fcHJlc2VydmVkX21lbW9yeV9yZXNlcnZlYCBmdW5jdGlvbi4gVGhlIGtleSBjaGFuZ2UgaXMgdGhlIGV4cGxpY2l0IGNhc3QgdG8gYHU2NGAgaW4gdGhlIHNpemUgY2FsY3VsYXRpb246IGBzeiA9ICh1NjQpMSBcdTAwM2NcdTAwM2MgKG9yZGVyICsgUEFHRV9TSElGVCk7YC4gSXQgbG9va3MgbGlrZSB0aGlzIGlzIGludGVuZGVkIHRvIGFkZHJlc3MgYSBwb3RlbnRpYWwgaW50ZWdlciBvdmVyZmxvdyBvciBzaGlmdC1vdXQtb2YtYm91bmRzIGlzc3VlLiBLbm93aW5nIHRoaXMgYXJlYSwgdGhhdCdzIGFsbW9zdCBjZXJ0YWlubHkgcmVsYXRlZCB0byBjYWxjdWxhdGluZyB0aGUgc2l6ZSBvZiBhIG1lbW9yeSByZWdpb24sIHByb2JhYmx5IGZvciBhIGxpdmUgdXBkYXRlIG9wZXJhdGlvbiBvciBhIGtleGVjIHRyYW5zaXRpb24uIEdpdmVuIHRoZSBjb250ZXh0LCB0aGUgYG9yZGVyICsgUEFHRV9TSElGVGAgcGFydCBzdWdnZXN0cyB0aGV5J3JlIGRlYWxpbmcgd2l0aCBwYWdlIHNpemVzIGFuZCBwb3dlcnMgb2YgdHdvLCBhcyBleHBlY3RlZC5cblxuSSBzaG91bGQgcHJvYmFibHkgZGl2ZSBpbnRvIGBrZXhlY19oYW5kb3Zlci5jYCB0byB1bmRlcnN0YW5kIHRoZSBzcGVjaWZpY3Mgb2Ygd2hhdCB0aGV5J3JlIHRyeWluZyB0byByZXNlcnZlIGFuZCB3aHkgdGhpcyB3YXMgbmVjZXNzYXJ5LiBBIHF1aWNrIGxvb2sgYXQgdGhlIHN1cnJvdW5kaW5nIGNvZGUgd2lsbCB0ZWxsIG1lIHRoZSBhY3R1YWwgaW50ZW50IG9mIHRoZSBmdW5jdGlvbiwgYW5kIGxldCBtZSBiZSBhYnNvbHV0ZWx5IHN1cmUgd2hhdCB0aGV5J3ZlIGZpeGVkLiBJdCdzIGFsbW9zdCBjZXJ0YWluIGl0J3MgYSBzaXplIGNhbGN1bGF0aW9uIHByb2JsZW0sIGJ1dCBiZXN0IHRvIGNvbmZpcm0gdGhlIGNvbnRleHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5OTgsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5OCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE2VDA5OjMwOjMzLjU1MzQ0MjA4NVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTg0MTUyODQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia2hvX3ByZXNlcnZlZF9tZW1vcnlfcmVzZXJ2ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmM9NDcwPUVYUE9SVF9TWU1CT0xfR1BMKGtob19yZXN0b3JlX3BhZ2VzKTtcXG4tLVxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtNDc3LSAqIEVuc3VyZSBhbGwgdGhlIHN0cnVjdCBwYWdlcyBpbiB0aGUgcHJlc2VydmF0aW9uIGFyZVxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmM6NDc4OiAqIGluaXRpYWxpemVkLiBraG9fcHJlc2VydmVkX21lbW9yeV9yZXNlcnZlKCkgbWFya3MgdGhlIHJlc2VydmF0aW9uIGFzIG5vaW5pdFxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtNDc5LSAqIHRvIG1ha2Ugc3VyZSB0aGV5IGRvbid0IGdldCByZS1pbml0aWFsaXplZCBsYXRlci5cXG4tLVxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmM9NDgxPXN0YXRpYyBzdHJ1Y3QgcGFnZSAqX19pbml0IGtob19nZXRfcHJlc2VydmVkX3BhZ2UocGh5c19hZGRyX3QgcGh5cyxcXG4tLVxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtNDk2LVxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmM6NDk3OnN0YXRpYyBpbnQgX19pbml0IGtob19wcmVzZXJ2ZWRfbWVtb3J5X3Jlc2VydmUocGh5c19hZGRyX3QgcGh5cyxcXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jLTQ5OC1cXHRcXHRcXHRcXHRcXHQgICAgICAgdW5zaWduZWQgaW50IG9yZGVyKVxcbi0tXFxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYz0xNDExPXN0YXRpYyBpbnQgX19pbml0IGtob19tZW1fcmV0cmlldmUoY29uc3Qgdm9pZCAqZmR0KVxcbi0tXFxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYy0xNDI5LVxcdG11dGV4X2luaXQoXFx1MDAyNnRyZWUubG9jayk7XFxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYzoxNDMwOlxcdHJldHVybiBraG9fcmFkaXhfd2Fsa190cmVlKFxcdTAwMjZ0cmVlLCBraG9fcHJlc2VydmVkX21lbW9yeV9yZXNlcnZlKTtcXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jLTE0MzEtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNlQwOTozMDozMy43MTE4Njk1NTlaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDUyMjkxMzUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqSW52ZXN0aWdhdGluZyBNZW1vcnkgUmVzZXJ2YXRpb24gaW4gdGhlIGBraG9gIFN5c3RlbSoqXG5cblJpZ2h0LCBzbyBga2hvX3ByZXNlcnZlZF9tZW1vcnlfcmVzZXJ2ZWAgaXMgYmVpbmcgY2FsbGVkIGJ5IGBraG9fbWVtX3JldHJpZXZlYC4gVGhhdCBtYWtlcyBzZW5zZTsgYSByZXNlcnZhdGlvbiBmdW5jdGlvbiBsaWtlbHkgbmVlZHMgdG8gYmUgY2FsbGVkIHdoZW4gcmV0cmlldmluZyBzb21ldGhpbmcuIEJ1dCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udHJvbCBmbG93IGhlcmUsIGFuZCB3aGVyZSB0aGUgKnJldHJpZXZhbCogaXRzZWxmIGlzIG9yaWdpbmF0aW5nLiBUaW1lIHRvIGRyaWxsIGRvd24gaW50byBga2hvX21lbV9yZXRyaWV2ZWAuIFdoZXJlIGlzICp0aGF0KiBmdW5jdGlvbiBiZWluZyBjYWxsZWQgZnJvbT8gSSBuZWVkIHRvIHRyYWNlIHRoaXMgYmFjayB0byB0aGUgc291cmNlIHRvIGZ1bGx5IGdyYXNwIHRoZSBtZW1vcnkgYWxsb2NhdGlvbiBhbmQgZGVhbGxvY2F0aW9uIGxpZmVjeWNsZSB3aXRoaW4gdGhpcyBga2hvYCBjb21wb25lbnQuIFRoaXMgaXMgbGlrZWx5IGEgY3JpdGljYWwgc2VjdGlvbiBmb3IgcGVyZm9ybWFuY2UgYW5kIHBvdGVudGlhbCBtZW1vcnkgbGVha3MsIHNvIHVuZGVyc3RhbmRpbmcgdGhlIGNhbGwgc3RhY2sgaXMgcGFyYW1vdW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzc5LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTZUMDk6MzA6MzYuNzY0MTYzMTkyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4NTU1Mjg1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImtob19tZW1fcmV0cmlldmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jPTE0MDk9RVhQT1JUX1NZTUJPTF9HUEwoa2hvX3JldHJpZXZlX3N1YnRyZWUpO1xcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtMTQxMC1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jOjE0MTE6c3RhdGljIGludCBfX2luaXQga2hvX21lbV9yZXRyaWV2ZShjb25zdCB2b2lkICpmZHQpXFxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYy0xNDEyLXtcXG4tLVxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmM9MTYzMj12b2lkIF9faW5pdCBraG9fbWVtb3J5X2luaXQodm9pZClcXG4tLVxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtMTYzNi1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jOjE2Mzc6XFx0XFx0aWYgKGtob19tZW1fcmV0cmlldmUoa2hvX2dldF9mZHQoKSkpXFxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYy0xNjM4LVxcdFxcdFxcdGtob19pbi5mZHRfcGh5cyA9IDA7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE2VDA5OjMwOjM2LjgxMjcyMzEzN1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5ODIyMTQ3NTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgQm9vdC1UaW1lIEluaXRpYWxpemF0aW9uIEJ1ZyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYGtob19tZW1vcnlfaW5pdGAgZnVuY3Rpb24sIHdoaWNoLCBmcm9tIHRoZSBjb2RlLCBJIGNhbiBzZWUgaXMgZ2V0dGluZyBjYWxsZWQgZWFybHkgb24sIGR1cmluZyB0aGUgc3lzdGVtIGJvb3QgcHJvY2Vzcy4gU3BlY2lmaWNhbGx5LCBpdCdzIGNhbGxlZCBmcm9tIGBzZXR1cF9hcmNoYCBvciBzb21ldGhpbmcgYW5hbG9nb3VzIHRvIGl0LiBUaGF0IG1lYW5zIGl0J3MgYW4gYF9faW5pdGAgZnVuY3Rpb24sIHdoaWNoIGlzIGEga2V5IGRldGFpbC4gVGhlIGNoYW5nZSBub3RlcyBhIGZpeCBmb3IgYW4gaW50ZWdlciBvdmVyZmxvdyBpc3N1ZSB3aGVuIGNhbGN1bGF0aW5nIGBzemAgZm9yIG1lbW9yeSByZXNlcnZhdGlvbi4gSG1tLCB0aGUgYmlnIHF1ZXN0aW9uIGluIG15IG1pbmQgaXMgd2hldGhlciB0aGlzIGlzIHNvbWV0aGluZyB3ZSBzaG91bGQgZXZlbiBib3RoZXIgZnV6emluZy5cblxuS25vd2luZyB0aGF0IGl0J3MgYSBib290LXRpbWUgZnVuY3Rpb24gaW1tZWRpYXRlbHkgdGVsbHMgbWUgaXQncyBsaWtlbHkgKm5vdCogc29tZXRoaW5nIFN5emthbGxlciBvciBzdGFuZGFyZCB1c2VyLXNwYWNlIGZ1enppbmcgaXMgZ29pbmcgdG8gYmUgYWJsZSB0byByZWFjaC4gQm9vdC10aW1lIGluaXRpYWxpemF0aW9ucyBhcmUsIGluIGdlbmVyYWwsIHNoaWVsZGVkIGZyb20gdXNlci1zcGFjZSBpbnRlcmFjdGlvbiBhZnRlciB0aGUga2VybmVsIGlzIHVwIGFuZCBydW5uaW5nLiBTeXprYWxsZXIsIGluIGl0cyBjdXJyZW50IGNvbmZpZ3VyYXRpb24sIGdlbmVyYWxseSBmb2N1c2VzIG9uIGZ1bmN0aW9ucyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYWZ0ZXIgdGhlIHN5c3RlbSBpcyBydW5uaW5nLiBTbywgdGhlIGRpcmVjdCBpbXBhY3Qgb24gc3lzdGVtIHNlY3VyaXR5ICptYXkqIGJlIGxpbWl0ZWQuXG5cbkJ1dCwgYmVmb3JlIEkgZGlzbWlzcyBpdCBjb21wbGV0ZWx5LCBJJ2QgYmV0dGVyIGRvdWJsZS1jaGVjayB3aGVyZSBga2hvX21lbW9yeV9pbml0YCBpcyBjYWxsZWQgZnJvbSB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuIEEgcXVpY2sgcmV2aWV3IG9mIHRoZSBjYWxsIHNpdGVzIHdpbGwgY29uZmlybSB0aGUgYm9vdC10aW1lIG5hdHVyZSBvZiB0aGlzIGZ1bmN0aW9uIGFuZCwgaG9wZWZ1bGx5LCBzb2xpZGlmeSBteSBpbml0aWFsIGFzc2Vzc21lbnQuIEkgbmVlZCB0byBrbm93IHdoZXJlIGl0J3MgY2FsbGVkIHRvIGNvbmZpcm0gaXRzIGxvY2F0aW9uIGluIG1lbW9yeSBhbmQgaW50ZXJhY3Rpb24gd2l0aCBvdGhlciBjb21wb25lbnRzLiBJZiBpdHMgdHJ1bHkgZHVyaW5nIGluaXRpYWxpemF0aW9uLCB0aGUgdnVsbmVyYWJpbGl0eSwgd2hpbGUgcHJlc2VudCwgbWF5IG5vdCBiZSBleHBsb2l0YWJsZSB2aWEgdGhlIHNhbWUgdmVjdG9ycyBhcyBvdGhlciB1c2VyLWFjY2Vzc2libGUgY29kZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzI0NiwiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE2VDA5OjMwOjQwLjc5NDk0MDcxNFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODI2OTc2NzExLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImtob19tZW1vcnlfaW5pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9rZXhlY19oYW5kb3Zlci5oPTM3PWludCBraG9fcmV0cmlldmVfc3VidHJlZShjb25zdCBjaGFyICpuYW1lLCBwaHlzX2FkZHJfdCAqcGh5cywgc2l6ZV90ICpzaXplKTtcXG5pbmNsdWRlL2xpbnV4L2tleGVjX2hhbmRvdmVyLmgtMzgtXFxuaW5jbHVkZS9saW51eC9rZXhlY19oYW5kb3Zlci5oOjM5OnZvaWQga2hvX21lbW9yeV9pbml0KHZvaWQpO1xcbmluY2x1ZGUvbGludXgva2V4ZWNfaGFuZG92ZXIuaC00MC1cXG4tLVxcbmluY2x1ZGUvbGludXgva2V4ZWNfaGFuZG92ZXIuaD0xMDc9c3RhdGljIGlubGluZSBpbnQga2hvX3JldHJpZXZlX3N1YnRyZWUoY29uc3QgY2hhciAqbmFtZSwgcGh5c19hZGRyX3QgKnBoeXMsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2tleGVjX2hhbmRvdmVyLmgtMTEyLVxcbmluY2x1ZGUvbGludXgva2V4ZWNfaGFuZG92ZXIuaDoxMTM6c3RhdGljIGlubGluZSB2b2lkIGtob19tZW1vcnlfaW5pdCh2b2lkKSB7IH1cXG5pbmNsdWRlL2xpbnV4L2tleGVjX2hhbmRvdmVyLmgtMTE0LVxcbi0tXFxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYz0xNjMwPWZzX2luaXRjYWxsKGtob19pbml0KTtcXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jLTE2MzEtXFxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYzoxNjMyOnZvaWQgX19pbml0IGtob19tZW1vcnlfaW5pdCh2b2lkKVxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtMTYzMy17XFxuLS1cXG5tbS9tbV9pbml0LmM9MjcwNj12b2lkIF9faW5pdCBtbV9jb3JlX2luaXQodm9pZClcXG4tLVxcbm1tL21tX2luaXQuYy0yNzMwLVxcdCAqL1xcbm1tL21tX2luaXQuYzoyNzMxOlxcdGtob19tZW1vcnlfaW5pdCgpO1xcbm1tL21tX2luaXQuYy0yNzMyLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNlQwOTozMDo0Mi42MjE5MjE2NTVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjgxOTM4MTU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIGBraG9fbWVtb3J5X2luaXRgIEZ1bmN0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBga2hvX21lbW9yeV9pbml0YCBmdW5jdGlvbi4gSXQncyBjYWxsZWQgZnJvbSBgbW1fY29yZV9pbml0YCwgYW5kIHRoYXQsIGluIHR1cm4sIGlzIHBhcnQgb2YgdGhlIGJvb3QgcHJvY2Vzcy4gIFJpZ2h0LCBzbyBpdCdzIGhhcHBlbmluZyBlYXJseSwgZWFybHkgb24uIEFuZCBiZWNhdXNlIGl0J3MgbWFya2VkIGFzIGFuIGBfX2luaXRgIGZ1bmN0aW9uLCBJJ20gZ29pbmcgdG8gYXNzdW1lIGl0J3Mgb25seSBtZWFudCB0byBydW4gb25jZSwgYXQgYm9vdCwgYW5kIHRoZW4gaXQncyBlZmZlY3RpdmVseSBkaXNjYXJkZWQuICBUaGF0J3MgaW1wb3J0YW50LlxuXG5CZWNhdXNlIG9mIHRoaXMgYm9vdC10aW1lIG5hdHVyZSwgdGhlcmUncyBubyB3YXkgYSB1c2VyLXNwYWNlIGZ1enplciBsaWtlIHN5emthbGxlciBjYW4gcmVhY2ggdGhpcyBjb2RlLiBJdCdzIGp1c3Qgbm90IGFjY2Vzc2libGUgYWZ0ZXIgdGhlIGtlcm5lbCBoYXMgZmluaXNoZWQgYm9vdGluZy4gTXkgY29uY2x1c2lvbiBoZXJlIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQ6IGBXb3J0aEZ1enppbmdgIGlzIGdvaW5nIHRvIGJlIGBmYWxzZWAuIE5vIHBvaW50IGluIGV4cGVuZGluZyBhbnkgZWZmb3J0IHRyeWluZyB0byBmdXp6IHNvbWV0aGluZyBJIGNhbid0IGV2ZW4gZ2V0IHRvIHdpdGggdXNlci1zcGFjZSB0b29scy4gSXQncyBlZmZlY3RpdmVseSBvZmYtbGltaXRzIGZvciB0aGF0IGtpbmQgb2YgYW5hbHlzaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwOTgsIk91dHB1dFRva2VucyI6OTIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNlQwOTozMDo0Ni4zMDM4NjMwNTRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjU2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBpbnRlZ2VyIG92ZXJmbG93IGluIGBraG9fcHJlc2VydmVkX21lbW9yeV9yZXNlcnZlYCwgd2hpY2ggaXMgYW4gYF9faW5pdGAgZnVuY3Rpb24gY2FsbGVkIGR1cmluZyBib290IHZpYSBga2hvX21lbW9yeV9pbml0YCBhbmQgYG1tX2NvcmVfaW5pdGAuIEJvb3QtdGltZSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbnMgYXJlIG5vdCByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYW5kIGNhbm5vdCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBpbnRlZ2VyIG92ZXJmbG93IGluIGBraG9fcHJlc2VydmVkX21lbW9yeV9yZXNlcnZlYCwgd2hpY2ggaXMgYW4gYF9faW5pdGAgZnVuY3Rpb24gY2FsbGVkIGR1cmluZyBib290IHZpYSBga2hvX21lbW9yeV9pbml0YCBhbmQgYG1tX2NvcmVfaW5pdGAuIEJvb3QtdGltZSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbnMgYXJlIG5vdCByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYW5kIGNhbm5vdCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNlQwOTozMDo0Ni4zMDM4OTAyNjRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMxNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflown27sn[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-16 09:12:49 +0000 UTC FinishedAt: 2026-08-16 09:30:47 +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+CgkJCTx0ZD4yMDI2LzA4LzE2IDA5OjMwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gaW50ZWdlciBvdmVyZmxvdyBpbiBga2hvX3ByZXNlcnZlZF9tZW1vcnlfcmVzZXJ2ZWAsIHdoaWNoIGlzIGFuIGBfX2luaXRgIGZ1bmN0aW9uIGNhbGxlZCBkdXJpbmcgYm9vdCB2aWEgYGtob19tZW1vcnlfaW5pdGAgYW5kIGBtbV9jb3JlX2luaXRgLiBCb290LXRpbWUgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb25zIGFyZSBub3QgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGFuZCBjYW5ub3QgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNiAwOTozMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGE0ODk5OTI3ZjhiODY4MjQ3MjQyMDY0Y2ViMmNiODE5NTkxYmRiYThcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEF1ZyAxNiAwOTozMDoyOCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jIGIva2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuY1xuaW5kZXggMTc1YzA4YTZlNDFlMy4uYzc5ZjQ4YmQ2NGFjNiAxMDA2NDRcbi0tLSBhL2tlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmNcbkBAIC01MDEsNyAmIzQzOzUwMSw3IEBAIHN0YXRpYyBpbnQgX19pbml0IGtob19wcmVzZXJ2ZWRfbWVtb3J5X3Jlc2VydmUocGh5c19hZGRyX3QgcGh5cyxcbiBcdHN0cnVjdCBwYWdlICpwYWdlO1xuIFx0dTY0IHN6O1xuIFxuLVx0c3ogPSAxIFx1MDAzY1x1MDAzYyAob3JkZXIgJiM0MzsgUEFHRV9TSElGVCk7XG4mIzQzO1x0c3ogPSAodTY0KTEgXHUwMDNjXHUwMDNjIChvcmRlciAmIzQzOyBQQUdFX1NISUZUKTtcbiBcdHBhZ2UgPSBraG9fZ2V0X3ByZXNlcnZlZF9wYWdlKHBoeXMsIG9yZGVyKTtcbiBcbiBcdC8qIFJlc2VydmUgdGhlIG1lbW9yeSBwcmVzZXJ2ZWQgaW4gS0hPIGluIG1lbWJsb2NrICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTYgMDk6MzA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIGludGVnZXIgb3ZlcmZsb3cgaW4gYGtob19wcmVzZXJ2ZWRfbWVtb3J5X3Jlc2VydmVgLCB3aGljaCBpcyBhbiBgX19pbml0YCBmdW5jdGlvbiBjYWxsZWQgZHVyaW5nIGJvb3QgdmlhIGBraG9fbWVtb3J5X2luaXRgIGFuZCBgbW1fY29yZV9pbml0YC4gQm9vdC10aW1lIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9ucyBhcmUgbm90IHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSBhbmQgY2Fubm90IGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBhNDg5OTkyN2Y4Yjg2ODI0NzI0MjA2NGNlYjJjYjgxOTU5MWJkYmE4CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBBdWcgMTYgMDk6MzA6MjggMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jIGIva2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYwppbmRleCAxNzVjMDhhNmU0MWUzLi5jNzlmNDhiZDY0YWM2IDEwMDY0NAotLS0gYS9rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jCiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMKQEAgLTUwMSw3ICYjNDM7NTAxLDcgQEAgc3RhdGljIGludCBfX2luaXQga2hvX3ByZXNlcnZlZF9tZW1vcnlfcmVzZXJ2ZShwaHlzX2FkZHJfdCBwaHlzLAogCXN0cnVjdCBwYWdlICpwYWdlOwogCXU2NCBzejsKIAotCXN6ID0gMSAmbHQ7Jmx0OyAob3JkZXIgJiM0MzsgUEFHRV9TSElGVCk7CiYjNDM7CXN6ID0gKHU2NCkxICZsdDsmbHQ7IChvcmRlciAmIzQzOyBQQUdFX1NISUZUKTsKIAlwYWdlID0ga2hvX2dldF9wcmVzZXJ2ZWRfcGFnZShwaHlzLCBvcmRlcik7CiAKIAkvKiBSZXNlcnZlIHRoZSBtZW1vcnkgcHJlc2VydmVkIGluIEtITyBpbiBtZW1ibG9jayAqLwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNiAwOTozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTk4CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogOTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgS2VybmVsIExpdmUgVXBkYXRlIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRhcmdldGluZyBga2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuY2AuIFJpZ2h0IGF3YXksIEkgc2VlIHRoZXkmIzM5O3JlIG1vZGlmeWluZyB0aGUgYGtob19wcmVzZXJ2ZWRfbWVtb3J5X3Jlc2VydmVgIGZ1bmN0aW9uLiBUaGUga2V5IGNoYW5nZSBpcyB0aGUgZXhwbGljaXQgY2FzdCB0byBgdTY0YCBpbiB0aGUgc2l6ZSBjYWxjdWxhdGlvbjogYHN6ID0gKHU2NCkxICZsdDsmbHQ7IChvcmRlciAmIzQzOyBQQUdFX1NISUZUKTtgLiBJdCBsb29rcyBsaWtlIHRoaXMgaXMgaW50ZW5kZWQgdG8gYWRkcmVzcyBhIHBvdGVudGlhbCBpbnRlZ2VyIG92ZXJmbG93IG9yIHNoaWZ0LW91dC1vZi1ib3VuZHMgaXNzdWUuIEtub3dpbmcgdGhpcyBhcmVhLCB0aGF0JiMzOTtzIGFsbW9zdCBjZXJ0YWlubHkgcmVsYXRlZCB0byBjYWxjdWxhdGluZyB0aGUgc2l6ZSBvZiBhIG1lbW9yeSByZWdpb24sIHByb2JhYmx5IGZvciBhIGxpdmUgdXBkYXRlIG9wZXJhdGlvbiBvciBhIGtleGVjIHRyYW5zaXRpb24uIEdpdmVuIHRoZSBjb250ZXh0LCB0aGUgYG9yZGVyICYjNDM7IFBBR0VfU0hJRlRgIHBhcnQgc3VnZ2VzdHMgdGhleSYjMzk7cmUgZGVhbGluZyB3aXRoIHBhZ2Ugc2l6ZXMgYW5kIHBvd2VycyBvZiB0d28sIGFzIGV4cGVjdGVkLgoKSSBzaG91bGQgcHJvYmFibHkgZGl2ZSBpbnRvIGBrZXhlY19oYW5kb3Zlci5jYCB0byB1bmRlcnN0YW5kIHRoZSBzcGVjaWZpY3Mgb2Ygd2hhdCB0aGV5JiMzOTtyZSB0cnlpbmcgdG8gcmVzZXJ2ZSBhbmQgd2h5IHRoaXMgd2FzIG5lY2Vzc2FyeS4gQSBxdWljayBsb29rIGF0IHRoZSBzdXJyb3VuZGluZyBjb2RlIHdpbGwgdGVsbCBtZSB0aGUgYWN0dWFsIGludGVudCBvZiB0aGUgZnVuY3Rpb24sIGFuZCBsZXQgbWUgYmUgYWJzb2x1dGVseSBzdXJlIHdoYXQgdGhleSYjMzk7dmUgZml4ZWQuIEl0JiMzOTtzIGFsbW9zdCBjZXJ0YWluIGl0JiMzOTtzIGEgc2l6ZSBjYWxjdWxhdGlvbiBwcm9ibGVtLCBidXQgYmVzdCB0byBjb25maXJtIHRoZSBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE2IDA5OjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2tob19wcmVzZXJ2ZWRfbWVtb3J5X3Jlc2VydmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmM9NDcwPUVYUE9SVF9TWU1CT0xfR1BMKGtob19yZXN0b3JlX3BhZ2VzKTtcbi0tXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jLTQ3Ny0gKiBFbnN1cmUgYWxsIHRoZSBzdHJ1Y3QgcGFnZXMgaW4gdGhlIHByZXNlcnZhdGlvbiBhcmVcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmM6NDc4OiAqIGluaXRpYWxpemVkLiBraG9fcHJlc2VydmVkX21lbW9yeV9yZXNlcnZlKCkgbWFya3MgdGhlIHJlc2VydmF0aW9uIGFzIG5vaW5pdFxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYy00NzktICogdG8gbWFrZSBzdXJlIHRoZXkgZG9uJiMzOTt0IGdldCByZS1pbml0aWFsaXplZCBsYXRlci5cbi0tXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jPTQ4MT1zdGF0aWMgc3RydWN0IHBhZ2UgKl9faW5pdCBraG9fZ2V0X3ByZXNlcnZlZF9wYWdlKHBoeXNfYWRkcl90IHBoeXMsXG4tLVxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYy00OTYtXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jOjQ5NzpzdGF0aWMgaW50IF9faW5pdCBraG9fcHJlc2VydmVkX21lbW9yeV9yZXNlcnZlKHBoeXNfYWRkcl90IHBoeXMsXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jLTQ5OC1cdFx0XHRcdFx0ICAgICAgIHVuc2lnbmVkIGludCBvcmRlcilcbi0tXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jPTE0MTE9c3RhdGljIGludCBfX2luaXQga2hvX21lbV9yZXRyaWV2ZShjb25zdCB2b2lkICpmZHQpXG4tLVxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYy0xNDI5LVx0bXV0ZXhfaW5pdChcdTAwMjZ0cmVlLmxvY2spO1xua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYzoxNDMwOlx0cmV0dXJuIGtob19yYWRpeF93YWxrX3RyZWUoXHUwMDI2dHJlZSwga2hvX3ByZXNlcnZlZF9tZW1vcnlfcmVzZXJ2ZSk7XG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jLTE0MzEtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE2IDA5OjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3NzkKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4KCioqSW52ZXN0aWdhdGluZyBNZW1vcnkgUmVzZXJ2YXRpb24gaW4gdGhlIGBraG9gIFN5c3RlbSoqCgpSaWdodCwgc28gYGtob19wcmVzZXJ2ZWRfbWVtb3J5X3Jlc2VydmVgIGlzIGJlaW5nIGNhbGxlZCBieSBga2hvX21lbV9yZXRyaWV2ZWAuIFRoYXQgbWFrZXMgc2Vuc2U7IGEgcmVzZXJ2YXRpb24gZnVuY3Rpb24gbGlrZWx5IG5lZWRzIHRvIGJlIGNhbGxlZCB3aGVuIHJldHJpZXZpbmcgc29tZXRoaW5nLiBCdXQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgZmxvdyBoZXJlLCBhbmQgd2hlcmUgdGhlICpyZXRyaWV2YWwqIGl0c2VsZiBpcyBvcmlnaW5hdGluZy4gVGltZSB0byBkcmlsbCBkb3duIGludG8gYGtob19tZW1fcmV0cmlldmVgLiBXaGVyZSBpcyAqdGhhdCogZnVuY3Rpb24gYmVpbmcgY2FsbGVkIGZyb20/IEkgbmVlZCB0byB0cmFjZSB0aGlzIGJhY2sgdG8gdGhlIHNvdXJjZSB0byBmdWxseSBncmFzcCB0aGUgbWVtb3J5IGFsbG9jYXRpb24gYW5kIGRlYWxsb2NhdGlvbiBsaWZlY3ljbGUgd2l0aGluIHRoaXMgYGtob2AgY29tcG9uZW50LiBUaGlzIGlzIGxpa2VseSBhIGNyaXRpY2FsIHNlY3Rpb24gZm9yIHBlcmZvcm1hbmNlIGFuZCBwb3RlbnRpYWwgbWVtb3J5IGxlYWtzLCBzbyB1bmRlcnN0YW5kaW5nIHRoZSBjYWxsIHN0YWNrIGlzIHBhcmFtb3VudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNiAwOTozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtraG9fbWVtX3JldHJpZXZlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jPTE0MDk9RVhQT1JUX1NZTUJPTF9HUEwoa2hvX3JldHJpZXZlX3N1YnRyZWUpO1xua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYy0xNDEwLVxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYzoxNDExOnN0YXRpYyBpbnQgX19pbml0IGtob19tZW1fcmV0cmlldmUoY29uc3Qgdm9pZCAqZmR0KVxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYy0xNDEyLXtcbi0tXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jPTE2MzI9dm9pZCBfX2luaXQga2hvX21lbW9yeV9pbml0KHZvaWQpXG4tLVxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYy0xNjM2LVxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYzoxNjM3Olx0XHRpZiAoa2hvX21lbV9yZXRyaWV2ZShraG9fZ2V0X2ZkdCgpKSlcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtMTYzOC1cdFx0XHRraG9faW4uZmR0X3BoeXMgPSAwO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE2IDA5OjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyNDYKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiA5OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBCb290LVRpbWUgSW5pdGlhbGl6YXRpb24gQnVnKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBraG9fbWVtb3J5X2luaXRgIGZ1bmN0aW9uLCB3aGljaCwgZnJvbSB0aGUgY29kZSwgSSBjYW4gc2VlIGlzIGdldHRpbmcgY2FsbGVkIGVhcmx5IG9uLCBkdXJpbmcgdGhlIHN5c3RlbSBib290IHByb2Nlc3MuIFNwZWNpZmljYWxseSwgaXQmIzM5O3MgY2FsbGVkIGZyb20gYHNldHVwX2FyY2hgIG9yIHNvbWV0aGluZyBhbmFsb2dvdXMgdG8gaXQuIFRoYXQgbWVhbnMgaXQmIzM5O3MgYW4gYF9faW5pdGAgZnVuY3Rpb24sIHdoaWNoIGlzIGEga2V5IGRldGFpbC4gVGhlIGNoYW5nZSBub3RlcyBhIGZpeCBmb3IgYW4gaW50ZWdlciBvdmVyZmxvdyBpc3N1ZSB3aGVuIGNhbGN1bGF0aW5nIGBzemAgZm9yIG1lbW9yeSByZXNlcnZhdGlvbi4gSG1tLCB0aGUgYmlnIHF1ZXN0aW9uIGluIG15IG1pbmQgaXMgd2hldGhlciB0aGlzIGlzIHNvbWV0aGluZyB3ZSBzaG91bGQgZXZlbiBib3RoZXIgZnV6emluZy4KCktub3dpbmcgdGhhdCBpdCYjMzk7cyBhIGJvb3QtdGltZSBmdW5jdGlvbiBpbW1lZGlhdGVseSB0ZWxscyBtZSBpdCYjMzk7cyBsaWtlbHkgKm5vdCogc29tZXRoaW5nIFN5emthbGxlciBvciBzdGFuZGFyZCB1c2VyLXNwYWNlIGZ1enppbmcgaXMgZ29pbmcgdG8gYmUgYWJsZSB0byByZWFjaC4gQm9vdC10aW1lIGluaXRpYWxpemF0aW9ucyBhcmUsIGluIGdlbmVyYWwsIHNoaWVsZGVkIGZyb20gdXNlci1zcGFjZSBpbnRlcmFjdGlvbiBhZnRlciB0aGUga2VybmVsIGlzIHVwIGFuZCBydW5uaW5nLiBTeXprYWxsZXIsIGluIGl0cyBjdXJyZW50IGNvbmZpZ3VyYXRpb24sIGdlbmVyYWxseSBmb2N1c2VzIG9uIGZ1bmN0aW9ucyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYWZ0ZXIgdGhlIHN5c3RlbSBpcyBydW5uaW5nLiBTbywgdGhlIGRpcmVjdCBpbXBhY3Qgb24gc3lzdGVtIHNlY3VyaXR5ICptYXkqIGJlIGxpbWl0ZWQuCgpCdXQsIGJlZm9yZSBJIGRpc21pc3MgaXQgY29tcGxldGVseSwgSSYjMzk7ZCBiZXR0ZXIgZG91YmxlLWNoZWNrIHdoZXJlIGBraG9fbWVtb3J5X2luaXRgIGlzIGNhbGxlZCBmcm9tIHRvIGJlIGFic29sdXRlbHkgc3VyZS4gQSBxdWljayByZXZpZXcgb2YgdGhlIGNhbGwgc2l0ZXMgd2lsbCBjb25maXJtIHRoZSBib290LXRpbWUgbmF0dXJlIG9mIHRoaXMgZnVuY3Rpb24gYW5kLCBob3BlZnVsbHksIHNvbGlkaWZ5IG15IGluaXRpYWwgYXNzZXNzbWVudC4gSSBuZWVkIHRvIGtub3cgd2hlcmUgaXQmIzM5O3MgY2FsbGVkIHRvIGNvbmZpcm0gaXRzIGxvY2F0aW9uIGluIG1lbW9yeSBhbmQgaW50ZXJhY3Rpb24gd2l0aCBvdGhlciBjb21wb25lbnRzLiBJZiBpdHMgdHJ1bHkgZHVyaW5nIGluaXRpYWxpemF0aW9uLCB0aGUgdnVsbmVyYWJpbGl0eSwgd2hpbGUgcHJlc2VudCwgbWF5IG5vdCBiZSBleHBsb2l0YWJsZSB2aWEgdGhlIHNhbWUgdmVjdG9ycyBhcyBvdGhlciB1c2VyLWFjY2Vzc2libGUgY29kZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNiAwOTozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtraG9fbWVtb3J5X2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9rZXhlY19oYW5kb3Zlci5oPTM3PWludCBraG9fcmV0cmlldmVfc3VidHJlZShjb25zdCBjaGFyICpuYW1lLCBwaHlzX2FkZHJfdCAqcGh5cywgc2l6ZV90ICpzaXplKTtcbmluY2x1ZGUvbGludXgva2V4ZWNfaGFuZG92ZXIuaC0zOC1cbmluY2x1ZGUvbGludXgva2V4ZWNfaGFuZG92ZXIuaDozOTp2b2lkIGtob19tZW1vcnlfaW5pdCh2b2lkKTtcbmluY2x1ZGUvbGludXgva2V4ZWNfaGFuZG92ZXIuaC00MC1cbi0tXG5pbmNsdWRlL2xpbnV4L2tleGVjX2hhbmRvdmVyLmg9MTA3PXN0YXRpYyBpbmxpbmUgaW50IGtob19yZXRyaWV2ZV9zdWJ0cmVlKGNvbnN0IGNoYXIgKm5hbWUsIHBoeXNfYWRkcl90ICpwaHlzLFxuLS1cbmluY2x1ZGUvbGludXgva2V4ZWNfaGFuZG92ZXIuaC0xMTItXG5pbmNsdWRlL2xpbnV4L2tleGVjX2hhbmRvdmVyLmg6MTEzOnN0YXRpYyBpbmxpbmUgdm9pZCBraG9fbWVtb3J5X2luaXQodm9pZCkgeyB9XG5pbmNsdWRlL2xpbnV4L2tleGVjX2hhbmRvdmVyLmgtMTE0LVxuLS1cbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmM9MTYzMD1mc19pbml0Y2FsbChraG9faW5pdCk7XG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jLTE2MzEtXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jOjE2MzI6dm9pZCBfX2luaXQga2hvX21lbW9yeV9pbml0KHZvaWQpXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jLTE2MzMte1xuLS1cbm1tL21tX2luaXQuYz0yNzA2PXZvaWQgX19pbml0IG1tX2NvcmVfaW5pdCh2b2lkKVxuLS1cbm1tL21tX2luaXQuYy0yNzMwLVx0ICovXG5tbS9tbV9pbml0LmM6MjczMTpcdGtob19tZW1vcnlfaW5pdCgpO1xubW0vbW1faW5pdC5jLTI3MzItXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTYgMDk6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDA5OAoJCQkJCQkJb3V0cHV0OiA5MgoJCQkJCQkJdGhvdWdodHM6IDY2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIGBraG9fbWVtb3J5X2luaXRgIEZ1bmN0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBraG9fbWVtb3J5X2luaXRgIGZ1bmN0aW9uLiBJdCYjMzk7cyBjYWxsZWQgZnJvbSBgbW1fY29yZV9pbml0YCwgYW5kIHRoYXQsIGluIHR1cm4sIGlzIHBhcnQgb2YgdGhlIGJvb3QgcHJvY2Vzcy4gIFJpZ2h0LCBzbyBpdCYjMzk7cyBoYXBwZW5pbmcgZWFybHksIGVhcmx5IG9uLiBBbmQgYmVjYXVzZSBpdCYjMzk7cyBtYXJrZWQgYXMgYW4gYF9faW5pdGAgZnVuY3Rpb24sIEkmIzM5O20gZ29pbmcgdG8gYXNzdW1lIGl0JiMzOTtzIG9ubHkgbWVhbnQgdG8gcnVuIG9uY2UsIGF0IGJvb3QsIGFuZCB0aGVuIGl0JiMzOTtzIGVmZmVjdGl2ZWx5IGRpc2NhcmRlZC4gIFRoYXQmIzM5O3MgaW1wb3J0YW50LgoKQmVjYXVzZSBvZiB0aGlzIGJvb3QtdGltZSBuYXR1cmUsIHRoZXJlJiMzOTtzIG5vIHdheSBhIHVzZXItc3BhY2UgZnV6emVyIGxpa2Ugc3l6a2FsbGVyIGNhbiByZWFjaCB0aGlzIGNvZGUuIEl0JiMzOTtzIGp1c3Qgbm90IGFjY2Vzc2libGUgYWZ0ZXIgdGhlIGtlcm5lbCBoYXMgZmluaXNoZWQgYm9vdGluZy4gTXkgY29uY2x1c2lvbiBoZXJlIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQ6IGBXb3J0aEZ1enppbmdgIGlzIGdvaW5nIHRvIGJlIGBmYWxzZWAuIE5vIHBvaW50IGluIGV4cGVuZGluZyBhbnkgZWZmb3J0IHRyeWluZyB0byBmdXp6IHNvbWV0aGluZyBJIGNhbiYjMzk7dCBldmVuIGdldCB0byB3aXRoIHVzZXItc3BhY2UgdG9vbHMuIEl0JiMzOTtzIGVmZmVjdGl2ZWx5IG9mZi1saW1pdHMgZm9yIHRoYXQga2luZCBvZiBhbmFseXNpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTYgMDk6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBpbnRlZ2VyIG92ZXJmbG93IGluIGBraG9fcHJlc2VydmVkX21lbW9yeV9yZXNlcnZlYCwgd2hpY2ggaXMgYW4gYF9faW5pdGAgZnVuY3Rpb24gY2FsbGVkIGR1cmluZyBib290IHZpYSBga2hvX21lbW9yeV9pbml0YCBhbmQgYG1tX2NvcmVfaW5pdGAuIEJvb3QtdGltZSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbnMgYXJlIG5vdCByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYW5kIGNhbm5vdCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBpbnRlZ2VyIG92ZXJmbG93IGluIGBraG9fcHJlc2VydmVkX21lbW9yeV9yZXNlcnZlYCwgd2hpY2ggaXMgYW4gYF9faW5pdGAgZnVuY3Rpb24gY2FsbGVkIGR1cmluZyBib290IHZpYSBga2hvX21lbW9yeV9pbml0YCBhbmQgYG1tX2NvcmVfaW5pdGAuIEJvb3QtdGltZSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbnMgYXJlIG5vdCByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYW5kIGNhbm5vdCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNiAwOTozMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMTZUMDk6MzA6MjkuNTk3OTc4NDU0WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY3MDU5MjQxODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBpbnRlZ2VyIG92ZXJmbG93IGluIGBraG9fcHJlc2VydmVkX21lbW9yeV9yZXNlcnZlYCwgd2hpY2ggaXMgYW4gYF9faW5pdGAgZnVuY3Rpb24gY2FsbGVkIGR1cmluZyBib290IHZpYSBga2hvX21lbW9yeV9pbml0YCBhbmQgYG1tX2NvcmVfaW5pdGAuIEJvb3QtdGltZSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbnMgYXJlIG5vdCByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYW5kIGNhbm5vdCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNlQwOTozMDoyOS41OTc5ODQzNjRaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQwNzk3MjA1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGE0ODk5OTI3ZjhiODY4MjQ3MjQyMDY0Y2ViMmNiODE5NTkxYmRiYThcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFN1biBBdWcgMTYgMDk6MzA6MjggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEva2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYyBiL2tlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmNcXG5pbmRleCAxNzVjMDhhNmU0MWUzLi5jNzlmNDhiZDY0YWM2IDEwMDY0NFxcbi0tLSBhL2tlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmNcXG4rKysgYi9rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jXFxuQEAgLTUwMSw3ICs1MDEsNyBAQCBzdGF0aWMgaW50IF9faW5pdCBraG9fcHJlc2VydmVkX21lbW9yeV9yZXNlcnZlKHBoeXNfYWRkcl90IHBoeXMsXFxuIFxcdHN0cnVjdCBwYWdlICpwYWdlO1xcbiBcXHR1NjQgc3o7XFxuIFxcbi1cXHRzeiA9IDEgXFx1MDAzY1xcdTAwM2MgKG9yZGVyICsgUEFHRV9TSElGVCk7XFxuK1xcdHN6ID0gKHU2NCkxIFxcdTAwM2NcXHUwMDNjIChvcmRlciArIFBBR0VfU0hJRlQpO1xcbiBcXHRwYWdlID0ga2hvX2dldF9wcmVzZXJ2ZWRfcGFnZShwaHlzLCBvcmRlcik7XFxuIFxcbiBcXHQvKiBSZXNlcnZlIHRoZSBtZW1vcnkgcHJlc2VydmVkIGluIEtITyBpbiBtZW1ibG9jayAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNlQwOTozMDozMC4wMDY4MDM3MDJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxNjI5NzA4NDc2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gaW50ZWdlciBvdmVyZmxvdyBpbiBga2hvX3ByZXNlcnZlZF9tZW1vcnlfcmVzZXJ2ZWAsIHdoaWNoIGlzIGFuIGBfX2luaXRgIGZ1bmN0aW9uIGNhbGxlZCBkdXJpbmcgYm9vdCB2aWEgYGtob19tZW1vcnlfaW5pdGAgYW5kIGBtbV9jb3JlX2luaXRgLiBCb290LXRpbWUgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb25zIGFyZSBub3QgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGFuZCBjYW5ub3QgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYTQ4OTk5MjdmOGI4NjgyNDcyNDIwNjRjZWIyY2I4MTk1OTFiZGJhOFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gQXVnIDE2IDA5OjMwOjI4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEva2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYyBiL2tlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmNcbmluZGV4IDE3NWMwOGE2ZTQxZTMuLmM3OWY0OGJkNjRhYzYgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jXG4rKysgYi9rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jXG5AQCAtNTAxLDcgKzUwMSw3IEBAIHN0YXRpYyBpbnQgX19pbml0IGtob19wcmVzZXJ2ZWRfbWVtb3J5X3Jlc2VydmUocGh5c19hZGRyX3QgcGh5cyxcbiBcdHN0cnVjdCBwYWdlICpwYWdlO1xuIFx0dTY0IHN6O1xuIFxuLVx0c3ogPSAxIFx1MDAzY1x1MDAzYyAob3JkZXIgKyBQQUdFX1NISUZUKTtcbitcdHN6ID0gKHU2NCkxIFx1MDAzY1x1MDAzYyAob3JkZXIgKyBQQUdFX1NISUZUKTtcbiBcdHBhZ2UgPSBraG9fZ2V0X3ByZXNlcnZlZF9wYWdlKHBoeXMsIG9yZGVyKTtcbiBcbiBcdC8qIFJlc2VydmUgdGhlIG1lbW9yeSBwcmVzZXJ2ZWQgaW4gS0hPIGluIG1lbWJsb2NrICovXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNlQwOTozMDozMC4wMDY4MDUyNDJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTQ2NjMzNjUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEtlcm5lbCBMaXZlIFVwZGF0ZSBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGFyZ2V0aW5nIGBrZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jYC4gUmlnaHQgYXdheSwgSSBzZWUgdGhleSdyZSBtb2RpZnlpbmcgdGhlIGBraG9fcHJlc2VydmVkX21lbW9yeV9yZXNlcnZlYCBmdW5jdGlvbi4gVGhlIGtleSBjaGFuZ2UgaXMgdGhlIGV4cGxpY2l0IGNhc3QgdG8gYHU2NGAgaW4gdGhlIHNpemUgY2FsY3VsYXRpb246IGBzeiA9ICh1NjQpMSBcdTAwM2NcdTAwM2MgKG9yZGVyICsgUEFHRV9TSElGVCk7YC4gSXQgbG9va3MgbGlrZSB0aGlzIGlzIGludGVuZGVkIHRvIGFkZHJlc3MgYSBwb3RlbnRpYWwgaW50ZWdlciBvdmVyZmxvdyBvciBzaGlmdC1vdXQtb2YtYm91bmRzIGlzc3VlLiBLbm93aW5nIHRoaXMgYXJlYSwgdGhhdCdzIGFsbW9zdCBjZXJ0YWlubHkgcmVsYXRlZCB0byBjYWxjdWxhdGluZyB0aGUgc2l6ZSBvZiBhIG1lbW9yeSByZWdpb24sIHByb2JhYmx5IGZvciBhIGxpdmUgdXBkYXRlIG9wZXJhdGlvbiBvciBhIGtleGVjIHRyYW5zaXRpb24uIEdpdmVuIHRoZSBjb250ZXh0LCB0aGUgYG9yZGVyICsgUEFHRV9TSElGVGAgcGFydCBzdWdnZXN0cyB0aGV5J3JlIGRlYWxpbmcgd2l0aCBwYWdlIHNpemVzIGFuZCBwb3dlcnMgb2YgdHdvLCBhcyBleHBlY3RlZC5cblxuSSBzaG91bGQgcHJvYmFibHkgZGl2ZSBpbnRvIGBrZXhlY19oYW5kb3Zlci5jYCB0byB1bmRlcnN0YW5kIHRoZSBzcGVjaWZpY3Mgb2Ygd2hhdCB0aGV5J3JlIHRyeWluZyB0byByZXNlcnZlIGFuZCB3aHkgdGhpcyB3YXMgbmVjZXNzYXJ5LiBBIHF1aWNrIGxvb2sgYXQgdGhlIHN1cnJvdW5kaW5nIGNvZGUgd2lsbCB0ZWxsIG1lIHRoZSBhY3R1YWwgaW50ZW50IG9mIHRoZSBmdW5jdGlvbiwgYW5kIGxldCBtZSBiZSBhYnNvbHV0ZWx5IHN1cmUgd2hhdCB0aGV5J3ZlIGZpeGVkLiBJdCdzIGFsbW9zdCBjZXJ0YWluIGl0J3MgYSBzaXplIGNhbGN1bGF0aW9uIHByb2JsZW0sIGJ1dCBiZXN0IHRvIGNvbmZpcm0gdGhlIGNvbnRleHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5OTgsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5OCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE2VDA5OjMwOjMzLjU1MzQ0MjA4NVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTg0MTUyODQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia2hvX3ByZXNlcnZlZF9tZW1vcnlfcmVzZXJ2ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmM9NDcwPUVYUE9SVF9TWU1CT0xfR1BMKGtob19yZXN0b3JlX3BhZ2VzKTtcXG4tLVxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtNDc3LSAqIEVuc3VyZSBhbGwgdGhlIHN0cnVjdCBwYWdlcyBpbiB0aGUgcHJlc2VydmF0aW9uIGFyZVxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmM6NDc4OiAqIGluaXRpYWxpemVkLiBraG9fcHJlc2VydmVkX21lbW9yeV9yZXNlcnZlKCkgbWFya3MgdGhlIHJlc2VydmF0aW9uIGFzIG5vaW5pdFxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtNDc5LSAqIHRvIG1ha2Ugc3VyZSB0aGV5IGRvbid0IGdldCByZS1pbml0aWFsaXplZCBsYXRlci5cXG4tLVxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmM9NDgxPXN0YXRpYyBzdHJ1Y3QgcGFnZSAqX19pbml0IGtob19nZXRfcHJlc2VydmVkX3BhZ2UocGh5c19hZGRyX3QgcGh5cyxcXG4tLVxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtNDk2LVxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmM6NDk3OnN0YXRpYyBpbnQgX19pbml0IGtob19wcmVzZXJ2ZWRfbWVtb3J5X3Jlc2VydmUocGh5c19hZGRyX3QgcGh5cyxcXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jLTQ5OC1cXHRcXHRcXHRcXHRcXHQgICAgICAgdW5zaWduZWQgaW50IG9yZGVyKVxcbi0tXFxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYz0xNDExPXN0YXRpYyBpbnQgX19pbml0IGtob19tZW1fcmV0cmlldmUoY29uc3Qgdm9pZCAqZmR0KVxcbi0tXFxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYy0xNDI5LVxcdG11dGV4X2luaXQoXFx1MDAyNnRyZWUubG9jayk7XFxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYzoxNDMwOlxcdHJldHVybiBraG9fcmFkaXhfd2Fsa190cmVlKFxcdTAwMjZ0cmVlLCBraG9fcHJlc2VydmVkX21lbW9yeV9yZXNlcnZlKTtcXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jLTE0MzEtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNlQwOTozMDozMy43MTE4Njk1NTlaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDUyMjkxMzUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqSW52ZXN0aWdhdGluZyBNZW1vcnkgUmVzZXJ2YXRpb24gaW4gdGhlIGBraG9gIFN5c3RlbSoqXG5cblJpZ2h0LCBzbyBga2hvX3ByZXNlcnZlZF9tZW1vcnlfcmVzZXJ2ZWAgaXMgYmVpbmcgY2FsbGVkIGJ5IGBraG9fbWVtX3JldHJpZXZlYC4gVGhhdCBtYWtlcyBzZW5zZTsgYSByZXNlcnZhdGlvbiBmdW5jdGlvbiBsaWtlbHkgbmVlZHMgdG8gYmUgY2FsbGVkIHdoZW4gcmV0cmlldmluZyBzb21ldGhpbmcuIEJ1dCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udHJvbCBmbG93IGhlcmUsIGFuZCB3aGVyZSB0aGUgKnJldHJpZXZhbCogaXRzZWxmIGlzIG9yaWdpbmF0aW5nLiBUaW1lIHRvIGRyaWxsIGRvd24gaW50byBga2hvX21lbV9yZXRyaWV2ZWAuIFdoZXJlIGlzICp0aGF0KiBmdW5jdGlvbiBiZWluZyBjYWxsZWQgZnJvbT8gSSBuZWVkIHRvIHRyYWNlIHRoaXMgYmFjayB0byB0aGUgc291cmNlIHRvIGZ1bGx5IGdyYXNwIHRoZSBtZW1vcnkgYWxsb2NhdGlvbiBhbmQgZGVhbGxvY2F0aW9uIGxpZmVjeWNsZSB3aXRoaW4gdGhpcyBga2hvYCBjb21wb25lbnQuIFRoaXMgaXMgbGlrZWx5IGEgY3JpdGljYWwgc2VjdGlvbiBmb3IgcGVyZm9ybWFuY2UgYW5kIHBvdGVudGlhbCBtZW1vcnkgbGVha3MsIHNvIHVuZGVyc3RhbmRpbmcgdGhlIGNhbGwgc3RhY2sgaXMgcGFyYW1vdW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzc5LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTZUMDk6MzA6MzYuNzY0MTYzMTkyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4NTU1Mjg1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImtob19tZW1fcmV0cmlldmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jPTE0MDk9RVhQT1JUX1NZTUJPTF9HUEwoa2hvX3JldHJpZXZlX3N1YnRyZWUpO1xcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtMTQxMC1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jOjE0MTE6c3RhdGljIGludCBfX2luaXQga2hvX21lbV9yZXRyaWV2ZShjb25zdCB2b2lkICpmZHQpXFxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYy0xNDEyLXtcXG4tLVxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmM9MTYzMj12b2lkIF9faW5pdCBraG9fbWVtb3J5X2luaXQodm9pZClcXG4tLVxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtMTYzNi1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jOjE2Mzc6XFx0XFx0aWYgKGtob19tZW1fcmV0cmlldmUoa2hvX2dldF9mZHQoKSkpXFxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYy0xNjM4LVxcdFxcdFxcdGtob19pbi5mZHRfcGh5cyA9IDA7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE2VDA5OjMwOjM2LjgxMjcyMzEzN1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5ODIyMTQ3NTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgQm9vdC1UaW1lIEluaXRpYWxpemF0aW9uIEJ1ZyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYGtob19tZW1vcnlfaW5pdGAgZnVuY3Rpb24sIHdoaWNoLCBmcm9tIHRoZSBjb2RlLCBJIGNhbiBzZWUgaXMgZ2V0dGluZyBjYWxsZWQgZWFybHkgb24sIGR1cmluZyB0aGUgc3lzdGVtIGJvb3QgcHJvY2Vzcy4gU3BlY2lmaWNhbGx5LCBpdCdzIGNhbGxlZCBmcm9tIGBzZXR1cF9hcmNoYCBvciBzb21ldGhpbmcgYW5hbG9nb3VzIHRvIGl0LiBUaGF0IG1lYW5zIGl0J3MgYW4gYF9faW5pdGAgZnVuY3Rpb24sIHdoaWNoIGlzIGEga2V5IGRldGFpbC4gVGhlIGNoYW5nZSBub3RlcyBhIGZpeCBmb3IgYW4gaW50ZWdlciBvdmVyZmxvdyBpc3N1ZSB3aGVuIGNhbGN1bGF0aW5nIGBzemAgZm9yIG1lbW9yeSByZXNlcnZhdGlvbi4gSG1tLCB0aGUgYmlnIHF1ZXN0aW9uIGluIG15IG1pbmQgaXMgd2hldGhlciB0aGlzIGlzIHNvbWV0aGluZyB3ZSBzaG91bGQgZXZlbiBib3RoZXIgZnV6emluZy5cblxuS25vd2luZyB0aGF0IGl0J3MgYSBib290LXRpbWUgZnVuY3Rpb24gaW1tZWRpYXRlbHkgdGVsbHMgbWUgaXQncyBsaWtlbHkgKm5vdCogc29tZXRoaW5nIFN5emthbGxlciBvciBzdGFuZGFyZCB1c2VyLXNwYWNlIGZ1enppbmcgaXMgZ29pbmcgdG8gYmUgYWJsZSB0byByZWFjaC4gQm9vdC10aW1lIGluaXRpYWxpemF0aW9ucyBhcmUsIGluIGdlbmVyYWwsIHNoaWVsZGVkIGZyb20gdXNlci1zcGFjZSBpbnRlcmFjdGlvbiBhZnRlciB0aGUga2VybmVsIGlzIHVwIGFuZCBydW5uaW5nLiBTeXprYWxsZXIsIGluIGl0cyBjdXJyZW50IGNvbmZpZ3VyYXRpb24sIGdlbmVyYWxseSBmb2N1c2VzIG9uIGZ1bmN0aW9ucyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYWZ0ZXIgdGhlIHN5c3RlbSBpcyBydW5uaW5nLiBTbywgdGhlIGRpcmVjdCBpbXBhY3Qgb24gc3lzdGVtIHNlY3VyaXR5ICptYXkqIGJlIGxpbWl0ZWQuXG5cbkJ1dCwgYmVmb3JlIEkgZGlzbWlzcyBpdCBjb21wbGV0ZWx5LCBJJ2QgYmV0dGVyIGRvdWJsZS1jaGVjayB3aGVyZSBga2hvX21lbW9yeV9pbml0YCBpcyBjYWxsZWQgZnJvbSB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuIEEgcXVpY2sgcmV2aWV3IG9mIHRoZSBjYWxsIHNpdGVzIHdpbGwgY29uZmlybSB0aGUgYm9vdC10aW1lIG5hdHVyZSBvZiB0aGlzIGZ1bmN0aW9uIGFuZCwgaG9wZWZ1bGx5LCBzb2xpZGlmeSBteSBpbml0aWFsIGFzc2Vzc21lbnQuIEkgbmVlZCB0byBrbm93IHdoZXJlIGl0J3MgY2FsbGVkIHRvIGNvbmZpcm0gaXRzIGxvY2F0aW9uIGluIG1lbW9yeSBhbmQgaW50ZXJhY3Rpb24gd2l0aCBvdGhlciBjb21wb25lbnRzLiBJZiBpdHMgdHJ1bHkgZHVyaW5nIGluaXRpYWxpemF0aW9uLCB0aGUgdnVsbmVyYWJpbGl0eSwgd2hpbGUgcHJlc2VudCwgbWF5IG5vdCBiZSBleHBsb2l0YWJsZSB2aWEgdGhlIHNhbWUgdmVjdG9ycyBhcyBvdGhlciB1c2VyLWFjY2Vzc2libGUgY29kZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzI0NiwiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE2VDA5OjMwOjQwLjc5NDk0MDcxNFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODI2OTc2NzExLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImtob19tZW1vcnlfaW5pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9rZXhlY19oYW5kb3Zlci5oPTM3PWludCBraG9fcmV0cmlldmVfc3VidHJlZShjb25zdCBjaGFyICpuYW1lLCBwaHlzX2FkZHJfdCAqcGh5cywgc2l6ZV90ICpzaXplKTtcXG5pbmNsdWRlL2xpbnV4L2tleGVjX2hhbmRvdmVyLmgtMzgtXFxuaW5jbHVkZS9saW51eC9rZXhlY19oYW5kb3Zlci5oOjM5OnZvaWQga2hvX21lbW9yeV9pbml0KHZvaWQpO1xcbmluY2x1ZGUvbGludXgva2V4ZWNfaGFuZG92ZXIuaC00MC1cXG4tLVxcbmluY2x1ZGUvbGludXgva2V4ZWNfaGFuZG92ZXIuaD0xMDc9c3RhdGljIGlubGluZSBpbnQga2hvX3JldHJpZXZlX3N1YnRyZWUoY29uc3QgY2hhciAqbmFtZSwgcGh5c19hZGRyX3QgKnBoeXMsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2tleGVjX2hhbmRvdmVyLmgtMTEyLVxcbmluY2x1ZGUvbGludXgva2V4ZWNfaGFuZG92ZXIuaDoxMTM6c3RhdGljIGlubGluZSB2b2lkIGtob19tZW1vcnlfaW5pdCh2b2lkKSB7IH1cXG5pbmNsdWRlL2xpbnV4L2tleGVjX2hhbmRvdmVyLmgtMTE0LVxcbi0tXFxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYz0xNjMwPWZzX2luaXRjYWxsKGtob19pbml0KTtcXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jLTE2MzEtXFxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYzoxNjMyOnZvaWQgX19pbml0IGtob19tZW1vcnlfaW5pdCh2b2lkKVxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtMTYzMy17XFxuLS1cXG5tbS9tbV9pbml0LmM9MjcwNj12b2lkIF9faW5pdCBtbV9jb3JlX2luaXQodm9pZClcXG4tLVxcbm1tL21tX2luaXQuYy0yNzMwLVxcdCAqL1xcbm1tL21tX2luaXQuYzoyNzMxOlxcdGtob19tZW1vcnlfaW5pdCgpO1xcbm1tL21tX2luaXQuYy0yNzMyLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNlQwOTozMDo0Mi42MjE5MjE2NTVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjgxOTM4MTU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIGBraG9fbWVtb3J5X2luaXRgIEZ1bmN0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBga2hvX21lbW9yeV9pbml0YCBmdW5jdGlvbi4gSXQncyBjYWxsZWQgZnJvbSBgbW1fY29yZV9pbml0YCwgYW5kIHRoYXQsIGluIHR1cm4sIGlzIHBhcnQgb2YgdGhlIGJvb3QgcHJvY2Vzcy4gIFJpZ2h0LCBzbyBpdCdzIGhhcHBlbmluZyBlYXJseSwgZWFybHkgb24uIEFuZCBiZWNhdXNlIGl0J3MgbWFya2VkIGFzIGFuIGBfX2luaXRgIGZ1bmN0aW9uLCBJJ20gZ29pbmcgdG8gYXNzdW1lIGl0J3Mgb25seSBtZWFudCB0byBydW4gb25jZSwgYXQgYm9vdCwgYW5kIHRoZW4gaXQncyBlZmZlY3RpdmVseSBkaXNjYXJkZWQuICBUaGF0J3MgaW1wb3J0YW50LlxuXG5CZWNhdXNlIG9mIHRoaXMgYm9vdC10aW1lIG5hdHVyZSwgdGhlcmUncyBubyB3YXkgYSB1c2VyLXNwYWNlIGZ1enplciBsaWtlIHN5emthbGxlciBjYW4gcmVhY2ggdGhpcyBjb2RlLiBJdCdzIGp1c3Qgbm90IGFjY2Vzc2libGUgYWZ0ZXIgdGhlIGtlcm5lbCBoYXMgZmluaXNoZWQgYm9vdGluZy4gTXkgY29uY2x1c2lvbiBoZXJlIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQ6IGBXb3J0aEZ1enppbmdgIGlzIGdvaW5nIHRvIGJlIGBmYWxzZWAuIE5vIHBvaW50IGluIGV4cGVuZGluZyBhbnkgZWZmb3J0IHRyeWluZyB0byBmdXp6IHNvbWV0aGluZyBJIGNhbid0IGV2ZW4gZ2V0IHRvIHdpdGggdXNlci1zcGFjZSB0b29scy4gSXQncyBlZmZlY3RpdmVseSBvZmYtbGltaXRzIGZvciB0aGF0IGtpbmQgb2YgYW5hbHlzaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwOTgsIk91dHB1dFRva2VucyI6OTIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNlQwOTozMDo0Ni4zMDM4NjMwNTRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjU2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBpbnRlZ2VyIG92ZXJmbG93IGluIGBraG9fcHJlc2VydmVkX21lbW9yeV9yZXNlcnZlYCwgd2hpY2ggaXMgYW4gYF9faW5pdGAgZnVuY3Rpb24gY2FsbGVkIGR1cmluZyBib290IHZpYSBga2hvX21lbW9yeV9pbml0YCBhbmQgYG1tX2NvcmVfaW5pdGAuIEJvb3QtdGltZSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbnMgYXJlIG5vdCByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYW5kIGNhbm5vdCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBpbnRlZ2VyIG92ZXJmbG93IGluIGBraG9fcHJlc2VydmVkX21lbW9yeV9yZXNlcnZlYCwgd2hpY2ggaXMgYW4gYF9faW5pdGAgZnVuY3Rpb24gY2FsbGVkIGR1cmluZyBib290IHZpYSBga2hvX21lbW9yeV9pbml0YCBhbmQgYG1tX2NvcmVfaW5pdGAuIEJvb3QtdGltZSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbnMgYXJlIG5vdCByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYW5kIGNhbm5vdCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNlQwOTozMDo0Ni4zMDM4OTAyNjRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMxNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflown27sn[1] Phase: Running StartedAt: 2026-08-16 09:30:57 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflown27sn[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-16 09:30:57 +0000 UTC FinishedAt: 2026-08-16 09:31:02 +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,}