Name: series-workflowv9tkd Phase: Failed StartedAt: 2026-09-02 19:42:32 +0000 UTC FinishedAt: 2026-09-02 20:24:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv9tkd[0] Phase: Succeeded StartedAt: 2026-09-02 19:42:32 +0000 UTC FinishedAt: 2026-09-02 20:24:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv9tkd[0].run-triage Phase: Succeeded StartedAt: 2026-09-02 19:42:32 +0000 UTC FinishedAt: 2026-09-02 20:24:46 +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+CgkJCTx0ZD4yMDI2LzA5LzAyIDIwOjI0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIHRlc3QgY2FzZXMgdG8gQlBGIHNlbGZ0ZXN0cyAodG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX25ldGZpbHRlcl9jdHguYykgYW5kIGRvZXMgbm90IG1vZGlmeSBhbnkgY29yZSBrZXJuZWwgc291cmNlIGNvZGUgb3IgZHJpdmVycy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMjA6MjQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBlNzU0MjMzZjA2NzUxMmU0MjI2YWExMjFlNDc0ZjU3MjhhMDM2MjZkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBTZXAgMiAyMDoyNDoxMyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfbmV0ZmlsdGVyX2N0eC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX25ldGZpbHRlcl9jdHguY1xuaW5kZXggZTJjYmM1YmRhNjVlYS4uN2UzMDQzMzE0MDlmNSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9uZXRmaWx0ZXJfY3R4LmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9uZXRmaWx0ZXJfY3R4LmNcbkBAIC0xMTMsNCAmIzQzOzExMyw4MiBAQCBpbnQgd2l0aF92YWxpZF9jdHhfYWNjZXNzX3Rlc3Q2KHN0cnVjdCBicGZfbmZfY3R4ICpjdHgpXG4gXHRyZXR1cm4gdGgtXHUwMDNlZGVzdCA9PSBicGZfaHRvbnMoMjIpID8gTkZfQUNDRVBUIDogTkZfRFJPUDtcbiB9XG4gXG4mIzQzO1NFQyhcJiMzNDtuZXRmaWx0ZXJcJiMzNDspXG4mIzQzO19fZGVzY3JpcHRpb24oXCYjMzQ7bmV0ZmlsdGVyIHRlc3QgcHJvZyB3aXRoIHNrYiB3cml0ZSBhY2Nlc3NcJiMzNDspXG4mIzQzO19fZmFpbHVyZSBfX21zZyhcJiMzNDtvbmx5IHJlYWQgaXMgc3VwcG9ydGVkXCYjMzQ7KVxuJiM0MztpbnQgc2tiX2xlbl93cml0ZShzdHJ1Y3QgYnBmX25mX2N0eCAqY3R4KVxuJiM0Mzt7XG4mIzQzO1x0Y3R4LVx1MDAzZXNrYi1cdTAwM2VsZW4gPSAxO1xuJiM0MztcdHJldHVybiAxO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztTRUMoXCYjMzQ7bmV0ZmlsdGVyXCYjMzQ7KVxuJiM0MztfX2Rlc2NyaXB0aW9uKFwmIzM0O25ldGZpbHRlciB0ZXN0IHByb2cgd2l0aCBza2IgZGF0YSB3cml0ZSBhY2Nlc3NcJiMzNDspXG4mIzQzO19fZmFpbHVyZSBfX21zZyhcJiMzNDtjYW5ub3Qgd3JpdGUgaW50byByZG9ubHlfdW50cnVzdGVkX21lbVwmIzM0OylcbiYjNDM7aW50IHdpdGhfaW52YWxpZF9kYXRhX3dyaXRlX3Rlc3Q0KHN0cnVjdCBicGZfbmZfY3R4ICpjdHgpXG4mIzQzO3tcbiYjNDM7XHRjdHgtXHUwMDNlc2tiLVx1MDAzZWRhdGFbMF0gPSAwO1xuJiM0MztcdHJldHVybiAxO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztTRUMoXCYjMzQ7bmV0ZmlsdGVyXCYjMzQ7KVxuJiM0MztfX2Rlc2NyaXB0aW9uKFwmIzM0O25ldGZpbHRlciB0ZXN0IHByb2cgd2l0aCBicGZfZHlucHRyX3dyaXRlXCYjMzQ7KVxuJiM0MztfX3N1Y2Nlc3MgX19mYWlsdXJlX3VucHJpdlxuJiM0MztfX3JldHZhbCgwKVxuJiM0MztpbnQgd2l0aF9keW5wdHJfd3JpdGUoc3RydWN0IGJwZl9uZl9jdHggKmN0eClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBfX3NrX2J1ZmYgKnNrYiA9IChzdHJ1Y3QgX19za19idWZmICopY3R4LVx1MDAzZXNrYjtcbiYjNDM7XHRzdHJ1Y3QgYnBmX2R5bnB0ciBwdHI7XG4mIzQzO1x0dTggYnVmZmVyWzFdID0ge307XG4mIzQzO1xuJiM0MztcdGlmIChicGZfZHlucHRyX2Zyb21fc2tiKHNrYiwgMCwgXHUwMDI2cHRyKSlcbiYjNDM7XHRcdHJldHVybiAxO1xuJiM0MztcbiYjNDM7XHRpZiAoYnBmX2R5bnB0cl93cml0ZShcdTAwMjZwdHIsIDAsIGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksIDApKVxuJiM0MztcdFx0cmV0dXJuIDA7IC8qIG11c3QgYWx3YXlzIGZhaWwgKi9cbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDE7XG4mIzQzO31cbiYjNDM7XG4mIzQzO1NFQyhcJiMzNDtuZXRmaWx0ZXJcJiMzNDspXG4mIzQzO19fZGVzY3JpcHRpb24oXCYjMzQ7bmV0ZmlsdGVyIHRlc3QgcHJvZyB3aXRoIGJwZl9keW5wdHJfc2xpY2VfcmR3clwmIzM0OylcbiYjNDM7X19mYWlsdXJlIF9fbXNnKFwmIzM0O3RoZSBwcm9nIGRvZXMgbm90IGFsbG93IHdyaXRlcyB0byBwYWNrZXQgZGF0YVwmIzM0OylcbiYjNDM7aW50IHdpdGhfZHlucHRyX3Jkd3Ioc3RydWN0IGJwZl9uZl9jdHggKmN0eClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBfX3NrX2J1ZmYgKnNrYiA9IChzdHJ1Y3QgX19za19idWZmICopY3R4LVx1MDAzZXNrYjtcbiYjNDM7XHR1OCBidWZmZXJfaXBoWzIwXSA9IHt9O1xuJiM0MztcdHN0cnVjdCBicGZfZHlucHRyIHB0cjtcbiYjNDM7XHRzdHJ1Y3QgaXBoZHIgKmlwaDtcbiYjNDM7XG4mIzQzO1x0aWYgKGJwZl9keW5wdHJfZnJvbV9za2Ioc2tiLCAwLCBcdTAwMjZwdHIpKVxuJiM0MztcdFx0cmV0dXJuIDE7XG4mIzQzO1xuJiM0MztcdGlwaCA9IGJwZl9keW5wdHJfc2xpY2VfcmR3cihcdTAwMjZwdHIsIDAsIGJ1ZmZlcl9pcGgsIHNpemVvZihidWZmZXJfaXBoKSk7XG4mIzQzO1x0aWYgKCFpcGgpXG4mIzQzO1x0XHRyZXR1cm4gMDtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDE7XG4mIzQzO31cbiYjNDM7XG4mIzQzO1NFQyhcJiMzNDtuZXRmaWx0ZXJcJiMzNDspXG4mIzQzO19fZGVzY3JpcHRpb24oXCYjMzQ7bmV0ZmlsdGVyIHRlc3QgcHJvZyB3aXRoIGJwZiBkeW5wdHJfc2xpY2Vfd3JpdGUgJiM0Mzsgd3JpdGVcJiMzNDspXG4mIzQzO19fZmFpbHVyZSBfX21zZyhcJiMzNDtjYW5ub3Qgd3JpdGUgaW50byByZG9ubHlfbWVtXCYjMzQ7KVxuJiM0MztpbnQgd2l0aF9keW5wdHJfc3RvcmUoc3RydWN0IGJwZl9uZl9jdHggKmN0eClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBfX3NrX2J1ZmYgKnNrYiA9IChzdHJ1Y3QgX19za19idWZmICopY3R4LVx1MDAzZXNrYjtcbiYjNDM7XHR1OCBidWZmZXJfaXBoWzIwXSA9IHt9O1xuJiM0MztcdHN0cnVjdCBicGZfZHlucHRyIHB0cjtcbiYjNDM7XHRzdHJ1Y3QgaXBoZHIgKmlwaDtcbiYjNDM7XG4mIzQzO1x0aWYgKGJwZl9keW5wdHJfZnJvbV9za2Ioc2tiLCAwLCBcdTAwMjZwdHIpKVxuJiM0MztcdFx0cmV0dXJuIDE7XG4mIzQzO1xuJiM0MztcdGlwaCA9IGJwZl9keW5wdHJfc2xpY2UoXHUwMDI2cHRyLCAwLCBidWZmZXJfaXBoLCBzaXplb2YoYnVmZmVyX2lwaCkpO1xuJiM0MztcdGlmICghaXBoKVxuJiM0MztcdFx0cmV0dXJuIDA7XG4mIzQzO1x0aXBoLVx1MDAzZXByb3RvY29sID0gNDI7XG4mIzQzO1xuJiM0MztcdHJldHVybiAxO1xuJiM0Mzt9XG4mIzQzO1xuIGNoYXIgX2xpY2Vuc2VbXSBTRUMoXCYjMzQ7bGljZW5zZVwmIzM0OykgPSBcJiMzNDtHUExcJiMzNDs7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMjA6MjQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIHRlc3QgY2FzZXMgdG8gQlBGIHNlbGZ0ZXN0cyAodG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX25ldGZpbHRlcl9jdHguYykgYW5kIGRvZXMgbm90IG1vZGlmeSBhbnkgY29yZSBrZXJuZWwgc291cmNlIGNvZGUgb3IgZHJpdmVycy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBlNzU0MjMzZjA2NzUxMmU0MjI2YWExMjFlNDc0ZjU3MjhhMDM2MjZkCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBTZXAgMiAyMDoyNDoxMyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9uZXRmaWx0ZXJfY3R4LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfbmV0ZmlsdGVyX2N0eC5jCmluZGV4IGUyY2JjNWJkYTY1ZWEuLjdlMzA0MzMxNDA5ZjUgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9uZXRmaWx0ZXJfY3R4LmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX25ldGZpbHRlcl9jdHguYwpAQCAtMTEzLDQgJiM0MzsxMTMsODIgQEAgaW50IHdpdGhfdmFsaWRfY3R4X2FjY2Vzc190ZXN0NihzdHJ1Y3QgYnBmX25mX2N0eCAqY3R4KQogCXJldHVybiB0aC0mZ3Q7ZGVzdCA9PSBicGZfaHRvbnMoMjIpID8gTkZfQUNDRVBUIDogTkZfRFJPUDsKIH0KIAomIzQzO1NFQygmIzM0O25ldGZpbHRlciYjMzQ7KQomIzQzO19fZGVzY3JpcHRpb24oJiMzNDtuZXRmaWx0ZXIgdGVzdCBwcm9nIHdpdGggc2tiIHdyaXRlIGFjY2VzcyYjMzQ7KQomIzQzO19fZmFpbHVyZSBfX21zZygmIzM0O29ubHkgcmVhZCBpcyBzdXBwb3J0ZWQmIzM0OykKJiM0MztpbnQgc2tiX2xlbl93cml0ZShzdHJ1Y3QgYnBmX25mX2N0eCAqY3R4KQomIzQzO3sKJiM0MzsJY3R4LSZndDtza2ItJmd0O2xlbiA9IDE7CiYjNDM7CXJldHVybiAxOwomIzQzO30KJiM0MzsKJiM0MztTRUMoJiMzNDtuZXRmaWx0ZXImIzM0OykKJiM0MztfX2Rlc2NyaXB0aW9uKCYjMzQ7bmV0ZmlsdGVyIHRlc3QgcHJvZyB3aXRoIHNrYiBkYXRhIHdyaXRlIGFjY2VzcyYjMzQ7KQomIzQzO19fZmFpbHVyZSBfX21zZygmIzM0O2Nhbm5vdCB3cml0ZSBpbnRvIHJkb25seV91bnRydXN0ZWRfbWVtJiMzNDspCiYjNDM7aW50IHdpdGhfaW52YWxpZF9kYXRhX3dyaXRlX3Rlc3Q0KHN0cnVjdCBicGZfbmZfY3R4ICpjdHgpCiYjNDM7ewomIzQzOwljdHgtJmd0O3NrYi0mZ3Q7ZGF0YVswXSA9IDA7CiYjNDM7CXJldHVybiAxOwomIzQzO30KJiM0MzsKJiM0MztTRUMoJiMzNDtuZXRmaWx0ZXImIzM0OykKJiM0MztfX2Rlc2NyaXB0aW9uKCYjMzQ7bmV0ZmlsdGVyIHRlc3QgcHJvZyB3aXRoIGJwZl9keW5wdHJfd3JpdGUmIzM0OykKJiM0MztfX3N1Y2Nlc3MgX19mYWlsdXJlX3VucHJpdgomIzQzO19fcmV0dmFsKDApCiYjNDM7aW50IHdpdGhfZHlucHRyX3dyaXRlKHN0cnVjdCBicGZfbmZfY3R4ICpjdHgpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgX19za19idWZmICpza2IgPSAoc3RydWN0IF9fc2tfYnVmZiAqKWN0eC0mZ3Q7c2tiOwomIzQzOwlzdHJ1Y3QgYnBmX2R5bnB0ciBwdHI7CiYjNDM7CXU4IGJ1ZmZlclsxXSA9IHt9OwomIzQzOwomIzQzOwlpZiAoYnBmX2R5bnB0cl9mcm9tX3NrYihza2IsIDAsICZhbXA7cHRyKSkKJiM0MzsJCXJldHVybiAxOwomIzQzOwomIzQzOwlpZiAoYnBmX2R5bnB0cl93cml0ZSgmYW1wO3B0ciwgMCwgYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwgMCkpCiYjNDM7CQlyZXR1cm4gMDsgLyogbXVzdCBhbHdheXMgZmFpbCAqLwomIzQzOwomIzQzOwlyZXR1cm4gMTsKJiM0Mzt9CiYjNDM7CiYjNDM7U0VDKCYjMzQ7bmV0ZmlsdGVyJiMzNDspCiYjNDM7X19kZXNjcmlwdGlvbigmIzM0O25ldGZpbHRlciB0ZXN0IHByb2cgd2l0aCBicGZfZHlucHRyX3NsaWNlX3Jkd3ImIzM0OykKJiM0MztfX2ZhaWx1cmUgX19tc2coJiMzNDt0aGUgcHJvZyBkb2VzIG5vdCBhbGxvdyB3cml0ZXMgdG8gcGFja2V0IGRhdGEmIzM0OykKJiM0MztpbnQgd2l0aF9keW5wdHJfcmR3cihzdHJ1Y3QgYnBmX25mX2N0eCAqY3R4KQomIzQzO3sKJiM0MzsJc3RydWN0IF9fc2tfYnVmZiAqc2tiID0gKHN0cnVjdCBfX3NrX2J1ZmYgKiljdHgtJmd0O3NrYjsKJiM0MzsJdTggYnVmZmVyX2lwaFsyMF0gPSB7fTsKJiM0MzsJc3RydWN0IGJwZl9keW5wdHIgcHRyOwomIzQzOwlzdHJ1Y3QgaXBoZHIgKmlwaDsKJiM0MzsKJiM0MzsJaWYgKGJwZl9keW5wdHJfZnJvbV9za2Ioc2tiLCAwLCAmYW1wO3B0cikpCiYjNDM7CQlyZXR1cm4gMTsKJiM0MzsKJiM0MzsJaXBoID0gYnBmX2R5bnB0cl9zbGljZV9yZHdyKCZhbXA7cHRyLCAwLCBidWZmZXJfaXBoLCBzaXplb2YoYnVmZmVyX2lwaCkpOwomIzQzOwlpZiAoIWlwaCkKJiM0MzsJCXJldHVybiAwOwomIzQzOwomIzQzOwlyZXR1cm4gMTsKJiM0Mzt9CiYjNDM7CiYjNDM7U0VDKCYjMzQ7bmV0ZmlsdGVyJiMzNDspCiYjNDM7X19kZXNjcmlwdGlvbigmIzM0O25ldGZpbHRlciB0ZXN0IHByb2cgd2l0aCBicGYgZHlucHRyX3NsaWNlX3dyaXRlICYjNDM7IHdyaXRlJiMzNDspCiYjNDM7X19mYWlsdXJlIF9fbXNnKCYjMzQ7Y2Fubm90IHdyaXRlIGludG8gcmRvbmx5X21lbSYjMzQ7KQomIzQzO2ludCB3aXRoX2R5bnB0cl9zdG9yZShzdHJ1Y3QgYnBmX25mX2N0eCAqY3R4KQomIzQzO3sKJiM0MzsJc3RydWN0IF9fc2tfYnVmZiAqc2tiID0gKHN0cnVjdCBfX3NrX2J1ZmYgKiljdHgtJmd0O3NrYjsKJiM0MzsJdTggYnVmZmVyX2lwaFsyMF0gPSB7fTsKJiM0MzsJc3RydWN0IGJwZl9keW5wdHIgcHRyOwomIzQzOwlzdHJ1Y3QgaXBoZHIgKmlwaDsKJiM0MzsKJiM0MzsJaWYgKGJwZl9keW5wdHJfZnJvbV9za2Ioc2tiLCAwLCAmYW1wO3B0cikpCiYjNDM7CQlyZXR1cm4gMTsKJiM0MzsKJiM0MzsJaXBoID0gYnBmX2R5bnB0cl9zbGljZSgmYW1wO3B0ciwgMCwgYnVmZmVyX2lwaCwgc2l6ZW9mKGJ1ZmZlcl9pcGgpKTsKJiM0MzsJaWYgKCFpcGgpCiYjNDM7CQlyZXR1cm4gMDsKJiM0MzsJaXBoLSZndDtwcm90b2NvbCA9IDQyOwomIzQzOwomIzQzOwlyZXR1cm4gMTsKJiM0Mzt9CiYjNDM7CiBjaGFyIF9saWNlbnNlW10gU0VDKCYjMzQ7bGljZW5zZSYjMzQ7KSA9ICYjMzQ7R1BMJiMzNDs7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIwOjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5MDIKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiA0NjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoaXMgS2VybmVsIFBhdGNoIGZvciBGdXp6aW5nIFdvcnRoaW5lc3MqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgdGFzayBpcyB0byBldmFsdWF0ZSB0aGlzIHBhdGNoIGNvbW1pdCwgc3BlY2lmaWNhbGx5IHRvIGRldGVybWluZSBpZiBpdCYjMzk7cyB3b3J0aCBmdXp6aW5nLiBUaGUgcmVxdWVzdCBpcyBhIGtlcm5lbCBwYXRjaCByZXZpZXcgZm9yIHN5emthbGxlciBmdXp6aW5nLCBzbyBpdCYjMzk7cyBkZWZlbnNpdmUgUUEgYW5kIGFuYWx5c2lzIG9mIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsLiBUaGlzIGlzIHRvdGFsbHkgd2l0aGluIHNhZmUgdGVycml0b3J5LCBub3RoaW5nIHRvIHdvcnJ5IGFib3V0LgoKRmlyc3QsIEkgc2VlIHRoZSBwYXRjaCBvbmx5IHRvdWNoZXMgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9uZXRmaWx0ZXJfY3R4LmNgLiBPa2F5LCBsZXQmIzM5O3MgdmVyaWZ5IGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgZmlsZXMgY2hhbmdlZCBpbiB0aGUgSEVBRC4gSSYjMzk7bGwgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdCB0aGlzIGlzIHRoZSAqb25seSogZmlsZSBtb2RpZmllZCBpbiB0aGlzIGNvbW1pdCB1c2luZyBhIHF1aWNrIHRvb2wgb3IgYGdpdCBsb2dgIC8gYGdpdCBkaWZmYC4gSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIGl0JiMzOTtzIGEgZ29vZCBoYWJpdC4KCk5vdywgd2FpdCBhIHNlY29uZCwgbGV0JiMzOTtzIG1ha2UgZG91Ymx5IHN1cmUgdGhhdCB0aGlzIGlzIHRoZSBvbmx5IGZpbGUgbW9kaWZpZWQgaW4gdGhlIGNvbW1pdCwgYmVmb3JlIHJlbHlpbmcgb24gSEVBRC4gVGltZSB0byB1c2UgbXkgdG9vbHMgdG8gdmVyaWZ5LCBwcm9iYWJseSBgcmVhZC1maWxlYCBvciBgZ3JlcHBlcmAgd2lsbCBkby4KCkFoLCBJIG5lZWQgdG8gbWFrZSBhIGtleSB2ZXJpZmljYXRpb24gaGVyZS4gSXMgdGhpcyBgdG9vbHMvdGVzdGluZy8uLi5gIGNvZGUgZXZlbiBwYXJ0IG9mIHRoZSBrZXJuZWwgcnVudGltZT8gTm8sIGl0JiMzOTtzIHVuZGVyIGB0b29scy9gLCBtZWFuaW5nIGl0JiMzOTtzIHVzZXJzcGFjZSBzZWxmdGVzdHMgYW5kIHRvb2xzLiBPa2F5LCB0aGF0JiMzOTtzIGltcG9ydGFudCBjb250ZXh0LgoKTm93LCB3aGF0IGFyZSB0aGUgc3BlY2lmaWMgY3JpdGVyaWEgdG8gZmxhZyB0aGlzIGFzICYjMzQ7bm90IHdvcnRoIGZ1enppbmcmIzM0Oz8gUmlnaHQsIEkgcmVtZW1iZXI6IGNoYW5nZXMgdG8gZG9jdW1lbnRhdGlvbiwgS2NvbmZpZywgY29tbWVudHMsIHB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMgbGlrZSBsb2dnaW5nLCBjaGFuZ2VzIHRvIGNvbnN0YW50cyB0aGF0IGRvbiYjMzk7dCBhbHRlciBleGVjdXRpb24sIHVucmVhY2hhYmxlIGNvZGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBjZXJ0YWluIGRyaXZlcnMsIGFuZCBkcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBwYXRjaCBhZ2FpbnN0IHRoZXNlIGd1aWRlbGluZXMuCgpTaW5jZSB0aGlzIGlzIGluIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9gLCBpdCBkb2VzbiYjMzk7dCBtb2RpZnkgdGhlIGtlcm5lbCBiaW5hcnkgaXRzZWxmLiBUaGF0IG1lYW5zIGl0IGRvZXNuJiMzOTt0IG1lZXQgdGhlIHByaW1hcnkgY3JpdGVyaWEgZm9yIGZ1enppbmcuIEkgc3RpbGwgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB0aGVyZSBhcmUgbm8gKm90aGVyKiBjaGFuZ2VzIGluIHRoZSB0cmVlIHRvIGNvbmZpcm0gdGhpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAyMDoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt3aXRoX2R5bnB0cl9zdG9yZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDt0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfbmV0ZmlsdGVyX2N0eC5jPTE3NT1fX2ZhaWx1cmUgX19tc2coXCYjMzQ7Y2Fubm90IHdyaXRlIGludG8gcmRvbmx5X21lbVwmIzM0OylcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9uZXRmaWx0ZXJfY3R4LmM6MTc2OmludCB3aXRoX2R5bnB0cl9zdG9yZShzdHJ1Y3QgYnBmX25mX2N0eCAqY3R4KVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX25ldGZpbHRlcl9jdHguYy0xNzcte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIwOjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5NDQKCQkJCQkJCW91dHB1dDogNzkKCQkJCQkJCXRob3VnaHRzOiAyMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUganVzdCBhbmFseXplZCB0aGlzIGRpZmYuIEl0JiMzOTtzIGZvY3VzZWQgZW50aXJlbHkgb24gY2hhbmdlcyB3aXRoaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9uZXRmaWx0ZXJfY3R4LmNgLiBUaGF0IG1lYW5zIHRoaXMgaXMgYSBCUEYgc2VsZnRlc3QsIHNwZWNpZmljYWxseSBkZXNpZ25lZCB0byBjaGVjayB0aGUgbmV0ZmlsdGVyIGNvbnRleHQgYWNjZXNzIGNvbnN0cmFpbnRzIHZpYSB0aGUgdmVyaWZpZXIsIGFuZCB0aGF0JiMzOTtzIGFsbCBpdCBkb2VzLiBJdCYjMzk7cyAqbm90KiB0b3VjaGluZyBhbnkga2VybmVsIGNvZGUsIG5vdCB0aGUgY29yZSBrZXJuZWwsIG5vciBhbnkgbW9kdWxlcy4gSXQmIzM5O3MganVzdCBhZGRpbmcgbW9yZSB0ZXN0IGNhc2VzIGZvciB0aGUgdmVyaWZpZXIuCgpUaGVyZWZvcmUsIHRoaXMgaXMgYSBjbGVhciAmIzM0O25vJiMzNDsgb24gZnV6emluZy4gSXQmIzM5O3MgYSB0ZXN0IGNhc2UsIHdoaWNoIGlzIGEgZ29vZCB0aGluZywgYnV0IGl0JiMzOTtzIG5vdCBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBrZXJuZWwsIHNvIHRoZXJlJiMzOTtzIG5vdGhpbmcgdG8gZnV6ei4KCkkgbmVlZCB0byBjb25maXJtIG15IGZpbmRpbmdzIGFnYWluc3QgbXkgYHNldC1yZXN1bHRzYCByZXF1aXJlbWVudHM6Ci0gYEVuYWJsZUNvbmZpZ3NgOiBFbXB0eSwgc2luY2Ugd2UmIzM5O3JlIG5vdCBlbmFibGluZyBhbnl0aGluZy4KLSBgRm9jdXNTeW1ib2xzYDogRW1wdHksIGFnYWluLCBub3RoaW5nIHRvIGZvY3VzIG9uLgotIGBSZWFzb25pbmdgOiAmIzM0O1RoZSBwYXRjaCBvbmx5IGFkZHMgdGVzdCBjYXNlcyB0byB0aGUgQlBGIHNlbGZ0ZXN0cyAodG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX25ldGZpbHRlcl9jdHguYykgYW5kIG1ha2VzIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgTGludXgga2VybmVsLiYjMzQ7IFRoYXQgc2hvdWxkIGJlIGNsZWFyIGFuZCBjb25jaXNlLgotIGBXb3J0aEZ1enppbmdgOiBGYWxzZSwgYSBmaXJtICYjMzQ7bm8uJiMzNDsKCkFscmlnaHQsIEkmIzM5O20gY29uZmlkZW50IGluIHRoaXMgYXNzZXNzbWVudC4gVGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2Agd2l0aCB0aGVzZSBmaW5kaW5ncy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAyMDoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyB0ZXN0IGNhc2VzIHRvIEJQRiBzZWxmdGVzdHMgKHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9uZXRmaWx0ZXJfY3R4LmMpIGFuZCBkb2VzIG5vdCBtb2RpZnkgYW55IGNvcmUga2VybmVsIHNvdXJjZSBjb2RlIG9yIGRyaXZlcnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGFkZHMgdGVzdCBjYXNlcyB0byBCUEYgc2VsZnRlc3RzICh0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfbmV0ZmlsdGVyX2N0eC5jKSBhbmQgZG9lcyBub3QgbW9kaWZ5IGFueSBjb3JlIGtlcm5lbCBzb3VyY2UgY29kZSBvciBkcml2ZXJzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAyMDoyNDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDJUMjA6MjQ6MTQuMzU0MDc4OTA1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA2Nzk3NDE2MDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgdGVzdCBjYXNlcyB0byBCUEYgc2VsZnRlc3RzICh0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfbmV0ZmlsdGVyX2N0eC5jKSBhbmQgZG9lcyBub3QgbW9kaWZ5IGFueSBjb3JlIGtlcm5lbCBzb3VyY2UgY29kZSBvciBkcml2ZXJzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMjA6MjQ6MTQuMzU0MDg1MTY1WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTI2NzgzMTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBlNzU0MjMzZjA2NzUxMmU0MjI2YWExMjFlNDc0ZjU3MjhhMDM2MjZkXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgU2VwIDIgMjA6MjQ6MTMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX25ldGZpbHRlcl9jdHguYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9uZXRmaWx0ZXJfY3R4LmNcXG5pbmRleCBlMmNiYzViZGE2NWVhLi43ZTMwNDMzMTQwOWY1IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9uZXRmaWx0ZXJfY3R4LmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfbmV0ZmlsdGVyX2N0eC5jXFxuQEAgLTExMyw0ICsxMTMsODIgQEAgaW50IHdpdGhfdmFsaWRfY3R4X2FjY2Vzc190ZXN0NihzdHJ1Y3QgYnBmX25mX2N0eCAqY3R4KVxcbiBcXHRyZXR1cm4gdGgtXFx1MDAzZWRlc3QgPT0gYnBmX2h0b25zKDIyKSA/IE5GX0FDQ0VQVCA6IE5GX0RST1A7XFxuIH1cXG4gXFxuK1NFQyhcXFwibmV0ZmlsdGVyXFxcIilcXG4rX19kZXNjcmlwdGlvbihcXFwibmV0ZmlsdGVyIHRlc3QgcHJvZyB3aXRoIHNrYiB3cml0ZSBhY2Nlc3NcXFwiKVxcbitfX2ZhaWx1cmUgX19tc2coXFxcIm9ubHkgcmVhZCBpcyBzdXBwb3J0ZWRcXFwiKVxcbitpbnQgc2tiX2xlbl93cml0ZShzdHJ1Y3QgYnBmX25mX2N0eCAqY3R4KVxcbit7XFxuK1xcdGN0eC1cXHUwMDNlc2tiLVxcdTAwM2VsZW4gPSAxO1xcbitcXHRyZXR1cm4gMTtcXG4rfVxcbitcXG4rU0VDKFxcXCJuZXRmaWx0ZXJcXFwiKVxcbitfX2Rlc2NyaXB0aW9uKFxcXCJuZXRmaWx0ZXIgdGVzdCBwcm9nIHdpdGggc2tiIGRhdGEgd3JpdGUgYWNjZXNzXFxcIilcXG4rX19mYWlsdXJlIF9fbXNnKFxcXCJjYW5ub3Qgd3JpdGUgaW50byByZG9ubHlfdW50cnVzdGVkX21lbVxcXCIpXFxuK2ludCB3aXRoX2ludmFsaWRfZGF0YV93cml0ZV90ZXN0NChzdHJ1Y3QgYnBmX25mX2N0eCAqY3R4KVxcbit7XFxuK1xcdGN0eC1cXHUwMDNlc2tiLVxcdTAwM2VkYXRhWzBdID0gMDtcXG4rXFx0cmV0dXJuIDE7XFxuK31cXG4rXFxuK1NFQyhcXFwibmV0ZmlsdGVyXFxcIilcXG4rX19kZXNjcmlwdGlvbihcXFwibmV0ZmlsdGVyIHRlc3QgcHJvZyB3aXRoIGJwZl9keW5wdHJfd3JpdGVcXFwiKVxcbitfX3N1Y2Nlc3MgX19mYWlsdXJlX3VucHJpdlxcbitfX3JldHZhbCgwKVxcbitpbnQgd2l0aF9keW5wdHJfd3JpdGUoc3RydWN0IGJwZl9uZl9jdHggKmN0eClcXG4re1xcbitcXHRzdHJ1Y3QgX19za19idWZmICpza2IgPSAoc3RydWN0IF9fc2tfYnVmZiAqKWN0eC1cXHUwMDNlc2tiO1xcbitcXHRzdHJ1Y3QgYnBmX2R5bnB0ciBwdHI7XFxuK1xcdHU4IGJ1ZmZlclsxXSA9IHt9O1xcbitcXG4rXFx0aWYgKGJwZl9keW5wdHJfZnJvbV9za2Ioc2tiLCAwLCBcXHUwMDI2cHRyKSlcXG4rXFx0XFx0cmV0dXJuIDE7XFxuK1xcbitcXHRpZiAoYnBmX2R5bnB0cl93cml0ZShcXHUwMDI2cHRyLCAwLCBidWZmZXIsIHNpemVvZihidWZmZXIpLCAwKSlcXG4rXFx0XFx0cmV0dXJuIDA7IC8qIG11c3QgYWx3YXlzIGZhaWwgKi9cXG4rXFxuK1xcdHJldHVybiAxO1xcbit9XFxuK1xcbitTRUMoXFxcIm5ldGZpbHRlclxcXCIpXFxuK19fZGVzY3JpcHRpb24oXFxcIm5ldGZpbHRlciB0ZXN0IHByb2cgd2l0aCBicGZfZHlucHRyX3NsaWNlX3Jkd3JcXFwiKVxcbitfX2ZhaWx1cmUgX19tc2coXFxcInRoZSBwcm9nIGRvZXMgbm90IGFsbG93IHdyaXRlcyB0byBwYWNrZXQgZGF0YVxcXCIpXFxuK2ludCB3aXRoX2R5bnB0cl9yZHdyKHN0cnVjdCBicGZfbmZfY3R4ICpjdHgpXFxuK3tcXG4rXFx0c3RydWN0IF9fc2tfYnVmZiAqc2tiID0gKHN0cnVjdCBfX3NrX2J1ZmYgKiljdHgtXFx1MDAzZXNrYjtcXG4rXFx0dTggYnVmZmVyX2lwaFsyMF0gPSB7fTtcXG4rXFx0c3RydWN0IGJwZl9keW5wdHIgcHRyO1xcbitcXHRzdHJ1Y3QgaXBoZHIgKmlwaDtcXG4rXFxuK1xcdGlmIChicGZfZHlucHRyX2Zyb21fc2tiKHNrYiwgMCwgXFx1MDAyNnB0cikpXFxuK1xcdFxcdHJldHVybiAxO1xcbitcXG4rXFx0aXBoID0gYnBmX2R5bnB0cl9zbGljZV9yZHdyKFxcdTAwMjZwdHIsIDAsIGJ1ZmZlcl9pcGgsIHNpemVvZihidWZmZXJfaXBoKSk7XFxuK1xcdGlmICghaXBoKVxcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFxuK1xcdHJldHVybiAxO1xcbit9XFxuK1xcbitTRUMoXFxcIm5ldGZpbHRlclxcXCIpXFxuK19fZGVzY3JpcHRpb24oXFxcIm5ldGZpbHRlciB0ZXN0IHByb2cgd2l0aCBicGYgZHlucHRyX3NsaWNlX3dyaXRlICsgd3JpdGVcXFwiKVxcbitfX2ZhaWx1cmUgX19tc2coXFxcImNhbm5vdCB3cml0ZSBpbnRvIHJkb25seV9tZW1cXFwiKVxcbitpbnQgd2l0aF9keW5wdHJfc3RvcmUoc3RydWN0IGJwZl9uZl9jdHggKmN0eClcXG4re1xcbitcXHRzdHJ1Y3QgX19za19idWZmICpza2IgPSAoc3RydWN0IF9fc2tfYnVmZiAqKWN0eC1cXHUwMDNlc2tiO1xcbitcXHR1OCBidWZmZXJfaXBoWzIwXSA9IHt9O1xcbitcXHRzdHJ1Y3QgYnBmX2R5bnB0ciBwdHI7XFxuK1xcdHN0cnVjdCBpcGhkciAqaXBoO1xcbitcXG4rXFx0aWYgKGJwZl9keW5wdHJfZnJvbV9za2Ioc2tiLCAwLCBcXHUwMDI2cHRyKSlcXG4rXFx0XFx0cmV0dXJuIDE7XFxuK1xcbitcXHRpcGggPSBicGZfZHlucHRyX3NsaWNlKFxcdTAwMjZwdHIsIDAsIGJ1ZmZlcl9pcGgsIHNpemVvZihidWZmZXJfaXBoKSk7XFxuK1xcdGlmICghaXBoKVxcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFx0aXBoLVxcdTAwM2Vwcm90b2NvbCA9IDQyO1xcbitcXG4rXFx0cmV0dXJuIDE7XFxuK31cXG4rXFxuIGNoYXIgX2xpY2Vuc2VbXSBTRUMoXFxcImxpY2Vuc2VcXFwiKSA9IFxcXCJHUExcXFwiO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQyMDoyNDoxNC43Njc0Mjg5NDRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjIwMjY2MzY0NzU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgdGVzdCBjYXNlcyB0byBCUEYgc2VsZnRlc3RzICh0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfbmV0ZmlsdGVyX2N0eC5jKSBhbmQgZG9lcyBub3QgbW9kaWZ5IGFueSBjb3JlIGtlcm5lbCBzb3VyY2UgY29kZSBvciBkcml2ZXJzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZTc1NDIzM2YwNjc1MTJlNDIyNmFhMTIxZTQ3NGY1NzI4YTAzNjI2ZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgU2VwIDIgMjA6MjQ6MTMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfbmV0ZmlsdGVyX2N0eC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX25ldGZpbHRlcl9jdHguY1xuaW5kZXggZTJjYmM1YmRhNjVlYS4uN2UzMDQzMzE0MDlmNSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9uZXRmaWx0ZXJfY3R4LmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9uZXRmaWx0ZXJfY3R4LmNcbkBAIC0xMTMsNCArMTEzLDgyIEBAIGludCB3aXRoX3ZhbGlkX2N0eF9hY2Nlc3NfdGVzdDYoc3RydWN0IGJwZl9uZl9jdHggKmN0eClcbiBcdHJldHVybiB0aC1cdTAwM2VkZXN0ID09IGJwZl9odG9ucygyMikgPyBORl9BQ0NFUFQgOiBORl9EUk9QO1xuIH1cbiBcbitTRUMoXCJuZXRmaWx0ZXJcIilcbitfX2Rlc2NyaXB0aW9uKFwibmV0ZmlsdGVyIHRlc3QgcHJvZyB3aXRoIHNrYiB3cml0ZSBhY2Nlc3NcIilcbitfX2ZhaWx1cmUgX19tc2coXCJvbmx5IHJlYWQgaXMgc3VwcG9ydGVkXCIpXG4raW50IHNrYl9sZW5fd3JpdGUoc3RydWN0IGJwZl9uZl9jdHggKmN0eClcbit7XG4rXHRjdHgtXHUwMDNlc2tiLVx1MDAzZWxlbiA9IDE7XG4rXHRyZXR1cm4gMTtcbit9XG4rXG4rU0VDKFwibmV0ZmlsdGVyXCIpXG4rX19kZXNjcmlwdGlvbihcIm5ldGZpbHRlciB0ZXN0IHByb2cgd2l0aCBza2IgZGF0YSB3cml0ZSBhY2Nlc3NcIilcbitfX2ZhaWx1cmUgX19tc2coXCJjYW5ub3Qgd3JpdGUgaW50byByZG9ubHlfdW50cnVzdGVkX21lbVwiKVxuK2ludCB3aXRoX2ludmFsaWRfZGF0YV93cml0ZV90ZXN0NChzdHJ1Y3QgYnBmX25mX2N0eCAqY3R4KVxuK3tcbitcdGN0eC1cdTAwM2Vza2ItXHUwMDNlZGF0YVswXSA9IDA7XG4rXHRyZXR1cm4gMTtcbit9XG4rXG4rU0VDKFwibmV0ZmlsdGVyXCIpXG4rX19kZXNjcmlwdGlvbihcIm5ldGZpbHRlciB0ZXN0IHByb2cgd2l0aCBicGZfZHlucHRyX3dyaXRlXCIpXG4rX19zdWNjZXNzIF9fZmFpbHVyZV91bnByaXZcbitfX3JldHZhbCgwKVxuK2ludCB3aXRoX2R5bnB0cl93cml0ZShzdHJ1Y3QgYnBmX25mX2N0eCAqY3R4KVxuK3tcbitcdHN0cnVjdCBfX3NrX2J1ZmYgKnNrYiA9IChzdHJ1Y3QgX19za19idWZmICopY3R4LVx1MDAzZXNrYjtcbitcdHN0cnVjdCBicGZfZHlucHRyIHB0cjtcbitcdHU4IGJ1ZmZlclsxXSA9IHt9O1xuK1xuK1x0aWYgKGJwZl9keW5wdHJfZnJvbV9za2Ioc2tiLCAwLCBcdTAwMjZwdHIpKVxuK1x0XHRyZXR1cm4gMTtcbitcbitcdGlmIChicGZfZHlucHRyX3dyaXRlKFx1MDAyNnB0ciwgMCwgYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwgMCkpXG4rXHRcdHJldHVybiAwOyAvKiBtdXN0IGFsd2F5cyBmYWlsICovXG4rXG4rXHRyZXR1cm4gMTtcbit9XG4rXG4rU0VDKFwibmV0ZmlsdGVyXCIpXG4rX19kZXNjcmlwdGlvbihcIm5ldGZpbHRlciB0ZXN0IHByb2cgd2l0aCBicGZfZHlucHRyX3NsaWNlX3Jkd3JcIilcbitfX2ZhaWx1cmUgX19tc2coXCJ0aGUgcHJvZyBkb2VzIG5vdCBhbGxvdyB3cml0ZXMgdG8gcGFja2V0IGRhdGFcIilcbitpbnQgd2l0aF9keW5wdHJfcmR3cihzdHJ1Y3QgYnBmX25mX2N0eCAqY3R4KVxuK3tcbitcdHN0cnVjdCBfX3NrX2J1ZmYgKnNrYiA9IChzdHJ1Y3QgX19za19idWZmICopY3R4LVx1MDAzZXNrYjtcbitcdHU4IGJ1ZmZlcl9pcGhbMjBdID0ge307XG4rXHRzdHJ1Y3QgYnBmX2R5bnB0ciBwdHI7XG4rXHRzdHJ1Y3QgaXBoZHIgKmlwaDtcbitcbitcdGlmIChicGZfZHlucHRyX2Zyb21fc2tiKHNrYiwgMCwgXHUwMDI2cHRyKSlcbitcdFx0cmV0dXJuIDE7XG4rXG4rXHRpcGggPSBicGZfZHlucHRyX3NsaWNlX3Jkd3IoXHUwMDI2cHRyLCAwLCBidWZmZXJfaXBoLCBzaXplb2YoYnVmZmVyX2lwaCkpO1xuK1x0aWYgKCFpcGgpXG4rXHRcdHJldHVybiAwO1xuK1xuK1x0cmV0dXJuIDE7XG4rfVxuK1xuK1NFQyhcIm5ldGZpbHRlclwiKVxuK19fZGVzY3JpcHRpb24oXCJuZXRmaWx0ZXIgdGVzdCBwcm9nIHdpdGggYnBmIGR5bnB0cl9zbGljZV93cml0ZSArIHdyaXRlXCIpXG4rX19mYWlsdXJlIF9fbXNnKFwiY2Fubm90IHdyaXRlIGludG8gcmRvbmx5X21lbVwiKVxuK2ludCB3aXRoX2R5bnB0cl9zdG9yZShzdHJ1Y3QgYnBmX25mX2N0eCAqY3R4KVxuK3tcbitcdHN0cnVjdCBfX3NrX2J1ZmYgKnNrYiA9IChzdHJ1Y3QgX19za19idWZmICopY3R4LVx1MDAzZXNrYjtcbitcdHU4IGJ1ZmZlcl9pcGhbMjBdID0ge307XG4rXHRzdHJ1Y3QgYnBmX2R5bnB0ciBwdHI7XG4rXHRzdHJ1Y3QgaXBoZHIgKmlwaDtcbitcbitcdGlmIChicGZfZHlucHRyX2Zyb21fc2tiKHNrYiwgMCwgXHUwMDI2cHRyKSlcbitcdFx0cmV0dXJuIDE7XG4rXG4rXHRpcGggPSBicGZfZHlucHRyX3NsaWNlKFx1MDAyNnB0ciwgMCwgYnVmZmVyX2lwaCwgc2l6ZW9mKGJ1ZmZlcl9pcGgpKTtcbitcdGlmICghaXBoKVxuK1x0XHRyZXR1cm4gMDtcbitcdGlwaC1cdTAwM2Vwcm90b2NvbCA9IDQyO1xuK1xuK1x0cmV0dXJuIDE7XG4rfVxuK1xuIGNoYXIgX2xpY2Vuc2VbXSBTRUMoXCJsaWNlbnNlXCIpID0gXCJHUExcIjtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIwOjI0OjE0Ljc2NzQzMDYzNFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE1MTU0OTI2NTkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGlzIEtlcm5lbCBQYXRjaCBmb3IgRnV6emluZyBXb3J0aGluZXNzKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSB0YXNrIGlzIHRvIGV2YWx1YXRlIHRoaXMgcGF0Y2ggY29tbWl0LCBzcGVjaWZpY2FsbHkgdG8gZGV0ZXJtaW5lIGlmIGl0J3Mgd29ydGggZnV6emluZy4gVGhlIHJlcXVlc3QgaXMgYSBrZXJuZWwgcGF0Y2ggcmV2aWV3IGZvciBzeXprYWxsZXIgZnV6emluZywgc28gaXQncyBkZWZlbnNpdmUgUUEgYW5kIGFuYWx5c2lzIG9mIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsLiBUaGlzIGlzIHRvdGFsbHkgd2l0aGluIHNhZmUgdGVycml0b3J5LCBub3RoaW5nIHRvIHdvcnJ5IGFib3V0LlxuXG5GaXJzdCwgSSBzZWUgdGhlIHBhdGNoIG9ubHkgdG91Y2hlcyBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX25ldGZpbHRlcl9jdHguY2AuIE9rYXksIGxldCdzIHZlcmlmeSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGZpbGVzIGNoYW5nZWQgaW4gdGhlIEhFQUQuIEknbGwgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdCB0aGlzIGlzIHRoZSAqb25seSogZmlsZSBtb2RpZmllZCBpbiB0aGlzIGNvbW1pdCB1c2luZyBhIHF1aWNrIHRvb2wgb3IgYGdpdCBsb2dgIC8gYGdpdCBkaWZmYC4gSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIGl0J3MgYSBnb29kIGhhYml0LlxuXG5Ob3csIHdhaXQgYSBzZWNvbmQsIGxldCdzIG1ha2UgZG91Ymx5IHN1cmUgdGhhdCB0aGlzIGlzIHRoZSBvbmx5IGZpbGUgbW9kaWZpZWQgaW4gdGhlIGNvbW1pdCwgYmVmb3JlIHJlbHlpbmcgb24gSEVBRC4gVGltZSB0byB1c2UgbXkgdG9vbHMgdG8gdmVyaWZ5LCBwcm9iYWJseSBgcmVhZC1maWxlYCBvciBgZ3JlcHBlcmAgd2lsbCBkby5cblxuQWgsIEkgbmVlZCB0byBtYWtlIGEga2V5IHZlcmlmaWNhdGlvbiBoZXJlLiBJcyB0aGlzIGB0b29scy90ZXN0aW5nLy4uLmAgY29kZSBldmVuIHBhcnQgb2YgdGhlIGtlcm5lbCBydW50aW1lPyBObywgaXQncyB1bmRlciBgdG9vbHMvYCwgbWVhbmluZyBpdCdzIHVzZXJzcGFjZSBzZWxmdGVzdHMgYW5kIHRvb2xzLiBPa2F5LCB0aGF0J3MgaW1wb3J0YW50IGNvbnRleHQuXG5cbk5vdywgd2hhdCBhcmUgdGhlIHNwZWNpZmljIGNyaXRlcmlhIHRvIGZsYWcgdGhpcyBhcyBcIm5vdCB3b3J0aCBmdXp6aW5nXCI/IFJpZ2h0LCBJIHJlbWVtYmVyOiBjaGFuZ2VzIHRvIGRvY3VtZW50YXRpb24sIEtjb25maWcsIGNvbW1lbnRzLCBwdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzIGxpa2UgbG9nZ2luZywgY2hhbmdlcyB0byBjb25zdGFudHMgdGhhdCBkb24ndCBhbHRlciBleGVjdXRpb24sIHVucmVhY2hhYmxlIGNvZGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBjZXJ0YWluIGRyaXZlcnMsIGFuZCBkcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzLiBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIHBhdGNoIGFnYWluc3QgdGhlc2UgZ3VpZGVsaW5lcy5cblxuU2luY2UgdGhpcyBpcyBpbiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYCwgaXQgZG9lc24ndCBtb2RpZnkgdGhlIGtlcm5lbCBiaW5hcnkgaXRzZWxmLiBUaGF0IG1lYW5zIGl0IGRvZXNuJ3QgbWVldCB0aGUgcHJpbWFyeSBjcml0ZXJpYSBmb3IgZnV6emluZy4gSSBzdGlsbCBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZXJlIGFyZSBubyAqb3RoZXIqIGNoYW5nZXMgaW4gdGhlIHRyZWUgdG8gY29uZmlybSB0aGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTAyLCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDY5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMjA6MjQ6MjkuOTIyMzU5NzM0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5NTM5NjU2MjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwid2l0aF9keW5wdHJfc3RvcmVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwidG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX25ldGZpbHRlcl9jdHguYz0xNzU9X19mYWlsdXJlIF9fbXNnKFxcXCJjYW5ub3Qgd3JpdGUgaW50byByZG9ubHlfbWVtXFxcIilcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfbmV0ZmlsdGVyX2N0eC5jOjE3NjppbnQgd2l0aF9keW5wdHJfc3RvcmUoc3RydWN0IGJwZl9uZl9jdHggKmN0eClcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfbmV0ZmlsdGVyX2N0eC5jLTE3Ny17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIwOjI0OjMxLjg3NjMzMjE2N1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjMxNTc0MzQyNDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGp1c3QgYW5hbHl6ZWQgdGhpcyBkaWZmLiBJdCdzIGZvY3VzZWQgZW50aXJlbHkgb24gY2hhbmdlcyB3aXRoaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9uZXRmaWx0ZXJfY3R4LmNgLiBUaGF0IG1lYW5zIHRoaXMgaXMgYSBCUEYgc2VsZnRlc3QsIHNwZWNpZmljYWxseSBkZXNpZ25lZCB0byBjaGVjayB0aGUgbmV0ZmlsdGVyIGNvbnRleHQgYWNjZXNzIGNvbnN0cmFpbnRzIHZpYSB0aGUgdmVyaWZpZXIsIGFuZCB0aGF0J3MgYWxsIGl0IGRvZXMuIEl0J3MgKm5vdCogdG91Y2hpbmcgYW55IGtlcm5lbCBjb2RlLCBub3QgdGhlIGNvcmUga2VybmVsLCBub3IgYW55IG1vZHVsZXMuIEl0J3MganVzdCBhZGRpbmcgbW9yZSB0ZXN0IGNhc2VzIGZvciB0aGUgdmVyaWZpZXIuXG5cblRoZXJlZm9yZSwgdGhpcyBpcyBhIGNsZWFyIFwibm9cIiBvbiBmdXp6aW5nLiBJdCdzIGEgdGVzdCBjYXNlLCB3aGljaCBpcyBhIGdvb2QgdGhpbmcsIGJ1dCBpdCdzIG5vdCBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBrZXJuZWwsIHNvIHRoZXJlJ3Mgbm90aGluZyB0byBmdXp6LlxuXG5JIG5lZWQgdG8gY29uZmlybSBteSBmaW5kaW5ncyBhZ2FpbnN0IG15IGBzZXQtcmVzdWx0c2AgcmVxdWlyZW1lbnRzOlxuLSBgRW5hYmxlQ29uZmlnc2A6IEVtcHR5LCBzaW5jZSB3ZSdyZSBub3QgZW5hYmxpbmcgYW55dGhpbmcuXG4tIGBGb2N1c1N5bWJvbHNgOiBFbXB0eSwgYWdhaW4sIG5vdGhpbmcgdG8gZm9jdXMgb24uXG4tIGBSZWFzb25pbmdgOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgdGVzdCBjYXNlcyB0byB0aGUgQlBGIHNlbGZ0ZXN0cyAodG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX25ldGZpbHRlcl9jdHguYykgYW5kIG1ha2VzIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgTGludXgga2VybmVsLlwiIFRoYXQgc2hvdWxkIGJlIGNsZWFyIGFuZCBjb25jaXNlLlxuLSBgV29ydGhGdXp6aW5nYDogRmFsc2UsIGEgZmlybSBcIm5vLlwiXG5cbkFscmlnaHQsIEknbSBjb25maWRlbnQgaW4gdGhpcyBhc3Nlc3NtZW50LiBUaW1lIHRvIGNhbGwgYHNldC1yZXN1bHRzYCB3aXRoIHRoZXNlIGZpbmRpbmdzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTQ0LCJPdXRwdXRUb2tlbnMiOjc5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIwOjI0OjM1LjAzMzc2ODMyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzI2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgdGVzdCBjYXNlcyB0byBCUEYgc2VsZnRlc3RzICh0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfbmV0ZmlsdGVyX2N0eC5jKSBhbmQgZG9lcyBub3QgbW9kaWZ5IGFueSBjb3JlIGtlcm5lbCBzb3VyY2UgY29kZSBvciBkcml2ZXJzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBhZGRzIHRlc3QgY2FzZXMgdG8gQlBGIHNlbGZ0ZXN0cyAodG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX25ldGZpbHRlcl9jdHguYykgYW5kIGRvZXMgbm90IG1vZGlmeSBhbnkgY29yZSBrZXJuZWwgc291cmNlIGNvZGUgb3IgZHJpdmVycy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIwOjI0OjM1LjAzMzgwMDk1WiIsIlNlcSI6NywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMyMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowv9tkd[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-02 19:42:32 +0000 UTC FinishedAt: 2026-09-02 20:24:36 +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+CgkJCTx0ZD4yMDI2LzA5LzAyIDIwOjI0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIHRlc3QgY2FzZXMgdG8gQlBGIHNlbGZ0ZXN0cyAodG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX25ldGZpbHRlcl9jdHguYykgYW5kIGRvZXMgbm90IG1vZGlmeSBhbnkgY29yZSBrZXJuZWwgc291cmNlIGNvZGUgb3IgZHJpdmVycy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMjA6MjQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBlNzU0MjMzZjA2NzUxMmU0MjI2YWExMjFlNDc0ZjU3MjhhMDM2MjZkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBTZXAgMiAyMDoyNDoxMyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfbmV0ZmlsdGVyX2N0eC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX25ldGZpbHRlcl9jdHguY1xuaW5kZXggZTJjYmM1YmRhNjVlYS4uN2UzMDQzMzE0MDlmNSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9uZXRmaWx0ZXJfY3R4LmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9uZXRmaWx0ZXJfY3R4LmNcbkBAIC0xMTMsNCAmIzQzOzExMyw4MiBAQCBpbnQgd2l0aF92YWxpZF9jdHhfYWNjZXNzX3Rlc3Q2KHN0cnVjdCBicGZfbmZfY3R4ICpjdHgpXG4gXHRyZXR1cm4gdGgtXHUwMDNlZGVzdCA9PSBicGZfaHRvbnMoMjIpID8gTkZfQUNDRVBUIDogTkZfRFJPUDtcbiB9XG4gXG4mIzQzO1NFQyhcJiMzNDtuZXRmaWx0ZXJcJiMzNDspXG4mIzQzO19fZGVzY3JpcHRpb24oXCYjMzQ7bmV0ZmlsdGVyIHRlc3QgcHJvZyB3aXRoIHNrYiB3cml0ZSBhY2Nlc3NcJiMzNDspXG4mIzQzO19fZmFpbHVyZSBfX21zZyhcJiMzNDtvbmx5IHJlYWQgaXMgc3VwcG9ydGVkXCYjMzQ7KVxuJiM0MztpbnQgc2tiX2xlbl93cml0ZShzdHJ1Y3QgYnBmX25mX2N0eCAqY3R4KVxuJiM0Mzt7XG4mIzQzO1x0Y3R4LVx1MDAzZXNrYi1cdTAwM2VsZW4gPSAxO1xuJiM0MztcdHJldHVybiAxO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztTRUMoXCYjMzQ7bmV0ZmlsdGVyXCYjMzQ7KVxuJiM0MztfX2Rlc2NyaXB0aW9uKFwmIzM0O25ldGZpbHRlciB0ZXN0IHByb2cgd2l0aCBza2IgZGF0YSB3cml0ZSBhY2Nlc3NcJiMzNDspXG4mIzQzO19fZmFpbHVyZSBfX21zZyhcJiMzNDtjYW5ub3Qgd3JpdGUgaW50byByZG9ubHlfdW50cnVzdGVkX21lbVwmIzM0OylcbiYjNDM7aW50IHdpdGhfaW52YWxpZF9kYXRhX3dyaXRlX3Rlc3Q0KHN0cnVjdCBicGZfbmZfY3R4ICpjdHgpXG4mIzQzO3tcbiYjNDM7XHRjdHgtXHUwMDNlc2tiLVx1MDAzZWRhdGFbMF0gPSAwO1xuJiM0MztcdHJldHVybiAxO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztTRUMoXCYjMzQ7bmV0ZmlsdGVyXCYjMzQ7KVxuJiM0MztfX2Rlc2NyaXB0aW9uKFwmIzM0O25ldGZpbHRlciB0ZXN0IHByb2cgd2l0aCBicGZfZHlucHRyX3dyaXRlXCYjMzQ7KVxuJiM0MztfX3N1Y2Nlc3MgX19mYWlsdXJlX3VucHJpdlxuJiM0MztfX3JldHZhbCgwKVxuJiM0MztpbnQgd2l0aF9keW5wdHJfd3JpdGUoc3RydWN0IGJwZl9uZl9jdHggKmN0eClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBfX3NrX2J1ZmYgKnNrYiA9IChzdHJ1Y3QgX19za19idWZmICopY3R4LVx1MDAzZXNrYjtcbiYjNDM7XHRzdHJ1Y3QgYnBmX2R5bnB0ciBwdHI7XG4mIzQzO1x0dTggYnVmZmVyWzFdID0ge307XG4mIzQzO1xuJiM0MztcdGlmIChicGZfZHlucHRyX2Zyb21fc2tiKHNrYiwgMCwgXHUwMDI2cHRyKSlcbiYjNDM7XHRcdHJldHVybiAxO1xuJiM0MztcbiYjNDM7XHRpZiAoYnBmX2R5bnB0cl93cml0ZShcdTAwMjZwdHIsIDAsIGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksIDApKVxuJiM0MztcdFx0cmV0dXJuIDA7IC8qIG11c3QgYWx3YXlzIGZhaWwgKi9cbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDE7XG4mIzQzO31cbiYjNDM7XG4mIzQzO1NFQyhcJiMzNDtuZXRmaWx0ZXJcJiMzNDspXG4mIzQzO19fZGVzY3JpcHRpb24oXCYjMzQ7bmV0ZmlsdGVyIHRlc3QgcHJvZyB3aXRoIGJwZl9keW5wdHJfc2xpY2VfcmR3clwmIzM0OylcbiYjNDM7X19mYWlsdXJlIF9fbXNnKFwmIzM0O3RoZSBwcm9nIGRvZXMgbm90IGFsbG93IHdyaXRlcyB0byBwYWNrZXQgZGF0YVwmIzM0OylcbiYjNDM7aW50IHdpdGhfZHlucHRyX3Jkd3Ioc3RydWN0IGJwZl9uZl9jdHggKmN0eClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBfX3NrX2J1ZmYgKnNrYiA9IChzdHJ1Y3QgX19za19idWZmICopY3R4LVx1MDAzZXNrYjtcbiYjNDM7XHR1OCBidWZmZXJfaXBoWzIwXSA9IHt9O1xuJiM0MztcdHN0cnVjdCBicGZfZHlucHRyIHB0cjtcbiYjNDM7XHRzdHJ1Y3QgaXBoZHIgKmlwaDtcbiYjNDM7XG4mIzQzO1x0aWYgKGJwZl9keW5wdHJfZnJvbV9za2Ioc2tiLCAwLCBcdTAwMjZwdHIpKVxuJiM0MztcdFx0cmV0dXJuIDE7XG4mIzQzO1xuJiM0MztcdGlwaCA9IGJwZl9keW5wdHJfc2xpY2VfcmR3cihcdTAwMjZwdHIsIDAsIGJ1ZmZlcl9pcGgsIHNpemVvZihidWZmZXJfaXBoKSk7XG4mIzQzO1x0aWYgKCFpcGgpXG4mIzQzO1x0XHRyZXR1cm4gMDtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDE7XG4mIzQzO31cbiYjNDM7XG4mIzQzO1NFQyhcJiMzNDtuZXRmaWx0ZXJcJiMzNDspXG4mIzQzO19fZGVzY3JpcHRpb24oXCYjMzQ7bmV0ZmlsdGVyIHRlc3QgcHJvZyB3aXRoIGJwZiBkeW5wdHJfc2xpY2Vfd3JpdGUgJiM0Mzsgd3JpdGVcJiMzNDspXG4mIzQzO19fZmFpbHVyZSBfX21zZyhcJiMzNDtjYW5ub3Qgd3JpdGUgaW50byByZG9ubHlfbWVtXCYjMzQ7KVxuJiM0MztpbnQgd2l0aF9keW5wdHJfc3RvcmUoc3RydWN0IGJwZl9uZl9jdHggKmN0eClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBfX3NrX2J1ZmYgKnNrYiA9IChzdHJ1Y3QgX19za19idWZmICopY3R4LVx1MDAzZXNrYjtcbiYjNDM7XHR1OCBidWZmZXJfaXBoWzIwXSA9IHt9O1xuJiM0MztcdHN0cnVjdCBicGZfZHlucHRyIHB0cjtcbiYjNDM7XHRzdHJ1Y3QgaXBoZHIgKmlwaDtcbiYjNDM7XG4mIzQzO1x0aWYgKGJwZl9keW5wdHJfZnJvbV9za2Ioc2tiLCAwLCBcdTAwMjZwdHIpKVxuJiM0MztcdFx0cmV0dXJuIDE7XG4mIzQzO1xuJiM0MztcdGlwaCA9IGJwZl9keW5wdHJfc2xpY2UoXHUwMDI2cHRyLCAwLCBidWZmZXJfaXBoLCBzaXplb2YoYnVmZmVyX2lwaCkpO1xuJiM0MztcdGlmICghaXBoKVxuJiM0MztcdFx0cmV0dXJuIDA7XG4mIzQzO1x0aXBoLVx1MDAzZXByb3RvY29sID0gNDI7XG4mIzQzO1xuJiM0MztcdHJldHVybiAxO1xuJiM0Mzt9XG4mIzQzO1xuIGNoYXIgX2xpY2Vuc2VbXSBTRUMoXCYjMzQ7bGljZW5zZVwmIzM0OykgPSBcJiMzNDtHUExcJiMzNDs7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMjA6MjQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIHRlc3QgY2FzZXMgdG8gQlBGIHNlbGZ0ZXN0cyAodG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX25ldGZpbHRlcl9jdHguYykgYW5kIGRvZXMgbm90IG1vZGlmeSBhbnkgY29yZSBrZXJuZWwgc291cmNlIGNvZGUgb3IgZHJpdmVycy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBlNzU0MjMzZjA2NzUxMmU0MjI2YWExMjFlNDc0ZjU3MjhhMDM2MjZkCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBTZXAgMiAyMDoyNDoxMyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9uZXRmaWx0ZXJfY3R4LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfbmV0ZmlsdGVyX2N0eC5jCmluZGV4IGUyY2JjNWJkYTY1ZWEuLjdlMzA0MzMxNDA5ZjUgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9uZXRmaWx0ZXJfY3R4LmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX25ldGZpbHRlcl9jdHguYwpAQCAtMTEzLDQgJiM0MzsxMTMsODIgQEAgaW50IHdpdGhfdmFsaWRfY3R4X2FjY2Vzc190ZXN0NihzdHJ1Y3QgYnBmX25mX2N0eCAqY3R4KQogCXJldHVybiB0aC0mZ3Q7ZGVzdCA9PSBicGZfaHRvbnMoMjIpID8gTkZfQUNDRVBUIDogTkZfRFJPUDsKIH0KIAomIzQzO1NFQygmIzM0O25ldGZpbHRlciYjMzQ7KQomIzQzO19fZGVzY3JpcHRpb24oJiMzNDtuZXRmaWx0ZXIgdGVzdCBwcm9nIHdpdGggc2tiIHdyaXRlIGFjY2VzcyYjMzQ7KQomIzQzO19fZmFpbHVyZSBfX21zZygmIzM0O29ubHkgcmVhZCBpcyBzdXBwb3J0ZWQmIzM0OykKJiM0MztpbnQgc2tiX2xlbl93cml0ZShzdHJ1Y3QgYnBmX25mX2N0eCAqY3R4KQomIzQzO3sKJiM0MzsJY3R4LSZndDtza2ItJmd0O2xlbiA9IDE7CiYjNDM7CXJldHVybiAxOwomIzQzO30KJiM0MzsKJiM0MztTRUMoJiMzNDtuZXRmaWx0ZXImIzM0OykKJiM0MztfX2Rlc2NyaXB0aW9uKCYjMzQ7bmV0ZmlsdGVyIHRlc3QgcHJvZyB3aXRoIHNrYiBkYXRhIHdyaXRlIGFjY2VzcyYjMzQ7KQomIzQzO19fZmFpbHVyZSBfX21zZygmIzM0O2Nhbm5vdCB3cml0ZSBpbnRvIHJkb25seV91bnRydXN0ZWRfbWVtJiMzNDspCiYjNDM7aW50IHdpdGhfaW52YWxpZF9kYXRhX3dyaXRlX3Rlc3Q0KHN0cnVjdCBicGZfbmZfY3R4ICpjdHgpCiYjNDM7ewomIzQzOwljdHgtJmd0O3NrYi0mZ3Q7ZGF0YVswXSA9IDA7CiYjNDM7CXJldHVybiAxOwomIzQzO30KJiM0MzsKJiM0MztTRUMoJiMzNDtuZXRmaWx0ZXImIzM0OykKJiM0MztfX2Rlc2NyaXB0aW9uKCYjMzQ7bmV0ZmlsdGVyIHRlc3QgcHJvZyB3aXRoIGJwZl9keW5wdHJfd3JpdGUmIzM0OykKJiM0MztfX3N1Y2Nlc3MgX19mYWlsdXJlX3VucHJpdgomIzQzO19fcmV0dmFsKDApCiYjNDM7aW50IHdpdGhfZHlucHRyX3dyaXRlKHN0cnVjdCBicGZfbmZfY3R4ICpjdHgpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgX19za19idWZmICpza2IgPSAoc3RydWN0IF9fc2tfYnVmZiAqKWN0eC0mZ3Q7c2tiOwomIzQzOwlzdHJ1Y3QgYnBmX2R5bnB0ciBwdHI7CiYjNDM7CXU4IGJ1ZmZlclsxXSA9IHt9OwomIzQzOwomIzQzOwlpZiAoYnBmX2R5bnB0cl9mcm9tX3NrYihza2IsIDAsICZhbXA7cHRyKSkKJiM0MzsJCXJldHVybiAxOwomIzQzOwomIzQzOwlpZiAoYnBmX2R5bnB0cl93cml0ZSgmYW1wO3B0ciwgMCwgYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwgMCkpCiYjNDM7CQlyZXR1cm4gMDsgLyogbXVzdCBhbHdheXMgZmFpbCAqLwomIzQzOwomIzQzOwlyZXR1cm4gMTsKJiM0Mzt9CiYjNDM7CiYjNDM7U0VDKCYjMzQ7bmV0ZmlsdGVyJiMzNDspCiYjNDM7X19kZXNjcmlwdGlvbigmIzM0O25ldGZpbHRlciB0ZXN0IHByb2cgd2l0aCBicGZfZHlucHRyX3NsaWNlX3Jkd3ImIzM0OykKJiM0MztfX2ZhaWx1cmUgX19tc2coJiMzNDt0aGUgcHJvZyBkb2VzIG5vdCBhbGxvdyB3cml0ZXMgdG8gcGFja2V0IGRhdGEmIzM0OykKJiM0MztpbnQgd2l0aF9keW5wdHJfcmR3cihzdHJ1Y3QgYnBmX25mX2N0eCAqY3R4KQomIzQzO3sKJiM0MzsJc3RydWN0IF9fc2tfYnVmZiAqc2tiID0gKHN0cnVjdCBfX3NrX2J1ZmYgKiljdHgtJmd0O3NrYjsKJiM0MzsJdTggYnVmZmVyX2lwaFsyMF0gPSB7fTsKJiM0MzsJc3RydWN0IGJwZl9keW5wdHIgcHRyOwomIzQzOwlzdHJ1Y3QgaXBoZHIgKmlwaDsKJiM0MzsKJiM0MzsJaWYgKGJwZl9keW5wdHJfZnJvbV9za2Ioc2tiLCAwLCAmYW1wO3B0cikpCiYjNDM7CQlyZXR1cm4gMTsKJiM0MzsKJiM0MzsJaXBoID0gYnBmX2R5bnB0cl9zbGljZV9yZHdyKCZhbXA7cHRyLCAwLCBidWZmZXJfaXBoLCBzaXplb2YoYnVmZmVyX2lwaCkpOwomIzQzOwlpZiAoIWlwaCkKJiM0MzsJCXJldHVybiAwOwomIzQzOwomIzQzOwlyZXR1cm4gMTsKJiM0Mzt9CiYjNDM7CiYjNDM7U0VDKCYjMzQ7bmV0ZmlsdGVyJiMzNDspCiYjNDM7X19kZXNjcmlwdGlvbigmIzM0O25ldGZpbHRlciB0ZXN0IHByb2cgd2l0aCBicGYgZHlucHRyX3NsaWNlX3dyaXRlICYjNDM7IHdyaXRlJiMzNDspCiYjNDM7X19mYWlsdXJlIF9fbXNnKCYjMzQ7Y2Fubm90IHdyaXRlIGludG8gcmRvbmx5X21lbSYjMzQ7KQomIzQzO2ludCB3aXRoX2R5bnB0cl9zdG9yZShzdHJ1Y3QgYnBmX25mX2N0eCAqY3R4KQomIzQzO3sKJiM0MzsJc3RydWN0IF9fc2tfYnVmZiAqc2tiID0gKHN0cnVjdCBfX3NrX2J1ZmYgKiljdHgtJmd0O3NrYjsKJiM0MzsJdTggYnVmZmVyX2lwaFsyMF0gPSB7fTsKJiM0MzsJc3RydWN0IGJwZl9keW5wdHIgcHRyOwomIzQzOwlzdHJ1Y3QgaXBoZHIgKmlwaDsKJiM0MzsKJiM0MzsJaWYgKGJwZl9keW5wdHJfZnJvbV9za2Ioc2tiLCAwLCAmYW1wO3B0cikpCiYjNDM7CQlyZXR1cm4gMTsKJiM0MzsKJiM0MzsJaXBoID0gYnBmX2R5bnB0cl9zbGljZSgmYW1wO3B0ciwgMCwgYnVmZmVyX2lwaCwgc2l6ZW9mKGJ1ZmZlcl9pcGgpKTsKJiM0MzsJaWYgKCFpcGgpCiYjNDM7CQlyZXR1cm4gMDsKJiM0MzsJaXBoLSZndDtwcm90b2NvbCA9IDQyOwomIzQzOwomIzQzOwlyZXR1cm4gMTsKJiM0Mzt9CiYjNDM7CiBjaGFyIF9saWNlbnNlW10gU0VDKCYjMzQ7bGljZW5zZSYjMzQ7KSA9ICYjMzQ7R1BMJiMzNDs7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIwOjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5MDIKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiA0NjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoaXMgS2VybmVsIFBhdGNoIGZvciBGdXp6aW5nIFdvcnRoaW5lc3MqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgdGFzayBpcyB0byBldmFsdWF0ZSB0aGlzIHBhdGNoIGNvbW1pdCwgc3BlY2lmaWNhbGx5IHRvIGRldGVybWluZSBpZiBpdCYjMzk7cyB3b3J0aCBmdXp6aW5nLiBUaGUgcmVxdWVzdCBpcyBhIGtlcm5lbCBwYXRjaCByZXZpZXcgZm9yIHN5emthbGxlciBmdXp6aW5nLCBzbyBpdCYjMzk7cyBkZWZlbnNpdmUgUUEgYW5kIGFuYWx5c2lzIG9mIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsLiBUaGlzIGlzIHRvdGFsbHkgd2l0aGluIHNhZmUgdGVycml0b3J5LCBub3RoaW5nIHRvIHdvcnJ5IGFib3V0LgoKRmlyc3QsIEkgc2VlIHRoZSBwYXRjaCBvbmx5IHRvdWNoZXMgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9uZXRmaWx0ZXJfY3R4LmNgLiBPa2F5LCBsZXQmIzM5O3MgdmVyaWZ5IGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgZmlsZXMgY2hhbmdlZCBpbiB0aGUgSEVBRC4gSSYjMzk7bGwgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdCB0aGlzIGlzIHRoZSAqb25seSogZmlsZSBtb2RpZmllZCBpbiB0aGlzIGNvbW1pdCB1c2luZyBhIHF1aWNrIHRvb2wgb3IgYGdpdCBsb2dgIC8gYGdpdCBkaWZmYC4gSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIGl0JiMzOTtzIGEgZ29vZCBoYWJpdC4KCk5vdywgd2FpdCBhIHNlY29uZCwgbGV0JiMzOTtzIG1ha2UgZG91Ymx5IHN1cmUgdGhhdCB0aGlzIGlzIHRoZSBvbmx5IGZpbGUgbW9kaWZpZWQgaW4gdGhlIGNvbW1pdCwgYmVmb3JlIHJlbHlpbmcgb24gSEVBRC4gVGltZSB0byB1c2UgbXkgdG9vbHMgdG8gdmVyaWZ5LCBwcm9iYWJseSBgcmVhZC1maWxlYCBvciBgZ3JlcHBlcmAgd2lsbCBkby4KCkFoLCBJIG5lZWQgdG8gbWFrZSBhIGtleSB2ZXJpZmljYXRpb24gaGVyZS4gSXMgdGhpcyBgdG9vbHMvdGVzdGluZy8uLi5gIGNvZGUgZXZlbiBwYXJ0IG9mIHRoZSBrZXJuZWwgcnVudGltZT8gTm8sIGl0JiMzOTtzIHVuZGVyIGB0b29scy9gLCBtZWFuaW5nIGl0JiMzOTtzIHVzZXJzcGFjZSBzZWxmdGVzdHMgYW5kIHRvb2xzLiBPa2F5LCB0aGF0JiMzOTtzIGltcG9ydGFudCBjb250ZXh0LgoKTm93LCB3aGF0IGFyZSB0aGUgc3BlY2lmaWMgY3JpdGVyaWEgdG8gZmxhZyB0aGlzIGFzICYjMzQ7bm90IHdvcnRoIGZ1enppbmcmIzM0Oz8gUmlnaHQsIEkgcmVtZW1iZXI6IGNoYW5nZXMgdG8gZG9jdW1lbnRhdGlvbiwgS2NvbmZpZywgY29tbWVudHMsIHB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMgbGlrZSBsb2dnaW5nLCBjaGFuZ2VzIHRvIGNvbnN0YW50cyB0aGF0IGRvbiYjMzk7dCBhbHRlciBleGVjdXRpb24sIHVucmVhY2hhYmxlIGNvZGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBjZXJ0YWluIGRyaXZlcnMsIGFuZCBkcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBwYXRjaCBhZ2FpbnN0IHRoZXNlIGd1aWRlbGluZXMuCgpTaW5jZSB0aGlzIGlzIGluIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9gLCBpdCBkb2VzbiYjMzk7dCBtb2RpZnkgdGhlIGtlcm5lbCBiaW5hcnkgaXRzZWxmLiBUaGF0IG1lYW5zIGl0IGRvZXNuJiMzOTt0IG1lZXQgdGhlIHByaW1hcnkgY3JpdGVyaWEgZm9yIGZ1enppbmcuIEkgc3RpbGwgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB0aGVyZSBhcmUgbm8gKm90aGVyKiBjaGFuZ2VzIGluIHRoZSB0cmVlIHRvIGNvbmZpcm0gdGhpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAyMDoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt3aXRoX2R5bnB0cl9zdG9yZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDt0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfbmV0ZmlsdGVyX2N0eC5jPTE3NT1fX2ZhaWx1cmUgX19tc2coXCYjMzQ7Y2Fubm90IHdyaXRlIGludG8gcmRvbmx5X21lbVwmIzM0OylcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9uZXRmaWx0ZXJfY3R4LmM6MTc2OmludCB3aXRoX2R5bnB0cl9zdG9yZShzdHJ1Y3QgYnBmX25mX2N0eCAqY3R4KVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX25ldGZpbHRlcl9jdHguYy0xNzcte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIwOjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5NDQKCQkJCQkJCW91dHB1dDogNzkKCQkJCQkJCXRob3VnaHRzOiAyMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUganVzdCBhbmFseXplZCB0aGlzIGRpZmYuIEl0JiMzOTtzIGZvY3VzZWQgZW50aXJlbHkgb24gY2hhbmdlcyB3aXRoaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9uZXRmaWx0ZXJfY3R4LmNgLiBUaGF0IG1lYW5zIHRoaXMgaXMgYSBCUEYgc2VsZnRlc3QsIHNwZWNpZmljYWxseSBkZXNpZ25lZCB0byBjaGVjayB0aGUgbmV0ZmlsdGVyIGNvbnRleHQgYWNjZXNzIGNvbnN0cmFpbnRzIHZpYSB0aGUgdmVyaWZpZXIsIGFuZCB0aGF0JiMzOTtzIGFsbCBpdCBkb2VzLiBJdCYjMzk7cyAqbm90KiB0b3VjaGluZyBhbnkga2VybmVsIGNvZGUsIG5vdCB0aGUgY29yZSBrZXJuZWwsIG5vciBhbnkgbW9kdWxlcy4gSXQmIzM5O3MganVzdCBhZGRpbmcgbW9yZSB0ZXN0IGNhc2VzIGZvciB0aGUgdmVyaWZpZXIuCgpUaGVyZWZvcmUsIHRoaXMgaXMgYSBjbGVhciAmIzM0O25vJiMzNDsgb24gZnV6emluZy4gSXQmIzM5O3MgYSB0ZXN0IGNhc2UsIHdoaWNoIGlzIGEgZ29vZCB0aGluZywgYnV0IGl0JiMzOTtzIG5vdCBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBrZXJuZWwsIHNvIHRoZXJlJiMzOTtzIG5vdGhpbmcgdG8gZnV6ei4KCkkgbmVlZCB0byBjb25maXJtIG15IGZpbmRpbmdzIGFnYWluc3QgbXkgYHNldC1yZXN1bHRzYCByZXF1aXJlbWVudHM6Ci0gYEVuYWJsZUNvbmZpZ3NgOiBFbXB0eSwgc2luY2Ugd2UmIzM5O3JlIG5vdCBlbmFibGluZyBhbnl0aGluZy4KLSBgRm9jdXNTeW1ib2xzYDogRW1wdHksIGFnYWluLCBub3RoaW5nIHRvIGZvY3VzIG9uLgotIGBSZWFzb25pbmdgOiAmIzM0O1RoZSBwYXRjaCBvbmx5IGFkZHMgdGVzdCBjYXNlcyB0byB0aGUgQlBGIHNlbGZ0ZXN0cyAodG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX25ldGZpbHRlcl9jdHguYykgYW5kIG1ha2VzIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgTGludXgga2VybmVsLiYjMzQ7IFRoYXQgc2hvdWxkIGJlIGNsZWFyIGFuZCBjb25jaXNlLgotIGBXb3J0aEZ1enppbmdgOiBGYWxzZSwgYSBmaXJtICYjMzQ7bm8uJiMzNDsKCkFscmlnaHQsIEkmIzM5O20gY29uZmlkZW50IGluIHRoaXMgYXNzZXNzbWVudC4gVGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2Agd2l0aCB0aGVzZSBmaW5kaW5ncy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAyMDoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyB0ZXN0IGNhc2VzIHRvIEJQRiBzZWxmdGVzdHMgKHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9uZXRmaWx0ZXJfY3R4LmMpIGFuZCBkb2VzIG5vdCBtb2RpZnkgYW55IGNvcmUga2VybmVsIHNvdXJjZSBjb2RlIG9yIGRyaXZlcnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGFkZHMgdGVzdCBjYXNlcyB0byBCUEYgc2VsZnRlc3RzICh0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfbmV0ZmlsdGVyX2N0eC5jKSBhbmQgZG9lcyBub3QgbW9kaWZ5IGFueSBjb3JlIGtlcm5lbCBzb3VyY2UgY29kZSBvciBkcml2ZXJzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAyMDoyNDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDJUMjA6MjQ6MTQuMzU0MDc4OTA1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA2Nzk3NDE2MDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgdGVzdCBjYXNlcyB0byBCUEYgc2VsZnRlc3RzICh0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfbmV0ZmlsdGVyX2N0eC5jKSBhbmQgZG9lcyBub3QgbW9kaWZ5IGFueSBjb3JlIGtlcm5lbCBzb3VyY2UgY29kZSBvciBkcml2ZXJzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMjA6MjQ6MTQuMzU0MDg1MTY1WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTI2NzgzMTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBlNzU0MjMzZjA2NzUxMmU0MjI2YWExMjFlNDc0ZjU3MjhhMDM2MjZkXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgU2VwIDIgMjA6MjQ6MTMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX25ldGZpbHRlcl9jdHguYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9uZXRmaWx0ZXJfY3R4LmNcXG5pbmRleCBlMmNiYzViZGE2NWVhLi43ZTMwNDMzMTQwOWY1IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9uZXRmaWx0ZXJfY3R4LmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfbmV0ZmlsdGVyX2N0eC5jXFxuQEAgLTExMyw0ICsxMTMsODIgQEAgaW50IHdpdGhfdmFsaWRfY3R4X2FjY2Vzc190ZXN0NihzdHJ1Y3QgYnBmX25mX2N0eCAqY3R4KVxcbiBcXHRyZXR1cm4gdGgtXFx1MDAzZWRlc3QgPT0gYnBmX2h0b25zKDIyKSA/IE5GX0FDQ0VQVCA6IE5GX0RST1A7XFxuIH1cXG4gXFxuK1NFQyhcXFwibmV0ZmlsdGVyXFxcIilcXG4rX19kZXNjcmlwdGlvbihcXFwibmV0ZmlsdGVyIHRlc3QgcHJvZyB3aXRoIHNrYiB3cml0ZSBhY2Nlc3NcXFwiKVxcbitfX2ZhaWx1cmUgX19tc2coXFxcIm9ubHkgcmVhZCBpcyBzdXBwb3J0ZWRcXFwiKVxcbitpbnQgc2tiX2xlbl93cml0ZShzdHJ1Y3QgYnBmX25mX2N0eCAqY3R4KVxcbit7XFxuK1xcdGN0eC1cXHUwMDNlc2tiLVxcdTAwM2VsZW4gPSAxO1xcbitcXHRyZXR1cm4gMTtcXG4rfVxcbitcXG4rU0VDKFxcXCJuZXRmaWx0ZXJcXFwiKVxcbitfX2Rlc2NyaXB0aW9uKFxcXCJuZXRmaWx0ZXIgdGVzdCBwcm9nIHdpdGggc2tiIGRhdGEgd3JpdGUgYWNjZXNzXFxcIilcXG4rX19mYWlsdXJlIF9fbXNnKFxcXCJjYW5ub3Qgd3JpdGUgaW50byByZG9ubHlfdW50cnVzdGVkX21lbVxcXCIpXFxuK2ludCB3aXRoX2ludmFsaWRfZGF0YV93cml0ZV90ZXN0NChzdHJ1Y3QgYnBmX25mX2N0eCAqY3R4KVxcbit7XFxuK1xcdGN0eC1cXHUwMDNlc2tiLVxcdTAwM2VkYXRhWzBdID0gMDtcXG4rXFx0cmV0dXJuIDE7XFxuK31cXG4rXFxuK1NFQyhcXFwibmV0ZmlsdGVyXFxcIilcXG4rX19kZXNjcmlwdGlvbihcXFwibmV0ZmlsdGVyIHRlc3QgcHJvZyB3aXRoIGJwZl9keW5wdHJfd3JpdGVcXFwiKVxcbitfX3N1Y2Nlc3MgX19mYWlsdXJlX3VucHJpdlxcbitfX3JldHZhbCgwKVxcbitpbnQgd2l0aF9keW5wdHJfd3JpdGUoc3RydWN0IGJwZl9uZl9jdHggKmN0eClcXG4re1xcbitcXHRzdHJ1Y3QgX19za19idWZmICpza2IgPSAoc3RydWN0IF9fc2tfYnVmZiAqKWN0eC1cXHUwMDNlc2tiO1xcbitcXHRzdHJ1Y3QgYnBmX2R5bnB0ciBwdHI7XFxuK1xcdHU4IGJ1ZmZlclsxXSA9IHt9O1xcbitcXG4rXFx0aWYgKGJwZl9keW5wdHJfZnJvbV9za2Ioc2tiLCAwLCBcXHUwMDI2cHRyKSlcXG4rXFx0XFx0cmV0dXJuIDE7XFxuK1xcbitcXHRpZiAoYnBmX2R5bnB0cl93cml0ZShcXHUwMDI2cHRyLCAwLCBidWZmZXIsIHNpemVvZihidWZmZXIpLCAwKSlcXG4rXFx0XFx0cmV0dXJuIDA7IC8qIG11c3QgYWx3YXlzIGZhaWwgKi9cXG4rXFxuK1xcdHJldHVybiAxO1xcbit9XFxuK1xcbitTRUMoXFxcIm5ldGZpbHRlclxcXCIpXFxuK19fZGVzY3JpcHRpb24oXFxcIm5ldGZpbHRlciB0ZXN0IHByb2cgd2l0aCBicGZfZHlucHRyX3NsaWNlX3Jkd3JcXFwiKVxcbitfX2ZhaWx1cmUgX19tc2coXFxcInRoZSBwcm9nIGRvZXMgbm90IGFsbG93IHdyaXRlcyB0byBwYWNrZXQgZGF0YVxcXCIpXFxuK2ludCB3aXRoX2R5bnB0cl9yZHdyKHN0cnVjdCBicGZfbmZfY3R4ICpjdHgpXFxuK3tcXG4rXFx0c3RydWN0IF9fc2tfYnVmZiAqc2tiID0gKHN0cnVjdCBfX3NrX2J1ZmYgKiljdHgtXFx1MDAzZXNrYjtcXG4rXFx0dTggYnVmZmVyX2lwaFsyMF0gPSB7fTtcXG4rXFx0c3RydWN0IGJwZl9keW5wdHIgcHRyO1xcbitcXHRzdHJ1Y3QgaXBoZHIgKmlwaDtcXG4rXFxuK1xcdGlmIChicGZfZHlucHRyX2Zyb21fc2tiKHNrYiwgMCwgXFx1MDAyNnB0cikpXFxuK1xcdFxcdHJldHVybiAxO1xcbitcXG4rXFx0aXBoID0gYnBmX2R5bnB0cl9zbGljZV9yZHdyKFxcdTAwMjZwdHIsIDAsIGJ1ZmZlcl9pcGgsIHNpemVvZihidWZmZXJfaXBoKSk7XFxuK1xcdGlmICghaXBoKVxcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFxuK1xcdHJldHVybiAxO1xcbit9XFxuK1xcbitTRUMoXFxcIm5ldGZpbHRlclxcXCIpXFxuK19fZGVzY3JpcHRpb24oXFxcIm5ldGZpbHRlciB0ZXN0IHByb2cgd2l0aCBicGYgZHlucHRyX3NsaWNlX3dyaXRlICsgd3JpdGVcXFwiKVxcbitfX2ZhaWx1cmUgX19tc2coXFxcImNhbm5vdCB3cml0ZSBpbnRvIHJkb25seV9tZW1cXFwiKVxcbitpbnQgd2l0aF9keW5wdHJfc3RvcmUoc3RydWN0IGJwZl9uZl9jdHggKmN0eClcXG4re1xcbitcXHRzdHJ1Y3QgX19za19idWZmICpza2IgPSAoc3RydWN0IF9fc2tfYnVmZiAqKWN0eC1cXHUwMDNlc2tiO1xcbitcXHR1OCBidWZmZXJfaXBoWzIwXSA9IHt9O1xcbitcXHRzdHJ1Y3QgYnBmX2R5bnB0ciBwdHI7XFxuK1xcdHN0cnVjdCBpcGhkciAqaXBoO1xcbitcXG4rXFx0aWYgKGJwZl9keW5wdHJfZnJvbV9za2Ioc2tiLCAwLCBcXHUwMDI2cHRyKSlcXG4rXFx0XFx0cmV0dXJuIDE7XFxuK1xcbitcXHRpcGggPSBicGZfZHlucHRyX3NsaWNlKFxcdTAwMjZwdHIsIDAsIGJ1ZmZlcl9pcGgsIHNpemVvZihidWZmZXJfaXBoKSk7XFxuK1xcdGlmICghaXBoKVxcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFx0aXBoLVxcdTAwM2Vwcm90b2NvbCA9IDQyO1xcbitcXG4rXFx0cmV0dXJuIDE7XFxuK31cXG4rXFxuIGNoYXIgX2xpY2Vuc2VbXSBTRUMoXFxcImxpY2Vuc2VcXFwiKSA9IFxcXCJHUExcXFwiO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQyMDoyNDoxNC43Njc0Mjg5NDRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjIwMjY2MzY0NzU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgdGVzdCBjYXNlcyB0byBCUEYgc2VsZnRlc3RzICh0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfbmV0ZmlsdGVyX2N0eC5jKSBhbmQgZG9lcyBub3QgbW9kaWZ5IGFueSBjb3JlIGtlcm5lbCBzb3VyY2UgY29kZSBvciBkcml2ZXJzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZTc1NDIzM2YwNjc1MTJlNDIyNmFhMTIxZTQ3NGY1NzI4YTAzNjI2ZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgU2VwIDIgMjA6MjQ6MTMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfbmV0ZmlsdGVyX2N0eC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX25ldGZpbHRlcl9jdHguY1xuaW5kZXggZTJjYmM1YmRhNjVlYS4uN2UzMDQzMzE0MDlmNSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9uZXRmaWx0ZXJfY3R4LmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9uZXRmaWx0ZXJfY3R4LmNcbkBAIC0xMTMsNCArMTEzLDgyIEBAIGludCB3aXRoX3ZhbGlkX2N0eF9hY2Nlc3NfdGVzdDYoc3RydWN0IGJwZl9uZl9jdHggKmN0eClcbiBcdHJldHVybiB0aC1cdTAwM2VkZXN0ID09IGJwZl9odG9ucygyMikgPyBORl9BQ0NFUFQgOiBORl9EUk9QO1xuIH1cbiBcbitTRUMoXCJuZXRmaWx0ZXJcIilcbitfX2Rlc2NyaXB0aW9uKFwibmV0ZmlsdGVyIHRlc3QgcHJvZyB3aXRoIHNrYiB3cml0ZSBhY2Nlc3NcIilcbitfX2ZhaWx1cmUgX19tc2coXCJvbmx5IHJlYWQgaXMgc3VwcG9ydGVkXCIpXG4raW50IHNrYl9sZW5fd3JpdGUoc3RydWN0IGJwZl9uZl9jdHggKmN0eClcbit7XG4rXHRjdHgtXHUwMDNlc2tiLVx1MDAzZWxlbiA9IDE7XG4rXHRyZXR1cm4gMTtcbit9XG4rXG4rU0VDKFwibmV0ZmlsdGVyXCIpXG4rX19kZXNjcmlwdGlvbihcIm5ldGZpbHRlciB0ZXN0IHByb2cgd2l0aCBza2IgZGF0YSB3cml0ZSBhY2Nlc3NcIilcbitfX2ZhaWx1cmUgX19tc2coXCJjYW5ub3Qgd3JpdGUgaW50byByZG9ubHlfdW50cnVzdGVkX21lbVwiKVxuK2ludCB3aXRoX2ludmFsaWRfZGF0YV93cml0ZV90ZXN0NChzdHJ1Y3QgYnBmX25mX2N0eCAqY3R4KVxuK3tcbitcdGN0eC1cdTAwM2Vza2ItXHUwMDNlZGF0YVswXSA9IDA7XG4rXHRyZXR1cm4gMTtcbit9XG4rXG4rU0VDKFwibmV0ZmlsdGVyXCIpXG4rX19kZXNjcmlwdGlvbihcIm5ldGZpbHRlciB0ZXN0IHByb2cgd2l0aCBicGZfZHlucHRyX3dyaXRlXCIpXG4rX19zdWNjZXNzIF9fZmFpbHVyZV91bnByaXZcbitfX3JldHZhbCgwKVxuK2ludCB3aXRoX2R5bnB0cl93cml0ZShzdHJ1Y3QgYnBmX25mX2N0eCAqY3R4KVxuK3tcbitcdHN0cnVjdCBfX3NrX2J1ZmYgKnNrYiA9IChzdHJ1Y3QgX19za19idWZmICopY3R4LVx1MDAzZXNrYjtcbitcdHN0cnVjdCBicGZfZHlucHRyIHB0cjtcbitcdHU4IGJ1ZmZlclsxXSA9IHt9O1xuK1xuK1x0aWYgKGJwZl9keW5wdHJfZnJvbV9za2Ioc2tiLCAwLCBcdTAwMjZwdHIpKVxuK1x0XHRyZXR1cm4gMTtcbitcbitcdGlmIChicGZfZHlucHRyX3dyaXRlKFx1MDAyNnB0ciwgMCwgYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwgMCkpXG4rXHRcdHJldHVybiAwOyAvKiBtdXN0IGFsd2F5cyBmYWlsICovXG4rXG4rXHRyZXR1cm4gMTtcbit9XG4rXG4rU0VDKFwibmV0ZmlsdGVyXCIpXG4rX19kZXNjcmlwdGlvbihcIm5ldGZpbHRlciB0ZXN0IHByb2cgd2l0aCBicGZfZHlucHRyX3NsaWNlX3Jkd3JcIilcbitfX2ZhaWx1cmUgX19tc2coXCJ0aGUgcHJvZyBkb2VzIG5vdCBhbGxvdyB3cml0ZXMgdG8gcGFja2V0IGRhdGFcIilcbitpbnQgd2l0aF9keW5wdHJfcmR3cihzdHJ1Y3QgYnBmX25mX2N0eCAqY3R4KVxuK3tcbitcdHN0cnVjdCBfX3NrX2J1ZmYgKnNrYiA9IChzdHJ1Y3QgX19za19idWZmICopY3R4LVx1MDAzZXNrYjtcbitcdHU4IGJ1ZmZlcl9pcGhbMjBdID0ge307XG4rXHRzdHJ1Y3QgYnBmX2R5bnB0ciBwdHI7XG4rXHRzdHJ1Y3QgaXBoZHIgKmlwaDtcbitcbitcdGlmIChicGZfZHlucHRyX2Zyb21fc2tiKHNrYiwgMCwgXHUwMDI2cHRyKSlcbitcdFx0cmV0dXJuIDE7XG4rXG4rXHRpcGggPSBicGZfZHlucHRyX3NsaWNlX3Jkd3IoXHUwMDI2cHRyLCAwLCBidWZmZXJfaXBoLCBzaXplb2YoYnVmZmVyX2lwaCkpO1xuK1x0aWYgKCFpcGgpXG4rXHRcdHJldHVybiAwO1xuK1xuK1x0cmV0dXJuIDE7XG4rfVxuK1xuK1NFQyhcIm5ldGZpbHRlclwiKVxuK19fZGVzY3JpcHRpb24oXCJuZXRmaWx0ZXIgdGVzdCBwcm9nIHdpdGggYnBmIGR5bnB0cl9zbGljZV93cml0ZSArIHdyaXRlXCIpXG4rX19mYWlsdXJlIF9fbXNnKFwiY2Fubm90IHdyaXRlIGludG8gcmRvbmx5X21lbVwiKVxuK2ludCB3aXRoX2R5bnB0cl9zdG9yZShzdHJ1Y3QgYnBmX25mX2N0eCAqY3R4KVxuK3tcbitcdHN0cnVjdCBfX3NrX2J1ZmYgKnNrYiA9IChzdHJ1Y3QgX19za19idWZmICopY3R4LVx1MDAzZXNrYjtcbitcdHU4IGJ1ZmZlcl9pcGhbMjBdID0ge307XG4rXHRzdHJ1Y3QgYnBmX2R5bnB0ciBwdHI7XG4rXHRzdHJ1Y3QgaXBoZHIgKmlwaDtcbitcbitcdGlmIChicGZfZHlucHRyX2Zyb21fc2tiKHNrYiwgMCwgXHUwMDI2cHRyKSlcbitcdFx0cmV0dXJuIDE7XG4rXG4rXHRpcGggPSBicGZfZHlucHRyX3NsaWNlKFx1MDAyNnB0ciwgMCwgYnVmZmVyX2lwaCwgc2l6ZW9mKGJ1ZmZlcl9pcGgpKTtcbitcdGlmICghaXBoKVxuK1x0XHRyZXR1cm4gMDtcbitcdGlwaC1cdTAwM2Vwcm90b2NvbCA9IDQyO1xuK1xuK1x0cmV0dXJuIDE7XG4rfVxuK1xuIGNoYXIgX2xpY2Vuc2VbXSBTRUMoXCJsaWNlbnNlXCIpID0gXCJHUExcIjtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIwOjI0OjE0Ljc2NzQzMDYzNFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE1MTU0OTI2NTkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGlzIEtlcm5lbCBQYXRjaCBmb3IgRnV6emluZyBXb3J0aGluZXNzKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSB0YXNrIGlzIHRvIGV2YWx1YXRlIHRoaXMgcGF0Y2ggY29tbWl0LCBzcGVjaWZpY2FsbHkgdG8gZGV0ZXJtaW5lIGlmIGl0J3Mgd29ydGggZnV6emluZy4gVGhlIHJlcXVlc3QgaXMgYSBrZXJuZWwgcGF0Y2ggcmV2aWV3IGZvciBzeXprYWxsZXIgZnV6emluZywgc28gaXQncyBkZWZlbnNpdmUgUUEgYW5kIGFuYWx5c2lzIG9mIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsLiBUaGlzIGlzIHRvdGFsbHkgd2l0aGluIHNhZmUgdGVycml0b3J5LCBub3RoaW5nIHRvIHdvcnJ5IGFib3V0LlxuXG5GaXJzdCwgSSBzZWUgdGhlIHBhdGNoIG9ubHkgdG91Y2hlcyBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX25ldGZpbHRlcl9jdHguY2AuIE9rYXksIGxldCdzIHZlcmlmeSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGZpbGVzIGNoYW5nZWQgaW4gdGhlIEhFQUQuIEknbGwgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdCB0aGlzIGlzIHRoZSAqb25seSogZmlsZSBtb2RpZmllZCBpbiB0aGlzIGNvbW1pdCB1c2luZyBhIHF1aWNrIHRvb2wgb3IgYGdpdCBsb2dgIC8gYGdpdCBkaWZmYC4gSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIGl0J3MgYSBnb29kIGhhYml0LlxuXG5Ob3csIHdhaXQgYSBzZWNvbmQsIGxldCdzIG1ha2UgZG91Ymx5IHN1cmUgdGhhdCB0aGlzIGlzIHRoZSBvbmx5IGZpbGUgbW9kaWZpZWQgaW4gdGhlIGNvbW1pdCwgYmVmb3JlIHJlbHlpbmcgb24gSEVBRC4gVGltZSB0byB1c2UgbXkgdG9vbHMgdG8gdmVyaWZ5LCBwcm9iYWJseSBgcmVhZC1maWxlYCBvciBgZ3JlcHBlcmAgd2lsbCBkby5cblxuQWgsIEkgbmVlZCB0byBtYWtlIGEga2V5IHZlcmlmaWNhdGlvbiBoZXJlLiBJcyB0aGlzIGB0b29scy90ZXN0aW5nLy4uLmAgY29kZSBldmVuIHBhcnQgb2YgdGhlIGtlcm5lbCBydW50aW1lPyBObywgaXQncyB1bmRlciBgdG9vbHMvYCwgbWVhbmluZyBpdCdzIHVzZXJzcGFjZSBzZWxmdGVzdHMgYW5kIHRvb2xzLiBPa2F5LCB0aGF0J3MgaW1wb3J0YW50IGNvbnRleHQuXG5cbk5vdywgd2hhdCBhcmUgdGhlIHNwZWNpZmljIGNyaXRlcmlhIHRvIGZsYWcgdGhpcyBhcyBcIm5vdCB3b3J0aCBmdXp6aW5nXCI/IFJpZ2h0LCBJIHJlbWVtYmVyOiBjaGFuZ2VzIHRvIGRvY3VtZW50YXRpb24sIEtjb25maWcsIGNvbW1lbnRzLCBwdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzIGxpa2UgbG9nZ2luZywgY2hhbmdlcyB0byBjb25zdGFudHMgdGhhdCBkb24ndCBhbHRlciBleGVjdXRpb24sIHVucmVhY2hhYmxlIGNvZGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBjZXJ0YWluIGRyaXZlcnMsIGFuZCBkcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzLiBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIHBhdGNoIGFnYWluc3QgdGhlc2UgZ3VpZGVsaW5lcy5cblxuU2luY2UgdGhpcyBpcyBpbiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYCwgaXQgZG9lc24ndCBtb2RpZnkgdGhlIGtlcm5lbCBiaW5hcnkgaXRzZWxmLiBUaGF0IG1lYW5zIGl0IGRvZXNuJ3QgbWVldCB0aGUgcHJpbWFyeSBjcml0ZXJpYSBmb3IgZnV6emluZy4gSSBzdGlsbCBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZXJlIGFyZSBubyAqb3RoZXIqIGNoYW5nZXMgaW4gdGhlIHRyZWUgdG8gY29uZmlybSB0aGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTAyLCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDY5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMjA6MjQ6MjkuOTIyMzU5NzM0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5NTM5NjU2MjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwid2l0aF9keW5wdHJfc3RvcmVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwidG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX25ldGZpbHRlcl9jdHguYz0xNzU9X19mYWlsdXJlIF9fbXNnKFxcXCJjYW5ub3Qgd3JpdGUgaW50byByZG9ubHlfbWVtXFxcIilcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfbmV0ZmlsdGVyX2N0eC5jOjE3NjppbnQgd2l0aF9keW5wdHJfc3RvcmUoc3RydWN0IGJwZl9uZl9jdHggKmN0eClcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfbmV0ZmlsdGVyX2N0eC5jLTE3Ny17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIwOjI0OjMxLjg3NjMzMjE2N1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjMxNTc0MzQyNDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGp1c3QgYW5hbHl6ZWQgdGhpcyBkaWZmLiBJdCdzIGZvY3VzZWQgZW50aXJlbHkgb24gY2hhbmdlcyB3aXRoaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9uZXRmaWx0ZXJfY3R4LmNgLiBUaGF0IG1lYW5zIHRoaXMgaXMgYSBCUEYgc2VsZnRlc3QsIHNwZWNpZmljYWxseSBkZXNpZ25lZCB0byBjaGVjayB0aGUgbmV0ZmlsdGVyIGNvbnRleHQgYWNjZXNzIGNvbnN0cmFpbnRzIHZpYSB0aGUgdmVyaWZpZXIsIGFuZCB0aGF0J3MgYWxsIGl0IGRvZXMuIEl0J3MgKm5vdCogdG91Y2hpbmcgYW55IGtlcm5lbCBjb2RlLCBub3QgdGhlIGNvcmUga2VybmVsLCBub3IgYW55IG1vZHVsZXMuIEl0J3MganVzdCBhZGRpbmcgbW9yZSB0ZXN0IGNhc2VzIGZvciB0aGUgdmVyaWZpZXIuXG5cblRoZXJlZm9yZSwgdGhpcyBpcyBhIGNsZWFyIFwibm9cIiBvbiBmdXp6aW5nLiBJdCdzIGEgdGVzdCBjYXNlLCB3aGljaCBpcyBhIGdvb2QgdGhpbmcsIGJ1dCBpdCdzIG5vdCBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBrZXJuZWwsIHNvIHRoZXJlJ3Mgbm90aGluZyB0byBmdXp6LlxuXG5JIG5lZWQgdG8gY29uZmlybSBteSBmaW5kaW5ncyBhZ2FpbnN0IG15IGBzZXQtcmVzdWx0c2AgcmVxdWlyZW1lbnRzOlxuLSBgRW5hYmxlQ29uZmlnc2A6IEVtcHR5LCBzaW5jZSB3ZSdyZSBub3QgZW5hYmxpbmcgYW55dGhpbmcuXG4tIGBGb2N1c1N5bWJvbHNgOiBFbXB0eSwgYWdhaW4sIG5vdGhpbmcgdG8gZm9jdXMgb24uXG4tIGBSZWFzb25pbmdgOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgdGVzdCBjYXNlcyB0byB0aGUgQlBGIHNlbGZ0ZXN0cyAodG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX25ldGZpbHRlcl9jdHguYykgYW5kIG1ha2VzIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgTGludXgga2VybmVsLlwiIFRoYXQgc2hvdWxkIGJlIGNsZWFyIGFuZCBjb25jaXNlLlxuLSBgV29ydGhGdXp6aW5nYDogRmFsc2UsIGEgZmlybSBcIm5vLlwiXG5cbkFscmlnaHQsIEknbSBjb25maWRlbnQgaW4gdGhpcyBhc3Nlc3NtZW50LiBUaW1lIHRvIGNhbGwgYHNldC1yZXN1bHRzYCB3aXRoIHRoZXNlIGZpbmRpbmdzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTQ0LCJPdXRwdXRUb2tlbnMiOjc5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIwOjI0OjM1LjAzMzc2ODMyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzI2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgdGVzdCBjYXNlcyB0byBCUEYgc2VsZnRlc3RzICh0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfbmV0ZmlsdGVyX2N0eC5jKSBhbmQgZG9lcyBub3QgbW9kaWZ5IGFueSBjb3JlIGtlcm5lbCBzb3VyY2UgY29kZSBvciBkcml2ZXJzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBhZGRzIHRlc3QgY2FzZXMgdG8gQlBGIHNlbGZ0ZXN0cyAodG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX25ldGZpbHRlcl9jdHguYykgYW5kIGRvZXMgbm90IG1vZGlmeSBhbnkgY29yZSBrZXJuZWwgc291cmNlIGNvZGUgb3IgZHJpdmVycy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIwOjI0OjM1LjAzMzgwMDk1WiIsIlNlcSI6NywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMyMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowv9tkd[1] Phase: Running StartedAt: 2026-09-02 20:24:46 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv9tkd[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-02 20:24:46 +0000 UTC FinishedAt: 2026-09-02 20:24:51 +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,}