Name: series-workflowr6hks Phase: Failed StartedAt: 2026-08-03 04:27:23 +0000 UTC FinishedAt: 2026-08-03 04:59:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr6hks[0] Phase: Succeeded StartedAt: 2026-08-03 04:27:23 +0000 UTC FinishedAt: 2026-08-03 04:59:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr6hks[0].run-triage Phase: Succeeded StartedAt: 2026-08-03 04:27:23 +0000 UTC FinishedAt: 2026-08-03 04:59:12 +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+CgkJCTx0ZD4yMDI2LzA4LzAzIDA0OjU3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNvbnRhaW5zIGEgY29tcGlsYXRpb24gZXJyb3I6IGBjcHUtXHUwMDNlYXJjaC5kb29yYmVsbF9yZXF1ZXN0ID0gMDtgIHNob3VsZCBiZSBgdmNwdS1cdTAwM2VhcmNoLmRvb3JiZWxsX3JlcXVlc3QgPSAwO2AuIFNpbmNlIGl0IGZhaWxzIHRvIGNvbXBpbGUsIGl0IGNhbm5vdCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA0OjU3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNDBkYTA4ZTU4NTE0MzQzZmNiODg1YjhhODJhZDAxZTI4YmMzMTljNFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDMgMDQ6NTc6MzcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYyBiL2FyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmNcbmluZGV4IDYxZGJlZWEzMTdmM2IuLjQwZjg3MTdiOGE3ZDUgMTAwNjQ0XG4tLS0gYS9hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jXG5AQCAtMTUsNiAmIzQzOzE1LDcgQEBcbiAgKiBieSBBbGV4YW5kZXIgR3JhZiBcdTAwM2NhZ3JhZkBzdXNlLmRlXHUwMDNlLlxuICAqL1xuIFxuJiM0MzsjaW5jbHVkZSBcJiMzNDthc20vZ3Vlc3Qtc3RhdGUtYnVmZmVyLmhcJiMzNDtcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9rdm1faG9zdC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgva2VybmVsLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9lcnIuaFx1MDAzZVxuQEAgLTQyNTMsMTEgJiM0Mzs0MjU0LDYgQEAgc3RhdGljIGludCBrdm1odl92Y3B1X2VudHJ5X25lc3RlZHYyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IHRpbWVfbGltaXQsXG4gXHRpbnQgdHJhcDtcbiBcdGxvbmcgcmM7XG4gXG4tXHRpZiAodmNwdS1cdTAwM2VhcmNoLmRvb3JiZWxsX3JlcXVlc3QpIHtcbi1cdFx0dmNwdS1cdTAwM2VhcmNoLmRvb3JiZWxsX3JlcXVlc3QgPSAwO1xuLVx0XHRrdm1wcGNfc2V0X2RwZGVzKHZjcHUsIDEpO1xuLVx0fVxuLVxuIFx0aW8gPSBcdTAwMjZ2Y3B1LVx1MDAzZWFyY2gubmVzdGVkdjJfaW87XG4gXG4gXHRtc3IgPSBtZm1zcigpO1xuQEAgLTQyNjUsNiAmIzQzOzQyNjEsOSBAQCBzdGF0aWMgaW50IGt2bWh2X3ZjcHVfZW50cnlfbmVzdGVkdjIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgdGltZV9saW1pdCxcbiBcdGlmIChsYXp5X2lycV9wZW5kaW5nKCkpXG4gXHRcdHJldHVybiAwO1xuIFxuJiM0MztcdGlmICh2Y3B1LVx1MDAzZWFyY2guZG9vcmJlbGxfcmVxdWVzdClcbiYjNDM7XHRcdGt2bXBwY19zZXRfZHBkZXModmNwdSwgMSk7XG4mIzQzO1xuIFx0cmMgPSBrdm1odl9uZXN0ZWR2Ml9mbHVzaF92Y3B1KHZjcHUsIHRpbWVfbGltaXQpO1xuIFx0aWYgKHJjIFx1MDAzYyAwKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbkBAIC00Mjk2LDYgJiM0Mzs0Mjk1LDE3IEBAIHN0YXRpYyBpbnQga3ZtaHZfdmNwdV9lbnRyeV9uZXN0ZWR2MihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCB0aW1lX2xpbWl0LFxuIFx0aWYgKHJjIFx1MDAzYyAwKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbiYjNDM7XHQvKiBDaGVjayBpZiBwcml2aWxlZ2VkIGRvb3IgYmVsbCB3YXMgcmVxdWVzdGVkIGFuZCBoYW5kbGVkICovXG4mIzQzO1x0aWYgKHZjcHUtXHUwMDNlYXJjaC52Y29yZS1cdTAwM2VkcGRlcykge1xuJiM0MztcdFx0a3ZtaHZfbmVzdGVkdjJfY2FjaGVkX3JlbG9hZCh2Y3B1LCBLVk1QUENfR1NJRF9EUERFUyk7XG4mIzQzO1x0XHRpZiAodmNwdS1cdTAwM2VhcmNoLnZjb3JlLVx1MDAzZWRwZGVzKVxuJiM0MztcdFx0XHR2Y3B1LVx1MDAzZWFyY2guZG9vcmJlbGxfcmVxdWVzdCB8PSB2Y3B1LVx1MDAzZWFyY2gudmNvcmUtXHUwMDNlZHBkZXM7XG4mIzQzO1x0XHRlbHNlXG4mIzQzO1x0XHRcdGNwdS1cdTAwM2VhcmNoLmRvb3JiZWxsX3JlcXVlc3QgPSAwO1xuJiM0MztcdH0gZWxzZSB7XG4mIzQzO1x0XHR2Y3B1LVx1MDAzZWFyY2guZG9vcmJlbGxfcmVxdWVzdCA9IDA7XG4mIzQzO1x0fVxuJiM0MztcbiBcdHRpbWVyX3JlYXJtX2hvc3RfZGVjKCp0Yik7XG4gXG4gXHQvKiBSZWNvcmQgY29udGV4dCBzd2l0Y2ggYW5kIGd1ZXN0X3J1bl90aW1lIGRhdGEgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNDo1NzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY29udGFpbnMgYSBjb21waWxhdGlvbiBlcnJvcjogYGNwdS1cdTAwM2VhcmNoLmRvb3JiZWxsX3JlcXVlc3QgPSAwO2Agc2hvdWxkIGJlIGB2Y3B1LVx1MDAzZWFyY2guZG9vcmJlbGxfcmVxdWVzdCA9IDA7YC4gU2luY2UgaXQgZmFpbHMgdG8gY29tcGlsZSwgaXQgY2Fubm90IGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA0MGRhMDhlNTg1MTQzNDNmY2I4ODViOGE4MmFkMDFlMjhiYzMxOWM0CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBBdWcgMyAwNDo1NzozNyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMgYi9hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jCmluZGV4IDYxZGJlZWEzMTdmM2IuLjQwZjg3MTdiOGE3ZDUgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYwpAQCAtMTUsNiAmIzQzOzE1LDcgQEAKICAqIGJ5IEFsZXhhbmRlciBHcmFmICZsdDthZ3JhZkBzdXNlLmRlJmd0Oy4KICAqLwogCiYjNDM7I2luY2x1ZGUgJiMzNDthc20vZ3Vlc3Qtc3RhdGUtYnVmZmVyLmgmIzM0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2t2bV9ob3N0LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgva2VybmVsLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvZXJyLmgmZ3Q7CkBAIC00MjUzLDExICYjNDM7NDI1NCw2IEBAIHN0YXRpYyBpbnQga3ZtaHZfdmNwdV9lbnRyeV9uZXN0ZWR2MihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCB0aW1lX2xpbWl0LAogCWludCB0cmFwOwogCWxvbmcgcmM7CiAKLQlpZiAodmNwdS0mZ3Q7YXJjaC5kb29yYmVsbF9yZXF1ZXN0KSB7Ci0JCXZjcHUtJmd0O2FyY2guZG9vcmJlbGxfcmVxdWVzdCA9IDA7Ci0JCWt2bXBwY19zZXRfZHBkZXModmNwdSwgMSk7Ci0JfQotCiAJaW8gPSAmYW1wO3ZjcHUtJmd0O2FyY2gubmVzdGVkdjJfaW87CiAKIAltc3IgPSBtZm1zcigpOwpAQCAtNDI2NSw2ICYjNDM7NDI2MSw5IEBAIHN0YXRpYyBpbnQga3ZtaHZfdmNwdV9lbnRyeV9uZXN0ZWR2MihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCB0aW1lX2xpbWl0LAogCWlmIChsYXp5X2lycV9wZW5kaW5nKCkpCiAJCXJldHVybiAwOwogCiYjNDM7CWlmICh2Y3B1LSZndDthcmNoLmRvb3JiZWxsX3JlcXVlc3QpCiYjNDM7CQlrdm1wcGNfc2V0X2RwZGVzKHZjcHUsIDEpOwomIzQzOwogCXJjID0ga3ZtaHZfbmVzdGVkdjJfZmx1c2hfdmNwdSh2Y3B1LCB0aW1lX2xpbWl0KTsKIAlpZiAocmMgJmx0OyAwKQogCQlyZXR1cm4gLUVJTlZBTDsKQEAgLTQyOTYsNiAmIzQzOzQyOTUsMTcgQEAgc3RhdGljIGludCBrdm1odl92Y3B1X2VudHJ5X25lc3RlZHYyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IHRpbWVfbGltaXQsCiAJaWYgKHJjICZsdDsgMCkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKJiM0MzsJLyogQ2hlY2sgaWYgcHJpdmlsZWdlZCBkb29yIGJlbGwgd2FzIHJlcXVlc3RlZCBhbmQgaGFuZGxlZCAqLwomIzQzOwlpZiAodmNwdS0mZ3Q7YXJjaC52Y29yZS0mZ3Q7ZHBkZXMpIHsKJiM0MzsJCWt2bWh2X25lc3RlZHYyX2NhY2hlZF9yZWxvYWQodmNwdSwgS1ZNUFBDX0dTSURfRFBERVMpOwomIzQzOwkJaWYgKHZjcHUtJmd0O2FyY2gudmNvcmUtJmd0O2RwZGVzKQomIzQzOwkJCXZjcHUtJmd0O2FyY2guZG9vcmJlbGxfcmVxdWVzdCB8PSB2Y3B1LSZndDthcmNoLnZjb3JlLSZndDtkcGRlczsKJiM0MzsJCWVsc2UKJiM0MzsJCQljcHUtJmd0O2FyY2guZG9vcmJlbGxfcmVxdWVzdCA9IDA7CiYjNDM7CX0gZWxzZSB7CiYjNDM7CQl2Y3B1LSZndDthcmNoLmRvb3JiZWxsX3JlcXVlc3QgPSAwOwomIzQzOwl9CiYjNDM7CiAJdGltZXJfcmVhcm1faG9zdF9kZWMoKnRiKTsKIAogCS8qIFJlY29yZCBjb250ZXh0IHN3aXRjaCBhbmQgZ3Vlc3RfcnVuX3RpbWUgZGF0YSAqLwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNDo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTgyCgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogMTgzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgS1ZNL1Bvd2VyUEMgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuY2AsIHNwZWNpZmljYWxseSB0aGUgYGt2bWh2X3ZjcHVfZW50cnlfbmVzdGVkdjJgIGZ1bmN0aW9uLiBJdCBzZWVtcyBsaWtlIHdlJiMzOTtyZSBtb3Zpbmcgc29tZSBsb2dpYyBhcm91bmQgcmVsYXRlZCB0byBgdmNwdS0mZ3Q7YXJjaC5kb29yYmVsbF9yZXF1ZXN0YCBhbmQgYGt2bXBwY19zZXRfZHBkZXNgLiBIbW0sIGFsc28gbG9va3MgbGlrZSB0aGVyZSYjMzk7cyBhbiBhZGRlZCBjaGVjayBmb3IgYHZjcHUtJmd0O2FyY2gudmNvcmUtJmd0O2RwZGVzYCBhbmQgYW4gdXBkYXRlIHRvIGB2Y3B1LSZndDthcmNoLmRvb3JiZWxsX3JlcXVlc3RgIHRoZXJlIHRvby4gVGhpcyBjb3VsZCBiZSBpbnRlcmVzdGluZyBmcm9tIGEgcGVyZm9ybWFuY2UgcGVyc3BlY3RpdmUsIG9yIG1heWJlIHJlbGF0ZWQgdG8gc29tZSBuZXcgZmVhdHVyZS4KCkxldCBtZSBqdXN0IHF1aWNrbHkgc2NhbiBmb3IgcG90ZW50aWFsIHR5cG9zIG9yIHN1YnRsZSBidWdzLiBBaCwgd2FpdCBhIHNlY29uZC4gSSBzZWUgdGhpcyBsaW5lOiBgY3B1LSZndDthcmNoLmRvb3JiZWxsX3JlcXVlc3QgPSAwO2AuIFRoYXQgbG9va3MgYSBiaXQgb2RkOyBpcyBgY3B1YCBhY3R1YWxseSBpbiBzY29wZSB3aXRoaW4gYGt2bWh2X3ZjcHVfZW50cnlfbmVzdGVkdjJgPyBJIGRvbiYjMzk7dCByZWNhbGwgc2VlaW5nIGl0IGRlZmluZWQgdGhlcmUuIEJldHRlciBkb3VibGUtY2hlY2sgdGhlIGNvbnRleHQsIGVzcGVjaWFsbHkgYXJvdW5kIHRoYXQgYXJlYSBvZiBgYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuY2AgYXJvdW5kIGxpbmUgNDI5NS4gVGhpcyBjb3VsZCBiZSBhIHNpbXBsZSB0eXBvLCBvciBpdCBtaWdodCBwb2ludCB0byBhIGJpZ2dlciBpc3N1ZSB3aXRoIGhvdyB0aGF0IHZhcmlhYmxlIGlzIGJlaW5nIHVzZWQuIExldCYjMzk7cyBzZWUuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNDo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1odl92Y3B1X2VudHJ5X25lc3RlZHYyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jPTQyNDQ9c3RhdGljIHZvaWQgZG9fdHJhY2VfbmVzdGVkX2NzX3RpbWUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNDI0OC1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NDI0OTpzdGF0aWMgaW50IGt2bWh2X3ZjcHVfZW50cnlfbmVzdGVkdjIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgdGltZV9saW1pdCxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNDI1MC1cdFx0XHRcdCAgICAgdW5zaWduZWQgbG9uZyBscGNyLCB1NjQgKnRiKVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM9NDQyMz1zdGF0aWMgaW50IGt2bWh2X3A5X2d1ZXN0X2VudHJ5KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IHRpbWVfbGltaXQsXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00NDQ2LVx0XHRlbHNlXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjQ0NDc6XHRcdFx0dHJhcCA9IGt2bWh2X3ZjcHVfZW50cnlfbmVzdGVkdjIodmNwdSwgdGltZV9saW1pdCwgbHBjciwgdGIpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00NDQ4LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA0OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0MjMKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqRGl2aW5nIGludG8gYGt2bWh2X3ZjcHVfZW50cnlfbmVzdGVkdjJgKioKCkFscmlnaHQsIHRpbWUgdG8gZGlnIGludG8gYGt2bWh2X3ZjcHVfZW50cnlfbmVzdGVkdjJgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgd2hhdCBhcmUgd2UgcmVhbGx5IGxvb2tpbmcgYXQgaGVyZT8gSXQmIzM5O3MgY2xlYXJseSBhIGNyaXRpY2FsIGVudHJ5IHBvaW50IOKAkyB0aGUgbmFtZSBzY3JlYW1zIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiDigJMgc28gdGhpcyBpcyB3aGVyZSBhIHZpcnR1YWwgQ1BVICh2Q1BVKSBvZiBhIGd1ZXN0IGlzIGVudGVyaW5nIGEgbmVzdGVkIGh5cGVydmlzb3IgKGxpa2VseSBLVk0tSFYpLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udHJvbCBmbG93LiBXaGF0JiMzOTtzIHRoZSBjb250ZXh0IHN3aXRjaGluZyBoYXBwZW5pbmc/IFdoYXQgc3RhdGUgaXMgYmVpbmcgc2F2ZWQgYW5kIHJlc3RvcmVkPyBJcyB0aGVyZSBhbnl0aGluZyBjbGV2ZXIgZ29pbmcgb24gcmVsYXRlZCB0byBzaGFkb3cgcGFnaW5nIG9yIG90aGVyIG1lbW9yeSBtYW5hZ2VtZW50IHRyaWNrcz8KCk15IGluaXRpYWwgcXVlc3Rpb25zIGludm9sdmU6CgoqICAgKipTeW5jaHJvbml6YXRpb246KiogSG93IGlzIHRoaXMgZnVuY3Rpb24gcHJvdGVjdGVkIGFnYWluc3QgY29uY3VycmVudCBhY2Nlc3M/IElzIGl0IHJlZW50cmFudD8gQW55IGxvY2tzIG9yIGF0b21pYyBvcGVyYXRpb25zIGJlaW5nIHVzZWQgdG8ga2VlcCB0aGluZ3Mgc2FuZSB3aGVuIG11bHRpcGxlIHZDUFVzIHBvdGVudGlhbGx5IGVudGVyIHRoaXMgcm91dGluZSBzaW11bHRhbmVvdXNseT8KKiAgICoqUmVnaXN0ZXJzOioqIFdoYXQgcmVnaXN0ZXJzIGFyZSBiZWluZyBzYXZlZCwgYW5kIHdoeT8gSXMgaXQgYSBjb21wbGV0ZSBzYXZlIG9mIHRoZSBndWVzdCYjMzk7cyBjb250ZXh0LCBvciBhIHBhcnRpYWwgc2F2ZSB3aXRoIG9wdGltaXphdGlvbnM/IFdoYXQgYXJjaGl0ZWN0dXJhbCBjb25zaWRlcmF0aW9ucyBhcmUgZHJpdmluZyB0aGUgY2hvaWNlPwoqICAgKipFUFQvU2hhZG93IFBhZ2luZzoqKiBJIG5lZWQgdG8gbG9vayBjbG9zZWx5IGF0IHdoZXRoZXIgYW5kIGhvdyBleHRlbmRlZCBwYWdlIHRhYmxlcyAoRVBUKSBvciBhbnkga2luZCBvZiBzaGFkb3cgcGFnaW5nIG1lY2hhbmlzbSBpcyBiZWluZyBtYW5pcHVsYXRlZC4gTmVzdGVkIHZpcnR1YWxpemF0aW9uIGRlbWFuZHMgZWZmaWNpZW50IHRyYW5zbGF0aW9uIGJldHdlZW4gZ3Vlc3QgcGh5c2ljYWwgYWRkcmVzc2VzLCBob3N0IHBoeXNpY2FsIGFkZHJlc3NlcywgYW5kIHBvdGVudGlhbGx5LCB0aGUgbmVzdGVkIGh5cGVydmlzb3ImIzM5O3MgcGh5c2ljYWwgYWRkcmVzc2VzLiBUaGUgY29yZSBvZiB0aGUgcGVyZm9ybWFuY2UgaXMgZnJlcXVlbnRseSB0aGUgcGFnaW5nIHBhdGguCiogICAqKlZNIEV4aXQvRW50cnk6KiogSG93IGRvZXMgdGhpcyBmdW5jdGlvbiByZWxhdGUgdG8gdGhlIFZNIGVudHJ5IGFuZCBleGl0IG1lY2hhbmlzbXM/IElzIHRoaXMgZnVuY3Rpb24gY2FsbGVkIGFmdGVyIGEgVk0gZXhpdCwgYW5kIGlmIHNvLCBob3cgZG9lcyBpdCBoYW5kbGUgdGhlIGV4Y2VwdGlvbiB0aGF0IGNhdXNlZCB0aGUgZXhpdD8gV2hhdCBhYm91dCB0aGUgcmV2ZXJzZT8KKiAgICoqRXJyb3IgSGFuZGxpbmc6KiogV2hhdCYjMzk7cyB0aGUgZXJyb3IgaGFuZGxpbmcgbG9vayBsaWtlPyBBcmUgdGhlcmUgYW55IHBvdGVudGlhbCBmYWlsdXJlIHBvaW50cyB0aGF0IG5lZWQgY2FyZWZ1bCBjb25zaWRlcmF0aW9uIGluIGEgcHJvZHVjdGlvbiBzZXR0aW5nPyBXaGF0IGxvZ2dpbmcgb3IgZGVidWdnaW5nIGZhY2lsaXRpZXMgYXJlIGltcGxlbWVudGVkIGhlcmU/CiogICAqKlZpcnR1YWxpemF0aW9uIEluc3RydWN0aW9uczoqKiBUaGUgZnVuY3Rpb24mIzM5O3MgdXNlIG9mIHZpcnR1YWxpemF0aW9uIGluc3RydWN0aW9ucyBpcywgb2YgY291cnNlLCBjcml0aWNhbC4gVk0tRW50ZXIgYW5kIFZNLUV4aXQgaW5zdHJ1Y3Rpb25zIGFyZSB0aGUgaGVhcnQgb2YgdGhpcy4gSXQgd2lsbCBiZSBpbXBvcnRhbnQgdG8gY29uZmlybSB0aGUgY29ycmVjdCBoYW5kbGluZyBvZiBhbnkgY29udHJvbCByZWdpc3RlcnMgaW52b2x2ZWQgKGUuZy4sIFZNQ1MpLgoKVWx0aW1hdGVseSwgSSBleHBlY3QgdGhpcyBmdW5jdGlvbiB0byBiZSBhIGxpbmNocGluIGluIHRoZSBuZXN0ZWQgdmlydHVhbGl6YXRpb24gc3RhY2suIFVuZGVyc3RhbmRpbmcgaXQgdGhvcm91Z2hseSBpcyB0aGUga2V5IHRvIGJvdGggb3B0aW1pemluZyBwZXJmb3JtYW5jZSBhbmQgZW5zdXJpbmcgcm9idXN0bmVzcy4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGFjdHVhbGx5IGluIGl0Li4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDQ6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDthcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDI0OSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7NDI0OTpcdHN0YXRpYyBpbnQga3ZtaHZfdmNwdV9lbnRyeV9uZXN0ZWR2MihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCB0aW1lX2xpbWl0LFxuNDI1MDpcdFx0XHRcdFx0ICAgICB1bnNpZ25lZCBsb25nIGxwY3IsIHU2NCAqdGIpXG40MjUxOlx0e1xuNDI1MjpcdFx0c3RydWN0IGt2bWh2X25lc3RlZHYyX2lvICppbztcbjQyNTM6XHRcdHVuc2lnbmVkIGxvbmcgbXNyLCBpO1xuNDI1NDpcdFx0aW50IHRyYXA7XG40MjU1Olx0XHRsb25nIHJjO1xuNDI1NjpcdFxuNDI1NzpcdFx0aW8gPSBcdTAwMjZ2Y3B1LVx1MDAzZWFyY2gubmVzdGVkdjJfaW87XG40MjU4Olx0XG40MjU5Olx0XHRtc3IgPSBtZm1zcigpO1xuNDI2MDpcdFx0a3ZtcHBjX21zcl9oYXJkX2Rpc2FibGVfc2V0X2ZhY2lsaXRpZXModmNwdSwgbXNyKTtcbjQyNjE6XHRcdGlmIChsYXp5X2lycV9wZW5kaW5nKCkpXG40MjYyOlx0XHRcdHJldHVybiAwO1xuNDI2MzpcdFxuNDI2NDpcdFx0aWYgKHZjcHUtXHUwMDNlYXJjaC5kb29yYmVsbF9yZXF1ZXN0KVxuNDI2NTpcdFx0XHRrdm1wcGNfc2V0X2RwZGVzKHZjcHUsIDEpO1xuNDI2NjpcdFxuNDI2NzpcdFx0cmMgPSBrdm1odl9uZXN0ZWR2Ml9mbHVzaF92Y3B1KHZjcHUsIHRpbWVfbGltaXQpO1xuNDI2ODpcdFx0aWYgKHJjIFx1MDAzYyAwKVxuNDI2OTpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbjQyNzA6XHRcbjQyNzE6XHRcdGt2bXBwY19nc2VfcHV0X3U2NChpby1cdTAwM2V2Y3B1X3J1bl9pbnB1dCwgS1ZNUFBDX0dTSURfTFBDUiwgbHBjcik7XG40MjcyOlx0XG40MjczOlx0XHRhY2N1bXVsYXRlX3RpbWUodmNwdSwgXHUwMDI2dmNwdS1cdTAwM2VhcmNoLmluX2d1ZXN0KTtcbjQyNzQ6XHRcdHJjID0gcGxwYXJfZ3Vlc3RfcnVuX3ZjcHUoMCwgdmNwdS1cdTAwM2Vrdm0tXHUwMDNlYXJjaC5scGlkLCB2Y3B1LVx1MDAzZXZjcHVfaWQsXG40Mjc1Olx0XHRcdFx0XHQgIFx1MDAyNnRyYXAsIFx1MDAyNmkpO1xuNDI3NjpcdFxuNDI3NzpcdFx0aWYgKHJjICE9IEhfU1VDQ0VTUykge1xuNDI3ODpcdFx0XHRwcl9lcnIoXCYjMzQ7S1ZNIEd1ZXN0IFJ1biBWQ1BVIGhjYWxsIGZhaWxlZFxcblwmIzM0Oyk7XG40Mjc5Olx0XHRcdGlmIChyYyA9PSBIX0lOVkFMSURfRUxFTUVOVF9JRClcbjQyODA6XHRcdFx0XHRwcl9lcnIoXCYjMzQ7S1ZNOiBHdWVzdCBSdW4gVkNQVSBpbnZhbGlkIGVsZW1lbnQgaWQgYXQgJWxkXFxuXCYjMzQ7LCBpKTtcbjQyODE6XHRcdFx0ZWxzZSBpZiAocmMgPT0gSF9JTlZBTElEX0VMRU1FTlRfU0laRSlcbjQyODI6XHRcdFx0XHRwcl9lcnIoXCYjMzQ7S1ZNOiBHdWVzdCBSdW4gVkNQVSBpbnZhbGlkIGVsZW1lbnQgc2l6ZSBhdCAlbGRcXG5cJiMzNDssIGkpO1xuNDI4MzpcdFx0XHRlbHNlIGlmIChyYyA9PSBIX0lOVkFMSURfRUxFTUVOVF9WQUxVRSlcbjQyODQ6XHRcdFx0XHRwcl9lcnIoXCYjMzQ7S1ZNOiBHdWVzdCBSdW4gVkNQVSBpbnZhbGlkIGVsZW1lbnQgdmFsdWUgYXQgJWxkXFxuXCYjMzQ7LCBpKTtcbjQyODU6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG40Mjg2Olx0XHR9XG40Mjg3Olx0XHRhY2N1bXVsYXRlX3RpbWUodmNwdSwgXHUwMDI2dmNwdS1cdTAwM2VhcmNoLmd1ZXN0X2V4aXQpO1xuNDI4ODpcdFxuNDI4OTpcdFx0KnRiID0gbWZ0YigpO1xuNDI5MDpcdFx0a3ZtcHBjX2dzbV9yZXNldChpby1cdTAwM2V2Y3B1X21lc3NhZ2UpO1xuNDI5MTpcdFx0a3ZtcHBjX2dzbV9yZXNldChpby1cdTAwM2V2Y29yZV9tZXNzYWdlKTtcbjQyOTI6XHRcdGt2bXBwY19nc2JtX3plcm8oXHUwMDI2aW8tXHUwMDNldmFsaWRzKTtcbjQyOTM6XHRcbjQyOTQ6XHRcdHJjID0ga3ZtaHZfbmVzdGVkdjJfcGFyc2Vfb3V0cHV0KHZjcHUpO1xuNDI5NTpcdFx0aWYgKHJjIFx1MDAzYyAwKVxuNDI5NjpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbjQyOTc6XHRcbjQyOTg6XHRcdC8qIENoZWNrIGlmIHByaXZpbGVnZWQgZG9vciBiZWxsIHdhcyByZXF1ZXN0ZWQgYW5kIGhhbmRsZWQgKi9cbjQyOTk6XHRcdGlmICh2Y3B1LVx1MDAzZWFyY2gudmNvcmUtXHUwMDNlZHBkZXMpIHtcbjQzMDA6XHRcdFx0a3ZtaHZfbmVzdGVkdjJfY2FjaGVkX3JlbG9hZCh2Y3B1LCBLVk1QUENfR1NJRF9EUERFUyk7XG40MzAxOlx0XHRcdGlmICh2Y3B1LVx1MDAzZWFyY2gudmNvcmUtXHUwMDNlZHBkZXMpXG40MzAyOlx0XHRcdFx0dmNwdS1cdTAwM2VhcmNoLmRvb3JiZWxsX3JlcXVlc3QgfD0gdmNwdS1cdTAwM2VhcmNoLnZjb3JlLVx1MDAzZWRwZGVzO1xuNDMwMzpcdFx0XHRlbHNlXG40MzA0Olx0XHRcdFx0Y3B1LVx1MDAzZWFyY2guZG9vcmJlbGxfcmVxdWVzdCA9IDA7XG40MzA1Olx0XHR9IGVsc2Uge1xuNDMwNjpcdFx0XHR2Y3B1LVx1MDAzZWFyY2guZG9vcmJlbGxfcmVxdWVzdCA9IDA7XG40MzA3Olx0XHR9XG40MzA4Olx0XG40MzA5Olx0XHR0aW1lcl9yZWFybV9ob3N0X2RlYygqdGIpO1xuNDMxMDpcdFxuNDMxMTpcdFx0LyogUmVjb3JkIGNvbnRleHQgc3dpdGNoIGFuZCBndWVzdF9ydW5fdGltZSBkYXRhICovXG40MzEyOlx0XHRpZiAoa3ZtaHZfZ2V0X2wyX2NvdW50ZXJzX3N0YXR1cygpKVxuNDMxMzpcdFx0XHRkb190cmFjZV9uZXN0ZWRfY3NfdGltZSh2Y3B1KTtcbjQzMTQ6XHRcbjQzMTU6XHRcdHJldHVybiB0cmFwO1xuNDMxNjpcdH1cbjQzMTc6XHRcbjQzMTg6XHQvKiBjYWxsIG91ciBoeXBlcnZpc29yIHRvIGxvYWQgdXAgSFYgcmVncyBhbmQgZ28gKi9cbjQzMTk6XHRzdGF0aWMgaW50IGt2bWh2X3ZjcHVfZW50cnlfcDlfbmVzdGVkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IHRpbWVfbGltaXQsIHVuc2lnbmVkIGxvbmcgbHBjciwgdTY0ICp0YilcbjQzMjA6XHR7XG40MzIxOlx0XHR1bnNpZ25lZCBsb25nIGhvc3RfcHNzY3I7XG40MzIyOlx0XHR1bnNpZ25lZCBsb25nIG1zcjtcbjQzMjM6XHRcdHN0cnVjdCBodl9ndWVzdF9zdGF0ZSBodnJlZ3M7XG40MzI0Olx0XHRzdHJ1Y3QgcDlfaG9zdF9vc19zcHJzIGhvc3Rfb3Nfc3BycztcbjQzMjU6XHRcdHM2NCBkZWM7XG40MzI2Olx0XHRpbnQgdHJhcDtcbjQzMjc6XHRcbjQzMjg6XHRcdG1zciA9IG1mbXNyKCk7XG40MzI5Olx0XG40MzMwOlx0XHRzYXZlX3A5X2hvc3Rfb3Nfc3BycyhcdTAwMjZob3N0X29zX3NwcnMpO1xuNDMzMTpcdFxuNDMzMjpcdFx0LypcbjQzMzM6XHRcdCAqIFdlIG5lZWQgdG8gc2F2ZSBhbmQgcmVzdG9yZSB0aGUgZ3Vlc3QgdmlzaWJsZSBwYXJ0IG9mIHRoZVxuNDMzNDpcdFx0ICogcHNzY3IgKGkuZS4gdXNpbmcgU1BSTl9QU1NDUl9QUikgc2luY2UgdGhlIGh5cGVydmlzb3JcbjQzMzU6XHRcdCAqIGRvZXNuJiMzOTt0IGRvIHRoaXMgZm9yIHVzLiBOb3RlIG9ubHkgcmVxdWlyZWQgaWYgcHNlcmllcyBzaW5jZVxuNDMzNjpcdFx0ICogdGhpcyBpcyBkb25lIGluIGt2bWh2X3ZjcHVfZW50cnlfcDkoKSBiZWxvdyBvdGhlcndpc2UuXG40MzM3Olx0XHQgKi9cbjQzMzg6XHRcdGhvc3RfcHNzY3IgPSBtZnNwcihTUFJOX1BTU0NSX1BSKTtcbjQzMzk6XHRcbjQzNDA6XHRcdGt2bXBwY19tc3JfaGFyZF9kaXNhYmxlX3NldF9mYWNpbGl0aWVzKHZjcHUsIG1zcik7XG40MzQxOlx0XHRpZiAobGF6eV9pcnFfcGVuZGluZygpKVxuNDM0MjpcdFx0XHRyZXR1cm4gMDtcbjQzNDM6XHRcbjQzNDQ6XHRcdGlmICh1bmxpa2VseShsb2FkX3ZjcHVfc3RhdGUodmNwdSwgXHUwMDI2aG9zdF9vc19zcHJzKSkpXG40MzQ1Olx0XHRcdG1zciA9IG1mbXNyKCk7IC8qIFRNIHJlc3RvcmUgY2FuIHVwZGF0ZSBtc3IgKi9cbjQzNDY6XHRcbjQzNDc6XHRcdGlmICh2Y3B1LVx1MDAzZWFyY2gucHNzY3IgIT0gaG9zdF9wc3NjcilcbjQzNDg6XHRcdFx0bXRzcHIoU1BSTl9QU1NDUl9QUiwgdmNwdS1cdTAwM2VhcmNoLnBzc2NyKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNDo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NzIzCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogNTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGVidWdnaW5nIGEgUG90ZW50aWFsIFJhY2UgQ29uZGl0aW9uKioKCkFscmlnaHQsIHJpZ2h0IHRoZXJlLCBsaW5lIDQzMDQg4oCTIGBjcHUtJmd0O2FyY2guZG9vcmJlbGxfcmVxdWVzdCA9IDA7YC4gSSYjMzk7bSBmb2N1c2luZyBpbiBvbiB0aGF0IGJpdCBvZiBjb2RlLiBTcGVjaWZpY2FsbHksIHRoZSBhc3NpZ25tZW50LiBNeSBpbml0aWFsIGh1bmNoIGlzIHRoYXQgd2UgYXJlIHRyeWluZyB0byBzZXQgdGhlIGBkb29yYmVsbF9yZXF1ZXN0YCBmbGFnIHRvIHplcm8gb24gYSBwYXJ0aWN1bGFyIENQVSYjMzk7cyBhcmNoaXRlY3R1cmUuIFNvdW5kcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoLCBidXQgbXkgaW50ZXJuYWwgYWxhcm0gYmVsbHMgYXJlIGFscmVhZHkgc3RhcnRpbmcgdG8gcmluZy4KClRoZSBjcml0aWNhbCBxdWVzdGlvbiBpbW1lZGlhdGVseSBzdXJmYWNpbmcgaW4gbXkgbWluZCBpczogd2hlcmUgaXMgYGNwdWAgY29taW5nIGZyb20/IEJlZm9yZSBJIGRpdmUgdG9vIGRlZXAsIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBgY3B1YCBpcyBwcm9wZXJseSBkZWNsYXJlZCBhbmQgaW5pdGlhbGl6ZWQuIElzIHRoaXMgYSBsb2NhbCB2YXJpYWJsZSB3aXRoaW4gYSBmdW5jdGlvbiwgb3IgcGVyaGFwcyBhIGdsb2JhbCB2YXJpYWJsZSBkZWZpbmVkIHNvbWV3aGVyZSBlbHNlIGluIHRoZSBjb2RlYmFzZT8gSXQmIzM5O3MgY3J1Y2lhbCB0byB1bmRlcnN0YW5kIHRoZSBzY29wZSBhbmQgbGlmZXRpbWUgb2YgdGhpcyB2YXJpYWJsZS4gQWx0ZXJuYXRpdmVseSwgY291bGQgaXQgZXZlbiBiZSBhIG1hY3JvPyBNYWNyb3MgYXJlIHRyaWNreSBhbmQgY2FuIGludHJvZHVjZSBzdWJ0bGUgYnVncyBpZiB5b3UgYXJlIG5vdCB2ZXJ5IGNhcmVmdWwuIEkgbmVlZCB0byB0cmFjZSBiYWNrIGhvdyBpdCYjMzk7cyBkZWZpbmVkIGFuZCB3aGVuL3doZXJlIGl0JiMzOTtzIHVzZWQuIFRoaXMgcXVpY2sgY2hlY2sgd2lsbCBzYXZlIGEgbG90IG9mIGhlYWQtc2NyYXRjaGluZyBsYXRlciBpZiBpdCYjMzk7cyBub3Qgd2hhdCBJIGV4cGVjdCBpdCB0byBiZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNDo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjcHUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAzNTE4IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTI5LSNpbmNsdWRlIFx1MDAzY2xpbnV4L2Fub25faW5vZGVzLmhcdTAwM2VcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MzA6I2luY2x1ZGUgXHUwMDNjbGludXgvY3B1LmhcdTAwM2VcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MzE6I2luY2x1ZGUgXHUwMDNjbGludXgvY3B1bWFzay5oXHUwMDNlXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTMyLSNpbmNsdWRlIFx1MDAzY2xpbnV4L3NwaW5sb2NrLmhcdTAwM2Vcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTU0LSNpbmNsdWRlIFx1MDAzY2FzbS9kaXNhc3NlbWJsZS5oXHUwMDNlXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjU1OiNpbmNsdWRlIFx1MDAzY2FzbS9jcHV0YWJsZS5oXHUwMDNlXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTU2LSNpbmNsdWRlIFx1MDAzY2FzbS9jYWNoZWZsdXNoLmhcdTAwM2Vcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTY1LSNpbmNsdWRlIFx1MDAzY2FzbS9wcm9jZXNzb3IuaFx1MDAzZVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo2NjojaW5jbHVkZSBcdTAwM2Nhc20vY3B1dGhyZWFkcy5oXHUwMDNlXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTY3LSNpbmNsdWRlIFx1MDAzY2FzbS9wYWdlLmhcdTAwM2Vcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jPTEzMz1NT0RVTEVfUEFSTV9ERVNDKG5lc3RlZCwgXCYjMzQ7RW5hYmxlIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiAob25seSBvbiBQT1dFUjkpXCYjMzQ7KTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMTM0LVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoxMzU6c3RhdGljIGludCBrdm1wcGNfaHZfc2V0dXBfaHRhYl9ybWEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMTM2LVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM9MTUxPXN0YXRpYyB1bnNpZ25lZCBsb25nIHA4X3J3bXJfdmFsdWVzW01BWF9TTVRfVEhSRUFEUyAmIzQzOyAxXSA9IHtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTE2Mi1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MTYzOnN0YXRpYyBpbmxpbmUgc3RydWN0IGt2bV92Y3B1ICpuZXh0X3J1bm5hYmxlX3RocmVhZChzdHJ1Y3Qga3ZtcHBjX3Zjb3JlICp2YyxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMTY0LVx0XHRpbnQgKmlwKVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMTY2LVx0aW50IGkgPSAqaXA7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjE2NzpcdHN0cnVjdCBrdm1fdmNwdSAqdmNwdTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMTY4LVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0xNjktXHR3aGlsZSAoJiM0MzsmIzQzO2kgXHUwMDNjIE1BWF9TTVRfVEhSRUFEUykge1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoxNzA6XHRcdHZjcHUgPSBSRUFEX09OQ0UodmMtXHUwMDNlcnVubmFibGVfdGhyZWFkc1tpXSk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjE3MTpcdFx0aWYgKHZjcHUpIHtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMTcyLVx0XHRcdCppcCA9IGk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjE3MzpcdFx0XHRyZXR1cm4gdmNwdTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMTc0LVx0XHR9XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0xNzktLyogVXNlZCB0byB0cmF2ZXJzZSB0aGUgbGlzdCBvZiBydW5uYWJsZSB0aHJlYWRzIGZvciBhIGdpdmVuIHZjb3JlICovXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjE4MDojZGVmaW5lIGZvcl9lYWNoX3J1bm5hYmxlX3RocmVhZChpLCB2Y3B1LCB2YykgXFxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MTgxOlx0Zm9yIChpID0gLTE7ICh2Y3B1ID0gbmV4dF9ydW5uYWJsZV90aHJlYWQodmMsIFx1MDAyNmkpKTsgKVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0xODItXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjE4MzpzdGF0aWMgYm9vbCBrdm1wcGNfaXBpX3RocmVhZChpbnQgY3B1KVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0xODQte1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMTkwLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoxOTE6XHQvKiBPbiBQT1dFUjkgd2UgY2FuIHVzZSBtc2dzbmQgdG8gSVBJIGFueSBjcHUgKi9cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MTkyOlx0aWYgKGNwdV9oYXNfZmVhdHVyZShDUFVfRlRSX0FSQ0hfMzAwKSkge1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoxOTM6XHRcdG1zZyB8PSBnZXRfaGFyZF9zbXBfcHJvY2Vzc29yX2lkKGNwdSk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTE5NC1cdFx0c21wX21iKCk7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0xOTktXHQvKiBPbiBQT1dFUjggZm9yIElQSXMgdG8gdGhyZWFkcyBpbiB0aGUgc2FtZSBjb3JlLCB1c2UgbXNnc25kICovXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjIwMDpcdGlmIChjcHVfaGFzX2ZlYXR1cmUoQ1BVX0ZUUl9BUkNIXzIwN1MpKSB7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTIwMS1cdFx0cHJlZW1wdF9kaXNhYmxlKCk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjIwMjpcdFx0aWYgKGNwdV9maXJzdF90aHJlYWRfc2libGluZyhjcHUpID09XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjIwMzpcdFx0ICAgIGNwdV9maXJzdF90aHJlYWRfc2libGluZyhzbXBfcHJvY2Vzc29yX2lkKCkpKSB7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjIwNDpcdFx0XHRtc2cgfD0gY3B1X3RocmVhZF9pbl9jb3JlKGNwdSk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTIwNS1cdFx0XHRzbXBfbWIoKTtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTIxMy0jaWYgZGVmaW5lZChDT05GSUdfUFBDX0lDUF9OQVRJVkUpIFx1MDAyNlx1MDAyNiBkZWZpbmVkKENPTkZJR19TTVApXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjIxNDpcdGlmIChjcHUgXHUwMDNlPSAwIFx1MDAyNlx1MDAyNiBjcHUgXHUwMDNjIG5yX2NwdV9pZHMpIHtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjE1Olx0XHRpZiAocGFjYV9wdHJzW2NwdV0tXHUwMDNla3ZtX2hzdGF0ZS54aWNzX3BoeXMpIHtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjE2Olx0XHRcdHhpY3Nfd2FrZV9jcHUoY3B1KTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjE3LVx0XHRcdHJldHVybiB0cnVlO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yMTgtXHRcdH1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjE5Olx0XHRvcGFsX2ludF9zZXRfbWZycihnZXRfaGFyZF9zbXBfcHJvY2Vzc29yX2lkKGNwdSksIElQSV9QUklPUklUWSk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTIyMC1cdFx0cmV0dXJuIHRydWU7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yMjYtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjIyNzpzdGF0aWMgdm9pZCBrdm1wcGNfZmFzdF92Y3B1X2tpY2tfaHYoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yMjgte1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyMjk6XHRpbnQgY3B1O1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yMzAtXHRzdHJ1Y3QgcmN1d2FpdCAqd2FpdHA7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yMzMtXHQgKiByY3V3YWl0X3dha2VfdXAgY29udGFpbnMgc21wX21iKCkgd2hpY2ggb3JkZXJzIHByaW9yIHN0b3JlcyB0aGF0XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjIzNDpcdCAqIGNyZWF0ZSBwZW5kaW5nIHdvcmsgdnMgYmVsb3cgbG9hZHMgb2YgY3B1IGZpZWxkcy4gVGhlIG90aGVyIHNpZGVcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjM1Olx0ICogaXMgdGhlIGJhcnJpZXIgaW4gdmNwdSBydW4gdGhhdCBvcmRlcnMgc2V0dGluZyB0aGUgY3B1IGZpZWxkcyB2c1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yMzYtXHQgKiB0ZXN0aW5nIGZvciBwZW5kaW5nIHdvcmsuXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yMzgtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjIzOTpcdHdhaXRwID0ga3ZtX2FyY2hfdmNwdV9nZXRfd2FpdCh2Y3B1KTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjQwLVx0aWYgKHJjdXdhaXRfd2FrZV91cCh3YWl0cCkpXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjI0MTpcdFx0JiM0MzsmIzQzO3ZjcHUtXHUwMDNlc3RhdC5nZW5lcmljLmhhbHRfd2FrZXVwO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yNDItXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjI0MzpcdGNwdSA9IFJFQURfT05DRSh2Y3B1LVx1MDAzZWFyY2gudGhyZWFkX2NwdSk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjI0NDpcdGlmIChjcHUgXHUwMDNlPSAwIFx1MDAyNlx1MDAyNiBrdm1wcGNfaXBpX3RocmVhZChjcHUpKVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yNDUtXHRcdHJldHVybjtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTI0Ny1cdC8qIENQVSBwb2ludHMgdG8gdGhlIGZpcnN0IHRocmVhZCBvZiB0aGUgY29yZSAqL1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyNDg6XHRjcHUgPSB2Y3B1LVx1MDAzZWNwdTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjQ5Olx0aWYgKGNwdSBcdTAwM2U9IDAgXHUwMDI2XHUwMDI2IGNwdSBcdTAwM2MgbnJfY3B1X2lkcyBcdTAwMjZcdTAwMjYgY3B1X29ubGluZShjcHUpKVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyNTA6XHRcdHNtcF9zZW5kX3Jlc2NoZWR1bGUoY3B1KTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjUxLX1cbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTI1My0vKlxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyNTQ6ICogV2UgdXNlIHRoZSB2Y3B1X2xvYWQvcHV0IGZ1bmN0aW9ucyB0byBtZWFzdXJlIHN0b2xlbiB0aW1lLlxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yNTUtICpcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjU2OiAqIFN0b2xlbiB0aW1lIGlzIGNvdW50ZWQgYXMgdGltZSB3aGVuIGVpdGhlciB0aGUgdmNwdSBpcyBhYmxlIHRvXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTI1Ny0gKiBydW4gYXMgcGFydCBvZiBhIHZpcnR1YWwgY29yZSwgYnV0IHRoZSB0YXNrIHJ1bm5pbmcgdGhlIHZjb3JlXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjI1ODogKiBpcyBwcmVlbXB0ZWQgb3Igc2xlZXBpbmcsIG9yIHdoZW4gdGhlIHZjcHUgbmVlZHMgc29tZXRoaW5nIGRvbmVcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjU5OiAqIGluIHRoZSBrZXJuZWwgYnkgdGhlIHRhc2sgcnVubmluZyB0aGUgdmNwdSwgYnV0IHRoYXQgdGFzayBpc1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yNjAtICogcHJlZW1wdGVkIG9yIHNsZWVwaW5nLiAgVGhvc2UgdHdvIHRoaW5ncyBoYXZlIHRvIGJlIGNvdW50ZWRcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjYxOiAqIHNlcGFyYXRlbHksIHNpbmNlIG9uZSBvZiB0aGUgdmNwdSB0YXNrcyB3aWxsIHRha2Ugb24gdGhlIGpvYlxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyNjI6ICogb2YgcnVubmluZyB0aGUgY29yZSwgYW5kIHRoZSBvdGhlciB2Y3B1IHRhc2tzIGluIHRoZSB2Y29yZSB3aWxsXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTI2My0gKiBzbGVlcCB3YWl0aW5nIGZvciBpdCB0byBkbyB0aGF0LCBidXQgdGhhdCBzbGVlcCBzaG91bGRuJiMzOTt0IGNvdW50XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yNjUtICpcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjY2OiAqIEhlbmNlIHdlIGFjY3VtdWxhdGUgc3RvbGVuIHRpbWUgd2hlbiB0aGUgdmNwdSBjYW4gcnVuIGFzIHBhcnQgb2ZcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjY3OiAqIGEgdmNvcmUgdXNpbmcgdmMtXHUwMDNlc3RvbGVuX3RiLCBhbmQgdGhlIHN0b2xlbiB0aW1lIHdoZW4gdGhlIHZjcHVcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjY4LSAqIG5lZWRzIGl0cyB0YXNrIHRvIGRvIG90aGVyIHRoaW5ncyBpbiB0aGUga2VybmVsIChmb3IgZXhhbXBsZSxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjY5LSAqIHNlcnZpY2UgYSBwYWdlIGZhdWx0KSBpbiBidXN5X3N0b2xlbi4gIFdlIGRvbiYjMzk7dCBhY2N1bXVsYXRlXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjI3MDogKiBzdG9sZW4gdGltZSBmb3IgYSB2Y29yZSB3aGVuIGl0IGlzIGluYWN0aXZlLCBvciBmb3IgYSB2Y3B1XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTI3MS0gKiB3aGVuIGl0IGlzIGluIHN0YXRlIFJVTk5JTkcgb3IgTk9UUkVBRFkuICBOT1RSRUFEWSBpcyBhIGJpdCBvZlxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyNzI6ICogYSBtaXNub21lcjsgaXQgbWVhbnMgdGhhdCB0aGUgdmNwdSB0YXNrIGlzIG5vdCBleGVjdXRpbmcgaW5cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjczLSAqIHRoZSBLVk1fVkNQVV9SVU4gaW9jdGwsIGkuZS4gaXQgaXMgaW4gdXNlcnNwYWNlIG9yIGVsc2V3aGVyZSBpblxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yNzQtICogdGhlIGtlcm5lbC4gIFdlIGRvbiYjMzk7dCBoYXZlIGFueSB3YXkgb2YgZGl2aWRpbmcgdXAgdGhhdCB0aW1lXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjI3NTogKiBiZXR3ZWVuIHRpbWUgdGhhdCB0aGUgdmNwdSBpcyBnZW51aW5lbHkgc3RvcHBlZCwgdGltZSB0aGF0XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjI3NjogKiB0aGUgdGFzayBpcyBhY3RpdmVseSB3b3JraW5nIG9uIGJlaGFsZiBvZiB0aGUgdmNwdSwgYW5kIHRpbWVcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjc3LSAqIHRoYXQgdGhlIHRhc2sgaXMgcHJlZW1wdGVkLCBzbyB3ZSBkb24mIzM5O3QgY291bnQgYW55IG9mIGl0IGFzXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yODUtICpcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6Mjg2OiAqIFRoZSBQT1dFUjkgcGF0aCBpcyBzaW1wbGVyLCBvbmUgdmNwdSBwZXIgdmlydHVhbCBjb3JlIHNvIHRoZVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyODc6ICogZm9ybWVyIGNhc2UgZG9lcyBub3QgZXhpc3QuIElmIGEgdmNwdSBpcyBwcmVlbXB0ZWQgd2hlbiBpdCBpc1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yODgtICogQlVTWV9JTl9IT1NUIGFuZCBub3QgY2VkZWQgb3Igb3RoZXJ3aXNlIGJsb2NrZWQsIHRoZW4gYWNjdW11bGF0ZVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM9MjkzPXN0YXRpYyB2b2lkIGt2bXBwY19jb3JlX3N0YXJ0X3N0b2xlbihzdHJ1Y3Qga3ZtcHBjX3Zjb3JlICp2YywgdTY0IHRiKVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjk2LVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyOTc6XHRXQVJOX09OX09OQ0UoY3B1X2hhc19mZWF0dXJlKENQVV9GVFJfQVJDSF8zMDApKTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjk4LVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM9MzA0PXN0YXRpYyB2b2lkIGt2bXBwY19jb3JlX2VuZF9zdG9sZW4oc3RydWN0IGt2bXBwY192Y29yZSAqdmMsIHU2NCB0Yilcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTMwNy1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MzA4Olx0V0FSTl9PTl9PTkNFKGNwdV9oYXNfZmVhdHVyZShDUFVfRlRSX0FSQ0hfMzAwKSk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTMwOS1cbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTMxNy1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MzE4OnN0YXRpYyB2b2lkIGt2bXBwY19jb3JlX3ZjcHVfbG9hZF9odihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGludCBjcHUpXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTMxOS17XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjMyMDpcdHN0cnVjdCBrdm1wcGNfdmNvcmUgKnZjID0gdmNwdS1cdTAwM2VhcmNoLnZjb3JlO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0zMjEtXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzIzLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzozMjQ6XHRpZiAoY3B1X2hhc19mZWF0dXJlKENQVV9GVFJfQVJDSF8zMDApKSB7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjMyNTpcdFx0aWYgKHZjcHUtXHUwMDNlYXJjaC5idXN5X3ByZWVtcHQgIT0gVEJfTklMKSB7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjMyNjpcdFx0XHRXQVJOX09OX09OQ0UodmNwdS1cdTAwM2VhcmNoLnN0YXRlICE9IEtWTVBQQ19WQ1BVX0JVU1lfSU5fSE9TVCk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjMyNzpcdFx0XHR2Yy1cdTAwM2VzdG9sZW5fdGIgJiM0Mzs9IG1mdGIoKSAtIHZjcHUtXHUwMDNlYXJjaC5idXN5X3ByZWVtcHQ7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjMyODpcdFx0XHR2Y3B1LVx1MDAzZWFyY2guYnVzeV9wcmVlbXB0ID0gVEJfTklMO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0zMjktXHRcdH1cbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTMzNy1cdCAqIGJlY2F1c2Ugb25seSB0aGlzIHRhc2sgZXZlciBzZXRzIHZjLVx1MDAzZXJ1bm5lciB0byB0aGlzXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjMzODpcdCAqIHZjcHUsIGFuZCBvbmNlIGl0IGlzIHNldCB0byB0aGlzIHZjcHUsIG9ubHkgdGhpcyB0YXNrXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTMzOS1cdCAqIGV2ZXIgc2V0cyBpdCB0byBOVUxMLlxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0zNDAtXHQgKi9cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MzQxOlx0aWYgKHZjLVx1MDAzZXJ1bm5lciA9PSB2Y3B1IFx1MDAyNlx1MDAyNiB2Yy1cdTAwM2V2Y29yZV9zdGF0ZSBcdTAwM2U9IFZDT1JFX1NMRUVQSU5HKVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0zNDItXHRcdGt2bXBwY19jb3JlX2VuZF9zdG9sZW4odmMsIG5vdyk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTM0My1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MzQ0Olx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2dmNwdS1cdTAwM2VhcmNoLnRiYWNjdF9sb2NrLCBmbGFncyk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjM0NTpcdGlmICh2Y3B1LVx1MDAzZWFyY2guc3RhdGUgPT0gS1ZNUFBDX1ZDUFVfQlVTWV9JTl9IT1NUIFx1MDAyNlx1MDAyNlxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzozNDY6XHQgICAgdmNwdS1cdTAwM2VhcmNoLmJ1c3lfcHJlZW1wdCAhPSBUQl9OSUwpIHtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MzQ3Olx0XHR2Y3B1LVx1MDAzZWFyY2guYnVzeV9zdG9sZW4gJiM0Mzs9IG5vdyAtIHZjcHUtXHUwMDNlYXJjaC5idXN5X3ByZWVtcHQ7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjM0ODpcdFx0dmNwdS1cdTAwM2VhcmNoLmJ1c3lfcHJlZW1wdCA9IFRCX05JTDtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzQ5LVx0fVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzozNTA6XHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNnZjcHUtXHUwMDNlYXJjaC50YmFjY3RfbG9jaywgZmxhZ3MpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0zNTEtfVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0zNTItXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjM1MzpzdGF0aWMgdm9pZCBrdm1wcGNfY29yZV92Y3B1X3B1dF9odihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTM1NC17XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjM1NTpcdHN0cnVjdCBrdm1wcGNfdmNvcmUgKnZjID0gdmNwdS1cdTAwM2VhcmNoLnZjb3JlO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0zNTYtXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzU4LVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzozNTk6XHRpZiAoY3B1X2hhc19mZWF0dXJlKENQVV9GVFJfQVJDSF8zMDApKSB7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTM2MC1cdFx0Lypcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTM2My1cdFx0ICovXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjM2NDpcdFx0V0FSTl9PTl9PTkNFKHZjcHUtXHUwMDNlYXJjaC5zdGF0ZSA9PSBLVk1QUENfVkNQVV9SVU5OQUJMRSk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTM2NS1cdFx0LypcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MzY2Olx0XHQgKiBBY2NvdW50IHN0b2xlbiB0aW1lIHdoZW4gcHJlZW1wdGVkIHdoaWxlIHRoZSB2Y3B1IHRhc2sgaXNcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzY3LVx0XHQgKiBydW5uaW5nIGluIHRoZSBrZXJuZWwgKGJ1dCBub3QgaW4gcWVtdSwgd2hpY2ggaXMgSU5BQ1RJVkUpLlxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzY5LVx0XHRpZiAodGFza19pc19ydW5uaW5nKGN1cnJlbnQpIFx1MDAyNlx1MDAyNlxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzozNzA6XHRcdFx0XHR2Y3B1LVx1MDAzZWFyY2guc3RhdGUgPT0gS1ZNUFBDX1ZDUFVfQlVTWV9JTl9IT1NUKVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzozNzE6XHRcdFx0dmNwdS1cdTAwM2VhcmNoLmJ1c3lfcHJlZW1wdCA9IG1mdGIoKTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzcyLVx0XHRyZXR1cm47XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0zNzYtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjM3NzpcdGlmICh2Yy1cdTAwM2VydW5uZXIgPT0gdmNwdSBcdTAwMjZcdTAwMjYgdmMtXHUwMDNldmNvcmVfc3RhdGUgXHUwMDNlPSBWQ09SRV9TTEVFUElORylcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzc4LVx0XHRrdm1wcGNfY29yZV9zdGFydF9zdG9sZW4odmMsIG5vdyk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTM3OS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MzgwOlx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2dmNwdS1cdTAwM2VhcmNoLnRiYWNjdF9sb2NrLCBmbGFncyk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjM4MTpcdGlmICh2Y3B1LVx1MDAzZWFyY2guc3RhdGUgPT0gS1ZNUFBDX1ZDUFVfQlVTWV9JTl9IT1NUKVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzozODI6XHRcdHZjcHUtXHUwMDNlYXJjaC5idXN5X3ByZWVtcHQgPSBub3c7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjM4MzpcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2dmNwdS1cdTAwM2VhcmNoLnRiYWNjdF9sb2NrLCBmbGFncyk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTM4NC19XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTM4NS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6Mzg2OnN0YXRpYyB2b2lkIGt2bXBwY19zZXRfcHZyX2h2KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTMyIHB2cilcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzg3LXtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6Mzg4Olx0dmNwdS1cdTAwM2VhcmNoLnB2ciA9IHB2cjtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzg5LX1cbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jPTM5ND1zdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgbWFwX3Bjcl90b19jYXAodW5zaWduZWQgbG9uZyBwY3IpXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00MDItXHRjYXNlIFBDUl9BUkNIXzMxOlxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo0MDM6XHRcdGlmIChjcHVfaGFzX2ZlYXR1cmUoQ1BVX0ZUUl9QMTFfUFZSKSlcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNDA0LVx0XHRcdGNhcCA9IEhfR1VFU1RfQ0FQX1BPV0VSMTE7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00MTQtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjQxNTpzdGF0aWMgaW50IGt2bXBwY19zZXRfYXJjaF9jb21wYXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgYXJjaF9jb21wYXQpXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQxNi17XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQxNy1cdHVuc2lnbmVkIGxvbmcgaG9zdF9wY3JfYml0ID0gMCwgZ3Vlc3RfcGNyX2JpdCA9IDAsIGNhcCA9IDA7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjQxODpcdHN0cnVjdCBrdm1wcGNfdmNvcmUgKnZjID0gdmNwdS1cdTAwM2VhcmNoLnZjb3JlO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00MTktXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQyMC1cdC8qIFdlIGNhbiAoZW11bGF0ZSkgb3VyIG93biBhcmNoaXRlY3R1cmUgdmVyc2lvbiBhbmQgYW55dGhpbmcgb2xkZXIgKi9cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NDIxOlx0aWYgKGNwdV9oYXNfZmVhdHVyZShDUFVfRlRSX1AxMV9QVlIpIHx8IGNwdV9oYXNfZmVhdHVyZShDUFVfRlRSX0FSQ0hfMzEpKVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00MjItXHRcdGhvc3RfcGNyX2JpdCA9IFBDUl9BUkNIXzMxO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo0MjM6XHRlbHNlIGlmIChjcHVfaGFzX2ZlYXR1cmUoQ1BVX0ZUUl9BUkNIXzMwMCkpXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQyNC1cdFx0aG9zdF9wY3JfYml0ID0gUENSX0FSQ0hfMzAwO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo0MjU6XHRlbHNlIGlmIChjcHVfaGFzX2ZlYXR1cmUoQ1BVX0ZUUl9BUkNIXzIwN1MpKVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00MjYtXHRcdGhvc3RfcGNyX2JpdCA9IFBDUl9BUkNIXzIwNztcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NDI3Olx0ZWxzZSBpZiAoY3B1X2hhc19mZWF0dXJlKENQVV9GVFJfQVJDSF8yMDYpKVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00MjgtXHRcdGhvc3RfcGNyX2JpdCA9IFBDUl9BUkNIXzIwNjtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQ3NC1cdHZjLVx1MDAzZWFyY2hfY29tcGF0ID0gYXJjaF9jb21wYXQ7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjQ3NTpcdGt2bWh2X25lc3RlZHYyX21hcmtfZGlydHkodmNwdSwgS1ZNUFBDX0dTSURfTE9HSUNBTF9QVlIpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00NzYtXHQvKlxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNDg1LVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo0ODY6c3RhdGljIHZvaWQga3ZtcHBjX2R1bXBfcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQ4Ny17XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00ODktXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjQ5MDpcdHByX2VycihcJiMzNDt2Y3B1ICVwICglZCk6XFxuXCYjMzQ7LCB2Y3B1LCB2Y3B1LVx1MDAzZXZjcHVfaWQpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00OTEtXHRwcl9lcnIoXCYjMzQ7cGMgID0gJS4xNmx4ICBtc3IgPSAlLjE2bGx4ICB0cmFwID0gJXhcXG5cJiMzNDssXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjQ5MjpcdCAgICAgICB2Y3B1LVx1MDAzZWFyY2gucmVncy5uaXAsIHZjcHUtXHUwMDNlYXJjaC5zaHJlZ3MubXNyLCB2Y3B1LVx1MDAzZWFyY2gudHJhcCk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQ5My1cdGZvciAociA9IDA7IHIgXHUwMDNjIDE2OyAmIzQzOyYjNDM7cilcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNDk0LVx0XHRwcl9lcnIoXCYjMzQ7ciUyZCA9ICUuMTZseCAgciVkID0gJS4xNmx4XFxuXCYjMzQ7LFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo0OTU6XHRcdCAgICAgICByLCBrdm1wcGNfZ2V0X2dwcih2Y3B1LCByKSxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NDk2Olx0XHQgICAgICAgciYjNDM7MTYsIGt2bXBwY19nZXRfZ3ByKHZjcHUsIHImIzQzOzE2KSk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQ5Ny1cdHByX2VycihcJiMzNDtjdHIgPSAlLjE2bHggIGxyICA9ICUuMTZseFxcblwmIzM0OyxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NDk4Olx0ICAgICAgIHZjcHUtXHUwMDNlYXJjaC5yZWdzLmN0ciwgdmNwdS1cdTAwM2VhcmNoLnJlZ3MubGluayk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQ5OS1cdHByX2VycihcJiMzNDtzcnIwID0gJS4xNmxseCBzcnIxID0gJS4xNmxseFxcblwmIzM0OyxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NTAwOlx0ICAgICAgIHZjcHUtXHUwMDNlYXJjaC5zaHJlZ3Muc3JyMCwgdmNwdS1cdTAwM2VhcmNoLnNocmVncy5zcnIxKTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTAxLVx0cHJfZXJyKFwmIzM0O3NwcmcwID0gJS4xNmxseCBzcHJnMSA9ICUuMTZsbHhcXG5cJiMzNDssXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjUwMjpcdCAgICAgICB2Y3B1LVx1MDAzZWFyY2guc2hyZWdzLnNwcmcwLCB2Y3B1LVx1MDAzZWFyY2guc2hyZWdzLnNwcmcxKTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTAzLVx0cHJfZXJyKFwmIzM0O3NwcmcyID0gJS4xNmxseCBzcHJnMyA9ICUuMTZsbHhcXG5cJiMzNDssXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjUwNDpcdCAgICAgICB2Y3B1LVx1MDAzZWFyY2guc2hyZWdzLnNwcmcyLCB2Y3B1LVx1MDAzZWFyY2guc2hyZWdzLnNwcmczKTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTA1LVx0cHJfZXJyKFwmIzM0O2NyID0gJS44bHggIHhlciA9ICUuMTZseCAgZHNpc3IgPSAlLjh4XFxuXCYjMzQ7LFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1MDY6XHQgICAgICAgdmNwdS1cdTAwM2VhcmNoLnJlZ3MuY2NyLCB2Y3B1LVx1MDAzZWFyY2gucmVncy54ZXIsIHZjcHUtXHUwMDNlYXJjaC5zaHJlZ3MuZHNpc3IpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1MDc6XHRwcl9lcnIoXCYjMzQ7ZGFyID0gJS4xNmxseFxcblwmIzM0OywgdmNwdS1cdTAwM2VhcmNoLnNocmVncy5kYXIpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01MDgtXHRwcl9lcnIoXCYjMzQ7ZmF1bHQgZGFyID0gJS4xNmx4IGRzaXNyID0gJS44eFxcblwmIzM0OyxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NTA5Olx0ICAgICAgIHZjcHUtXHUwMDNlYXJjaC5mYXVsdF9kYXIsIHZjcHUtXHUwMDNlYXJjaC5mYXVsdF9kc2lzcik7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjUxMDpcdHByX2VycihcJiMzNDtTTEIgKCVkIGVudHJpZXMpOlxcblwmIzM0OywgdmNwdS1cdTAwM2VhcmNoLnNsYl9tYXgpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1MTE6XHRmb3IgKHIgPSAwOyByIFx1MDAzYyB2Y3B1LVx1MDAzZWFyY2guc2xiX21heDsgJiM0MzsmIzQzO3IpXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTUxMi1cdFx0cHJfZXJyKFwmIzM0OyAgRVNJRCA9ICUuMTZsbHggVlNJRCA9ICUuMTZsbHhcXG5cJiMzNDssXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjUxMzpcdFx0ICAgICAgIHZjcHUtXHUwMDNlYXJjaC5zbGJbcl0ub3JpZ2UsIHZjcHUtXHUwMDNlYXJjaC5zbGJbcl0ub3JpZ3YpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01MTQtXHRwcl9lcnIoXCYjMzQ7bHBjciA9ICUuMTZseCBzZHIxID0gJS4xNmx4IGxhc3RfaW5zdCA9ICUuMTZseFxcblwmIzM0OyxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NTE1Olx0ICAgICAgIHZjcHUtXHUwMDNlYXJjaC52Y29yZS1cdTAwM2VscGNyLCB2Y3B1LVx1MDAzZWt2bS1cdTAwM2VhcmNoLnNkcjEsXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjUxNjpcdCAgICAgICB2Y3B1LVx1MDAzZWFyY2gubGFzdF9pbnN0KTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTE3LX1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTE4LVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1MTk6c3RhdGljIHN0cnVjdCBrdm1fdmNwdSAqa3ZtcHBjX2ZpbmRfdmNwdShzdHJ1Y3Qga3ZtICprdm0sIGludCBpZClcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTIwLXtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NTIxOlx0cmV0dXJuIGt2bV9nZXRfdmNwdV9ieV9pZChrdm0sIGlkKTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTIyLX1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTIzLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1MjQ6c3RhdGljIHZvaWQgaW5pdF92cGEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3QgbHBwYWNhICp2cGEpXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTUyNS17XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTUyNi1cdHZwYS1cdTAwM2VfX29sZF9zdGF0dXMgfD0gTFBQQUNBX09MRF9TSEFSRURfUFJPQztcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NTI3Olx0dnBhLVx1MDAzZXlpZWxkX2NvdW50ID0gY3B1X3RvX2JlMzIoMSk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTUyOC19XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTUyOS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NTMwOnN0YXRpYyBpbnQgc2V0X3ZwYShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1wcGNfdnBhICp2LFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01MzEtXHRcdCAgIHVuc2lnbmVkIGxvbmcgYWRkciwgdW5zaWduZWQgbG9uZyBsZW4pXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01MzUtXHRcdHJldHVybiAtRUlOVkFMO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1MzY6XHRzcGluX2xvY2soXHUwMDI2dmNwdS1cdTAwM2VhcmNoLnZwYV91cGRhdGVfbG9jayk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTUzNy1cdGlmICh2LVx1MDAzZW5leHRfZ3BhICE9IGFkZHIgfHwgdi1cdTAwM2VsZW4gIT0gbGVuKSB7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01NDEtXHR9XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjU0MjpcdHNwaW5fdW5sb2NrKFx1MDAyNnZjcHUtXHUwMDNlYXJjaC52cGFfdXBkYXRlX2xvY2spO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01NDMtXHRyZXR1cm4gMDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jPTU1NT1zdGF0aWMgaW50IHZwYV9pc19yZWdpc3RlcmVkKHN0cnVjdCBrdm1wcGNfdnBhICp2cGFwKVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTYxLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1NjI6c3RhdGljIHVuc2lnbmVkIGxvbmcgZG9faF9yZWdpc3Rlcl92cGEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01NjMtXHRcdFx0XHQgICAgICAgdW5zaWduZWQgbG9uZyBmbGFncyxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NTY0Olx0XHRcdFx0ICAgICAgIHVuc2lnbmVkIGxvbmcgdmNwdWlkLCB1bnNpZ25lZCBsb25nIHZwYSlcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTY1LXtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NTY2Olx0c3RydWN0IGt2bSAqa3ZtID0gdmNwdS1cdTAwM2Vrdm07XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTU2Ny1cdHVuc2lnbmVkIGxvbmcgbGVuLCBuYjtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTY4LVx0dm9pZCAqdmE7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjU2OTpcdHN0cnVjdCBrdm1fdmNwdSAqdHZjcHU7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTU3MC1cdGludCBlcnI7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01NzMtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjU3NDpcdHR2Y3B1ID0ga3ZtcHBjX2ZpbmRfdmNwdShrdm0sIHZjcHVpZCk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjU3NTpcdGlmICghdHZjcHUpXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTU3Ni1cdFx0cmV0dXJuIEhfUEFSQU1FVEVSO1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTg5LVx0XHRpZiAoc3ViZnVuYyA9PSBIX1ZQQV9SRUdfVlBBKVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1OTA6XHRcdFx0bGVuID0gYmUxNl90b19jcHUoKChzdHJ1Y3QgcmVnX3ZwYSAqKXZhKS1cdTAwM2VsZW5ndGguaHdvcmQpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01OTEtXHRcdGVsc2VcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NTkyOlx0XHRcdGxlbiA9IGJlMzJfdG9fY3B1KCgoc3RydWN0IHJlZ192cGEgKil2YSktXHUwMDNlbGVuZ3RoLndvcmQpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01OTMtXHRcdGt2bXBwY191bnBpbl9ndWVzdF9wYWdlKGt2bSwgdmEsIHZwYSwgZmFsc2UpO1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjA0LVx0dnBhcCA9IE5VTEw7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjYwNTpcdHNwaW5fbG9jayhcdTAwMjZ0dmNwdS1cdTAwM2VhcmNoLnZwYV91cGRhdGVfbG9jayk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTYwNi1cbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTYxNy1cdFx0XHRicmVhaztcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NjE4Olx0XHR2cGFwID0gXHUwMDI2dHZjcHUtXHUwMDNlYXJjaC52cGE7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTYxOS1cdFx0ZXJyID0gMDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTYyOC1cdFx0ZXJyID0gSF9SRVNPVVJDRTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NjI5Olx0XHRpZiAoIXZwYV9pc19yZWdpc3RlcmVkKFx1MDAyNnR2Y3B1LVx1MDAzZWFyY2gudnBhKSlcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjMwLVx0XHRcdGJyZWFrO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy02MzEtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjYzMjpcdFx0dnBhcCA9IFx1MDAyNnR2Y3B1LVx1MDAzZWFyY2guZHRsO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy02MzMtXHRcdGVyciA9IDA7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy02MzgtXHRcdGVyciA9IEhfUkVTT1VSQ0U7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjYzOTpcdFx0aWYgKCF2cGFfaXNfcmVnaXN0ZXJlZChcdTAwMjZ0dmNwdS1cdTAwM2VhcmNoLnZwYSkpXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTY0MC1cdFx0XHRicmVhaztcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjQxLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo2NDI6XHRcdHZwYXAgPSBcdTAwMjZ0dmNwdS1cdTAwM2VhcmNoLnNsYl9zaGFkb3c7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTY0My1cdFx0ZXJyID0gMDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTY0OC1cdFx0ZXJyID0gSF9SRVNPVVJDRTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NjQ5Olx0XHRpZiAodnBhX2lzX3JlZ2lzdGVyZWQoXHUwMDI2dHZjcHUtXHUwMDNlYXJjaC5kdGwpIHx8XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjY1MDpcdFx0ICAgIHZwYV9pc19yZWdpc3RlcmVkKFx1MDAyNnR2Y3B1LVx1MDAzZWFyY2guc2xiX3NoYWRvdykpXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTY1MS1cdFx0XHRicmVhaztcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjUyLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo2NTM6XHRcdHZwYXAgPSBcdTAwMjZ0dmNwdS1cdTAwM2VhcmNoLnZwYTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjU0LVx0XHRlcnIgPSAwO1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjU3LVx0Y2FzZSBIX1ZQQV9ERVJFR19EVEw6XHRcdC8qIGRlcmVnaXN0ZXIgRFRMICovXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjY1ODpcdFx0dnBhcCA9IFx1MDAyNnR2Y3B1LVx1MDAzZWFyY2guZHRsO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy02NTktXHRcdGVyciA9IDA7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy02NjItXHRjYXNlIEhfVlBBX0RFUkVHX1NMQjpcdFx0LyogZGVyZWdpc3RlciBTTEIgc2hhZG93IGJ1ZmZlciAqL1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo2NjM6XHRcdHZwYXAgPSBcdTAwMjZ0dmNwdS1cdTAwM2VhcmNoLnNsYl9zaGFkb3c7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTY2NC1cdFx0ZXJyID0gMDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTY3My1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6Njc0Olx0c3Bpbl91bmxvY2soXHUwMDI2dHZjcHUtXHUwMDNlYXJjaC52cGFfdXBkYXRlX2xvY2spO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy02NzUtXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy02NzgtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjY3OTpzdGF0aWMgdm9pZCBrdm1wcGNfdXBkYXRlX3ZwYShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1wcGNfdnBhICp2cGFwLFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy02ODAtXHRcdFx0ICAgICAgIHN0cnVjdCBrdm1wcGNfdnBhICpvbGRfdnBhcClcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjgxLXtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NjgyOlx0c3RydWN0IGt2bSAqa3ZtID0gdmNwdS1cdTAwM2Vrdm07XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTY4My1cdHZvaWQgKnZhO1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjk2LVx0XHRncGEgPSB2cGFwLVx1MDAzZW5leHRfZ3BhO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo2OTc6XHRcdHNwaW5fdW5sb2NrKFx1MDAyNnZjcHUtXHUwMDNlYXJjaC52cGFfdXBkYXRlX2xvY2spO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy02OTgtXHRcdHZhID0gTlVMTDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTcwMS1cdFx0XHR2YSA9IGt2bXBwY19waW5fZ3Vlc3RfcGFnZShrdm0sIGdwYSwgXHUwMDI2bmIpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo3MDI6XHRcdHNwaW5fbG9jayhcdTAwMjZ2Y3B1LVx1MDAzZWFyY2gudnBhX3VwZGF0ZV9sb2NrKTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNzAzLVx0XHRpZiAoZ3BhID09IHZwYXAtXHUwMDNlbmV4dF9ncGEpXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03MjgtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjcyOTpzdGF0aWMgdm9pZCBrdm1wcGNfdXBkYXRlX3ZwYXMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03MzAte1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo3MzE6XHRzdHJ1Y3Qga3ZtICprdm0gPSB2Y3B1LVx1MDAzZWt2bTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNzMyLVx0c3RydWN0IGt2bXBwY192cGEgb2xkX3ZwYSA9IHsgMCB9O1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03MzMtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjczNDpcdGlmICghKHZjcHUtXHUwMDNlYXJjaC52cGEudXBkYXRlX3BlbmRpbmcgfHxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NzM1Olx0ICAgICAgdmNwdS1cdTAwM2VhcmNoLnNsYl9zaGFkb3cudXBkYXRlX3BlbmRpbmcgfHxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NzM2Olx0ICAgICAgdmNwdS1cdTAwM2VhcmNoLmR0bC51cGRhdGVfcGVuZGluZykpXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTczNy1cdFx0cmV0dXJuO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03MzgtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjczOTpcdHNwaW5fbG9jayhcdTAwMjZ2Y3B1LVx1MDAzZWFyY2gudnBhX3VwZGF0ZV9sb2NrKTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NzQwOlx0aWYgKHZjcHUtXHUwMDNlYXJjaC52cGEudXBkYXRlX3BlbmRpbmcpIHtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NzQxOlx0XHRrdm1wcGNfdXBkYXRlX3ZwYSh2Y3B1LCBcdTAwMjZ2Y3B1LVx1MDAzZWFyY2gudnBhLCBcdTAwMjZvbGRfdnBhKTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNzQyLVx0XHRpZiAob2xkX3ZwYS5waW5uZWRfYWRkcikge1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03NDMtXHRcdFx0aWYgKGt2bWh2X2lzX25lc3RlZHYyKCkpXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjc0NDpcdFx0XHRcdGt2bWh2X25lc3RlZHYyX3NldF92cGEodmNwdSwgfjB1bGwpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03NDUtXHRcdFx0a3ZtcHBjX3VucGluX2d1ZXN0X3BhZ2Uoa3ZtLCBvbGRfdnBhLnBpbm5lZF9hZGRyLCBvbGRfdnBhLmdwYSxcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTc0Ny1cdFx0fVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo3NDg6XHRcdGlmICh2Y3B1LVx1MDAzZWFyY2gudnBhLnBpbm5lZF9hZGRyKSB7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjc0OTpcdFx0XHRpbml0X3ZwYSh2Y3B1LCB2Y3B1LVx1MDAzZWFyY2gudnBhLnBpbm5lZF9hZGRyKTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNzUwLVx0XHRcdGlmIChrdm1odl9pc19uZXN0ZWR2MigpKVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo3NTE6XHRcdFx0XHRrdm1odl9uZXN0ZWR2Ml9zZXRfdnBhKHZjcHUsIF9fcGEodmNwdS1cdTAwM2VhcmNoLnZwYS5waW5uZWRfYWRkcikpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03NTItXHRcdH1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNzUzLVx0fVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo3NTQ6XHRpZiAodmNwdS1cdTAwM2VhcmNoLmR0bC51cGRhdGVfcGVuZGluZykge1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo3NTU6XHRcdGt2bXBwY191cGRhdGVfdnBhKHZjcHUsIFx1MDAyNnZjcHUtXHUwMDNlYXJjaC5kdGwsIFx1MDAyNm9sZF92cGEpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03NTYtXHRcdGlmIChvbGRfdnBhLnBpbm5lZF9hZGRyKVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNzU4LVx0XHRcdFx0XHRcdG9sZF92cGEuZGlydHkpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo3NTk6XHRcdHZjcHUtXHUwMDNlYXJjaC5kdGxfcHRyID0gdmNwdS1cdTAwM2VhcmNoLmR0bC5waW5uZWRfYWRkcjtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NzYwOlx0XHR2Y3B1LVx1MDAzZWFyY2guZHRsX2luZGV4ID0gMDtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNzYxLVx0fVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo3NjI6XHRpZiAodmNwdS1cdTAwM2VhcmNoLnNsYl9zaGFkb3cudXBkYXRlX3BlbmRpbmcpIHtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NzYzOlx0XHRrdm1wcGNfdXBkYXRlX3ZwYSh2Y3B1LCBcdTAwMjZ2Y3B1LVx1MDAzZWFyY2guc2xiX3NoYWRvdywgXHUwMDI2b2xkX3ZwYSk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTc2NC1cdFx0aWYgKG9sZF92cGEucGlubmVkX2FkZHIpXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03NjgtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjc2OTpcdHNwaW5fdW5sb2NrKFx1MDAyNnZjcHUtXHUwMDNlYXJjaC52cGFfdXBkYXRlX2xvY2spO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03NzAtfVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM9Nzc2PXN0YXRpYyB1NjQgdmNvcmVfc3RvbGVuX3RpbWUoc3RydWN0IGt2bXBwY192Y29yZSAqdmMsIHU2NCBub3cpXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03ODAtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjc4MTpcdFdBUk5fT05fT05DRShjcHVfaGFzX2ZlYXR1cmUoQ1BVX0ZUUl9BUkNIXzMwMCkpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03ODItXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03OTEtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjc5MjpzdGF0aWMgdm9pZCBfX2t2bXBwY19jcmVhdGVfZHRsX2VudHJ5KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNzkzLVx0XHRcdFx0XHRzdHJ1Y3QgbHBwYWNhICp2cGEsXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjc5NDpcdFx0XHRcdFx0dW5zaWduZWQgaW50IHBjcHUsIHU2NCBub3csXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTc5NS1cdFx0XHRcdFx0dW5zaWduZWQgbG9uZyBzdG9sZW4pXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03OTgtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjc5OTpcdGR0ID0gdmNwdS1cdTAwM2VhcmNoLmR0bF9wdHI7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTgwMC1cbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTgwNS1cdGR0LVx1MDAzZXByZWVtcHRfcmVhc29uID0gMDtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODA2Olx0ZHQtXHUwMDNlcHJvY2Vzc29yX2lkID0gY3B1X3RvX2JlMTYocGNwdSAmIzQzOyB2Y3B1LVx1MDAzZWFyY2gucHRpZCk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjgwNzpcdGR0LVx1MDAzZWVucXVldWVfdG9fZGlzcGF0Y2hfdGltZSA9IGNwdV90b19iZTMyKHN0b2xlbik7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTgwOC1cdGR0LVx1MDAzZXJlYWR5X3RvX2VucXVldWVfdGltZSA9IDA7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTgwOS1cdGR0LVx1MDAzZXdhaXRpbmdfdG9fcmVhZHlfdGltZSA9IDA7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjgxMDpcdGR0LVx1MDAzZXRpbWViYXNlID0gY3B1X3RvX2JlNjQobm93KTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODExLVx0ZHQtXHUwMDNlZmF1bHRfYWRkciA9IDA7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjgxMjpcdGR0LVx1MDAzZXNycjAgPSBjcHVfdG9fYmU2NChrdm1wcGNfZ2V0X3BjKHZjcHUpKTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODEzOlx0ZHQtXHUwMDNlc3JyMSA9IGNwdV90b19iZTY0KHZjcHUtXHUwMDNlYXJjaC5zaHJlZ3MubXNyKTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODE0LVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04MTUtXHQmIzQzOyYjNDM7ZHQ7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjgxNjpcdGlmIChkdCA9PSB2Y3B1LVx1MDAzZWFyY2guZHRsLnBpbm5lZF9lbmQpXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjgxNzpcdFx0ZHQgPSB2Y3B1LVx1MDAzZWFyY2guZHRsLnBpbm5lZF9hZGRyO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4MTg6XHR2Y3B1LVx1MDAzZWFyY2guZHRsX3B0ciA9IGR0O1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04MTktXHQvKiBvcmRlciB3cml0aW5nICpkdCB2cy4gd3JpdGluZyB2cGEtXHUwMDNlZHRsX2lkeCAqL1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04MjAtXHRzbXBfd21iKCk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjgyMTpcdHZwYS1cdTAwM2VkdGxfaWR4ID0gY3B1X3RvX2JlNjQoJiM0MzsmIzQzO3ZjcHUtXHUwMDNlYXJjaC5kdGxfaW5kZXgpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04MjItXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjgyMzpcdC8qIHZjcHUtXHUwMDNlYXJjaC5kdGwuZGlydHkgaXMgc2V0IGJ5IHRoZSBjYWxsZXIgKi9cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODI0LX1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODI1LVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4MjY6c3RhdGljIHZvaWQga3ZtcHBjX3VwZGF0ZV92cGFfZGlzcGF0Y2goc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04MjctXHRcdFx0XHQgICAgICAgc3RydWN0IGt2bXBwY192Y29yZSAqdmMpXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04MzQtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjgzNTpcdHZwYSA9IHZjcHUtXHUwMDNlYXJjaC52cGEucGlubmVkX2FkZHI7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTgzNi1cdGlmICghdnBhKVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODQxLVx0Y29yZV9zdG9sZW4gPSB2Y29yZV9zdG9sZW5fdGltZSh2Yywgbm93KTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODQyOlx0c3RvbGVuID0gY29yZV9zdG9sZW4gLSB2Y3B1LVx1MDAzZWFyY2guc3RvbGVuX2xvZ2dlZDtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODQzOlx0dmNwdS1cdTAwM2VhcmNoLnN0b2xlbl9sb2dnZWQgPSBjb3JlX3N0b2xlbjtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODQ0Olx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2dmNwdS1cdTAwM2VhcmNoLnRiYWNjdF9sb2NrLCBmbGFncyk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjg0NTpcdHN0b2xlbiAmIzQzOz0gdmNwdS1cdTAwM2VhcmNoLmJ1c3lfc3RvbGVuO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4NDY6XHR2Y3B1LVx1MDAzZWFyY2guYnVzeV9zdG9sZW4gPSAwO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4NDc6XHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNnZjcHUtXHUwMDNlYXJjaC50YmFjY3RfbG9jaywgZmxhZ3MpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04NDgtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjg0OTpcdHZwYS1cdTAwM2VlbnF1ZXVlX2Rpc3BhdGNoX3RiID0gY3B1X3RvX2JlNjQoYmU2NF90b19jcHUodnBhLVx1MDAzZWVucXVldWVfZGlzcGF0Y2hfdGIpICYjNDM7IHN0b2xlbik7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTg1MC1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODUxOlx0X19rdm1wcGNfY3JlYXRlX2R0bF9lbnRyeSh2Y3B1LCB2cGEsIHZjLVx1MDAzZXBjcHUsIG5vdyAmIzQzOyBrdm1wcGNfZ2V0X3RiX29mZnNldCh2Y3B1KSwgc3RvbGVuKTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODUyLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4NTM6XHR2Y3B1LVx1MDAzZWFyY2gudnBhLmRpcnR5ID0gdHJ1ZTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODU0LX1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODU1LVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4NTY6c3RhdGljIHZvaWQga3ZtcHBjX3VwZGF0ZV92cGFfZGlzcGF0Y2hfcDkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04NTctXHRcdFx0XHQgICAgICAgc3RydWN0IGt2bXBwY192Y29yZSAqdmMsXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04NjMtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjg2NDpcdHZwYSA9IHZjcHUtXHUwMDNlYXJjaC52cGEucGlubmVkX2FkZHI7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTg2NS1cdGlmICghdnBhKVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODY4LVx0c3RvbGVuID0gdmMtXHUwMDNlc3RvbGVuX3RiO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4Njk6XHRzdG9sZW5fZGVsdGEgPSBzdG9sZW4gLSB2Y3B1LVx1MDAzZWFyY2guc3RvbGVuX2xvZ2dlZDtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODcwOlx0dmNwdS1cdTAwM2VhcmNoLnN0b2xlbl9sb2dnZWQgPSBzdG9sZW47XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTg3MS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODcyOlx0dnBhLVx1MDAzZWVucXVldWVfZGlzcGF0Y2hfdGIgPSBjcHVfdG9fYmU2NChzdG9sZW4pO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04NzMtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjg3NDpcdF9fa3ZtcHBjX2NyZWF0ZV9kdGxfZW50cnkodmNwdSwgdnBhLCB2Yy1cdTAwM2VwY3B1LCBub3csIHN0b2xlbl9kZWx0YSk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTg3NS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODc2Olx0dmNwdS1cdTAwM2VhcmNoLnZwYS5kaXJ0eSA9IHRydWU7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTg3Ny19XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTg3OC1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODc5Oi8qIFNlZSBpZiB0aGVyZSBpcyBhIGRvb3JiZWxsIGludGVycnVwdCBwZW5kaW5nIGZvciBhIHZjcHUgKi9cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODgwOnN0YXRpYyBib29sIGt2bXBwY19kb29yYmVsbF9wZW5kaW5nKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODgxLXtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTg4NC1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODg1Olx0aWYgKHZjcHUtXHUwMDNlYXJjaC5kb29yYmVsbF9yZXF1ZXN0KVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04ODYtXHRcdHJldHVybiB0cnVlO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4ODc6XHRpZiAoY3B1X2hhc19mZWF0dXJlKENQVV9GVFJfQVJDSF8zMDApKVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04ODgtXHRcdHJldHVybiBmYWxzZTtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTg5MC1cdCAqIEVuc3VyZSB0aGF0IHRoZSByZWFkIG9mIHZjb3JlLVx1MDAzZWRwZGVzIGNvbWVzIGFmdGVyIHRoZSByZWFkXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjg5MTpcdCAqIG9mIHZjcHUtXHUwMDNlZG9vcmJlbGxfcmVxdWVzdC4gIFRoaXMgYmFycmllciBtYXRjaGVzIHRoZVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04OTItXHQgKiBzbXBfd21iKCkgaW4ga3ZtcHBjX2d1ZXN0X2VudHJ5X2luamVjdCgpLlxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODk0LVx0c21wX3JtYigpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4OTU6XHR2YyA9IHZjcHUtXHUwMDNlYXJjaC52Y29yZTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODk2Olx0dGhyID0gdmNwdS1cdTAwM2V2Y3B1X2lkIC0gdmMtXHUwMDNlZmlyc3RfdmNwdWlkO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04OTctXHRyZXR1cm4gISEodmMtXHUwMDNlZHBkZXMgXHUwMDI2ICgxIFx1MDAzY1x1MDAzYyB0aHIpKTtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTg5OS1cblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA0OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwODY3CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogNTA3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRlYnVnZ2luZyBhIFR5cG9zcXVhdHRpbmcgQnVnIGluIE5lc3RlZCBWaXJ0dWFsaXphdGlvbiBDb2RlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgaW4gYGt2bWh2X3ZjcHVfZW50cnlfbmVzdGVkdjJgIGFuZCBpbW1lZGlhdGVseSBJIHNlZSBhIHJlZCBmbGFnLiBUaGUgY29tcGlsZXImIzM5O3MgY29tcGxhaW5pbmcgdGhhdCBgY3B1YCBpcyB1bmRlZmluZWQuIExldCYjMzk7cyB0cmFjZSBpdCBiYWNrIHRvIHRoZSBwYXRjaCBpbiBxdWVzdGlvbi4gQWgsIGhlcmUgaXQgaXM6CgpgYGBjCiYjNDM7CS8qIENoZWNrIGlmIHByaXZpbGVnZWQgZG9vciBiZWxsIHdhcyByZXF1ZXN0ZWQgYW5kIGhhbmRsZWQgKi8KJiM0MzsJaWYgKHZjcHUtJmd0O2FyY2gudmNvcmUtJmd0O2RwZGVzKSB7CiYjNDM7CQlrdm1odl9uZXN0ZWR2Ml9jYWNoZWRfcmVsb2FkKHZjcHUsIEtWTVBQQ19HU0lEX0RQREVTKTsKJiM0MzsJCWlmICh2Y3B1LSZndDthcmNoLnZjb3JlLSZndDtkcGRlcykKJiM0MzsJCQl2Y3B1LSZndDthcmNoLmRvb3JiZWxsX3JlcXVlc3QgfD0gdmNwdS0mZ3Q7YXJjaC52Y29yZS0mZ3Q7ZHBkZXM7CiYjNDM7CQllbHNlCiYjNDM7CQkJY3B1LSZndDthcmNoLmRvb3JiZWxsX3JlcXVlc3QgPSAwOwomIzQzOwl9IGVsc2UgewomIzQzOwkJdmNwdS0mZ3Q7YXJjaC5kb29yYmVsbF9yZXF1ZXN0ID0gMDsKJiM0MzsJfQpgYGAKClllcCwgdGhhdCYjMzk7cyBkZWZpbml0ZWx5IGEgdHlwby4gSXQgKnNob3VsZCogYmUgYHZjcHUtJmd0O2FyY2guZG9vcmJlbGxfcmVxdWVzdCA9IDA7YCBub3QgYGNwdS0mZ3Q7YXJjaC5kb29yYmVsbF9yZXF1ZXN0ID0gMDtgLiBJIGNhbiBpbW1lZGlhdGVseSB0ZWxsIHRoYXQmIzM5O3MgYW4gZXJyb3IuIFRoZSB2YXJpYWJsZSBgY3B1YCBpc24mIzM5O3QgZGVjbGFyZWQgd2l0aGluIHRoZSBzY29wZSBvZiBga3ZtaHZfdmNwdV9lbnRyeV9uZXN0ZWR2MmAuIExldCBtZSBxdWlja2x5IGNvbmZpcm0gYnkgY2hlY2tpbmcgdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24uCgpgYGBjCjQyNDk6CXN0YXRpYyBpbnQga3ZtaHZfdmNwdV9lbnRyeV9uZXN0ZWR2MihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCB0aW1lX2xpbWl0LAo0MjUwOgkJCQkJICAgICB1bnNpZ25lZCBsb25nIGxwY3IsIHU2NCAqdGIpCjQyNTE6CXsKNDI1MjoJCXN0cnVjdCBrdm1odl9uZXN0ZWR2Ml9pbyAqaW87CjQyNTM6CQl1bnNpZ25lZCBsb25nIG1zciwgaTsKNDI1NDoJCWludCB0cmFwOwo0MjU1OgkJbG9uZyByYzsKYGBgCgpOb3BlLCBkZWZpbml0ZWx5IG5vIGBjcHVgIHZhcmlhYmxlIGRlY2xhcmVkIHRoZXJlLiBUaGUgY29tcGlsZXIgc2hvdWxkIGJlIHRocm93aW5nIGEgZml0LiBOb3csIHRoZSBxdWVzdGlvbiBpcywgaWYgaXQmIzM5O3MgYnJva2VuIGFuZCB3b24mIzM5O3QgY29tcGlsZSwgZG9lcyBpdCBldmVuICptYWtlIHNlbnNlKiB0byBmdXp6IHRoaXM/IFdlbGwsIHRoZSBwcm9tcHQgc2F5cyB0aGUgY2hhbmdlcyBoYXZlIGFscmVhZHkgYmVlbiBhcHBsaWVkLCBtZWFuaW5nIHRoZSBjb2RlIG11c3QgaGF2ZSAqc29tZWhvdyogY29tcGlsZWQuCgpMZXQgbWUgdGhpbmsgZm9yIGEgc2Vjb25kLi4uIGNvdWxkIGBjcHVgIGJlIGEgbWFjcm8/IFRoYXQmIzM5O3MgdGhlIG9ubHkgd2F5IEkgY2FuIHNlZSB0aGlzIGFjdHVhbGx5IHdvcmtpbmcuIFNvLCBJIG5lZWQgdG8gY2hlY2sgaWYgYGNwdWAgaXMgZGVmaW5lZCBhcyBhIG1hY3JvIGluIHRoaXMgY29udGV4dC4gSWYgaXQmIzM5O3Mgbm90IGEgbWFjcm8sIHRoZW4gaXQgaXMgYSBkZWFkIGVuZC4gV2UgbmVlZCB0byBhc3Nlc3MgaWYgdGhpcyBtYWtlcyB0aGUgY29tbWl0IHVzZWxlc3MgZm9yIGEgZnV6emluZyB0ZXN0LiBJdCYjMzk7cyBhIHRyaXZpYWwgZXJyb3IgaW4gdGhlIGNhc2UgdGhhdCBpdCBkb2VzIG5vdCBjb21waWxlIGFzIGlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNDo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDsjZGVmaW5lIGNwdSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvcG93ZXJwYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9wb3dlcnBjL2Jvb3QvbGliZmR0X2Vudi5oPTE4PXR5cGVkZWYgX19iZTY0IGZkdDY0X3Q7XG4tLVxuYXJjaC9wb3dlcnBjL2Jvb3QvbGliZmR0X2Vudi5oLTIwLSNkZWZpbmUgZmR0MTZfdG9fY3B1KHgpXHRcdGJlMTZfdG9fY3B1KHgpXG5hcmNoL3Bvd2VycGMvYm9vdC9saWJmZHRfZW52Lmg6MjE6I2RlZmluZSBjcHVfdG9fZmR0MTYoeClcdFx0Y3B1X3RvX2JlMTYoeClcbmFyY2gvcG93ZXJwYy9ib290L2xpYmZkdF9lbnYuaC0yMi0jZGVmaW5lIGZkdDMyX3RvX2NwdSh4KVx0XHRiZTMyX3RvX2NwdSh4KVxuYXJjaC9wb3dlcnBjL2Jvb3QvbGliZmR0X2Vudi5oOjIzOiNkZWZpbmUgY3B1X3RvX2ZkdDMyKHgpXHRcdGNwdV90b19iZTMyKHgpXG5hcmNoL3Bvd2VycGMvYm9vdC9saWJmZHRfZW52LmgtMjQtI2RlZmluZSBmZHQ2NF90b19jcHUoeClcdFx0YmU2NF90b19jcHUoeClcbmFyY2gvcG93ZXJwYy9ib290L2xpYmZkdF9lbnYuaDoyNTojZGVmaW5lIGNwdV90b19mZHQ2NCh4KVx0XHRjcHVfdG9fYmU2NCh4KVxuYXJjaC9wb3dlcnBjL2Jvb3QvbGliZmR0X2Vudi5oLTI2LVxuLS1cbmFyY2gvcG93ZXJwYy9ib290L29mLmg9Mjc9dHlwZWRlZiB1NjRcdFx0XHRfX2JlNjQ7XG4tLVxuYXJjaC9wb3dlcnBjL2Jvb3Qvb2YuaC0yOS0jaWZkZWYgX19MSVRUTEVfRU5ESUFOX19cbmFyY2gvcG93ZXJwYy9ib290L29mLmg6MzA6I2RlZmluZSBjcHVfdG9fYmUxNih4KSBzd2FiMTYoeClcbmFyY2gvcG93ZXJwYy9ib290L29mLmgtMzEtI2RlZmluZSBiZTE2X3RvX2NwdSh4KSBzd2FiMTYoeClcbmFyY2gvcG93ZXJwYy9ib290L29mLmg6MzI6I2RlZmluZSBjcHVfdG9fYmUzMih4KSBzd2FiMzIoeClcbmFyY2gvcG93ZXJwYy9ib290L29mLmgtMzMtI2RlZmluZSBiZTMyX3RvX2NwdSh4KSBzd2FiMzIoeClcbmFyY2gvcG93ZXJwYy9ib290L29mLmg6MzQ6I2RlZmluZSBjcHVfdG9fYmU2NCh4KSBzd2FiNjQoeClcbmFyY2gvcG93ZXJwYy9ib290L29mLmgtMzUtI2RlZmluZSBiZTY0X3RvX2NwdSh4KSBzd2FiNjQoeClcbmFyY2gvcG93ZXJwYy9ib290L29mLmgtMzYtI2Vsc2VcbmFyY2gvcG93ZXJwYy9ib290L29mLmg6Mzc6I2RlZmluZSBjcHVfdG9fYmUxNih4KSAoeClcbmFyY2gvcG93ZXJwYy9ib290L29mLmgtMzgtI2RlZmluZSBiZTE2X3RvX2NwdSh4KSAoeClcbmFyY2gvcG93ZXJwYy9ib290L29mLmg6Mzk6I2RlZmluZSBjcHVfdG9fYmUzMih4KSAoeClcbmFyY2gvcG93ZXJwYy9ib290L29mLmgtNDAtI2RlZmluZSBiZTMyX3RvX2NwdSh4KSAoeClcbmFyY2gvcG93ZXJwYy9ib290L29mLmg6NDE6I2RlZmluZSBjcHVfdG9fYmU2NCh4KSAoeClcbmFyY2gvcG93ZXJwYy9ib290L29mLmgtNDItI2RlZmluZSBiZTY0X3RvX2NwdSh4KSAoeClcbi0tXG5hcmNoL3Bvd2VycGMvYm9vdC94el9jb25maWcuaD0xND1zdGF0aWMgaW5saW5lIHVpbnQzMl90IHN3YWIzMnAodm9pZCAqcClcbi0tXG5hcmNoL3Bvd2VycGMvYm9vdC94el9jb25maWcuaC0yMi0jZGVmaW5lIGdldF9sZTMyKHApICgqKCh1aW50MzJfdCAqKSAocCkpKVxuYXJjaC9wb3dlcnBjL2Jvb3QveHpfY29uZmlnLmg6MjM6I2RlZmluZSBjcHVfdG9fYmUzMih4KSBzd2FiMzIoeClcbmFyY2gvcG93ZXJwYy9ib290L3h6X2NvbmZpZy5oLTI0LXN0YXRpYyBpbmxpbmUgdTMyIGJlMzJfdG9fY3B1cChjb25zdCB1MzIgKnApXG4tLVxuYXJjaC9wb3dlcnBjL2Jvb3QveHpfY29uZmlnLmgtMjktI2RlZmluZSBnZXRfbGUzMihwKSBzd2FiMzJwKHApXG5hcmNoL3Bvd2VycGMvYm9vdC94el9jb25maWcuaDozMDojZGVmaW5lIGNwdV90b19iZTMyKHgpICh4KVxuYXJjaC9wb3dlcnBjL2Jvb3QveHpfY29uZmlnLmgtMzEtc3RhdGljIGlubGluZSB1MzIgYmUzMl90b19jcHVwKGNvbnN0IHUzMiAqcClcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vY3B1ZmVhdHVyZS5oLTI2LVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2NwdWZlYXR1cmUuaDoyNzojZGVmaW5lIGNwdV9mZWF0dXJlKHgpXHRcdCh4KVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2NwdWZlYXR1cmUuaC0yOC1cbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vY3B1dGltZS5oLTI0LSNpZmRlZiBfX0tFUk5FTF9fXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vY3B1dGltZS5oOjI1OiNkZWZpbmUgY3B1dGltZV90b19uc2VjcyhjcHV0aW1lKSB0Yl90b19ucyhjcHV0aW1lKVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2NwdXRpbWUuaC0yNi1cbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vc21wLmg9MTM4PWV4dGVybiBib29sIHRocmVhZF9ncm91cF9zaGFyZXNfbDM7XG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vc21wLmgtMTM5LVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3NtcC5oOjE0MDojZGVmaW5lIGNwdV9zbXRfbWFzayBjcHVfc210X21hc2tcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9zbXAuaC0xNDEtI2lmZGVmIENPTkZJR19TQ0hFRF9TTVRcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vdG9wb2xvZ3kuaD05PXN0cnVjdCBkcm1lbV9sbWI7XG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3RvcG9sb2d5LmgtMjAtXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vdG9wb2xvZ3kuaDoyMTojZGVmaW5lIGNwdW1hc2tfb2Zfbm9kZShub2RlKSAoKG5vZGUpID09IC0xID9cdFx0XHRcdFxcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vdG9wb2xvZ3kuaC0yMi1cdFx0XHQgICAgICAgY3B1X2FsbF9tYXNrIDpcdFx0XHRcdFxcXG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3RvcG9sb2d5Lmg9Mjk9c3RhdGljIGlubGluZSBpbnQgcGNpYnVzX3RvX25vZGUoc3RydWN0IHBjaV9idXMgKmJ1cylcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vdG9wb2xvZ3kuaC0zNC1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS90b3BvbG9neS5oOjM1OiNkZWZpbmUgY3B1bWFza19vZl9wY2lidXMoYnVzKVx0KHBjaWJ1c190b19ub2RlKGJ1cykgPT0gLTEgP1x0XHRcXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3RvcG9sb2d5LmgtMzYtXHRcdFx0XHQgY3B1X2FsbF9tYXNrIDpcdFx0XHRcdFxcXG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3Zkc28vcHJvY2Vzc29yLmgtMjctI2lmZGVmIENPTkZJR19QUEM2NFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3Zkc28vcHJvY2Vzc29yLmg6Mjg6I2RlZmluZSBjcHVfcmVsYXgoKVx0XHRcdFx0XHRcdFx0XFxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS92ZHNvL3Byb2Nlc3Nvci5oLTI5LVx0YXNtIHZvbGF0aWxlKEFTTV9GVFJfSUZDTFIoXHRcdFx0XHRcdFxcXG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3Zkc28vcHJvY2Vzc29yLmgtMzUtI2Vsc2VcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS92ZHNvL3Byb2Nlc3Nvci5oOjM2OiNkZWZpbmUgY3B1X3JlbGF4KClcdGJhcnJpZXIoKVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3Zkc28vcHJvY2Vzc29yLmgtMzctI2VuZGlmXG4tLVxuYXJjaC9wb3dlcnBjL2tleGVjL2NvcmUuYy0yNC1cbmFyY2gvcG93ZXJwYy9rZXhlYy9jb3JlLmM6MjU6I2RlZmluZSBjcHVfdG9fYmVfdWxvbmcgX19QQVNURShjcHVfdG9fYmUsIEJJVFNfUEVSX0xPTkcpXG5hcmNoL3Bvd2VycGMva2V4ZWMvY29yZS5jLTI2LSNkZWZpbmUgX19iZV93b3JkIF9fUEFTVEUoX19iZSwgQklUU19QRVJfTE9ORylcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDQ6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM3NjYKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiA2NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipEZWJ1Z2dpbmcgYSBQb3RlbnRpYWwgQ29tcGlsYXRpb24gRmFpbHVyZSoqCgpPa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBJIGp1c3QgcmVhbGl6ZWQgdGhhdCB0aGlzIHBhdGNoIEkmIzM5O20gbG9va2luZyBhdCBsaWtlbHkgd29uJiMzOTt0IGNvbXBpbGUuIEkgd2FzIHRoaW5raW5nIGBjcHVgIHdhcyBhIG1hY3JvLCBidXQgY2xlYXJseSwgaXQmIzM5O3Mgbm90LiBUaGF0JiMzOTtzIGEgbWFqb3Igb3ZlcnNpZ2h0IG9uIG15IHBhcnQuIEkgc2hvdWxkIGhhdmUgY2F1Z2h0IHRoYXQgZWFybGllci4KCkJ1dCB3YWl0IGEgbWludXRlLCBiZWZvcmUgSSBjb21wbGV0ZWx5IGRpc21pc3MgdGhpcywgbGV0JiMzOTtzIG5vdCBqdW1wIHRvIGNvbmNsdXNpb25zLiBJdCYjMzk7cyBwb3NzaWJsZSwgYWxiZWl0IHVubGlrZWx5LCB0aGF0IGBjcHVgIGlzIGRlY2xhcmVkIGFzIGEgZ2xvYmFsIHZhcmlhYmxlIHNvbWV3aGVyZS4gUGVyaGFwcyBpdCYjMzk7cyBkZWZpbmVkIHdpdGhpbiB0aGlzIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBjb250ZXh0LCBvciBtYXliZSBpdCYjMzk7cyBwdWxsZWQgaW4gZnJvbSBhbm90aGVyIGhlYWRlci4gTGV0IG1lIGp1c3QgcXVpY2tseSBjaGVjayB3aXRoaW4gYGFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmNgIHRvIHNlZSBpZiB0aGF0JiMzOTtzIHRoZSBjYXNlLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgZGVmaW5pdGl2ZSBhbnN3ZXIgYmVmb3JlIEkgc3RhcnQgcmV3cml0aW5nIGNvZGUuIEkgbmVlZCB0byBiZSBzdXJlIEkmIzM5O20gbm90IG1pc3Npbmcgc29tZXRoaW5nIG9idmlvdXMgYmVmb3JlIEkgcmFpc2UgYSBmbGFnLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNDo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0cnVjdCBrdm1fdmNwdSBcXCpjcHUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDQ6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQwODIKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MgcmVuZGVyZWQgaW4gdGhlIGZpcnN0IHBlcnNvbiwgYXNzdW1pbmcgSSYjMzk7bSBhbiBleHBlcnQ6CgoqKkludmVzdGlnYXRpbmcgR2xvYmFsIFZhcmlhYmxlIFNjb3BlIGluIFBvd2VyUEMgS1ZNIENvZGUqKgoKQWxyaWdodCwgYmVmb3JlIEkgZGl2ZSBpbnRvIHRoZSBoZWFydCBvZiB0aGlzIHByb2JsZW0sIGxldCYjMzk7cyBqdXN0IG1ha2UgYWJzb2x1dGVseSBzdXJlIHdlIGhhdmVuJiMzOTt0IGdvdCBhIGdsb2JhbCB2YXJpYWJsZSBpc3N1ZSBjYXVzaW5nIHRoZSB0cm91YmxlLiBJIG5lZWQgdG8gcXVpY2tseSB2ZXJpZnkgdGhlIHNjb3BlIG9mIHRoZSBgY3B1YCB2YXJpYWJsZSB3aXRoaW4gYGFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmNgLiBJdCYjMzk7cyBhIGZ1bmRhbWVudGFsIHN0ZXA7IEkgY2FuJiMzOTt0IGFmZm9yZCB0byBvdmVybG9vayBhIHNpbXBsZSBzY29wZSBwcm9ibGVtIGFuZCBzdGFydCBjaGFzaW5nIG15IHRhaWwgd2l0aCBjb21wbGV4IGRlYnVnZ2luZyB0ZWNobmlxdWVzIGlmIGl0JiMzOTtzIG5vdCBhYnNvbHV0ZWx5IG5lY2Vzc2FyeS4gTGV0IG1lIHB1bGwgdXAgdGhhdCBmaWxlIGFuZCBkb3VibGUtY2hlY2sgaXRzIGRlY2xhcmF0aW9uLiBHbG9iYWwgdmFyaWFibGVzLCB3aGlsZSBzb21ldGltZXMgbmVjZXNzYXJ5LCBjYW4gYmUgYSBzb3VyY2Ugb2YgaGVhZGFjaGVzIGlmIG5vdCBwcm9wZXJseSBtYW5hZ2VkLCBzbyBJIG5lZWQgdG8ga25vdyBkZWZpbml0aXZlbHkgaWYgdGhpcyBpbnN0YW5jZSBpcyBpbnRlbmRlZCB0byBiZSBnbG9iYWwsIGFuZCBpZiBpdCYjMzk7cyBiZWluZyBhY2Nlc3NlZCBpbiB0aGUgYXBwcm9wcmlhdGUgbWFubmVyIGJ5IG90aGVyIGZ1bmN0aW9ucy9maWxlcy4gSSBuZWVkIHRvIGlkZW50aWZ5IHdoZXJlIGBjcHVgIGlzICpkZWNsYXJlZCouIFRoZW4sIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBhY2Nlc3MgZnJvbSBhbnkgb3RoZXIgZmlsZXMuIExldCYjMzk7cyBkbyB0aGlzIG1ldGhvZGljYWxseSBhbmQgc2VlIHdoYXQgd2UgY29tZSB1cCB3aXRoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNDo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjcHUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAzNTE4IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTI5LSNpbmNsdWRlIFx1MDAzY2xpbnV4L2Fub25faW5vZGVzLmhcdTAwM2VcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MzA6I2luY2x1ZGUgXHUwMDNjbGludXgvY3B1LmhcdTAwM2VcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MzE6I2luY2x1ZGUgXHUwMDNjbGludXgvY3B1bWFzay5oXHUwMDNlXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTMyLSNpbmNsdWRlIFx1MDAzY2xpbnV4L3NwaW5sb2NrLmhcdTAwM2Vcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTU0LSNpbmNsdWRlIFx1MDAzY2FzbS9kaXNhc3NlbWJsZS5oXHUwMDNlXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjU1OiNpbmNsdWRlIFx1MDAzY2FzbS9jcHV0YWJsZS5oXHUwMDNlXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTU2LSNpbmNsdWRlIFx1MDAzY2FzbS9jYWNoZWZsdXNoLmhcdTAwM2Vcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTY1LSNpbmNsdWRlIFx1MDAzY2FzbS9wcm9jZXNzb3IuaFx1MDAzZVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo2NjojaW5jbHVkZSBcdTAwM2Nhc20vY3B1dGhyZWFkcy5oXHUwMDNlXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTY3LSNpbmNsdWRlIFx1MDAzY2FzbS9wYWdlLmhcdTAwM2Vcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jPTEzMz1NT0RVTEVfUEFSTV9ERVNDKG5lc3RlZCwgXCYjMzQ7RW5hYmxlIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiAob25seSBvbiBQT1dFUjkpXCYjMzQ7KTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMTM0LVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoxMzU6c3RhdGljIGludCBrdm1wcGNfaHZfc2V0dXBfaHRhYl9ybWEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMTM2LVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM9MTUxPXN0YXRpYyB1bnNpZ25lZCBsb25nIHA4X3J3bXJfdmFsdWVzW01BWF9TTVRfVEhSRUFEUyAmIzQzOyAxXSA9IHtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTE2Mi1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MTYzOnN0YXRpYyBpbmxpbmUgc3RydWN0IGt2bV92Y3B1ICpuZXh0X3J1bm5hYmxlX3RocmVhZChzdHJ1Y3Qga3ZtcHBjX3Zjb3JlICp2YyxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMTY0LVx0XHRpbnQgKmlwKVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMTY2LVx0aW50IGkgPSAqaXA7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjE2NzpcdHN0cnVjdCBrdm1fdmNwdSAqdmNwdTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMTY4LVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0xNjktXHR3aGlsZSAoJiM0MzsmIzQzO2kgXHUwMDNjIE1BWF9TTVRfVEhSRUFEUykge1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoxNzA6XHRcdHZjcHUgPSBSRUFEX09OQ0UodmMtXHUwMDNlcnVubmFibGVfdGhyZWFkc1tpXSk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjE3MTpcdFx0aWYgKHZjcHUpIHtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMTcyLVx0XHRcdCppcCA9IGk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjE3MzpcdFx0XHRyZXR1cm4gdmNwdTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMTc0LVx0XHR9XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0xNzktLyogVXNlZCB0byB0cmF2ZXJzZSB0aGUgbGlzdCBvZiBydW5uYWJsZSB0aHJlYWRzIGZvciBhIGdpdmVuIHZjb3JlICovXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjE4MDojZGVmaW5lIGZvcl9lYWNoX3J1bm5hYmxlX3RocmVhZChpLCB2Y3B1LCB2YykgXFxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MTgxOlx0Zm9yIChpID0gLTE7ICh2Y3B1ID0gbmV4dF9ydW5uYWJsZV90aHJlYWQodmMsIFx1MDAyNmkpKTsgKVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0xODItXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjE4MzpzdGF0aWMgYm9vbCBrdm1wcGNfaXBpX3RocmVhZChpbnQgY3B1KVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0xODQte1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMTkwLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoxOTE6XHQvKiBPbiBQT1dFUjkgd2UgY2FuIHVzZSBtc2dzbmQgdG8gSVBJIGFueSBjcHUgKi9cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MTkyOlx0aWYgKGNwdV9oYXNfZmVhdHVyZShDUFVfRlRSX0FSQ0hfMzAwKSkge1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoxOTM6XHRcdG1zZyB8PSBnZXRfaGFyZF9zbXBfcHJvY2Vzc29yX2lkKGNwdSk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTE5NC1cdFx0c21wX21iKCk7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0xOTktXHQvKiBPbiBQT1dFUjggZm9yIElQSXMgdG8gdGhyZWFkcyBpbiB0aGUgc2FtZSBjb3JlLCB1c2UgbXNnc25kICovXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjIwMDpcdGlmIChjcHVfaGFzX2ZlYXR1cmUoQ1BVX0ZUUl9BUkNIXzIwN1MpKSB7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTIwMS1cdFx0cHJlZW1wdF9kaXNhYmxlKCk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjIwMjpcdFx0aWYgKGNwdV9maXJzdF90aHJlYWRfc2libGluZyhjcHUpID09XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjIwMzpcdFx0ICAgIGNwdV9maXJzdF90aHJlYWRfc2libGluZyhzbXBfcHJvY2Vzc29yX2lkKCkpKSB7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjIwNDpcdFx0XHRtc2cgfD0gY3B1X3RocmVhZF9pbl9jb3JlKGNwdSk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTIwNS1cdFx0XHRzbXBfbWIoKTtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTIxMy0jaWYgZGVmaW5lZChDT05GSUdfUFBDX0lDUF9OQVRJVkUpIFx1MDAyNlx1MDAyNiBkZWZpbmVkKENPTkZJR19TTVApXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjIxNDpcdGlmIChjcHUgXHUwMDNlPSAwIFx1MDAyNlx1MDAyNiBjcHUgXHUwMDNjIG5yX2NwdV9pZHMpIHtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjE1Olx0XHRpZiAocGFjYV9wdHJzW2NwdV0tXHUwMDNla3ZtX2hzdGF0ZS54aWNzX3BoeXMpIHtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjE2Olx0XHRcdHhpY3Nfd2FrZV9jcHUoY3B1KTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjE3LVx0XHRcdHJldHVybiB0cnVlO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yMTgtXHRcdH1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjE5Olx0XHRvcGFsX2ludF9zZXRfbWZycihnZXRfaGFyZF9zbXBfcHJvY2Vzc29yX2lkKGNwdSksIElQSV9QUklPUklUWSk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTIyMC1cdFx0cmV0dXJuIHRydWU7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yMjYtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjIyNzpzdGF0aWMgdm9pZCBrdm1wcGNfZmFzdF92Y3B1X2tpY2tfaHYoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yMjgte1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyMjk6XHRpbnQgY3B1O1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yMzAtXHRzdHJ1Y3QgcmN1d2FpdCAqd2FpdHA7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yMzMtXHQgKiByY3V3YWl0X3dha2VfdXAgY29udGFpbnMgc21wX21iKCkgd2hpY2ggb3JkZXJzIHByaW9yIHN0b3JlcyB0aGF0XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjIzNDpcdCAqIGNyZWF0ZSBwZW5kaW5nIHdvcmsgdnMgYmVsb3cgbG9hZHMgb2YgY3B1IGZpZWxkcy4gVGhlIG90aGVyIHNpZGVcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjM1Olx0ICogaXMgdGhlIGJhcnJpZXIgaW4gdmNwdSBydW4gdGhhdCBvcmRlcnMgc2V0dGluZyB0aGUgY3B1IGZpZWxkcyB2c1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yMzYtXHQgKiB0ZXN0aW5nIGZvciBwZW5kaW5nIHdvcmsuXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yMzgtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjIzOTpcdHdhaXRwID0ga3ZtX2FyY2hfdmNwdV9nZXRfd2FpdCh2Y3B1KTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjQwLVx0aWYgKHJjdXdhaXRfd2FrZV91cCh3YWl0cCkpXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjI0MTpcdFx0JiM0MzsmIzQzO3ZjcHUtXHUwMDNlc3RhdC5nZW5lcmljLmhhbHRfd2FrZXVwO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yNDItXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjI0MzpcdGNwdSA9IFJFQURfT05DRSh2Y3B1LVx1MDAzZWFyY2gudGhyZWFkX2NwdSk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjI0NDpcdGlmIChjcHUgXHUwMDNlPSAwIFx1MDAyNlx1MDAyNiBrdm1wcGNfaXBpX3RocmVhZChjcHUpKVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yNDUtXHRcdHJldHVybjtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTI0Ny1cdC8qIENQVSBwb2ludHMgdG8gdGhlIGZpcnN0IHRocmVhZCBvZiB0aGUgY29yZSAqL1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyNDg6XHRjcHUgPSB2Y3B1LVx1MDAzZWNwdTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjQ5Olx0aWYgKGNwdSBcdTAwM2U9IDAgXHUwMDI2XHUwMDI2IGNwdSBcdTAwM2MgbnJfY3B1X2lkcyBcdTAwMjZcdTAwMjYgY3B1X29ubGluZShjcHUpKVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyNTA6XHRcdHNtcF9zZW5kX3Jlc2NoZWR1bGUoY3B1KTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjUxLX1cbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTI1My0vKlxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyNTQ6ICogV2UgdXNlIHRoZSB2Y3B1X2xvYWQvcHV0IGZ1bmN0aW9ucyB0byBtZWFzdXJlIHN0b2xlbiB0aW1lLlxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yNTUtICpcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjU2OiAqIFN0b2xlbiB0aW1lIGlzIGNvdW50ZWQgYXMgdGltZSB3aGVuIGVpdGhlciB0aGUgdmNwdSBpcyBhYmxlIHRvXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTI1Ny0gKiBydW4gYXMgcGFydCBvZiBhIHZpcnR1YWwgY29yZSwgYnV0IHRoZSB0YXNrIHJ1bm5pbmcgdGhlIHZjb3JlXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjI1ODogKiBpcyBwcmVlbXB0ZWQgb3Igc2xlZXBpbmcsIG9yIHdoZW4gdGhlIHZjcHUgbmVlZHMgc29tZXRoaW5nIGRvbmVcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjU5OiAqIGluIHRoZSBrZXJuZWwgYnkgdGhlIHRhc2sgcnVubmluZyB0aGUgdmNwdSwgYnV0IHRoYXQgdGFzayBpc1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yNjAtICogcHJlZW1wdGVkIG9yIHNsZWVwaW5nLiAgVGhvc2UgdHdvIHRoaW5ncyBoYXZlIHRvIGJlIGNvdW50ZWRcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjYxOiAqIHNlcGFyYXRlbHksIHNpbmNlIG9uZSBvZiB0aGUgdmNwdSB0YXNrcyB3aWxsIHRha2Ugb24gdGhlIGpvYlxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyNjI6ICogb2YgcnVubmluZyB0aGUgY29yZSwgYW5kIHRoZSBvdGhlciB2Y3B1IHRhc2tzIGluIHRoZSB2Y29yZSB3aWxsXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTI2My0gKiBzbGVlcCB3YWl0aW5nIGZvciBpdCB0byBkbyB0aGF0LCBidXQgdGhhdCBzbGVlcCBzaG91bGRuJiMzOTt0IGNvdW50XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yNjUtICpcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjY2OiAqIEhlbmNlIHdlIGFjY3VtdWxhdGUgc3RvbGVuIHRpbWUgd2hlbiB0aGUgdmNwdSBjYW4gcnVuIGFzIHBhcnQgb2ZcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjY3OiAqIGEgdmNvcmUgdXNpbmcgdmMtXHUwMDNlc3RvbGVuX3RiLCBhbmQgdGhlIHN0b2xlbiB0aW1lIHdoZW4gdGhlIHZjcHVcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjY4LSAqIG5lZWRzIGl0cyB0YXNrIHRvIGRvIG90aGVyIHRoaW5ncyBpbiB0aGUga2VybmVsIChmb3IgZXhhbXBsZSxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjY5LSAqIHNlcnZpY2UgYSBwYWdlIGZhdWx0KSBpbiBidXN5X3N0b2xlbi4gIFdlIGRvbiYjMzk7dCBhY2N1bXVsYXRlXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjI3MDogKiBzdG9sZW4gdGltZSBmb3IgYSB2Y29yZSB3aGVuIGl0IGlzIGluYWN0aXZlLCBvciBmb3IgYSB2Y3B1XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTI3MS0gKiB3aGVuIGl0IGlzIGluIHN0YXRlIFJVTk5JTkcgb3IgTk9UUkVBRFkuICBOT1RSRUFEWSBpcyBhIGJpdCBvZlxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyNzI6ICogYSBtaXNub21lcjsgaXQgbWVhbnMgdGhhdCB0aGUgdmNwdSB0YXNrIGlzIG5vdCBleGVjdXRpbmcgaW5cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjczLSAqIHRoZSBLVk1fVkNQVV9SVU4gaW9jdGwsIGkuZS4gaXQgaXMgaW4gdXNlcnNwYWNlIG9yIGVsc2V3aGVyZSBpblxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yNzQtICogdGhlIGtlcm5lbC4gIFdlIGRvbiYjMzk7dCBoYXZlIGFueSB3YXkgb2YgZGl2aWRpbmcgdXAgdGhhdCB0aW1lXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjI3NTogKiBiZXR3ZWVuIHRpbWUgdGhhdCB0aGUgdmNwdSBpcyBnZW51aW5lbHkgc3RvcHBlZCwgdGltZSB0aGF0XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjI3NjogKiB0aGUgdGFzayBpcyBhY3RpdmVseSB3b3JraW5nIG9uIGJlaGFsZiBvZiB0aGUgdmNwdSwgYW5kIHRpbWVcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjc3LSAqIHRoYXQgdGhlIHRhc2sgaXMgcHJlZW1wdGVkLCBzbyB3ZSBkb24mIzM5O3QgY291bnQgYW55IG9mIGl0IGFzXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yODUtICpcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6Mjg2OiAqIFRoZSBQT1dFUjkgcGF0aCBpcyBzaW1wbGVyLCBvbmUgdmNwdSBwZXIgdmlydHVhbCBjb3JlIHNvIHRoZVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyODc6ICogZm9ybWVyIGNhc2UgZG9lcyBub3QgZXhpc3QuIElmIGEgdmNwdSBpcyBwcmVlbXB0ZWQgd2hlbiBpdCBpc1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yODgtICogQlVTWV9JTl9IT1NUIGFuZCBub3QgY2VkZWQgb3Igb3RoZXJ3aXNlIGJsb2NrZWQsIHRoZW4gYWNjdW11bGF0ZVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM9MjkzPXN0YXRpYyB2b2lkIGt2bXBwY19jb3JlX3N0YXJ0X3N0b2xlbihzdHJ1Y3Qga3ZtcHBjX3Zjb3JlICp2YywgdTY0IHRiKVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjk2LVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyOTc6XHRXQVJOX09OX09OQ0UoY3B1X2hhc19mZWF0dXJlKENQVV9GVFJfQVJDSF8zMDApKTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjk4LVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM9MzA0PXN0YXRpYyB2b2lkIGt2bXBwY19jb3JlX2VuZF9zdG9sZW4oc3RydWN0IGt2bXBwY192Y29yZSAqdmMsIHU2NCB0Yilcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTMwNy1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MzA4Olx0V0FSTl9PTl9PTkNFKGNwdV9oYXNfZmVhdHVyZShDUFVfRlRSX0FSQ0hfMzAwKSk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTMwOS1cbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTMxNy1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MzE4OnN0YXRpYyB2b2lkIGt2bXBwY19jb3JlX3ZjcHVfbG9hZF9odihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGludCBjcHUpXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTMxOS17XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjMyMDpcdHN0cnVjdCBrdm1wcGNfdmNvcmUgKnZjID0gdmNwdS1cdTAwM2VhcmNoLnZjb3JlO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0zMjEtXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzIzLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzozMjQ6XHRpZiAoY3B1X2hhc19mZWF0dXJlKENQVV9GVFJfQVJDSF8zMDApKSB7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjMyNTpcdFx0aWYgKHZjcHUtXHUwMDNlYXJjaC5idXN5X3ByZWVtcHQgIT0gVEJfTklMKSB7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjMyNjpcdFx0XHRXQVJOX09OX09OQ0UodmNwdS1cdTAwM2VhcmNoLnN0YXRlICE9IEtWTVBQQ19WQ1BVX0JVU1lfSU5fSE9TVCk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjMyNzpcdFx0XHR2Yy1cdTAwM2VzdG9sZW5fdGIgJiM0Mzs9IG1mdGIoKSAtIHZjcHUtXHUwMDNlYXJjaC5idXN5X3ByZWVtcHQ7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjMyODpcdFx0XHR2Y3B1LVx1MDAzZWFyY2guYnVzeV9wcmVlbXB0ID0gVEJfTklMO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0zMjktXHRcdH1cbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTMzNy1cdCAqIGJlY2F1c2Ugb25seSB0aGlzIHRhc2sgZXZlciBzZXRzIHZjLVx1MDAzZXJ1bm5lciB0byB0aGlzXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjMzODpcdCAqIHZjcHUsIGFuZCBvbmNlIGl0IGlzIHNldCB0byB0aGlzIHZjcHUsIG9ubHkgdGhpcyB0YXNrXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTMzOS1cdCAqIGV2ZXIgc2V0cyBpdCB0byBOVUxMLlxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0zNDAtXHQgKi9cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MzQxOlx0aWYgKHZjLVx1MDAzZXJ1bm5lciA9PSB2Y3B1IFx1MDAyNlx1MDAyNiB2Yy1cdTAwM2V2Y29yZV9zdGF0ZSBcdTAwM2U9IFZDT1JFX1NMRUVQSU5HKVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0zNDItXHRcdGt2bXBwY19jb3JlX2VuZF9zdG9sZW4odmMsIG5vdyk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTM0My1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MzQ0Olx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2dmNwdS1cdTAwM2VhcmNoLnRiYWNjdF9sb2NrLCBmbGFncyk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjM0NTpcdGlmICh2Y3B1LVx1MDAzZWFyY2guc3RhdGUgPT0gS1ZNUFBDX1ZDUFVfQlVTWV9JTl9IT1NUIFx1MDAyNlx1MDAyNlxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzozNDY6XHQgICAgdmNwdS1cdTAwM2VhcmNoLmJ1c3lfcHJlZW1wdCAhPSBUQl9OSUwpIHtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MzQ3Olx0XHR2Y3B1LVx1MDAzZWFyY2guYnVzeV9zdG9sZW4gJiM0Mzs9IG5vdyAtIHZjcHUtXHUwMDNlYXJjaC5idXN5X3ByZWVtcHQ7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjM0ODpcdFx0dmNwdS1cdTAwM2VhcmNoLmJ1c3lfcHJlZW1wdCA9IFRCX05JTDtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzQ5LVx0fVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzozNTA6XHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNnZjcHUtXHUwMDNlYXJjaC50YmFjY3RfbG9jaywgZmxhZ3MpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0zNTEtfVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0zNTItXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjM1MzpzdGF0aWMgdm9pZCBrdm1wcGNfY29yZV92Y3B1X3B1dF9odihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTM1NC17XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjM1NTpcdHN0cnVjdCBrdm1wcGNfdmNvcmUgKnZjID0gdmNwdS1cdTAwM2VhcmNoLnZjb3JlO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0zNTYtXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzU4LVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzozNTk6XHRpZiAoY3B1X2hhc19mZWF0dXJlKENQVV9GVFJfQVJDSF8zMDApKSB7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTM2MC1cdFx0Lypcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTM2My1cdFx0ICovXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjM2NDpcdFx0V0FSTl9PTl9PTkNFKHZjcHUtXHUwMDNlYXJjaC5zdGF0ZSA9PSBLVk1QUENfVkNQVV9SVU5OQUJMRSk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTM2NS1cdFx0LypcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MzY2Olx0XHQgKiBBY2NvdW50IHN0b2xlbiB0aW1lIHdoZW4gcHJlZW1wdGVkIHdoaWxlIHRoZSB2Y3B1IHRhc2sgaXNcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzY3LVx0XHQgKiBydW5uaW5nIGluIHRoZSBrZXJuZWwgKGJ1dCBub3QgaW4gcWVtdSwgd2hpY2ggaXMgSU5BQ1RJVkUpLlxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzY5LVx0XHRpZiAodGFza19pc19ydW5uaW5nKGN1cnJlbnQpIFx1MDAyNlx1MDAyNlxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzozNzA6XHRcdFx0XHR2Y3B1LVx1MDAzZWFyY2guc3RhdGUgPT0gS1ZNUFBDX1ZDUFVfQlVTWV9JTl9IT1NUKVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzozNzE6XHRcdFx0dmNwdS1cdTAwM2VhcmNoLmJ1c3lfcHJlZW1wdCA9IG1mdGIoKTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzcyLVx0XHRyZXR1cm47XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0zNzYtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjM3NzpcdGlmICh2Yy1cdTAwM2VydW5uZXIgPT0gdmNwdSBcdTAwMjZcdTAwMjYgdmMtXHUwMDNldmNvcmVfc3RhdGUgXHUwMDNlPSBWQ09SRV9TTEVFUElORylcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzc4LVx0XHRrdm1wcGNfY29yZV9zdGFydF9zdG9sZW4odmMsIG5vdyk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTM3OS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MzgwOlx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2dmNwdS1cdTAwM2VhcmNoLnRiYWNjdF9sb2NrLCBmbGFncyk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjM4MTpcdGlmICh2Y3B1LVx1MDAzZWFyY2guc3RhdGUgPT0gS1ZNUFBDX1ZDUFVfQlVTWV9JTl9IT1NUKVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzozODI6XHRcdHZjcHUtXHUwMDNlYXJjaC5idXN5X3ByZWVtcHQgPSBub3c7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjM4MzpcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2dmNwdS1cdTAwM2VhcmNoLnRiYWNjdF9sb2NrLCBmbGFncyk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTM4NC19XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTM4NS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6Mzg2OnN0YXRpYyB2b2lkIGt2bXBwY19zZXRfcHZyX2h2KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTMyIHB2cilcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzg3LXtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6Mzg4Olx0dmNwdS1cdTAwM2VhcmNoLnB2ciA9IHB2cjtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzg5LX1cbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jPTM5ND1zdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgbWFwX3Bjcl90b19jYXAodW5zaWduZWQgbG9uZyBwY3IpXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00MDItXHRjYXNlIFBDUl9BUkNIXzMxOlxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo0MDM6XHRcdGlmIChjcHVfaGFzX2ZlYXR1cmUoQ1BVX0ZUUl9QMTFfUFZSKSlcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNDA0LVx0XHRcdGNhcCA9IEhfR1VFU1RfQ0FQX1BPV0VSMTE7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00MTQtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjQxNTpzdGF0aWMgaW50IGt2bXBwY19zZXRfYXJjaF9jb21wYXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgYXJjaF9jb21wYXQpXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQxNi17XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQxNy1cdHVuc2lnbmVkIGxvbmcgaG9zdF9wY3JfYml0ID0gMCwgZ3Vlc3RfcGNyX2JpdCA9IDAsIGNhcCA9IDA7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjQxODpcdHN0cnVjdCBrdm1wcGNfdmNvcmUgKnZjID0gdmNwdS1cdTAwM2VhcmNoLnZjb3JlO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00MTktXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQyMC1cdC8qIFdlIGNhbiAoZW11bGF0ZSkgb3VyIG93biBhcmNoaXRlY3R1cmUgdmVyc2lvbiBhbmQgYW55dGhpbmcgb2xkZXIgKi9cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NDIxOlx0aWYgKGNwdV9oYXNfZmVhdHVyZShDUFVfRlRSX1AxMV9QVlIpIHx8IGNwdV9oYXNfZmVhdHVyZShDUFVfRlRSX0FSQ0hfMzEpKVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00MjItXHRcdGhvc3RfcGNyX2JpdCA9IFBDUl9BUkNIXzMxO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo0MjM6XHRlbHNlIGlmIChjcHVfaGFzX2ZlYXR1cmUoQ1BVX0ZUUl9BUkNIXzMwMCkpXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQyNC1cdFx0aG9zdF9wY3JfYml0ID0gUENSX0FSQ0hfMzAwO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo0MjU6XHRlbHNlIGlmIChjcHVfaGFzX2ZlYXR1cmUoQ1BVX0ZUUl9BUkNIXzIwN1MpKVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00MjYtXHRcdGhvc3RfcGNyX2JpdCA9IFBDUl9BUkNIXzIwNztcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NDI3Olx0ZWxzZSBpZiAoY3B1X2hhc19mZWF0dXJlKENQVV9GVFJfQVJDSF8yMDYpKVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00MjgtXHRcdGhvc3RfcGNyX2JpdCA9IFBDUl9BUkNIXzIwNjtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQ3NC1cdHZjLVx1MDAzZWFyY2hfY29tcGF0ID0gYXJjaF9jb21wYXQ7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjQ3NTpcdGt2bWh2X25lc3RlZHYyX21hcmtfZGlydHkodmNwdSwgS1ZNUFBDX0dTSURfTE9HSUNBTF9QVlIpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00NzYtXHQvKlxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNDg1LVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo0ODY6c3RhdGljIHZvaWQga3ZtcHBjX2R1bXBfcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQ4Ny17XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00ODktXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjQ5MDpcdHByX2VycihcJiMzNDt2Y3B1ICVwICglZCk6XFxuXCYjMzQ7LCB2Y3B1LCB2Y3B1LVx1MDAzZXZjcHVfaWQpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00OTEtXHRwcl9lcnIoXCYjMzQ7cGMgID0gJS4xNmx4ICBtc3IgPSAlLjE2bGx4ICB0cmFwID0gJXhcXG5cJiMzNDssXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjQ5MjpcdCAgICAgICB2Y3B1LVx1MDAzZWFyY2gucmVncy5uaXAsIHZjcHUtXHUwMDNlYXJjaC5zaHJlZ3MubXNyLCB2Y3B1LVx1MDAzZWFyY2gudHJhcCk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQ5My1cdGZvciAociA9IDA7IHIgXHUwMDNjIDE2OyAmIzQzOyYjNDM7cilcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNDk0LVx0XHRwcl9lcnIoXCYjMzQ7ciUyZCA9ICUuMTZseCAgciVkID0gJS4xNmx4XFxuXCYjMzQ7LFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo0OTU6XHRcdCAgICAgICByLCBrdm1wcGNfZ2V0X2dwcih2Y3B1LCByKSxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NDk2Olx0XHQgICAgICAgciYjNDM7MTYsIGt2bXBwY19nZXRfZ3ByKHZjcHUsIHImIzQzOzE2KSk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQ5Ny1cdHByX2VycihcJiMzNDtjdHIgPSAlLjE2bHggIGxyICA9ICUuMTZseFxcblwmIzM0OyxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NDk4Olx0ICAgICAgIHZjcHUtXHUwMDNlYXJjaC5yZWdzLmN0ciwgdmNwdS1cdTAwM2VhcmNoLnJlZ3MubGluayk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQ5OS1cdHByX2VycihcJiMzNDtzcnIwID0gJS4xNmxseCBzcnIxID0gJS4xNmxseFxcblwmIzM0OyxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NTAwOlx0ICAgICAgIHZjcHUtXHUwMDNlYXJjaC5zaHJlZ3Muc3JyMCwgdmNwdS1cdTAwM2VhcmNoLnNocmVncy5zcnIxKTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTAxLVx0cHJfZXJyKFwmIzM0O3NwcmcwID0gJS4xNmxseCBzcHJnMSA9ICUuMTZsbHhcXG5cJiMzNDssXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjUwMjpcdCAgICAgICB2Y3B1LVx1MDAzZWFyY2guc2hyZWdzLnNwcmcwLCB2Y3B1LVx1MDAzZWFyY2guc2hyZWdzLnNwcmcxKTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTAzLVx0cHJfZXJyKFwmIzM0O3NwcmcyID0gJS4xNmxseCBzcHJnMyA9ICUuMTZsbHhcXG5cJiMzNDssXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjUwNDpcdCAgICAgICB2Y3B1LVx1MDAzZWFyY2guc2hyZWdzLnNwcmcyLCB2Y3B1LVx1MDAzZWFyY2guc2hyZWdzLnNwcmczKTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTA1LVx0cHJfZXJyKFwmIzM0O2NyID0gJS44bHggIHhlciA9ICUuMTZseCAgZHNpc3IgPSAlLjh4XFxuXCYjMzQ7LFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1MDY6XHQgICAgICAgdmNwdS1cdTAwM2VhcmNoLnJlZ3MuY2NyLCB2Y3B1LVx1MDAzZWFyY2gucmVncy54ZXIsIHZjcHUtXHUwMDNlYXJjaC5zaHJlZ3MuZHNpc3IpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1MDc6XHRwcl9lcnIoXCYjMzQ7ZGFyID0gJS4xNmxseFxcblwmIzM0OywgdmNwdS1cdTAwM2VhcmNoLnNocmVncy5kYXIpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01MDgtXHRwcl9lcnIoXCYjMzQ7ZmF1bHQgZGFyID0gJS4xNmx4IGRzaXNyID0gJS44eFxcblwmIzM0OyxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NTA5Olx0ICAgICAgIHZjcHUtXHUwMDNlYXJjaC5mYXVsdF9kYXIsIHZjcHUtXHUwMDNlYXJjaC5mYXVsdF9kc2lzcik7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjUxMDpcdHByX2VycihcJiMzNDtTTEIgKCVkIGVudHJpZXMpOlxcblwmIzM0OywgdmNwdS1cdTAwM2VhcmNoLnNsYl9tYXgpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1MTE6XHRmb3IgKHIgPSAwOyByIFx1MDAzYyB2Y3B1LVx1MDAzZWFyY2guc2xiX21heDsgJiM0MzsmIzQzO3IpXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTUxMi1cdFx0cHJfZXJyKFwmIzM0OyAgRVNJRCA9ICUuMTZsbHggVlNJRCA9ICUuMTZsbHhcXG5cJiMzNDssXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjUxMzpcdFx0ICAgICAgIHZjcHUtXHUwMDNlYXJjaC5zbGJbcl0ub3JpZ2UsIHZjcHUtXHUwMDNlYXJjaC5zbGJbcl0ub3JpZ3YpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01MTQtXHRwcl9lcnIoXCYjMzQ7bHBjciA9ICUuMTZseCBzZHIxID0gJS4xNmx4IGxhc3RfaW5zdCA9ICUuMTZseFxcblwmIzM0OyxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NTE1Olx0ICAgICAgIHZjcHUtXHUwMDNlYXJjaC52Y29yZS1cdTAwM2VscGNyLCB2Y3B1LVx1MDAzZWt2bS1cdTAwM2VhcmNoLnNkcjEsXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjUxNjpcdCAgICAgICB2Y3B1LVx1MDAzZWFyY2gubGFzdF9pbnN0KTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTE3LX1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTE4LVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1MTk6c3RhdGljIHN0cnVjdCBrdm1fdmNwdSAqa3ZtcHBjX2ZpbmRfdmNwdShzdHJ1Y3Qga3ZtICprdm0sIGludCBpZClcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTIwLXtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NTIxOlx0cmV0dXJuIGt2bV9nZXRfdmNwdV9ieV9pZChrdm0sIGlkKTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTIyLX1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTIzLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1MjQ6c3RhdGljIHZvaWQgaW5pdF92cGEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3QgbHBwYWNhICp2cGEpXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTUyNS17XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTUyNi1cdHZwYS1cdTAwM2VfX29sZF9zdGF0dXMgfD0gTFBQQUNBX09MRF9TSEFSRURfUFJPQztcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NTI3Olx0dnBhLVx1MDAzZXlpZWxkX2NvdW50ID0gY3B1X3RvX2JlMzIoMSk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTUyOC19XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTUyOS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NTMwOnN0YXRpYyBpbnQgc2V0X3ZwYShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1wcGNfdnBhICp2LFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01MzEtXHRcdCAgIHVuc2lnbmVkIGxvbmcgYWRkciwgdW5zaWduZWQgbG9uZyBsZW4pXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01MzUtXHRcdHJldHVybiAtRUlOVkFMO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1MzY6XHRzcGluX2xvY2soXHUwMDI2dmNwdS1cdTAwM2VhcmNoLnZwYV91cGRhdGVfbG9jayk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTUzNy1cdGlmICh2LVx1MDAzZW5leHRfZ3BhICE9IGFkZHIgfHwgdi1cdTAwM2VsZW4gIT0gbGVuKSB7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01NDEtXHR9XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjU0MjpcdHNwaW5fdW5sb2NrKFx1MDAyNnZjcHUtXHUwMDNlYXJjaC52cGFfdXBkYXRlX2xvY2spO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01NDMtXHRyZXR1cm4gMDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jPTU1NT1zdGF0aWMgaW50IHZwYV9pc19yZWdpc3RlcmVkKHN0cnVjdCBrdm1wcGNfdnBhICp2cGFwKVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTYxLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1NjI6c3RhdGljIHVuc2lnbmVkIGxvbmcgZG9faF9yZWdpc3Rlcl92cGEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01NjMtXHRcdFx0XHQgICAgICAgdW5zaWduZWQgbG9uZyBmbGFncyxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NTY0Olx0XHRcdFx0ICAgICAgIHVuc2lnbmVkIGxvbmcgdmNwdWlkLCB1bnNpZ25lZCBsb25nIHZwYSlcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTY1LXtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NTY2Olx0c3RydWN0IGt2bSAqa3ZtID0gdmNwdS1cdTAwM2Vrdm07XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTU2Ny1cdHVuc2lnbmVkIGxvbmcgbGVuLCBuYjtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTY4LVx0dm9pZCAqdmE7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjU2OTpcdHN0cnVjdCBrdm1fdmNwdSAqdHZjcHU7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTU3MC1cdGludCBlcnI7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01NzMtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjU3NDpcdHR2Y3B1ID0ga3ZtcHBjX2ZpbmRfdmNwdShrdm0sIHZjcHVpZCk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjU3NTpcdGlmICghdHZjcHUpXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTU3Ni1cdFx0cmV0dXJuIEhfUEFSQU1FVEVSO1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTg5LVx0XHRpZiAoc3ViZnVuYyA9PSBIX1ZQQV9SRUdfVlBBKVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1OTA6XHRcdFx0bGVuID0gYmUxNl90b19jcHUoKChzdHJ1Y3QgcmVnX3ZwYSAqKXZhKS1cdTAwM2VsZW5ndGguaHdvcmQpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01OTEtXHRcdGVsc2VcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NTkyOlx0XHRcdGxlbiA9IGJlMzJfdG9fY3B1KCgoc3RydWN0IHJlZ192cGEgKil2YSktXHUwMDNlbGVuZ3RoLndvcmQpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01OTMtXHRcdGt2bXBwY191bnBpbl9ndWVzdF9wYWdlKGt2bSwgdmEsIHZwYSwgZmFsc2UpO1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjA0LVx0dnBhcCA9IE5VTEw7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjYwNTpcdHNwaW5fbG9jayhcdTAwMjZ0dmNwdS1cdTAwM2VhcmNoLnZwYV91cGRhdGVfbG9jayk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTYwNi1cbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTYxNy1cdFx0XHRicmVhaztcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NjE4Olx0XHR2cGFwID0gXHUwMDI2dHZjcHUtXHUwMDNlYXJjaC52cGE7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTYxOS1cdFx0ZXJyID0gMDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTYyOC1cdFx0ZXJyID0gSF9SRVNPVVJDRTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NjI5Olx0XHRpZiAoIXZwYV9pc19yZWdpc3RlcmVkKFx1MDAyNnR2Y3B1LVx1MDAzZWFyY2gudnBhKSlcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjMwLVx0XHRcdGJyZWFrO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy02MzEtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjYzMjpcdFx0dnBhcCA9IFx1MDAyNnR2Y3B1LVx1MDAzZWFyY2guZHRsO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy02MzMtXHRcdGVyciA9IDA7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy02MzgtXHRcdGVyciA9IEhfUkVTT1VSQ0U7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjYzOTpcdFx0aWYgKCF2cGFfaXNfcmVnaXN0ZXJlZChcdTAwMjZ0dmNwdS1cdTAwM2VhcmNoLnZwYSkpXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTY0MC1cdFx0XHRicmVhaztcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjQxLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo2NDI6XHRcdHZwYXAgPSBcdTAwMjZ0dmNwdS1cdTAwM2VhcmNoLnNsYl9zaGFkb3c7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTY0My1cdFx0ZXJyID0gMDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTY0OC1cdFx0ZXJyID0gSF9SRVNPVVJDRTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NjQ5Olx0XHRpZiAodnBhX2lzX3JlZ2lzdGVyZWQoXHUwMDI2dHZjcHUtXHUwMDNlYXJjaC5kdGwpIHx8XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjY1MDpcdFx0ICAgIHZwYV9pc19yZWdpc3RlcmVkKFx1MDAyNnR2Y3B1LVx1MDAzZWFyY2guc2xiX3NoYWRvdykpXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTY1MS1cdFx0XHRicmVhaztcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjUyLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo2NTM6XHRcdHZwYXAgPSBcdTAwMjZ0dmNwdS1cdTAwM2VhcmNoLnZwYTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjU0LVx0XHRlcnIgPSAwO1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjU3LVx0Y2FzZSBIX1ZQQV9ERVJFR19EVEw6XHRcdC8qIGRlcmVnaXN0ZXIgRFRMICovXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjY1ODpcdFx0dnBhcCA9IFx1MDAyNnR2Y3B1LVx1MDAzZWFyY2guZHRsO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy02NTktXHRcdGVyciA9IDA7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy02NjItXHRjYXNlIEhfVlBBX0RFUkVHX1NMQjpcdFx0LyogZGVyZWdpc3RlciBTTEIgc2hhZG93IGJ1ZmZlciAqL1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo2NjM6XHRcdHZwYXAgPSBcdTAwMjZ0dmNwdS1cdTAwM2VhcmNoLnNsYl9zaGFkb3c7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTY2NC1cdFx0ZXJyID0gMDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTY3My1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6Njc0Olx0c3Bpbl91bmxvY2soXHUwMDI2dHZjcHUtXHUwMDNlYXJjaC52cGFfdXBkYXRlX2xvY2spO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy02NzUtXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy02NzgtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjY3OTpzdGF0aWMgdm9pZCBrdm1wcGNfdXBkYXRlX3ZwYShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1wcGNfdnBhICp2cGFwLFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy02ODAtXHRcdFx0ICAgICAgIHN0cnVjdCBrdm1wcGNfdnBhICpvbGRfdnBhcClcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjgxLXtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NjgyOlx0c3RydWN0IGt2bSAqa3ZtID0gdmNwdS1cdTAwM2Vrdm07XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTY4My1cdHZvaWQgKnZhO1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjk2LVx0XHRncGEgPSB2cGFwLVx1MDAzZW5leHRfZ3BhO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo2OTc6XHRcdHNwaW5fdW5sb2NrKFx1MDAyNnZjcHUtXHUwMDNlYXJjaC52cGFfdXBkYXRlX2xvY2spO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy02OTgtXHRcdHZhID0gTlVMTDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTcwMS1cdFx0XHR2YSA9IGt2bXBwY19waW5fZ3Vlc3RfcGFnZShrdm0sIGdwYSwgXHUwMDI2bmIpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo3MDI6XHRcdHNwaW5fbG9jayhcdTAwMjZ2Y3B1LVx1MDAzZWFyY2gudnBhX3VwZGF0ZV9sb2NrKTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNzAzLVx0XHRpZiAoZ3BhID09IHZwYXAtXHUwMDNlbmV4dF9ncGEpXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03MjgtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjcyOTpzdGF0aWMgdm9pZCBrdm1wcGNfdXBkYXRlX3ZwYXMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03MzAte1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo3MzE6XHRzdHJ1Y3Qga3ZtICprdm0gPSB2Y3B1LVx1MDAzZWt2bTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNzMyLVx0c3RydWN0IGt2bXBwY192cGEgb2xkX3ZwYSA9IHsgMCB9O1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03MzMtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjczNDpcdGlmICghKHZjcHUtXHUwMDNlYXJjaC52cGEudXBkYXRlX3BlbmRpbmcgfHxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NzM1Olx0ICAgICAgdmNwdS1cdTAwM2VhcmNoLnNsYl9zaGFkb3cudXBkYXRlX3BlbmRpbmcgfHxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NzM2Olx0ICAgICAgdmNwdS1cdTAwM2VhcmNoLmR0bC51cGRhdGVfcGVuZGluZykpXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTczNy1cdFx0cmV0dXJuO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03MzgtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjczOTpcdHNwaW5fbG9jayhcdTAwMjZ2Y3B1LVx1MDAzZWFyY2gudnBhX3VwZGF0ZV9sb2NrKTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NzQwOlx0aWYgKHZjcHUtXHUwMDNlYXJjaC52cGEudXBkYXRlX3BlbmRpbmcpIHtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NzQxOlx0XHRrdm1wcGNfdXBkYXRlX3ZwYSh2Y3B1LCBcdTAwMjZ2Y3B1LVx1MDAzZWFyY2gudnBhLCBcdTAwMjZvbGRfdnBhKTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNzQyLVx0XHRpZiAob2xkX3ZwYS5waW5uZWRfYWRkcikge1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03NDMtXHRcdFx0aWYgKGt2bWh2X2lzX25lc3RlZHYyKCkpXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjc0NDpcdFx0XHRcdGt2bWh2X25lc3RlZHYyX3NldF92cGEodmNwdSwgfjB1bGwpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03NDUtXHRcdFx0a3ZtcHBjX3VucGluX2d1ZXN0X3BhZ2Uoa3ZtLCBvbGRfdnBhLnBpbm5lZF9hZGRyLCBvbGRfdnBhLmdwYSxcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTc0Ny1cdFx0fVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo3NDg6XHRcdGlmICh2Y3B1LVx1MDAzZWFyY2gudnBhLnBpbm5lZF9hZGRyKSB7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjc0OTpcdFx0XHRpbml0X3ZwYSh2Y3B1LCB2Y3B1LVx1MDAzZWFyY2gudnBhLnBpbm5lZF9hZGRyKTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNzUwLVx0XHRcdGlmIChrdm1odl9pc19uZXN0ZWR2MigpKVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo3NTE6XHRcdFx0XHRrdm1odl9uZXN0ZWR2Ml9zZXRfdnBhKHZjcHUsIF9fcGEodmNwdS1cdTAwM2VhcmNoLnZwYS5waW5uZWRfYWRkcikpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03NTItXHRcdH1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNzUzLVx0fVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo3NTQ6XHRpZiAodmNwdS1cdTAwM2VhcmNoLmR0bC51cGRhdGVfcGVuZGluZykge1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo3NTU6XHRcdGt2bXBwY191cGRhdGVfdnBhKHZjcHUsIFx1MDAyNnZjcHUtXHUwMDNlYXJjaC5kdGwsIFx1MDAyNm9sZF92cGEpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03NTYtXHRcdGlmIChvbGRfdnBhLnBpbm5lZF9hZGRyKVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNzU4LVx0XHRcdFx0XHRcdG9sZF92cGEuZGlydHkpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo3NTk6XHRcdHZjcHUtXHUwMDNlYXJjaC5kdGxfcHRyID0gdmNwdS1cdTAwM2VhcmNoLmR0bC5waW5uZWRfYWRkcjtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NzYwOlx0XHR2Y3B1LVx1MDAzZWFyY2guZHRsX2luZGV4ID0gMDtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNzYxLVx0fVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo3NjI6XHRpZiAodmNwdS1cdTAwM2VhcmNoLnNsYl9zaGFkb3cudXBkYXRlX3BlbmRpbmcpIHtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NzYzOlx0XHRrdm1wcGNfdXBkYXRlX3ZwYSh2Y3B1LCBcdTAwMjZ2Y3B1LVx1MDAzZWFyY2guc2xiX3NoYWRvdywgXHUwMDI2b2xkX3ZwYSk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTc2NC1cdFx0aWYgKG9sZF92cGEucGlubmVkX2FkZHIpXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03NjgtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjc2OTpcdHNwaW5fdW5sb2NrKFx1MDAyNnZjcHUtXHUwMDNlYXJjaC52cGFfdXBkYXRlX2xvY2spO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03NzAtfVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM9Nzc2PXN0YXRpYyB1NjQgdmNvcmVfc3RvbGVuX3RpbWUoc3RydWN0IGt2bXBwY192Y29yZSAqdmMsIHU2NCBub3cpXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03ODAtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjc4MTpcdFdBUk5fT05fT05DRShjcHVfaGFzX2ZlYXR1cmUoQ1BVX0ZUUl9BUkNIXzMwMCkpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03ODItXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03OTEtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjc5MjpzdGF0aWMgdm9pZCBfX2t2bXBwY19jcmVhdGVfZHRsX2VudHJ5KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNzkzLVx0XHRcdFx0XHRzdHJ1Y3QgbHBwYWNhICp2cGEsXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjc5NDpcdFx0XHRcdFx0dW5zaWduZWQgaW50IHBjcHUsIHU2NCBub3csXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTc5NS1cdFx0XHRcdFx0dW5zaWduZWQgbG9uZyBzdG9sZW4pXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03OTgtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjc5OTpcdGR0ID0gdmNwdS1cdTAwM2VhcmNoLmR0bF9wdHI7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTgwMC1cbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTgwNS1cdGR0LVx1MDAzZXByZWVtcHRfcmVhc29uID0gMDtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODA2Olx0ZHQtXHUwMDNlcHJvY2Vzc29yX2lkID0gY3B1X3RvX2JlMTYocGNwdSAmIzQzOyB2Y3B1LVx1MDAzZWFyY2gucHRpZCk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjgwNzpcdGR0LVx1MDAzZWVucXVldWVfdG9fZGlzcGF0Y2hfdGltZSA9IGNwdV90b19iZTMyKHN0b2xlbik7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTgwOC1cdGR0LVx1MDAzZXJlYWR5X3RvX2VucXVldWVfdGltZSA9IDA7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTgwOS1cdGR0LVx1MDAzZXdhaXRpbmdfdG9fcmVhZHlfdGltZSA9IDA7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjgxMDpcdGR0LVx1MDAzZXRpbWViYXNlID0gY3B1X3RvX2JlNjQobm93KTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODExLVx0ZHQtXHUwMDNlZmF1bHRfYWRkciA9IDA7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjgxMjpcdGR0LVx1MDAzZXNycjAgPSBjcHVfdG9fYmU2NChrdm1wcGNfZ2V0X3BjKHZjcHUpKTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODEzOlx0ZHQtXHUwMDNlc3JyMSA9IGNwdV90b19iZTY0KHZjcHUtXHUwMDNlYXJjaC5zaHJlZ3MubXNyKTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODE0LVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04MTUtXHQmIzQzOyYjNDM7ZHQ7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjgxNjpcdGlmIChkdCA9PSB2Y3B1LVx1MDAzZWFyY2guZHRsLnBpbm5lZF9lbmQpXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjgxNzpcdFx0ZHQgPSB2Y3B1LVx1MDAzZWFyY2guZHRsLnBpbm5lZF9hZGRyO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4MTg6XHR2Y3B1LVx1MDAzZWFyY2guZHRsX3B0ciA9IGR0O1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04MTktXHQvKiBvcmRlciB3cml0aW5nICpkdCB2cy4gd3JpdGluZyB2cGEtXHUwMDNlZHRsX2lkeCAqL1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04MjAtXHRzbXBfd21iKCk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjgyMTpcdHZwYS1cdTAwM2VkdGxfaWR4ID0gY3B1X3RvX2JlNjQoJiM0MzsmIzQzO3ZjcHUtXHUwMDNlYXJjaC5kdGxfaW5kZXgpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04MjItXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjgyMzpcdC8qIHZjcHUtXHUwMDNlYXJjaC5kdGwuZGlydHkgaXMgc2V0IGJ5IHRoZSBjYWxsZXIgKi9cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODI0LX1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODI1LVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4MjY6c3RhdGljIHZvaWQga3ZtcHBjX3VwZGF0ZV92cGFfZGlzcGF0Y2goc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04MjctXHRcdFx0XHQgICAgICAgc3RydWN0IGt2bXBwY192Y29yZSAqdmMpXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04MzQtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjgzNTpcdHZwYSA9IHZjcHUtXHUwMDNlYXJjaC52cGEucGlubmVkX2FkZHI7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTgzNi1cdGlmICghdnBhKVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODQxLVx0Y29yZV9zdG9sZW4gPSB2Y29yZV9zdG9sZW5fdGltZSh2Yywgbm93KTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODQyOlx0c3RvbGVuID0gY29yZV9zdG9sZW4gLSB2Y3B1LVx1MDAzZWFyY2guc3RvbGVuX2xvZ2dlZDtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODQzOlx0dmNwdS1cdTAwM2VhcmNoLnN0b2xlbl9sb2dnZWQgPSBjb3JlX3N0b2xlbjtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODQ0Olx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2dmNwdS1cdTAwM2VhcmNoLnRiYWNjdF9sb2NrLCBmbGFncyk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjg0NTpcdHN0b2xlbiAmIzQzOz0gdmNwdS1cdTAwM2VhcmNoLmJ1c3lfc3RvbGVuO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4NDY6XHR2Y3B1LVx1MDAzZWFyY2guYnVzeV9zdG9sZW4gPSAwO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4NDc6XHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNnZjcHUtXHUwMDNlYXJjaC50YmFjY3RfbG9jaywgZmxhZ3MpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04NDgtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjg0OTpcdHZwYS1cdTAwM2VlbnF1ZXVlX2Rpc3BhdGNoX3RiID0gY3B1X3RvX2JlNjQoYmU2NF90b19jcHUodnBhLVx1MDAzZWVucXVldWVfZGlzcGF0Y2hfdGIpICYjNDM7IHN0b2xlbik7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTg1MC1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODUxOlx0X19rdm1wcGNfY3JlYXRlX2R0bF9lbnRyeSh2Y3B1LCB2cGEsIHZjLVx1MDAzZXBjcHUsIG5vdyAmIzQzOyBrdm1wcGNfZ2V0X3RiX29mZnNldCh2Y3B1KSwgc3RvbGVuKTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODUyLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4NTM6XHR2Y3B1LVx1MDAzZWFyY2gudnBhLmRpcnR5ID0gdHJ1ZTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODU0LX1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODU1LVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4NTY6c3RhdGljIHZvaWQga3ZtcHBjX3VwZGF0ZV92cGFfZGlzcGF0Y2hfcDkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04NTctXHRcdFx0XHQgICAgICAgc3RydWN0IGt2bXBwY192Y29yZSAqdmMsXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04NjMtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjg2NDpcdHZwYSA9IHZjcHUtXHUwMDNlYXJjaC52cGEucGlubmVkX2FkZHI7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTg2NS1cdGlmICghdnBhKVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODY4LVx0c3RvbGVuID0gdmMtXHUwMDNlc3RvbGVuX3RiO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4Njk6XHRzdG9sZW5fZGVsdGEgPSBzdG9sZW4gLSB2Y3B1LVx1MDAzZWFyY2guc3RvbGVuX2xvZ2dlZDtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODcwOlx0dmNwdS1cdTAwM2VhcmNoLnN0b2xlbl9sb2dnZWQgPSBzdG9sZW47XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTg3MS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODcyOlx0dnBhLVx1MDAzZWVucXVldWVfZGlzcGF0Y2hfdGIgPSBjcHVfdG9fYmU2NChzdG9sZW4pO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04NzMtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjg3NDpcdF9fa3ZtcHBjX2NyZWF0ZV9kdGxfZW50cnkodmNwdSwgdnBhLCB2Yy1cdTAwM2VwY3B1LCBub3csIHN0b2xlbl9kZWx0YSk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTg3NS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODc2Olx0dmNwdS1cdTAwM2VhcmNoLnZwYS5kaXJ0eSA9IHRydWU7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTg3Ny19XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTg3OC1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODc5Oi8qIFNlZSBpZiB0aGVyZSBpcyBhIGRvb3JiZWxsIGludGVycnVwdCBwZW5kaW5nIGZvciBhIHZjcHUgKi9cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODgwOnN0YXRpYyBib29sIGt2bXBwY19kb29yYmVsbF9wZW5kaW5nKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODgxLXtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTg4NC1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODg1Olx0aWYgKHZjcHUtXHUwMDNlYXJjaC5kb29yYmVsbF9yZXF1ZXN0KVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04ODYtXHRcdHJldHVybiB0cnVlO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4ODc6XHRpZiAoY3B1X2hhc19mZWF0dXJlKENQVV9GVFJfQVJDSF8zMDApKVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04ODgtXHRcdHJldHVybiBmYWxzZTtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTg5MC1cdCAqIEVuc3VyZSB0aGF0IHRoZSByZWFkIG9mIHZjb3JlLVx1MDAzZWRwZGVzIGNvbWVzIGFmdGVyIHRoZSByZWFkXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjg5MTpcdCAqIG9mIHZjcHUtXHUwMDNlZG9vcmJlbGxfcmVxdWVzdC4gIFRoaXMgYmFycmllciBtYXRjaGVzIHRoZVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04OTItXHQgKiBzbXBfd21iKCkgaW4ga3ZtcHBjX2d1ZXN0X2VudHJ5X2luamVjdCgpLlxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODk0LVx0c21wX3JtYigpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4OTU6XHR2YyA9IHZjcHUtXHUwMDNlYXJjaC52Y29yZTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODk2Olx0dGhyID0gdmNwdS1cdTAwM2V2Y3B1X2lkIC0gdmMtXHUwMDNlZmlyc3RfdmNwdWlkO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04OTctXHRyZXR1cm4gISEodmMtXHUwMDNlZHBkZXMgXHUwMDI2ICgxIFx1MDAzY1x1MDAzYyB0aHIpKTtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTg5OS1cblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNDo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzOTE4NwoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDU3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRlYnVnZ2luZyB0aGUgQ29tcGlsYXRpb24gRmFpbHVyZSoqCgpPa2F5LCBoZXJlJiMzOTtzIHRoZSBzaXR1YXRpb24uIFRoZSBidWlsZCBqdXN0IGNob2tlZCwgYW5kIHRoZSBlcnJvciBtZXNzYWdlIGNsZWFybHkgcG9pbnRzIHRvIGEgbWlzc2luZyBgY3B1YCB2YXJpYWJsZS4gVGhhdCYjMzk7cyBhIGNsYXNzaWMgLSBJIGNhbiYjMzk7dCBpbWFnaW5lIHRoaXMgaXMgYW4gaW50ZW50aW9uYWwgb3ZlcnNpZ2h0LiBJdCYjMzk7cyBub3QgYSBnbG9iYWwsIGFuZCBJJiMzOTttIGJldHRpbmcgdGhhdCYjMzk7cyB0aGUgY29yZSBpc3N1ZS4gVGhlIHBhdGNoIGlzIHByb2JhYmx5IHJlZmVyZW5jaW5nIGl0IHNvbWV3aGVyZS4KCkJ1dCBob2xkIG9uLCB0aGlzIGlzIHdoZXJlIEkgbmVlZCB0byBiZSBtb3JlIGNhcmVmdWwuIEl0JiMzOTtzICpwb3NzaWJsZSogYGNwdWAgaXMgYSBtYWNybyBkZWZpbmVkIGluIGEgaGVhZGVyIGZpbGUuIEkmIzM5O3ZlIGJlZW4gYnVybmVkIGJ5IHRoYXQgYmVmb3JlLiBBbHdheXMgY2hlY2sgdGhlIGluY2x1ZGVzISBTbywgcmF0aGVyIHRoYW4gYXNzdW1lIGl0JiMzOTtzIGp1c3QgYSB2YXJpYWJsZSwgbGV0IG1lIHF1aWNrbHkgZ2xhbmNlIGF0IHRoZSB1c3VhbCBzdXNwZWN0cyBpbiB0aGUgYGFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9gIGRpcmVjdG9yeS4gVGhhdCYjMzk7cyB3aGVyZSBJIGV4cGVjdCB0byBmaW5kIGFueSBwcm9jZXNzb3Itc3BlY2lmaWMgZGVmaW5pdGlvbnMgb24gYSBQb3dlclBDIHN5c3RlbS4gTGV0JiMzOTtzIHNlZSBpZiBgY3B1YCBpcyBkZWZpbmVkIGFzIGEgbWFjcm8gaW4gb25lIG9mIHRob3NlIGhlYWRlcnMuIEkgbmVlZCB0byBrbm93IGlmIHRoaXMgaXMgYSBzaW1wbGUgbWFjcm8gZXhwYW5zaW9uIGlzc3VlLCBvciBpZiB0aGlzIGlzIGEgZGVlcGVyIHByb2JsZW0gd2l0aCB0aGUgcGF0Y2ggaXRzZWxmLiBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IHdpdGggdGhlIG1vc3QgbGlrZWx5IGNhbmRpZGF0ZXMsIGxpa2UgdGhlIG1haW4gYXJjaGl0ZWN0dXJlIGhlYWRlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDQ6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDsjZGVmaW5lIGNwdSAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDQ6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzk1MzMKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHJlbmRlcmVkIGFzIGEgZmlyc3QtcGVyc29uIGFjY291bnQgc3VpdGFibGUgZm9yIGEgZmVsbG93IGV4cGVydDoKCioqSW52ZXN0aWdhdGluZyB0aGUgYGNwdWAgTWFjcm8gaW4gTGludXggSGVhZGVyIEZpbGVzKioKCkFscmlnaHQsIEkmIzM5O20gdGhpbmtpbmcgSSBuZWVkIHRvIHNlZSBpZiB0aGUgc3ltYm9sIGBjcHVgIGlzIGRlZmluZWQgYXMgYSBtYWNybyB3aXRoaW4gdGhlIGBpbmNsdWRlL2xpbnV4L2AgZGlyZWN0b3J5LiBUaGF0JiMzOTtzIHRoZSBvYnZpb3VzIHBsYWNlIHRvIHN0YXJ0LiBHaXZlbiB0aGUgY29udGV4dCBvZiBMaW51eCBrZXJuZWwgZGV2ZWxvcG1lbnQgYW5kIHBlcmZvcm1hbmNlLCBgY3B1YCBjb3VsZCBiZSBhbnl0aGluZyBmcm9tIGEgc2ltcGxlIG1hY3JvIGV4cGFuZGluZyB0byByZWdpc3RlciBuYW1lcywgdG8gbW9yZSBjb21wbGV4IGxvZ2ljIHJlbGF0ZWQgdG8gQ1BVIGFyY2hpdGVjdHVyZSBkZXRlY3Rpb24sIG9yIGV2ZW4gYSBjb21wb25lbnQgaW4gYSBwb3dlciBtYW5hZ2VtZW50IHNjaGVtZS4gSSYjMzk7bGwgbmVlZCB0byBjb25maXJtIHdoYXQgaXQgYWN0dWFsbHkgKmlzKiwgYW5kIHRoYXQgd2lsbCBkZXRlcm1pbmUgaG93IEkgcHJvY2VlZC4gVGltZSB0byBkaXZlIGludG8gdGhlIGluY2x1ZGVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNDo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0OyNkZWZpbmUgY3B1ICYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDQ6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzk3NDMKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiAyMDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRGVidWdnaW5nIGEgQ29tcGlsYXRpb24gRmFpbHVyZSoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCwgYW5kIGl0JiMzOTtzIGZhaWxpbmcgdG8gY29tcGlsZS4gVGhlIGVycm9yIGxvb2tzIGxpa2UgYSB0eXBvOiBgY3B1LSZndDthcmNoLmRvb3JiZWxsX3JlcXVlc3QgPSAwO2AuIFRoYXQmIzM5O3MgYSBjbGFzc2ljLCBJJiMzOTt2ZSBzZWVuIGl0IGEgdGhvdXNhbmQgdGltZXMuIEEgbWlzc2luZyBvciBpbmNvcnJlY3QgbWVtYmVyIGFjY2VzcyBpcyBhIHByZXR0eSBvYnZpb3VzIGNvbXBpbGF0aW9uIHN0b3BwZXIuIFRoZSB0aGluZyBpcywgaWYgaXQgZG9lc24mIzM5O3QgY29tcGlsZSwgSSBjYW4mIzM5O3QgZXZlbiBmdXp6IGl0LCB3aGljaCBpcyB0aGUgaW1tZWRpYXRlIG5leHQgc3RlcC4KCkZpcnN0LCBsZXQgbWUgY29uZmlybSB0aGF0IGBjcHVgIGlzbiYjMzk7dCBkZWNsYXJlZCBpbiB0aGUgZnVuY3Rpb24gYGt2bWh2X3ZjcHVfZW50cnlfbmVzdGVkdjJgLiBMZXQmIzM5O3MgdGFrZSBhIHF1aWNrIGxvb2sgYXQgdGhlIGNvZGUgYmxvY2sgcHJvdmlkZWQgaW4gdGhlIHBhdGNoLi4uIFllcCwgSSYjMzk7bSByaWdodC4gSXQmIzM5O3Mgbm90IGRlY2xhcmVkIHRoZXJlLgoKTm93LCB3YWl0IGEgc2Vjb25kLi4uIGlzIHRoZXJlIGEgY2hhbmNlIGBjcHVgIGlzIGEgbWFjcm8/IEl0JiMzOTtzIG5vdCB1bmNvbW1vbiB0byB1c2UgbWFjcm9zIGxpa2UgYGNwdWAgdG8gZXhwYW5kIHRvIHNvbWV0aGluZyBsaWtlIGBzbXBfcHJvY2Vzc29yX2lkKClgIGluIHRoaXMga2luZCBvZiBrZXJuZWwgY29kZS4gTGV0JiMzOTtzIGRpZyBpbiBhbmQgc2VlIGlmIGBjcHVgIGlzIGRlZmluZWQgYW55d2hlcmUgYXMgYSBtYWNyby4gVGhhdCB3b3VsZCBiZSBhIHNuZWFreSBsaXR0bGUgYnVnLiBJIG5lZWQgdG8gYmUgdGhvcm91Z2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA0OjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7I2RlZmluZSBjcHVcXGImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNDo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDIzNAoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDIzOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEZ1enppbmcgV29ydGhpbmVzcyBvZiBhIENvbW1pdHRlZCBQYXRjaCoqCgpPa2F5LCB0aGlzIHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCwgYnV0IGxldCBtZSB0aGluayB0aGlzIHRocm91Z2guIE5vLCB0aGUgcGF0Y2ggKmRvZXNuJiMzOTt0KiBsb29rIHJpZ2h0LiBUaGlzIG1ha2VzIG1lIHN1c3BlY3QgYSBjb21waWxhdGlvbiBlcnJvci4gSWYgdGhlIHBhdGNoIGludHJvZHVjZXMgYSBjb21waWxhdGlvbiBlcnJvciwgb2J2aW91c2x5IEkgY2FuJiMzOTt0IGNvbXBpbGUgb3IgdGVzdCBpdC4gQnV0IGhvbGQgb24sIHRoZSBwcm9tcHQgc2F5cyB0aGUgY2hhbmdlcyBoYXZlICphbHJlYWR5KiBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZC4gSWYgdGhhdCYjMzk7cyB0aGUgY2FzZSwgKm1heWJlKiBpdCBjb21waWxlZCBhbHJlYWR5PwoKQWgsIGJ1dCB0aGVuIEkgcmVtZW1iZXI6IHRoZSBwcm9tcHQmIzM5O3MgY29uZGl0aW9uOiAmIzM0O1JldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnMuLi4gY29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyYjMzQ7LiBJZiBpdCAqZG9lc24mIzM5O3QqIGNvbXBpbGUsIGl0JiMzOTtzIGRlZmluaXRlbHkgbm90IGZ1enotd29ydGh5IGJlY2F1c2UgaXQmIzM5O3MgdW51c2FibGU7IHRoZXJlJiMzOTtzIG5vIHdheSB0byBldmVuIHN0YXJ0IHRlc3RpbmcuIFRoZXJlIGlzIG5vIGV4cGxpY2l0IHJ1bGUgZm9yICYjMzQ7ZG9lcyBub3QgY29tcGlsZSYjMzQ7LgoKU28sIGlmIGl0IGZhaWxzIHRvIGNvbXBpbGUsIEkgc2hvdWxkIHByb2JhYmx5IHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYC4gTGV0JiMzOTtzIGp1c3QgbWFrZSBzdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IG90aGVyIGZhY3RvcnMgSSYjMzk7bSBvdmVybG9va2luZy4gT2theSwgbGV0IG1lIHF1aWNrbHkgZG91YmxlIGNoZWNrIGlmIHRoZXJlIGFyZSBvdGhlciBmaWxlcyBtb2RpZmllZCBpbiB0aGUgZGlmZi4gQWgsIHRoZSBkaWZmIG9ubHkgc2hvd3MgY2hhbmdlcyB0byBgYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuY2AuIElzIHRoZXJlIGFueSBwb3NzaWJsZSBnbG9iYWwgdmFyaWFibGUgdXNhZ2UgaGVyZT8gQ291bGQgYGNwdWAgYmUgYSBnbG9iYWwgdmFyaWFibGU/IExldCYjMzk7cyBzZWFyY2ggdGhlIGtlcm5lbCBjb2RlYmFzZSBmb3IgaW5zdGFuY2VzIG9mIGBzdHJ1Y3Qga3ZtX3ZjcHUgKmNwdWAgYW5kIG1ha2Ugc3VyZS4gVGhpcyB3aWxsIGhlbHAgZGV0ZXJtaW5lIGlmIGl0JiMzOTtzIGZ1enotd29ydGh5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNDo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdHJ1Y3Qga3ZtX3ZjcHUgXFwqY3B1JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIveDg2L3Nldi5jPTE2MT1zdHJ1Y3Qga3ZtX3ZtICp2bV9zZXZfY3JlYXRlX3dpdGhfb25lX3ZjcHUodTMyIHR5cGUsIHZvaWQgKmd1ZXN0X2NvZGUsXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi94ODYvc2V2LmMtMTY4LVx0c3RydWN0IGt2bV92bSAqdm07XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL3g4Ni9zZXYuYzoxNjk6XHRzdHJ1Y3Qga3ZtX3ZjcHUgKmNwdXNbMV07XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL3g4Ni9zZXYuYy0xNzAtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA0OjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwOTg3CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMjUyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRlYnVnZ2luZyBhIFBvdGVudGlhbCBUeXBvKioKCk9rYXksIHRoZXJlJiMzOTtzIG5vIGdsb2JhbCBgY3B1YCB2YXJpYWJsZSBpbiBzaWdodC4gVGhhdCYjMzk7cyBpbW1lZGlhdGVseSBvYnZpb3VzLiBMZXQmIzM5O3MgcmUtZXhhbWluZSB0aGlzIGNvZGUgcGF0Y2ggY2xvc2VseS4KCmBgYGMKJiM0MzsJLyogQ2hlY2sgaWYgcHJpdmlsZWdlZCBkb29yIGJlbGwgd2FzIHJlcXVlc3RlZCBhbmQgaGFuZGxlZCAqLwomIzQzOwlpZiAodmNwdS0mZ3Q7YXJjaC52Y29yZS0mZ3Q7ZHBkZXMpIHsKJiM0MzsJCWt2bWh2X25lc3RlZHYyX2NhY2hlZF9yZWxvYWQodmNwdSwgS1ZNUFBDX0dTSURfRFBERVMpOwomIzQzOwkJaWYgKHZjcHUtJmd0O2FyY2gudmNvcmUtJmd0O2RwZGVzKQomIzQzOwkJCXZjcHUtJmd0O2FyY2guZG9vcmJlbGxfcmVxdWVzdCB8PSB2Y3B1LSZndDthcmNoLnZjb3JlLSZndDtkcGRlczsKJiM0MzsJCWVsc2UKJiM0MzsJCQljcHUtJmd0O2FyY2guZG9vcmJlbGxfcmVxdWVzdCA9IDA7CiYjNDM7CX0gZWxzZSB7CiYjNDM7CQl2Y3B1LSZndDthcmNoLmRvb3JiZWxsX3JlcXVlc3QgPSAwOwomIzQzOwl9CmBgYAoKUmlnaHQsIGl0JiMzOTtzIHByZXR0eSBjbGVhciB0aGF0IGBjcHVgIGluIHRoYXQgYGVsc2VgIGJsb2NrIHNob3VsZCBiZSBgdmNwdWAuIFRoYXQmIzM5O3MgYSBjbGFzc2ljIHR5cG8uICBUaGUgY29tcGlsZXIgd291bGQgZGVmaW5pdGVseSBjYXRjaCB0aGlzLCBzbyBpdCYjMzk7cyBub3QgZnVuY3Rpb25hbCBhcyB3cml0dGVuLgoKQnV0IHdhaXQsIGhvbGQgb24uIENvdWxkIGl0IGJlIHRoYXQgYGNwdWAgaXMgKmFjdHVhbGx5KiBhIG1hY3JvPyBJIHNob3VsZCBjaGVjayB0aGUgZmlsZSB3aGVyZSB0aGlzIGlzIGRlZmluZWQsIGBhcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jYCwganVzdCB0byBiZSBjZXJ0YWluLiBNYWNyb3MgY2FuIGJlIHNuZWFreS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDQ6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDsjZGVmaW5lIGNwdSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNDo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTU4NgoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDgwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkNvbXBpbGF0aW9uIEVycm9yIEZvdW5kIC0gUmV0aGlua2luZyBBcHByb2FjaCoqCgpBbHJpZ2h0LCBuby4gVGhpcyBpc24mIzM5O3QgYSBzaW1wbGUgb3ZlcnNpZ2h0OyBpdCYjMzk7cyBhIGNvbXBpbGF0aW9uIGVycm9yLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIG1hcmsgYFdvcnRoRnV6emluZz1mYWxzZWAgYW5kIGNsZWFybHkgc3RhdGUgdGhhdCB0aGUgcGF0Y2ggaW50cm9kdWNlcyBhIGNvbXBpbGF0aW9uIGlzc3VlIOKAkyB0aGUgY29kZSB1c2VzIGBjcHVgIHdoZXJlIGl0IHNob3VsZCB1c2UgYHZjcHVgLiBUaGF0JiMzOTtzIHRoZSBvYnZpb3VzIHJvdXRlLgoKQnV0IGhvbGQgb24gYSBzZWNvbmQuIEJlZm9yZSBJIHJ1c2ggdG8ganVkZ21lbnQsIGlzIHRoZXJlIGV2ZW4gYSAqcmVtb3RlKiBwb3NzaWJpbGl0eSB0aGF0IGBjcHVgIGlzIGEgdmFsaWQgdmFyaWFibGUgaW4gdGhpcyBjb250ZXh0PyBJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLiBKdXN0IGJlY2F1c2UgaXQmIzM5O3MgKmxpa2VseSogYSB0eXBvIGRvZXNuJiMzOTt0IG1lYW4gaXQgKmlzKiBvbmUuIExldCBtZSBnbyBiYWNrIGFuZCByZS1leGFtaW5lIGBhcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jYC4gSSBuZWVkIHRvIHJ1bGUgb3V0IGFueSBzdWJ0bGUgbnVhbmNlcyBpbiB0aGF0IHNlY3Rpb24gb2YgY29kZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDQ6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y3B1LVx1MDAzZWFyY2guZG9vcmJlbGxfcmVxdWVzdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYz04ODA9c3RhdGljIGJvb2wga3ZtcHBjX2Rvb3JiZWxsX3BlbmRpbmcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODg0LVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4ODU6XHRpZiAodmNwdS1cdTAwM2VhcmNoLmRvb3JiZWxsX3JlcXVlc3QpXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTg4Ni1cdFx0cmV0dXJuIHRydWU7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYz0xNTM1PXN0YXRpYyBpbnQga3ZtcHBjX2VtdWxhdGVfZG9vcmJlbGxfaW5zdHIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMTU2MC1cdFx0XHRicmVhaztcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MTU2MTpcdFx0aWYgKCF0dmNwdS1cdTAwM2VhcmNoLmRvb3JiZWxsX3JlcXVlc3QpIHtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MTU2MjpcdFx0XHR0dmNwdS1cdTAwM2VhcmNoLmRvb3JiZWxsX3JlcXVlc3QgPSAxO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0xNTYzLVx0XHRcdGt2bXBwY19mYXN0X3ZjcHVfa2lja19odih0dmNwdSk7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0xNTcwLVx0XHR2Y3B1LVx1MDAzZWFyY2gudmNvcmUtXHUwMDNlZHBkZXMgPSAwO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoxNTcxOlx0XHR2Y3B1LVx1MDAzZWFyY2guZG9vcmJlbGxfcmVxdWVzdCA9IDA7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTE1NzItXHRcdGJyZWFrO1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM9MjIzMD1zdGF0aWMgaW50IGt2bXBwY19nZXRfb25lX3JlZ19odihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBpZCxcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTIzMTYtXHRcdGlmIChjcHVfaGFzX2ZlYXR1cmUoQ1BVX0ZUUl9BUkNIXzMwMCkpXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjIzMTc6XHRcdFx0KnZhbCA9IGdldF9yZWdfdmFsKGlkLCB2Y3B1LVx1MDAzZWFyY2guZG9vcmJlbGxfcmVxdWVzdCk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTIzMTgtXHRcdGVsc2Vcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jPTI0ODg9c3RhdGljIGludCBrdm1wcGNfc2V0X29uZV9yZWdfaHYoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgaWQsXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yNTY4LVx0XHRpZiAoY3B1X2hhc19mZWF0dXJlKENQVV9GVFJfQVJDSF8zMDApKVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyNTY5Olx0XHRcdHZjcHUtXHUwMDNlYXJjaC5kb29yYmVsbF9yZXF1ZXN0ID0gc2V0X3JlZ192YWwoaWQsICp2YWwpIFx1MDAyNiAxO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yNTcwLVx0XHRlbHNlXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYz00MjQ5PXN0YXRpYyBpbnQga3ZtaHZfdmNwdV9lbnRyeV9uZXN0ZWR2MihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCB0aW1lX2xpbWl0LFxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNDI2My1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NDI2NDpcdGlmICh2Y3B1LVx1MDAzZWFyY2guZG9vcmJlbGxfcmVxdWVzdClcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNDI2NS1cdFx0a3ZtcHBjX3NldF9kcGRlcyh2Y3B1LCAxKTtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQzMDEtXHRcdGlmICh2Y3B1LVx1MDAzZWFyY2gudmNvcmUtXHUwMDNlZHBkZXMpXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjQzMDI6XHRcdFx0dmNwdS1cdTAwM2VhcmNoLmRvb3JiZWxsX3JlcXVlc3QgfD0gdmNwdS1cdTAwM2VhcmNoLnZjb3JlLVx1MDAzZWRwZGVzO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00MzAzLVx0XHRlbHNlXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjQzMDQ6XHRcdFx0Y3B1LVx1MDAzZWFyY2guZG9vcmJlbGxfcmVxdWVzdCA9IDA7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQzMDUtXHR9IGVsc2Uge1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo0MzA2Olx0XHR2Y3B1LVx1MDAzZWFyY2guZG9vcmJlbGxfcmVxdWVzdCA9IDA7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQzMDctXHR9XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYz00MzE5PXN0YXRpYyBpbnQga3ZtaHZfdmNwdV9lbnRyeV9wOV9uZXN0ZWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgdGltZV9saW1pdCwgdW5zaWduZWQgbG9uZyBscGNyLCB1NjQgKnRiKVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNDM2OS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NDM3MDpcdGlmICh2Y3B1LVx1MDAzZWFyY2guZG9vcmJlbGxfcmVxdWVzdClcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NDM3MTpcdFx0dmNwdS1cdTAwM2VhcmNoLmRvb3JiZWxsX3JlcXVlc3QgPSAwO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00MzcyLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNDo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MzIxMgoJCQkJCQkJb3V0cHV0OiA4MgoJCQkJCQkJdGhvdWdodHM6IDYxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHNpdHVhdGlvbjoKCioqQWRkcmVzc2luZyBhIExpa2VseSBUeXBvcyBhbmQgRnV6emluZyBJbmFjY2Vzc2liaWxpdHkqKgoKT2theSwgSSYjMzk7dmUgZ290IGl0LiBUaGF0IGxpbmUsIGBjcHUtJmd0O2FyY2guZG9vcmJlbGxfcmVxdWVzdCA9IDA7YC4uLiB5ZWFoLCB0aGF0JiMzOTtzIGFsbW9zdCBjZXJ0YWlubHkgYSB0eXBvLiBJdCBzaG91bGQgYmUgYHZjcHUtJmd0O2FyY2guZG9vcmJlbGxfcmVxdWVzdCA9IDA7YCwgSSYjMzk7bSBwcmV0dHkgY29uZmlkZW50IGFib3V0IHRoYXQuIEkgbWVhbiwgaXQmIzM5O3Mgbm90IGV2ZW4gY29tcGlsaW5nIGFzIGl0IGlzLCB3aGljaCBpcyBhIHByZXR0eSBjbGVhciBpbmRpY2F0b3IuIEFuZCB0aGF0JiMzOTtzIGEgcHJvYmxlbSBiZWNhdXNlIGlmIGl0IGRvZXNuJiMzOTt0IGNvbXBpbGUsIGl0JiMzOTtzIGNvbXBsZXRlbHkgaW5hY2Nlc3NpYmxlIGZvciBhbnkga2luZCBvZiBmdXp6aW5nLiBTbywgZ2l2ZW4gdGhhdCBpbW1lZGlhdGUgcm9hZGJsb2NrLCB0aGVyZSYjMzk7cyBubyBwb2ludCBpbiBmdXJ0aGVyIGFuYWx5c2lzLiBJIG5lZWQgdG8gZmxhZyBpdCBhY2NvcmRpbmdseSwgSSYjMzk7bGwgc2V0IFdvcnRoRnV6emluZz1mYWxzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDQ6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjb250YWlucyBhIGNvbXBpbGF0aW9uIGVycm9yOiBgY3B1LVx1MDAzZWFyY2guZG9vcmJlbGxfcmVxdWVzdCA9IDA7YCBzaG91bGQgYmUgYHZjcHUtXHUwMDNlYXJjaC5kb29yYmVsbF9yZXF1ZXN0ID0gMDtgLiBTaW5jZSBpdCBmYWlscyB0byBjb21waWxlLCBpdCBjYW5ub3QgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY29udGFpbnMgYSBjb21waWxhdGlvbiBlcnJvcjogYGNwdS1cdTAwM2VhcmNoLmRvb3JiZWxsX3JlcXVlc3QgPSAwO2Agc2hvdWxkIGJlIGB2Y3B1LVx1MDAzZWFyY2guZG9vcmJlbGxfcmVxdWVzdCA9IDA7YC4gU2luY2UgaXQgZmFpbHMgdG8gY29tcGlsZSwgaXQgY2Fubm90IGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwNDo1NzozOC4yNDg3NjYxMDVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MTA2MzgwNTExOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY29udGFpbnMgYSBjb21waWxhdGlvbiBlcnJvcjogYGNwdS1cXHUwMDNlYXJjaC5kb29yYmVsbF9yZXF1ZXN0ID0gMDtgIHNob3VsZCBiZSBgdmNwdS1cXHUwMDNlYXJjaC5kb29yYmVsbF9yZXF1ZXN0ID0gMDtgLiBTaW5jZSBpdCBmYWlscyB0byBjb21waWxlLCBpdCBjYW5ub3QgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDQ6NTc6MzguMjQ4NzcyNTY1WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjY0MjI5NDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA0MGRhMDhlNTg1MTQzNDNmY2I4ODViOGE4MmFkMDFlMjhiYzMxOWM0XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gQXVnIDMgMDQ6NTc6MzcgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYyBiL2FyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmNcXG5pbmRleCA2MWRiZWVhMzE3ZjNiLi40MGY4NzE3YjhhN2Q1IDEwMDY0NFxcbi0tLSBhL2FyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmNcXG4rKysgYi9hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jXFxuQEAgLTE1LDYgKzE1LDcgQEBcXG4gICogYnkgQWxleGFuZGVyIEdyYWYgXFx1MDAzY2FncmFmQHN1c2UuZGVcXHUwMDNlLlxcbiAgKi9cXG4gXFxuKyNpbmNsdWRlIFxcXCJhc20vZ3Vlc3Qtc3RhdGUtYnVmZmVyLmhcXFwiXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9rdm1faG9zdC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgva2VybmVsLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9lcnIuaFxcdTAwM2VcXG5AQCAtNDI1MywxMSArNDI1NCw2IEBAIHN0YXRpYyBpbnQga3ZtaHZfdmNwdV9lbnRyeV9uZXN0ZWR2MihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCB0aW1lX2xpbWl0LFxcbiBcXHRpbnQgdHJhcDtcXG4gXFx0bG9uZyByYztcXG4gXFxuLVxcdGlmICh2Y3B1LVxcdTAwM2VhcmNoLmRvb3JiZWxsX3JlcXVlc3QpIHtcXG4tXFx0XFx0dmNwdS1cXHUwMDNlYXJjaC5kb29yYmVsbF9yZXF1ZXN0ID0gMDtcXG4tXFx0XFx0a3ZtcHBjX3NldF9kcGRlcyh2Y3B1LCAxKTtcXG4tXFx0fVxcbi1cXG4gXFx0aW8gPSBcXHUwMDI2dmNwdS1cXHUwMDNlYXJjaC5uZXN0ZWR2Ml9pbztcXG4gXFxuIFxcdG1zciA9IG1mbXNyKCk7XFxuQEAgLTQyNjUsNiArNDI2MSw5IEBAIHN0YXRpYyBpbnQga3ZtaHZfdmNwdV9lbnRyeV9uZXN0ZWR2MihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCB0aW1lX2xpbWl0LFxcbiBcXHRpZiAobGF6eV9pcnFfcGVuZGluZygpKVxcbiBcXHRcXHRyZXR1cm4gMDtcXG4gXFxuK1xcdGlmICh2Y3B1LVxcdTAwM2VhcmNoLmRvb3JiZWxsX3JlcXVlc3QpXFxuK1xcdFxcdGt2bXBwY19zZXRfZHBkZXModmNwdSwgMSk7XFxuK1xcbiBcXHRyYyA9IGt2bWh2X25lc3RlZHYyX2ZsdXNoX3ZjcHUodmNwdSwgdGltZV9saW1pdCk7XFxuIFxcdGlmIChyYyBcXHUwMDNjIDApXFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbkBAIC00Mjk2LDYgKzQyOTUsMTcgQEAgc3RhdGljIGludCBrdm1odl92Y3B1X2VudHJ5X25lc3RlZHYyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IHRpbWVfbGltaXQsXFxuIFxcdGlmIChyYyBcXHUwMDNjIDApXFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXG4rXFx0LyogQ2hlY2sgaWYgcHJpdmlsZWdlZCBkb29yIGJlbGwgd2FzIHJlcXVlc3RlZCBhbmQgaGFuZGxlZCAqL1xcbitcXHRpZiAodmNwdS1cXHUwMDNlYXJjaC52Y29yZS1cXHUwMDNlZHBkZXMpIHtcXG4rXFx0XFx0a3ZtaHZfbmVzdGVkdjJfY2FjaGVkX3JlbG9hZCh2Y3B1LCBLVk1QUENfR1NJRF9EUERFUyk7XFxuK1xcdFxcdGlmICh2Y3B1LVxcdTAwM2VhcmNoLnZjb3JlLVxcdTAwM2VkcGRlcylcXG4rXFx0XFx0XFx0dmNwdS1cXHUwMDNlYXJjaC5kb29yYmVsbF9yZXF1ZXN0IHw9IHZjcHUtXFx1MDAzZWFyY2gudmNvcmUtXFx1MDAzZWRwZGVzO1xcbitcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdGNwdS1cXHUwMDNlYXJjaC5kb29yYmVsbF9yZXF1ZXN0ID0gMDtcXG4rXFx0fSBlbHNlIHtcXG4rXFx0XFx0dmNwdS1cXHUwMDNlYXJjaC5kb29yYmVsbF9yZXF1ZXN0ID0gMDtcXG4rXFx0fVxcbitcXG4gXFx0dGltZXJfcmVhcm1faG9zdF9kZWMoKnRiKTtcXG4gXFxuIFxcdC8qIFJlY29yZCBjb250ZXh0IHN3aXRjaCBhbmQgZ3Vlc3RfcnVuX3RpbWUgZGF0YSAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwNDo1NzozOC42NzYxMTk2MzhaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo4MDYzNjQ0NTcwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY29udGFpbnMgYSBjb21waWxhdGlvbiBlcnJvcjogYGNwdS1cXHUwMDNlYXJjaC5kb29yYmVsbF9yZXF1ZXN0ID0gMDtgIHNob3VsZCBiZSBgdmNwdS1cXHUwMDNlYXJjaC5kb29yYmVsbF9yZXF1ZXN0ID0gMDtgLiBTaW5jZSBpdCBmYWlscyB0byBjb21waWxlLCBpdCBjYW5ub3QgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNDBkYTA4ZTU4NTE0MzQzZmNiODg1YjhhODJhZDAxZTI4YmMzMTljNFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDMgMDQ6NTc6MzcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jIGIvYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuY1xuaW5kZXggNjFkYmVlYTMxN2YzYi4uNDBmODcxN2I4YTdkNSAxMDA2NDRcbi0tLSBhL2FyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmNcbisrKyBiL2FyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmNcbkBAIC0xNSw2ICsxNSw3IEBAXG4gICogYnkgQWxleGFuZGVyIEdyYWYgXHUwMDNjYWdyYWZAc3VzZS5kZVx1MDAzZS5cbiAgKi9cbiBcbisjaW5jbHVkZSBcImFzbS9ndWVzdC1zdGF0ZS1idWZmZXIuaFwiXG4gI2luY2x1ZGUgXHUwMDNjbGludXgva3ZtX2hvc3QuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2tlcm5lbC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZXJyLmhcdTAwM2VcbkBAIC00MjUzLDExICs0MjU0LDYgQEAgc3RhdGljIGludCBrdm1odl92Y3B1X2VudHJ5X25lc3RlZHYyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IHRpbWVfbGltaXQsXG4gXHRpbnQgdHJhcDtcbiBcdGxvbmcgcmM7XG4gXG4tXHRpZiAodmNwdS1cdTAwM2VhcmNoLmRvb3JiZWxsX3JlcXVlc3QpIHtcbi1cdFx0dmNwdS1cdTAwM2VhcmNoLmRvb3JiZWxsX3JlcXVlc3QgPSAwO1xuLVx0XHRrdm1wcGNfc2V0X2RwZGVzKHZjcHUsIDEpO1xuLVx0fVxuLVxuIFx0aW8gPSBcdTAwMjZ2Y3B1LVx1MDAzZWFyY2gubmVzdGVkdjJfaW87XG4gXG4gXHRtc3IgPSBtZm1zcigpO1xuQEAgLTQyNjUsNiArNDI2MSw5IEBAIHN0YXRpYyBpbnQga3ZtaHZfdmNwdV9lbnRyeV9uZXN0ZWR2MihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCB0aW1lX2xpbWl0LFxuIFx0aWYgKGxhenlfaXJxX3BlbmRpbmcoKSlcbiBcdFx0cmV0dXJuIDA7XG4gXG4rXHRpZiAodmNwdS1cdTAwM2VhcmNoLmRvb3JiZWxsX3JlcXVlc3QpXG4rXHRcdGt2bXBwY19zZXRfZHBkZXModmNwdSwgMSk7XG4rXG4gXHRyYyA9IGt2bWh2X25lc3RlZHYyX2ZsdXNoX3ZjcHUodmNwdSwgdGltZV9saW1pdCk7XG4gXHRpZiAocmMgXHUwMDNjIDApXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuQEAgLTQyOTYsNiArNDI5NSwxNyBAQCBzdGF0aWMgaW50IGt2bWh2X3ZjcHVfZW50cnlfbmVzdGVkdjIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgdGltZV9saW1pdCxcbiBcdGlmIChyYyBcdTAwM2MgMClcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4rXHQvKiBDaGVjayBpZiBwcml2aWxlZ2VkIGRvb3IgYmVsbCB3YXMgcmVxdWVzdGVkIGFuZCBoYW5kbGVkICovXG4rXHRpZiAodmNwdS1cdTAwM2VhcmNoLnZjb3JlLVx1MDAzZWRwZGVzKSB7XG4rXHRcdGt2bWh2X25lc3RlZHYyX2NhY2hlZF9yZWxvYWQodmNwdSwgS1ZNUFBDX0dTSURfRFBERVMpO1xuK1x0XHRpZiAodmNwdS1cdTAwM2VhcmNoLnZjb3JlLVx1MDAzZWRwZGVzKVxuK1x0XHRcdHZjcHUtXHUwMDNlYXJjaC5kb29yYmVsbF9yZXF1ZXN0IHw9IHZjcHUtXHUwMDNlYXJjaC52Y29yZS1cdTAwM2VkcGRlcztcbitcdFx0ZWxzZVxuK1x0XHRcdGNwdS1cdTAwM2VhcmNoLmRvb3JiZWxsX3JlcXVlc3QgPSAwO1xuK1x0fSBlbHNlIHtcbitcdFx0dmNwdS1cdTAwM2VhcmNoLmRvb3JiZWxsX3JlcXVlc3QgPSAwO1xuK1x0fVxuK1xuIFx0dGltZXJfcmVhcm1faG9zdF9kZWMoKnRiKTtcbiBcbiBcdC8qIFJlY29yZCBjb250ZXh0IHN3aXRjaCBhbmQgZ3Vlc3RfcnVuX3RpbWUgZGF0YSAqL1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDQ6NTc6MzguNjc2MTIxNzg5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDM0MTY5MTcyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEtWTS9Qb3dlclBDIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuY2AsIHNwZWNpZmljYWxseSB0aGUgYGt2bWh2X3ZjcHVfZW50cnlfbmVzdGVkdjJgIGZ1bmN0aW9uLiBJdCBzZWVtcyBsaWtlIHdlJ3JlIG1vdmluZyBzb21lIGxvZ2ljIGFyb3VuZCByZWxhdGVkIHRvIGB2Y3B1LVx1MDAzZWFyY2guZG9vcmJlbGxfcmVxdWVzdGAgYW5kIGBrdm1wcGNfc2V0X2RwZGVzYC4gSG1tLCBhbHNvIGxvb2tzIGxpa2UgdGhlcmUncyBhbiBhZGRlZCBjaGVjayBmb3IgYHZjcHUtXHUwMDNlYXJjaC52Y29yZS1cdTAwM2VkcGRlc2AgYW5kIGFuIHVwZGF0ZSB0byBgdmNwdS1cdTAwM2VhcmNoLmRvb3JiZWxsX3JlcXVlc3RgIHRoZXJlIHRvby4gVGhpcyBjb3VsZCBiZSBpbnRlcmVzdGluZyBmcm9tIGEgcGVyZm9ybWFuY2UgcGVyc3BlY3RpdmUsIG9yIG1heWJlIHJlbGF0ZWQgdG8gc29tZSBuZXcgZmVhdHVyZS5cblxuTGV0IG1lIGp1c3QgcXVpY2tseSBzY2FuIGZvciBwb3RlbnRpYWwgdHlwb3Mgb3Igc3VidGxlIGJ1Z3MuIEFoLCB3YWl0IGEgc2Vjb25kLiBJIHNlZSB0aGlzIGxpbmU6IGBjcHUtXHUwMDNlYXJjaC5kb29yYmVsbF9yZXF1ZXN0ID0gMDtgLiBUaGF0IGxvb2tzIGEgYml0IG9kZDsgaXMgYGNwdWAgYWN0dWFsbHkgaW4gc2NvcGUgd2l0aGluIGBrdm1odl92Y3B1X2VudHJ5X25lc3RlZHYyYD8gSSBkb24ndCByZWNhbGwgc2VlaW5nIGl0IGRlZmluZWQgdGhlcmUuIEJldHRlciBkb3VibGUtY2hlY2sgdGhlIGNvbnRleHQsIGVzcGVjaWFsbHkgYXJvdW5kIHRoYXQgYXJlYSBvZiBgYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuY2AgYXJvdW5kIGxpbmUgNDI5NS4gVGhpcyBjb3VsZCBiZSBhIHNpbXBsZSB0eXBvLCBvciBpdCBtaWdodCBwb2ludCB0byBhIGJpZ2dlciBpc3N1ZSB3aXRoIGhvdyB0aGF0IHZhcmlhYmxlIGlzIGJlaW5nIHVzZWQuIExldCdzIHNlZS4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTgyLCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDQ6NTc6NDMuMDE3ODE2MTEyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2OTEzNTI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bWh2X3ZjcHVfZW50cnlfbmVzdGVkdjJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jPTQyNDQ9c3RhdGljIHZvaWQgZG9fdHJhY2VfbmVzdGVkX2NzX3RpbWUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00MjQ4LVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NDI0OTpzdGF0aWMgaW50IGt2bWh2X3ZjcHVfZW50cnlfbmVzdGVkdjIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgdGltZV9saW1pdCxcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQyNTAtXFx0XFx0XFx0XFx0ICAgICB1bnNpZ25lZCBsb25nIGxwY3IsIHU2NCAqdGIpXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jPTQ0MjM9c3RhdGljIGludCBrdm1odl9wOV9ndWVzdF9lbnRyeShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCB0aW1lX2xpbWl0LFxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00NDQ2LVxcdFxcdGVsc2VcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjQ0NDc6XFx0XFx0XFx0dHJhcCA9IGt2bWh2X3ZjcHVfZW50cnlfbmVzdGVkdjIodmNwdSwgdGltZV9saW1pdCwgbHBjciwgdGIpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNDQ0OC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDQ6NTc6NDMuMDY0NzM1NDA5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDkzNTg3ODU2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKkRpdmluZyBpbnRvIGBrdm1odl92Y3B1X2VudHJ5X25lc3RlZHYyYCoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZGlnIGludG8gYGt2bWh2X3ZjcHVfZW50cnlfbmVzdGVkdjJgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgd2hhdCBhcmUgd2UgcmVhbGx5IGxvb2tpbmcgYXQgaGVyZT8gSXQncyBjbGVhcmx5IGEgY3JpdGljYWwgZW50cnkgcG9pbnQg4oCTIHRoZSBuYW1lIHNjcmVhbXMgbmVzdGVkIHZpcnR1YWxpemF0aW9uIOKAkyBzbyB0aGlzIGlzIHdoZXJlIGEgdmlydHVhbCBDUFUgKHZDUFUpIG9mIGEgZ3Vlc3QgaXMgZW50ZXJpbmcgYSBuZXN0ZWQgaHlwZXJ2aXNvciAobGlrZWx5IEtWTS1IVikuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3cuIFdoYXQncyB0aGUgY29udGV4dCBzd2l0Y2hpbmcgaGFwcGVuaW5nPyBXaGF0IHN0YXRlIGlzIGJlaW5nIHNhdmVkIGFuZCByZXN0b3JlZD8gSXMgdGhlcmUgYW55dGhpbmcgY2xldmVyIGdvaW5nIG9uIHJlbGF0ZWQgdG8gc2hhZG93IHBhZ2luZyBvciBvdGhlciBtZW1vcnkgbWFuYWdlbWVudCB0cmlja3M/XG5cbk15IGluaXRpYWwgcXVlc3Rpb25zIGludm9sdmU6XG5cbiogICAqKlN5bmNocm9uaXphdGlvbjoqKiBIb3cgaXMgdGhpcyBmdW5jdGlvbiBwcm90ZWN0ZWQgYWdhaW5zdCBjb25jdXJyZW50IGFjY2Vzcz8gSXMgaXQgcmVlbnRyYW50PyBBbnkgbG9ja3Mgb3IgYXRvbWljIG9wZXJhdGlvbnMgYmVpbmcgdXNlZCB0byBrZWVwIHRoaW5ncyBzYW5lIHdoZW4gbXVsdGlwbGUgdkNQVXMgcG90ZW50aWFsbHkgZW50ZXIgdGhpcyByb3V0aW5lIHNpbXVsdGFuZW91c2x5P1xuKiAgICoqUmVnaXN0ZXJzOioqIFdoYXQgcmVnaXN0ZXJzIGFyZSBiZWluZyBzYXZlZCwgYW5kIHdoeT8gSXMgaXQgYSBjb21wbGV0ZSBzYXZlIG9mIHRoZSBndWVzdCdzIGNvbnRleHQsIG9yIGEgcGFydGlhbCBzYXZlIHdpdGggb3B0aW1pemF0aW9ucz8gV2hhdCBhcmNoaXRlY3R1cmFsIGNvbnNpZGVyYXRpb25zIGFyZSBkcml2aW5nIHRoZSBjaG9pY2U/XG4qICAgKipFUFQvU2hhZG93IFBhZ2luZzoqKiBJIG5lZWQgdG8gbG9vayBjbG9zZWx5IGF0IHdoZXRoZXIgYW5kIGhvdyBleHRlbmRlZCBwYWdlIHRhYmxlcyAoRVBUKSBvciBhbnkga2luZCBvZiBzaGFkb3cgcGFnaW5nIG1lY2hhbmlzbSBpcyBiZWluZyBtYW5pcHVsYXRlZC4gTmVzdGVkIHZpcnR1YWxpemF0aW9uIGRlbWFuZHMgZWZmaWNpZW50IHRyYW5zbGF0aW9uIGJldHdlZW4gZ3Vlc3QgcGh5c2ljYWwgYWRkcmVzc2VzLCBob3N0IHBoeXNpY2FsIGFkZHJlc3NlcywgYW5kIHBvdGVudGlhbGx5LCB0aGUgbmVzdGVkIGh5cGVydmlzb3IncyBwaHlzaWNhbCBhZGRyZXNzZXMuIFRoZSBjb3JlIG9mIHRoZSBwZXJmb3JtYW5jZSBpcyBmcmVxdWVudGx5IHRoZSBwYWdpbmcgcGF0aC5cbiogICAqKlZNIEV4aXQvRW50cnk6KiogSG93IGRvZXMgdGhpcyBmdW5jdGlvbiByZWxhdGUgdG8gdGhlIFZNIGVudHJ5IGFuZCBleGl0IG1lY2hhbmlzbXM/IElzIHRoaXMgZnVuY3Rpb24gY2FsbGVkIGFmdGVyIGEgVk0gZXhpdCwgYW5kIGlmIHNvLCBob3cgZG9lcyBpdCBoYW5kbGUgdGhlIGV4Y2VwdGlvbiB0aGF0IGNhdXNlZCB0aGUgZXhpdD8gV2hhdCBhYm91dCB0aGUgcmV2ZXJzZT9cbiogICAqKkVycm9yIEhhbmRsaW5nOioqIFdoYXQncyB0aGUgZXJyb3IgaGFuZGxpbmcgbG9vayBsaWtlPyBBcmUgdGhlcmUgYW55IHBvdGVudGlhbCBmYWlsdXJlIHBvaW50cyB0aGF0IG5lZWQgY2FyZWZ1bCBjb25zaWRlcmF0aW9uIGluIGEgcHJvZHVjdGlvbiBzZXR0aW5nPyBXaGF0IGxvZ2dpbmcgb3IgZGVidWdnaW5nIGZhY2lsaXRpZXMgYXJlIGltcGxlbWVudGVkIGhlcmU/XG4qICAgKipWaXJ0dWFsaXphdGlvbiBJbnN0cnVjdGlvbnM6KiogVGhlIGZ1bmN0aW9uJ3MgdXNlIG9mIHZpcnR1YWxpemF0aW9uIGluc3RydWN0aW9ucyBpcywgb2YgY291cnNlLCBjcml0aWNhbC4gVk0tRW50ZXIgYW5kIFZNLUV4aXQgaW5zdHJ1Y3Rpb25zIGFyZSB0aGUgaGVhcnQgb2YgdGhpcy4gSXQgd2lsbCBiZSBpbXBvcnRhbnQgdG8gY29uZmlybSB0aGUgY29ycmVjdCBoYW5kbGluZyBvZiBhbnkgY29udHJvbCByZWdpc3RlcnMgaW52b2x2ZWQgKGUuZy4sIFZNQ1MpLlxuXG5VbHRpbWF0ZWx5LCBJIGV4cGVjdCB0aGlzIGZ1bmN0aW9uIHRvIGJlIGEgbGluY2hwaW4gaW4gdGhlIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiBzdGFjay4gVW5kZXJzdGFuZGluZyBpdCB0aG9yb3VnaGx5IGlzIHRoZSBrZXkgdG8gYm90aCBvcHRpbWl6aW5nIHBlcmZvcm1hbmNlIGFuZCBlbnN1cmluZyByb2J1c3RuZXNzLiBMZXQncyBzZWUgd2hhdCdzIGFjdHVhbGx5IGluIGl0Li4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0MjMsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwNDo1Nzo0OC4wMDA2MTY1NTdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjc2MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA0MjQ5LFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiNDI0OTpcXHRzdGF0aWMgaW50IGt2bWh2X3ZjcHVfZW50cnlfbmVzdGVkdjIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgdGltZV9saW1pdCxcXG40MjUwOlxcdFxcdFxcdFxcdFxcdCAgICAgdW5zaWduZWQgbG9uZyBscGNyLCB1NjQgKnRiKVxcbjQyNTE6XFx0e1xcbjQyNTI6XFx0XFx0c3RydWN0IGt2bWh2X25lc3RlZHYyX2lvICppbztcXG40MjUzOlxcdFxcdHVuc2lnbmVkIGxvbmcgbXNyLCBpO1xcbjQyNTQ6XFx0XFx0aW50IHRyYXA7XFxuNDI1NTpcXHRcXHRsb25nIHJjO1xcbjQyNTY6XFx0XFxuNDI1NzpcXHRcXHRpbyA9IFxcdTAwMjZ2Y3B1LVxcdTAwM2VhcmNoLm5lc3RlZHYyX2lvO1xcbjQyNTg6XFx0XFxuNDI1OTpcXHRcXHRtc3IgPSBtZm1zcigpO1xcbjQyNjA6XFx0XFx0a3ZtcHBjX21zcl9oYXJkX2Rpc2FibGVfc2V0X2ZhY2lsaXRpZXModmNwdSwgbXNyKTtcXG40MjYxOlxcdFxcdGlmIChsYXp5X2lycV9wZW5kaW5nKCkpXFxuNDI2MjpcXHRcXHRcXHRyZXR1cm4gMDtcXG40MjYzOlxcdFxcbjQyNjQ6XFx0XFx0aWYgKHZjcHUtXFx1MDAzZWFyY2guZG9vcmJlbGxfcmVxdWVzdClcXG40MjY1OlxcdFxcdFxcdGt2bXBwY19zZXRfZHBkZXModmNwdSwgMSk7XFxuNDI2NjpcXHRcXG40MjY3OlxcdFxcdHJjID0ga3ZtaHZfbmVzdGVkdjJfZmx1c2hfdmNwdSh2Y3B1LCB0aW1lX2xpbWl0KTtcXG40MjY4OlxcdFxcdGlmIChyYyBcXHUwMDNjIDApXFxuNDI2OTpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG40MjcwOlxcdFxcbjQyNzE6XFx0XFx0a3ZtcHBjX2dzZV9wdXRfdTY0KGlvLVxcdTAwM2V2Y3B1X3J1bl9pbnB1dCwgS1ZNUFBDX0dTSURfTFBDUiwgbHBjcik7XFxuNDI3MjpcXHRcXG40MjczOlxcdFxcdGFjY3VtdWxhdGVfdGltZSh2Y3B1LCBcXHUwMDI2dmNwdS1cXHUwMDNlYXJjaC5pbl9ndWVzdCk7XFxuNDI3NDpcXHRcXHRyYyA9IHBscGFyX2d1ZXN0X3J1bl92Y3B1KDAsIHZjcHUtXFx1MDAzZWt2bS1cXHUwMDNlYXJjaC5scGlkLCB2Y3B1LVxcdTAwM2V2Y3B1X2lkLFxcbjQyNzU6XFx0XFx0XFx0XFx0XFx0ICBcXHUwMDI2dHJhcCwgXFx1MDAyNmkpO1xcbjQyNzY6XFx0XFxuNDI3NzpcXHRcXHRpZiAocmMgIT0gSF9TVUNDRVNTKSB7XFxuNDI3ODpcXHRcXHRcXHRwcl9lcnIoXFxcIktWTSBHdWVzdCBSdW4gVkNQVSBoY2FsbCBmYWlsZWRcXFxcblxcXCIpO1xcbjQyNzk6XFx0XFx0XFx0aWYgKHJjID09IEhfSU5WQUxJRF9FTEVNRU5UX0lEKVxcbjQyODA6XFx0XFx0XFx0XFx0cHJfZXJyKFxcXCJLVk06IEd1ZXN0IFJ1biBWQ1BVIGludmFsaWQgZWxlbWVudCBpZCBhdCAlbGRcXFxcblxcXCIsIGkpO1xcbjQyODE6XFx0XFx0XFx0ZWxzZSBpZiAocmMgPT0gSF9JTlZBTElEX0VMRU1FTlRfU0laRSlcXG40MjgyOlxcdFxcdFxcdFxcdHByX2VycihcXFwiS1ZNOiBHdWVzdCBSdW4gVkNQVSBpbnZhbGlkIGVsZW1lbnQgc2l6ZSBhdCAlbGRcXFxcblxcXCIsIGkpO1xcbjQyODM6XFx0XFx0XFx0ZWxzZSBpZiAocmMgPT0gSF9JTlZBTElEX0VMRU1FTlRfVkFMVUUpXFxuNDI4NDpcXHRcXHRcXHRcXHRwcl9lcnIoXFxcIktWTTogR3Vlc3QgUnVuIFZDUFUgaW52YWxpZCBlbGVtZW50IHZhbHVlIGF0ICVsZFxcXFxuXFxcIiwgaSk7XFxuNDI4NTpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG40Mjg2OlxcdFxcdH1cXG40Mjg3OlxcdFxcdGFjY3VtdWxhdGVfdGltZSh2Y3B1LCBcXHUwMDI2dmNwdS1cXHUwMDNlYXJjaC5ndWVzdF9leGl0KTtcXG40Mjg4OlxcdFxcbjQyODk6XFx0XFx0KnRiID0gbWZ0YigpO1xcbjQyOTA6XFx0XFx0a3ZtcHBjX2dzbV9yZXNldChpby1cXHUwMDNldmNwdV9tZXNzYWdlKTtcXG40MjkxOlxcdFxcdGt2bXBwY19nc21fcmVzZXQoaW8tXFx1MDAzZXZjb3JlX21lc3NhZ2UpO1xcbjQyOTI6XFx0XFx0a3ZtcHBjX2dzYm1femVybyhcXHUwMDI2aW8tXFx1MDAzZXZhbGlkcyk7XFxuNDI5MzpcXHRcXG40Mjk0OlxcdFxcdHJjID0ga3ZtaHZfbmVzdGVkdjJfcGFyc2Vfb3V0cHV0KHZjcHUpO1xcbjQyOTU6XFx0XFx0aWYgKHJjIFxcdTAwM2MgMClcXG40Mjk2OlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbjQyOTc6XFx0XFxuNDI5ODpcXHRcXHQvKiBDaGVjayBpZiBwcml2aWxlZ2VkIGRvb3IgYmVsbCB3YXMgcmVxdWVzdGVkIGFuZCBoYW5kbGVkICovXFxuNDI5OTpcXHRcXHRpZiAodmNwdS1cXHUwMDNlYXJjaC52Y29yZS1cXHUwMDNlZHBkZXMpIHtcXG40MzAwOlxcdFxcdFxcdGt2bWh2X25lc3RlZHYyX2NhY2hlZF9yZWxvYWQodmNwdSwgS1ZNUFBDX0dTSURfRFBERVMpO1xcbjQzMDE6XFx0XFx0XFx0aWYgKHZjcHUtXFx1MDAzZWFyY2gudmNvcmUtXFx1MDAzZWRwZGVzKVxcbjQzMDI6XFx0XFx0XFx0XFx0dmNwdS1cXHUwMDNlYXJjaC5kb29yYmVsbF9yZXF1ZXN0IHw9IHZjcHUtXFx1MDAzZWFyY2gudmNvcmUtXFx1MDAzZWRwZGVzO1xcbjQzMDM6XFx0XFx0XFx0ZWxzZVxcbjQzMDQ6XFx0XFx0XFx0XFx0Y3B1LVxcdTAwM2VhcmNoLmRvb3JiZWxsX3JlcXVlc3QgPSAwO1xcbjQzMDU6XFx0XFx0fSBlbHNlIHtcXG40MzA2OlxcdFxcdFxcdHZjcHUtXFx1MDAzZWFyY2guZG9vcmJlbGxfcmVxdWVzdCA9IDA7XFxuNDMwNzpcXHRcXHR9XFxuNDMwODpcXHRcXG40MzA5OlxcdFxcdHRpbWVyX3JlYXJtX2hvc3RfZGVjKCp0Yik7XFxuNDMxMDpcXHRcXG40MzExOlxcdFxcdC8qIFJlY29yZCBjb250ZXh0IHN3aXRjaCBhbmQgZ3Vlc3RfcnVuX3RpbWUgZGF0YSAqL1xcbjQzMTI6XFx0XFx0aWYgKGt2bWh2X2dldF9sMl9jb3VudGVyc19zdGF0dXMoKSlcXG40MzEzOlxcdFxcdFxcdGRvX3RyYWNlX25lc3RlZF9jc190aW1lKHZjcHUpO1xcbjQzMTQ6XFx0XFxuNDMxNTpcXHRcXHRyZXR1cm4gdHJhcDtcXG40MzE2OlxcdH1cXG40MzE3OlxcdFxcbjQzMTg6XFx0LyogY2FsbCBvdXIgaHlwZXJ2aXNvciB0byBsb2FkIHVwIEhWIHJlZ3MgYW5kIGdvICovXFxuNDMxOTpcXHRzdGF0aWMgaW50IGt2bWh2X3ZjcHVfZW50cnlfcDlfbmVzdGVkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IHRpbWVfbGltaXQsIHVuc2lnbmVkIGxvbmcgbHBjciwgdTY0ICp0YilcXG40MzIwOlxcdHtcXG40MzIxOlxcdFxcdHVuc2lnbmVkIGxvbmcgaG9zdF9wc3NjcjtcXG40MzIyOlxcdFxcdHVuc2lnbmVkIGxvbmcgbXNyO1xcbjQzMjM6XFx0XFx0c3RydWN0IGh2X2d1ZXN0X3N0YXRlIGh2cmVncztcXG40MzI0OlxcdFxcdHN0cnVjdCBwOV9ob3N0X29zX3NwcnMgaG9zdF9vc19zcHJzO1xcbjQzMjU6XFx0XFx0czY0IGRlYztcXG40MzI2OlxcdFxcdGludCB0cmFwO1xcbjQzMjc6XFx0XFxuNDMyODpcXHRcXHRtc3IgPSBtZm1zcigpO1xcbjQzMjk6XFx0XFxuNDMzMDpcXHRcXHRzYXZlX3A5X2hvc3Rfb3Nfc3BycyhcXHUwMDI2aG9zdF9vc19zcHJzKTtcXG40MzMxOlxcdFxcbjQzMzI6XFx0XFx0LypcXG40MzMzOlxcdFxcdCAqIFdlIG5lZWQgdG8gc2F2ZSBhbmQgcmVzdG9yZSB0aGUgZ3Vlc3QgdmlzaWJsZSBwYXJ0IG9mIHRoZVxcbjQzMzQ6XFx0XFx0ICogcHNzY3IgKGkuZS4gdXNpbmcgU1BSTl9QU1NDUl9QUikgc2luY2UgdGhlIGh5cGVydmlzb3JcXG40MzM1OlxcdFxcdCAqIGRvZXNuJ3QgZG8gdGhpcyBmb3IgdXMuIE5vdGUgb25seSByZXF1aXJlZCBpZiBwc2VyaWVzIHNpbmNlXFxuNDMzNjpcXHRcXHQgKiB0aGlzIGlzIGRvbmUgaW4ga3ZtaHZfdmNwdV9lbnRyeV9wOSgpIGJlbG93IG90aGVyd2lzZS5cXG40MzM3OlxcdFxcdCAqL1xcbjQzMzg6XFx0XFx0aG9zdF9wc3NjciA9IG1mc3ByKFNQUk5fUFNTQ1JfUFIpO1xcbjQzMzk6XFx0XFxuNDM0MDpcXHRcXHRrdm1wcGNfbXNyX2hhcmRfZGlzYWJsZV9zZXRfZmFjaWxpdGllcyh2Y3B1LCBtc3IpO1xcbjQzNDE6XFx0XFx0aWYgKGxhenlfaXJxX3BlbmRpbmcoKSlcXG40MzQyOlxcdFxcdFxcdHJldHVybiAwO1xcbjQzNDM6XFx0XFxuNDM0NDpcXHRcXHRpZiAodW5saWtlbHkobG9hZF92Y3B1X3N0YXRlKHZjcHUsIFxcdTAwMjZob3N0X29zX3NwcnMpKSlcXG40MzQ1OlxcdFxcdFxcdG1zciA9IG1mbXNyKCk7IC8qIFRNIHJlc3RvcmUgY2FuIHVwZGF0ZSBtc3IgKi9cXG40MzQ2OlxcdFxcbjQzNDc6XFx0XFx0aWYgKHZjcHUtXFx1MDAzZWFyY2gucHNzY3IgIT0gaG9zdF9wc3NjcilcXG40MzQ4OlxcdFxcdFxcdG10c3ByKFNQUk5fUFNTQ1JfUFIsIHZjcHUtXFx1MDAzZWFyY2gucHNzY3IpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwNDo1Nzo0OC4wMDA4ODcxMDdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NzE4MDM4NDQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEZWJ1Z2dpbmcgYSBQb3RlbnRpYWwgUmFjZSBDb25kaXRpb24qKlxuXG5BbHJpZ2h0LCByaWdodCB0aGVyZSwgbGluZSA0MzA0IOKAkyBgY3B1LVx1MDAzZWFyY2guZG9vcmJlbGxfcmVxdWVzdCA9IDA7YC4gSSdtIGZvY3VzaW5nIGluIG9uIHRoYXQgYml0IG9mIGNvZGUuIFNwZWNpZmljYWxseSwgdGhlIGFzc2lnbm1lbnQuIE15IGluaXRpYWwgaHVuY2ggaXMgdGhhdCB3ZSBhcmUgdHJ5aW5nIHRvIHNldCB0aGUgYGRvb3JiZWxsX3JlcXVlc3RgIGZsYWcgdG8gemVybyBvbiBhIHBhcnRpY3VsYXIgQ1BVJ3MgYXJjaGl0ZWN0dXJlLiBTb3VuZHMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaCwgYnV0IG15IGludGVybmFsIGFsYXJtIGJlbGxzIGFyZSBhbHJlYWR5IHN0YXJ0aW5nIHRvIHJpbmcuXG5cblRoZSBjcml0aWNhbCBxdWVzdGlvbiBpbW1lZGlhdGVseSBzdXJmYWNpbmcgaW4gbXkgbWluZCBpczogd2hlcmUgaXMgYGNwdWAgY29taW5nIGZyb20/IEJlZm9yZSBJIGRpdmUgdG9vIGRlZXAsIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBgY3B1YCBpcyBwcm9wZXJseSBkZWNsYXJlZCBhbmQgaW5pdGlhbGl6ZWQuIElzIHRoaXMgYSBsb2NhbCB2YXJpYWJsZSB3aXRoaW4gYSBmdW5jdGlvbiwgb3IgcGVyaGFwcyBhIGdsb2JhbCB2YXJpYWJsZSBkZWZpbmVkIHNvbWV3aGVyZSBlbHNlIGluIHRoZSBjb2RlYmFzZT8gSXQncyBjcnVjaWFsIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlIGFuZCBsaWZldGltZSBvZiB0aGlzIHZhcmlhYmxlLiBBbHRlcm5hdGl2ZWx5LCBjb3VsZCBpdCBldmVuIGJlIGEgbWFjcm8/IE1hY3JvcyBhcmUgdHJpY2t5IGFuZCBjYW4gaW50cm9kdWNlIHN1YnRsZSBidWdzIGlmIHlvdSBhcmUgbm90IHZlcnkgY2FyZWZ1bC4gSSBuZWVkIHRvIHRyYWNlIGJhY2sgaG93IGl0J3MgZGVmaW5lZCBhbmQgd2hlbi93aGVyZSBpdCdzIHVzZWQuIFRoaXMgcXVpY2sgY2hlY2sgd2lsbCBzYXZlIGEgbG90IG9mIGhlYWQtc2NyYXRjaGluZyBsYXRlciBpZiBpdCdzIG5vdCB3aGF0IEkgZXhwZWN0IGl0IHRvIGJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NzIzLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwNDo1Nzo1My43MTg5Mjc5OTZaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg0MTA1MjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY3B1XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAzNTE4IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTI5LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9hbm9uX2lub2Rlcy5oXFx1MDAzZVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MzA6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2NwdS5oXFx1MDAzZVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MzE6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2NwdW1hc2suaFxcdTAwM2VcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTMyLSNpbmNsdWRlIFxcdTAwM2NsaW51eC9zcGlubG9jay5oXFx1MDAzZVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01NC0jaW5jbHVkZSBcXHUwMDNjYXNtL2Rpc2Fzc2VtYmxlLmhcXHUwMDNlXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1NTojaW5jbHVkZSBcXHUwMDNjYXNtL2NwdXRhYmxlLmhcXHUwMDNlXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01Ni0jaW5jbHVkZSBcXHUwMDNjYXNtL2NhY2hlZmx1c2guaFxcdTAwM2VcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjUtI2luY2x1ZGUgXFx1MDAzY2FzbS9wcm9jZXNzb3IuaFxcdTAwM2VcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjY2OiNpbmNsdWRlIFxcdTAwM2Nhc20vY3B1dGhyZWFkcy5oXFx1MDAzZVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjctI2luY2x1ZGUgXFx1MDAzY2FzbS9wYWdlLmhcXHUwMDNlXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jPTEzMz1NT0RVTEVfUEFSTV9ERVNDKG5lc3RlZCwgXFxcIkVuYWJsZSBuZXN0ZWQgdmlydHVhbGl6YXRpb24gKG9ubHkgb24gUE9XRVI5KVxcXCIpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMTM0LVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MTM1OnN0YXRpYyBpbnQga3ZtcHBjX2h2X3NldHVwX2h0YWJfcm1hKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0xMzYtXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jPTE1MT1zdGF0aWMgdW5zaWduZWQgbG9uZyBwOF9yd21yX3ZhbHVlc1tNQVhfU01UX1RIUkVBRFMgKyAxXSA9IHtcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMTYyLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MTYzOnN0YXRpYyBpbmxpbmUgc3RydWN0IGt2bV92Y3B1ICpuZXh0X3J1bm5hYmxlX3RocmVhZChzdHJ1Y3Qga3ZtcHBjX3Zjb3JlICp2YyxcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTE2NC1cXHRcXHRpbnQgKmlwKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0xNjYtXFx0aW50IGkgPSAqaXA7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoxNjc6XFx0c3RydWN0IGt2bV92Y3B1ICp2Y3B1O1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMTY4LVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMTY5LVxcdHdoaWxlICgrK2kgXFx1MDAzYyBNQVhfU01UX1RIUkVBRFMpIHtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjE3MDpcXHRcXHR2Y3B1ID0gUkVBRF9PTkNFKHZjLVxcdTAwM2VydW5uYWJsZV90aHJlYWRzW2ldKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjE3MTpcXHRcXHRpZiAodmNwdSkge1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMTcyLVxcdFxcdFxcdCppcCA9IGk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoxNzM6XFx0XFx0XFx0cmV0dXJuIHZjcHU7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0xNzQtXFx0XFx0fVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0xNzktLyogVXNlZCB0byB0cmF2ZXJzZSB0aGUgbGlzdCBvZiBydW5uYWJsZSB0aHJlYWRzIGZvciBhIGdpdmVuIHZjb3JlICovXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoxODA6I2RlZmluZSBmb3JfZWFjaF9ydW5uYWJsZV90aHJlYWQoaSwgdmNwdSwgdmMpIFxcXFxcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjE4MTpcXHRmb3IgKGkgPSAtMTsgKHZjcHUgPSBuZXh0X3J1bm5hYmxlX3RocmVhZCh2YywgXFx1MDAyNmkpKTsgKVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMTgyLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MTgzOnN0YXRpYyBib29sIGt2bXBwY19pcGlfdGhyZWFkKGludCBjcHUpXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0xODQte1xcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0xOTAtXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoxOTE6XFx0LyogT24gUE9XRVI5IHdlIGNhbiB1c2UgbXNnc25kIHRvIElQSSBhbnkgY3B1ICovXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoxOTI6XFx0aWYgKGNwdV9oYXNfZmVhdHVyZShDUFVfRlRSX0FSQ0hfMzAwKSkge1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MTkzOlxcdFxcdG1zZyB8PSBnZXRfaGFyZF9zbXBfcHJvY2Vzc29yX2lkKGNwdSk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0xOTQtXFx0XFx0c21wX21iKCk7XFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTE5OS1cXHQvKiBPbiBQT1dFUjggZm9yIElQSXMgdG8gdGhyZWFkcyBpbiB0aGUgc2FtZSBjb3JlLCB1c2UgbXNnc25kICovXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyMDA6XFx0aWYgKGNwdV9oYXNfZmVhdHVyZShDUFVfRlRSX0FSQ0hfMjA3UykpIHtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTIwMS1cXHRcXHRwcmVlbXB0X2Rpc2FibGUoKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjIwMjpcXHRcXHRpZiAoY3B1X2ZpcnN0X3RocmVhZF9zaWJsaW5nKGNwdSkgPT1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjIwMzpcXHRcXHQgICAgY3B1X2ZpcnN0X3RocmVhZF9zaWJsaW5nKHNtcF9wcm9jZXNzb3JfaWQoKSkpIHtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjIwNDpcXHRcXHRcXHRtc2cgfD0gY3B1X3RocmVhZF9pbl9jb3JlKGNwdSk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yMDUtXFx0XFx0XFx0c21wX21iKCk7XFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTIxMy0jaWYgZGVmaW5lZChDT05GSUdfUFBDX0lDUF9OQVRJVkUpIFxcdTAwMjZcXHUwMDI2IGRlZmluZWQoQ09ORklHX1NNUClcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjIxNDpcXHRpZiAoY3B1IFxcdTAwM2U9IDAgXFx1MDAyNlxcdTAwMjYgY3B1IFxcdTAwM2MgbnJfY3B1X2lkcykge1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjE1OlxcdFxcdGlmIChwYWNhX3B0cnNbY3B1XS1cXHUwMDNla3ZtX2hzdGF0ZS54aWNzX3BoeXMpIHtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjIxNjpcXHRcXHRcXHR4aWNzX3dha2VfY3B1KGNwdSk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yMTctXFx0XFx0XFx0cmV0dXJuIHRydWU7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yMTgtXFx0XFx0fVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjE5OlxcdFxcdG9wYWxfaW50X3NldF9tZnJyKGdldF9oYXJkX3NtcF9wcm9jZXNzb3JfaWQoY3B1KSwgSVBJX1BSSU9SSVRZKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTIyMC1cXHRcXHRyZXR1cm4gdHJ1ZTtcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjI2LVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjI3OnN0YXRpYyB2b2lkIGt2bXBwY19mYXN0X3ZjcHVfa2lja19odihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yMjgte1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjI5OlxcdGludCBjcHU7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yMzAtXFx0c3RydWN0IHJjdXdhaXQgKndhaXRwO1xcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yMzMtXFx0ICogcmN1d2FpdF93YWtlX3VwIGNvbnRhaW5zIHNtcF9tYigpIHdoaWNoIG9yZGVycyBwcmlvciBzdG9yZXMgdGhhdFxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjM0OlxcdCAqIGNyZWF0ZSBwZW5kaW5nIHdvcmsgdnMgYmVsb3cgbG9hZHMgb2YgY3B1IGZpZWxkcy4gVGhlIG90aGVyIHNpZGVcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjIzNTpcXHQgKiBpcyB0aGUgYmFycmllciBpbiB2Y3B1IHJ1biB0aGF0IG9yZGVycyBzZXR0aW5nIHRoZSBjcHUgZmllbGRzIHZzXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yMzYtXFx0ICogdGVzdGluZyBmb3IgcGVuZGluZyB3b3JrLlxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yMzgtXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyMzk6XFx0d2FpdHAgPSBrdm1fYXJjaF92Y3B1X2dldF93YWl0KHZjcHUpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjQwLVxcdGlmIChyY3V3YWl0X3dha2VfdXAod2FpdHApKVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjQxOlxcdFxcdCsrdmNwdS1cXHUwMDNlc3RhdC5nZW5lcmljLmhhbHRfd2FrZXVwO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjQyLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjQzOlxcdGNwdSA9IFJFQURfT05DRSh2Y3B1LVxcdTAwM2VhcmNoLnRocmVhZF9jcHUpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjQ0OlxcdGlmIChjcHUgXFx1MDAzZT0gMCBcXHUwMDI2XFx1MDAyNiBrdm1wcGNfaXBpX3RocmVhZChjcHUpKVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjQ1LVxcdFxcdHJldHVybjtcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjQ3LVxcdC8qIENQVSBwb2ludHMgdG8gdGhlIGZpcnN0IHRocmVhZCBvZiB0aGUgY29yZSAqL1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjQ4OlxcdGNwdSA9IHZjcHUtXFx1MDAzZWNwdTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjI0OTpcXHRpZiAoY3B1IFxcdTAwM2U9IDAgXFx1MDAyNlxcdTAwMjYgY3B1IFxcdTAwM2MgbnJfY3B1X2lkcyBcXHUwMDI2XFx1MDAyNiBjcHVfb25saW5lKGNwdSkpXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyNTA6XFx0XFx0c21wX3NlbmRfcmVzY2hlZHVsZShjcHUpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjUxLX1cXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjUzLS8qXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyNTQ6ICogV2UgdXNlIHRoZSB2Y3B1X2xvYWQvcHV0IGZ1bmN0aW9ucyB0byBtZWFzdXJlIHN0b2xlbiB0aW1lLlxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjU1LSAqXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyNTY6ICogU3RvbGVuIHRpbWUgaXMgY291bnRlZCBhcyB0aW1lIHdoZW4gZWl0aGVyIHRoZSB2Y3B1IGlzIGFibGUgdG9cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTI1Ny0gKiBydW4gYXMgcGFydCBvZiBhIHZpcnR1YWwgY29yZSwgYnV0IHRoZSB0YXNrIHJ1bm5pbmcgdGhlIHZjb3JlXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyNTg6ICogaXMgcHJlZW1wdGVkIG9yIHNsZWVwaW5nLCBvciB3aGVuIHRoZSB2Y3B1IG5lZWRzIHNvbWV0aGluZyBkb25lXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyNTk6ICogaW4gdGhlIGtlcm5lbCBieSB0aGUgdGFzayBydW5uaW5nIHRoZSB2Y3B1LCBidXQgdGhhdCB0YXNrIGlzXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yNjAtICogcHJlZW1wdGVkIG9yIHNsZWVwaW5nLiAgVGhvc2UgdHdvIHRoaW5ncyBoYXZlIHRvIGJlIGNvdW50ZWRcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjI2MTogKiBzZXBhcmF0ZWx5LCBzaW5jZSBvbmUgb2YgdGhlIHZjcHUgdGFza3Mgd2lsbCB0YWtlIG9uIHRoZSBqb2JcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjI2MjogKiBvZiBydW5uaW5nIHRoZSBjb3JlLCBhbmQgdGhlIG90aGVyIHZjcHUgdGFza3MgaW4gdGhlIHZjb3JlIHdpbGxcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTI2My0gKiBzbGVlcCB3YWl0aW5nIGZvciBpdCB0byBkbyB0aGF0LCBidXQgdGhhdCBzbGVlcCBzaG91bGRuJ3QgY291bnRcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjY1LSAqXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyNjY6ICogSGVuY2Ugd2UgYWNjdW11bGF0ZSBzdG9sZW4gdGltZSB3aGVuIHRoZSB2Y3B1IGNhbiBydW4gYXMgcGFydCBvZlxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjY3OiAqIGEgdmNvcmUgdXNpbmcgdmMtXFx1MDAzZXN0b2xlbl90YiwgYW5kIHRoZSBzdG9sZW4gdGltZSB3aGVuIHRoZSB2Y3B1XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yNjgtICogbmVlZHMgaXRzIHRhc2sgdG8gZG8gb3RoZXIgdGhpbmdzIGluIHRoZSBrZXJuZWwgKGZvciBleGFtcGxlLFxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjY5LSAqIHNlcnZpY2UgYSBwYWdlIGZhdWx0KSBpbiBidXN5X3N0b2xlbi4gIFdlIGRvbid0IGFjY3VtdWxhdGVcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjI3MDogKiBzdG9sZW4gdGltZSBmb3IgYSB2Y29yZSB3aGVuIGl0IGlzIGluYWN0aXZlLCBvciBmb3IgYSB2Y3B1XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yNzEtICogd2hlbiBpdCBpcyBpbiBzdGF0ZSBSVU5OSU5HIG9yIE5PVFJFQURZLiAgTk9UUkVBRFkgaXMgYSBiaXQgb2ZcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjI3MjogKiBhIG1pc25vbWVyOyBpdCBtZWFucyB0aGF0IHRoZSB2Y3B1IHRhc2sgaXMgbm90IGV4ZWN1dGluZyBpblxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjczLSAqIHRoZSBLVk1fVkNQVV9SVU4gaW9jdGwsIGkuZS4gaXQgaXMgaW4gdXNlcnNwYWNlIG9yIGVsc2V3aGVyZSBpblxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjc0LSAqIHRoZSBrZXJuZWwuICBXZSBkb24ndCBoYXZlIGFueSB3YXkgb2YgZGl2aWRpbmcgdXAgdGhhdCB0aW1lXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyNzU6ICogYmV0d2VlbiB0aW1lIHRoYXQgdGhlIHZjcHUgaXMgZ2VudWluZWx5IHN0b3BwZWQsIHRpbWUgdGhhdFxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6Mjc2OiAqIHRoZSB0YXNrIGlzIGFjdGl2ZWx5IHdvcmtpbmcgb24gYmVoYWxmIG9mIHRoZSB2Y3B1LCBhbmQgdGltZVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjc3LSAqIHRoYXQgdGhlIHRhc2sgaXMgcHJlZW1wdGVkLCBzbyB3ZSBkb24ndCBjb3VudCBhbnkgb2YgaXQgYXNcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjg1LSAqXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyODY6ICogVGhlIFBPV0VSOSBwYXRoIGlzIHNpbXBsZXIsIG9uZSB2Y3B1IHBlciB2aXJ0dWFsIGNvcmUgc28gdGhlXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyODc6ICogZm9ybWVyIGNhc2UgZG9lcyBub3QgZXhpc3QuIElmIGEgdmNwdSBpcyBwcmVlbXB0ZWQgd2hlbiBpdCBpc1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjg4LSAqIEJVU1lfSU5fSE9TVCBhbmQgbm90IGNlZGVkIG9yIG90aGVyd2lzZSBibG9ja2VkLCB0aGVuIGFjY3VtdWxhdGVcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM9MjkzPXN0YXRpYyB2b2lkIGt2bXBwY19jb3JlX3N0YXJ0X3N0b2xlbihzdHJ1Y3Qga3ZtcHBjX3Zjb3JlICp2YywgdTY0IHRiKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yOTYtXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyOTc6XFx0V0FSTl9PTl9PTkNFKGNwdV9oYXNfZmVhdHVyZShDUFVfRlRSX0FSQ0hfMzAwKSk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yOTgtXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jPTMwND1zdGF0aWMgdm9pZCBrdm1wcGNfY29yZV9lbmRfc3RvbGVuKHN0cnVjdCBrdm1wcGNfdmNvcmUgKnZjLCB1NjQgdGIpXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTMwNy1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjMwODpcXHRXQVJOX09OX09OQ0UoY3B1X2hhc19mZWF0dXJlKENQVV9GVFJfQVJDSF8zMDApKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTMwOS1cXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzE3LVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MzE4OnN0YXRpYyB2b2lkIGt2bXBwY19jb3JlX3ZjcHVfbG9hZF9odihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGludCBjcHUpXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0zMTkte1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MzIwOlxcdHN0cnVjdCBrdm1wcGNfdmNvcmUgKnZjID0gdmNwdS1cXHUwMDNlYXJjaC52Y29yZTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTMyMS1cXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0zMjMtXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzozMjQ6XFx0aWYgKGNwdV9oYXNfZmVhdHVyZShDUFVfRlRSX0FSQ0hfMzAwKSkge1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MzI1OlxcdFxcdGlmICh2Y3B1LVxcdTAwM2VhcmNoLmJ1c3lfcHJlZW1wdCAhPSBUQl9OSUwpIHtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjMyNjpcXHRcXHRcXHRXQVJOX09OX09OQ0UodmNwdS1cXHUwMDNlYXJjaC5zdGF0ZSAhPSBLVk1QUENfVkNQVV9CVVNZX0lOX0hPU1QpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MzI3OlxcdFxcdFxcdHZjLVxcdTAwM2VzdG9sZW5fdGIgKz0gbWZ0YigpIC0gdmNwdS1cXHUwMDNlYXJjaC5idXN5X3ByZWVtcHQ7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzozMjg6XFx0XFx0XFx0dmNwdS1cXHUwMDNlYXJjaC5idXN5X3ByZWVtcHQgPSBUQl9OSUw7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0zMjktXFx0XFx0fVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0zMzctXFx0ICogYmVjYXVzZSBvbmx5IHRoaXMgdGFzayBldmVyIHNldHMgdmMtXFx1MDAzZXJ1bm5lciB0byB0aGlzXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzozMzg6XFx0ICogdmNwdSwgYW5kIG9uY2UgaXQgaXMgc2V0IHRvIHRoaXMgdmNwdSwgb25seSB0aGlzIHRhc2tcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTMzOS1cXHQgKiBldmVyIHNldHMgaXQgdG8gTlVMTC5cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTM0MC1cXHQgKi9cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjM0MTpcXHRpZiAodmMtXFx1MDAzZXJ1bm5lciA9PSB2Y3B1IFxcdTAwMjZcXHUwMDI2IHZjLVxcdTAwM2V2Y29yZV9zdGF0ZSBcXHUwMDNlPSBWQ09SRV9TTEVFUElORylcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTM0Mi1cXHRcXHRrdm1wcGNfY29yZV9lbmRfc3RvbGVuKHZjLCBub3cpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzQzLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MzQ0OlxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZ2Y3B1LVxcdTAwM2VhcmNoLnRiYWNjdF9sb2NrLCBmbGFncyk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzozNDU6XFx0aWYgKHZjcHUtXFx1MDAzZWFyY2guc3RhdGUgPT0gS1ZNUFBDX1ZDUFVfQlVTWV9JTl9IT1NUIFxcdTAwMjZcXHUwMDI2XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzozNDY6XFx0ICAgIHZjcHUtXFx1MDAzZWFyY2guYnVzeV9wcmVlbXB0ICE9IFRCX05JTCkge1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MzQ3OlxcdFxcdHZjcHUtXFx1MDAzZWFyY2guYnVzeV9zdG9sZW4gKz0gbm93IC0gdmNwdS1cXHUwMDNlYXJjaC5idXN5X3ByZWVtcHQ7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzozNDg6XFx0XFx0dmNwdS1cXHUwMDNlYXJjaC5idXN5X3ByZWVtcHQgPSBUQl9OSUw7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0zNDktXFx0fVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MzUwOlxcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNnZjcHUtXFx1MDAzZWFyY2gudGJhY2N0X2xvY2ssIGZsYWdzKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTM1MS19XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0zNTItXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzozNTM6c3RhdGljIHZvaWQga3ZtcHBjX2NvcmVfdmNwdV9wdXRfaHYoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzU0LXtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjM1NTpcXHRzdHJ1Y3Qga3ZtcHBjX3Zjb3JlICp2YyA9IHZjcHUtXFx1MDAzZWFyY2gudmNvcmU7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0zNTYtXFx0dW5zaWduZWQgbG9uZyBmbGFncztcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzU4LVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MzU5OlxcdGlmIChjcHVfaGFzX2ZlYXR1cmUoQ1BVX0ZUUl9BUkNIXzMwMCkpIHtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTM2MC1cXHRcXHQvKlxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0zNjMtXFx0XFx0ICovXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzozNjQ6XFx0XFx0V0FSTl9PTl9PTkNFKHZjcHUtXFx1MDAzZWFyY2guc3RhdGUgPT0gS1ZNUFBDX1ZDUFVfUlVOTkFCTEUpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzY1LVxcdFxcdC8qXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzozNjY6XFx0XFx0ICogQWNjb3VudCBzdG9sZW4gdGltZSB3aGVuIHByZWVtcHRlZCB3aGlsZSB0aGUgdmNwdSB0YXNrIGlzXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0zNjctXFx0XFx0ICogcnVubmluZyBpbiB0aGUga2VybmVsIChidXQgbm90IGluIHFlbXUsIHdoaWNoIGlzIElOQUNUSVZFKS5cXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzY5LVxcdFxcdGlmICh0YXNrX2lzX3J1bm5pbmcoY3VycmVudCkgXFx1MDAyNlxcdTAwMjZcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjM3MDpcXHRcXHRcXHRcXHR2Y3B1LVxcdTAwM2VhcmNoLnN0YXRlID09IEtWTVBQQ19WQ1BVX0JVU1lfSU5fSE9TVClcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjM3MTpcXHRcXHRcXHR2Y3B1LVxcdTAwM2VhcmNoLmJ1c3lfcHJlZW1wdCA9IG1mdGIoKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTM3Mi1cXHRcXHRyZXR1cm47XFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTM3Ni1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjM3NzpcXHRpZiAodmMtXFx1MDAzZXJ1bm5lciA9PSB2Y3B1IFxcdTAwMjZcXHUwMDI2IHZjLVxcdTAwM2V2Y29yZV9zdGF0ZSBcXHUwMDNlPSBWQ09SRV9TTEVFUElORylcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTM3OC1cXHRcXHRrdm1wcGNfY29yZV9zdGFydF9zdG9sZW4odmMsIG5vdyk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0zNzktXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzozODA6XFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNnZjcHUtXFx1MDAzZWFyY2gudGJhY2N0X2xvY2ssIGZsYWdzKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjM4MTpcXHRpZiAodmNwdS1cXHUwMDNlYXJjaC5zdGF0ZSA9PSBLVk1QUENfVkNQVV9CVVNZX0lOX0hPU1QpXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzozODI6XFx0XFx0dmNwdS1cXHUwMDNlYXJjaC5idXN5X3ByZWVtcHQgPSBub3c7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzozODM6XFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2dmNwdS1cXHUwMDNlYXJjaC50YmFjY3RfbG9jaywgZmxhZ3MpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzg0LX1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTM4NS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjM4NjpzdGF0aWMgdm9pZCBrdm1wcGNfc2V0X3B2cl9odihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBwdnIpXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0zODcte1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6Mzg4OlxcdHZjcHUtXFx1MDAzZWFyY2gucHZyID0gcHZyO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzg5LX1cXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM9Mzk0PXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBtYXBfcGNyX3RvX2NhcCh1bnNpZ25lZCBsb25nIHBjcilcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNDAyLVxcdGNhc2UgUENSX0FSQ0hfMzE6XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo0MDM6XFx0XFx0aWYgKGNwdV9oYXNfZmVhdHVyZShDUFVfRlRSX1AxMV9QVlIpKVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNDA0LVxcdFxcdFxcdGNhcCA9IEhfR1VFU1RfQ0FQX1BPV0VSMTE7XFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQxNC1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjQxNTpzdGF0aWMgaW50IGt2bXBwY19zZXRfYXJjaF9jb21wYXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgYXJjaF9jb21wYXQpXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00MTYte1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNDE3LVxcdHVuc2lnbmVkIGxvbmcgaG9zdF9wY3JfYml0ID0gMCwgZ3Vlc3RfcGNyX2JpdCA9IDAsIGNhcCA9IDA7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo0MTg6XFx0c3RydWN0IGt2bXBwY192Y29yZSAqdmMgPSB2Y3B1LVxcdTAwM2VhcmNoLnZjb3JlO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNDE5LVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNDIwLVxcdC8qIFdlIGNhbiAoZW11bGF0ZSkgb3VyIG93biBhcmNoaXRlY3R1cmUgdmVyc2lvbiBhbmQgYW55dGhpbmcgb2xkZXIgKi9cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjQyMTpcXHRpZiAoY3B1X2hhc19mZWF0dXJlKENQVV9GVFJfUDExX1BWUikgfHwgY3B1X2hhc19mZWF0dXJlKENQVV9GVFJfQVJDSF8zMSkpXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00MjItXFx0XFx0aG9zdF9wY3JfYml0ID0gUENSX0FSQ0hfMzE7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo0MjM6XFx0ZWxzZSBpZiAoY3B1X2hhc19mZWF0dXJlKENQVV9GVFJfQVJDSF8zMDApKVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNDI0LVxcdFxcdGhvc3RfcGNyX2JpdCA9IFBDUl9BUkNIXzMwMDtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjQyNTpcXHRlbHNlIGlmIChjcHVfaGFzX2ZlYXR1cmUoQ1BVX0ZUUl9BUkNIXzIwN1MpKVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNDI2LVxcdFxcdGhvc3RfcGNyX2JpdCA9IFBDUl9BUkNIXzIwNztcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjQyNzpcXHRlbHNlIGlmIChjcHVfaGFzX2ZlYXR1cmUoQ1BVX0ZUUl9BUkNIXzIwNikpXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00MjgtXFx0XFx0aG9zdF9wY3JfYml0ID0gUENSX0FSQ0hfMjA2O1xcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00NzQtXFx0dmMtXFx1MDAzZWFyY2hfY29tcGF0ID0gYXJjaF9jb21wYXQ7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo0NzU6XFx0a3ZtaHZfbmVzdGVkdjJfbWFya19kaXJ0eSh2Y3B1LCBLVk1QUENfR1NJRF9MT0dJQ0FMX1BWUik7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00NzYtXFx0LypcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNDg1LVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NDg2OnN0YXRpYyB2b2lkIGt2bXBwY19kdW1wX3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNDg3LXtcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNDg5LVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NDkwOlxcdHByX2VycihcXFwidmNwdSAlcCAoJWQpOlxcXFxuXFxcIiwgdmNwdSwgdmNwdS1cXHUwMDNldmNwdV9pZCk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00OTEtXFx0cHJfZXJyKFxcXCJwYyAgPSAlLjE2bHggIG1zciA9ICUuMTZsbHggIHRyYXAgPSAleFxcXFxuXFxcIixcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjQ5MjpcXHQgICAgICAgdmNwdS1cXHUwMDNlYXJjaC5yZWdzLm5pcCwgdmNwdS1cXHUwMDNlYXJjaC5zaHJlZ3MubXNyLCB2Y3B1LVxcdTAwM2VhcmNoLnRyYXApO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNDkzLVxcdGZvciAociA9IDA7IHIgXFx1MDAzYyAxNjsgKytyKVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNDk0LVxcdFxcdHByX2VycihcXFwiciUyZCA9ICUuMTZseCAgciVkID0gJS4xNmx4XFxcXG5cXFwiLFxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NDk1OlxcdFxcdCAgICAgICByLCBrdm1wcGNfZ2V0X2dwcih2Y3B1LCByKSxcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjQ5NjpcXHRcXHQgICAgICAgcisxNiwga3ZtcHBjX2dldF9ncHIodmNwdSwgcisxNikpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNDk3LVxcdHByX2VycihcXFwiY3RyID0gJS4xNmx4ICBsciAgPSAlLjE2bHhcXFxcblxcXCIsXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo0OTg6XFx0ICAgICAgIHZjcHUtXFx1MDAzZWFyY2gucmVncy5jdHIsIHZjcHUtXFx1MDAzZWFyY2gucmVncy5saW5rKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQ5OS1cXHRwcl9lcnIoXFxcInNycjAgPSAlLjE2bGx4IHNycjEgPSAlLjE2bGx4XFxcXG5cXFwiLFxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NTAwOlxcdCAgICAgICB2Y3B1LVxcdTAwM2VhcmNoLnNocmVncy5zcnIwLCB2Y3B1LVxcdTAwM2VhcmNoLnNocmVncy5zcnIxKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTUwMS1cXHRwcl9lcnIoXFxcInNwcmcwID0gJS4xNmxseCBzcHJnMSA9ICUuMTZsbHhcXFxcblxcXCIsXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1MDI6XFx0ICAgICAgIHZjcHUtXFx1MDAzZWFyY2guc2hyZWdzLnNwcmcwLCB2Y3B1LVxcdTAwM2VhcmNoLnNocmVncy5zcHJnMSk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01MDMtXFx0cHJfZXJyKFxcXCJzcHJnMiA9ICUuMTZsbHggc3ByZzMgPSAlLjE2bGx4XFxcXG5cXFwiLFxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NTA0OlxcdCAgICAgICB2Y3B1LVxcdTAwM2VhcmNoLnNocmVncy5zcHJnMiwgdmNwdS1cXHUwMDNlYXJjaC5zaHJlZ3Muc3ByZzMpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTA1LVxcdHByX2VycihcXFwiY3IgPSAlLjhseCAgeGVyID0gJS4xNmx4ICBkc2lzciA9ICUuOHhcXFxcblxcXCIsXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1MDY6XFx0ICAgICAgIHZjcHUtXFx1MDAzZWFyY2gucmVncy5jY3IsIHZjcHUtXFx1MDAzZWFyY2gucmVncy54ZXIsIHZjcHUtXFx1MDAzZWFyY2guc2hyZWdzLmRzaXNyKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjUwNzpcXHRwcl9lcnIoXFxcImRhciA9ICUuMTZsbHhcXFxcblxcXCIsIHZjcHUtXFx1MDAzZWFyY2guc2hyZWdzLmRhcik7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01MDgtXFx0cHJfZXJyKFxcXCJmYXVsdCBkYXIgPSAlLjE2bHggZHNpc3IgPSAlLjh4XFxcXG5cXFwiLFxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NTA5OlxcdCAgICAgICB2Y3B1LVxcdTAwM2VhcmNoLmZhdWx0X2RhciwgdmNwdS1cXHUwMDNlYXJjaC5mYXVsdF9kc2lzcik7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1MTA6XFx0cHJfZXJyKFxcXCJTTEIgKCVkIGVudHJpZXMpOlxcXFxuXFxcIiwgdmNwdS1cXHUwMDNlYXJjaC5zbGJfbWF4KTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjUxMTpcXHRmb3IgKHIgPSAwOyByIFxcdTAwM2MgdmNwdS1cXHUwMDNlYXJjaC5zbGJfbWF4OyArK3IpXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01MTItXFx0XFx0cHJfZXJyKFxcXCIgIEVTSUQgPSAlLjE2bGx4IFZTSUQgPSAlLjE2bGx4XFxcXG5cXFwiLFxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NTEzOlxcdFxcdCAgICAgICB2Y3B1LVxcdTAwM2VhcmNoLnNsYltyXS5vcmlnZSwgdmNwdS1cXHUwMDNlYXJjaC5zbGJbcl0ub3JpZ3YpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTE0LVxcdHByX2VycihcXFwibHBjciA9ICUuMTZseCBzZHIxID0gJS4xNmx4IGxhc3RfaW5zdCA9ICUuMTZseFxcXFxuXFxcIixcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjUxNTpcXHQgICAgICAgdmNwdS1cXHUwMDNlYXJjaC52Y29yZS1cXHUwMDNlbHBjciwgdmNwdS1cXHUwMDNla3ZtLVxcdTAwM2VhcmNoLnNkcjEsXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1MTY6XFx0ICAgICAgIHZjcHUtXFx1MDAzZWFyY2gubGFzdF9pbnN0KTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTUxNy19XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01MTgtXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1MTk6c3RhdGljIHN0cnVjdCBrdm1fdmNwdSAqa3ZtcHBjX2ZpbmRfdmNwdShzdHJ1Y3Qga3ZtICprdm0sIGludCBpZClcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTUyMC17XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1MjE6XFx0cmV0dXJuIGt2bV9nZXRfdmNwdV9ieV9pZChrdm0sIGlkKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTUyMi19XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01MjMtXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1MjQ6c3RhdGljIHZvaWQgaW5pdF92cGEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3QgbHBwYWNhICp2cGEpXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01MjUte1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTI2LVxcdHZwYS1cXHUwMDNlX19vbGRfc3RhdHVzIHw9IExQUEFDQV9PTERfU0hBUkVEX1BST0M7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1Mjc6XFx0dnBhLVxcdTAwM2V5aWVsZF9jb3VudCA9IGNwdV90b19iZTMyKDEpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTI4LX1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTUyOS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjUzMDpzdGF0aWMgaW50IHNldF92cGEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtcHBjX3ZwYSAqdixcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTUzMS1cXHRcXHQgICB1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgbGVuKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01MzUtXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1MzY6XFx0c3Bpbl9sb2NrKFxcdTAwMjZ2Y3B1LVxcdTAwM2VhcmNoLnZwYV91cGRhdGVfbG9jayk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01MzctXFx0aWYgKHYtXFx1MDAzZW5leHRfZ3BhICE9IGFkZHIgfHwgdi1cXHUwMDNlbGVuICE9IGxlbikge1xcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01NDEtXFx0fVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NTQyOlxcdHNwaW5fdW5sb2NrKFxcdTAwMjZ2Y3B1LVxcdTAwM2VhcmNoLnZwYV91cGRhdGVfbG9jayk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01NDMtXFx0cmV0dXJuIDA7XFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jPTU1NT1zdGF0aWMgaW50IHZwYV9pc19yZWdpc3RlcmVkKHN0cnVjdCBrdm1wcGNfdnBhICp2cGFwKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01NjEtXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1NjI6c3RhdGljIHVuc2lnbmVkIGxvbmcgZG9faF9yZWdpc3Rlcl92cGEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTYzLVxcdFxcdFxcdFxcdCAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzLFxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NTY0OlxcdFxcdFxcdFxcdCAgICAgICB1bnNpZ25lZCBsb25nIHZjcHVpZCwgdW5zaWduZWQgbG9uZyB2cGEpXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01NjUte1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NTY2OlxcdHN0cnVjdCBrdm0gKmt2bSA9IHZjcHUtXFx1MDAzZWt2bTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTU2Ny1cXHR1bnNpZ25lZCBsb25nIGxlbiwgbmI7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01NjgtXFx0dm9pZCAqdmE7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1Njk6XFx0c3RydWN0IGt2bV92Y3B1ICp0dmNwdTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTU3MC1cXHRpbnQgZXJyO1xcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01NzMtXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1NzQ6XFx0dHZjcHUgPSBrdm1wcGNfZmluZF92Y3B1KGt2bSwgdmNwdWlkKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjU3NTpcXHRpZiAoIXR2Y3B1KVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTc2LVxcdFxcdHJldHVybiBIX1BBUkFNRVRFUjtcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTg5LVxcdFxcdGlmIChzdWJmdW5jID09IEhfVlBBX1JFR19WUEEpXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1OTA6XFx0XFx0XFx0bGVuID0gYmUxNl90b19jcHUoKChzdHJ1Y3QgcmVnX3ZwYSAqKXZhKS1cXHUwMDNlbGVuZ3RoLmh3b3JkKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTU5MS1cXHRcXHRlbHNlXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1OTI6XFx0XFx0XFx0bGVuID0gYmUzMl90b19jcHUoKChzdHJ1Y3QgcmVnX3ZwYSAqKXZhKS1cXHUwMDNlbGVuZ3RoLndvcmQpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTkzLVxcdFxcdGt2bXBwY191bnBpbl9ndWVzdF9wYWdlKGt2bSwgdmEsIHZwYSwgZmFsc2UpO1xcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy02MDQtXFx0dnBhcCA9IE5VTEw7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo2MDU6XFx0c3Bpbl9sb2NrKFxcdTAwMjZ0dmNwdS1cXHUwMDNlYXJjaC52cGFfdXBkYXRlX2xvY2spO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjA2LVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy02MTctXFx0XFx0XFx0YnJlYWs7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo2MTg6XFx0XFx0dnBhcCA9IFxcdTAwMjZ0dmNwdS1cXHUwMDNlYXJjaC52cGE7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy02MTktXFx0XFx0ZXJyID0gMDtcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjI4LVxcdFxcdGVyciA9IEhfUkVTT1VSQ0U7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo2Mjk6XFx0XFx0aWYgKCF2cGFfaXNfcmVnaXN0ZXJlZChcXHUwMDI2dHZjcHUtXFx1MDAzZWFyY2gudnBhKSlcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTYzMC1cXHRcXHRcXHRicmVhaztcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTYzMS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjYzMjpcXHRcXHR2cGFwID0gXFx1MDAyNnR2Y3B1LVxcdTAwM2VhcmNoLmR0bDtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTYzMy1cXHRcXHRlcnIgPSAwO1xcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy02MzgtXFx0XFx0ZXJyID0gSF9SRVNPVVJDRTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjYzOTpcXHRcXHRpZiAoIXZwYV9pc19yZWdpc3RlcmVkKFxcdTAwMjZ0dmNwdS1cXHUwMDNlYXJjaC52cGEpKVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjQwLVxcdFxcdFxcdGJyZWFrO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjQxLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NjQyOlxcdFxcdHZwYXAgPSBcXHUwMDI2dHZjcHUtXFx1MDAzZWFyY2guc2xiX3NoYWRvdztcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTY0My1cXHRcXHRlcnIgPSAwO1xcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy02NDgtXFx0XFx0ZXJyID0gSF9SRVNPVVJDRTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjY0OTpcXHRcXHRpZiAodnBhX2lzX3JlZ2lzdGVyZWQoXFx1MDAyNnR2Y3B1LVxcdTAwM2VhcmNoLmR0bCkgfHxcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjY1MDpcXHRcXHQgICAgdnBhX2lzX3JlZ2lzdGVyZWQoXFx1MDAyNnR2Y3B1LVxcdTAwM2VhcmNoLnNsYl9zaGFkb3cpKVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjUxLVxcdFxcdFxcdGJyZWFrO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjUyLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NjUzOlxcdFxcdHZwYXAgPSBcXHUwMDI2dHZjcHUtXFx1MDAzZWFyY2gudnBhO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjU0LVxcdFxcdGVyciA9IDA7XFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTY1Ny1cXHRjYXNlIEhfVlBBX0RFUkVHX0RUTDpcXHRcXHQvKiBkZXJlZ2lzdGVyIERUTCAqL1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NjU4OlxcdFxcdHZwYXAgPSBcXHUwMDI2dHZjcHUtXFx1MDAzZWFyY2guZHRsO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjU5LVxcdFxcdGVyciA9IDA7XFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTY2Mi1cXHRjYXNlIEhfVlBBX0RFUkVHX1NMQjpcXHRcXHQvKiBkZXJlZ2lzdGVyIFNMQiBzaGFkb3cgYnVmZmVyICovXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo2NjM6XFx0XFx0dnBhcCA9IFxcdTAwMjZ0dmNwdS1cXHUwMDNlYXJjaC5zbGJfc2hhZG93O1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjY0LVxcdFxcdGVyciA9IDA7XFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTY3My1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjY3NDpcXHRzcGluX3VubG9jayhcXHUwMDI2dHZjcHUtXFx1MDAzZWFyY2gudnBhX3VwZGF0ZV9sb2NrKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTY3NS1cXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjc4LVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6Njc5OnN0YXRpYyB2b2lkIGt2bXBwY191cGRhdGVfdnBhKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bXBwY192cGEgKnZwYXAsXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy02ODAtXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBrdm1wcGNfdnBhICpvbGRfdnBhcClcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTY4MS17XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo2ODI6XFx0c3RydWN0IGt2bSAqa3ZtID0gdmNwdS1cXHUwMDNla3ZtO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjgzLVxcdHZvaWQgKnZhO1xcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy02OTYtXFx0XFx0Z3BhID0gdnBhcC1cXHUwMDNlbmV4dF9ncGE7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo2OTc6XFx0XFx0c3Bpbl91bmxvY2soXFx1MDAyNnZjcHUtXFx1MDAzZWFyY2gudnBhX3VwZGF0ZV9sb2NrKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTY5OC1cXHRcXHR2YSA9IE5VTEw7XFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTcwMS1cXHRcXHRcXHR2YSA9IGt2bXBwY19waW5fZ3Vlc3RfcGFnZShrdm0sIGdwYSwgXFx1MDAyNm5iKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjcwMjpcXHRcXHRzcGluX2xvY2soXFx1MDAyNnZjcHUtXFx1MDAzZWFyY2gudnBhX3VwZGF0ZV9sb2NrKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTcwMy1cXHRcXHRpZiAoZ3BhID09IHZwYXAtXFx1MDAzZW5leHRfZ3BhKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03MjgtXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo3Mjk6c3RhdGljIHZvaWQga3ZtcHBjX3VwZGF0ZV92cGFzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTczMC17XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo3MzE6XFx0c3RydWN0IGt2bSAqa3ZtID0gdmNwdS1cXHUwMDNla3ZtO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNzMyLVxcdHN0cnVjdCBrdm1wcGNfdnBhIG9sZF92cGEgPSB7IDAgfTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTczMy1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjczNDpcXHRpZiAoISh2Y3B1LVxcdTAwM2VhcmNoLnZwYS51cGRhdGVfcGVuZGluZyB8fFxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NzM1OlxcdCAgICAgIHZjcHUtXFx1MDAzZWFyY2guc2xiX3NoYWRvdy51cGRhdGVfcGVuZGluZyB8fFxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NzM2OlxcdCAgICAgIHZjcHUtXFx1MDAzZWFyY2guZHRsLnVwZGF0ZV9wZW5kaW5nKSlcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTczNy1cXHRcXHRyZXR1cm47XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03MzgtXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo3Mzk6XFx0c3Bpbl9sb2NrKFxcdTAwMjZ2Y3B1LVxcdTAwM2VhcmNoLnZwYV91cGRhdGVfbG9jayk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo3NDA6XFx0aWYgKHZjcHUtXFx1MDAzZWFyY2gudnBhLnVwZGF0ZV9wZW5kaW5nKSB7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo3NDE6XFx0XFx0a3ZtcHBjX3VwZGF0ZV92cGEodmNwdSwgXFx1MDAyNnZjcHUtXFx1MDAzZWFyY2gudnBhLCBcXHUwMDI2b2xkX3ZwYSk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03NDItXFx0XFx0aWYgKG9sZF92cGEucGlubmVkX2FkZHIpIHtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTc0My1cXHRcXHRcXHRpZiAoa3ZtaHZfaXNfbmVzdGVkdjIoKSlcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjc0NDpcXHRcXHRcXHRcXHRrdm1odl9uZXN0ZWR2Ml9zZXRfdnBhKHZjcHUsIH4wdWxsKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTc0NS1cXHRcXHRcXHRrdm1wcGNfdW5waW5fZ3Vlc3RfcGFnZShrdm0sIG9sZF92cGEucGlubmVkX2FkZHIsIG9sZF92cGEuZ3BhLFxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03NDctXFx0XFx0fVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NzQ4OlxcdFxcdGlmICh2Y3B1LVxcdTAwM2VhcmNoLnZwYS5waW5uZWRfYWRkcikge1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NzQ5OlxcdFxcdFxcdGluaXRfdnBhKHZjcHUsIHZjcHUtXFx1MDAzZWFyY2gudnBhLnBpbm5lZF9hZGRyKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTc1MC1cXHRcXHRcXHRpZiAoa3ZtaHZfaXNfbmVzdGVkdjIoKSlcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjc1MTpcXHRcXHRcXHRcXHRrdm1odl9uZXN0ZWR2Ml9zZXRfdnBhKHZjcHUsIF9fcGEodmNwdS1cXHUwMDNlYXJjaC52cGEucGlubmVkX2FkZHIpKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTc1Mi1cXHRcXHR9XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03NTMtXFx0fVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NzU0OlxcdGlmICh2Y3B1LVxcdTAwM2VhcmNoLmR0bC51cGRhdGVfcGVuZGluZykge1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NzU1OlxcdFxcdGt2bXBwY191cGRhdGVfdnBhKHZjcHUsIFxcdTAwMjZ2Y3B1LVxcdTAwM2VhcmNoLmR0bCwgXFx1MDAyNm9sZF92cGEpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNzU2LVxcdFxcdGlmIChvbGRfdnBhLnBpbm5lZF9hZGRyKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03NTgtXFx0XFx0XFx0XFx0XFx0XFx0b2xkX3ZwYS5kaXJ0eSk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo3NTk6XFx0XFx0dmNwdS1cXHUwMDNlYXJjaC5kdGxfcHRyID0gdmNwdS1cXHUwMDNlYXJjaC5kdGwucGlubmVkX2FkZHI7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo3NjA6XFx0XFx0dmNwdS1cXHUwMDNlYXJjaC5kdGxfaW5kZXggPSAwO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNzYxLVxcdH1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjc2MjpcXHRpZiAodmNwdS1cXHUwMDNlYXJjaC5zbGJfc2hhZG93LnVwZGF0ZV9wZW5kaW5nKSB7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo3NjM6XFx0XFx0a3ZtcHBjX3VwZGF0ZV92cGEodmNwdSwgXFx1MDAyNnZjcHUtXFx1MDAzZWFyY2guc2xiX3NoYWRvdywgXFx1MDAyNm9sZF92cGEpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNzY0LVxcdFxcdGlmIChvbGRfdnBhLnBpbm5lZF9hZGRyKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03NjgtXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo3Njk6XFx0c3Bpbl91bmxvY2soXFx1MDAyNnZjcHUtXFx1MDAzZWFyY2gudnBhX3VwZGF0ZV9sb2NrKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTc3MC19XFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jPTc3Nj1zdGF0aWMgdTY0IHZjb3JlX3N0b2xlbl90aW1lKHN0cnVjdCBrdm1wcGNfdmNvcmUgKnZjLCB1NjQgbm93KVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03ODAtXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo3ODE6XFx0V0FSTl9PTl9PTkNFKGNwdV9oYXNfZmVhdHVyZShDUFVfRlRSX0FSQ0hfMzAwKSk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03ODItXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTc5MS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjc5MjpzdGF0aWMgdm9pZCBfX2t2bXBwY19jcmVhdGVfZHRsX2VudHJ5KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTc5My1cXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgbHBwYWNhICp2cGEsXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo3OTQ6XFx0XFx0XFx0XFx0XFx0dW5zaWduZWQgaW50IHBjcHUsIHU2NCBub3csXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03OTUtXFx0XFx0XFx0XFx0XFx0dW5zaWduZWQgbG9uZyBzdG9sZW4pXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTc5OC1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjc5OTpcXHRkdCA9IHZjcHUtXFx1MDAzZWFyY2guZHRsX3B0cjtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTgwMC1cXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODA1LVxcdGR0LVxcdTAwM2VwcmVlbXB0X3JlYXNvbiA9IDA7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4MDY6XFx0ZHQtXFx1MDAzZXByb2Nlc3Nvcl9pZCA9IGNwdV90b19iZTE2KHBjcHUgKyB2Y3B1LVxcdTAwM2VhcmNoLnB0aWQpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODA3OlxcdGR0LVxcdTAwM2VlbnF1ZXVlX3RvX2Rpc3BhdGNoX3RpbWUgPSBjcHVfdG9fYmUzMihzdG9sZW4pO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODA4LVxcdGR0LVxcdTAwM2VyZWFkeV90b19lbnF1ZXVlX3RpbWUgPSAwO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODA5LVxcdGR0LVxcdTAwM2V3YWl0aW5nX3RvX3JlYWR5X3RpbWUgPSAwO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODEwOlxcdGR0LVxcdTAwM2V0aW1lYmFzZSA9IGNwdV90b19iZTY0KG5vdyk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04MTEtXFx0ZHQtXFx1MDAzZWZhdWx0X2FkZHIgPSAwO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODEyOlxcdGR0LVxcdTAwM2VzcnIwID0gY3B1X3RvX2JlNjQoa3ZtcHBjX2dldF9wYyh2Y3B1KSk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4MTM6XFx0ZHQtXFx1MDAzZXNycjEgPSBjcHVfdG9fYmU2NCh2Y3B1LVxcdTAwM2VhcmNoLnNocmVncy5tc3IpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODE0LVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODE1LVxcdCsrZHQ7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4MTY6XFx0aWYgKGR0ID09IHZjcHUtXFx1MDAzZWFyY2guZHRsLnBpbm5lZF9lbmQpXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4MTc6XFx0XFx0ZHQgPSB2Y3B1LVxcdTAwM2VhcmNoLmR0bC5waW5uZWRfYWRkcjtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjgxODpcXHR2Y3B1LVxcdTAwM2VhcmNoLmR0bF9wdHIgPSBkdDtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTgxOS1cXHQvKiBvcmRlciB3cml0aW5nICpkdCB2cy4gd3JpdGluZyB2cGEtXFx1MDAzZWR0bF9pZHggKi9cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTgyMC1cXHRzbXBfd21iKCk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4MjE6XFx0dnBhLVxcdTAwM2VkdGxfaWR4ID0gY3B1X3RvX2JlNjQoKyt2Y3B1LVxcdTAwM2VhcmNoLmR0bF9pbmRleCk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04MjItXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4MjM6XFx0LyogdmNwdS1cXHUwMDNlYXJjaC5kdGwuZGlydHkgaXMgc2V0IGJ5IHRoZSBjYWxsZXIgKi9cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTgyNC19XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04MjUtXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4MjY6c3RhdGljIHZvaWQga3ZtcHBjX3VwZGF0ZV92cGFfZGlzcGF0Y2goc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODI3LVxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3Qga3ZtcHBjX3Zjb3JlICp2YylcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODM0LVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODM1OlxcdHZwYSA9IHZjcHUtXFx1MDAzZWFyY2gudnBhLnBpbm5lZF9hZGRyO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODM2LVxcdGlmICghdnBhKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04NDEtXFx0Y29yZV9zdG9sZW4gPSB2Y29yZV9zdG9sZW5fdGltZSh2Yywgbm93KTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjg0MjpcXHRzdG9sZW4gPSBjb3JlX3N0b2xlbiAtIHZjcHUtXFx1MDAzZWFyY2guc3RvbGVuX2xvZ2dlZDtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjg0MzpcXHR2Y3B1LVxcdTAwM2VhcmNoLnN0b2xlbl9sb2dnZWQgPSBjb3JlX3N0b2xlbjtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjg0NDpcXHRzcGluX2xvY2tfaXJxc2F2ZShcXHUwMDI2dmNwdS1cXHUwMDNlYXJjaC50YmFjY3RfbG9jaywgZmxhZ3MpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODQ1OlxcdHN0b2xlbiArPSB2Y3B1LVxcdTAwM2VhcmNoLmJ1c3lfc3RvbGVuO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODQ2OlxcdHZjcHUtXFx1MDAzZWFyY2guYnVzeV9zdG9sZW4gPSAwO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODQ3OlxcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNnZjcHUtXFx1MDAzZWFyY2gudGJhY2N0X2xvY2ssIGZsYWdzKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTg0OC1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjg0OTpcXHR2cGEtXFx1MDAzZWVucXVldWVfZGlzcGF0Y2hfdGIgPSBjcHVfdG9fYmU2NChiZTY0X3RvX2NwdSh2cGEtXFx1MDAzZWVucXVldWVfZGlzcGF0Y2hfdGIpICsgc3RvbGVuKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTg1MC1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjg1MTpcXHRfX2t2bXBwY19jcmVhdGVfZHRsX2VudHJ5KHZjcHUsIHZwYSwgdmMtXFx1MDAzZXBjcHUsIG5vdyArIGt2bXBwY19nZXRfdGJfb2Zmc2V0KHZjcHUpLCBzdG9sZW4pO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODUyLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODUzOlxcdHZjcHUtXFx1MDAzZWFyY2gudnBhLmRpcnR5ID0gdHJ1ZTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTg1NC19XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04NTUtXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4NTY6c3RhdGljIHZvaWQga3ZtcHBjX3VwZGF0ZV92cGFfZGlzcGF0Y2hfcDkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODU3LVxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3Qga3ZtcHBjX3Zjb3JlICp2YyxcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODYzLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODY0OlxcdHZwYSA9IHZjcHUtXFx1MDAzZWFyY2gudnBhLnBpbm5lZF9hZGRyO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODY1LVxcdGlmICghdnBhKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04NjgtXFx0c3RvbGVuID0gdmMtXFx1MDAzZXN0b2xlbl90YjtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjg2OTpcXHRzdG9sZW5fZGVsdGEgPSBzdG9sZW4gLSB2Y3B1LVxcdTAwM2VhcmNoLnN0b2xlbl9sb2dnZWQ7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4NzA6XFx0dmNwdS1cXHUwMDNlYXJjaC5zdG9sZW5fbG9nZ2VkID0gc3RvbGVuO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODcxLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODcyOlxcdHZwYS1cXHUwMDNlZW5xdWV1ZV9kaXNwYXRjaF90YiA9IGNwdV90b19iZTY0KHN0b2xlbik7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04NzMtXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4NzQ6XFx0X19rdm1wcGNfY3JlYXRlX2R0bF9lbnRyeSh2Y3B1LCB2cGEsIHZjLVxcdTAwM2VwY3B1LCBub3csIHN0b2xlbl9kZWx0YSk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04NzUtXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4NzY6XFx0dmNwdS1cXHUwMDNlYXJjaC52cGEuZGlydHkgPSB0cnVlO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODc3LX1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTg3OC1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjg3OTovKiBTZWUgaWYgdGhlcmUgaXMgYSBkb29yYmVsbCBpbnRlcnJ1cHQgcGVuZGluZyBmb3IgYSB2Y3B1ICovXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4ODA6c3RhdGljIGJvb2wga3ZtcHBjX2Rvb3JiZWxsX3BlbmRpbmcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODgxLXtcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODg0LVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODg1OlxcdGlmICh2Y3B1LVxcdTAwM2VhcmNoLmRvb3JiZWxsX3JlcXVlc3QpXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04ODYtXFx0XFx0cmV0dXJuIHRydWU7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4ODc6XFx0aWYgKGNwdV9oYXNfZmVhdHVyZShDUFVfRlRSX0FSQ0hfMzAwKSlcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTg4OC1cXHRcXHRyZXR1cm4gZmFsc2U7XFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTg5MC1cXHQgKiBFbnN1cmUgdGhhdCB0aGUgcmVhZCBvZiB2Y29yZS1cXHUwMDNlZHBkZXMgY29tZXMgYWZ0ZXIgdGhlIHJlYWRcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjg5MTpcXHQgKiBvZiB2Y3B1LVxcdTAwM2Vkb29yYmVsbF9yZXF1ZXN0LiAgVGhpcyBiYXJyaWVyIG1hdGNoZXMgdGhlXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04OTItXFx0ICogc21wX3dtYigpIGluIGt2bXBwY19ndWVzdF9lbnRyeV9pbmplY3QoKS5cXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODk0LVxcdHNtcF9ybWIoKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjg5NTpcXHR2YyA9IHZjcHUtXFx1MDAzZWFyY2gudmNvcmU7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4OTY6XFx0dGhyID0gdmNwdS1cXHUwMDNldmNwdV9pZCAtIHZjLVxcdTAwM2VmaXJzdF92Y3B1aWQ7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04OTctXFx0cmV0dXJuICEhKHZjLVxcdTAwM2VkcGRlcyBcXHUwMDI2ICgxIFxcdTAwM2NcXHUwMDNjIHRocikpO1xcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04OTktXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA0OjU3OjUzLjc2NzM0NTAwM1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwNTkwMjc0OTMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRlYnVnZ2luZyBhIFR5cG9zcXVhdHRpbmcgQnVnIGluIE5lc3RlZCBWaXJ0dWFsaXphdGlvbiBDb2RlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGluIGBrdm1odl92Y3B1X2VudHJ5X25lc3RlZHYyYCBhbmQgaW1tZWRpYXRlbHkgSSBzZWUgYSByZWQgZmxhZy4gVGhlIGNvbXBpbGVyJ3MgY29tcGxhaW5pbmcgdGhhdCBgY3B1YCBpcyB1bmRlZmluZWQuIExldCdzIHRyYWNlIGl0IGJhY2sgdG8gdGhlIHBhdGNoIGluIHF1ZXN0aW9uLiBBaCwgaGVyZSBpdCBpczpcblxuYGBgY1xuK1x0LyogQ2hlY2sgaWYgcHJpdmlsZWdlZCBkb29yIGJlbGwgd2FzIHJlcXVlc3RlZCBhbmQgaGFuZGxlZCAqL1xuK1x0aWYgKHZjcHUtXHUwMDNlYXJjaC52Y29yZS1cdTAwM2VkcGRlcykge1xuK1x0XHRrdm1odl9uZXN0ZWR2Ml9jYWNoZWRfcmVsb2FkKHZjcHUsIEtWTVBQQ19HU0lEX0RQREVTKTtcbitcdFx0aWYgKHZjcHUtXHUwMDNlYXJjaC52Y29yZS1cdTAwM2VkcGRlcylcbitcdFx0XHR2Y3B1LVx1MDAzZWFyY2guZG9vcmJlbGxfcmVxdWVzdCB8PSB2Y3B1LVx1MDAzZWFyY2gudmNvcmUtXHUwMDNlZHBkZXM7XG4rXHRcdGVsc2VcbitcdFx0XHRjcHUtXHUwMDNlYXJjaC5kb29yYmVsbF9yZXF1ZXN0ID0gMDtcbitcdH0gZWxzZSB7XG4rXHRcdHZjcHUtXHUwMDNlYXJjaC5kb29yYmVsbF9yZXF1ZXN0ID0gMDtcbitcdH1cbmBgYFxuXG5ZZXAsIHRoYXQncyBkZWZpbml0ZWx5IGEgdHlwby4gSXQgKnNob3VsZCogYmUgYHZjcHUtXHUwMDNlYXJjaC5kb29yYmVsbF9yZXF1ZXN0ID0gMDtgIG5vdCBgY3B1LVx1MDAzZWFyY2guZG9vcmJlbGxfcmVxdWVzdCA9IDA7YC4gSSBjYW4gaW1tZWRpYXRlbHkgdGVsbCB0aGF0J3MgYW4gZXJyb3IuIFRoZSB2YXJpYWJsZSBgY3B1YCBpc24ndCBkZWNsYXJlZCB3aXRoaW4gdGhlIHNjb3BlIG9mIGBrdm1odl92Y3B1X2VudHJ5X25lc3RlZHYyYC4gTGV0IG1lIHF1aWNrbHkgY29uZmlybSBieSBjaGVja2luZyB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbi5cblxuYGBgY1xuNDI0OTpcdHN0YXRpYyBpbnQga3ZtaHZfdmNwdV9lbnRyeV9uZXN0ZWR2MihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCB0aW1lX2xpbWl0LFxuNDI1MDpcdFx0XHRcdFx0ICAgICB1bnNpZ25lZCBsb25nIGxwY3IsIHU2NCAqdGIpXG40MjUxOlx0e1xuNDI1MjpcdFx0c3RydWN0IGt2bWh2X25lc3RlZHYyX2lvICppbztcbjQyNTM6XHRcdHVuc2lnbmVkIGxvbmcgbXNyLCBpO1xuNDI1NDpcdFx0aW50IHRyYXA7XG40MjU1Olx0XHRsb25nIHJjO1xuYGBgXG5cbk5vcGUsIGRlZmluaXRlbHkgbm8gYGNwdWAgdmFyaWFibGUgZGVjbGFyZWQgdGhlcmUuIFRoZSBjb21waWxlciBzaG91bGQgYmUgdGhyb3dpbmcgYSBmaXQuIE5vdywgdGhlIHF1ZXN0aW9uIGlzLCBpZiBpdCdzIGJyb2tlbiBhbmQgd29uJ3QgY29tcGlsZSwgZG9lcyBpdCBldmVuICptYWtlIHNlbnNlKiB0byBmdXp6IHRoaXM/IFdlbGwsIHRoZSBwcm9tcHQgc2F5cyB0aGUgY2hhbmdlcyBoYXZlIGFscmVhZHkgYmVlbiBhcHBsaWVkLCBtZWFuaW5nIHRoZSBjb2RlIG11c3QgaGF2ZSAqc29tZWhvdyogY29tcGlsZWQuXG5cbkxldCBtZSB0aGluayBmb3IgYSBzZWNvbmQuLi4gY291bGQgYGNwdWAgYmUgYSBtYWNybz8gVGhhdCdzIHRoZSBvbmx5IHdheSBJIGNhbiBzZWUgdGhpcyBhY3R1YWxseSB3b3JraW5nLiBTbywgSSBuZWVkIHRvIGNoZWNrIGlmIGBjcHVgIGlzIGRlZmluZWQgYXMgYSBtYWNybyBpbiB0aGlzIGNvbnRleHQuIElmIGl0J3Mgbm90IGEgbWFjcm8sIHRoZW4gaXQgaXMgYSBkZWFkIGVuZC4gV2UgbmVlZCB0byBhc3Nlc3MgaWYgdGhpcyBtYWtlcyB0aGUgY29tbWl0IHVzZWxlc3MgZm9yIGEgZnV6emluZyB0ZXN0LiBJdCdzIGEgdHJpdmlhbCBlcnJvciBpbiB0aGUgY2FzZSB0aGF0IGl0IGRvZXMgbm90IGNvbXBpbGUgYXMgaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwODY3LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTA3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA0OjU4OjA0LjM1NzY1MjE1NFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njg4Nzg2NDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiI2RlZmluZSBjcHVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9wb3dlcnBjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Bvd2VycGMvYm9vdC9saWJmZHRfZW52Lmg9MTg9dHlwZWRlZiBfX2JlNjQgZmR0NjRfdDtcXG4tLVxcbmFyY2gvcG93ZXJwYy9ib290L2xpYmZkdF9lbnYuaC0yMC0jZGVmaW5lIGZkdDE2X3RvX2NwdSh4KVxcdFxcdGJlMTZfdG9fY3B1KHgpXFxuYXJjaC9wb3dlcnBjL2Jvb3QvbGliZmR0X2Vudi5oOjIxOiNkZWZpbmUgY3B1X3RvX2ZkdDE2KHgpXFx0XFx0Y3B1X3RvX2JlMTYoeClcXG5hcmNoL3Bvd2VycGMvYm9vdC9saWJmZHRfZW52LmgtMjItI2RlZmluZSBmZHQzMl90b19jcHUoeClcXHRcXHRiZTMyX3RvX2NwdSh4KVxcbmFyY2gvcG93ZXJwYy9ib290L2xpYmZkdF9lbnYuaDoyMzojZGVmaW5lIGNwdV90b19mZHQzMih4KVxcdFxcdGNwdV90b19iZTMyKHgpXFxuYXJjaC9wb3dlcnBjL2Jvb3QvbGliZmR0X2Vudi5oLTI0LSNkZWZpbmUgZmR0NjRfdG9fY3B1KHgpXFx0XFx0YmU2NF90b19jcHUoeClcXG5hcmNoL3Bvd2VycGMvYm9vdC9saWJmZHRfZW52Lmg6MjU6I2RlZmluZSBjcHVfdG9fZmR0NjQoeClcXHRcXHRjcHVfdG9fYmU2NCh4KVxcbmFyY2gvcG93ZXJwYy9ib290L2xpYmZkdF9lbnYuaC0yNi1cXG4tLVxcbmFyY2gvcG93ZXJwYy9ib290L29mLmg9Mjc9dHlwZWRlZiB1NjRcXHRcXHRcXHRfX2JlNjQ7XFxuLS1cXG5hcmNoL3Bvd2VycGMvYm9vdC9vZi5oLTI5LSNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fX1xcbmFyY2gvcG93ZXJwYy9ib290L29mLmg6MzA6I2RlZmluZSBjcHVfdG9fYmUxNih4KSBzd2FiMTYoeClcXG5hcmNoL3Bvd2VycGMvYm9vdC9vZi5oLTMxLSNkZWZpbmUgYmUxNl90b19jcHUoeCkgc3dhYjE2KHgpXFxuYXJjaC9wb3dlcnBjL2Jvb3Qvb2YuaDozMjojZGVmaW5lIGNwdV90b19iZTMyKHgpIHN3YWIzMih4KVxcbmFyY2gvcG93ZXJwYy9ib290L29mLmgtMzMtI2RlZmluZSBiZTMyX3RvX2NwdSh4KSBzd2FiMzIoeClcXG5hcmNoL3Bvd2VycGMvYm9vdC9vZi5oOjM0OiNkZWZpbmUgY3B1X3RvX2JlNjQoeCkgc3dhYjY0KHgpXFxuYXJjaC9wb3dlcnBjL2Jvb3Qvb2YuaC0zNS0jZGVmaW5lIGJlNjRfdG9fY3B1KHgpIHN3YWI2NCh4KVxcbmFyY2gvcG93ZXJwYy9ib290L29mLmgtMzYtI2Vsc2VcXG5hcmNoL3Bvd2VycGMvYm9vdC9vZi5oOjM3OiNkZWZpbmUgY3B1X3RvX2JlMTYoeCkgKHgpXFxuYXJjaC9wb3dlcnBjL2Jvb3Qvb2YuaC0zOC0jZGVmaW5lIGJlMTZfdG9fY3B1KHgpICh4KVxcbmFyY2gvcG93ZXJwYy9ib290L29mLmg6Mzk6I2RlZmluZSBjcHVfdG9fYmUzMih4KSAoeClcXG5hcmNoL3Bvd2VycGMvYm9vdC9vZi5oLTQwLSNkZWZpbmUgYmUzMl90b19jcHUoeCkgKHgpXFxuYXJjaC9wb3dlcnBjL2Jvb3Qvb2YuaDo0MTojZGVmaW5lIGNwdV90b19iZTY0KHgpICh4KVxcbmFyY2gvcG93ZXJwYy9ib290L29mLmgtNDItI2RlZmluZSBiZTY0X3RvX2NwdSh4KSAoeClcXG4tLVxcbmFyY2gvcG93ZXJwYy9ib290L3h6X2NvbmZpZy5oPTE0PXN0YXRpYyBpbmxpbmUgdWludDMyX3Qgc3dhYjMycCh2b2lkICpwKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2Jvb3QveHpfY29uZmlnLmgtMjItI2RlZmluZSBnZXRfbGUzMihwKSAoKigodWludDMyX3QgKikgKHApKSlcXG5hcmNoL3Bvd2VycGMvYm9vdC94el9jb25maWcuaDoyMzojZGVmaW5lIGNwdV90b19iZTMyKHgpIHN3YWIzMih4KVxcbmFyY2gvcG93ZXJwYy9ib290L3h6X2NvbmZpZy5oLTI0LXN0YXRpYyBpbmxpbmUgdTMyIGJlMzJfdG9fY3B1cChjb25zdCB1MzIgKnApXFxuLS1cXG5hcmNoL3Bvd2VycGMvYm9vdC94el9jb25maWcuaC0yOS0jZGVmaW5lIGdldF9sZTMyKHApIHN3YWIzMnAocClcXG5hcmNoL3Bvd2VycGMvYm9vdC94el9jb25maWcuaDozMDojZGVmaW5lIGNwdV90b19iZTMyKHgpICh4KVxcbmFyY2gvcG93ZXJwYy9ib290L3h6X2NvbmZpZy5oLTMxLXN0YXRpYyBpbmxpbmUgdTMyIGJlMzJfdG9fY3B1cChjb25zdCB1MzIgKnApXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vY3B1ZmVhdHVyZS5oLTI2LVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9jcHVmZWF0dXJlLmg6Mjc6I2RlZmluZSBjcHVfZmVhdHVyZSh4KVxcdFxcdCh4KVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9jcHVmZWF0dXJlLmgtMjgtXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vY3B1dGltZS5oLTI0LSNpZmRlZiBfX0tFUk5FTF9fXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2NwdXRpbWUuaDoyNTojZGVmaW5lIGNwdXRpbWVfdG9fbnNlY3MoY3B1dGltZSkgdGJfdG9fbnMoY3B1dGltZSlcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vY3B1dGltZS5oLTI2LVxcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3NtcC5oPTEzOD1leHRlcm4gYm9vbCB0aHJlYWRfZ3JvdXBfc2hhcmVzX2wzO1xcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9zbXAuaC0xMzktXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3NtcC5oOjE0MDojZGVmaW5lIGNwdV9zbXRfbWFzayBjcHVfc210X21hc2tcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vc21wLmgtMTQxLSNpZmRlZiBDT05GSUdfU0NIRURfU01UXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vdG9wb2xvZ3kuaD05PXN0cnVjdCBkcm1lbV9sbWI7XFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vdG9wb2xvZ3kuaC0yMC1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vdG9wb2xvZ3kuaDoyMTojZGVmaW5lIGNwdW1hc2tfb2Zfbm9kZShub2RlKSAoKG5vZGUpID09IC0xID9cXHRcXHRcXHRcXHRcXFxcXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3RvcG9sb2d5LmgtMjItXFx0XFx0XFx0ICAgICAgIGNwdV9hbGxfbWFzayA6XFx0XFx0XFx0XFx0XFxcXFxcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3RvcG9sb2d5Lmg9Mjk9c3RhdGljIGlubGluZSBpbnQgcGNpYnVzX3RvX25vZGUoc3RydWN0IHBjaV9idXMgKmJ1cylcXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS90b3BvbG9neS5oLTM0LVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS90b3BvbG9neS5oOjM1OiNkZWZpbmUgY3B1bWFza19vZl9wY2lidXMoYnVzKVxcdChwY2lidXNfdG9fbm9kZShidXMpID09IC0xID9cXHRcXHRcXFxcXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3RvcG9sb2d5LmgtMzYtXFx0XFx0XFx0XFx0IGNwdV9hbGxfbWFzayA6XFx0XFx0XFx0XFx0XFxcXFxcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3Zkc28vcHJvY2Vzc29yLmgtMjctI2lmZGVmIENPTkZJR19QUEM2NFxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS92ZHNvL3Byb2Nlc3Nvci5oOjI4OiNkZWZpbmUgY3B1X3JlbGF4KClcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3Zkc28vcHJvY2Vzc29yLmgtMjktXFx0YXNtIHZvbGF0aWxlKEFTTV9GVFJfSUZDTFIoXFx0XFx0XFx0XFx0XFx0XFxcXFxcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3Zkc28vcHJvY2Vzc29yLmgtMzUtI2Vsc2VcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vdmRzby9wcm9jZXNzb3IuaDozNjojZGVmaW5lIGNwdV9yZWxheCgpXFx0YmFycmllcigpXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3Zkc28vcHJvY2Vzc29yLmgtMzctI2VuZGlmXFxuLS1cXG5hcmNoL3Bvd2VycGMva2V4ZWMvY29yZS5jLTI0LVxcbmFyY2gvcG93ZXJwYy9rZXhlYy9jb3JlLmM6MjU6I2RlZmluZSBjcHVfdG9fYmVfdWxvbmcgX19QQVNURShjcHVfdG9fYmUsIEJJVFNfUEVSX0xPTkcpXFxuYXJjaC9wb3dlcnBjL2tleGVjL2NvcmUuYy0yNi0jZGVmaW5lIF9fYmVfd29yZCBfX1BBU1RFKF9fYmUsIEJJVFNfUEVSX0xPTkcpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA0OjU4OjA0LjQyNjU0MDU1OVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTg5MzQyNjEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRlYnVnZ2luZyBhIFBvdGVudGlhbCBDb21waWxhdGlvbiBGYWlsdXJlKipcblxuT2theSwgaG9sZCBvbiBhIHNlY29uZC4gSSBqdXN0IHJlYWxpemVkIHRoYXQgdGhpcyBwYXRjaCBJJ20gbG9va2luZyBhdCBsaWtlbHkgd29uJ3QgY29tcGlsZS4gSSB3YXMgdGhpbmtpbmcgYGNwdWAgd2FzIGEgbWFjcm8sIGJ1dCBjbGVhcmx5LCBpdCdzIG5vdC4gVGhhdCdzIGEgbWFqb3Igb3ZlcnNpZ2h0IG9uIG15IHBhcnQuIEkgc2hvdWxkIGhhdmUgY2F1Z2h0IHRoYXQgZWFybGllci5cblxuQnV0IHdhaXQgYSBtaW51dGUsIGJlZm9yZSBJIGNvbXBsZXRlbHkgZGlzbWlzcyB0aGlzLCBsZXQncyBub3QganVtcCB0byBjb25jbHVzaW9ucy4gSXQncyBwb3NzaWJsZSwgYWxiZWl0IHVubGlrZWx5LCB0aGF0IGBjcHVgIGlzIGRlY2xhcmVkIGFzIGEgZ2xvYmFsIHZhcmlhYmxlIHNvbWV3aGVyZS4gUGVyaGFwcyBpdCdzIGRlZmluZWQgd2l0aGluIHRoaXMgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGNvbnRleHQsIG9yIG1heWJlIGl0J3MgcHVsbGVkIGluIGZyb20gYW5vdGhlciBoZWFkZXIuIExldCBtZSBqdXN0IHF1aWNrbHkgY2hlY2sgd2l0aGluIGBhcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jYCB0byBzZWUgaWYgdGhhdCdzIHRoZSBjYXNlLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgZGVmaW5pdGl2ZSBhbnN3ZXIgYmVmb3JlIEkgc3RhcnQgcmV3cml0aW5nIGNvZGUuIEkgbmVlZCB0byBiZSBzdXJlIEknbSBub3QgbWlzc2luZyBzb21ldGhpbmcgb2J2aW91cyBiZWZvcmUgSSByYWlzZSBhIGZsYWcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzNzY2LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDQ6NTg6MDguNjE1ODg1ODQyWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Mzc4NzQyNywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RydWN0IGt2bV92Y3B1IFxcXFwqY3B1XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA0OjU4OjA4LjY1OTY4NDg5WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzMDcwNjA2NDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MgcmVuZGVyZWQgaW4gdGhlIGZpcnN0IHBlcnNvbiwgYXNzdW1pbmcgSSdtIGFuIGV4cGVydDpcblxuKipJbnZlc3RpZ2F0aW5nIEdsb2JhbCBWYXJpYWJsZSBTY29wZSBpbiBQb3dlclBDIEtWTSBDb2RlKipcblxuQWxyaWdodCwgYmVmb3JlIEkgZGl2ZSBpbnRvIHRoZSBoZWFydCBvZiB0aGlzIHByb2JsZW0sIGxldCdzIGp1c3QgbWFrZSBhYnNvbHV0ZWx5IHN1cmUgd2UgaGF2ZW4ndCBnb3QgYSBnbG9iYWwgdmFyaWFibGUgaXNzdWUgY2F1c2luZyB0aGUgdHJvdWJsZS4gSSBuZWVkIHRvIHF1aWNrbHkgdmVyaWZ5IHRoZSBzY29wZSBvZiB0aGUgYGNwdWAgdmFyaWFibGUgd2l0aGluIGBhcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jYC4gSXQncyBhIGZ1bmRhbWVudGFsIHN0ZXA7IEkgY2FuJ3QgYWZmb3JkIHRvIG92ZXJsb29rIGEgc2ltcGxlIHNjb3BlIHByb2JsZW0gYW5kIHN0YXJ0IGNoYXNpbmcgbXkgdGFpbCB3aXRoIGNvbXBsZXggZGVidWdnaW5nIHRlY2huaXF1ZXMgaWYgaXQncyBub3QgYWJzb2x1dGVseSBuZWNlc3NhcnkuIExldCBtZSBwdWxsIHVwIHRoYXQgZmlsZSBhbmQgZG91YmxlLWNoZWNrIGl0cyBkZWNsYXJhdGlvbi4gR2xvYmFsIHZhcmlhYmxlcywgd2hpbGUgc29tZXRpbWVzIG5lY2Vzc2FyeSwgY2FuIGJlIGEgc291cmNlIG9mIGhlYWRhY2hlcyBpZiBub3QgcHJvcGVybHkgbWFuYWdlZCwgc28gSSBuZWVkIHRvIGtub3cgZGVmaW5pdGl2ZWx5IGlmIHRoaXMgaW5zdGFuY2UgaXMgaW50ZW5kZWQgdG8gYmUgZ2xvYmFsLCBhbmQgaWYgaXQncyBiZWluZyBhY2Nlc3NlZCBpbiB0aGUgYXBwcm9wcmlhdGUgbWFubmVyIGJ5IG90aGVyIGZ1bmN0aW9ucy9maWxlcy4gSSBuZWVkIHRvIGlkZW50aWZ5IHdoZXJlIGBjcHVgIGlzICpkZWNsYXJlZCouIFRoZW4sIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBhY2Nlc3MgZnJvbSBhbnkgb3RoZXIgZmlsZXMuIExldCdzIGRvIHRoaXMgbWV0aG9kaWNhbGx5IGFuZCBzZWUgd2hhdCB3ZSBjb21lIHVwIHdpdGguXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0MDgyLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDQ6NTg6MTIuOTY2NzQ4MjI2WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjA4NjQ4NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjcHVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDM1MTggbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjktI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2Fub25faW5vZGVzLmhcXHUwMDNlXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzozMDojaW5jbHVkZSBcXHUwMDNjbGludXgvY3B1LmhcXHUwMDNlXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzozMTojaW5jbHVkZSBcXHUwMDNjbGludXgvY3B1bWFzay5oXFx1MDAzZVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzItI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NwaW5sb2NrLmhcXHUwMDNlXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTU0LSNpbmNsdWRlIFxcdTAwM2Nhc20vZGlzYXNzZW1ibGUuaFxcdTAwM2VcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjU1OiNpbmNsdWRlIFxcdTAwM2Nhc20vY3B1dGFibGUuaFxcdTAwM2VcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTU2LSNpbmNsdWRlIFxcdTAwM2Nhc20vY2FjaGVmbHVzaC5oXFx1MDAzZVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy02NS0jaW5jbHVkZSBcXHUwMDNjYXNtL3Byb2Nlc3Nvci5oXFx1MDAzZVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NjY6I2luY2x1ZGUgXFx1MDAzY2FzbS9jcHV0aHJlYWRzLmhcXHUwMDNlXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy02Ny0jaW5jbHVkZSBcXHUwMDNjYXNtL3BhZ2UuaFxcdTAwM2VcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM9MTMzPU1PRFVMRV9QQVJNX0RFU0MobmVzdGVkLCBcXFwiRW5hYmxlIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiAob25seSBvbiBQT1dFUjkpXFxcIik7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0xMzQtXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoxMzU6c3RhdGljIGludCBrdm1wcGNfaHZfc2V0dXBfaHRhYl9ybWEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTEzNi1cXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM9MTUxPXN0YXRpYyB1bnNpZ25lZCBsb25nIHA4X3J3bXJfdmFsdWVzW01BWF9TTVRfVEhSRUFEUyArIDFdID0ge1xcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0xNjItXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoxNjM6c3RhdGljIGlubGluZSBzdHJ1Y3Qga3ZtX3ZjcHUgKm5leHRfcnVubmFibGVfdGhyZWFkKHN0cnVjdCBrdm1wcGNfdmNvcmUgKnZjLFxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMTY0LVxcdFxcdGludCAqaXApXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTE2Ni1cXHRpbnQgaSA9ICppcDtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjE2NzpcXHRzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHU7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0xNjgtXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0xNjktXFx0d2hpbGUgKCsraSBcXHUwMDNjIE1BWF9TTVRfVEhSRUFEUykge1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MTcwOlxcdFxcdHZjcHUgPSBSRUFEX09OQ0UodmMtXFx1MDAzZXJ1bm5hYmxlX3RocmVhZHNbaV0pO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MTcxOlxcdFxcdGlmICh2Y3B1KSB7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0xNzItXFx0XFx0XFx0KmlwID0gaTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjE3MzpcXHRcXHRcXHRyZXR1cm4gdmNwdTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTE3NC1cXHRcXHR9XFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTE3OS0vKiBVc2VkIHRvIHRyYXZlcnNlIHRoZSBsaXN0IG9mIHJ1bm5hYmxlIHRocmVhZHMgZm9yIGEgZ2l2ZW4gdmNvcmUgKi9cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjE4MDojZGVmaW5lIGZvcl9lYWNoX3J1bm5hYmxlX3RocmVhZChpLCB2Y3B1LCB2YykgXFxcXFxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MTgxOlxcdGZvciAoaSA9IC0xOyAodmNwdSA9IG5leHRfcnVubmFibGVfdGhyZWFkKHZjLCBcXHUwMDI2aSkpOyApXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0xODItXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoxODM6c3RhdGljIGJvb2wga3ZtcHBjX2lwaV90aHJlYWQoaW50IGNwdSlcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTE4NC17XFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTE5MC1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjE5MTpcXHQvKiBPbiBQT1dFUjkgd2UgY2FuIHVzZSBtc2dzbmQgdG8gSVBJIGFueSBjcHUgKi9cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjE5MjpcXHRpZiAoY3B1X2hhc19mZWF0dXJlKENQVV9GVFJfQVJDSF8zMDApKSB7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoxOTM6XFx0XFx0bXNnIHw9IGdldF9oYXJkX3NtcF9wcm9jZXNzb3JfaWQoY3B1KTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTE5NC1cXHRcXHRzbXBfbWIoKTtcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMTk5LVxcdC8qIE9uIFBPV0VSOCBmb3IgSVBJcyB0byB0aHJlYWRzIGluIHRoZSBzYW1lIGNvcmUsIHVzZSBtc2dzbmQgKi9cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjIwMDpcXHRpZiAoY3B1X2hhc19mZWF0dXJlKENQVV9GVFJfQVJDSF8yMDdTKSkge1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjAxLVxcdFxcdHByZWVtcHRfZGlzYWJsZSgpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjAyOlxcdFxcdGlmIChjcHVfZmlyc3RfdGhyZWFkX3NpYmxpbmcoY3B1KSA9PVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjAzOlxcdFxcdCAgICBjcHVfZmlyc3RfdGhyZWFkX3NpYmxpbmcoc21wX3Byb2Nlc3Nvcl9pZCgpKSkge1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjA0OlxcdFxcdFxcdG1zZyB8PSBjcHVfdGhyZWFkX2luX2NvcmUoY3B1KTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTIwNS1cXHRcXHRcXHRzbXBfbWIoKTtcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjEzLSNpZiBkZWZpbmVkKENPTkZJR19QUENfSUNQX05BVElWRSkgXFx1MDAyNlxcdTAwMjYgZGVmaW5lZChDT05GSUdfU01QKVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjE0OlxcdGlmIChjcHUgXFx1MDAzZT0gMCBcXHUwMDI2XFx1MDAyNiBjcHUgXFx1MDAzYyBucl9jcHVfaWRzKSB7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyMTU6XFx0XFx0aWYgKHBhY2FfcHRyc1tjcHVdLVxcdTAwM2Vrdm1faHN0YXRlLnhpY3NfcGh5cykge1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjE2OlxcdFxcdFxcdHhpY3Nfd2FrZV9jcHUoY3B1KTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTIxNy1cXHRcXHRcXHRyZXR1cm4gdHJ1ZTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTIxOC1cXHRcXHR9XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyMTk6XFx0XFx0b3BhbF9pbnRfc2V0X21mcnIoZ2V0X2hhcmRfc21wX3Byb2Nlc3Nvcl9pZChjcHUpLCBJUElfUFJJT1JJVFkpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjIwLVxcdFxcdHJldHVybiB0cnVlO1xcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yMjYtXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyMjc6c3RhdGljIHZvaWQga3ZtcHBjX2Zhc3RfdmNwdV9raWNrX2h2KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTIyOC17XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyMjk6XFx0aW50IGNwdTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTIzMC1cXHRzdHJ1Y3QgcmN1d2FpdCAqd2FpdHA7XFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTIzMy1cXHQgKiByY3V3YWl0X3dha2VfdXAgY29udGFpbnMgc21wX21iKCkgd2hpY2ggb3JkZXJzIHByaW9yIHN0b3JlcyB0aGF0XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyMzQ6XFx0ICogY3JlYXRlIHBlbmRpbmcgd29yayB2cyBiZWxvdyBsb2FkcyBvZiBjcHUgZmllbGRzLiBUaGUgb3RoZXIgc2lkZVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjM1OlxcdCAqIGlzIHRoZSBiYXJyaWVyIGluIHZjcHUgcnVuIHRoYXQgb3JkZXJzIHNldHRpbmcgdGhlIGNwdSBmaWVsZHMgdnNcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTIzNi1cXHQgKiB0ZXN0aW5nIGZvciBwZW5kaW5nIHdvcmsuXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTIzOC1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjIzOTpcXHR3YWl0cCA9IGt2bV9hcmNoX3ZjcHVfZ2V0X3dhaXQodmNwdSk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yNDAtXFx0aWYgKHJjdXdhaXRfd2FrZV91cCh3YWl0cCkpXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyNDE6XFx0XFx0Kyt2Y3B1LVxcdTAwM2VzdGF0LmdlbmVyaWMuaGFsdF93YWtldXA7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yNDItXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyNDM6XFx0Y3B1ID0gUkVBRF9PTkNFKHZjcHUtXFx1MDAzZWFyY2gudGhyZWFkX2NwdSk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyNDQ6XFx0aWYgKGNwdSBcXHUwMDNlPSAwIFxcdTAwMjZcXHUwMDI2IGt2bXBwY19pcGlfdGhyZWFkKGNwdSkpXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yNDUtXFx0XFx0cmV0dXJuO1xcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yNDctXFx0LyogQ1BVIHBvaW50cyB0byB0aGUgZmlyc3QgdGhyZWFkIG9mIHRoZSBjb3JlICovXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyNDg6XFx0Y3B1ID0gdmNwdS1cXHUwMDNlY3B1O1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjQ5OlxcdGlmIChjcHUgXFx1MDAzZT0gMCBcXHUwMDI2XFx1MDAyNiBjcHUgXFx1MDAzYyBucl9jcHVfaWRzIFxcdTAwMjZcXHUwMDI2IGNwdV9vbmxpbmUoY3B1KSlcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjI1MDpcXHRcXHRzbXBfc2VuZF9yZXNjaGVkdWxlKGNwdSk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yNTEtfVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yNTMtLypcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjI1NDogKiBXZSB1c2UgdGhlIHZjcHVfbG9hZC9wdXQgZnVuY3Rpb25zIHRvIG1lYXN1cmUgc3RvbGVuIHRpbWUuXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yNTUtICpcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjI1NjogKiBTdG9sZW4gdGltZSBpcyBjb3VudGVkIGFzIHRpbWUgd2hlbiBlaXRoZXIgdGhlIHZjcHUgaXMgYWJsZSB0b1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjU3LSAqIHJ1biBhcyBwYXJ0IG9mIGEgdmlydHVhbCBjb3JlLCBidXQgdGhlIHRhc2sgcnVubmluZyB0aGUgdmNvcmVcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjI1ODogKiBpcyBwcmVlbXB0ZWQgb3Igc2xlZXBpbmcsIG9yIHdoZW4gdGhlIHZjcHUgbmVlZHMgc29tZXRoaW5nIGRvbmVcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjI1OTogKiBpbiB0aGUga2VybmVsIGJ5IHRoZSB0YXNrIHJ1bm5pbmcgdGhlIHZjcHUsIGJ1dCB0aGF0IHRhc2sgaXNcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTI2MC0gKiBwcmVlbXB0ZWQgb3Igc2xlZXBpbmcuICBUaG9zZSB0d28gdGhpbmdzIGhhdmUgdG8gYmUgY291bnRlZFxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjYxOiAqIHNlcGFyYXRlbHksIHNpbmNlIG9uZSBvZiB0aGUgdmNwdSB0YXNrcyB3aWxsIHRha2Ugb24gdGhlIGpvYlxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjYyOiAqIG9mIHJ1bm5pbmcgdGhlIGNvcmUsIGFuZCB0aGUgb3RoZXIgdmNwdSB0YXNrcyBpbiB0aGUgdmNvcmUgd2lsbFxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjYzLSAqIHNsZWVwIHdhaXRpbmcgZm9yIGl0IHRvIGRvIHRoYXQsIGJ1dCB0aGF0IHNsZWVwIHNob3VsZG4ndCBjb3VudFxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yNjUtICpcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjI2NjogKiBIZW5jZSB3ZSBhY2N1bXVsYXRlIHN0b2xlbiB0aW1lIHdoZW4gdGhlIHZjcHUgY2FuIHJ1biBhcyBwYXJ0IG9mXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyNjc6ICogYSB2Y29yZSB1c2luZyB2Yy1cXHUwMDNlc3RvbGVuX3RiLCBhbmQgdGhlIHN0b2xlbiB0aW1lIHdoZW4gdGhlIHZjcHVcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTI2OC0gKiBuZWVkcyBpdHMgdGFzayB0byBkbyBvdGhlciB0aGluZ3MgaW4gdGhlIGtlcm5lbCAoZm9yIGV4YW1wbGUsXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yNjktICogc2VydmljZSBhIHBhZ2UgZmF1bHQpIGluIGJ1c3lfc3RvbGVuLiAgV2UgZG9uJ3QgYWNjdW11bGF0ZVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjcwOiAqIHN0b2xlbiB0aW1lIGZvciBhIHZjb3JlIHdoZW4gaXQgaXMgaW5hY3RpdmUsIG9yIGZvciBhIHZjcHVcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTI3MS0gKiB3aGVuIGl0IGlzIGluIHN0YXRlIFJVTk5JTkcgb3IgTk9UUkVBRFkuICBOT1RSRUFEWSBpcyBhIGJpdCBvZlxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjcyOiAqIGEgbWlzbm9tZXI7IGl0IG1lYW5zIHRoYXQgdGhlIHZjcHUgdGFzayBpcyBub3QgZXhlY3V0aW5nIGluXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yNzMtICogdGhlIEtWTV9WQ1BVX1JVTiBpb2N0bCwgaS5lLiBpdCBpcyBpbiB1c2Vyc3BhY2Ugb3IgZWxzZXdoZXJlIGluXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yNzQtICogdGhlIGtlcm5lbC4gIFdlIGRvbid0IGhhdmUgYW55IHdheSBvZiBkaXZpZGluZyB1cCB0aGF0IHRpbWVcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjI3NTogKiBiZXR3ZWVuIHRpbWUgdGhhdCB0aGUgdmNwdSBpcyBnZW51aW5lbHkgc3RvcHBlZCwgdGltZSB0aGF0XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyNzY6ICogdGhlIHRhc2sgaXMgYWN0aXZlbHkgd29ya2luZyBvbiBiZWhhbGYgb2YgdGhlIHZjcHUsIGFuZCB0aW1lXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yNzctICogdGhhdCB0aGUgdGFzayBpcyBwcmVlbXB0ZWQsIHNvIHdlIGRvbid0IGNvdW50IGFueSBvZiBpdCBhc1xcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yODUtICpcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjI4NjogKiBUaGUgUE9XRVI5IHBhdGggaXMgc2ltcGxlciwgb25lIHZjcHUgcGVyIHZpcnR1YWwgY29yZSBzbyB0aGVcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjI4NzogKiBmb3JtZXIgY2FzZSBkb2VzIG5vdCBleGlzdC4gSWYgYSB2Y3B1IGlzIHByZWVtcHRlZCB3aGVuIGl0IGlzXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yODgtICogQlVTWV9JTl9IT1NUIGFuZCBub3QgY2VkZWQgb3Igb3RoZXJ3aXNlIGJsb2NrZWQsIHRoZW4gYWNjdW11bGF0ZVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYz0yOTM9c3RhdGljIHZvaWQga3ZtcHBjX2NvcmVfc3RhcnRfc3RvbGVuKHN0cnVjdCBrdm1wcGNfdmNvcmUgKnZjLCB1NjQgdGIpXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTI5Ni1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjI5NzpcXHRXQVJOX09OX09OQ0UoY3B1X2hhc19mZWF0dXJlKENQVV9GVFJfQVJDSF8zMDApKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTI5OC1cXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM9MzA0PXN0YXRpYyB2b2lkIGt2bXBwY19jb3JlX2VuZF9zdG9sZW4oc3RydWN0IGt2bXBwY192Y29yZSAqdmMsIHU2NCB0YilcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzA3LVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MzA4OlxcdFdBUk5fT05fT05DRShjcHVfaGFzX2ZlYXR1cmUoQ1BVX0ZUUl9BUkNIXzMwMCkpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzA5LVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0zMTctXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzozMTg6c3RhdGljIHZvaWQga3ZtcHBjX2NvcmVfdmNwdV9sb2FkX2h2KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgaW50IGNwdSlcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTMxOS17XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzozMjA6XFx0c3RydWN0IGt2bXBwY192Y29yZSAqdmMgPSB2Y3B1LVxcdTAwM2VhcmNoLnZjb3JlO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzIxLVxcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTMyMy1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjMyNDpcXHRpZiAoY3B1X2hhc19mZWF0dXJlKENQVV9GVFJfQVJDSF8zMDApKSB7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzozMjU6XFx0XFx0aWYgKHZjcHUtXFx1MDAzZWFyY2guYnVzeV9wcmVlbXB0ICE9IFRCX05JTCkge1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MzI2OlxcdFxcdFxcdFdBUk5fT05fT05DRSh2Y3B1LVxcdTAwM2VhcmNoLnN0YXRlICE9IEtWTVBQQ19WQ1BVX0JVU1lfSU5fSE9TVCk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzozMjc6XFx0XFx0XFx0dmMtXFx1MDAzZXN0b2xlbl90YiArPSBtZnRiKCkgLSB2Y3B1LVxcdTAwM2VhcmNoLmJ1c3lfcHJlZW1wdDtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjMyODpcXHRcXHRcXHR2Y3B1LVxcdTAwM2VhcmNoLmJ1c3lfcHJlZW1wdCA9IFRCX05JTDtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTMyOS1cXHRcXHR9XFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTMzNy1cXHQgKiBiZWNhdXNlIG9ubHkgdGhpcyB0YXNrIGV2ZXIgc2V0cyB2Yy1cXHUwMDNlcnVubmVyIHRvIHRoaXNcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjMzODpcXHQgKiB2Y3B1LCBhbmQgb25jZSBpdCBpcyBzZXQgdG8gdGhpcyB2Y3B1LCBvbmx5IHRoaXMgdGFza1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzM5LVxcdCAqIGV2ZXIgc2V0cyBpdCB0byBOVUxMLlxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzQwLVxcdCAqL1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MzQxOlxcdGlmICh2Yy1cXHUwMDNlcnVubmVyID09IHZjcHUgXFx1MDAyNlxcdTAwMjYgdmMtXFx1MDAzZXZjb3JlX3N0YXRlIFxcdTAwM2U9IFZDT1JFX1NMRUVQSU5HKVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzQyLVxcdFxcdGt2bXBwY19jb3JlX2VuZF9zdG9sZW4odmMsIG5vdyk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0zNDMtXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzozNDQ6XFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNnZjcHUtXFx1MDAzZWFyY2gudGJhY2N0X2xvY2ssIGZsYWdzKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjM0NTpcXHRpZiAodmNwdS1cXHUwMDNlYXJjaC5zdGF0ZSA9PSBLVk1QUENfVkNQVV9CVVNZX0lOX0hPU1QgXFx1MDAyNlxcdTAwMjZcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjM0NjpcXHQgICAgdmNwdS1cXHUwMDNlYXJjaC5idXN5X3ByZWVtcHQgIT0gVEJfTklMKSB7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzozNDc6XFx0XFx0dmNwdS1cXHUwMDNlYXJjaC5idXN5X3N0b2xlbiArPSBub3cgLSB2Y3B1LVxcdTAwM2VhcmNoLmJ1c3lfcHJlZW1wdDtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjM0ODpcXHRcXHR2Y3B1LVxcdTAwM2VhcmNoLmJ1c3lfcHJlZW1wdCA9IFRCX05JTDtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTM0OS1cXHR9XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzozNTA6XFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2dmNwdS1cXHUwMDNlYXJjaC50YmFjY3RfbG9jaywgZmxhZ3MpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzUxLX1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTM1Mi1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjM1MzpzdGF0aWMgdm9pZCBrdm1wcGNfY29yZV92Y3B1X3B1dF9odihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0zNTQte1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MzU1OlxcdHN0cnVjdCBrdm1wcGNfdmNvcmUgKnZjID0gdmNwdS1cXHUwMDNlYXJjaC52Y29yZTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTM1Ni1cXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0zNTgtXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzozNTk6XFx0aWYgKGNwdV9oYXNfZmVhdHVyZShDUFVfRlRSX0FSQ0hfMzAwKSkge1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzYwLVxcdFxcdC8qXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTM2My1cXHRcXHQgKi9cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjM2NDpcXHRcXHRXQVJOX09OX09OQ0UodmNwdS1cXHUwMDNlYXJjaC5zdGF0ZSA9PSBLVk1QUENfVkNQVV9SVU5OQUJMRSk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0zNjUtXFx0XFx0LypcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjM2NjpcXHRcXHQgKiBBY2NvdW50IHN0b2xlbiB0aW1lIHdoZW4gcHJlZW1wdGVkIHdoaWxlIHRoZSB2Y3B1IHRhc2sgaXNcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTM2Ny1cXHRcXHQgKiBydW5uaW5nIGluIHRoZSBrZXJuZWwgKGJ1dCBub3QgaW4gcWVtdSwgd2hpY2ggaXMgSU5BQ1RJVkUpLlxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0zNjktXFx0XFx0aWYgKHRhc2tfaXNfcnVubmluZyhjdXJyZW50KSBcXHUwMDI2XFx1MDAyNlxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MzcwOlxcdFxcdFxcdFxcdHZjcHUtXFx1MDAzZWFyY2guc3RhdGUgPT0gS1ZNUFBDX1ZDUFVfQlVTWV9JTl9IT1NUKVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MzcxOlxcdFxcdFxcdHZjcHUtXFx1MDAzZWFyY2guYnVzeV9wcmVlbXB0ID0gbWZ0YigpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzcyLVxcdFxcdHJldHVybjtcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzc2LVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6Mzc3OlxcdGlmICh2Yy1cXHUwMDNlcnVubmVyID09IHZjcHUgXFx1MDAyNlxcdTAwMjYgdmMtXFx1MDAzZXZjb3JlX3N0YXRlIFxcdTAwM2U9IFZDT1JFX1NMRUVQSU5HKVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzc4LVxcdFxcdGt2bXBwY19jb3JlX3N0YXJ0X3N0b2xlbih2Yywgbm93KTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTM3OS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjM4MDpcXHRzcGluX2xvY2tfaXJxc2F2ZShcXHUwMDI2dmNwdS1cXHUwMDNlYXJjaC50YmFjY3RfbG9jaywgZmxhZ3MpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MzgxOlxcdGlmICh2Y3B1LVxcdTAwM2VhcmNoLnN0YXRlID09IEtWTVBQQ19WQ1BVX0JVU1lfSU5fSE9TVClcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjM4MjpcXHRcXHR2Y3B1LVxcdTAwM2VhcmNoLmJ1c3lfcHJlZW1wdCA9IG5vdztcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjM4MzpcXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZ2Y3B1LVxcdTAwM2VhcmNoLnRiYWNjdF9sb2NrLCBmbGFncyk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0zODQtfVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzg1LVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6Mzg2OnN0YXRpYyB2b2lkIGt2bXBwY19zZXRfcHZyX2h2KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTMyIHB2cilcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTM4Ny17XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzozODg6XFx0dmNwdS1cXHUwMDNlYXJjaC5wdnIgPSBwdnI7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0zODktfVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYz0zOTQ9c3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIG1hcF9wY3JfdG9fY2FwKHVuc2lnbmVkIGxvbmcgcGNyKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00MDItXFx0Y2FzZSBQQ1JfQVJDSF8zMTpcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjQwMzpcXHRcXHRpZiAoY3B1X2hhc19mZWF0dXJlKENQVV9GVFJfUDExX1BWUikpXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00MDQtXFx0XFx0XFx0Y2FwID0gSF9HVUVTVF9DQVBfUE9XRVIxMTtcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNDE0LVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NDE1OnN0YXRpYyBpbnQga3ZtcHBjX3NldF9hcmNoX2NvbXBhdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBhcmNoX2NvbXBhdClcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQxNi17XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00MTctXFx0dW5zaWduZWQgbG9uZyBob3N0X3Bjcl9iaXQgPSAwLCBndWVzdF9wY3JfYml0ID0gMCwgY2FwID0gMDtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjQxODpcXHRzdHJ1Y3Qga3ZtcHBjX3Zjb3JlICp2YyA9IHZjcHUtXFx1MDAzZWFyY2gudmNvcmU7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00MTktXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00MjAtXFx0LyogV2UgY2FuIChlbXVsYXRlKSBvdXIgb3duIGFyY2hpdGVjdHVyZSB2ZXJzaW9uIGFuZCBhbnl0aGluZyBvbGRlciAqL1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NDIxOlxcdGlmIChjcHVfaGFzX2ZlYXR1cmUoQ1BVX0ZUUl9QMTFfUFZSKSB8fCBjcHVfaGFzX2ZlYXR1cmUoQ1BVX0ZUUl9BUkNIXzMxKSlcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQyMi1cXHRcXHRob3N0X3Bjcl9iaXQgPSBQQ1JfQVJDSF8zMTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjQyMzpcXHRlbHNlIGlmIChjcHVfaGFzX2ZlYXR1cmUoQ1BVX0ZUUl9BUkNIXzMwMCkpXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00MjQtXFx0XFx0aG9zdF9wY3JfYml0ID0gUENSX0FSQ0hfMzAwO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NDI1OlxcdGVsc2UgaWYgKGNwdV9oYXNfZmVhdHVyZShDUFVfRlRSX0FSQ0hfMjA3UykpXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00MjYtXFx0XFx0aG9zdF9wY3JfYml0ID0gUENSX0FSQ0hfMjA3O1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NDI3OlxcdGVsc2UgaWYgKGNwdV9oYXNfZmVhdHVyZShDUFVfRlRSX0FSQ0hfMjA2KSlcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQyOC1cXHRcXHRob3N0X3Bjcl9iaXQgPSBQQ1JfQVJDSF8yMDY7XFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQ3NC1cXHR2Yy1cXHUwMDNlYXJjaF9jb21wYXQgPSBhcmNoX2NvbXBhdDtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjQ3NTpcXHRrdm1odl9uZXN0ZWR2Ml9tYXJrX2RpcnR5KHZjcHUsIEtWTVBQQ19HU0lEX0xPR0lDQUxfUFZSKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQ3Ni1cXHQvKlxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00ODUtXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo0ODY6c3RhdGljIHZvaWQga3ZtcHBjX2R1bXBfcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00ODcte1xcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00ODktXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo0OTA6XFx0cHJfZXJyKFxcXCJ2Y3B1ICVwICglZCk6XFxcXG5cXFwiLCB2Y3B1LCB2Y3B1LVxcdTAwM2V2Y3B1X2lkKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQ5MS1cXHRwcl9lcnIoXFxcInBjICA9ICUuMTZseCAgbXNyID0gJS4xNmxseCAgdHJhcCA9ICV4XFxcXG5cXFwiLFxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NDkyOlxcdCAgICAgICB2Y3B1LVxcdTAwM2VhcmNoLnJlZ3MubmlwLCB2Y3B1LVxcdTAwM2VhcmNoLnNocmVncy5tc3IsIHZjcHUtXFx1MDAzZWFyY2gudHJhcCk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00OTMtXFx0Zm9yIChyID0gMDsgciBcXHUwMDNjIDE2OyArK3IpXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00OTQtXFx0XFx0cHJfZXJyKFxcXCJyJTJkID0gJS4xNmx4ICByJWQgPSAlLjE2bHhcXFxcblxcXCIsXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo0OTU6XFx0XFx0ICAgICAgIHIsIGt2bXBwY19nZXRfZ3ByKHZjcHUsIHIpLFxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NDk2OlxcdFxcdCAgICAgICByKzE2LCBrdm1wcGNfZ2V0X2dwcih2Y3B1LCByKzE2KSk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00OTctXFx0cHJfZXJyKFxcXCJjdHIgPSAlLjE2bHggIGxyICA9ICUuMTZseFxcXFxuXFxcIixcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjQ5ODpcXHQgICAgICAgdmNwdS1cXHUwMDNlYXJjaC5yZWdzLmN0ciwgdmNwdS1cXHUwMDNlYXJjaC5yZWdzLmxpbmspO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNDk5LVxcdHByX2VycihcXFwic3JyMCA9ICUuMTZsbHggc3JyMSA9ICUuMTZsbHhcXFxcblxcXCIsXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1MDA6XFx0ICAgICAgIHZjcHUtXFx1MDAzZWFyY2guc2hyZWdzLnNycjAsIHZjcHUtXFx1MDAzZWFyY2guc2hyZWdzLnNycjEpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTAxLVxcdHByX2VycihcXFwic3ByZzAgPSAlLjE2bGx4IHNwcmcxID0gJS4xNmxseFxcXFxuXFxcIixcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjUwMjpcXHQgICAgICAgdmNwdS1cXHUwMDNlYXJjaC5zaHJlZ3Muc3ByZzAsIHZjcHUtXFx1MDAzZWFyY2guc2hyZWdzLnNwcmcxKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTUwMy1cXHRwcl9lcnIoXFxcInNwcmcyID0gJS4xNmxseCBzcHJnMyA9ICUuMTZsbHhcXFxcblxcXCIsXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1MDQ6XFx0ICAgICAgIHZjcHUtXFx1MDAzZWFyY2guc2hyZWdzLnNwcmcyLCB2Y3B1LVxcdTAwM2VhcmNoLnNocmVncy5zcHJnMyk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01MDUtXFx0cHJfZXJyKFxcXCJjciA9ICUuOGx4ICB4ZXIgPSAlLjE2bHggIGRzaXNyID0gJS44eFxcXFxuXFxcIixcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjUwNjpcXHQgICAgICAgdmNwdS1cXHUwMDNlYXJjaC5yZWdzLmNjciwgdmNwdS1cXHUwMDNlYXJjaC5yZWdzLnhlciwgdmNwdS1cXHUwMDNlYXJjaC5zaHJlZ3MuZHNpc3IpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NTA3OlxcdHByX2VycihcXFwiZGFyID0gJS4xNmxseFxcXFxuXFxcIiwgdmNwdS1cXHUwMDNlYXJjaC5zaHJlZ3MuZGFyKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTUwOC1cXHRwcl9lcnIoXFxcImZhdWx0IGRhciA9ICUuMTZseCBkc2lzciA9ICUuOHhcXFxcblxcXCIsXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1MDk6XFx0ICAgICAgIHZjcHUtXFx1MDAzZWFyY2guZmF1bHRfZGFyLCB2Y3B1LVxcdTAwM2VhcmNoLmZhdWx0X2RzaXNyKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjUxMDpcXHRwcl9lcnIoXFxcIlNMQiAoJWQgZW50cmllcyk6XFxcXG5cXFwiLCB2Y3B1LVxcdTAwM2VhcmNoLnNsYl9tYXgpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NTExOlxcdGZvciAociA9IDA7IHIgXFx1MDAzYyB2Y3B1LVxcdTAwM2VhcmNoLnNsYl9tYXg7ICsrcilcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTUxMi1cXHRcXHRwcl9lcnIoXFxcIiAgRVNJRCA9ICUuMTZsbHggVlNJRCA9ICUuMTZsbHhcXFxcblxcXCIsXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1MTM6XFx0XFx0ICAgICAgIHZjcHUtXFx1MDAzZWFyY2guc2xiW3JdLm9yaWdlLCB2Y3B1LVxcdTAwM2VhcmNoLnNsYltyXS5vcmlndik7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01MTQtXFx0cHJfZXJyKFxcXCJscGNyID0gJS4xNmx4IHNkcjEgPSAlLjE2bHggbGFzdF9pbnN0ID0gJS4xNmx4XFxcXG5cXFwiLFxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NTE1OlxcdCAgICAgICB2Y3B1LVxcdTAwM2VhcmNoLnZjb3JlLVxcdTAwM2VscGNyLCB2Y3B1LVxcdTAwM2Vrdm0tXFx1MDAzZWFyY2guc2RyMSxcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjUxNjpcXHQgICAgICAgdmNwdS1cXHUwMDNlYXJjaC5sYXN0X2luc3QpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTE3LX1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTUxOC1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjUxOTpzdGF0aWMgc3RydWN0IGt2bV92Y3B1ICprdm1wcGNfZmluZF92Y3B1KHN0cnVjdCBrdm0gKmt2bSwgaW50IGlkKVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTIwLXtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjUyMTpcXHRyZXR1cm4ga3ZtX2dldF92Y3B1X2J5X2lkKGt2bSwgaWQpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTIyLX1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTUyMy1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjUyNDpzdGF0aWMgdm9pZCBpbml0X3ZwYShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBscHBhY2EgKnZwYSlcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTUyNS17XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01MjYtXFx0dnBhLVxcdTAwM2VfX29sZF9zdGF0dXMgfD0gTFBQQUNBX09MRF9TSEFSRURfUFJPQztcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjUyNzpcXHR2cGEtXFx1MDAzZXlpZWxkX2NvdW50ID0gY3B1X3RvX2JlMzIoMSk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01MjgtfVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTI5LVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NTMwOnN0YXRpYyBpbnQgc2V0X3ZwYShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1wcGNfdnBhICp2LFxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTMxLVxcdFxcdCAgIHVuc2lnbmVkIGxvbmcgYWRkciwgdW5zaWduZWQgbG9uZyBsZW4pXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTUzNS1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjUzNjpcXHRzcGluX2xvY2soXFx1MDAyNnZjcHUtXFx1MDAzZWFyY2gudnBhX3VwZGF0ZV9sb2NrKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTUzNy1cXHRpZiAodi1cXHUwMDNlbmV4dF9ncGEgIT0gYWRkciB8fCB2LVxcdTAwM2VsZW4gIT0gbGVuKSB7XFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTU0MS1cXHR9XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1NDI6XFx0c3Bpbl91bmxvY2soXFx1MDAyNnZjcHUtXFx1MDAzZWFyY2gudnBhX3VwZGF0ZV9sb2NrKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTU0My1cXHRyZXR1cm4gMDtcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM9NTU1PXN0YXRpYyBpbnQgdnBhX2lzX3JlZ2lzdGVyZWQoc3RydWN0IGt2bXBwY192cGEgKnZwYXApXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTU2MS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjU2MjpzdGF0aWMgdW5zaWduZWQgbG9uZyBkb19oX3JlZ2lzdGVyX3ZwYShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01NjMtXFx0XFx0XFx0XFx0ICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3MsXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1NjQ6XFx0XFx0XFx0XFx0ICAgICAgIHVuc2lnbmVkIGxvbmcgdmNwdWlkLCB1bnNpZ25lZCBsb25nIHZwYSlcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTU2NS17XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1NjY6XFx0c3RydWN0IGt2bSAqa3ZtID0gdmNwdS1cXHUwMDNla3ZtO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTY3LVxcdHVuc2lnbmVkIGxvbmcgbGVuLCBuYjtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTU2OC1cXHR2b2lkICp2YTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjU2OTpcXHRzdHJ1Y3Qga3ZtX3ZjcHUgKnR2Y3B1O1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTcwLVxcdGludCBlcnI7XFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTU3My1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjU3NDpcXHR0dmNwdSA9IGt2bXBwY19maW5kX3ZjcHUoa3ZtLCB2Y3B1aWQpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NTc1OlxcdGlmICghdHZjcHUpXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01NzYtXFx0XFx0cmV0dXJuIEhfUEFSQU1FVEVSO1xcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01ODktXFx0XFx0aWYgKHN1YmZ1bmMgPT0gSF9WUEFfUkVHX1ZQQSlcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjU5MDpcXHRcXHRcXHRsZW4gPSBiZTE2X3RvX2NwdSgoKHN0cnVjdCByZWdfdnBhICopdmEpLVxcdTAwM2VsZW5ndGguaHdvcmQpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTkxLVxcdFxcdGVsc2VcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjU5MjpcXHRcXHRcXHRsZW4gPSBiZTMyX3RvX2NwdSgoKHN0cnVjdCByZWdfdnBhICopdmEpLVxcdTAwM2VsZW5ndGgud29yZCk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01OTMtXFx0XFx0a3ZtcHBjX3VucGluX2d1ZXN0X3BhZ2Uoa3ZtLCB2YSwgdnBhLCBmYWxzZSk7XFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTYwNC1cXHR2cGFwID0gTlVMTDtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjYwNTpcXHRzcGluX2xvY2soXFx1MDAyNnR2Y3B1LVxcdTAwM2VhcmNoLnZwYV91cGRhdGVfbG9jayk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy02MDYtXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTYxNy1cXHRcXHRcXHRicmVhaztcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjYxODpcXHRcXHR2cGFwID0gXFx1MDAyNnR2Y3B1LVxcdTAwM2VhcmNoLnZwYTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTYxOS1cXHRcXHRlcnIgPSAwO1xcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy02MjgtXFx0XFx0ZXJyID0gSF9SRVNPVVJDRTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjYyOTpcXHRcXHRpZiAoIXZwYV9pc19yZWdpc3RlcmVkKFxcdTAwMjZ0dmNwdS1cXHUwMDNlYXJjaC52cGEpKVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjMwLVxcdFxcdFxcdGJyZWFrO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjMxLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NjMyOlxcdFxcdHZwYXAgPSBcXHUwMDI2dHZjcHUtXFx1MDAzZWFyY2guZHRsO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjMzLVxcdFxcdGVyciA9IDA7XFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTYzOC1cXHRcXHRlcnIgPSBIX1JFU09VUkNFO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NjM5OlxcdFxcdGlmICghdnBhX2lzX3JlZ2lzdGVyZWQoXFx1MDAyNnR2Y3B1LVxcdTAwM2VhcmNoLnZwYSkpXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy02NDAtXFx0XFx0XFx0YnJlYWs7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy02NDEtXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo2NDI6XFx0XFx0dnBhcCA9IFxcdTAwMjZ0dmNwdS1cXHUwMDNlYXJjaC5zbGJfc2hhZG93O1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjQzLVxcdFxcdGVyciA9IDA7XFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTY0OC1cXHRcXHRlcnIgPSBIX1JFU09VUkNFO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NjQ5OlxcdFxcdGlmICh2cGFfaXNfcmVnaXN0ZXJlZChcXHUwMDI2dHZjcHUtXFx1MDAzZWFyY2guZHRsKSB8fFxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NjUwOlxcdFxcdCAgICB2cGFfaXNfcmVnaXN0ZXJlZChcXHUwMDI2dHZjcHUtXFx1MDAzZWFyY2guc2xiX3NoYWRvdykpXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy02NTEtXFx0XFx0XFx0YnJlYWs7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy02NTItXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo2NTM6XFx0XFx0dnBhcCA9IFxcdTAwMjZ0dmNwdS1cXHUwMDNlYXJjaC52cGE7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy02NTQtXFx0XFx0ZXJyID0gMDtcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjU3LVxcdGNhc2UgSF9WUEFfREVSRUdfRFRMOlxcdFxcdC8qIGRlcmVnaXN0ZXIgRFRMICovXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo2NTg6XFx0XFx0dnBhcCA9IFxcdTAwMjZ0dmNwdS1cXHUwMDNlYXJjaC5kdGw7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy02NTktXFx0XFx0ZXJyID0gMDtcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjYyLVxcdGNhc2UgSF9WUEFfREVSRUdfU0xCOlxcdFxcdC8qIGRlcmVnaXN0ZXIgU0xCIHNoYWRvdyBidWZmZXIgKi9cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjY2MzpcXHRcXHR2cGFwID0gXFx1MDAyNnR2Y3B1LVxcdTAwM2VhcmNoLnNsYl9zaGFkb3c7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy02NjQtXFx0XFx0ZXJyID0gMDtcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjczLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6Njc0OlxcdHNwaW5fdW5sb2NrKFxcdTAwMjZ0dmNwdS1cXHUwMDNlYXJjaC52cGFfdXBkYXRlX2xvY2spO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjc1LVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy02NzgtXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo2Nzk6c3RhdGljIHZvaWQga3ZtcHBjX3VwZGF0ZV92cGEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtcHBjX3ZwYSAqdnBhcCxcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTY4MC1cXHRcXHRcXHQgICAgICAgc3RydWN0IGt2bXBwY192cGEgKm9sZF92cGFwKVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjgxLXtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjY4MjpcXHRzdHJ1Y3Qga3ZtICprdm0gPSB2Y3B1LVxcdTAwM2Vrdm07XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy02ODMtXFx0dm9pZCAqdmE7XFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTY5Ni1cXHRcXHRncGEgPSB2cGFwLVxcdTAwM2VuZXh0X2dwYTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjY5NzpcXHRcXHRzcGluX3VubG9jayhcXHUwMDI2dmNwdS1cXHUwMDNlYXJjaC52cGFfdXBkYXRlX2xvY2spO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjk4LVxcdFxcdHZhID0gTlVMTDtcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNzAxLVxcdFxcdFxcdHZhID0ga3ZtcHBjX3Bpbl9ndWVzdF9wYWdlKGt2bSwgZ3BhLCBcXHUwMDI2bmIpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NzAyOlxcdFxcdHNwaW5fbG9jayhcXHUwMDI2dmNwdS1cXHUwMDNlYXJjaC52cGFfdXBkYXRlX2xvY2spO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNzAzLVxcdFxcdGlmIChncGEgPT0gdnBhcC1cXHUwMDNlbmV4dF9ncGEpXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTcyOC1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjcyOTpzdGF0aWMgdm9pZCBrdm1wcGNfdXBkYXRlX3ZwYXMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNzMwLXtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjczMTpcXHRzdHJ1Y3Qga3ZtICprdm0gPSB2Y3B1LVxcdTAwM2Vrdm07XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03MzItXFx0c3RydWN0IGt2bXBwY192cGEgb2xkX3ZwYSA9IHsgMCB9O1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNzMzLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NzM0OlxcdGlmICghKHZjcHUtXFx1MDAzZWFyY2gudnBhLnVwZGF0ZV9wZW5kaW5nIHx8XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo3MzU6XFx0ICAgICAgdmNwdS1cXHUwMDNlYXJjaC5zbGJfc2hhZG93LnVwZGF0ZV9wZW5kaW5nIHx8XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo3MzY6XFx0ICAgICAgdmNwdS1cXHUwMDNlYXJjaC5kdGwudXBkYXRlX3BlbmRpbmcpKVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNzM3LVxcdFxcdHJldHVybjtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTczOC1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjczOTpcXHRzcGluX2xvY2soXFx1MDAyNnZjcHUtXFx1MDAzZWFyY2gudnBhX3VwZGF0ZV9sb2NrKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjc0MDpcXHRpZiAodmNwdS1cXHUwMDNlYXJjaC52cGEudXBkYXRlX3BlbmRpbmcpIHtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjc0MTpcXHRcXHRrdm1wcGNfdXBkYXRlX3ZwYSh2Y3B1LCBcXHUwMDI2dmNwdS1cXHUwMDNlYXJjaC52cGEsIFxcdTAwMjZvbGRfdnBhKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTc0Mi1cXHRcXHRpZiAob2xkX3ZwYS5waW5uZWRfYWRkcikge1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNzQzLVxcdFxcdFxcdGlmIChrdm1odl9pc19uZXN0ZWR2MigpKVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NzQ0OlxcdFxcdFxcdFxcdGt2bWh2X25lc3RlZHYyX3NldF92cGEodmNwdSwgfjB1bGwpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNzQ1LVxcdFxcdFxcdGt2bXBwY191bnBpbl9ndWVzdF9wYWdlKGt2bSwgb2xkX3ZwYS5waW5uZWRfYWRkciwgb2xkX3ZwYS5ncGEsXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTc0Ny1cXHRcXHR9XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo3NDg6XFx0XFx0aWYgKHZjcHUtXFx1MDAzZWFyY2gudnBhLnBpbm5lZF9hZGRyKSB7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo3NDk6XFx0XFx0XFx0aW5pdF92cGEodmNwdSwgdmNwdS1cXHUwMDNlYXJjaC52cGEucGlubmVkX2FkZHIpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNzUwLVxcdFxcdFxcdGlmIChrdm1odl9pc19uZXN0ZWR2MigpKVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NzUxOlxcdFxcdFxcdFxcdGt2bWh2X25lc3RlZHYyX3NldF92cGEodmNwdSwgX19wYSh2Y3B1LVxcdTAwM2VhcmNoLnZwYS5waW5uZWRfYWRkcikpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNzUyLVxcdFxcdH1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTc1My1cXHR9XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo3NTQ6XFx0aWYgKHZjcHUtXFx1MDAzZWFyY2guZHRsLnVwZGF0ZV9wZW5kaW5nKSB7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo3NTU6XFx0XFx0a3ZtcHBjX3VwZGF0ZV92cGEodmNwdSwgXFx1MDAyNnZjcHUtXFx1MDAzZWFyY2guZHRsLCBcXHUwMDI2b2xkX3ZwYSk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03NTYtXFx0XFx0aWYgKG9sZF92cGEucGlubmVkX2FkZHIpXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTc1OC1cXHRcXHRcXHRcXHRcXHRcXHRvbGRfdnBhLmRpcnR5KTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjc1OTpcXHRcXHR2Y3B1LVxcdTAwM2VhcmNoLmR0bF9wdHIgPSB2Y3B1LVxcdTAwM2VhcmNoLmR0bC5waW5uZWRfYWRkcjtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjc2MDpcXHRcXHR2Y3B1LVxcdTAwM2VhcmNoLmR0bF9pbmRleCA9IDA7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03NjEtXFx0fVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NzYyOlxcdGlmICh2Y3B1LVxcdTAwM2VhcmNoLnNsYl9zaGFkb3cudXBkYXRlX3BlbmRpbmcpIHtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjc2MzpcXHRcXHRrdm1wcGNfdXBkYXRlX3ZwYSh2Y3B1LCBcXHUwMDI2dmNwdS1cXHUwMDNlYXJjaC5zbGJfc2hhZG93LCBcXHUwMDI2b2xkX3ZwYSk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03NjQtXFx0XFx0aWYgKG9sZF92cGEucGlubmVkX2FkZHIpXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTc2OC1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjc2OTpcXHRzcGluX3VubG9jayhcXHUwMDI2dmNwdS1cXHUwMDNlYXJjaC52cGFfdXBkYXRlX2xvY2spO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNzcwLX1cXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM9Nzc2PXN0YXRpYyB1NjQgdmNvcmVfc3RvbGVuX3RpbWUoc3RydWN0IGt2bXBwY192Y29yZSAqdmMsIHU2NCBub3cpXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTc4MC1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjc4MTpcXHRXQVJOX09OX09OQ0UoY3B1X2hhc19mZWF0dXJlKENQVV9GVFJfQVJDSF8zMDApKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTc4Mi1cXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNzkxLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NzkyOnN0YXRpYyB2b2lkIF9fa3ZtcHBjX2NyZWF0ZV9kdGxfZW50cnkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNzkzLVxcdFxcdFxcdFxcdFxcdHN0cnVjdCBscHBhY2EgKnZwYSxcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjc5NDpcXHRcXHRcXHRcXHRcXHR1bnNpZ25lZCBpbnQgcGNwdSwgdTY0IG5vdyxcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTc5NS1cXHRcXHRcXHRcXHRcXHR1bnNpZ25lZCBsb25nIHN0b2xlbilcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNzk4LVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6Nzk5OlxcdGR0ID0gdmNwdS1cXHUwMDNlYXJjaC5kdGxfcHRyO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODAwLVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04MDUtXFx0ZHQtXFx1MDAzZXByZWVtcHRfcmVhc29uID0gMDtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjgwNjpcXHRkdC1cXHUwMDNlcHJvY2Vzc29yX2lkID0gY3B1X3RvX2JlMTYocGNwdSArIHZjcHUtXFx1MDAzZWFyY2gucHRpZCk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4MDc6XFx0ZHQtXFx1MDAzZWVucXVldWVfdG9fZGlzcGF0Y2hfdGltZSA9IGNwdV90b19iZTMyKHN0b2xlbik7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04MDgtXFx0ZHQtXFx1MDAzZXJlYWR5X3RvX2VucXVldWVfdGltZSA9IDA7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04MDktXFx0ZHQtXFx1MDAzZXdhaXRpbmdfdG9fcmVhZHlfdGltZSA9IDA7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4MTA6XFx0ZHQtXFx1MDAzZXRpbWViYXNlID0gY3B1X3RvX2JlNjQobm93KTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTgxMS1cXHRkdC1cXHUwMDNlZmF1bHRfYWRkciA9IDA7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4MTI6XFx0ZHQtXFx1MDAzZXNycjAgPSBjcHVfdG9fYmU2NChrdm1wcGNfZ2V0X3BjKHZjcHUpKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjgxMzpcXHRkdC1cXHUwMDNlc3JyMSA9IGNwdV90b19iZTY0KHZjcHUtXFx1MDAzZWFyY2guc2hyZWdzLm1zcik7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04MTQtXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04MTUtXFx0KytkdDtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjgxNjpcXHRpZiAoZHQgPT0gdmNwdS1cXHUwMDNlYXJjaC5kdGwucGlubmVkX2VuZClcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjgxNzpcXHRcXHRkdCA9IHZjcHUtXFx1MDAzZWFyY2guZHRsLnBpbm5lZF9hZGRyO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODE4OlxcdHZjcHUtXFx1MDAzZWFyY2guZHRsX3B0ciA9IGR0O1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODE5LVxcdC8qIG9yZGVyIHdyaXRpbmcgKmR0IHZzLiB3cml0aW5nIHZwYS1cXHUwMDNlZHRsX2lkeCAqL1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODIwLVxcdHNtcF93bWIoKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjgyMTpcXHR2cGEtXFx1MDAzZWR0bF9pZHggPSBjcHVfdG9fYmU2NCgrK3ZjcHUtXFx1MDAzZWFyY2guZHRsX2luZGV4KTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTgyMi1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjgyMzpcXHQvKiB2Y3B1LVxcdTAwM2VhcmNoLmR0bC5kaXJ0eSBpcyBzZXQgYnkgdGhlIGNhbGxlciAqL1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODI0LX1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTgyNS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjgyNjpzdGF0aWMgdm9pZCBrdm1wcGNfdXBkYXRlX3ZwYV9kaXNwYXRjaChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04MjctXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBrdm1wcGNfdmNvcmUgKnZjKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04MzQtXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4MzU6XFx0dnBhID0gdmNwdS1cXHUwMDNlYXJjaC52cGEucGlubmVkX2FkZHI7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04MzYtXFx0aWYgKCF2cGEpXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTg0MS1cXHRjb3JlX3N0b2xlbiA9IHZjb3JlX3N0b2xlbl90aW1lKHZjLCBub3cpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODQyOlxcdHN0b2xlbiA9IGNvcmVfc3RvbGVuIC0gdmNwdS1cXHUwMDNlYXJjaC5zdG9sZW5fbG9nZ2VkO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODQzOlxcdHZjcHUtXFx1MDAzZWFyY2guc3RvbGVuX2xvZ2dlZCA9IGNvcmVfc3RvbGVuO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODQ0OlxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZ2Y3B1LVxcdTAwM2VhcmNoLnRiYWNjdF9sb2NrLCBmbGFncyk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4NDU6XFx0c3RvbGVuICs9IHZjcHUtXFx1MDAzZWFyY2guYnVzeV9zdG9sZW47XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4NDY6XFx0dmNwdS1cXHUwMDNlYXJjaC5idXN5X3N0b2xlbiA9IDA7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4NDc6XFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2dmNwdS1cXHUwMDNlYXJjaC50YmFjY3RfbG9jaywgZmxhZ3MpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODQ4LVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODQ5OlxcdHZwYS1cXHUwMDNlZW5xdWV1ZV9kaXNwYXRjaF90YiA9IGNwdV90b19iZTY0KGJlNjRfdG9fY3B1KHZwYS1cXHUwMDNlZW5xdWV1ZV9kaXNwYXRjaF90YikgKyBzdG9sZW4pO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODUwLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODUxOlxcdF9fa3ZtcHBjX2NyZWF0ZV9kdGxfZW50cnkodmNwdSwgdnBhLCB2Yy1cXHUwMDNlcGNwdSwgbm93ICsga3ZtcHBjX2dldF90Yl9vZmZzZXQodmNwdSksIHN0b2xlbik7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04NTItXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4NTM6XFx0dmNwdS1cXHUwMDNlYXJjaC52cGEuZGlydHkgPSB0cnVlO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODU0LX1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTg1NS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjg1NjpzdGF0aWMgdm9pZCBrdm1wcGNfdXBkYXRlX3ZwYV9kaXNwYXRjaF9wOShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04NTctXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBrdm1wcGNfdmNvcmUgKnZjLFxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04NjMtXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4NjQ6XFx0dnBhID0gdmNwdS1cXHUwMDNlYXJjaC52cGEucGlubmVkX2FkZHI7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04NjUtXFx0aWYgKCF2cGEpXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTg2OC1cXHRzdG9sZW4gPSB2Yy1cXHUwMDNlc3RvbGVuX3RiO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODY5OlxcdHN0b2xlbl9kZWx0YSA9IHN0b2xlbiAtIHZjcHUtXFx1MDAzZWFyY2guc3RvbGVuX2xvZ2dlZDtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjg3MDpcXHR2Y3B1LVxcdTAwM2VhcmNoLnN0b2xlbl9sb2dnZWQgPSBzdG9sZW47XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04NzEtXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4NzI6XFx0dnBhLVxcdTAwM2VlbnF1ZXVlX2Rpc3BhdGNoX3RiID0gY3B1X3RvX2JlNjQoc3RvbGVuKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTg3My1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjg3NDpcXHRfX2t2bXBwY19jcmVhdGVfZHRsX2VudHJ5KHZjcHUsIHZwYSwgdmMtXFx1MDAzZXBjcHUsIG5vdywgc3RvbGVuX2RlbHRhKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTg3NS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjg3NjpcXHR2Y3B1LVxcdTAwM2VhcmNoLnZwYS5kaXJ0eSA9IHRydWU7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04NzctfVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODc4LVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODc5Oi8qIFNlZSBpZiB0aGVyZSBpcyBhIGRvb3JiZWxsIGludGVycnVwdCBwZW5kaW5nIGZvciBhIHZjcHUgKi9cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjg4MDpzdGF0aWMgYm9vbCBrdm1wcGNfZG9vcmJlbGxfcGVuZGluZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04ODEte1xcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04ODQtXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4ODU6XFx0aWYgKHZjcHUtXFx1MDAzZWFyY2guZG9vcmJlbGxfcmVxdWVzdClcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTg4Ni1cXHRcXHRyZXR1cm4gdHJ1ZTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjg4NzpcXHRpZiAoY3B1X2hhc19mZWF0dXJlKENQVV9GVFJfQVJDSF8zMDApKVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODg4LVxcdFxcdHJldHVybiBmYWxzZTtcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODkwLVxcdCAqIEVuc3VyZSB0aGF0IHRoZSByZWFkIG9mIHZjb3JlLVxcdTAwM2VkcGRlcyBjb21lcyBhZnRlciB0aGUgcmVhZFxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODkxOlxcdCAqIG9mIHZjcHUtXFx1MDAzZWRvb3JiZWxsX3JlcXVlc3QuICBUaGlzIGJhcnJpZXIgbWF0Y2hlcyB0aGVcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTg5Mi1cXHQgKiBzbXBfd21iKCkgaW4ga3ZtcHBjX2d1ZXN0X2VudHJ5X2luamVjdCgpLlxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04OTQtXFx0c21wX3JtYigpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODk1OlxcdHZjID0gdmNwdS1cXHUwMDNlYXJjaC52Y29yZTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjg5NjpcXHR0aHIgPSB2Y3B1LVxcdTAwM2V2Y3B1X2lkIC0gdmMtXFx1MDAzZWZpcnN0X3ZjcHVpZDtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTg5Ny1cXHRyZXR1cm4gISEodmMtXFx1MDAzZWRwZGVzIFxcdTAwMjYgKDEgXFx1MDAzY1xcdTAwM2MgdGhyKSk7XFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTg5OS1cXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDQ6NTg6MTMuMDEyODQxOTUzWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0NTYyNjg2MzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRGVidWdnaW5nIHRoZSBDb21waWxhdGlvbiBGYWlsdXJlKipcblxuT2theSwgaGVyZSdzIHRoZSBzaXR1YXRpb24uIFRoZSBidWlsZCBqdXN0IGNob2tlZCwgYW5kIHRoZSBlcnJvciBtZXNzYWdlIGNsZWFybHkgcG9pbnRzIHRvIGEgbWlzc2luZyBgY3B1YCB2YXJpYWJsZS4gVGhhdCdzIGEgY2xhc3NpYyAtIEkgY2FuJ3QgaW1hZ2luZSB0aGlzIGlzIGFuIGludGVudGlvbmFsIG92ZXJzaWdodC4gSXQncyBub3QgYSBnbG9iYWwsIGFuZCBJJ20gYmV0dGluZyB0aGF0J3MgdGhlIGNvcmUgaXNzdWUuIFRoZSBwYXRjaCBpcyBwcm9iYWJseSByZWZlcmVuY2luZyBpdCBzb21ld2hlcmUuXG5cbkJ1dCBob2xkIG9uLCB0aGlzIGlzIHdoZXJlIEkgbmVlZCB0byBiZSBtb3JlIGNhcmVmdWwuIEl0J3MgKnBvc3NpYmxlKiBgY3B1YCBpcyBhIG1hY3JvIGRlZmluZWQgaW4gYSBoZWFkZXIgZmlsZS4gSSd2ZSBiZWVuIGJ1cm5lZCBieSB0aGF0IGJlZm9yZS4gQWx3YXlzIGNoZWNrIHRoZSBpbmNsdWRlcyEgU28sIHJhdGhlciB0aGFuIGFzc3VtZSBpdCdzIGp1c3QgYSB2YXJpYWJsZSwgbGV0IG1lIHF1aWNrbHkgZ2xhbmNlIGF0IHRoZSB1c3VhbCBzdXNwZWN0cyBpbiB0aGUgYGFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9gIGRpcmVjdG9yeS4gVGhhdCdzIHdoZXJlIEkgZXhwZWN0IHRvIGZpbmQgYW55IHByb2Nlc3Nvci1zcGVjaWZpYyBkZWZpbml0aW9ucyBvbiBhIFBvd2VyUEMgc3lzdGVtLiBMZXQncyBzZWUgaWYgYGNwdWAgaXMgZGVmaW5lZCBhcyBhIG1hY3JvIGluIG9uZSBvZiB0aG9zZSBoZWFkZXJzLiBJIG5lZWQgdG8ga25vdyBpZiB0aGlzIGlzIGEgc2ltcGxlIG1hY3JvIGV4cGFuc2lvbiBpc3N1ZSwgb3IgaWYgdGhpcyBpcyBhIGRlZXBlciBwcm9ibGVtIHdpdGggdGhlIHBhdGNoIGl0c2VsZi4gSSdtIGdvaW5nIHRvIHN0YXJ0IHdpdGggdGhlIG1vc3QgbGlrZWx5IGNhbmRpZGF0ZXMsIGxpa2UgdGhlIG1haW4gYXJjaGl0ZWN0dXJlIGhlYWRlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MzkxODcsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwNDo1ODoxNy40NjkxMTI3NTlaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2NzExMzQ3LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCIjZGVmaW5lIGNwdSBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDQ6NTg6MTcuNTE1ODI5NDU3WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwODUyMzE4NjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHJlbmRlcmVkIGFzIGEgZmlyc3QtcGVyc29uIGFjY291bnQgc3VpdGFibGUgZm9yIGEgZmVsbG93IGV4cGVydDpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBgY3B1YCBNYWNybyBpbiBMaW51eCBIZWFkZXIgRmlsZXMqKlxuXG5BbHJpZ2h0LCBJJ20gdGhpbmtpbmcgSSBuZWVkIHRvIHNlZSBpZiB0aGUgc3ltYm9sIGBjcHVgIGlzIGRlZmluZWQgYXMgYSBtYWNybyB3aXRoaW4gdGhlIGBpbmNsdWRlL2xpbnV4L2AgZGlyZWN0b3J5LiBUaGF0J3MgdGhlIG9idmlvdXMgcGxhY2UgdG8gc3RhcnQuIEdpdmVuIHRoZSBjb250ZXh0IG9mIExpbnV4IGtlcm5lbCBkZXZlbG9wbWVudCBhbmQgcGVyZm9ybWFuY2UsIGBjcHVgIGNvdWxkIGJlIGFueXRoaW5nIGZyb20gYSBzaW1wbGUgbWFjcm8gZXhwYW5kaW5nIHRvIHJlZ2lzdGVyIG5hbWVzLCB0byBtb3JlIGNvbXBsZXggbG9naWMgcmVsYXRlZCB0byBDUFUgYXJjaGl0ZWN0dXJlIGRldGVjdGlvbiwgb3IgZXZlbiBhIGNvbXBvbmVudCBpbiBhIHBvd2VyIG1hbmFnZW1lbnQgc2NoZW1lLiBJJ2xsIG5lZWQgdG8gY29uZmlybSB3aGF0IGl0IGFjdHVhbGx5ICppcyosIGFuZCB0aGF0IHdpbGwgZGV0ZXJtaW5lIGhvdyBJIHByb2NlZWQuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBpbmNsdWRlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzk1MzMsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwNDo1ODoyMC42MDEwNjQ1NzhaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwODE0NDA2NCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiI2RlZmluZSBjcHUgXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImluY2x1ZGUvbGludXgvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwNDo1ODoyMC43MDkyMTQ5ODFaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTI4NTk3NzE5MTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRGVidWdnaW5nIGEgQ29tcGlsYXRpb24gRmFpbHVyZSoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2gsIGFuZCBpdCdzIGZhaWxpbmcgdG8gY29tcGlsZS4gVGhlIGVycm9yIGxvb2tzIGxpa2UgYSB0eXBvOiBgY3B1LVx1MDAzZWFyY2guZG9vcmJlbGxfcmVxdWVzdCA9IDA7YC4gVGhhdCdzIGEgY2xhc3NpYywgSSd2ZSBzZWVuIGl0IGEgdGhvdXNhbmQgdGltZXMuIEEgbWlzc2luZyBvciBpbmNvcnJlY3QgbWVtYmVyIGFjY2VzcyBpcyBhIHByZXR0eSBvYnZpb3VzIGNvbXBpbGF0aW9uIHN0b3BwZXIuIFRoZSB0aGluZyBpcywgaWYgaXQgZG9lc24ndCBjb21waWxlLCBJIGNhbid0IGV2ZW4gZnV6eiBpdCwgd2hpY2ggaXMgdGhlIGltbWVkaWF0ZSBuZXh0IHN0ZXAuXG5cbkZpcnN0LCBsZXQgbWUgY29uZmlybSB0aGF0IGBjcHVgIGlzbid0IGRlY2xhcmVkIGluIHRoZSBmdW5jdGlvbiBga3ZtaHZfdmNwdV9lbnRyeV9uZXN0ZWR2MmAuIExldCdzIHRha2UgYSBxdWljayBsb29rIGF0IHRoZSBjb2RlIGJsb2NrIHByb3ZpZGVkIGluIHRoZSBwYXRjaC4uLiBZZXAsIEknbSByaWdodC4gSXQncyBub3QgZGVjbGFyZWQgdGhlcmUuXG5cbk5vdywgd2FpdCBhIHNlY29uZC4uLiBpcyB0aGVyZSBhIGNoYW5jZSBgY3B1YCBpcyBhIG1hY3JvPyBJdCdzIG5vdCB1bmNvbW1vbiB0byB1c2UgbWFjcm9zIGxpa2UgYGNwdWAgdG8gZXhwYW5kIHRvIHNvbWV0aGluZyBsaWtlIGBzbXBfcHJvY2Vzc29yX2lkKClgIGluIHRoaXMga2luZCBvZiBrZXJuZWwgY29kZS4gTGV0J3MgZGlnIGluIGFuZCBzZWUgaWYgYGNwdWAgaXMgZGVmaW5lZCBhbnl3aGVyZSBhcyBhIG1hY3JvLiBUaGF0IHdvdWxkIGJlIGEgc25lYWt5IGxpdHRsZSBidWcuIEkgbmVlZCB0byBiZSB0aG9yb3VnaC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzk3NDMsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDQ6NTg6MzMuNTY4OTg5MTkyWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjM2NDQ3MjUzLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCIjZGVmaW5lIGNwdVxcXFxiXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDQ6NTg6MzUuODA1NDQ0ODM1WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYyNzg2NzA1NTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBGdXp6aW5nIFdvcnRoaW5lc3Mgb2YgYSBDb21taXR0ZWQgUGF0Y2gqKlxuXG5Pa2F5LCB0aGlzIHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCwgYnV0IGxldCBtZSB0aGluayB0aGlzIHRocm91Z2guIE5vLCB0aGUgcGF0Y2ggKmRvZXNuJ3QqIGxvb2sgcmlnaHQuIFRoaXMgbWFrZXMgbWUgc3VzcGVjdCBhIGNvbXBpbGF0aW9uIGVycm9yLiBJZiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBhIGNvbXBpbGF0aW9uIGVycm9yLCBvYnZpb3VzbHkgSSBjYW4ndCBjb21waWxlIG9yIHRlc3QgaXQuIEJ1dCBob2xkIG9uLCB0aGUgcHJvbXB0IHNheXMgdGhlIGNoYW5nZXMgaGF2ZSAqYWxyZWFkeSogYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQuIElmIHRoYXQncyB0aGUgY2FzZSwgKm1heWJlKiBpdCBjb21waWxlZCBhbHJlYWR5P1xuXG5BaCwgYnV0IHRoZW4gSSByZW1lbWJlcjogdGhlIHByb21wdCdzIGNvbmRpdGlvbjogXCJSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zLi4uIGNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHNcIi4gSWYgaXQgKmRvZXNuJ3QqIGNvbXBpbGUsIGl0J3MgZGVmaW5pdGVseSBub3QgZnV6ei13b3J0aHkgYmVjYXVzZSBpdCdzIHVudXNhYmxlOyB0aGVyZSdzIG5vIHdheSB0byBldmVuIHN0YXJ0IHRlc3RpbmcuIFRoZXJlIGlzIG5vIGV4cGxpY2l0IHJ1bGUgZm9yIFwiZG9lcyBub3QgY29tcGlsZVwiLlxuXG5TbywgaWYgaXQgZmFpbHMgdG8gY29tcGlsZSwgSSBzaG91bGQgcHJvYmFibHkgcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBMZXQncyBqdXN0IG1ha2Ugc3VyZSB0aGVyZSBhcmVuJ3QgYW55IG90aGVyIGZhY3RvcnMgSSdtIG92ZXJsb29raW5nLiBPa2F5LCBsZXQgbWUgcXVpY2tseSBkb3VibGUgY2hlY2sgaWYgdGhlcmUgYXJlIG90aGVyIGZpbGVzIG1vZGlmaWVkIGluIHRoZSBkaWZmLiBBaCwgdGhlIGRpZmYgb25seSBzaG93cyBjaGFuZ2VzIHRvIGBhcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jYC4gSXMgdGhlcmUgYW55IHBvc3NpYmxlIGdsb2JhbCB2YXJpYWJsZSB1c2FnZSBoZXJlPyBDb3VsZCBgY3B1YCBiZSBhIGdsb2JhbCB2YXJpYWJsZT8gTGV0J3Mgc2VhcmNoIHRoZSBrZXJuZWwgY29kZWJhc2UgZm9yIGluc3RhbmNlcyBvZiBgc3RydWN0IGt2bV92Y3B1ICpjcHVgIGFuZCBtYWtlIHN1cmUuIFRoaXMgd2lsbCBoZWxwIGRldGVybWluZSBpZiBpdCdzIGZ1enotd29ydGh5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDIzNCwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwNDo1ODo0Mi4wODQxMTc2NloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM2MzQyNzUxNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdHJ1Y3Qga3ZtX3ZjcHUgXFxcXCpjcHVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcInRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIveDg2L3Nldi5jPTE2MT1zdHJ1Y3Qga3ZtX3ZtICp2bV9zZXZfY3JlYXRlX3dpdGhfb25lX3ZjcHUodTMyIHR5cGUsIHZvaWQgKmd1ZXN0X2NvZGUsXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL3g4Ni9zZXYuYy0xNjgtXFx0c3RydWN0IGt2bV92bSAqdm07XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi94ODYvc2V2LmM6MTY5OlxcdHN0cnVjdCBrdm1fdmNwdSAqY3B1c1sxXTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL3g4Ni9zZXYuYy0xNzAtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA0OjU4OjQ0LjQ0NzU1MjE5NVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NzY0NzU2Nzg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRlYnVnZ2luZyBhIFBvdGVudGlhbCBUeXBvKipcblxuT2theSwgdGhlcmUncyBubyBnbG9iYWwgYGNwdWAgdmFyaWFibGUgaW4gc2lnaHQuIFRoYXQncyBpbW1lZGlhdGVseSBvYnZpb3VzLiBMZXQncyByZS1leGFtaW5lIHRoaXMgY29kZSBwYXRjaCBjbG9zZWx5LlxuXG5gYGBjXG4rXHQvKiBDaGVjayBpZiBwcml2aWxlZ2VkIGRvb3IgYmVsbCB3YXMgcmVxdWVzdGVkIGFuZCBoYW5kbGVkICovXG4rXHRpZiAodmNwdS1cdTAwM2VhcmNoLnZjb3JlLVx1MDAzZWRwZGVzKSB7XG4rXHRcdGt2bWh2X25lc3RlZHYyX2NhY2hlZF9yZWxvYWQodmNwdSwgS1ZNUFBDX0dTSURfRFBERVMpO1xuK1x0XHRpZiAodmNwdS1cdTAwM2VhcmNoLnZjb3JlLVx1MDAzZWRwZGVzKVxuK1x0XHRcdHZjcHUtXHUwMDNlYXJjaC5kb29yYmVsbF9yZXF1ZXN0IHw9IHZjcHUtXHUwMDNlYXJjaC52Y29yZS1cdTAwM2VkcGRlcztcbitcdFx0ZWxzZVxuK1x0XHRcdGNwdS1cdTAwM2VhcmNoLmRvb3JiZWxsX3JlcXVlc3QgPSAwO1xuK1x0fSBlbHNlIHtcbitcdFx0dmNwdS1cdTAwM2VhcmNoLmRvb3JiZWxsX3JlcXVlc3QgPSAwO1xuK1x0fVxuYGBgXG5cblJpZ2h0LCBpdCdzIHByZXR0eSBjbGVhciB0aGF0IGBjcHVgIGluIHRoYXQgYGVsc2VgIGJsb2NrIHNob3VsZCBiZSBgdmNwdWAuIFRoYXQncyBhIGNsYXNzaWMgdHlwby4gIFRoZSBjb21waWxlciB3b3VsZCBkZWZpbml0ZWx5IGNhdGNoIHRoaXMsIHNvIGl0J3Mgbm90IGZ1bmN0aW9uYWwgYXMgd3JpdHRlbi5cblxuQnV0IHdhaXQsIGhvbGQgb24uIENvdWxkIGl0IGJlIHRoYXQgYGNwdWAgaXMgKmFjdHVhbGx5KiBhIG1hY3JvPyBJIHNob3VsZCBjaGVjayB0aGUgZmlsZSB3aGVyZSB0aGlzIGlzIGRlZmluZWQsIGBhcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jYCwganVzdCB0byBiZSBjZXJ0YWluLiBNYWNyb3MgY2FuIGJlIHNuZWFreS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDA5ODcsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDQ6NTg6NTAuMjEyMzExMzAyWiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzA5ODA4NywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiI2RlZmluZSBjcHVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDQ6NTg6NTAuMjU1NDE3ODE5WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwMTk0NTA3OTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQ29tcGlsYXRpb24gRXJyb3IgRm91bmQgLSBSZXRoaW5raW5nIEFwcHJvYWNoKipcblxuQWxyaWdodCwgbm8uIFRoaXMgaXNuJ3QgYSBzaW1wbGUgb3ZlcnNpZ2h0OyBpdCdzIGEgY29tcGlsYXRpb24gZXJyb3IuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gbWFyayBgV29ydGhGdXp6aW5nPWZhbHNlYCBhbmQgY2xlYXJseSBzdGF0ZSB0aGF0IHRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgY29tcGlsYXRpb24gaXNzdWUg4oCTIHRoZSBjb2RlIHVzZXMgYGNwdWAgd2hlcmUgaXQgc2hvdWxkIHVzZSBgdmNwdWAuIFRoYXQncyB0aGUgb2J2aW91cyByb3V0ZS5cblxuQnV0IGhvbGQgb24gYSBzZWNvbmQuIEJlZm9yZSBJIHJ1c2ggdG8ganVkZ21lbnQsIGlzIHRoZXJlIGV2ZW4gYSAqcmVtb3RlKiBwb3NzaWJpbGl0eSB0aGF0IGBjcHVgIGlzIGEgdmFsaWQgdmFyaWFibGUgaW4gdGhpcyBjb250ZXh0PyBJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLiBKdXN0IGJlY2F1c2UgaXQncyAqbGlrZWx5KiBhIHR5cG8gZG9lc24ndCBtZWFuIGl0ICppcyogb25lLiBMZXQgbWUgZ28gYmFjayBhbmQgcmUtZXhhbWluZSBgYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuY2AuIEkgbmVlZCB0byBydWxlIG91dCBhbnkgc3VidGxlIG51YW5jZXMgaW4gdGhhdCBzZWN0aW9uIG9mIGNvZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxNTg2LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDQ6NTg6NTQuMjc0ODcyNDQyWiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Mjc5NzYxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjcHUtXFx1MDAzZWFyY2guZG9vcmJlbGxfcmVxdWVzdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM9ODgwPXN0YXRpYyBib29sIGt2bXBwY19kb29yYmVsbF9wZW5kaW5nKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODg0LVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODg1OlxcdGlmICh2Y3B1LVxcdTAwM2VhcmNoLmRvb3JiZWxsX3JlcXVlc3QpXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04ODYtXFx0XFx0cmV0dXJuIHRydWU7XFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jPTE1MzU9c3RhdGljIGludCBrdm1wcGNfZW11bGF0ZV9kb29yYmVsbF9pbnN0cihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTE1NjAtXFx0XFx0XFx0YnJlYWs7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoxNTYxOlxcdFxcdGlmICghdHZjcHUtXFx1MDAzZWFyY2guZG9vcmJlbGxfcmVxdWVzdCkge1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MTU2MjpcXHRcXHRcXHR0dmNwdS1cXHUwMDNlYXJjaC5kb29yYmVsbF9yZXF1ZXN0ID0gMTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTE1NjMtXFx0XFx0XFx0a3ZtcHBjX2Zhc3RfdmNwdV9raWNrX2h2KHR2Y3B1KTtcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMTU3MC1cXHRcXHR2Y3B1LVxcdTAwM2VhcmNoLnZjb3JlLVxcdTAwM2VkcGRlcyA9IDA7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoxNTcxOlxcdFxcdHZjcHUtXFx1MDAzZWFyY2guZG9vcmJlbGxfcmVxdWVzdCA9IDA7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0xNTcyLVxcdFxcdGJyZWFrO1xcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYz0yMjMwPXN0YXRpYyBpbnQga3ZtcHBjX2dldF9vbmVfcmVnX2h2KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGlkLFxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yMzE2LVxcdFxcdGlmIChjcHVfaGFzX2ZlYXR1cmUoQ1BVX0ZUUl9BUkNIXzMwMCkpXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyMzE3OlxcdFxcdFxcdCp2YWwgPSBnZXRfcmVnX3ZhbChpZCwgdmNwdS1cXHUwMDNlYXJjaC5kb29yYmVsbF9yZXF1ZXN0KTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTIzMTgtXFx0XFx0ZWxzZVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYz0yNDg4PXN0YXRpYyBpbnQga3ZtcHBjX3NldF9vbmVfcmVnX2h2KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGlkLFxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yNTY4LVxcdFxcdGlmIChjcHVfaGFzX2ZlYXR1cmUoQ1BVX0ZUUl9BUkNIXzMwMCkpXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyNTY5OlxcdFxcdFxcdHZjcHUtXFx1MDAzZWFyY2guZG9vcmJlbGxfcmVxdWVzdCA9IHNldF9yZWdfdmFsKGlkLCAqdmFsKSBcXHUwMDI2IDE7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yNTcwLVxcdFxcdGVsc2VcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM9NDI0OT1zdGF0aWMgaW50IGt2bWh2X3ZjcHVfZW50cnlfbmVzdGVkdjIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgdGltZV9saW1pdCxcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNDI2My1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjQyNjQ6XFx0aWYgKHZjcHUtXFx1MDAzZWFyY2guZG9vcmJlbGxfcmVxdWVzdClcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQyNjUtXFx0XFx0a3ZtcHBjX3NldF9kcGRlcyh2Y3B1LCAxKTtcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNDMwMS1cXHRcXHRpZiAodmNwdS1cXHUwMDNlYXJjaC52Y29yZS1cXHUwMDNlZHBkZXMpXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo0MzAyOlxcdFxcdFxcdHZjcHUtXFx1MDAzZWFyY2guZG9vcmJlbGxfcmVxdWVzdCB8PSB2Y3B1LVxcdTAwM2VhcmNoLnZjb3JlLVxcdTAwM2VkcGRlcztcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQzMDMtXFx0XFx0ZWxzZVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NDMwNDpcXHRcXHRcXHRjcHUtXFx1MDAzZWFyY2guZG9vcmJlbGxfcmVxdWVzdCA9IDA7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00MzA1LVxcdH0gZWxzZSB7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo0MzA2OlxcdFxcdHZjcHUtXFx1MDAzZWFyY2guZG9vcmJlbGxfcmVxdWVzdCA9IDA7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00MzA3LVxcdH1cXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM9NDMxOT1zdGF0aWMgaW50IGt2bWh2X3ZjcHVfZW50cnlfcDlfbmVzdGVkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IHRpbWVfbGltaXQsIHVuc2lnbmVkIGxvbmcgbHBjciwgdTY0ICp0YilcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNDM2OS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjQzNzA6XFx0aWYgKHZjcHUtXFx1MDAzZWFyY2guZG9vcmJlbGxfcmVxdWVzdClcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjQzNzE6XFx0XFx0dmNwdS1cXHUwMDNlYXJjaC5kb29yYmVsbF9yZXF1ZXN0ID0gMDtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQzNzItXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA0OjU4OjU0LjMxNzY3NjNaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDk5NDg1MTIyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHNpdHVhdGlvbjpcblxuKipBZGRyZXNzaW5nIGEgTGlrZWx5IFR5cG9zIGFuZCBGdXp6aW5nIEluYWNjZXNzaWJpbGl0eSoqXG5cbk9rYXksIEkndmUgZ290IGl0LiBUaGF0IGxpbmUsIGBjcHUtXHUwMDNlYXJjaC5kb29yYmVsbF9yZXF1ZXN0ID0gMDtgLi4uIHllYWgsIHRoYXQncyBhbG1vc3QgY2VydGFpbmx5IGEgdHlwby4gSXQgc2hvdWxkIGJlIGB2Y3B1LVx1MDAzZWFyY2guZG9vcmJlbGxfcmVxdWVzdCA9IDA7YCwgSSdtIHByZXR0eSBjb25maWRlbnQgYWJvdXQgdGhhdC4gSSBtZWFuLCBpdCdzIG5vdCBldmVuIGNvbXBpbGluZyBhcyBpdCBpcywgd2hpY2ggaXMgYSBwcmV0dHkgY2xlYXIgaW5kaWNhdG9yLiBBbmQgdGhhdCdzIGEgcHJvYmxlbSBiZWNhdXNlIGlmIGl0IGRvZXNuJ3QgY29tcGlsZSwgaXQncyBjb21wbGV0ZWx5IGluYWNjZXNzaWJsZSBmb3IgYW55IGtpbmQgb2YgZnV6emluZy4gU28sIGdpdmVuIHRoYXQgaW1tZWRpYXRlIHJvYWRibG9jaywgdGhlcmUncyBubyBwb2ludCBpbiBmdXJ0aGVyIGFuYWx5c2lzLiBJIG5lZWQgdG8gZmxhZyBpdCBhY2NvcmRpbmdseSwgSSdsbCBzZXQgV29ydGhGdXp6aW5nPWZhbHNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MzIxMiwiT3V0cHV0VG9rZW5zIjo4MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA0OjU4OjU5LjMxMjUzMTA5M1oiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMzMDAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNvbnRhaW5zIGEgY29tcGlsYXRpb24gZXJyb3I6IGBjcHUtXFx1MDAzZWFyY2guZG9vcmJlbGxfcmVxdWVzdCA9IDA7YCBzaG91bGQgYmUgYHZjcHUtXFx1MDAzZWFyY2guZG9vcmJlbGxfcmVxdWVzdCA9IDA7YC4gU2luY2UgaXQgZmFpbHMgdG8gY29tcGlsZSwgaXQgY2Fubm90IGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNvbnRhaW5zIGEgY29tcGlsYXRpb24gZXJyb3I6IGBjcHUtXFx1MDAzZWFyY2guZG9vcmJlbGxfcmVxdWVzdCA9IDA7YCBzaG91bGQgYmUgYHZjcHUtXFx1MDAzZWFyY2guZG9vcmJlbGxfcmVxdWVzdCA9IDA7YC4gU2luY2UgaXQgZmFpbHMgdG8gY29tcGlsZSwgaXQgY2Fubm90IGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowr6hks[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-03 04:27:23 +0000 UTC FinishedAt: 2026-08-03 04:59:01 +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+CgkJCTx0ZD4yMDI2LzA4LzAzIDA0OjU3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNvbnRhaW5zIGEgY29tcGlsYXRpb24gZXJyb3I6IGBjcHUtXHUwMDNlYXJjaC5kb29yYmVsbF9yZXF1ZXN0ID0gMDtgIHNob3VsZCBiZSBgdmNwdS1cdTAwM2VhcmNoLmRvb3JiZWxsX3JlcXVlc3QgPSAwO2AuIFNpbmNlIGl0IGZhaWxzIHRvIGNvbXBpbGUsIGl0IGNhbm5vdCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA0OjU3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNDBkYTA4ZTU4NTE0MzQzZmNiODg1YjhhODJhZDAxZTI4YmMzMTljNFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDMgMDQ6NTc6MzcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYyBiL2FyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmNcbmluZGV4IDYxZGJlZWEzMTdmM2IuLjQwZjg3MTdiOGE3ZDUgMTAwNjQ0XG4tLS0gYS9hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jXG5AQCAtMTUsNiAmIzQzOzE1LDcgQEBcbiAgKiBieSBBbGV4YW5kZXIgR3JhZiBcdTAwM2NhZ3JhZkBzdXNlLmRlXHUwMDNlLlxuICAqL1xuIFxuJiM0MzsjaW5jbHVkZSBcJiMzNDthc20vZ3Vlc3Qtc3RhdGUtYnVmZmVyLmhcJiMzNDtcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9rdm1faG9zdC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgva2VybmVsLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9lcnIuaFx1MDAzZVxuQEAgLTQyNTMsMTEgJiM0Mzs0MjU0LDYgQEAgc3RhdGljIGludCBrdm1odl92Y3B1X2VudHJ5X25lc3RlZHYyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IHRpbWVfbGltaXQsXG4gXHRpbnQgdHJhcDtcbiBcdGxvbmcgcmM7XG4gXG4tXHRpZiAodmNwdS1cdTAwM2VhcmNoLmRvb3JiZWxsX3JlcXVlc3QpIHtcbi1cdFx0dmNwdS1cdTAwM2VhcmNoLmRvb3JiZWxsX3JlcXVlc3QgPSAwO1xuLVx0XHRrdm1wcGNfc2V0X2RwZGVzKHZjcHUsIDEpO1xuLVx0fVxuLVxuIFx0aW8gPSBcdTAwMjZ2Y3B1LVx1MDAzZWFyY2gubmVzdGVkdjJfaW87XG4gXG4gXHRtc3IgPSBtZm1zcigpO1xuQEAgLTQyNjUsNiAmIzQzOzQyNjEsOSBAQCBzdGF0aWMgaW50IGt2bWh2X3ZjcHVfZW50cnlfbmVzdGVkdjIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgdGltZV9saW1pdCxcbiBcdGlmIChsYXp5X2lycV9wZW5kaW5nKCkpXG4gXHRcdHJldHVybiAwO1xuIFxuJiM0MztcdGlmICh2Y3B1LVx1MDAzZWFyY2guZG9vcmJlbGxfcmVxdWVzdClcbiYjNDM7XHRcdGt2bXBwY19zZXRfZHBkZXModmNwdSwgMSk7XG4mIzQzO1xuIFx0cmMgPSBrdm1odl9uZXN0ZWR2Ml9mbHVzaF92Y3B1KHZjcHUsIHRpbWVfbGltaXQpO1xuIFx0aWYgKHJjIFx1MDAzYyAwKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbkBAIC00Mjk2LDYgJiM0Mzs0Mjk1LDE3IEBAIHN0YXRpYyBpbnQga3ZtaHZfdmNwdV9lbnRyeV9uZXN0ZWR2MihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCB0aW1lX2xpbWl0LFxuIFx0aWYgKHJjIFx1MDAzYyAwKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbiYjNDM7XHQvKiBDaGVjayBpZiBwcml2aWxlZ2VkIGRvb3IgYmVsbCB3YXMgcmVxdWVzdGVkIGFuZCBoYW5kbGVkICovXG4mIzQzO1x0aWYgKHZjcHUtXHUwMDNlYXJjaC52Y29yZS1cdTAwM2VkcGRlcykge1xuJiM0MztcdFx0a3ZtaHZfbmVzdGVkdjJfY2FjaGVkX3JlbG9hZCh2Y3B1LCBLVk1QUENfR1NJRF9EUERFUyk7XG4mIzQzO1x0XHRpZiAodmNwdS1cdTAwM2VhcmNoLnZjb3JlLVx1MDAzZWRwZGVzKVxuJiM0MztcdFx0XHR2Y3B1LVx1MDAzZWFyY2guZG9vcmJlbGxfcmVxdWVzdCB8PSB2Y3B1LVx1MDAzZWFyY2gudmNvcmUtXHUwMDNlZHBkZXM7XG4mIzQzO1x0XHRlbHNlXG4mIzQzO1x0XHRcdGNwdS1cdTAwM2VhcmNoLmRvb3JiZWxsX3JlcXVlc3QgPSAwO1xuJiM0MztcdH0gZWxzZSB7XG4mIzQzO1x0XHR2Y3B1LVx1MDAzZWFyY2guZG9vcmJlbGxfcmVxdWVzdCA9IDA7XG4mIzQzO1x0fVxuJiM0MztcbiBcdHRpbWVyX3JlYXJtX2hvc3RfZGVjKCp0Yik7XG4gXG4gXHQvKiBSZWNvcmQgY29udGV4dCBzd2l0Y2ggYW5kIGd1ZXN0X3J1bl90aW1lIGRhdGEgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNDo1NzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY29udGFpbnMgYSBjb21waWxhdGlvbiBlcnJvcjogYGNwdS1cdTAwM2VhcmNoLmRvb3JiZWxsX3JlcXVlc3QgPSAwO2Agc2hvdWxkIGJlIGB2Y3B1LVx1MDAzZWFyY2guZG9vcmJlbGxfcmVxdWVzdCA9IDA7YC4gU2luY2UgaXQgZmFpbHMgdG8gY29tcGlsZSwgaXQgY2Fubm90IGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA0MGRhMDhlNTg1MTQzNDNmY2I4ODViOGE4MmFkMDFlMjhiYzMxOWM0CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBBdWcgMyAwNDo1NzozNyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMgYi9hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jCmluZGV4IDYxZGJlZWEzMTdmM2IuLjQwZjg3MTdiOGE3ZDUgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYwpAQCAtMTUsNiAmIzQzOzE1LDcgQEAKICAqIGJ5IEFsZXhhbmRlciBHcmFmICZsdDthZ3JhZkBzdXNlLmRlJmd0Oy4KICAqLwogCiYjNDM7I2luY2x1ZGUgJiMzNDthc20vZ3Vlc3Qtc3RhdGUtYnVmZmVyLmgmIzM0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2t2bV9ob3N0LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgva2VybmVsLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvZXJyLmgmZ3Q7CkBAIC00MjUzLDExICYjNDM7NDI1NCw2IEBAIHN0YXRpYyBpbnQga3ZtaHZfdmNwdV9lbnRyeV9uZXN0ZWR2MihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCB0aW1lX2xpbWl0LAogCWludCB0cmFwOwogCWxvbmcgcmM7CiAKLQlpZiAodmNwdS0mZ3Q7YXJjaC5kb29yYmVsbF9yZXF1ZXN0KSB7Ci0JCXZjcHUtJmd0O2FyY2guZG9vcmJlbGxfcmVxdWVzdCA9IDA7Ci0JCWt2bXBwY19zZXRfZHBkZXModmNwdSwgMSk7Ci0JfQotCiAJaW8gPSAmYW1wO3ZjcHUtJmd0O2FyY2gubmVzdGVkdjJfaW87CiAKIAltc3IgPSBtZm1zcigpOwpAQCAtNDI2NSw2ICYjNDM7NDI2MSw5IEBAIHN0YXRpYyBpbnQga3ZtaHZfdmNwdV9lbnRyeV9uZXN0ZWR2MihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCB0aW1lX2xpbWl0LAogCWlmIChsYXp5X2lycV9wZW5kaW5nKCkpCiAJCXJldHVybiAwOwogCiYjNDM7CWlmICh2Y3B1LSZndDthcmNoLmRvb3JiZWxsX3JlcXVlc3QpCiYjNDM7CQlrdm1wcGNfc2V0X2RwZGVzKHZjcHUsIDEpOwomIzQzOwogCXJjID0ga3ZtaHZfbmVzdGVkdjJfZmx1c2hfdmNwdSh2Y3B1LCB0aW1lX2xpbWl0KTsKIAlpZiAocmMgJmx0OyAwKQogCQlyZXR1cm4gLUVJTlZBTDsKQEAgLTQyOTYsNiAmIzQzOzQyOTUsMTcgQEAgc3RhdGljIGludCBrdm1odl92Y3B1X2VudHJ5X25lc3RlZHYyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IHRpbWVfbGltaXQsCiAJaWYgKHJjICZsdDsgMCkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKJiM0MzsJLyogQ2hlY2sgaWYgcHJpdmlsZWdlZCBkb29yIGJlbGwgd2FzIHJlcXVlc3RlZCBhbmQgaGFuZGxlZCAqLwomIzQzOwlpZiAodmNwdS0mZ3Q7YXJjaC52Y29yZS0mZ3Q7ZHBkZXMpIHsKJiM0MzsJCWt2bWh2X25lc3RlZHYyX2NhY2hlZF9yZWxvYWQodmNwdSwgS1ZNUFBDX0dTSURfRFBERVMpOwomIzQzOwkJaWYgKHZjcHUtJmd0O2FyY2gudmNvcmUtJmd0O2RwZGVzKQomIzQzOwkJCXZjcHUtJmd0O2FyY2guZG9vcmJlbGxfcmVxdWVzdCB8PSB2Y3B1LSZndDthcmNoLnZjb3JlLSZndDtkcGRlczsKJiM0MzsJCWVsc2UKJiM0MzsJCQljcHUtJmd0O2FyY2guZG9vcmJlbGxfcmVxdWVzdCA9IDA7CiYjNDM7CX0gZWxzZSB7CiYjNDM7CQl2Y3B1LSZndDthcmNoLmRvb3JiZWxsX3JlcXVlc3QgPSAwOwomIzQzOwl9CiYjNDM7CiAJdGltZXJfcmVhcm1faG9zdF9kZWMoKnRiKTsKIAogCS8qIFJlY29yZCBjb250ZXh0IHN3aXRjaCBhbmQgZ3Vlc3RfcnVuX3RpbWUgZGF0YSAqLwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNDo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTgyCgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogMTgzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgS1ZNL1Bvd2VyUEMgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuY2AsIHNwZWNpZmljYWxseSB0aGUgYGt2bWh2X3ZjcHVfZW50cnlfbmVzdGVkdjJgIGZ1bmN0aW9uLiBJdCBzZWVtcyBsaWtlIHdlJiMzOTtyZSBtb3Zpbmcgc29tZSBsb2dpYyBhcm91bmQgcmVsYXRlZCB0byBgdmNwdS0mZ3Q7YXJjaC5kb29yYmVsbF9yZXF1ZXN0YCBhbmQgYGt2bXBwY19zZXRfZHBkZXNgLiBIbW0sIGFsc28gbG9va3MgbGlrZSB0aGVyZSYjMzk7cyBhbiBhZGRlZCBjaGVjayBmb3IgYHZjcHUtJmd0O2FyY2gudmNvcmUtJmd0O2RwZGVzYCBhbmQgYW4gdXBkYXRlIHRvIGB2Y3B1LSZndDthcmNoLmRvb3JiZWxsX3JlcXVlc3RgIHRoZXJlIHRvby4gVGhpcyBjb3VsZCBiZSBpbnRlcmVzdGluZyBmcm9tIGEgcGVyZm9ybWFuY2UgcGVyc3BlY3RpdmUsIG9yIG1heWJlIHJlbGF0ZWQgdG8gc29tZSBuZXcgZmVhdHVyZS4KCkxldCBtZSBqdXN0IHF1aWNrbHkgc2NhbiBmb3IgcG90ZW50aWFsIHR5cG9zIG9yIHN1YnRsZSBidWdzLiBBaCwgd2FpdCBhIHNlY29uZC4gSSBzZWUgdGhpcyBsaW5lOiBgY3B1LSZndDthcmNoLmRvb3JiZWxsX3JlcXVlc3QgPSAwO2AuIFRoYXQgbG9va3MgYSBiaXQgb2RkOyBpcyBgY3B1YCBhY3R1YWxseSBpbiBzY29wZSB3aXRoaW4gYGt2bWh2X3ZjcHVfZW50cnlfbmVzdGVkdjJgPyBJIGRvbiYjMzk7dCByZWNhbGwgc2VlaW5nIGl0IGRlZmluZWQgdGhlcmUuIEJldHRlciBkb3VibGUtY2hlY2sgdGhlIGNvbnRleHQsIGVzcGVjaWFsbHkgYXJvdW5kIHRoYXQgYXJlYSBvZiBgYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuY2AgYXJvdW5kIGxpbmUgNDI5NS4gVGhpcyBjb3VsZCBiZSBhIHNpbXBsZSB0eXBvLCBvciBpdCBtaWdodCBwb2ludCB0byBhIGJpZ2dlciBpc3N1ZSB3aXRoIGhvdyB0aGF0IHZhcmlhYmxlIGlzIGJlaW5nIHVzZWQuIExldCYjMzk7cyBzZWUuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNDo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1odl92Y3B1X2VudHJ5X25lc3RlZHYyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jPTQyNDQ9c3RhdGljIHZvaWQgZG9fdHJhY2VfbmVzdGVkX2NzX3RpbWUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNDI0OC1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NDI0OTpzdGF0aWMgaW50IGt2bWh2X3ZjcHVfZW50cnlfbmVzdGVkdjIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgdGltZV9saW1pdCxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNDI1MC1cdFx0XHRcdCAgICAgdW5zaWduZWQgbG9uZyBscGNyLCB1NjQgKnRiKVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM9NDQyMz1zdGF0aWMgaW50IGt2bWh2X3A5X2d1ZXN0X2VudHJ5KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IHRpbWVfbGltaXQsXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00NDQ2LVx0XHRlbHNlXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjQ0NDc6XHRcdFx0dHJhcCA9IGt2bWh2X3ZjcHVfZW50cnlfbmVzdGVkdjIodmNwdSwgdGltZV9saW1pdCwgbHBjciwgdGIpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00NDQ4LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA0OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0MjMKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqRGl2aW5nIGludG8gYGt2bWh2X3ZjcHVfZW50cnlfbmVzdGVkdjJgKioKCkFscmlnaHQsIHRpbWUgdG8gZGlnIGludG8gYGt2bWh2X3ZjcHVfZW50cnlfbmVzdGVkdjJgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgd2hhdCBhcmUgd2UgcmVhbGx5IGxvb2tpbmcgYXQgaGVyZT8gSXQmIzM5O3MgY2xlYXJseSBhIGNyaXRpY2FsIGVudHJ5IHBvaW50IOKAkyB0aGUgbmFtZSBzY3JlYW1zIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiDigJMgc28gdGhpcyBpcyB3aGVyZSBhIHZpcnR1YWwgQ1BVICh2Q1BVKSBvZiBhIGd1ZXN0IGlzIGVudGVyaW5nIGEgbmVzdGVkIGh5cGVydmlzb3IgKGxpa2VseSBLVk0tSFYpLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udHJvbCBmbG93LiBXaGF0JiMzOTtzIHRoZSBjb250ZXh0IHN3aXRjaGluZyBoYXBwZW5pbmc/IFdoYXQgc3RhdGUgaXMgYmVpbmcgc2F2ZWQgYW5kIHJlc3RvcmVkPyBJcyB0aGVyZSBhbnl0aGluZyBjbGV2ZXIgZ29pbmcgb24gcmVsYXRlZCB0byBzaGFkb3cgcGFnaW5nIG9yIG90aGVyIG1lbW9yeSBtYW5hZ2VtZW50IHRyaWNrcz8KCk15IGluaXRpYWwgcXVlc3Rpb25zIGludm9sdmU6CgoqICAgKipTeW5jaHJvbml6YXRpb246KiogSG93IGlzIHRoaXMgZnVuY3Rpb24gcHJvdGVjdGVkIGFnYWluc3QgY29uY3VycmVudCBhY2Nlc3M/IElzIGl0IHJlZW50cmFudD8gQW55IGxvY2tzIG9yIGF0b21pYyBvcGVyYXRpb25zIGJlaW5nIHVzZWQgdG8ga2VlcCB0aGluZ3Mgc2FuZSB3aGVuIG11bHRpcGxlIHZDUFVzIHBvdGVudGlhbGx5IGVudGVyIHRoaXMgcm91dGluZSBzaW11bHRhbmVvdXNseT8KKiAgICoqUmVnaXN0ZXJzOioqIFdoYXQgcmVnaXN0ZXJzIGFyZSBiZWluZyBzYXZlZCwgYW5kIHdoeT8gSXMgaXQgYSBjb21wbGV0ZSBzYXZlIG9mIHRoZSBndWVzdCYjMzk7cyBjb250ZXh0LCBvciBhIHBhcnRpYWwgc2F2ZSB3aXRoIG9wdGltaXphdGlvbnM/IFdoYXQgYXJjaGl0ZWN0dXJhbCBjb25zaWRlcmF0aW9ucyBhcmUgZHJpdmluZyB0aGUgY2hvaWNlPwoqICAgKipFUFQvU2hhZG93IFBhZ2luZzoqKiBJIG5lZWQgdG8gbG9vayBjbG9zZWx5IGF0IHdoZXRoZXIgYW5kIGhvdyBleHRlbmRlZCBwYWdlIHRhYmxlcyAoRVBUKSBvciBhbnkga2luZCBvZiBzaGFkb3cgcGFnaW5nIG1lY2hhbmlzbSBpcyBiZWluZyBtYW5pcHVsYXRlZC4gTmVzdGVkIHZpcnR1YWxpemF0aW9uIGRlbWFuZHMgZWZmaWNpZW50IHRyYW5zbGF0aW9uIGJldHdlZW4gZ3Vlc3QgcGh5c2ljYWwgYWRkcmVzc2VzLCBob3N0IHBoeXNpY2FsIGFkZHJlc3NlcywgYW5kIHBvdGVudGlhbGx5LCB0aGUgbmVzdGVkIGh5cGVydmlzb3ImIzM5O3MgcGh5c2ljYWwgYWRkcmVzc2VzLiBUaGUgY29yZSBvZiB0aGUgcGVyZm9ybWFuY2UgaXMgZnJlcXVlbnRseSB0aGUgcGFnaW5nIHBhdGguCiogICAqKlZNIEV4aXQvRW50cnk6KiogSG93IGRvZXMgdGhpcyBmdW5jdGlvbiByZWxhdGUgdG8gdGhlIFZNIGVudHJ5IGFuZCBleGl0IG1lY2hhbmlzbXM/IElzIHRoaXMgZnVuY3Rpb24gY2FsbGVkIGFmdGVyIGEgVk0gZXhpdCwgYW5kIGlmIHNvLCBob3cgZG9lcyBpdCBoYW5kbGUgdGhlIGV4Y2VwdGlvbiB0aGF0IGNhdXNlZCB0aGUgZXhpdD8gV2hhdCBhYm91dCB0aGUgcmV2ZXJzZT8KKiAgICoqRXJyb3IgSGFuZGxpbmc6KiogV2hhdCYjMzk7cyB0aGUgZXJyb3IgaGFuZGxpbmcgbG9vayBsaWtlPyBBcmUgdGhlcmUgYW55IHBvdGVudGlhbCBmYWlsdXJlIHBvaW50cyB0aGF0IG5lZWQgY2FyZWZ1bCBjb25zaWRlcmF0aW9uIGluIGEgcHJvZHVjdGlvbiBzZXR0aW5nPyBXaGF0IGxvZ2dpbmcgb3IgZGVidWdnaW5nIGZhY2lsaXRpZXMgYXJlIGltcGxlbWVudGVkIGhlcmU/CiogICAqKlZpcnR1YWxpemF0aW9uIEluc3RydWN0aW9uczoqKiBUaGUgZnVuY3Rpb24mIzM5O3MgdXNlIG9mIHZpcnR1YWxpemF0aW9uIGluc3RydWN0aW9ucyBpcywgb2YgY291cnNlLCBjcml0aWNhbC4gVk0tRW50ZXIgYW5kIFZNLUV4aXQgaW5zdHJ1Y3Rpb25zIGFyZSB0aGUgaGVhcnQgb2YgdGhpcy4gSXQgd2lsbCBiZSBpbXBvcnRhbnQgdG8gY29uZmlybSB0aGUgY29ycmVjdCBoYW5kbGluZyBvZiBhbnkgY29udHJvbCByZWdpc3RlcnMgaW52b2x2ZWQgKGUuZy4sIFZNQ1MpLgoKVWx0aW1hdGVseSwgSSBleHBlY3QgdGhpcyBmdW5jdGlvbiB0byBiZSBhIGxpbmNocGluIGluIHRoZSBuZXN0ZWQgdmlydHVhbGl6YXRpb24gc3RhY2suIFVuZGVyc3RhbmRpbmcgaXQgdGhvcm91Z2hseSBpcyB0aGUga2V5IHRvIGJvdGggb3B0aW1pemluZyBwZXJmb3JtYW5jZSBhbmQgZW5zdXJpbmcgcm9idXN0bmVzcy4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGFjdHVhbGx5IGluIGl0Li4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDQ6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDthcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDI0OSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7NDI0OTpcdHN0YXRpYyBpbnQga3ZtaHZfdmNwdV9lbnRyeV9uZXN0ZWR2MihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCB0aW1lX2xpbWl0LFxuNDI1MDpcdFx0XHRcdFx0ICAgICB1bnNpZ25lZCBsb25nIGxwY3IsIHU2NCAqdGIpXG40MjUxOlx0e1xuNDI1MjpcdFx0c3RydWN0IGt2bWh2X25lc3RlZHYyX2lvICppbztcbjQyNTM6XHRcdHVuc2lnbmVkIGxvbmcgbXNyLCBpO1xuNDI1NDpcdFx0aW50IHRyYXA7XG40MjU1Olx0XHRsb25nIHJjO1xuNDI1NjpcdFxuNDI1NzpcdFx0aW8gPSBcdTAwMjZ2Y3B1LVx1MDAzZWFyY2gubmVzdGVkdjJfaW87XG40MjU4Olx0XG40MjU5Olx0XHRtc3IgPSBtZm1zcigpO1xuNDI2MDpcdFx0a3ZtcHBjX21zcl9oYXJkX2Rpc2FibGVfc2V0X2ZhY2lsaXRpZXModmNwdSwgbXNyKTtcbjQyNjE6XHRcdGlmIChsYXp5X2lycV9wZW5kaW5nKCkpXG40MjYyOlx0XHRcdHJldHVybiAwO1xuNDI2MzpcdFxuNDI2NDpcdFx0aWYgKHZjcHUtXHUwMDNlYXJjaC5kb29yYmVsbF9yZXF1ZXN0KVxuNDI2NTpcdFx0XHRrdm1wcGNfc2V0X2RwZGVzKHZjcHUsIDEpO1xuNDI2NjpcdFxuNDI2NzpcdFx0cmMgPSBrdm1odl9uZXN0ZWR2Ml9mbHVzaF92Y3B1KHZjcHUsIHRpbWVfbGltaXQpO1xuNDI2ODpcdFx0aWYgKHJjIFx1MDAzYyAwKVxuNDI2OTpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbjQyNzA6XHRcbjQyNzE6XHRcdGt2bXBwY19nc2VfcHV0X3U2NChpby1cdTAwM2V2Y3B1X3J1bl9pbnB1dCwgS1ZNUFBDX0dTSURfTFBDUiwgbHBjcik7XG40MjcyOlx0XG40MjczOlx0XHRhY2N1bXVsYXRlX3RpbWUodmNwdSwgXHUwMDI2dmNwdS1cdTAwM2VhcmNoLmluX2d1ZXN0KTtcbjQyNzQ6XHRcdHJjID0gcGxwYXJfZ3Vlc3RfcnVuX3ZjcHUoMCwgdmNwdS1cdTAwM2Vrdm0tXHUwMDNlYXJjaC5scGlkLCB2Y3B1LVx1MDAzZXZjcHVfaWQsXG40Mjc1Olx0XHRcdFx0XHQgIFx1MDAyNnRyYXAsIFx1MDAyNmkpO1xuNDI3NjpcdFxuNDI3NzpcdFx0aWYgKHJjICE9IEhfU1VDQ0VTUykge1xuNDI3ODpcdFx0XHRwcl9lcnIoXCYjMzQ7S1ZNIEd1ZXN0IFJ1biBWQ1BVIGhjYWxsIGZhaWxlZFxcblwmIzM0Oyk7XG40Mjc5Olx0XHRcdGlmIChyYyA9PSBIX0lOVkFMSURfRUxFTUVOVF9JRClcbjQyODA6XHRcdFx0XHRwcl9lcnIoXCYjMzQ7S1ZNOiBHdWVzdCBSdW4gVkNQVSBpbnZhbGlkIGVsZW1lbnQgaWQgYXQgJWxkXFxuXCYjMzQ7LCBpKTtcbjQyODE6XHRcdFx0ZWxzZSBpZiAocmMgPT0gSF9JTlZBTElEX0VMRU1FTlRfU0laRSlcbjQyODI6XHRcdFx0XHRwcl9lcnIoXCYjMzQ7S1ZNOiBHdWVzdCBSdW4gVkNQVSBpbnZhbGlkIGVsZW1lbnQgc2l6ZSBhdCAlbGRcXG5cJiMzNDssIGkpO1xuNDI4MzpcdFx0XHRlbHNlIGlmIChyYyA9PSBIX0lOVkFMSURfRUxFTUVOVF9WQUxVRSlcbjQyODQ6XHRcdFx0XHRwcl9lcnIoXCYjMzQ7S1ZNOiBHdWVzdCBSdW4gVkNQVSBpbnZhbGlkIGVsZW1lbnQgdmFsdWUgYXQgJWxkXFxuXCYjMzQ7LCBpKTtcbjQyODU6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG40Mjg2Olx0XHR9XG40Mjg3Olx0XHRhY2N1bXVsYXRlX3RpbWUodmNwdSwgXHUwMDI2dmNwdS1cdTAwM2VhcmNoLmd1ZXN0X2V4aXQpO1xuNDI4ODpcdFxuNDI4OTpcdFx0KnRiID0gbWZ0YigpO1xuNDI5MDpcdFx0a3ZtcHBjX2dzbV9yZXNldChpby1cdTAwM2V2Y3B1X21lc3NhZ2UpO1xuNDI5MTpcdFx0a3ZtcHBjX2dzbV9yZXNldChpby1cdTAwM2V2Y29yZV9tZXNzYWdlKTtcbjQyOTI6XHRcdGt2bXBwY19nc2JtX3plcm8oXHUwMDI2aW8tXHUwMDNldmFsaWRzKTtcbjQyOTM6XHRcbjQyOTQ6XHRcdHJjID0ga3ZtaHZfbmVzdGVkdjJfcGFyc2Vfb3V0cHV0KHZjcHUpO1xuNDI5NTpcdFx0aWYgKHJjIFx1MDAzYyAwKVxuNDI5NjpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbjQyOTc6XHRcbjQyOTg6XHRcdC8qIENoZWNrIGlmIHByaXZpbGVnZWQgZG9vciBiZWxsIHdhcyByZXF1ZXN0ZWQgYW5kIGhhbmRsZWQgKi9cbjQyOTk6XHRcdGlmICh2Y3B1LVx1MDAzZWFyY2gudmNvcmUtXHUwMDNlZHBkZXMpIHtcbjQzMDA6XHRcdFx0a3ZtaHZfbmVzdGVkdjJfY2FjaGVkX3JlbG9hZCh2Y3B1LCBLVk1QUENfR1NJRF9EUERFUyk7XG40MzAxOlx0XHRcdGlmICh2Y3B1LVx1MDAzZWFyY2gudmNvcmUtXHUwMDNlZHBkZXMpXG40MzAyOlx0XHRcdFx0dmNwdS1cdTAwM2VhcmNoLmRvb3JiZWxsX3JlcXVlc3QgfD0gdmNwdS1cdTAwM2VhcmNoLnZjb3JlLVx1MDAzZWRwZGVzO1xuNDMwMzpcdFx0XHRlbHNlXG40MzA0Olx0XHRcdFx0Y3B1LVx1MDAzZWFyY2guZG9vcmJlbGxfcmVxdWVzdCA9IDA7XG40MzA1Olx0XHR9IGVsc2Uge1xuNDMwNjpcdFx0XHR2Y3B1LVx1MDAzZWFyY2guZG9vcmJlbGxfcmVxdWVzdCA9IDA7XG40MzA3Olx0XHR9XG40MzA4Olx0XG40MzA5Olx0XHR0aW1lcl9yZWFybV9ob3N0X2RlYygqdGIpO1xuNDMxMDpcdFxuNDMxMTpcdFx0LyogUmVjb3JkIGNvbnRleHQgc3dpdGNoIGFuZCBndWVzdF9ydW5fdGltZSBkYXRhICovXG40MzEyOlx0XHRpZiAoa3ZtaHZfZ2V0X2wyX2NvdW50ZXJzX3N0YXR1cygpKVxuNDMxMzpcdFx0XHRkb190cmFjZV9uZXN0ZWRfY3NfdGltZSh2Y3B1KTtcbjQzMTQ6XHRcbjQzMTU6XHRcdHJldHVybiB0cmFwO1xuNDMxNjpcdH1cbjQzMTc6XHRcbjQzMTg6XHQvKiBjYWxsIG91ciBoeXBlcnZpc29yIHRvIGxvYWQgdXAgSFYgcmVncyBhbmQgZ28gKi9cbjQzMTk6XHRzdGF0aWMgaW50IGt2bWh2X3ZjcHVfZW50cnlfcDlfbmVzdGVkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IHRpbWVfbGltaXQsIHVuc2lnbmVkIGxvbmcgbHBjciwgdTY0ICp0YilcbjQzMjA6XHR7XG40MzIxOlx0XHR1bnNpZ25lZCBsb25nIGhvc3RfcHNzY3I7XG40MzIyOlx0XHR1bnNpZ25lZCBsb25nIG1zcjtcbjQzMjM6XHRcdHN0cnVjdCBodl9ndWVzdF9zdGF0ZSBodnJlZ3M7XG40MzI0Olx0XHRzdHJ1Y3QgcDlfaG9zdF9vc19zcHJzIGhvc3Rfb3Nfc3BycztcbjQzMjU6XHRcdHM2NCBkZWM7XG40MzI2Olx0XHRpbnQgdHJhcDtcbjQzMjc6XHRcbjQzMjg6XHRcdG1zciA9IG1mbXNyKCk7XG40MzI5Olx0XG40MzMwOlx0XHRzYXZlX3A5X2hvc3Rfb3Nfc3BycyhcdTAwMjZob3N0X29zX3NwcnMpO1xuNDMzMTpcdFxuNDMzMjpcdFx0LypcbjQzMzM6XHRcdCAqIFdlIG5lZWQgdG8gc2F2ZSBhbmQgcmVzdG9yZSB0aGUgZ3Vlc3QgdmlzaWJsZSBwYXJ0IG9mIHRoZVxuNDMzNDpcdFx0ICogcHNzY3IgKGkuZS4gdXNpbmcgU1BSTl9QU1NDUl9QUikgc2luY2UgdGhlIGh5cGVydmlzb3JcbjQzMzU6XHRcdCAqIGRvZXNuJiMzOTt0IGRvIHRoaXMgZm9yIHVzLiBOb3RlIG9ubHkgcmVxdWlyZWQgaWYgcHNlcmllcyBzaW5jZVxuNDMzNjpcdFx0ICogdGhpcyBpcyBkb25lIGluIGt2bWh2X3ZjcHVfZW50cnlfcDkoKSBiZWxvdyBvdGhlcndpc2UuXG40MzM3Olx0XHQgKi9cbjQzMzg6XHRcdGhvc3RfcHNzY3IgPSBtZnNwcihTUFJOX1BTU0NSX1BSKTtcbjQzMzk6XHRcbjQzNDA6XHRcdGt2bXBwY19tc3JfaGFyZF9kaXNhYmxlX3NldF9mYWNpbGl0aWVzKHZjcHUsIG1zcik7XG40MzQxOlx0XHRpZiAobGF6eV9pcnFfcGVuZGluZygpKVxuNDM0MjpcdFx0XHRyZXR1cm4gMDtcbjQzNDM6XHRcbjQzNDQ6XHRcdGlmICh1bmxpa2VseShsb2FkX3ZjcHVfc3RhdGUodmNwdSwgXHUwMDI2aG9zdF9vc19zcHJzKSkpXG40MzQ1Olx0XHRcdG1zciA9IG1mbXNyKCk7IC8qIFRNIHJlc3RvcmUgY2FuIHVwZGF0ZSBtc3IgKi9cbjQzNDY6XHRcbjQzNDc6XHRcdGlmICh2Y3B1LVx1MDAzZWFyY2gucHNzY3IgIT0gaG9zdF9wc3NjcilcbjQzNDg6XHRcdFx0bXRzcHIoU1BSTl9QU1NDUl9QUiwgdmNwdS1cdTAwM2VhcmNoLnBzc2NyKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNDo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NzIzCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogNTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGVidWdnaW5nIGEgUG90ZW50aWFsIFJhY2UgQ29uZGl0aW9uKioKCkFscmlnaHQsIHJpZ2h0IHRoZXJlLCBsaW5lIDQzMDQg4oCTIGBjcHUtJmd0O2FyY2guZG9vcmJlbGxfcmVxdWVzdCA9IDA7YC4gSSYjMzk7bSBmb2N1c2luZyBpbiBvbiB0aGF0IGJpdCBvZiBjb2RlLiBTcGVjaWZpY2FsbHksIHRoZSBhc3NpZ25tZW50LiBNeSBpbml0aWFsIGh1bmNoIGlzIHRoYXQgd2UgYXJlIHRyeWluZyB0byBzZXQgdGhlIGBkb29yYmVsbF9yZXF1ZXN0YCBmbGFnIHRvIHplcm8gb24gYSBwYXJ0aWN1bGFyIENQVSYjMzk7cyBhcmNoaXRlY3R1cmUuIFNvdW5kcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoLCBidXQgbXkgaW50ZXJuYWwgYWxhcm0gYmVsbHMgYXJlIGFscmVhZHkgc3RhcnRpbmcgdG8gcmluZy4KClRoZSBjcml0aWNhbCBxdWVzdGlvbiBpbW1lZGlhdGVseSBzdXJmYWNpbmcgaW4gbXkgbWluZCBpczogd2hlcmUgaXMgYGNwdWAgY29taW5nIGZyb20/IEJlZm9yZSBJIGRpdmUgdG9vIGRlZXAsIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBgY3B1YCBpcyBwcm9wZXJseSBkZWNsYXJlZCBhbmQgaW5pdGlhbGl6ZWQuIElzIHRoaXMgYSBsb2NhbCB2YXJpYWJsZSB3aXRoaW4gYSBmdW5jdGlvbiwgb3IgcGVyaGFwcyBhIGdsb2JhbCB2YXJpYWJsZSBkZWZpbmVkIHNvbWV3aGVyZSBlbHNlIGluIHRoZSBjb2RlYmFzZT8gSXQmIzM5O3MgY3J1Y2lhbCB0byB1bmRlcnN0YW5kIHRoZSBzY29wZSBhbmQgbGlmZXRpbWUgb2YgdGhpcyB2YXJpYWJsZS4gQWx0ZXJuYXRpdmVseSwgY291bGQgaXQgZXZlbiBiZSBhIG1hY3JvPyBNYWNyb3MgYXJlIHRyaWNreSBhbmQgY2FuIGludHJvZHVjZSBzdWJ0bGUgYnVncyBpZiB5b3UgYXJlIG5vdCB2ZXJ5IGNhcmVmdWwuIEkgbmVlZCB0byB0cmFjZSBiYWNrIGhvdyBpdCYjMzk7cyBkZWZpbmVkIGFuZCB3aGVuL3doZXJlIGl0JiMzOTtzIHVzZWQuIFRoaXMgcXVpY2sgY2hlY2sgd2lsbCBzYXZlIGEgbG90IG9mIGhlYWQtc2NyYXRjaGluZyBsYXRlciBpZiBpdCYjMzk7cyBub3Qgd2hhdCBJIGV4cGVjdCBpdCB0byBiZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNDo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjcHUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAzNTE4IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTI5LSNpbmNsdWRlIFx1MDAzY2xpbnV4L2Fub25faW5vZGVzLmhcdTAwM2VcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MzA6I2luY2x1ZGUgXHUwMDNjbGludXgvY3B1LmhcdTAwM2VcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MzE6I2luY2x1ZGUgXHUwMDNjbGludXgvY3B1bWFzay5oXHUwMDNlXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTMyLSNpbmNsdWRlIFx1MDAzY2xpbnV4L3NwaW5sb2NrLmhcdTAwM2Vcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTU0LSNpbmNsdWRlIFx1MDAzY2FzbS9kaXNhc3NlbWJsZS5oXHUwMDNlXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjU1OiNpbmNsdWRlIFx1MDAzY2FzbS9jcHV0YWJsZS5oXHUwMDNlXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTU2LSNpbmNsdWRlIFx1MDAzY2FzbS9jYWNoZWZsdXNoLmhcdTAwM2Vcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTY1LSNpbmNsdWRlIFx1MDAzY2FzbS9wcm9jZXNzb3IuaFx1MDAzZVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo2NjojaW5jbHVkZSBcdTAwM2Nhc20vY3B1dGhyZWFkcy5oXHUwMDNlXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTY3LSNpbmNsdWRlIFx1MDAzY2FzbS9wYWdlLmhcdTAwM2Vcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jPTEzMz1NT0RVTEVfUEFSTV9ERVNDKG5lc3RlZCwgXCYjMzQ7RW5hYmxlIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiAob25seSBvbiBQT1dFUjkpXCYjMzQ7KTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMTM0LVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoxMzU6c3RhdGljIGludCBrdm1wcGNfaHZfc2V0dXBfaHRhYl9ybWEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMTM2LVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM9MTUxPXN0YXRpYyB1bnNpZ25lZCBsb25nIHA4X3J3bXJfdmFsdWVzW01BWF9TTVRfVEhSRUFEUyAmIzQzOyAxXSA9IHtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTE2Mi1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MTYzOnN0YXRpYyBpbmxpbmUgc3RydWN0IGt2bV92Y3B1ICpuZXh0X3J1bm5hYmxlX3RocmVhZChzdHJ1Y3Qga3ZtcHBjX3Zjb3JlICp2YyxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMTY0LVx0XHRpbnQgKmlwKVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMTY2LVx0aW50IGkgPSAqaXA7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjE2NzpcdHN0cnVjdCBrdm1fdmNwdSAqdmNwdTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMTY4LVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0xNjktXHR3aGlsZSAoJiM0MzsmIzQzO2kgXHUwMDNjIE1BWF9TTVRfVEhSRUFEUykge1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoxNzA6XHRcdHZjcHUgPSBSRUFEX09OQ0UodmMtXHUwMDNlcnVubmFibGVfdGhyZWFkc1tpXSk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjE3MTpcdFx0aWYgKHZjcHUpIHtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMTcyLVx0XHRcdCppcCA9IGk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjE3MzpcdFx0XHRyZXR1cm4gdmNwdTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMTc0LVx0XHR9XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0xNzktLyogVXNlZCB0byB0cmF2ZXJzZSB0aGUgbGlzdCBvZiBydW5uYWJsZSB0aHJlYWRzIGZvciBhIGdpdmVuIHZjb3JlICovXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjE4MDojZGVmaW5lIGZvcl9lYWNoX3J1bm5hYmxlX3RocmVhZChpLCB2Y3B1LCB2YykgXFxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MTgxOlx0Zm9yIChpID0gLTE7ICh2Y3B1ID0gbmV4dF9ydW5uYWJsZV90aHJlYWQodmMsIFx1MDAyNmkpKTsgKVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0xODItXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjE4MzpzdGF0aWMgYm9vbCBrdm1wcGNfaXBpX3RocmVhZChpbnQgY3B1KVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0xODQte1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMTkwLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoxOTE6XHQvKiBPbiBQT1dFUjkgd2UgY2FuIHVzZSBtc2dzbmQgdG8gSVBJIGFueSBjcHUgKi9cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MTkyOlx0aWYgKGNwdV9oYXNfZmVhdHVyZShDUFVfRlRSX0FSQ0hfMzAwKSkge1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoxOTM6XHRcdG1zZyB8PSBnZXRfaGFyZF9zbXBfcHJvY2Vzc29yX2lkKGNwdSk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTE5NC1cdFx0c21wX21iKCk7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0xOTktXHQvKiBPbiBQT1dFUjggZm9yIElQSXMgdG8gdGhyZWFkcyBpbiB0aGUgc2FtZSBjb3JlLCB1c2UgbXNnc25kICovXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjIwMDpcdGlmIChjcHVfaGFzX2ZlYXR1cmUoQ1BVX0ZUUl9BUkNIXzIwN1MpKSB7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTIwMS1cdFx0cHJlZW1wdF9kaXNhYmxlKCk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjIwMjpcdFx0aWYgKGNwdV9maXJzdF90aHJlYWRfc2libGluZyhjcHUpID09XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjIwMzpcdFx0ICAgIGNwdV9maXJzdF90aHJlYWRfc2libGluZyhzbXBfcHJvY2Vzc29yX2lkKCkpKSB7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjIwNDpcdFx0XHRtc2cgfD0gY3B1X3RocmVhZF9pbl9jb3JlKGNwdSk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTIwNS1cdFx0XHRzbXBfbWIoKTtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTIxMy0jaWYgZGVmaW5lZChDT05GSUdfUFBDX0lDUF9OQVRJVkUpIFx1MDAyNlx1MDAyNiBkZWZpbmVkKENPTkZJR19TTVApXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjIxNDpcdGlmIChjcHUgXHUwMDNlPSAwIFx1MDAyNlx1MDAyNiBjcHUgXHUwMDNjIG5yX2NwdV9pZHMpIHtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjE1Olx0XHRpZiAocGFjYV9wdHJzW2NwdV0tXHUwMDNla3ZtX2hzdGF0ZS54aWNzX3BoeXMpIHtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjE2Olx0XHRcdHhpY3Nfd2FrZV9jcHUoY3B1KTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjE3LVx0XHRcdHJldHVybiB0cnVlO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yMTgtXHRcdH1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjE5Olx0XHRvcGFsX2ludF9zZXRfbWZycihnZXRfaGFyZF9zbXBfcHJvY2Vzc29yX2lkKGNwdSksIElQSV9QUklPUklUWSk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTIyMC1cdFx0cmV0dXJuIHRydWU7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yMjYtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjIyNzpzdGF0aWMgdm9pZCBrdm1wcGNfZmFzdF92Y3B1X2tpY2tfaHYoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yMjgte1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyMjk6XHRpbnQgY3B1O1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yMzAtXHRzdHJ1Y3QgcmN1d2FpdCAqd2FpdHA7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yMzMtXHQgKiByY3V3YWl0X3dha2VfdXAgY29udGFpbnMgc21wX21iKCkgd2hpY2ggb3JkZXJzIHByaW9yIHN0b3JlcyB0aGF0XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjIzNDpcdCAqIGNyZWF0ZSBwZW5kaW5nIHdvcmsgdnMgYmVsb3cgbG9hZHMgb2YgY3B1IGZpZWxkcy4gVGhlIG90aGVyIHNpZGVcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjM1Olx0ICogaXMgdGhlIGJhcnJpZXIgaW4gdmNwdSBydW4gdGhhdCBvcmRlcnMgc2V0dGluZyB0aGUgY3B1IGZpZWxkcyB2c1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yMzYtXHQgKiB0ZXN0aW5nIGZvciBwZW5kaW5nIHdvcmsuXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yMzgtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjIzOTpcdHdhaXRwID0ga3ZtX2FyY2hfdmNwdV9nZXRfd2FpdCh2Y3B1KTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjQwLVx0aWYgKHJjdXdhaXRfd2FrZV91cCh3YWl0cCkpXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjI0MTpcdFx0JiM0MzsmIzQzO3ZjcHUtXHUwMDNlc3RhdC5nZW5lcmljLmhhbHRfd2FrZXVwO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yNDItXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjI0MzpcdGNwdSA9IFJFQURfT05DRSh2Y3B1LVx1MDAzZWFyY2gudGhyZWFkX2NwdSk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjI0NDpcdGlmIChjcHUgXHUwMDNlPSAwIFx1MDAyNlx1MDAyNiBrdm1wcGNfaXBpX3RocmVhZChjcHUpKVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yNDUtXHRcdHJldHVybjtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTI0Ny1cdC8qIENQVSBwb2ludHMgdG8gdGhlIGZpcnN0IHRocmVhZCBvZiB0aGUgY29yZSAqL1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyNDg6XHRjcHUgPSB2Y3B1LVx1MDAzZWNwdTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjQ5Olx0aWYgKGNwdSBcdTAwM2U9IDAgXHUwMDI2XHUwMDI2IGNwdSBcdTAwM2MgbnJfY3B1X2lkcyBcdTAwMjZcdTAwMjYgY3B1X29ubGluZShjcHUpKVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyNTA6XHRcdHNtcF9zZW5kX3Jlc2NoZWR1bGUoY3B1KTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjUxLX1cbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTI1My0vKlxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyNTQ6ICogV2UgdXNlIHRoZSB2Y3B1X2xvYWQvcHV0IGZ1bmN0aW9ucyB0byBtZWFzdXJlIHN0b2xlbiB0aW1lLlxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yNTUtICpcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjU2OiAqIFN0b2xlbiB0aW1lIGlzIGNvdW50ZWQgYXMgdGltZSB3aGVuIGVpdGhlciB0aGUgdmNwdSBpcyBhYmxlIHRvXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTI1Ny0gKiBydW4gYXMgcGFydCBvZiBhIHZpcnR1YWwgY29yZSwgYnV0IHRoZSB0YXNrIHJ1bm5pbmcgdGhlIHZjb3JlXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjI1ODogKiBpcyBwcmVlbXB0ZWQgb3Igc2xlZXBpbmcsIG9yIHdoZW4gdGhlIHZjcHUgbmVlZHMgc29tZXRoaW5nIGRvbmVcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjU5OiAqIGluIHRoZSBrZXJuZWwgYnkgdGhlIHRhc2sgcnVubmluZyB0aGUgdmNwdSwgYnV0IHRoYXQgdGFzayBpc1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yNjAtICogcHJlZW1wdGVkIG9yIHNsZWVwaW5nLiAgVGhvc2UgdHdvIHRoaW5ncyBoYXZlIHRvIGJlIGNvdW50ZWRcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjYxOiAqIHNlcGFyYXRlbHksIHNpbmNlIG9uZSBvZiB0aGUgdmNwdSB0YXNrcyB3aWxsIHRha2Ugb24gdGhlIGpvYlxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyNjI6ICogb2YgcnVubmluZyB0aGUgY29yZSwgYW5kIHRoZSBvdGhlciB2Y3B1IHRhc2tzIGluIHRoZSB2Y29yZSB3aWxsXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTI2My0gKiBzbGVlcCB3YWl0aW5nIGZvciBpdCB0byBkbyB0aGF0LCBidXQgdGhhdCBzbGVlcCBzaG91bGRuJiMzOTt0IGNvdW50XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yNjUtICpcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjY2OiAqIEhlbmNlIHdlIGFjY3VtdWxhdGUgc3RvbGVuIHRpbWUgd2hlbiB0aGUgdmNwdSBjYW4gcnVuIGFzIHBhcnQgb2ZcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjY3OiAqIGEgdmNvcmUgdXNpbmcgdmMtXHUwMDNlc3RvbGVuX3RiLCBhbmQgdGhlIHN0b2xlbiB0aW1lIHdoZW4gdGhlIHZjcHVcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjY4LSAqIG5lZWRzIGl0cyB0YXNrIHRvIGRvIG90aGVyIHRoaW5ncyBpbiB0aGUga2VybmVsIChmb3IgZXhhbXBsZSxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjY5LSAqIHNlcnZpY2UgYSBwYWdlIGZhdWx0KSBpbiBidXN5X3N0b2xlbi4gIFdlIGRvbiYjMzk7dCBhY2N1bXVsYXRlXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjI3MDogKiBzdG9sZW4gdGltZSBmb3IgYSB2Y29yZSB3aGVuIGl0IGlzIGluYWN0aXZlLCBvciBmb3IgYSB2Y3B1XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTI3MS0gKiB3aGVuIGl0IGlzIGluIHN0YXRlIFJVTk5JTkcgb3IgTk9UUkVBRFkuICBOT1RSRUFEWSBpcyBhIGJpdCBvZlxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyNzI6ICogYSBtaXNub21lcjsgaXQgbWVhbnMgdGhhdCB0aGUgdmNwdSB0YXNrIGlzIG5vdCBleGVjdXRpbmcgaW5cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjczLSAqIHRoZSBLVk1fVkNQVV9SVU4gaW9jdGwsIGkuZS4gaXQgaXMgaW4gdXNlcnNwYWNlIG9yIGVsc2V3aGVyZSBpblxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yNzQtICogdGhlIGtlcm5lbC4gIFdlIGRvbiYjMzk7dCBoYXZlIGFueSB3YXkgb2YgZGl2aWRpbmcgdXAgdGhhdCB0aW1lXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjI3NTogKiBiZXR3ZWVuIHRpbWUgdGhhdCB0aGUgdmNwdSBpcyBnZW51aW5lbHkgc3RvcHBlZCwgdGltZSB0aGF0XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjI3NjogKiB0aGUgdGFzayBpcyBhY3RpdmVseSB3b3JraW5nIG9uIGJlaGFsZiBvZiB0aGUgdmNwdSwgYW5kIHRpbWVcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjc3LSAqIHRoYXQgdGhlIHRhc2sgaXMgcHJlZW1wdGVkLCBzbyB3ZSBkb24mIzM5O3QgY291bnQgYW55IG9mIGl0IGFzXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yODUtICpcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6Mjg2OiAqIFRoZSBQT1dFUjkgcGF0aCBpcyBzaW1wbGVyLCBvbmUgdmNwdSBwZXIgdmlydHVhbCBjb3JlIHNvIHRoZVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyODc6ICogZm9ybWVyIGNhc2UgZG9lcyBub3QgZXhpc3QuIElmIGEgdmNwdSBpcyBwcmVlbXB0ZWQgd2hlbiBpdCBpc1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yODgtICogQlVTWV9JTl9IT1NUIGFuZCBub3QgY2VkZWQgb3Igb3RoZXJ3aXNlIGJsb2NrZWQsIHRoZW4gYWNjdW11bGF0ZVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM9MjkzPXN0YXRpYyB2b2lkIGt2bXBwY19jb3JlX3N0YXJ0X3N0b2xlbihzdHJ1Y3Qga3ZtcHBjX3Zjb3JlICp2YywgdTY0IHRiKVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjk2LVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyOTc6XHRXQVJOX09OX09OQ0UoY3B1X2hhc19mZWF0dXJlKENQVV9GVFJfQVJDSF8zMDApKTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjk4LVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM9MzA0PXN0YXRpYyB2b2lkIGt2bXBwY19jb3JlX2VuZF9zdG9sZW4oc3RydWN0IGt2bXBwY192Y29yZSAqdmMsIHU2NCB0Yilcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTMwNy1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MzA4Olx0V0FSTl9PTl9PTkNFKGNwdV9oYXNfZmVhdHVyZShDUFVfRlRSX0FSQ0hfMzAwKSk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTMwOS1cbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTMxNy1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MzE4OnN0YXRpYyB2b2lkIGt2bXBwY19jb3JlX3ZjcHVfbG9hZF9odihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGludCBjcHUpXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTMxOS17XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjMyMDpcdHN0cnVjdCBrdm1wcGNfdmNvcmUgKnZjID0gdmNwdS1cdTAwM2VhcmNoLnZjb3JlO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0zMjEtXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzIzLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzozMjQ6XHRpZiAoY3B1X2hhc19mZWF0dXJlKENQVV9GVFJfQVJDSF8zMDApKSB7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjMyNTpcdFx0aWYgKHZjcHUtXHUwMDNlYXJjaC5idXN5X3ByZWVtcHQgIT0gVEJfTklMKSB7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjMyNjpcdFx0XHRXQVJOX09OX09OQ0UodmNwdS1cdTAwM2VhcmNoLnN0YXRlICE9IEtWTVBQQ19WQ1BVX0JVU1lfSU5fSE9TVCk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjMyNzpcdFx0XHR2Yy1cdTAwM2VzdG9sZW5fdGIgJiM0Mzs9IG1mdGIoKSAtIHZjcHUtXHUwMDNlYXJjaC5idXN5X3ByZWVtcHQ7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjMyODpcdFx0XHR2Y3B1LVx1MDAzZWFyY2guYnVzeV9wcmVlbXB0ID0gVEJfTklMO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0zMjktXHRcdH1cbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTMzNy1cdCAqIGJlY2F1c2Ugb25seSB0aGlzIHRhc2sgZXZlciBzZXRzIHZjLVx1MDAzZXJ1bm5lciB0byB0aGlzXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjMzODpcdCAqIHZjcHUsIGFuZCBvbmNlIGl0IGlzIHNldCB0byB0aGlzIHZjcHUsIG9ubHkgdGhpcyB0YXNrXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTMzOS1cdCAqIGV2ZXIgc2V0cyBpdCB0byBOVUxMLlxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0zNDAtXHQgKi9cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MzQxOlx0aWYgKHZjLVx1MDAzZXJ1bm5lciA9PSB2Y3B1IFx1MDAyNlx1MDAyNiB2Yy1cdTAwM2V2Y29yZV9zdGF0ZSBcdTAwM2U9IFZDT1JFX1NMRUVQSU5HKVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0zNDItXHRcdGt2bXBwY19jb3JlX2VuZF9zdG9sZW4odmMsIG5vdyk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTM0My1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MzQ0Olx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2dmNwdS1cdTAwM2VhcmNoLnRiYWNjdF9sb2NrLCBmbGFncyk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjM0NTpcdGlmICh2Y3B1LVx1MDAzZWFyY2guc3RhdGUgPT0gS1ZNUFBDX1ZDUFVfQlVTWV9JTl9IT1NUIFx1MDAyNlx1MDAyNlxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzozNDY6XHQgICAgdmNwdS1cdTAwM2VhcmNoLmJ1c3lfcHJlZW1wdCAhPSBUQl9OSUwpIHtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MzQ3Olx0XHR2Y3B1LVx1MDAzZWFyY2guYnVzeV9zdG9sZW4gJiM0Mzs9IG5vdyAtIHZjcHUtXHUwMDNlYXJjaC5idXN5X3ByZWVtcHQ7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjM0ODpcdFx0dmNwdS1cdTAwM2VhcmNoLmJ1c3lfcHJlZW1wdCA9IFRCX05JTDtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzQ5LVx0fVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzozNTA6XHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNnZjcHUtXHUwMDNlYXJjaC50YmFjY3RfbG9jaywgZmxhZ3MpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0zNTEtfVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0zNTItXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjM1MzpzdGF0aWMgdm9pZCBrdm1wcGNfY29yZV92Y3B1X3B1dF9odihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTM1NC17XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjM1NTpcdHN0cnVjdCBrdm1wcGNfdmNvcmUgKnZjID0gdmNwdS1cdTAwM2VhcmNoLnZjb3JlO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0zNTYtXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzU4LVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzozNTk6XHRpZiAoY3B1X2hhc19mZWF0dXJlKENQVV9GVFJfQVJDSF8zMDApKSB7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTM2MC1cdFx0Lypcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTM2My1cdFx0ICovXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjM2NDpcdFx0V0FSTl9PTl9PTkNFKHZjcHUtXHUwMDNlYXJjaC5zdGF0ZSA9PSBLVk1QUENfVkNQVV9SVU5OQUJMRSk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTM2NS1cdFx0LypcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MzY2Olx0XHQgKiBBY2NvdW50IHN0b2xlbiB0aW1lIHdoZW4gcHJlZW1wdGVkIHdoaWxlIHRoZSB2Y3B1IHRhc2sgaXNcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzY3LVx0XHQgKiBydW5uaW5nIGluIHRoZSBrZXJuZWwgKGJ1dCBub3QgaW4gcWVtdSwgd2hpY2ggaXMgSU5BQ1RJVkUpLlxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzY5LVx0XHRpZiAodGFza19pc19ydW5uaW5nKGN1cnJlbnQpIFx1MDAyNlx1MDAyNlxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzozNzA6XHRcdFx0XHR2Y3B1LVx1MDAzZWFyY2guc3RhdGUgPT0gS1ZNUFBDX1ZDUFVfQlVTWV9JTl9IT1NUKVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzozNzE6XHRcdFx0dmNwdS1cdTAwM2VhcmNoLmJ1c3lfcHJlZW1wdCA9IG1mdGIoKTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzcyLVx0XHRyZXR1cm47XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0zNzYtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjM3NzpcdGlmICh2Yy1cdTAwM2VydW5uZXIgPT0gdmNwdSBcdTAwMjZcdTAwMjYgdmMtXHUwMDNldmNvcmVfc3RhdGUgXHUwMDNlPSBWQ09SRV9TTEVFUElORylcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzc4LVx0XHRrdm1wcGNfY29yZV9zdGFydF9zdG9sZW4odmMsIG5vdyk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTM3OS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MzgwOlx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2dmNwdS1cdTAwM2VhcmNoLnRiYWNjdF9sb2NrLCBmbGFncyk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjM4MTpcdGlmICh2Y3B1LVx1MDAzZWFyY2guc3RhdGUgPT0gS1ZNUFBDX1ZDUFVfQlVTWV9JTl9IT1NUKVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzozODI6XHRcdHZjcHUtXHUwMDNlYXJjaC5idXN5X3ByZWVtcHQgPSBub3c7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjM4MzpcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2dmNwdS1cdTAwM2VhcmNoLnRiYWNjdF9sb2NrLCBmbGFncyk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTM4NC19XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTM4NS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6Mzg2OnN0YXRpYyB2b2lkIGt2bXBwY19zZXRfcHZyX2h2KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTMyIHB2cilcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzg3LXtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6Mzg4Olx0dmNwdS1cdTAwM2VhcmNoLnB2ciA9IHB2cjtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzg5LX1cbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jPTM5ND1zdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgbWFwX3Bjcl90b19jYXAodW5zaWduZWQgbG9uZyBwY3IpXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00MDItXHRjYXNlIFBDUl9BUkNIXzMxOlxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo0MDM6XHRcdGlmIChjcHVfaGFzX2ZlYXR1cmUoQ1BVX0ZUUl9QMTFfUFZSKSlcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNDA0LVx0XHRcdGNhcCA9IEhfR1VFU1RfQ0FQX1BPV0VSMTE7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00MTQtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjQxNTpzdGF0aWMgaW50IGt2bXBwY19zZXRfYXJjaF9jb21wYXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgYXJjaF9jb21wYXQpXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQxNi17XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQxNy1cdHVuc2lnbmVkIGxvbmcgaG9zdF9wY3JfYml0ID0gMCwgZ3Vlc3RfcGNyX2JpdCA9IDAsIGNhcCA9IDA7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjQxODpcdHN0cnVjdCBrdm1wcGNfdmNvcmUgKnZjID0gdmNwdS1cdTAwM2VhcmNoLnZjb3JlO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00MTktXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQyMC1cdC8qIFdlIGNhbiAoZW11bGF0ZSkgb3VyIG93biBhcmNoaXRlY3R1cmUgdmVyc2lvbiBhbmQgYW55dGhpbmcgb2xkZXIgKi9cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NDIxOlx0aWYgKGNwdV9oYXNfZmVhdHVyZShDUFVfRlRSX1AxMV9QVlIpIHx8IGNwdV9oYXNfZmVhdHVyZShDUFVfRlRSX0FSQ0hfMzEpKVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00MjItXHRcdGhvc3RfcGNyX2JpdCA9IFBDUl9BUkNIXzMxO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo0MjM6XHRlbHNlIGlmIChjcHVfaGFzX2ZlYXR1cmUoQ1BVX0ZUUl9BUkNIXzMwMCkpXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQyNC1cdFx0aG9zdF9wY3JfYml0ID0gUENSX0FSQ0hfMzAwO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo0MjU6XHRlbHNlIGlmIChjcHVfaGFzX2ZlYXR1cmUoQ1BVX0ZUUl9BUkNIXzIwN1MpKVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00MjYtXHRcdGhvc3RfcGNyX2JpdCA9IFBDUl9BUkNIXzIwNztcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NDI3Olx0ZWxzZSBpZiAoY3B1X2hhc19mZWF0dXJlKENQVV9GVFJfQVJDSF8yMDYpKVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00MjgtXHRcdGhvc3RfcGNyX2JpdCA9IFBDUl9BUkNIXzIwNjtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQ3NC1cdHZjLVx1MDAzZWFyY2hfY29tcGF0ID0gYXJjaF9jb21wYXQ7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjQ3NTpcdGt2bWh2X25lc3RlZHYyX21hcmtfZGlydHkodmNwdSwgS1ZNUFBDX0dTSURfTE9HSUNBTF9QVlIpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00NzYtXHQvKlxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNDg1LVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo0ODY6c3RhdGljIHZvaWQga3ZtcHBjX2R1bXBfcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQ4Ny17XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00ODktXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjQ5MDpcdHByX2VycihcJiMzNDt2Y3B1ICVwICglZCk6XFxuXCYjMzQ7LCB2Y3B1LCB2Y3B1LVx1MDAzZXZjcHVfaWQpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00OTEtXHRwcl9lcnIoXCYjMzQ7cGMgID0gJS4xNmx4ICBtc3IgPSAlLjE2bGx4ICB0cmFwID0gJXhcXG5cJiMzNDssXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjQ5MjpcdCAgICAgICB2Y3B1LVx1MDAzZWFyY2gucmVncy5uaXAsIHZjcHUtXHUwMDNlYXJjaC5zaHJlZ3MubXNyLCB2Y3B1LVx1MDAzZWFyY2gudHJhcCk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQ5My1cdGZvciAociA9IDA7IHIgXHUwMDNjIDE2OyAmIzQzOyYjNDM7cilcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNDk0LVx0XHRwcl9lcnIoXCYjMzQ7ciUyZCA9ICUuMTZseCAgciVkID0gJS4xNmx4XFxuXCYjMzQ7LFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo0OTU6XHRcdCAgICAgICByLCBrdm1wcGNfZ2V0X2dwcih2Y3B1LCByKSxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NDk2Olx0XHQgICAgICAgciYjNDM7MTYsIGt2bXBwY19nZXRfZ3ByKHZjcHUsIHImIzQzOzE2KSk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQ5Ny1cdHByX2VycihcJiMzNDtjdHIgPSAlLjE2bHggIGxyICA9ICUuMTZseFxcblwmIzM0OyxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NDk4Olx0ICAgICAgIHZjcHUtXHUwMDNlYXJjaC5yZWdzLmN0ciwgdmNwdS1cdTAwM2VhcmNoLnJlZ3MubGluayk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQ5OS1cdHByX2VycihcJiMzNDtzcnIwID0gJS4xNmxseCBzcnIxID0gJS4xNmxseFxcblwmIzM0OyxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NTAwOlx0ICAgICAgIHZjcHUtXHUwMDNlYXJjaC5zaHJlZ3Muc3JyMCwgdmNwdS1cdTAwM2VhcmNoLnNocmVncy5zcnIxKTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTAxLVx0cHJfZXJyKFwmIzM0O3NwcmcwID0gJS4xNmxseCBzcHJnMSA9ICUuMTZsbHhcXG5cJiMzNDssXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjUwMjpcdCAgICAgICB2Y3B1LVx1MDAzZWFyY2guc2hyZWdzLnNwcmcwLCB2Y3B1LVx1MDAzZWFyY2guc2hyZWdzLnNwcmcxKTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTAzLVx0cHJfZXJyKFwmIzM0O3NwcmcyID0gJS4xNmxseCBzcHJnMyA9ICUuMTZsbHhcXG5cJiMzNDssXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjUwNDpcdCAgICAgICB2Y3B1LVx1MDAzZWFyY2guc2hyZWdzLnNwcmcyLCB2Y3B1LVx1MDAzZWFyY2guc2hyZWdzLnNwcmczKTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTA1LVx0cHJfZXJyKFwmIzM0O2NyID0gJS44bHggIHhlciA9ICUuMTZseCAgZHNpc3IgPSAlLjh4XFxuXCYjMzQ7LFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1MDY6XHQgICAgICAgdmNwdS1cdTAwM2VhcmNoLnJlZ3MuY2NyLCB2Y3B1LVx1MDAzZWFyY2gucmVncy54ZXIsIHZjcHUtXHUwMDNlYXJjaC5zaHJlZ3MuZHNpc3IpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1MDc6XHRwcl9lcnIoXCYjMzQ7ZGFyID0gJS4xNmxseFxcblwmIzM0OywgdmNwdS1cdTAwM2VhcmNoLnNocmVncy5kYXIpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01MDgtXHRwcl9lcnIoXCYjMzQ7ZmF1bHQgZGFyID0gJS4xNmx4IGRzaXNyID0gJS44eFxcblwmIzM0OyxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NTA5Olx0ICAgICAgIHZjcHUtXHUwMDNlYXJjaC5mYXVsdF9kYXIsIHZjcHUtXHUwMDNlYXJjaC5mYXVsdF9kc2lzcik7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjUxMDpcdHByX2VycihcJiMzNDtTTEIgKCVkIGVudHJpZXMpOlxcblwmIzM0OywgdmNwdS1cdTAwM2VhcmNoLnNsYl9tYXgpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1MTE6XHRmb3IgKHIgPSAwOyByIFx1MDAzYyB2Y3B1LVx1MDAzZWFyY2guc2xiX21heDsgJiM0MzsmIzQzO3IpXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTUxMi1cdFx0cHJfZXJyKFwmIzM0OyAgRVNJRCA9ICUuMTZsbHggVlNJRCA9ICUuMTZsbHhcXG5cJiMzNDssXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjUxMzpcdFx0ICAgICAgIHZjcHUtXHUwMDNlYXJjaC5zbGJbcl0ub3JpZ2UsIHZjcHUtXHUwMDNlYXJjaC5zbGJbcl0ub3JpZ3YpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01MTQtXHRwcl9lcnIoXCYjMzQ7bHBjciA9ICUuMTZseCBzZHIxID0gJS4xNmx4IGxhc3RfaW5zdCA9ICUuMTZseFxcblwmIzM0OyxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NTE1Olx0ICAgICAgIHZjcHUtXHUwMDNlYXJjaC52Y29yZS1cdTAwM2VscGNyLCB2Y3B1LVx1MDAzZWt2bS1cdTAwM2VhcmNoLnNkcjEsXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjUxNjpcdCAgICAgICB2Y3B1LVx1MDAzZWFyY2gubGFzdF9pbnN0KTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTE3LX1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTE4LVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1MTk6c3RhdGljIHN0cnVjdCBrdm1fdmNwdSAqa3ZtcHBjX2ZpbmRfdmNwdShzdHJ1Y3Qga3ZtICprdm0sIGludCBpZClcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTIwLXtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NTIxOlx0cmV0dXJuIGt2bV9nZXRfdmNwdV9ieV9pZChrdm0sIGlkKTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTIyLX1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTIzLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1MjQ6c3RhdGljIHZvaWQgaW5pdF92cGEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3QgbHBwYWNhICp2cGEpXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTUyNS17XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTUyNi1cdHZwYS1cdTAwM2VfX29sZF9zdGF0dXMgfD0gTFBQQUNBX09MRF9TSEFSRURfUFJPQztcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NTI3Olx0dnBhLVx1MDAzZXlpZWxkX2NvdW50ID0gY3B1X3RvX2JlMzIoMSk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTUyOC19XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTUyOS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NTMwOnN0YXRpYyBpbnQgc2V0X3ZwYShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1wcGNfdnBhICp2LFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01MzEtXHRcdCAgIHVuc2lnbmVkIGxvbmcgYWRkciwgdW5zaWduZWQgbG9uZyBsZW4pXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01MzUtXHRcdHJldHVybiAtRUlOVkFMO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1MzY6XHRzcGluX2xvY2soXHUwMDI2dmNwdS1cdTAwM2VhcmNoLnZwYV91cGRhdGVfbG9jayk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTUzNy1cdGlmICh2LVx1MDAzZW5leHRfZ3BhICE9IGFkZHIgfHwgdi1cdTAwM2VsZW4gIT0gbGVuKSB7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01NDEtXHR9XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjU0MjpcdHNwaW5fdW5sb2NrKFx1MDAyNnZjcHUtXHUwMDNlYXJjaC52cGFfdXBkYXRlX2xvY2spO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01NDMtXHRyZXR1cm4gMDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jPTU1NT1zdGF0aWMgaW50IHZwYV9pc19yZWdpc3RlcmVkKHN0cnVjdCBrdm1wcGNfdnBhICp2cGFwKVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTYxLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1NjI6c3RhdGljIHVuc2lnbmVkIGxvbmcgZG9faF9yZWdpc3Rlcl92cGEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01NjMtXHRcdFx0XHQgICAgICAgdW5zaWduZWQgbG9uZyBmbGFncyxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NTY0Olx0XHRcdFx0ICAgICAgIHVuc2lnbmVkIGxvbmcgdmNwdWlkLCB1bnNpZ25lZCBsb25nIHZwYSlcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTY1LXtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NTY2Olx0c3RydWN0IGt2bSAqa3ZtID0gdmNwdS1cdTAwM2Vrdm07XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTU2Ny1cdHVuc2lnbmVkIGxvbmcgbGVuLCBuYjtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTY4LVx0dm9pZCAqdmE7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjU2OTpcdHN0cnVjdCBrdm1fdmNwdSAqdHZjcHU7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTU3MC1cdGludCBlcnI7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01NzMtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjU3NDpcdHR2Y3B1ID0ga3ZtcHBjX2ZpbmRfdmNwdShrdm0sIHZjcHVpZCk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjU3NTpcdGlmICghdHZjcHUpXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTU3Ni1cdFx0cmV0dXJuIEhfUEFSQU1FVEVSO1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTg5LVx0XHRpZiAoc3ViZnVuYyA9PSBIX1ZQQV9SRUdfVlBBKVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1OTA6XHRcdFx0bGVuID0gYmUxNl90b19jcHUoKChzdHJ1Y3QgcmVnX3ZwYSAqKXZhKS1cdTAwM2VsZW5ndGguaHdvcmQpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01OTEtXHRcdGVsc2VcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NTkyOlx0XHRcdGxlbiA9IGJlMzJfdG9fY3B1KCgoc3RydWN0IHJlZ192cGEgKil2YSktXHUwMDNlbGVuZ3RoLndvcmQpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01OTMtXHRcdGt2bXBwY191bnBpbl9ndWVzdF9wYWdlKGt2bSwgdmEsIHZwYSwgZmFsc2UpO1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjA0LVx0dnBhcCA9IE5VTEw7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjYwNTpcdHNwaW5fbG9jayhcdTAwMjZ0dmNwdS1cdTAwM2VhcmNoLnZwYV91cGRhdGVfbG9jayk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTYwNi1cbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTYxNy1cdFx0XHRicmVhaztcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NjE4Olx0XHR2cGFwID0gXHUwMDI2dHZjcHUtXHUwMDNlYXJjaC52cGE7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTYxOS1cdFx0ZXJyID0gMDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTYyOC1cdFx0ZXJyID0gSF9SRVNPVVJDRTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NjI5Olx0XHRpZiAoIXZwYV9pc19yZWdpc3RlcmVkKFx1MDAyNnR2Y3B1LVx1MDAzZWFyY2gudnBhKSlcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjMwLVx0XHRcdGJyZWFrO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy02MzEtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjYzMjpcdFx0dnBhcCA9IFx1MDAyNnR2Y3B1LVx1MDAzZWFyY2guZHRsO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy02MzMtXHRcdGVyciA9IDA7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy02MzgtXHRcdGVyciA9IEhfUkVTT1VSQ0U7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjYzOTpcdFx0aWYgKCF2cGFfaXNfcmVnaXN0ZXJlZChcdTAwMjZ0dmNwdS1cdTAwM2VhcmNoLnZwYSkpXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTY0MC1cdFx0XHRicmVhaztcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjQxLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo2NDI6XHRcdHZwYXAgPSBcdTAwMjZ0dmNwdS1cdTAwM2VhcmNoLnNsYl9zaGFkb3c7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTY0My1cdFx0ZXJyID0gMDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTY0OC1cdFx0ZXJyID0gSF9SRVNPVVJDRTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NjQ5Olx0XHRpZiAodnBhX2lzX3JlZ2lzdGVyZWQoXHUwMDI2dHZjcHUtXHUwMDNlYXJjaC5kdGwpIHx8XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjY1MDpcdFx0ICAgIHZwYV9pc19yZWdpc3RlcmVkKFx1MDAyNnR2Y3B1LVx1MDAzZWFyY2guc2xiX3NoYWRvdykpXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTY1MS1cdFx0XHRicmVhaztcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjUyLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo2NTM6XHRcdHZwYXAgPSBcdTAwMjZ0dmNwdS1cdTAwM2VhcmNoLnZwYTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjU0LVx0XHRlcnIgPSAwO1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjU3LVx0Y2FzZSBIX1ZQQV9ERVJFR19EVEw6XHRcdC8qIGRlcmVnaXN0ZXIgRFRMICovXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjY1ODpcdFx0dnBhcCA9IFx1MDAyNnR2Y3B1LVx1MDAzZWFyY2guZHRsO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy02NTktXHRcdGVyciA9IDA7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy02NjItXHRjYXNlIEhfVlBBX0RFUkVHX1NMQjpcdFx0LyogZGVyZWdpc3RlciBTTEIgc2hhZG93IGJ1ZmZlciAqL1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo2NjM6XHRcdHZwYXAgPSBcdTAwMjZ0dmNwdS1cdTAwM2VhcmNoLnNsYl9zaGFkb3c7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTY2NC1cdFx0ZXJyID0gMDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTY3My1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6Njc0Olx0c3Bpbl91bmxvY2soXHUwMDI2dHZjcHUtXHUwMDNlYXJjaC52cGFfdXBkYXRlX2xvY2spO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy02NzUtXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy02NzgtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjY3OTpzdGF0aWMgdm9pZCBrdm1wcGNfdXBkYXRlX3ZwYShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1wcGNfdnBhICp2cGFwLFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy02ODAtXHRcdFx0ICAgICAgIHN0cnVjdCBrdm1wcGNfdnBhICpvbGRfdnBhcClcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjgxLXtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NjgyOlx0c3RydWN0IGt2bSAqa3ZtID0gdmNwdS1cdTAwM2Vrdm07XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTY4My1cdHZvaWQgKnZhO1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjk2LVx0XHRncGEgPSB2cGFwLVx1MDAzZW5leHRfZ3BhO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo2OTc6XHRcdHNwaW5fdW5sb2NrKFx1MDAyNnZjcHUtXHUwMDNlYXJjaC52cGFfdXBkYXRlX2xvY2spO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy02OTgtXHRcdHZhID0gTlVMTDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTcwMS1cdFx0XHR2YSA9IGt2bXBwY19waW5fZ3Vlc3RfcGFnZShrdm0sIGdwYSwgXHUwMDI2bmIpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo3MDI6XHRcdHNwaW5fbG9jayhcdTAwMjZ2Y3B1LVx1MDAzZWFyY2gudnBhX3VwZGF0ZV9sb2NrKTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNzAzLVx0XHRpZiAoZ3BhID09IHZwYXAtXHUwMDNlbmV4dF9ncGEpXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03MjgtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjcyOTpzdGF0aWMgdm9pZCBrdm1wcGNfdXBkYXRlX3ZwYXMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03MzAte1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo3MzE6XHRzdHJ1Y3Qga3ZtICprdm0gPSB2Y3B1LVx1MDAzZWt2bTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNzMyLVx0c3RydWN0IGt2bXBwY192cGEgb2xkX3ZwYSA9IHsgMCB9O1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03MzMtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjczNDpcdGlmICghKHZjcHUtXHUwMDNlYXJjaC52cGEudXBkYXRlX3BlbmRpbmcgfHxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NzM1Olx0ICAgICAgdmNwdS1cdTAwM2VhcmNoLnNsYl9zaGFkb3cudXBkYXRlX3BlbmRpbmcgfHxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NzM2Olx0ICAgICAgdmNwdS1cdTAwM2VhcmNoLmR0bC51cGRhdGVfcGVuZGluZykpXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTczNy1cdFx0cmV0dXJuO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03MzgtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjczOTpcdHNwaW5fbG9jayhcdTAwMjZ2Y3B1LVx1MDAzZWFyY2gudnBhX3VwZGF0ZV9sb2NrKTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NzQwOlx0aWYgKHZjcHUtXHUwMDNlYXJjaC52cGEudXBkYXRlX3BlbmRpbmcpIHtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NzQxOlx0XHRrdm1wcGNfdXBkYXRlX3ZwYSh2Y3B1LCBcdTAwMjZ2Y3B1LVx1MDAzZWFyY2gudnBhLCBcdTAwMjZvbGRfdnBhKTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNzQyLVx0XHRpZiAob2xkX3ZwYS5waW5uZWRfYWRkcikge1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03NDMtXHRcdFx0aWYgKGt2bWh2X2lzX25lc3RlZHYyKCkpXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjc0NDpcdFx0XHRcdGt2bWh2X25lc3RlZHYyX3NldF92cGEodmNwdSwgfjB1bGwpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03NDUtXHRcdFx0a3ZtcHBjX3VucGluX2d1ZXN0X3BhZ2Uoa3ZtLCBvbGRfdnBhLnBpbm5lZF9hZGRyLCBvbGRfdnBhLmdwYSxcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTc0Ny1cdFx0fVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo3NDg6XHRcdGlmICh2Y3B1LVx1MDAzZWFyY2gudnBhLnBpbm5lZF9hZGRyKSB7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjc0OTpcdFx0XHRpbml0X3ZwYSh2Y3B1LCB2Y3B1LVx1MDAzZWFyY2gudnBhLnBpbm5lZF9hZGRyKTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNzUwLVx0XHRcdGlmIChrdm1odl9pc19uZXN0ZWR2MigpKVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo3NTE6XHRcdFx0XHRrdm1odl9uZXN0ZWR2Ml9zZXRfdnBhKHZjcHUsIF9fcGEodmNwdS1cdTAwM2VhcmNoLnZwYS5waW5uZWRfYWRkcikpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03NTItXHRcdH1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNzUzLVx0fVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo3NTQ6XHRpZiAodmNwdS1cdTAwM2VhcmNoLmR0bC51cGRhdGVfcGVuZGluZykge1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo3NTU6XHRcdGt2bXBwY191cGRhdGVfdnBhKHZjcHUsIFx1MDAyNnZjcHUtXHUwMDNlYXJjaC5kdGwsIFx1MDAyNm9sZF92cGEpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03NTYtXHRcdGlmIChvbGRfdnBhLnBpbm5lZF9hZGRyKVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNzU4LVx0XHRcdFx0XHRcdG9sZF92cGEuZGlydHkpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo3NTk6XHRcdHZjcHUtXHUwMDNlYXJjaC5kdGxfcHRyID0gdmNwdS1cdTAwM2VhcmNoLmR0bC5waW5uZWRfYWRkcjtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NzYwOlx0XHR2Y3B1LVx1MDAzZWFyY2guZHRsX2luZGV4ID0gMDtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNzYxLVx0fVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo3NjI6XHRpZiAodmNwdS1cdTAwM2VhcmNoLnNsYl9zaGFkb3cudXBkYXRlX3BlbmRpbmcpIHtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NzYzOlx0XHRrdm1wcGNfdXBkYXRlX3ZwYSh2Y3B1LCBcdTAwMjZ2Y3B1LVx1MDAzZWFyY2guc2xiX3NoYWRvdywgXHUwMDI2b2xkX3ZwYSk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTc2NC1cdFx0aWYgKG9sZF92cGEucGlubmVkX2FkZHIpXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03NjgtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjc2OTpcdHNwaW5fdW5sb2NrKFx1MDAyNnZjcHUtXHUwMDNlYXJjaC52cGFfdXBkYXRlX2xvY2spO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03NzAtfVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM9Nzc2PXN0YXRpYyB1NjQgdmNvcmVfc3RvbGVuX3RpbWUoc3RydWN0IGt2bXBwY192Y29yZSAqdmMsIHU2NCBub3cpXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03ODAtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjc4MTpcdFdBUk5fT05fT05DRShjcHVfaGFzX2ZlYXR1cmUoQ1BVX0ZUUl9BUkNIXzMwMCkpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03ODItXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03OTEtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjc5MjpzdGF0aWMgdm9pZCBfX2t2bXBwY19jcmVhdGVfZHRsX2VudHJ5KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNzkzLVx0XHRcdFx0XHRzdHJ1Y3QgbHBwYWNhICp2cGEsXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjc5NDpcdFx0XHRcdFx0dW5zaWduZWQgaW50IHBjcHUsIHU2NCBub3csXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTc5NS1cdFx0XHRcdFx0dW5zaWduZWQgbG9uZyBzdG9sZW4pXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03OTgtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjc5OTpcdGR0ID0gdmNwdS1cdTAwM2VhcmNoLmR0bF9wdHI7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTgwMC1cbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTgwNS1cdGR0LVx1MDAzZXByZWVtcHRfcmVhc29uID0gMDtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODA2Olx0ZHQtXHUwMDNlcHJvY2Vzc29yX2lkID0gY3B1X3RvX2JlMTYocGNwdSAmIzQzOyB2Y3B1LVx1MDAzZWFyY2gucHRpZCk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjgwNzpcdGR0LVx1MDAzZWVucXVldWVfdG9fZGlzcGF0Y2hfdGltZSA9IGNwdV90b19iZTMyKHN0b2xlbik7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTgwOC1cdGR0LVx1MDAzZXJlYWR5X3RvX2VucXVldWVfdGltZSA9IDA7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTgwOS1cdGR0LVx1MDAzZXdhaXRpbmdfdG9fcmVhZHlfdGltZSA9IDA7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjgxMDpcdGR0LVx1MDAzZXRpbWViYXNlID0gY3B1X3RvX2JlNjQobm93KTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODExLVx0ZHQtXHUwMDNlZmF1bHRfYWRkciA9IDA7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjgxMjpcdGR0LVx1MDAzZXNycjAgPSBjcHVfdG9fYmU2NChrdm1wcGNfZ2V0X3BjKHZjcHUpKTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODEzOlx0ZHQtXHUwMDNlc3JyMSA9IGNwdV90b19iZTY0KHZjcHUtXHUwMDNlYXJjaC5zaHJlZ3MubXNyKTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODE0LVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04MTUtXHQmIzQzOyYjNDM7ZHQ7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjgxNjpcdGlmIChkdCA9PSB2Y3B1LVx1MDAzZWFyY2guZHRsLnBpbm5lZF9lbmQpXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjgxNzpcdFx0ZHQgPSB2Y3B1LVx1MDAzZWFyY2guZHRsLnBpbm5lZF9hZGRyO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4MTg6XHR2Y3B1LVx1MDAzZWFyY2guZHRsX3B0ciA9IGR0O1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04MTktXHQvKiBvcmRlciB3cml0aW5nICpkdCB2cy4gd3JpdGluZyB2cGEtXHUwMDNlZHRsX2lkeCAqL1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04MjAtXHRzbXBfd21iKCk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjgyMTpcdHZwYS1cdTAwM2VkdGxfaWR4ID0gY3B1X3RvX2JlNjQoJiM0MzsmIzQzO3ZjcHUtXHUwMDNlYXJjaC5kdGxfaW5kZXgpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04MjItXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjgyMzpcdC8qIHZjcHUtXHUwMDNlYXJjaC5kdGwuZGlydHkgaXMgc2V0IGJ5IHRoZSBjYWxsZXIgKi9cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODI0LX1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODI1LVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4MjY6c3RhdGljIHZvaWQga3ZtcHBjX3VwZGF0ZV92cGFfZGlzcGF0Y2goc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04MjctXHRcdFx0XHQgICAgICAgc3RydWN0IGt2bXBwY192Y29yZSAqdmMpXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04MzQtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjgzNTpcdHZwYSA9IHZjcHUtXHUwMDNlYXJjaC52cGEucGlubmVkX2FkZHI7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTgzNi1cdGlmICghdnBhKVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODQxLVx0Y29yZV9zdG9sZW4gPSB2Y29yZV9zdG9sZW5fdGltZSh2Yywgbm93KTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODQyOlx0c3RvbGVuID0gY29yZV9zdG9sZW4gLSB2Y3B1LVx1MDAzZWFyY2guc3RvbGVuX2xvZ2dlZDtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODQzOlx0dmNwdS1cdTAwM2VhcmNoLnN0b2xlbl9sb2dnZWQgPSBjb3JlX3N0b2xlbjtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODQ0Olx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2dmNwdS1cdTAwM2VhcmNoLnRiYWNjdF9sb2NrLCBmbGFncyk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjg0NTpcdHN0b2xlbiAmIzQzOz0gdmNwdS1cdTAwM2VhcmNoLmJ1c3lfc3RvbGVuO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4NDY6XHR2Y3B1LVx1MDAzZWFyY2guYnVzeV9zdG9sZW4gPSAwO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4NDc6XHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNnZjcHUtXHUwMDNlYXJjaC50YmFjY3RfbG9jaywgZmxhZ3MpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04NDgtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjg0OTpcdHZwYS1cdTAwM2VlbnF1ZXVlX2Rpc3BhdGNoX3RiID0gY3B1X3RvX2JlNjQoYmU2NF90b19jcHUodnBhLVx1MDAzZWVucXVldWVfZGlzcGF0Y2hfdGIpICYjNDM7IHN0b2xlbik7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTg1MC1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODUxOlx0X19rdm1wcGNfY3JlYXRlX2R0bF9lbnRyeSh2Y3B1LCB2cGEsIHZjLVx1MDAzZXBjcHUsIG5vdyAmIzQzOyBrdm1wcGNfZ2V0X3RiX29mZnNldCh2Y3B1KSwgc3RvbGVuKTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODUyLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4NTM6XHR2Y3B1LVx1MDAzZWFyY2gudnBhLmRpcnR5ID0gdHJ1ZTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODU0LX1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODU1LVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4NTY6c3RhdGljIHZvaWQga3ZtcHBjX3VwZGF0ZV92cGFfZGlzcGF0Y2hfcDkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04NTctXHRcdFx0XHQgICAgICAgc3RydWN0IGt2bXBwY192Y29yZSAqdmMsXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04NjMtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjg2NDpcdHZwYSA9IHZjcHUtXHUwMDNlYXJjaC52cGEucGlubmVkX2FkZHI7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTg2NS1cdGlmICghdnBhKVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODY4LVx0c3RvbGVuID0gdmMtXHUwMDNlc3RvbGVuX3RiO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4Njk6XHRzdG9sZW5fZGVsdGEgPSBzdG9sZW4gLSB2Y3B1LVx1MDAzZWFyY2guc3RvbGVuX2xvZ2dlZDtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODcwOlx0dmNwdS1cdTAwM2VhcmNoLnN0b2xlbl9sb2dnZWQgPSBzdG9sZW47XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTg3MS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODcyOlx0dnBhLVx1MDAzZWVucXVldWVfZGlzcGF0Y2hfdGIgPSBjcHVfdG9fYmU2NChzdG9sZW4pO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04NzMtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjg3NDpcdF9fa3ZtcHBjX2NyZWF0ZV9kdGxfZW50cnkodmNwdSwgdnBhLCB2Yy1cdTAwM2VwY3B1LCBub3csIHN0b2xlbl9kZWx0YSk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTg3NS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODc2Olx0dmNwdS1cdTAwM2VhcmNoLnZwYS5kaXJ0eSA9IHRydWU7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTg3Ny19XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTg3OC1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODc5Oi8qIFNlZSBpZiB0aGVyZSBpcyBhIGRvb3JiZWxsIGludGVycnVwdCBwZW5kaW5nIGZvciBhIHZjcHUgKi9cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODgwOnN0YXRpYyBib29sIGt2bXBwY19kb29yYmVsbF9wZW5kaW5nKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODgxLXtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTg4NC1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODg1Olx0aWYgKHZjcHUtXHUwMDNlYXJjaC5kb29yYmVsbF9yZXF1ZXN0KVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04ODYtXHRcdHJldHVybiB0cnVlO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4ODc6XHRpZiAoY3B1X2hhc19mZWF0dXJlKENQVV9GVFJfQVJDSF8zMDApKVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04ODgtXHRcdHJldHVybiBmYWxzZTtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTg5MC1cdCAqIEVuc3VyZSB0aGF0IHRoZSByZWFkIG9mIHZjb3JlLVx1MDAzZWRwZGVzIGNvbWVzIGFmdGVyIHRoZSByZWFkXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjg5MTpcdCAqIG9mIHZjcHUtXHUwMDNlZG9vcmJlbGxfcmVxdWVzdC4gIFRoaXMgYmFycmllciBtYXRjaGVzIHRoZVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04OTItXHQgKiBzbXBfd21iKCkgaW4ga3ZtcHBjX2d1ZXN0X2VudHJ5X2luamVjdCgpLlxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODk0LVx0c21wX3JtYigpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4OTU6XHR2YyA9IHZjcHUtXHUwMDNlYXJjaC52Y29yZTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODk2Olx0dGhyID0gdmNwdS1cdTAwM2V2Y3B1X2lkIC0gdmMtXHUwMDNlZmlyc3RfdmNwdWlkO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04OTctXHRyZXR1cm4gISEodmMtXHUwMDNlZHBkZXMgXHUwMDI2ICgxIFx1MDAzY1x1MDAzYyB0aHIpKTtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTg5OS1cblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA0OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwODY3CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogNTA3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRlYnVnZ2luZyBhIFR5cG9zcXVhdHRpbmcgQnVnIGluIE5lc3RlZCBWaXJ0dWFsaXphdGlvbiBDb2RlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgaW4gYGt2bWh2X3ZjcHVfZW50cnlfbmVzdGVkdjJgIGFuZCBpbW1lZGlhdGVseSBJIHNlZSBhIHJlZCBmbGFnLiBUaGUgY29tcGlsZXImIzM5O3MgY29tcGxhaW5pbmcgdGhhdCBgY3B1YCBpcyB1bmRlZmluZWQuIExldCYjMzk7cyB0cmFjZSBpdCBiYWNrIHRvIHRoZSBwYXRjaCBpbiBxdWVzdGlvbi4gQWgsIGhlcmUgaXQgaXM6CgpgYGBjCiYjNDM7CS8qIENoZWNrIGlmIHByaXZpbGVnZWQgZG9vciBiZWxsIHdhcyByZXF1ZXN0ZWQgYW5kIGhhbmRsZWQgKi8KJiM0MzsJaWYgKHZjcHUtJmd0O2FyY2gudmNvcmUtJmd0O2RwZGVzKSB7CiYjNDM7CQlrdm1odl9uZXN0ZWR2Ml9jYWNoZWRfcmVsb2FkKHZjcHUsIEtWTVBQQ19HU0lEX0RQREVTKTsKJiM0MzsJCWlmICh2Y3B1LSZndDthcmNoLnZjb3JlLSZndDtkcGRlcykKJiM0MzsJCQl2Y3B1LSZndDthcmNoLmRvb3JiZWxsX3JlcXVlc3QgfD0gdmNwdS0mZ3Q7YXJjaC52Y29yZS0mZ3Q7ZHBkZXM7CiYjNDM7CQllbHNlCiYjNDM7CQkJY3B1LSZndDthcmNoLmRvb3JiZWxsX3JlcXVlc3QgPSAwOwomIzQzOwl9IGVsc2UgewomIzQzOwkJdmNwdS0mZ3Q7YXJjaC5kb29yYmVsbF9yZXF1ZXN0ID0gMDsKJiM0MzsJfQpgYGAKClllcCwgdGhhdCYjMzk7cyBkZWZpbml0ZWx5IGEgdHlwby4gSXQgKnNob3VsZCogYmUgYHZjcHUtJmd0O2FyY2guZG9vcmJlbGxfcmVxdWVzdCA9IDA7YCBub3QgYGNwdS0mZ3Q7YXJjaC5kb29yYmVsbF9yZXF1ZXN0ID0gMDtgLiBJIGNhbiBpbW1lZGlhdGVseSB0ZWxsIHRoYXQmIzM5O3MgYW4gZXJyb3IuIFRoZSB2YXJpYWJsZSBgY3B1YCBpc24mIzM5O3QgZGVjbGFyZWQgd2l0aGluIHRoZSBzY29wZSBvZiBga3ZtaHZfdmNwdV9lbnRyeV9uZXN0ZWR2MmAuIExldCBtZSBxdWlja2x5IGNvbmZpcm0gYnkgY2hlY2tpbmcgdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24uCgpgYGBjCjQyNDk6CXN0YXRpYyBpbnQga3ZtaHZfdmNwdV9lbnRyeV9uZXN0ZWR2MihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCB0aW1lX2xpbWl0LAo0MjUwOgkJCQkJICAgICB1bnNpZ25lZCBsb25nIGxwY3IsIHU2NCAqdGIpCjQyNTE6CXsKNDI1MjoJCXN0cnVjdCBrdm1odl9uZXN0ZWR2Ml9pbyAqaW87CjQyNTM6CQl1bnNpZ25lZCBsb25nIG1zciwgaTsKNDI1NDoJCWludCB0cmFwOwo0MjU1OgkJbG9uZyByYzsKYGBgCgpOb3BlLCBkZWZpbml0ZWx5IG5vIGBjcHVgIHZhcmlhYmxlIGRlY2xhcmVkIHRoZXJlLiBUaGUgY29tcGlsZXIgc2hvdWxkIGJlIHRocm93aW5nIGEgZml0LiBOb3csIHRoZSBxdWVzdGlvbiBpcywgaWYgaXQmIzM5O3MgYnJva2VuIGFuZCB3b24mIzM5O3QgY29tcGlsZSwgZG9lcyBpdCBldmVuICptYWtlIHNlbnNlKiB0byBmdXp6IHRoaXM/IFdlbGwsIHRoZSBwcm9tcHQgc2F5cyB0aGUgY2hhbmdlcyBoYXZlIGFscmVhZHkgYmVlbiBhcHBsaWVkLCBtZWFuaW5nIHRoZSBjb2RlIG11c3QgaGF2ZSAqc29tZWhvdyogY29tcGlsZWQuCgpMZXQgbWUgdGhpbmsgZm9yIGEgc2Vjb25kLi4uIGNvdWxkIGBjcHVgIGJlIGEgbWFjcm8/IFRoYXQmIzM5O3MgdGhlIG9ubHkgd2F5IEkgY2FuIHNlZSB0aGlzIGFjdHVhbGx5IHdvcmtpbmcuIFNvLCBJIG5lZWQgdG8gY2hlY2sgaWYgYGNwdWAgaXMgZGVmaW5lZCBhcyBhIG1hY3JvIGluIHRoaXMgY29udGV4dC4gSWYgaXQmIzM5O3Mgbm90IGEgbWFjcm8sIHRoZW4gaXQgaXMgYSBkZWFkIGVuZC4gV2UgbmVlZCB0byBhc3Nlc3MgaWYgdGhpcyBtYWtlcyB0aGUgY29tbWl0IHVzZWxlc3MgZm9yIGEgZnV6emluZyB0ZXN0LiBJdCYjMzk7cyBhIHRyaXZpYWwgZXJyb3IgaW4gdGhlIGNhc2UgdGhhdCBpdCBkb2VzIG5vdCBjb21waWxlIGFzIGlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNDo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDsjZGVmaW5lIGNwdSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvcG93ZXJwYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9wb3dlcnBjL2Jvb3QvbGliZmR0X2Vudi5oPTE4PXR5cGVkZWYgX19iZTY0IGZkdDY0X3Q7XG4tLVxuYXJjaC9wb3dlcnBjL2Jvb3QvbGliZmR0X2Vudi5oLTIwLSNkZWZpbmUgZmR0MTZfdG9fY3B1KHgpXHRcdGJlMTZfdG9fY3B1KHgpXG5hcmNoL3Bvd2VycGMvYm9vdC9saWJmZHRfZW52Lmg6MjE6I2RlZmluZSBjcHVfdG9fZmR0MTYoeClcdFx0Y3B1X3RvX2JlMTYoeClcbmFyY2gvcG93ZXJwYy9ib290L2xpYmZkdF9lbnYuaC0yMi0jZGVmaW5lIGZkdDMyX3RvX2NwdSh4KVx0XHRiZTMyX3RvX2NwdSh4KVxuYXJjaC9wb3dlcnBjL2Jvb3QvbGliZmR0X2Vudi5oOjIzOiNkZWZpbmUgY3B1X3RvX2ZkdDMyKHgpXHRcdGNwdV90b19iZTMyKHgpXG5hcmNoL3Bvd2VycGMvYm9vdC9saWJmZHRfZW52LmgtMjQtI2RlZmluZSBmZHQ2NF90b19jcHUoeClcdFx0YmU2NF90b19jcHUoeClcbmFyY2gvcG93ZXJwYy9ib290L2xpYmZkdF9lbnYuaDoyNTojZGVmaW5lIGNwdV90b19mZHQ2NCh4KVx0XHRjcHVfdG9fYmU2NCh4KVxuYXJjaC9wb3dlcnBjL2Jvb3QvbGliZmR0X2Vudi5oLTI2LVxuLS1cbmFyY2gvcG93ZXJwYy9ib290L29mLmg9Mjc9dHlwZWRlZiB1NjRcdFx0XHRfX2JlNjQ7XG4tLVxuYXJjaC9wb3dlcnBjL2Jvb3Qvb2YuaC0yOS0jaWZkZWYgX19MSVRUTEVfRU5ESUFOX19cbmFyY2gvcG93ZXJwYy9ib290L29mLmg6MzA6I2RlZmluZSBjcHVfdG9fYmUxNih4KSBzd2FiMTYoeClcbmFyY2gvcG93ZXJwYy9ib290L29mLmgtMzEtI2RlZmluZSBiZTE2X3RvX2NwdSh4KSBzd2FiMTYoeClcbmFyY2gvcG93ZXJwYy9ib290L29mLmg6MzI6I2RlZmluZSBjcHVfdG9fYmUzMih4KSBzd2FiMzIoeClcbmFyY2gvcG93ZXJwYy9ib290L29mLmgtMzMtI2RlZmluZSBiZTMyX3RvX2NwdSh4KSBzd2FiMzIoeClcbmFyY2gvcG93ZXJwYy9ib290L29mLmg6MzQ6I2RlZmluZSBjcHVfdG9fYmU2NCh4KSBzd2FiNjQoeClcbmFyY2gvcG93ZXJwYy9ib290L29mLmgtMzUtI2RlZmluZSBiZTY0X3RvX2NwdSh4KSBzd2FiNjQoeClcbmFyY2gvcG93ZXJwYy9ib290L29mLmgtMzYtI2Vsc2VcbmFyY2gvcG93ZXJwYy9ib290L29mLmg6Mzc6I2RlZmluZSBjcHVfdG9fYmUxNih4KSAoeClcbmFyY2gvcG93ZXJwYy9ib290L29mLmgtMzgtI2RlZmluZSBiZTE2X3RvX2NwdSh4KSAoeClcbmFyY2gvcG93ZXJwYy9ib290L29mLmg6Mzk6I2RlZmluZSBjcHVfdG9fYmUzMih4KSAoeClcbmFyY2gvcG93ZXJwYy9ib290L29mLmgtNDAtI2RlZmluZSBiZTMyX3RvX2NwdSh4KSAoeClcbmFyY2gvcG93ZXJwYy9ib290L29mLmg6NDE6I2RlZmluZSBjcHVfdG9fYmU2NCh4KSAoeClcbmFyY2gvcG93ZXJwYy9ib290L29mLmgtNDItI2RlZmluZSBiZTY0X3RvX2NwdSh4KSAoeClcbi0tXG5hcmNoL3Bvd2VycGMvYm9vdC94el9jb25maWcuaD0xND1zdGF0aWMgaW5saW5lIHVpbnQzMl90IHN3YWIzMnAodm9pZCAqcClcbi0tXG5hcmNoL3Bvd2VycGMvYm9vdC94el9jb25maWcuaC0yMi0jZGVmaW5lIGdldF9sZTMyKHApICgqKCh1aW50MzJfdCAqKSAocCkpKVxuYXJjaC9wb3dlcnBjL2Jvb3QveHpfY29uZmlnLmg6MjM6I2RlZmluZSBjcHVfdG9fYmUzMih4KSBzd2FiMzIoeClcbmFyY2gvcG93ZXJwYy9ib290L3h6X2NvbmZpZy5oLTI0LXN0YXRpYyBpbmxpbmUgdTMyIGJlMzJfdG9fY3B1cChjb25zdCB1MzIgKnApXG4tLVxuYXJjaC9wb3dlcnBjL2Jvb3QveHpfY29uZmlnLmgtMjktI2RlZmluZSBnZXRfbGUzMihwKSBzd2FiMzJwKHApXG5hcmNoL3Bvd2VycGMvYm9vdC94el9jb25maWcuaDozMDojZGVmaW5lIGNwdV90b19iZTMyKHgpICh4KVxuYXJjaC9wb3dlcnBjL2Jvb3QveHpfY29uZmlnLmgtMzEtc3RhdGljIGlubGluZSB1MzIgYmUzMl90b19jcHVwKGNvbnN0IHUzMiAqcClcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vY3B1ZmVhdHVyZS5oLTI2LVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2NwdWZlYXR1cmUuaDoyNzojZGVmaW5lIGNwdV9mZWF0dXJlKHgpXHRcdCh4KVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2NwdWZlYXR1cmUuaC0yOC1cbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vY3B1dGltZS5oLTI0LSNpZmRlZiBfX0tFUk5FTF9fXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vY3B1dGltZS5oOjI1OiNkZWZpbmUgY3B1dGltZV90b19uc2VjcyhjcHV0aW1lKSB0Yl90b19ucyhjcHV0aW1lKVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2NwdXRpbWUuaC0yNi1cbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vc21wLmg9MTM4PWV4dGVybiBib29sIHRocmVhZF9ncm91cF9zaGFyZXNfbDM7XG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vc21wLmgtMTM5LVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3NtcC5oOjE0MDojZGVmaW5lIGNwdV9zbXRfbWFzayBjcHVfc210X21hc2tcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9zbXAuaC0xNDEtI2lmZGVmIENPTkZJR19TQ0hFRF9TTVRcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vdG9wb2xvZ3kuaD05PXN0cnVjdCBkcm1lbV9sbWI7XG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3RvcG9sb2d5LmgtMjAtXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vdG9wb2xvZ3kuaDoyMTojZGVmaW5lIGNwdW1hc2tfb2Zfbm9kZShub2RlKSAoKG5vZGUpID09IC0xID9cdFx0XHRcdFxcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vdG9wb2xvZ3kuaC0yMi1cdFx0XHQgICAgICAgY3B1X2FsbF9tYXNrIDpcdFx0XHRcdFxcXG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3RvcG9sb2d5Lmg9Mjk9c3RhdGljIGlubGluZSBpbnQgcGNpYnVzX3RvX25vZGUoc3RydWN0IHBjaV9idXMgKmJ1cylcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vdG9wb2xvZ3kuaC0zNC1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS90b3BvbG9neS5oOjM1OiNkZWZpbmUgY3B1bWFza19vZl9wY2lidXMoYnVzKVx0KHBjaWJ1c190b19ub2RlKGJ1cykgPT0gLTEgP1x0XHRcXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3RvcG9sb2d5LmgtMzYtXHRcdFx0XHQgY3B1X2FsbF9tYXNrIDpcdFx0XHRcdFxcXG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3Zkc28vcHJvY2Vzc29yLmgtMjctI2lmZGVmIENPTkZJR19QUEM2NFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3Zkc28vcHJvY2Vzc29yLmg6Mjg6I2RlZmluZSBjcHVfcmVsYXgoKVx0XHRcdFx0XHRcdFx0XFxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS92ZHNvL3Byb2Nlc3Nvci5oLTI5LVx0YXNtIHZvbGF0aWxlKEFTTV9GVFJfSUZDTFIoXHRcdFx0XHRcdFxcXG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3Zkc28vcHJvY2Vzc29yLmgtMzUtI2Vsc2VcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS92ZHNvL3Byb2Nlc3Nvci5oOjM2OiNkZWZpbmUgY3B1X3JlbGF4KClcdGJhcnJpZXIoKVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3Zkc28vcHJvY2Vzc29yLmgtMzctI2VuZGlmXG4tLVxuYXJjaC9wb3dlcnBjL2tleGVjL2NvcmUuYy0yNC1cbmFyY2gvcG93ZXJwYy9rZXhlYy9jb3JlLmM6MjU6I2RlZmluZSBjcHVfdG9fYmVfdWxvbmcgX19QQVNURShjcHVfdG9fYmUsIEJJVFNfUEVSX0xPTkcpXG5hcmNoL3Bvd2VycGMva2V4ZWMvY29yZS5jLTI2LSNkZWZpbmUgX19iZV93b3JkIF9fUEFTVEUoX19iZSwgQklUU19QRVJfTE9ORylcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDQ6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM3NjYKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiA2NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipEZWJ1Z2dpbmcgYSBQb3RlbnRpYWwgQ29tcGlsYXRpb24gRmFpbHVyZSoqCgpPa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBJIGp1c3QgcmVhbGl6ZWQgdGhhdCB0aGlzIHBhdGNoIEkmIzM5O20gbG9va2luZyBhdCBsaWtlbHkgd29uJiMzOTt0IGNvbXBpbGUuIEkgd2FzIHRoaW5raW5nIGBjcHVgIHdhcyBhIG1hY3JvLCBidXQgY2xlYXJseSwgaXQmIzM5O3Mgbm90LiBUaGF0JiMzOTtzIGEgbWFqb3Igb3ZlcnNpZ2h0IG9uIG15IHBhcnQuIEkgc2hvdWxkIGhhdmUgY2F1Z2h0IHRoYXQgZWFybGllci4KCkJ1dCB3YWl0IGEgbWludXRlLCBiZWZvcmUgSSBjb21wbGV0ZWx5IGRpc21pc3MgdGhpcywgbGV0JiMzOTtzIG5vdCBqdW1wIHRvIGNvbmNsdXNpb25zLiBJdCYjMzk7cyBwb3NzaWJsZSwgYWxiZWl0IHVubGlrZWx5LCB0aGF0IGBjcHVgIGlzIGRlY2xhcmVkIGFzIGEgZ2xvYmFsIHZhcmlhYmxlIHNvbWV3aGVyZS4gUGVyaGFwcyBpdCYjMzk7cyBkZWZpbmVkIHdpdGhpbiB0aGlzIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBjb250ZXh0LCBvciBtYXliZSBpdCYjMzk7cyBwdWxsZWQgaW4gZnJvbSBhbm90aGVyIGhlYWRlci4gTGV0IG1lIGp1c3QgcXVpY2tseSBjaGVjayB3aXRoaW4gYGFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmNgIHRvIHNlZSBpZiB0aGF0JiMzOTtzIHRoZSBjYXNlLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgZGVmaW5pdGl2ZSBhbnN3ZXIgYmVmb3JlIEkgc3RhcnQgcmV3cml0aW5nIGNvZGUuIEkgbmVlZCB0byBiZSBzdXJlIEkmIzM5O20gbm90IG1pc3Npbmcgc29tZXRoaW5nIG9idmlvdXMgYmVmb3JlIEkgcmFpc2UgYSBmbGFnLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNDo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0cnVjdCBrdm1fdmNwdSBcXCpjcHUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDQ6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQwODIKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MgcmVuZGVyZWQgaW4gdGhlIGZpcnN0IHBlcnNvbiwgYXNzdW1pbmcgSSYjMzk7bSBhbiBleHBlcnQ6CgoqKkludmVzdGlnYXRpbmcgR2xvYmFsIFZhcmlhYmxlIFNjb3BlIGluIFBvd2VyUEMgS1ZNIENvZGUqKgoKQWxyaWdodCwgYmVmb3JlIEkgZGl2ZSBpbnRvIHRoZSBoZWFydCBvZiB0aGlzIHByb2JsZW0sIGxldCYjMzk7cyBqdXN0IG1ha2UgYWJzb2x1dGVseSBzdXJlIHdlIGhhdmVuJiMzOTt0IGdvdCBhIGdsb2JhbCB2YXJpYWJsZSBpc3N1ZSBjYXVzaW5nIHRoZSB0cm91YmxlLiBJIG5lZWQgdG8gcXVpY2tseSB2ZXJpZnkgdGhlIHNjb3BlIG9mIHRoZSBgY3B1YCB2YXJpYWJsZSB3aXRoaW4gYGFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmNgLiBJdCYjMzk7cyBhIGZ1bmRhbWVudGFsIHN0ZXA7IEkgY2FuJiMzOTt0IGFmZm9yZCB0byBvdmVybG9vayBhIHNpbXBsZSBzY29wZSBwcm9ibGVtIGFuZCBzdGFydCBjaGFzaW5nIG15IHRhaWwgd2l0aCBjb21wbGV4IGRlYnVnZ2luZyB0ZWNobmlxdWVzIGlmIGl0JiMzOTtzIG5vdCBhYnNvbHV0ZWx5IG5lY2Vzc2FyeS4gTGV0IG1lIHB1bGwgdXAgdGhhdCBmaWxlIGFuZCBkb3VibGUtY2hlY2sgaXRzIGRlY2xhcmF0aW9uLiBHbG9iYWwgdmFyaWFibGVzLCB3aGlsZSBzb21ldGltZXMgbmVjZXNzYXJ5LCBjYW4gYmUgYSBzb3VyY2Ugb2YgaGVhZGFjaGVzIGlmIG5vdCBwcm9wZXJseSBtYW5hZ2VkLCBzbyBJIG5lZWQgdG8ga25vdyBkZWZpbml0aXZlbHkgaWYgdGhpcyBpbnN0YW5jZSBpcyBpbnRlbmRlZCB0byBiZSBnbG9iYWwsIGFuZCBpZiBpdCYjMzk7cyBiZWluZyBhY2Nlc3NlZCBpbiB0aGUgYXBwcm9wcmlhdGUgbWFubmVyIGJ5IG90aGVyIGZ1bmN0aW9ucy9maWxlcy4gSSBuZWVkIHRvIGlkZW50aWZ5IHdoZXJlIGBjcHVgIGlzICpkZWNsYXJlZCouIFRoZW4sIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBhY2Nlc3MgZnJvbSBhbnkgb3RoZXIgZmlsZXMuIExldCYjMzk7cyBkbyB0aGlzIG1ldGhvZGljYWxseSBhbmQgc2VlIHdoYXQgd2UgY29tZSB1cCB3aXRoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNDo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjcHUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAzNTE4IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTI5LSNpbmNsdWRlIFx1MDAzY2xpbnV4L2Fub25faW5vZGVzLmhcdTAwM2VcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MzA6I2luY2x1ZGUgXHUwMDNjbGludXgvY3B1LmhcdTAwM2VcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MzE6I2luY2x1ZGUgXHUwMDNjbGludXgvY3B1bWFzay5oXHUwMDNlXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTMyLSNpbmNsdWRlIFx1MDAzY2xpbnV4L3NwaW5sb2NrLmhcdTAwM2Vcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTU0LSNpbmNsdWRlIFx1MDAzY2FzbS9kaXNhc3NlbWJsZS5oXHUwMDNlXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjU1OiNpbmNsdWRlIFx1MDAzY2FzbS9jcHV0YWJsZS5oXHUwMDNlXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTU2LSNpbmNsdWRlIFx1MDAzY2FzbS9jYWNoZWZsdXNoLmhcdTAwM2Vcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTY1LSNpbmNsdWRlIFx1MDAzY2FzbS9wcm9jZXNzb3IuaFx1MDAzZVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo2NjojaW5jbHVkZSBcdTAwM2Nhc20vY3B1dGhyZWFkcy5oXHUwMDNlXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTY3LSNpbmNsdWRlIFx1MDAzY2FzbS9wYWdlLmhcdTAwM2Vcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jPTEzMz1NT0RVTEVfUEFSTV9ERVNDKG5lc3RlZCwgXCYjMzQ7RW5hYmxlIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiAob25seSBvbiBQT1dFUjkpXCYjMzQ7KTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMTM0LVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoxMzU6c3RhdGljIGludCBrdm1wcGNfaHZfc2V0dXBfaHRhYl9ybWEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMTM2LVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM9MTUxPXN0YXRpYyB1bnNpZ25lZCBsb25nIHA4X3J3bXJfdmFsdWVzW01BWF9TTVRfVEhSRUFEUyAmIzQzOyAxXSA9IHtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTE2Mi1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MTYzOnN0YXRpYyBpbmxpbmUgc3RydWN0IGt2bV92Y3B1ICpuZXh0X3J1bm5hYmxlX3RocmVhZChzdHJ1Y3Qga3ZtcHBjX3Zjb3JlICp2YyxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMTY0LVx0XHRpbnQgKmlwKVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMTY2LVx0aW50IGkgPSAqaXA7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjE2NzpcdHN0cnVjdCBrdm1fdmNwdSAqdmNwdTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMTY4LVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0xNjktXHR3aGlsZSAoJiM0MzsmIzQzO2kgXHUwMDNjIE1BWF9TTVRfVEhSRUFEUykge1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoxNzA6XHRcdHZjcHUgPSBSRUFEX09OQ0UodmMtXHUwMDNlcnVubmFibGVfdGhyZWFkc1tpXSk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjE3MTpcdFx0aWYgKHZjcHUpIHtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMTcyLVx0XHRcdCppcCA9IGk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjE3MzpcdFx0XHRyZXR1cm4gdmNwdTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMTc0LVx0XHR9XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0xNzktLyogVXNlZCB0byB0cmF2ZXJzZSB0aGUgbGlzdCBvZiBydW5uYWJsZSB0aHJlYWRzIGZvciBhIGdpdmVuIHZjb3JlICovXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjE4MDojZGVmaW5lIGZvcl9lYWNoX3J1bm5hYmxlX3RocmVhZChpLCB2Y3B1LCB2YykgXFxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MTgxOlx0Zm9yIChpID0gLTE7ICh2Y3B1ID0gbmV4dF9ydW5uYWJsZV90aHJlYWQodmMsIFx1MDAyNmkpKTsgKVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0xODItXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjE4MzpzdGF0aWMgYm9vbCBrdm1wcGNfaXBpX3RocmVhZChpbnQgY3B1KVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0xODQte1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMTkwLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoxOTE6XHQvKiBPbiBQT1dFUjkgd2UgY2FuIHVzZSBtc2dzbmQgdG8gSVBJIGFueSBjcHUgKi9cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MTkyOlx0aWYgKGNwdV9oYXNfZmVhdHVyZShDUFVfRlRSX0FSQ0hfMzAwKSkge1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoxOTM6XHRcdG1zZyB8PSBnZXRfaGFyZF9zbXBfcHJvY2Vzc29yX2lkKGNwdSk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTE5NC1cdFx0c21wX21iKCk7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0xOTktXHQvKiBPbiBQT1dFUjggZm9yIElQSXMgdG8gdGhyZWFkcyBpbiB0aGUgc2FtZSBjb3JlLCB1c2UgbXNnc25kICovXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjIwMDpcdGlmIChjcHVfaGFzX2ZlYXR1cmUoQ1BVX0ZUUl9BUkNIXzIwN1MpKSB7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTIwMS1cdFx0cHJlZW1wdF9kaXNhYmxlKCk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjIwMjpcdFx0aWYgKGNwdV9maXJzdF90aHJlYWRfc2libGluZyhjcHUpID09XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjIwMzpcdFx0ICAgIGNwdV9maXJzdF90aHJlYWRfc2libGluZyhzbXBfcHJvY2Vzc29yX2lkKCkpKSB7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjIwNDpcdFx0XHRtc2cgfD0gY3B1X3RocmVhZF9pbl9jb3JlKGNwdSk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTIwNS1cdFx0XHRzbXBfbWIoKTtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTIxMy0jaWYgZGVmaW5lZChDT05GSUdfUFBDX0lDUF9OQVRJVkUpIFx1MDAyNlx1MDAyNiBkZWZpbmVkKENPTkZJR19TTVApXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjIxNDpcdGlmIChjcHUgXHUwMDNlPSAwIFx1MDAyNlx1MDAyNiBjcHUgXHUwMDNjIG5yX2NwdV9pZHMpIHtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjE1Olx0XHRpZiAocGFjYV9wdHJzW2NwdV0tXHUwMDNla3ZtX2hzdGF0ZS54aWNzX3BoeXMpIHtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjE2Olx0XHRcdHhpY3Nfd2FrZV9jcHUoY3B1KTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjE3LVx0XHRcdHJldHVybiB0cnVlO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yMTgtXHRcdH1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjE5Olx0XHRvcGFsX2ludF9zZXRfbWZycihnZXRfaGFyZF9zbXBfcHJvY2Vzc29yX2lkKGNwdSksIElQSV9QUklPUklUWSk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTIyMC1cdFx0cmV0dXJuIHRydWU7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yMjYtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjIyNzpzdGF0aWMgdm9pZCBrdm1wcGNfZmFzdF92Y3B1X2tpY2tfaHYoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yMjgte1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyMjk6XHRpbnQgY3B1O1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yMzAtXHRzdHJ1Y3QgcmN1d2FpdCAqd2FpdHA7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yMzMtXHQgKiByY3V3YWl0X3dha2VfdXAgY29udGFpbnMgc21wX21iKCkgd2hpY2ggb3JkZXJzIHByaW9yIHN0b3JlcyB0aGF0XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjIzNDpcdCAqIGNyZWF0ZSBwZW5kaW5nIHdvcmsgdnMgYmVsb3cgbG9hZHMgb2YgY3B1IGZpZWxkcy4gVGhlIG90aGVyIHNpZGVcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjM1Olx0ICogaXMgdGhlIGJhcnJpZXIgaW4gdmNwdSBydW4gdGhhdCBvcmRlcnMgc2V0dGluZyB0aGUgY3B1IGZpZWxkcyB2c1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yMzYtXHQgKiB0ZXN0aW5nIGZvciBwZW5kaW5nIHdvcmsuXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yMzgtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjIzOTpcdHdhaXRwID0ga3ZtX2FyY2hfdmNwdV9nZXRfd2FpdCh2Y3B1KTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjQwLVx0aWYgKHJjdXdhaXRfd2FrZV91cCh3YWl0cCkpXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjI0MTpcdFx0JiM0MzsmIzQzO3ZjcHUtXHUwMDNlc3RhdC5nZW5lcmljLmhhbHRfd2FrZXVwO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yNDItXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjI0MzpcdGNwdSA9IFJFQURfT05DRSh2Y3B1LVx1MDAzZWFyY2gudGhyZWFkX2NwdSk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjI0NDpcdGlmIChjcHUgXHUwMDNlPSAwIFx1MDAyNlx1MDAyNiBrdm1wcGNfaXBpX3RocmVhZChjcHUpKVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yNDUtXHRcdHJldHVybjtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTI0Ny1cdC8qIENQVSBwb2ludHMgdG8gdGhlIGZpcnN0IHRocmVhZCBvZiB0aGUgY29yZSAqL1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyNDg6XHRjcHUgPSB2Y3B1LVx1MDAzZWNwdTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjQ5Olx0aWYgKGNwdSBcdTAwM2U9IDAgXHUwMDI2XHUwMDI2IGNwdSBcdTAwM2MgbnJfY3B1X2lkcyBcdTAwMjZcdTAwMjYgY3B1X29ubGluZShjcHUpKVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyNTA6XHRcdHNtcF9zZW5kX3Jlc2NoZWR1bGUoY3B1KTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjUxLX1cbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTI1My0vKlxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyNTQ6ICogV2UgdXNlIHRoZSB2Y3B1X2xvYWQvcHV0IGZ1bmN0aW9ucyB0byBtZWFzdXJlIHN0b2xlbiB0aW1lLlxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yNTUtICpcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjU2OiAqIFN0b2xlbiB0aW1lIGlzIGNvdW50ZWQgYXMgdGltZSB3aGVuIGVpdGhlciB0aGUgdmNwdSBpcyBhYmxlIHRvXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTI1Ny0gKiBydW4gYXMgcGFydCBvZiBhIHZpcnR1YWwgY29yZSwgYnV0IHRoZSB0YXNrIHJ1bm5pbmcgdGhlIHZjb3JlXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjI1ODogKiBpcyBwcmVlbXB0ZWQgb3Igc2xlZXBpbmcsIG9yIHdoZW4gdGhlIHZjcHUgbmVlZHMgc29tZXRoaW5nIGRvbmVcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjU5OiAqIGluIHRoZSBrZXJuZWwgYnkgdGhlIHRhc2sgcnVubmluZyB0aGUgdmNwdSwgYnV0IHRoYXQgdGFzayBpc1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yNjAtICogcHJlZW1wdGVkIG9yIHNsZWVwaW5nLiAgVGhvc2UgdHdvIHRoaW5ncyBoYXZlIHRvIGJlIGNvdW50ZWRcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjYxOiAqIHNlcGFyYXRlbHksIHNpbmNlIG9uZSBvZiB0aGUgdmNwdSB0YXNrcyB3aWxsIHRha2Ugb24gdGhlIGpvYlxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyNjI6ICogb2YgcnVubmluZyB0aGUgY29yZSwgYW5kIHRoZSBvdGhlciB2Y3B1IHRhc2tzIGluIHRoZSB2Y29yZSB3aWxsXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTI2My0gKiBzbGVlcCB3YWl0aW5nIGZvciBpdCB0byBkbyB0aGF0LCBidXQgdGhhdCBzbGVlcCBzaG91bGRuJiMzOTt0IGNvdW50XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yNjUtICpcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjY2OiAqIEhlbmNlIHdlIGFjY3VtdWxhdGUgc3RvbGVuIHRpbWUgd2hlbiB0aGUgdmNwdSBjYW4gcnVuIGFzIHBhcnQgb2ZcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjY3OiAqIGEgdmNvcmUgdXNpbmcgdmMtXHUwMDNlc3RvbGVuX3RiLCBhbmQgdGhlIHN0b2xlbiB0aW1lIHdoZW4gdGhlIHZjcHVcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjY4LSAqIG5lZWRzIGl0cyB0YXNrIHRvIGRvIG90aGVyIHRoaW5ncyBpbiB0aGUga2VybmVsIChmb3IgZXhhbXBsZSxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjY5LSAqIHNlcnZpY2UgYSBwYWdlIGZhdWx0KSBpbiBidXN5X3N0b2xlbi4gIFdlIGRvbiYjMzk7dCBhY2N1bXVsYXRlXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjI3MDogKiBzdG9sZW4gdGltZSBmb3IgYSB2Y29yZSB3aGVuIGl0IGlzIGluYWN0aXZlLCBvciBmb3IgYSB2Y3B1XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTI3MS0gKiB3aGVuIGl0IGlzIGluIHN0YXRlIFJVTk5JTkcgb3IgTk9UUkVBRFkuICBOT1RSRUFEWSBpcyBhIGJpdCBvZlxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyNzI6ICogYSBtaXNub21lcjsgaXQgbWVhbnMgdGhhdCB0aGUgdmNwdSB0YXNrIGlzIG5vdCBleGVjdXRpbmcgaW5cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjczLSAqIHRoZSBLVk1fVkNQVV9SVU4gaW9jdGwsIGkuZS4gaXQgaXMgaW4gdXNlcnNwYWNlIG9yIGVsc2V3aGVyZSBpblxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yNzQtICogdGhlIGtlcm5lbC4gIFdlIGRvbiYjMzk7dCBoYXZlIGFueSB3YXkgb2YgZGl2aWRpbmcgdXAgdGhhdCB0aW1lXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjI3NTogKiBiZXR3ZWVuIHRpbWUgdGhhdCB0aGUgdmNwdSBpcyBnZW51aW5lbHkgc3RvcHBlZCwgdGltZSB0aGF0XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjI3NjogKiB0aGUgdGFzayBpcyBhY3RpdmVseSB3b3JraW5nIG9uIGJlaGFsZiBvZiB0aGUgdmNwdSwgYW5kIHRpbWVcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjc3LSAqIHRoYXQgdGhlIHRhc2sgaXMgcHJlZW1wdGVkLCBzbyB3ZSBkb24mIzM5O3QgY291bnQgYW55IG9mIGl0IGFzXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yODUtICpcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6Mjg2OiAqIFRoZSBQT1dFUjkgcGF0aCBpcyBzaW1wbGVyLCBvbmUgdmNwdSBwZXIgdmlydHVhbCBjb3JlIHNvIHRoZVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyODc6ICogZm9ybWVyIGNhc2UgZG9lcyBub3QgZXhpc3QuIElmIGEgdmNwdSBpcyBwcmVlbXB0ZWQgd2hlbiBpdCBpc1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yODgtICogQlVTWV9JTl9IT1NUIGFuZCBub3QgY2VkZWQgb3Igb3RoZXJ3aXNlIGJsb2NrZWQsIHRoZW4gYWNjdW11bGF0ZVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM9MjkzPXN0YXRpYyB2b2lkIGt2bXBwY19jb3JlX3N0YXJ0X3N0b2xlbihzdHJ1Y3Qga3ZtcHBjX3Zjb3JlICp2YywgdTY0IHRiKVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjk2LVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyOTc6XHRXQVJOX09OX09OQ0UoY3B1X2hhc19mZWF0dXJlKENQVV9GVFJfQVJDSF8zMDApKTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjk4LVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM9MzA0PXN0YXRpYyB2b2lkIGt2bXBwY19jb3JlX2VuZF9zdG9sZW4oc3RydWN0IGt2bXBwY192Y29yZSAqdmMsIHU2NCB0Yilcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTMwNy1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MzA4Olx0V0FSTl9PTl9PTkNFKGNwdV9oYXNfZmVhdHVyZShDUFVfRlRSX0FSQ0hfMzAwKSk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTMwOS1cbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTMxNy1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MzE4OnN0YXRpYyB2b2lkIGt2bXBwY19jb3JlX3ZjcHVfbG9hZF9odihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGludCBjcHUpXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTMxOS17XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjMyMDpcdHN0cnVjdCBrdm1wcGNfdmNvcmUgKnZjID0gdmNwdS1cdTAwM2VhcmNoLnZjb3JlO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0zMjEtXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzIzLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzozMjQ6XHRpZiAoY3B1X2hhc19mZWF0dXJlKENQVV9GVFJfQVJDSF8zMDApKSB7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjMyNTpcdFx0aWYgKHZjcHUtXHUwMDNlYXJjaC5idXN5X3ByZWVtcHQgIT0gVEJfTklMKSB7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjMyNjpcdFx0XHRXQVJOX09OX09OQ0UodmNwdS1cdTAwM2VhcmNoLnN0YXRlICE9IEtWTVBQQ19WQ1BVX0JVU1lfSU5fSE9TVCk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjMyNzpcdFx0XHR2Yy1cdTAwM2VzdG9sZW5fdGIgJiM0Mzs9IG1mdGIoKSAtIHZjcHUtXHUwMDNlYXJjaC5idXN5X3ByZWVtcHQ7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjMyODpcdFx0XHR2Y3B1LVx1MDAzZWFyY2guYnVzeV9wcmVlbXB0ID0gVEJfTklMO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0zMjktXHRcdH1cbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTMzNy1cdCAqIGJlY2F1c2Ugb25seSB0aGlzIHRhc2sgZXZlciBzZXRzIHZjLVx1MDAzZXJ1bm5lciB0byB0aGlzXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjMzODpcdCAqIHZjcHUsIGFuZCBvbmNlIGl0IGlzIHNldCB0byB0aGlzIHZjcHUsIG9ubHkgdGhpcyB0YXNrXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTMzOS1cdCAqIGV2ZXIgc2V0cyBpdCB0byBOVUxMLlxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0zNDAtXHQgKi9cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MzQxOlx0aWYgKHZjLVx1MDAzZXJ1bm5lciA9PSB2Y3B1IFx1MDAyNlx1MDAyNiB2Yy1cdTAwM2V2Y29yZV9zdGF0ZSBcdTAwM2U9IFZDT1JFX1NMRUVQSU5HKVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0zNDItXHRcdGt2bXBwY19jb3JlX2VuZF9zdG9sZW4odmMsIG5vdyk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTM0My1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MzQ0Olx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2dmNwdS1cdTAwM2VhcmNoLnRiYWNjdF9sb2NrLCBmbGFncyk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjM0NTpcdGlmICh2Y3B1LVx1MDAzZWFyY2guc3RhdGUgPT0gS1ZNUFBDX1ZDUFVfQlVTWV9JTl9IT1NUIFx1MDAyNlx1MDAyNlxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzozNDY6XHQgICAgdmNwdS1cdTAwM2VhcmNoLmJ1c3lfcHJlZW1wdCAhPSBUQl9OSUwpIHtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MzQ3Olx0XHR2Y3B1LVx1MDAzZWFyY2guYnVzeV9zdG9sZW4gJiM0Mzs9IG5vdyAtIHZjcHUtXHUwMDNlYXJjaC5idXN5X3ByZWVtcHQ7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjM0ODpcdFx0dmNwdS1cdTAwM2VhcmNoLmJ1c3lfcHJlZW1wdCA9IFRCX05JTDtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzQ5LVx0fVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzozNTA6XHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNnZjcHUtXHUwMDNlYXJjaC50YmFjY3RfbG9jaywgZmxhZ3MpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0zNTEtfVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0zNTItXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjM1MzpzdGF0aWMgdm9pZCBrdm1wcGNfY29yZV92Y3B1X3B1dF9odihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTM1NC17XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjM1NTpcdHN0cnVjdCBrdm1wcGNfdmNvcmUgKnZjID0gdmNwdS1cdTAwM2VhcmNoLnZjb3JlO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0zNTYtXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzU4LVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzozNTk6XHRpZiAoY3B1X2hhc19mZWF0dXJlKENQVV9GVFJfQVJDSF8zMDApKSB7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTM2MC1cdFx0Lypcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTM2My1cdFx0ICovXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjM2NDpcdFx0V0FSTl9PTl9PTkNFKHZjcHUtXHUwMDNlYXJjaC5zdGF0ZSA9PSBLVk1QUENfVkNQVV9SVU5OQUJMRSk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTM2NS1cdFx0LypcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MzY2Olx0XHQgKiBBY2NvdW50IHN0b2xlbiB0aW1lIHdoZW4gcHJlZW1wdGVkIHdoaWxlIHRoZSB2Y3B1IHRhc2sgaXNcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzY3LVx0XHQgKiBydW5uaW5nIGluIHRoZSBrZXJuZWwgKGJ1dCBub3QgaW4gcWVtdSwgd2hpY2ggaXMgSU5BQ1RJVkUpLlxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzY5LVx0XHRpZiAodGFza19pc19ydW5uaW5nKGN1cnJlbnQpIFx1MDAyNlx1MDAyNlxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzozNzA6XHRcdFx0XHR2Y3B1LVx1MDAzZWFyY2guc3RhdGUgPT0gS1ZNUFBDX1ZDUFVfQlVTWV9JTl9IT1NUKVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzozNzE6XHRcdFx0dmNwdS1cdTAwM2VhcmNoLmJ1c3lfcHJlZW1wdCA9IG1mdGIoKTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzcyLVx0XHRyZXR1cm47XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0zNzYtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjM3NzpcdGlmICh2Yy1cdTAwM2VydW5uZXIgPT0gdmNwdSBcdTAwMjZcdTAwMjYgdmMtXHUwMDNldmNvcmVfc3RhdGUgXHUwMDNlPSBWQ09SRV9TTEVFUElORylcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzc4LVx0XHRrdm1wcGNfY29yZV9zdGFydF9zdG9sZW4odmMsIG5vdyk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTM3OS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MzgwOlx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2dmNwdS1cdTAwM2VhcmNoLnRiYWNjdF9sb2NrLCBmbGFncyk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjM4MTpcdGlmICh2Y3B1LVx1MDAzZWFyY2guc3RhdGUgPT0gS1ZNUFBDX1ZDUFVfQlVTWV9JTl9IT1NUKVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzozODI6XHRcdHZjcHUtXHUwMDNlYXJjaC5idXN5X3ByZWVtcHQgPSBub3c7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjM4MzpcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2dmNwdS1cdTAwM2VhcmNoLnRiYWNjdF9sb2NrLCBmbGFncyk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTM4NC19XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTM4NS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6Mzg2OnN0YXRpYyB2b2lkIGt2bXBwY19zZXRfcHZyX2h2KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTMyIHB2cilcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzg3LXtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6Mzg4Olx0dmNwdS1cdTAwM2VhcmNoLnB2ciA9IHB2cjtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzg5LX1cbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jPTM5ND1zdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgbWFwX3Bjcl90b19jYXAodW5zaWduZWQgbG9uZyBwY3IpXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00MDItXHRjYXNlIFBDUl9BUkNIXzMxOlxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo0MDM6XHRcdGlmIChjcHVfaGFzX2ZlYXR1cmUoQ1BVX0ZUUl9QMTFfUFZSKSlcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNDA0LVx0XHRcdGNhcCA9IEhfR1VFU1RfQ0FQX1BPV0VSMTE7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00MTQtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjQxNTpzdGF0aWMgaW50IGt2bXBwY19zZXRfYXJjaF9jb21wYXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgYXJjaF9jb21wYXQpXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQxNi17XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQxNy1cdHVuc2lnbmVkIGxvbmcgaG9zdF9wY3JfYml0ID0gMCwgZ3Vlc3RfcGNyX2JpdCA9IDAsIGNhcCA9IDA7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjQxODpcdHN0cnVjdCBrdm1wcGNfdmNvcmUgKnZjID0gdmNwdS1cdTAwM2VhcmNoLnZjb3JlO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00MTktXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQyMC1cdC8qIFdlIGNhbiAoZW11bGF0ZSkgb3VyIG93biBhcmNoaXRlY3R1cmUgdmVyc2lvbiBhbmQgYW55dGhpbmcgb2xkZXIgKi9cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NDIxOlx0aWYgKGNwdV9oYXNfZmVhdHVyZShDUFVfRlRSX1AxMV9QVlIpIHx8IGNwdV9oYXNfZmVhdHVyZShDUFVfRlRSX0FSQ0hfMzEpKVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00MjItXHRcdGhvc3RfcGNyX2JpdCA9IFBDUl9BUkNIXzMxO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo0MjM6XHRlbHNlIGlmIChjcHVfaGFzX2ZlYXR1cmUoQ1BVX0ZUUl9BUkNIXzMwMCkpXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQyNC1cdFx0aG9zdF9wY3JfYml0ID0gUENSX0FSQ0hfMzAwO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo0MjU6XHRlbHNlIGlmIChjcHVfaGFzX2ZlYXR1cmUoQ1BVX0ZUUl9BUkNIXzIwN1MpKVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00MjYtXHRcdGhvc3RfcGNyX2JpdCA9IFBDUl9BUkNIXzIwNztcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NDI3Olx0ZWxzZSBpZiAoY3B1X2hhc19mZWF0dXJlKENQVV9GVFJfQVJDSF8yMDYpKVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00MjgtXHRcdGhvc3RfcGNyX2JpdCA9IFBDUl9BUkNIXzIwNjtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQ3NC1cdHZjLVx1MDAzZWFyY2hfY29tcGF0ID0gYXJjaF9jb21wYXQ7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjQ3NTpcdGt2bWh2X25lc3RlZHYyX21hcmtfZGlydHkodmNwdSwgS1ZNUFBDX0dTSURfTE9HSUNBTF9QVlIpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00NzYtXHQvKlxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNDg1LVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo0ODY6c3RhdGljIHZvaWQga3ZtcHBjX2R1bXBfcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQ4Ny17XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00ODktXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjQ5MDpcdHByX2VycihcJiMzNDt2Y3B1ICVwICglZCk6XFxuXCYjMzQ7LCB2Y3B1LCB2Y3B1LVx1MDAzZXZjcHVfaWQpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00OTEtXHRwcl9lcnIoXCYjMzQ7cGMgID0gJS4xNmx4ICBtc3IgPSAlLjE2bGx4ICB0cmFwID0gJXhcXG5cJiMzNDssXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjQ5MjpcdCAgICAgICB2Y3B1LVx1MDAzZWFyY2gucmVncy5uaXAsIHZjcHUtXHUwMDNlYXJjaC5zaHJlZ3MubXNyLCB2Y3B1LVx1MDAzZWFyY2gudHJhcCk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQ5My1cdGZvciAociA9IDA7IHIgXHUwMDNjIDE2OyAmIzQzOyYjNDM7cilcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNDk0LVx0XHRwcl9lcnIoXCYjMzQ7ciUyZCA9ICUuMTZseCAgciVkID0gJS4xNmx4XFxuXCYjMzQ7LFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo0OTU6XHRcdCAgICAgICByLCBrdm1wcGNfZ2V0X2dwcih2Y3B1LCByKSxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NDk2Olx0XHQgICAgICAgciYjNDM7MTYsIGt2bXBwY19nZXRfZ3ByKHZjcHUsIHImIzQzOzE2KSk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQ5Ny1cdHByX2VycihcJiMzNDtjdHIgPSAlLjE2bHggIGxyICA9ICUuMTZseFxcblwmIzM0OyxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NDk4Olx0ICAgICAgIHZjcHUtXHUwMDNlYXJjaC5yZWdzLmN0ciwgdmNwdS1cdTAwM2VhcmNoLnJlZ3MubGluayk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQ5OS1cdHByX2VycihcJiMzNDtzcnIwID0gJS4xNmxseCBzcnIxID0gJS4xNmxseFxcblwmIzM0OyxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NTAwOlx0ICAgICAgIHZjcHUtXHUwMDNlYXJjaC5zaHJlZ3Muc3JyMCwgdmNwdS1cdTAwM2VhcmNoLnNocmVncy5zcnIxKTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTAxLVx0cHJfZXJyKFwmIzM0O3NwcmcwID0gJS4xNmxseCBzcHJnMSA9ICUuMTZsbHhcXG5cJiMzNDssXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjUwMjpcdCAgICAgICB2Y3B1LVx1MDAzZWFyY2guc2hyZWdzLnNwcmcwLCB2Y3B1LVx1MDAzZWFyY2guc2hyZWdzLnNwcmcxKTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTAzLVx0cHJfZXJyKFwmIzM0O3NwcmcyID0gJS4xNmxseCBzcHJnMyA9ICUuMTZsbHhcXG5cJiMzNDssXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjUwNDpcdCAgICAgICB2Y3B1LVx1MDAzZWFyY2guc2hyZWdzLnNwcmcyLCB2Y3B1LVx1MDAzZWFyY2guc2hyZWdzLnNwcmczKTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTA1LVx0cHJfZXJyKFwmIzM0O2NyID0gJS44bHggIHhlciA9ICUuMTZseCAgZHNpc3IgPSAlLjh4XFxuXCYjMzQ7LFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1MDY6XHQgICAgICAgdmNwdS1cdTAwM2VhcmNoLnJlZ3MuY2NyLCB2Y3B1LVx1MDAzZWFyY2gucmVncy54ZXIsIHZjcHUtXHUwMDNlYXJjaC5zaHJlZ3MuZHNpc3IpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1MDc6XHRwcl9lcnIoXCYjMzQ7ZGFyID0gJS4xNmxseFxcblwmIzM0OywgdmNwdS1cdTAwM2VhcmNoLnNocmVncy5kYXIpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01MDgtXHRwcl9lcnIoXCYjMzQ7ZmF1bHQgZGFyID0gJS4xNmx4IGRzaXNyID0gJS44eFxcblwmIzM0OyxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NTA5Olx0ICAgICAgIHZjcHUtXHUwMDNlYXJjaC5mYXVsdF9kYXIsIHZjcHUtXHUwMDNlYXJjaC5mYXVsdF9kc2lzcik7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjUxMDpcdHByX2VycihcJiMzNDtTTEIgKCVkIGVudHJpZXMpOlxcblwmIzM0OywgdmNwdS1cdTAwM2VhcmNoLnNsYl9tYXgpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1MTE6XHRmb3IgKHIgPSAwOyByIFx1MDAzYyB2Y3B1LVx1MDAzZWFyY2guc2xiX21heDsgJiM0MzsmIzQzO3IpXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTUxMi1cdFx0cHJfZXJyKFwmIzM0OyAgRVNJRCA9ICUuMTZsbHggVlNJRCA9ICUuMTZsbHhcXG5cJiMzNDssXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjUxMzpcdFx0ICAgICAgIHZjcHUtXHUwMDNlYXJjaC5zbGJbcl0ub3JpZ2UsIHZjcHUtXHUwMDNlYXJjaC5zbGJbcl0ub3JpZ3YpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01MTQtXHRwcl9lcnIoXCYjMzQ7bHBjciA9ICUuMTZseCBzZHIxID0gJS4xNmx4IGxhc3RfaW5zdCA9ICUuMTZseFxcblwmIzM0OyxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NTE1Olx0ICAgICAgIHZjcHUtXHUwMDNlYXJjaC52Y29yZS1cdTAwM2VscGNyLCB2Y3B1LVx1MDAzZWt2bS1cdTAwM2VhcmNoLnNkcjEsXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjUxNjpcdCAgICAgICB2Y3B1LVx1MDAzZWFyY2gubGFzdF9pbnN0KTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTE3LX1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTE4LVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1MTk6c3RhdGljIHN0cnVjdCBrdm1fdmNwdSAqa3ZtcHBjX2ZpbmRfdmNwdShzdHJ1Y3Qga3ZtICprdm0sIGludCBpZClcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTIwLXtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NTIxOlx0cmV0dXJuIGt2bV9nZXRfdmNwdV9ieV9pZChrdm0sIGlkKTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTIyLX1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTIzLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1MjQ6c3RhdGljIHZvaWQgaW5pdF92cGEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3QgbHBwYWNhICp2cGEpXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTUyNS17XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTUyNi1cdHZwYS1cdTAwM2VfX29sZF9zdGF0dXMgfD0gTFBQQUNBX09MRF9TSEFSRURfUFJPQztcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NTI3Olx0dnBhLVx1MDAzZXlpZWxkX2NvdW50ID0gY3B1X3RvX2JlMzIoMSk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTUyOC19XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTUyOS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NTMwOnN0YXRpYyBpbnQgc2V0X3ZwYShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1wcGNfdnBhICp2LFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01MzEtXHRcdCAgIHVuc2lnbmVkIGxvbmcgYWRkciwgdW5zaWduZWQgbG9uZyBsZW4pXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01MzUtXHRcdHJldHVybiAtRUlOVkFMO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1MzY6XHRzcGluX2xvY2soXHUwMDI2dmNwdS1cdTAwM2VhcmNoLnZwYV91cGRhdGVfbG9jayk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTUzNy1cdGlmICh2LVx1MDAzZW5leHRfZ3BhICE9IGFkZHIgfHwgdi1cdTAwM2VsZW4gIT0gbGVuKSB7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01NDEtXHR9XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjU0MjpcdHNwaW5fdW5sb2NrKFx1MDAyNnZjcHUtXHUwMDNlYXJjaC52cGFfdXBkYXRlX2xvY2spO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01NDMtXHRyZXR1cm4gMDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jPTU1NT1zdGF0aWMgaW50IHZwYV9pc19yZWdpc3RlcmVkKHN0cnVjdCBrdm1wcGNfdnBhICp2cGFwKVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTYxLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1NjI6c3RhdGljIHVuc2lnbmVkIGxvbmcgZG9faF9yZWdpc3Rlcl92cGEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01NjMtXHRcdFx0XHQgICAgICAgdW5zaWduZWQgbG9uZyBmbGFncyxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NTY0Olx0XHRcdFx0ICAgICAgIHVuc2lnbmVkIGxvbmcgdmNwdWlkLCB1bnNpZ25lZCBsb25nIHZwYSlcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTY1LXtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NTY2Olx0c3RydWN0IGt2bSAqa3ZtID0gdmNwdS1cdTAwM2Vrdm07XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTU2Ny1cdHVuc2lnbmVkIGxvbmcgbGVuLCBuYjtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTY4LVx0dm9pZCAqdmE7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjU2OTpcdHN0cnVjdCBrdm1fdmNwdSAqdHZjcHU7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTU3MC1cdGludCBlcnI7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01NzMtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjU3NDpcdHR2Y3B1ID0ga3ZtcHBjX2ZpbmRfdmNwdShrdm0sIHZjcHVpZCk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjU3NTpcdGlmICghdHZjcHUpXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTU3Ni1cdFx0cmV0dXJuIEhfUEFSQU1FVEVSO1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTg5LVx0XHRpZiAoc3ViZnVuYyA9PSBIX1ZQQV9SRUdfVlBBKVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1OTA6XHRcdFx0bGVuID0gYmUxNl90b19jcHUoKChzdHJ1Y3QgcmVnX3ZwYSAqKXZhKS1cdTAwM2VsZW5ndGguaHdvcmQpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01OTEtXHRcdGVsc2VcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NTkyOlx0XHRcdGxlbiA9IGJlMzJfdG9fY3B1KCgoc3RydWN0IHJlZ192cGEgKil2YSktXHUwMDNlbGVuZ3RoLndvcmQpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01OTMtXHRcdGt2bXBwY191bnBpbl9ndWVzdF9wYWdlKGt2bSwgdmEsIHZwYSwgZmFsc2UpO1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjA0LVx0dnBhcCA9IE5VTEw7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjYwNTpcdHNwaW5fbG9jayhcdTAwMjZ0dmNwdS1cdTAwM2VhcmNoLnZwYV91cGRhdGVfbG9jayk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTYwNi1cbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTYxNy1cdFx0XHRicmVhaztcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NjE4Olx0XHR2cGFwID0gXHUwMDI2dHZjcHUtXHUwMDNlYXJjaC52cGE7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTYxOS1cdFx0ZXJyID0gMDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTYyOC1cdFx0ZXJyID0gSF9SRVNPVVJDRTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NjI5Olx0XHRpZiAoIXZwYV9pc19yZWdpc3RlcmVkKFx1MDAyNnR2Y3B1LVx1MDAzZWFyY2gudnBhKSlcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjMwLVx0XHRcdGJyZWFrO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy02MzEtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjYzMjpcdFx0dnBhcCA9IFx1MDAyNnR2Y3B1LVx1MDAzZWFyY2guZHRsO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy02MzMtXHRcdGVyciA9IDA7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy02MzgtXHRcdGVyciA9IEhfUkVTT1VSQ0U7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjYzOTpcdFx0aWYgKCF2cGFfaXNfcmVnaXN0ZXJlZChcdTAwMjZ0dmNwdS1cdTAwM2VhcmNoLnZwYSkpXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTY0MC1cdFx0XHRicmVhaztcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjQxLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo2NDI6XHRcdHZwYXAgPSBcdTAwMjZ0dmNwdS1cdTAwM2VhcmNoLnNsYl9zaGFkb3c7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTY0My1cdFx0ZXJyID0gMDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTY0OC1cdFx0ZXJyID0gSF9SRVNPVVJDRTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NjQ5Olx0XHRpZiAodnBhX2lzX3JlZ2lzdGVyZWQoXHUwMDI2dHZjcHUtXHUwMDNlYXJjaC5kdGwpIHx8XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjY1MDpcdFx0ICAgIHZwYV9pc19yZWdpc3RlcmVkKFx1MDAyNnR2Y3B1LVx1MDAzZWFyY2guc2xiX3NoYWRvdykpXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTY1MS1cdFx0XHRicmVhaztcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjUyLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo2NTM6XHRcdHZwYXAgPSBcdTAwMjZ0dmNwdS1cdTAwM2VhcmNoLnZwYTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjU0LVx0XHRlcnIgPSAwO1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjU3LVx0Y2FzZSBIX1ZQQV9ERVJFR19EVEw6XHRcdC8qIGRlcmVnaXN0ZXIgRFRMICovXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjY1ODpcdFx0dnBhcCA9IFx1MDAyNnR2Y3B1LVx1MDAzZWFyY2guZHRsO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy02NTktXHRcdGVyciA9IDA7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy02NjItXHRjYXNlIEhfVlBBX0RFUkVHX1NMQjpcdFx0LyogZGVyZWdpc3RlciBTTEIgc2hhZG93IGJ1ZmZlciAqL1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo2NjM6XHRcdHZwYXAgPSBcdTAwMjZ0dmNwdS1cdTAwM2VhcmNoLnNsYl9zaGFkb3c7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTY2NC1cdFx0ZXJyID0gMDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTY3My1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6Njc0Olx0c3Bpbl91bmxvY2soXHUwMDI2dHZjcHUtXHUwMDNlYXJjaC52cGFfdXBkYXRlX2xvY2spO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy02NzUtXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy02NzgtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjY3OTpzdGF0aWMgdm9pZCBrdm1wcGNfdXBkYXRlX3ZwYShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1wcGNfdnBhICp2cGFwLFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy02ODAtXHRcdFx0ICAgICAgIHN0cnVjdCBrdm1wcGNfdnBhICpvbGRfdnBhcClcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjgxLXtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NjgyOlx0c3RydWN0IGt2bSAqa3ZtID0gdmNwdS1cdTAwM2Vrdm07XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTY4My1cdHZvaWQgKnZhO1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjk2LVx0XHRncGEgPSB2cGFwLVx1MDAzZW5leHRfZ3BhO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo2OTc6XHRcdHNwaW5fdW5sb2NrKFx1MDAyNnZjcHUtXHUwMDNlYXJjaC52cGFfdXBkYXRlX2xvY2spO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy02OTgtXHRcdHZhID0gTlVMTDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTcwMS1cdFx0XHR2YSA9IGt2bXBwY19waW5fZ3Vlc3RfcGFnZShrdm0sIGdwYSwgXHUwMDI2bmIpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo3MDI6XHRcdHNwaW5fbG9jayhcdTAwMjZ2Y3B1LVx1MDAzZWFyY2gudnBhX3VwZGF0ZV9sb2NrKTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNzAzLVx0XHRpZiAoZ3BhID09IHZwYXAtXHUwMDNlbmV4dF9ncGEpXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03MjgtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjcyOTpzdGF0aWMgdm9pZCBrdm1wcGNfdXBkYXRlX3ZwYXMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03MzAte1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo3MzE6XHRzdHJ1Y3Qga3ZtICprdm0gPSB2Y3B1LVx1MDAzZWt2bTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNzMyLVx0c3RydWN0IGt2bXBwY192cGEgb2xkX3ZwYSA9IHsgMCB9O1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03MzMtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjczNDpcdGlmICghKHZjcHUtXHUwMDNlYXJjaC52cGEudXBkYXRlX3BlbmRpbmcgfHxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NzM1Olx0ICAgICAgdmNwdS1cdTAwM2VhcmNoLnNsYl9zaGFkb3cudXBkYXRlX3BlbmRpbmcgfHxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NzM2Olx0ICAgICAgdmNwdS1cdTAwM2VhcmNoLmR0bC51cGRhdGVfcGVuZGluZykpXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTczNy1cdFx0cmV0dXJuO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03MzgtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjczOTpcdHNwaW5fbG9jayhcdTAwMjZ2Y3B1LVx1MDAzZWFyY2gudnBhX3VwZGF0ZV9sb2NrKTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NzQwOlx0aWYgKHZjcHUtXHUwMDNlYXJjaC52cGEudXBkYXRlX3BlbmRpbmcpIHtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NzQxOlx0XHRrdm1wcGNfdXBkYXRlX3ZwYSh2Y3B1LCBcdTAwMjZ2Y3B1LVx1MDAzZWFyY2gudnBhLCBcdTAwMjZvbGRfdnBhKTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNzQyLVx0XHRpZiAob2xkX3ZwYS5waW5uZWRfYWRkcikge1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03NDMtXHRcdFx0aWYgKGt2bWh2X2lzX25lc3RlZHYyKCkpXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjc0NDpcdFx0XHRcdGt2bWh2X25lc3RlZHYyX3NldF92cGEodmNwdSwgfjB1bGwpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03NDUtXHRcdFx0a3ZtcHBjX3VucGluX2d1ZXN0X3BhZ2Uoa3ZtLCBvbGRfdnBhLnBpbm5lZF9hZGRyLCBvbGRfdnBhLmdwYSxcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTc0Ny1cdFx0fVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo3NDg6XHRcdGlmICh2Y3B1LVx1MDAzZWFyY2gudnBhLnBpbm5lZF9hZGRyKSB7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjc0OTpcdFx0XHRpbml0X3ZwYSh2Y3B1LCB2Y3B1LVx1MDAzZWFyY2gudnBhLnBpbm5lZF9hZGRyKTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNzUwLVx0XHRcdGlmIChrdm1odl9pc19uZXN0ZWR2MigpKVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo3NTE6XHRcdFx0XHRrdm1odl9uZXN0ZWR2Ml9zZXRfdnBhKHZjcHUsIF9fcGEodmNwdS1cdTAwM2VhcmNoLnZwYS5waW5uZWRfYWRkcikpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03NTItXHRcdH1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNzUzLVx0fVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo3NTQ6XHRpZiAodmNwdS1cdTAwM2VhcmNoLmR0bC51cGRhdGVfcGVuZGluZykge1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo3NTU6XHRcdGt2bXBwY191cGRhdGVfdnBhKHZjcHUsIFx1MDAyNnZjcHUtXHUwMDNlYXJjaC5kdGwsIFx1MDAyNm9sZF92cGEpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03NTYtXHRcdGlmIChvbGRfdnBhLnBpbm5lZF9hZGRyKVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNzU4LVx0XHRcdFx0XHRcdG9sZF92cGEuZGlydHkpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo3NTk6XHRcdHZjcHUtXHUwMDNlYXJjaC5kdGxfcHRyID0gdmNwdS1cdTAwM2VhcmNoLmR0bC5waW5uZWRfYWRkcjtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NzYwOlx0XHR2Y3B1LVx1MDAzZWFyY2guZHRsX2luZGV4ID0gMDtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNzYxLVx0fVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo3NjI6XHRpZiAodmNwdS1cdTAwM2VhcmNoLnNsYl9zaGFkb3cudXBkYXRlX3BlbmRpbmcpIHtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NzYzOlx0XHRrdm1wcGNfdXBkYXRlX3ZwYSh2Y3B1LCBcdTAwMjZ2Y3B1LVx1MDAzZWFyY2guc2xiX3NoYWRvdywgXHUwMDI2b2xkX3ZwYSk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTc2NC1cdFx0aWYgKG9sZF92cGEucGlubmVkX2FkZHIpXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03NjgtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjc2OTpcdHNwaW5fdW5sb2NrKFx1MDAyNnZjcHUtXHUwMDNlYXJjaC52cGFfdXBkYXRlX2xvY2spO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03NzAtfVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM9Nzc2PXN0YXRpYyB1NjQgdmNvcmVfc3RvbGVuX3RpbWUoc3RydWN0IGt2bXBwY192Y29yZSAqdmMsIHU2NCBub3cpXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03ODAtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjc4MTpcdFdBUk5fT05fT05DRShjcHVfaGFzX2ZlYXR1cmUoQ1BVX0ZUUl9BUkNIXzMwMCkpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03ODItXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03OTEtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjc5MjpzdGF0aWMgdm9pZCBfX2t2bXBwY19jcmVhdGVfZHRsX2VudHJ5KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNzkzLVx0XHRcdFx0XHRzdHJ1Y3QgbHBwYWNhICp2cGEsXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjc5NDpcdFx0XHRcdFx0dW5zaWduZWQgaW50IHBjcHUsIHU2NCBub3csXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTc5NS1cdFx0XHRcdFx0dW5zaWduZWQgbG9uZyBzdG9sZW4pXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03OTgtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjc5OTpcdGR0ID0gdmNwdS1cdTAwM2VhcmNoLmR0bF9wdHI7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTgwMC1cbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTgwNS1cdGR0LVx1MDAzZXByZWVtcHRfcmVhc29uID0gMDtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODA2Olx0ZHQtXHUwMDNlcHJvY2Vzc29yX2lkID0gY3B1X3RvX2JlMTYocGNwdSAmIzQzOyB2Y3B1LVx1MDAzZWFyY2gucHRpZCk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjgwNzpcdGR0LVx1MDAzZWVucXVldWVfdG9fZGlzcGF0Y2hfdGltZSA9IGNwdV90b19iZTMyKHN0b2xlbik7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTgwOC1cdGR0LVx1MDAzZXJlYWR5X3RvX2VucXVldWVfdGltZSA9IDA7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTgwOS1cdGR0LVx1MDAzZXdhaXRpbmdfdG9fcmVhZHlfdGltZSA9IDA7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjgxMDpcdGR0LVx1MDAzZXRpbWViYXNlID0gY3B1X3RvX2JlNjQobm93KTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODExLVx0ZHQtXHUwMDNlZmF1bHRfYWRkciA9IDA7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjgxMjpcdGR0LVx1MDAzZXNycjAgPSBjcHVfdG9fYmU2NChrdm1wcGNfZ2V0X3BjKHZjcHUpKTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODEzOlx0ZHQtXHUwMDNlc3JyMSA9IGNwdV90b19iZTY0KHZjcHUtXHUwMDNlYXJjaC5zaHJlZ3MubXNyKTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODE0LVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04MTUtXHQmIzQzOyYjNDM7ZHQ7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjgxNjpcdGlmIChkdCA9PSB2Y3B1LVx1MDAzZWFyY2guZHRsLnBpbm5lZF9lbmQpXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjgxNzpcdFx0ZHQgPSB2Y3B1LVx1MDAzZWFyY2guZHRsLnBpbm5lZF9hZGRyO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4MTg6XHR2Y3B1LVx1MDAzZWFyY2guZHRsX3B0ciA9IGR0O1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04MTktXHQvKiBvcmRlciB3cml0aW5nICpkdCB2cy4gd3JpdGluZyB2cGEtXHUwMDNlZHRsX2lkeCAqL1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04MjAtXHRzbXBfd21iKCk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjgyMTpcdHZwYS1cdTAwM2VkdGxfaWR4ID0gY3B1X3RvX2JlNjQoJiM0MzsmIzQzO3ZjcHUtXHUwMDNlYXJjaC5kdGxfaW5kZXgpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04MjItXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjgyMzpcdC8qIHZjcHUtXHUwMDNlYXJjaC5kdGwuZGlydHkgaXMgc2V0IGJ5IHRoZSBjYWxsZXIgKi9cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODI0LX1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODI1LVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4MjY6c3RhdGljIHZvaWQga3ZtcHBjX3VwZGF0ZV92cGFfZGlzcGF0Y2goc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04MjctXHRcdFx0XHQgICAgICAgc3RydWN0IGt2bXBwY192Y29yZSAqdmMpXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04MzQtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjgzNTpcdHZwYSA9IHZjcHUtXHUwMDNlYXJjaC52cGEucGlubmVkX2FkZHI7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTgzNi1cdGlmICghdnBhKVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODQxLVx0Y29yZV9zdG9sZW4gPSB2Y29yZV9zdG9sZW5fdGltZSh2Yywgbm93KTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODQyOlx0c3RvbGVuID0gY29yZV9zdG9sZW4gLSB2Y3B1LVx1MDAzZWFyY2guc3RvbGVuX2xvZ2dlZDtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODQzOlx0dmNwdS1cdTAwM2VhcmNoLnN0b2xlbl9sb2dnZWQgPSBjb3JlX3N0b2xlbjtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODQ0Olx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2dmNwdS1cdTAwM2VhcmNoLnRiYWNjdF9sb2NrLCBmbGFncyk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjg0NTpcdHN0b2xlbiAmIzQzOz0gdmNwdS1cdTAwM2VhcmNoLmJ1c3lfc3RvbGVuO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4NDY6XHR2Y3B1LVx1MDAzZWFyY2guYnVzeV9zdG9sZW4gPSAwO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4NDc6XHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNnZjcHUtXHUwMDNlYXJjaC50YmFjY3RfbG9jaywgZmxhZ3MpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04NDgtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjg0OTpcdHZwYS1cdTAwM2VlbnF1ZXVlX2Rpc3BhdGNoX3RiID0gY3B1X3RvX2JlNjQoYmU2NF90b19jcHUodnBhLVx1MDAzZWVucXVldWVfZGlzcGF0Y2hfdGIpICYjNDM7IHN0b2xlbik7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTg1MC1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODUxOlx0X19rdm1wcGNfY3JlYXRlX2R0bF9lbnRyeSh2Y3B1LCB2cGEsIHZjLVx1MDAzZXBjcHUsIG5vdyAmIzQzOyBrdm1wcGNfZ2V0X3RiX29mZnNldCh2Y3B1KSwgc3RvbGVuKTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODUyLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4NTM6XHR2Y3B1LVx1MDAzZWFyY2gudnBhLmRpcnR5ID0gdHJ1ZTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODU0LX1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODU1LVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4NTY6c3RhdGljIHZvaWQga3ZtcHBjX3VwZGF0ZV92cGFfZGlzcGF0Y2hfcDkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04NTctXHRcdFx0XHQgICAgICAgc3RydWN0IGt2bXBwY192Y29yZSAqdmMsXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04NjMtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjg2NDpcdHZwYSA9IHZjcHUtXHUwMDNlYXJjaC52cGEucGlubmVkX2FkZHI7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTg2NS1cdGlmICghdnBhKVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODY4LVx0c3RvbGVuID0gdmMtXHUwMDNlc3RvbGVuX3RiO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4Njk6XHRzdG9sZW5fZGVsdGEgPSBzdG9sZW4gLSB2Y3B1LVx1MDAzZWFyY2guc3RvbGVuX2xvZ2dlZDtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODcwOlx0dmNwdS1cdTAwM2VhcmNoLnN0b2xlbl9sb2dnZWQgPSBzdG9sZW47XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTg3MS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODcyOlx0dnBhLVx1MDAzZWVucXVldWVfZGlzcGF0Y2hfdGIgPSBjcHVfdG9fYmU2NChzdG9sZW4pO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04NzMtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjg3NDpcdF9fa3ZtcHBjX2NyZWF0ZV9kdGxfZW50cnkodmNwdSwgdnBhLCB2Yy1cdTAwM2VwY3B1LCBub3csIHN0b2xlbl9kZWx0YSk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTg3NS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODc2Olx0dmNwdS1cdTAwM2VhcmNoLnZwYS5kaXJ0eSA9IHRydWU7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTg3Ny19XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTg3OC1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODc5Oi8qIFNlZSBpZiB0aGVyZSBpcyBhIGRvb3JiZWxsIGludGVycnVwdCBwZW5kaW5nIGZvciBhIHZjcHUgKi9cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODgwOnN0YXRpYyBib29sIGt2bXBwY19kb29yYmVsbF9wZW5kaW5nKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODgxLXtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTg4NC1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODg1Olx0aWYgKHZjcHUtXHUwMDNlYXJjaC5kb29yYmVsbF9yZXF1ZXN0KVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04ODYtXHRcdHJldHVybiB0cnVlO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4ODc6XHRpZiAoY3B1X2hhc19mZWF0dXJlKENQVV9GVFJfQVJDSF8zMDApKVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04ODgtXHRcdHJldHVybiBmYWxzZTtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTg5MC1cdCAqIEVuc3VyZSB0aGF0IHRoZSByZWFkIG9mIHZjb3JlLVx1MDAzZWRwZGVzIGNvbWVzIGFmdGVyIHRoZSByZWFkXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjg5MTpcdCAqIG9mIHZjcHUtXHUwMDNlZG9vcmJlbGxfcmVxdWVzdC4gIFRoaXMgYmFycmllciBtYXRjaGVzIHRoZVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04OTItXHQgKiBzbXBfd21iKCkgaW4ga3ZtcHBjX2d1ZXN0X2VudHJ5X2luamVjdCgpLlxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODk0LVx0c21wX3JtYigpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4OTU6XHR2YyA9IHZjcHUtXHUwMDNlYXJjaC52Y29yZTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODk2Olx0dGhyID0gdmNwdS1cdTAwM2V2Y3B1X2lkIC0gdmMtXHUwMDNlZmlyc3RfdmNwdWlkO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04OTctXHRyZXR1cm4gISEodmMtXHUwMDNlZHBkZXMgXHUwMDI2ICgxIFx1MDAzY1x1MDAzYyB0aHIpKTtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTg5OS1cblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNDo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzOTE4NwoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDU3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRlYnVnZ2luZyB0aGUgQ29tcGlsYXRpb24gRmFpbHVyZSoqCgpPa2F5LCBoZXJlJiMzOTtzIHRoZSBzaXR1YXRpb24uIFRoZSBidWlsZCBqdXN0IGNob2tlZCwgYW5kIHRoZSBlcnJvciBtZXNzYWdlIGNsZWFybHkgcG9pbnRzIHRvIGEgbWlzc2luZyBgY3B1YCB2YXJpYWJsZS4gVGhhdCYjMzk7cyBhIGNsYXNzaWMgLSBJIGNhbiYjMzk7dCBpbWFnaW5lIHRoaXMgaXMgYW4gaW50ZW50aW9uYWwgb3ZlcnNpZ2h0LiBJdCYjMzk7cyBub3QgYSBnbG9iYWwsIGFuZCBJJiMzOTttIGJldHRpbmcgdGhhdCYjMzk7cyB0aGUgY29yZSBpc3N1ZS4gVGhlIHBhdGNoIGlzIHByb2JhYmx5IHJlZmVyZW5jaW5nIGl0IHNvbWV3aGVyZS4KCkJ1dCBob2xkIG9uLCB0aGlzIGlzIHdoZXJlIEkgbmVlZCB0byBiZSBtb3JlIGNhcmVmdWwuIEl0JiMzOTtzICpwb3NzaWJsZSogYGNwdWAgaXMgYSBtYWNybyBkZWZpbmVkIGluIGEgaGVhZGVyIGZpbGUuIEkmIzM5O3ZlIGJlZW4gYnVybmVkIGJ5IHRoYXQgYmVmb3JlLiBBbHdheXMgY2hlY2sgdGhlIGluY2x1ZGVzISBTbywgcmF0aGVyIHRoYW4gYXNzdW1lIGl0JiMzOTtzIGp1c3QgYSB2YXJpYWJsZSwgbGV0IG1lIHF1aWNrbHkgZ2xhbmNlIGF0IHRoZSB1c3VhbCBzdXNwZWN0cyBpbiB0aGUgYGFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9gIGRpcmVjdG9yeS4gVGhhdCYjMzk7cyB3aGVyZSBJIGV4cGVjdCB0byBmaW5kIGFueSBwcm9jZXNzb3Itc3BlY2lmaWMgZGVmaW5pdGlvbnMgb24gYSBQb3dlclBDIHN5c3RlbS4gTGV0JiMzOTtzIHNlZSBpZiBgY3B1YCBpcyBkZWZpbmVkIGFzIGEgbWFjcm8gaW4gb25lIG9mIHRob3NlIGhlYWRlcnMuIEkgbmVlZCB0byBrbm93IGlmIHRoaXMgaXMgYSBzaW1wbGUgbWFjcm8gZXhwYW5zaW9uIGlzc3VlLCBvciBpZiB0aGlzIGlzIGEgZGVlcGVyIHByb2JsZW0gd2l0aCB0aGUgcGF0Y2ggaXRzZWxmLiBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IHdpdGggdGhlIG1vc3QgbGlrZWx5IGNhbmRpZGF0ZXMsIGxpa2UgdGhlIG1haW4gYXJjaGl0ZWN0dXJlIGhlYWRlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDQ6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDsjZGVmaW5lIGNwdSAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDQ6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzk1MzMKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHJlbmRlcmVkIGFzIGEgZmlyc3QtcGVyc29uIGFjY291bnQgc3VpdGFibGUgZm9yIGEgZmVsbG93IGV4cGVydDoKCioqSW52ZXN0aWdhdGluZyB0aGUgYGNwdWAgTWFjcm8gaW4gTGludXggSGVhZGVyIEZpbGVzKioKCkFscmlnaHQsIEkmIzM5O20gdGhpbmtpbmcgSSBuZWVkIHRvIHNlZSBpZiB0aGUgc3ltYm9sIGBjcHVgIGlzIGRlZmluZWQgYXMgYSBtYWNybyB3aXRoaW4gdGhlIGBpbmNsdWRlL2xpbnV4L2AgZGlyZWN0b3J5LiBUaGF0JiMzOTtzIHRoZSBvYnZpb3VzIHBsYWNlIHRvIHN0YXJ0LiBHaXZlbiB0aGUgY29udGV4dCBvZiBMaW51eCBrZXJuZWwgZGV2ZWxvcG1lbnQgYW5kIHBlcmZvcm1hbmNlLCBgY3B1YCBjb3VsZCBiZSBhbnl0aGluZyBmcm9tIGEgc2ltcGxlIG1hY3JvIGV4cGFuZGluZyB0byByZWdpc3RlciBuYW1lcywgdG8gbW9yZSBjb21wbGV4IGxvZ2ljIHJlbGF0ZWQgdG8gQ1BVIGFyY2hpdGVjdHVyZSBkZXRlY3Rpb24sIG9yIGV2ZW4gYSBjb21wb25lbnQgaW4gYSBwb3dlciBtYW5hZ2VtZW50IHNjaGVtZS4gSSYjMzk7bGwgbmVlZCB0byBjb25maXJtIHdoYXQgaXQgYWN0dWFsbHkgKmlzKiwgYW5kIHRoYXQgd2lsbCBkZXRlcm1pbmUgaG93IEkgcHJvY2VlZC4gVGltZSB0byBkaXZlIGludG8gdGhlIGluY2x1ZGVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNDo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0OyNkZWZpbmUgY3B1ICYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDQ6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzk3NDMKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiAyMDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRGVidWdnaW5nIGEgQ29tcGlsYXRpb24gRmFpbHVyZSoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCwgYW5kIGl0JiMzOTtzIGZhaWxpbmcgdG8gY29tcGlsZS4gVGhlIGVycm9yIGxvb2tzIGxpa2UgYSB0eXBvOiBgY3B1LSZndDthcmNoLmRvb3JiZWxsX3JlcXVlc3QgPSAwO2AuIFRoYXQmIzM5O3MgYSBjbGFzc2ljLCBJJiMzOTt2ZSBzZWVuIGl0IGEgdGhvdXNhbmQgdGltZXMuIEEgbWlzc2luZyBvciBpbmNvcnJlY3QgbWVtYmVyIGFjY2VzcyBpcyBhIHByZXR0eSBvYnZpb3VzIGNvbXBpbGF0aW9uIHN0b3BwZXIuIFRoZSB0aGluZyBpcywgaWYgaXQgZG9lc24mIzM5O3QgY29tcGlsZSwgSSBjYW4mIzM5O3QgZXZlbiBmdXp6IGl0LCB3aGljaCBpcyB0aGUgaW1tZWRpYXRlIG5leHQgc3RlcC4KCkZpcnN0LCBsZXQgbWUgY29uZmlybSB0aGF0IGBjcHVgIGlzbiYjMzk7dCBkZWNsYXJlZCBpbiB0aGUgZnVuY3Rpb24gYGt2bWh2X3ZjcHVfZW50cnlfbmVzdGVkdjJgLiBMZXQmIzM5O3MgdGFrZSBhIHF1aWNrIGxvb2sgYXQgdGhlIGNvZGUgYmxvY2sgcHJvdmlkZWQgaW4gdGhlIHBhdGNoLi4uIFllcCwgSSYjMzk7bSByaWdodC4gSXQmIzM5O3Mgbm90IGRlY2xhcmVkIHRoZXJlLgoKTm93LCB3YWl0IGEgc2Vjb25kLi4uIGlzIHRoZXJlIGEgY2hhbmNlIGBjcHVgIGlzIGEgbWFjcm8/IEl0JiMzOTtzIG5vdCB1bmNvbW1vbiB0byB1c2UgbWFjcm9zIGxpa2UgYGNwdWAgdG8gZXhwYW5kIHRvIHNvbWV0aGluZyBsaWtlIGBzbXBfcHJvY2Vzc29yX2lkKClgIGluIHRoaXMga2luZCBvZiBrZXJuZWwgY29kZS4gTGV0JiMzOTtzIGRpZyBpbiBhbmQgc2VlIGlmIGBjcHVgIGlzIGRlZmluZWQgYW55d2hlcmUgYXMgYSBtYWNyby4gVGhhdCB3b3VsZCBiZSBhIHNuZWFreSBsaXR0bGUgYnVnLiBJIG5lZWQgdG8gYmUgdGhvcm91Z2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA0OjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7I2RlZmluZSBjcHVcXGImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNDo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDIzNAoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDIzOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEZ1enppbmcgV29ydGhpbmVzcyBvZiBhIENvbW1pdHRlZCBQYXRjaCoqCgpPa2F5LCB0aGlzIHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCwgYnV0IGxldCBtZSB0aGluayB0aGlzIHRocm91Z2guIE5vLCB0aGUgcGF0Y2ggKmRvZXNuJiMzOTt0KiBsb29rIHJpZ2h0LiBUaGlzIG1ha2VzIG1lIHN1c3BlY3QgYSBjb21waWxhdGlvbiBlcnJvci4gSWYgdGhlIHBhdGNoIGludHJvZHVjZXMgYSBjb21waWxhdGlvbiBlcnJvciwgb2J2aW91c2x5IEkgY2FuJiMzOTt0IGNvbXBpbGUgb3IgdGVzdCBpdC4gQnV0IGhvbGQgb24sIHRoZSBwcm9tcHQgc2F5cyB0aGUgY2hhbmdlcyBoYXZlICphbHJlYWR5KiBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZC4gSWYgdGhhdCYjMzk7cyB0aGUgY2FzZSwgKm1heWJlKiBpdCBjb21waWxlZCBhbHJlYWR5PwoKQWgsIGJ1dCB0aGVuIEkgcmVtZW1iZXI6IHRoZSBwcm9tcHQmIzM5O3MgY29uZGl0aW9uOiAmIzM0O1JldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnMuLi4gY29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyYjMzQ7LiBJZiBpdCAqZG9lc24mIzM5O3QqIGNvbXBpbGUsIGl0JiMzOTtzIGRlZmluaXRlbHkgbm90IGZ1enotd29ydGh5IGJlY2F1c2UgaXQmIzM5O3MgdW51c2FibGU7IHRoZXJlJiMzOTtzIG5vIHdheSB0byBldmVuIHN0YXJ0IHRlc3RpbmcuIFRoZXJlIGlzIG5vIGV4cGxpY2l0IHJ1bGUgZm9yICYjMzQ7ZG9lcyBub3QgY29tcGlsZSYjMzQ7LgoKU28sIGlmIGl0IGZhaWxzIHRvIGNvbXBpbGUsIEkgc2hvdWxkIHByb2JhYmx5IHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYC4gTGV0JiMzOTtzIGp1c3QgbWFrZSBzdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IG90aGVyIGZhY3RvcnMgSSYjMzk7bSBvdmVybG9va2luZy4gT2theSwgbGV0IG1lIHF1aWNrbHkgZG91YmxlIGNoZWNrIGlmIHRoZXJlIGFyZSBvdGhlciBmaWxlcyBtb2RpZmllZCBpbiB0aGUgZGlmZi4gQWgsIHRoZSBkaWZmIG9ubHkgc2hvd3MgY2hhbmdlcyB0byBgYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuY2AuIElzIHRoZXJlIGFueSBwb3NzaWJsZSBnbG9iYWwgdmFyaWFibGUgdXNhZ2UgaGVyZT8gQ291bGQgYGNwdWAgYmUgYSBnbG9iYWwgdmFyaWFibGU/IExldCYjMzk7cyBzZWFyY2ggdGhlIGtlcm5lbCBjb2RlYmFzZSBmb3IgaW5zdGFuY2VzIG9mIGBzdHJ1Y3Qga3ZtX3ZjcHUgKmNwdWAgYW5kIG1ha2Ugc3VyZS4gVGhpcyB3aWxsIGhlbHAgZGV0ZXJtaW5lIGlmIGl0JiMzOTtzIGZ1enotd29ydGh5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNDo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdHJ1Y3Qga3ZtX3ZjcHUgXFwqY3B1JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIveDg2L3Nldi5jPTE2MT1zdHJ1Y3Qga3ZtX3ZtICp2bV9zZXZfY3JlYXRlX3dpdGhfb25lX3ZjcHUodTMyIHR5cGUsIHZvaWQgKmd1ZXN0X2NvZGUsXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi94ODYvc2V2LmMtMTY4LVx0c3RydWN0IGt2bV92bSAqdm07XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL3g4Ni9zZXYuYzoxNjk6XHRzdHJ1Y3Qga3ZtX3ZjcHUgKmNwdXNbMV07XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL3g4Ni9zZXYuYy0xNzAtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA0OjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwOTg3CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMjUyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRlYnVnZ2luZyBhIFBvdGVudGlhbCBUeXBvKioKCk9rYXksIHRoZXJlJiMzOTtzIG5vIGdsb2JhbCBgY3B1YCB2YXJpYWJsZSBpbiBzaWdodC4gVGhhdCYjMzk7cyBpbW1lZGlhdGVseSBvYnZpb3VzLiBMZXQmIzM5O3MgcmUtZXhhbWluZSB0aGlzIGNvZGUgcGF0Y2ggY2xvc2VseS4KCmBgYGMKJiM0MzsJLyogQ2hlY2sgaWYgcHJpdmlsZWdlZCBkb29yIGJlbGwgd2FzIHJlcXVlc3RlZCBhbmQgaGFuZGxlZCAqLwomIzQzOwlpZiAodmNwdS0mZ3Q7YXJjaC52Y29yZS0mZ3Q7ZHBkZXMpIHsKJiM0MzsJCWt2bWh2X25lc3RlZHYyX2NhY2hlZF9yZWxvYWQodmNwdSwgS1ZNUFBDX0dTSURfRFBERVMpOwomIzQzOwkJaWYgKHZjcHUtJmd0O2FyY2gudmNvcmUtJmd0O2RwZGVzKQomIzQzOwkJCXZjcHUtJmd0O2FyY2guZG9vcmJlbGxfcmVxdWVzdCB8PSB2Y3B1LSZndDthcmNoLnZjb3JlLSZndDtkcGRlczsKJiM0MzsJCWVsc2UKJiM0MzsJCQljcHUtJmd0O2FyY2guZG9vcmJlbGxfcmVxdWVzdCA9IDA7CiYjNDM7CX0gZWxzZSB7CiYjNDM7CQl2Y3B1LSZndDthcmNoLmRvb3JiZWxsX3JlcXVlc3QgPSAwOwomIzQzOwl9CmBgYAoKUmlnaHQsIGl0JiMzOTtzIHByZXR0eSBjbGVhciB0aGF0IGBjcHVgIGluIHRoYXQgYGVsc2VgIGJsb2NrIHNob3VsZCBiZSBgdmNwdWAuIFRoYXQmIzM5O3MgYSBjbGFzc2ljIHR5cG8uICBUaGUgY29tcGlsZXIgd291bGQgZGVmaW5pdGVseSBjYXRjaCB0aGlzLCBzbyBpdCYjMzk7cyBub3QgZnVuY3Rpb25hbCBhcyB3cml0dGVuLgoKQnV0IHdhaXQsIGhvbGQgb24uIENvdWxkIGl0IGJlIHRoYXQgYGNwdWAgaXMgKmFjdHVhbGx5KiBhIG1hY3JvPyBJIHNob3VsZCBjaGVjayB0aGUgZmlsZSB3aGVyZSB0aGlzIGlzIGRlZmluZWQsIGBhcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jYCwganVzdCB0byBiZSBjZXJ0YWluLiBNYWNyb3MgY2FuIGJlIHNuZWFreS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDQ6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDsjZGVmaW5lIGNwdSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNDo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTU4NgoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDgwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkNvbXBpbGF0aW9uIEVycm9yIEZvdW5kIC0gUmV0aGlua2luZyBBcHByb2FjaCoqCgpBbHJpZ2h0LCBuby4gVGhpcyBpc24mIzM5O3QgYSBzaW1wbGUgb3ZlcnNpZ2h0OyBpdCYjMzk7cyBhIGNvbXBpbGF0aW9uIGVycm9yLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIG1hcmsgYFdvcnRoRnV6emluZz1mYWxzZWAgYW5kIGNsZWFybHkgc3RhdGUgdGhhdCB0aGUgcGF0Y2ggaW50cm9kdWNlcyBhIGNvbXBpbGF0aW9uIGlzc3VlIOKAkyB0aGUgY29kZSB1c2VzIGBjcHVgIHdoZXJlIGl0IHNob3VsZCB1c2UgYHZjcHVgLiBUaGF0JiMzOTtzIHRoZSBvYnZpb3VzIHJvdXRlLgoKQnV0IGhvbGQgb24gYSBzZWNvbmQuIEJlZm9yZSBJIHJ1c2ggdG8ganVkZ21lbnQsIGlzIHRoZXJlIGV2ZW4gYSAqcmVtb3RlKiBwb3NzaWJpbGl0eSB0aGF0IGBjcHVgIGlzIGEgdmFsaWQgdmFyaWFibGUgaW4gdGhpcyBjb250ZXh0PyBJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLiBKdXN0IGJlY2F1c2UgaXQmIzM5O3MgKmxpa2VseSogYSB0eXBvIGRvZXNuJiMzOTt0IG1lYW4gaXQgKmlzKiBvbmUuIExldCBtZSBnbyBiYWNrIGFuZCByZS1leGFtaW5lIGBhcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jYC4gSSBuZWVkIHRvIHJ1bGUgb3V0IGFueSBzdWJ0bGUgbnVhbmNlcyBpbiB0aGF0IHNlY3Rpb24gb2YgY29kZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDQ6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y3B1LVx1MDAzZWFyY2guZG9vcmJlbGxfcmVxdWVzdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYz04ODA9c3RhdGljIGJvb2wga3ZtcHBjX2Rvb3JiZWxsX3BlbmRpbmcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODg0LVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4ODU6XHRpZiAodmNwdS1cdTAwM2VhcmNoLmRvb3JiZWxsX3JlcXVlc3QpXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTg4Ni1cdFx0cmV0dXJuIHRydWU7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYz0xNTM1PXN0YXRpYyBpbnQga3ZtcHBjX2VtdWxhdGVfZG9vcmJlbGxfaW5zdHIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMTU2MC1cdFx0XHRicmVhaztcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MTU2MTpcdFx0aWYgKCF0dmNwdS1cdTAwM2VhcmNoLmRvb3JiZWxsX3JlcXVlc3QpIHtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MTU2MjpcdFx0XHR0dmNwdS1cdTAwM2VhcmNoLmRvb3JiZWxsX3JlcXVlc3QgPSAxO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0xNTYzLVx0XHRcdGt2bXBwY19mYXN0X3ZjcHVfa2lja19odih0dmNwdSk7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0xNTcwLVx0XHR2Y3B1LVx1MDAzZWFyY2gudmNvcmUtXHUwMDNlZHBkZXMgPSAwO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoxNTcxOlx0XHR2Y3B1LVx1MDAzZWFyY2guZG9vcmJlbGxfcmVxdWVzdCA9IDA7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTE1NzItXHRcdGJyZWFrO1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM9MjIzMD1zdGF0aWMgaW50IGt2bXBwY19nZXRfb25lX3JlZ19odihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBpZCxcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTIzMTYtXHRcdGlmIChjcHVfaGFzX2ZlYXR1cmUoQ1BVX0ZUUl9BUkNIXzMwMCkpXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjIzMTc6XHRcdFx0KnZhbCA9IGdldF9yZWdfdmFsKGlkLCB2Y3B1LVx1MDAzZWFyY2guZG9vcmJlbGxfcmVxdWVzdCk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTIzMTgtXHRcdGVsc2Vcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jPTI0ODg9c3RhdGljIGludCBrdm1wcGNfc2V0X29uZV9yZWdfaHYoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgaWQsXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yNTY4LVx0XHRpZiAoY3B1X2hhc19mZWF0dXJlKENQVV9GVFJfQVJDSF8zMDApKVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyNTY5Olx0XHRcdHZjcHUtXHUwMDNlYXJjaC5kb29yYmVsbF9yZXF1ZXN0ID0gc2V0X3JlZ192YWwoaWQsICp2YWwpIFx1MDAyNiAxO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yNTcwLVx0XHRlbHNlXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYz00MjQ5PXN0YXRpYyBpbnQga3ZtaHZfdmNwdV9lbnRyeV9uZXN0ZWR2MihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCB0aW1lX2xpbWl0LFxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNDI2My1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NDI2NDpcdGlmICh2Y3B1LVx1MDAzZWFyY2guZG9vcmJlbGxfcmVxdWVzdClcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNDI2NS1cdFx0a3ZtcHBjX3NldF9kcGRlcyh2Y3B1LCAxKTtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQzMDEtXHRcdGlmICh2Y3B1LVx1MDAzZWFyY2gudmNvcmUtXHUwMDNlZHBkZXMpXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjQzMDI6XHRcdFx0dmNwdS1cdTAwM2VhcmNoLmRvb3JiZWxsX3JlcXVlc3QgfD0gdmNwdS1cdTAwM2VhcmNoLnZjb3JlLVx1MDAzZWRwZGVzO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00MzAzLVx0XHRlbHNlXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjQzMDQ6XHRcdFx0Y3B1LVx1MDAzZWFyY2guZG9vcmJlbGxfcmVxdWVzdCA9IDA7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQzMDUtXHR9IGVsc2Uge1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo0MzA2Olx0XHR2Y3B1LVx1MDAzZWFyY2guZG9vcmJlbGxfcmVxdWVzdCA9IDA7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQzMDctXHR9XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYz00MzE5PXN0YXRpYyBpbnQga3ZtaHZfdmNwdV9lbnRyeV9wOV9uZXN0ZWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgdGltZV9saW1pdCwgdW5zaWduZWQgbG9uZyBscGNyLCB1NjQgKnRiKVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNDM2OS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NDM3MDpcdGlmICh2Y3B1LVx1MDAzZWFyY2guZG9vcmJlbGxfcmVxdWVzdClcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NDM3MTpcdFx0dmNwdS1cdTAwM2VhcmNoLmRvb3JiZWxsX3JlcXVlc3QgPSAwO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00MzcyLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNDo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MzIxMgoJCQkJCQkJb3V0cHV0OiA4MgoJCQkJCQkJdGhvdWdodHM6IDYxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHNpdHVhdGlvbjoKCioqQWRkcmVzc2luZyBhIExpa2VseSBUeXBvcyBhbmQgRnV6emluZyBJbmFjY2Vzc2liaWxpdHkqKgoKT2theSwgSSYjMzk7dmUgZ290IGl0LiBUaGF0IGxpbmUsIGBjcHUtJmd0O2FyY2guZG9vcmJlbGxfcmVxdWVzdCA9IDA7YC4uLiB5ZWFoLCB0aGF0JiMzOTtzIGFsbW9zdCBjZXJ0YWlubHkgYSB0eXBvLiBJdCBzaG91bGQgYmUgYHZjcHUtJmd0O2FyY2guZG9vcmJlbGxfcmVxdWVzdCA9IDA7YCwgSSYjMzk7bSBwcmV0dHkgY29uZmlkZW50IGFib3V0IHRoYXQuIEkgbWVhbiwgaXQmIzM5O3Mgbm90IGV2ZW4gY29tcGlsaW5nIGFzIGl0IGlzLCB3aGljaCBpcyBhIHByZXR0eSBjbGVhciBpbmRpY2F0b3IuIEFuZCB0aGF0JiMzOTtzIGEgcHJvYmxlbSBiZWNhdXNlIGlmIGl0IGRvZXNuJiMzOTt0IGNvbXBpbGUsIGl0JiMzOTtzIGNvbXBsZXRlbHkgaW5hY2Nlc3NpYmxlIGZvciBhbnkga2luZCBvZiBmdXp6aW5nLiBTbywgZ2l2ZW4gdGhhdCBpbW1lZGlhdGUgcm9hZGJsb2NrLCB0aGVyZSYjMzk7cyBubyBwb2ludCBpbiBmdXJ0aGVyIGFuYWx5c2lzLiBJIG5lZWQgdG8gZmxhZyBpdCBhY2NvcmRpbmdseSwgSSYjMzk7bGwgc2V0IFdvcnRoRnV6emluZz1mYWxzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDQ6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjb250YWlucyBhIGNvbXBpbGF0aW9uIGVycm9yOiBgY3B1LVx1MDAzZWFyY2guZG9vcmJlbGxfcmVxdWVzdCA9IDA7YCBzaG91bGQgYmUgYHZjcHUtXHUwMDNlYXJjaC5kb29yYmVsbF9yZXF1ZXN0ID0gMDtgLiBTaW5jZSBpdCBmYWlscyB0byBjb21waWxlLCBpdCBjYW5ub3QgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY29udGFpbnMgYSBjb21waWxhdGlvbiBlcnJvcjogYGNwdS1cdTAwM2VhcmNoLmRvb3JiZWxsX3JlcXVlc3QgPSAwO2Agc2hvdWxkIGJlIGB2Y3B1LVx1MDAzZWFyY2guZG9vcmJlbGxfcmVxdWVzdCA9IDA7YC4gU2luY2UgaXQgZmFpbHMgdG8gY29tcGlsZSwgaXQgY2Fubm90IGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwNDo1NzozOC4yNDg3NjYxMDVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MTA2MzgwNTExOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY29udGFpbnMgYSBjb21waWxhdGlvbiBlcnJvcjogYGNwdS1cXHUwMDNlYXJjaC5kb29yYmVsbF9yZXF1ZXN0ID0gMDtgIHNob3VsZCBiZSBgdmNwdS1cXHUwMDNlYXJjaC5kb29yYmVsbF9yZXF1ZXN0ID0gMDtgLiBTaW5jZSBpdCBmYWlscyB0byBjb21waWxlLCBpdCBjYW5ub3QgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDQ6NTc6MzguMjQ4NzcyNTY1WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjY0MjI5NDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA0MGRhMDhlNTg1MTQzNDNmY2I4ODViOGE4MmFkMDFlMjhiYzMxOWM0XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gQXVnIDMgMDQ6NTc6MzcgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYyBiL2FyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmNcXG5pbmRleCA2MWRiZWVhMzE3ZjNiLi40MGY4NzE3YjhhN2Q1IDEwMDY0NFxcbi0tLSBhL2FyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmNcXG4rKysgYi9hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jXFxuQEAgLTE1LDYgKzE1LDcgQEBcXG4gICogYnkgQWxleGFuZGVyIEdyYWYgXFx1MDAzY2FncmFmQHN1c2UuZGVcXHUwMDNlLlxcbiAgKi9cXG4gXFxuKyNpbmNsdWRlIFxcXCJhc20vZ3Vlc3Qtc3RhdGUtYnVmZmVyLmhcXFwiXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9rdm1faG9zdC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgva2VybmVsLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9lcnIuaFxcdTAwM2VcXG5AQCAtNDI1MywxMSArNDI1NCw2IEBAIHN0YXRpYyBpbnQga3ZtaHZfdmNwdV9lbnRyeV9uZXN0ZWR2MihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCB0aW1lX2xpbWl0LFxcbiBcXHRpbnQgdHJhcDtcXG4gXFx0bG9uZyByYztcXG4gXFxuLVxcdGlmICh2Y3B1LVxcdTAwM2VhcmNoLmRvb3JiZWxsX3JlcXVlc3QpIHtcXG4tXFx0XFx0dmNwdS1cXHUwMDNlYXJjaC5kb29yYmVsbF9yZXF1ZXN0ID0gMDtcXG4tXFx0XFx0a3ZtcHBjX3NldF9kcGRlcyh2Y3B1LCAxKTtcXG4tXFx0fVxcbi1cXG4gXFx0aW8gPSBcXHUwMDI2dmNwdS1cXHUwMDNlYXJjaC5uZXN0ZWR2Ml9pbztcXG4gXFxuIFxcdG1zciA9IG1mbXNyKCk7XFxuQEAgLTQyNjUsNiArNDI2MSw5IEBAIHN0YXRpYyBpbnQga3ZtaHZfdmNwdV9lbnRyeV9uZXN0ZWR2MihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCB0aW1lX2xpbWl0LFxcbiBcXHRpZiAobGF6eV9pcnFfcGVuZGluZygpKVxcbiBcXHRcXHRyZXR1cm4gMDtcXG4gXFxuK1xcdGlmICh2Y3B1LVxcdTAwM2VhcmNoLmRvb3JiZWxsX3JlcXVlc3QpXFxuK1xcdFxcdGt2bXBwY19zZXRfZHBkZXModmNwdSwgMSk7XFxuK1xcbiBcXHRyYyA9IGt2bWh2X25lc3RlZHYyX2ZsdXNoX3ZjcHUodmNwdSwgdGltZV9saW1pdCk7XFxuIFxcdGlmIChyYyBcXHUwMDNjIDApXFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbkBAIC00Mjk2LDYgKzQyOTUsMTcgQEAgc3RhdGljIGludCBrdm1odl92Y3B1X2VudHJ5X25lc3RlZHYyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IHRpbWVfbGltaXQsXFxuIFxcdGlmIChyYyBcXHUwMDNjIDApXFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXG4rXFx0LyogQ2hlY2sgaWYgcHJpdmlsZWdlZCBkb29yIGJlbGwgd2FzIHJlcXVlc3RlZCBhbmQgaGFuZGxlZCAqL1xcbitcXHRpZiAodmNwdS1cXHUwMDNlYXJjaC52Y29yZS1cXHUwMDNlZHBkZXMpIHtcXG4rXFx0XFx0a3ZtaHZfbmVzdGVkdjJfY2FjaGVkX3JlbG9hZCh2Y3B1LCBLVk1QUENfR1NJRF9EUERFUyk7XFxuK1xcdFxcdGlmICh2Y3B1LVxcdTAwM2VhcmNoLnZjb3JlLVxcdTAwM2VkcGRlcylcXG4rXFx0XFx0XFx0dmNwdS1cXHUwMDNlYXJjaC5kb29yYmVsbF9yZXF1ZXN0IHw9IHZjcHUtXFx1MDAzZWFyY2gudmNvcmUtXFx1MDAzZWRwZGVzO1xcbitcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdGNwdS1cXHUwMDNlYXJjaC5kb29yYmVsbF9yZXF1ZXN0ID0gMDtcXG4rXFx0fSBlbHNlIHtcXG4rXFx0XFx0dmNwdS1cXHUwMDNlYXJjaC5kb29yYmVsbF9yZXF1ZXN0ID0gMDtcXG4rXFx0fVxcbitcXG4gXFx0dGltZXJfcmVhcm1faG9zdF9kZWMoKnRiKTtcXG4gXFxuIFxcdC8qIFJlY29yZCBjb250ZXh0IHN3aXRjaCBhbmQgZ3Vlc3RfcnVuX3RpbWUgZGF0YSAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwNDo1NzozOC42NzYxMTk2MzhaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo4MDYzNjQ0NTcwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY29udGFpbnMgYSBjb21waWxhdGlvbiBlcnJvcjogYGNwdS1cXHUwMDNlYXJjaC5kb29yYmVsbF9yZXF1ZXN0ID0gMDtgIHNob3VsZCBiZSBgdmNwdS1cXHUwMDNlYXJjaC5kb29yYmVsbF9yZXF1ZXN0ID0gMDtgLiBTaW5jZSBpdCBmYWlscyB0byBjb21waWxlLCBpdCBjYW5ub3QgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNDBkYTA4ZTU4NTE0MzQzZmNiODg1YjhhODJhZDAxZTI4YmMzMTljNFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDMgMDQ6NTc6MzcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jIGIvYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuY1xuaW5kZXggNjFkYmVlYTMxN2YzYi4uNDBmODcxN2I4YTdkNSAxMDA2NDRcbi0tLSBhL2FyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmNcbisrKyBiL2FyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmNcbkBAIC0xNSw2ICsxNSw3IEBAXG4gICogYnkgQWxleGFuZGVyIEdyYWYgXHUwMDNjYWdyYWZAc3VzZS5kZVx1MDAzZS5cbiAgKi9cbiBcbisjaW5jbHVkZSBcImFzbS9ndWVzdC1zdGF0ZS1idWZmZXIuaFwiXG4gI2luY2x1ZGUgXHUwMDNjbGludXgva3ZtX2hvc3QuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2tlcm5lbC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZXJyLmhcdTAwM2VcbkBAIC00MjUzLDExICs0MjU0LDYgQEAgc3RhdGljIGludCBrdm1odl92Y3B1X2VudHJ5X25lc3RlZHYyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IHRpbWVfbGltaXQsXG4gXHRpbnQgdHJhcDtcbiBcdGxvbmcgcmM7XG4gXG4tXHRpZiAodmNwdS1cdTAwM2VhcmNoLmRvb3JiZWxsX3JlcXVlc3QpIHtcbi1cdFx0dmNwdS1cdTAwM2VhcmNoLmRvb3JiZWxsX3JlcXVlc3QgPSAwO1xuLVx0XHRrdm1wcGNfc2V0X2RwZGVzKHZjcHUsIDEpO1xuLVx0fVxuLVxuIFx0aW8gPSBcdTAwMjZ2Y3B1LVx1MDAzZWFyY2gubmVzdGVkdjJfaW87XG4gXG4gXHRtc3IgPSBtZm1zcigpO1xuQEAgLTQyNjUsNiArNDI2MSw5IEBAIHN0YXRpYyBpbnQga3ZtaHZfdmNwdV9lbnRyeV9uZXN0ZWR2MihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCB0aW1lX2xpbWl0LFxuIFx0aWYgKGxhenlfaXJxX3BlbmRpbmcoKSlcbiBcdFx0cmV0dXJuIDA7XG4gXG4rXHRpZiAodmNwdS1cdTAwM2VhcmNoLmRvb3JiZWxsX3JlcXVlc3QpXG4rXHRcdGt2bXBwY19zZXRfZHBkZXModmNwdSwgMSk7XG4rXG4gXHRyYyA9IGt2bWh2X25lc3RlZHYyX2ZsdXNoX3ZjcHUodmNwdSwgdGltZV9saW1pdCk7XG4gXHRpZiAocmMgXHUwMDNjIDApXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuQEAgLTQyOTYsNiArNDI5NSwxNyBAQCBzdGF0aWMgaW50IGt2bWh2X3ZjcHVfZW50cnlfbmVzdGVkdjIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgdGltZV9saW1pdCxcbiBcdGlmIChyYyBcdTAwM2MgMClcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4rXHQvKiBDaGVjayBpZiBwcml2aWxlZ2VkIGRvb3IgYmVsbCB3YXMgcmVxdWVzdGVkIGFuZCBoYW5kbGVkICovXG4rXHRpZiAodmNwdS1cdTAwM2VhcmNoLnZjb3JlLVx1MDAzZWRwZGVzKSB7XG4rXHRcdGt2bWh2X25lc3RlZHYyX2NhY2hlZF9yZWxvYWQodmNwdSwgS1ZNUFBDX0dTSURfRFBERVMpO1xuK1x0XHRpZiAodmNwdS1cdTAwM2VhcmNoLnZjb3JlLVx1MDAzZWRwZGVzKVxuK1x0XHRcdHZjcHUtXHUwMDNlYXJjaC5kb29yYmVsbF9yZXF1ZXN0IHw9IHZjcHUtXHUwMDNlYXJjaC52Y29yZS1cdTAwM2VkcGRlcztcbitcdFx0ZWxzZVxuK1x0XHRcdGNwdS1cdTAwM2VhcmNoLmRvb3JiZWxsX3JlcXVlc3QgPSAwO1xuK1x0fSBlbHNlIHtcbitcdFx0dmNwdS1cdTAwM2VhcmNoLmRvb3JiZWxsX3JlcXVlc3QgPSAwO1xuK1x0fVxuK1xuIFx0dGltZXJfcmVhcm1faG9zdF9kZWMoKnRiKTtcbiBcbiBcdC8qIFJlY29yZCBjb250ZXh0IHN3aXRjaCBhbmQgZ3Vlc3RfcnVuX3RpbWUgZGF0YSAqL1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDQ6NTc6MzguNjc2MTIxNzg5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDM0MTY5MTcyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEtWTS9Qb3dlclBDIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuY2AsIHNwZWNpZmljYWxseSB0aGUgYGt2bWh2X3ZjcHVfZW50cnlfbmVzdGVkdjJgIGZ1bmN0aW9uLiBJdCBzZWVtcyBsaWtlIHdlJ3JlIG1vdmluZyBzb21lIGxvZ2ljIGFyb3VuZCByZWxhdGVkIHRvIGB2Y3B1LVx1MDAzZWFyY2guZG9vcmJlbGxfcmVxdWVzdGAgYW5kIGBrdm1wcGNfc2V0X2RwZGVzYC4gSG1tLCBhbHNvIGxvb2tzIGxpa2UgdGhlcmUncyBhbiBhZGRlZCBjaGVjayBmb3IgYHZjcHUtXHUwMDNlYXJjaC52Y29yZS1cdTAwM2VkcGRlc2AgYW5kIGFuIHVwZGF0ZSB0byBgdmNwdS1cdTAwM2VhcmNoLmRvb3JiZWxsX3JlcXVlc3RgIHRoZXJlIHRvby4gVGhpcyBjb3VsZCBiZSBpbnRlcmVzdGluZyBmcm9tIGEgcGVyZm9ybWFuY2UgcGVyc3BlY3RpdmUsIG9yIG1heWJlIHJlbGF0ZWQgdG8gc29tZSBuZXcgZmVhdHVyZS5cblxuTGV0IG1lIGp1c3QgcXVpY2tseSBzY2FuIGZvciBwb3RlbnRpYWwgdHlwb3Mgb3Igc3VidGxlIGJ1Z3MuIEFoLCB3YWl0IGEgc2Vjb25kLiBJIHNlZSB0aGlzIGxpbmU6IGBjcHUtXHUwMDNlYXJjaC5kb29yYmVsbF9yZXF1ZXN0ID0gMDtgLiBUaGF0IGxvb2tzIGEgYml0IG9kZDsgaXMgYGNwdWAgYWN0dWFsbHkgaW4gc2NvcGUgd2l0aGluIGBrdm1odl92Y3B1X2VudHJ5X25lc3RlZHYyYD8gSSBkb24ndCByZWNhbGwgc2VlaW5nIGl0IGRlZmluZWQgdGhlcmUuIEJldHRlciBkb3VibGUtY2hlY2sgdGhlIGNvbnRleHQsIGVzcGVjaWFsbHkgYXJvdW5kIHRoYXQgYXJlYSBvZiBgYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuY2AgYXJvdW5kIGxpbmUgNDI5NS4gVGhpcyBjb3VsZCBiZSBhIHNpbXBsZSB0eXBvLCBvciBpdCBtaWdodCBwb2ludCB0byBhIGJpZ2dlciBpc3N1ZSB3aXRoIGhvdyB0aGF0IHZhcmlhYmxlIGlzIGJlaW5nIHVzZWQuIExldCdzIHNlZS4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTgyLCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDQ6NTc6NDMuMDE3ODE2MTEyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2OTEzNTI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bWh2X3ZjcHVfZW50cnlfbmVzdGVkdjJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jPTQyNDQ9c3RhdGljIHZvaWQgZG9fdHJhY2VfbmVzdGVkX2NzX3RpbWUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00MjQ4LVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NDI0OTpzdGF0aWMgaW50IGt2bWh2X3ZjcHVfZW50cnlfbmVzdGVkdjIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgdGltZV9saW1pdCxcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQyNTAtXFx0XFx0XFx0XFx0ICAgICB1bnNpZ25lZCBsb25nIGxwY3IsIHU2NCAqdGIpXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jPTQ0MjM9c3RhdGljIGludCBrdm1odl9wOV9ndWVzdF9lbnRyeShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCB0aW1lX2xpbWl0LFxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00NDQ2LVxcdFxcdGVsc2VcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjQ0NDc6XFx0XFx0XFx0dHJhcCA9IGt2bWh2X3ZjcHVfZW50cnlfbmVzdGVkdjIodmNwdSwgdGltZV9saW1pdCwgbHBjciwgdGIpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNDQ0OC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDQ6NTc6NDMuMDY0NzM1NDA5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDkzNTg3ODU2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKkRpdmluZyBpbnRvIGBrdm1odl92Y3B1X2VudHJ5X25lc3RlZHYyYCoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZGlnIGludG8gYGt2bWh2X3ZjcHVfZW50cnlfbmVzdGVkdjJgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgd2hhdCBhcmUgd2UgcmVhbGx5IGxvb2tpbmcgYXQgaGVyZT8gSXQncyBjbGVhcmx5IGEgY3JpdGljYWwgZW50cnkgcG9pbnQg4oCTIHRoZSBuYW1lIHNjcmVhbXMgbmVzdGVkIHZpcnR1YWxpemF0aW9uIOKAkyBzbyB0aGlzIGlzIHdoZXJlIGEgdmlydHVhbCBDUFUgKHZDUFUpIG9mIGEgZ3Vlc3QgaXMgZW50ZXJpbmcgYSBuZXN0ZWQgaHlwZXJ2aXNvciAobGlrZWx5IEtWTS1IVikuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3cuIFdoYXQncyB0aGUgY29udGV4dCBzd2l0Y2hpbmcgaGFwcGVuaW5nPyBXaGF0IHN0YXRlIGlzIGJlaW5nIHNhdmVkIGFuZCByZXN0b3JlZD8gSXMgdGhlcmUgYW55dGhpbmcgY2xldmVyIGdvaW5nIG9uIHJlbGF0ZWQgdG8gc2hhZG93IHBhZ2luZyBvciBvdGhlciBtZW1vcnkgbWFuYWdlbWVudCB0cmlja3M/XG5cbk15IGluaXRpYWwgcXVlc3Rpb25zIGludm9sdmU6XG5cbiogICAqKlN5bmNocm9uaXphdGlvbjoqKiBIb3cgaXMgdGhpcyBmdW5jdGlvbiBwcm90ZWN0ZWQgYWdhaW5zdCBjb25jdXJyZW50IGFjY2Vzcz8gSXMgaXQgcmVlbnRyYW50PyBBbnkgbG9ja3Mgb3IgYXRvbWljIG9wZXJhdGlvbnMgYmVpbmcgdXNlZCB0byBrZWVwIHRoaW5ncyBzYW5lIHdoZW4gbXVsdGlwbGUgdkNQVXMgcG90ZW50aWFsbHkgZW50ZXIgdGhpcyByb3V0aW5lIHNpbXVsdGFuZW91c2x5P1xuKiAgICoqUmVnaXN0ZXJzOioqIFdoYXQgcmVnaXN0ZXJzIGFyZSBiZWluZyBzYXZlZCwgYW5kIHdoeT8gSXMgaXQgYSBjb21wbGV0ZSBzYXZlIG9mIHRoZSBndWVzdCdzIGNvbnRleHQsIG9yIGEgcGFydGlhbCBzYXZlIHdpdGggb3B0aW1pemF0aW9ucz8gV2hhdCBhcmNoaXRlY3R1cmFsIGNvbnNpZGVyYXRpb25zIGFyZSBkcml2aW5nIHRoZSBjaG9pY2U/XG4qICAgKipFUFQvU2hhZG93IFBhZ2luZzoqKiBJIG5lZWQgdG8gbG9vayBjbG9zZWx5IGF0IHdoZXRoZXIgYW5kIGhvdyBleHRlbmRlZCBwYWdlIHRhYmxlcyAoRVBUKSBvciBhbnkga2luZCBvZiBzaGFkb3cgcGFnaW5nIG1lY2hhbmlzbSBpcyBiZWluZyBtYW5pcHVsYXRlZC4gTmVzdGVkIHZpcnR1YWxpemF0aW9uIGRlbWFuZHMgZWZmaWNpZW50IHRyYW5zbGF0aW9uIGJldHdlZW4gZ3Vlc3QgcGh5c2ljYWwgYWRkcmVzc2VzLCBob3N0IHBoeXNpY2FsIGFkZHJlc3NlcywgYW5kIHBvdGVudGlhbGx5LCB0aGUgbmVzdGVkIGh5cGVydmlzb3IncyBwaHlzaWNhbCBhZGRyZXNzZXMuIFRoZSBjb3JlIG9mIHRoZSBwZXJmb3JtYW5jZSBpcyBmcmVxdWVudGx5IHRoZSBwYWdpbmcgcGF0aC5cbiogICAqKlZNIEV4aXQvRW50cnk6KiogSG93IGRvZXMgdGhpcyBmdW5jdGlvbiByZWxhdGUgdG8gdGhlIFZNIGVudHJ5IGFuZCBleGl0IG1lY2hhbmlzbXM/IElzIHRoaXMgZnVuY3Rpb24gY2FsbGVkIGFmdGVyIGEgVk0gZXhpdCwgYW5kIGlmIHNvLCBob3cgZG9lcyBpdCBoYW5kbGUgdGhlIGV4Y2VwdGlvbiB0aGF0IGNhdXNlZCB0aGUgZXhpdD8gV2hhdCBhYm91dCB0aGUgcmV2ZXJzZT9cbiogICAqKkVycm9yIEhhbmRsaW5nOioqIFdoYXQncyB0aGUgZXJyb3IgaGFuZGxpbmcgbG9vayBsaWtlPyBBcmUgdGhlcmUgYW55IHBvdGVudGlhbCBmYWlsdXJlIHBvaW50cyB0aGF0IG5lZWQgY2FyZWZ1bCBjb25zaWRlcmF0aW9uIGluIGEgcHJvZHVjdGlvbiBzZXR0aW5nPyBXaGF0IGxvZ2dpbmcgb3IgZGVidWdnaW5nIGZhY2lsaXRpZXMgYXJlIGltcGxlbWVudGVkIGhlcmU/XG4qICAgKipWaXJ0dWFsaXphdGlvbiBJbnN0cnVjdGlvbnM6KiogVGhlIGZ1bmN0aW9uJ3MgdXNlIG9mIHZpcnR1YWxpemF0aW9uIGluc3RydWN0aW9ucyBpcywgb2YgY291cnNlLCBjcml0aWNhbC4gVk0tRW50ZXIgYW5kIFZNLUV4aXQgaW5zdHJ1Y3Rpb25zIGFyZSB0aGUgaGVhcnQgb2YgdGhpcy4gSXQgd2lsbCBiZSBpbXBvcnRhbnQgdG8gY29uZmlybSB0aGUgY29ycmVjdCBoYW5kbGluZyBvZiBhbnkgY29udHJvbCByZWdpc3RlcnMgaW52b2x2ZWQgKGUuZy4sIFZNQ1MpLlxuXG5VbHRpbWF0ZWx5LCBJIGV4cGVjdCB0aGlzIGZ1bmN0aW9uIHRvIGJlIGEgbGluY2hwaW4gaW4gdGhlIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiBzdGFjay4gVW5kZXJzdGFuZGluZyBpdCB0aG9yb3VnaGx5IGlzIHRoZSBrZXkgdG8gYm90aCBvcHRpbWl6aW5nIHBlcmZvcm1hbmNlIGFuZCBlbnN1cmluZyByb2J1c3RuZXNzLiBMZXQncyBzZWUgd2hhdCdzIGFjdHVhbGx5IGluIGl0Li4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0MjMsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwNDo1Nzo0OC4wMDA2MTY1NTdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjc2MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA0MjQ5LFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiNDI0OTpcXHRzdGF0aWMgaW50IGt2bWh2X3ZjcHVfZW50cnlfbmVzdGVkdjIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgdGltZV9saW1pdCxcXG40MjUwOlxcdFxcdFxcdFxcdFxcdCAgICAgdW5zaWduZWQgbG9uZyBscGNyLCB1NjQgKnRiKVxcbjQyNTE6XFx0e1xcbjQyNTI6XFx0XFx0c3RydWN0IGt2bWh2X25lc3RlZHYyX2lvICppbztcXG40MjUzOlxcdFxcdHVuc2lnbmVkIGxvbmcgbXNyLCBpO1xcbjQyNTQ6XFx0XFx0aW50IHRyYXA7XFxuNDI1NTpcXHRcXHRsb25nIHJjO1xcbjQyNTY6XFx0XFxuNDI1NzpcXHRcXHRpbyA9IFxcdTAwMjZ2Y3B1LVxcdTAwM2VhcmNoLm5lc3RlZHYyX2lvO1xcbjQyNTg6XFx0XFxuNDI1OTpcXHRcXHRtc3IgPSBtZm1zcigpO1xcbjQyNjA6XFx0XFx0a3ZtcHBjX21zcl9oYXJkX2Rpc2FibGVfc2V0X2ZhY2lsaXRpZXModmNwdSwgbXNyKTtcXG40MjYxOlxcdFxcdGlmIChsYXp5X2lycV9wZW5kaW5nKCkpXFxuNDI2MjpcXHRcXHRcXHRyZXR1cm4gMDtcXG40MjYzOlxcdFxcbjQyNjQ6XFx0XFx0aWYgKHZjcHUtXFx1MDAzZWFyY2guZG9vcmJlbGxfcmVxdWVzdClcXG40MjY1OlxcdFxcdFxcdGt2bXBwY19zZXRfZHBkZXModmNwdSwgMSk7XFxuNDI2NjpcXHRcXG40MjY3OlxcdFxcdHJjID0ga3ZtaHZfbmVzdGVkdjJfZmx1c2hfdmNwdSh2Y3B1LCB0aW1lX2xpbWl0KTtcXG40MjY4OlxcdFxcdGlmIChyYyBcXHUwMDNjIDApXFxuNDI2OTpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG40MjcwOlxcdFxcbjQyNzE6XFx0XFx0a3ZtcHBjX2dzZV9wdXRfdTY0KGlvLVxcdTAwM2V2Y3B1X3J1bl9pbnB1dCwgS1ZNUFBDX0dTSURfTFBDUiwgbHBjcik7XFxuNDI3MjpcXHRcXG40MjczOlxcdFxcdGFjY3VtdWxhdGVfdGltZSh2Y3B1LCBcXHUwMDI2dmNwdS1cXHUwMDNlYXJjaC5pbl9ndWVzdCk7XFxuNDI3NDpcXHRcXHRyYyA9IHBscGFyX2d1ZXN0X3J1bl92Y3B1KDAsIHZjcHUtXFx1MDAzZWt2bS1cXHUwMDNlYXJjaC5scGlkLCB2Y3B1LVxcdTAwM2V2Y3B1X2lkLFxcbjQyNzU6XFx0XFx0XFx0XFx0XFx0ICBcXHUwMDI2dHJhcCwgXFx1MDAyNmkpO1xcbjQyNzY6XFx0XFxuNDI3NzpcXHRcXHRpZiAocmMgIT0gSF9TVUNDRVNTKSB7XFxuNDI3ODpcXHRcXHRcXHRwcl9lcnIoXFxcIktWTSBHdWVzdCBSdW4gVkNQVSBoY2FsbCBmYWlsZWRcXFxcblxcXCIpO1xcbjQyNzk6XFx0XFx0XFx0aWYgKHJjID09IEhfSU5WQUxJRF9FTEVNRU5UX0lEKVxcbjQyODA6XFx0XFx0XFx0XFx0cHJfZXJyKFxcXCJLVk06IEd1ZXN0IFJ1biBWQ1BVIGludmFsaWQgZWxlbWVudCBpZCBhdCAlbGRcXFxcblxcXCIsIGkpO1xcbjQyODE6XFx0XFx0XFx0ZWxzZSBpZiAocmMgPT0gSF9JTlZBTElEX0VMRU1FTlRfU0laRSlcXG40MjgyOlxcdFxcdFxcdFxcdHByX2VycihcXFwiS1ZNOiBHdWVzdCBSdW4gVkNQVSBpbnZhbGlkIGVsZW1lbnQgc2l6ZSBhdCAlbGRcXFxcblxcXCIsIGkpO1xcbjQyODM6XFx0XFx0XFx0ZWxzZSBpZiAocmMgPT0gSF9JTlZBTElEX0VMRU1FTlRfVkFMVUUpXFxuNDI4NDpcXHRcXHRcXHRcXHRwcl9lcnIoXFxcIktWTTogR3Vlc3QgUnVuIFZDUFUgaW52YWxpZCBlbGVtZW50IHZhbHVlIGF0ICVsZFxcXFxuXFxcIiwgaSk7XFxuNDI4NTpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG40Mjg2OlxcdFxcdH1cXG40Mjg3OlxcdFxcdGFjY3VtdWxhdGVfdGltZSh2Y3B1LCBcXHUwMDI2dmNwdS1cXHUwMDNlYXJjaC5ndWVzdF9leGl0KTtcXG40Mjg4OlxcdFxcbjQyODk6XFx0XFx0KnRiID0gbWZ0YigpO1xcbjQyOTA6XFx0XFx0a3ZtcHBjX2dzbV9yZXNldChpby1cXHUwMDNldmNwdV9tZXNzYWdlKTtcXG40MjkxOlxcdFxcdGt2bXBwY19nc21fcmVzZXQoaW8tXFx1MDAzZXZjb3JlX21lc3NhZ2UpO1xcbjQyOTI6XFx0XFx0a3ZtcHBjX2dzYm1femVybyhcXHUwMDI2aW8tXFx1MDAzZXZhbGlkcyk7XFxuNDI5MzpcXHRcXG40Mjk0OlxcdFxcdHJjID0ga3ZtaHZfbmVzdGVkdjJfcGFyc2Vfb3V0cHV0KHZjcHUpO1xcbjQyOTU6XFx0XFx0aWYgKHJjIFxcdTAwM2MgMClcXG40Mjk2OlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbjQyOTc6XFx0XFxuNDI5ODpcXHRcXHQvKiBDaGVjayBpZiBwcml2aWxlZ2VkIGRvb3IgYmVsbCB3YXMgcmVxdWVzdGVkIGFuZCBoYW5kbGVkICovXFxuNDI5OTpcXHRcXHRpZiAodmNwdS1cXHUwMDNlYXJjaC52Y29yZS1cXHUwMDNlZHBkZXMpIHtcXG40MzAwOlxcdFxcdFxcdGt2bWh2X25lc3RlZHYyX2NhY2hlZF9yZWxvYWQodmNwdSwgS1ZNUFBDX0dTSURfRFBERVMpO1xcbjQzMDE6XFx0XFx0XFx0aWYgKHZjcHUtXFx1MDAzZWFyY2gudmNvcmUtXFx1MDAzZWRwZGVzKVxcbjQzMDI6XFx0XFx0XFx0XFx0dmNwdS1cXHUwMDNlYXJjaC5kb29yYmVsbF9yZXF1ZXN0IHw9IHZjcHUtXFx1MDAzZWFyY2gudmNvcmUtXFx1MDAzZWRwZGVzO1xcbjQzMDM6XFx0XFx0XFx0ZWxzZVxcbjQzMDQ6XFx0XFx0XFx0XFx0Y3B1LVxcdTAwM2VhcmNoLmRvb3JiZWxsX3JlcXVlc3QgPSAwO1xcbjQzMDU6XFx0XFx0fSBlbHNlIHtcXG40MzA2OlxcdFxcdFxcdHZjcHUtXFx1MDAzZWFyY2guZG9vcmJlbGxfcmVxdWVzdCA9IDA7XFxuNDMwNzpcXHRcXHR9XFxuNDMwODpcXHRcXG40MzA5OlxcdFxcdHRpbWVyX3JlYXJtX2hvc3RfZGVjKCp0Yik7XFxuNDMxMDpcXHRcXG40MzExOlxcdFxcdC8qIFJlY29yZCBjb250ZXh0IHN3aXRjaCBhbmQgZ3Vlc3RfcnVuX3RpbWUgZGF0YSAqL1xcbjQzMTI6XFx0XFx0aWYgKGt2bWh2X2dldF9sMl9jb3VudGVyc19zdGF0dXMoKSlcXG40MzEzOlxcdFxcdFxcdGRvX3RyYWNlX25lc3RlZF9jc190aW1lKHZjcHUpO1xcbjQzMTQ6XFx0XFxuNDMxNTpcXHRcXHRyZXR1cm4gdHJhcDtcXG40MzE2OlxcdH1cXG40MzE3OlxcdFxcbjQzMTg6XFx0LyogY2FsbCBvdXIgaHlwZXJ2aXNvciB0byBsb2FkIHVwIEhWIHJlZ3MgYW5kIGdvICovXFxuNDMxOTpcXHRzdGF0aWMgaW50IGt2bWh2X3ZjcHVfZW50cnlfcDlfbmVzdGVkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IHRpbWVfbGltaXQsIHVuc2lnbmVkIGxvbmcgbHBjciwgdTY0ICp0YilcXG40MzIwOlxcdHtcXG40MzIxOlxcdFxcdHVuc2lnbmVkIGxvbmcgaG9zdF9wc3NjcjtcXG40MzIyOlxcdFxcdHVuc2lnbmVkIGxvbmcgbXNyO1xcbjQzMjM6XFx0XFx0c3RydWN0IGh2X2d1ZXN0X3N0YXRlIGh2cmVncztcXG40MzI0OlxcdFxcdHN0cnVjdCBwOV9ob3N0X29zX3NwcnMgaG9zdF9vc19zcHJzO1xcbjQzMjU6XFx0XFx0czY0IGRlYztcXG40MzI2OlxcdFxcdGludCB0cmFwO1xcbjQzMjc6XFx0XFxuNDMyODpcXHRcXHRtc3IgPSBtZm1zcigpO1xcbjQzMjk6XFx0XFxuNDMzMDpcXHRcXHRzYXZlX3A5X2hvc3Rfb3Nfc3BycyhcXHUwMDI2aG9zdF9vc19zcHJzKTtcXG40MzMxOlxcdFxcbjQzMzI6XFx0XFx0LypcXG40MzMzOlxcdFxcdCAqIFdlIG5lZWQgdG8gc2F2ZSBhbmQgcmVzdG9yZSB0aGUgZ3Vlc3QgdmlzaWJsZSBwYXJ0IG9mIHRoZVxcbjQzMzQ6XFx0XFx0ICogcHNzY3IgKGkuZS4gdXNpbmcgU1BSTl9QU1NDUl9QUikgc2luY2UgdGhlIGh5cGVydmlzb3JcXG40MzM1OlxcdFxcdCAqIGRvZXNuJ3QgZG8gdGhpcyBmb3IgdXMuIE5vdGUgb25seSByZXF1aXJlZCBpZiBwc2VyaWVzIHNpbmNlXFxuNDMzNjpcXHRcXHQgKiB0aGlzIGlzIGRvbmUgaW4ga3ZtaHZfdmNwdV9lbnRyeV9wOSgpIGJlbG93IG90aGVyd2lzZS5cXG40MzM3OlxcdFxcdCAqL1xcbjQzMzg6XFx0XFx0aG9zdF9wc3NjciA9IG1mc3ByKFNQUk5fUFNTQ1JfUFIpO1xcbjQzMzk6XFx0XFxuNDM0MDpcXHRcXHRrdm1wcGNfbXNyX2hhcmRfZGlzYWJsZV9zZXRfZmFjaWxpdGllcyh2Y3B1LCBtc3IpO1xcbjQzNDE6XFx0XFx0aWYgKGxhenlfaXJxX3BlbmRpbmcoKSlcXG40MzQyOlxcdFxcdFxcdHJldHVybiAwO1xcbjQzNDM6XFx0XFxuNDM0NDpcXHRcXHRpZiAodW5saWtlbHkobG9hZF92Y3B1X3N0YXRlKHZjcHUsIFxcdTAwMjZob3N0X29zX3NwcnMpKSlcXG40MzQ1OlxcdFxcdFxcdG1zciA9IG1mbXNyKCk7IC8qIFRNIHJlc3RvcmUgY2FuIHVwZGF0ZSBtc3IgKi9cXG40MzQ2OlxcdFxcbjQzNDc6XFx0XFx0aWYgKHZjcHUtXFx1MDAzZWFyY2gucHNzY3IgIT0gaG9zdF9wc3NjcilcXG40MzQ4OlxcdFxcdFxcdG10c3ByKFNQUk5fUFNTQ1JfUFIsIHZjcHUtXFx1MDAzZWFyY2gucHNzY3IpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwNDo1Nzo0OC4wMDA4ODcxMDdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NzE4MDM4NDQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEZWJ1Z2dpbmcgYSBQb3RlbnRpYWwgUmFjZSBDb25kaXRpb24qKlxuXG5BbHJpZ2h0LCByaWdodCB0aGVyZSwgbGluZSA0MzA0IOKAkyBgY3B1LVx1MDAzZWFyY2guZG9vcmJlbGxfcmVxdWVzdCA9IDA7YC4gSSdtIGZvY3VzaW5nIGluIG9uIHRoYXQgYml0IG9mIGNvZGUuIFNwZWNpZmljYWxseSwgdGhlIGFzc2lnbm1lbnQuIE15IGluaXRpYWwgaHVuY2ggaXMgdGhhdCB3ZSBhcmUgdHJ5aW5nIHRvIHNldCB0aGUgYGRvb3JiZWxsX3JlcXVlc3RgIGZsYWcgdG8gemVybyBvbiBhIHBhcnRpY3VsYXIgQ1BVJ3MgYXJjaGl0ZWN0dXJlLiBTb3VuZHMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaCwgYnV0IG15IGludGVybmFsIGFsYXJtIGJlbGxzIGFyZSBhbHJlYWR5IHN0YXJ0aW5nIHRvIHJpbmcuXG5cblRoZSBjcml0aWNhbCBxdWVzdGlvbiBpbW1lZGlhdGVseSBzdXJmYWNpbmcgaW4gbXkgbWluZCBpczogd2hlcmUgaXMgYGNwdWAgY29taW5nIGZyb20/IEJlZm9yZSBJIGRpdmUgdG9vIGRlZXAsIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBgY3B1YCBpcyBwcm9wZXJseSBkZWNsYXJlZCBhbmQgaW5pdGlhbGl6ZWQuIElzIHRoaXMgYSBsb2NhbCB2YXJpYWJsZSB3aXRoaW4gYSBmdW5jdGlvbiwgb3IgcGVyaGFwcyBhIGdsb2JhbCB2YXJpYWJsZSBkZWZpbmVkIHNvbWV3aGVyZSBlbHNlIGluIHRoZSBjb2RlYmFzZT8gSXQncyBjcnVjaWFsIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlIGFuZCBsaWZldGltZSBvZiB0aGlzIHZhcmlhYmxlLiBBbHRlcm5hdGl2ZWx5LCBjb3VsZCBpdCBldmVuIGJlIGEgbWFjcm8/IE1hY3JvcyBhcmUgdHJpY2t5IGFuZCBjYW4gaW50cm9kdWNlIHN1YnRsZSBidWdzIGlmIHlvdSBhcmUgbm90IHZlcnkgY2FyZWZ1bC4gSSBuZWVkIHRvIHRyYWNlIGJhY2sgaG93IGl0J3MgZGVmaW5lZCBhbmQgd2hlbi93aGVyZSBpdCdzIHVzZWQuIFRoaXMgcXVpY2sgY2hlY2sgd2lsbCBzYXZlIGEgbG90IG9mIGhlYWQtc2NyYXRjaGluZyBsYXRlciBpZiBpdCdzIG5vdCB3aGF0IEkgZXhwZWN0IGl0IHRvIGJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NzIzLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwNDo1Nzo1My43MTg5Mjc5OTZaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg0MTA1MjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY3B1XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAzNTE4IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTI5LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9hbm9uX2lub2Rlcy5oXFx1MDAzZVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MzA6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2NwdS5oXFx1MDAzZVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MzE6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2NwdW1hc2suaFxcdTAwM2VcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTMyLSNpbmNsdWRlIFxcdTAwM2NsaW51eC9zcGlubG9jay5oXFx1MDAzZVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01NC0jaW5jbHVkZSBcXHUwMDNjYXNtL2Rpc2Fzc2VtYmxlLmhcXHUwMDNlXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1NTojaW5jbHVkZSBcXHUwMDNjYXNtL2NwdXRhYmxlLmhcXHUwMDNlXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01Ni0jaW5jbHVkZSBcXHUwMDNjYXNtL2NhY2hlZmx1c2guaFxcdTAwM2VcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjUtI2luY2x1ZGUgXFx1MDAzY2FzbS9wcm9jZXNzb3IuaFxcdTAwM2VcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjY2OiNpbmNsdWRlIFxcdTAwM2Nhc20vY3B1dGhyZWFkcy5oXFx1MDAzZVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjctI2luY2x1ZGUgXFx1MDAzY2FzbS9wYWdlLmhcXHUwMDNlXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jPTEzMz1NT0RVTEVfUEFSTV9ERVNDKG5lc3RlZCwgXFxcIkVuYWJsZSBuZXN0ZWQgdmlydHVhbGl6YXRpb24gKG9ubHkgb24gUE9XRVI5KVxcXCIpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMTM0LVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MTM1OnN0YXRpYyBpbnQga3ZtcHBjX2h2X3NldHVwX2h0YWJfcm1hKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0xMzYtXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jPTE1MT1zdGF0aWMgdW5zaWduZWQgbG9uZyBwOF9yd21yX3ZhbHVlc1tNQVhfU01UX1RIUkVBRFMgKyAxXSA9IHtcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMTYyLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MTYzOnN0YXRpYyBpbmxpbmUgc3RydWN0IGt2bV92Y3B1ICpuZXh0X3J1bm5hYmxlX3RocmVhZChzdHJ1Y3Qga3ZtcHBjX3Zjb3JlICp2YyxcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTE2NC1cXHRcXHRpbnQgKmlwKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0xNjYtXFx0aW50IGkgPSAqaXA7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoxNjc6XFx0c3RydWN0IGt2bV92Y3B1ICp2Y3B1O1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMTY4LVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMTY5LVxcdHdoaWxlICgrK2kgXFx1MDAzYyBNQVhfU01UX1RIUkVBRFMpIHtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjE3MDpcXHRcXHR2Y3B1ID0gUkVBRF9PTkNFKHZjLVxcdTAwM2VydW5uYWJsZV90aHJlYWRzW2ldKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjE3MTpcXHRcXHRpZiAodmNwdSkge1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMTcyLVxcdFxcdFxcdCppcCA9IGk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoxNzM6XFx0XFx0XFx0cmV0dXJuIHZjcHU7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0xNzQtXFx0XFx0fVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0xNzktLyogVXNlZCB0byB0cmF2ZXJzZSB0aGUgbGlzdCBvZiBydW5uYWJsZSB0aHJlYWRzIGZvciBhIGdpdmVuIHZjb3JlICovXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoxODA6I2RlZmluZSBmb3JfZWFjaF9ydW5uYWJsZV90aHJlYWQoaSwgdmNwdSwgdmMpIFxcXFxcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjE4MTpcXHRmb3IgKGkgPSAtMTsgKHZjcHUgPSBuZXh0X3J1bm5hYmxlX3RocmVhZCh2YywgXFx1MDAyNmkpKTsgKVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMTgyLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MTgzOnN0YXRpYyBib29sIGt2bXBwY19pcGlfdGhyZWFkKGludCBjcHUpXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0xODQte1xcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0xOTAtXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoxOTE6XFx0LyogT24gUE9XRVI5IHdlIGNhbiB1c2UgbXNnc25kIHRvIElQSSBhbnkgY3B1ICovXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoxOTI6XFx0aWYgKGNwdV9oYXNfZmVhdHVyZShDUFVfRlRSX0FSQ0hfMzAwKSkge1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MTkzOlxcdFxcdG1zZyB8PSBnZXRfaGFyZF9zbXBfcHJvY2Vzc29yX2lkKGNwdSk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0xOTQtXFx0XFx0c21wX21iKCk7XFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTE5OS1cXHQvKiBPbiBQT1dFUjggZm9yIElQSXMgdG8gdGhyZWFkcyBpbiB0aGUgc2FtZSBjb3JlLCB1c2UgbXNnc25kICovXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyMDA6XFx0aWYgKGNwdV9oYXNfZmVhdHVyZShDUFVfRlRSX0FSQ0hfMjA3UykpIHtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTIwMS1cXHRcXHRwcmVlbXB0X2Rpc2FibGUoKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjIwMjpcXHRcXHRpZiAoY3B1X2ZpcnN0X3RocmVhZF9zaWJsaW5nKGNwdSkgPT1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjIwMzpcXHRcXHQgICAgY3B1X2ZpcnN0X3RocmVhZF9zaWJsaW5nKHNtcF9wcm9jZXNzb3JfaWQoKSkpIHtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjIwNDpcXHRcXHRcXHRtc2cgfD0gY3B1X3RocmVhZF9pbl9jb3JlKGNwdSk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yMDUtXFx0XFx0XFx0c21wX21iKCk7XFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTIxMy0jaWYgZGVmaW5lZChDT05GSUdfUFBDX0lDUF9OQVRJVkUpIFxcdTAwMjZcXHUwMDI2IGRlZmluZWQoQ09ORklHX1NNUClcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjIxNDpcXHRpZiAoY3B1IFxcdTAwM2U9IDAgXFx1MDAyNlxcdTAwMjYgY3B1IFxcdTAwM2MgbnJfY3B1X2lkcykge1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjE1OlxcdFxcdGlmIChwYWNhX3B0cnNbY3B1XS1cXHUwMDNla3ZtX2hzdGF0ZS54aWNzX3BoeXMpIHtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjIxNjpcXHRcXHRcXHR4aWNzX3dha2VfY3B1KGNwdSk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yMTctXFx0XFx0XFx0cmV0dXJuIHRydWU7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yMTgtXFx0XFx0fVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjE5OlxcdFxcdG9wYWxfaW50X3NldF9tZnJyKGdldF9oYXJkX3NtcF9wcm9jZXNzb3JfaWQoY3B1KSwgSVBJX1BSSU9SSVRZKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTIyMC1cXHRcXHRyZXR1cm4gdHJ1ZTtcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjI2LVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjI3OnN0YXRpYyB2b2lkIGt2bXBwY19mYXN0X3ZjcHVfa2lja19odihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yMjgte1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjI5OlxcdGludCBjcHU7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yMzAtXFx0c3RydWN0IHJjdXdhaXQgKndhaXRwO1xcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yMzMtXFx0ICogcmN1d2FpdF93YWtlX3VwIGNvbnRhaW5zIHNtcF9tYigpIHdoaWNoIG9yZGVycyBwcmlvciBzdG9yZXMgdGhhdFxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjM0OlxcdCAqIGNyZWF0ZSBwZW5kaW5nIHdvcmsgdnMgYmVsb3cgbG9hZHMgb2YgY3B1IGZpZWxkcy4gVGhlIG90aGVyIHNpZGVcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjIzNTpcXHQgKiBpcyB0aGUgYmFycmllciBpbiB2Y3B1IHJ1biB0aGF0IG9yZGVycyBzZXR0aW5nIHRoZSBjcHUgZmllbGRzIHZzXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yMzYtXFx0ICogdGVzdGluZyBmb3IgcGVuZGluZyB3b3JrLlxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yMzgtXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyMzk6XFx0d2FpdHAgPSBrdm1fYXJjaF92Y3B1X2dldF93YWl0KHZjcHUpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjQwLVxcdGlmIChyY3V3YWl0X3dha2VfdXAod2FpdHApKVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjQxOlxcdFxcdCsrdmNwdS1cXHUwMDNlc3RhdC5nZW5lcmljLmhhbHRfd2FrZXVwO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjQyLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjQzOlxcdGNwdSA9IFJFQURfT05DRSh2Y3B1LVxcdTAwM2VhcmNoLnRocmVhZF9jcHUpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjQ0OlxcdGlmIChjcHUgXFx1MDAzZT0gMCBcXHUwMDI2XFx1MDAyNiBrdm1wcGNfaXBpX3RocmVhZChjcHUpKVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjQ1LVxcdFxcdHJldHVybjtcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjQ3LVxcdC8qIENQVSBwb2ludHMgdG8gdGhlIGZpcnN0IHRocmVhZCBvZiB0aGUgY29yZSAqL1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjQ4OlxcdGNwdSA9IHZjcHUtXFx1MDAzZWNwdTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjI0OTpcXHRpZiAoY3B1IFxcdTAwM2U9IDAgXFx1MDAyNlxcdTAwMjYgY3B1IFxcdTAwM2MgbnJfY3B1X2lkcyBcXHUwMDI2XFx1MDAyNiBjcHVfb25saW5lKGNwdSkpXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyNTA6XFx0XFx0c21wX3NlbmRfcmVzY2hlZHVsZShjcHUpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjUxLX1cXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjUzLS8qXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyNTQ6ICogV2UgdXNlIHRoZSB2Y3B1X2xvYWQvcHV0IGZ1bmN0aW9ucyB0byBtZWFzdXJlIHN0b2xlbiB0aW1lLlxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjU1LSAqXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyNTY6ICogU3RvbGVuIHRpbWUgaXMgY291bnRlZCBhcyB0aW1lIHdoZW4gZWl0aGVyIHRoZSB2Y3B1IGlzIGFibGUgdG9cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTI1Ny0gKiBydW4gYXMgcGFydCBvZiBhIHZpcnR1YWwgY29yZSwgYnV0IHRoZSB0YXNrIHJ1bm5pbmcgdGhlIHZjb3JlXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyNTg6ICogaXMgcHJlZW1wdGVkIG9yIHNsZWVwaW5nLCBvciB3aGVuIHRoZSB2Y3B1IG5lZWRzIHNvbWV0aGluZyBkb25lXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyNTk6ICogaW4gdGhlIGtlcm5lbCBieSB0aGUgdGFzayBydW5uaW5nIHRoZSB2Y3B1LCBidXQgdGhhdCB0YXNrIGlzXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yNjAtICogcHJlZW1wdGVkIG9yIHNsZWVwaW5nLiAgVGhvc2UgdHdvIHRoaW5ncyBoYXZlIHRvIGJlIGNvdW50ZWRcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjI2MTogKiBzZXBhcmF0ZWx5LCBzaW5jZSBvbmUgb2YgdGhlIHZjcHUgdGFza3Mgd2lsbCB0YWtlIG9uIHRoZSBqb2JcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjI2MjogKiBvZiBydW5uaW5nIHRoZSBjb3JlLCBhbmQgdGhlIG90aGVyIHZjcHUgdGFza3MgaW4gdGhlIHZjb3JlIHdpbGxcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTI2My0gKiBzbGVlcCB3YWl0aW5nIGZvciBpdCB0byBkbyB0aGF0LCBidXQgdGhhdCBzbGVlcCBzaG91bGRuJ3QgY291bnRcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjY1LSAqXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyNjY6ICogSGVuY2Ugd2UgYWNjdW11bGF0ZSBzdG9sZW4gdGltZSB3aGVuIHRoZSB2Y3B1IGNhbiBydW4gYXMgcGFydCBvZlxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjY3OiAqIGEgdmNvcmUgdXNpbmcgdmMtXFx1MDAzZXN0b2xlbl90YiwgYW5kIHRoZSBzdG9sZW4gdGltZSB3aGVuIHRoZSB2Y3B1XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yNjgtICogbmVlZHMgaXRzIHRhc2sgdG8gZG8gb3RoZXIgdGhpbmdzIGluIHRoZSBrZXJuZWwgKGZvciBleGFtcGxlLFxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjY5LSAqIHNlcnZpY2UgYSBwYWdlIGZhdWx0KSBpbiBidXN5X3N0b2xlbi4gIFdlIGRvbid0IGFjY3VtdWxhdGVcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjI3MDogKiBzdG9sZW4gdGltZSBmb3IgYSB2Y29yZSB3aGVuIGl0IGlzIGluYWN0aXZlLCBvciBmb3IgYSB2Y3B1XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yNzEtICogd2hlbiBpdCBpcyBpbiBzdGF0ZSBSVU5OSU5HIG9yIE5PVFJFQURZLiAgTk9UUkVBRFkgaXMgYSBiaXQgb2ZcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjI3MjogKiBhIG1pc25vbWVyOyBpdCBtZWFucyB0aGF0IHRoZSB2Y3B1IHRhc2sgaXMgbm90IGV4ZWN1dGluZyBpblxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjczLSAqIHRoZSBLVk1fVkNQVV9SVU4gaW9jdGwsIGkuZS4gaXQgaXMgaW4gdXNlcnNwYWNlIG9yIGVsc2V3aGVyZSBpblxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjc0LSAqIHRoZSBrZXJuZWwuICBXZSBkb24ndCBoYXZlIGFueSB3YXkgb2YgZGl2aWRpbmcgdXAgdGhhdCB0aW1lXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyNzU6ICogYmV0d2VlbiB0aW1lIHRoYXQgdGhlIHZjcHUgaXMgZ2VudWluZWx5IHN0b3BwZWQsIHRpbWUgdGhhdFxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6Mjc2OiAqIHRoZSB0YXNrIGlzIGFjdGl2ZWx5IHdvcmtpbmcgb24gYmVoYWxmIG9mIHRoZSB2Y3B1LCBhbmQgdGltZVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjc3LSAqIHRoYXQgdGhlIHRhc2sgaXMgcHJlZW1wdGVkLCBzbyB3ZSBkb24ndCBjb3VudCBhbnkgb2YgaXQgYXNcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjg1LSAqXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyODY6ICogVGhlIFBPV0VSOSBwYXRoIGlzIHNpbXBsZXIsIG9uZSB2Y3B1IHBlciB2aXJ0dWFsIGNvcmUgc28gdGhlXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyODc6ICogZm9ybWVyIGNhc2UgZG9lcyBub3QgZXhpc3QuIElmIGEgdmNwdSBpcyBwcmVlbXB0ZWQgd2hlbiBpdCBpc1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjg4LSAqIEJVU1lfSU5fSE9TVCBhbmQgbm90IGNlZGVkIG9yIG90aGVyd2lzZSBibG9ja2VkLCB0aGVuIGFjY3VtdWxhdGVcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM9MjkzPXN0YXRpYyB2b2lkIGt2bXBwY19jb3JlX3N0YXJ0X3N0b2xlbihzdHJ1Y3Qga3ZtcHBjX3Zjb3JlICp2YywgdTY0IHRiKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yOTYtXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyOTc6XFx0V0FSTl9PTl9PTkNFKGNwdV9oYXNfZmVhdHVyZShDUFVfRlRSX0FSQ0hfMzAwKSk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yOTgtXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jPTMwND1zdGF0aWMgdm9pZCBrdm1wcGNfY29yZV9lbmRfc3RvbGVuKHN0cnVjdCBrdm1wcGNfdmNvcmUgKnZjLCB1NjQgdGIpXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTMwNy1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjMwODpcXHRXQVJOX09OX09OQ0UoY3B1X2hhc19mZWF0dXJlKENQVV9GVFJfQVJDSF8zMDApKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTMwOS1cXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzE3LVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MzE4OnN0YXRpYyB2b2lkIGt2bXBwY19jb3JlX3ZjcHVfbG9hZF9odihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGludCBjcHUpXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0zMTkte1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MzIwOlxcdHN0cnVjdCBrdm1wcGNfdmNvcmUgKnZjID0gdmNwdS1cXHUwMDNlYXJjaC52Y29yZTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTMyMS1cXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0zMjMtXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzozMjQ6XFx0aWYgKGNwdV9oYXNfZmVhdHVyZShDUFVfRlRSX0FSQ0hfMzAwKSkge1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MzI1OlxcdFxcdGlmICh2Y3B1LVxcdTAwM2VhcmNoLmJ1c3lfcHJlZW1wdCAhPSBUQl9OSUwpIHtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjMyNjpcXHRcXHRcXHRXQVJOX09OX09OQ0UodmNwdS1cXHUwMDNlYXJjaC5zdGF0ZSAhPSBLVk1QUENfVkNQVV9CVVNZX0lOX0hPU1QpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MzI3OlxcdFxcdFxcdHZjLVxcdTAwM2VzdG9sZW5fdGIgKz0gbWZ0YigpIC0gdmNwdS1cXHUwMDNlYXJjaC5idXN5X3ByZWVtcHQ7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzozMjg6XFx0XFx0XFx0dmNwdS1cXHUwMDNlYXJjaC5idXN5X3ByZWVtcHQgPSBUQl9OSUw7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0zMjktXFx0XFx0fVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0zMzctXFx0ICogYmVjYXVzZSBvbmx5IHRoaXMgdGFzayBldmVyIHNldHMgdmMtXFx1MDAzZXJ1bm5lciB0byB0aGlzXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzozMzg6XFx0ICogdmNwdSwgYW5kIG9uY2UgaXQgaXMgc2V0IHRvIHRoaXMgdmNwdSwgb25seSB0aGlzIHRhc2tcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTMzOS1cXHQgKiBldmVyIHNldHMgaXQgdG8gTlVMTC5cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTM0MC1cXHQgKi9cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjM0MTpcXHRpZiAodmMtXFx1MDAzZXJ1bm5lciA9PSB2Y3B1IFxcdTAwMjZcXHUwMDI2IHZjLVxcdTAwM2V2Y29yZV9zdGF0ZSBcXHUwMDNlPSBWQ09SRV9TTEVFUElORylcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTM0Mi1cXHRcXHRrdm1wcGNfY29yZV9lbmRfc3RvbGVuKHZjLCBub3cpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzQzLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MzQ0OlxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZ2Y3B1LVxcdTAwM2VhcmNoLnRiYWNjdF9sb2NrLCBmbGFncyk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzozNDU6XFx0aWYgKHZjcHUtXFx1MDAzZWFyY2guc3RhdGUgPT0gS1ZNUFBDX1ZDUFVfQlVTWV9JTl9IT1NUIFxcdTAwMjZcXHUwMDI2XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzozNDY6XFx0ICAgIHZjcHUtXFx1MDAzZWFyY2guYnVzeV9wcmVlbXB0ICE9IFRCX05JTCkge1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MzQ3OlxcdFxcdHZjcHUtXFx1MDAzZWFyY2guYnVzeV9zdG9sZW4gKz0gbm93IC0gdmNwdS1cXHUwMDNlYXJjaC5idXN5X3ByZWVtcHQ7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzozNDg6XFx0XFx0dmNwdS1cXHUwMDNlYXJjaC5idXN5X3ByZWVtcHQgPSBUQl9OSUw7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0zNDktXFx0fVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MzUwOlxcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNnZjcHUtXFx1MDAzZWFyY2gudGJhY2N0X2xvY2ssIGZsYWdzKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTM1MS19XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0zNTItXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzozNTM6c3RhdGljIHZvaWQga3ZtcHBjX2NvcmVfdmNwdV9wdXRfaHYoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzU0LXtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjM1NTpcXHRzdHJ1Y3Qga3ZtcHBjX3Zjb3JlICp2YyA9IHZjcHUtXFx1MDAzZWFyY2gudmNvcmU7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0zNTYtXFx0dW5zaWduZWQgbG9uZyBmbGFncztcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzU4LVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MzU5OlxcdGlmIChjcHVfaGFzX2ZlYXR1cmUoQ1BVX0ZUUl9BUkNIXzMwMCkpIHtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTM2MC1cXHRcXHQvKlxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0zNjMtXFx0XFx0ICovXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzozNjQ6XFx0XFx0V0FSTl9PTl9PTkNFKHZjcHUtXFx1MDAzZWFyY2guc3RhdGUgPT0gS1ZNUFBDX1ZDUFVfUlVOTkFCTEUpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzY1LVxcdFxcdC8qXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzozNjY6XFx0XFx0ICogQWNjb3VudCBzdG9sZW4gdGltZSB3aGVuIHByZWVtcHRlZCB3aGlsZSB0aGUgdmNwdSB0YXNrIGlzXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0zNjctXFx0XFx0ICogcnVubmluZyBpbiB0aGUga2VybmVsIChidXQgbm90IGluIHFlbXUsIHdoaWNoIGlzIElOQUNUSVZFKS5cXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzY5LVxcdFxcdGlmICh0YXNrX2lzX3J1bm5pbmcoY3VycmVudCkgXFx1MDAyNlxcdTAwMjZcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjM3MDpcXHRcXHRcXHRcXHR2Y3B1LVxcdTAwM2VhcmNoLnN0YXRlID09IEtWTVBQQ19WQ1BVX0JVU1lfSU5fSE9TVClcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjM3MTpcXHRcXHRcXHR2Y3B1LVxcdTAwM2VhcmNoLmJ1c3lfcHJlZW1wdCA9IG1mdGIoKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTM3Mi1cXHRcXHRyZXR1cm47XFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTM3Ni1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjM3NzpcXHRpZiAodmMtXFx1MDAzZXJ1bm5lciA9PSB2Y3B1IFxcdTAwMjZcXHUwMDI2IHZjLVxcdTAwM2V2Y29yZV9zdGF0ZSBcXHUwMDNlPSBWQ09SRV9TTEVFUElORylcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTM3OC1cXHRcXHRrdm1wcGNfY29yZV9zdGFydF9zdG9sZW4odmMsIG5vdyk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0zNzktXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzozODA6XFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNnZjcHUtXFx1MDAzZWFyY2gudGJhY2N0X2xvY2ssIGZsYWdzKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjM4MTpcXHRpZiAodmNwdS1cXHUwMDNlYXJjaC5zdGF0ZSA9PSBLVk1QUENfVkNQVV9CVVNZX0lOX0hPU1QpXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzozODI6XFx0XFx0dmNwdS1cXHUwMDNlYXJjaC5idXN5X3ByZWVtcHQgPSBub3c7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzozODM6XFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2dmNwdS1cXHUwMDNlYXJjaC50YmFjY3RfbG9jaywgZmxhZ3MpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzg0LX1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTM4NS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjM4NjpzdGF0aWMgdm9pZCBrdm1wcGNfc2V0X3B2cl9odihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBwdnIpXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0zODcte1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6Mzg4OlxcdHZjcHUtXFx1MDAzZWFyY2gucHZyID0gcHZyO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzg5LX1cXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM9Mzk0PXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBtYXBfcGNyX3RvX2NhcCh1bnNpZ25lZCBsb25nIHBjcilcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNDAyLVxcdGNhc2UgUENSX0FSQ0hfMzE6XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo0MDM6XFx0XFx0aWYgKGNwdV9oYXNfZmVhdHVyZShDUFVfRlRSX1AxMV9QVlIpKVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNDA0LVxcdFxcdFxcdGNhcCA9IEhfR1VFU1RfQ0FQX1BPV0VSMTE7XFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQxNC1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjQxNTpzdGF0aWMgaW50IGt2bXBwY19zZXRfYXJjaF9jb21wYXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgYXJjaF9jb21wYXQpXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00MTYte1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNDE3LVxcdHVuc2lnbmVkIGxvbmcgaG9zdF9wY3JfYml0ID0gMCwgZ3Vlc3RfcGNyX2JpdCA9IDAsIGNhcCA9IDA7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo0MTg6XFx0c3RydWN0IGt2bXBwY192Y29yZSAqdmMgPSB2Y3B1LVxcdTAwM2VhcmNoLnZjb3JlO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNDE5LVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNDIwLVxcdC8qIFdlIGNhbiAoZW11bGF0ZSkgb3VyIG93biBhcmNoaXRlY3R1cmUgdmVyc2lvbiBhbmQgYW55dGhpbmcgb2xkZXIgKi9cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjQyMTpcXHRpZiAoY3B1X2hhc19mZWF0dXJlKENQVV9GVFJfUDExX1BWUikgfHwgY3B1X2hhc19mZWF0dXJlKENQVV9GVFJfQVJDSF8zMSkpXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00MjItXFx0XFx0aG9zdF9wY3JfYml0ID0gUENSX0FSQ0hfMzE7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo0MjM6XFx0ZWxzZSBpZiAoY3B1X2hhc19mZWF0dXJlKENQVV9GVFJfQVJDSF8zMDApKVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNDI0LVxcdFxcdGhvc3RfcGNyX2JpdCA9IFBDUl9BUkNIXzMwMDtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjQyNTpcXHRlbHNlIGlmIChjcHVfaGFzX2ZlYXR1cmUoQ1BVX0ZUUl9BUkNIXzIwN1MpKVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNDI2LVxcdFxcdGhvc3RfcGNyX2JpdCA9IFBDUl9BUkNIXzIwNztcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjQyNzpcXHRlbHNlIGlmIChjcHVfaGFzX2ZlYXR1cmUoQ1BVX0ZUUl9BUkNIXzIwNikpXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00MjgtXFx0XFx0aG9zdF9wY3JfYml0ID0gUENSX0FSQ0hfMjA2O1xcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00NzQtXFx0dmMtXFx1MDAzZWFyY2hfY29tcGF0ID0gYXJjaF9jb21wYXQ7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo0NzU6XFx0a3ZtaHZfbmVzdGVkdjJfbWFya19kaXJ0eSh2Y3B1LCBLVk1QUENfR1NJRF9MT0dJQ0FMX1BWUik7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00NzYtXFx0LypcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNDg1LVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NDg2OnN0YXRpYyB2b2lkIGt2bXBwY19kdW1wX3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNDg3LXtcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNDg5LVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NDkwOlxcdHByX2VycihcXFwidmNwdSAlcCAoJWQpOlxcXFxuXFxcIiwgdmNwdSwgdmNwdS1cXHUwMDNldmNwdV9pZCk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00OTEtXFx0cHJfZXJyKFxcXCJwYyAgPSAlLjE2bHggIG1zciA9ICUuMTZsbHggIHRyYXAgPSAleFxcXFxuXFxcIixcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjQ5MjpcXHQgICAgICAgdmNwdS1cXHUwMDNlYXJjaC5yZWdzLm5pcCwgdmNwdS1cXHUwMDNlYXJjaC5zaHJlZ3MubXNyLCB2Y3B1LVxcdTAwM2VhcmNoLnRyYXApO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNDkzLVxcdGZvciAociA9IDA7IHIgXFx1MDAzYyAxNjsgKytyKVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNDk0LVxcdFxcdHByX2VycihcXFwiciUyZCA9ICUuMTZseCAgciVkID0gJS4xNmx4XFxcXG5cXFwiLFxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NDk1OlxcdFxcdCAgICAgICByLCBrdm1wcGNfZ2V0X2dwcih2Y3B1LCByKSxcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjQ5NjpcXHRcXHQgICAgICAgcisxNiwga3ZtcHBjX2dldF9ncHIodmNwdSwgcisxNikpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNDk3LVxcdHByX2VycihcXFwiY3RyID0gJS4xNmx4ICBsciAgPSAlLjE2bHhcXFxcblxcXCIsXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo0OTg6XFx0ICAgICAgIHZjcHUtXFx1MDAzZWFyY2gucmVncy5jdHIsIHZjcHUtXFx1MDAzZWFyY2gucmVncy5saW5rKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQ5OS1cXHRwcl9lcnIoXFxcInNycjAgPSAlLjE2bGx4IHNycjEgPSAlLjE2bGx4XFxcXG5cXFwiLFxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NTAwOlxcdCAgICAgICB2Y3B1LVxcdTAwM2VhcmNoLnNocmVncy5zcnIwLCB2Y3B1LVxcdTAwM2VhcmNoLnNocmVncy5zcnIxKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTUwMS1cXHRwcl9lcnIoXFxcInNwcmcwID0gJS4xNmxseCBzcHJnMSA9ICUuMTZsbHhcXFxcblxcXCIsXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1MDI6XFx0ICAgICAgIHZjcHUtXFx1MDAzZWFyY2guc2hyZWdzLnNwcmcwLCB2Y3B1LVxcdTAwM2VhcmNoLnNocmVncy5zcHJnMSk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01MDMtXFx0cHJfZXJyKFxcXCJzcHJnMiA9ICUuMTZsbHggc3ByZzMgPSAlLjE2bGx4XFxcXG5cXFwiLFxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NTA0OlxcdCAgICAgICB2Y3B1LVxcdTAwM2VhcmNoLnNocmVncy5zcHJnMiwgdmNwdS1cXHUwMDNlYXJjaC5zaHJlZ3Muc3ByZzMpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTA1LVxcdHByX2VycihcXFwiY3IgPSAlLjhseCAgeGVyID0gJS4xNmx4ICBkc2lzciA9ICUuOHhcXFxcblxcXCIsXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1MDY6XFx0ICAgICAgIHZjcHUtXFx1MDAzZWFyY2gucmVncy5jY3IsIHZjcHUtXFx1MDAzZWFyY2gucmVncy54ZXIsIHZjcHUtXFx1MDAzZWFyY2guc2hyZWdzLmRzaXNyKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjUwNzpcXHRwcl9lcnIoXFxcImRhciA9ICUuMTZsbHhcXFxcblxcXCIsIHZjcHUtXFx1MDAzZWFyY2guc2hyZWdzLmRhcik7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01MDgtXFx0cHJfZXJyKFxcXCJmYXVsdCBkYXIgPSAlLjE2bHggZHNpc3IgPSAlLjh4XFxcXG5cXFwiLFxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NTA5OlxcdCAgICAgICB2Y3B1LVxcdTAwM2VhcmNoLmZhdWx0X2RhciwgdmNwdS1cXHUwMDNlYXJjaC5mYXVsdF9kc2lzcik7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1MTA6XFx0cHJfZXJyKFxcXCJTTEIgKCVkIGVudHJpZXMpOlxcXFxuXFxcIiwgdmNwdS1cXHUwMDNlYXJjaC5zbGJfbWF4KTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjUxMTpcXHRmb3IgKHIgPSAwOyByIFxcdTAwM2MgdmNwdS1cXHUwMDNlYXJjaC5zbGJfbWF4OyArK3IpXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01MTItXFx0XFx0cHJfZXJyKFxcXCIgIEVTSUQgPSAlLjE2bGx4IFZTSUQgPSAlLjE2bGx4XFxcXG5cXFwiLFxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NTEzOlxcdFxcdCAgICAgICB2Y3B1LVxcdTAwM2VhcmNoLnNsYltyXS5vcmlnZSwgdmNwdS1cXHUwMDNlYXJjaC5zbGJbcl0ub3JpZ3YpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTE0LVxcdHByX2VycihcXFwibHBjciA9ICUuMTZseCBzZHIxID0gJS4xNmx4IGxhc3RfaW5zdCA9ICUuMTZseFxcXFxuXFxcIixcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjUxNTpcXHQgICAgICAgdmNwdS1cXHUwMDNlYXJjaC52Y29yZS1cXHUwMDNlbHBjciwgdmNwdS1cXHUwMDNla3ZtLVxcdTAwM2VhcmNoLnNkcjEsXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1MTY6XFx0ICAgICAgIHZjcHUtXFx1MDAzZWFyY2gubGFzdF9pbnN0KTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTUxNy19XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01MTgtXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1MTk6c3RhdGljIHN0cnVjdCBrdm1fdmNwdSAqa3ZtcHBjX2ZpbmRfdmNwdShzdHJ1Y3Qga3ZtICprdm0sIGludCBpZClcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTUyMC17XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1MjE6XFx0cmV0dXJuIGt2bV9nZXRfdmNwdV9ieV9pZChrdm0sIGlkKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTUyMi19XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01MjMtXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1MjQ6c3RhdGljIHZvaWQgaW5pdF92cGEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3QgbHBwYWNhICp2cGEpXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01MjUte1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTI2LVxcdHZwYS1cXHUwMDNlX19vbGRfc3RhdHVzIHw9IExQUEFDQV9PTERfU0hBUkVEX1BST0M7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1Mjc6XFx0dnBhLVxcdTAwM2V5aWVsZF9jb3VudCA9IGNwdV90b19iZTMyKDEpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTI4LX1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTUyOS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjUzMDpzdGF0aWMgaW50IHNldF92cGEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtcHBjX3ZwYSAqdixcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTUzMS1cXHRcXHQgICB1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgbGVuKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01MzUtXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1MzY6XFx0c3Bpbl9sb2NrKFxcdTAwMjZ2Y3B1LVxcdTAwM2VhcmNoLnZwYV91cGRhdGVfbG9jayk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01MzctXFx0aWYgKHYtXFx1MDAzZW5leHRfZ3BhICE9IGFkZHIgfHwgdi1cXHUwMDNlbGVuICE9IGxlbikge1xcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01NDEtXFx0fVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NTQyOlxcdHNwaW5fdW5sb2NrKFxcdTAwMjZ2Y3B1LVxcdTAwM2VhcmNoLnZwYV91cGRhdGVfbG9jayk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01NDMtXFx0cmV0dXJuIDA7XFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jPTU1NT1zdGF0aWMgaW50IHZwYV9pc19yZWdpc3RlcmVkKHN0cnVjdCBrdm1wcGNfdnBhICp2cGFwKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01NjEtXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1NjI6c3RhdGljIHVuc2lnbmVkIGxvbmcgZG9faF9yZWdpc3Rlcl92cGEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTYzLVxcdFxcdFxcdFxcdCAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzLFxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NTY0OlxcdFxcdFxcdFxcdCAgICAgICB1bnNpZ25lZCBsb25nIHZjcHVpZCwgdW5zaWduZWQgbG9uZyB2cGEpXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01NjUte1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NTY2OlxcdHN0cnVjdCBrdm0gKmt2bSA9IHZjcHUtXFx1MDAzZWt2bTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTU2Ny1cXHR1bnNpZ25lZCBsb25nIGxlbiwgbmI7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01NjgtXFx0dm9pZCAqdmE7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1Njk6XFx0c3RydWN0IGt2bV92Y3B1ICp0dmNwdTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTU3MC1cXHRpbnQgZXJyO1xcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01NzMtXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1NzQ6XFx0dHZjcHUgPSBrdm1wcGNfZmluZF92Y3B1KGt2bSwgdmNwdWlkKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjU3NTpcXHRpZiAoIXR2Y3B1KVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTc2LVxcdFxcdHJldHVybiBIX1BBUkFNRVRFUjtcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTg5LVxcdFxcdGlmIChzdWJmdW5jID09IEhfVlBBX1JFR19WUEEpXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1OTA6XFx0XFx0XFx0bGVuID0gYmUxNl90b19jcHUoKChzdHJ1Y3QgcmVnX3ZwYSAqKXZhKS1cXHUwMDNlbGVuZ3RoLmh3b3JkKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTU5MS1cXHRcXHRlbHNlXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1OTI6XFx0XFx0XFx0bGVuID0gYmUzMl90b19jcHUoKChzdHJ1Y3QgcmVnX3ZwYSAqKXZhKS1cXHUwMDNlbGVuZ3RoLndvcmQpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTkzLVxcdFxcdGt2bXBwY191bnBpbl9ndWVzdF9wYWdlKGt2bSwgdmEsIHZwYSwgZmFsc2UpO1xcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy02MDQtXFx0dnBhcCA9IE5VTEw7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo2MDU6XFx0c3Bpbl9sb2NrKFxcdTAwMjZ0dmNwdS1cXHUwMDNlYXJjaC52cGFfdXBkYXRlX2xvY2spO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjA2LVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy02MTctXFx0XFx0XFx0YnJlYWs7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo2MTg6XFx0XFx0dnBhcCA9IFxcdTAwMjZ0dmNwdS1cXHUwMDNlYXJjaC52cGE7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy02MTktXFx0XFx0ZXJyID0gMDtcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjI4LVxcdFxcdGVyciA9IEhfUkVTT1VSQ0U7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo2Mjk6XFx0XFx0aWYgKCF2cGFfaXNfcmVnaXN0ZXJlZChcXHUwMDI2dHZjcHUtXFx1MDAzZWFyY2gudnBhKSlcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTYzMC1cXHRcXHRcXHRicmVhaztcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTYzMS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjYzMjpcXHRcXHR2cGFwID0gXFx1MDAyNnR2Y3B1LVxcdTAwM2VhcmNoLmR0bDtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTYzMy1cXHRcXHRlcnIgPSAwO1xcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy02MzgtXFx0XFx0ZXJyID0gSF9SRVNPVVJDRTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjYzOTpcXHRcXHRpZiAoIXZwYV9pc19yZWdpc3RlcmVkKFxcdTAwMjZ0dmNwdS1cXHUwMDNlYXJjaC52cGEpKVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjQwLVxcdFxcdFxcdGJyZWFrO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjQxLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NjQyOlxcdFxcdHZwYXAgPSBcXHUwMDI2dHZjcHUtXFx1MDAzZWFyY2guc2xiX3NoYWRvdztcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTY0My1cXHRcXHRlcnIgPSAwO1xcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy02NDgtXFx0XFx0ZXJyID0gSF9SRVNPVVJDRTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjY0OTpcXHRcXHRpZiAodnBhX2lzX3JlZ2lzdGVyZWQoXFx1MDAyNnR2Y3B1LVxcdTAwM2VhcmNoLmR0bCkgfHxcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjY1MDpcXHRcXHQgICAgdnBhX2lzX3JlZ2lzdGVyZWQoXFx1MDAyNnR2Y3B1LVxcdTAwM2VhcmNoLnNsYl9zaGFkb3cpKVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjUxLVxcdFxcdFxcdGJyZWFrO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjUyLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NjUzOlxcdFxcdHZwYXAgPSBcXHUwMDI2dHZjcHUtXFx1MDAzZWFyY2gudnBhO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjU0LVxcdFxcdGVyciA9IDA7XFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTY1Ny1cXHRjYXNlIEhfVlBBX0RFUkVHX0RUTDpcXHRcXHQvKiBkZXJlZ2lzdGVyIERUTCAqL1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NjU4OlxcdFxcdHZwYXAgPSBcXHUwMDI2dHZjcHUtXFx1MDAzZWFyY2guZHRsO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjU5LVxcdFxcdGVyciA9IDA7XFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTY2Mi1cXHRjYXNlIEhfVlBBX0RFUkVHX1NMQjpcXHRcXHQvKiBkZXJlZ2lzdGVyIFNMQiBzaGFkb3cgYnVmZmVyICovXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo2NjM6XFx0XFx0dnBhcCA9IFxcdTAwMjZ0dmNwdS1cXHUwMDNlYXJjaC5zbGJfc2hhZG93O1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjY0LVxcdFxcdGVyciA9IDA7XFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTY3My1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjY3NDpcXHRzcGluX3VubG9jayhcXHUwMDI2dHZjcHUtXFx1MDAzZWFyY2gudnBhX3VwZGF0ZV9sb2NrKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTY3NS1cXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjc4LVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6Njc5OnN0YXRpYyB2b2lkIGt2bXBwY191cGRhdGVfdnBhKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bXBwY192cGEgKnZwYXAsXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy02ODAtXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBrdm1wcGNfdnBhICpvbGRfdnBhcClcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTY4MS17XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo2ODI6XFx0c3RydWN0IGt2bSAqa3ZtID0gdmNwdS1cXHUwMDNla3ZtO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjgzLVxcdHZvaWQgKnZhO1xcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy02OTYtXFx0XFx0Z3BhID0gdnBhcC1cXHUwMDNlbmV4dF9ncGE7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo2OTc6XFx0XFx0c3Bpbl91bmxvY2soXFx1MDAyNnZjcHUtXFx1MDAzZWFyY2gudnBhX3VwZGF0ZV9sb2NrKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTY5OC1cXHRcXHR2YSA9IE5VTEw7XFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTcwMS1cXHRcXHRcXHR2YSA9IGt2bXBwY19waW5fZ3Vlc3RfcGFnZShrdm0sIGdwYSwgXFx1MDAyNm5iKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjcwMjpcXHRcXHRzcGluX2xvY2soXFx1MDAyNnZjcHUtXFx1MDAzZWFyY2gudnBhX3VwZGF0ZV9sb2NrKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTcwMy1cXHRcXHRpZiAoZ3BhID09IHZwYXAtXFx1MDAzZW5leHRfZ3BhKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03MjgtXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo3Mjk6c3RhdGljIHZvaWQga3ZtcHBjX3VwZGF0ZV92cGFzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTczMC17XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo3MzE6XFx0c3RydWN0IGt2bSAqa3ZtID0gdmNwdS1cXHUwMDNla3ZtO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNzMyLVxcdHN0cnVjdCBrdm1wcGNfdnBhIG9sZF92cGEgPSB7IDAgfTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTczMy1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjczNDpcXHRpZiAoISh2Y3B1LVxcdTAwM2VhcmNoLnZwYS51cGRhdGVfcGVuZGluZyB8fFxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NzM1OlxcdCAgICAgIHZjcHUtXFx1MDAzZWFyY2guc2xiX3NoYWRvdy51cGRhdGVfcGVuZGluZyB8fFxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NzM2OlxcdCAgICAgIHZjcHUtXFx1MDAzZWFyY2guZHRsLnVwZGF0ZV9wZW5kaW5nKSlcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTczNy1cXHRcXHRyZXR1cm47XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03MzgtXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo3Mzk6XFx0c3Bpbl9sb2NrKFxcdTAwMjZ2Y3B1LVxcdTAwM2VhcmNoLnZwYV91cGRhdGVfbG9jayk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo3NDA6XFx0aWYgKHZjcHUtXFx1MDAzZWFyY2gudnBhLnVwZGF0ZV9wZW5kaW5nKSB7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo3NDE6XFx0XFx0a3ZtcHBjX3VwZGF0ZV92cGEodmNwdSwgXFx1MDAyNnZjcHUtXFx1MDAzZWFyY2gudnBhLCBcXHUwMDI2b2xkX3ZwYSk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03NDItXFx0XFx0aWYgKG9sZF92cGEucGlubmVkX2FkZHIpIHtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTc0My1cXHRcXHRcXHRpZiAoa3ZtaHZfaXNfbmVzdGVkdjIoKSlcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjc0NDpcXHRcXHRcXHRcXHRrdm1odl9uZXN0ZWR2Ml9zZXRfdnBhKHZjcHUsIH4wdWxsKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTc0NS1cXHRcXHRcXHRrdm1wcGNfdW5waW5fZ3Vlc3RfcGFnZShrdm0sIG9sZF92cGEucGlubmVkX2FkZHIsIG9sZF92cGEuZ3BhLFxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03NDctXFx0XFx0fVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NzQ4OlxcdFxcdGlmICh2Y3B1LVxcdTAwM2VhcmNoLnZwYS5waW5uZWRfYWRkcikge1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NzQ5OlxcdFxcdFxcdGluaXRfdnBhKHZjcHUsIHZjcHUtXFx1MDAzZWFyY2gudnBhLnBpbm5lZF9hZGRyKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTc1MC1cXHRcXHRcXHRpZiAoa3ZtaHZfaXNfbmVzdGVkdjIoKSlcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjc1MTpcXHRcXHRcXHRcXHRrdm1odl9uZXN0ZWR2Ml9zZXRfdnBhKHZjcHUsIF9fcGEodmNwdS1cXHUwMDNlYXJjaC52cGEucGlubmVkX2FkZHIpKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTc1Mi1cXHRcXHR9XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03NTMtXFx0fVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NzU0OlxcdGlmICh2Y3B1LVxcdTAwM2VhcmNoLmR0bC51cGRhdGVfcGVuZGluZykge1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NzU1OlxcdFxcdGt2bXBwY191cGRhdGVfdnBhKHZjcHUsIFxcdTAwMjZ2Y3B1LVxcdTAwM2VhcmNoLmR0bCwgXFx1MDAyNm9sZF92cGEpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNzU2LVxcdFxcdGlmIChvbGRfdnBhLnBpbm5lZF9hZGRyKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03NTgtXFx0XFx0XFx0XFx0XFx0XFx0b2xkX3ZwYS5kaXJ0eSk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo3NTk6XFx0XFx0dmNwdS1cXHUwMDNlYXJjaC5kdGxfcHRyID0gdmNwdS1cXHUwMDNlYXJjaC5kdGwucGlubmVkX2FkZHI7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo3NjA6XFx0XFx0dmNwdS1cXHUwMDNlYXJjaC5kdGxfaW5kZXggPSAwO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNzYxLVxcdH1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjc2MjpcXHRpZiAodmNwdS1cXHUwMDNlYXJjaC5zbGJfc2hhZG93LnVwZGF0ZV9wZW5kaW5nKSB7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo3NjM6XFx0XFx0a3ZtcHBjX3VwZGF0ZV92cGEodmNwdSwgXFx1MDAyNnZjcHUtXFx1MDAzZWFyY2guc2xiX3NoYWRvdywgXFx1MDAyNm9sZF92cGEpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNzY0LVxcdFxcdGlmIChvbGRfdnBhLnBpbm5lZF9hZGRyKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03NjgtXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo3Njk6XFx0c3Bpbl91bmxvY2soXFx1MDAyNnZjcHUtXFx1MDAzZWFyY2gudnBhX3VwZGF0ZV9sb2NrKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTc3MC19XFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jPTc3Nj1zdGF0aWMgdTY0IHZjb3JlX3N0b2xlbl90aW1lKHN0cnVjdCBrdm1wcGNfdmNvcmUgKnZjLCB1NjQgbm93KVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03ODAtXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo3ODE6XFx0V0FSTl9PTl9PTkNFKGNwdV9oYXNfZmVhdHVyZShDUFVfRlRSX0FSQ0hfMzAwKSk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03ODItXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTc5MS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjc5MjpzdGF0aWMgdm9pZCBfX2t2bXBwY19jcmVhdGVfZHRsX2VudHJ5KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTc5My1cXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgbHBwYWNhICp2cGEsXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo3OTQ6XFx0XFx0XFx0XFx0XFx0dW5zaWduZWQgaW50IHBjcHUsIHU2NCBub3csXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03OTUtXFx0XFx0XFx0XFx0XFx0dW5zaWduZWQgbG9uZyBzdG9sZW4pXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTc5OC1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjc5OTpcXHRkdCA9IHZjcHUtXFx1MDAzZWFyY2guZHRsX3B0cjtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTgwMC1cXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODA1LVxcdGR0LVxcdTAwM2VwcmVlbXB0X3JlYXNvbiA9IDA7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4MDY6XFx0ZHQtXFx1MDAzZXByb2Nlc3Nvcl9pZCA9IGNwdV90b19iZTE2KHBjcHUgKyB2Y3B1LVxcdTAwM2VhcmNoLnB0aWQpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODA3OlxcdGR0LVxcdTAwM2VlbnF1ZXVlX3RvX2Rpc3BhdGNoX3RpbWUgPSBjcHVfdG9fYmUzMihzdG9sZW4pO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODA4LVxcdGR0LVxcdTAwM2VyZWFkeV90b19lbnF1ZXVlX3RpbWUgPSAwO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODA5LVxcdGR0LVxcdTAwM2V3YWl0aW5nX3RvX3JlYWR5X3RpbWUgPSAwO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODEwOlxcdGR0LVxcdTAwM2V0aW1lYmFzZSA9IGNwdV90b19iZTY0KG5vdyk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04MTEtXFx0ZHQtXFx1MDAzZWZhdWx0X2FkZHIgPSAwO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODEyOlxcdGR0LVxcdTAwM2VzcnIwID0gY3B1X3RvX2JlNjQoa3ZtcHBjX2dldF9wYyh2Y3B1KSk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4MTM6XFx0ZHQtXFx1MDAzZXNycjEgPSBjcHVfdG9fYmU2NCh2Y3B1LVxcdTAwM2VhcmNoLnNocmVncy5tc3IpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODE0LVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODE1LVxcdCsrZHQ7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4MTY6XFx0aWYgKGR0ID09IHZjcHUtXFx1MDAzZWFyY2guZHRsLnBpbm5lZF9lbmQpXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4MTc6XFx0XFx0ZHQgPSB2Y3B1LVxcdTAwM2VhcmNoLmR0bC5waW5uZWRfYWRkcjtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjgxODpcXHR2Y3B1LVxcdTAwM2VhcmNoLmR0bF9wdHIgPSBkdDtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTgxOS1cXHQvKiBvcmRlciB3cml0aW5nICpkdCB2cy4gd3JpdGluZyB2cGEtXFx1MDAzZWR0bF9pZHggKi9cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTgyMC1cXHRzbXBfd21iKCk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4MjE6XFx0dnBhLVxcdTAwM2VkdGxfaWR4ID0gY3B1X3RvX2JlNjQoKyt2Y3B1LVxcdTAwM2VhcmNoLmR0bF9pbmRleCk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04MjItXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4MjM6XFx0LyogdmNwdS1cXHUwMDNlYXJjaC5kdGwuZGlydHkgaXMgc2V0IGJ5IHRoZSBjYWxsZXIgKi9cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTgyNC19XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04MjUtXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4MjY6c3RhdGljIHZvaWQga3ZtcHBjX3VwZGF0ZV92cGFfZGlzcGF0Y2goc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODI3LVxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3Qga3ZtcHBjX3Zjb3JlICp2YylcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODM0LVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODM1OlxcdHZwYSA9IHZjcHUtXFx1MDAzZWFyY2gudnBhLnBpbm5lZF9hZGRyO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODM2LVxcdGlmICghdnBhKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04NDEtXFx0Y29yZV9zdG9sZW4gPSB2Y29yZV9zdG9sZW5fdGltZSh2Yywgbm93KTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjg0MjpcXHRzdG9sZW4gPSBjb3JlX3N0b2xlbiAtIHZjcHUtXFx1MDAzZWFyY2guc3RvbGVuX2xvZ2dlZDtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjg0MzpcXHR2Y3B1LVxcdTAwM2VhcmNoLnN0b2xlbl9sb2dnZWQgPSBjb3JlX3N0b2xlbjtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjg0NDpcXHRzcGluX2xvY2tfaXJxc2F2ZShcXHUwMDI2dmNwdS1cXHUwMDNlYXJjaC50YmFjY3RfbG9jaywgZmxhZ3MpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODQ1OlxcdHN0b2xlbiArPSB2Y3B1LVxcdTAwM2VhcmNoLmJ1c3lfc3RvbGVuO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODQ2OlxcdHZjcHUtXFx1MDAzZWFyY2guYnVzeV9zdG9sZW4gPSAwO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODQ3OlxcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNnZjcHUtXFx1MDAzZWFyY2gudGJhY2N0X2xvY2ssIGZsYWdzKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTg0OC1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjg0OTpcXHR2cGEtXFx1MDAzZWVucXVldWVfZGlzcGF0Y2hfdGIgPSBjcHVfdG9fYmU2NChiZTY0X3RvX2NwdSh2cGEtXFx1MDAzZWVucXVldWVfZGlzcGF0Y2hfdGIpICsgc3RvbGVuKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTg1MC1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjg1MTpcXHRfX2t2bXBwY19jcmVhdGVfZHRsX2VudHJ5KHZjcHUsIHZwYSwgdmMtXFx1MDAzZXBjcHUsIG5vdyArIGt2bXBwY19nZXRfdGJfb2Zmc2V0KHZjcHUpLCBzdG9sZW4pO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODUyLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODUzOlxcdHZjcHUtXFx1MDAzZWFyY2gudnBhLmRpcnR5ID0gdHJ1ZTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTg1NC19XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04NTUtXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4NTY6c3RhdGljIHZvaWQga3ZtcHBjX3VwZGF0ZV92cGFfZGlzcGF0Y2hfcDkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODU3LVxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3Qga3ZtcHBjX3Zjb3JlICp2YyxcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODYzLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODY0OlxcdHZwYSA9IHZjcHUtXFx1MDAzZWFyY2gudnBhLnBpbm5lZF9hZGRyO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODY1LVxcdGlmICghdnBhKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04NjgtXFx0c3RvbGVuID0gdmMtXFx1MDAzZXN0b2xlbl90YjtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjg2OTpcXHRzdG9sZW5fZGVsdGEgPSBzdG9sZW4gLSB2Y3B1LVxcdTAwM2VhcmNoLnN0b2xlbl9sb2dnZWQ7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4NzA6XFx0dmNwdS1cXHUwMDNlYXJjaC5zdG9sZW5fbG9nZ2VkID0gc3RvbGVuO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODcxLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODcyOlxcdHZwYS1cXHUwMDNlZW5xdWV1ZV9kaXNwYXRjaF90YiA9IGNwdV90b19iZTY0KHN0b2xlbik7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04NzMtXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4NzQ6XFx0X19rdm1wcGNfY3JlYXRlX2R0bF9lbnRyeSh2Y3B1LCB2cGEsIHZjLVxcdTAwM2VwY3B1LCBub3csIHN0b2xlbl9kZWx0YSk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04NzUtXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4NzY6XFx0dmNwdS1cXHUwMDNlYXJjaC52cGEuZGlydHkgPSB0cnVlO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODc3LX1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTg3OC1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjg3OTovKiBTZWUgaWYgdGhlcmUgaXMgYSBkb29yYmVsbCBpbnRlcnJ1cHQgcGVuZGluZyBmb3IgYSB2Y3B1ICovXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4ODA6c3RhdGljIGJvb2wga3ZtcHBjX2Rvb3JiZWxsX3BlbmRpbmcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODgxLXtcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODg0LVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODg1OlxcdGlmICh2Y3B1LVxcdTAwM2VhcmNoLmRvb3JiZWxsX3JlcXVlc3QpXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04ODYtXFx0XFx0cmV0dXJuIHRydWU7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4ODc6XFx0aWYgKGNwdV9oYXNfZmVhdHVyZShDUFVfRlRSX0FSQ0hfMzAwKSlcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTg4OC1cXHRcXHRyZXR1cm4gZmFsc2U7XFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTg5MC1cXHQgKiBFbnN1cmUgdGhhdCB0aGUgcmVhZCBvZiB2Y29yZS1cXHUwMDNlZHBkZXMgY29tZXMgYWZ0ZXIgdGhlIHJlYWRcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjg5MTpcXHQgKiBvZiB2Y3B1LVxcdTAwM2Vkb29yYmVsbF9yZXF1ZXN0LiAgVGhpcyBiYXJyaWVyIG1hdGNoZXMgdGhlXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04OTItXFx0ICogc21wX3dtYigpIGluIGt2bXBwY19ndWVzdF9lbnRyeV9pbmplY3QoKS5cXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODk0LVxcdHNtcF9ybWIoKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjg5NTpcXHR2YyA9IHZjcHUtXFx1MDAzZWFyY2gudmNvcmU7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4OTY6XFx0dGhyID0gdmNwdS1cXHUwMDNldmNwdV9pZCAtIHZjLVxcdTAwM2VmaXJzdF92Y3B1aWQ7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04OTctXFx0cmV0dXJuICEhKHZjLVxcdTAwM2VkcGRlcyBcXHUwMDI2ICgxIFxcdTAwM2NcXHUwMDNjIHRocikpO1xcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04OTktXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA0OjU3OjUzLjc2NzM0NTAwM1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwNTkwMjc0OTMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRlYnVnZ2luZyBhIFR5cG9zcXVhdHRpbmcgQnVnIGluIE5lc3RlZCBWaXJ0dWFsaXphdGlvbiBDb2RlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGluIGBrdm1odl92Y3B1X2VudHJ5X25lc3RlZHYyYCBhbmQgaW1tZWRpYXRlbHkgSSBzZWUgYSByZWQgZmxhZy4gVGhlIGNvbXBpbGVyJ3MgY29tcGxhaW5pbmcgdGhhdCBgY3B1YCBpcyB1bmRlZmluZWQuIExldCdzIHRyYWNlIGl0IGJhY2sgdG8gdGhlIHBhdGNoIGluIHF1ZXN0aW9uLiBBaCwgaGVyZSBpdCBpczpcblxuYGBgY1xuK1x0LyogQ2hlY2sgaWYgcHJpdmlsZWdlZCBkb29yIGJlbGwgd2FzIHJlcXVlc3RlZCBhbmQgaGFuZGxlZCAqL1xuK1x0aWYgKHZjcHUtXHUwMDNlYXJjaC52Y29yZS1cdTAwM2VkcGRlcykge1xuK1x0XHRrdm1odl9uZXN0ZWR2Ml9jYWNoZWRfcmVsb2FkKHZjcHUsIEtWTVBQQ19HU0lEX0RQREVTKTtcbitcdFx0aWYgKHZjcHUtXHUwMDNlYXJjaC52Y29yZS1cdTAwM2VkcGRlcylcbitcdFx0XHR2Y3B1LVx1MDAzZWFyY2guZG9vcmJlbGxfcmVxdWVzdCB8PSB2Y3B1LVx1MDAzZWFyY2gudmNvcmUtXHUwMDNlZHBkZXM7XG4rXHRcdGVsc2VcbitcdFx0XHRjcHUtXHUwMDNlYXJjaC5kb29yYmVsbF9yZXF1ZXN0ID0gMDtcbitcdH0gZWxzZSB7XG4rXHRcdHZjcHUtXHUwMDNlYXJjaC5kb29yYmVsbF9yZXF1ZXN0ID0gMDtcbitcdH1cbmBgYFxuXG5ZZXAsIHRoYXQncyBkZWZpbml0ZWx5IGEgdHlwby4gSXQgKnNob3VsZCogYmUgYHZjcHUtXHUwMDNlYXJjaC5kb29yYmVsbF9yZXF1ZXN0ID0gMDtgIG5vdCBgY3B1LVx1MDAzZWFyY2guZG9vcmJlbGxfcmVxdWVzdCA9IDA7YC4gSSBjYW4gaW1tZWRpYXRlbHkgdGVsbCB0aGF0J3MgYW4gZXJyb3IuIFRoZSB2YXJpYWJsZSBgY3B1YCBpc24ndCBkZWNsYXJlZCB3aXRoaW4gdGhlIHNjb3BlIG9mIGBrdm1odl92Y3B1X2VudHJ5X25lc3RlZHYyYC4gTGV0IG1lIHF1aWNrbHkgY29uZmlybSBieSBjaGVja2luZyB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbi5cblxuYGBgY1xuNDI0OTpcdHN0YXRpYyBpbnQga3ZtaHZfdmNwdV9lbnRyeV9uZXN0ZWR2MihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCB0aW1lX2xpbWl0LFxuNDI1MDpcdFx0XHRcdFx0ICAgICB1bnNpZ25lZCBsb25nIGxwY3IsIHU2NCAqdGIpXG40MjUxOlx0e1xuNDI1MjpcdFx0c3RydWN0IGt2bWh2X25lc3RlZHYyX2lvICppbztcbjQyNTM6XHRcdHVuc2lnbmVkIGxvbmcgbXNyLCBpO1xuNDI1NDpcdFx0aW50IHRyYXA7XG40MjU1Olx0XHRsb25nIHJjO1xuYGBgXG5cbk5vcGUsIGRlZmluaXRlbHkgbm8gYGNwdWAgdmFyaWFibGUgZGVjbGFyZWQgdGhlcmUuIFRoZSBjb21waWxlciBzaG91bGQgYmUgdGhyb3dpbmcgYSBmaXQuIE5vdywgdGhlIHF1ZXN0aW9uIGlzLCBpZiBpdCdzIGJyb2tlbiBhbmQgd29uJ3QgY29tcGlsZSwgZG9lcyBpdCBldmVuICptYWtlIHNlbnNlKiB0byBmdXp6IHRoaXM/IFdlbGwsIHRoZSBwcm9tcHQgc2F5cyB0aGUgY2hhbmdlcyBoYXZlIGFscmVhZHkgYmVlbiBhcHBsaWVkLCBtZWFuaW5nIHRoZSBjb2RlIG11c3QgaGF2ZSAqc29tZWhvdyogY29tcGlsZWQuXG5cbkxldCBtZSB0aGluayBmb3IgYSBzZWNvbmQuLi4gY291bGQgYGNwdWAgYmUgYSBtYWNybz8gVGhhdCdzIHRoZSBvbmx5IHdheSBJIGNhbiBzZWUgdGhpcyBhY3R1YWxseSB3b3JraW5nLiBTbywgSSBuZWVkIHRvIGNoZWNrIGlmIGBjcHVgIGlzIGRlZmluZWQgYXMgYSBtYWNybyBpbiB0aGlzIGNvbnRleHQuIElmIGl0J3Mgbm90IGEgbWFjcm8sIHRoZW4gaXQgaXMgYSBkZWFkIGVuZC4gV2UgbmVlZCB0byBhc3Nlc3MgaWYgdGhpcyBtYWtlcyB0aGUgY29tbWl0IHVzZWxlc3MgZm9yIGEgZnV6emluZyB0ZXN0LiBJdCdzIGEgdHJpdmlhbCBlcnJvciBpbiB0aGUgY2FzZSB0aGF0IGl0IGRvZXMgbm90IGNvbXBpbGUgYXMgaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwODY3LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTA3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA0OjU4OjA0LjM1NzY1MjE1NFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njg4Nzg2NDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiI2RlZmluZSBjcHVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9wb3dlcnBjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Bvd2VycGMvYm9vdC9saWJmZHRfZW52Lmg9MTg9dHlwZWRlZiBfX2JlNjQgZmR0NjRfdDtcXG4tLVxcbmFyY2gvcG93ZXJwYy9ib290L2xpYmZkdF9lbnYuaC0yMC0jZGVmaW5lIGZkdDE2X3RvX2NwdSh4KVxcdFxcdGJlMTZfdG9fY3B1KHgpXFxuYXJjaC9wb3dlcnBjL2Jvb3QvbGliZmR0X2Vudi5oOjIxOiNkZWZpbmUgY3B1X3RvX2ZkdDE2KHgpXFx0XFx0Y3B1X3RvX2JlMTYoeClcXG5hcmNoL3Bvd2VycGMvYm9vdC9saWJmZHRfZW52LmgtMjItI2RlZmluZSBmZHQzMl90b19jcHUoeClcXHRcXHRiZTMyX3RvX2NwdSh4KVxcbmFyY2gvcG93ZXJwYy9ib290L2xpYmZkdF9lbnYuaDoyMzojZGVmaW5lIGNwdV90b19mZHQzMih4KVxcdFxcdGNwdV90b19iZTMyKHgpXFxuYXJjaC9wb3dlcnBjL2Jvb3QvbGliZmR0X2Vudi5oLTI0LSNkZWZpbmUgZmR0NjRfdG9fY3B1KHgpXFx0XFx0YmU2NF90b19jcHUoeClcXG5hcmNoL3Bvd2VycGMvYm9vdC9saWJmZHRfZW52Lmg6MjU6I2RlZmluZSBjcHVfdG9fZmR0NjQoeClcXHRcXHRjcHVfdG9fYmU2NCh4KVxcbmFyY2gvcG93ZXJwYy9ib290L2xpYmZkdF9lbnYuaC0yNi1cXG4tLVxcbmFyY2gvcG93ZXJwYy9ib290L29mLmg9Mjc9dHlwZWRlZiB1NjRcXHRcXHRcXHRfX2JlNjQ7XFxuLS1cXG5hcmNoL3Bvd2VycGMvYm9vdC9vZi5oLTI5LSNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fX1xcbmFyY2gvcG93ZXJwYy9ib290L29mLmg6MzA6I2RlZmluZSBjcHVfdG9fYmUxNih4KSBzd2FiMTYoeClcXG5hcmNoL3Bvd2VycGMvYm9vdC9vZi5oLTMxLSNkZWZpbmUgYmUxNl90b19jcHUoeCkgc3dhYjE2KHgpXFxuYXJjaC9wb3dlcnBjL2Jvb3Qvb2YuaDozMjojZGVmaW5lIGNwdV90b19iZTMyKHgpIHN3YWIzMih4KVxcbmFyY2gvcG93ZXJwYy9ib290L29mLmgtMzMtI2RlZmluZSBiZTMyX3RvX2NwdSh4KSBzd2FiMzIoeClcXG5hcmNoL3Bvd2VycGMvYm9vdC9vZi5oOjM0OiNkZWZpbmUgY3B1X3RvX2JlNjQoeCkgc3dhYjY0KHgpXFxuYXJjaC9wb3dlcnBjL2Jvb3Qvb2YuaC0zNS0jZGVmaW5lIGJlNjRfdG9fY3B1KHgpIHN3YWI2NCh4KVxcbmFyY2gvcG93ZXJwYy9ib290L29mLmgtMzYtI2Vsc2VcXG5hcmNoL3Bvd2VycGMvYm9vdC9vZi5oOjM3OiNkZWZpbmUgY3B1X3RvX2JlMTYoeCkgKHgpXFxuYXJjaC9wb3dlcnBjL2Jvb3Qvb2YuaC0zOC0jZGVmaW5lIGJlMTZfdG9fY3B1KHgpICh4KVxcbmFyY2gvcG93ZXJwYy9ib290L29mLmg6Mzk6I2RlZmluZSBjcHVfdG9fYmUzMih4KSAoeClcXG5hcmNoL3Bvd2VycGMvYm9vdC9vZi5oLTQwLSNkZWZpbmUgYmUzMl90b19jcHUoeCkgKHgpXFxuYXJjaC9wb3dlcnBjL2Jvb3Qvb2YuaDo0MTojZGVmaW5lIGNwdV90b19iZTY0KHgpICh4KVxcbmFyY2gvcG93ZXJwYy9ib290L29mLmgtNDItI2RlZmluZSBiZTY0X3RvX2NwdSh4KSAoeClcXG4tLVxcbmFyY2gvcG93ZXJwYy9ib290L3h6X2NvbmZpZy5oPTE0PXN0YXRpYyBpbmxpbmUgdWludDMyX3Qgc3dhYjMycCh2b2lkICpwKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2Jvb3QveHpfY29uZmlnLmgtMjItI2RlZmluZSBnZXRfbGUzMihwKSAoKigodWludDMyX3QgKikgKHApKSlcXG5hcmNoL3Bvd2VycGMvYm9vdC94el9jb25maWcuaDoyMzojZGVmaW5lIGNwdV90b19iZTMyKHgpIHN3YWIzMih4KVxcbmFyY2gvcG93ZXJwYy9ib290L3h6X2NvbmZpZy5oLTI0LXN0YXRpYyBpbmxpbmUgdTMyIGJlMzJfdG9fY3B1cChjb25zdCB1MzIgKnApXFxuLS1cXG5hcmNoL3Bvd2VycGMvYm9vdC94el9jb25maWcuaC0yOS0jZGVmaW5lIGdldF9sZTMyKHApIHN3YWIzMnAocClcXG5hcmNoL3Bvd2VycGMvYm9vdC94el9jb25maWcuaDozMDojZGVmaW5lIGNwdV90b19iZTMyKHgpICh4KVxcbmFyY2gvcG93ZXJwYy9ib290L3h6X2NvbmZpZy5oLTMxLXN0YXRpYyBpbmxpbmUgdTMyIGJlMzJfdG9fY3B1cChjb25zdCB1MzIgKnApXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vY3B1ZmVhdHVyZS5oLTI2LVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9jcHVmZWF0dXJlLmg6Mjc6I2RlZmluZSBjcHVfZmVhdHVyZSh4KVxcdFxcdCh4KVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9jcHVmZWF0dXJlLmgtMjgtXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vY3B1dGltZS5oLTI0LSNpZmRlZiBfX0tFUk5FTF9fXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2NwdXRpbWUuaDoyNTojZGVmaW5lIGNwdXRpbWVfdG9fbnNlY3MoY3B1dGltZSkgdGJfdG9fbnMoY3B1dGltZSlcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vY3B1dGltZS5oLTI2LVxcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3NtcC5oPTEzOD1leHRlcm4gYm9vbCB0aHJlYWRfZ3JvdXBfc2hhcmVzX2wzO1xcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9zbXAuaC0xMzktXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3NtcC5oOjE0MDojZGVmaW5lIGNwdV9zbXRfbWFzayBjcHVfc210X21hc2tcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vc21wLmgtMTQxLSNpZmRlZiBDT05GSUdfU0NIRURfU01UXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vdG9wb2xvZ3kuaD05PXN0cnVjdCBkcm1lbV9sbWI7XFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vdG9wb2xvZ3kuaC0yMC1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vdG9wb2xvZ3kuaDoyMTojZGVmaW5lIGNwdW1hc2tfb2Zfbm9kZShub2RlKSAoKG5vZGUpID09IC0xID9cXHRcXHRcXHRcXHRcXFxcXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3RvcG9sb2d5LmgtMjItXFx0XFx0XFx0ICAgICAgIGNwdV9hbGxfbWFzayA6XFx0XFx0XFx0XFx0XFxcXFxcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3RvcG9sb2d5Lmg9Mjk9c3RhdGljIGlubGluZSBpbnQgcGNpYnVzX3RvX25vZGUoc3RydWN0IHBjaV9idXMgKmJ1cylcXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS90b3BvbG9neS5oLTM0LVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS90b3BvbG9neS5oOjM1OiNkZWZpbmUgY3B1bWFza19vZl9wY2lidXMoYnVzKVxcdChwY2lidXNfdG9fbm9kZShidXMpID09IC0xID9cXHRcXHRcXFxcXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3RvcG9sb2d5LmgtMzYtXFx0XFx0XFx0XFx0IGNwdV9hbGxfbWFzayA6XFx0XFx0XFx0XFx0XFxcXFxcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3Zkc28vcHJvY2Vzc29yLmgtMjctI2lmZGVmIENPTkZJR19QUEM2NFxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS92ZHNvL3Byb2Nlc3Nvci5oOjI4OiNkZWZpbmUgY3B1X3JlbGF4KClcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3Zkc28vcHJvY2Vzc29yLmgtMjktXFx0YXNtIHZvbGF0aWxlKEFTTV9GVFJfSUZDTFIoXFx0XFx0XFx0XFx0XFx0XFxcXFxcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3Zkc28vcHJvY2Vzc29yLmgtMzUtI2Vsc2VcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vdmRzby9wcm9jZXNzb3IuaDozNjojZGVmaW5lIGNwdV9yZWxheCgpXFx0YmFycmllcigpXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3Zkc28vcHJvY2Vzc29yLmgtMzctI2VuZGlmXFxuLS1cXG5hcmNoL3Bvd2VycGMva2V4ZWMvY29yZS5jLTI0LVxcbmFyY2gvcG93ZXJwYy9rZXhlYy9jb3JlLmM6MjU6I2RlZmluZSBjcHVfdG9fYmVfdWxvbmcgX19QQVNURShjcHVfdG9fYmUsIEJJVFNfUEVSX0xPTkcpXFxuYXJjaC9wb3dlcnBjL2tleGVjL2NvcmUuYy0yNi0jZGVmaW5lIF9fYmVfd29yZCBfX1BBU1RFKF9fYmUsIEJJVFNfUEVSX0xPTkcpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA0OjU4OjA0LjQyNjU0MDU1OVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTg5MzQyNjEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRlYnVnZ2luZyBhIFBvdGVudGlhbCBDb21waWxhdGlvbiBGYWlsdXJlKipcblxuT2theSwgaG9sZCBvbiBhIHNlY29uZC4gSSBqdXN0IHJlYWxpemVkIHRoYXQgdGhpcyBwYXRjaCBJJ20gbG9va2luZyBhdCBsaWtlbHkgd29uJ3QgY29tcGlsZS4gSSB3YXMgdGhpbmtpbmcgYGNwdWAgd2FzIGEgbWFjcm8sIGJ1dCBjbGVhcmx5LCBpdCdzIG5vdC4gVGhhdCdzIGEgbWFqb3Igb3ZlcnNpZ2h0IG9uIG15IHBhcnQuIEkgc2hvdWxkIGhhdmUgY2F1Z2h0IHRoYXQgZWFybGllci5cblxuQnV0IHdhaXQgYSBtaW51dGUsIGJlZm9yZSBJIGNvbXBsZXRlbHkgZGlzbWlzcyB0aGlzLCBsZXQncyBub3QganVtcCB0byBjb25jbHVzaW9ucy4gSXQncyBwb3NzaWJsZSwgYWxiZWl0IHVubGlrZWx5LCB0aGF0IGBjcHVgIGlzIGRlY2xhcmVkIGFzIGEgZ2xvYmFsIHZhcmlhYmxlIHNvbWV3aGVyZS4gUGVyaGFwcyBpdCdzIGRlZmluZWQgd2l0aGluIHRoaXMgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGNvbnRleHQsIG9yIG1heWJlIGl0J3MgcHVsbGVkIGluIGZyb20gYW5vdGhlciBoZWFkZXIuIExldCBtZSBqdXN0IHF1aWNrbHkgY2hlY2sgd2l0aGluIGBhcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jYCB0byBzZWUgaWYgdGhhdCdzIHRoZSBjYXNlLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgZGVmaW5pdGl2ZSBhbnN3ZXIgYmVmb3JlIEkgc3RhcnQgcmV3cml0aW5nIGNvZGUuIEkgbmVlZCB0byBiZSBzdXJlIEknbSBub3QgbWlzc2luZyBzb21ldGhpbmcgb2J2aW91cyBiZWZvcmUgSSByYWlzZSBhIGZsYWcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzNzY2LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDQ6NTg6MDguNjE1ODg1ODQyWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Mzc4NzQyNywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RydWN0IGt2bV92Y3B1IFxcXFwqY3B1XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA0OjU4OjA4LjY1OTY4NDg5WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzMDcwNjA2NDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MgcmVuZGVyZWQgaW4gdGhlIGZpcnN0IHBlcnNvbiwgYXNzdW1pbmcgSSdtIGFuIGV4cGVydDpcblxuKipJbnZlc3RpZ2F0aW5nIEdsb2JhbCBWYXJpYWJsZSBTY29wZSBpbiBQb3dlclBDIEtWTSBDb2RlKipcblxuQWxyaWdodCwgYmVmb3JlIEkgZGl2ZSBpbnRvIHRoZSBoZWFydCBvZiB0aGlzIHByb2JsZW0sIGxldCdzIGp1c3QgbWFrZSBhYnNvbHV0ZWx5IHN1cmUgd2UgaGF2ZW4ndCBnb3QgYSBnbG9iYWwgdmFyaWFibGUgaXNzdWUgY2F1c2luZyB0aGUgdHJvdWJsZS4gSSBuZWVkIHRvIHF1aWNrbHkgdmVyaWZ5IHRoZSBzY29wZSBvZiB0aGUgYGNwdWAgdmFyaWFibGUgd2l0aGluIGBhcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jYC4gSXQncyBhIGZ1bmRhbWVudGFsIHN0ZXA7IEkgY2FuJ3QgYWZmb3JkIHRvIG92ZXJsb29rIGEgc2ltcGxlIHNjb3BlIHByb2JsZW0gYW5kIHN0YXJ0IGNoYXNpbmcgbXkgdGFpbCB3aXRoIGNvbXBsZXggZGVidWdnaW5nIHRlY2huaXF1ZXMgaWYgaXQncyBub3QgYWJzb2x1dGVseSBuZWNlc3NhcnkuIExldCBtZSBwdWxsIHVwIHRoYXQgZmlsZSBhbmQgZG91YmxlLWNoZWNrIGl0cyBkZWNsYXJhdGlvbi4gR2xvYmFsIHZhcmlhYmxlcywgd2hpbGUgc29tZXRpbWVzIG5lY2Vzc2FyeSwgY2FuIGJlIGEgc291cmNlIG9mIGhlYWRhY2hlcyBpZiBub3QgcHJvcGVybHkgbWFuYWdlZCwgc28gSSBuZWVkIHRvIGtub3cgZGVmaW5pdGl2ZWx5IGlmIHRoaXMgaW5zdGFuY2UgaXMgaW50ZW5kZWQgdG8gYmUgZ2xvYmFsLCBhbmQgaWYgaXQncyBiZWluZyBhY2Nlc3NlZCBpbiB0aGUgYXBwcm9wcmlhdGUgbWFubmVyIGJ5IG90aGVyIGZ1bmN0aW9ucy9maWxlcy4gSSBuZWVkIHRvIGlkZW50aWZ5IHdoZXJlIGBjcHVgIGlzICpkZWNsYXJlZCouIFRoZW4sIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBhY2Nlc3MgZnJvbSBhbnkgb3RoZXIgZmlsZXMuIExldCdzIGRvIHRoaXMgbWV0aG9kaWNhbGx5IGFuZCBzZWUgd2hhdCB3ZSBjb21lIHVwIHdpdGguXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0MDgyLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDQ6NTg6MTIuOTY2NzQ4MjI2WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjA4NjQ4NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjcHVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDM1MTggbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjktI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2Fub25faW5vZGVzLmhcXHUwMDNlXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzozMDojaW5jbHVkZSBcXHUwMDNjbGludXgvY3B1LmhcXHUwMDNlXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzozMTojaW5jbHVkZSBcXHUwMDNjbGludXgvY3B1bWFzay5oXFx1MDAzZVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzItI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NwaW5sb2NrLmhcXHUwMDNlXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTU0LSNpbmNsdWRlIFxcdTAwM2Nhc20vZGlzYXNzZW1ibGUuaFxcdTAwM2VcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjU1OiNpbmNsdWRlIFxcdTAwM2Nhc20vY3B1dGFibGUuaFxcdTAwM2VcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTU2LSNpbmNsdWRlIFxcdTAwM2Nhc20vY2FjaGVmbHVzaC5oXFx1MDAzZVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy02NS0jaW5jbHVkZSBcXHUwMDNjYXNtL3Byb2Nlc3Nvci5oXFx1MDAzZVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NjY6I2luY2x1ZGUgXFx1MDAzY2FzbS9jcHV0aHJlYWRzLmhcXHUwMDNlXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy02Ny0jaW5jbHVkZSBcXHUwMDNjYXNtL3BhZ2UuaFxcdTAwM2VcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM9MTMzPU1PRFVMRV9QQVJNX0RFU0MobmVzdGVkLCBcXFwiRW5hYmxlIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiAob25seSBvbiBQT1dFUjkpXFxcIik7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0xMzQtXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoxMzU6c3RhdGljIGludCBrdm1wcGNfaHZfc2V0dXBfaHRhYl9ybWEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTEzNi1cXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM9MTUxPXN0YXRpYyB1bnNpZ25lZCBsb25nIHA4X3J3bXJfdmFsdWVzW01BWF9TTVRfVEhSRUFEUyArIDFdID0ge1xcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0xNjItXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoxNjM6c3RhdGljIGlubGluZSBzdHJ1Y3Qga3ZtX3ZjcHUgKm5leHRfcnVubmFibGVfdGhyZWFkKHN0cnVjdCBrdm1wcGNfdmNvcmUgKnZjLFxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMTY0LVxcdFxcdGludCAqaXApXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTE2Ni1cXHRpbnQgaSA9ICppcDtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjE2NzpcXHRzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHU7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0xNjgtXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0xNjktXFx0d2hpbGUgKCsraSBcXHUwMDNjIE1BWF9TTVRfVEhSRUFEUykge1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MTcwOlxcdFxcdHZjcHUgPSBSRUFEX09OQ0UodmMtXFx1MDAzZXJ1bm5hYmxlX3RocmVhZHNbaV0pO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MTcxOlxcdFxcdGlmICh2Y3B1KSB7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0xNzItXFx0XFx0XFx0KmlwID0gaTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjE3MzpcXHRcXHRcXHRyZXR1cm4gdmNwdTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTE3NC1cXHRcXHR9XFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTE3OS0vKiBVc2VkIHRvIHRyYXZlcnNlIHRoZSBsaXN0IG9mIHJ1bm5hYmxlIHRocmVhZHMgZm9yIGEgZ2l2ZW4gdmNvcmUgKi9cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjE4MDojZGVmaW5lIGZvcl9lYWNoX3J1bm5hYmxlX3RocmVhZChpLCB2Y3B1LCB2YykgXFxcXFxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MTgxOlxcdGZvciAoaSA9IC0xOyAodmNwdSA9IG5leHRfcnVubmFibGVfdGhyZWFkKHZjLCBcXHUwMDI2aSkpOyApXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0xODItXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoxODM6c3RhdGljIGJvb2wga3ZtcHBjX2lwaV90aHJlYWQoaW50IGNwdSlcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTE4NC17XFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTE5MC1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjE5MTpcXHQvKiBPbiBQT1dFUjkgd2UgY2FuIHVzZSBtc2dzbmQgdG8gSVBJIGFueSBjcHUgKi9cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjE5MjpcXHRpZiAoY3B1X2hhc19mZWF0dXJlKENQVV9GVFJfQVJDSF8zMDApKSB7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoxOTM6XFx0XFx0bXNnIHw9IGdldF9oYXJkX3NtcF9wcm9jZXNzb3JfaWQoY3B1KTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTE5NC1cXHRcXHRzbXBfbWIoKTtcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMTk5LVxcdC8qIE9uIFBPV0VSOCBmb3IgSVBJcyB0byB0aHJlYWRzIGluIHRoZSBzYW1lIGNvcmUsIHVzZSBtc2dzbmQgKi9cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjIwMDpcXHRpZiAoY3B1X2hhc19mZWF0dXJlKENQVV9GVFJfQVJDSF8yMDdTKSkge1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjAxLVxcdFxcdHByZWVtcHRfZGlzYWJsZSgpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjAyOlxcdFxcdGlmIChjcHVfZmlyc3RfdGhyZWFkX3NpYmxpbmcoY3B1KSA9PVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjAzOlxcdFxcdCAgICBjcHVfZmlyc3RfdGhyZWFkX3NpYmxpbmcoc21wX3Byb2Nlc3Nvcl9pZCgpKSkge1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjA0OlxcdFxcdFxcdG1zZyB8PSBjcHVfdGhyZWFkX2luX2NvcmUoY3B1KTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTIwNS1cXHRcXHRcXHRzbXBfbWIoKTtcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjEzLSNpZiBkZWZpbmVkKENPTkZJR19QUENfSUNQX05BVElWRSkgXFx1MDAyNlxcdTAwMjYgZGVmaW5lZChDT05GSUdfU01QKVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjE0OlxcdGlmIChjcHUgXFx1MDAzZT0gMCBcXHUwMDI2XFx1MDAyNiBjcHUgXFx1MDAzYyBucl9jcHVfaWRzKSB7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyMTU6XFx0XFx0aWYgKHBhY2FfcHRyc1tjcHVdLVxcdTAwM2Vrdm1faHN0YXRlLnhpY3NfcGh5cykge1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjE2OlxcdFxcdFxcdHhpY3Nfd2FrZV9jcHUoY3B1KTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTIxNy1cXHRcXHRcXHRyZXR1cm4gdHJ1ZTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTIxOC1cXHRcXHR9XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyMTk6XFx0XFx0b3BhbF9pbnRfc2V0X21mcnIoZ2V0X2hhcmRfc21wX3Byb2Nlc3Nvcl9pZChjcHUpLCBJUElfUFJJT1JJVFkpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjIwLVxcdFxcdHJldHVybiB0cnVlO1xcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yMjYtXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyMjc6c3RhdGljIHZvaWQga3ZtcHBjX2Zhc3RfdmNwdV9raWNrX2h2KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTIyOC17XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyMjk6XFx0aW50IGNwdTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTIzMC1cXHRzdHJ1Y3QgcmN1d2FpdCAqd2FpdHA7XFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTIzMy1cXHQgKiByY3V3YWl0X3dha2VfdXAgY29udGFpbnMgc21wX21iKCkgd2hpY2ggb3JkZXJzIHByaW9yIHN0b3JlcyB0aGF0XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyMzQ6XFx0ICogY3JlYXRlIHBlbmRpbmcgd29yayB2cyBiZWxvdyBsb2FkcyBvZiBjcHUgZmllbGRzLiBUaGUgb3RoZXIgc2lkZVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjM1OlxcdCAqIGlzIHRoZSBiYXJyaWVyIGluIHZjcHUgcnVuIHRoYXQgb3JkZXJzIHNldHRpbmcgdGhlIGNwdSBmaWVsZHMgdnNcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTIzNi1cXHQgKiB0ZXN0aW5nIGZvciBwZW5kaW5nIHdvcmsuXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTIzOC1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjIzOTpcXHR3YWl0cCA9IGt2bV9hcmNoX3ZjcHVfZ2V0X3dhaXQodmNwdSk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yNDAtXFx0aWYgKHJjdXdhaXRfd2FrZV91cCh3YWl0cCkpXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyNDE6XFx0XFx0Kyt2Y3B1LVxcdTAwM2VzdGF0LmdlbmVyaWMuaGFsdF93YWtldXA7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yNDItXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyNDM6XFx0Y3B1ID0gUkVBRF9PTkNFKHZjcHUtXFx1MDAzZWFyY2gudGhyZWFkX2NwdSk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyNDQ6XFx0aWYgKGNwdSBcXHUwMDNlPSAwIFxcdTAwMjZcXHUwMDI2IGt2bXBwY19pcGlfdGhyZWFkKGNwdSkpXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yNDUtXFx0XFx0cmV0dXJuO1xcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yNDctXFx0LyogQ1BVIHBvaW50cyB0byB0aGUgZmlyc3QgdGhyZWFkIG9mIHRoZSBjb3JlICovXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyNDg6XFx0Y3B1ID0gdmNwdS1cXHUwMDNlY3B1O1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjQ5OlxcdGlmIChjcHUgXFx1MDAzZT0gMCBcXHUwMDI2XFx1MDAyNiBjcHUgXFx1MDAzYyBucl9jcHVfaWRzIFxcdTAwMjZcXHUwMDI2IGNwdV9vbmxpbmUoY3B1KSlcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjI1MDpcXHRcXHRzbXBfc2VuZF9yZXNjaGVkdWxlKGNwdSk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yNTEtfVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yNTMtLypcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjI1NDogKiBXZSB1c2UgdGhlIHZjcHVfbG9hZC9wdXQgZnVuY3Rpb25zIHRvIG1lYXN1cmUgc3RvbGVuIHRpbWUuXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yNTUtICpcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjI1NjogKiBTdG9sZW4gdGltZSBpcyBjb3VudGVkIGFzIHRpbWUgd2hlbiBlaXRoZXIgdGhlIHZjcHUgaXMgYWJsZSB0b1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjU3LSAqIHJ1biBhcyBwYXJ0IG9mIGEgdmlydHVhbCBjb3JlLCBidXQgdGhlIHRhc2sgcnVubmluZyB0aGUgdmNvcmVcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjI1ODogKiBpcyBwcmVlbXB0ZWQgb3Igc2xlZXBpbmcsIG9yIHdoZW4gdGhlIHZjcHUgbmVlZHMgc29tZXRoaW5nIGRvbmVcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjI1OTogKiBpbiB0aGUga2VybmVsIGJ5IHRoZSB0YXNrIHJ1bm5pbmcgdGhlIHZjcHUsIGJ1dCB0aGF0IHRhc2sgaXNcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTI2MC0gKiBwcmVlbXB0ZWQgb3Igc2xlZXBpbmcuICBUaG9zZSB0d28gdGhpbmdzIGhhdmUgdG8gYmUgY291bnRlZFxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjYxOiAqIHNlcGFyYXRlbHksIHNpbmNlIG9uZSBvZiB0aGUgdmNwdSB0YXNrcyB3aWxsIHRha2Ugb24gdGhlIGpvYlxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjYyOiAqIG9mIHJ1bm5pbmcgdGhlIGNvcmUsIGFuZCB0aGUgb3RoZXIgdmNwdSB0YXNrcyBpbiB0aGUgdmNvcmUgd2lsbFxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjYzLSAqIHNsZWVwIHdhaXRpbmcgZm9yIGl0IHRvIGRvIHRoYXQsIGJ1dCB0aGF0IHNsZWVwIHNob3VsZG4ndCBjb3VudFxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yNjUtICpcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjI2NjogKiBIZW5jZSB3ZSBhY2N1bXVsYXRlIHN0b2xlbiB0aW1lIHdoZW4gdGhlIHZjcHUgY2FuIHJ1biBhcyBwYXJ0IG9mXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyNjc6ICogYSB2Y29yZSB1c2luZyB2Yy1cXHUwMDNlc3RvbGVuX3RiLCBhbmQgdGhlIHN0b2xlbiB0aW1lIHdoZW4gdGhlIHZjcHVcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTI2OC0gKiBuZWVkcyBpdHMgdGFzayB0byBkbyBvdGhlciB0aGluZ3MgaW4gdGhlIGtlcm5lbCAoZm9yIGV4YW1wbGUsXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yNjktICogc2VydmljZSBhIHBhZ2UgZmF1bHQpIGluIGJ1c3lfc3RvbGVuLiAgV2UgZG9uJ3QgYWNjdW11bGF0ZVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjcwOiAqIHN0b2xlbiB0aW1lIGZvciBhIHZjb3JlIHdoZW4gaXQgaXMgaW5hY3RpdmUsIG9yIGZvciBhIHZjcHVcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTI3MS0gKiB3aGVuIGl0IGlzIGluIHN0YXRlIFJVTk5JTkcgb3IgTk9UUkVBRFkuICBOT1RSRUFEWSBpcyBhIGJpdCBvZlxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MjcyOiAqIGEgbWlzbm9tZXI7IGl0IG1lYW5zIHRoYXQgdGhlIHZjcHUgdGFzayBpcyBub3QgZXhlY3V0aW5nIGluXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yNzMtICogdGhlIEtWTV9WQ1BVX1JVTiBpb2N0bCwgaS5lLiBpdCBpcyBpbiB1c2Vyc3BhY2Ugb3IgZWxzZXdoZXJlIGluXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yNzQtICogdGhlIGtlcm5lbC4gIFdlIGRvbid0IGhhdmUgYW55IHdheSBvZiBkaXZpZGluZyB1cCB0aGF0IHRpbWVcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjI3NTogKiBiZXR3ZWVuIHRpbWUgdGhhdCB0aGUgdmNwdSBpcyBnZW51aW5lbHkgc3RvcHBlZCwgdGltZSB0aGF0XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyNzY6ICogdGhlIHRhc2sgaXMgYWN0aXZlbHkgd29ya2luZyBvbiBiZWhhbGYgb2YgdGhlIHZjcHUsIGFuZCB0aW1lXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yNzctICogdGhhdCB0aGUgdGFzayBpcyBwcmVlbXB0ZWQsIHNvIHdlIGRvbid0IGNvdW50IGFueSBvZiBpdCBhc1xcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yODUtICpcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjI4NjogKiBUaGUgUE9XRVI5IHBhdGggaXMgc2ltcGxlciwgb25lIHZjcHUgcGVyIHZpcnR1YWwgY29yZSBzbyB0aGVcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjI4NzogKiBmb3JtZXIgY2FzZSBkb2VzIG5vdCBleGlzdC4gSWYgYSB2Y3B1IGlzIHByZWVtcHRlZCB3aGVuIGl0IGlzXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yODgtICogQlVTWV9JTl9IT1NUIGFuZCBub3QgY2VkZWQgb3Igb3RoZXJ3aXNlIGJsb2NrZWQsIHRoZW4gYWNjdW11bGF0ZVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYz0yOTM9c3RhdGljIHZvaWQga3ZtcHBjX2NvcmVfc3RhcnRfc3RvbGVuKHN0cnVjdCBrdm1wcGNfdmNvcmUgKnZjLCB1NjQgdGIpXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTI5Ni1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjI5NzpcXHRXQVJOX09OX09OQ0UoY3B1X2hhc19mZWF0dXJlKENQVV9GVFJfQVJDSF8zMDApKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTI5OC1cXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM9MzA0PXN0YXRpYyB2b2lkIGt2bXBwY19jb3JlX2VuZF9zdG9sZW4oc3RydWN0IGt2bXBwY192Y29yZSAqdmMsIHU2NCB0YilcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzA3LVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MzA4OlxcdFdBUk5fT05fT05DRShjcHVfaGFzX2ZlYXR1cmUoQ1BVX0ZUUl9BUkNIXzMwMCkpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzA5LVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0zMTctXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzozMTg6c3RhdGljIHZvaWQga3ZtcHBjX2NvcmVfdmNwdV9sb2FkX2h2KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgaW50IGNwdSlcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTMxOS17XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzozMjA6XFx0c3RydWN0IGt2bXBwY192Y29yZSAqdmMgPSB2Y3B1LVxcdTAwM2VhcmNoLnZjb3JlO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzIxLVxcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTMyMy1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjMyNDpcXHRpZiAoY3B1X2hhc19mZWF0dXJlKENQVV9GVFJfQVJDSF8zMDApKSB7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzozMjU6XFx0XFx0aWYgKHZjcHUtXFx1MDAzZWFyY2guYnVzeV9wcmVlbXB0ICE9IFRCX05JTCkge1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MzI2OlxcdFxcdFxcdFdBUk5fT05fT05DRSh2Y3B1LVxcdTAwM2VhcmNoLnN0YXRlICE9IEtWTVBQQ19WQ1BVX0JVU1lfSU5fSE9TVCk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzozMjc6XFx0XFx0XFx0dmMtXFx1MDAzZXN0b2xlbl90YiArPSBtZnRiKCkgLSB2Y3B1LVxcdTAwM2VhcmNoLmJ1c3lfcHJlZW1wdDtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjMyODpcXHRcXHRcXHR2Y3B1LVxcdTAwM2VhcmNoLmJ1c3lfcHJlZW1wdCA9IFRCX05JTDtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTMyOS1cXHRcXHR9XFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTMzNy1cXHQgKiBiZWNhdXNlIG9ubHkgdGhpcyB0YXNrIGV2ZXIgc2V0cyB2Yy1cXHUwMDNlcnVubmVyIHRvIHRoaXNcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjMzODpcXHQgKiB2Y3B1LCBhbmQgb25jZSBpdCBpcyBzZXQgdG8gdGhpcyB2Y3B1LCBvbmx5IHRoaXMgdGFza1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzM5LVxcdCAqIGV2ZXIgc2V0cyBpdCB0byBOVUxMLlxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzQwLVxcdCAqL1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MzQxOlxcdGlmICh2Yy1cXHUwMDNlcnVubmVyID09IHZjcHUgXFx1MDAyNlxcdTAwMjYgdmMtXFx1MDAzZXZjb3JlX3N0YXRlIFxcdTAwM2U9IFZDT1JFX1NMRUVQSU5HKVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzQyLVxcdFxcdGt2bXBwY19jb3JlX2VuZF9zdG9sZW4odmMsIG5vdyk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0zNDMtXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzozNDQ6XFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNnZjcHUtXFx1MDAzZWFyY2gudGJhY2N0X2xvY2ssIGZsYWdzKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjM0NTpcXHRpZiAodmNwdS1cXHUwMDNlYXJjaC5zdGF0ZSA9PSBLVk1QUENfVkNQVV9CVVNZX0lOX0hPU1QgXFx1MDAyNlxcdTAwMjZcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjM0NjpcXHQgICAgdmNwdS1cXHUwMDNlYXJjaC5idXN5X3ByZWVtcHQgIT0gVEJfTklMKSB7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzozNDc6XFx0XFx0dmNwdS1cXHUwMDNlYXJjaC5idXN5X3N0b2xlbiArPSBub3cgLSB2Y3B1LVxcdTAwM2VhcmNoLmJ1c3lfcHJlZW1wdDtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjM0ODpcXHRcXHR2Y3B1LVxcdTAwM2VhcmNoLmJ1c3lfcHJlZW1wdCA9IFRCX05JTDtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTM0OS1cXHR9XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzozNTA6XFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2dmNwdS1cXHUwMDNlYXJjaC50YmFjY3RfbG9jaywgZmxhZ3MpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzUxLX1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTM1Mi1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjM1MzpzdGF0aWMgdm9pZCBrdm1wcGNfY29yZV92Y3B1X3B1dF9odihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0zNTQte1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MzU1OlxcdHN0cnVjdCBrdm1wcGNfdmNvcmUgKnZjID0gdmNwdS1cXHUwMDNlYXJjaC52Y29yZTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTM1Ni1cXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0zNTgtXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzozNTk6XFx0aWYgKGNwdV9oYXNfZmVhdHVyZShDUFVfRlRSX0FSQ0hfMzAwKSkge1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzYwLVxcdFxcdC8qXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTM2My1cXHRcXHQgKi9cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjM2NDpcXHRcXHRXQVJOX09OX09OQ0UodmNwdS1cXHUwMDNlYXJjaC5zdGF0ZSA9PSBLVk1QUENfVkNQVV9SVU5OQUJMRSk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0zNjUtXFx0XFx0LypcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjM2NjpcXHRcXHQgKiBBY2NvdW50IHN0b2xlbiB0aW1lIHdoZW4gcHJlZW1wdGVkIHdoaWxlIHRoZSB2Y3B1IHRhc2sgaXNcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTM2Ny1cXHRcXHQgKiBydW5uaW5nIGluIHRoZSBrZXJuZWwgKGJ1dCBub3QgaW4gcWVtdSwgd2hpY2ggaXMgSU5BQ1RJVkUpLlxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0zNjktXFx0XFx0aWYgKHRhc2tfaXNfcnVubmluZyhjdXJyZW50KSBcXHUwMDI2XFx1MDAyNlxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MzcwOlxcdFxcdFxcdFxcdHZjcHUtXFx1MDAzZWFyY2guc3RhdGUgPT0gS1ZNUFBDX1ZDUFVfQlVTWV9JTl9IT1NUKVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MzcxOlxcdFxcdFxcdHZjcHUtXFx1MDAzZWFyY2guYnVzeV9wcmVlbXB0ID0gbWZ0YigpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzcyLVxcdFxcdHJldHVybjtcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzc2LVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6Mzc3OlxcdGlmICh2Yy1cXHUwMDNlcnVubmVyID09IHZjcHUgXFx1MDAyNlxcdTAwMjYgdmMtXFx1MDAzZXZjb3JlX3N0YXRlIFxcdTAwM2U9IFZDT1JFX1NMRUVQSU5HKVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzc4LVxcdFxcdGt2bXBwY19jb3JlX3N0YXJ0X3N0b2xlbih2Yywgbm93KTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTM3OS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjM4MDpcXHRzcGluX2xvY2tfaXJxc2F2ZShcXHUwMDI2dmNwdS1cXHUwMDNlYXJjaC50YmFjY3RfbG9jaywgZmxhZ3MpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MzgxOlxcdGlmICh2Y3B1LVxcdTAwM2VhcmNoLnN0YXRlID09IEtWTVBQQ19WQ1BVX0JVU1lfSU5fSE9TVClcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjM4MjpcXHRcXHR2Y3B1LVxcdTAwM2VhcmNoLmJ1c3lfcHJlZW1wdCA9IG5vdztcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjM4MzpcXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZ2Y3B1LVxcdTAwM2VhcmNoLnRiYWNjdF9sb2NrLCBmbGFncyk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0zODQtfVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMzg1LVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6Mzg2OnN0YXRpYyB2b2lkIGt2bXBwY19zZXRfcHZyX2h2KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTMyIHB2cilcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTM4Ny17XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzozODg6XFx0dmNwdS1cXHUwMDNlYXJjaC5wdnIgPSBwdnI7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0zODktfVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYz0zOTQ9c3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIG1hcF9wY3JfdG9fY2FwKHVuc2lnbmVkIGxvbmcgcGNyKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00MDItXFx0Y2FzZSBQQ1JfQVJDSF8zMTpcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjQwMzpcXHRcXHRpZiAoY3B1X2hhc19mZWF0dXJlKENQVV9GVFJfUDExX1BWUikpXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00MDQtXFx0XFx0XFx0Y2FwID0gSF9HVUVTVF9DQVBfUE9XRVIxMTtcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNDE0LVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NDE1OnN0YXRpYyBpbnQga3ZtcHBjX3NldF9hcmNoX2NvbXBhdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBhcmNoX2NvbXBhdClcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQxNi17XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00MTctXFx0dW5zaWduZWQgbG9uZyBob3N0X3Bjcl9iaXQgPSAwLCBndWVzdF9wY3JfYml0ID0gMCwgY2FwID0gMDtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjQxODpcXHRzdHJ1Y3Qga3ZtcHBjX3Zjb3JlICp2YyA9IHZjcHUtXFx1MDAzZWFyY2gudmNvcmU7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00MTktXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00MjAtXFx0LyogV2UgY2FuIChlbXVsYXRlKSBvdXIgb3duIGFyY2hpdGVjdHVyZSB2ZXJzaW9uIGFuZCBhbnl0aGluZyBvbGRlciAqL1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NDIxOlxcdGlmIChjcHVfaGFzX2ZlYXR1cmUoQ1BVX0ZUUl9QMTFfUFZSKSB8fCBjcHVfaGFzX2ZlYXR1cmUoQ1BVX0ZUUl9BUkNIXzMxKSlcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQyMi1cXHRcXHRob3N0X3Bjcl9iaXQgPSBQQ1JfQVJDSF8zMTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjQyMzpcXHRlbHNlIGlmIChjcHVfaGFzX2ZlYXR1cmUoQ1BVX0ZUUl9BUkNIXzMwMCkpXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00MjQtXFx0XFx0aG9zdF9wY3JfYml0ID0gUENSX0FSQ0hfMzAwO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NDI1OlxcdGVsc2UgaWYgKGNwdV9oYXNfZmVhdHVyZShDUFVfRlRSX0FSQ0hfMjA3UykpXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00MjYtXFx0XFx0aG9zdF9wY3JfYml0ID0gUENSX0FSQ0hfMjA3O1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NDI3OlxcdGVsc2UgaWYgKGNwdV9oYXNfZmVhdHVyZShDUFVfRlRSX0FSQ0hfMjA2KSlcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQyOC1cXHRcXHRob3N0X3Bjcl9iaXQgPSBQQ1JfQVJDSF8yMDY7XFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQ3NC1cXHR2Yy1cXHUwMDNlYXJjaF9jb21wYXQgPSBhcmNoX2NvbXBhdDtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjQ3NTpcXHRrdm1odl9uZXN0ZWR2Ml9tYXJrX2RpcnR5KHZjcHUsIEtWTVBQQ19HU0lEX0xPR0lDQUxfUFZSKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQ3Ni1cXHQvKlxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00ODUtXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo0ODY6c3RhdGljIHZvaWQga3ZtcHBjX2R1bXBfcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00ODcte1xcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00ODktXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo0OTA6XFx0cHJfZXJyKFxcXCJ2Y3B1ICVwICglZCk6XFxcXG5cXFwiLCB2Y3B1LCB2Y3B1LVxcdTAwM2V2Y3B1X2lkKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQ5MS1cXHRwcl9lcnIoXFxcInBjICA9ICUuMTZseCAgbXNyID0gJS4xNmxseCAgdHJhcCA9ICV4XFxcXG5cXFwiLFxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NDkyOlxcdCAgICAgICB2Y3B1LVxcdTAwM2VhcmNoLnJlZ3MubmlwLCB2Y3B1LVxcdTAwM2VhcmNoLnNocmVncy5tc3IsIHZjcHUtXFx1MDAzZWFyY2gudHJhcCk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00OTMtXFx0Zm9yIChyID0gMDsgciBcXHUwMDNjIDE2OyArK3IpXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00OTQtXFx0XFx0cHJfZXJyKFxcXCJyJTJkID0gJS4xNmx4ICByJWQgPSAlLjE2bHhcXFxcblxcXCIsXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo0OTU6XFx0XFx0ICAgICAgIHIsIGt2bXBwY19nZXRfZ3ByKHZjcHUsIHIpLFxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NDk2OlxcdFxcdCAgICAgICByKzE2LCBrdm1wcGNfZ2V0X2dwcih2Y3B1LCByKzE2KSk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00OTctXFx0cHJfZXJyKFxcXCJjdHIgPSAlLjE2bHggIGxyICA9ICUuMTZseFxcXFxuXFxcIixcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjQ5ODpcXHQgICAgICAgdmNwdS1cXHUwMDNlYXJjaC5yZWdzLmN0ciwgdmNwdS1cXHUwMDNlYXJjaC5yZWdzLmxpbmspO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNDk5LVxcdHByX2VycihcXFwic3JyMCA9ICUuMTZsbHggc3JyMSA9ICUuMTZsbHhcXFxcblxcXCIsXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1MDA6XFx0ICAgICAgIHZjcHUtXFx1MDAzZWFyY2guc2hyZWdzLnNycjAsIHZjcHUtXFx1MDAzZWFyY2guc2hyZWdzLnNycjEpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTAxLVxcdHByX2VycihcXFwic3ByZzAgPSAlLjE2bGx4IHNwcmcxID0gJS4xNmxseFxcXFxuXFxcIixcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjUwMjpcXHQgICAgICAgdmNwdS1cXHUwMDNlYXJjaC5zaHJlZ3Muc3ByZzAsIHZjcHUtXFx1MDAzZWFyY2guc2hyZWdzLnNwcmcxKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTUwMy1cXHRwcl9lcnIoXFxcInNwcmcyID0gJS4xNmxseCBzcHJnMyA9ICUuMTZsbHhcXFxcblxcXCIsXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1MDQ6XFx0ICAgICAgIHZjcHUtXFx1MDAzZWFyY2guc2hyZWdzLnNwcmcyLCB2Y3B1LVxcdTAwM2VhcmNoLnNocmVncy5zcHJnMyk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01MDUtXFx0cHJfZXJyKFxcXCJjciA9ICUuOGx4ICB4ZXIgPSAlLjE2bHggIGRzaXNyID0gJS44eFxcXFxuXFxcIixcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjUwNjpcXHQgICAgICAgdmNwdS1cXHUwMDNlYXJjaC5yZWdzLmNjciwgdmNwdS1cXHUwMDNlYXJjaC5yZWdzLnhlciwgdmNwdS1cXHUwMDNlYXJjaC5zaHJlZ3MuZHNpc3IpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NTA3OlxcdHByX2VycihcXFwiZGFyID0gJS4xNmxseFxcXFxuXFxcIiwgdmNwdS1cXHUwMDNlYXJjaC5zaHJlZ3MuZGFyKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTUwOC1cXHRwcl9lcnIoXFxcImZhdWx0IGRhciA9ICUuMTZseCBkc2lzciA9ICUuOHhcXFxcblxcXCIsXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1MDk6XFx0ICAgICAgIHZjcHUtXFx1MDAzZWFyY2guZmF1bHRfZGFyLCB2Y3B1LVxcdTAwM2VhcmNoLmZhdWx0X2RzaXNyKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjUxMDpcXHRwcl9lcnIoXFxcIlNMQiAoJWQgZW50cmllcyk6XFxcXG5cXFwiLCB2Y3B1LVxcdTAwM2VhcmNoLnNsYl9tYXgpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NTExOlxcdGZvciAociA9IDA7IHIgXFx1MDAzYyB2Y3B1LVxcdTAwM2VhcmNoLnNsYl9tYXg7ICsrcilcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTUxMi1cXHRcXHRwcl9lcnIoXFxcIiAgRVNJRCA9ICUuMTZsbHggVlNJRCA9ICUuMTZsbHhcXFxcblxcXCIsXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1MTM6XFx0XFx0ICAgICAgIHZjcHUtXFx1MDAzZWFyY2guc2xiW3JdLm9yaWdlLCB2Y3B1LVxcdTAwM2VhcmNoLnNsYltyXS5vcmlndik7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01MTQtXFx0cHJfZXJyKFxcXCJscGNyID0gJS4xNmx4IHNkcjEgPSAlLjE2bHggbGFzdF9pbnN0ID0gJS4xNmx4XFxcXG5cXFwiLFxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NTE1OlxcdCAgICAgICB2Y3B1LVxcdTAwM2VhcmNoLnZjb3JlLVxcdTAwM2VscGNyLCB2Y3B1LVxcdTAwM2Vrdm0tXFx1MDAzZWFyY2guc2RyMSxcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjUxNjpcXHQgICAgICAgdmNwdS1cXHUwMDNlYXJjaC5sYXN0X2luc3QpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTE3LX1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTUxOC1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjUxOTpzdGF0aWMgc3RydWN0IGt2bV92Y3B1ICprdm1wcGNfZmluZF92Y3B1KHN0cnVjdCBrdm0gKmt2bSwgaW50IGlkKVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTIwLXtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjUyMTpcXHRyZXR1cm4ga3ZtX2dldF92Y3B1X2J5X2lkKGt2bSwgaWQpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTIyLX1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTUyMy1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjUyNDpzdGF0aWMgdm9pZCBpbml0X3ZwYShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBscHBhY2EgKnZwYSlcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTUyNS17XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01MjYtXFx0dnBhLVxcdTAwM2VfX29sZF9zdGF0dXMgfD0gTFBQQUNBX09MRF9TSEFSRURfUFJPQztcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjUyNzpcXHR2cGEtXFx1MDAzZXlpZWxkX2NvdW50ID0gY3B1X3RvX2JlMzIoMSk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01MjgtfVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTI5LVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NTMwOnN0YXRpYyBpbnQgc2V0X3ZwYShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1wcGNfdnBhICp2LFxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTMxLVxcdFxcdCAgIHVuc2lnbmVkIGxvbmcgYWRkciwgdW5zaWduZWQgbG9uZyBsZW4pXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTUzNS1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjUzNjpcXHRzcGluX2xvY2soXFx1MDAyNnZjcHUtXFx1MDAzZWFyY2gudnBhX3VwZGF0ZV9sb2NrKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTUzNy1cXHRpZiAodi1cXHUwMDNlbmV4dF9ncGEgIT0gYWRkciB8fCB2LVxcdTAwM2VsZW4gIT0gbGVuKSB7XFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTU0MS1cXHR9XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1NDI6XFx0c3Bpbl91bmxvY2soXFx1MDAyNnZjcHUtXFx1MDAzZWFyY2gudnBhX3VwZGF0ZV9sb2NrKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTU0My1cXHRyZXR1cm4gMDtcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM9NTU1PXN0YXRpYyBpbnQgdnBhX2lzX3JlZ2lzdGVyZWQoc3RydWN0IGt2bXBwY192cGEgKnZwYXApXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTU2MS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjU2MjpzdGF0aWMgdW5zaWduZWQgbG9uZyBkb19oX3JlZ2lzdGVyX3ZwYShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01NjMtXFx0XFx0XFx0XFx0ICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3MsXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1NjQ6XFx0XFx0XFx0XFx0ICAgICAgIHVuc2lnbmVkIGxvbmcgdmNwdWlkLCB1bnNpZ25lZCBsb25nIHZwYSlcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTU2NS17XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo1NjY6XFx0c3RydWN0IGt2bSAqa3ZtID0gdmNwdS1cXHUwMDNla3ZtO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTY3LVxcdHVuc2lnbmVkIGxvbmcgbGVuLCBuYjtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTU2OC1cXHR2b2lkICp2YTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjU2OTpcXHRzdHJ1Y3Qga3ZtX3ZjcHUgKnR2Y3B1O1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTcwLVxcdGludCBlcnI7XFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTU3My1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjU3NDpcXHR0dmNwdSA9IGt2bXBwY19maW5kX3ZjcHUoa3ZtLCB2Y3B1aWQpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NTc1OlxcdGlmICghdHZjcHUpXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01NzYtXFx0XFx0cmV0dXJuIEhfUEFSQU1FVEVSO1xcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01ODktXFx0XFx0aWYgKHN1YmZ1bmMgPT0gSF9WUEFfUkVHX1ZQQSlcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjU5MDpcXHRcXHRcXHRsZW4gPSBiZTE2X3RvX2NwdSgoKHN0cnVjdCByZWdfdnBhICopdmEpLVxcdTAwM2VsZW5ndGguaHdvcmQpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNTkxLVxcdFxcdGVsc2VcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjU5MjpcXHRcXHRcXHRsZW4gPSBiZTMyX3RvX2NwdSgoKHN0cnVjdCByZWdfdnBhICopdmEpLVxcdTAwM2VsZW5ndGgud29yZCk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy01OTMtXFx0XFx0a3ZtcHBjX3VucGluX2d1ZXN0X3BhZ2Uoa3ZtLCB2YSwgdnBhLCBmYWxzZSk7XFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTYwNC1cXHR2cGFwID0gTlVMTDtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjYwNTpcXHRzcGluX2xvY2soXFx1MDAyNnR2Y3B1LVxcdTAwM2VhcmNoLnZwYV91cGRhdGVfbG9jayk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy02MDYtXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTYxNy1cXHRcXHRcXHRicmVhaztcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjYxODpcXHRcXHR2cGFwID0gXFx1MDAyNnR2Y3B1LVxcdTAwM2VhcmNoLnZwYTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTYxOS1cXHRcXHRlcnIgPSAwO1xcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy02MjgtXFx0XFx0ZXJyID0gSF9SRVNPVVJDRTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjYyOTpcXHRcXHRpZiAoIXZwYV9pc19yZWdpc3RlcmVkKFxcdTAwMjZ0dmNwdS1cXHUwMDNlYXJjaC52cGEpKVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjMwLVxcdFxcdFxcdGJyZWFrO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjMxLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NjMyOlxcdFxcdHZwYXAgPSBcXHUwMDI2dHZjcHUtXFx1MDAzZWFyY2guZHRsO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjMzLVxcdFxcdGVyciA9IDA7XFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTYzOC1cXHRcXHRlcnIgPSBIX1JFU09VUkNFO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NjM5OlxcdFxcdGlmICghdnBhX2lzX3JlZ2lzdGVyZWQoXFx1MDAyNnR2Y3B1LVxcdTAwM2VhcmNoLnZwYSkpXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy02NDAtXFx0XFx0XFx0YnJlYWs7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy02NDEtXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo2NDI6XFx0XFx0dnBhcCA9IFxcdTAwMjZ0dmNwdS1cXHUwMDNlYXJjaC5zbGJfc2hhZG93O1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjQzLVxcdFxcdGVyciA9IDA7XFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTY0OC1cXHRcXHRlcnIgPSBIX1JFU09VUkNFO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NjQ5OlxcdFxcdGlmICh2cGFfaXNfcmVnaXN0ZXJlZChcXHUwMDI2dHZjcHUtXFx1MDAzZWFyY2guZHRsKSB8fFxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NjUwOlxcdFxcdCAgICB2cGFfaXNfcmVnaXN0ZXJlZChcXHUwMDI2dHZjcHUtXFx1MDAzZWFyY2guc2xiX3NoYWRvdykpXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy02NTEtXFx0XFx0XFx0YnJlYWs7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy02NTItXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo2NTM6XFx0XFx0dnBhcCA9IFxcdTAwMjZ0dmNwdS1cXHUwMDNlYXJjaC52cGE7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy02NTQtXFx0XFx0ZXJyID0gMDtcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjU3LVxcdGNhc2UgSF9WUEFfREVSRUdfRFRMOlxcdFxcdC8qIGRlcmVnaXN0ZXIgRFRMICovXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo2NTg6XFx0XFx0dnBhcCA9IFxcdTAwMjZ0dmNwdS1cXHUwMDNlYXJjaC5kdGw7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy02NTktXFx0XFx0ZXJyID0gMDtcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjYyLVxcdGNhc2UgSF9WUEFfREVSRUdfU0xCOlxcdFxcdC8qIGRlcmVnaXN0ZXIgU0xCIHNoYWRvdyBidWZmZXIgKi9cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjY2MzpcXHRcXHR2cGFwID0gXFx1MDAyNnR2Y3B1LVxcdTAwM2VhcmNoLnNsYl9zaGFkb3c7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy02NjQtXFx0XFx0ZXJyID0gMDtcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjczLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6Njc0OlxcdHNwaW5fdW5sb2NrKFxcdTAwMjZ0dmNwdS1cXHUwMDNlYXJjaC52cGFfdXBkYXRlX2xvY2spO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjc1LVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy02NzgtXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo2Nzk6c3RhdGljIHZvaWQga3ZtcHBjX3VwZGF0ZV92cGEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtcHBjX3ZwYSAqdnBhcCxcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTY4MC1cXHRcXHRcXHQgICAgICAgc3RydWN0IGt2bXBwY192cGEgKm9sZF92cGFwKVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjgxLXtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjY4MjpcXHRzdHJ1Y3Qga3ZtICprdm0gPSB2Y3B1LVxcdTAwM2Vrdm07XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy02ODMtXFx0dm9pZCAqdmE7XFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTY5Ni1cXHRcXHRncGEgPSB2cGFwLVxcdTAwM2VuZXh0X2dwYTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjY5NzpcXHRcXHRzcGluX3VubG9jayhcXHUwMDI2dmNwdS1cXHUwMDNlYXJjaC52cGFfdXBkYXRlX2xvY2spO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjk4LVxcdFxcdHZhID0gTlVMTDtcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNzAxLVxcdFxcdFxcdHZhID0ga3ZtcHBjX3Bpbl9ndWVzdF9wYWdlKGt2bSwgZ3BhLCBcXHUwMDI2bmIpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NzAyOlxcdFxcdHNwaW5fbG9jayhcXHUwMDI2dmNwdS1cXHUwMDNlYXJjaC52cGFfdXBkYXRlX2xvY2spO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNzAzLVxcdFxcdGlmIChncGEgPT0gdnBhcC1cXHUwMDNlbmV4dF9ncGEpXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTcyOC1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjcyOTpzdGF0aWMgdm9pZCBrdm1wcGNfdXBkYXRlX3ZwYXMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNzMwLXtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjczMTpcXHRzdHJ1Y3Qga3ZtICprdm0gPSB2Y3B1LVxcdTAwM2Vrdm07XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03MzItXFx0c3RydWN0IGt2bXBwY192cGEgb2xkX3ZwYSA9IHsgMCB9O1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNzMzLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NzM0OlxcdGlmICghKHZjcHUtXFx1MDAzZWFyY2gudnBhLnVwZGF0ZV9wZW5kaW5nIHx8XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo3MzU6XFx0ICAgICAgdmNwdS1cXHUwMDNlYXJjaC5zbGJfc2hhZG93LnVwZGF0ZV9wZW5kaW5nIHx8XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo3MzY6XFx0ICAgICAgdmNwdS1cXHUwMDNlYXJjaC5kdGwudXBkYXRlX3BlbmRpbmcpKVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNzM3LVxcdFxcdHJldHVybjtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTczOC1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjczOTpcXHRzcGluX2xvY2soXFx1MDAyNnZjcHUtXFx1MDAzZWFyY2gudnBhX3VwZGF0ZV9sb2NrKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjc0MDpcXHRpZiAodmNwdS1cXHUwMDNlYXJjaC52cGEudXBkYXRlX3BlbmRpbmcpIHtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjc0MTpcXHRcXHRrdm1wcGNfdXBkYXRlX3ZwYSh2Y3B1LCBcXHUwMDI2dmNwdS1cXHUwMDNlYXJjaC52cGEsIFxcdTAwMjZvbGRfdnBhKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTc0Mi1cXHRcXHRpZiAob2xkX3ZwYS5waW5uZWRfYWRkcikge1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNzQzLVxcdFxcdFxcdGlmIChrdm1odl9pc19uZXN0ZWR2MigpKVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NzQ0OlxcdFxcdFxcdFxcdGt2bWh2X25lc3RlZHYyX3NldF92cGEodmNwdSwgfjB1bGwpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNzQ1LVxcdFxcdFxcdGt2bXBwY191bnBpbl9ndWVzdF9wYWdlKGt2bSwgb2xkX3ZwYS5waW5uZWRfYWRkciwgb2xkX3ZwYS5ncGEsXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTc0Ny1cXHRcXHR9XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo3NDg6XFx0XFx0aWYgKHZjcHUtXFx1MDAzZWFyY2gudnBhLnBpbm5lZF9hZGRyKSB7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo3NDk6XFx0XFx0XFx0aW5pdF92cGEodmNwdSwgdmNwdS1cXHUwMDNlYXJjaC52cGEucGlubmVkX2FkZHIpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNzUwLVxcdFxcdFxcdGlmIChrdm1odl9pc19uZXN0ZWR2MigpKVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NzUxOlxcdFxcdFxcdFxcdGt2bWh2X25lc3RlZHYyX3NldF92cGEodmNwdSwgX19wYSh2Y3B1LVxcdTAwM2VhcmNoLnZwYS5waW5uZWRfYWRkcikpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNzUyLVxcdFxcdH1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTc1My1cXHR9XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo3NTQ6XFx0aWYgKHZjcHUtXFx1MDAzZWFyY2guZHRsLnVwZGF0ZV9wZW5kaW5nKSB7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo3NTU6XFx0XFx0a3ZtcHBjX3VwZGF0ZV92cGEodmNwdSwgXFx1MDAyNnZjcHUtXFx1MDAzZWFyY2guZHRsLCBcXHUwMDI2b2xkX3ZwYSk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03NTYtXFx0XFx0aWYgKG9sZF92cGEucGlubmVkX2FkZHIpXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTc1OC1cXHRcXHRcXHRcXHRcXHRcXHRvbGRfdnBhLmRpcnR5KTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjc1OTpcXHRcXHR2Y3B1LVxcdTAwM2VhcmNoLmR0bF9wdHIgPSB2Y3B1LVxcdTAwM2VhcmNoLmR0bC5waW5uZWRfYWRkcjtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjc2MDpcXHRcXHR2Y3B1LVxcdTAwM2VhcmNoLmR0bF9pbmRleCA9IDA7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03NjEtXFx0fVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NzYyOlxcdGlmICh2Y3B1LVxcdTAwM2VhcmNoLnNsYl9zaGFkb3cudXBkYXRlX3BlbmRpbmcpIHtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjc2MzpcXHRcXHRrdm1wcGNfdXBkYXRlX3ZwYSh2Y3B1LCBcXHUwMDI2dmNwdS1cXHUwMDNlYXJjaC5zbGJfc2hhZG93LCBcXHUwMDI2b2xkX3ZwYSk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy03NjQtXFx0XFx0aWYgKG9sZF92cGEucGlubmVkX2FkZHIpXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTc2OC1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjc2OTpcXHRzcGluX3VubG9jayhcXHUwMDI2dmNwdS1cXHUwMDNlYXJjaC52cGFfdXBkYXRlX2xvY2spO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNzcwLX1cXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM9Nzc2PXN0YXRpYyB1NjQgdmNvcmVfc3RvbGVuX3RpbWUoc3RydWN0IGt2bXBwY192Y29yZSAqdmMsIHU2NCBub3cpXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTc4MC1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjc4MTpcXHRXQVJOX09OX09OQ0UoY3B1X2hhc19mZWF0dXJlKENQVV9GVFJfQVJDSF8zMDApKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTc4Mi1cXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNzkxLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NzkyOnN0YXRpYyB2b2lkIF9fa3ZtcHBjX2NyZWF0ZV9kdGxfZW50cnkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNzkzLVxcdFxcdFxcdFxcdFxcdHN0cnVjdCBscHBhY2EgKnZwYSxcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjc5NDpcXHRcXHRcXHRcXHRcXHR1bnNpZ25lZCBpbnQgcGNwdSwgdTY0IG5vdyxcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTc5NS1cXHRcXHRcXHRcXHRcXHR1bnNpZ25lZCBsb25nIHN0b2xlbilcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNzk4LVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6Nzk5OlxcdGR0ID0gdmNwdS1cXHUwMDNlYXJjaC5kdGxfcHRyO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODAwLVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04MDUtXFx0ZHQtXFx1MDAzZXByZWVtcHRfcmVhc29uID0gMDtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjgwNjpcXHRkdC1cXHUwMDNlcHJvY2Vzc29yX2lkID0gY3B1X3RvX2JlMTYocGNwdSArIHZjcHUtXFx1MDAzZWFyY2gucHRpZCk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4MDc6XFx0ZHQtXFx1MDAzZWVucXVldWVfdG9fZGlzcGF0Y2hfdGltZSA9IGNwdV90b19iZTMyKHN0b2xlbik7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04MDgtXFx0ZHQtXFx1MDAzZXJlYWR5X3RvX2VucXVldWVfdGltZSA9IDA7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04MDktXFx0ZHQtXFx1MDAzZXdhaXRpbmdfdG9fcmVhZHlfdGltZSA9IDA7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4MTA6XFx0ZHQtXFx1MDAzZXRpbWViYXNlID0gY3B1X3RvX2JlNjQobm93KTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTgxMS1cXHRkdC1cXHUwMDNlZmF1bHRfYWRkciA9IDA7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4MTI6XFx0ZHQtXFx1MDAzZXNycjAgPSBjcHVfdG9fYmU2NChrdm1wcGNfZ2V0X3BjKHZjcHUpKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjgxMzpcXHRkdC1cXHUwMDNlc3JyMSA9IGNwdV90b19iZTY0KHZjcHUtXFx1MDAzZWFyY2guc2hyZWdzLm1zcik7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04MTQtXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04MTUtXFx0KytkdDtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjgxNjpcXHRpZiAoZHQgPT0gdmNwdS1cXHUwMDNlYXJjaC5kdGwucGlubmVkX2VuZClcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjgxNzpcXHRcXHRkdCA9IHZjcHUtXFx1MDAzZWFyY2guZHRsLnBpbm5lZF9hZGRyO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODE4OlxcdHZjcHUtXFx1MDAzZWFyY2guZHRsX3B0ciA9IGR0O1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODE5LVxcdC8qIG9yZGVyIHdyaXRpbmcgKmR0IHZzLiB3cml0aW5nIHZwYS1cXHUwMDNlZHRsX2lkeCAqL1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODIwLVxcdHNtcF93bWIoKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjgyMTpcXHR2cGEtXFx1MDAzZWR0bF9pZHggPSBjcHVfdG9fYmU2NCgrK3ZjcHUtXFx1MDAzZWFyY2guZHRsX2luZGV4KTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTgyMi1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjgyMzpcXHQvKiB2Y3B1LVxcdTAwM2VhcmNoLmR0bC5kaXJ0eSBpcyBzZXQgYnkgdGhlIGNhbGxlciAqL1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODI0LX1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTgyNS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjgyNjpzdGF0aWMgdm9pZCBrdm1wcGNfdXBkYXRlX3ZwYV9kaXNwYXRjaChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04MjctXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBrdm1wcGNfdmNvcmUgKnZjKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04MzQtXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4MzU6XFx0dnBhID0gdmNwdS1cXHUwMDNlYXJjaC52cGEucGlubmVkX2FkZHI7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04MzYtXFx0aWYgKCF2cGEpXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTg0MS1cXHRjb3JlX3N0b2xlbiA9IHZjb3JlX3N0b2xlbl90aW1lKHZjLCBub3cpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODQyOlxcdHN0b2xlbiA9IGNvcmVfc3RvbGVuIC0gdmNwdS1cXHUwMDNlYXJjaC5zdG9sZW5fbG9nZ2VkO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODQzOlxcdHZjcHUtXFx1MDAzZWFyY2guc3RvbGVuX2xvZ2dlZCA9IGNvcmVfc3RvbGVuO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODQ0OlxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZ2Y3B1LVxcdTAwM2VhcmNoLnRiYWNjdF9sb2NrLCBmbGFncyk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4NDU6XFx0c3RvbGVuICs9IHZjcHUtXFx1MDAzZWFyY2guYnVzeV9zdG9sZW47XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4NDY6XFx0dmNwdS1cXHUwMDNlYXJjaC5idXN5X3N0b2xlbiA9IDA7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4NDc6XFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2dmNwdS1cXHUwMDNlYXJjaC50YmFjY3RfbG9jaywgZmxhZ3MpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODQ4LVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODQ5OlxcdHZwYS1cXHUwMDNlZW5xdWV1ZV9kaXNwYXRjaF90YiA9IGNwdV90b19iZTY0KGJlNjRfdG9fY3B1KHZwYS1cXHUwMDNlZW5xdWV1ZV9kaXNwYXRjaF90YikgKyBzdG9sZW4pO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODUwLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODUxOlxcdF9fa3ZtcHBjX2NyZWF0ZV9kdGxfZW50cnkodmNwdSwgdnBhLCB2Yy1cXHUwMDNlcGNwdSwgbm93ICsga3ZtcHBjX2dldF90Yl9vZmZzZXQodmNwdSksIHN0b2xlbik7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04NTItXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4NTM6XFx0dmNwdS1cXHUwMDNlYXJjaC52cGEuZGlydHkgPSB0cnVlO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODU0LX1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTg1NS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjg1NjpzdGF0aWMgdm9pZCBrdm1wcGNfdXBkYXRlX3ZwYV9kaXNwYXRjaF9wOShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04NTctXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBrdm1wcGNfdmNvcmUgKnZjLFxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04NjMtXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4NjQ6XFx0dnBhID0gdmNwdS1cXHUwMDNlYXJjaC52cGEucGlubmVkX2FkZHI7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04NjUtXFx0aWYgKCF2cGEpXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTg2OC1cXHRzdG9sZW4gPSB2Yy1cXHUwMDNlc3RvbGVuX3RiO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODY5OlxcdHN0b2xlbl9kZWx0YSA9IHN0b2xlbiAtIHZjcHUtXFx1MDAzZWFyY2guc3RvbGVuX2xvZ2dlZDtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjg3MDpcXHR2Y3B1LVxcdTAwM2VhcmNoLnN0b2xlbl9sb2dnZWQgPSBzdG9sZW47XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04NzEtXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4NzI6XFx0dnBhLVxcdTAwM2VlbnF1ZXVlX2Rpc3BhdGNoX3RiID0gY3B1X3RvX2JlNjQoc3RvbGVuKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTg3My1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjg3NDpcXHRfX2t2bXBwY19jcmVhdGVfZHRsX2VudHJ5KHZjcHUsIHZwYSwgdmMtXFx1MDAzZXBjcHUsIG5vdywgc3RvbGVuX2RlbHRhKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTg3NS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjg3NjpcXHR2Y3B1LVxcdTAwM2VhcmNoLnZwYS5kaXJ0eSA9IHRydWU7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04NzctfVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODc4LVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODc5Oi8qIFNlZSBpZiB0aGVyZSBpcyBhIGRvb3JiZWxsIGludGVycnVwdCBwZW5kaW5nIGZvciBhIHZjcHUgKi9cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjg4MDpzdGF0aWMgYm9vbCBrdm1wcGNfZG9vcmJlbGxfcGVuZGluZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04ODEte1xcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04ODQtXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo4ODU6XFx0aWYgKHZjcHUtXFx1MDAzZWFyY2guZG9vcmJlbGxfcmVxdWVzdClcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTg4Ni1cXHRcXHRyZXR1cm4gdHJ1ZTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjg4NzpcXHRpZiAoY3B1X2hhc19mZWF0dXJlKENQVV9GVFJfQVJDSF8zMDApKVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODg4LVxcdFxcdHJldHVybiBmYWxzZTtcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODkwLVxcdCAqIEVuc3VyZSB0aGF0IHRoZSByZWFkIG9mIHZjb3JlLVxcdTAwM2VkcGRlcyBjb21lcyBhZnRlciB0aGUgcmVhZFxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODkxOlxcdCAqIG9mIHZjcHUtXFx1MDAzZWRvb3JiZWxsX3JlcXVlc3QuICBUaGlzIGJhcnJpZXIgbWF0Y2hlcyB0aGVcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTg5Mi1cXHQgKiBzbXBfd21iKCkgaW4ga3ZtcHBjX2d1ZXN0X2VudHJ5X2luamVjdCgpLlxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04OTQtXFx0c21wX3JtYigpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODk1OlxcdHZjID0gdmNwdS1cXHUwMDNlYXJjaC52Y29yZTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjg5NjpcXHR0aHIgPSB2Y3B1LVxcdTAwM2V2Y3B1X2lkIC0gdmMtXFx1MDAzZWZpcnN0X3ZjcHVpZDtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTg5Ny1cXHRyZXR1cm4gISEodmMtXFx1MDAzZWRwZGVzIFxcdTAwMjYgKDEgXFx1MDAzY1xcdTAwM2MgdGhyKSk7XFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTg5OS1cXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDQ6NTg6MTMuMDEyODQxOTUzWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0NTYyNjg2MzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRGVidWdnaW5nIHRoZSBDb21waWxhdGlvbiBGYWlsdXJlKipcblxuT2theSwgaGVyZSdzIHRoZSBzaXR1YXRpb24uIFRoZSBidWlsZCBqdXN0IGNob2tlZCwgYW5kIHRoZSBlcnJvciBtZXNzYWdlIGNsZWFybHkgcG9pbnRzIHRvIGEgbWlzc2luZyBgY3B1YCB2YXJpYWJsZS4gVGhhdCdzIGEgY2xhc3NpYyAtIEkgY2FuJ3QgaW1hZ2luZSB0aGlzIGlzIGFuIGludGVudGlvbmFsIG92ZXJzaWdodC4gSXQncyBub3QgYSBnbG9iYWwsIGFuZCBJJ20gYmV0dGluZyB0aGF0J3MgdGhlIGNvcmUgaXNzdWUuIFRoZSBwYXRjaCBpcyBwcm9iYWJseSByZWZlcmVuY2luZyBpdCBzb21ld2hlcmUuXG5cbkJ1dCBob2xkIG9uLCB0aGlzIGlzIHdoZXJlIEkgbmVlZCB0byBiZSBtb3JlIGNhcmVmdWwuIEl0J3MgKnBvc3NpYmxlKiBgY3B1YCBpcyBhIG1hY3JvIGRlZmluZWQgaW4gYSBoZWFkZXIgZmlsZS4gSSd2ZSBiZWVuIGJ1cm5lZCBieSB0aGF0IGJlZm9yZS4gQWx3YXlzIGNoZWNrIHRoZSBpbmNsdWRlcyEgU28sIHJhdGhlciB0aGFuIGFzc3VtZSBpdCdzIGp1c3QgYSB2YXJpYWJsZSwgbGV0IG1lIHF1aWNrbHkgZ2xhbmNlIGF0IHRoZSB1c3VhbCBzdXNwZWN0cyBpbiB0aGUgYGFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9gIGRpcmVjdG9yeS4gVGhhdCdzIHdoZXJlIEkgZXhwZWN0IHRvIGZpbmQgYW55IHByb2Nlc3Nvci1zcGVjaWZpYyBkZWZpbml0aW9ucyBvbiBhIFBvd2VyUEMgc3lzdGVtLiBMZXQncyBzZWUgaWYgYGNwdWAgaXMgZGVmaW5lZCBhcyBhIG1hY3JvIGluIG9uZSBvZiB0aG9zZSBoZWFkZXJzLiBJIG5lZWQgdG8ga25vdyBpZiB0aGlzIGlzIGEgc2ltcGxlIG1hY3JvIGV4cGFuc2lvbiBpc3N1ZSwgb3IgaWYgdGhpcyBpcyBhIGRlZXBlciBwcm9ibGVtIHdpdGggdGhlIHBhdGNoIGl0c2VsZi4gSSdtIGdvaW5nIHRvIHN0YXJ0IHdpdGggdGhlIG1vc3QgbGlrZWx5IGNhbmRpZGF0ZXMsIGxpa2UgdGhlIG1haW4gYXJjaGl0ZWN0dXJlIGhlYWRlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MzkxODcsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwNDo1ODoxNy40NjkxMTI3NTlaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2NzExMzQ3LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCIjZGVmaW5lIGNwdSBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDQ6NTg6MTcuNTE1ODI5NDU3WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwODUyMzE4NjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHJlbmRlcmVkIGFzIGEgZmlyc3QtcGVyc29uIGFjY291bnQgc3VpdGFibGUgZm9yIGEgZmVsbG93IGV4cGVydDpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBgY3B1YCBNYWNybyBpbiBMaW51eCBIZWFkZXIgRmlsZXMqKlxuXG5BbHJpZ2h0LCBJJ20gdGhpbmtpbmcgSSBuZWVkIHRvIHNlZSBpZiB0aGUgc3ltYm9sIGBjcHVgIGlzIGRlZmluZWQgYXMgYSBtYWNybyB3aXRoaW4gdGhlIGBpbmNsdWRlL2xpbnV4L2AgZGlyZWN0b3J5LiBUaGF0J3MgdGhlIG9idmlvdXMgcGxhY2UgdG8gc3RhcnQuIEdpdmVuIHRoZSBjb250ZXh0IG9mIExpbnV4IGtlcm5lbCBkZXZlbG9wbWVudCBhbmQgcGVyZm9ybWFuY2UsIGBjcHVgIGNvdWxkIGJlIGFueXRoaW5nIGZyb20gYSBzaW1wbGUgbWFjcm8gZXhwYW5kaW5nIHRvIHJlZ2lzdGVyIG5hbWVzLCB0byBtb3JlIGNvbXBsZXggbG9naWMgcmVsYXRlZCB0byBDUFUgYXJjaGl0ZWN0dXJlIGRldGVjdGlvbiwgb3IgZXZlbiBhIGNvbXBvbmVudCBpbiBhIHBvd2VyIG1hbmFnZW1lbnQgc2NoZW1lLiBJJ2xsIG5lZWQgdG8gY29uZmlybSB3aGF0IGl0IGFjdHVhbGx5ICppcyosIGFuZCB0aGF0IHdpbGwgZGV0ZXJtaW5lIGhvdyBJIHByb2NlZWQuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBpbmNsdWRlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzk1MzMsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwNDo1ODoyMC42MDEwNjQ1NzhaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwODE0NDA2NCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiI2RlZmluZSBjcHUgXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImluY2x1ZGUvbGludXgvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwNDo1ODoyMC43MDkyMTQ5ODFaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTI4NTk3NzE5MTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRGVidWdnaW5nIGEgQ29tcGlsYXRpb24gRmFpbHVyZSoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2gsIGFuZCBpdCdzIGZhaWxpbmcgdG8gY29tcGlsZS4gVGhlIGVycm9yIGxvb2tzIGxpa2UgYSB0eXBvOiBgY3B1LVx1MDAzZWFyY2guZG9vcmJlbGxfcmVxdWVzdCA9IDA7YC4gVGhhdCdzIGEgY2xhc3NpYywgSSd2ZSBzZWVuIGl0IGEgdGhvdXNhbmQgdGltZXMuIEEgbWlzc2luZyBvciBpbmNvcnJlY3QgbWVtYmVyIGFjY2VzcyBpcyBhIHByZXR0eSBvYnZpb3VzIGNvbXBpbGF0aW9uIHN0b3BwZXIuIFRoZSB0aGluZyBpcywgaWYgaXQgZG9lc24ndCBjb21waWxlLCBJIGNhbid0IGV2ZW4gZnV6eiBpdCwgd2hpY2ggaXMgdGhlIGltbWVkaWF0ZSBuZXh0IHN0ZXAuXG5cbkZpcnN0LCBsZXQgbWUgY29uZmlybSB0aGF0IGBjcHVgIGlzbid0IGRlY2xhcmVkIGluIHRoZSBmdW5jdGlvbiBga3ZtaHZfdmNwdV9lbnRyeV9uZXN0ZWR2MmAuIExldCdzIHRha2UgYSBxdWljayBsb29rIGF0IHRoZSBjb2RlIGJsb2NrIHByb3ZpZGVkIGluIHRoZSBwYXRjaC4uLiBZZXAsIEknbSByaWdodC4gSXQncyBub3QgZGVjbGFyZWQgdGhlcmUuXG5cbk5vdywgd2FpdCBhIHNlY29uZC4uLiBpcyB0aGVyZSBhIGNoYW5jZSBgY3B1YCBpcyBhIG1hY3JvPyBJdCdzIG5vdCB1bmNvbW1vbiB0byB1c2UgbWFjcm9zIGxpa2UgYGNwdWAgdG8gZXhwYW5kIHRvIHNvbWV0aGluZyBsaWtlIGBzbXBfcHJvY2Vzc29yX2lkKClgIGluIHRoaXMga2luZCBvZiBrZXJuZWwgY29kZS4gTGV0J3MgZGlnIGluIGFuZCBzZWUgaWYgYGNwdWAgaXMgZGVmaW5lZCBhbnl3aGVyZSBhcyBhIG1hY3JvLiBUaGF0IHdvdWxkIGJlIGEgc25lYWt5IGxpdHRsZSBidWcuIEkgbmVlZCB0byBiZSB0aG9yb3VnaC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzk3NDMsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDQ6NTg6MzMuNTY4OTg5MTkyWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjM2NDQ3MjUzLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCIjZGVmaW5lIGNwdVxcXFxiXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDQ6NTg6MzUuODA1NDQ0ODM1WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYyNzg2NzA1NTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBGdXp6aW5nIFdvcnRoaW5lc3Mgb2YgYSBDb21taXR0ZWQgUGF0Y2gqKlxuXG5Pa2F5LCB0aGlzIHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCwgYnV0IGxldCBtZSB0aGluayB0aGlzIHRocm91Z2guIE5vLCB0aGUgcGF0Y2ggKmRvZXNuJ3QqIGxvb2sgcmlnaHQuIFRoaXMgbWFrZXMgbWUgc3VzcGVjdCBhIGNvbXBpbGF0aW9uIGVycm9yLiBJZiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBhIGNvbXBpbGF0aW9uIGVycm9yLCBvYnZpb3VzbHkgSSBjYW4ndCBjb21waWxlIG9yIHRlc3QgaXQuIEJ1dCBob2xkIG9uLCB0aGUgcHJvbXB0IHNheXMgdGhlIGNoYW5nZXMgaGF2ZSAqYWxyZWFkeSogYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQuIElmIHRoYXQncyB0aGUgY2FzZSwgKm1heWJlKiBpdCBjb21waWxlZCBhbHJlYWR5P1xuXG5BaCwgYnV0IHRoZW4gSSByZW1lbWJlcjogdGhlIHByb21wdCdzIGNvbmRpdGlvbjogXCJSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zLi4uIGNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHNcIi4gSWYgaXQgKmRvZXNuJ3QqIGNvbXBpbGUsIGl0J3MgZGVmaW5pdGVseSBub3QgZnV6ei13b3J0aHkgYmVjYXVzZSBpdCdzIHVudXNhYmxlOyB0aGVyZSdzIG5vIHdheSB0byBldmVuIHN0YXJ0IHRlc3RpbmcuIFRoZXJlIGlzIG5vIGV4cGxpY2l0IHJ1bGUgZm9yIFwiZG9lcyBub3QgY29tcGlsZVwiLlxuXG5TbywgaWYgaXQgZmFpbHMgdG8gY29tcGlsZSwgSSBzaG91bGQgcHJvYmFibHkgcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBMZXQncyBqdXN0IG1ha2Ugc3VyZSB0aGVyZSBhcmVuJ3QgYW55IG90aGVyIGZhY3RvcnMgSSdtIG92ZXJsb29raW5nLiBPa2F5LCBsZXQgbWUgcXVpY2tseSBkb3VibGUgY2hlY2sgaWYgdGhlcmUgYXJlIG90aGVyIGZpbGVzIG1vZGlmaWVkIGluIHRoZSBkaWZmLiBBaCwgdGhlIGRpZmYgb25seSBzaG93cyBjaGFuZ2VzIHRvIGBhcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jYC4gSXMgdGhlcmUgYW55IHBvc3NpYmxlIGdsb2JhbCB2YXJpYWJsZSB1c2FnZSBoZXJlPyBDb3VsZCBgY3B1YCBiZSBhIGdsb2JhbCB2YXJpYWJsZT8gTGV0J3Mgc2VhcmNoIHRoZSBrZXJuZWwgY29kZWJhc2UgZm9yIGluc3RhbmNlcyBvZiBgc3RydWN0IGt2bV92Y3B1ICpjcHVgIGFuZCBtYWtlIHN1cmUuIFRoaXMgd2lsbCBoZWxwIGRldGVybWluZSBpZiBpdCdzIGZ1enotd29ydGh5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDIzNCwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwNDo1ODo0Mi4wODQxMTc2NloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM2MzQyNzUxNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdHJ1Y3Qga3ZtX3ZjcHUgXFxcXCpjcHVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcInRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIveDg2L3Nldi5jPTE2MT1zdHJ1Y3Qga3ZtX3ZtICp2bV9zZXZfY3JlYXRlX3dpdGhfb25lX3ZjcHUodTMyIHR5cGUsIHZvaWQgKmd1ZXN0X2NvZGUsXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL3g4Ni9zZXYuYy0xNjgtXFx0c3RydWN0IGt2bV92bSAqdm07XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi94ODYvc2V2LmM6MTY5OlxcdHN0cnVjdCBrdm1fdmNwdSAqY3B1c1sxXTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL3g4Ni9zZXYuYy0xNzAtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA0OjU4OjQ0LjQ0NzU1MjE5NVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NzY0NzU2Nzg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRlYnVnZ2luZyBhIFBvdGVudGlhbCBUeXBvKipcblxuT2theSwgdGhlcmUncyBubyBnbG9iYWwgYGNwdWAgdmFyaWFibGUgaW4gc2lnaHQuIFRoYXQncyBpbW1lZGlhdGVseSBvYnZpb3VzLiBMZXQncyByZS1leGFtaW5lIHRoaXMgY29kZSBwYXRjaCBjbG9zZWx5LlxuXG5gYGBjXG4rXHQvKiBDaGVjayBpZiBwcml2aWxlZ2VkIGRvb3IgYmVsbCB3YXMgcmVxdWVzdGVkIGFuZCBoYW5kbGVkICovXG4rXHRpZiAodmNwdS1cdTAwM2VhcmNoLnZjb3JlLVx1MDAzZWRwZGVzKSB7XG4rXHRcdGt2bWh2X25lc3RlZHYyX2NhY2hlZF9yZWxvYWQodmNwdSwgS1ZNUFBDX0dTSURfRFBERVMpO1xuK1x0XHRpZiAodmNwdS1cdTAwM2VhcmNoLnZjb3JlLVx1MDAzZWRwZGVzKVxuK1x0XHRcdHZjcHUtXHUwMDNlYXJjaC5kb29yYmVsbF9yZXF1ZXN0IHw9IHZjcHUtXHUwMDNlYXJjaC52Y29yZS1cdTAwM2VkcGRlcztcbitcdFx0ZWxzZVxuK1x0XHRcdGNwdS1cdTAwM2VhcmNoLmRvb3JiZWxsX3JlcXVlc3QgPSAwO1xuK1x0fSBlbHNlIHtcbitcdFx0dmNwdS1cdTAwM2VhcmNoLmRvb3JiZWxsX3JlcXVlc3QgPSAwO1xuK1x0fVxuYGBgXG5cblJpZ2h0LCBpdCdzIHByZXR0eSBjbGVhciB0aGF0IGBjcHVgIGluIHRoYXQgYGVsc2VgIGJsb2NrIHNob3VsZCBiZSBgdmNwdWAuIFRoYXQncyBhIGNsYXNzaWMgdHlwby4gIFRoZSBjb21waWxlciB3b3VsZCBkZWZpbml0ZWx5IGNhdGNoIHRoaXMsIHNvIGl0J3Mgbm90IGZ1bmN0aW9uYWwgYXMgd3JpdHRlbi5cblxuQnV0IHdhaXQsIGhvbGQgb24uIENvdWxkIGl0IGJlIHRoYXQgYGNwdWAgaXMgKmFjdHVhbGx5KiBhIG1hY3JvPyBJIHNob3VsZCBjaGVjayB0aGUgZmlsZSB3aGVyZSB0aGlzIGlzIGRlZmluZWQsIGBhcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jYCwganVzdCB0byBiZSBjZXJ0YWluLiBNYWNyb3MgY2FuIGJlIHNuZWFreS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDA5ODcsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDQ6NTg6NTAuMjEyMzExMzAyWiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzA5ODA4NywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiI2RlZmluZSBjcHVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDQ6NTg6NTAuMjU1NDE3ODE5WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwMTk0NTA3OTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQ29tcGlsYXRpb24gRXJyb3IgRm91bmQgLSBSZXRoaW5raW5nIEFwcHJvYWNoKipcblxuQWxyaWdodCwgbm8uIFRoaXMgaXNuJ3QgYSBzaW1wbGUgb3ZlcnNpZ2h0OyBpdCdzIGEgY29tcGlsYXRpb24gZXJyb3IuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gbWFyayBgV29ydGhGdXp6aW5nPWZhbHNlYCBhbmQgY2xlYXJseSBzdGF0ZSB0aGF0IHRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgY29tcGlsYXRpb24gaXNzdWUg4oCTIHRoZSBjb2RlIHVzZXMgYGNwdWAgd2hlcmUgaXQgc2hvdWxkIHVzZSBgdmNwdWAuIFRoYXQncyB0aGUgb2J2aW91cyByb3V0ZS5cblxuQnV0IGhvbGQgb24gYSBzZWNvbmQuIEJlZm9yZSBJIHJ1c2ggdG8ganVkZ21lbnQsIGlzIHRoZXJlIGV2ZW4gYSAqcmVtb3RlKiBwb3NzaWJpbGl0eSB0aGF0IGBjcHVgIGlzIGEgdmFsaWQgdmFyaWFibGUgaW4gdGhpcyBjb250ZXh0PyBJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLiBKdXN0IGJlY2F1c2UgaXQncyAqbGlrZWx5KiBhIHR5cG8gZG9lc24ndCBtZWFuIGl0ICppcyogb25lLiBMZXQgbWUgZ28gYmFjayBhbmQgcmUtZXhhbWluZSBgYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuY2AuIEkgbmVlZCB0byBydWxlIG91dCBhbnkgc3VidGxlIG51YW5jZXMgaW4gdGhhdCBzZWN0aW9uIG9mIGNvZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxNTg2LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDQ6NTg6NTQuMjc0ODcyNDQyWiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Mjc5NzYxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjcHUtXFx1MDAzZWFyY2guZG9vcmJlbGxfcmVxdWVzdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM9ODgwPXN0YXRpYyBib29sIGt2bXBwY19kb29yYmVsbF9wZW5kaW5nKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtODg0LVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6ODg1OlxcdGlmICh2Y3B1LVxcdTAwM2VhcmNoLmRvb3JiZWxsX3JlcXVlc3QpXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy04ODYtXFx0XFx0cmV0dXJuIHRydWU7XFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jPTE1MzU9c3RhdGljIGludCBrdm1wcGNfZW11bGF0ZV9kb29yYmVsbF9pbnN0cihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTE1NjAtXFx0XFx0XFx0YnJlYWs7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoxNTYxOlxcdFxcdGlmICghdHZjcHUtXFx1MDAzZWFyY2guZG9vcmJlbGxfcmVxdWVzdCkge1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6MTU2MjpcXHRcXHRcXHR0dmNwdS1cXHUwMDNlYXJjaC5kb29yYmVsbF9yZXF1ZXN0ID0gMTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTE1NjMtXFx0XFx0XFx0a3ZtcHBjX2Zhc3RfdmNwdV9raWNrX2h2KHR2Y3B1KTtcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMTU3MC1cXHRcXHR2Y3B1LVxcdTAwM2VhcmNoLnZjb3JlLVxcdTAwM2VkcGRlcyA9IDA7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoxNTcxOlxcdFxcdHZjcHUtXFx1MDAzZWFyY2guZG9vcmJlbGxfcmVxdWVzdCA9IDA7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0xNTcyLVxcdFxcdGJyZWFrO1xcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYz0yMjMwPXN0YXRpYyBpbnQga3ZtcHBjX2dldF9vbmVfcmVnX2h2KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGlkLFxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yMzE2LVxcdFxcdGlmIChjcHVfaGFzX2ZlYXR1cmUoQ1BVX0ZUUl9BUkNIXzMwMCkpXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyMzE3OlxcdFxcdFxcdCp2YWwgPSBnZXRfcmVnX3ZhbChpZCwgdmNwdS1cXHUwMDNlYXJjaC5kb29yYmVsbF9yZXF1ZXN0KTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTIzMTgtXFx0XFx0ZWxzZVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYz0yNDg4PXN0YXRpYyBpbnQga3ZtcHBjX3NldF9vbmVfcmVnX2h2KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGlkLFxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yNTY4LVxcdFxcdGlmIChjcHVfaGFzX2ZlYXR1cmUoQ1BVX0ZUUl9BUkNIXzMwMCkpXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyNTY5OlxcdFxcdFxcdHZjcHUtXFx1MDAzZWFyY2guZG9vcmJlbGxfcmVxdWVzdCA9IHNldF9yZWdfdmFsKGlkLCAqdmFsKSBcXHUwMDI2IDE7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yNTcwLVxcdFxcdGVsc2VcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM9NDI0OT1zdGF0aWMgaW50IGt2bWh2X3ZjcHVfZW50cnlfbmVzdGVkdjIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgdGltZV9saW1pdCxcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNDI2My1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjQyNjQ6XFx0aWYgKHZjcHUtXFx1MDAzZWFyY2guZG9vcmJlbGxfcmVxdWVzdClcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQyNjUtXFx0XFx0a3ZtcHBjX3NldF9kcGRlcyh2Y3B1LCAxKTtcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNDMwMS1cXHRcXHRpZiAodmNwdS1cXHUwMDNlYXJjaC52Y29yZS1cXHUwMDNlZHBkZXMpXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo0MzAyOlxcdFxcdFxcdHZjcHUtXFx1MDAzZWFyY2guZG9vcmJlbGxfcmVxdWVzdCB8PSB2Y3B1LVxcdTAwM2VhcmNoLnZjb3JlLVxcdTAwM2VkcGRlcztcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQzMDMtXFx0XFx0ZWxzZVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM6NDMwNDpcXHRcXHRcXHRjcHUtXFx1MDAzZWFyY2guZG9vcmJlbGxfcmVxdWVzdCA9IDA7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00MzA1LVxcdH0gZWxzZSB7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo0MzA2OlxcdFxcdHZjcHUtXFx1MDAzZWFyY2guZG9vcmJlbGxfcmVxdWVzdCA9IDA7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy00MzA3LVxcdH1cXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmM9NDMxOT1zdGF0aWMgaW50IGt2bWh2X3ZjcHVfZW50cnlfcDlfbmVzdGVkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IHRpbWVfbGltaXQsIHVuc2lnbmVkIGxvbmcgbHBjciwgdTY0ICp0YilcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNDM2OS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjQzNzA6XFx0aWYgKHZjcHUtXFx1MDAzZWFyY2guZG9vcmJlbGxfcmVxdWVzdClcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjQzNzE6XFx0XFx0dmNwdS1cXHUwMDNlYXJjaC5kb29yYmVsbF9yZXF1ZXN0ID0gMDtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTQzNzItXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA0OjU4OjU0LjMxNzY3NjNaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDk5NDg1MTIyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHNpdHVhdGlvbjpcblxuKipBZGRyZXNzaW5nIGEgTGlrZWx5IFR5cG9zIGFuZCBGdXp6aW5nIEluYWNjZXNzaWJpbGl0eSoqXG5cbk9rYXksIEkndmUgZ290IGl0LiBUaGF0IGxpbmUsIGBjcHUtXHUwMDNlYXJjaC5kb29yYmVsbF9yZXF1ZXN0ID0gMDtgLi4uIHllYWgsIHRoYXQncyBhbG1vc3QgY2VydGFpbmx5IGEgdHlwby4gSXQgc2hvdWxkIGJlIGB2Y3B1LVx1MDAzZWFyY2guZG9vcmJlbGxfcmVxdWVzdCA9IDA7YCwgSSdtIHByZXR0eSBjb25maWRlbnQgYWJvdXQgdGhhdC4gSSBtZWFuLCBpdCdzIG5vdCBldmVuIGNvbXBpbGluZyBhcyBpdCBpcywgd2hpY2ggaXMgYSBwcmV0dHkgY2xlYXIgaW5kaWNhdG9yLiBBbmQgdGhhdCdzIGEgcHJvYmxlbSBiZWNhdXNlIGlmIGl0IGRvZXNuJ3QgY29tcGlsZSwgaXQncyBjb21wbGV0ZWx5IGluYWNjZXNzaWJsZSBmb3IgYW55IGtpbmQgb2YgZnV6emluZy4gU28sIGdpdmVuIHRoYXQgaW1tZWRpYXRlIHJvYWRibG9jaywgdGhlcmUncyBubyBwb2ludCBpbiBmdXJ0aGVyIGFuYWx5c2lzLiBJIG5lZWQgdG8gZmxhZyBpdCBhY2NvcmRpbmdseSwgSSdsbCBzZXQgV29ydGhGdXp6aW5nPWZhbHNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MzIxMiwiT3V0cHV0VG9rZW5zIjo4MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA0OjU4OjU5LjMxMjUzMTA5M1oiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMzMDAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNvbnRhaW5zIGEgY29tcGlsYXRpb24gZXJyb3I6IGBjcHUtXFx1MDAzZWFyY2guZG9vcmJlbGxfcmVxdWVzdCA9IDA7YCBzaG91bGQgYmUgYHZjcHUtXFx1MDAzZWFyY2guZG9vcmJlbGxfcmVxdWVzdCA9IDA7YC4gU2luY2UgaXQgZmFpbHMgdG8gY29tcGlsZSwgaXQgY2Fubm90IGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNvbnRhaW5zIGEgY29tcGlsYXRpb24gZXJyb3I6IGBjcHUtXFx1MDAzZWFyY2guZG9vcmJlbGxfcmVxdWVzdCA9IDA7YCBzaG91bGQgYmUgYHZjcHUtXFx1MDAzZWFyY2guZG9vcmJlbGxfcmVxdWVzdCA9IDA7YC4gU2luY2UgaXQgZmFpbHMgdG8gY29tcGlsZSwgaXQgY2Fubm90IGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowr6hks[1] Phase: Running StartedAt: 2026-08-03 04:59:12 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr6hks[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-03 04:59:12 +0000 UTC FinishedAt: 2026-08-03 04:59:23 +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,}