Name: series-workflownsx2v Phase: Failed StartedAt: 2026-08-05 22:50:55 +0000 UTC FinishedAt: 2026-08-05 23:35:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflownsx2v[0] Phase: Succeeded StartedAt: 2026-08-05 22:50:55 +0000 UTC FinishedAt: 2026-08-05 23:35:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflownsx2v[0].run-triage Phase: Succeeded StartedAt: 2026-08-05 22:50:55 +0000 UTC FinishedAt: 2026-08-05 23:35: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+CgkJCTx0ZD4yMDI2LzA4LzA1IDIzOjM1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBkZWZlcnJlZF9ncm93X3pvbmVgLCB3aGljaCBpcyBhbiBgX19pbml0YCBmdW5jdGlvbiBjYWxsZWQgb25seSBkdXJpbmcgZWFybHkgYm9vdC4gSXQgaXMgZGlzYWJsZWQgYnkgYHBhZ2VfYWxsb2NfaW5pdF9sYXRlYCB2aWEgdGhlIGBkZWZlcnJlZF9wYWdlc2Agc3RhdGljIGtleSBiZWZvcmUgdXNlcnNwYWNlIHN0YXJ0cy4gVGhlcmVmb3JlLCB0aGlzIGNvZGUgaXMgdW5yZWFjaGFibGUgZHVyaW5nIHBvc3QtYm9vdCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAyMzozNTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDMzYWU2YzRlY2E0MTE2MjY5YzEyYWVhNzEwNzI0MmYwMmZiZTEwM2VcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyA1IDIzOjM1OjA2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL21tL21tX2luaXQuYyBiL21tL21tX2luaXQuY1xuaW5kZXggNDk4ZDYyYzRlY2UzOS4uOTExNzdiZTU4YTAwMCAxMDA2NDRcbi0tLSBhL21tL21tX2luaXQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbW0vbW1faW5pdC5jXG5AQCAtMjIxNCwxMCAmIzQzOzIyMTQsMTMgQEAgYm9vbCBfX2luaXQgZGVmZXJyZWRfZ3Jvd196b25lKHN0cnVjdCB6b25lICp6b25lLCB1bnNpZ25lZCBpbnQgb3JkZXIpXG4gXHR9XG4gXG4gXHQvKlxuLVx0ICogVGhlcmUgd2VyZSBubyBwYWdlcyB0byBpbml0aWFsaXplIGFuZCBmcmVlIHdoaWNoIG1lYW5zIHRoZSB6b25lJiMzOTtzXG4tXHQgKiBtZW1vcnkgbWFwIGlzIGNvbXBsZXRlbHkgaW5pdGlhbGl6ZWQuXG4mIzQzO1x0ICogVGhlIGxvb3Agb25seSB0ZXN0cyBzcGZuIGJlZm9yZSBlbnRlcmluZyBhbiBpdGVyYXRpb24sIHNvIG9uIGV4aXQgaXRcbiYjNDM7XHQgKiBtYXkgcG9pbnQgdXAgdG8gYSBzZWN0aW9uIHBhc3QgdGhlIGVuZCBvZiB0aGUgem9uZS4gIFdoZW4gaXQgZG9lcyxcbiYjNDM7XHQgKiB0aGUgcmVzdCBvZiB0aGUgem9uZSBoYXMgYWxyZWFkeSBiZWVuIGhhbmRlZCB0b1xuJiM0MztcdCAqIGRlZmVycmVkX2luaXRfbWVtbWFwX2NodW5rKCkgYW5kIG5vdGhpbmcgaXMgbGVmdCB0byBpbml0aWFsaXplLlxuIFx0ICovXG4tXHRwZ2RhdC1cdTAwM2VmaXJzdF9kZWZlcnJlZF9wZm4gPSBucl9wYWdlcyA/IHNwZm4gOiBVTE9OR19NQVg7XG4mIzQzO1x0cGdkYXQtXHUwMDNlZmlyc3RfZGVmZXJyZWRfcGZuID1cbiYjNDM7XHRcdHNwZm4gXHUwMDNjIHpvbmVfZW5kX3Bmbih6b25lKSA/IHNwZm4gOiBVTE9OR19NQVg7XG4gXG4gXHRwZ2RhdF9yZXNpemVfdW5sb2NrKHBnZGF0LCBcdTAwMjZmbGFncyk7XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMjM6MzU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBkZWZlcnJlZF9ncm93X3pvbmVgLCB3aGljaCBpcyBhbiBgX19pbml0YCBmdW5jdGlvbiBjYWxsZWQgb25seSBkdXJpbmcgZWFybHkgYm9vdC4gSXQgaXMgZGlzYWJsZWQgYnkgYHBhZ2VfYWxsb2NfaW5pdF9sYXRlYCB2aWEgdGhlIGBkZWZlcnJlZF9wYWdlc2Agc3RhdGljIGtleSBiZWZvcmUgdXNlcnNwYWNlIHN0YXJ0cy4gVGhlcmVmb3JlLCB0aGlzIGNvZGUgaXMgdW5yZWFjaGFibGUgZHVyaW5nIHBvc3QtYm9vdCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDMzYWU2YzRlY2E0MTE2MjY5YzEyYWVhNzEwNzI0MmYwMmZiZTEwM2UKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEF1ZyA1IDIzOjM1OjA2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbW0vbW1faW5pdC5jIGIvbW0vbW1faW5pdC5jCmluZGV4IDQ5OGQ2MmM0ZWNlMzkuLjkxMTc3YmU1OGEwMDAgMTAwNjQ0Ci0tLSBhL21tL21tX2luaXQuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9tbV9pbml0LmMKQEAgLTIyMTQsMTAgJiM0MzsyMjE0LDEzIEBAIGJvb2wgX19pbml0IGRlZmVycmVkX2dyb3dfem9uZShzdHJ1Y3Qgem9uZSAqem9uZSwgdW5zaWduZWQgaW50IG9yZGVyKQogCX0KIAogCS8qCi0JICogVGhlcmUgd2VyZSBubyBwYWdlcyB0byBpbml0aWFsaXplIGFuZCBmcmVlIHdoaWNoIG1lYW5zIHRoZSB6b25lJiMzOTtzCi0JICogbWVtb3J5IG1hcCBpcyBjb21wbGV0ZWx5IGluaXRpYWxpemVkLgomIzQzOwkgKiBUaGUgbG9vcCBvbmx5IHRlc3RzIHNwZm4gYmVmb3JlIGVudGVyaW5nIGFuIGl0ZXJhdGlvbiwgc28gb24gZXhpdCBpdAomIzQzOwkgKiBtYXkgcG9pbnQgdXAgdG8gYSBzZWN0aW9uIHBhc3QgdGhlIGVuZCBvZiB0aGUgem9uZS4gIFdoZW4gaXQgZG9lcywKJiM0MzsJICogdGhlIHJlc3Qgb2YgdGhlIHpvbmUgaGFzIGFscmVhZHkgYmVlbiBoYW5kZWQgdG8KJiM0MzsJICogZGVmZXJyZWRfaW5pdF9tZW1tYXBfY2h1bmsoKSBhbmQgbm90aGluZyBpcyBsZWZ0IHRvIGluaXRpYWxpemUuCiAJICovCi0JcGdkYXQtJmd0O2ZpcnN0X2RlZmVycmVkX3BmbiA9IG5yX3BhZ2VzID8gc3BmbiA6IFVMT05HX01BWDsKJiM0MzsJcGdkYXQtJmd0O2ZpcnN0X2RlZmVycmVkX3BmbiA9CiYjNDM7CQlzcGZuICZsdDsgem9uZV9lbmRfcGZuKHpvbmUpID8gc3BmbiA6IFVMT05HX01BWDsKIAogCXBnZGF0X3Jlc2l6ZV91bmxvY2socGdkYXQsICZhbXA7ZmxhZ3MpOwogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDIzOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNTcKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAyNjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTWVtb3J5IEluaXRpYWxpemF0aW9uIFBhdGNoIGZvciBGdXp6aW5nIFJlbGV2YW5jZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyBgbW0vbW1faW5pdC5jYCwgc3BlY2lmaWNhbGx5IHRoZSBgZGVmZXJyZWRfZ3Jvd196b25lYCBmdW5jdGlvbi4gVGhlIGNoYW5nZSBpdHNlbGYgc2VlbXMgc3RyYWlnaHRmb3J3YXJkIOKAkyBhIHNtYWxsIGNvbmRpdGlvbmFsIGFkanVzdG1lbnQgdG8gYHBnZGF0LSZndDtmaXJzdF9kZWZlcnJlZF9wZm5gLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGFzc2VzcyBpZiB0aGlzIGlzIHJlbGV2YW50IGZvciBmdXp6aW5nLCB3aGljaCBtZWFucyBjb25zaWRlcmluZyBob3cgYW5kIHdoZW4gdGhpcyBjb2RlIGlzIGV4ZWN1dGVkLgoKRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0LiBJcyBgZGVmZXJyZWRfZ3Jvd196b25lYCBldmVuIHJlYWNoYWJsZT8gQWgsIHllcywgdGhlIG5vdGVzIHNheSBpdCYjMzk7cyBjYWxsZWQgZHVyaW5nIGJvb3Qgb3IgbWVtb3J5IGhvdHBsdWcsIGJvdGggdmFsaWQgZW50cnkgcG9pbnRzLiBCdXQgdGhlbiBJIHNlZSB0aGF0IGl0JiMzOTtzIG1hcmtlZCBhcyBgX19pbml0YC4gV2FpdCwgdGhlIHBhdGNoIGFjdHVhbGx5IHNob3dzIGBib29sIF9faW5pdCBkZWZlcnJlZF9ncm93X3pvbmUoLi4uKWAgd2hpY2ggY29uZmlybXMgaXQmIzM5O3MgYW4gaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24uCgpNeSBleHBlcnQgaW50dWl0aW9uIGtpY2tzIGluLiBgX19pbml0YCBmdW5jdGlvbnMgb25seSBydW4gZHVyaW5nIGVhcmx5IGJvb3QgYW5kIGFyZSB0aGVuIGRpc2NhcmRlZC4gU3l6a2FsbGVyLCBteSBwcmltYXJ5IGZ1enppbmcgdG9vbCwgb3BlcmF0ZXMgKmFmdGVyKiBib290LiBTbywgaWYgdGhpcyBpcyB0cnVseSBhbiBgX19pbml0YCBmdW5jdGlvbiwgaXTigJlzIGxpa2VseSBub3QgZGlyZWN0bHkgZnV6emFibGUgaW4gdGhlIHRyYWRpdGlvbmFsIHNlbnNlLCBhcyBTeXprYWxsZXIgZm9jdXNlcyBvbiBwb3N0LWJvb3QgZXhlY3V0aW9uIHBhdGh3YXlzIGxpa2Ugc3lzY2FsbHMsIG5ldHdvcmsgdHJhZmZpYywgZXRjLgoKSSBuZWVkIHRvIGNvbmZpcm0gdGhlIGBfX2luaXRgIHN0YXR1cy4gVGhlIHBhdGNoIHN0cm9uZ2x5IGltcGxpZXMgaXQsIGJ1dCBJIGFsd2F5cyB3YW50IHRvIGJlIHN1cmUsIHRvIGF2b2lkIGEgbWlzLWNhdGVnb3JpemF0aW9uIG9mIGZ1enppbmcgcHJpb3JpdGllcy4gSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IHRoaXMgaXMgaW5kZWVkIGFuIGBfX2luaXRgIGZ1bmN0aW9uLiBJZiBpdCBpcywgdGhpcyBwYXRjaCBpcyBsaWtlbHkgbm90IGRpcmVjdGx5IHJlbGV2YW50IGZvciBteSBmdXp6aW5nIGVmZm9ydHMgaW4gdGhlIGN1cnJlbnQgdGVzdGluZyBwYXJhZGlnbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAyMzozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZWZlcnJlZF9ncm93X3pvbmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9tbV9pbml0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vbW1faW5pdC5jPTIxMDg9c3RhdGljIGludCBfX2luaXQgZGVmZXJyZWRfaW5pdF9tZW1tYXAodm9pZCAqZGF0YSlcbi0tXG5tbS9tbV9pbml0LmMtMjE3OC0gKi9cbm1tL21tX2luaXQuYzoyMTc5OmJvb2wgX19pbml0IGRlZmVycmVkX2dyb3dfem9uZShzdHJ1Y3Qgem9uZSAqem9uZSwgdW5zaWduZWQgaW50IG9yZGVyKVxubW0vbW1faW5pdC5jLTIxODAte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDIzOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4OTIKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiAxMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBSZWFjaGFiaWxpdHkgb2YgYGRlZmVycmVkX2dyb3dfem9uZWAqKgoKT2theSwgc28gSSBzZWUgdGhhdCBgZGVmZXJyZWRfZ3Jvd196b25lYCBpcyBkZWZpbmVkIHdpdGhpbiBgX19pbml0YC4gUmlnaHQsIHRoYXQgbWVhbnMgaXQmIzM5O3Mgb25seSBleGVjdXRlZCBkdXJpbmcgdGhlIGluaXRpYWwgYm9vdCBwcm9jZXNzLiBOb3csIHRoZSBrZXkgaXMgdW5kZXJzdGFuZGluZyBob3cgU3l6a2FsbGVyIG9wZXJhdGVzLiBJdCYjMzk7cyBkZXNpZ25lZCBmb3IgcG9zdC1ib290IGZ1enppbmcsIHJpZ2h0PyBVbmxlc3MgdGhlcmUmIzM5O3Mgc29tZSB2ZXJ5IHNwZWNpZmljIGJvb3QgcGFyYW1ldGVyIGludGVyYWN0aW9uLCBpdCB0eXBpY2FsbHkgZG9lc24mIzM5O3QgdGFyZ2V0IGNvZGUgdGhhdCYjMzk7cyBzb2xlbHkgcGFydCBvZiB0aGUgYm9vdCBzZXF1ZW5jZS4KCkhtbSwgY2FuIEkgdGhpbmsgb2YgKmFueSogc2NlbmFyaW8gd2hlcmUgYGRlZmVycmVkX2dyb3dfem9uZWAgd291bGQgYmUgaW52b2tlZCBhZnRlciB0aGUgaW5pdGlhbCBib290PyBObywgYF9faW5pdGAgZnVuY3Rpb25zIGdldCB0aGVpciBtZW1vcnkgZnJlZWQgdXAgYWZ0ZXIgYm9vdCwgc28gdGhlcmUmIzM5O3Mgbm8gd2F5IGl0JiMzOTtkIGJlIGNhbGxhYmxlIGR1cmluZyBub3JtYWwgb3BlcmF0aW9uLgoKU28sIHJlYWxpc3RpY2FsbHksIHRoaXMgZnVuY3Rpb24gaXMgb3V0c2lkZSB0aGUgZnV6emVyJiMzOTtzIHJlYWNoLiBKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGUgY29kZWJhc2UuIEkgbmVlZCB0byBjb25maXJtIHRoYXQgYGRlZmVycmVkX2dyb3dfem9uZWAgaXNuJiMzOTt0IGNhbGxlZCBmcm9tIGFueXdoZXJlIGVsc2UsIGp1c3QgaW4gY2FzZSB0aGVyZSYjMzk7cyBzb21lIHVuZXhwZWN0ZWQgY29udHJvbCBmbG93IHBhdGguCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMjM6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVmZXJyZWRfZ3Jvd196b25lJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2ludGVybmFsLmg9MTMyMz1zdGF0aWMgaW5saW5lIGJvb2wgZGVmZXJyZWRfcGFnZXNfZW5hYmxlZCh2b2lkKVxuLS1cbm1tL2ludGVybmFsLmgtMTMyNy1cbm1tL2ludGVybmFsLmg6MTMyODpib29sIF9faW5pdCBkZWZlcnJlZF9ncm93X3pvbmUoc3RydWN0IHpvbmUgKnpvbmUsIHVuc2lnbmVkIGludCBvcmRlcik7XG5tbS9pbnRlcm5hbC5oLTEzMjktI2Vsc2Vcbi0tXG5tbS9tbV9pbml0LmM9MjEwOD1zdGF0aWMgaW50IF9faW5pdCBkZWZlcnJlZF9pbml0X21lbW1hcCh2b2lkICpkYXRhKVxuLS1cbm1tL21tX2luaXQuYy0yMTc4LSAqL1xubW0vbW1faW5pdC5jOjIxNzk6Ym9vbCBfX2luaXQgZGVmZXJyZWRfZ3Jvd196b25lKHN0cnVjdCB6b25lICp6b25lLCB1bnNpZ25lZCBpbnQgb3JkZXIpXG5tbS9tbV9pbml0LmMtMjE4MC17XG4tLVxubW0vcGFnZV9hbGxvYy5jPTMwOT1ERUZJTkVfU1RBVElDX0tFWV9UUlVFKGRlZmVycmVkX3BhZ2VzKTtcbi0tXG5tbS9wYWdlX2FsbG9jLmMtMzExLS8qXG5tbS9wYWdlX2FsbG9jLmM6MzEyOiAqIGRlZmVycmVkX2dyb3dfem9uZSgpIGlzIF9faW5pdCwgYnV0IGl0IGlzIGNhbGxlZCBmcm9tXG5tbS9wYWdlX2FsbG9jLmMtMzEzLSAqIGdldF9wYWdlX2Zyb21fZnJlZWxpc3QoKSBkdXJpbmcgZWFybHkgYm9vdCB1bnRpbCBkZWZlcnJlZF9wYWdlcyBwZXJtYW5lbnRseVxuLS1cbm1tL3BhZ2VfYWxsb2MuYz0zMTc9c3RhdGljIGJvb2wgX19yZWZcbm1tL3BhZ2VfYWxsb2MuYzozMTg6X2RlZmVycmVkX2dyb3dfem9uZShzdHJ1Y3Qgem9uZSAqem9uZSwgdW5zaWduZWQgaW50IG9yZGVyKVxubW0vcGFnZV9hbGxvYy5jLTMxOS17XG5tbS9wYWdlX2FsbG9jLmM6MzIwOlx0cmV0dXJuIGRlZmVycmVkX2dyb3dfem9uZSh6b25lLCBvcmRlcik7XG5tbS9wYWdlX2FsbG9jLmMtMzIxLX1cbm1tL3BhZ2VfYWxsb2MuYy0zMjItI2Vsc2Vcbm1tL3BhZ2VfYWxsb2MuYzozMjM6c3RhdGljIGlubGluZSBib29sIF9kZWZlcnJlZF9ncm93X3pvbmUoc3RydWN0IHpvbmUgKnpvbmUsIHVuc2lnbmVkIGludCBvcmRlcilcbm1tL3BhZ2VfYWxsb2MuYy0zMjQte1xuLS1cbm1tL3BhZ2VfYWxsb2MuYz0zNzkyPWdldF9wYWdlX2Zyb21fZnJlZWxpc3QoZ2ZwX3QgZ2ZwX21hc2ssIHVuc2lnbmVkIGludCBvcmRlciwgaW50IGFsbG9jX2ZsYWdzLFxuLS1cbm1tL3BhZ2VfYWxsb2MuYy0zOTExLVx0XHRcdGlmIChkZWZlcnJlZF9wYWdlc19lbmFibGVkKCkpIHtcbm1tL3BhZ2VfYWxsb2MuYzozOTEyOlx0XHRcdFx0aWYgKF9kZWZlcnJlZF9ncm93X3pvbmUoem9uZSwgb3JkZXIpKVxubW0vcGFnZV9hbGxvYy5jLTM5MTMtXHRcdFx0XHRcdGdvdG8gdHJ5X3RoaXNfem9uZTtcbi0tXG5tbS9wYWdlX2FsbG9jLmMtMzk1NC1cdFx0XHRpZiAoZGVmZXJyZWRfcGFnZXNfZW5hYmxlZCgpKSB7XG5tbS9wYWdlX2FsbG9jLmM6Mzk1NTpcdFx0XHRcdGlmIChfZGVmZXJyZWRfZ3Jvd196b25lKHpvbmUsIG9yZGVyKSlcbm1tL3BhZ2VfYWxsb2MuYy0zOTU2LVx0XHRcdFx0XHRnb3RvIHRyeV90aGlzX3pvbmU7XG4tLVxubW0vcGFnZV9hbGxvYy5jPTUwOTU9dW5zaWduZWQgbG9uZyBhbGxvY19wYWdlc19idWxrX25vcHJvZihnZnBfdCBnZnAsIGludCBwcmVmZXJyZWRfbmlkLFxuLS1cbm1tL3BhZ2VfYWxsb2MuYy01MTc2LVx0XHRpZiAoZGVmZXJyZWRfcGFnZXNfZW5hYmxlZCgpKSB7XG5tbS9wYWdlX2FsbG9jLmM6NTE3NzpcdFx0XHRpZiAoX2RlZmVycmVkX2dyb3dfem9uZSh6b25lLCAwKSlcbm1tL3BhZ2VfYWxsb2MuYy01MTc4LVx0XHRcdFx0Z290byByZXRyeV90aGlzX3pvbmU7XG4tLVxubW0vcGFnZV9hbGxvYy5jPTc4NjY9c3RydWN0IHBhZ2UgKmFsbG9jX2Zyb3plbl9wYWdlc19ub2xvY2tfbm9wcm9mKGdmcF90IGdmcF9mbGFncywgaW50IG5pZCwgdW5zaWduZWQgaW50IG9yZGVyKVxuLS1cbm1tL3BhZ2VfYWxsb2MuYy03OTE1LVxubW0vcGFnZV9hbGxvYy5jOjc5MTY6XHQvKiBCYWlsb3V0LCBzaW5jZSBfZGVmZXJyZWRfZ3Jvd196b25lKCkgbmVlZHMgdG8gdGFrZSBhIGxvY2sgKi9cbm1tL3BhZ2VfYWxsb2MuYy03OTE3LVx0aWYgKGRlZmVycmVkX3BhZ2VzX2VuYWJsZWQoKSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAyMzozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTUzCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMTQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRWFybHkgQm9vdCBTZXF1ZW5jZSoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIGNvZGUgYW5kIGl0IGxvb2tzIGxpa2UgYGRlZmVycmVkX2dyb3dfem9uZWAgaXMgY2FsbGVkIGJ5IGBnZXRfcGFnZV9mcm9tX2ZyZWVsaXN0YCBkdXJpbmcgdGhlIGluaXRpYWwgYm9vdCBwaGFzZSwgcmlnaHQ/IEFuZCB0aGlzIGNvbnRpbnVlcyB1bnRpbCBgZGVmZXJyZWRfcGFnZXNgIGdldHMgZGlzYWJsZWQsIHdoaWNoIGVmZmVjdGl2ZWx5IHNodXRzIGl0IGRvd24uIFRoZSBjb21tZW50cyBhcmUgcHJldHR5IGV4cGxpY2l0IG9uIHRoYXQgcG9pbnQuIFRoZSB3YXkgaXQmIzM5O3Mgd3JpdHRlbiAmIzM0O2RlZmVycmVkX2dyb3dfem9uZSgpIGlzIF9faW5pdCwgYnV0IGl0IGlzIGNhbGxlZCBmcm9tIGdldF9wYWdlX2Zyb21fZnJlZWxpc3QoKSBkdXJpbmcgZWFybHkgYm9vdCB1bnRpbCBkZWZlcnJlZF9wYWdlcyBwZXJtYW5lbnRseSBkaXNhYmxlcyBpdC4mIzM0OyBtZWFucyB0aGUgY3J1Y2lhbCBwb2ludCBpcyByZWFsbHkgb25seSB0aGF0IGVhcmx5IGJvb3Qgd2luZG93LgoKTm93LCBteSBpbml0aWFsIHRob3VnaHQgaXMsIGlmIFN5emthbGxlciBpcyBmdXp6aW5nIGEgcG9zdC1ib290IHN5c3RlbSwgdGhpcyBzcGVjaWZpYyBwYXJ0IG9mIHRoZSBjb2RlLCB0aGlzIGBkZWZlcnJlZF9ncm93X3pvbmVgIGZ1bmN0aW9uLCBpcyBlbnRpcmVseSB1bnJlYWNoYWJsZSBkdXJpbmcgdGhlIGZ1enppbmcgcHJvY2Vzcy4gVGhlcmVmb3JlLCB0aGUgcGF0Y2ggSSYjMzk7bSBleGFtaW5pbmcgc2hvdWxkIGJlIHNhZmUgaW4gdGhlIGNvbnRleHQgb2YgZnV6emluZywgYW5kIGl0IGlzIHBvdGVudGlhbGx5IGNoYW5naW5nIHVucmVhY2hhYmxlIGNvZGUuCgpCdXQgaG9sZCBvbiBhIHNlY29uZC4uLiBJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLiBUaGUgY3JpdGljYWwgYXNzdW1wdGlvbiBoZXJlIGlzIHRoYXQgYGRlZmVycmVkX3BhZ2VzYCAqaXMqIGFsd2F5cyBkaXNhYmxlZCwgYW5kIEkgY2FuJiMzOTt0IGxlYXZlIGl0IHRvIGNoYW5jZS4gSSBoYXZlIHRvIHZlcmlmeSB0aGF0IGBkZWZlcnJlZF9wYWdlc2AgaXMgYWx3YXlzIGRpc2FibGVkLiBJJiMzOTttIGdvaW5nIHRvIHRyYWNrIGRvd24gdGhlIHBvaW50cyBpbiB0aGUgY29kZSB3aGVyZSBgZGVmZXJyZWRfcGFnZXNgIGlzIHNldC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAyMzozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZWZlcnJlZF9wYWdlcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL3BhZ2VfYWxsb2MuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9wYWdlX2FsbG9jLmM9MzAxPWludCBwYWdlX2dyb3VwX2J5X21vYmlsaXR5X2Rpc2FibGVkIF9fcmVhZF9tb3N0bHk7XG4tLVxubW0vcGFnZV9hbGxvYy5jLTMwOC0gKi9cbm1tL3BhZ2VfYWxsb2MuYzozMDk6REVGSU5FX1NUQVRJQ19LRVlfVFJVRShkZWZlcnJlZF9wYWdlcyk7XG5tbS9wYWdlX2FsbG9jLmMtMzEwLVxuLS1cbm1tL3BhZ2VfYWxsb2MuYy0zMTItICogZGVmZXJyZWRfZ3Jvd196b25lKCkgaXMgX19pbml0LCBidXQgaXQgaXMgY2FsbGVkIGZyb21cbm1tL3BhZ2VfYWxsb2MuYzozMTM6ICogZ2V0X3BhZ2VfZnJvbV9mcmVlbGlzdCgpIGR1cmluZyBlYXJseSBib290IHVudGlsIGRlZmVycmVkX3BhZ2VzIHBlcm1hbmVudGx5XG5tbS9wYWdlX2FsbG9jLmMtMzE0LSAqIGRpc2FibGVzIHRoaXMgY2FsbC4gVGhpcyBpcyB3aHkgd2UgaGF2ZSByZWZkYXRhIHdyYXBwZXIgdG8gYXZvaWQgd2FybmluZyxcbi0tXG5tbS9wYWdlX2FsbG9jLmM9MTIwOD1zdGF0aWMgaW5saW5lIGJvb2wgc2hvdWxkX3NraXBfa2FzYW5fcG9pc29uKHN0cnVjdCBwYWdlICpwYWdlKVxuLS1cbm1tL3BhZ2VfYWxsb2MuYy0xMjEwLVx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0tBU0FOX0dFTkVSSUMpKVxubW0vcGFnZV9hbGxvYy5jOjEyMTE6XHRcdHJldHVybiBkZWZlcnJlZF9wYWdlc19lbmFibGVkKCk7XG5tbS9wYWdlX2FsbG9jLmMtMTIxMi1cbi0tXG5tbS9wYWdlX2FsbG9jLmM9Mzc5Mj1nZXRfcGFnZV9mcm9tX2ZyZWVsaXN0KGdmcF90IGdmcF9tYXNrLCB1bnNpZ25lZCBpbnQgb3JkZXIsIGludCBhbGxvY19mbGFncyxcbi0tXG5tbS9wYWdlX2FsbG9jLmMtMzkxMC1cdFx0XHQgKi9cbm1tL3BhZ2VfYWxsb2MuYzozOTExOlx0XHRcdGlmIChkZWZlcnJlZF9wYWdlc19lbmFibGVkKCkpIHtcbm1tL3BhZ2VfYWxsb2MuYy0zOTEyLVx0XHRcdFx0aWYgKF9kZWZlcnJlZF9ncm93X3pvbmUoem9uZSwgb3JkZXIpKVxuLS1cbm1tL3BhZ2VfYWxsb2MuYy0zOTUzLVx0XHRcdC8qIFRyeSBhZ2FpbiBpZiB6b25lIGhhcyBkZWZlcnJlZCBwYWdlcyAqL1xubW0vcGFnZV9hbGxvYy5jOjM5NTQ6XHRcdFx0aWYgKGRlZmVycmVkX3BhZ2VzX2VuYWJsZWQoKSkge1xubW0vcGFnZV9hbGxvYy5jLTM5NTUtXHRcdFx0XHRpZiAoX2RlZmVycmVkX2dyb3dfem9uZSh6b25lLCBvcmRlcikpXG4tLVxubW0vcGFnZV9hbGxvYy5jPTUwOTU9dW5zaWduZWQgbG9uZyBhbGxvY19wYWdlc19idWxrX25vcHJvZihnZnBfdCBnZnAsIGludCBwcmVmZXJyZWRfbmlkLFxuLS1cbm1tL3BhZ2VfYWxsb2MuYy01MTc1LVx0XHQvKiBUcnkgYWdhaW4gaWYgem9uZSBoYXMgZGVmZXJyZWQgcGFnZXMgKi9cbm1tL3BhZ2VfYWxsb2MuYzo1MTc2Olx0XHRpZiAoZGVmZXJyZWRfcGFnZXNfZW5hYmxlZCgpKSB7XG5tbS9wYWdlX2FsbG9jLmMtNTE3Ny1cdFx0XHRpZiAoX2RlZmVycmVkX2dyb3dfem9uZSh6b25lLCAwKSlcbi0tXG5tbS9wYWdlX2FsbG9jLmM9Nzg2Nj1zdHJ1Y3QgcGFnZSAqYWxsb2NfZnJvemVuX3BhZ2VzX25vbG9ja19ub3Byb2YoZ2ZwX3QgZ2ZwX2ZsYWdzLCBpbnQgbmlkLCB1bnNpZ25lZCBpbnQgb3JkZXIpXG4tLVxubW0vcGFnZV9hbGxvYy5jLTc5MTYtXHQvKiBCYWlsb3V0LCBzaW5jZSBfZGVmZXJyZWRfZ3Jvd196b25lKCkgbmVlZHMgdG8gdGFrZSBhIGxvY2sgKi9cbm1tL3BhZ2VfYWxsb2MuYzo3OTE3Olx0aWYgKGRlZmVycmVkX3BhZ2VzX2VuYWJsZWQoKSlcbm1tL3BhZ2VfYWxsb2MuYy03OTE4LVx0XHRyZXR1cm4gTlVMTDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAyMzozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MzIyCgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgdGFpbG9yZWQgYXMgaWYgSSYjMzk7bSB0aGlua2luZyBpdDoKCioqVHJhY2luZyBEb3duIHRoZSBgZGVmZXJyZWRfcGFnZXNgIERpc2FibGVtZW50KioKClJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIGFuZCAqd2h5KiBgZGVmZXJyZWRfcGFnZXNgIGlzIGRpc2FibGVkLiBUaGF0JiMzOTtzIHRoZSBjb3JlIGlzc3VlIGF0IGhhbmQuIEkgbmVlZCB0byBzeXN0ZW1hdGljYWxseSBwaW5wb2ludCB0aGUgbG9jYXRpb25zIGluIHRoZSBjb2RlYmFzZSB3aGVyZSB0aGlzIGNvbmZpZ3VyYXRpb24gc2V0dGluZyBpcyBiZWluZyBuZWdhdGVkLiBJcyBpdCBhIGRpcmVjdCBjb25maWd1cmF0aW9uIG92ZXJyaWRlPyBBIGNvbmRpdGlvbmFsIGNoZWNrIHRoYXQmIzM5O3MgZXZhbHVhdGluZyB0byBmYWxzZT8gUGVyaGFwcyBhIGRlZmF1bHQgdGhhdCYjMzk7cyBiZWluZyBzZXQgZWxzZXdoZXJlPyBJIG5lZWQgdG8gYW5hbHl6ZSB0aGUgY29kZSB3aXRoIGEgY3JpdGljYWwgZXllLCBmb2xsb3dpbmcgdGhlIGxpa2VseSBwYXRocyB0aGF0IHdvdWxkIGxlYWQgdG8gaXRzIGRlYWN0aXZhdGlvbi4gVGltZSB0byBkaWcgaW4gYW5kIHVucmF2ZWwgdGhpcyEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMjM6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RhdGljX2JyYW5jaF9kaXNhYmxlLipkZWZlcnJlZF9wYWdlcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9tbV9pbml0LmM9MjMxMT12b2lkIF9faW5pdCBwYWdlX2FsbG9jX2luaXRfbGF0ZSh2b2lkKVxuLS1cbm1tL21tX2luaXQuYy0yMzMwLVx0ICovXG5tbS9tbV9pbml0LmM6MjMzMTpcdHN0YXRpY19icmFuY2hfZGlzYWJsZShcdTAwMjZkZWZlcnJlZF9wYWdlcyk7XG5tbS9tbV9pbml0LmMtMjMzMi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMjM6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTYwNwoJCQkJCQkJb3V0cHV0OiA5NQoJCQkJCQkJdGhvdWdodHM6IDkzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGFzc2Vzc21lbnQgb2YgdGhpcyBjb2RlIHNuaXBwZXQsIGZpbHRlcmVkIHRocm91Z2ggbXkgZXhwZXJ0IGxlbnM6CgoqKkRlY29uc3RydWN0aW5nIHRoZSBQYWdlIEFsbG9jYXRpb24gSW5pdGlhbGl6YXRpb24qKgoKUmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZyb20gd2hhdCBJIHNlZSBpbiBgcGFnZV9hbGxvY19pbml0X2xhdGVgLCB0aGlzIGlzIHBhcnQgb2YgdGhlIGxhdGUtc3RhZ2UgYm9vdCBzZXF1ZW5jZS4gU3BlY2lmaWNhbGx5LCB0aGUgZnVuY3Rpb24gY2FsbHMgZm9yIHRoZSBkaXNhYmxpbmcgb2YgYGRlZmVycmVkX3BhZ2VzYC4gVGhhdCYjMzk7cyB0aGUga2V5IGhlcmUuIFRoZSBmdW5jdGlvbiBgc3RhdGljX2JyYW5jaF9kaXNhYmxlYCBoYXMgZGlzYWJsZWQgdGhlIGBkZWZlcnJlZF9wYWdlc2AgYnJhbmNoLiBOb3csIG15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHdoYXQgYXJlIHRoZSBpbXBsaWNhdGlvbnMgb24gZnV6emluZz8gCgpJZiBgZGVmZXJyZWRfcGFnZXNgIGlzIGRpc2FibGVkIGVhcmx5IGluIHRoZSBib290IHByb2Nlc3MsIHRoZW4gdGhhdCBkaXJlY3RseSBpbXBsaWVzIHRoYXQgY29kZSBwYXRocyBkZXBlbmRlbnQgb24gdGhhdCBicmFuY2gsIHN1Y2ggYXMgYGRlZmVycmVkX2dyb3dfem9uZWAsIGFyZSBjb21wbGV0ZWx5IHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiBJIGNhbiYjMzk7dCBnZW5lcmF0ZSBhIGZ1enogY2FzZSB0aGF0IHdpbGwgZXhlY3V0ZSB0aGUgYGRlZmVycmVkX2dyb3dfem9uZWAgZnVuY3Rpb24uIFRoaXMgd291bGQgaW5kaWNhdGUgdGhhdCB0ZXN0aW5nIGl0IGlzIG5vdCBwb3NzaWJsZS4KCkdpdmVuIHRoaXMgdW5kZXJzdGFuZGluZywgSSBjYW4gY29uZmlkZW50bHkgY29uY2x1ZGUgdGhhdCBmdXp6aW5nIGBkZWZlcnJlZF9ncm93X3pvbmVgIGlzIGEgd2FzdGUgb2YgdGltZSwgc2luY2UgdGhlIGJyYW5jaCBpdCBsaXZlcyBpbiBpcyBkaXNhYmxlZC4gSSYjMzk7bSBnb2luZyB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAuIE5vIHBvaW50IGluIGV4cGVuZGluZyByZXNvdXJjZXMgZnV6emluZyBzb21ldGhpbmcgdGhhdCYjMzk7cyBkZWZpbml0aXZlbHkgdW5yZWFjaGFibGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDIzOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYGRlZmVycmVkX2dyb3dfem9uZWAsIHdoaWNoIGlzIGFuIGBfX2luaXRgIGZ1bmN0aW9uIGNhbGxlZCBvbmx5IGR1cmluZyBlYXJseSBib290LiBJdCBpcyBkaXNhYmxlZCBieSBgcGFnZV9hbGxvY19pbml0X2xhdGVgIHZpYSB0aGUgYGRlZmVycmVkX3BhZ2VzYCBzdGF0aWMga2V5IGJlZm9yZSB1c2Vyc3BhY2Ugc3RhcnRzLiBUaGVyZWZvcmUsIHRoaXMgY29kZSBpcyB1bnJlYWNoYWJsZSBkdXJpbmcgcG9zdC1ib290IGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgZGVmZXJyZWRfZ3Jvd196b25lYCwgd2hpY2ggaXMgYW4gYF9faW5pdGAgZnVuY3Rpb24gY2FsbGVkIG9ubHkgZHVyaW5nIGVhcmx5IGJvb3QuIEl0IGlzIGRpc2FibGVkIGJ5IGBwYWdlX2FsbG9jX2luaXRfbGF0ZWAgdmlhIHRoZSBgZGVmZXJyZWRfcGFnZXNgIHN0YXRpYyBrZXkgYmVmb3JlIHVzZXJzcGFjZSBzdGFydHMuIFRoZXJlZm9yZSwgdGhpcyBjb2RlIGlzIHVucmVhY2hhYmxlIGR1cmluZyBwb3N0LWJvb3QgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wNVQyMzozNTowOC42NzM0NTM2MzJaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzM1NzM3MTMzNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYGRlZmVycmVkX2dyb3dfem9uZWAsIHdoaWNoIGlzIGFuIGBfX2luaXRgIGZ1bmN0aW9uIGNhbGxlZCBvbmx5IGR1cmluZyBlYXJseSBib290LiBJdCBpcyBkaXNhYmxlZCBieSBgcGFnZV9hbGxvY19pbml0X2xhdGVgIHZpYSB0aGUgYGRlZmVycmVkX3BhZ2VzYCBzdGF0aWMga2V5IGJlZm9yZSB1c2Vyc3BhY2Ugc3RhcnRzLiBUaGVyZWZvcmUsIHRoaXMgY29kZSBpcyB1bnJlYWNoYWJsZSBkdXJpbmcgcG9zdC1ib290IGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQyMzozNTowOC42NzM0NjI0OTJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMTU4NzI0NDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAzM2FlNmM0ZWNhNDExNjI2OWMxMmFlYTcxMDcyNDJmMDJmYmUxMDNlXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgQXVnIDUgMjM6MzU6MDYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbW0vbW1faW5pdC5jIGIvbW0vbW1faW5pdC5jXFxuaW5kZXggNDk4ZDYyYzRlY2UzOS4uOTExNzdiZTU4YTAwMCAxMDA2NDRcXG4tLS0gYS9tbS9tbV9pbml0LmNcXG4rKysgYi9tbS9tbV9pbml0LmNcXG5AQCAtMjIxNCwxMCArMjIxNCwxMyBAQCBib29sIF9faW5pdCBkZWZlcnJlZF9ncm93X3pvbmUoc3RydWN0IHpvbmUgKnpvbmUsIHVuc2lnbmVkIGludCBvcmRlcilcXG4gXFx0fVxcbiBcXG4gXFx0LypcXG4tXFx0ICogVGhlcmUgd2VyZSBubyBwYWdlcyB0byBpbml0aWFsaXplIGFuZCBmcmVlIHdoaWNoIG1lYW5zIHRoZSB6b25lJ3NcXG4tXFx0ICogbWVtb3J5IG1hcCBpcyBjb21wbGV0ZWx5IGluaXRpYWxpemVkLlxcbitcXHQgKiBUaGUgbG9vcCBvbmx5IHRlc3RzIHNwZm4gYmVmb3JlIGVudGVyaW5nIGFuIGl0ZXJhdGlvbiwgc28gb24gZXhpdCBpdFxcbitcXHQgKiBtYXkgcG9pbnQgdXAgdG8gYSBzZWN0aW9uIHBhc3QgdGhlIGVuZCBvZiB0aGUgem9uZS4gIFdoZW4gaXQgZG9lcyxcXG4rXFx0ICogdGhlIHJlc3Qgb2YgdGhlIHpvbmUgaGFzIGFscmVhZHkgYmVlbiBoYW5kZWQgdG9cXG4rXFx0ICogZGVmZXJyZWRfaW5pdF9tZW1tYXBfY2h1bmsoKSBhbmQgbm90aGluZyBpcyBsZWZ0IHRvIGluaXRpYWxpemUuXFxuIFxcdCAqL1xcbi1cXHRwZ2RhdC1cXHUwMDNlZmlyc3RfZGVmZXJyZWRfcGZuID0gbnJfcGFnZXMgPyBzcGZuIDogVUxPTkdfTUFYO1xcbitcXHRwZ2RhdC1cXHUwMDNlZmlyc3RfZGVmZXJyZWRfcGZuID1cXG4rXFx0XFx0c3BmbiBcXHUwMDNjIHpvbmVfZW5kX3Bmbih6b25lKSA/IHNwZm4gOiBVTE9OR19NQVg7XFxuIFxcbiBcXHRwZ2RhdF9yZXNpemVfdW5sb2NrKHBnZGF0LCBcXHUwMDI2ZmxhZ3MpO1xcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMjM6MzU6MDkuOTkwMzI1MDkxWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MjYwNDA0OTA1NjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBkZWZlcnJlZF9ncm93X3pvbmVgLCB3aGljaCBpcyBhbiBgX19pbml0YCBmdW5jdGlvbiBjYWxsZWQgb25seSBkdXJpbmcgZWFybHkgYm9vdC4gSXQgaXMgZGlzYWJsZWQgYnkgYHBhZ2VfYWxsb2NfaW5pdF9sYXRlYCB2aWEgdGhlIGBkZWZlcnJlZF9wYWdlc2Agc3RhdGljIGtleSBiZWZvcmUgdXNlcnNwYWNlIHN0YXJ0cy4gVGhlcmVmb3JlLCB0aGlzIGNvZGUgaXMgdW5yZWFjaGFibGUgZHVyaW5nIHBvc3QtYm9vdCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMzNhZTZjNGVjYTQxMTYyNjljMTJhZWE3MTA3MjQyZjAyZmJlMTAzZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDUgMjM6MzU6MDYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9tbS9tbV9pbml0LmMgYi9tbS9tbV9pbml0LmNcbmluZGV4IDQ5OGQ2MmM0ZWNlMzkuLjkxMTc3YmU1OGEwMDAgMTAwNjQ0XG4tLS0gYS9tbS9tbV9pbml0LmNcbisrKyBiL21tL21tX2luaXQuY1xuQEAgLTIyMTQsMTAgKzIyMTQsMTMgQEAgYm9vbCBfX2luaXQgZGVmZXJyZWRfZ3Jvd196b25lKHN0cnVjdCB6b25lICp6b25lLCB1bnNpZ25lZCBpbnQgb3JkZXIpXG4gXHR9XG4gXG4gXHQvKlxuLVx0ICogVGhlcmUgd2VyZSBubyBwYWdlcyB0byBpbml0aWFsaXplIGFuZCBmcmVlIHdoaWNoIG1lYW5zIHRoZSB6b25lJ3Ncbi1cdCAqIG1lbW9yeSBtYXAgaXMgY29tcGxldGVseSBpbml0aWFsaXplZC5cbitcdCAqIFRoZSBsb29wIG9ubHkgdGVzdHMgc3BmbiBiZWZvcmUgZW50ZXJpbmcgYW4gaXRlcmF0aW9uLCBzbyBvbiBleGl0IGl0XG4rXHQgKiBtYXkgcG9pbnQgdXAgdG8gYSBzZWN0aW9uIHBhc3QgdGhlIGVuZCBvZiB0aGUgem9uZS4gIFdoZW4gaXQgZG9lcyxcbitcdCAqIHRoZSByZXN0IG9mIHRoZSB6b25lIGhhcyBhbHJlYWR5IGJlZW4gaGFuZGVkIHRvXG4rXHQgKiBkZWZlcnJlZF9pbml0X21lbW1hcF9jaHVuaygpIGFuZCBub3RoaW5nIGlzIGxlZnQgdG8gaW5pdGlhbGl6ZS5cbiBcdCAqL1xuLVx0cGdkYXQtXHUwMDNlZmlyc3RfZGVmZXJyZWRfcGZuID0gbnJfcGFnZXMgPyBzcGZuIDogVUxPTkdfTUFYO1xuK1x0cGdkYXQtXHUwMDNlZmlyc3RfZGVmZXJyZWRfcGZuID1cbitcdFx0c3BmbiBcdTAwM2Mgem9uZV9lbmRfcGZuKHpvbmUpID8gc3BmbiA6IFVMT05HX01BWDtcbiBcbiBcdHBnZGF0X3Jlc2l6ZV91bmxvY2socGdkYXQsIFx1MDAyNmZsYWdzKTtcbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDIzOjM1OjA5Ljk5MDMyNzA4MVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyMjU3MTI5NTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgTWVtb3J5IEluaXRpYWxpemF0aW9uIFBhdGNoIGZvciBGdXp6aW5nIFJlbGV2YW5jZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgYG1tL21tX2luaXQuY2AsIHNwZWNpZmljYWxseSB0aGUgYGRlZmVycmVkX2dyb3dfem9uZWAgZnVuY3Rpb24uIFRoZSBjaGFuZ2UgaXRzZWxmIHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCDigJMgYSBzbWFsbCBjb25kaXRpb25hbCBhZGp1c3RtZW50IHRvIGBwZ2RhdC1cdTAwM2VmaXJzdF9kZWZlcnJlZF9wZm5gLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGFzc2VzcyBpZiB0aGlzIGlzIHJlbGV2YW50IGZvciBmdXp6aW5nLCB3aGljaCBtZWFucyBjb25zaWRlcmluZyBob3cgYW5kIHdoZW4gdGhpcyBjb2RlIGlzIGV4ZWN1dGVkLlxuXG5GaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQuIElzIGBkZWZlcnJlZF9ncm93X3pvbmVgIGV2ZW4gcmVhY2hhYmxlPyBBaCwgeWVzLCB0aGUgbm90ZXMgc2F5IGl0J3MgY2FsbGVkIGR1cmluZyBib290IG9yIG1lbW9yeSBob3RwbHVnLCBib3RoIHZhbGlkIGVudHJ5IHBvaW50cy4gQnV0IHRoZW4gSSBzZWUgdGhhdCBpdCdzIG1hcmtlZCBhcyBgX19pbml0YC4gV2FpdCwgdGhlIHBhdGNoIGFjdHVhbGx5IHNob3dzIGBib29sIF9faW5pdCBkZWZlcnJlZF9ncm93X3pvbmUoLi4uKWAgd2hpY2ggY29uZmlybXMgaXQncyBhbiBpbml0aWFsaXphdGlvbiBmdW5jdGlvbi5cblxuTXkgZXhwZXJ0IGludHVpdGlvbiBraWNrcyBpbi4gYF9faW5pdGAgZnVuY3Rpb25zIG9ubHkgcnVuIGR1cmluZyBlYXJseSBib290IGFuZCBhcmUgdGhlbiBkaXNjYXJkZWQuIFN5emthbGxlciwgbXkgcHJpbWFyeSBmdXp6aW5nIHRvb2wsIG9wZXJhdGVzICphZnRlciogYm9vdC4gU28sIGlmIHRoaXMgaXMgdHJ1bHkgYW4gYF9faW5pdGAgZnVuY3Rpb24sIGl04oCZcyBsaWtlbHkgbm90IGRpcmVjdGx5IGZ1enphYmxlIGluIHRoZSB0cmFkaXRpb25hbCBzZW5zZSwgYXMgU3l6a2FsbGVyIGZvY3VzZXMgb24gcG9zdC1ib290IGV4ZWN1dGlvbiBwYXRod2F5cyBsaWtlIHN5c2NhbGxzLCBuZXR3b3JrIHRyYWZmaWMsIGV0Yy5cblxuSSBuZWVkIHRvIGNvbmZpcm0gdGhlIGBfX2luaXRgIHN0YXR1cy4gVGhlIHBhdGNoIHN0cm9uZ2x5IGltcGxpZXMgaXQsIGJ1dCBJIGFsd2F5cyB3YW50IHRvIGJlIHN1cmUsIHRvIGF2b2lkIGEgbWlzLWNhdGVnb3JpemF0aW9uIG9mIGZ1enppbmcgcHJpb3JpdGllcy4gSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IHRoaXMgaXMgaW5kZWVkIGFuIGBfX2luaXRgIGZ1bmN0aW9uLiBJZiBpdCBpcywgdGhpcyBwYXRjaCBpcyBsaWtlbHkgbm90IGRpcmVjdGx5IHJlbGV2YW50IGZvciBteSBmdXp6aW5nIGVmZm9ydHMgaW4gdGhlIGN1cnJlbnQgdGVzdGluZyBwYXJhZGlnbS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE1NywiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2MSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDIzOjM1OjE1LjIxNjA0MjQyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk1ODQxODM0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlZmVycmVkX2dyb3dfem9uZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9tbV9pbml0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vbW1faW5pdC5jPTIxMDg9c3RhdGljIGludCBfX2luaXQgZGVmZXJyZWRfaW5pdF9tZW1tYXAodm9pZCAqZGF0YSlcXG4tLVxcbm1tL21tX2luaXQuYy0yMTc4LSAqL1xcbm1tL21tX2luaXQuYzoyMTc5OmJvb2wgX19pbml0IGRlZmVycmVkX2dyb3dfem9uZShzdHJ1Y3Qgem9uZSAqem9uZSwgdW5zaWduZWQgaW50IG9yZGVyKVxcbm1tL21tX2luaXQuYy0yMTgwLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMjM6MzU6MTUuMzExODg4ODYzWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg4NzE3OTgyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBgZGVmZXJyZWRfZ3Jvd196b25lYCoqXG5cbk9rYXksIHNvIEkgc2VlIHRoYXQgYGRlZmVycmVkX2dyb3dfem9uZWAgaXMgZGVmaW5lZCB3aXRoaW4gYF9faW5pdGAuIFJpZ2h0LCB0aGF0IG1lYW5zIGl0J3Mgb25seSBleGVjdXRlZCBkdXJpbmcgdGhlIGluaXRpYWwgYm9vdCBwcm9jZXNzLiBOb3csIHRoZSBrZXkgaXMgdW5kZXJzdGFuZGluZyBob3cgU3l6a2FsbGVyIG9wZXJhdGVzLiBJdCdzIGRlc2lnbmVkIGZvciBwb3N0LWJvb3QgZnV6emluZywgcmlnaHQ/IFVubGVzcyB0aGVyZSdzIHNvbWUgdmVyeSBzcGVjaWZpYyBib290IHBhcmFtZXRlciBpbnRlcmFjdGlvbiwgaXQgdHlwaWNhbGx5IGRvZXNuJ3QgdGFyZ2V0IGNvZGUgdGhhdCdzIHNvbGVseSBwYXJ0IG9mIHRoZSBib290IHNlcXVlbmNlLlxuXG5IbW0sIGNhbiBJIHRoaW5rIG9mICphbnkqIHNjZW5hcmlvIHdoZXJlIGBkZWZlcnJlZF9ncm93X3pvbmVgIHdvdWxkIGJlIGludm9rZWQgYWZ0ZXIgdGhlIGluaXRpYWwgYm9vdD8gTm8sIGBfX2luaXRgIGZ1bmN0aW9ucyBnZXQgdGhlaXIgbWVtb3J5IGZyZWVkIHVwIGFmdGVyIGJvb3QsIHNvIHRoZXJlJ3Mgbm8gd2F5IGl0J2QgYmUgY2FsbGFibGUgZHVyaW5nIG5vcm1hbCBvcGVyYXRpb24uXG5cblNvLCByZWFsaXN0aWNhbGx5LCB0aGlzIGZ1bmN0aW9uIGlzIG91dHNpZGUgdGhlIGZ1enplcidzIHJlYWNoLiBKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSdtIGdvaW5nIHRvIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoZSBjb2RlYmFzZS4gSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgZGVmZXJyZWRfZ3Jvd196b25lYCBpc24ndCBjYWxsZWQgZnJvbSBhbnl3aGVyZSBlbHNlLCBqdXN0IGluIGNhc2UgdGhlcmUncyBzb21lIHVuZXhwZWN0ZWQgY29udHJvbCBmbG93IHBhdGguXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4OTIsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMjM6MzU6MTkuMTk5MDcwMzQ0WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzODY4OTkzODUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGVmZXJyZWRfZ3Jvd196b25lXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9pbnRlcm5hbC5oPTEzMjM9c3RhdGljIGlubGluZSBib29sIGRlZmVycmVkX3BhZ2VzX2VuYWJsZWQodm9pZClcXG4tLVxcbm1tL2ludGVybmFsLmgtMTMyNy1cXG5tbS9pbnRlcm5hbC5oOjEzMjg6Ym9vbCBfX2luaXQgZGVmZXJyZWRfZ3Jvd196b25lKHN0cnVjdCB6b25lICp6b25lLCB1bnNpZ25lZCBpbnQgb3JkZXIpO1xcbm1tL2ludGVybmFsLmgtMTMyOS0jZWxzZVxcbi0tXFxubW0vbW1faW5pdC5jPTIxMDg9c3RhdGljIGludCBfX2luaXQgZGVmZXJyZWRfaW5pdF9tZW1tYXAodm9pZCAqZGF0YSlcXG4tLVxcbm1tL21tX2luaXQuYy0yMTc4LSAqL1xcbm1tL21tX2luaXQuYzoyMTc5OmJvb2wgX19pbml0IGRlZmVycmVkX2dyb3dfem9uZShzdHJ1Y3Qgem9uZSAqem9uZSwgdW5zaWduZWQgaW50IG9yZGVyKVxcbm1tL21tX2luaXQuYy0yMTgwLXtcXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYz0zMDk9REVGSU5FX1NUQVRJQ19LRVlfVFJVRShkZWZlcnJlZF9wYWdlcyk7XFxuLS1cXG5tbS9wYWdlX2FsbG9jLmMtMzExLS8qXFxubW0vcGFnZV9hbGxvYy5jOjMxMjogKiBkZWZlcnJlZF9ncm93X3pvbmUoKSBpcyBfX2luaXQsIGJ1dCBpdCBpcyBjYWxsZWQgZnJvbVxcbm1tL3BhZ2VfYWxsb2MuYy0zMTMtICogZ2V0X3BhZ2VfZnJvbV9mcmVlbGlzdCgpIGR1cmluZyBlYXJseSBib290IHVudGlsIGRlZmVycmVkX3BhZ2VzIHBlcm1hbmVudGx5XFxuLS1cXG5tbS9wYWdlX2FsbG9jLmM9MzE3PXN0YXRpYyBib29sIF9fcmVmXFxubW0vcGFnZV9hbGxvYy5jOjMxODpfZGVmZXJyZWRfZ3Jvd196b25lKHN0cnVjdCB6b25lICp6b25lLCB1bnNpZ25lZCBpbnQgb3JkZXIpXFxubW0vcGFnZV9hbGxvYy5jLTMxOS17XFxubW0vcGFnZV9hbGxvYy5jOjMyMDpcXHRyZXR1cm4gZGVmZXJyZWRfZ3Jvd196b25lKHpvbmUsIG9yZGVyKTtcXG5tbS9wYWdlX2FsbG9jLmMtMzIxLX1cXG5tbS9wYWdlX2FsbG9jLmMtMzIyLSNlbHNlXFxubW0vcGFnZV9hbGxvYy5jOjMyMzpzdGF0aWMgaW5saW5lIGJvb2wgX2RlZmVycmVkX2dyb3dfem9uZShzdHJ1Y3Qgem9uZSAqem9uZSwgdW5zaWduZWQgaW50IG9yZGVyKVxcbm1tL3BhZ2VfYWxsb2MuYy0zMjQte1xcbi0tXFxubW0vcGFnZV9hbGxvYy5jPTM3OTI9Z2V0X3BhZ2VfZnJvbV9mcmVlbGlzdChnZnBfdCBnZnBfbWFzaywgdW5zaWduZWQgaW50IG9yZGVyLCBpbnQgYWxsb2NfZmxhZ3MsXFxuLS1cXG5tbS9wYWdlX2FsbG9jLmMtMzkxMS1cXHRcXHRcXHRpZiAoZGVmZXJyZWRfcGFnZXNfZW5hYmxlZCgpKSB7XFxubW0vcGFnZV9hbGxvYy5jOjM5MTI6XFx0XFx0XFx0XFx0aWYgKF9kZWZlcnJlZF9ncm93X3pvbmUoem9uZSwgb3JkZXIpKVxcbm1tL3BhZ2VfYWxsb2MuYy0zOTEzLVxcdFxcdFxcdFxcdFxcdGdvdG8gdHJ5X3RoaXNfem9uZTtcXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYy0zOTU0LVxcdFxcdFxcdGlmIChkZWZlcnJlZF9wYWdlc19lbmFibGVkKCkpIHtcXG5tbS9wYWdlX2FsbG9jLmM6Mzk1NTpcXHRcXHRcXHRcXHRpZiAoX2RlZmVycmVkX2dyb3dfem9uZSh6b25lLCBvcmRlcikpXFxubW0vcGFnZV9hbGxvYy5jLTM5NTYtXFx0XFx0XFx0XFx0XFx0Z290byB0cnlfdGhpc196b25lO1xcbi0tXFxubW0vcGFnZV9hbGxvYy5jPTUwOTU9dW5zaWduZWQgbG9uZyBhbGxvY19wYWdlc19idWxrX25vcHJvZihnZnBfdCBnZnAsIGludCBwcmVmZXJyZWRfbmlkLFxcbi0tXFxubW0vcGFnZV9hbGxvYy5jLTUxNzYtXFx0XFx0aWYgKGRlZmVycmVkX3BhZ2VzX2VuYWJsZWQoKSkge1xcbm1tL3BhZ2VfYWxsb2MuYzo1MTc3OlxcdFxcdFxcdGlmIChfZGVmZXJyZWRfZ3Jvd196b25lKHpvbmUsIDApKVxcbm1tL3BhZ2VfYWxsb2MuYy01MTc4LVxcdFxcdFxcdFxcdGdvdG8gcmV0cnlfdGhpc196b25lO1xcbi0tXFxubW0vcGFnZV9hbGxvYy5jPTc4NjY9c3RydWN0IHBhZ2UgKmFsbG9jX2Zyb3plbl9wYWdlc19ub2xvY2tfbm9wcm9mKGdmcF90IGdmcF9mbGFncywgaW50IG5pZCwgdW5zaWduZWQgaW50IG9yZGVyKVxcbi0tXFxubW0vcGFnZV9hbGxvYy5jLTc5MTUtXFxubW0vcGFnZV9hbGxvYy5jOjc5MTY6XFx0LyogQmFpbG91dCwgc2luY2UgX2RlZmVycmVkX2dyb3dfem9uZSgpIG5lZWRzIHRvIHRha2UgYSBsb2NrICovXFxubW0vcGFnZV9hbGxvYy5jLTc5MTctXFx0aWYgKGRlZmVycmVkX3BhZ2VzX2VuYWJsZWQoKSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMjM6MzU6MjEuNTg1OTc1NDQ5WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDM4MjQ2ODIyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEVhcmx5IEJvb3QgU2VxdWVuY2UqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgY29kZSBhbmQgaXQgbG9va3MgbGlrZSBgZGVmZXJyZWRfZ3Jvd196b25lYCBpcyBjYWxsZWQgYnkgYGdldF9wYWdlX2Zyb21fZnJlZWxpc3RgIGR1cmluZyB0aGUgaW5pdGlhbCBib290IHBoYXNlLCByaWdodD8gQW5kIHRoaXMgY29udGludWVzIHVudGlsIGBkZWZlcnJlZF9wYWdlc2AgZ2V0cyBkaXNhYmxlZCwgd2hpY2ggZWZmZWN0aXZlbHkgc2h1dHMgaXQgZG93bi4gVGhlIGNvbW1lbnRzIGFyZSBwcmV0dHkgZXhwbGljaXQgb24gdGhhdCBwb2ludC4gVGhlIHdheSBpdCdzIHdyaXR0ZW4gXCJkZWZlcnJlZF9ncm93X3pvbmUoKSBpcyBfX2luaXQsIGJ1dCBpdCBpcyBjYWxsZWQgZnJvbSBnZXRfcGFnZV9mcm9tX2ZyZWVsaXN0KCkgZHVyaW5nIGVhcmx5IGJvb3QgdW50aWwgZGVmZXJyZWRfcGFnZXMgcGVybWFuZW50bHkgZGlzYWJsZXMgaXQuXCIgbWVhbnMgdGhlIGNydWNpYWwgcG9pbnQgaXMgcmVhbGx5IG9ubHkgdGhhdCBlYXJseSBib290IHdpbmRvdy5cblxuTm93LCBteSBpbml0aWFsIHRob3VnaHQgaXMsIGlmIFN5emthbGxlciBpcyBmdXp6aW5nIGEgcG9zdC1ib290IHN5c3RlbSwgdGhpcyBzcGVjaWZpYyBwYXJ0IG9mIHRoZSBjb2RlLCB0aGlzIGBkZWZlcnJlZF9ncm93X3pvbmVgIGZ1bmN0aW9uLCBpcyBlbnRpcmVseSB1bnJlYWNoYWJsZSBkdXJpbmcgdGhlIGZ1enppbmcgcHJvY2Vzcy4gVGhlcmVmb3JlLCB0aGUgcGF0Y2ggSSdtIGV4YW1pbmluZyBzaG91bGQgYmUgc2FmZSBpbiB0aGUgY29udGV4dCBvZiBmdXp6aW5nLCBhbmQgaXQgaXMgcG90ZW50aWFsbHkgY2hhbmdpbmcgdW5yZWFjaGFibGUgY29kZS5cblxuQnV0IGhvbGQgb24gYSBzZWNvbmQuLi4gSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbi4gVGhlIGNyaXRpY2FsIGFzc3VtcHRpb24gaGVyZSBpcyB0aGF0IGBkZWZlcnJlZF9wYWdlc2AgKmlzKiBhbHdheXMgZGlzYWJsZWQsIGFuZCBJIGNhbid0IGxlYXZlIGl0IHRvIGNoYW5jZS4gSSBoYXZlIHRvIHZlcmlmeSB0aGF0IGBkZWZlcnJlZF9wYWdlc2AgaXMgYWx3YXlzIGRpc2FibGVkLiBJJ20gZ29pbmcgdG8gdHJhY2sgZG93biB0aGUgcG9pbnRzIGluIHRoZSBjb2RlIHdoZXJlIGBkZWZlcnJlZF9wYWdlc2AgaXMgc2V0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTUzLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDIzOjM1OjI1Ljk2ODQ0Njc1NVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NjUzOTgyNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZWZlcnJlZF9wYWdlc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9wYWdlX2FsbG9jLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vcGFnZV9hbGxvYy5jPTMwMT1pbnQgcGFnZV9ncm91cF9ieV9tb2JpbGl0eV9kaXNhYmxlZCBfX3JlYWRfbW9zdGx5O1xcbi0tXFxubW0vcGFnZV9hbGxvYy5jLTMwOC0gKi9cXG5tbS9wYWdlX2FsbG9jLmM6MzA5OkRFRklORV9TVEFUSUNfS0VZX1RSVUUoZGVmZXJyZWRfcGFnZXMpO1xcbm1tL3BhZ2VfYWxsb2MuYy0zMTAtXFxuLS1cXG5tbS9wYWdlX2FsbG9jLmMtMzEyLSAqIGRlZmVycmVkX2dyb3dfem9uZSgpIGlzIF9faW5pdCwgYnV0IGl0IGlzIGNhbGxlZCBmcm9tXFxubW0vcGFnZV9hbGxvYy5jOjMxMzogKiBnZXRfcGFnZV9mcm9tX2ZyZWVsaXN0KCkgZHVyaW5nIGVhcmx5IGJvb3QgdW50aWwgZGVmZXJyZWRfcGFnZXMgcGVybWFuZW50bHlcXG5tbS9wYWdlX2FsbG9jLmMtMzE0LSAqIGRpc2FibGVzIHRoaXMgY2FsbC4gVGhpcyBpcyB3aHkgd2UgaGF2ZSByZWZkYXRhIHdyYXBwZXIgdG8gYXZvaWQgd2FybmluZyxcXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYz0xMjA4PXN0YXRpYyBpbmxpbmUgYm9vbCBzaG91bGRfc2tpcF9rYXNhbl9wb2lzb24oc3RydWN0IHBhZ2UgKnBhZ2UpXFxuLS1cXG5tbS9wYWdlX2FsbG9jLmMtMTIxMC1cXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfS0FTQU5fR0VORVJJQykpXFxubW0vcGFnZV9hbGxvYy5jOjEyMTE6XFx0XFx0cmV0dXJuIGRlZmVycmVkX3BhZ2VzX2VuYWJsZWQoKTtcXG5tbS9wYWdlX2FsbG9jLmMtMTIxMi1cXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYz0zNzkyPWdldF9wYWdlX2Zyb21fZnJlZWxpc3QoZ2ZwX3QgZ2ZwX21hc2ssIHVuc2lnbmVkIGludCBvcmRlciwgaW50IGFsbG9jX2ZsYWdzLFxcbi0tXFxubW0vcGFnZV9hbGxvYy5jLTM5MTAtXFx0XFx0XFx0ICovXFxubW0vcGFnZV9hbGxvYy5jOjM5MTE6XFx0XFx0XFx0aWYgKGRlZmVycmVkX3BhZ2VzX2VuYWJsZWQoKSkge1xcbm1tL3BhZ2VfYWxsb2MuYy0zOTEyLVxcdFxcdFxcdFxcdGlmIChfZGVmZXJyZWRfZ3Jvd196b25lKHpvbmUsIG9yZGVyKSlcXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYy0zOTUzLVxcdFxcdFxcdC8qIFRyeSBhZ2FpbiBpZiB6b25lIGhhcyBkZWZlcnJlZCBwYWdlcyAqL1xcbm1tL3BhZ2VfYWxsb2MuYzozOTU0OlxcdFxcdFxcdGlmIChkZWZlcnJlZF9wYWdlc19lbmFibGVkKCkpIHtcXG5tbS9wYWdlX2FsbG9jLmMtMzk1NS1cXHRcXHRcXHRcXHRpZiAoX2RlZmVycmVkX2dyb3dfem9uZSh6b25lLCBvcmRlcikpXFxuLS1cXG5tbS9wYWdlX2FsbG9jLmM9NTA5NT11bnNpZ25lZCBsb25nIGFsbG9jX3BhZ2VzX2J1bGtfbm9wcm9mKGdmcF90IGdmcCwgaW50IHByZWZlcnJlZF9uaWQsXFxuLS1cXG5tbS9wYWdlX2FsbG9jLmMtNTE3NS1cXHRcXHQvKiBUcnkgYWdhaW4gaWYgem9uZSBoYXMgZGVmZXJyZWQgcGFnZXMgKi9cXG5tbS9wYWdlX2FsbG9jLmM6NTE3NjpcXHRcXHRpZiAoZGVmZXJyZWRfcGFnZXNfZW5hYmxlZCgpKSB7XFxubW0vcGFnZV9hbGxvYy5jLTUxNzctXFx0XFx0XFx0aWYgKF9kZWZlcnJlZF9ncm93X3pvbmUoem9uZSwgMCkpXFxuLS1cXG5tbS9wYWdlX2FsbG9jLmM9Nzg2Nj1zdHJ1Y3QgcGFnZSAqYWxsb2NfZnJvemVuX3BhZ2VzX25vbG9ja19ub3Byb2YoZ2ZwX3QgZ2ZwX2ZsYWdzLCBpbnQgbmlkLCB1bnNpZ25lZCBpbnQgb3JkZXIpXFxuLS1cXG5tbS9wYWdlX2FsbG9jLmMtNzkxNi1cXHQvKiBCYWlsb3V0LCBzaW5jZSBfZGVmZXJyZWRfZ3Jvd196b25lKCkgbmVlZHMgdG8gdGFrZSBhIGxvY2sgKi9cXG5tbS9wYWdlX2FsbG9jLmM6NzkxNzpcXHRpZiAoZGVmZXJyZWRfcGFnZXNfZW5hYmxlZCgpKVxcbm1tL3BhZ2VfYWxsb2MuYy03OTE4LVxcdFxcdHJldHVybiBOVUxMO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQyMzozNToyNi4wMzQ5OTU1MDFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTA2NjY2MDY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgdGFpbG9yZWQgYXMgaWYgSSdtIHRoaW5raW5nIGl0OlxuXG4qKlRyYWNpbmcgRG93biB0aGUgYGRlZmVycmVkX3BhZ2VzYCBEaXNhYmxlbWVudCoqXG5cblJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgYW5kICp3aHkqIGBkZWZlcnJlZF9wYWdlc2AgaXMgZGlzYWJsZWQuIFRoYXQncyB0aGUgY29yZSBpc3N1ZSBhdCBoYW5kLiBJIG5lZWQgdG8gc3lzdGVtYXRpY2FsbHkgcGlucG9pbnQgdGhlIGxvY2F0aW9ucyBpbiB0aGUgY29kZWJhc2Ugd2hlcmUgdGhpcyBjb25maWd1cmF0aW9uIHNldHRpbmcgaXMgYmVpbmcgbmVnYXRlZC4gSXMgaXQgYSBkaXJlY3QgY29uZmlndXJhdGlvbiBvdmVycmlkZT8gQSBjb25kaXRpb25hbCBjaGVjayB0aGF0J3MgZXZhbHVhdGluZyB0byBmYWxzZT8gUGVyaGFwcyBhIGRlZmF1bHQgdGhhdCdzIGJlaW5nIHNldCBlbHNld2hlcmU/IEkgbmVlZCB0byBhbmFseXplIHRoZSBjb2RlIHdpdGggYSBjcml0aWNhbCBleWUsIGZvbGxvd2luZyB0aGUgbGlrZWx5IHBhdGhzIHRoYXQgd291bGQgbGVhZCB0byBpdHMgZGVhY3RpdmF0aW9uLiBUaW1lIHRvIGRpZyBpbiBhbmQgdW5yYXZlbCB0aGlzIVxuXG5cbiIsIklucHV0VG9rZW5zIjo1MzIyLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMjM6MzU6MjguOTQxNjY1NDZaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3NjE2NjI5MTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RhdGljX2JyYW5jaF9kaXNhYmxlLipkZWZlcnJlZF9wYWdlc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vbW1faW5pdC5jPTIzMTE9dm9pZCBfX2luaXQgcGFnZV9hbGxvY19pbml0X2xhdGUodm9pZClcXG4tLVxcbm1tL21tX2luaXQuYy0yMzMwLVxcdCAqL1xcbm1tL21tX2luaXQuYzoyMzMxOlxcdHN0YXRpY19icmFuY2hfZGlzYWJsZShcXHUwMDI2ZGVmZXJyZWRfcGFnZXMpO1xcbm1tL21tX2luaXQuYy0yMzMyLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQyMzozNTozMS43MDMzMzYyNDlaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDMyNzQzODcwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGFzc2Vzc21lbnQgb2YgdGhpcyBjb2RlIHNuaXBwZXQsIGZpbHRlcmVkIHRocm91Z2ggbXkgZXhwZXJ0IGxlbnM6XG5cbioqRGVjb25zdHJ1Y3RpbmcgdGhlIFBhZ2UgQWxsb2NhdGlvbiBJbml0aWFsaXphdGlvbioqXG5cblJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZyb20gd2hhdCBJIHNlZSBpbiBgcGFnZV9hbGxvY19pbml0X2xhdGVgLCB0aGlzIGlzIHBhcnQgb2YgdGhlIGxhdGUtc3RhZ2UgYm9vdCBzZXF1ZW5jZS4gU3BlY2lmaWNhbGx5LCB0aGUgZnVuY3Rpb24gY2FsbHMgZm9yIHRoZSBkaXNhYmxpbmcgb2YgYGRlZmVycmVkX3BhZ2VzYC4gVGhhdCdzIHRoZSBrZXkgaGVyZS4gVGhlIGZ1bmN0aW9uIGBzdGF0aWNfYnJhbmNoX2Rpc2FibGVgIGhhcyBkaXNhYmxlZCB0aGUgYGRlZmVycmVkX3BhZ2VzYCBicmFuY2guIE5vdywgbXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgd2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBvbiBmdXp6aW5nPyBcblxuSWYgYGRlZmVycmVkX3BhZ2VzYCBpcyBkaXNhYmxlZCBlYXJseSBpbiB0aGUgYm9vdCBwcm9jZXNzLCB0aGVuIHRoYXQgZGlyZWN0bHkgaW1wbGllcyB0aGF0IGNvZGUgcGF0aHMgZGVwZW5kZW50IG9uIHRoYXQgYnJhbmNoLCBzdWNoIGFzIGBkZWZlcnJlZF9ncm93X3pvbmVgLCBhcmUgY29tcGxldGVseSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4gSSBjYW4ndCBnZW5lcmF0ZSBhIGZ1enogY2FzZSB0aGF0IHdpbGwgZXhlY3V0ZSB0aGUgYGRlZmVycmVkX2dyb3dfem9uZWAgZnVuY3Rpb24uIFRoaXMgd291bGQgaW5kaWNhdGUgdGhhdCB0ZXN0aW5nIGl0IGlzIG5vdCBwb3NzaWJsZS5cblxuR2l2ZW4gdGhpcyB1bmRlcnN0YW5kaW5nLCBJIGNhbiBjb25maWRlbnRseSBjb25jbHVkZSB0aGF0IGZ1enppbmcgYGRlZmVycmVkX2dyb3dfem9uZWAgaXMgYSB3YXN0ZSBvZiB0aW1lLCBzaW5jZSB0aGUgYnJhbmNoIGl0IGxpdmVzIGluIGlzIGRpc2FibGVkLiBJJ20gZ29pbmcgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBObyBwb2ludCBpbiBleHBlbmRpbmcgcmVzb3VyY2VzIGZ1enppbmcgc29tZXRoaW5nIHRoYXQncyBkZWZpbml0aXZlbHkgdW5yZWFjaGFibGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU2MDcsIk91dHB1dFRva2VucyI6OTUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQyMzozNTozNi4wMzA3Nzc4NzlaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNTc1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgZGVmZXJyZWRfZ3Jvd196b25lYCwgd2hpY2ggaXMgYW4gYF9faW5pdGAgZnVuY3Rpb24gY2FsbGVkIG9ubHkgZHVyaW5nIGVhcmx5IGJvb3QuIEl0IGlzIGRpc2FibGVkIGJ5IGBwYWdlX2FsbG9jX2luaXRfbGF0ZWAgdmlhIHRoZSBgZGVmZXJyZWRfcGFnZXNgIHN0YXRpYyBrZXkgYmVmb3JlIHVzZXJzcGFjZSBzdGFydHMuIFRoZXJlZm9yZSwgdGhpcyBjb2RlIGlzIHVucmVhY2hhYmxlIGR1cmluZyBwb3N0LWJvb3QgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBkZWZlcnJlZF9ncm93X3pvbmVgLCB3aGljaCBpcyBhbiBgX19pbml0YCBmdW5jdGlvbiBjYWxsZWQgb25seSBkdXJpbmcgZWFybHkgYm9vdC4gSXQgaXMgZGlzYWJsZWQgYnkgYHBhZ2VfYWxsb2NfaW5pdF9sYXRlYCB2aWEgdGhlIGBkZWZlcnJlZF9wYWdlc2Agc3RhdGljIGtleSBiZWZvcmUgdXNlcnNwYWNlIHN0YXJ0cy4gVGhlcmVmb3JlLCB0aGlzIGNvZGUgaXMgdW5yZWFjaGFibGUgZHVyaW5nIHBvc3QtYm9vdCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflownsx2v[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-05 22:50:55 +0000 UTC FinishedAt: 2026-08-05 23:35:37 +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+CgkJCTx0ZD4yMDI2LzA4LzA1IDIzOjM1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBkZWZlcnJlZF9ncm93X3pvbmVgLCB3aGljaCBpcyBhbiBgX19pbml0YCBmdW5jdGlvbiBjYWxsZWQgb25seSBkdXJpbmcgZWFybHkgYm9vdC4gSXQgaXMgZGlzYWJsZWQgYnkgYHBhZ2VfYWxsb2NfaW5pdF9sYXRlYCB2aWEgdGhlIGBkZWZlcnJlZF9wYWdlc2Agc3RhdGljIGtleSBiZWZvcmUgdXNlcnNwYWNlIHN0YXJ0cy4gVGhlcmVmb3JlLCB0aGlzIGNvZGUgaXMgdW5yZWFjaGFibGUgZHVyaW5nIHBvc3QtYm9vdCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAyMzozNTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDMzYWU2YzRlY2E0MTE2MjY5YzEyYWVhNzEwNzI0MmYwMmZiZTEwM2VcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyA1IDIzOjM1OjA2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL21tL21tX2luaXQuYyBiL21tL21tX2luaXQuY1xuaW5kZXggNDk4ZDYyYzRlY2UzOS4uOTExNzdiZTU4YTAwMCAxMDA2NDRcbi0tLSBhL21tL21tX2luaXQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbW0vbW1faW5pdC5jXG5AQCAtMjIxNCwxMCAmIzQzOzIyMTQsMTMgQEAgYm9vbCBfX2luaXQgZGVmZXJyZWRfZ3Jvd196b25lKHN0cnVjdCB6b25lICp6b25lLCB1bnNpZ25lZCBpbnQgb3JkZXIpXG4gXHR9XG4gXG4gXHQvKlxuLVx0ICogVGhlcmUgd2VyZSBubyBwYWdlcyB0byBpbml0aWFsaXplIGFuZCBmcmVlIHdoaWNoIG1lYW5zIHRoZSB6b25lJiMzOTtzXG4tXHQgKiBtZW1vcnkgbWFwIGlzIGNvbXBsZXRlbHkgaW5pdGlhbGl6ZWQuXG4mIzQzO1x0ICogVGhlIGxvb3Agb25seSB0ZXN0cyBzcGZuIGJlZm9yZSBlbnRlcmluZyBhbiBpdGVyYXRpb24sIHNvIG9uIGV4aXQgaXRcbiYjNDM7XHQgKiBtYXkgcG9pbnQgdXAgdG8gYSBzZWN0aW9uIHBhc3QgdGhlIGVuZCBvZiB0aGUgem9uZS4gIFdoZW4gaXQgZG9lcyxcbiYjNDM7XHQgKiB0aGUgcmVzdCBvZiB0aGUgem9uZSBoYXMgYWxyZWFkeSBiZWVuIGhhbmRlZCB0b1xuJiM0MztcdCAqIGRlZmVycmVkX2luaXRfbWVtbWFwX2NodW5rKCkgYW5kIG5vdGhpbmcgaXMgbGVmdCB0byBpbml0aWFsaXplLlxuIFx0ICovXG4tXHRwZ2RhdC1cdTAwM2VmaXJzdF9kZWZlcnJlZF9wZm4gPSBucl9wYWdlcyA/IHNwZm4gOiBVTE9OR19NQVg7XG4mIzQzO1x0cGdkYXQtXHUwMDNlZmlyc3RfZGVmZXJyZWRfcGZuID1cbiYjNDM7XHRcdHNwZm4gXHUwMDNjIHpvbmVfZW5kX3Bmbih6b25lKSA/IHNwZm4gOiBVTE9OR19NQVg7XG4gXG4gXHRwZ2RhdF9yZXNpemVfdW5sb2NrKHBnZGF0LCBcdTAwMjZmbGFncyk7XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMjM6MzU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBkZWZlcnJlZF9ncm93X3pvbmVgLCB3aGljaCBpcyBhbiBgX19pbml0YCBmdW5jdGlvbiBjYWxsZWQgb25seSBkdXJpbmcgZWFybHkgYm9vdC4gSXQgaXMgZGlzYWJsZWQgYnkgYHBhZ2VfYWxsb2NfaW5pdF9sYXRlYCB2aWEgdGhlIGBkZWZlcnJlZF9wYWdlc2Agc3RhdGljIGtleSBiZWZvcmUgdXNlcnNwYWNlIHN0YXJ0cy4gVGhlcmVmb3JlLCB0aGlzIGNvZGUgaXMgdW5yZWFjaGFibGUgZHVyaW5nIHBvc3QtYm9vdCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDMzYWU2YzRlY2E0MTE2MjY5YzEyYWVhNzEwNzI0MmYwMmZiZTEwM2UKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEF1ZyA1IDIzOjM1OjA2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbW0vbW1faW5pdC5jIGIvbW0vbW1faW5pdC5jCmluZGV4IDQ5OGQ2MmM0ZWNlMzkuLjkxMTc3YmU1OGEwMDAgMTAwNjQ0Ci0tLSBhL21tL21tX2luaXQuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9tbV9pbml0LmMKQEAgLTIyMTQsMTAgJiM0MzsyMjE0LDEzIEBAIGJvb2wgX19pbml0IGRlZmVycmVkX2dyb3dfem9uZShzdHJ1Y3Qgem9uZSAqem9uZSwgdW5zaWduZWQgaW50IG9yZGVyKQogCX0KIAogCS8qCi0JICogVGhlcmUgd2VyZSBubyBwYWdlcyB0byBpbml0aWFsaXplIGFuZCBmcmVlIHdoaWNoIG1lYW5zIHRoZSB6b25lJiMzOTtzCi0JICogbWVtb3J5IG1hcCBpcyBjb21wbGV0ZWx5IGluaXRpYWxpemVkLgomIzQzOwkgKiBUaGUgbG9vcCBvbmx5IHRlc3RzIHNwZm4gYmVmb3JlIGVudGVyaW5nIGFuIGl0ZXJhdGlvbiwgc28gb24gZXhpdCBpdAomIzQzOwkgKiBtYXkgcG9pbnQgdXAgdG8gYSBzZWN0aW9uIHBhc3QgdGhlIGVuZCBvZiB0aGUgem9uZS4gIFdoZW4gaXQgZG9lcywKJiM0MzsJICogdGhlIHJlc3Qgb2YgdGhlIHpvbmUgaGFzIGFscmVhZHkgYmVlbiBoYW5kZWQgdG8KJiM0MzsJICogZGVmZXJyZWRfaW5pdF9tZW1tYXBfY2h1bmsoKSBhbmQgbm90aGluZyBpcyBsZWZ0IHRvIGluaXRpYWxpemUuCiAJICovCi0JcGdkYXQtJmd0O2ZpcnN0X2RlZmVycmVkX3BmbiA9IG5yX3BhZ2VzID8gc3BmbiA6IFVMT05HX01BWDsKJiM0MzsJcGdkYXQtJmd0O2ZpcnN0X2RlZmVycmVkX3BmbiA9CiYjNDM7CQlzcGZuICZsdDsgem9uZV9lbmRfcGZuKHpvbmUpID8gc3BmbiA6IFVMT05HX01BWDsKIAogCXBnZGF0X3Jlc2l6ZV91bmxvY2socGdkYXQsICZhbXA7ZmxhZ3MpOwogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDIzOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNTcKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAyNjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTWVtb3J5IEluaXRpYWxpemF0aW9uIFBhdGNoIGZvciBGdXp6aW5nIFJlbGV2YW5jZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyBgbW0vbW1faW5pdC5jYCwgc3BlY2lmaWNhbGx5IHRoZSBgZGVmZXJyZWRfZ3Jvd196b25lYCBmdW5jdGlvbi4gVGhlIGNoYW5nZSBpdHNlbGYgc2VlbXMgc3RyYWlnaHRmb3J3YXJkIOKAkyBhIHNtYWxsIGNvbmRpdGlvbmFsIGFkanVzdG1lbnQgdG8gYHBnZGF0LSZndDtmaXJzdF9kZWZlcnJlZF9wZm5gLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGFzc2VzcyBpZiB0aGlzIGlzIHJlbGV2YW50IGZvciBmdXp6aW5nLCB3aGljaCBtZWFucyBjb25zaWRlcmluZyBob3cgYW5kIHdoZW4gdGhpcyBjb2RlIGlzIGV4ZWN1dGVkLgoKRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0LiBJcyBgZGVmZXJyZWRfZ3Jvd196b25lYCBldmVuIHJlYWNoYWJsZT8gQWgsIHllcywgdGhlIG5vdGVzIHNheSBpdCYjMzk7cyBjYWxsZWQgZHVyaW5nIGJvb3Qgb3IgbWVtb3J5IGhvdHBsdWcsIGJvdGggdmFsaWQgZW50cnkgcG9pbnRzLiBCdXQgdGhlbiBJIHNlZSB0aGF0IGl0JiMzOTtzIG1hcmtlZCBhcyBgX19pbml0YC4gV2FpdCwgdGhlIHBhdGNoIGFjdHVhbGx5IHNob3dzIGBib29sIF9faW5pdCBkZWZlcnJlZF9ncm93X3pvbmUoLi4uKWAgd2hpY2ggY29uZmlybXMgaXQmIzM5O3MgYW4gaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24uCgpNeSBleHBlcnQgaW50dWl0aW9uIGtpY2tzIGluLiBgX19pbml0YCBmdW5jdGlvbnMgb25seSBydW4gZHVyaW5nIGVhcmx5IGJvb3QgYW5kIGFyZSB0aGVuIGRpc2NhcmRlZC4gU3l6a2FsbGVyLCBteSBwcmltYXJ5IGZ1enppbmcgdG9vbCwgb3BlcmF0ZXMgKmFmdGVyKiBib290LiBTbywgaWYgdGhpcyBpcyB0cnVseSBhbiBgX19pbml0YCBmdW5jdGlvbiwgaXTigJlzIGxpa2VseSBub3QgZGlyZWN0bHkgZnV6emFibGUgaW4gdGhlIHRyYWRpdGlvbmFsIHNlbnNlLCBhcyBTeXprYWxsZXIgZm9jdXNlcyBvbiBwb3N0LWJvb3QgZXhlY3V0aW9uIHBhdGh3YXlzIGxpa2Ugc3lzY2FsbHMsIG5ldHdvcmsgdHJhZmZpYywgZXRjLgoKSSBuZWVkIHRvIGNvbmZpcm0gdGhlIGBfX2luaXRgIHN0YXR1cy4gVGhlIHBhdGNoIHN0cm9uZ2x5IGltcGxpZXMgaXQsIGJ1dCBJIGFsd2F5cyB3YW50IHRvIGJlIHN1cmUsIHRvIGF2b2lkIGEgbWlzLWNhdGVnb3JpemF0aW9uIG9mIGZ1enppbmcgcHJpb3JpdGllcy4gSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IHRoaXMgaXMgaW5kZWVkIGFuIGBfX2luaXRgIGZ1bmN0aW9uLiBJZiBpdCBpcywgdGhpcyBwYXRjaCBpcyBsaWtlbHkgbm90IGRpcmVjdGx5IHJlbGV2YW50IGZvciBteSBmdXp6aW5nIGVmZm9ydHMgaW4gdGhlIGN1cnJlbnQgdGVzdGluZyBwYXJhZGlnbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAyMzozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZWZlcnJlZF9ncm93X3pvbmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9tbV9pbml0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vbW1faW5pdC5jPTIxMDg9c3RhdGljIGludCBfX2luaXQgZGVmZXJyZWRfaW5pdF9tZW1tYXAodm9pZCAqZGF0YSlcbi0tXG5tbS9tbV9pbml0LmMtMjE3OC0gKi9cbm1tL21tX2luaXQuYzoyMTc5OmJvb2wgX19pbml0IGRlZmVycmVkX2dyb3dfem9uZShzdHJ1Y3Qgem9uZSAqem9uZSwgdW5zaWduZWQgaW50IG9yZGVyKVxubW0vbW1faW5pdC5jLTIxODAte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDIzOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4OTIKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiAxMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBSZWFjaGFiaWxpdHkgb2YgYGRlZmVycmVkX2dyb3dfem9uZWAqKgoKT2theSwgc28gSSBzZWUgdGhhdCBgZGVmZXJyZWRfZ3Jvd196b25lYCBpcyBkZWZpbmVkIHdpdGhpbiBgX19pbml0YC4gUmlnaHQsIHRoYXQgbWVhbnMgaXQmIzM5O3Mgb25seSBleGVjdXRlZCBkdXJpbmcgdGhlIGluaXRpYWwgYm9vdCBwcm9jZXNzLiBOb3csIHRoZSBrZXkgaXMgdW5kZXJzdGFuZGluZyBob3cgU3l6a2FsbGVyIG9wZXJhdGVzLiBJdCYjMzk7cyBkZXNpZ25lZCBmb3IgcG9zdC1ib290IGZ1enppbmcsIHJpZ2h0PyBVbmxlc3MgdGhlcmUmIzM5O3Mgc29tZSB2ZXJ5IHNwZWNpZmljIGJvb3QgcGFyYW1ldGVyIGludGVyYWN0aW9uLCBpdCB0eXBpY2FsbHkgZG9lc24mIzM5O3QgdGFyZ2V0IGNvZGUgdGhhdCYjMzk7cyBzb2xlbHkgcGFydCBvZiB0aGUgYm9vdCBzZXF1ZW5jZS4KCkhtbSwgY2FuIEkgdGhpbmsgb2YgKmFueSogc2NlbmFyaW8gd2hlcmUgYGRlZmVycmVkX2dyb3dfem9uZWAgd291bGQgYmUgaW52b2tlZCBhZnRlciB0aGUgaW5pdGlhbCBib290PyBObywgYF9faW5pdGAgZnVuY3Rpb25zIGdldCB0aGVpciBtZW1vcnkgZnJlZWQgdXAgYWZ0ZXIgYm9vdCwgc28gdGhlcmUmIzM5O3Mgbm8gd2F5IGl0JiMzOTtkIGJlIGNhbGxhYmxlIGR1cmluZyBub3JtYWwgb3BlcmF0aW9uLgoKU28sIHJlYWxpc3RpY2FsbHksIHRoaXMgZnVuY3Rpb24gaXMgb3V0c2lkZSB0aGUgZnV6emVyJiMzOTtzIHJlYWNoLiBKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGUgY29kZWJhc2UuIEkgbmVlZCB0byBjb25maXJtIHRoYXQgYGRlZmVycmVkX2dyb3dfem9uZWAgaXNuJiMzOTt0IGNhbGxlZCBmcm9tIGFueXdoZXJlIGVsc2UsIGp1c3QgaW4gY2FzZSB0aGVyZSYjMzk7cyBzb21lIHVuZXhwZWN0ZWQgY29udHJvbCBmbG93IHBhdGguCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMjM6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVmZXJyZWRfZ3Jvd196b25lJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2ludGVybmFsLmg9MTMyMz1zdGF0aWMgaW5saW5lIGJvb2wgZGVmZXJyZWRfcGFnZXNfZW5hYmxlZCh2b2lkKVxuLS1cbm1tL2ludGVybmFsLmgtMTMyNy1cbm1tL2ludGVybmFsLmg6MTMyODpib29sIF9faW5pdCBkZWZlcnJlZF9ncm93X3pvbmUoc3RydWN0IHpvbmUgKnpvbmUsIHVuc2lnbmVkIGludCBvcmRlcik7XG5tbS9pbnRlcm5hbC5oLTEzMjktI2Vsc2Vcbi0tXG5tbS9tbV9pbml0LmM9MjEwOD1zdGF0aWMgaW50IF9faW5pdCBkZWZlcnJlZF9pbml0X21lbW1hcCh2b2lkICpkYXRhKVxuLS1cbm1tL21tX2luaXQuYy0yMTc4LSAqL1xubW0vbW1faW5pdC5jOjIxNzk6Ym9vbCBfX2luaXQgZGVmZXJyZWRfZ3Jvd196b25lKHN0cnVjdCB6b25lICp6b25lLCB1bnNpZ25lZCBpbnQgb3JkZXIpXG5tbS9tbV9pbml0LmMtMjE4MC17XG4tLVxubW0vcGFnZV9hbGxvYy5jPTMwOT1ERUZJTkVfU1RBVElDX0tFWV9UUlVFKGRlZmVycmVkX3BhZ2VzKTtcbi0tXG5tbS9wYWdlX2FsbG9jLmMtMzExLS8qXG5tbS9wYWdlX2FsbG9jLmM6MzEyOiAqIGRlZmVycmVkX2dyb3dfem9uZSgpIGlzIF9faW5pdCwgYnV0IGl0IGlzIGNhbGxlZCBmcm9tXG5tbS9wYWdlX2FsbG9jLmMtMzEzLSAqIGdldF9wYWdlX2Zyb21fZnJlZWxpc3QoKSBkdXJpbmcgZWFybHkgYm9vdCB1bnRpbCBkZWZlcnJlZF9wYWdlcyBwZXJtYW5lbnRseVxuLS1cbm1tL3BhZ2VfYWxsb2MuYz0zMTc9c3RhdGljIGJvb2wgX19yZWZcbm1tL3BhZ2VfYWxsb2MuYzozMTg6X2RlZmVycmVkX2dyb3dfem9uZShzdHJ1Y3Qgem9uZSAqem9uZSwgdW5zaWduZWQgaW50IG9yZGVyKVxubW0vcGFnZV9hbGxvYy5jLTMxOS17XG5tbS9wYWdlX2FsbG9jLmM6MzIwOlx0cmV0dXJuIGRlZmVycmVkX2dyb3dfem9uZSh6b25lLCBvcmRlcik7XG5tbS9wYWdlX2FsbG9jLmMtMzIxLX1cbm1tL3BhZ2VfYWxsb2MuYy0zMjItI2Vsc2Vcbm1tL3BhZ2VfYWxsb2MuYzozMjM6c3RhdGljIGlubGluZSBib29sIF9kZWZlcnJlZF9ncm93X3pvbmUoc3RydWN0IHpvbmUgKnpvbmUsIHVuc2lnbmVkIGludCBvcmRlcilcbm1tL3BhZ2VfYWxsb2MuYy0zMjQte1xuLS1cbm1tL3BhZ2VfYWxsb2MuYz0zNzkyPWdldF9wYWdlX2Zyb21fZnJlZWxpc3QoZ2ZwX3QgZ2ZwX21hc2ssIHVuc2lnbmVkIGludCBvcmRlciwgaW50IGFsbG9jX2ZsYWdzLFxuLS1cbm1tL3BhZ2VfYWxsb2MuYy0zOTExLVx0XHRcdGlmIChkZWZlcnJlZF9wYWdlc19lbmFibGVkKCkpIHtcbm1tL3BhZ2VfYWxsb2MuYzozOTEyOlx0XHRcdFx0aWYgKF9kZWZlcnJlZF9ncm93X3pvbmUoem9uZSwgb3JkZXIpKVxubW0vcGFnZV9hbGxvYy5jLTM5MTMtXHRcdFx0XHRcdGdvdG8gdHJ5X3RoaXNfem9uZTtcbi0tXG5tbS9wYWdlX2FsbG9jLmMtMzk1NC1cdFx0XHRpZiAoZGVmZXJyZWRfcGFnZXNfZW5hYmxlZCgpKSB7XG5tbS9wYWdlX2FsbG9jLmM6Mzk1NTpcdFx0XHRcdGlmIChfZGVmZXJyZWRfZ3Jvd196b25lKHpvbmUsIG9yZGVyKSlcbm1tL3BhZ2VfYWxsb2MuYy0zOTU2LVx0XHRcdFx0XHRnb3RvIHRyeV90aGlzX3pvbmU7XG4tLVxubW0vcGFnZV9hbGxvYy5jPTUwOTU9dW5zaWduZWQgbG9uZyBhbGxvY19wYWdlc19idWxrX25vcHJvZihnZnBfdCBnZnAsIGludCBwcmVmZXJyZWRfbmlkLFxuLS1cbm1tL3BhZ2VfYWxsb2MuYy01MTc2LVx0XHRpZiAoZGVmZXJyZWRfcGFnZXNfZW5hYmxlZCgpKSB7XG5tbS9wYWdlX2FsbG9jLmM6NTE3NzpcdFx0XHRpZiAoX2RlZmVycmVkX2dyb3dfem9uZSh6b25lLCAwKSlcbm1tL3BhZ2VfYWxsb2MuYy01MTc4LVx0XHRcdFx0Z290byByZXRyeV90aGlzX3pvbmU7XG4tLVxubW0vcGFnZV9hbGxvYy5jPTc4NjY9c3RydWN0IHBhZ2UgKmFsbG9jX2Zyb3plbl9wYWdlc19ub2xvY2tfbm9wcm9mKGdmcF90IGdmcF9mbGFncywgaW50IG5pZCwgdW5zaWduZWQgaW50IG9yZGVyKVxuLS1cbm1tL3BhZ2VfYWxsb2MuYy03OTE1LVxubW0vcGFnZV9hbGxvYy5jOjc5MTY6XHQvKiBCYWlsb3V0LCBzaW5jZSBfZGVmZXJyZWRfZ3Jvd196b25lKCkgbmVlZHMgdG8gdGFrZSBhIGxvY2sgKi9cbm1tL3BhZ2VfYWxsb2MuYy03OTE3LVx0aWYgKGRlZmVycmVkX3BhZ2VzX2VuYWJsZWQoKSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAyMzozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTUzCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMTQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRWFybHkgQm9vdCBTZXF1ZW5jZSoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIGNvZGUgYW5kIGl0IGxvb2tzIGxpa2UgYGRlZmVycmVkX2dyb3dfem9uZWAgaXMgY2FsbGVkIGJ5IGBnZXRfcGFnZV9mcm9tX2ZyZWVsaXN0YCBkdXJpbmcgdGhlIGluaXRpYWwgYm9vdCBwaGFzZSwgcmlnaHQ/IEFuZCB0aGlzIGNvbnRpbnVlcyB1bnRpbCBgZGVmZXJyZWRfcGFnZXNgIGdldHMgZGlzYWJsZWQsIHdoaWNoIGVmZmVjdGl2ZWx5IHNodXRzIGl0IGRvd24uIFRoZSBjb21tZW50cyBhcmUgcHJldHR5IGV4cGxpY2l0IG9uIHRoYXQgcG9pbnQuIFRoZSB3YXkgaXQmIzM5O3Mgd3JpdHRlbiAmIzM0O2RlZmVycmVkX2dyb3dfem9uZSgpIGlzIF9faW5pdCwgYnV0IGl0IGlzIGNhbGxlZCBmcm9tIGdldF9wYWdlX2Zyb21fZnJlZWxpc3QoKSBkdXJpbmcgZWFybHkgYm9vdCB1bnRpbCBkZWZlcnJlZF9wYWdlcyBwZXJtYW5lbnRseSBkaXNhYmxlcyBpdC4mIzM0OyBtZWFucyB0aGUgY3J1Y2lhbCBwb2ludCBpcyByZWFsbHkgb25seSB0aGF0IGVhcmx5IGJvb3Qgd2luZG93LgoKTm93LCBteSBpbml0aWFsIHRob3VnaHQgaXMsIGlmIFN5emthbGxlciBpcyBmdXp6aW5nIGEgcG9zdC1ib290IHN5c3RlbSwgdGhpcyBzcGVjaWZpYyBwYXJ0IG9mIHRoZSBjb2RlLCB0aGlzIGBkZWZlcnJlZF9ncm93X3pvbmVgIGZ1bmN0aW9uLCBpcyBlbnRpcmVseSB1bnJlYWNoYWJsZSBkdXJpbmcgdGhlIGZ1enppbmcgcHJvY2Vzcy4gVGhlcmVmb3JlLCB0aGUgcGF0Y2ggSSYjMzk7bSBleGFtaW5pbmcgc2hvdWxkIGJlIHNhZmUgaW4gdGhlIGNvbnRleHQgb2YgZnV6emluZywgYW5kIGl0IGlzIHBvdGVudGlhbGx5IGNoYW5naW5nIHVucmVhY2hhYmxlIGNvZGUuCgpCdXQgaG9sZCBvbiBhIHNlY29uZC4uLiBJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLiBUaGUgY3JpdGljYWwgYXNzdW1wdGlvbiBoZXJlIGlzIHRoYXQgYGRlZmVycmVkX3BhZ2VzYCAqaXMqIGFsd2F5cyBkaXNhYmxlZCwgYW5kIEkgY2FuJiMzOTt0IGxlYXZlIGl0IHRvIGNoYW5jZS4gSSBoYXZlIHRvIHZlcmlmeSB0aGF0IGBkZWZlcnJlZF9wYWdlc2AgaXMgYWx3YXlzIGRpc2FibGVkLiBJJiMzOTttIGdvaW5nIHRvIHRyYWNrIGRvd24gdGhlIHBvaW50cyBpbiB0aGUgY29kZSB3aGVyZSBgZGVmZXJyZWRfcGFnZXNgIGlzIHNldC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAyMzozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZWZlcnJlZF9wYWdlcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL3BhZ2VfYWxsb2MuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9wYWdlX2FsbG9jLmM9MzAxPWludCBwYWdlX2dyb3VwX2J5X21vYmlsaXR5X2Rpc2FibGVkIF9fcmVhZF9tb3N0bHk7XG4tLVxubW0vcGFnZV9hbGxvYy5jLTMwOC0gKi9cbm1tL3BhZ2VfYWxsb2MuYzozMDk6REVGSU5FX1NUQVRJQ19LRVlfVFJVRShkZWZlcnJlZF9wYWdlcyk7XG5tbS9wYWdlX2FsbG9jLmMtMzEwLVxuLS1cbm1tL3BhZ2VfYWxsb2MuYy0zMTItICogZGVmZXJyZWRfZ3Jvd196b25lKCkgaXMgX19pbml0LCBidXQgaXQgaXMgY2FsbGVkIGZyb21cbm1tL3BhZ2VfYWxsb2MuYzozMTM6ICogZ2V0X3BhZ2VfZnJvbV9mcmVlbGlzdCgpIGR1cmluZyBlYXJseSBib290IHVudGlsIGRlZmVycmVkX3BhZ2VzIHBlcm1hbmVudGx5XG5tbS9wYWdlX2FsbG9jLmMtMzE0LSAqIGRpc2FibGVzIHRoaXMgY2FsbC4gVGhpcyBpcyB3aHkgd2UgaGF2ZSByZWZkYXRhIHdyYXBwZXIgdG8gYXZvaWQgd2FybmluZyxcbi0tXG5tbS9wYWdlX2FsbG9jLmM9MTIwOD1zdGF0aWMgaW5saW5lIGJvb2wgc2hvdWxkX3NraXBfa2FzYW5fcG9pc29uKHN0cnVjdCBwYWdlICpwYWdlKVxuLS1cbm1tL3BhZ2VfYWxsb2MuYy0xMjEwLVx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0tBU0FOX0dFTkVSSUMpKVxubW0vcGFnZV9hbGxvYy5jOjEyMTE6XHRcdHJldHVybiBkZWZlcnJlZF9wYWdlc19lbmFibGVkKCk7XG5tbS9wYWdlX2FsbG9jLmMtMTIxMi1cbi0tXG5tbS9wYWdlX2FsbG9jLmM9Mzc5Mj1nZXRfcGFnZV9mcm9tX2ZyZWVsaXN0KGdmcF90IGdmcF9tYXNrLCB1bnNpZ25lZCBpbnQgb3JkZXIsIGludCBhbGxvY19mbGFncyxcbi0tXG5tbS9wYWdlX2FsbG9jLmMtMzkxMC1cdFx0XHQgKi9cbm1tL3BhZ2VfYWxsb2MuYzozOTExOlx0XHRcdGlmIChkZWZlcnJlZF9wYWdlc19lbmFibGVkKCkpIHtcbm1tL3BhZ2VfYWxsb2MuYy0zOTEyLVx0XHRcdFx0aWYgKF9kZWZlcnJlZF9ncm93X3pvbmUoem9uZSwgb3JkZXIpKVxuLS1cbm1tL3BhZ2VfYWxsb2MuYy0zOTUzLVx0XHRcdC8qIFRyeSBhZ2FpbiBpZiB6b25lIGhhcyBkZWZlcnJlZCBwYWdlcyAqL1xubW0vcGFnZV9hbGxvYy5jOjM5NTQ6XHRcdFx0aWYgKGRlZmVycmVkX3BhZ2VzX2VuYWJsZWQoKSkge1xubW0vcGFnZV9hbGxvYy5jLTM5NTUtXHRcdFx0XHRpZiAoX2RlZmVycmVkX2dyb3dfem9uZSh6b25lLCBvcmRlcikpXG4tLVxubW0vcGFnZV9hbGxvYy5jPTUwOTU9dW5zaWduZWQgbG9uZyBhbGxvY19wYWdlc19idWxrX25vcHJvZihnZnBfdCBnZnAsIGludCBwcmVmZXJyZWRfbmlkLFxuLS1cbm1tL3BhZ2VfYWxsb2MuYy01MTc1LVx0XHQvKiBUcnkgYWdhaW4gaWYgem9uZSBoYXMgZGVmZXJyZWQgcGFnZXMgKi9cbm1tL3BhZ2VfYWxsb2MuYzo1MTc2Olx0XHRpZiAoZGVmZXJyZWRfcGFnZXNfZW5hYmxlZCgpKSB7XG5tbS9wYWdlX2FsbG9jLmMtNTE3Ny1cdFx0XHRpZiAoX2RlZmVycmVkX2dyb3dfem9uZSh6b25lLCAwKSlcbi0tXG5tbS9wYWdlX2FsbG9jLmM9Nzg2Nj1zdHJ1Y3QgcGFnZSAqYWxsb2NfZnJvemVuX3BhZ2VzX25vbG9ja19ub3Byb2YoZ2ZwX3QgZ2ZwX2ZsYWdzLCBpbnQgbmlkLCB1bnNpZ25lZCBpbnQgb3JkZXIpXG4tLVxubW0vcGFnZV9hbGxvYy5jLTc5MTYtXHQvKiBCYWlsb3V0LCBzaW5jZSBfZGVmZXJyZWRfZ3Jvd196b25lKCkgbmVlZHMgdG8gdGFrZSBhIGxvY2sgKi9cbm1tL3BhZ2VfYWxsb2MuYzo3OTE3Olx0aWYgKGRlZmVycmVkX3BhZ2VzX2VuYWJsZWQoKSlcbm1tL3BhZ2VfYWxsb2MuYy03OTE4LVx0XHRyZXR1cm4gTlVMTDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAyMzozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MzIyCgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgdGFpbG9yZWQgYXMgaWYgSSYjMzk7bSB0aGlua2luZyBpdDoKCioqVHJhY2luZyBEb3duIHRoZSBgZGVmZXJyZWRfcGFnZXNgIERpc2FibGVtZW50KioKClJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIGFuZCAqd2h5KiBgZGVmZXJyZWRfcGFnZXNgIGlzIGRpc2FibGVkLiBUaGF0JiMzOTtzIHRoZSBjb3JlIGlzc3VlIGF0IGhhbmQuIEkgbmVlZCB0byBzeXN0ZW1hdGljYWxseSBwaW5wb2ludCB0aGUgbG9jYXRpb25zIGluIHRoZSBjb2RlYmFzZSB3aGVyZSB0aGlzIGNvbmZpZ3VyYXRpb24gc2V0dGluZyBpcyBiZWluZyBuZWdhdGVkLiBJcyBpdCBhIGRpcmVjdCBjb25maWd1cmF0aW9uIG92ZXJyaWRlPyBBIGNvbmRpdGlvbmFsIGNoZWNrIHRoYXQmIzM5O3MgZXZhbHVhdGluZyB0byBmYWxzZT8gUGVyaGFwcyBhIGRlZmF1bHQgdGhhdCYjMzk7cyBiZWluZyBzZXQgZWxzZXdoZXJlPyBJIG5lZWQgdG8gYW5hbHl6ZSB0aGUgY29kZSB3aXRoIGEgY3JpdGljYWwgZXllLCBmb2xsb3dpbmcgdGhlIGxpa2VseSBwYXRocyB0aGF0IHdvdWxkIGxlYWQgdG8gaXRzIGRlYWN0aXZhdGlvbi4gVGltZSB0byBkaWcgaW4gYW5kIHVucmF2ZWwgdGhpcyEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMjM6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RhdGljX2JyYW5jaF9kaXNhYmxlLipkZWZlcnJlZF9wYWdlcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9tbV9pbml0LmM9MjMxMT12b2lkIF9faW5pdCBwYWdlX2FsbG9jX2luaXRfbGF0ZSh2b2lkKVxuLS1cbm1tL21tX2luaXQuYy0yMzMwLVx0ICovXG5tbS9tbV9pbml0LmM6MjMzMTpcdHN0YXRpY19icmFuY2hfZGlzYWJsZShcdTAwMjZkZWZlcnJlZF9wYWdlcyk7XG5tbS9tbV9pbml0LmMtMjMzMi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMjM6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTYwNwoJCQkJCQkJb3V0cHV0OiA5NQoJCQkJCQkJdGhvdWdodHM6IDkzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGFzc2Vzc21lbnQgb2YgdGhpcyBjb2RlIHNuaXBwZXQsIGZpbHRlcmVkIHRocm91Z2ggbXkgZXhwZXJ0IGxlbnM6CgoqKkRlY29uc3RydWN0aW5nIHRoZSBQYWdlIEFsbG9jYXRpb24gSW5pdGlhbGl6YXRpb24qKgoKUmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZyb20gd2hhdCBJIHNlZSBpbiBgcGFnZV9hbGxvY19pbml0X2xhdGVgLCB0aGlzIGlzIHBhcnQgb2YgdGhlIGxhdGUtc3RhZ2UgYm9vdCBzZXF1ZW5jZS4gU3BlY2lmaWNhbGx5LCB0aGUgZnVuY3Rpb24gY2FsbHMgZm9yIHRoZSBkaXNhYmxpbmcgb2YgYGRlZmVycmVkX3BhZ2VzYC4gVGhhdCYjMzk7cyB0aGUga2V5IGhlcmUuIFRoZSBmdW5jdGlvbiBgc3RhdGljX2JyYW5jaF9kaXNhYmxlYCBoYXMgZGlzYWJsZWQgdGhlIGBkZWZlcnJlZF9wYWdlc2AgYnJhbmNoLiBOb3csIG15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHdoYXQgYXJlIHRoZSBpbXBsaWNhdGlvbnMgb24gZnV6emluZz8gCgpJZiBgZGVmZXJyZWRfcGFnZXNgIGlzIGRpc2FibGVkIGVhcmx5IGluIHRoZSBib290IHByb2Nlc3MsIHRoZW4gdGhhdCBkaXJlY3RseSBpbXBsaWVzIHRoYXQgY29kZSBwYXRocyBkZXBlbmRlbnQgb24gdGhhdCBicmFuY2gsIHN1Y2ggYXMgYGRlZmVycmVkX2dyb3dfem9uZWAsIGFyZSBjb21wbGV0ZWx5IHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiBJIGNhbiYjMzk7dCBnZW5lcmF0ZSBhIGZ1enogY2FzZSB0aGF0IHdpbGwgZXhlY3V0ZSB0aGUgYGRlZmVycmVkX2dyb3dfem9uZWAgZnVuY3Rpb24uIFRoaXMgd291bGQgaW5kaWNhdGUgdGhhdCB0ZXN0aW5nIGl0IGlzIG5vdCBwb3NzaWJsZS4KCkdpdmVuIHRoaXMgdW5kZXJzdGFuZGluZywgSSBjYW4gY29uZmlkZW50bHkgY29uY2x1ZGUgdGhhdCBmdXp6aW5nIGBkZWZlcnJlZF9ncm93X3pvbmVgIGlzIGEgd2FzdGUgb2YgdGltZSwgc2luY2UgdGhlIGJyYW5jaCBpdCBsaXZlcyBpbiBpcyBkaXNhYmxlZC4gSSYjMzk7bSBnb2luZyB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAuIE5vIHBvaW50IGluIGV4cGVuZGluZyByZXNvdXJjZXMgZnV6emluZyBzb21ldGhpbmcgdGhhdCYjMzk7cyBkZWZpbml0aXZlbHkgdW5yZWFjaGFibGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDIzOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYGRlZmVycmVkX2dyb3dfem9uZWAsIHdoaWNoIGlzIGFuIGBfX2luaXRgIGZ1bmN0aW9uIGNhbGxlZCBvbmx5IGR1cmluZyBlYXJseSBib290LiBJdCBpcyBkaXNhYmxlZCBieSBgcGFnZV9hbGxvY19pbml0X2xhdGVgIHZpYSB0aGUgYGRlZmVycmVkX3BhZ2VzYCBzdGF0aWMga2V5IGJlZm9yZSB1c2Vyc3BhY2Ugc3RhcnRzLiBUaGVyZWZvcmUsIHRoaXMgY29kZSBpcyB1bnJlYWNoYWJsZSBkdXJpbmcgcG9zdC1ib290IGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgZGVmZXJyZWRfZ3Jvd196b25lYCwgd2hpY2ggaXMgYW4gYF9faW5pdGAgZnVuY3Rpb24gY2FsbGVkIG9ubHkgZHVyaW5nIGVhcmx5IGJvb3QuIEl0IGlzIGRpc2FibGVkIGJ5IGBwYWdlX2FsbG9jX2luaXRfbGF0ZWAgdmlhIHRoZSBgZGVmZXJyZWRfcGFnZXNgIHN0YXRpYyBrZXkgYmVmb3JlIHVzZXJzcGFjZSBzdGFydHMuIFRoZXJlZm9yZSwgdGhpcyBjb2RlIGlzIHVucmVhY2hhYmxlIGR1cmluZyBwb3N0LWJvb3QgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wNVQyMzozNTowOC42NzM0NTM2MzJaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzM1NzM3MTMzNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYGRlZmVycmVkX2dyb3dfem9uZWAsIHdoaWNoIGlzIGFuIGBfX2luaXRgIGZ1bmN0aW9uIGNhbGxlZCBvbmx5IGR1cmluZyBlYXJseSBib290LiBJdCBpcyBkaXNhYmxlZCBieSBgcGFnZV9hbGxvY19pbml0X2xhdGVgIHZpYSB0aGUgYGRlZmVycmVkX3BhZ2VzYCBzdGF0aWMga2V5IGJlZm9yZSB1c2Vyc3BhY2Ugc3RhcnRzLiBUaGVyZWZvcmUsIHRoaXMgY29kZSBpcyB1bnJlYWNoYWJsZSBkdXJpbmcgcG9zdC1ib290IGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQyMzozNTowOC42NzM0NjI0OTJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMTU4NzI0NDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAzM2FlNmM0ZWNhNDExNjI2OWMxMmFlYTcxMDcyNDJmMDJmYmUxMDNlXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgQXVnIDUgMjM6MzU6MDYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbW0vbW1faW5pdC5jIGIvbW0vbW1faW5pdC5jXFxuaW5kZXggNDk4ZDYyYzRlY2UzOS4uOTExNzdiZTU4YTAwMCAxMDA2NDRcXG4tLS0gYS9tbS9tbV9pbml0LmNcXG4rKysgYi9tbS9tbV9pbml0LmNcXG5AQCAtMjIxNCwxMCArMjIxNCwxMyBAQCBib29sIF9faW5pdCBkZWZlcnJlZF9ncm93X3pvbmUoc3RydWN0IHpvbmUgKnpvbmUsIHVuc2lnbmVkIGludCBvcmRlcilcXG4gXFx0fVxcbiBcXG4gXFx0LypcXG4tXFx0ICogVGhlcmUgd2VyZSBubyBwYWdlcyB0byBpbml0aWFsaXplIGFuZCBmcmVlIHdoaWNoIG1lYW5zIHRoZSB6b25lJ3NcXG4tXFx0ICogbWVtb3J5IG1hcCBpcyBjb21wbGV0ZWx5IGluaXRpYWxpemVkLlxcbitcXHQgKiBUaGUgbG9vcCBvbmx5IHRlc3RzIHNwZm4gYmVmb3JlIGVudGVyaW5nIGFuIGl0ZXJhdGlvbiwgc28gb24gZXhpdCBpdFxcbitcXHQgKiBtYXkgcG9pbnQgdXAgdG8gYSBzZWN0aW9uIHBhc3QgdGhlIGVuZCBvZiB0aGUgem9uZS4gIFdoZW4gaXQgZG9lcyxcXG4rXFx0ICogdGhlIHJlc3Qgb2YgdGhlIHpvbmUgaGFzIGFscmVhZHkgYmVlbiBoYW5kZWQgdG9cXG4rXFx0ICogZGVmZXJyZWRfaW5pdF9tZW1tYXBfY2h1bmsoKSBhbmQgbm90aGluZyBpcyBsZWZ0IHRvIGluaXRpYWxpemUuXFxuIFxcdCAqL1xcbi1cXHRwZ2RhdC1cXHUwMDNlZmlyc3RfZGVmZXJyZWRfcGZuID0gbnJfcGFnZXMgPyBzcGZuIDogVUxPTkdfTUFYO1xcbitcXHRwZ2RhdC1cXHUwMDNlZmlyc3RfZGVmZXJyZWRfcGZuID1cXG4rXFx0XFx0c3BmbiBcXHUwMDNjIHpvbmVfZW5kX3Bmbih6b25lKSA/IHNwZm4gOiBVTE9OR19NQVg7XFxuIFxcbiBcXHRwZ2RhdF9yZXNpemVfdW5sb2NrKHBnZGF0LCBcXHUwMDI2ZmxhZ3MpO1xcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMjM6MzU6MDkuOTkwMzI1MDkxWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MjYwNDA0OTA1NjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBkZWZlcnJlZF9ncm93X3pvbmVgLCB3aGljaCBpcyBhbiBgX19pbml0YCBmdW5jdGlvbiBjYWxsZWQgb25seSBkdXJpbmcgZWFybHkgYm9vdC4gSXQgaXMgZGlzYWJsZWQgYnkgYHBhZ2VfYWxsb2NfaW5pdF9sYXRlYCB2aWEgdGhlIGBkZWZlcnJlZF9wYWdlc2Agc3RhdGljIGtleSBiZWZvcmUgdXNlcnNwYWNlIHN0YXJ0cy4gVGhlcmVmb3JlLCB0aGlzIGNvZGUgaXMgdW5yZWFjaGFibGUgZHVyaW5nIHBvc3QtYm9vdCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMzNhZTZjNGVjYTQxMTYyNjljMTJhZWE3MTA3MjQyZjAyZmJlMTAzZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDUgMjM6MzU6MDYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9tbS9tbV9pbml0LmMgYi9tbS9tbV9pbml0LmNcbmluZGV4IDQ5OGQ2MmM0ZWNlMzkuLjkxMTc3YmU1OGEwMDAgMTAwNjQ0XG4tLS0gYS9tbS9tbV9pbml0LmNcbisrKyBiL21tL21tX2luaXQuY1xuQEAgLTIyMTQsMTAgKzIyMTQsMTMgQEAgYm9vbCBfX2luaXQgZGVmZXJyZWRfZ3Jvd196b25lKHN0cnVjdCB6b25lICp6b25lLCB1bnNpZ25lZCBpbnQgb3JkZXIpXG4gXHR9XG4gXG4gXHQvKlxuLVx0ICogVGhlcmUgd2VyZSBubyBwYWdlcyB0byBpbml0aWFsaXplIGFuZCBmcmVlIHdoaWNoIG1lYW5zIHRoZSB6b25lJ3Ncbi1cdCAqIG1lbW9yeSBtYXAgaXMgY29tcGxldGVseSBpbml0aWFsaXplZC5cbitcdCAqIFRoZSBsb29wIG9ubHkgdGVzdHMgc3BmbiBiZWZvcmUgZW50ZXJpbmcgYW4gaXRlcmF0aW9uLCBzbyBvbiBleGl0IGl0XG4rXHQgKiBtYXkgcG9pbnQgdXAgdG8gYSBzZWN0aW9uIHBhc3QgdGhlIGVuZCBvZiB0aGUgem9uZS4gIFdoZW4gaXQgZG9lcyxcbitcdCAqIHRoZSByZXN0IG9mIHRoZSB6b25lIGhhcyBhbHJlYWR5IGJlZW4gaGFuZGVkIHRvXG4rXHQgKiBkZWZlcnJlZF9pbml0X21lbW1hcF9jaHVuaygpIGFuZCBub3RoaW5nIGlzIGxlZnQgdG8gaW5pdGlhbGl6ZS5cbiBcdCAqL1xuLVx0cGdkYXQtXHUwMDNlZmlyc3RfZGVmZXJyZWRfcGZuID0gbnJfcGFnZXMgPyBzcGZuIDogVUxPTkdfTUFYO1xuK1x0cGdkYXQtXHUwMDNlZmlyc3RfZGVmZXJyZWRfcGZuID1cbitcdFx0c3BmbiBcdTAwM2Mgem9uZV9lbmRfcGZuKHpvbmUpID8gc3BmbiA6IFVMT05HX01BWDtcbiBcbiBcdHBnZGF0X3Jlc2l6ZV91bmxvY2socGdkYXQsIFx1MDAyNmZsYWdzKTtcbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDIzOjM1OjA5Ljk5MDMyNzA4MVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyMjU3MTI5NTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgTWVtb3J5IEluaXRpYWxpemF0aW9uIFBhdGNoIGZvciBGdXp6aW5nIFJlbGV2YW5jZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgYG1tL21tX2luaXQuY2AsIHNwZWNpZmljYWxseSB0aGUgYGRlZmVycmVkX2dyb3dfem9uZWAgZnVuY3Rpb24uIFRoZSBjaGFuZ2UgaXRzZWxmIHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCDigJMgYSBzbWFsbCBjb25kaXRpb25hbCBhZGp1c3RtZW50IHRvIGBwZ2RhdC1cdTAwM2VmaXJzdF9kZWZlcnJlZF9wZm5gLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGFzc2VzcyBpZiB0aGlzIGlzIHJlbGV2YW50IGZvciBmdXp6aW5nLCB3aGljaCBtZWFucyBjb25zaWRlcmluZyBob3cgYW5kIHdoZW4gdGhpcyBjb2RlIGlzIGV4ZWN1dGVkLlxuXG5GaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQuIElzIGBkZWZlcnJlZF9ncm93X3pvbmVgIGV2ZW4gcmVhY2hhYmxlPyBBaCwgeWVzLCB0aGUgbm90ZXMgc2F5IGl0J3MgY2FsbGVkIGR1cmluZyBib290IG9yIG1lbW9yeSBob3RwbHVnLCBib3RoIHZhbGlkIGVudHJ5IHBvaW50cy4gQnV0IHRoZW4gSSBzZWUgdGhhdCBpdCdzIG1hcmtlZCBhcyBgX19pbml0YC4gV2FpdCwgdGhlIHBhdGNoIGFjdHVhbGx5IHNob3dzIGBib29sIF9faW5pdCBkZWZlcnJlZF9ncm93X3pvbmUoLi4uKWAgd2hpY2ggY29uZmlybXMgaXQncyBhbiBpbml0aWFsaXphdGlvbiBmdW5jdGlvbi5cblxuTXkgZXhwZXJ0IGludHVpdGlvbiBraWNrcyBpbi4gYF9faW5pdGAgZnVuY3Rpb25zIG9ubHkgcnVuIGR1cmluZyBlYXJseSBib290IGFuZCBhcmUgdGhlbiBkaXNjYXJkZWQuIFN5emthbGxlciwgbXkgcHJpbWFyeSBmdXp6aW5nIHRvb2wsIG9wZXJhdGVzICphZnRlciogYm9vdC4gU28sIGlmIHRoaXMgaXMgdHJ1bHkgYW4gYF9faW5pdGAgZnVuY3Rpb24sIGl04oCZcyBsaWtlbHkgbm90IGRpcmVjdGx5IGZ1enphYmxlIGluIHRoZSB0cmFkaXRpb25hbCBzZW5zZSwgYXMgU3l6a2FsbGVyIGZvY3VzZXMgb24gcG9zdC1ib290IGV4ZWN1dGlvbiBwYXRod2F5cyBsaWtlIHN5c2NhbGxzLCBuZXR3b3JrIHRyYWZmaWMsIGV0Yy5cblxuSSBuZWVkIHRvIGNvbmZpcm0gdGhlIGBfX2luaXRgIHN0YXR1cy4gVGhlIHBhdGNoIHN0cm9uZ2x5IGltcGxpZXMgaXQsIGJ1dCBJIGFsd2F5cyB3YW50IHRvIGJlIHN1cmUsIHRvIGF2b2lkIGEgbWlzLWNhdGVnb3JpemF0aW9uIG9mIGZ1enppbmcgcHJpb3JpdGllcy4gSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IHRoaXMgaXMgaW5kZWVkIGFuIGBfX2luaXRgIGZ1bmN0aW9uLiBJZiBpdCBpcywgdGhpcyBwYXRjaCBpcyBsaWtlbHkgbm90IGRpcmVjdGx5IHJlbGV2YW50IGZvciBteSBmdXp6aW5nIGVmZm9ydHMgaW4gdGhlIGN1cnJlbnQgdGVzdGluZyBwYXJhZGlnbS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE1NywiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2MSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDIzOjM1OjE1LjIxNjA0MjQyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk1ODQxODM0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlZmVycmVkX2dyb3dfem9uZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9tbV9pbml0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vbW1faW5pdC5jPTIxMDg9c3RhdGljIGludCBfX2luaXQgZGVmZXJyZWRfaW5pdF9tZW1tYXAodm9pZCAqZGF0YSlcXG4tLVxcbm1tL21tX2luaXQuYy0yMTc4LSAqL1xcbm1tL21tX2luaXQuYzoyMTc5OmJvb2wgX19pbml0IGRlZmVycmVkX2dyb3dfem9uZShzdHJ1Y3Qgem9uZSAqem9uZSwgdW5zaWduZWQgaW50IG9yZGVyKVxcbm1tL21tX2luaXQuYy0yMTgwLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMjM6MzU6MTUuMzExODg4ODYzWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg4NzE3OTgyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBgZGVmZXJyZWRfZ3Jvd196b25lYCoqXG5cbk9rYXksIHNvIEkgc2VlIHRoYXQgYGRlZmVycmVkX2dyb3dfem9uZWAgaXMgZGVmaW5lZCB3aXRoaW4gYF9faW5pdGAuIFJpZ2h0LCB0aGF0IG1lYW5zIGl0J3Mgb25seSBleGVjdXRlZCBkdXJpbmcgdGhlIGluaXRpYWwgYm9vdCBwcm9jZXNzLiBOb3csIHRoZSBrZXkgaXMgdW5kZXJzdGFuZGluZyBob3cgU3l6a2FsbGVyIG9wZXJhdGVzLiBJdCdzIGRlc2lnbmVkIGZvciBwb3N0LWJvb3QgZnV6emluZywgcmlnaHQ/IFVubGVzcyB0aGVyZSdzIHNvbWUgdmVyeSBzcGVjaWZpYyBib290IHBhcmFtZXRlciBpbnRlcmFjdGlvbiwgaXQgdHlwaWNhbGx5IGRvZXNuJ3QgdGFyZ2V0IGNvZGUgdGhhdCdzIHNvbGVseSBwYXJ0IG9mIHRoZSBib290IHNlcXVlbmNlLlxuXG5IbW0sIGNhbiBJIHRoaW5rIG9mICphbnkqIHNjZW5hcmlvIHdoZXJlIGBkZWZlcnJlZF9ncm93X3pvbmVgIHdvdWxkIGJlIGludm9rZWQgYWZ0ZXIgdGhlIGluaXRpYWwgYm9vdD8gTm8sIGBfX2luaXRgIGZ1bmN0aW9ucyBnZXQgdGhlaXIgbWVtb3J5IGZyZWVkIHVwIGFmdGVyIGJvb3QsIHNvIHRoZXJlJ3Mgbm8gd2F5IGl0J2QgYmUgY2FsbGFibGUgZHVyaW5nIG5vcm1hbCBvcGVyYXRpb24uXG5cblNvLCByZWFsaXN0aWNhbGx5LCB0aGlzIGZ1bmN0aW9uIGlzIG91dHNpZGUgdGhlIGZ1enplcidzIHJlYWNoLiBKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSdtIGdvaW5nIHRvIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoZSBjb2RlYmFzZS4gSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgZGVmZXJyZWRfZ3Jvd196b25lYCBpc24ndCBjYWxsZWQgZnJvbSBhbnl3aGVyZSBlbHNlLCBqdXN0IGluIGNhc2UgdGhlcmUncyBzb21lIHVuZXhwZWN0ZWQgY29udHJvbCBmbG93IHBhdGguXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4OTIsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMjM6MzU6MTkuMTk5MDcwMzQ0WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzODY4OTkzODUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGVmZXJyZWRfZ3Jvd196b25lXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9pbnRlcm5hbC5oPTEzMjM9c3RhdGljIGlubGluZSBib29sIGRlZmVycmVkX3BhZ2VzX2VuYWJsZWQodm9pZClcXG4tLVxcbm1tL2ludGVybmFsLmgtMTMyNy1cXG5tbS9pbnRlcm5hbC5oOjEzMjg6Ym9vbCBfX2luaXQgZGVmZXJyZWRfZ3Jvd196b25lKHN0cnVjdCB6b25lICp6b25lLCB1bnNpZ25lZCBpbnQgb3JkZXIpO1xcbm1tL2ludGVybmFsLmgtMTMyOS0jZWxzZVxcbi0tXFxubW0vbW1faW5pdC5jPTIxMDg9c3RhdGljIGludCBfX2luaXQgZGVmZXJyZWRfaW5pdF9tZW1tYXAodm9pZCAqZGF0YSlcXG4tLVxcbm1tL21tX2luaXQuYy0yMTc4LSAqL1xcbm1tL21tX2luaXQuYzoyMTc5OmJvb2wgX19pbml0IGRlZmVycmVkX2dyb3dfem9uZShzdHJ1Y3Qgem9uZSAqem9uZSwgdW5zaWduZWQgaW50IG9yZGVyKVxcbm1tL21tX2luaXQuYy0yMTgwLXtcXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYz0zMDk9REVGSU5FX1NUQVRJQ19LRVlfVFJVRShkZWZlcnJlZF9wYWdlcyk7XFxuLS1cXG5tbS9wYWdlX2FsbG9jLmMtMzExLS8qXFxubW0vcGFnZV9hbGxvYy5jOjMxMjogKiBkZWZlcnJlZF9ncm93X3pvbmUoKSBpcyBfX2luaXQsIGJ1dCBpdCBpcyBjYWxsZWQgZnJvbVxcbm1tL3BhZ2VfYWxsb2MuYy0zMTMtICogZ2V0X3BhZ2VfZnJvbV9mcmVlbGlzdCgpIGR1cmluZyBlYXJseSBib290IHVudGlsIGRlZmVycmVkX3BhZ2VzIHBlcm1hbmVudGx5XFxuLS1cXG5tbS9wYWdlX2FsbG9jLmM9MzE3PXN0YXRpYyBib29sIF9fcmVmXFxubW0vcGFnZV9hbGxvYy5jOjMxODpfZGVmZXJyZWRfZ3Jvd196b25lKHN0cnVjdCB6b25lICp6b25lLCB1bnNpZ25lZCBpbnQgb3JkZXIpXFxubW0vcGFnZV9hbGxvYy5jLTMxOS17XFxubW0vcGFnZV9hbGxvYy5jOjMyMDpcXHRyZXR1cm4gZGVmZXJyZWRfZ3Jvd196b25lKHpvbmUsIG9yZGVyKTtcXG5tbS9wYWdlX2FsbG9jLmMtMzIxLX1cXG5tbS9wYWdlX2FsbG9jLmMtMzIyLSNlbHNlXFxubW0vcGFnZV9hbGxvYy5jOjMyMzpzdGF0aWMgaW5saW5lIGJvb2wgX2RlZmVycmVkX2dyb3dfem9uZShzdHJ1Y3Qgem9uZSAqem9uZSwgdW5zaWduZWQgaW50IG9yZGVyKVxcbm1tL3BhZ2VfYWxsb2MuYy0zMjQte1xcbi0tXFxubW0vcGFnZV9hbGxvYy5jPTM3OTI9Z2V0X3BhZ2VfZnJvbV9mcmVlbGlzdChnZnBfdCBnZnBfbWFzaywgdW5zaWduZWQgaW50IG9yZGVyLCBpbnQgYWxsb2NfZmxhZ3MsXFxuLS1cXG5tbS9wYWdlX2FsbG9jLmMtMzkxMS1cXHRcXHRcXHRpZiAoZGVmZXJyZWRfcGFnZXNfZW5hYmxlZCgpKSB7XFxubW0vcGFnZV9hbGxvYy5jOjM5MTI6XFx0XFx0XFx0XFx0aWYgKF9kZWZlcnJlZF9ncm93X3pvbmUoem9uZSwgb3JkZXIpKVxcbm1tL3BhZ2VfYWxsb2MuYy0zOTEzLVxcdFxcdFxcdFxcdFxcdGdvdG8gdHJ5X3RoaXNfem9uZTtcXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYy0zOTU0LVxcdFxcdFxcdGlmIChkZWZlcnJlZF9wYWdlc19lbmFibGVkKCkpIHtcXG5tbS9wYWdlX2FsbG9jLmM6Mzk1NTpcXHRcXHRcXHRcXHRpZiAoX2RlZmVycmVkX2dyb3dfem9uZSh6b25lLCBvcmRlcikpXFxubW0vcGFnZV9hbGxvYy5jLTM5NTYtXFx0XFx0XFx0XFx0XFx0Z290byB0cnlfdGhpc196b25lO1xcbi0tXFxubW0vcGFnZV9hbGxvYy5jPTUwOTU9dW5zaWduZWQgbG9uZyBhbGxvY19wYWdlc19idWxrX25vcHJvZihnZnBfdCBnZnAsIGludCBwcmVmZXJyZWRfbmlkLFxcbi0tXFxubW0vcGFnZV9hbGxvYy5jLTUxNzYtXFx0XFx0aWYgKGRlZmVycmVkX3BhZ2VzX2VuYWJsZWQoKSkge1xcbm1tL3BhZ2VfYWxsb2MuYzo1MTc3OlxcdFxcdFxcdGlmIChfZGVmZXJyZWRfZ3Jvd196b25lKHpvbmUsIDApKVxcbm1tL3BhZ2VfYWxsb2MuYy01MTc4LVxcdFxcdFxcdFxcdGdvdG8gcmV0cnlfdGhpc196b25lO1xcbi0tXFxubW0vcGFnZV9hbGxvYy5jPTc4NjY9c3RydWN0IHBhZ2UgKmFsbG9jX2Zyb3plbl9wYWdlc19ub2xvY2tfbm9wcm9mKGdmcF90IGdmcF9mbGFncywgaW50IG5pZCwgdW5zaWduZWQgaW50IG9yZGVyKVxcbi0tXFxubW0vcGFnZV9hbGxvYy5jLTc5MTUtXFxubW0vcGFnZV9hbGxvYy5jOjc5MTY6XFx0LyogQmFpbG91dCwgc2luY2UgX2RlZmVycmVkX2dyb3dfem9uZSgpIG5lZWRzIHRvIHRha2UgYSBsb2NrICovXFxubW0vcGFnZV9hbGxvYy5jLTc5MTctXFx0aWYgKGRlZmVycmVkX3BhZ2VzX2VuYWJsZWQoKSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMjM6MzU6MjEuNTg1OTc1NDQ5WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDM4MjQ2ODIyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEVhcmx5IEJvb3QgU2VxdWVuY2UqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgY29kZSBhbmQgaXQgbG9va3MgbGlrZSBgZGVmZXJyZWRfZ3Jvd196b25lYCBpcyBjYWxsZWQgYnkgYGdldF9wYWdlX2Zyb21fZnJlZWxpc3RgIGR1cmluZyB0aGUgaW5pdGlhbCBib290IHBoYXNlLCByaWdodD8gQW5kIHRoaXMgY29udGludWVzIHVudGlsIGBkZWZlcnJlZF9wYWdlc2AgZ2V0cyBkaXNhYmxlZCwgd2hpY2ggZWZmZWN0aXZlbHkgc2h1dHMgaXQgZG93bi4gVGhlIGNvbW1lbnRzIGFyZSBwcmV0dHkgZXhwbGljaXQgb24gdGhhdCBwb2ludC4gVGhlIHdheSBpdCdzIHdyaXR0ZW4gXCJkZWZlcnJlZF9ncm93X3pvbmUoKSBpcyBfX2luaXQsIGJ1dCBpdCBpcyBjYWxsZWQgZnJvbSBnZXRfcGFnZV9mcm9tX2ZyZWVsaXN0KCkgZHVyaW5nIGVhcmx5IGJvb3QgdW50aWwgZGVmZXJyZWRfcGFnZXMgcGVybWFuZW50bHkgZGlzYWJsZXMgaXQuXCIgbWVhbnMgdGhlIGNydWNpYWwgcG9pbnQgaXMgcmVhbGx5IG9ubHkgdGhhdCBlYXJseSBib290IHdpbmRvdy5cblxuTm93LCBteSBpbml0aWFsIHRob3VnaHQgaXMsIGlmIFN5emthbGxlciBpcyBmdXp6aW5nIGEgcG9zdC1ib290IHN5c3RlbSwgdGhpcyBzcGVjaWZpYyBwYXJ0IG9mIHRoZSBjb2RlLCB0aGlzIGBkZWZlcnJlZF9ncm93X3pvbmVgIGZ1bmN0aW9uLCBpcyBlbnRpcmVseSB1bnJlYWNoYWJsZSBkdXJpbmcgdGhlIGZ1enppbmcgcHJvY2Vzcy4gVGhlcmVmb3JlLCB0aGUgcGF0Y2ggSSdtIGV4YW1pbmluZyBzaG91bGQgYmUgc2FmZSBpbiB0aGUgY29udGV4dCBvZiBmdXp6aW5nLCBhbmQgaXQgaXMgcG90ZW50aWFsbHkgY2hhbmdpbmcgdW5yZWFjaGFibGUgY29kZS5cblxuQnV0IGhvbGQgb24gYSBzZWNvbmQuLi4gSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbi4gVGhlIGNyaXRpY2FsIGFzc3VtcHRpb24gaGVyZSBpcyB0aGF0IGBkZWZlcnJlZF9wYWdlc2AgKmlzKiBhbHdheXMgZGlzYWJsZWQsIGFuZCBJIGNhbid0IGxlYXZlIGl0IHRvIGNoYW5jZS4gSSBoYXZlIHRvIHZlcmlmeSB0aGF0IGBkZWZlcnJlZF9wYWdlc2AgaXMgYWx3YXlzIGRpc2FibGVkLiBJJ20gZ29pbmcgdG8gdHJhY2sgZG93biB0aGUgcG9pbnRzIGluIHRoZSBjb2RlIHdoZXJlIGBkZWZlcnJlZF9wYWdlc2AgaXMgc2V0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTUzLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDIzOjM1OjI1Ljk2ODQ0Njc1NVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NjUzOTgyNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZWZlcnJlZF9wYWdlc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9wYWdlX2FsbG9jLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vcGFnZV9hbGxvYy5jPTMwMT1pbnQgcGFnZV9ncm91cF9ieV9tb2JpbGl0eV9kaXNhYmxlZCBfX3JlYWRfbW9zdGx5O1xcbi0tXFxubW0vcGFnZV9hbGxvYy5jLTMwOC0gKi9cXG5tbS9wYWdlX2FsbG9jLmM6MzA5OkRFRklORV9TVEFUSUNfS0VZX1RSVUUoZGVmZXJyZWRfcGFnZXMpO1xcbm1tL3BhZ2VfYWxsb2MuYy0zMTAtXFxuLS1cXG5tbS9wYWdlX2FsbG9jLmMtMzEyLSAqIGRlZmVycmVkX2dyb3dfem9uZSgpIGlzIF9faW5pdCwgYnV0IGl0IGlzIGNhbGxlZCBmcm9tXFxubW0vcGFnZV9hbGxvYy5jOjMxMzogKiBnZXRfcGFnZV9mcm9tX2ZyZWVsaXN0KCkgZHVyaW5nIGVhcmx5IGJvb3QgdW50aWwgZGVmZXJyZWRfcGFnZXMgcGVybWFuZW50bHlcXG5tbS9wYWdlX2FsbG9jLmMtMzE0LSAqIGRpc2FibGVzIHRoaXMgY2FsbC4gVGhpcyBpcyB3aHkgd2UgaGF2ZSByZWZkYXRhIHdyYXBwZXIgdG8gYXZvaWQgd2FybmluZyxcXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYz0xMjA4PXN0YXRpYyBpbmxpbmUgYm9vbCBzaG91bGRfc2tpcF9rYXNhbl9wb2lzb24oc3RydWN0IHBhZ2UgKnBhZ2UpXFxuLS1cXG5tbS9wYWdlX2FsbG9jLmMtMTIxMC1cXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfS0FTQU5fR0VORVJJQykpXFxubW0vcGFnZV9hbGxvYy5jOjEyMTE6XFx0XFx0cmV0dXJuIGRlZmVycmVkX3BhZ2VzX2VuYWJsZWQoKTtcXG5tbS9wYWdlX2FsbG9jLmMtMTIxMi1cXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYz0zNzkyPWdldF9wYWdlX2Zyb21fZnJlZWxpc3QoZ2ZwX3QgZ2ZwX21hc2ssIHVuc2lnbmVkIGludCBvcmRlciwgaW50IGFsbG9jX2ZsYWdzLFxcbi0tXFxubW0vcGFnZV9hbGxvYy5jLTM5MTAtXFx0XFx0XFx0ICovXFxubW0vcGFnZV9hbGxvYy5jOjM5MTE6XFx0XFx0XFx0aWYgKGRlZmVycmVkX3BhZ2VzX2VuYWJsZWQoKSkge1xcbm1tL3BhZ2VfYWxsb2MuYy0zOTEyLVxcdFxcdFxcdFxcdGlmIChfZGVmZXJyZWRfZ3Jvd196b25lKHpvbmUsIG9yZGVyKSlcXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYy0zOTUzLVxcdFxcdFxcdC8qIFRyeSBhZ2FpbiBpZiB6b25lIGhhcyBkZWZlcnJlZCBwYWdlcyAqL1xcbm1tL3BhZ2VfYWxsb2MuYzozOTU0OlxcdFxcdFxcdGlmIChkZWZlcnJlZF9wYWdlc19lbmFibGVkKCkpIHtcXG5tbS9wYWdlX2FsbG9jLmMtMzk1NS1cXHRcXHRcXHRcXHRpZiAoX2RlZmVycmVkX2dyb3dfem9uZSh6b25lLCBvcmRlcikpXFxuLS1cXG5tbS9wYWdlX2FsbG9jLmM9NTA5NT11bnNpZ25lZCBsb25nIGFsbG9jX3BhZ2VzX2J1bGtfbm9wcm9mKGdmcF90IGdmcCwgaW50IHByZWZlcnJlZF9uaWQsXFxuLS1cXG5tbS9wYWdlX2FsbG9jLmMtNTE3NS1cXHRcXHQvKiBUcnkgYWdhaW4gaWYgem9uZSBoYXMgZGVmZXJyZWQgcGFnZXMgKi9cXG5tbS9wYWdlX2FsbG9jLmM6NTE3NjpcXHRcXHRpZiAoZGVmZXJyZWRfcGFnZXNfZW5hYmxlZCgpKSB7XFxubW0vcGFnZV9hbGxvYy5jLTUxNzctXFx0XFx0XFx0aWYgKF9kZWZlcnJlZF9ncm93X3pvbmUoem9uZSwgMCkpXFxuLS1cXG5tbS9wYWdlX2FsbG9jLmM9Nzg2Nj1zdHJ1Y3QgcGFnZSAqYWxsb2NfZnJvemVuX3BhZ2VzX25vbG9ja19ub3Byb2YoZ2ZwX3QgZ2ZwX2ZsYWdzLCBpbnQgbmlkLCB1bnNpZ25lZCBpbnQgb3JkZXIpXFxuLS1cXG5tbS9wYWdlX2FsbG9jLmMtNzkxNi1cXHQvKiBCYWlsb3V0LCBzaW5jZSBfZGVmZXJyZWRfZ3Jvd196b25lKCkgbmVlZHMgdG8gdGFrZSBhIGxvY2sgKi9cXG5tbS9wYWdlX2FsbG9jLmM6NzkxNzpcXHRpZiAoZGVmZXJyZWRfcGFnZXNfZW5hYmxlZCgpKVxcbm1tL3BhZ2VfYWxsb2MuYy03OTE4LVxcdFxcdHJldHVybiBOVUxMO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQyMzozNToyNi4wMzQ5OTU1MDFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTA2NjY2MDY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgdGFpbG9yZWQgYXMgaWYgSSdtIHRoaW5raW5nIGl0OlxuXG4qKlRyYWNpbmcgRG93biB0aGUgYGRlZmVycmVkX3BhZ2VzYCBEaXNhYmxlbWVudCoqXG5cblJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgYW5kICp3aHkqIGBkZWZlcnJlZF9wYWdlc2AgaXMgZGlzYWJsZWQuIFRoYXQncyB0aGUgY29yZSBpc3N1ZSBhdCBoYW5kLiBJIG5lZWQgdG8gc3lzdGVtYXRpY2FsbHkgcGlucG9pbnQgdGhlIGxvY2F0aW9ucyBpbiB0aGUgY29kZWJhc2Ugd2hlcmUgdGhpcyBjb25maWd1cmF0aW9uIHNldHRpbmcgaXMgYmVpbmcgbmVnYXRlZC4gSXMgaXQgYSBkaXJlY3QgY29uZmlndXJhdGlvbiBvdmVycmlkZT8gQSBjb25kaXRpb25hbCBjaGVjayB0aGF0J3MgZXZhbHVhdGluZyB0byBmYWxzZT8gUGVyaGFwcyBhIGRlZmF1bHQgdGhhdCdzIGJlaW5nIHNldCBlbHNld2hlcmU/IEkgbmVlZCB0byBhbmFseXplIHRoZSBjb2RlIHdpdGggYSBjcml0aWNhbCBleWUsIGZvbGxvd2luZyB0aGUgbGlrZWx5IHBhdGhzIHRoYXQgd291bGQgbGVhZCB0byBpdHMgZGVhY3RpdmF0aW9uLiBUaW1lIHRvIGRpZyBpbiBhbmQgdW5yYXZlbCB0aGlzIVxuXG5cbiIsIklucHV0VG9rZW5zIjo1MzIyLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMjM6MzU6MjguOTQxNjY1NDZaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3NjE2NjI5MTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RhdGljX2JyYW5jaF9kaXNhYmxlLipkZWZlcnJlZF9wYWdlc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vbW1faW5pdC5jPTIzMTE9dm9pZCBfX2luaXQgcGFnZV9hbGxvY19pbml0X2xhdGUodm9pZClcXG4tLVxcbm1tL21tX2luaXQuYy0yMzMwLVxcdCAqL1xcbm1tL21tX2luaXQuYzoyMzMxOlxcdHN0YXRpY19icmFuY2hfZGlzYWJsZShcXHUwMDI2ZGVmZXJyZWRfcGFnZXMpO1xcbm1tL21tX2luaXQuYy0yMzMyLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQyMzozNTozMS43MDMzMzYyNDlaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDMyNzQzODcwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGFzc2Vzc21lbnQgb2YgdGhpcyBjb2RlIHNuaXBwZXQsIGZpbHRlcmVkIHRocm91Z2ggbXkgZXhwZXJ0IGxlbnM6XG5cbioqRGVjb25zdHJ1Y3RpbmcgdGhlIFBhZ2UgQWxsb2NhdGlvbiBJbml0aWFsaXphdGlvbioqXG5cblJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZyb20gd2hhdCBJIHNlZSBpbiBgcGFnZV9hbGxvY19pbml0X2xhdGVgLCB0aGlzIGlzIHBhcnQgb2YgdGhlIGxhdGUtc3RhZ2UgYm9vdCBzZXF1ZW5jZS4gU3BlY2lmaWNhbGx5LCB0aGUgZnVuY3Rpb24gY2FsbHMgZm9yIHRoZSBkaXNhYmxpbmcgb2YgYGRlZmVycmVkX3BhZ2VzYC4gVGhhdCdzIHRoZSBrZXkgaGVyZS4gVGhlIGZ1bmN0aW9uIGBzdGF0aWNfYnJhbmNoX2Rpc2FibGVgIGhhcyBkaXNhYmxlZCB0aGUgYGRlZmVycmVkX3BhZ2VzYCBicmFuY2guIE5vdywgbXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgd2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBvbiBmdXp6aW5nPyBcblxuSWYgYGRlZmVycmVkX3BhZ2VzYCBpcyBkaXNhYmxlZCBlYXJseSBpbiB0aGUgYm9vdCBwcm9jZXNzLCB0aGVuIHRoYXQgZGlyZWN0bHkgaW1wbGllcyB0aGF0IGNvZGUgcGF0aHMgZGVwZW5kZW50IG9uIHRoYXQgYnJhbmNoLCBzdWNoIGFzIGBkZWZlcnJlZF9ncm93X3pvbmVgLCBhcmUgY29tcGxldGVseSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4gSSBjYW4ndCBnZW5lcmF0ZSBhIGZ1enogY2FzZSB0aGF0IHdpbGwgZXhlY3V0ZSB0aGUgYGRlZmVycmVkX2dyb3dfem9uZWAgZnVuY3Rpb24uIFRoaXMgd291bGQgaW5kaWNhdGUgdGhhdCB0ZXN0aW5nIGl0IGlzIG5vdCBwb3NzaWJsZS5cblxuR2l2ZW4gdGhpcyB1bmRlcnN0YW5kaW5nLCBJIGNhbiBjb25maWRlbnRseSBjb25jbHVkZSB0aGF0IGZ1enppbmcgYGRlZmVycmVkX2dyb3dfem9uZWAgaXMgYSB3YXN0ZSBvZiB0aW1lLCBzaW5jZSB0aGUgYnJhbmNoIGl0IGxpdmVzIGluIGlzIGRpc2FibGVkLiBJJ20gZ29pbmcgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBObyBwb2ludCBpbiBleHBlbmRpbmcgcmVzb3VyY2VzIGZ1enppbmcgc29tZXRoaW5nIHRoYXQncyBkZWZpbml0aXZlbHkgdW5yZWFjaGFibGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU2MDcsIk91dHB1dFRva2VucyI6OTUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQyMzozNTozNi4wMzA3Nzc4NzlaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNTc1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgZGVmZXJyZWRfZ3Jvd196b25lYCwgd2hpY2ggaXMgYW4gYF9faW5pdGAgZnVuY3Rpb24gY2FsbGVkIG9ubHkgZHVyaW5nIGVhcmx5IGJvb3QuIEl0IGlzIGRpc2FibGVkIGJ5IGBwYWdlX2FsbG9jX2luaXRfbGF0ZWAgdmlhIHRoZSBgZGVmZXJyZWRfcGFnZXNgIHN0YXRpYyBrZXkgYmVmb3JlIHVzZXJzcGFjZSBzdGFydHMuIFRoZXJlZm9yZSwgdGhpcyBjb2RlIGlzIHVucmVhY2hhYmxlIGR1cmluZyBwb3N0LWJvb3QgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBkZWZlcnJlZF9ncm93X3pvbmVgLCB3aGljaCBpcyBhbiBgX19pbml0YCBmdW5jdGlvbiBjYWxsZWQgb25seSBkdXJpbmcgZWFybHkgYm9vdC4gSXQgaXMgZGlzYWJsZWQgYnkgYHBhZ2VfYWxsb2NfaW5pdF9sYXRlYCB2aWEgdGhlIGBkZWZlcnJlZF9wYWdlc2Agc3RhdGljIGtleSBiZWZvcmUgdXNlcnNwYWNlIHN0YXJ0cy4gVGhlcmVmb3JlLCB0aGlzIGNvZGUgaXMgdW5yZWFjaGFibGUgZHVyaW5nIHBvc3QtYm9vdCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflownsx2v[1] Phase: Running StartedAt: 2026-08-05 23:35:47 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflownsx2v[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-05 23:35:47 +0000 UTC FinishedAt: 2026-08-05 23:35:52 +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,}