Name: series-workflowrfb89 Phase: Failed StartedAt: 2026-08-03 01:47:13 +0000 UTC FinishedAt: 2026-08-03 02:01:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrfb89[0] Phase: Succeeded StartedAt: 2026-08-03 01:47:13 +0000 UTC FinishedAt: 2026-08-03 02:01:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrfb89[0].run-triage Phase: Succeeded StartedAt: 2026-08-03 01:47:13 +0000 UTC FinishedAt: 2026-08-03 02:01:10 +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+CgkJCTx0ZD4yMDI2LzA4LzAzIDAyOjAwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBhIHN5bnRoZXRpYyBiZW5jaG1hcmsgbW9kdWxlIChgdGVzdF92bXN0YXRgKSBhbmQgaXRzIGFzc29jaWF0ZWQga3NlbGZ0ZXN0IHNjcmlwdHMuIFRoZSBtb2R1bGUgZXhlY3V0ZXMgYSBmaXhlZCBsb29wIG9uIGluaXRpYWxpemF0aW9uIHRvIG1lYXN1cmUgcGVyZm9ybWFuY2UgYW5kIGltbWVkaWF0ZWx5IHVubG9hZHMgKG9yIHJldHVybnMgMCBpZiBidWlsdC1pbikuIEl0IGRvZXMgbm90IGV4cG9zZSBhbnkgaW50ZXJmYWNlcyAoZS5nLiwgaW9jdGxzLCBzeXNmcywgZGVidWdmcykgdG8gdXNlcnNwYWNlLCBtZWFuaW5nIHRoZXJlIGlzIG5vIGF0dGFjayBzdXJmYWNlIG9yIGlucHV0IGZvciBhIGZ1enplciB0byBleHBsb3JlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMjowMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDNiMDA1NGFlOGM0OTA5MTZhMTUxNjJiODFjMGU5NjI2OGYwNTIyNTFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAzIDAyOjAwOjM0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlNcbmluZGV4IDUxMTRlNmRiNzMwN2QuLmM3NjUxNGQ2YzUwM2IgMTAwNjQ0XG4tLS0gYS9NQUlOVEFJTkVSU1xuJiM0MzsmIzQzOyYjNDM7IGIvTUFJTlRBSU5FUlNcbkBAIC0xNzAwNCw2ICYjNDM7MTcwMDQsNyBAQCBGOlx0bW0vc3BhcnNlLmNcbiBGOlx0bW0vdXRpbC5jXG4gRjpcdG1tL3ZtcHJlc3N1cmUuY1xuIEY6XHRtbS92bXN0YXQuY1xuJiM0MztGOlx0bGliL3Rlc3Rfdm1zdGF0LmNcbiBOOlx0aW5jbHVkZVxcL2xpbnV4XFwvcGFnZVstX11bYS16QS1aXSpcbiBcbiBNRU1PUlkgTUFOQUdFTUVOVCAtIEVYRUNNRU1cbmRpZmYgLS1naXQgYS9saWIvS2NvbmZpZy5kZWJ1ZyBiL2xpYi9LY29uZmlnLmRlYnVnXG5pbmRleCAxMjQ0ZGNhYzIyOTRhLi42ZDc0M2M4ZTI3ZmFmIDEwMDY0NFxuLS0tIGEvbGliL0tjb25maWcuZGVidWdcbiYjNDM7JiM0MzsmIzQzOyBiL2xpYi9LY29uZmlnLmRlYnVnXG5AQCAtMzQyNyw2ICYjNDM7MzQyNywxNiBAQCBjb25maWcgVEVTVF9LRVhFQ19IQU5ET1ZFUlxuIFxuIFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuIFxuJiM0Mztjb25maWcgVEVTVF9WTVNUQVRcbiYjNDM7XHR0cmlzdGF0ZSBcJiMzNDtWTSBTdGF0aXN0aWNzIEJlbmNobWFya1wmIzM0O1xuJiM0MztcdGRlZmF1bHQgblxuJiM0MztcdGhlbHBcbiYjNDM7XHQgIEEgc3ludGhldGljIGJlbmNobWFyayBtZWFzdXJpbmcgdGhlIHBlcmZvcm1hbmNlIG9mIFZNIHN0YXRpc3RpY3MsXG4mIzQzO1x0ICB1c2VmdWwgdG8gYW5hbHl6ZSBhbnkgaW1wcm92ZW1lbnRzIG9yIHJlZ3Jlc3Npb25zIGluIGZ1bmN0aW9ucyB0aGF0XG4mIzQzO1x0ICBhcmUgZnJlcXVlbnRseSB1c2VkIGluIGhvdCBjb2RlIHBhdGhzLlxuJiM0MztcbiYjNDM7XHQgIElmIHVuc3VyZSwgc2F5IE4uXG4mIzQzO1xuIGNvbmZpZyBSQVRFTElNSVRfS1VOSVRfVEVTVFxuIFx0dHJpc3RhdGUgXCYjMzQ7S1VuaXQgVGVzdCBmb3IgY29ycmVjdG5lc3MgYW5kIHN0cmVzcyBvZiByYXRlbGltaXRcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuIFx0ZGVwZW5kcyBvbiBLVU5JVFxuZGlmZiAtLWdpdCBhL2xpYi9NYWtlZmlsZSBiL2xpYi9NYWtlZmlsZVxuaW5kZXggN2Y3NWNjNmVkZjk0YS4uNWYzZWJhYmQwMjI0MiAxMDA2NDRcbi0tLSBhL2xpYi9NYWtlZmlsZVxuJiM0MzsmIzQzOyYjNDM7IGIvbGliL01ha2VmaWxlXG5AQCAtMTA1LDYgJiM0MzsxMDUsNyBAQCBvYmotJChDT05GSUdfVEVTVF9GUkVFX1BBR0VTKSAmIzQzOz0gdGVzdF9mcmVlX3BhZ2VzLm9cbiBvYmotJChDT05GSUdfVEVTVF9SRUZfVFJBQ0tFUikgJiM0Mzs9IHRlc3RfcmVmX3RyYWNrZXIub1xuIG9iai0kKENPTkZJR19URVNUX09CSlBPT0wpICYjNDM7PSB0ZXN0X29ianBvb2wub1xuIG9iai0kKENPTkZJR19URVNUX0tFWEVDX0hBTkRPVkVSKSAmIzQzOz0gdGVzdF9raG8ub1xuJiM0MztvYmotJChDT05GSUdfVEVTVF9WTVNUQVQpICYjNDM7PSB0ZXN0X3Ztc3RhdC5vXG4gXG4gb2JqLSQoQ09ORklHX1RFU1RfRlBVKSAmIzQzOz0gdGVzdF9mcHUub1xuIHRlc3RfZnB1LXkgOj0gdGVzdF9mcHVfZ2x1ZS5vIHRlc3RfZnB1X2ltcGwub1xuZGlmZiAtLWdpdCBhL2xpYi90ZXN0X3Ztc3RhdC5jIGIvbGliL3Rlc3Rfdm1zdGF0LmNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi5lZTQ4NzJhNGM4MmRiXG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi9saWIvdGVzdF92bXN0YXQuY1xuQEAgLTAsMCAmIzQzOzEsMTAwIEBAXG4mIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9yLWxhdGVyXG4mIzQzOy8qXG4mIzQzOyAqIFRlc3QgbW9kdWxlIGZvciBpbi1rZXJuZWwgc3ludGhldGljIHZtIHN0YXRpc3RpY3MgcGVyZm9ybWFuY2UuXG4mIzQzOyAqXG4mIzQzOyAqIGV4ZWN1dGVcbiYjNDM7ICpcbiYjNDM7ICpcdG1vZHByb2JlIHRlc3Rfdm1zdGF0XG4mIzQzOyAqXG4mIzQzOyAqIHRvIHJ1biB0aGlzIHRlc3RcbiYjNDM7ICpcbiYjNDM7ICogKEMpIDIwMDkgTGludXggRm91bmRhdGlvbiwgQ2hyaXN0b3BoIExhbWV0ZXIgXHUwMDNjY2xAZ2VudHdvLm9yZ1x1MDAzZVxuJiM0MzsgKi9cbiYjNDM7XG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2ppZmZpZXMuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9jb21waWxlci5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2luaXQuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9tb2R1bGUuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9tbS5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2FzbS90aW1leC5oXHUwMDNlXG4mIzQzO1xuJiM0MzsjZGVmaW5lIFRFU1RfQ09VTlQgMTAwMDBcbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgdm1zdGF0X3Rlc3RfaW5pdCh2b2lkKVxuJiM0Mzt7XG4mIzQzO1x0dW5zaWduZWQgaW50IGk7XG4mIzQzO1x0Y3ljbGVzX3QgdGltZTEsIHRpbWUyLCB0aW1lO1xuJiM0MztcdGludCByZW07XG4mIzQzO1x0c3RydWN0IHBhZ2UgKnBhZ2UgPSBhbGxvY19wYWdlKEdGUF9LRVJORUwpO1xuJiM0MztcbiYjNDM7XHRpZiAoIXBhZ2UpXG4mIzQzO1x0XHRyZXR1cm4gLUVOT01FTTtcbiYjNDM7XG4mIzQzO1x0cHJfYWxlcnQoXCYjMzQ7Vk1zdGF0IHRlc3RpbmdcXG5cJiMzNDspO1xuJiM0MztcdHByX2FsZXJ0KFwmIzM0Oz09PT09PT09PT09PT09PT09PT09PVxcblwmIzM0Oyk7XG4mIzQzO1x0cHJfYWxlcnQoXCYjMzQ7MS4gaW5jX3pvbmVfcGFnZV9zdGF0ZSgpIHRoZW4gZGVjX3pvbmVfcGFnZV9zdGF0ZSgpXFxuXCYjMzQ7KTtcbiYjNDM7XHR0aW1lMSA9IGdldF9jeWNsZXMoKTtcbiYjNDM7XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBURVNUX0NPVU5UOyBpJiM0MzsmIzQzOylcbiYjNDM7XHRcdGluY196b25lX3BhZ2Vfc3RhdGUocGFnZSwgTlJfRlJFRV9DTUFfUEFHRVMpO1xuJiM0MztcbiYjNDM7XHR0aW1lMiA9IGdldF9jeWNsZXMoKTtcbiYjNDM7XHR0aW1lID0gdGltZTIgLSB0aW1lMTtcbiYjNDM7XG4mIzQzO1x0cHJfYWxlcnQoXCYjMzQ7JWkgdGltZXMgaW5jX3pvbmVfcGFnZV9zdGF0ZSgpIFwmIzM0OywgaSk7XG4mIzQzO1x0dGltZSA9IGRpdl91NjRfcmVtKHRpbWUsIFRFU1RfQ09VTlQsIFx1MDAyNnJlbSk7XG4mIzQzO1x0cHJfY29udChcJiMzNDstXHUwMDNlICVsbHUgY3ljbGVzIFwmIzM0OywgKHVuc2lnbmVkIGxvbmcgbG9uZykgdGltZSk7XG4mIzQzO1xuJiM0MztcdHRpbWUxID0gZ2V0X2N5Y2xlcygpO1xuJiM0MztcdGZvciAoaSA9IDA7IGkgXHUwMDNjIFRFU1RfQ09VTlQ7IGkmIzQzOyYjNDM7KVxuJiM0MztcdFx0ZGVjX3pvbmVfcGFnZV9zdGF0ZShwYWdlLCBOUl9GUkVFX0NNQV9QQUdFUyk7XG4mIzQzO1xuJiM0MztcdHRpbWUyID0gZ2V0X2N5Y2xlcygpO1xuJiM0MztcdHRpbWUgPSB0aW1lMiAtIHRpbWUxO1xuJiM0MztcbiYjNDM7XHRwcl9jb250KFwmIzM0O19fZGVjX3pfcF9zKCkgXCYjMzQ7KTtcbiYjNDM7XHR0aW1lID0gZGl2X3U2NF9yZW0odGltZSwgVEVTVF9DT1VOVCwgXHUwMDI2cmVtKTtcbiYjNDM7XHRwcl9jb250KFwmIzM0Oy1cdTAwM2UgJWxsdSBjeWNsZXNcXG5cJiMzNDssICAodW5zaWduZWQgbG9uZyBsb25nKSB0aW1lKTtcbiYjNDM7XG4mIzQzO1x0cHJfYWxlcnQoXCYjMzQ7Mi4gaW5jX3pvbmVfcGFnZV9zdGF0ZSgpL2RlY196b25lX3BhZ2Vfc3RhdGUoKVxcblwmIzM0Oyk7XG4mIzQzO1x0dGltZTEgPSBnZXRfY3ljbGVzKCk7XG4mIzQzO1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgVEVTVF9DT1VOVDsgaSYjNDM7JiM0MzspIHtcbiYjNDM7XHRcdGluY196b25lX3BhZ2Vfc3RhdGUocGFnZSwgTlJfRlJFRV9DTUFfUEFHRVMpO1xuJiM0MztcdFx0ZGVjX3pvbmVfcGFnZV9zdGF0ZShwYWdlLCBOUl9GUkVFX0NNQV9QQUdFUyk7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHR0aW1lMiA9IGdldF9jeWNsZXMoKTtcbiYjNDM7XHR0aW1lID0gdGltZTIgLSB0aW1lMTtcbiYjNDM7XG4mIzQzO1x0cHJfYWxlcnQoXCYjMzQ7JWkgdGltZXMgaW5jL2RlYyBcJiMzNDssIGkpO1xuJiM0MztcdHRpbWUgPSBkaXZfdTY0X3JlbSh0aW1lLCBURVNUX0NPVU5ULCBcdTAwMjZyZW0pO1xuJiM0MztcdHByX2NvbnQoXCYjMzQ7LVx1MDAzZSAlbGx1IGN5Y2xlc1xcblwmIzM0OywgICh1bnNpZ25lZCBsb25nIGxvbmcpIHRpbWUpO1xuJiM0MztcbiYjNDM7XHRwcl9hbGVydChcJiMzNDszLiBjb3VudF92bV9ldmVudCgpXFxuXCYjMzQ7KTtcbiYjNDM7XHR0aW1lMSA9IGdldF9jeWNsZXMoKTtcbiYjNDM7XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBURVNUX0NPVU5UOyBpJiM0MzsmIzQzOylcbiYjNDM7XHRcdGNvdW50X3ZtX2V2ZW50KFNMQUJTX1NDQU5ORUQpO1xuJiM0MztcbiYjNDM7XHR0aW1lMiA9IGdldF9jeWNsZXMoKTtcbiYjNDM7XHR0aW1lID0gdGltZTIgLSB0aW1lMTtcbiYjNDM7XG4mIzQzO1x0Y291bnRfdm1fZXZlbnRzKFNMQUJTX1NDQU5ORUQsIC1URVNUX0NPVU5UKTtcbiYjNDM7XHRwcl9hbGVydChcJiMzNDslaSBjb3VudF92bV9ldmVudHMgXCYjMzQ7LCBpKTtcbiYjNDM7XHR0aW1lID0gZGl2X3U2NF9yZW0odGltZSwgVEVTVF9DT1VOVCwgXHUwMDI2cmVtKTtcbiYjNDM7XHRwcl9jb250KFwmIzM0Oy1cdTAwM2UgJWxsdSBjeWNsZXNcXG5cJiMzNDssICAodW5zaWduZWQgbG9uZyBsb25nKSB0aW1lKTtcbiYjNDM7XHRfX2ZyZWVfcGFnZShwYWdlKTtcbiYjNDM7XG4mIzQzOyAgICAgICAgLyogRmFpbCB3aWxsIGRpcmVjdGx5IHVubG9hZCB0aGUgbW9kdWxlICovXG4mIzQzOyAgICAgICAgcmV0dXJuIElTX0JVSUxUSU4oQ09ORklHX1RFU1RfVk1TVEFUKSA/IDAgOiAtRUFHQUlOO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCB2bXN0YXRfdGVzdF9leGl0KHZvaWQpXG4mIzQzO3tcbiYjNDM7XHRwcl9hbGVydChcJiMzNDt0ZXN0IGV4aXRcXG5cJiMzNDspO1xuJiM0Mzt9XG4mIzQzO1xuJiM0Mzttb2R1bGVfaW5pdCh2bXN0YXRfdGVzdF9pbml0KVxuJiM0Mzttb2R1bGVfZXhpdCh2bXN0YXRfdGVzdF9leGl0KVxuJiM0MztcbiYjNDM7TU9EVUxFX0xJQ0VOU0UoXCYjMzQ7R1BMXCYjMzQ7KTtcbiYjNDM7TU9EVUxFX0FVVEhPUihcJiMzNDtDaHJpc3RvcGggTGFtZXRlclwmIzM0Oyk7XG4mIzQzO01PRFVMRV9ERVNDUklQVElPTihcJiMzNDtWTSBzdGF0aXN0aWNzIHRlc3RcJiMzNDspO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL01ha2VmaWxlIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vTWFrZWZpbGVcbmluZGV4IGU2ZGY5NjhmMDk3MWMuLjBkMzg2YzhiODNiNzAgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9NYWtlZmlsZVxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vTWFrZWZpbGVcbkBAIC0xNzMsOCAmIzQzOzE3MywxMCBAQCBURVNUX1BST0dTICYjNDM7PSBrc2Z0X3RocC5zaFxuIFRFU1RfUFJPR1MgJiM0Mzs9IGtzZnRfdXNlcmZhdWx0ZmQuc2hcbiBURVNUX1BST0dTICYjNDM7PSBrc2Z0X3ZtYV9tZXJnZS5zaFxuIFRFU1RfUFJPR1MgJiM0Mzs9IGtzZnRfdm1hbGxvYy5zaFxuJiM0MztURVNUX1BST0dTICYjNDM7PSBrc2Z0X3Ztc3RhdC5zaFxuIFxuIFRFU1RfRklMRVMgOj0gdGVzdF92bWFsbG9jLnNoXG4mIzQzO1RFU1RfRklMRVMgOj0gdGVzdF92bXN0YXQuc2hcbiBURVNUX0ZJTEVTICYjNDM7PSB0ZXN0X2htbS5zaFxuIFRFU1RfRklMRVMgJiM0Mzs9IHZhX2hpZ2hfYWRkcl9zd2l0Y2guc2hcbiBURVNUX0ZJTEVTICYjNDM7PSBjaGFyZ2VfcmVzZXJ2ZWRfaHVnZXRsYi5zaFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2NvbmZpZyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2NvbmZpZ1xuaW5kZXggMDZmNzhiZDIzMmUyZS4uMTZlMDJhMmNiMmExYSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2NvbmZpZ1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vY29uZmlnXG5AQCAtMiw2ICYjNDM7Miw3IEBAIENPTkZJR19TWVNWSVBDPXlcbiBDT05GSUdfVVNFUkZBVUxURkQ9eVxuIENPTkZJR19QVEVfTUFSS0VSX1VGRkRfV1A9eVxuIENPTkZJR19URVNUX1ZNQUxMT0M9bVxuJiM0MztDT05GSUdfVEVTVF9WTVNUQVQ9bVxuIENPTkZJR19ERVZJQ0VfUFJJVkFURT15XG4gQ09ORklHX1RFU1RfSE1NPW1cbiBDT05GSUdfR1VQX1RFU1Q9eVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2tzZnRfdm1zdGF0LnNoIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0va3NmdF92bXN0YXQuc2hcbm5ldyBmaWxlIG1vZGUgMTAwNzU1XG5pbmRleCAwMDAwMDAwMDAwMDAwLi40ZTQ3MTEyZjk5MjUxXG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9rc2Z0X3Ztc3RhdC5zaFxuQEAgLTAsMCAmIzQzOzEsNCBAQFxuJiM0MzsjIS9iaW4vc2ggLWVcbiYjNDM7IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuJiM0MztcbiYjNDM7Li9ydW5fdm10ZXN0cy5zaCAtdCB2bXN0YXRcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9ydW5fdm10ZXN0cy5zaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL3J1bl92bXRlc3RzLnNoXG5pbmRleCA4YzI5NmRlZGYwNDc0Li5jNTQxNmVkYTRjMmU0IDEwMDc1NVxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vcnVuX3ZtdGVzdHMuc2hcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL3J1bl92bXRlc3RzLnNoXG5AQCAtNDcsNiAmIzQzOzQ3LDggQEAgc2VwYXJhdGVkIGJ5IHNwYWNlczpcbiBcdHRlc3RzIGZvciB2ZXJ5IGxhcmdlIHZpcnR1YWwgYWRkcmVzcyBzcGFjZVxuIC0gdm1hbGxvY1xuIFx0dm1hbGxvYyBzbW9rZSB0ZXN0c1xuJiM0MzstIHZtc3RhdFxuJiM0MztcdHZtc3RhdCBwZXJmb3JtYW5jZSB0ZXN0XG4gLSBobW1cbiBcdGhtbSBzbW9rZSB0ZXN0c1xuIC0gbWFkdl9ndWFyZFxuQEAgLTMzOCw2ICYjNDM7MzQwLDkgQEAgZmkgIyBWQUREUjY0XG4gIyB2bWFsbG9jIHN0YWJpbGl0eSBzbW9rZSB0ZXN0XG4gQ0FURUdPUlk9XCYjMzQ7dm1hbGxvY1wmIzM0OyBydW5fdGVzdCBiYXNoIC4vdGVzdF92bWFsbG9jLnNoIHNtb2tlXG4gXG4mIzQzOyMgdm1zdGF0IHBlcmZvcm1hbmNlIHRlc3RcbiYjNDM7Q0FURUdPUlk9XCYjMzQ7dm1zdGF0XCYjMzQ7IHJ1bl90ZXN0IGJhc2ggLi90ZXN0X3Ztc3RhdC5zaCBwZXJmb3JtYW5jZVxuJiM0MztcbiBDQVRFR09SWT1cJiMzNDttcmVtYXBcJiMzNDsgcnVuX3Rlc3QgLi9tcmVtYXBfZG9udHVubWFwXG4gXG4gQ0FURUdPUlk9XCYjMzQ7aG1tXCYjMzQ7IHJ1bl90ZXN0IGJhc2ggLi90ZXN0X2htbS5zaCBzbW9rZVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL3Rlc3Rfdm1zdGF0LnNoIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vdGVzdF92bXN0YXQuc2hcbm5ldyBmaWxlIG1vZGUgMTAwNzU1XG5pbmRleCAwMDAwMDAwMDAwMDAwLi5hNGZjN2Y3ZmVjMTZjXG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS90ZXN0X3Ztc3RhdC5zaFxuQEAgLTAsMCAmIzQzOzEsNzEgQEBcbiYjNDM7IyEvYmluL2Jhc2hcbiYjNDM7IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuJiM0MzsjXG4mIzQzOyMgVGhpcyBpcyBhIHRlc3Qgc2NyaXB0IGZvciB0aGUga2VybmVsIHRlc3QgbW9kdWxlIHRvIG1lYXN1cmUgcGVyZm9ybWFuY2Ugb2YgVk1cbiYjNDM7IyBzdGF0aXN0aWNzLiAgSXQgc2ltcGx5IGxvYWRzIHRoZSBrZXJuZWwgbW9kdWxlLlxuJiM0MztcbiYjNDM7VEVTVF9OQU1FPVwmIzM0O3Ztc3RhdFwmIzM0O1xuJiM0MztEUklWRVI9XCYjMzQ7dGVzdF8ke1RFU1RfTkFNRX1cJiMzNDtcbiYjNDM7XG4mIzQzOyMgS3NlbGZ0ZXN0IGZyYW1ld29yayByZXF1aXJlbWVudCAtIFNLSVAgY29kZSBpcyA0LlxuJiM0Mztrc2Z0X3NraXA9NFxuJiM0MztcbiYjNDM7Y2hlY2tfdGVzdF9yZXF1aXJlbWVudHMoKVxuJiM0Mzt7XG4mIzQzO1x0dWlkPSQoaWQgLXUpXG4mIzQzO1x0aWYgWyAkdWlkIC1uZSAwIF07IHRoZW5cbiYjNDM7XHRcdGVjaG8gXCYjMzQ7JDA6IE11c3QgYmUgcnVuIGFzIHJvb3RcJiMzNDtcbiYjNDM7XHRcdGV4aXQgJGtzZnRfc2tpcFxuJiM0MztcdGZpXG4mIzQzO1xuJiM0MztcdGlmICEgd2hpY2ggbW9kcHJvYmUgXHUwMDNlIC9kZXYvbnVsbCAyXHUwMDNlXHUwMDI2MTsgdGhlblxuJiM0MztcdFx0ZWNobyBcJiMzNDskMDogWW91IG5lZWQgbW9kcHJvYmUgaW5zdGFsbGVkXCYjMzQ7XG4mIzQzO1x0XHRleGl0ICRrc2Z0X3NraXBcbiYjNDM7XHRmaVxuJiM0MztcbiYjNDM7XHRpZiAhIG1vZGluZm8gJERSSVZFUiBcdTAwM2UgL2Rldi9udWxsIDJcdTAwM2VcdTAwMjYxOyB0aGVuXG4mIzQzO1x0XHRlY2hvIFwmIzM0OyQwOiBZb3UgbXVzdCBoYXZlIHRoZSBmb2xsb3dpbmcgZW5hYmxlZCBpbiB5b3VyIGtlcm5lbDpcJiMzNDtcbiYjNDM7XHRcdGVjaG8gXCYjMzQ7Q09ORklHX1RFU1RfVk1TVEFUPW1cJiMzNDtcbiYjNDM7XHRcdGV4aXQgJGtzZnRfc2tpcFxuJiM0MztcdGZpXG4mIzQzO31cbiYjNDM7XG4mIzQzO3J1bl9wZXJmb3JtYW5jZV9jaGVjaygpXG4mIzQzO3tcbiYjNDM7XHRlY2hvIFwmIzM0O1J1biBwZXJmb3JtYW5jZSB0ZXN0cyB0byBldmFsdWF0ZSBob3cgZmFzdCB2bXN0YXQgaXMuXCYjMzQ7XG4mIzQzO1xuJiM0MztcdG1vZHByb2JlICREUklWRVIgXHUwMDNlIC9kZXYvbnVsbCAyXHUwMDNlXHUwMDI2MVxuJiM0MztcdGVjaG8gXCYjMzQ7RG9uZS5cJiMzNDtcbiYjNDM7XHRlY2hvIFwmIzM0O0NoZWNrIHRoZSBrZXJuZWwgbWVzc2FnZSBidWZmZXIgdG8gc2VlIHRoZSBzdW1tYXJ5LlwmIzM0O1xuJiM0Mzt9XG4mIzQzO1xuJiM0Mzt1c2FnZSgpXG4mIzQzO3tcbiYjNDM7XHRlY2hvIC1uIFwmIzM0O1VzYWdlOiAkMCBwZXJmb3JtYW5jZVwmIzM0O1xuJiM0MztcdGVjaG9cbiYjNDM7XHRlY2hvIFwmIzM0O0V4YW1wbGUgdXNhZ2U6XCYjMzQ7XG4mIzQzO1x0ZWNob1xuJiM0MztcdGVjaG8gXCYjMzQ7IyBTaG93cyBoZWxwIG1lc3NhZ2VcJiMzNDtcbiYjNDM7XHRlY2hvIFwmIzM0Oy4vJHtEUklWRVJ9LnNoXCYjMzQ7XG4mIzQzO1x0ZWNob1xuJiM0MztcdGVjaG8gXCYjMzQ7IyBQZXJmb3JtYW5jZSBhbmFseXNpc1wmIzM0O1xuJiM0MztcdGVjaG8gXCYjMzQ7Li8ke0RSSVZFUn0uc2ggcGVyZm9ybWFuY2VcJiMzNDtcbiYjNDM7XHRlY2hvXG4mIzQzO1x0ZXhpdCAwXG4mIzQzO31cbiYjNDM7XG4mIzQzO2Z1bmN0aW9uIHJ1bl90ZXN0KClcbiYjNDM7e1xuJiM0MztcdGlmIFsgJCMgLWVxIDAgXTsgdGhlblxuJiM0MztcdFx0dXNhZ2VcbiYjNDM7XHRlbHNlXG4mIzQzO1x0XHRpZiBbWyBcJiMzNDskMVwmIzM0OyA9IFwmIzM0O3BlcmZvcm1hbmNlXCYjMzQ7IF1dOyB0aGVuXG4mIzQzO1x0XHRcdHJ1bl9wZXJmb3JtYW5jZV9jaGVja1xuJiM0MztcdFx0ZmlcbiYjNDM7XHRmaVxuJiM0Mzt9XG4mIzQzO1xuJiM0MztjaGVja190ZXN0X3JlcXVpcmVtZW50c1xuJiM0MztydW5fdGVzdCAkQFxuJiM0MztcbiYjNDM7ZXhpdCAwXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDI6MDA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBhIHN5bnRoZXRpYyBiZW5jaG1hcmsgbW9kdWxlIChgdGVzdF92bXN0YXRgKSBhbmQgaXRzIGFzc29jaWF0ZWQga3NlbGZ0ZXN0IHNjcmlwdHMuIFRoZSBtb2R1bGUgZXhlY3V0ZXMgYSBmaXhlZCBsb29wIG9uIGluaXRpYWxpemF0aW9uIHRvIG1lYXN1cmUgcGVyZm9ybWFuY2UgYW5kIGltbWVkaWF0ZWx5IHVubG9hZHMgKG9yIHJldHVybnMgMCBpZiBidWlsdC1pbikuIEl0IGRvZXMgbm90IGV4cG9zZSBhbnkgaW50ZXJmYWNlcyAoZS5nLiwgaW9jdGxzLCBzeXNmcywgZGVidWdmcykgdG8gdXNlcnNwYWNlLCBtZWFuaW5nIHRoZXJlIGlzIG5vIGF0dGFjayBzdXJmYWNlIG9yIGlucHV0IGZvciBhIGZ1enplciB0byBleHBsb3JlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDNiMDA1NGFlOGM0OTA5MTZhMTUxNjJiODFjMGU5NjI2OGYwNTIyNTEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEF1ZyAzIDAyOjAwOjM0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvTUFJTlRBSU5FUlMgYi9NQUlOVEFJTkVSUwppbmRleCA1MTE0ZTZkYjczMDdkLi5jNzY1MTRkNmM1MDNiIDEwMDY0NAotLS0gYS9NQUlOVEFJTkVSUwomIzQzOyYjNDM7JiM0MzsgYi9NQUlOVEFJTkVSUwpAQCAtMTcwMDQsNiAmIzQzOzE3MDA0LDcgQEAgRjoJbW0vc3BhcnNlLmMKIEY6CW1tL3V0aWwuYwogRjoJbW0vdm1wcmVzc3VyZS5jCiBGOgltbS92bXN0YXQuYwomIzQzO0Y6CWxpYi90ZXN0X3Ztc3RhdC5jCiBOOglpbmNsdWRlXC9saW51eFwvcGFnZVstX11bYS16QS1aXSoKIAogTUVNT1JZIE1BTkFHRU1FTlQgLSBFWEVDTUVNCmRpZmYgLS1naXQgYS9saWIvS2NvbmZpZy5kZWJ1ZyBiL2xpYi9LY29uZmlnLmRlYnVnCmluZGV4IDEyNDRkY2FjMjI5NGEuLjZkNzQzYzhlMjdmYWYgMTAwNjQ0Ci0tLSBhL2xpYi9LY29uZmlnLmRlYnVnCiYjNDM7JiM0MzsmIzQzOyBiL2xpYi9LY29uZmlnLmRlYnVnCkBAIC0zNDI3LDYgJiM0MzszNDI3LDE2IEBAIGNvbmZpZyBURVNUX0tFWEVDX0hBTkRPVkVSCiAKIAkgIElmIHVuc3VyZSwgc2F5IE4uCiAKJiM0Mztjb25maWcgVEVTVF9WTVNUQVQKJiM0MzsJdHJpc3RhdGUgJiMzNDtWTSBTdGF0aXN0aWNzIEJlbmNobWFyayYjMzQ7CiYjNDM7CWRlZmF1bHQgbgomIzQzOwloZWxwCiYjNDM7CSAgQSBzeW50aGV0aWMgYmVuY2htYXJrIG1lYXN1cmluZyB0aGUgcGVyZm9ybWFuY2Ugb2YgVk0gc3RhdGlzdGljcywKJiM0MzsJICB1c2VmdWwgdG8gYW5hbHl6ZSBhbnkgaW1wcm92ZW1lbnRzIG9yIHJlZ3Jlc3Npb25zIGluIGZ1bmN0aW9ucyB0aGF0CiYjNDM7CSAgYXJlIGZyZXF1ZW50bHkgdXNlZCBpbiBob3QgY29kZSBwYXRocy4KJiM0MzsKJiM0MzsJICBJZiB1bnN1cmUsIHNheSBOLgomIzQzOwogY29uZmlnIFJBVEVMSU1JVF9LVU5JVF9URVNUCiAJdHJpc3RhdGUgJiMzNDtLVW5pdCBUZXN0IGZvciBjb3JyZWN0bmVzcyBhbmQgc3RyZXNzIG9mIHJhdGVsaW1pdCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFMKIAlkZXBlbmRzIG9uIEtVTklUCmRpZmYgLS1naXQgYS9saWIvTWFrZWZpbGUgYi9saWIvTWFrZWZpbGUKaW5kZXggN2Y3NWNjNmVkZjk0YS4uNWYzZWJhYmQwMjI0MiAxMDA2NDQKLS0tIGEvbGliL01ha2VmaWxlCiYjNDM7JiM0MzsmIzQzOyBiL2xpYi9NYWtlZmlsZQpAQCAtMTA1LDYgJiM0MzsxMDUsNyBAQCBvYmotJChDT05GSUdfVEVTVF9GUkVFX1BBR0VTKSAmIzQzOz0gdGVzdF9mcmVlX3BhZ2VzLm8KIG9iai0kKENPTkZJR19URVNUX1JFRl9UUkFDS0VSKSAmIzQzOz0gdGVzdF9yZWZfdHJhY2tlci5vCiBvYmotJChDT05GSUdfVEVTVF9PQkpQT09MKSAmIzQzOz0gdGVzdF9vYmpwb29sLm8KIG9iai0kKENPTkZJR19URVNUX0tFWEVDX0hBTkRPVkVSKSAmIzQzOz0gdGVzdF9raG8ubwomIzQzO29iai0kKENPTkZJR19URVNUX1ZNU1RBVCkgJiM0Mzs9IHRlc3Rfdm1zdGF0Lm8KIAogb2JqLSQoQ09ORklHX1RFU1RfRlBVKSAmIzQzOz0gdGVzdF9mcHUubwogdGVzdF9mcHUteSA6PSB0ZXN0X2ZwdV9nbHVlLm8gdGVzdF9mcHVfaW1wbC5vCmRpZmYgLS1naXQgYS9saWIvdGVzdF92bXN0YXQuYyBiL2xpYi90ZXN0X3Ztc3RhdC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLmVlNDg3MmE0YzgyZGIKLS0tIC9kZXYvbnVsbAomIzQzOyYjNDM7JiM0MzsgYi9saWIvdGVzdF92bXN0YXQuYwpAQCAtMCwwICYjNDM7MSwxMDAgQEAKJiM0MzsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vci1sYXRlcgomIzQzOy8qCiYjNDM7ICogVGVzdCBtb2R1bGUgZm9yIGluLWtlcm5lbCBzeW50aGV0aWMgdm0gc3RhdGlzdGljcyBwZXJmb3JtYW5jZS4KJiM0MzsgKgomIzQzOyAqIGV4ZWN1dGUKJiM0MzsgKgomIzQzOyAqCW1vZHByb2JlIHRlc3Rfdm1zdGF0CiYjNDM7ICoKJiM0MzsgKiB0byBydW4gdGhpcyB0ZXN0CiYjNDM7ICoKJiM0MzsgKiAoQykgMjAwOSBMaW51eCBGb3VuZGF0aW9uLCBDaHJpc3RvcGggTGFtZXRlciAmbHQ7Y2xAZ2VudHdvLm9yZyZndDsKJiM0MzsgKi8KJiM0MzsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvamlmZmllcy5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9jb21waWxlci5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9pbml0LmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L21vZHVsZS5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9tbS5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDthc20vdGltZXguaCZndDsKJiM0MzsKJiM0MzsjZGVmaW5lIFRFU1RfQ09VTlQgMTAwMDAKJiM0MzsKJiM0MztzdGF0aWMgaW50IHZtc3RhdF90ZXN0X2luaXQodm9pZCkKJiM0Mzt7CiYjNDM7CXVuc2lnbmVkIGludCBpOwomIzQzOwljeWNsZXNfdCB0aW1lMSwgdGltZTIsIHRpbWU7CiYjNDM7CWludCByZW07CiYjNDM7CXN0cnVjdCBwYWdlICpwYWdlID0gYWxsb2NfcGFnZShHRlBfS0VSTkVMKTsKJiM0MzsKJiM0MzsJaWYgKCFwYWdlKQomIzQzOwkJcmV0dXJuIC1FTk9NRU07CiYjNDM7CiYjNDM7CXByX2FsZXJ0KCYjMzQ7Vk1zdGF0IHRlc3RpbmdcbiYjMzQ7KTsKJiM0MzsJcHJfYWxlcnQoJiMzNDs9PT09PT09PT09PT09PT09PT09PT1cbiYjMzQ7KTsKJiM0MzsJcHJfYWxlcnQoJiMzNDsxLiBpbmNfem9uZV9wYWdlX3N0YXRlKCkgdGhlbiBkZWNfem9uZV9wYWdlX3N0YXRlKClcbiYjMzQ7KTsKJiM0MzsJdGltZTEgPSBnZXRfY3ljbGVzKCk7CiYjNDM7CWZvciAoaSA9IDA7IGkgJmx0OyBURVNUX0NPVU5UOyBpJiM0MzsmIzQzOykKJiM0MzsJCWluY196b25lX3BhZ2Vfc3RhdGUocGFnZSwgTlJfRlJFRV9DTUFfUEFHRVMpOwomIzQzOwomIzQzOwl0aW1lMiA9IGdldF9jeWNsZXMoKTsKJiM0MzsJdGltZSA9IHRpbWUyIC0gdGltZTE7CiYjNDM7CiYjNDM7CXByX2FsZXJ0KCYjMzQ7JWkgdGltZXMgaW5jX3pvbmVfcGFnZV9zdGF0ZSgpICYjMzQ7LCBpKTsKJiM0MzsJdGltZSA9IGRpdl91NjRfcmVtKHRpbWUsIFRFU1RfQ09VTlQsICZhbXA7cmVtKTsKJiM0MzsJcHJfY29udCgmIzM0Oy0mZ3Q7ICVsbHUgY3ljbGVzICYjMzQ7LCAodW5zaWduZWQgbG9uZyBsb25nKSB0aW1lKTsKJiM0MzsKJiM0MzsJdGltZTEgPSBnZXRfY3ljbGVzKCk7CiYjNDM7CWZvciAoaSA9IDA7IGkgJmx0OyBURVNUX0NPVU5UOyBpJiM0MzsmIzQzOykKJiM0MzsJCWRlY196b25lX3BhZ2Vfc3RhdGUocGFnZSwgTlJfRlJFRV9DTUFfUEFHRVMpOwomIzQzOwomIzQzOwl0aW1lMiA9IGdldF9jeWNsZXMoKTsKJiM0MzsJdGltZSA9IHRpbWUyIC0gdGltZTE7CiYjNDM7CiYjNDM7CXByX2NvbnQoJiMzNDtfX2RlY196X3BfcygpICYjMzQ7KTsKJiM0MzsJdGltZSA9IGRpdl91NjRfcmVtKHRpbWUsIFRFU1RfQ09VTlQsICZhbXA7cmVtKTsKJiM0MzsJcHJfY29udCgmIzM0Oy0mZ3Q7ICVsbHUgY3ljbGVzXG4mIzM0OywgICh1bnNpZ25lZCBsb25nIGxvbmcpIHRpbWUpOwomIzQzOwomIzQzOwlwcl9hbGVydCgmIzM0OzIuIGluY196b25lX3BhZ2Vfc3RhdGUoKS9kZWNfem9uZV9wYWdlX3N0YXRlKClcbiYjMzQ7KTsKJiM0MzsJdGltZTEgPSBnZXRfY3ljbGVzKCk7CiYjNDM7CWZvciAoaSA9IDA7IGkgJmx0OyBURVNUX0NPVU5UOyBpJiM0MzsmIzQzOykgewomIzQzOwkJaW5jX3pvbmVfcGFnZV9zdGF0ZShwYWdlLCBOUl9GUkVFX0NNQV9QQUdFUyk7CiYjNDM7CQlkZWNfem9uZV9wYWdlX3N0YXRlKHBhZ2UsIE5SX0ZSRUVfQ01BX1BBR0VTKTsKJiM0MzsJfQomIzQzOwomIzQzOwl0aW1lMiA9IGdldF9jeWNsZXMoKTsKJiM0MzsJdGltZSA9IHRpbWUyIC0gdGltZTE7CiYjNDM7CiYjNDM7CXByX2FsZXJ0KCYjMzQ7JWkgdGltZXMgaW5jL2RlYyAmIzM0OywgaSk7CiYjNDM7CXRpbWUgPSBkaXZfdTY0X3JlbSh0aW1lLCBURVNUX0NPVU5ULCAmYW1wO3JlbSk7CiYjNDM7CXByX2NvbnQoJiMzNDstJmd0OyAlbGx1IGN5Y2xlc1xuJiMzNDssICAodW5zaWduZWQgbG9uZyBsb25nKSB0aW1lKTsKJiM0MzsKJiM0MzsJcHJfYWxlcnQoJiMzNDszLiBjb3VudF92bV9ldmVudCgpXG4mIzM0Oyk7CiYjNDM7CXRpbWUxID0gZ2V0X2N5Y2xlcygpOwomIzQzOwlmb3IgKGkgPSAwOyBpICZsdDsgVEVTVF9DT1VOVDsgaSYjNDM7JiM0MzspCiYjNDM7CQljb3VudF92bV9ldmVudChTTEFCU19TQ0FOTkVEKTsKJiM0MzsKJiM0MzsJdGltZTIgPSBnZXRfY3ljbGVzKCk7CiYjNDM7CXRpbWUgPSB0aW1lMiAtIHRpbWUxOwomIzQzOwomIzQzOwljb3VudF92bV9ldmVudHMoU0xBQlNfU0NBTk5FRCwgLVRFU1RfQ09VTlQpOwomIzQzOwlwcl9hbGVydCgmIzM0OyVpIGNvdW50X3ZtX2V2ZW50cyAmIzM0OywgaSk7CiYjNDM7CXRpbWUgPSBkaXZfdTY0X3JlbSh0aW1lLCBURVNUX0NPVU5ULCAmYW1wO3JlbSk7CiYjNDM7CXByX2NvbnQoJiMzNDstJmd0OyAlbGx1IGN5Y2xlc1xuJiMzNDssICAodW5zaWduZWQgbG9uZyBsb25nKSB0aW1lKTsKJiM0MzsJX19mcmVlX3BhZ2UocGFnZSk7CiYjNDM7CiYjNDM7ICAgICAgICAvKiBGYWlsIHdpbGwgZGlyZWN0bHkgdW5sb2FkIHRoZSBtb2R1bGUgKi8KJiM0MzsgICAgICAgIHJldHVybiBJU19CVUlMVElOKENPTkZJR19URVNUX1ZNU1RBVCkgPyAwIDogLUVBR0FJTjsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgdm1zdGF0X3Rlc3RfZXhpdCh2b2lkKQomIzQzO3sKJiM0MzsJcHJfYWxlcnQoJiMzNDt0ZXN0IGV4aXRcbiYjMzQ7KTsKJiM0Mzt9CiYjNDM7CiYjNDM7bW9kdWxlX2luaXQodm1zdGF0X3Rlc3RfaW5pdCkKJiM0Mzttb2R1bGVfZXhpdCh2bXN0YXRfdGVzdF9leGl0KQomIzQzOwomIzQzO01PRFVMRV9MSUNFTlNFKCYjMzQ7R1BMJiMzNDspOwomIzQzO01PRFVMRV9BVVRIT1IoJiMzNDtDaHJpc3RvcGggTGFtZXRlciYjMzQ7KTsKJiM0MztNT0RVTEVfREVTQ1JJUFRJT04oJiMzNDtWTSBzdGF0aXN0aWNzIHRlc3QmIzM0Oyk7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9NYWtlZmlsZSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL01ha2VmaWxlCmluZGV4IGU2ZGY5NjhmMDk3MWMuLjBkMzg2YzhiODNiNzAgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL01ha2VmaWxlCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL01ha2VmaWxlCkBAIC0xNzMsOCAmIzQzOzE3MywxMCBAQCBURVNUX1BST0dTICYjNDM7PSBrc2Z0X3RocC5zaAogVEVTVF9QUk9HUyAmIzQzOz0ga3NmdF91c2VyZmF1bHRmZC5zaAogVEVTVF9QUk9HUyAmIzQzOz0ga3NmdF92bWFfbWVyZ2Uuc2gKIFRFU1RfUFJPR1MgJiM0Mzs9IGtzZnRfdm1hbGxvYy5zaAomIzQzO1RFU1RfUFJPR1MgJiM0Mzs9IGtzZnRfdm1zdGF0LnNoCiAKIFRFU1RfRklMRVMgOj0gdGVzdF92bWFsbG9jLnNoCiYjNDM7VEVTVF9GSUxFUyA6PSB0ZXN0X3Ztc3RhdC5zaAogVEVTVF9GSUxFUyAmIzQzOz0gdGVzdF9obW0uc2gKIFRFU1RfRklMRVMgJiM0Mzs9IHZhX2hpZ2hfYWRkcl9zd2l0Y2guc2gKIFRFU1RfRklMRVMgJiM0Mzs9IGNoYXJnZV9yZXNlcnZlZF9odWdldGxiLnNoCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9jb25maWcgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9jb25maWcKaW5kZXggMDZmNzhiZDIzMmUyZS4uMTZlMDJhMmNiMmExYSAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vY29uZmlnCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2NvbmZpZwpAQCAtMiw2ICYjNDM7Miw3IEBAIENPTkZJR19TWVNWSVBDPXkKIENPTkZJR19VU0VSRkFVTFRGRD15CiBDT05GSUdfUFRFX01BUktFUl9VRkZEX1dQPXkKIENPTkZJR19URVNUX1ZNQUxMT0M9bQomIzQzO0NPTkZJR19URVNUX1ZNU1RBVD1tCiBDT05GSUdfREVWSUNFX1BSSVZBVEU9eQogQ09ORklHX1RFU1RfSE1NPW0KIENPTkZJR19HVVBfVEVTVD15CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9rc2Z0X3Ztc3RhdC5zaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2tzZnRfdm1zdGF0LnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAuLjRlNDcxMTJmOTkyNTEKLS0tIC9kZXYvbnVsbAomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9rc2Z0X3Ztc3RhdC5zaApAQCAtMCwwICYjNDM7MSw0IEBACiYjNDM7IyEvYmluL3NoIC1lCiYjNDM7IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAomIzQzOwomIzQzOy4vcnVuX3ZtdGVzdHMuc2ggLXQgdm1zdGF0CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9ydW5fdm10ZXN0cy5zaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL3J1bl92bXRlc3RzLnNoCmluZGV4IDhjMjk2ZGVkZjA0NzQuLmM1NDE2ZWRhNGMyZTQgMTAwNzU1Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL3J1bl92bXRlc3RzLnNoCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL3J1bl92bXRlc3RzLnNoCkBAIC00Nyw2ICYjNDM7NDcsOCBAQCBzZXBhcmF0ZWQgYnkgc3BhY2VzOgogCXRlc3RzIGZvciB2ZXJ5IGxhcmdlIHZpcnR1YWwgYWRkcmVzcyBzcGFjZQogLSB2bWFsbG9jCiAJdm1hbGxvYyBzbW9rZSB0ZXN0cwomIzQzOy0gdm1zdGF0CiYjNDM7CXZtc3RhdCBwZXJmb3JtYW5jZSB0ZXN0CiAtIGhtbQogCWhtbSBzbW9rZSB0ZXN0cwogLSBtYWR2X2d1YXJkCkBAIC0zMzgsNiAmIzQzOzM0MCw5IEBAIGZpICMgVkFERFI2NAogIyB2bWFsbG9jIHN0YWJpbGl0eSBzbW9rZSB0ZXN0CiBDQVRFR09SWT0mIzM0O3ZtYWxsb2MmIzM0OyBydW5fdGVzdCBiYXNoIC4vdGVzdF92bWFsbG9jLnNoIHNtb2tlCiAKJiM0MzsjIHZtc3RhdCBwZXJmb3JtYW5jZSB0ZXN0CiYjNDM7Q0FURUdPUlk9JiMzNDt2bXN0YXQmIzM0OyBydW5fdGVzdCBiYXNoIC4vdGVzdF92bXN0YXQuc2ggcGVyZm9ybWFuY2UKJiM0MzsKIENBVEVHT1JZPSYjMzQ7bXJlbWFwJiMzNDsgcnVuX3Rlc3QgLi9tcmVtYXBfZG9udHVubWFwCiAKIENBVEVHT1JZPSYjMzQ7aG1tJiMzNDsgcnVuX3Rlc3QgYmFzaCAuL3Rlc3RfaG1tLnNoIHNtb2tlCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS90ZXN0X3Ztc3RhdC5zaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL3Rlc3Rfdm1zdGF0LnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAuLmE0ZmM3ZjdmZWMxNmMKLS0tIC9kZXYvbnVsbAomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS90ZXN0X3Ztc3RhdC5zaApAQCAtMCwwICYjNDM7MSw3MSBAQAomIzQzOyMhL2Jpbi9iYXNoCiYjNDM7IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAomIzQzOyMKJiM0MzsjIFRoaXMgaXMgYSB0ZXN0IHNjcmlwdCBmb3IgdGhlIGtlcm5lbCB0ZXN0IG1vZHVsZSB0byBtZWFzdXJlIHBlcmZvcm1hbmNlIG9mIFZNCiYjNDM7IyBzdGF0aXN0aWNzLiAgSXQgc2ltcGx5IGxvYWRzIHRoZSBrZXJuZWwgbW9kdWxlLgomIzQzOwomIzQzO1RFU1RfTkFNRT0mIzM0O3Ztc3RhdCYjMzQ7CiYjNDM7RFJJVkVSPSYjMzQ7dGVzdF8ke1RFU1RfTkFNRX0mIzM0OwomIzQzOwomIzQzOyMgS3NlbGZ0ZXN0IGZyYW1ld29yayByZXF1aXJlbWVudCAtIFNLSVAgY29kZSBpcyA0LgomIzQzO2tzZnRfc2tpcD00CiYjNDM7CiYjNDM7Y2hlY2tfdGVzdF9yZXF1aXJlbWVudHMoKQomIzQzO3sKJiM0MzsJdWlkPSQoaWQgLXUpCiYjNDM7CWlmIFsgJHVpZCAtbmUgMCBdOyB0aGVuCiYjNDM7CQllY2hvICYjMzQ7JDA6IE11c3QgYmUgcnVuIGFzIHJvb3QmIzM0OwomIzQzOwkJZXhpdCAka3NmdF9za2lwCiYjNDM7CWZpCiYjNDM7CiYjNDM7CWlmICEgd2hpY2ggbW9kcHJvYmUgJmd0OyAvZGV2L251bGwgMiZndDsmYW1wOzE7IHRoZW4KJiM0MzsJCWVjaG8gJiMzNDskMDogWW91IG5lZWQgbW9kcHJvYmUgaW5zdGFsbGVkJiMzNDsKJiM0MzsJCWV4aXQgJGtzZnRfc2tpcAomIzQzOwlmaQomIzQzOwomIzQzOwlpZiAhIG1vZGluZm8gJERSSVZFUiAmZ3Q7IC9kZXYvbnVsbCAyJmd0OyZhbXA7MTsgdGhlbgomIzQzOwkJZWNobyAmIzM0OyQwOiBZb3UgbXVzdCBoYXZlIHRoZSBmb2xsb3dpbmcgZW5hYmxlZCBpbiB5b3VyIGtlcm5lbDomIzM0OwomIzQzOwkJZWNobyAmIzM0O0NPTkZJR19URVNUX1ZNU1RBVD1tJiMzNDsKJiM0MzsJCWV4aXQgJGtzZnRfc2tpcAomIzQzOwlmaQomIzQzO30KJiM0MzsKJiM0MztydW5fcGVyZm9ybWFuY2VfY2hlY2soKQomIzQzO3sKJiM0MzsJZWNobyAmIzM0O1J1biBwZXJmb3JtYW5jZSB0ZXN0cyB0byBldmFsdWF0ZSBob3cgZmFzdCB2bXN0YXQgaXMuJiMzNDsKJiM0MzsKJiM0MzsJbW9kcHJvYmUgJERSSVZFUiAmZ3Q7IC9kZXYvbnVsbCAyJmd0OyZhbXA7MQomIzQzOwllY2hvICYjMzQ7RG9uZS4mIzM0OwomIzQzOwllY2hvICYjMzQ7Q2hlY2sgdGhlIGtlcm5lbCBtZXNzYWdlIGJ1ZmZlciB0byBzZWUgdGhlIHN1bW1hcnkuJiMzNDsKJiM0Mzt9CiYjNDM7CiYjNDM7dXNhZ2UoKQomIzQzO3sKJiM0MzsJZWNobyAtbiAmIzM0O1VzYWdlOiAkMCBwZXJmb3JtYW5jZSYjMzQ7CiYjNDM7CWVjaG8KJiM0MzsJZWNobyAmIzM0O0V4YW1wbGUgdXNhZ2U6JiMzNDsKJiM0MzsJZWNobwomIzQzOwllY2hvICYjMzQ7IyBTaG93cyBoZWxwIG1lc3NhZ2UmIzM0OwomIzQzOwllY2hvICYjMzQ7Li8ke0RSSVZFUn0uc2gmIzM0OwomIzQzOwllY2hvCiYjNDM7CWVjaG8gJiMzNDsjIFBlcmZvcm1hbmNlIGFuYWx5c2lzJiMzNDsKJiM0MzsJZWNobyAmIzM0Oy4vJHtEUklWRVJ9LnNoIHBlcmZvcm1hbmNlJiMzNDsKJiM0MzsJZWNobwomIzQzOwlleGl0IDAKJiM0Mzt9CiYjNDM7CiYjNDM7ZnVuY3Rpb24gcnVuX3Rlc3QoKQomIzQzO3sKJiM0MzsJaWYgWyAkIyAtZXEgMCBdOyB0aGVuCiYjNDM7CQl1c2FnZQomIzQzOwllbHNlCiYjNDM7CQlpZiBbWyAmIzM0OyQxJiMzNDsgPSAmIzM0O3BlcmZvcm1hbmNlJiMzNDsgXV07IHRoZW4KJiM0MzsJCQlydW5fcGVyZm9ybWFuY2VfY2hlY2sKJiM0MzsJCWZpCiYjNDM7CWZpCiYjNDM7fQomIzQzOwomIzQzO2NoZWNrX3Rlc3RfcmVxdWlyZW1lbnRzCiYjNDM7cnVuX3Rlc3QgJEAKJiM0MzsKJiM0MztleGl0IDAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDI6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTE1NwoJCQkJCQkJb3V0cHV0OiAxMTkKCQkJCQkJCXRob3VnaHRzOiA3ODMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqV29ydGhGdXp6aW5nIEV2YWx1YXRpb24gZm9yIHRoZSBWTSBTdGF0aXN0aWNzIEJlbmNobWFyayoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBUaGlzIHBhdGNoIGlzIGFkZGluZyBhIG5ldyB0ZXN0IG1vZHVsZSwgYHRlc3Rfdm1zdGF0LmNgLCB3aXRoaW4gdGhlIGBsaWIvYCBkaXJlY3RvcnksIGFsb25nIHdpdGggY29ycmVzcG9uZGluZyBrc2VsZnRlc3Qgc2NyaXB0cyBpbiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzOiBpcyB0aGlzIGV2ZW4gd29ydGggZnV6emluZz8gSSBtZWFuLCBpdCAqaXMqIGNvZGUsIGJ1dCBpdCYjMzk7cyBhICp0ZXN0KiwgYSBiZW5jaG1hcmsgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIHRvIG1lYXN1cmUgdGhlIHBlcmZvcm1hbmNlIG9mIFZNIHN0YXRpc3RpY3MgZnVuY3Rpb25zIGxpa2UgYGluY196b25lX3BhZ2Vfc3RhdGVgIGFuZCB0aGUgbGlrZS4gSXQmIzM5O3Mgbm90IGludHJvZHVjaW5nIGFueSBuZXcga2VybmVsIGxvZ2ljIGJleW9uZCB0aGF0LiBJdCBqdXN0IGxvb3BzIGFuZCBjYWxscyBleGlzdGluZyBmdW5jdGlvbnMgdG8gbWVhc3VyZSBjeWNsZXMuCgpOb3csIG15IGluaXRpYWwgcmVhY3Rpb24gaXMsIHByb2JhYmx5IG5vdC4gQnV0IHRoZSBwcm9tcHQgaXMgY2xlYXI6IEkgbmVlZCB0byBjb25zaWRlciBpdCB3aXRoaW4gdGhlIGdpdmVuIGNvbnN0cmFpbnRzLiBJdCB0ZWxscyBtZSB0byBzZXQgYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIHBhdGNoIG9ubHkgaW5jbHVkZXMgZG9jdW1lbnRhdGlvbiBjaGFuZ2VzLCBLY29uZmlnIG1vZGlmaWNhdGlvbnMsIGNvbW1lbnRzLCBkZWNvcmF0aXZlIGxvZ2dpbmcsIGNoYW5nZXMgdG8gY29uc3RhbnRzIHdpdGhvdXQgaW1wYWN0aW5nIGV4ZWN1dGlvbiwgdW5yZWFjaGFibGUgY29kZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIGNlcnRhaW4gZHJpdmVyIGNoYW5nZXMsIG9yIFBDSSB0ZWFyZG93biBjYWxsYmFja3MuIFRoaXMgaXMgd2hlcmUgSSBoYXZlIHRvIHRoaW5rOiBhcmUgdGVzdCBtb2R1bGVzIGV4ZW1wdCBieSBkZWZhdWx0PwoKQSB0ZXN0IG1vZHVsZSAqaXMqIGZ1bmN0aW9uYWwgY29kZS4gSG93ZXZlciwgc3l6a2FsbGVyLCB0aGUgZnV6emVyIHRoYXQgb2Z0ZW4gZ2V0cyBjb25zaWRlcmVkLCBkb2VzbiYjMzk7dCB0eXBpY2FsbHkgZnV6eiB0ZXN0IG1vZHVsZXMgdW5sZXNzIHRoZXkgZXhwb3NlIGFuIGludGVyZXN0aW5nIGF0dGFjayBzdXJmYWNlLiBMZXQmIzM5O3Mgc2VlLi4uIGxvb2tpbmcgYXQgdGhlIGNvZGUsIGB0ZXN0X3Ztc3RhdGAgcnVucyBvbiBgbW9kdWxlX2luaXRgLCBkb2VzIGl0cyBsb29wLCBhbmQgKmltbWVkaWF0ZWx5KiByZXR1cm5zIGAtRUFHQUlOYCBpZiBub3QgYnVpbHQtaW4sIHRodXMgdW5sb2FkaW5nLiBJdCBkb2VzbiYjMzk7dCByZWdpc3RlciBhbnkgZGV2aWNlcywgbm8gc3lzZnMgZW50cmllcywgbm8gZGVidWdmcyBlbnRyaWVzLCBubyBpb2N0bHMuIE5vdGhpbmcuIEl0IGp1c3QgcnVucyBhIGxvb3AgYW5kIHByaW50cyB0byBkbWVzZy4KClRoZXJlJiMzOTtzIG5vICp1c2VyLXNwYWNlIGlucHV0Ki4gSXQmIzM5O3MgYSBmaXhlZCBsb29wIGV4ZWN1dGVkIG9uIG1vZHVsZSBsb2FkLiBTbywgZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUsIHRoaXMgbG9va3MgcG9pbnRsZXNzLiBUaGVyZSYjMzk7cyBub3RoaW5nIGZvciBhIGZ1enplciB0byAqZnV6eiouCgpMZXQgbWUgY29uZmlybSB0aGF0IGJ5IGxvb2tpbmcgYXQgdGhlIGRldGFpbHMuIGB2bXN0YXRfdGVzdF9pbml0YCB0YWtlcyBubyBwYXJhbWV0ZXJzLCBydW5zIGEgZml4ZWQgbnVtYmVyIG9mIGl0ZXJhdGlvbnMsIGFuZCByZXR1cm5zIGAtRUFHQUlOYCAob3IgMCBpZiBidWlsdC1pbikuIFplcm8gdXNlciBpbnB1dC4gQWJzb2x1dGVseSB6ZXJvLiBGdXp6aW5nIHRoaXMgaXMgYSBjb21wbGV0ZSB3YXN0ZSBvZiByZXNvdXJjZXMuIFNvIEkgYW0gZ29pbmcgdG8gc2V0IGBXb3J0aEZ1enppbmc9ZmFsc2VgLgoKSSB3YW50IHRvIGJlIGFic29sdXRlbHkgc3VyZSB0aGlzIGlzIGNvcnJlY3QuIEkgaGF2ZSB0byBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIG90aGVyIGNoYW5nZXMuIExldCBtZSBjaGVjayB0aGUgb3RoZXIgZmlsZXMuCgoqICAgYE1BSU5UQUlORVJTYDogSnVzdCBhZGRlZCBgbGliL3Rlc3Rfdm1zdGF0LmNgLgoqICAgYGxpYi9LY29uZmlnLmRlYnVnYDogQWRkZWQgYFRFU1RfVk1TVEFUYC4KKiAgIGBsaWIvTWFrZWZpbGVgOiBBZGRlZCBgdGVzdF92bXN0YXQub2AuCiogICBgbGliL3Rlc3Rfdm1zdGF0LmNgOiBUaGUgbW9kdWxlIGl0c2VsZiwgd2hpY2ggd2UgYWxyZWFkeSBhbmFseXplZC4KKiAgIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS8qYDogVGhlIHRlc3Qgc2NyaXB0cy4KCk5vdGhpbmcgZWxzZSBpcyBjaGFuZ2VkLiBMb29rcyBnb29kLiBJJiMzOTttIGNvbmZpZGVudCBpbiBteSBhc3Nlc3NtZW50LiBJJiMzOTtsbCBvdXRwdXQgYFdvcnRoRnV6emluZz1mYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDI6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGFkZHMgYSBzeW50aGV0aWMgYmVuY2htYXJrIG1vZHVsZSAoYHRlc3Rfdm1zdGF0YCkgYW5kIGl0cyBhc3NvY2lhdGVkIGtzZWxmdGVzdCBzY3JpcHRzLiBUaGUgbW9kdWxlIGV4ZWN1dGVzIGEgZml4ZWQgbG9vcCBvbiBpbml0aWFsaXphdGlvbiB0byBtZWFzdXJlIHBlcmZvcm1hbmNlIGFuZCBpbW1lZGlhdGVseSB1bmxvYWRzIChvciByZXR1cm5zIDAgaWYgYnVpbHQtaW4pLiBJdCBkb2VzIG5vdCBleHBvc2UgYW55IGludGVyZmFjZXMgKGUuZy4sIGlvY3Rscywgc3lzZnMsIGRlYnVnZnMpIHRvIHVzZXJzcGFjZSwgbWVhbmluZyB0aGVyZSBpcyBubyBhdHRhY2sgc3VyZmFjZSBvciBpbnB1dCBmb3IgYSBmdXp6ZXIgdG8gZXhwbG9yZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBhIHN5bnRoZXRpYyBiZW5jaG1hcmsgbW9kdWxlIChgdGVzdF92bXN0YXRgKSBhbmQgaXRzIGFzc29jaWF0ZWQga3NlbGZ0ZXN0IHNjcmlwdHMuIFRoZSBtb2R1bGUgZXhlY3V0ZXMgYSBmaXhlZCBsb29wIG9uIGluaXRpYWxpemF0aW9uIHRvIG1lYXN1cmUgcGVyZm9ybWFuY2UgYW5kIGltbWVkaWF0ZWx5IHVubG9hZHMgKG9yIHJldHVybnMgMCBpZiBidWlsdC1pbikuIEl0IGRvZXMgbm90IGV4cG9zZSBhbnkgaW50ZXJmYWNlcyAoZS5nLiwgaW9jdGxzLCBzeXNmcywgZGVidWdmcykgdG8gdXNlcnNwYWNlLCBtZWFuaW5nIHRoZXJlIGlzIG5vIGF0dGFjayBzdXJmYWNlIG9yIGlucHV0IGZvciBhIGZ1enplciB0byBleHBsb3JlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAyOjAwOjM0Ljg5OTU1NTQ4OFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMzQ1MDQ5NTMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgYSBzeW50aGV0aWMgYmVuY2htYXJrIG1vZHVsZSAoYHRlc3Rfdm1zdGF0YCkgYW5kIGl0cyBhc3NvY2lhdGVkIGtzZWxmdGVzdCBzY3JpcHRzLiBUaGUgbW9kdWxlIGV4ZWN1dGVzIGEgZml4ZWQgbG9vcCBvbiBpbml0aWFsaXphdGlvbiB0byBtZWFzdXJlIHBlcmZvcm1hbmNlIGFuZCBpbW1lZGlhdGVseSB1bmxvYWRzIChvciByZXR1cm5zIDAgaWYgYnVpbHQtaW4pLiBJdCBkb2VzIG5vdCBleHBvc2UgYW55IGludGVyZmFjZXMgKGUuZy4sIGlvY3Rscywgc3lzZnMsIGRlYnVnZnMpIHRvIHVzZXJzcGFjZSwgbWVhbmluZyB0aGVyZSBpcyBubyBhdHRhY2sgc3VyZmFjZSBvciBpbnB1dCBmb3IgYSBmdXp6ZXIgdG8gZXhwbG9yZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAyOjAwOjM0Ljg5OTU2MjA2OFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDUwMzQxOTkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgM2IwMDU0YWU4YzQ5MDkxNmExNTE2MmI4MWMwZTk2MjY4ZjA1MjI1MVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEF1ZyAzIDAyOjAwOjM0IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlNcXG5pbmRleCA1MTE0ZTZkYjczMDdkLi5jNzY1MTRkNmM1MDNiIDEwMDY0NFxcbi0tLSBhL01BSU5UQUlORVJTXFxuKysrIGIvTUFJTlRBSU5FUlNcXG5AQCAtMTcwMDQsNiArMTcwMDQsNyBAQCBGOlxcdG1tL3NwYXJzZS5jXFxuIEY6XFx0bW0vdXRpbC5jXFxuIEY6XFx0bW0vdm1wcmVzc3VyZS5jXFxuIEY6XFx0bW0vdm1zdGF0LmNcXG4rRjpcXHRsaWIvdGVzdF92bXN0YXQuY1xcbiBOOlxcdGluY2x1ZGVcXFxcL2xpbnV4XFxcXC9wYWdlWy1fXVthLXpBLVpdKlxcbiBcXG4gTUVNT1JZIE1BTkFHRU1FTlQgLSBFWEVDTUVNXFxuZGlmZiAtLWdpdCBhL2xpYi9LY29uZmlnLmRlYnVnIGIvbGliL0tjb25maWcuZGVidWdcXG5pbmRleCAxMjQ0ZGNhYzIyOTRhLi42ZDc0M2M4ZTI3ZmFmIDEwMDY0NFxcbi0tLSBhL2xpYi9LY29uZmlnLmRlYnVnXFxuKysrIGIvbGliL0tjb25maWcuZGVidWdcXG5AQCAtMzQyNyw2ICszNDI3LDE2IEBAIGNvbmZpZyBURVNUX0tFWEVDX0hBTkRPVkVSXFxuIFxcbiBcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuIFxcbitjb25maWcgVEVTVF9WTVNUQVRcXG4rXFx0dHJpc3RhdGUgXFxcIlZNIFN0YXRpc3RpY3MgQmVuY2htYXJrXFxcIlxcbitcXHRkZWZhdWx0IG5cXG4rXFx0aGVscFxcbitcXHQgIEEgc3ludGhldGljIGJlbmNobWFyayBtZWFzdXJpbmcgdGhlIHBlcmZvcm1hbmNlIG9mIFZNIHN0YXRpc3RpY3MsXFxuK1xcdCAgdXNlZnVsIHRvIGFuYWx5emUgYW55IGltcHJvdmVtZW50cyBvciByZWdyZXNzaW9ucyBpbiBmdW5jdGlvbnMgdGhhdFxcbitcXHQgIGFyZSBmcmVxdWVudGx5IHVzZWQgaW4gaG90IGNvZGUgcGF0aHMuXFxuK1xcbitcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuK1xcbiBjb25maWcgUkFURUxJTUlUX0tVTklUX1RFU1RcXG4gXFx0dHJpc3RhdGUgXFxcIktVbml0IFRlc3QgZm9yIGNvcnJlY3RuZXNzIGFuZCBzdHJlc3Mgb2YgcmF0ZWxpbWl0XFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuIFxcdGRlcGVuZHMgb24gS1VOSVRcXG5kaWZmIC0tZ2l0IGEvbGliL01ha2VmaWxlIGIvbGliL01ha2VmaWxlXFxuaW5kZXggN2Y3NWNjNmVkZjk0YS4uNWYzZWJhYmQwMjI0MiAxMDA2NDRcXG4tLS0gYS9saWIvTWFrZWZpbGVcXG4rKysgYi9saWIvTWFrZWZpbGVcXG5AQCAtMTA1LDYgKzEwNSw3IEBAIG9iai0kKENPTkZJR19URVNUX0ZSRUVfUEFHRVMpICs9IHRlc3RfZnJlZV9wYWdlcy5vXFxuIG9iai0kKENPTkZJR19URVNUX1JFRl9UUkFDS0VSKSArPSB0ZXN0X3JlZl90cmFja2VyLm9cXG4gb2JqLSQoQ09ORklHX1RFU1RfT0JKUE9PTCkgKz0gdGVzdF9vYmpwb29sLm9cXG4gb2JqLSQoQ09ORklHX1RFU1RfS0VYRUNfSEFORE9WRVIpICs9IHRlc3Rfa2hvLm9cXG4rb2JqLSQoQ09ORklHX1RFU1RfVk1TVEFUKSArPSB0ZXN0X3Ztc3RhdC5vXFxuIFxcbiBvYmotJChDT05GSUdfVEVTVF9GUFUpICs9IHRlc3RfZnB1Lm9cXG4gdGVzdF9mcHUteSA6PSB0ZXN0X2ZwdV9nbHVlLm8gdGVzdF9mcHVfaW1wbC5vXFxuZGlmZiAtLWdpdCBhL2xpYi90ZXN0X3Ztc3RhdC5jIGIvbGliL3Rlc3Rfdm1zdGF0LmNcXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IDAwMDAwMDAwMDAwMDAuLmVlNDg3MmE0YzgyZGJcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvbGliL3Rlc3Rfdm1zdGF0LmNcXG5AQCAtMCwwICsxLDEwMCBAQFxcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vci1sYXRlclxcbisvKlxcbisgKiBUZXN0IG1vZHVsZSBmb3IgaW4ta2VybmVsIHN5bnRoZXRpYyB2bSBzdGF0aXN0aWNzIHBlcmZvcm1hbmNlLlxcbisgKlxcbisgKiBleGVjdXRlXFxuKyAqXFxuKyAqXFx0bW9kcHJvYmUgdGVzdF92bXN0YXRcXG4rICpcXG4rICogdG8gcnVuIHRoaXMgdGVzdFxcbisgKlxcbisgKiAoQykgMjAwOSBMaW51eCBGb3VuZGF0aW9uLCBDaHJpc3RvcGggTGFtZXRlciBcXHUwMDNjY2xAZ2VudHdvLm9yZ1xcdTAwM2VcXG4rICovXFxuK1xcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvamlmZmllcy5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvY29tcGlsZXIuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2luaXQuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L21vZHVsZS5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvbW0uaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2FzbS90aW1leC5oXFx1MDAzZVxcbitcXG4rI2RlZmluZSBURVNUX0NPVU5UIDEwMDAwXFxuK1xcbitzdGF0aWMgaW50IHZtc3RhdF90ZXN0X2luaXQodm9pZClcXG4re1xcbitcXHR1bnNpZ25lZCBpbnQgaTtcXG4rXFx0Y3ljbGVzX3QgdGltZTEsIHRpbWUyLCB0aW1lO1xcbitcXHRpbnQgcmVtO1xcbitcXHRzdHJ1Y3QgcGFnZSAqcGFnZSA9IGFsbG9jX3BhZ2UoR0ZQX0tFUk5FTCk7XFxuK1xcbitcXHRpZiAoIXBhZ2UpXFxuK1xcdFxcdHJldHVybiAtRU5PTUVNO1xcbitcXG4rXFx0cHJfYWxlcnQoXFxcIlZNc3RhdCB0ZXN0aW5nXFxcXG5cXFwiKTtcXG4rXFx0cHJfYWxlcnQoXFxcIj09PT09PT09PT09PT09PT09PT09PVxcXFxuXFxcIik7XFxuK1xcdHByX2FsZXJ0KFxcXCIxLiBpbmNfem9uZV9wYWdlX3N0YXRlKCkgdGhlbiBkZWNfem9uZV9wYWdlX3N0YXRlKClcXFxcblxcXCIpO1xcbitcXHR0aW1lMSA9IGdldF9jeWNsZXMoKTtcXG4rXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIFRFU1RfQ09VTlQ7IGkrKylcXG4rXFx0XFx0aW5jX3pvbmVfcGFnZV9zdGF0ZShwYWdlLCBOUl9GUkVFX0NNQV9QQUdFUyk7XFxuK1xcbitcXHR0aW1lMiA9IGdldF9jeWNsZXMoKTtcXG4rXFx0dGltZSA9IHRpbWUyIC0gdGltZTE7XFxuK1xcbitcXHRwcl9hbGVydChcXFwiJWkgdGltZXMgaW5jX3pvbmVfcGFnZV9zdGF0ZSgpIFxcXCIsIGkpO1xcbitcXHR0aW1lID0gZGl2X3U2NF9yZW0odGltZSwgVEVTVF9DT1VOVCwgXFx1MDAyNnJlbSk7XFxuK1xcdHByX2NvbnQoXFxcIi1cXHUwMDNlICVsbHUgY3ljbGVzIFxcXCIsICh1bnNpZ25lZCBsb25nIGxvbmcpIHRpbWUpO1xcbitcXG4rXFx0dGltZTEgPSBnZXRfY3ljbGVzKCk7XFxuK1xcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBURVNUX0NPVU5UOyBpKyspXFxuK1xcdFxcdGRlY196b25lX3BhZ2Vfc3RhdGUocGFnZSwgTlJfRlJFRV9DTUFfUEFHRVMpO1xcbitcXG4rXFx0dGltZTIgPSBnZXRfY3ljbGVzKCk7XFxuK1xcdHRpbWUgPSB0aW1lMiAtIHRpbWUxO1xcbitcXG4rXFx0cHJfY29udChcXFwiX19kZWNfel9wX3MoKSBcXFwiKTtcXG4rXFx0dGltZSA9IGRpdl91NjRfcmVtKHRpbWUsIFRFU1RfQ09VTlQsIFxcdTAwMjZyZW0pO1xcbitcXHRwcl9jb250KFxcXCItXFx1MDAzZSAlbGx1IGN5Y2xlc1xcXFxuXFxcIiwgICh1bnNpZ25lZCBsb25nIGxvbmcpIHRpbWUpO1xcbitcXG4rXFx0cHJfYWxlcnQoXFxcIjIuIGluY196b25lX3BhZ2Vfc3RhdGUoKS9kZWNfem9uZV9wYWdlX3N0YXRlKClcXFxcblxcXCIpO1xcbitcXHR0aW1lMSA9IGdldF9jeWNsZXMoKTtcXG4rXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIFRFU1RfQ09VTlQ7IGkrKykge1xcbitcXHRcXHRpbmNfem9uZV9wYWdlX3N0YXRlKHBhZ2UsIE5SX0ZSRUVfQ01BX1BBR0VTKTtcXG4rXFx0XFx0ZGVjX3pvbmVfcGFnZV9zdGF0ZShwYWdlLCBOUl9GUkVFX0NNQV9QQUdFUyk7XFxuK1xcdH1cXG4rXFxuK1xcdHRpbWUyID0gZ2V0X2N5Y2xlcygpO1xcbitcXHR0aW1lID0gdGltZTIgLSB0aW1lMTtcXG4rXFxuK1xcdHByX2FsZXJ0KFxcXCIlaSB0aW1lcyBpbmMvZGVjIFxcXCIsIGkpO1xcbitcXHR0aW1lID0gZGl2X3U2NF9yZW0odGltZSwgVEVTVF9DT1VOVCwgXFx1MDAyNnJlbSk7XFxuK1xcdHByX2NvbnQoXFxcIi1cXHUwMDNlICVsbHUgY3ljbGVzXFxcXG5cXFwiLCAgKHVuc2lnbmVkIGxvbmcgbG9uZykgdGltZSk7XFxuK1xcbitcXHRwcl9hbGVydChcXFwiMy4gY291bnRfdm1fZXZlbnQoKVxcXFxuXFxcIik7XFxuK1xcdHRpbWUxID0gZ2V0X2N5Y2xlcygpO1xcbitcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgVEVTVF9DT1VOVDsgaSsrKVxcbitcXHRcXHRjb3VudF92bV9ldmVudChTTEFCU19TQ0FOTkVEKTtcXG4rXFxuK1xcdHRpbWUyID0gZ2V0X2N5Y2xlcygpO1xcbitcXHR0aW1lID0gdGltZTIgLSB0aW1lMTtcXG4rXFxuK1xcdGNvdW50X3ZtX2V2ZW50cyhTTEFCU19TQ0FOTkVELCAtVEVTVF9DT1VOVCk7XFxuK1xcdHByX2FsZXJ0KFxcXCIlaSBjb3VudF92bV9ldmVudHMgXFxcIiwgaSk7XFxuK1xcdHRpbWUgPSBkaXZfdTY0X3JlbSh0aW1lLCBURVNUX0NPVU5ULCBcXHUwMDI2cmVtKTtcXG4rXFx0cHJfY29udChcXFwiLVxcdTAwM2UgJWxsdSBjeWNsZXNcXFxcblxcXCIsICAodW5zaWduZWQgbG9uZyBsb25nKSB0aW1lKTtcXG4rXFx0X19mcmVlX3BhZ2UocGFnZSk7XFxuK1xcbisgICAgICAgIC8qIEZhaWwgd2lsbCBkaXJlY3RseSB1bmxvYWQgdGhlIG1vZHVsZSAqL1xcbisgICAgICAgIHJldHVybiBJU19CVUlMVElOKENPTkZJR19URVNUX1ZNU1RBVCkgPyAwIDogLUVBR0FJTjtcXG4rfVxcbitcXG4rc3RhdGljIHZvaWQgdm1zdGF0X3Rlc3RfZXhpdCh2b2lkKVxcbit7XFxuK1xcdHByX2FsZXJ0KFxcXCJ0ZXN0IGV4aXRcXFxcblxcXCIpO1xcbit9XFxuK1xcbittb2R1bGVfaW5pdCh2bXN0YXRfdGVzdF9pbml0KVxcbittb2R1bGVfZXhpdCh2bXN0YXRfdGVzdF9leGl0KVxcbitcXG4rTU9EVUxFX0xJQ0VOU0UoXFxcIkdQTFxcXCIpO1xcbitNT0RVTEVfQVVUSE9SKFxcXCJDaHJpc3RvcGggTGFtZXRlclxcXCIpO1xcbitNT0RVTEVfREVTQ1JJUFRJT04oXFxcIlZNIHN0YXRpc3RpY3MgdGVzdFxcXCIpO1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9NYWtlZmlsZSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL01ha2VmaWxlXFxuaW5kZXggZTZkZjk2OGYwOTcxYy4uMGQzODZjOGI4M2I3MCAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9NYWtlZmlsZVxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL01ha2VmaWxlXFxuQEAgLTE3Myw4ICsxNzMsMTAgQEAgVEVTVF9QUk9HUyArPSBrc2Z0X3RocC5zaFxcbiBURVNUX1BST0dTICs9IGtzZnRfdXNlcmZhdWx0ZmQuc2hcXG4gVEVTVF9QUk9HUyArPSBrc2Z0X3ZtYV9tZXJnZS5zaFxcbiBURVNUX1BST0dTICs9IGtzZnRfdm1hbGxvYy5zaFxcbitURVNUX1BST0dTICs9IGtzZnRfdm1zdGF0LnNoXFxuIFxcbiBURVNUX0ZJTEVTIDo9IHRlc3Rfdm1hbGxvYy5zaFxcbitURVNUX0ZJTEVTIDo9IHRlc3Rfdm1zdGF0LnNoXFxuIFRFU1RfRklMRVMgKz0gdGVzdF9obW0uc2hcXG4gVEVTVF9GSUxFUyArPSB2YV9oaWdoX2FkZHJfc3dpdGNoLnNoXFxuIFRFU1RfRklMRVMgKz0gY2hhcmdlX3Jlc2VydmVkX2h1Z2V0bGIuc2hcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vY29uZmlnIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vY29uZmlnXFxuaW5kZXggMDZmNzhiZDIzMmUyZS4uMTZlMDJhMmNiMmExYSAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9jb25maWdcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9jb25maWdcXG5AQCAtMiw2ICsyLDcgQEAgQ09ORklHX1NZU1ZJUEM9eVxcbiBDT05GSUdfVVNFUkZBVUxURkQ9eVxcbiBDT05GSUdfUFRFX01BUktFUl9VRkZEX1dQPXlcXG4gQ09ORklHX1RFU1RfVk1BTExPQz1tXFxuK0NPTkZJR19URVNUX1ZNU1RBVD1tXFxuIENPTkZJR19ERVZJQ0VfUFJJVkFURT15XFxuIENPTkZJR19URVNUX0hNTT1tXFxuIENPTkZJR19HVVBfVEVTVD15XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2tzZnRfdm1zdGF0LnNoIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0va3NmdF92bXN0YXQuc2hcXG5uZXcgZmlsZSBtb2RlIDEwMDc1NVxcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjRlNDcxMTJmOTkyNTFcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0va3NmdF92bXN0YXQuc2hcXG5AQCAtMCwwICsxLDQgQEBcXG4rIyEvYmluL3NoIC1lXFxuKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4rXFxuKy4vcnVuX3ZtdGVzdHMuc2ggLXQgdm1zdGF0XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL3J1bl92bXRlc3RzLnNoIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vcnVuX3ZtdGVzdHMuc2hcXG5pbmRleCA4YzI5NmRlZGYwNDc0Li5jNTQxNmVkYTRjMmU0IDEwMDc1NVxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL3J1bl92bXRlc3RzLnNoXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vcnVuX3ZtdGVzdHMuc2hcXG5AQCAtNDcsNiArNDcsOCBAQCBzZXBhcmF0ZWQgYnkgc3BhY2VzOlxcbiBcXHR0ZXN0cyBmb3IgdmVyeSBsYXJnZSB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2VcXG4gLSB2bWFsbG9jXFxuIFxcdHZtYWxsb2Mgc21va2UgdGVzdHNcXG4rLSB2bXN0YXRcXG4rXFx0dm1zdGF0IHBlcmZvcm1hbmNlIHRlc3RcXG4gLSBobW1cXG4gXFx0aG1tIHNtb2tlIHRlc3RzXFxuIC0gbWFkdl9ndWFyZFxcbkBAIC0zMzgsNiArMzQwLDkgQEAgZmkgIyBWQUREUjY0XFxuICMgdm1hbGxvYyBzdGFiaWxpdHkgc21va2UgdGVzdFxcbiBDQVRFR09SWT1cXFwidm1hbGxvY1xcXCIgcnVuX3Rlc3QgYmFzaCAuL3Rlc3Rfdm1hbGxvYy5zaCBzbW9rZVxcbiBcXG4rIyB2bXN0YXQgcGVyZm9ybWFuY2UgdGVzdFxcbitDQVRFR09SWT1cXFwidm1zdGF0XFxcIiBydW5fdGVzdCBiYXNoIC4vdGVzdF92bXN0YXQuc2ggcGVyZm9ybWFuY2VcXG4rXFxuIENBVEVHT1JZPVxcXCJtcmVtYXBcXFwiIHJ1bl90ZXN0IC4vbXJlbWFwX2RvbnR1bm1hcFxcbiBcXG4gQ0FURUdPUlk9XFxcImhtbVxcXCIgcnVuX3Rlc3QgYmFzaCAuL3Rlc3RfaG1tLnNoIHNtb2tlXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL3Rlc3Rfdm1zdGF0LnNoIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vdGVzdF92bXN0YXQuc2hcXG5uZXcgZmlsZSBtb2RlIDEwMDc1NVxcbmluZGV4IDAwMDAwMDAwMDAwMDAuLmE0ZmM3ZjdmZWMxNmNcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vdGVzdF92bXN0YXQuc2hcXG5AQCAtMCwwICsxLDcxIEBAXFxuKyMhL2Jpbi9iYXNoXFxuKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4rI1xcbisjIFRoaXMgaXMgYSB0ZXN0IHNjcmlwdCBmb3IgdGhlIGtlcm5lbCB0ZXN0IG1vZHVsZSB0byBtZWFzdXJlIHBlcmZvcm1hbmNlIG9mIFZNXFxuKyMgc3RhdGlzdGljcy4gIEl0IHNpbXBseSBsb2FkcyB0aGUga2VybmVsIG1vZHVsZS5cXG4rXFxuK1RFU1RfTkFNRT1cXFwidm1zdGF0XFxcIlxcbitEUklWRVI9XFxcInRlc3RfJHtURVNUX05BTUV9XFxcIlxcbitcXG4rIyBLc2VsZnRlc3QgZnJhbWV3b3JrIHJlcXVpcmVtZW50IC0gU0tJUCBjb2RlIGlzIDQuXFxuK2tzZnRfc2tpcD00XFxuK1xcbitjaGVja190ZXN0X3JlcXVpcmVtZW50cygpXFxuK3tcXG4rXFx0dWlkPSQoaWQgLXUpXFxuK1xcdGlmIFsgJHVpZCAtbmUgMCBdOyB0aGVuXFxuK1xcdFxcdGVjaG8gXFxcIiQwOiBNdXN0IGJlIHJ1biBhcyByb290XFxcIlxcbitcXHRcXHRleGl0ICRrc2Z0X3NraXBcXG4rXFx0ZmlcXG4rXFxuK1xcdGlmICEgd2hpY2ggbW9kcHJvYmUgXFx1MDAzZSAvZGV2L251bGwgMlxcdTAwM2VcXHUwMDI2MTsgdGhlblxcbitcXHRcXHRlY2hvIFxcXCIkMDogWW91IG5lZWQgbW9kcHJvYmUgaW5zdGFsbGVkXFxcIlxcbitcXHRcXHRleGl0ICRrc2Z0X3NraXBcXG4rXFx0ZmlcXG4rXFxuK1xcdGlmICEgbW9kaW5mbyAkRFJJVkVSIFxcdTAwM2UgL2Rldi9udWxsIDJcXHUwMDNlXFx1MDAyNjE7IHRoZW5cXG4rXFx0XFx0ZWNobyBcXFwiJDA6IFlvdSBtdXN0IGhhdmUgdGhlIGZvbGxvd2luZyBlbmFibGVkIGluIHlvdXIga2VybmVsOlxcXCJcXG4rXFx0XFx0ZWNobyBcXFwiQ09ORklHX1RFU1RfVk1TVEFUPW1cXFwiXFxuK1xcdFxcdGV4aXQgJGtzZnRfc2tpcFxcbitcXHRmaVxcbit9XFxuK1xcbitydW5fcGVyZm9ybWFuY2VfY2hlY2soKVxcbit7XFxuK1xcdGVjaG8gXFxcIlJ1biBwZXJmb3JtYW5jZSB0ZXN0cyB0byBldmFsdWF0ZSBob3cgZmFzdCB2bXN0YXQgaXMuXFxcIlxcbitcXG4rXFx0bW9kcHJvYmUgJERSSVZFUiBcXHUwMDNlIC9kZXYvbnVsbCAyXFx1MDAzZVxcdTAwMjYxXFxuK1xcdGVjaG8gXFxcIkRvbmUuXFxcIlxcbitcXHRlY2hvIFxcXCJDaGVjayB0aGUga2VybmVsIG1lc3NhZ2UgYnVmZmVyIHRvIHNlZSB0aGUgc3VtbWFyeS5cXFwiXFxuK31cXG4rXFxuK3VzYWdlKClcXG4re1xcbitcXHRlY2hvIC1uIFxcXCJVc2FnZTogJDAgcGVyZm9ybWFuY2VcXFwiXFxuK1xcdGVjaG9cXG4rXFx0ZWNobyBcXFwiRXhhbXBsZSB1c2FnZTpcXFwiXFxuK1xcdGVjaG9cXG4rXFx0ZWNobyBcXFwiIyBTaG93cyBoZWxwIG1lc3NhZ2VcXFwiXFxuK1xcdGVjaG8gXFxcIi4vJHtEUklWRVJ9LnNoXFxcIlxcbitcXHRlY2hvXFxuK1xcdGVjaG8gXFxcIiMgUGVyZm9ybWFuY2UgYW5hbHlzaXNcXFwiXFxuK1xcdGVjaG8gXFxcIi4vJHtEUklWRVJ9LnNoIHBlcmZvcm1hbmNlXFxcIlxcbitcXHRlY2hvXFxuK1xcdGV4aXQgMFxcbit9XFxuK1xcbitmdW5jdGlvbiBydW5fdGVzdCgpXFxuK3tcXG4rXFx0aWYgWyAkIyAtZXEgMCBdOyB0aGVuXFxuK1xcdFxcdHVzYWdlXFxuK1xcdGVsc2VcXG4rXFx0XFx0aWYgW1sgXFxcIiQxXFxcIiA9IFxcXCJwZXJmb3JtYW5jZVxcXCIgXV07IHRoZW5cXG4rXFx0XFx0XFx0cnVuX3BlcmZvcm1hbmNlX2NoZWNrXFxuK1xcdFxcdGZpXFxuK1xcdGZpXFxuK31cXG4rXFxuK2NoZWNrX3Rlc3RfcmVxdWlyZW1lbnRzXFxuK3J1bl90ZXN0ICRAXFxuK1xcbitleGl0IDBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDI6MDA6MzUuMzUwNzY0M1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjExODkzODMxNDQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgYSBzeW50aGV0aWMgYmVuY2htYXJrIG1vZHVsZSAoYHRlc3Rfdm1zdGF0YCkgYW5kIGl0cyBhc3NvY2lhdGVkIGtzZWxmdGVzdCBzY3JpcHRzLiBUaGUgbW9kdWxlIGV4ZWN1dGVzIGEgZml4ZWQgbG9vcCBvbiBpbml0aWFsaXphdGlvbiB0byBtZWFzdXJlIHBlcmZvcm1hbmNlIGFuZCBpbW1lZGlhdGVseSB1bmxvYWRzIChvciByZXR1cm5zIDAgaWYgYnVpbHQtaW4pLiBJdCBkb2VzIG5vdCBleHBvc2UgYW55IGludGVyZmFjZXMgKGUuZy4sIGlvY3Rscywgc3lzZnMsIGRlYnVnZnMpIHRvIHVzZXJzcGFjZSwgbWVhbmluZyB0aGVyZSBpcyBubyBhdHRhY2sgc3VyZmFjZSBvciBpbnB1dCBmb3IgYSBmdXp6ZXIgdG8gZXhwbG9yZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDNiMDA1NGFlOGM0OTA5MTZhMTUxNjJiODFjMGU5NjI2OGYwNTIyNTFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAzIDAyOjAwOjM0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvTUFJTlRBSU5FUlMgYi9NQUlOVEFJTkVSU1xuaW5kZXggNTExNGU2ZGI3MzA3ZC4uYzc2NTE0ZDZjNTAzYiAxMDA2NDRcbi0tLSBhL01BSU5UQUlORVJTXG4rKysgYi9NQUlOVEFJTkVSU1xuQEAgLTE3MDA0LDYgKzE3MDA0LDcgQEAgRjpcdG1tL3NwYXJzZS5jXG4gRjpcdG1tL3V0aWwuY1xuIEY6XHRtbS92bXByZXNzdXJlLmNcbiBGOlx0bW0vdm1zdGF0LmNcbitGOlx0bGliL3Rlc3Rfdm1zdGF0LmNcbiBOOlx0aW5jbHVkZVxcL2xpbnV4XFwvcGFnZVstX11bYS16QS1aXSpcbiBcbiBNRU1PUlkgTUFOQUdFTUVOVCAtIEVYRUNNRU1cbmRpZmYgLS1naXQgYS9saWIvS2NvbmZpZy5kZWJ1ZyBiL2xpYi9LY29uZmlnLmRlYnVnXG5pbmRleCAxMjQ0ZGNhYzIyOTRhLi42ZDc0M2M4ZTI3ZmFmIDEwMDY0NFxuLS0tIGEvbGliL0tjb25maWcuZGVidWdcbisrKyBiL2xpYi9LY29uZmlnLmRlYnVnXG5AQCAtMzQyNyw2ICszNDI3LDE2IEBAIGNvbmZpZyBURVNUX0tFWEVDX0hBTkRPVkVSXG4gXG4gXHQgIElmIHVuc3VyZSwgc2F5IE4uXG4gXG4rY29uZmlnIFRFU1RfVk1TVEFUXG4rXHR0cmlzdGF0ZSBcIlZNIFN0YXRpc3RpY3MgQmVuY2htYXJrXCJcbitcdGRlZmF1bHQgblxuK1x0aGVscFxuK1x0ICBBIHN5bnRoZXRpYyBiZW5jaG1hcmsgbWVhc3VyaW5nIHRoZSBwZXJmb3JtYW5jZSBvZiBWTSBzdGF0aXN0aWNzLFxuK1x0ICB1c2VmdWwgdG8gYW5hbHl6ZSBhbnkgaW1wcm92ZW1lbnRzIG9yIHJlZ3Jlc3Npb25zIGluIGZ1bmN0aW9ucyB0aGF0XG4rXHQgIGFyZSBmcmVxdWVudGx5IHVzZWQgaW4gaG90IGNvZGUgcGF0aHMuXG4rXG4rXHQgIElmIHVuc3VyZSwgc2F5IE4uXG4rXG4gY29uZmlnIFJBVEVMSU1JVF9LVU5JVF9URVNUXG4gXHR0cmlzdGF0ZSBcIktVbml0IFRlc3QgZm9yIGNvcnJlY3RuZXNzIGFuZCBzdHJlc3Mgb2YgcmF0ZWxpbWl0XCIgaWYgIUtVTklUX0FMTF9URVNUU1xuIFx0ZGVwZW5kcyBvbiBLVU5JVFxuZGlmZiAtLWdpdCBhL2xpYi9NYWtlZmlsZSBiL2xpYi9NYWtlZmlsZVxuaW5kZXggN2Y3NWNjNmVkZjk0YS4uNWYzZWJhYmQwMjI0MiAxMDA2NDRcbi0tLSBhL2xpYi9NYWtlZmlsZVxuKysrIGIvbGliL01ha2VmaWxlXG5AQCAtMTA1LDYgKzEwNSw3IEBAIG9iai0kKENPTkZJR19URVNUX0ZSRUVfUEFHRVMpICs9IHRlc3RfZnJlZV9wYWdlcy5vXG4gb2JqLSQoQ09ORklHX1RFU1RfUkVGX1RSQUNLRVIpICs9IHRlc3RfcmVmX3RyYWNrZXIub1xuIG9iai0kKENPTkZJR19URVNUX09CSlBPT0wpICs9IHRlc3Rfb2JqcG9vbC5vXG4gb2JqLSQoQ09ORklHX1RFU1RfS0VYRUNfSEFORE9WRVIpICs9IHRlc3Rfa2hvLm9cbitvYmotJChDT05GSUdfVEVTVF9WTVNUQVQpICs9IHRlc3Rfdm1zdGF0Lm9cbiBcbiBvYmotJChDT05GSUdfVEVTVF9GUFUpICs9IHRlc3RfZnB1Lm9cbiB0ZXN0X2ZwdS15IDo9IHRlc3RfZnB1X2dsdWUubyB0ZXN0X2ZwdV9pbXBsLm9cbmRpZmYgLS1naXQgYS9saWIvdGVzdF92bXN0YXQuYyBiL2xpYi90ZXN0X3Ztc3RhdC5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uZWU0ODcyYTRjODJkYlxuLS0tIC9kZXYvbnVsbFxuKysrIGIvbGliL3Rlc3Rfdm1zdGF0LmNcbkBAIC0wLDAgKzEsMTAwIEBAXG4rLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb3ItbGF0ZXJcbisvKlxuKyAqIFRlc3QgbW9kdWxlIGZvciBpbi1rZXJuZWwgc3ludGhldGljIHZtIHN0YXRpc3RpY3MgcGVyZm9ybWFuY2UuXG4rICpcbisgKiBleGVjdXRlXG4rICpcbisgKlx0bW9kcHJvYmUgdGVzdF92bXN0YXRcbisgKlxuKyAqIHRvIHJ1biB0aGlzIHRlc3RcbisgKlxuKyAqIChDKSAyMDA5IExpbnV4IEZvdW5kYXRpb24sIENocmlzdG9waCBMYW1ldGVyIFx1MDAzY2NsQGdlbnR3by5vcmdcdTAwM2VcbisgKi9cbitcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9qaWZmaWVzLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9jb21waWxlci5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvaW5pdC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9tbS5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjYXNtL3RpbWV4LmhcdTAwM2VcbitcbisjZGVmaW5lIFRFU1RfQ09VTlQgMTAwMDBcbitcbitzdGF0aWMgaW50IHZtc3RhdF90ZXN0X2luaXQodm9pZClcbit7XG4rXHR1bnNpZ25lZCBpbnQgaTtcbitcdGN5Y2xlc190IHRpbWUxLCB0aW1lMiwgdGltZTtcbitcdGludCByZW07XG4rXHRzdHJ1Y3QgcGFnZSAqcGFnZSA9IGFsbG9jX3BhZ2UoR0ZQX0tFUk5FTCk7XG4rXG4rXHRpZiAoIXBhZ2UpXG4rXHRcdHJldHVybiAtRU5PTUVNO1xuK1xuK1x0cHJfYWxlcnQoXCJWTXN0YXQgdGVzdGluZ1xcblwiKTtcbitcdHByX2FsZXJ0KFwiPT09PT09PT09PT09PT09PT09PT09XFxuXCIpO1xuK1x0cHJfYWxlcnQoXCIxLiBpbmNfem9uZV9wYWdlX3N0YXRlKCkgdGhlbiBkZWNfem9uZV9wYWdlX3N0YXRlKClcXG5cIik7XG4rXHR0aW1lMSA9IGdldF9jeWNsZXMoKTtcbitcdGZvciAoaSA9IDA7IGkgXHUwMDNjIFRFU1RfQ09VTlQ7IGkrKylcbitcdFx0aW5jX3pvbmVfcGFnZV9zdGF0ZShwYWdlLCBOUl9GUkVFX0NNQV9QQUdFUyk7XG4rXG4rXHR0aW1lMiA9IGdldF9jeWNsZXMoKTtcbitcdHRpbWUgPSB0aW1lMiAtIHRpbWUxO1xuK1xuK1x0cHJfYWxlcnQoXCIlaSB0aW1lcyBpbmNfem9uZV9wYWdlX3N0YXRlKCkgXCIsIGkpO1xuK1x0dGltZSA9IGRpdl91NjRfcmVtKHRpbWUsIFRFU1RfQ09VTlQsIFx1MDAyNnJlbSk7XG4rXHRwcl9jb250KFwiLVx1MDAzZSAlbGx1IGN5Y2xlcyBcIiwgKHVuc2lnbmVkIGxvbmcgbG9uZykgdGltZSk7XG4rXG4rXHR0aW1lMSA9IGdldF9jeWNsZXMoKTtcbitcdGZvciAoaSA9IDA7IGkgXHUwMDNjIFRFU1RfQ09VTlQ7IGkrKylcbitcdFx0ZGVjX3pvbmVfcGFnZV9zdGF0ZShwYWdlLCBOUl9GUkVFX0NNQV9QQUdFUyk7XG4rXG4rXHR0aW1lMiA9IGdldF9jeWNsZXMoKTtcbitcdHRpbWUgPSB0aW1lMiAtIHRpbWUxO1xuK1xuK1x0cHJfY29udChcIl9fZGVjX3pfcF9zKCkgXCIpO1xuK1x0dGltZSA9IGRpdl91NjRfcmVtKHRpbWUsIFRFU1RfQ09VTlQsIFx1MDAyNnJlbSk7XG4rXHRwcl9jb250KFwiLVx1MDAzZSAlbGx1IGN5Y2xlc1xcblwiLCAgKHVuc2lnbmVkIGxvbmcgbG9uZykgdGltZSk7XG4rXG4rXHRwcl9hbGVydChcIjIuIGluY196b25lX3BhZ2Vfc3RhdGUoKS9kZWNfem9uZV9wYWdlX3N0YXRlKClcXG5cIik7XG4rXHR0aW1lMSA9IGdldF9jeWNsZXMoKTtcbitcdGZvciAoaSA9IDA7IGkgXHUwMDNjIFRFU1RfQ09VTlQ7IGkrKykge1xuK1x0XHRpbmNfem9uZV9wYWdlX3N0YXRlKHBhZ2UsIE5SX0ZSRUVfQ01BX1BBR0VTKTtcbitcdFx0ZGVjX3pvbmVfcGFnZV9zdGF0ZShwYWdlLCBOUl9GUkVFX0NNQV9QQUdFUyk7XG4rXHR9XG4rXG4rXHR0aW1lMiA9IGdldF9jeWNsZXMoKTtcbitcdHRpbWUgPSB0aW1lMiAtIHRpbWUxO1xuK1xuK1x0cHJfYWxlcnQoXCIlaSB0aW1lcyBpbmMvZGVjIFwiLCBpKTtcbitcdHRpbWUgPSBkaXZfdTY0X3JlbSh0aW1lLCBURVNUX0NPVU5ULCBcdTAwMjZyZW0pO1xuK1x0cHJfY29udChcIi1cdTAwM2UgJWxsdSBjeWNsZXNcXG5cIiwgICh1bnNpZ25lZCBsb25nIGxvbmcpIHRpbWUpO1xuK1xuK1x0cHJfYWxlcnQoXCIzLiBjb3VudF92bV9ldmVudCgpXFxuXCIpO1xuK1x0dGltZTEgPSBnZXRfY3ljbGVzKCk7XG4rXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBURVNUX0NPVU5UOyBpKyspXG4rXHRcdGNvdW50X3ZtX2V2ZW50KFNMQUJTX1NDQU5ORUQpO1xuK1xuK1x0dGltZTIgPSBnZXRfY3ljbGVzKCk7XG4rXHR0aW1lID0gdGltZTIgLSB0aW1lMTtcbitcbitcdGNvdW50X3ZtX2V2ZW50cyhTTEFCU19TQ0FOTkVELCAtVEVTVF9DT1VOVCk7XG4rXHRwcl9hbGVydChcIiVpIGNvdW50X3ZtX2V2ZW50cyBcIiwgaSk7XG4rXHR0aW1lID0gZGl2X3U2NF9yZW0odGltZSwgVEVTVF9DT1VOVCwgXHUwMDI2cmVtKTtcbitcdHByX2NvbnQoXCItXHUwMDNlICVsbHUgY3ljbGVzXFxuXCIsICAodW5zaWduZWQgbG9uZyBsb25nKSB0aW1lKTtcbitcdF9fZnJlZV9wYWdlKHBhZ2UpO1xuK1xuKyAgICAgICAgLyogRmFpbCB3aWxsIGRpcmVjdGx5IHVubG9hZCB0aGUgbW9kdWxlICovXG4rICAgICAgICByZXR1cm4gSVNfQlVJTFRJTihDT05GSUdfVEVTVF9WTVNUQVQpID8gMCA6IC1FQUdBSU47XG4rfVxuK1xuK3N0YXRpYyB2b2lkIHZtc3RhdF90ZXN0X2V4aXQodm9pZClcbit7XG4rXHRwcl9hbGVydChcInRlc3QgZXhpdFxcblwiKTtcbit9XG4rXG4rbW9kdWxlX2luaXQodm1zdGF0X3Rlc3RfaW5pdClcbittb2R1bGVfZXhpdCh2bXN0YXRfdGVzdF9leGl0KVxuK1xuK01PRFVMRV9MSUNFTlNFKFwiR1BMXCIpO1xuK01PRFVMRV9BVVRIT1IoXCJDaHJpc3RvcGggTGFtZXRlclwiKTtcbitNT0RVTEVfREVTQ1JJUFRJT04oXCJWTSBzdGF0aXN0aWNzIHRlc3RcIik7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vTWFrZWZpbGUgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9NYWtlZmlsZVxuaW5kZXggZTZkZjk2OGYwOTcxYy4uMGQzODZjOGI4M2I3MCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL01ha2VmaWxlXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9NYWtlZmlsZVxuQEAgLTE3Myw4ICsxNzMsMTAgQEAgVEVTVF9QUk9HUyArPSBrc2Z0X3RocC5zaFxuIFRFU1RfUFJPR1MgKz0ga3NmdF91c2VyZmF1bHRmZC5zaFxuIFRFU1RfUFJPR1MgKz0ga3NmdF92bWFfbWVyZ2Uuc2hcbiBURVNUX1BST0dTICs9IGtzZnRfdm1hbGxvYy5zaFxuK1RFU1RfUFJPR1MgKz0ga3NmdF92bXN0YXQuc2hcbiBcbiBURVNUX0ZJTEVTIDo9IHRlc3Rfdm1hbGxvYy5zaFxuK1RFU1RfRklMRVMgOj0gdGVzdF92bXN0YXQuc2hcbiBURVNUX0ZJTEVTICs9IHRlc3RfaG1tLnNoXG4gVEVTVF9GSUxFUyArPSB2YV9oaWdoX2FkZHJfc3dpdGNoLnNoXG4gVEVTVF9GSUxFUyArPSBjaGFyZ2VfcmVzZXJ2ZWRfaHVnZXRsYi5zaFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2NvbmZpZyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2NvbmZpZ1xuaW5kZXggMDZmNzhiZDIzMmUyZS4uMTZlMDJhMmNiMmExYSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2NvbmZpZ1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vY29uZmlnXG5AQCAtMiw2ICsyLDcgQEAgQ09ORklHX1NZU1ZJUEM9eVxuIENPTkZJR19VU0VSRkFVTFRGRD15XG4gQ09ORklHX1BURV9NQVJLRVJfVUZGRF9XUD15XG4gQ09ORklHX1RFU1RfVk1BTExPQz1tXG4rQ09ORklHX1RFU1RfVk1TVEFUPW1cbiBDT05GSUdfREVWSUNFX1BSSVZBVEU9eVxuIENPTkZJR19URVNUX0hNTT1tXG4gQ09ORklHX0dVUF9URVNUPXlcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9rc2Z0X3Ztc3RhdC5zaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2tzZnRfdm1zdGF0LnNoXG5uZXcgZmlsZSBtb2RlIDEwMDc1NVxuaW5kZXggMDAwMDAwMDAwMDAwMC4uNGU0NzExMmY5OTI1MVxuLS0tIC9kZXYvbnVsbFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0va3NmdF92bXN0YXQuc2hcbkBAIC0wLDAgKzEsNCBAQFxuKyMhL2Jpbi9zaCAtZVxuKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbitcbisuL3J1bl92bXRlc3RzLnNoIC10IHZtc3RhdFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL3J1bl92bXRlc3RzLnNoIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vcnVuX3ZtdGVzdHMuc2hcbmluZGV4IDhjMjk2ZGVkZjA0NzQuLmM1NDE2ZWRhNGMyZTQgMTAwNzU1XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9ydW5fdm10ZXN0cy5zaFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vcnVuX3ZtdGVzdHMuc2hcbkBAIC00Nyw2ICs0Nyw4IEBAIHNlcGFyYXRlZCBieSBzcGFjZXM6XG4gXHR0ZXN0cyBmb3IgdmVyeSBsYXJnZSB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2VcbiAtIHZtYWxsb2NcbiBcdHZtYWxsb2Mgc21va2UgdGVzdHNcbistIHZtc3RhdFxuK1x0dm1zdGF0IHBlcmZvcm1hbmNlIHRlc3RcbiAtIGhtbVxuIFx0aG1tIHNtb2tlIHRlc3RzXG4gLSBtYWR2X2d1YXJkXG5AQCAtMzM4LDYgKzM0MCw5IEBAIGZpICMgVkFERFI2NFxuICMgdm1hbGxvYyBzdGFiaWxpdHkgc21va2UgdGVzdFxuIENBVEVHT1JZPVwidm1hbGxvY1wiIHJ1bl90ZXN0IGJhc2ggLi90ZXN0X3ZtYWxsb2Muc2ggc21va2VcbiBcbisjIHZtc3RhdCBwZXJmb3JtYW5jZSB0ZXN0XG4rQ0FURUdPUlk9XCJ2bXN0YXRcIiBydW5fdGVzdCBiYXNoIC4vdGVzdF92bXN0YXQuc2ggcGVyZm9ybWFuY2VcbitcbiBDQVRFR09SWT1cIm1yZW1hcFwiIHJ1bl90ZXN0IC4vbXJlbWFwX2RvbnR1bm1hcFxuIFxuIENBVEVHT1JZPVwiaG1tXCIgcnVuX3Rlc3QgYmFzaCAuL3Rlc3RfaG1tLnNoIHNtb2tlXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vdGVzdF92bXN0YXQuc2ggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS90ZXN0X3Ztc3RhdC5zaFxubmV3IGZpbGUgbW9kZSAxMDA3NTVcbmluZGV4IDAwMDAwMDAwMDAwMDAuLmE0ZmM3ZjdmZWMxNmNcbi0tLSAvZGV2L251bGxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL3Rlc3Rfdm1zdGF0LnNoXG5AQCAtMCwwICsxLDcxIEBAXG4rIyEvYmluL2Jhc2hcbisjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4rI1xuKyMgVGhpcyBpcyBhIHRlc3Qgc2NyaXB0IGZvciB0aGUga2VybmVsIHRlc3QgbW9kdWxlIHRvIG1lYXN1cmUgcGVyZm9ybWFuY2Ugb2YgVk1cbisjIHN0YXRpc3RpY3MuICBJdCBzaW1wbHkgbG9hZHMgdGhlIGtlcm5lbCBtb2R1bGUuXG4rXG4rVEVTVF9OQU1FPVwidm1zdGF0XCJcbitEUklWRVI9XCJ0ZXN0XyR7VEVTVF9OQU1FfVwiXG4rXG4rIyBLc2VsZnRlc3QgZnJhbWV3b3JrIHJlcXVpcmVtZW50IC0gU0tJUCBjb2RlIGlzIDQuXG4ra3NmdF9za2lwPTRcbitcbitjaGVja190ZXN0X3JlcXVpcmVtZW50cygpXG4re1xuK1x0dWlkPSQoaWQgLXUpXG4rXHRpZiBbICR1aWQgLW5lIDAgXTsgdGhlblxuK1x0XHRlY2hvIFwiJDA6IE11c3QgYmUgcnVuIGFzIHJvb3RcIlxuK1x0XHRleGl0ICRrc2Z0X3NraXBcbitcdGZpXG4rXG4rXHRpZiAhIHdoaWNoIG1vZHByb2JlIFx1MDAzZSAvZGV2L251bGwgMlx1MDAzZVx1MDAyNjE7IHRoZW5cbitcdFx0ZWNobyBcIiQwOiBZb3UgbmVlZCBtb2Rwcm9iZSBpbnN0YWxsZWRcIlxuK1x0XHRleGl0ICRrc2Z0X3NraXBcbitcdGZpXG4rXG4rXHRpZiAhIG1vZGluZm8gJERSSVZFUiBcdTAwM2UgL2Rldi9udWxsIDJcdTAwM2VcdTAwMjYxOyB0aGVuXG4rXHRcdGVjaG8gXCIkMDogWW91IG11c3QgaGF2ZSB0aGUgZm9sbG93aW5nIGVuYWJsZWQgaW4geW91ciBrZXJuZWw6XCJcbitcdFx0ZWNobyBcIkNPTkZJR19URVNUX1ZNU1RBVD1tXCJcbitcdFx0ZXhpdCAka3NmdF9za2lwXG4rXHRmaVxuK31cbitcbitydW5fcGVyZm9ybWFuY2VfY2hlY2soKVxuK3tcbitcdGVjaG8gXCJSdW4gcGVyZm9ybWFuY2UgdGVzdHMgdG8gZXZhbHVhdGUgaG93IGZhc3Qgdm1zdGF0IGlzLlwiXG4rXG4rXHRtb2Rwcm9iZSAkRFJJVkVSIFx1MDAzZSAvZGV2L251bGwgMlx1MDAzZVx1MDAyNjFcbitcdGVjaG8gXCJEb25lLlwiXG4rXHRlY2hvIFwiQ2hlY2sgdGhlIGtlcm5lbCBtZXNzYWdlIGJ1ZmZlciB0byBzZWUgdGhlIHN1bW1hcnkuXCJcbit9XG4rXG4rdXNhZ2UoKVxuK3tcbitcdGVjaG8gLW4gXCJVc2FnZTogJDAgcGVyZm9ybWFuY2VcIlxuK1x0ZWNob1xuK1x0ZWNobyBcIkV4YW1wbGUgdXNhZ2U6XCJcbitcdGVjaG9cbitcdGVjaG8gXCIjIFNob3dzIGhlbHAgbWVzc2FnZVwiXG4rXHRlY2hvIFwiLi8ke0RSSVZFUn0uc2hcIlxuK1x0ZWNob1xuK1x0ZWNobyBcIiMgUGVyZm9ybWFuY2UgYW5hbHlzaXNcIlxuK1x0ZWNobyBcIi4vJHtEUklWRVJ9LnNoIHBlcmZvcm1hbmNlXCJcbitcdGVjaG9cbitcdGV4aXQgMFxuK31cbitcbitmdW5jdGlvbiBydW5fdGVzdCgpXG4re1xuK1x0aWYgWyAkIyAtZXEgMCBdOyB0aGVuXG4rXHRcdHVzYWdlXG4rXHRlbHNlXG4rXHRcdGlmIFtbIFwiJDFcIiA9IFwicGVyZm9ybWFuY2VcIiBdXTsgdGhlblxuK1x0XHRcdHJ1bl9wZXJmb3JtYW5jZV9jaGVja1xuK1x0XHRmaVxuK1x0Zmlcbit9XG4rXG4rY2hlY2tfdGVzdF9yZXF1aXJlbWVudHNcbitydW5fdGVzdCAkQFxuK1xuK2V4aXQgMFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDI6MDA6MzUuMzUwNzY1OTdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTg5Mzc5NDkxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXb3J0aEZ1enppbmcgRXZhbHVhdGlvbiBmb3IgdGhlIFZNIFN0YXRpc3RpY3MgQmVuY2htYXJrKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBUaGlzIHBhdGNoIGlzIGFkZGluZyBhIG5ldyB0ZXN0IG1vZHVsZSwgYHRlc3Rfdm1zdGF0LmNgLCB3aXRoaW4gdGhlIGBsaWIvYCBkaXJlY3RvcnksIGFsb25nIHdpdGggY29ycmVzcG9uZGluZyBrc2VsZnRlc3Qgc2NyaXB0cyBpbiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzOiBpcyB0aGlzIGV2ZW4gd29ydGggZnV6emluZz8gSSBtZWFuLCBpdCAqaXMqIGNvZGUsIGJ1dCBpdCdzIGEgKnRlc3QqLCBhIGJlbmNobWFyayBzcGVjaWZpY2FsbHkgZGVzaWduZWQgdG8gbWVhc3VyZSB0aGUgcGVyZm9ybWFuY2Ugb2YgVk0gc3RhdGlzdGljcyBmdW5jdGlvbnMgbGlrZSBgaW5jX3pvbmVfcGFnZV9zdGF0ZWAgYW5kIHRoZSBsaWtlLiBJdCdzIG5vdCBpbnRyb2R1Y2luZyBhbnkgbmV3IGtlcm5lbCBsb2dpYyBiZXlvbmQgdGhhdC4gSXQganVzdCBsb29wcyBhbmQgY2FsbHMgZXhpc3RpbmcgZnVuY3Rpb25zIHRvIG1lYXN1cmUgY3ljbGVzLlxuXG5Ob3csIG15IGluaXRpYWwgcmVhY3Rpb24gaXMsIHByb2JhYmx5IG5vdC4gQnV0IHRoZSBwcm9tcHQgaXMgY2xlYXI6IEkgbmVlZCB0byBjb25zaWRlciBpdCB3aXRoaW4gdGhlIGdpdmVuIGNvbnN0cmFpbnRzLiBJdCB0ZWxscyBtZSB0byBzZXQgYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIHBhdGNoIG9ubHkgaW5jbHVkZXMgZG9jdW1lbnRhdGlvbiBjaGFuZ2VzLCBLY29uZmlnIG1vZGlmaWNhdGlvbnMsIGNvbW1lbnRzLCBkZWNvcmF0aXZlIGxvZ2dpbmcsIGNoYW5nZXMgdG8gY29uc3RhbnRzIHdpdGhvdXQgaW1wYWN0aW5nIGV4ZWN1dGlvbiwgdW5yZWFjaGFibGUgY29kZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIGNlcnRhaW4gZHJpdmVyIGNoYW5nZXMsIG9yIFBDSSB0ZWFyZG93biBjYWxsYmFja3MuIFRoaXMgaXMgd2hlcmUgSSBoYXZlIHRvIHRoaW5rOiBhcmUgdGVzdCBtb2R1bGVzIGV4ZW1wdCBieSBkZWZhdWx0P1xuXG5BIHRlc3QgbW9kdWxlICppcyogZnVuY3Rpb25hbCBjb2RlLiBIb3dldmVyLCBzeXprYWxsZXIsIHRoZSBmdXp6ZXIgdGhhdCBvZnRlbiBnZXRzIGNvbnNpZGVyZWQsIGRvZXNuJ3QgdHlwaWNhbGx5IGZ1enogdGVzdCBtb2R1bGVzIHVubGVzcyB0aGV5IGV4cG9zZSBhbiBpbnRlcmVzdGluZyBhdHRhY2sgc3VyZmFjZS4gTGV0J3Mgc2VlLi4uIGxvb2tpbmcgYXQgdGhlIGNvZGUsIGB0ZXN0X3Ztc3RhdGAgcnVucyBvbiBgbW9kdWxlX2luaXRgLCBkb2VzIGl0cyBsb29wLCBhbmQgKmltbWVkaWF0ZWx5KiByZXR1cm5zIGAtRUFHQUlOYCBpZiBub3QgYnVpbHQtaW4sIHRodXMgdW5sb2FkaW5nLiBJdCBkb2Vzbid0IHJlZ2lzdGVyIGFueSBkZXZpY2VzLCBubyBzeXNmcyBlbnRyaWVzLCBubyBkZWJ1Z2ZzIGVudHJpZXMsIG5vIGlvY3Rscy4gTm90aGluZy4gSXQganVzdCBydW5zIGEgbG9vcCBhbmQgcHJpbnRzIHRvIGRtZXNnLlxuXG5UaGVyZSdzIG5vICp1c2VyLXNwYWNlIGlucHV0Ki4gSXQncyBhIGZpeGVkIGxvb3AgZXhlY3V0ZWQgb24gbW9kdWxlIGxvYWQuIFNvLCBmcm9tIGEgZnV6emluZyBwZXJzcGVjdGl2ZSwgdGhpcyBsb29rcyBwb2ludGxlc3MuIFRoZXJlJ3Mgbm90aGluZyBmb3IgYSBmdXp6ZXIgdG8gKmZ1enoqLlxuXG5MZXQgbWUgY29uZmlybSB0aGF0IGJ5IGxvb2tpbmcgYXQgdGhlIGRldGFpbHMuIGB2bXN0YXRfdGVzdF9pbml0YCB0YWtlcyBubyBwYXJhbWV0ZXJzLCBydW5zIGEgZml4ZWQgbnVtYmVyIG9mIGl0ZXJhdGlvbnMsIGFuZCByZXR1cm5zIGAtRUFHQUlOYCAob3IgMCBpZiBidWlsdC1pbikuIFplcm8gdXNlciBpbnB1dC4gQWJzb2x1dGVseSB6ZXJvLiBGdXp6aW5nIHRoaXMgaXMgYSBjb21wbGV0ZSB3YXN0ZSBvZiByZXNvdXJjZXMuIFNvIEkgYW0gZ29pbmcgdG8gc2V0IGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5JIHdhbnQgdG8gYmUgYWJzb2x1dGVseSBzdXJlIHRoaXMgaXMgY29ycmVjdC4gSSBoYXZlIHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gb3RoZXIgY2hhbmdlcy4gTGV0IG1lIGNoZWNrIHRoZSBvdGhlciBmaWxlcy5cblxuKiAgIGBNQUlOVEFJTkVSU2A6IEp1c3QgYWRkZWQgYGxpYi90ZXN0X3Ztc3RhdC5jYC5cbiogICBgbGliL0tjb25maWcuZGVidWdgOiBBZGRlZCBgVEVTVF9WTVNUQVRgLlxuKiAgIGBsaWIvTWFrZWZpbGVgOiBBZGRlZCBgdGVzdF92bXN0YXQub2AuXG4qICAgYGxpYi90ZXN0X3Ztc3RhdC5jYDogVGhlIG1vZHVsZSBpdHNlbGYsIHdoaWNoIHdlIGFscmVhZHkgYW5hbHl6ZWQuXG4qICAgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tLypgOiBUaGUgdGVzdCBzY3JpcHRzLlxuXG5Ob3RoaW5nIGVsc2UgaXMgY2hhbmdlZC4gTG9va3MgZ29vZC4gSSdtIGNvbmZpZGVudCBpbiBteSBhc3Nlc3NtZW50LiBJJ2xsIG91dHB1dCBgV29ydGhGdXp6aW5nPWZhbHNlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTE1NywiT3V0cHV0VG9rZW5zIjoxMTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3ODMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwMjowMDo0Ny4yNDQ1NjQ0NTlaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI5MTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgYWRkcyBhIHN5bnRoZXRpYyBiZW5jaG1hcmsgbW9kdWxlIChgdGVzdF92bXN0YXRgKSBhbmQgaXRzIGFzc29jaWF0ZWQga3NlbGZ0ZXN0IHNjcmlwdHMuIFRoZSBtb2R1bGUgZXhlY3V0ZXMgYSBmaXhlZCBsb29wIG9uIGluaXRpYWxpemF0aW9uIHRvIG1lYXN1cmUgcGVyZm9ybWFuY2UgYW5kIGltbWVkaWF0ZWx5IHVubG9hZHMgKG9yIHJldHVybnMgMCBpZiBidWlsdC1pbikuIEl0IGRvZXMgbm90IGV4cG9zZSBhbnkgaW50ZXJmYWNlcyAoZS5nLiwgaW9jdGxzLCBzeXNmcywgZGVidWdmcykgdG8gdXNlcnNwYWNlLCBtZWFuaW5nIHRoZXJlIGlzIG5vIGF0dGFjayBzdXJmYWNlIG9yIGlucHV0IGZvciBhIGZ1enplciB0byBleHBsb3JlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBhZGRzIGEgc3ludGhldGljIGJlbmNobWFyayBtb2R1bGUgKGB0ZXN0X3Ztc3RhdGApIGFuZCBpdHMgYXNzb2NpYXRlZCBrc2VsZnRlc3Qgc2NyaXB0cy4gVGhlIG1vZHVsZSBleGVjdXRlcyBhIGZpeGVkIGxvb3Agb24gaW5pdGlhbGl6YXRpb24gdG8gbWVhc3VyZSBwZXJmb3JtYW5jZSBhbmQgaW1tZWRpYXRlbHkgdW5sb2FkcyAob3IgcmV0dXJucyAwIGlmIGJ1aWx0LWluKS4gSXQgZG9lcyBub3QgZXhwb3NlIGFueSBpbnRlcmZhY2VzIChlLmcuLCBpb2N0bHMsIHN5c2ZzLCBkZWJ1Z2ZzKSB0byB1c2Vyc3BhY2UsIG1lYW5pbmcgdGhlcmUgaXMgbm8gYXR0YWNrIHN1cmZhY2Ugb3IgaW5wdXQgZm9yIGEgZnV6emVyIHRvIGV4cGxvcmUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowrfb89[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-03 01:47:13 +0000 UTC FinishedAt: 2026-08-03 02:00:48 +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+CgkJCTx0ZD4yMDI2LzA4LzAzIDAyOjAwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBhIHN5bnRoZXRpYyBiZW5jaG1hcmsgbW9kdWxlIChgdGVzdF92bXN0YXRgKSBhbmQgaXRzIGFzc29jaWF0ZWQga3NlbGZ0ZXN0IHNjcmlwdHMuIFRoZSBtb2R1bGUgZXhlY3V0ZXMgYSBmaXhlZCBsb29wIG9uIGluaXRpYWxpemF0aW9uIHRvIG1lYXN1cmUgcGVyZm9ybWFuY2UgYW5kIGltbWVkaWF0ZWx5IHVubG9hZHMgKG9yIHJldHVybnMgMCBpZiBidWlsdC1pbikuIEl0IGRvZXMgbm90IGV4cG9zZSBhbnkgaW50ZXJmYWNlcyAoZS5nLiwgaW9jdGxzLCBzeXNmcywgZGVidWdmcykgdG8gdXNlcnNwYWNlLCBtZWFuaW5nIHRoZXJlIGlzIG5vIGF0dGFjayBzdXJmYWNlIG9yIGlucHV0IGZvciBhIGZ1enplciB0byBleHBsb3JlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMjowMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDNiMDA1NGFlOGM0OTA5MTZhMTUxNjJiODFjMGU5NjI2OGYwNTIyNTFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAzIDAyOjAwOjM0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlNcbmluZGV4IDUxMTRlNmRiNzMwN2QuLmM3NjUxNGQ2YzUwM2IgMTAwNjQ0XG4tLS0gYS9NQUlOVEFJTkVSU1xuJiM0MzsmIzQzOyYjNDM7IGIvTUFJTlRBSU5FUlNcbkBAIC0xNzAwNCw2ICYjNDM7MTcwMDQsNyBAQCBGOlx0bW0vc3BhcnNlLmNcbiBGOlx0bW0vdXRpbC5jXG4gRjpcdG1tL3ZtcHJlc3N1cmUuY1xuIEY6XHRtbS92bXN0YXQuY1xuJiM0MztGOlx0bGliL3Rlc3Rfdm1zdGF0LmNcbiBOOlx0aW5jbHVkZVxcL2xpbnV4XFwvcGFnZVstX11bYS16QS1aXSpcbiBcbiBNRU1PUlkgTUFOQUdFTUVOVCAtIEVYRUNNRU1cbmRpZmYgLS1naXQgYS9saWIvS2NvbmZpZy5kZWJ1ZyBiL2xpYi9LY29uZmlnLmRlYnVnXG5pbmRleCAxMjQ0ZGNhYzIyOTRhLi42ZDc0M2M4ZTI3ZmFmIDEwMDY0NFxuLS0tIGEvbGliL0tjb25maWcuZGVidWdcbiYjNDM7JiM0MzsmIzQzOyBiL2xpYi9LY29uZmlnLmRlYnVnXG5AQCAtMzQyNyw2ICYjNDM7MzQyNywxNiBAQCBjb25maWcgVEVTVF9LRVhFQ19IQU5ET1ZFUlxuIFxuIFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuIFxuJiM0Mztjb25maWcgVEVTVF9WTVNUQVRcbiYjNDM7XHR0cmlzdGF0ZSBcJiMzNDtWTSBTdGF0aXN0aWNzIEJlbmNobWFya1wmIzM0O1xuJiM0MztcdGRlZmF1bHQgblxuJiM0MztcdGhlbHBcbiYjNDM7XHQgIEEgc3ludGhldGljIGJlbmNobWFyayBtZWFzdXJpbmcgdGhlIHBlcmZvcm1hbmNlIG9mIFZNIHN0YXRpc3RpY3MsXG4mIzQzO1x0ICB1c2VmdWwgdG8gYW5hbHl6ZSBhbnkgaW1wcm92ZW1lbnRzIG9yIHJlZ3Jlc3Npb25zIGluIGZ1bmN0aW9ucyB0aGF0XG4mIzQzO1x0ICBhcmUgZnJlcXVlbnRseSB1c2VkIGluIGhvdCBjb2RlIHBhdGhzLlxuJiM0MztcbiYjNDM7XHQgIElmIHVuc3VyZSwgc2F5IE4uXG4mIzQzO1xuIGNvbmZpZyBSQVRFTElNSVRfS1VOSVRfVEVTVFxuIFx0dHJpc3RhdGUgXCYjMzQ7S1VuaXQgVGVzdCBmb3IgY29ycmVjdG5lc3MgYW5kIHN0cmVzcyBvZiByYXRlbGltaXRcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuIFx0ZGVwZW5kcyBvbiBLVU5JVFxuZGlmZiAtLWdpdCBhL2xpYi9NYWtlZmlsZSBiL2xpYi9NYWtlZmlsZVxuaW5kZXggN2Y3NWNjNmVkZjk0YS4uNWYzZWJhYmQwMjI0MiAxMDA2NDRcbi0tLSBhL2xpYi9NYWtlZmlsZVxuJiM0MzsmIzQzOyYjNDM7IGIvbGliL01ha2VmaWxlXG5AQCAtMTA1LDYgJiM0MzsxMDUsNyBAQCBvYmotJChDT05GSUdfVEVTVF9GUkVFX1BBR0VTKSAmIzQzOz0gdGVzdF9mcmVlX3BhZ2VzLm9cbiBvYmotJChDT05GSUdfVEVTVF9SRUZfVFJBQ0tFUikgJiM0Mzs9IHRlc3RfcmVmX3RyYWNrZXIub1xuIG9iai0kKENPTkZJR19URVNUX09CSlBPT0wpICYjNDM7PSB0ZXN0X29ianBvb2wub1xuIG9iai0kKENPTkZJR19URVNUX0tFWEVDX0hBTkRPVkVSKSAmIzQzOz0gdGVzdF9raG8ub1xuJiM0MztvYmotJChDT05GSUdfVEVTVF9WTVNUQVQpICYjNDM7PSB0ZXN0X3Ztc3RhdC5vXG4gXG4gb2JqLSQoQ09ORklHX1RFU1RfRlBVKSAmIzQzOz0gdGVzdF9mcHUub1xuIHRlc3RfZnB1LXkgOj0gdGVzdF9mcHVfZ2x1ZS5vIHRlc3RfZnB1X2ltcGwub1xuZGlmZiAtLWdpdCBhL2xpYi90ZXN0X3Ztc3RhdC5jIGIvbGliL3Rlc3Rfdm1zdGF0LmNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi5lZTQ4NzJhNGM4MmRiXG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi9saWIvdGVzdF92bXN0YXQuY1xuQEAgLTAsMCAmIzQzOzEsMTAwIEBAXG4mIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9yLWxhdGVyXG4mIzQzOy8qXG4mIzQzOyAqIFRlc3QgbW9kdWxlIGZvciBpbi1rZXJuZWwgc3ludGhldGljIHZtIHN0YXRpc3RpY3MgcGVyZm9ybWFuY2UuXG4mIzQzOyAqXG4mIzQzOyAqIGV4ZWN1dGVcbiYjNDM7ICpcbiYjNDM7ICpcdG1vZHByb2JlIHRlc3Rfdm1zdGF0XG4mIzQzOyAqXG4mIzQzOyAqIHRvIHJ1biB0aGlzIHRlc3RcbiYjNDM7ICpcbiYjNDM7ICogKEMpIDIwMDkgTGludXggRm91bmRhdGlvbiwgQ2hyaXN0b3BoIExhbWV0ZXIgXHUwMDNjY2xAZ2VudHdvLm9yZ1x1MDAzZVxuJiM0MzsgKi9cbiYjNDM7XG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2ppZmZpZXMuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9jb21waWxlci5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2luaXQuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9tb2R1bGUuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9tbS5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2FzbS90aW1leC5oXHUwMDNlXG4mIzQzO1xuJiM0MzsjZGVmaW5lIFRFU1RfQ09VTlQgMTAwMDBcbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgdm1zdGF0X3Rlc3RfaW5pdCh2b2lkKVxuJiM0Mzt7XG4mIzQzO1x0dW5zaWduZWQgaW50IGk7XG4mIzQzO1x0Y3ljbGVzX3QgdGltZTEsIHRpbWUyLCB0aW1lO1xuJiM0MztcdGludCByZW07XG4mIzQzO1x0c3RydWN0IHBhZ2UgKnBhZ2UgPSBhbGxvY19wYWdlKEdGUF9LRVJORUwpO1xuJiM0MztcbiYjNDM7XHRpZiAoIXBhZ2UpXG4mIzQzO1x0XHRyZXR1cm4gLUVOT01FTTtcbiYjNDM7XG4mIzQzO1x0cHJfYWxlcnQoXCYjMzQ7Vk1zdGF0IHRlc3RpbmdcXG5cJiMzNDspO1xuJiM0MztcdHByX2FsZXJ0KFwmIzM0Oz09PT09PT09PT09PT09PT09PT09PVxcblwmIzM0Oyk7XG4mIzQzO1x0cHJfYWxlcnQoXCYjMzQ7MS4gaW5jX3pvbmVfcGFnZV9zdGF0ZSgpIHRoZW4gZGVjX3pvbmVfcGFnZV9zdGF0ZSgpXFxuXCYjMzQ7KTtcbiYjNDM7XHR0aW1lMSA9IGdldF9jeWNsZXMoKTtcbiYjNDM7XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBURVNUX0NPVU5UOyBpJiM0MzsmIzQzOylcbiYjNDM7XHRcdGluY196b25lX3BhZ2Vfc3RhdGUocGFnZSwgTlJfRlJFRV9DTUFfUEFHRVMpO1xuJiM0MztcbiYjNDM7XHR0aW1lMiA9IGdldF9jeWNsZXMoKTtcbiYjNDM7XHR0aW1lID0gdGltZTIgLSB0aW1lMTtcbiYjNDM7XG4mIzQzO1x0cHJfYWxlcnQoXCYjMzQ7JWkgdGltZXMgaW5jX3pvbmVfcGFnZV9zdGF0ZSgpIFwmIzM0OywgaSk7XG4mIzQzO1x0dGltZSA9IGRpdl91NjRfcmVtKHRpbWUsIFRFU1RfQ09VTlQsIFx1MDAyNnJlbSk7XG4mIzQzO1x0cHJfY29udChcJiMzNDstXHUwMDNlICVsbHUgY3ljbGVzIFwmIzM0OywgKHVuc2lnbmVkIGxvbmcgbG9uZykgdGltZSk7XG4mIzQzO1xuJiM0MztcdHRpbWUxID0gZ2V0X2N5Y2xlcygpO1xuJiM0MztcdGZvciAoaSA9IDA7IGkgXHUwMDNjIFRFU1RfQ09VTlQ7IGkmIzQzOyYjNDM7KVxuJiM0MztcdFx0ZGVjX3pvbmVfcGFnZV9zdGF0ZShwYWdlLCBOUl9GUkVFX0NNQV9QQUdFUyk7XG4mIzQzO1xuJiM0MztcdHRpbWUyID0gZ2V0X2N5Y2xlcygpO1xuJiM0MztcdHRpbWUgPSB0aW1lMiAtIHRpbWUxO1xuJiM0MztcbiYjNDM7XHRwcl9jb250KFwmIzM0O19fZGVjX3pfcF9zKCkgXCYjMzQ7KTtcbiYjNDM7XHR0aW1lID0gZGl2X3U2NF9yZW0odGltZSwgVEVTVF9DT1VOVCwgXHUwMDI2cmVtKTtcbiYjNDM7XHRwcl9jb250KFwmIzM0Oy1cdTAwM2UgJWxsdSBjeWNsZXNcXG5cJiMzNDssICAodW5zaWduZWQgbG9uZyBsb25nKSB0aW1lKTtcbiYjNDM7XG4mIzQzO1x0cHJfYWxlcnQoXCYjMzQ7Mi4gaW5jX3pvbmVfcGFnZV9zdGF0ZSgpL2RlY196b25lX3BhZ2Vfc3RhdGUoKVxcblwmIzM0Oyk7XG4mIzQzO1x0dGltZTEgPSBnZXRfY3ljbGVzKCk7XG4mIzQzO1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgVEVTVF9DT1VOVDsgaSYjNDM7JiM0MzspIHtcbiYjNDM7XHRcdGluY196b25lX3BhZ2Vfc3RhdGUocGFnZSwgTlJfRlJFRV9DTUFfUEFHRVMpO1xuJiM0MztcdFx0ZGVjX3pvbmVfcGFnZV9zdGF0ZShwYWdlLCBOUl9GUkVFX0NNQV9QQUdFUyk7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHR0aW1lMiA9IGdldF9jeWNsZXMoKTtcbiYjNDM7XHR0aW1lID0gdGltZTIgLSB0aW1lMTtcbiYjNDM7XG4mIzQzO1x0cHJfYWxlcnQoXCYjMzQ7JWkgdGltZXMgaW5jL2RlYyBcJiMzNDssIGkpO1xuJiM0MztcdHRpbWUgPSBkaXZfdTY0X3JlbSh0aW1lLCBURVNUX0NPVU5ULCBcdTAwMjZyZW0pO1xuJiM0MztcdHByX2NvbnQoXCYjMzQ7LVx1MDAzZSAlbGx1IGN5Y2xlc1xcblwmIzM0OywgICh1bnNpZ25lZCBsb25nIGxvbmcpIHRpbWUpO1xuJiM0MztcbiYjNDM7XHRwcl9hbGVydChcJiMzNDszLiBjb3VudF92bV9ldmVudCgpXFxuXCYjMzQ7KTtcbiYjNDM7XHR0aW1lMSA9IGdldF9jeWNsZXMoKTtcbiYjNDM7XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBURVNUX0NPVU5UOyBpJiM0MzsmIzQzOylcbiYjNDM7XHRcdGNvdW50X3ZtX2V2ZW50KFNMQUJTX1NDQU5ORUQpO1xuJiM0MztcbiYjNDM7XHR0aW1lMiA9IGdldF9jeWNsZXMoKTtcbiYjNDM7XHR0aW1lID0gdGltZTIgLSB0aW1lMTtcbiYjNDM7XG4mIzQzO1x0Y291bnRfdm1fZXZlbnRzKFNMQUJTX1NDQU5ORUQsIC1URVNUX0NPVU5UKTtcbiYjNDM7XHRwcl9hbGVydChcJiMzNDslaSBjb3VudF92bV9ldmVudHMgXCYjMzQ7LCBpKTtcbiYjNDM7XHR0aW1lID0gZGl2X3U2NF9yZW0odGltZSwgVEVTVF9DT1VOVCwgXHUwMDI2cmVtKTtcbiYjNDM7XHRwcl9jb250KFwmIzM0Oy1cdTAwM2UgJWxsdSBjeWNsZXNcXG5cJiMzNDssICAodW5zaWduZWQgbG9uZyBsb25nKSB0aW1lKTtcbiYjNDM7XHRfX2ZyZWVfcGFnZShwYWdlKTtcbiYjNDM7XG4mIzQzOyAgICAgICAgLyogRmFpbCB3aWxsIGRpcmVjdGx5IHVubG9hZCB0aGUgbW9kdWxlICovXG4mIzQzOyAgICAgICAgcmV0dXJuIElTX0JVSUxUSU4oQ09ORklHX1RFU1RfVk1TVEFUKSA/IDAgOiAtRUFHQUlOO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCB2bXN0YXRfdGVzdF9leGl0KHZvaWQpXG4mIzQzO3tcbiYjNDM7XHRwcl9hbGVydChcJiMzNDt0ZXN0IGV4aXRcXG5cJiMzNDspO1xuJiM0Mzt9XG4mIzQzO1xuJiM0Mzttb2R1bGVfaW5pdCh2bXN0YXRfdGVzdF9pbml0KVxuJiM0Mzttb2R1bGVfZXhpdCh2bXN0YXRfdGVzdF9leGl0KVxuJiM0MztcbiYjNDM7TU9EVUxFX0xJQ0VOU0UoXCYjMzQ7R1BMXCYjMzQ7KTtcbiYjNDM7TU9EVUxFX0FVVEhPUihcJiMzNDtDaHJpc3RvcGggTGFtZXRlclwmIzM0Oyk7XG4mIzQzO01PRFVMRV9ERVNDUklQVElPTihcJiMzNDtWTSBzdGF0aXN0aWNzIHRlc3RcJiMzNDspO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL01ha2VmaWxlIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vTWFrZWZpbGVcbmluZGV4IGU2ZGY5NjhmMDk3MWMuLjBkMzg2YzhiODNiNzAgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9NYWtlZmlsZVxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vTWFrZWZpbGVcbkBAIC0xNzMsOCAmIzQzOzE3MywxMCBAQCBURVNUX1BST0dTICYjNDM7PSBrc2Z0X3RocC5zaFxuIFRFU1RfUFJPR1MgJiM0Mzs9IGtzZnRfdXNlcmZhdWx0ZmQuc2hcbiBURVNUX1BST0dTICYjNDM7PSBrc2Z0X3ZtYV9tZXJnZS5zaFxuIFRFU1RfUFJPR1MgJiM0Mzs9IGtzZnRfdm1hbGxvYy5zaFxuJiM0MztURVNUX1BST0dTICYjNDM7PSBrc2Z0X3Ztc3RhdC5zaFxuIFxuIFRFU1RfRklMRVMgOj0gdGVzdF92bWFsbG9jLnNoXG4mIzQzO1RFU1RfRklMRVMgOj0gdGVzdF92bXN0YXQuc2hcbiBURVNUX0ZJTEVTICYjNDM7PSB0ZXN0X2htbS5zaFxuIFRFU1RfRklMRVMgJiM0Mzs9IHZhX2hpZ2hfYWRkcl9zd2l0Y2guc2hcbiBURVNUX0ZJTEVTICYjNDM7PSBjaGFyZ2VfcmVzZXJ2ZWRfaHVnZXRsYi5zaFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2NvbmZpZyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2NvbmZpZ1xuaW5kZXggMDZmNzhiZDIzMmUyZS4uMTZlMDJhMmNiMmExYSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2NvbmZpZ1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vY29uZmlnXG5AQCAtMiw2ICYjNDM7Miw3IEBAIENPTkZJR19TWVNWSVBDPXlcbiBDT05GSUdfVVNFUkZBVUxURkQ9eVxuIENPTkZJR19QVEVfTUFSS0VSX1VGRkRfV1A9eVxuIENPTkZJR19URVNUX1ZNQUxMT0M9bVxuJiM0MztDT05GSUdfVEVTVF9WTVNUQVQ9bVxuIENPTkZJR19ERVZJQ0VfUFJJVkFURT15XG4gQ09ORklHX1RFU1RfSE1NPW1cbiBDT05GSUdfR1VQX1RFU1Q9eVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2tzZnRfdm1zdGF0LnNoIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0va3NmdF92bXN0YXQuc2hcbm5ldyBmaWxlIG1vZGUgMTAwNzU1XG5pbmRleCAwMDAwMDAwMDAwMDAwLi40ZTQ3MTEyZjk5MjUxXG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9rc2Z0X3Ztc3RhdC5zaFxuQEAgLTAsMCAmIzQzOzEsNCBAQFxuJiM0MzsjIS9iaW4vc2ggLWVcbiYjNDM7IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuJiM0MztcbiYjNDM7Li9ydW5fdm10ZXN0cy5zaCAtdCB2bXN0YXRcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9ydW5fdm10ZXN0cy5zaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL3J1bl92bXRlc3RzLnNoXG5pbmRleCA4YzI5NmRlZGYwNDc0Li5jNTQxNmVkYTRjMmU0IDEwMDc1NVxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vcnVuX3ZtdGVzdHMuc2hcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL3J1bl92bXRlc3RzLnNoXG5AQCAtNDcsNiAmIzQzOzQ3LDggQEAgc2VwYXJhdGVkIGJ5IHNwYWNlczpcbiBcdHRlc3RzIGZvciB2ZXJ5IGxhcmdlIHZpcnR1YWwgYWRkcmVzcyBzcGFjZVxuIC0gdm1hbGxvY1xuIFx0dm1hbGxvYyBzbW9rZSB0ZXN0c1xuJiM0MzstIHZtc3RhdFxuJiM0MztcdHZtc3RhdCBwZXJmb3JtYW5jZSB0ZXN0XG4gLSBobW1cbiBcdGhtbSBzbW9rZSB0ZXN0c1xuIC0gbWFkdl9ndWFyZFxuQEAgLTMzOCw2ICYjNDM7MzQwLDkgQEAgZmkgIyBWQUREUjY0XG4gIyB2bWFsbG9jIHN0YWJpbGl0eSBzbW9rZSB0ZXN0XG4gQ0FURUdPUlk9XCYjMzQ7dm1hbGxvY1wmIzM0OyBydW5fdGVzdCBiYXNoIC4vdGVzdF92bWFsbG9jLnNoIHNtb2tlXG4gXG4mIzQzOyMgdm1zdGF0IHBlcmZvcm1hbmNlIHRlc3RcbiYjNDM7Q0FURUdPUlk9XCYjMzQ7dm1zdGF0XCYjMzQ7IHJ1bl90ZXN0IGJhc2ggLi90ZXN0X3Ztc3RhdC5zaCBwZXJmb3JtYW5jZVxuJiM0MztcbiBDQVRFR09SWT1cJiMzNDttcmVtYXBcJiMzNDsgcnVuX3Rlc3QgLi9tcmVtYXBfZG9udHVubWFwXG4gXG4gQ0FURUdPUlk9XCYjMzQ7aG1tXCYjMzQ7IHJ1bl90ZXN0IGJhc2ggLi90ZXN0X2htbS5zaCBzbW9rZVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL3Rlc3Rfdm1zdGF0LnNoIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vdGVzdF92bXN0YXQuc2hcbm5ldyBmaWxlIG1vZGUgMTAwNzU1XG5pbmRleCAwMDAwMDAwMDAwMDAwLi5hNGZjN2Y3ZmVjMTZjXG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS90ZXN0X3Ztc3RhdC5zaFxuQEAgLTAsMCAmIzQzOzEsNzEgQEBcbiYjNDM7IyEvYmluL2Jhc2hcbiYjNDM7IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuJiM0MzsjXG4mIzQzOyMgVGhpcyBpcyBhIHRlc3Qgc2NyaXB0IGZvciB0aGUga2VybmVsIHRlc3QgbW9kdWxlIHRvIG1lYXN1cmUgcGVyZm9ybWFuY2Ugb2YgVk1cbiYjNDM7IyBzdGF0aXN0aWNzLiAgSXQgc2ltcGx5IGxvYWRzIHRoZSBrZXJuZWwgbW9kdWxlLlxuJiM0MztcbiYjNDM7VEVTVF9OQU1FPVwmIzM0O3Ztc3RhdFwmIzM0O1xuJiM0MztEUklWRVI9XCYjMzQ7dGVzdF8ke1RFU1RfTkFNRX1cJiMzNDtcbiYjNDM7XG4mIzQzOyMgS3NlbGZ0ZXN0IGZyYW1ld29yayByZXF1aXJlbWVudCAtIFNLSVAgY29kZSBpcyA0LlxuJiM0Mztrc2Z0X3NraXA9NFxuJiM0MztcbiYjNDM7Y2hlY2tfdGVzdF9yZXF1aXJlbWVudHMoKVxuJiM0Mzt7XG4mIzQzO1x0dWlkPSQoaWQgLXUpXG4mIzQzO1x0aWYgWyAkdWlkIC1uZSAwIF07IHRoZW5cbiYjNDM7XHRcdGVjaG8gXCYjMzQ7JDA6IE11c3QgYmUgcnVuIGFzIHJvb3RcJiMzNDtcbiYjNDM7XHRcdGV4aXQgJGtzZnRfc2tpcFxuJiM0MztcdGZpXG4mIzQzO1xuJiM0MztcdGlmICEgd2hpY2ggbW9kcHJvYmUgXHUwMDNlIC9kZXYvbnVsbCAyXHUwMDNlXHUwMDI2MTsgdGhlblxuJiM0MztcdFx0ZWNobyBcJiMzNDskMDogWW91IG5lZWQgbW9kcHJvYmUgaW5zdGFsbGVkXCYjMzQ7XG4mIzQzO1x0XHRleGl0ICRrc2Z0X3NraXBcbiYjNDM7XHRmaVxuJiM0MztcbiYjNDM7XHRpZiAhIG1vZGluZm8gJERSSVZFUiBcdTAwM2UgL2Rldi9udWxsIDJcdTAwM2VcdTAwMjYxOyB0aGVuXG4mIzQzO1x0XHRlY2hvIFwmIzM0OyQwOiBZb3UgbXVzdCBoYXZlIHRoZSBmb2xsb3dpbmcgZW5hYmxlZCBpbiB5b3VyIGtlcm5lbDpcJiMzNDtcbiYjNDM7XHRcdGVjaG8gXCYjMzQ7Q09ORklHX1RFU1RfVk1TVEFUPW1cJiMzNDtcbiYjNDM7XHRcdGV4aXQgJGtzZnRfc2tpcFxuJiM0MztcdGZpXG4mIzQzO31cbiYjNDM7XG4mIzQzO3J1bl9wZXJmb3JtYW5jZV9jaGVjaygpXG4mIzQzO3tcbiYjNDM7XHRlY2hvIFwmIzM0O1J1biBwZXJmb3JtYW5jZSB0ZXN0cyB0byBldmFsdWF0ZSBob3cgZmFzdCB2bXN0YXQgaXMuXCYjMzQ7XG4mIzQzO1xuJiM0MztcdG1vZHByb2JlICREUklWRVIgXHUwMDNlIC9kZXYvbnVsbCAyXHUwMDNlXHUwMDI2MVxuJiM0MztcdGVjaG8gXCYjMzQ7RG9uZS5cJiMzNDtcbiYjNDM7XHRlY2hvIFwmIzM0O0NoZWNrIHRoZSBrZXJuZWwgbWVzc2FnZSBidWZmZXIgdG8gc2VlIHRoZSBzdW1tYXJ5LlwmIzM0O1xuJiM0Mzt9XG4mIzQzO1xuJiM0Mzt1c2FnZSgpXG4mIzQzO3tcbiYjNDM7XHRlY2hvIC1uIFwmIzM0O1VzYWdlOiAkMCBwZXJmb3JtYW5jZVwmIzM0O1xuJiM0MztcdGVjaG9cbiYjNDM7XHRlY2hvIFwmIzM0O0V4YW1wbGUgdXNhZ2U6XCYjMzQ7XG4mIzQzO1x0ZWNob1xuJiM0MztcdGVjaG8gXCYjMzQ7IyBTaG93cyBoZWxwIG1lc3NhZ2VcJiMzNDtcbiYjNDM7XHRlY2hvIFwmIzM0Oy4vJHtEUklWRVJ9LnNoXCYjMzQ7XG4mIzQzO1x0ZWNob1xuJiM0MztcdGVjaG8gXCYjMzQ7IyBQZXJmb3JtYW5jZSBhbmFseXNpc1wmIzM0O1xuJiM0MztcdGVjaG8gXCYjMzQ7Li8ke0RSSVZFUn0uc2ggcGVyZm9ybWFuY2VcJiMzNDtcbiYjNDM7XHRlY2hvXG4mIzQzO1x0ZXhpdCAwXG4mIzQzO31cbiYjNDM7XG4mIzQzO2Z1bmN0aW9uIHJ1bl90ZXN0KClcbiYjNDM7e1xuJiM0MztcdGlmIFsgJCMgLWVxIDAgXTsgdGhlblxuJiM0MztcdFx0dXNhZ2VcbiYjNDM7XHRlbHNlXG4mIzQzO1x0XHRpZiBbWyBcJiMzNDskMVwmIzM0OyA9IFwmIzM0O3BlcmZvcm1hbmNlXCYjMzQ7IF1dOyB0aGVuXG4mIzQzO1x0XHRcdHJ1bl9wZXJmb3JtYW5jZV9jaGVja1xuJiM0MztcdFx0ZmlcbiYjNDM7XHRmaVxuJiM0Mzt9XG4mIzQzO1xuJiM0MztjaGVja190ZXN0X3JlcXVpcmVtZW50c1xuJiM0MztydW5fdGVzdCAkQFxuJiM0MztcbiYjNDM7ZXhpdCAwXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDI6MDA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBhIHN5bnRoZXRpYyBiZW5jaG1hcmsgbW9kdWxlIChgdGVzdF92bXN0YXRgKSBhbmQgaXRzIGFzc29jaWF0ZWQga3NlbGZ0ZXN0IHNjcmlwdHMuIFRoZSBtb2R1bGUgZXhlY3V0ZXMgYSBmaXhlZCBsb29wIG9uIGluaXRpYWxpemF0aW9uIHRvIG1lYXN1cmUgcGVyZm9ybWFuY2UgYW5kIGltbWVkaWF0ZWx5IHVubG9hZHMgKG9yIHJldHVybnMgMCBpZiBidWlsdC1pbikuIEl0IGRvZXMgbm90IGV4cG9zZSBhbnkgaW50ZXJmYWNlcyAoZS5nLiwgaW9jdGxzLCBzeXNmcywgZGVidWdmcykgdG8gdXNlcnNwYWNlLCBtZWFuaW5nIHRoZXJlIGlzIG5vIGF0dGFjayBzdXJmYWNlIG9yIGlucHV0IGZvciBhIGZ1enplciB0byBleHBsb3JlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDNiMDA1NGFlOGM0OTA5MTZhMTUxNjJiODFjMGU5NjI2OGYwNTIyNTEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEF1ZyAzIDAyOjAwOjM0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvTUFJTlRBSU5FUlMgYi9NQUlOVEFJTkVSUwppbmRleCA1MTE0ZTZkYjczMDdkLi5jNzY1MTRkNmM1MDNiIDEwMDY0NAotLS0gYS9NQUlOVEFJTkVSUwomIzQzOyYjNDM7JiM0MzsgYi9NQUlOVEFJTkVSUwpAQCAtMTcwMDQsNiAmIzQzOzE3MDA0LDcgQEAgRjoJbW0vc3BhcnNlLmMKIEY6CW1tL3V0aWwuYwogRjoJbW0vdm1wcmVzc3VyZS5jCiBGOgltbS92bXN0YXQuYwomIzQzO0Y6CWxpYi90ZXN0X3Ztc3RhdC5jCiBOOglpbmNsdWRlXC9saW51eFwvcGFnZVstX11bYS16QS1aXSoKIAogTUVNT1JZIE1BTkFHRU1FTlQgLSBFWEVDTUVNCmRpZmYgLS1naXQgYS9saWIvS2NvbmZpZy5kZWJ1ZyBiL2xpYi9LY29uZmlnLmRlYnVnCmluZGV4IDEyNDRkY2FjMjI5NGEuLjZkNzQzYzhlMjdmYWYgMTAwNjQ0Ci0tLSBhL2xpYi9LY29uZmlnLmRlYnVnCiYjNDM7JiM0MzsmIzQzOyBiL2xpYi9LY29uZmlnLmRlYnVnCkBAIC0zNDI3LDYgJiM0MzszNDI3LDE2IEBAIGNvbmZpZyBURVNUX0tFWEVDX0hBTkRPVkVSCiAKIAkgIElmIHVuc3VyZSwgc2F5IE4uCiAKJiM0Mztjb25maWcgVEVTVF9WTVNUQVQKJiM0MzsJdHJpc3RhdGUgJiMzNDtWTSBTdGF0aXN0aWNzIEJlbmNobWFyayYjMzQ7CiYjNDM7CWRlZmF1bHQgbgomIzQzOwloZWxwCiYjNDM7CSAgQSBzeW50aGV0aWMgYmVuY2htYXJrIG1lYXN1cmluZyB0aGUgcGVyZm9ybWFuY2Ugb2YgVk0gc3RhdGlzdGljcywKJiM0MzsJICB1c2VmdWwgdG8gYW5hbHl6ZSBhbnkgaW1wcm92ZW1lbnRzIG9yIHJlZ3Jlc3Npb25zIGluIGZ1bmN0aW9ucyB0aGF0CiYjNDM7CSAgYXJlIGZyZXF1ZW50bHkgdXNlZCBpbiBob3QgY29kZSBwYXRocy4KJiM0MzsKJiM0MzsJICBJZiB1bnN1cmUsIHNheSBOLgomIzQzOwogY29uZmlnIFJBVEVMSU1JVF9LVU5JVF9URVNUCiAJdHJpc3RhdGUgJiMzNDtLVW5pdCBUZXN0IGZvciBjb3JyZWN0bmVzcyBhbmQgc3RyZXNzIG9mIHJhdGVsaW1pdCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFMKIAlkZXBlbmRzIG9uIEtVTklUCmRpZmYgLS1naXQgYS9saWIvTWFrZWZpbGUgYi9saWIvTWFrZWZpbGUKaW5kZXggN2Y3NWNjNmVkZjk0YS4uNWYzZWJhYmQwMjI0MiAxMDA2NDQKLS0tIGEvbGliL01ha2VmaWxlCiYjNDM7JiM0MzsmIzQzOyBiL2xpYi9NYWtlZmlsZQpAQCAtMTA1LDYgJiM0MzsxMDUsNyBAQCBvYmotJChDT05GSUdfVEVTVF9GUkVFX1BBR0VTKSAmIzQzOz0gdGVzdF9mcmVlX3BhZ2VzLm8KIG9iai0kKENPTkZJR19URVNUX1JFRl9UUkFDS0VSKSAmIzQzOz0gdGVzdF9yZWZfdHJhY2tlci5vCiBvYmotJChDT05GSUdfVEVTVF9PQkpQT09MKSAmIzQzOz0gdGVzdF9vYmpwb29sLm8KIG9iai0kKENPTkZJR19URVNUX0tFWEVDX0hBTkRPVkVSKSAmIzQzOz0gdGVzdF9raG8ubwomIzQzO29iai0kKENPTkZJR19URVNUX1ZNU1RBVCkgJiM0Mzs9IHRlc3Rfdm1zdGF0Lm8KIAogb2JqLSQoQ09ORklHX1RFU1RfRlBVKSAmIzQzOz0gdGVzdF9mcHUubwogdGVzdF9mcHUteSA6PSB0ZXN0X2ZwdV9nbHVlLm8gdGVzdF9mcHVfaW1wbC5vCmRpZmYgLS1naXQgYS9saWIvdGVzdF92bXN0YXQuYyBiL2xpYi90ZXN0X3Ztc3RhdC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLmVlNDg3MmE0YzgyZGIKLS0tIC9kZXYvbnVsbAomIzQzOyYjNDM7JiM0MzsgYi9saWIvdGVzdF92bXN0YXQuYwpAQCAtMCwwICYjNDM7MSwxMDAgQEAKJiM0MzsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vci1sYXRlcgomIzQzOy8qCiYjNDM7ICogVGVzdCBtb2R1bGUgZm9yIGluLWtlcm5lbCBzeW50aGV0aWMgdm0gc3RhdGlzdGljcyBwZXJmb3JtYW5jZS4KJiM0MzsgKgomIzQzOyAqIGV4ZWN1dGUKJiM0MzsgKgomIzQzOyAqCW1vZHByb2JlIHRlc3Rfdm1zdGF0CiYjNDM7ICoKJiM0MzsgKiB0byBydW4gdGhpcyB0ZXN0CiYjNDM7ICoKJiM0MzsgKiAoQykgMjAwOSBMaW51eCBGb3VuZGF0aW9uLCBDaHJpc3RvcGggTGFtZXRlciAmbHQ7Y2xAZ2VudHdvLm9yZyZndDsKJiM0MzsgKi8KJiM0MzsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvamlmZmllcy5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9jb21waWxlci5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9pbml0LmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L21vZHVsZS5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9tbS5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDthc20vdGltZXguaCZndDsKJiM0MzsKJiM0MzsjZGVmaW5lIFRFU1RfQ09VTlQgMTAwMDAKJiM0MzsKJiM0MztzdGF0aWMgaW50IHZtc3RhdF90ZXN0X2luaXQodm9pZCkKJiM0Mzt7CiYjNDM7CXVuc2lnbmVkIGludCBpOwomIzQzOwljeWNsZXNfdCB0aW1lMSwgdGltZTIsIHRpbWU7CiYjNDM7CWludCByZW07CiYjNDM7CXN0cnVjdCBwYWdlICpwYWdlID0gYWxsb2NfcGFnZShHRlBfS0VSTkVMKTsKJiM0MzsKJiM0MzsJaWYgKCFwYWdlKQomIzQzOwkJcmV0dXJuIC1FTk9NRU07CiYjNDM7CiYjNDM7CXByX2FsZXJ0KCYjMzQ7Vk1zdGF0IHRlc3RpbmdcbiYjMzQ7KTsKJiM0MzsJcHJfYWxlcnQoJiMzNDs9PT09PT09PT09PT09PT09PT09PT1cbiYjMzQ7KTsKJiM0MzsJcHJfYWxlcnQoJiMzNDsxLiBpbmNfem9uZV9wYWdlX3N0YXRlKCkgdGhlbiBkZWNfem9uZV9wYWdlX3N0YXRlKClcbiYjMzQ7KTsKJiM0MzsJdGltZTEgPSBnZXRfY3ljbGVzKCk7CiYjNDM7CWZvciAoaSA9IDA7IGkgJmx0OyBURVNUX0NPVU5UOyBpJiM0MzsmIzQzOykKJiM0MzsJCWluY196b25lX3BhZ2Vfc3RhdGUocGFnZSwgTlJfRlJFRV9DTUFfUEFHRVMpOwomIzQzOwomIzQzOwl0aW1lMiA9IGdldF9jeWNsZXMoKTsKJiM0MzsJdGltZSA9IHRpbWUyIC0gdGltZTE7CiYjNDM7CiYjNDM7CXByX2FsZXJ0KCYjMzQ7JWkgdGltZXMgaW5jX3pvbmVfcGFnZV9zdGF0ZSgpICYjMzQ7LCBpKTsKJiM0MzsJdGltZSA9IGRpdl91NjRfcmVtKHRpbWUsIFRFU1RfQ09VTlQsICZhbXA7cmVtKTsKJiM0MzsJcHJfY29udCgmIzM0Oy0mZ3Q7ICVsbHUgY3ljbGVzICYjMzQ7LCAodW5zaWduZWQgbG9uZyBsb25nKSB0aW1lKTsKJiM0MzsKJiM0MzsJdGltZTEgPSBnZXRfY3ljbGVzKCk7CiYjNDM7CWZvciAoaSA9IDA7IGkgJmx0OyBURVNUX0NPVU5UOyBpJiM0MzsmIzQzOykKJiM0MzsJCWRlY196b25lX3BhZ2Vfc3RhdGUocGFnZSwgTlJfRlJFRV9DTUFfUEFHRVMpOwomIzQzOwomIzQzOwl0aW1lMiA9IGdldF9jeWNsZXMoKTsKJiM0MzsJdGltZSA9IHRpbWUyIC0gdGltZTE7CiYjNDM7CiYjNDM7CXByX2NvbnQoJiMzNDtfX2RlY196X3BfcygpICYjMzQ7KTsKJiM0MzsJdGltZSA9IGRpdl91NjRfcmVtKHRpbWUsIFRFU1RfQ09VTlQsICZhbXA7cmVtKTsKJiM0MzsJcHJfY29udCgmIzM0Oy0mZ3Q7ICVsbHUgY3ljbGVzXG4mIzM0OywgICh1bnNpZ25lZCBsb25nIGxvbmcpIHRpbWUpOwomIzQzOwomIzQzOwlwcl9hbGVydCgmIzM0OzIuIGluY196b25lX3BhZ2Vfc3RhdGUoKS9kZWNfem9uZV9wYWdlX3N0YXRlKClcbiYjMzQ7KTsKJiM0MzsJdGltZTEgPSBnZXRfY3ljbGVzKCk7CiYjNDM7CWZvciAoaSA9IDA7IGkgJmx0OyBURVNUX0NPVU5UOyBpJiM0MzsmIzQzOykgewomIzQzOwkJaW5jX3pvbmVfcGFnZV9zdGF0ZShwYWdlLCBOUl9GUkVFX0NNQV9QQUdFUyk7CiYjNDM7CQlkZWNfem9uZV9wYWdlX3N0YXRlKHBhZ2UsIE5SX0ZSRUVfQ01BX1BBR0VTKTsKJiM0MzsJfQomIzQzOwomIzQzOwl0aW1lMiA9IGdldF9jeWNsZXMoKTsKJiM0MzsJdGltZSA9IHRpbWUyIC0gdGltZTE7CiYjNDM7CiYjNDM7CXByX2FsZXJ0KCYjMzQ7JWkgdGltZXMgaW5jL2RlYyAmIzM0OywgaSk7CiYjNDM7CXRpbWUgPSBkaXZfdTY0X3JlbSh0aW1lLCBURVNUX0NPVU5ULCAmYW1wO3JlbSk7CiYjNDM7CXByX2NvbnQoJiMzNDstJmd0OyAlbGx1IGN5Y2xlc1xuJiMzNDssICAodW5zaWduZWQgbG9uZyBsb25nKSB0aW1lKTsKJiM0MzsKJiM0MzsJcHJfYWxlcnQoJiMzNDszLiBjb3VudF92bV9ldmVudCgpXG4mIzM0Oyk7CiYjNDM7CXRpbWUxID0gZ2V0X2N5Y2xlcygpOwomIzQzOwlmb3IgKGkgPSAwOyBpICZsdDsgVEVTVF9DT1VOVDsgaSYjNDM7JiM0MzspCiYjNDM7CQljb3VudF92bV9ldmVudChTTEFCU19TQ0FOTkVEKTsKJiM0MzsKJiM0MzsJdGltZTIgPSBnZXRfY3ljbGVzKCk7CiYjNDM7CXRpbWUgPSB0aW1lMiAtIHRpbWUxOwomIzQzOwomIzQzOwljb3VudF92bV9ldmVudHMoU0xBQlNfU0NBTk5FRCwgLVRFU1RfQ09VTlQpOwomIzQzOwlwcl9hbGVydCgmIzM0OyVpIGNvdW50X3ZtX2V2ZW50cyAmIzM0OywgaSk7CiYjNDM7CXRpbWUgPSBkaXZfdTY0X3JlbSh0aW1lLCBURVNUX0NPVU5ULCAmYW1wO3JlbSk7CiYjNDM7CXByX2NvbnQoJiMzNDstJmd0OyAlbGx1IGN5Y2xlc1xuJiMzNDssICAodW5zaWduZWQgbG9uZyBsb25nKSB0aW1lKTsKJiM0MzsJX19mcmVlX3BhZ2UocGFnZSk7CiYjNDM7CiYjNDM7ICAgICAgICAvKiBGYWlsIHdpbGwgZGlyZWN0bHkgdW5sb2FkIHRoZSBtb2R1bGUgKi8KJiM0MzsgICAgICAgIHJldHVybiBJU19CVUlMVElOKENPTkZJR19URVNUX1ZNU1RBVCkgPyAwIDogLUVBR0FJTjsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgdm1zdGF0X3Rlc3RfZXhpdCh2b2lkKQomIzQzO3sKJiM0MzsJcHJfYWxlcnQoJiMzNDt0ZXN0IGV4aXRcbiYjMzQ7KTsKJiM0Mzt9CiYjNDM7CiYjNDM7bW9kdWxlX2luaXQodm1zdGF0X3Rlc3RfaW5pdCkKJiM0Mzttb2R1bGVfZXhpdCh2bXN0YXRfdGVzdF9leGl0KQomIzQzOwomIzQzO01PRFVMRV9MSUNFTlNFKCYjMzQ7R1BMJiMzNDspOwomIzQzO01PRFVMRV9BVVRIT1IoJiMzNDtDaHJpc3RvcGggTGFtZXRlciYjMzQ7KTsKJiM0MztNT0RVTEVfREVTQ1JJUFRJT04oJiMzNDtWTSBzdGF0aXN0aWNzIHRlc3QmIzM0Oyk7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9NYWtlZmlsZSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL01ha2VmaWxlCmluZGV4IGU2ZGY5NjhmMDk3MWMuLjBkMzg2YzhiODNiNzAgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL01ha2VmaWxlCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL01ha2VmaWxlCkBAIC0xNzMsOCAmIzQzOzE3MywxMCBAQCBURVNUX1BST0dTICYjNDM7PSBrc2Z0X3RocC5zaAogVEVTVF9QUk9HUyAmIzQzOz0ga3NmdF91c2VyZmF1bHRmZC5zaAogVEVTVF9QUk9HUyAmIzQzOz0ga3NmdF92bWFfbWVyZ2Uuc2gKIFRFU1RfUFJPR1MgJiM0Mzs9IGtzZnRfdm1hbGxvYy5zaAomIzQzO1RFU1RfUFJPR1MgJiM0Mzs9IGtzZnRfdm1zdGF0LnNoCiAKIFRFU1RfRklMRVMgOj0gdGVzdF92bWFsbG9jLnNoCiYjNDM7VEVTVF9GSUxFUyA6PSB0ZXN0X3Ztc3RhdC5zaAogVEVTVF9GSUxFUyAmIzQzOz0gdGVzdF9obW0uc2gKIFRFU1RfRklMRVMgJiM0Mzs9IHZhX2hpZ2hfYWRkcl9zd2l0Y2guc2gKIFRFU1RfRklMRVMgJiM0Mzs9IGNoYXJnZV9yZXNlcnZlZF9odWdldGxiLnNoCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9jb25maWcgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9jb25maWcKaW5kZXggMDZmNzhiZDIzMmUyZS4uMTZlMDJhMmNiMmExYSAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vY29uZmlnCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2NvbmZpZwpAQCAtMiw2ICYjNDM7Miw3IEBAIENPTkZJR19TWVNWSVBDPXkKIENPTkZJR19VU0VSRkFVTFRGRD15CiBDT05GSUdfUFRFX01BUktFUl9VRkZEX1dQPXkKIENPTkZJR19URVNUX1ZNQUxMT0M9bQomIzQzO0NPTkZJR19URVNUX1ZNU1RBVD1tCiBDT05GSUdfREVWSUNFX1BSSVZBVEU9eQogQ09ORklHX1RFU1RfSE1NPW0KIENPTkZJR19HVVBfVEVTVD15CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9rc2Z0X3Ztc3RhdC5zaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2tzZnRfdm1zdGF0LnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAuLjRlNDcxMTJmOTkyNTEKLS0tIC9kZXYvbnVsbAomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9rc2Z0X3Ztc3RhdC5zaApAQCAtMCwwICYjNDM7MSw0IEBACiYjNDM7IyEvYmluL3NoIC1lCiYjNDM7IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAomIzQzOwomIzQzOy4vcnVuX3ZtdGVzdHMuc2ggLXQgdm1zdGF0CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9ydW5fdm10ZXN0cy5zaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL3J1bl92bXRlc3RzLnNoCmluZGV4IDhjMjk2ZGVkZjA0NzQuLmM1NDE2ZWRhNGMyZTQgMTAwNzU1Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL3J1bl92bXRlc3RzLnNoCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL3J1bl92bXRlc3RzLnNoCkBAIC00Nyw2ICYjNDM7NDcsOCBAQCBzZXBhcmF0ZWQgYnkgc3BhY2VzOgogCXRlc3RzIGZvciB2ZXJ5IGxhcmdlIHZpcnR1YWwgYWRkcmVzcyBzcGFjZQogLSB2bWFsbG9jCiAJdm1hbGxvYyBzbW9rZSB0ZXN0cwomIzQzOy0gdm1zdGF0CiYjNDM7CXZtc3RhdCBwZXJmb3JtYW5jZSB0ZXN0CiAtIGhtbQogCWhtbSBzbW9rZSB0ZXN0cwogLSBtYWR2X2d1YXJkCkBAIC0zMzgsNiAmIzQzOzM0MCw5IEBAIGZpICMgVkFERFI2NAogIyB2bWFsbG9jIHN0YWJpbGl0eSBzbW9rZSB0ZXN0CiBDQVRFR09SWT0mIzM0O3ZtYWxsb2MmIzM0OyBydW5fdGVzdCBiYXNoIC4vdGVzdF92bWFsbG9jLnNoIHNtb2tlCiAKJiM0MzsjIHZtc3RhdCBwZXJmb3JtYW5jZSB0ZXN0CiYjNDM7Q0FURUdPUlk9JiMzNDt2bXN0YXQmIzM0OyBydW5fdGVzdCBiYXNoIC4vdGVzdF92bXN0YXQuc2ggcGVyZm9ybWFuY2UKJiM0MzsKIENBVEVHT1JZPSYjMzQ7bXJlbWFwJiMzNDsgcnVuX3Rlc3QgLi9tcmVtYXBfZG9udHVubWFwCiAKIENBVEVHT1JZPSYjMzQ7aG1tJiMzNDsgcnVuX3Rlc3QgYmFzaCAuL3Rlc3RfaG1tLnNoIHNtb2tlCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS90ZXN0X3Ztc3RhdC5zaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL3Rlc3Rfdm1zdGF0LnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAuLmE0ZmM3ZjdmZWMxNmMKLS0tIC9kZXYvbnVsbAomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS90ZXN0X3Ztc3RhdC5zaApAQCAtMCwwICYjNDM7MSw3MSBAQAomIzQzOyMhL2Jpbi9iYXNoCiYjNDM7IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAomIzQzOyMKJiM0MzsjIFRoaXMgaXMgYSB0ZXN0IHNjcmlwdCBmb3IgdGhlIGtlcm5lbCB0ZXN0IG1vZHVsZSB0byBtZWFzdXJlIHBlcmZvcm1hbmNlIG9mIFZNCiYjNDM7IyBzdGF0aXN0aWNzLiAgSXQgc2ltcGx5IGxvYWRzIHRoZSBrZXJuZWwgbW9kdWxlLgomIzQzOwomIzQzO1RFU1RfTkFNRT0mIzM0O3Ztc3RhdCYjMzQ7CiYjNDM7RFJJVkVSPSYjMzQ7dGVzdF8ke1RFU1RfTkFNRX0mIzM0OwomIzQzOwomIzQzOyMgS3NlbGZ0ZXN0IGZyYW1ld29yayByZXF1aXJlbWVudCAtIFNLSVAgY29kZSBpcyA0LgomIzQzO2tzZnRfc2tpcD00CiYjNDM7CiYjNDM7Y2hlY2tfdGVzdF9yZXF1aXJlbWVudHMoKQomIzQzO3sKJiM0MzsJdWlkPSQoaWQgLXUpCiYjNDM7CWlmIFsgJHVpZCAtbmUgMCBdOyB0aGVuCiYjNDM7CQllY2hvICYjMzQ7JDA6IE11c3QgYmUgcnVuIGFzIHJvb3QmIzM0OwomIzQzOwkJZXhpdCAka3NmdF9za2lwCiYjNDM7CWZpCiYjNDM7CiYjNDM7CWlmICEgd2hpY2ggbW9kcHJvYmUgJmd0OyAvZGV2L251bGwgMiZndDsmYW1wOzE7IHRoZW4KJiM0MzsJCWVjaG8gJiMzNDskMDogWW91IG5lZWQgbW9kcHJvYmUgaW5zdGFsbGVkJiMzNDsKJiM0MzsJCWV4aXQgJGtzZnRfc2tpcAomIzQzOwlmaQomIzQzOwomIzQzOwlpZiAhIG1vZGluZm8gJERSSVZFUiAmZ3Q7IC9kZXYvbnVsbCAyJmd0OyZhbXA7MTsgdGhlbgomIzQzOwkJZWNobyAmIzM0OyQwOiBZb3UgbXVzdCBoYXZlIHRoZSBmb2xsb3dpbmcgZW5hYmxlZCBpbiB5b3VyIGtlcm5lbDomIzM0OwomIzQzOwkJZWNobyAmIzM0O0NPTkZJR19URVNUX1ZNU1RBVD1tJiMzNDsKJiM0MzsJCWV4aXQgJGtzZnRfc2tpcAomIzQzOwlmaQomIzQzO30KJiM0MzsKJiM0MztydW5fcGVyZm9ybWFuY2VfY2hlY2soKQomIzQzO3sKJiM0MzsJZWNobyAmIzM0O1J1biBwZXJmb3JtYW5jZSB0ZXN0cyB0byBldmFsdWF0ZSBob3cgZmFzdCB2bXN0YXQgaXMuJiMzNDsKJiM0MzsKJiM0MzsJbW9kcHJvYmUgJERSSVZFUiAmZ3Q7IC9kZXYvbnVsbCAyJmd0OyZhbXA7MQomIzQzOwllY2hvICYjMzQ7RG9uZS4mIzM0OwomIzQzOwllY2hvICYjMzQ7Q2hlY2sgdGhlIGtlcm5lbCBtZXNzYWdlIGJ1ZmZlciB0byBzZWUgdGhlIHN1bW1hcnkuJiMzNDsKJiM0Mzt9CiYjNDM7CiYjNDM7dXNhZ2UoKQomIzQzO3sKJiM0MzsJZWNobyAtbiAmIzM0O1VzYWdlOiAkMCBwZXJmb3JtYW5jZSYjMzQ7CiYjNDM7CWVjaG8KJiM0MzsJZWNobyAmIzM0O0V4YW1wbGUgdXNhZ2U6JiMzNDsKJiM0MzsJZWNobwomIzQzOwllY2hvICYjMzQ7IyBTaG93cyBoZWxwIG1lc3NhZ2UmIzM0OwomIzQzOwllY2hvICYjMzQ7Li8ke0RSSVZFUn0uc2gmIzM0OwomIzQzOwllY2hvCiYjNDM7CWVjaG8gJiMzNDsjIFBlcmZvcm1hbmNlIGFuYWx5c2lzJiMzNDsKJiM0MzsJZWNobyAmIzM0Oy4vJHtEUklWRVJ9LnNoIHBlcmZvcm1hbmNlJiMzNDsKJiM0MzsJZWNobwomIzQzOwlleGl0IDAKJiM0Mzt9CiYjNDM7CiYjNDM7ZnVuY3Rpb24gcnVuX3Rlc3QoKQomIzQzO3sKJiM0MzsJaWYgWyAkIyAtZXEgMCBdOyB0aGVuCiYjNDM7CQl1c2FnZQomIzQzOwllbHNlCiYjNDM7CQlpZiBbWyAmIzM0OyQxJiMzNDsgPSAmIzM0O3BlcmZvcm1hbmNlJiMzNDsgXV07IHRoZW4KJiM0MzsJCQlydW5fcGVyZm9ybWFuY2VfY2hlY2sKJiM0MzsJCWZpCiYjNDM7CWZpCiYjNDM7fQomIzQzOwomIzQzO2NoZWNrX3Rlc3RfcmVxdWlyZW1lbnRzCiYjNDM7cnVuX3Rlc3QgJEAKJiM0MzsKJiM0MztleGl0IDAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDI6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTE1NwoJCQkJCQkJb3V0cHV0OiAxMTkKCQkJCQkJCXRob3VnaHRzOiA3ODMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqV29ydGhGdXp6aW5nIEV2YWx1YXRpb24gZm9yIHRoZSBWTSBTdGF0aXN0aWNzIEJlbmNobWFyayoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBUaGlzIHBhdGNoIGlzIGFkZGluZyBhIG5ldyB0ZXN0IG1vZHVsZSwgYHRlc3Rfdm1zdGF0LmNgLCB3aXRoaW4gdGhlIGBsaWIvYCBkaXJlY3RvcnksIGFsb25nIHdpdGggY29ycmVzcG9uZGluZyBrc2VsZnRlc3Qgc2NyaXB0cyBpbiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzOiBpcyB0aGlzIGV2ZW4gd29ydGggZnV6emluZz8gSSBtZWFuLCBpdCAqaXMqIGNvZGUsIGJ1dCBpdCYjMzk7cyBhICp0ZXN0KiwgYSBiZW5jaG1hcmsgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIHRvIG1lYXN1cmUgdGhlIHBlcmZvcm1hbmNlIG9mIFZNIHN0YXRpc3RpY3MgZnVuY3Rpb25zIGxpa2UgYGluY196b25lX3BhZ2Vfc3RhdGVgIGFuZCB0aGUgbGlrZS4gSXQmIzM5O3Mgbm90IGludHJvZHVjaW5nIGFueSBuZXcga2VybmVsIGxvZ2ljIGJleW9uZCB0aGF0LiBJdCBqdXN0IGxvb3BzIGFuZCBjYWxscyBleGlzdGluZyBmdW5jdGlvbnMgdG8gbWVhc3VyZSBjeWNsZXMuCgpOb3csIG15IGluaXRpYWwgcmVhY3Rpb24gaXMsIHByb2JhYmx5IG5vdC4gQnV0IHRoZSBwcm9tcHQgaXMgY2xlYXI6IEkgbmVlZCB0byBjb25zaWRlciBpdCB3aXRoaW4gdGhlIGdpdmVuIGNvbnN0cmFpbnRzLiBJdCB0ZWxscyBtZSB0byBzZXQgYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIHBhdGNoIG9ubHkgaW5jbHVkZXMgZG9jdW1lbnRhdGlvbiBjaGFuZ2VzLCBLY29uZmlnIG1vZGlmaWNhdGlvbnMsIGNvbW1lbnRzLCBkZWNvcmF0aXZlIGxvZ2dpbmcsIGNoYW5nZXMgdG8gY29uc3RhbnRzIHdpdGhvdXQgaW1wYWN0aW5nIGV4ZWN1dGlvbiwgdW5yZWFjaGFibGUgY29kZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIGNlcnRhaW4gZHJpdmVyIGNoYW5nZXMsIG9yIFBDSSB0ZWFyZG93biBjYWxsYmFja3MuIFRoaXMgaXMgd2hlcmUgSSBoYXZlIHRvIHRoaW5rOiBhcmUgdGVzdCBtb2R1bGVzIGV4ZW1wdCBieSBkZWZhdWx0PwoKQSB0ZXN0IG1vZHVsZSAqaXMqIGZ1bmN0aW9uYWwgY29kZS4gSG93ZXZlciwgc3l6a2FsbGVyLCB0aGUgZnV6emVyIHRoYXQgb2Z0ZW4gZ2V0cyBjb25zaWRlcmVkLCBkb2VzbiYjMzk7dCB0eXBpY2FsbHkgZnV6eiB0ZXN0IG1vZHVsZXMgdW5sZXNzIHRoZXkgZXhwb3NlIGFuIGludGVyZXN0aW5nIGF0dGFjayBzdXJmYWNlLiBMZXQmIzM5O3Mgc2VlLi4uIGxvb2tpbmcgYXQgdGhlIGNvZGUsIGB0ZXN0X3Ztc3RhdGAgcnVucyBvbiBgbW9kdWxlX2luaXRgLCBkb2VzIGl0cyBsb29wLCBhbmQgKmltbWVkaWF0ZWx5KiByZXR1cm5zIGAtRUFHQUlOYCBpZiBub3QgYnVpbHQtaW4sIHRodXMgdW5sb2FkaW5nLiBJdCBkb2VzbiYjMzk7dCByZWdpc3RlciBhbnkgZGV2aWNlcywgbm8gc3lzZnMgZW50cmllcywgbm8gZGVidWdmcyBlbnRyaWVzLCBubyBpb2N0bHMuIE5vdGhpbmcuIEl0IGp1c3QgcnVucyBhIGxvb3AgYW5kIHByaW50cyB0byBkbWVzZy4KClRoZXJlJiMzOTtzIG5vICp1c2VyLXNwYWNlIGlucHV0Ki4gSXQmIzM5O3MgYSBmaXhlZCBsb29wIGV4ZWN1dGVkIG9uIG1vZHVsZSBsb2FkLiBTbywgZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUsIHRoaXMgbG9va3MgcG9pbnRsZXNzLiBUaGVyZSYjMzk7cyBub3RoaW5nIGZvciBhIGZ1enplciB0byAqZnV6eiouCgpMZXQgbWUgY29uZmlybSB0aGF0IGJ5IGxvb2tpbmcgYXQgdGhlIGRldGFpbHMuIGB2bXN0YXRfdGVzdF9pbml0YCB0YWtlcyBubyBwYXJhbWV0ZXJzLCBydW5zIGEgZml4ZWQgbnVtYmVyIG9mIGl0ZXJhdGlvbnMsIGFuZCByZXR1cm5zIGAtRUFHQUlOYCAob3IgMCBpZiBidWlsdC1pbikuIFplcm8gdXNlciBpbnB1dC4gQWJzb2x1dGVseSB6ZXJvLiBGdXp6aW5nIHRoaXMgaXMgYSBjb21wbGV0ZSB3YXN0ZSBvZiByZXNvdXJjZXMuIFNvIEkgYW0gZ29pbmcgdG8gc2V0IGBXb3J0aEZ1enppbmc9ZmFsc2VgLgoKSSB3YW50IHRvIGJlIGFic29sdXRlbHkgc3VyZSB0aGlzIGlzIGNvcnJlY3QuIEkgaGF2ZSB0byBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIG90aGVyIGNoYW5nZXMuIExldCBtZSBjaGVjayB0aGUgb3RoZXIgZmlsZXMuCgoqICAgYE1BSU5UQUlORVJTYDogSnVzdCBhZGRlZCBgbGliL3Rlc3Rfdm1zdGF0LmNgLgoqICAgYGxpYi9LY29uZmlnLmRlYnVnYDogQWRkZWQgYFRFU1RfVk1TVEFUYC4KKiAgIGBsaWIvTWFrZWZpbGVgOiBBZGRlZCBgdGVzdF92bXN0YXQub2AuCiogICBgbGliL3Rlc3Rfdm1zdGF0LmNgOiBUaGUgbW9kdWxlIGl0c2VsZiwgd2hpY2ggd2UgYWxyZWFkeSBhbmFseXplZC4KKiAgIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS8qYDogVGhlIHRlc3Qgc2NyaXB0cy4KCk5vdGhpbmcgZWxzZSBpcyBjaGFuZ2VkLiBMb29rcyBnb29kLiBJJiMzOTttIGNvbmZpZGVudCBpbiBteSBhc3Nlc3NtZW50LiBJJiMzOTtsbCBvdXRwdXQgYFdvcnRoRnV6emluZz1mYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDI6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGFkZHMgYSBzeW50aGV0aWMgYmVuY2htYXJrIG1vZHVsZSAoYHRlc3Rfdm1zdGF0YCkgYW5kIGl0cyBhc3NvY2lhdGVkIGtzZWxmdGVzdCBzY3JpcHRzLiBUaGUgbW9kdWxlIGV4ZWN1dGVzIGEgZml4ZWQgbG9vcCBvbiBpbml0aWFsaXphdGlvbiB0byBtZWFzdXJlIHBlcmZvcm1hbmNlIGFuZCBpbW1lZGlhdGVseSB1bmxvYWRzIChvciByZXR1cm5zIDAgaWYgYnVpbHQtaW4pLiBJdCBkb2VzIG5vdCBleHBvc2UgYW55IGludGVyZmFjZXMgKGUuZy4sIGlvY3Rscywgc3lzZnMsIGRlYnVnZnMpIHRvIHVzZXJzcGFjZSwgbWVhbmluZyB0aGVyZSBpcyBubyBhdHRhY2sgc3VyZmFjZSBvciBpbnB1dCBmb3IgYSBmdXp6ZXIgdG8gZXhwbG9yZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBhIHN5bnRoZXRpYyBiZW5jaG1hcmsgbW9kdWxlIChgdGVzdF92bXN0YXRgKSBhbmQgaXRzIGFzc29jaWF0ZWQga3NlbGZ0ZXN0IHNjcmlwdHMuIFRoZSBtb2R1bGUgZXhlY3V0ZXMgYSBmaXhlZCBsb29wIG9uIGluaXRpYWxpemF0aW9uIHRvIG1lYXN1cmUgcGVyZm9ybWFuY2UgYW5kIGltbWVkaWF0ZWx5IHVubG9hZHMgKG9yIHJldHVybnMgMCBpZiBidWlsdC1pbikuIEl0IGRvZXMgbm90IGV4cG9zZSBhbnkgaW50ZXJmYWNlcyAoZS5nLiwgaW9jdGxzLCBzeXNmcywgZGVidWdmcykgdG8gdXNlcnNwYWNlLCBtZWFuaW5nIHRoZXJlIGlzIG5vIGF0dGFjayBzdXJmYWNlIG9yIGlucHV0IGZvciBhIGZ1enplciB0byBleHBsb3JlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAyOjAwOjM0Ljg5OTU1NTQ4OFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMzQ1MDQ5NTMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgYSBzeW50aGV0aWMgYmVuY2htYXJrIG1vZHVsZSAoYHRlc3Rfdm1zdGF0YCkgYW5kIGl0cyBhc3NvY2lhdGVkIGtzZWxmdGVzdCBzY3JpcHRzLiBUaGUgbW9kdWxlIGV4ZWN1dGVzIGEgZml4ZWQgbG9vcCBvbiBpbml0aWFsaXphdGlvbiB0byBtZWFzdXJlIHBlcmZvcm1hbmNlIGFuZCBpbW1lZGlhdGVseSB1bmxvYWRzIChvciByZXR1cm5zIDAgaWYgYnVpbHQtaW4pLiBJdCBkb2VzIG5vdCBleHBvc2UgYW55IGludGVyZmFjZXMgKGUuZy4sIGlvY3Rscywgc3lzZnMsIGRlYnVnZnMpIHRvIHVzZXJzcGFjZSwgbWVhbmluZyB0aGVyZSBpcyBubyBhdHRhY2sgc3VyZmFjZSBvciBpbnB1dCBmb3IgYSBmdXp6ZXIgdG8gZXhwbG9yZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAyOjAwOjM0Ljg5OTU2MjA2OFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDUwMzQxOTkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgM2IwMDU0YWU4YzQ5MDkxNmExNTE2MmI4MWMwZTk2MjY4ZjA1MjI1MVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEF1ZyAzIDAyOjAwOjM0IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlNcXG5pbmRleCA1MTE0ZTZkYjczMDdkLi5jNzY1MTRkNmM1MDNiIDEwMDY0NFxcbi0tLSBhL01BSU5UQUlORVJTXFxuKysrIGIvTUFJTlRBSU5FUlNcXG5AQCAtMTcwMDQsNiArMTcwMDQsNyBAQCBGOlxcdG1tL3NwYXJzZS5jXFxuIEY6XFx0bW0vdXRpbC5jXFxuIEY6XFx0bW0vdm1wcmVzc3VyZS5jXFxuIEY6XFx0bW0vdm1zdGF0LmNcXG4rRjpcXHRsaWIvdGVzdF92bXN0YXQuY1xcbiBOOlxcdGluY2x1ZGVcXFxcL2xpbnV4XFxcXC9wYWdlWy1fXVthLXpBLVpdKlxcbiBcXG4gTUVNT1JZIE1BTkFHRU1FTlQgLSBFWEVDTUVNXFxuZGlmZiAtLWdpdCBhL2xpYi9LY29uZmlnLmRlYnVnIGIvbGliL0tjb25maWcuZGVidWdcXG5pbmRleCAxMjQ0ZGNhYzIyOTRhLi42ZDc0M2M4ZTI3ZmFmIDEwMDY0NFxcbi0tLSBhL2xpYi9LY29uZmlnLmRlYnVnXFxuKysrIGIvbGliL0tjb25maWcuZGVidWdcXG5AQCAtMzQyNyw2ICszNDI3LDE2IEBAIGNvbmZpZyBURVNUX0tFWEVDX0hBTkRPVkVSXFxuIFxcbiBcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuIFxcbitjb25maWcgVEVTVF9WTVNUQVRcXG4rXFx0dHJpc3RhdGUgXFxcIlZNIFN0YXRpc3RpY3MgQmVuY2htYXJrXFxcIlxcbitcXHRkZWZhdWx0IG5cXG4rXFx0aGVscFxcbitcXHQgIEEgc3ludGhldGljIGJlbmNobWFyayBtZWFzdXJpbmcgdGhlIHBlcmZvcm1hbmNlIG9mIFZNIHN0YXRpc3RpY3MsXFxuK1xcdCAgdXNlZnVsIHRvIGFuYWx5emUgYW55IGltcHJvdmVtZW50cyBvciByZWdyZXNzaW9ucyBpbiBmdW5jdGlvbnMgdGhhdFxcbitcXHQgIGFyZSBmcmVxdWVudGx5IHVzZWQgaW4gaG90IGNvZGUgcGF0aHMuXFxuK1xcbitcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuK1xcbiBjb25maWcgUkFURUxJTUlUX0tVTklUX1RFU1RcXG4gXFx0dHJpc3RhdGUgXFxcIktVbml0IFRlc3QgZm9yIGNvcnJlY3RuZXNzIGFuZCBzdHJlc3Mgb2YgcmF0ZWxpbWl0XFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuIFxcdGRlcGVuZHMgb24gS1VOSVRcXG5kaWZmIC0tZ2l0IGEvbGliL01ha2VmaWxlIGIvbGliL01ha2VmaWxlXFxuaW5kZXggN2Y3NWNjNmVkZjk0YS4uNWYzZWJhYmQwMjI0MiAxMDA2NDRcXG4tLS0gYS9saWIvTWFrZWZpbGVcXG4rKysgYi9saWIvTWFrZWZpbGVcXG5AQCAtMTA1LDYgKzEwNSw3IEBAIG9iai0kKENPTkZJR19URVNUX0ZSRUVfUEFHRVMpICs9IHRlc3RfZnJlZV9wYWdlcy5vXFxuIG9iai0kKENPTkZJR19URVNUX1JFRl9UUkFDS0VSKSArPSB0ZXN0X3JlZl90cmFja2VyLm9cXG4gb2JqLSQoQ09ORklHX1RFU1RfT0JKUE9PTCkgKz0gdGVzdF9vYmpwb29sLm9cXG4gb2JqLSQoQ09ORklHX1RFU1RfS0VYRUNfSEFORE9WRVIpICs9IHRlc3Rfa2hvLm9cXG4rb2JqLSQoQ09ORklHX1RFU1RfVk1TVEFUKSArPSB0ZXN0X3Ztc3RhdC5vXFxuIFxcbiBvYmotJChDT05GSUdfVEVTVF9GUFUpICs9IHRlc3RfZnB1Lm9cXG4gdGVzdF9mcHUteSA6PSB0ZXN0X2ZwdV9nbHVlLm8gdGVzdF9mcHVfaW1wbC5vXFxuZGlmZiAtLWdpdCBhL2xpYi90ZXN0X3Ztc3RhdC5jIGIvbGliL3Rlc3Rfdm1zdGF0LmNcXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IDAwMDAwMDAwMDAwMDAuLmVlNDg3MmE0YzgyZGJcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvbGliL3Rlc3Rfdm1zdGF0LmNcXG5AQCAtMCwwICsxLDEwMCBAQFxcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vci1sYXRlclxcbisvKlxcbisgKiBUZXN0IG1vZHVsZSBmb3IgaW4ta2VybmVsIHN5bnRoZXRpYyB2bSBzdGF0aXN0aWNzIHBlcmZvcm1hbmNlLlxcbisgKlxcbisgKiBleGVjdXRlXFxuKyAqXFxuKyAqXFx0bW9kcHJvYmUgdGVzdF92bXN0YXRcXG4rICpcXG4rICogdG8gcnVuIHRoaXMgdGVzdFxcbisgKlxcbisgKiAoQykgMjAwOSBMaW51eCBGb3VuZGF0aW9uLCBDaHJpc3RvcGggTGFtZXRlciBcXHUwMDNjY2xAZ2VudHdvLm9yZ1xcdTAwM2VcXG4rICovXFxuK1xcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvamlmZmllcy5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvY29tcGlsZXIuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2luaXQuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L21vZHVsZS5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvbW0uaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2FzbS90aW1leC5oXFx1MDAzZVxcbitcXG4rI2RlZmluZSBURVNUX0NPVU5UIDEwMDAwXFxuK1xcbitzdGF0aWMgaW50IHZtc3RhdF90ZXN0X2luaXQodm9pZClcXG4re1xcbitcXHR1bnNpZ25lZCBpbnQgaTtcXG4rXFx0Y3ljbGVzX3QgdGltZTEsIHRpbWUyLCB0aW1lO1xcbitcXHRpbnQgcmVtO1xcbitcXHRzdHJ1Y3QgcGFnZSAqcGFnZSA9IGFsbG9jX3BhZ2UoR0ZQX0tFUk5FTCk7XFxuK1xcbitcXHRpZiAoIXBhZ2UpXFxuK1xcdFxcdHJldHVybiAtRU5PTUVNO1xcbitcXG4rXFx0cHJfYWxlcnQoXFxcIlZNc3RhdCB0ZXN0aW5nXFxcXG5cXFwiKTtcXG4rXFx0cHJfYWxlcnQoXFxcIj09PT09PT09PT09PT09PT09PT09PVxcXFxuXFxcIik7XFxuK1xcdHByX2FsZXJ0KFxcXCIxLiBpbmNfem9uZV9wYWdlX3N0YXRlKCkgdGhlbiBkZWNfem9uZV9wYWdlX3N0YXRlKClcXFxcblxcXCIpO1xcbitcXHR0aW1lMSA9IGdldF9jeWNsZXMoKTtcXG4rXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIFRFU1RfQ09VTlQ7IGkrKylcXG4rXFx0XFx0aW5jX3pvbmVfcGFnZV9zdGF0ZShwYWdlLCBOUl9GUkVFX0NNQV9QQUdFUyk7XFxuK1xcbitcXHR0aW1lMiA9IGdldF9jeWNsZXMoKTtcXG4rXFx0dGltZSA9IHRpbWUyIC0gdGltZTE7XFxuK1xcbitcXHRwcl9hbGVydChcXFwiJWkgdGltZXMgaW5jX3pvbmVfcGFnZV9zdGF0ZSgpIFxcXCIsIGkpO1xcbitcXHR0aW1lID0gZGl2X3U2NF9yZW0odGltZSwgVEVTVF9DT1VOVCwgXFx1MDAyNnJlbSk7XFxuK1xcdHByX2NvbnQoXFxcIi1cXHUwMDNlICVsbHUgY3ljbGVzIFxcXCIsICh1bnNpZ25lZCBsb25nIGxvbmcpIHRpbWUpO1xcbitcXG4rXFx0dGltZTEgPSBnZXRfY3ljbGVzKCk7XFxuK1xcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBURVNUX0NPVU5UOyBpKyspXFxuK1xcdFxcdGRlY196b25lX3BhZ2Vfc3RhdGUocGFnZSwgTlJfRlJFRV9DTUFfUEFHRVMpO1xcbitcXG4rXFx0dGltZTIgPSBnZXRfY3ljbGVzKCk7XFxuK1xcdHRpbWUgPSB0aW1lMiAtIHRpbWUxO1xcbitcXG4rXFx0cHJfY29udChcXFwiX19kZWNfel9wX3MoKSBcXFwiKTtcXG4rXFx0dGltZSA9IGRpdl91NjRfcmVtKHRpbWUsIFRFU1RfQ09VTlQsIFxcdTAwMjZyZW0pO1xcbitcXHRwcl9jb250KFxcXCItXFx1MDAzZSAlbGx1IGN5Y2xlc1xcXFxuXFxcIiwgICh1bnNpZ25lZCBsb25nIGxvbmcpIHRpbWUpO1xcbitcXG4rXFx0cHJfYWxlcnQoXFxcIjIuIGluY196b25lX3BhZ2Vfc3RhdGUoKS9kZWNfem9uZV9wYWdlX3N0YXRlKClcXFxcblxcXCIpO1xcbitcXHR0aW1lMSA9IGdldF9jeWNsZXMoKTtcXG4rXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIFRFU1RfQ09VTlQ7IGkrKykge1xcbitcXHRcXHRpbmNfem9uZV9wYWdlX3N0YXRlKHBhZ2UsIE5SX0ZSRUVfQ01BX1BBR0VTKTtcXG4rXFx0XFx0ZGVjX3pvbmVfcGFnZV9zdGF0ZShwYWdlLCBOUl9GUkVFX0NNQV9QQUdFUyk7XFxuK1xcdH1cXG4rXFxuK1xcdHRpbWUyID0gZ2V0X2N5Y2xlcygpO1xcbitcXHR0aW1lID0gdGltZTIgLSB0aW1lMTtcXG4rXFxuK1xcdHByX2FsZXJ0KFxcXCIlaSB0aW1lcyBpbmMvZGVjIFxcXCIsIGkpO1xcbitcXHR0aW1lID0gZGl2X3U2NF9yZW0odGltZSwgVEVTVF9DT1VOVCwgXFx1MDAyNnJlbSk7XFxuK1xcdHByX2NvbnQoXFxcIi1cXHUwMDNlICVsbHUgY3ljbGVzXFxcXG5cXFwiLCAgKHVuc2lnbmVkIGxvbmcgbG9uZykgdGltZSk7XFxuK1xcbitcXHRwcl9hbGVydChcXFwiMy4gY291bnRfdm1fZXZlbnQoKVxcXFxuXFxcIik7XFxuK1xcdHRpbWUxID0gZ2V0X2N5Y2xlcygpO1xcbitcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgVEVTVF9DT1VOVDsgaSsrKVxcbitcXHRcXHRjb3VudF92bV9ldmVudChTTEFCU19TQ0FOTkVEKTtcXG4rXFxuK1xcdHRpbWUyID0gZ2V0X2N5Y2xlcygpO1xcbitcXHR0aW1lID0gdGltZTIgLSB0aW1lMTtcXG4rXFxuK1xcdGNvdW50X3ZtX2V2ZW50cyhTTEFCU19TQ0FOTkVELCAtVEVTVF9DT1VOVCk7XFxuK1xcdHByX2FsZXJ0KFxcXCIlaSBjb3VudF92bV9ldmVudHMgXFxcIiwgaSk7XFxuK1xcdHRpbWUgPSBkaXZfdTY0X3JlbSh0aW1lLCBURVNUX0NPVU5ULCBcXHUwMDI2cmVtKTtcXG4rXFx0cHJfY29udChcXFwiLVxcdTAwM2UgJWxsdSBjeWNsZXNcXFxcblxcXCIsICAodW5zaWduZWQgbG9uZyBsb25nKSB0aW1lKTtcXG4rXFx0X19mcmVlX3BhZ2UocGFnZSk7XFxuK1xcbisgICAgICAgIC8qIEZhaWwgd2lsbCBkaXJlY3RseSB1bmxvYWQgdGhlIG1vZHVsZSAqL1xcbisgICAgICAgIHJldHVybiBJU19CVUlMVElOKENPTkZJR19URVNUX1ZNU1RBVCkgPyAwIDogLUVBR0FJTjtcXG4rfVxcbitcXG4rc3RhdGljIHZvaWQgdm1zdGF0X3Rlc3RfZXhpdCh2b2lkKVxcbit7XFxuK1xcdHByX2FsZXJ0KFxcXCJ0ZXN0IGV4aXRcXFxcblxcXCIpO1xcbit9XFxuK1xcbittb2R1bGVfaW5pdCh2bXN0YXRfdGVzdF9pbml0KVxcbittb2R1bGVfZXhpdCh2bXN0YXRfdGVzdF9leGl0KVxcbitcXG4rTU9EVUxFX0xJQ0VOU0UoXFxcIkdQTFxcXCIpO1xcbitNT0RVTEVfQVVUSE9SKFxcXCJDaHJpc3RvcGggTGFtZXRlclxcXCIpO1xcbitNT0RVTEVfREVTQ1JJUFRJT04oXFxcIlZNIHN0YXRpc3RpY3MgdGVzdFxcXCIpO1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9NYWtlZmlsZSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL01ha2VmaWxlXFxuaW5kZXggZTZkZjk2OGYwOTcxYy4uMGQzODZjOGI4M2I3MCAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9NYWtlZmlsZVxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL01ha2VmaWxlXFxuQEAgLTE3Myw4ICsxNzMsMTAgQEAgVEVTVF9QUk9HUyArPSBrc2Z0X3RocC5zaFxcbiBURVNUX1BST0dTICs9IGtzZnRfdXNlcmZhdWx0ZmQuc2hcXG4gVEVTVF9QUk9HUyArPSBrc2Z0X3ZtYV9tZXJnZS5zaFxcbiBURVNUX1BST0dTICs9IGtzZnRfdm1hbGxvYy5zaFxcbitURVNUX1BST0dTICs9IGtzZnRfdm1zdGF0LnNoXFxuIFxcbiBURVNUX0ZJTEVTIDo9IHRlc3Rfdm1hbGxvYy5zaFxcbitURVNUX0ZJTEVTIDo9IHRlc3Rfdm1zdGF0LnNoXFxuIFRFU1RfRklMRVMgKz0gdGVzdF9obW0uc2hcXG4gVEVTVF9GSUxFUyArPSB2YV9oaWdoX2FkZHJfc3dpdGNoLnNoXFxuIFRFU1RfRklMRVMgKz0gY2hhcmdlX3Jlc2VydmVkX2h1Z2V0bGIuc2hcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vY29uZmlnIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vY29uZmlnXFxuaW5kZXggMDZmNzhiZDIzMmUyZS4uMTZlMDJhMmNiMmExYSAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9jb25maWdcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9jb25maWdcXG5AQCAtMiw2ICsyLDcgQEAgQ09ORklHX1NZU1ZJUEM9eVxcbiBDT05GSUdfVVNFUkZBVUxURkQ9eVxcbiBDT05GSUdfUFRFX01BUktFUl9VRkZEX1dQPXlcXG4gQ09ORklHX1RFU1RfVk1BTExPQz1tXFxuK0NPTkZJR19URVNUX1ZNU1RBVD1tXFxuIENPTkZJR19ERVZJQ0VfUFJJVkFURT15XFxuIENPTkZJR19URVNUX0hNTT1tXFxuIENPTkZJR19HVVBfVEVTVD15XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2tzZnRfdm1zdGF0LnNoIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0va3NmdF92bXN0YXQuc2hcXG5uZXcgZmlsZSBtb2RlIDEwMDc1NVxcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjRlNDcxMTJmOTkyNTFcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0va3NmdF92bXN0YXQuc2hcXG5AQCAtMCwwICsxLDQgQEBcXG4rIyEvYmluL3NoIC1lXFxuKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4rXFxuKy4vcnVuX3ZtdGVzdHMuc2ggLXQgdm1zdGF0XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL3J1bl92bXRlc3RzLnNoIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vcnVuX3ZtdGVzdHMuc2hcXG5pbmRleCA4YzI5NmRlZGYwNDc0Li5jNTQxNmVkYTRjMmU0IDEwMDc1NVxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL3J1bl92bXRlc3RzLnNoXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vcnVuX3ZtdGVzdHMuc2hcXG5AQCAtNDcsNiArNDcsOCBAQCBzZXBhcmF0ZWQgYnkgc3BhY2VzOlxcbiBcXHR0ZXN0cyBmb3IgdmVyeSBsYXJnZSB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2VcXG4gLSB2bWFsbG9jXFxuIFxcdHZtYWxsb2Mgc21va2UgdGVzdHNcXG4rLSB2bXN0YXRcXG4rXFx0dm1zdGF0IHBlcmZvcm1hbmNlIHRlc3RcXG4gLSBobW1cXG4gXFx0aG1tIHNtb2tlIHRlc3RzXFxuIC0gbWFkdl9ndWFyZFxcbkBAIC0zMzgsNiArMzQwLDkgQEAgZmkgIyBWQUREUjY0XFxuICMgdm1hbGxvYyBzdGFiaWxpdHkgc21va2UgdGVzdFxcbiBDQVRFR09SWT1cXFwidm1hbGxvY1xcXCIgcnVuX3Rlc3QgYmFzaCAuL3Rlc3Rfdm1hbGxvYy5zaCBzbW9rZVxcbiBcXG4rIyB2bXN0YXQgcGVyZm9ybWFuY2UgdGVzdFxcbitDQVRFR09SWT1cXFwidm1zdGF0XFxcIiBydW5fdGVzdCBiYXNoIC4vdGVzdF92bXN0YXQuc2ggcGVyZm9ybWFuY2VcXG4rXFxuIENBVEVHT1JZPVxcXCJtcmVtYXBcXFwiIHJ1bl90ZXN0IC4vbXJlbWFwX2RvbnR1bm1hcFxcbiBcXG4gQ0FURUdPUlk9XFxcImhtbVxcXCIgcnVuX3Rlc3QgYmFzaCAuL3Rlc3RfaG1tLnNoIHNtb2tlXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL3Rlc3Rfdm1zdGF0LnNoIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vdGVzdF92bXN0YXQuc2hcXG5uZXcgZmlsZSBtb2RlIDEwMDc1NVxcbmluZGV4IDAwMDAwMDAwMDAwMDAuLmE0ZmM3ZjdmZWMxNmNcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vdGVzdF92bXN0YXQuc2hcXG5AQCAtMCwwICsxLDcxIEBAXFxuKyMhL2Jpbi9iYXNoXFxuKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4rI1xcbisjIFRoaXMgaXMgYSB0ZXN0IHNjcmlwdCBmb3IgdGhlIGtlcm5lbCB0ZXN0IG1vZHVsZSB0byBtZWFzdXJlIHBlcmZvcm1hbmNlIG9mIFZNXFxuKyMgc3RhdGlzdGljcy4gIEl0IHNpbXBseSBsb2FkcyB0aGUga2VybmVsIG1vZHVsZS5cXG4rXFxuK1RFU1RfTkFNRT1cXFwidm1zdGF0XFxcIlxcbitEUklWRVI9XFxcInRlc3RfJHtURVNUX05BTUV9XFxcIlxcbitcXG4rIyBLc2VsZnRlc3QgZnJhbWV3b3JrIHJlcXVpcmVtZW50IC0gU0tJUCBjb2RlIGlzIDQuXFxuK2tzZnRfc2tpcD00XFxuK1xcbitjaGVja190ZXN0X3JlcXVpcmVtZW50cygpXFxuK3tcXG4rXFx0dWlkPSQoaWQgLXUpXFxuK1xcdGlmIFsgJHVpZCAtbmUgMCBdOyB0aGVuXFxuK1xcdFxcdGVjaG8gXFxcIiQwOiBNdXN0IGJlIHJ1biBhcyByb290XFxcIlxcbitcXHRcXHRleGl0ICRrc2Z0X3NraXBcXG4rXFx0ZmlcXG4rXFxuK1xcdGlmICEgd2hpY2ggbW9kcHJvYmUgXFx1MDAzZSAvZGV2L251bGwgMlxcdTAwM2VcXHUwMDI2MTsgdGhlblxcbitcXHRcXHRlY2hvIFxcXCIkMDogWW91IG5lZWQgbW9kcHJvYmUgaW5zdGFsbGVkXFxcIlxcbitcXHRcXHRleGl0ICRrc2Z0X3NraXBcXG4rXFx0ZmlcXG4rXFxuK1xcdGlmICEgbW9kaW5mbyAkRFJJVkVSIFxcdTAwM2UgL2Rldi9udWxsIDJcXHUwMDNlXFx1MDAyNjE7IHRoZW5cXG4rXFx0XFx0ZWNobyBcXFwiJDA6IFlvdSBtdXN0IGhhdmUgdGhlIGZvbGxvd2luZyBlbmFibGVkIGluIHlvdXIga2VybmVsOlxcXCJcXG4rXFx0XFx0ZWNobyBcXFwiQ09ORklHX1RFU1RfVk1TVEFUPW1cXFwiXFxuK1xcdFxcdGV4aXQgJGtzZnRfc2tpcFxcbitcXHRmaVxcbit9XFxuK1xcbitydW5fcGVyZm9ybWFuY2VfY2hlY2soKVxcbit7XFxuK1xcdGVjaG8gXFxcIlJ1biBwZXJmb3JtYW5jZSB0ZXN0cyB0byBldmFsdWF0ZSBob3cgZmFzdCB2bXN0YXQgaXMuXFxcIlxcbitcXG4rXFx0bW9kcHJvYmUgJERSSVZFUiBcXHUwMDNlIC9kZXYvbnVsbCAyXFx1MDAzZVxcdTAwMjYxXFxuK1xcdGVjaG8gXFxcIkRvbmUuXFxcIlxcbitcXHRlY2hvIFxcXCJDaGVjayB0aGUga2VybmVsIG1lc3NhZ2UgYnVmZmVyIHRvIHNlZSB0aGUgc3VtbWFyeS5cXFwiXFxuK31cXG4rXFxuK3VzYWdlKClcXG4re1xcbitcXHRlY2hvIC1uIFxcXCJVc2FnZTogJDAgcGVyZm9ybWFuY2VcXFwiXFxuK1xcdGVjaG9cXG4rXFx0ZWNobyBcXFwiRXhhbXBsZSB1c2FnZTpcXFwiXFxuK1xcdGVjaG9cXG4rXFx0ZWNobyBcXFwiIyBTaG93cyBoZWxwIG1lc3NhZ2VcXFwiXFxuK1xcdGVjaG8gXFxcIi4vJHtEUklWRVJ9LnNoXFxcIlxcbitcXHRlY2hvXFxuK1xcdGVjaG8gXFxcIiMgUGVyZm9ybWFuY2UgYW5hbHlzaXNcXFwiXFxuK1xcdGVjaG8gXFxcIi4vJHtEUklWRVJ9LnNoIHBlcmZvcm1hbmNlXFxcIlxcbitcXHRlY2hvXFxuK1xcdGV4aXQgMFxcbit9XFxuK1xcbitmdW5jdGlvbiBydW5fdGVzdCgpXFxuK3tcXG4rXFx0aWYgWyAkIyAtZXEgMCBdOyB0aGVuXFxuK1xcdFxcdHVzYWdlXFxuK1xcdGVsc2VcXG4rXFx0XFx0aWYgW1sgXFxcIiQxXFxcIiA9IFxcXCJwZXJmb3JtYW5jZVxcXCIgXV07IHRoZW5cXG4rXFx0XFx0XFx0cnVuX3BlcmZvcm1hbmNlX2NoZWNrXFxuK1xcdFxcdGZpXFxuK1xcdGZpXFxuK31cXG4rXFxuK2NoZWNrX3Rlc3RfcmVxdWlyZW1lbnRzXFxuK3J1bl90ZXN0ICRAXFxuK1xcbitleGl0IDBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDI6MDA6MzUuMzUwNzY0M1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjExODkzODMxNDQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgYSBzeW50aGV0aWMgYmVuY2htYXJrIG1vZHVsZSAoYHRlc3Rfdm1zdGF0YCkgYW5kIGl0cyBhc3NvY2lhdGVkIGtzZWxmdGVzdCBzY3JpcHRzLiBUaGUgbW9kdWxlIGV4ZWN1dGVzIGEgZml4ZWQgbG9vcCBvbiBpbml0aWFsaXphdGlvbiB0byBtZWFzdXJlIHBlcmZvcm1hbmNlIGFuZCBpbW1lZGlhdGVseSB1bmxvYWRzIChvciByZXR1cm5zIDAgaWYgYnVpbHQtaW4pLiBJdCBkb2VzIG5vdCBleHBvc2UgYW55IGludGVyZmFjZXMgKGUuZy4sIGlvY3Rscywgc3lzZnMsIGRlYnVnZnMpIHRvIHVzZXJzcGFjZSwgbWVhbmluZyB0aGVyZSBpcyBubyBhdHRhY2sgc3VyZmFjZSBvciBpbnB1dCBmb3IgYSBmdXp6ZXIgdG8gZXhwbG9yZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDNiMDA1NGFlOGM0OTA5MTZhMTUxNjJiODFjMGU5NjI2OGYwNTIyNTFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAzIDAyOjAwOjM0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvTUFJTlRBSU5FUlMgYi9NQUlOVEFJTkVSU1xuaW5kZXggNTExNGU2ZGI3MzA3ZC4uYzc2NTE0ZDZjNTAzYiAxMDA2NDRcbi0tLSBhL01BSU5UQUlORVJTXG4rKysgYi9NQUlOVEFJTkVSU1xuQEAgLTE3MDA0LDYgKzE3MDA0LDcgQEAgRjpcdG1tL3NwYXJzZS5jXG4gRjpcdG1tL3V0aWwuY1xuIEY6XHRtbS92bXByZXNzdXJlLmNcbiBGOlx0bW0vdm1zdGF0LmNcbitGOlx0bGliL3Rlc3Rfdm1zdGF0LmNcbiBOOlx0aW5jbHVkZVxcL2xpbnV4XFwvcGFnZVstX11bYS16QS1aXSpcbiBcbiBNRU1PUlkgTUFOQUdFTUVOVCAtIEVYRUNNRU1cbmRpZmYgLS1naXQgYS9saWIvS2NvbmZpZy5kZWJ1ZyBiL2xpYi9LY29uZmlnLmRlYnVnXG5pbmRleCAxMjQ0ZGNhYzIyOTRhLi42ZDc0M2M4ZTI3ZmFmIDEwMDY0NFxuLS0tIGEvbGliL0tjb25maWcuZGVidWdcbisrKyBiL2xpYi9LY29uZmlnLmRlYnVnXG5AQCAtMzQyNyw2ICszNDI3LDE2IEBAIGNvbmZpZyBURVNUX0tFWEVDX0hBTkRPVkVSXG4gXG4gXHQgIElmIHVuc3VyZSwgc2F5IE4uXG4gXG4rY29uZmlnIFRFU1RfVk1TVEFUXG4rXHR0cmlzdGF0ZSBcIlZNIFN0YXRpc3RpY3MgQmVuY2htYXJrXCJcbitcdGRlZmF1bHQgblxuK1x0aGVscFxuK1x0ICBBIHN5bnRoZXRpYyBiZW5jaG1hcmsgbWVhc3VyaW5nIHRoZSBwZXJmb3JtYW5jZSBvZiBWTSBzdGF0aXN0aWNzLFxuK1x0ICB1c2VmdWwgdG8gYW5hbHl6ZSBhbnkgaW1wcm92ZW1lbnRzIG9yIHJlZ3Jlc3Npb25zIGluIGZ1bmN0aW9ucyB0aGF0XG4rXHQgIGFyZSBmcmVxdWVudGx5IHVzZWQgaW4gaG90IGNvZGUgcGF0aHMuXG4rXG4rXHQgIElmIHVuc3VyZSwgc2F5IE4uXG4rXG4gY29uZmlnIFJBVEVMSU1JVF9LVU5JVF9URVNUXG4gXHR0cmlzdGF0ZSBcIktVbml0IFRlc3QgZm9yIGNvcnJlY3RuZXNzIGFuZCBzdHJlc3Mgb2YgcmF0ZWxpbWl0XCIgaWYgIUtVTklUX0FMTF9URVNUU1xuIFx0ZGVwZW5kcyBvbiBLVU5JVFxuZGlmZiAtLWdpdCBhL2xpYi9NYWtlZmlsZSBiL2xpYi9NYWtlZmlsZVxuaW5kZXggN2Y3NWNjNmVkZjk0YS4uNWYzZWJhYmQwMjI0MiAxMDA2NDRcbi0tLSBhL2xpYi9NYWtlZmlsZVxuKysrIGIvbGliL01ha2VmaWxlXG5AQCAtMTA1LDYgKzEwNSw3IEBAIG9iai0kKENPTkZJR19URVNUX0ZSRUVfUEFHRVMpICs9IHRlc3RfZnJlZV9wYWdlcy5vXG4gb2JqLSQoQ09ORklHX1RFU1RfUkVGX1RSQUNLRVIpICs9IHRlc3RfcmVmX3RyYWNrZXIub1xuIG9iai0kKENPTkZJR19URVNUX09CSlBPT0wpICs9IHRlc3Rfb2JqcG9vbC5vXG4gb2JqLSQoQ09ORklHX1RFU1RfS0VYRUNfSEFORE9WRVIpICs9IHRlc3Rfa2hvLm9cbitvYmotJChDT05GSUdfVEVTVF9WTVNUQVQpICs9IHRlc3Rfdm1zdGF0Lm9cbiBcbiBvYmotJChDT05GSUdfVEVTVF9GUFUpICs9IHRlc3RfZnB1Lm9cbiB0ZXN0X2ZwdS15IDo9IHRlc3RfZnB1X2dsdWUubyB0ZXN0X2ZwdV9pbXBsLm9cbmRpZmYgLS1naXQgYS9saWIvdGVzdF92bXN0YXQuYyBiL2xpYi90ZXN0X3Ztc3RhdC5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uZWU0ODcyYTRjODJkYlxuLS0tIC9kZXYvbnVsbFxuKysrIGIvbGliL3Rlc3Rfdm1zdGF0LmNcbkBAIC0wLDAgKzEsMTAwIEBAXG4rLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb3ItbGF0ZXJcbisvKlxuKyAqIFRlc3QgbW9kdWxlIGZvciBpbi1rZXJuZWwgc3ludGhldGljIHZtIHN0YXRpc3RpY3MgcGVyZm9ybWFuY2UuXG4rICpcbisgKiBleGVjdXRlXG4rICpcbisgKlx0bW9kcHJvYmUgdGVzdF92bXN0YXRcbisgKlxuKyAqIHRvIHJ1biB0aGlzIHRlc3RcbisgKlxuKyAqIChDKSAyMDA5IExpbnV4IEZvdW5kYXRpb24sIENocmlzdG9waCBMYW1ldGVyIFx1MDAzY2NsQGdlbnR3by5vcmdcdTAwM2VcbisgKi9cbitcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9qaWZmaWVzLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9jb21waWxlci5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvaW5pdC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9tbS5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjYXNtL3RpbWV4LmhcdTAwM2VcbitcbisjZGVmaW5lIFRFU1RfQ09VTlQgMTAwMDBcbitcbitzdGF0aWMgaW50IHZtc3RhdF90ZXN0X2luaXQodm9pZClcbit7XG4rXHR1bnNpZ25lZCBpbnQgaTtcbitcdGN5Y2xlc190IHRpbWUxLCB0aW1lMiwgdGltZTtcbitcdGludCByZW07XG4rXHRzdHJ1Y3QgcGFnZSAqcGFnZSA9IGFsbG9jX3BhZ2UoR0ZQX0tFUk5FTCk7XG4rXG4rXHRpZiAoIXBhZ2UpXG4rXHRcdHJldHVybiAtRU5PTUVNO1xuK1xuK1x0cHJfYWxlcnQoXCJWTXN0YXQgdGVzdGluZ1xcblwiKTtcbitcdHByX2FsZXJ0KFwiPT09PT09PT09PT09PT09PT09PT09XFxuXCIpO1xuK1x0cHJfYWxlcnQoXCIxLiBpbmNfem9uZV9wYWdlX3N0YXRlKCkgdGhlbiBkZWNfem9uZV9wYWdlX3N0YXRlKClcXG5cIik7XG4rXHR0aW1lMSA9IGdldF9jeWNsZXMoKTtcbitcdGZvciAoaSA9IDA7IGkgXHUwMDNjIFRFU1RfQ09VTlQ7IGkrKylcbitcdFx0aW5jX3pvbmVfcGFnZV9zdGF0ZShwYWdlLCBOUl9GUkVFX0NNQV9QQUdFUyk7XG4rXG4rXHR0aW1lMiA9IGdldF9jeWNsZXMoKTtcbitcdHRpbWUgPSB0aW1lMiAtIHRpbWUxO1xuK1xuK1x0cHJfYWxlcnQoXCIlaSB0aW1lcyBpbmNfem9uZV9wYWdlX3N0YXRlKCkgXCIsIGkpO1xuK1x0dGltZSA9IGRpdl91NjRfcmVtKHRpbWUsIFRFU1RfQ09VTlQsIFx1MDAyNnJlbSk7XG4rXHRwcl9jb250KFwiLVx1MDAzZSAlbGx1IGN5Y2xlcyBcIiwgKHVuc2lnbmVkIGxvbmcgbG9uZykgdGltZSk7XG4rXG4rXHR0aW1lMSA9IGdldF9jeWNsZXMoKTtcbitcdGZvciAoaSA9IDA7IGkgXHUwMDNjIFRFU1RfQ09VTlQ7IGkrKylcbitcdFx0ZGVjX3pvbmVfcGFnZV9zdGF0ZShwYWdlLCBOUl9GUkVFX0NNQV9QQUdFUyk7XG4rXG4rXHR0aW1lMiA9IGdldF9jeWNsZXMoKTtcbitcdHRpbWUgPSB0aW1lMiAtIHRpbWUxO1xuK1xuK1x0cHJfY29udChcIl9fZGVjX3pfcF9zKCkgXCIpO1xuK1x0dGltZSA9IGRpdl91NjRfcmVtKHRpbWUsIFRFU1RfQ09VTlQsIFx1MDAyNnJlbSk7XG4rXHRwcl9jb250KFwiLVx1MDAzZSAlbGx1IGN5Y2xlc1xcblwiLCAgKHVuc2lnbmVkIGxvbmcgbG9uZykgdGltZSk7XG4rXG4rXHRwcl9hbGVydChcIjIuIGluY196b25lX3BhZ2Vfc3RhdGUoKS9kZWNfem9uZV9wYWdlX3N0YXRlKClcXG5cIik7XG4rXHR0aW1lMSA9IGdldF9jeWNsZXMoKTtcbitcdGZvciAoaSA9IDA7IGkgXHUwMDNjIFRFU1RfQ09VTlQ7IGkrKykge1xuK1x0XHRpbmNfem9uZV9wYWdlX3N0YXRlKHBhZ2UsIE5SX0ZSRUVfQ01BX1BBR0VTKTtcbitcdFx0ZGVjX3pvbmVfcGFnZV9zdGF0ZShwYWdlLCBOUl9GUkVFX0NNQV9QQUdFUyk7XG4rXHR9XG4rXG4rXHR0aW1lMiA9IGdldF9jeWNsZXMoKTtcbitcdHRpbWUgPSB0aW1lMiAtIHRpbWUxO1xuK1xuK1x0cHJfYWxlcnQoXCIlaSB0aW1lcyBpbmMvZGVjIFwiLCBpKTtcbitcdHRpbWUgPSBkaXZfdTY0X3JlbSh0aW1lLCBURVNUX0NPVU5ULCBcdTAwMjZyZW0pO1xuK1x0cHJfY29udChcIi1cdTAwM2UgJWxsdSBjeWNsZXNcXG5cIiwgICh1bnNpZ25lZCBsb25nIGxvbmcpIHRpbWUpO1xuK1xuK1x0cHJfYWxlcnQoXCIzLiBjb3VudF92bV9ldmVudCgpXFxuXCIpO1xuK1x0dGltZTEgPSBnZXRfY3ljbGVzKCk7XG4rXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBURVNUX0NPVU5UOyBpKyspXG4rXHRcdGNvdW50X3ZtX2V2ZW50KFNMQUJTX1NDQU5ORUQpO1xuK1xuK1x0dGltZTIgPSBnZXRfY3ljbGVzKCk7XG4rXHR0aW1lID0gdGltZTIgLSB0aW1lMTtcbitcbitcdGNvdW50X3ZtX2V2ZW50cyhTTEFCU19TQ0FOTkVELCAtVEVTVF9DT1VOVCk7XG4rXHRwcl9hbGVydChcIiVpIGNvdW50X3ZtX2V2ZW50cyBcIiwgaSk7XG4rXHR0aW1lID0gZGl2X3U2NF9yZW0odGltZSwgVEVTVF9DT1VOVCwgXHUwMDI2cmVtKTtcbitcdHByX2NvbnQoXCItXHUwMDNlICVsbHUgY3ljbGVzXFxuXCIsICAodW5zaWduZWQgbG9uZyBsb25nKSB0aW1lKTtcbitcdF9fZnJlZV9wYWdlKHBhZ2UpO1xuK1xuKyAgICAgICAgLyogRmFpbCB3aWxsIGRpcmVjdGx5IHVubG9hZCB0aGUgbW9kdWxlICovXG4rICAgICAgICByZXR1cm4gSVNfQlVJTFRJTihDT05GSUdfVEVTVF9WTVNUQVQpID8gMCA6IC1FQUdBSU47XG4rfVxuK1xuK3N0YXRpYyB2b2lkIHZtc3RhdF90ZXN0X2V4aXQodm9pZClcbit7XG4rXHRwcl9hbGVydChcInRlc3QgZXhpdFxcblwiKTtcbit9XG4rXG4rbW9kdWxlX2luaXQodm1zdGF0X3Rlc3RfaW5pdClcbittb2R1bGVfZXhpdCh2bXN0YXRfdGVzdF9leGl0KVxuK1xuK01PRFVMRV9MSUNFTlNFKFwiR1BMXCIpO1xuK01PRFVMRV9BVVRIT1IoXCJDaHJpc3RvcGggTGFtZXRlclwiKTtcbitNT0RVTEVfREVTQ1JJUFRJT04oXCJWTSBzdGF0aXN0aWNzIHRlc3RcIik7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vTWFrZWZpbGUgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9NYWtlZmlsZVxuaW5kZXggZTZkZjk2OGYwOTcxYy4uMGQzODZjOGI4M2I3MCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL01ha2VmaWxlXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9NYWtlZmlsZVxuQEAgLTE3Myw4ICsxNzMsMTAgQEAgVEVTVF9QUk9HUyArPSBrc2Z0X3RocC5zaFxuIFRFU1RfUFJPR1MgKz0ga3NmdF91c2VyZmF1bHRmZC5zaFxuIFRFU1RfUFJPR1MgKz0ga3NmdF92bWFfbWVyZ2Uuc2hcbiBURVNUX1BST0dTICs9IGtzZnRfdm1hbGxvYy5zaFxuK1RFU1RfUFJPR1MgKz0ga3NmdF92bXN0YXQuc2hcbiBcbiBURVNUX0ZJTEVTIDo9IHRlc3Rfdm1hbGxvYy5zaFxuK1RFU1RfRklMRVMgOj0gdGVzdF92bXN0YXQuc2hcbiBURVNUX0ZJTEVTICs9IHRlc3RfaG1tLnNoXG4gVEVTVF9GSUxFUyArPSB2YV9oaWdoX2FkZHJfc3dpdGNoLnNoXG4gVEVTVF9GSUxFUyArPSBjaGFyZ2VfcmVzZXJ2ZWRfaHVnZXRsYi5zaFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2NvbmZpZyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2NvbmZpZ1xuaW5kZXggMDZmNzhiZDIzMmUyZS4uMTZlMDJhMmNiMmExYSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2NvbmZpZ1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vY29uZmlnXG5AQCAtMiw2ICsyLDcgQEAgQ09ORklHX1NZU1ZJUEM9eVxuIENPTkZJR19VU0VSRkFVTFRGRD15XG4gQ09ORklHX1BURV9NQVJLRVJfVUZGRF9XUD15XG4gQ09ORklHX1RFU1RfVk1BTExPQz1tXG4rQ09ORklHX1RFU1RfVk1TVEFUPW1cbiBDT05GSUdfREVWSUNFX1BSSVZBVEU9eVxuIENPTkZJR19URVNUX0hNTT1tXG4gQ09ORklHX0dVUF9URVNUPXlcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9rc2Z0X3Ztc3RhdC5zaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2tzZnRfdm1zdGF0LnNoXG5uZXcgZmlsZSBtb2RlIDEwMDc1NVxuaW5kZXggMDAwMDAwMDAwMDAwMC4uNGU0NzExMmY5OTI1MVxuLS0tIC9kZXYvbnVsbFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0va3NmdF92bXN0YXQuc2hcbkBAIC0wLDAgKzEsNCBAQFxuKyMhL2Jpbi9zaCAtZVxuKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbitcbisuL3J1bl92bXRlc3RzLnNoIC10IHZtc3RhdFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL3J1bl92bXRlc3RzLnNoIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vcnVuX3ZtdGVzdHMuc2hcbmluZGV4IDhjMjk2ZGVkZjA0NzQuLmM1NDE2ZWRhNGMyZTQgMTAwNzU1XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9ydW5fdm10ZXN0cy5zaFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vcnVuX3ZtdGVzdHMuc2hcbkBAIC00Nyw2ICs0Nyw4IEBAIHNlcGFyYXRlZCBieSBzcGFjZXM6XG4gXHR0ZXN0cyBmb3IgdmVyeSBsYXJnZSB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2VcbiAtIHZtYWxsb2NcbiBcdHZtYWxsb2Mgc21va2UgdGVzdHNcbistIHZtc3RhdFxuK1x0dm1zdGF0IHBlcmZvcm1hbmNlIHRlc3RcbiAtIGhtbVxuIFx0aG1tIHNtb2tlIHRlc3RzXG4gLSBtYWR2X2d1YXJkXG5AQCAtMzM4LDYgKzM0MCw5IEBAIGZpICMgVkFERFI2NFxuICMgdm1hbGxvYyBzdGFiaWxpdHkgc21va2UgdGVzdFxuIENBVEVHT1JZPVwidm1hbGxvY1wiIHJ1bl90ZXN0IGJhc2ggLi90ZXN0X3ZtYWxsb2Muc2ggc21va2VcbiBcbisjIHZtc3RhdCBwZXJmb3JtYW5jZSB0ZXN0XG4rQ0FURUdPUlk9XCJ2bXN0YXRcIiBydW5fdGVzdCBiYXNoIC4vdGVzdF92bXN0YXQuc2ggcGVyZm9ybWFuY2VcbitcbiBDQVRFR09SWT1cIm1yZW1hcFwiIHJ1bl90ZXN0IC4vbXJlbWFwX2RvbnR1bm1hcFxuIFxuIENBVEVHT1JZPVwiaG1tXCIgcnVuX3Rlc3QgYmFzaCAuL3Rlc3RfaG1tLnNoIHNtb2tlXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vdGVzdF92bXN0YXQuc2ggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS90ZXN0X3Ztc3RhdC5zaFxubmV3IGZpbGUgbW9kZSAxMDA3NTVcbmluZGV4IDAwMDAwMDAwMDAwMDAuLmE0ZmM3ZjdmZWMxNmNcbi0tLSAvZGV2L251bGxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL3Rlc3Rfdm1zdGF0LnNoXG5AQCAtMCwwICsxLDcxIEBAXG4rIyEvYmluL2Jhc2hcbisjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4rI1xuKyMgVGhpcyBpcyBhIHRlc3Qgc2NyaXB0IGZvciB0aGUga2VybmVsIHRlc3QgbW9kdWxlIHRvIG1lYXN1cmUgcGVyZm9ybWFuY2Ugb2YgVk1cbisjIHN0YXRpc3RpY3MuICBJdCBzaW1wbHkgbG9hZHMgdGhlIGtlcm5lbCBtb2R1bGUuXG4rXG4rVEVTVF9OQU1FPVwidm1zdGF0XCJcbitEUklWRVI9XCJ0ZXN0XyR7VEVTVF9OQU1FfVwiXG4rXG4rIyBLc2VsZnRlc3QgZnJhbWV3b3JrIHJlcXVpcmVtZW50IC0gU0tJUCBjb2RlIGlzIDQuXG4ra3NmdF9za2lwPTRcbitcbitjaGVja190ZXN0X3JlcXVpcmVtZW50cygpXG4re1xuK1x0dWlkPSQoaWQgLXUpXG4rXHRpZiBbICR1aWQgLW5lIDAgXTsgdGhlblxuK1x0XHRlY2hvIFwiJDA6IE11c3QgYmUgcnVuIGFzIHJvb3RcIlxuK1x0XHRleGl0ICRrc2Z0X3NraXBcbitcdGZpXG4rXG4rXHRpZiAhIHdoaWNoIG1vZHByb2JlIFx1MDAzZSAvZGV2L251bGwgMlx1MDAzZVx1MDAyNjE7IHRoZW5cbitcdFx0ZWNobyBcIiQwOiBZb3UgbmVlZCBtb2Rwcm9iZSBpbnN0YWxsZWRcIlxuK1x0XHRleGl0ICRrc2Z0X3NraXBcbitcdGZpXG4rXG4rXHRpZiAhIG1vZGluZm8gJERSSVZFUiBcdTAwM2UgL2Rldi9udWxsIDJcdTAwM2VcdTAwMjYxOyB0aGVuXG4rXHRcdGVjaG8gXCIkMDogWW91IG11c3QgaGF2ZSB0aGUgZm9sbG93aW5nIGVuYWJsZWQgaW4geW91ciBrZXJuZWw6XCJcbitcdFx0ZWNobyBcIkNPTkZJR19URVNUX1ZNU1RBVD1tXCJcbitcdFx0ZXhpdCAka3NmdF9za2lwXG4rXHRmaVxuK31cbitcbitydW5fcGVyZm9ybWFuY2VfY2hlY2soKVxuK3tcbitcdGVjaG8gXCJSdW4gcGVyZm9ybWFuY2UgdGVzdHMgdG8gZXZhbHVhdGUgaG93IGZhc3Qgdm1zdGF0IGlzLlwiXG4rXG4rXHRtb2Rwcm9iZSAkRFJJVkVSIFx1MDAzZSAvZGV2L251bGwgMlx1MDAzZVx1MDAyNjFcbitcdGVjaG8gXCJEb25lLlwiXG4rXHRlY2hvIFwiQ2hlY2sgdGhlIGtlcm5lbCBtZXNzYWdlIGJ1ZmZlciB0byBzZWUgdGhlIHN1bW1hcnkuXCJcbit9XG4rXG4rdXNhZ2UoKVxuK3tcbitcdGVjaG8gLW4gXCJVc2FnZTogJDAgcGVyZm9ybWFuY2VcIlxuK1x0ZWNob1xuK1x0ZWNobyBcIkV4YW1wbGUgdXNhZ2U6XCJcbitcdGVjaG9cbitcdGVjaG8gXCIjIFNob3dzIGhlbHAgbWVzc2FnZVwiXG4rXHRlY2hvIFwiLi8ke0RSSVZFUn0uc2hcIlxuK1x0ZWNob1xuK1x0ZWNobyBcIiMgUGVyZm9ybWFuY2UgYW5hbHlzaXNcIlxuK1x0ZWNobyBcIi4vJHtEUklWRVJ9LnNoIHBlcmZvcm1hbmNlXCJcbitcdGVjaG9cbitcdGV4aXQgMFxuK31cbitcbitmdW5jdGlvbiBydW5fdGVzdCgpXG4re1xuK1x0aWYgWyAkIyAtZXEgMCBdOyB0aGVuXG4rXHRcdHVzYWdlXG4rXHRlbHNlXG4rXHRcdGlmIFtbIFwiJDFcIiA9IFwicGVyZm9ybWFuY2VcIiBdXTsgdGhlblxuK1x0XHRcdHJ1bl9wZXJmb3JtYW5jZV9jaGVja1xuK1x0XHRmaVxuK1x0Zmlcbit9XG4rXG4rY2hlY2tfdGVzdF9yZXF1aXJlbWVudHNcbitydW5fdGVzdCAkQFxuK1xuK2V4aXQgMFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDI6MDA6MzUuMzUwNzY1OTdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTg5Mzc5NDkxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXb3J0aEZ1enppbmcgRXZhbHVhdGlvbiBmb3IgdGhlIFZNIFN0YXRpc3RpY3MgQmVuY2htYXJrKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBUaGlzIHBhdGNoIGlzIGFkZGluZyBhIG5ldyB0ZXN0IG1vZHVsZSwgYHRlc3Rfdm1zdGF0LmNgLCB3aXRoaW4gdGhlIGBsaWIvYCBkaXJlY3RvcnksIGFsb25nIHdpdGggY29ycmVzcG9uZGluZyBrc2VsZnRlc3Qgc2NyaXB0cyBpbiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzOiBpcyB0aGlzIGV2ZW4gd29ydGggZnV6emluZz8gSSBtZWFuLCBpdCAqaXMqIGNvZGUsIGJ1dCBpdCdzIGEgKnRlc3QqLCBhIGJlbmNobWFyayBzcGVjaWZpY2FsbHkgZGVzaWduZWQgdG8gbWVhc3VyZSB0aGUgcGVyZm9ybWFuY2Ugb2YgVk0gc3RhdGlzdGljcyBmdW5jdGlvbnMgbGlrZSBgaW5jX3pvbmVfcGFnZV9zdGF0ZWAgYW5kIHRoZSBsaWtlLiBJdCdzIG5vdCBpbnRyb2R1Y2luZyBhbnkgbmV3IGtlcm5lbCBsb2dpYyBiZXlvbmQgdGhhdC4gSXQganVzdCBsb29wcyBhbmQgY2FsbHMgZXhpc3RpbmcgZnVuY3Rpb25zIHRvIG1lYXN1cmUgY3ljbGVzLlxuXG5Ob3csIG15IGluaXRpYWwgcmVhY3Rpb24gaXMsIHByb2JhYmx5IG5vdC4gQnV0IHRoZSBwcm9tcHQgaXMgY2xlYXI6IEkgbmVlZCB0byBjb25zaWRlciBpdCB3aXRoaW4gdGhlIGdpdmVuIGNvbnN0cmFpbnRzLiBJdCB0ZWxscyBtZSB0byBzZXQgYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIHBhdGNoIG9ubHkgaW5jbHVkZXMgZG9jdW1lbnRhdGlvbiBjaGFuZ2VzLCBLY29uZmlnIG1vZGlmaWNhdGlvbnMsIGNvbW1lbnRzLCBkZWNvcmF0aXZlIGxvZ2dpbmcsIGNoYW5nZXMgdG8gY29uc3RhbnRzIHdpdGhvdXQgaW1wYWN0aW5nIGV4ZWN1dGlvbiwgdW5yZWFjaGFibGUgY29kZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIGNlcnRhaW4gZHJpdmVyIGNoYW5nZXMsIG9yIFBDSSB0ZWFyZG93biBjYWxsYmFja3MuIFRoaXMgaXMgd2hlcmUgSSBoYXZlIHRvIHRoaW5rOiBhcmUgdGVzdCBtb2R1bGVzIGV4ZW1wdCBieSBkZWZhdWx0P1xuXG5BIHRlc3QgbW9kdWxlICppcyogZnVuY3Rpb25hbCBjb2RlLiBIb3dldmVyLCBzeXprYWxsZXIsIHRoZSBmdXp6ZXIgdGhhdCBvZnRlbiBnZXRzIGNvbnNpZGVyZWQsIGRvZXNuJ3QgdHlwaWNhbGx5IGZ1enogdGVzdCBtb2R1bGVzIHVubGVzcyB0aGV5IGV4cG9zZSBhbiBpbnRlcmVzdGluZyBhdHRhY2sgc3VyZmFjZS4gTGV0J3Mgc2VlLi4uIGxvb2tpbmcgYXQgdGhlIGNvZGUsIGB0ZXN0X3Ztc3RhdGAgcnVucyBvbiBgbW9kdWxlX2luaXRgLCBkb2VzIGl0cyBsb29wLCBhbmQgKmltbWVkaWF0ZWx5KiByZXR1cm5zIGAtRUFHQUlOYCBpZiBub3QgYnVpbHQtaW4sIHRodXMgdW5sb2FkaW5nLiBJdCBkb2Vzbid0IHJlZ2lzdGVyIGFueSBkZXZpY2VzLCBubyBzeXNmcyBlbnRyaWVzLCBubyBkZWJ1Z2ZzIGVudHJpZXMsIG5vIGlvY3Rscy4gTm90aGluZy4gSXQganVzdCBydW5zIGEgbG9vcCBhbmQgcHJpbnRzIHRvIGRtZXNnLlxuXG5UaGVyZSdzIG5vICp1c2VyLXNwYWNlIGlucHV0Ki4gSXQncyBhIGZpeGVkIGxvb3AgZXhlY3V0ZWQgb24gbW9kdWxlIGxvYWQuIFNvLCBmcm9tIGEgZnV6emluZyBwZXJzcGVjdGl2ZSwgdGhpcyBsb29rcyBwb2ludGxlc3MuIFRoZXJlJ3Mgbm90aGluZyBmb3IgYSBmdXp6ZXIgdG8gKmZ1enoqLlxuXG5MZXQgbWUgY29uZmlybSB0aGF0IGJ5IGxvb2tpbmcgYXQgdGhlIGRldGFpbHMuIGB2bXN0YXRfdGVzdF9pbml0YCB0YWtlcyBubyBwYXJhbWV0ZXJzLCBydW5zIGEgZml4ZWQgbnVtYmVyIG9mIGl0ZXJhdGlvbnMsIGFuZCByZXR1cm5zIGAtRUFHQUlOYCAob3IgMCBpZiBidWlsdC1pbikuIFplcm8gdXNlciBpbnB1dC4gQWJzb2x1dGVseSB6ZXJvLiBGdXp6aW5nIHRoaXMgaXMgYSBjb21wbGV0ZSB3YXN0ZSBvZiByZXNvdXJjZXMuIFNvIEkgYW0gZ29pbmcgdG8gc2V0IGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5JIHdhbnQgdG8gYmUgYWJzb2x1dGVseSBzdXJlIHRoaXMgaXMgY29ycmVjdC4gSSBoYXZlIHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gb3RoZXIgY2hhbmdlcy4gTGV0IG1lIGNoZWNrIHRoZSBvdGhlciBmaWxlcy5cblxuKiAgIGBNQUlOVEFJTkVSU2A6IEp1c3QgYWRkZWQgYGxpYi90ZXN0X3Ztc3RhdC5jYC5cbiogICBgbGliL0tjb25maWcuZGVidWdgOiBBZGRlZCBgVEVTVF9WTVNUQVRgLlxuKiAgIGBsaWIvTWFrZWZpbGVgOiBBZGRlZCBgdGVzdF92bXN0YXQub2AuXG4qICAgYGxpYi90ZXN0X3Ztc3RhdC5jYDogVGhlIG1vZHVsZSBpdHNlbGYsIHdoaWNoIHdlIGFscmVhZHkgYW5hbHl6ZWQuXG4qICAgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tLypgOiBUaGUgdGVzdCBzY3JpcHRzLlxuXG5Ob3RoaW5nIGVsc2UgaXMgY2hhbmdlZC4gTG9va3MgZ29vZC4gSSdtIGNvbmZpZGVudCBpbiBteSBhc3Nlc3NtZW50LiBJJ2xsIG91dHB1dCBgV29ydGhGdXp6aW5nPWZhbHNlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTE1NywiT3V0cHV0VG9rZW5zIjoxMTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3ODMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwMjowMDo0Ny4yNDQ1NjQ0NTlaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI5MTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgYWRkcyBhIHN5bnRoZXRpYyBiZW5jaG1hcmsgbW9kdWxlIChgdGVzdF92bXN0YXRgKSBhbmQgaXRzIGFzc29jaWF0ZWQga3NlbGZ0ZXN0IHNjcmlwdHMuIFRoZSBtb2R1bGUgZXhlY3V0ZXMgYSBmaXhlZCBsb29wIG9uIGluaXRpYWxpemF0aW9uIHRvIG1lYXN1cmUgcGVyZm9ybWFuY2UgYW5kIGltbWVkaWF0ZWx5IHVubG9hZHMgKG9yIHJldHVybnMgMCBpZiBidWlsdC1pbikuIEl0IGRvZXMgbm90IGV4cG9zZSBhbnkgaW50ZXJmYWNlcyAoZS5nLiwgaW9jdGxzLCBzeXNmcywgZGVidWdmcykgdG8gdXNlcnNwYWNlLCBtZWFuaW5nIHRoZXJlIGlzIG5vIGF0dGFjayBzdXJmYWNlIG9yIGlucHV0IGZvciBhIGZ1enplciB0byBleHBsb3JlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBhZGRzIGEgc3ludGhldGljIGJlbmNobWFyayBtb2R1bGUgKGB0ZXN0X3Ztc3RhdGApIGFuZCBpdHMgYXNzb2NpYXRlZCBrc2VsZnRlc3Qgc2NyaXB0cy4gVGhlIG1vZHVsZSBleGVjdXRlcyBhIGZpeGVkIGxvb3Agb24gaW5pdGlhbGl6YXRpb24gdG8gbWVhc3VyZSBwZXJmb3JtYW5jZSBhbmQgaW1tZWRpYXRlbHkgdW5sb2FkcyAob3IgcmV0dXJucyAwIGlmIGJ1aWx0LWluKS4gSXQgZG9lcyBub3QgZXhwb3NlIGFueSBpbnRlcmZhY2VzIChlLmcuLCBpb2N0bHMsIHN5c2ZzLCBkZWJ1Z2ZzKSB0byB1c2Vyc3BhY2UsIG1lYW5pbmcgdGhlcmUgaXMgbm8gYXR0YWNrIHN1cmZhY2Ugb3IgaW5wdXQgZm9yIGEgZnV6emVyIHRvIGV4cGxvcmUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowrfb89[1] Phase: Running StartedAt: 2026-08-03 02:01:10 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrfb89[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-03 02:01:10 +0000 UTC FinishedAt: 2026-08-03 02:01:14 +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,}