Name: series-workflow2srvr Phase: Failed StartedAt: 2026-08-18 20:49:48 +0000 UTC FinishedAt: 2026-08-18 20:52:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2srvr[0] Phase: Succeeded StartedAt: 2026-08-18 20:49:48 +0000 UTC FinishedAt: 2026-08-18 20:52:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2srvr[0].run-triage Phase: Succeeded StartedAt: 2026-08-18 20:49:48 +0000 UTC FinishedAt: 2026-08-18 20:52:33 +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+CgkJCTx0ZD4yMDI2LzA4LzE4IDIwOjUxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG10NzUzMCBEU0Egc3dpdGNoIGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgZm9yIE1lZGlhVGVrIHN3aXRjaGVzIChNVDc1MzAvTVQ3NTMxL01UNzYyMSkuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHNwZWNpZmljIGhhcmR3YXJlIG9yIGEgY29ycmVzcG9uZGluZyBkZXZpY2UgdHJlZSBub2RlIHRvIHByb2JlIGFuZCBpcyBub3QgcmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFIHVzZWQgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDIwOjUxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNTNkODVjMDdmYzUxMzlkNTcxYzU3MmE3MTU5MGM2ZjBhY2JkNWYzY1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDE4IDIwOjUxOjQzIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYyBiL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuY1xuaW5kZXggYWEzM2Q5NGUxMWI1Zi4uMmM3NmNkZmI1ODU4NCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZHNhL210NzUzMC5jXG5AQCAtMjUxOCw2ICYjNDM7MjUxOCwxNSBAQCBtdDc1MzBfc2V0dXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuIFx0aWYgKCh2YWwgXHUwMDI2IE1UNzUzMF9YVEFMX01BU0spID09IE1UNzUzMF9YVEFMXzQwTUhaKVxuIFx0XHRtdDc1MzBfcGxsX3NldHVwKHByaXYpO1xuIFxuJiM0MztcdGlmIChwcml2LVx1MDAzZWlkID09IElEX01UNzYyMSkge1xuJiM0MztcdFx0LyogRGlzYWJsZSBFRUUgYWR2ZXJ0aXNlbWVudCBvbiB0aGUgc3dpdGNoIFBIWXMuICovXG4mIzQzO1x0XHRmb3IgKGkgPSBNVDc1M1hfQ1RSTF9QSFlfQUREUihwcml2LVx1MDAzZW1kaW9kZXYtXHUwMDNlYWRkcik7XG4mIzQzO1x0XHQgICAgIGkgXHUwMDNjIE1UNzUzWF9DVFJMX1BIWV9BRERSKHByaXYtXHUwMDNlbWRpb2Rldi1cdTAwM2VhZGRyKSAmIzQzOyBNVDc1MzBfTlVNX1BIWVM7XG4mIzQzO1x0XHQgICAgIGkmIzQzOyYjNDM7KSB7XG4mIzQzO1x0XHRcdG10NzUzMF9waHlfd3JpdGVfYzQ1KHByaXYsIGksIE1ESU9fTU1EX0FOLCBNRElPX0FOX0VFRV9BRFYsIDApO1xuJiM0MztcdFx0fVxuJiM0MztcdH1cbiYjNDM7XG4gXHRtdDc1M3hfdHJhcF9mcmFtZXMocHJpdik7XG4gXG4gXHQvKiBFbmFibGUgYW5kIHJlc2V0IE1JQiBjb3VudGVycyAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDIwOjUxPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbXQ3NTMwIERTQSBzd2l0Y2ggZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciBmb3IgTWVkaWFUZWsgc3dpdGNoZXMgKE1UNzUzMC9NVDc1MzEvTVQ3NjIxKS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgaGFyZHdhcmUgb3IgYSBjb3JyZXNwb25kaW5nIGRldmljZSB0cmVlIG5vZGUgdG8gcHJvYmUgYW5kIGlzIG5vdCByZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UgdXNlZCBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1M2Q4NWMwN2ZjNTEzOWQ1NzFjNTcyYTcxNTkwYzZmMGFjYmQ1ZjNjCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBBdWcgMTggMjA6NTE6NDMgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMgYi9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMKaW5kZXggYWEzM2Q5NGUxMWI1Zi4uMmM3NmNkZmI1ODU4NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZHNhL210NzUzMC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYwpAQCAtMjUxOCw2ICYjNDM7MjUxOCwxNSBAQCBtdDc1MzBfc2V0dXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKQogCWlmICgodmFsICZhbXA7IE1UNzUzMF9YVEFMX01BU0spID09IE1UNzUzMF9YVEFMXzQwTUhaKQogCQltdDc1MzBfcGxsX3NldHVwKHByaXYpOwogCiYjNDM7CWlmIChwcml2LSZndDtpZCA9PSBJRF9NVDc2MjEpIHsKJiM0MzsJCS8qIERpc2FibGUgRUVFIGFkdmVydGlzZW1lbnQgb24gdGhlIHN3aXRjaCBQSFlzLiAqLwomIzQzOwkJZm9yIChpID0gTVQ3NTNYX0NUUkxfUEhZX0FERFIocHJpdi0mZ3Q7bWRpb2Rldi0mZ3Q7YWRkcik7CiYjNDM7CQkgICAgIGkgJmx0OyBNVDc1M1hfQ1RSTF9QSFlfQUREUihwcml2LSZndDttZGlvZGV2LSZndDthZGRyKSAmIzQzOyBNVDc1MzBfTlVNX1BIWVM7CiYjNDM7CQkgICAgIGkmIzQzOyYjNDM7KSB7CiYjNDM7CQkJbXQ3NTMwX3BoeV93cml0ZV9jNDUocHJpdiwgaSwgTURJT19NTURfQU4sIE1ESU9fQU5fRUVFX0FEViwgMCk7CiYjNDM7CQl9CiYjNDM7CX0KJiM0MzsKIAltdDc1M3hfdHJhcF9mcmFtZXMocHJpdik7CiAKIAkvKiBFbmFibGUgYW5kIHJlc2V0IE1JQiBjb3VudGVycyAqLwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAyMDo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTU0CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMTkyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRUVFIEFkdmVydGlzZW1lbnQgRGlzYWJsZSBQYXRjaCBpbiBgbXQ3NTMwLmNgKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgZHJpdmVycy9uZXQvZHNhL210NzUzMC5jYC4gSXQmIzM5O3MgZGlzYWJsaW5nIEVFRSBhZHZlcnRpc2VtZW50IG9uIHRoZSBzd2l0Y2ggUEhZcyBmb3IgYElEX01UNzYyMWAgd2l0aGluIHRoZSBgbXQ3NTMwX3NldHVwYCBmdW5jdGlvbi4gTXkgaW5pdGlhbCBxdWVzdGlvbiBpczogKmhvdyogcmVhY2hhYmxlIGlzIHRoaXMgY29kZSBpbiBhIHZpcnR1YWxpemVkIHNldHRpbmc/CgpJIGtub3cgYG10NzUzMC5jYCBpcyB0aGUgZHJpdmVyIGZvciB0aG9zZSBNZWRpYVRlayBNVDc1MzAvTVQ3NTMxL01UNzYyMSBEU0Egc3dpdGNoZXMuIERTQSBzd2l0Y2hlcywgZnJvbSBteSBleHBlcmllbmNlLCB1c3VhbGx5IGludGVyZmFjZSB0aHJvdWdoIE1ESU8sIFNQSSwgb3IgbWVtb3J5IG1hcHBpbmcuIEdpdmVuIHRoZSBhcmNoaXRlY3R1cmUgb2YgdGhlIGRyaXZlciwgSSYjMzk7bSBsZWFuaW5nIHRvd2FyZHMgaXQgYmVpbmcgYW4gTURJTyBjb25uZWN0aW9uLiBUaGlzIG1ha2VzIHZpcnR1YWxpemF0aW9uIG1vcmUgY2hhbGxlbmdpbmcsIGFzIHRoZXNlIHR5cGVzIG9mIHN3aXRjaGVzIHJlcXVpcmUgZWl0aGVyIHNwZWNpZmljIGhhcmR3YXJlIG9yIGF0IHRoZSB2ZXJ5IGxlYXN0LCBhIHZlcnkgcHJlY2lzZSBkZXZpY2UgdHJlZSBjb25maWd1cmF0aW9uLgoKU28gdGhlIG1haW4gcXVlc3Rpb24gaXMsIGNhbiBJIHRyaWdnZXIgdGhpcyBjb2RlIHBhdGgsIHNwZWNpZmljYWxseSBgbXQ3NTMwX3NldHVwYCwgd2l0aGluIHNvbWV0aGluZyBsaWtlIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lPyBJJiMzOTtsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgZXhhY3RseSAqaG93KiBgbXQ3NTMwX3NldHVwYCBpcyBjYWxsZWQgdG8gZXZlbiBzdGFydCBkb3duIHRoYXQgcGF0aC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGVudHJ5IHBvaW50IGFuZCBpZiB0aGVyZSYjMzk7cyBhIGZlYXNpYmxlIHdheSB0byBlbXVsYXRlIHRoZSBuZWNlc3NhcnkgaGFyZHdhcmUgc2V0dXAsIGluY2x1ZGluZyB0aGUgTURJTyBhY2Nlc3MsIHdpdGhpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBUaW1lIHRvIGRpZyBpbnRvIHRoZSBjYWxsIGdyYXBoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDIwOjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzUzMF9zZXR1cCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MzczPXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6Mzc0Om10NzUzMF9zZXR1cF9wb3J0NihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzc1LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MTA0Nj1zdGF0aWMgY29uc3QgY2hhciAqbXQ3NTMwX3A1X21vZGVfc3RyKHVuc2lnbmVkIGludCBtb2RlKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xMDU3LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjEwNTg6c3RhdGljIHZvaWQgbXQ3NTMwX3NldHVwX3BvcnQ1KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xMDU5LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MTY0Mz1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MTY0NDptdDc1MzBfc2V0dXBfdmxhbjAoc3RydWN0IG10NzUzMF9wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTE2NDUte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0xNjYwPW10NzUzMF9wb3J0X3NldF92bGFuX3VuYXdhcmUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTY5Ny1cdFx0bXV0ZXhfbG9jayhcdTAwMjZwcml2LVx1MDAzZXJlZ19tdXRleCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MTY5ODpcdFx0bXQ3NTMwX3NldHVwX3ZsYW4wKHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTE2OTktXHRcdG11dGV4X3VubG9jayhcdTAwMjZwcml2LVx1MDAzZXJlZ19tdXRleCk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTE5OTI9bXQ3NTMwX3BvcnRfdmxhbl9hZGQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjAwMi1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMDAzOlx0LyogVklEIDAgaXMgbWFuYWdlZCBleGNsdXNpdmVseSBieSBtdDc1MzBfc2V0dXBfdmxhbjAoKSBmb3JcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMDA0LVx0ICogVkxBTi11bmF3YXJlIGJyaWRnZSBvcGVyYXRpb24uIERvbiYjMzk7dCBsZXQgdGhlIGJyaWRnZSBvdmVyd3JpdGVcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MjA0Nj1tdDc1MzBfcG9ydF92bGFuX2RlbChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMDUzLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIwNTQ6XHQvKiBWSUQgMCBpcyBtYW5hZ2VkIGV4Y2x1c2l2ZWx5IGJ5IG10NzUzMF9zZXR1cF92bGFuMCgpLiAqL1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIwNTUtXHRpZiAodmxhbi1cdTAwM2V2aWQgPT0gMClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MjIyOT1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjIzMDptdDc1MzBfc2V0dXBfZ3BpbyhzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjIzMS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTIyNTk9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMjYwOm10NzUzMF9zZXR1cF9tZGlvX2lycShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjI2MS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTIzMDk9c3RhdGljIGludFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIzMTA6bXQ3NTMwX3NldHVwX2lycShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjMxMS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTIzNjA9c3RhdGljIGludFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIzNjE6bXQ3NTMwX3NldHVwX21kaW8oc3RydWN0IG10NzUzMF9wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIzNjIte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMzk0LVx0aWYgKHByaXYtXHUwMDNlaXJxX2RvbWFpbiBcdTAwMjZcdTAwMjYgIW1ucClcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMzk1Olx0XHRtdDc1MzBfc2V0dXBfbWRpb19pcnEocHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjM5Ni1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MjQwOT1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjQxMDptdDc1MzBfc2V0dXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI0MTEte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNTY4LVx0LyogU2V0dXAgVkxBTiBJRCAwIGZvciBWTEFOLXVuYXdhcmUgYnJpZGdlcyAqL1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjI1Njk6XHRyZXQgPSBtdDc1MzBfc2V0dXBfdmxhbjAocHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjU3MC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI2MTMtXHRcdFx0bXQ3NTMwX2NsZWFyKHByaXYsIE1UNzUzWF9NVFJBUCwgTVQ3NTMwX1A1X0RJUyk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjYxNDpcdFx0XHRtdDc1MzBfc2V0dXBfcG9ydDUoZHMsIGludGVyZmFjZSk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjYxNS1cdFx0fVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNjE5LVx0aWYgKG9mX3Byb3BlcnR5X3JlYWRfYm9vbChwcml2LVx1MDAzZWRldi1cdTAwM2VvZl9ub2RlLCBcJiMzNDtncGlvLWNvbnRyb2xsZXJcJiMzNDspKSB7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjYyMDpcdFx0cmV0ID0gbXQ3NTMwX3NldHVwX2dwaW8ocHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjYyMS1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MjYzNT1tdDc1MzFfc2V0dXBfY29tbW9uKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjcwMS1cdC8qIFNldHVwIFZMQU4gSUQgMCBmb3IgVkxBTi11bmF3YXJlIGJyaWRnZXMgKi9cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyNzAyOlx0cmV0dXJuIG10NzUzMF9zZXR1cF92bGFuMChwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNzAzLX1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MjkxNT1tdDc1MzBfbWFjX2NvbmZpZyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCB1bnNpZ25lZCBpbnQgbW9kZSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjkyMC1cdGlmIChwb3J0ID09IDUpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjkyMTpcdFx0bXQ3NTMwX3NldHVwX3BvcnQ1KHByaXYtXHUwMDNlZHMsIGludGVyZmFjZSk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjkyMi1cdGVsc2UgaWYgKHBvcnQgPT0gNilcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyOTIzOlx0XHRtdDc1MzBfc2V0dXBfcG9ydDYocHJpdi1cdTAwM2VkcywgaW50ZXJmYWNlKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yOTI0LX1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MzE4NT1tdDc1M3hfc2V0dXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zMTkzLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjMxOTQ6XHRyZXQgPSBtdDc1MzBfc2V0dXBfaXJxKHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTMxOTUtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zMTk3LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjMxOTg6XHRyZXQgPSBtdDc1MzBfc2V0dXBfbWRpbyhwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zMTk5LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MzM5Nz1jb25zdCBzdHJ1Y3QgbXQ3NTN4X2luZm8gbXQ3NTN4X3RhYmxlW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTM0MDAtXHRcdC5wY3Nfb3BzID0gXHUwMDI2bXQ3NTMwX3Bjc19vcHMsXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MzQwMTpcdFx0LnN3X3NldHVwID0gbXQ3NTMwX3NldHVwLFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTM0MDItXHRcdC5waHlfcmVhZF9jMjIgPSBtdDc1MzBfcGh5X3JlYWRfYzIyLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zNDExLVx0XHQucGNzX29wcyA9IFx1MDAyNm10NzUzMF9wY3Nfb3BzLFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjM0MTI6XHRcdC5zd19zZXR1cCA9IG10NzUzMF9zZXR1cCxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zNDEzLVx0XHQucGh5X3JlYWRfYzIyID0gbXQ3NTMwX3BoeV9yZWFkX2MyMixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAyMDo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTczCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogOTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBtdDc1MzAgRHJpdmVyIEluaXRpYWxpemF0aW9uKioKCk9rYXksIHNvIEkgc2VlIHRoYXQgYG10NzUzMF9zZXR1cGAgaXMgYmVpbmcgbGlua2VkIHRvIHRoZSBgLnN3X3NldHVwYCBmdW5jdGlvbiBwb2ludGVyIHdpdGhpbiB0aGUgYG10NzUzeF90YWJsZWAgc3RydWN0dXJlLiBUaGF0IHRhYmxlIGlzLCBlc3NlbnRpYWxseSwgdGhlIGJsdWVwcmludCB1c2VkIGJ5IHRoZSBkcml2ZXIgdG8gYnJpbmcgdGhlIHN3aXRjaCBvbmxpbmUuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBjYW4gSSBldmVuIGdldCB0byB0aGlzIGNvZGUgd2l0aG91dCBzcGVjaWZpYywgcmVhbCBoYXJkd2FyZT8gR2l2ZW4gdGhhdCBpdCYjMzk7cyBhIHBsYXRmb3JtL01ESU8gZHJpdmVyLCB0aGF0JiMzOTtzIHRoZSBjcnVjaWFsIHF1ZXN0aW9uLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGVyZSYjMzk7cyBhIHByYWN0aWNhbCB3YXkgdG8gZGVidWcgaXQgaW4gYSBzdGFuZGFyZCBRRU1VIHNldHVwLiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBkcml2ZXIgY29kZSBpdHNlbGYgdG8gZnVsbHkgZ3Jhc3AgdGhlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlLiBNeSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgY29kZSwgcHJvYmFibHkgYGRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jYCwgb3Igc29tZXRoaW5nIGFsb25nIHRob3NlIGxpbmVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBkcml2ZXIgcmVnaXN0ZXJzIGl0c2VsZiB3aXRoIHRoZSBzeXN0ZW0sIHRoYXQgd2lsbCBnaXZlIG1lIG15IGZpcnN0IGNsdWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDIwOjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlXy4qZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL210NzUzMCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMjA6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTUzMAoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipOYXZpZ2F0aW5nIHRoZSBEU0EgRHJpdmVyIExhbmRzY2FwZSoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZGl2ZSBpbnRvIHRoZSBEU0EgKERpc3RyaWJ1dGVkIFN3aXRjaCBBcmNoaXRlY3R1cmUpIGRyaXZlciBjb2RlLCBhbmQgc3BlY2lmaWNhbGx5LCBJJiMzOTttIGludGVyZXN0ZWQgaW4gdGhlIGZpbGVzIHJlbGF0ZWQgdG8gdGhlIGBtdDc1MzBgIGNoaXBzZXQuIFRoYXQgc2VlbXMgbGlrZSBhIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQg4oCTIGBkcml2ZXJzL25ldC9kc2EvYCBpcyB3aGVyZSBJIHdvdWxkIGV4cGVjdCB0byBmaW5kIHRoZSBtYWpvcml0eSBvZiB0aGUgcmVsZXZhbnQgY29kZS4gR2l2ZW4gbXkgZXhwZXJ0aXNlLCBJIGFscmVhZHkgaGF2ZSBhIG1lbnRhbCBtb2RlbCBvZiBob3cgdGhlc2UgRFNBIGRyaXZlcnMgYXJlIGdlbmVyYWxseSBzdHJ1Y3R1cmVkLiBTbywgSSYjMzk7bGwgZ28gdGhyb3VnaCB0aGlzIGRpcmVjdG9yeSBhbmQgZmlsdGVyIG9uIGBtdDc1MzAqYC4gVGhpcyBzaG91bGQgeWllbGQgdGhlIGNyaXRpY2FsIHNvdXJjZSBmaWxlcywgY29uZmlndXJhdGlvbiBvcHRpb25zLCBhbmQgZGV2aWNlLXNwZWNpZmljIGluZm9ybWF0aW9uIEkmIzM5O20gZ29pbmcgdG8gbmVlZC4gVGhlbiBJIGNhbiBnZXQgdG8gd29yayEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAyMDo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmNvZGVzZWFyY2gtZGlyLWluZGV4PC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtEaXImIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZXMmIzM0OzogWwogICAgJiMzNDtiY21fc2YyLmMmIzM0OywKICAgICYjMzQ7YmNtX3NmMi5oJiMzNDssCiAgICAmIzM0O2JjbV9zZjJfY2ZwLmMmIzM0OywKICAgICYjMzQ7YmNtX3NmMl9yZWdzLmgmIzM0OywKICAgICYjMzQ7ZHNhX2xvb3AuYyYjMzQ7LAogICAgJiMzNDtrczg5OTUuYyYjMzQ7LAogICAgJiMzNDtsYW45MzAzLWNvcmUuYyYjMzQ7LAogICAgJiMzNDtsYW45MzAzLmgmIzM0OywKICAgICYjMzQ7bGFuOTMwM19pMmMuYyYjMzQ7LAogICAgJiMzNDtsYW45MzAzX21kaW8uYyYjMzQ7LAogICAgJiMzNDttdDc1MzAtbWRpby5jJiMzNDssCiAgICAmIzM0O210NzUzMC1tbWlvLmMmIzM0OywKICAgICYjMzQ7bXQ3NTMwLmMmIzM0OywKICAgICYjMzQ7bXQ3NTMwLmgmIzM0OywKICAgICYjMzQ7bXY4OGU2MDYwLmMmIzM0OywKICAgICYjMzQ7bXY4OGU2MDYwLmgmIzM0OywKICAgICYjMzQ7cnpuMV9hNXBzdy5jJiMzNDssCiAgICAmIzM0O3J6bjFfYTVwc3cuaCYjMzQ7LAogICAgJiMzNDt2aXRlc3NlLXZzYzczeHgtY29yZS5jJiMzNDssCiAgICAmIzM0O3ZpdGVzc2UtdnNjNzN4eC1wbGF0Zm9ybS5jJiMzNDssCiAgICAmIzM0O3ZpdGVzc2UtdnNjNzN4eC1zcGkuYyYjMzQ7LAogICAgJiMzNDt2aXRlc3NlLXZzYzczeHguaCYjMzQ7LAogICAgJiMzNDt5dDkyMXguYyYjMzQ7LAogICAgJiMzNDt5dDkyMXguaCYjMzQ7CiAgXSwKICAmIzM0O1N1YmRpcnMmIzM0OzogWwogICAgJiMzNDtiNTMmIzM0OywKICAgICYjMzQ7aGlyc2NobWFubiYjMzQ7LAogICAgJiMzNDtsYW50aXEmIzM0OywKICAgICYjMzQ7bWljcm9jaGlwJiMzNDssCiAgICAmIzM0O212ODhlNnh4eCYjMzQ7LAogICAgJiMzNDtteGw4NjJ4eCYjMzQ7LAogICAgJiMzNDtuZXRjJiMzNDssCiAgICAmIzM0O29jZWxvdCYjMzQ7LAogICAgJiMzNDtxY2EmIzM0OywKICAgICYjMzQ7cmVhbHRlayYjMzQ7LAogICAgJiMzNDtzamExMTA1JiMzNDssCiAgICAmIzM0O3hyczcwMHgmIzM0OwogIF0KfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDIwOjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYxMjcKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIGZpbGVzOgoKKipEaXZpbmcgaW50byB0aGUgTVQ3NTMwIERyaXZlciBJbXBsZW1lbnRhdGlvbioqCgpSaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IGJ5IHRha2luZyBhIGNsb3NlIGxvb2sgYXQgYG10NzUzMC1tZGlvLmNgIGFuZCBgbXQ3NTMwLW1taW8uY2AuIEJhc2VkIG9uIHRoZSBuYW1pbmcsIEkmIzM5O20gZXhwZWN0aW5nIGBtZGlvYCB0byBoYW5kbGUgdGhlIE1lZGlhIEluZGVwZW5kZW50IEludGVyZmFjZSwgbGlrZWx5IGZvciBQSFkgY29tbXVuaWNhdGlvbi4gSXQmIzM5O2xsIHByb2JhYmx5IGRlYWwgd2l0aCByZWdpc3RlcnMgcmVsYXRlZCB0byBjb25maWd1cmluZyBhbmQgYWNjZXNzaW5nIGV4dGVybmFsIFBIWXMgY29ubmVjdGVkIHRvIHRoZSBzd2l0Y2guIEkmIzM5O2xsIHdhbnQgdG8gc2VlIGhvdyB0aGV5JiMzOTtyZSBoYW5kbGluZyBNRElPIHRyYW5zYWN0aW9ucywgc2V0dGluZyB1cCB0aGUgY2xvY2sgZnJlcXVlbmN5LCBhbmQgZGVhbGluZyB3aXRoIGFueSBwb3RlbnRpYWwgdGltaW5nIGNvbnN0cmFpbnRzLiBUaGVuLCBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIGhvdyBpdCBhY3R1YWxseSB0cmFuc2xhdGVzIHRob3NlIE1ESU8gYWNjZXNzZXMgaW50byB0aGUgcmVsZXZhbnQgaGFyZHdhcmUgaW50ZXJhY3Rpb25zLgoKYG10NzUzMC1tbWlvLmNgLCBvbiB0aGUgb3RoZXIgaGFuZCwgc2hvdWxkIGNvbnRhaW4gdGhlIGNvZGUgcmVzcG9uc2libGUgZm9yIGRpcmVjdCBtZW1vcnktbWFwcGVkIEkvTyAoTU1JTykgYWNjZXNzIHRvIHRoZSBNVDc1MzAmIzM5O3MgaW50ZXJuYWwgcmVnaXN0ZXJzLiBUaGlzIGlzIHdoZXJlIHRoZSBjb3JlIHN3aXRjaCBjb25maWd1cmF0aW9uIGlzIGdvaW5nIHRvIGJlIGhhbmRsZWQuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHJlZ2lzdGVyIGRlZmluaXRpb25zLCBtZW1vcnkgbWFwcGluZyBkZXRhaWxzLCBhbmQgdGhlIGNvcmUgZnVuY3Rpb25zIGZvciBjb250cm9sbGluZyB0aGUgc3dpdGNoJiMzOTtzIGZ1bmN0aW9uYWxpdHk6IHBvcnQgY29uZmlndXJhdGlvbiwgVkxBTiBtYW5hZ2VtZW50LCBmb3J3YXJkaW5nIHRhYmxlIG1hbmlwdWxhdGlvbiwgYW5kIGludGVycnVwdCBoYW5kbGluZy4gSSYjMzk7bGwgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIHRoZSBNTUlPIGNvZGUgYW5kIHRoZSBNRElPIGNvZGUuIEFyZSB0aGVyZSBzaGFyZWQgZGF0YSBzdHJ1Y3R1cmVzPyBIb3cgYXJlIFBIWSBzZXR0aW5ncyByZWZsZWN0ZWQgaW4gdGhlIGludGVybmFsIHN3aXRjaCBjb25maWd1cmF0aW9uPyBJJiMzOTtsbCBwcm9iYWJseSBiZSBkaXZpbmcgZGVlcCBpbnRvIHRoZSByZWdpc3RlciBkZXNjcmlwdGlvbnMgdG8gZ2V0IGEgc29saWQgZ3Jhc3Agb2YgdGhpcyBzdHVmZi4gSSYjMzk7bGwgYWxzbyBiZSBleHBlY3RpbmcgdG8gc2VlIGEgZ29vZCBhbW91bnQgb2Ygd29yayBvbiBsb2NrIGNvbnRlbnRpb24gYW5kIHN5bmNocm9uaXphdGlvbiwgZ2l2ZW4gdGhlIGNvbXBsZXhpdHkgb2YgdGhlIGhhcmR3YXJlIGFuZCB0aGUgbmVlZCB0byBwcmV2ZW50IGRhdGEgY29ycnVwdGlvbi4gSSB3YW50IHRvIHBheSBhdHRlbnRpb24gdG8gYW55IHBvdGVudGlhbCBpc3N1ZXMgc3VjaCBhcyByZWdpc3RlciBhY2Nlc3Mgb3JkZXIsIGFueSByYWNlIGNvbmRpdGlvbnMsIGFuZCBob3cgdGhleSBoYW5kbGVkIHRoZW0uIEVzc2VudGlhbGx5LCBJJiMzOTttIGxvb2tpbmcgZm9yIGEgc29saWQgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhleSYjMzk7dmUgaW1wbGVtZW50ZWQgdGhlIGxvdy1sZXZlbCBpbnRlcmFjdGlvbiB3aXRoIHRoZSBzd2l0Y2ggc2lsaWNvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMjA6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlXy4qZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM9MjU4PXN0YXRpYyBzdHJ1Y3QgbWRpb19kcml2ZXIgbXQ3NTMwX21kaW9fZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTI2Ny1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjI2ODptZGlvX21vZHVsZV9kcml2ZXIobXQ3NTMwX21kaW9fZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTI2OS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMjA6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjc1MQoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDQyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBNVDc1MzAgTURJTyBEcml2ZXImIzM5O3MgQWNjZXNzaWJpbGl0eSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBNRElPIGRyaXZlciwgdGhlIGBtdDc1MzBgLiBNeSBpbml0aWFsIHRob3VnaHRzIGFyZSB0aGF0IE1ESU8gZGV2aWNlcyBhcmUgdXN1YWxseSBoYW5kbGVkIGR1cmluZyBzeXN0ZW0gc2V0dXAsIHR5cGljYWxseSBpbnN0YW50aWF0ZWQgdGhyb3VnaCB0aGUgZGV2aWNlIHRyZWUgb3IgQUNQSSwgb3Igc29tZXRpbWVzIGJ5IGRlZGljYXRlZCBuZXR3b3JrIGRyaXZlcnMgdGhhdCBoYW5kbGUgdGhlIHJlZ2lzdHJhdGlvbiBvZiB0aGUgTURJTyBidXNlcyBhbmQgZGV2aWNlcy4gTm93LCBpbiBhIHZpcnR1YWwgZW52aXJvbm1lbnQgbGlrZSBRRU1VLCB0aGUga2V5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBzcGVjaWZpYyBkZXZpY2UgaXMgZXZlbiAqcmVhY2hhYmxlKi4gVW5sZXNzIHRoZXJlJiMzOTtzIGFuIGVtdWxhdGVkIE1ESU8gYnVzIHRoYXQgYWN0dWFsbHkgaW5zdGFudGlhdGVzIGl0IOKAkyBzb21ldGhpbmcgdHJpZ2dlcmVkIGJ5IGEgc3BlY2lmaWMgZW11bGF0ZWQgYm9hcmQgY29uZmlndXJhdGlvbiwgYSBzcGVjaWZpYyBkZXZpY2UgdHJlZSBzZXR1cCDigJMgaXQmIzM5O3MgZ29pbmcgdG8gYmUgaW5hY2Nlc3NpYmxlLgoKSSBoYWQgYSBmbGVldGluZyB0aG91Z2h0IGFib3V0IHN5emthbGxlciwgd29uZGVyaW5nIGlmIGl0IGNvdWxkIGluamVjdCB0aGUgTURJTyBkZXZpY2UuIFN5emthbGxlciAqY2FuKiBzb21ldGltZXMgaW5qZWN0IGRldmljZXMgaWYgdGhlcmUmIzM5O3MgYSBtZWNoYW5pc20gdG8gcmVnaXN0ZXIgdGhlbSBmcm9tIHVzZXJzcGFjZSwgYnV0IE1ESU8gZGV2aWNlcyBhcmVuJiMzOTt0IHVzdWFsbHkgZWFzaWx5IGluamVjdGVkLiBJdCB0eXBpY2FsbHkgcmVxdWlyZXMgY29udHJvbCBvdmVyIGEgdmlydHVhbCBNRElPIGJ1cy4gU28sIGNhbiBJIHJlYWNoIHRoZSBgbXQ3NTMwX3NldHVwYCBmdW5jdGlvbj8gVGhhdCYjMzk7cyB0aGUgY29yZSBvZiB0aGUgcXVlc3Rpb24uCgpJIGJyaWVmbHkgY2hlY2tlZCBzeXprYWxsZXIgdG8gc2VlIGlmIGl0IGhhZCBhIHdheSB0byBmdXp6IE1ESU8gZGV2aWNlcyBpbiBnZW5lcmFsLiBJdCBkb2VzbiYjMzk7dCBzZWVtIHRvIGhhdmUgYSBnZW5lcmljIG1ldGhvZCBmb3IgaW5zdGFudGlhdGluZyAqYXJiaXRyYXJ5KiBNRElPIGRldmljZXMgdW5sZXNzLCBwZXJoYXBzLCB0aGVyZSYjMzk7cyBhIE5ldGxpbmsgaW50ZXJmYWNlIG9yIHNvbWV0aGluZyBzaW1pbGFyLiBUaGVuIEkgcmVtZW1iZXJlZCB0aGUgYGRzYV9sb29wYCBzZXR1cCwgdGhhdCBzeXprYWxsZXIgdXNlcyBmb3IgdGVzdGluZyBEU0EsIGJ1dCBgbXQ3NTMwYCBpcyBzdGlsbCBzcGVjaWZpYyBoYXJkd2FyZS4KClNvLCBpcyB0aGlzIGRyaXZlciBldmVuICpyZWFjaGFibGUqIGluIGEgUUVNVSBlbnZpcm9ubWVudD8gSSBuZWVkIHRvIGNoZWNrIGZvciBRRU1VIGJvYXJkcyB0aGF0IGFjdHVhbGx5IHVzZSB0aGUgYG10NzUzMGAgc3dpdGNoLiBUaGUgTVQ3NTMwIGlzIGEgTWVkaWFUZWsgc3dpdGNoLCB0eXBpY2FsbHkgdXNlZCB3aXRoIE1lZGlhVGVrIFNvQ3MgbGlrZSB0aGUgTVQ3NjIxLCBNVDc2MjIsIE1UNzYyMywgTVQ3NjI5LiBIb3dldmVyLCBRRU1VIGRvZXNuJiMzOTt0IGVtdWxhdGUgdGhvc2UgU29DcyBieSBkZWZhdWx0IGluIGEgd2F5IHRoYXQgYWxpZ25zIHdpdGggc3l6a2FsbGVyJiMzOTtzIHR5cGljYWwgdGFyZ2V0cywgbGlrZSB4ODZfNjQsIGFybTY0IHZpcnQsIGFuZCBzbyBvbi4KClRoZSBsaWtlbHkgb3V0Y29tZSwgZXZlbiBpZiB0aGUgZHJpdmVyICppcyogY29tcGlsZWQgaW50byB0aGUga2VybmVsLCBpcyB0aGF0IHRoZSBNRElPIGRyaXZlciYjMzk7cyBgcHJvYmVgIGZ1bmN0aW9uIHdvbiYjMzk7dCBiZSBjYWxsZWQgYmVjYXVzZSB0aGVyZSYjMzk7cyBubyBhY3R1YWwgaGFyZHdhcmUgcHJlc2VudCBvciBubyBtYXRjaGluZyBkZXZpY2UgdHJlZSBub2RlLiBUaGVyZWZvcmUsIEkgc2hvdWxkIGNvbmZpcm0gd2hhdCB0aGUgYHByb2JlYCBmdW5jdGlvbiBkb2VzIGluIGBtdDc1MzAtbWRpby5jYCBqdXN0IHRvIGJlIHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDIwOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzUzMF9wcm9iZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jPTE1ND1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoxNTU6bXQ3NTMwX3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTE1Ni17XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTcwLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MTcxOlx0cmV0ID0gbXQ3NTMwX3Byb2JlX2NvbW1vbihwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTE3Mi1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM9MjU4PXN0YXRpYyBzdHJ1Y3QgbWRpb19kcml2ZXIgbXQ3NTMwX21kaW9fZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MjU5Olx0LnByb2JlICA9IG10NzUzMF9wcm9iZSxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTI2MC1cdC5yZW1vdmUgPSBtdDc1MzBfcmVtb3ZlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAyMDo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MDYxCgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHRoZSBvbmUgdGhpbmtpbmcgaXQ6CgoqKkRpZ2dpbmcgaW50byB0aGUgTURJTyBEZXZpY2UgTWF0Y2hpbmcqKgoKT2theSwgc28gYG10NzUzMF9wcm9iZWAgaXMgdHJpZ2dlcmVkLiBUaGF0JiMzOTtzIGdvb2QsIHRoYXQgbWVhbnMgd2UmIzM5O3ZlIGdvdCBhIG1hdGNoLiBCdXQuLi4gKmhvdyogZGlkIHRoZSBNRElPIGRldmljZSBhY3R1YWxseSBtYXRjaCBpbiB0aGUgZmlyc3QgcGxhY2U/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjcml0ZXJpYS4gSXMgaXQgYSBzcGVjaWZpYyBkZXZpY2UgSUQ/IEEgcGFydGljdWxhciByZWdpc3RlciB2YWx1ZT8gRG9lcyBpdCBpbnZvbHZlIERUIGJpbmRpbmdzPyBJIG5lZWQgdG8gdHJhY2UgYmFjayBmcm9tIHRoZSBgbXQ3NTMwX3Byb2JlYCBjYWxsIHRvIHVuZGVyc3RhbmQgdGhlIG1hdGNoaW5nIHByb2Nlc3MuIEkgbmVlZCB0byBiZSBzdXJlIHRoZSBwcm9iZSBpcyBydW5uaW5nIG9uICp0aGlzKiBzcGVjaWZpYyBkZXZpY2UsIGFuZCBub3Qgc29tZXRoaW5nIHNpbWlsYXIuIEdvdHRhIGRpdmUgaW50byB0aGUgZGV2aWNlIHRyZWUgYW5kIGRyaXZlciBjb3JlIGludGVyYWN0aW9ucyB0byBzZWUgd2hhdCBsZWQgdXMgaGVyZS4gVGhpcyBtYXRjaGluZyBtZWNoYW5pc20gaXMga2V5IHRvIHRoZSBlbnRpcmUgZHJpdmVyJiMzOTtzIGZ1bmN0aW9uYWxpdHkuIEkgbmVlZCB0byBuYWlsIGRvd24gdGhlIGV4YWN0IHBhdGggdG8gZW5zdXJlIHJlbGlhYmxlIG9wZXJhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMjA6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3NTMwX29mX21hdGNoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM9OTE9bXQ3NTMxX2NyZWF0ZV9zZ21paShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTM3LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MTM4OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG10NzUzMF9vZl9tYXRjaFtdID0ge1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTM5LVx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O21lZGlhdGVrLG10NzYyMVwmIzM0OywgLmRhdGEgPSBcdTAwMjZtdDc1M3hfdGFibGVbSURfTVQ3NjIxXSwgfSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xNDMtfTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjE0NDpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBtdDc1MzBfb2ZfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTQ1LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jPTI1OD1zdGF0aWMgc3RydWN0IG1kaW9fZHJpdmVyIG10NzUzMF9tZGlvX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yNjMtXHRcdC5uYW1lID0gXCYjMzQ7bXQ3NTMwLW1kaW9cJiMzNDssXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyNjQ6XHRcdC5vZl9tYXRjaF90YWJsZSA9IG10NzUzMF9vZl9tYXRjaCxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTI2NS1cdH0sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDIwOjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg3NDUKCQkJCQkJCW91dHB1dDogMTA4CgkJCQkJCQl0aG91Z2h0czogODYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgYG10NzUzMGAgRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O3ZlIGxvb2tlZCBhdCB0aGlzIGRyaXZlciwgYW5kIGJhc2VkIG9uIGl0cyBtYXRjaGluZyBjcml0ZXJpYSB1c2luZyB0aGUgZGV2aWNlIHRyZWUgKGBvZl9tYXRjaF90YWJsZWApLCBpdCYjMzk7cyBjbGVhciB0aGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZm9yIGEgTWVkaWFUZWsgc3dpdGNoLiBJbiBhIHR5cGljYWwgeDg2XzY0IG9yIGFybTY0IHZpcnR1YWxpemVkIGVudmlyb25tZW50IOKAkyB0aGUga2luZCBJJiMzOTttIHVzZWQgdG8gc2VlaW5nIHdpdGhvdXQgYSBjdXN0b20gZGV2aWNlIHRyZWUgaW5qZWN0aW5nIHRoZSBub2RlIOKAkyB0aGlzIHRoaW5nIHNpbXBseSAqd29uJiMzOTt0KiBwcm9iZS4gVGhlIGBtdDc1MzBfc2V0dXBgIGZ1bmN0aW9uLCB3aGljaCBpcyBsaWtlbHkgd2hlcmUgYW55IGludGVyZXN0aW5nIGZ1bmN0aW9uYWxpdHkgcmVzaWRlcywgd2lsbCBuZXZlciBiZSBleGVjdXRlZCB1bmRlciB0aG9zZSBjaXJjdW1zdGFuY2VzLiBDb25zaWRlcmluZyBhbGwgdGhpcywgdGhlcmUmIzM5O3Mgbm8gd2F5IGl0JiMzOTtzIGdvaW5nIHRvIGJlIGV4cG9zZWQgZm9yIGFueSBraW5kIG9mIGludGVyZXN0aW5nIGZ1enppbmcuIFNvLCBJJiMzOTttIG1hcmtpbmcgaXQgYXMgV29ydGhGdXp6aW5nPWZhbHNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAyMDo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBtdDc1MzAgRFNBIHN3aXRjaCBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyIGZvciBNZWRpYVRlayBzd2l0Y2hlcyAoTVQ3NTMwL01UNzUzMS9NVDc2MjEpLiBUaGlzIGRyaXZlciByZXF1aXJlcyBzcGVjaWZpYyBoYXJkd2FyZSBvciBhIGNvcnJlc3BvbmRpbmcgZGV2aWNlIHRyZWUgbm9kZSB0byBwcm9iZSBhbmQgaXMgbm90IHJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSB1c2VkIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG10NzUzMCBEU0Egc3dpdGNoIGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgZm9yIE1lZGlhVGVrIHN3aXRjaGVzIChNVDc1MzAvTVQ3NTMxL01UNzYyMSkuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHNwZWNpZmljIGhhcmR3YXJlIG9yIGEgY29ycmVzcG9uZGluZyBkZXZpY2UgdHJlZSBub2RlIHRvIHByb2JlIGFuZCBpcyBub3QgcmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFIHVzZWQgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAyMDo1MjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMThUMjA6NTE6NDQuNjk3Mjc0NTkzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzgyOTgwMzUwMzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbXQ3NTMwIERTQSBzd2l0Y2ggZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciBmb3IgTWVkaWFUZWsgc3dpdGNoZXMgKE1UNzUzMC9NVDc1MzEvTVQ3NjIxKS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgaGFyZHdhcmUgb3IgYSBjb3JyZXNwb25kaW5nIGRldmljZSB0cmVlIG5vZGUgdG8gcHJvYmUgYW5kIGlzIG5vdCByZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UgdXNlZCBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDIwOjUxOjQ0LjY5NzI4MDQ0M1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDMzNjQzMzA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNTNkODVjMDdmYzUxMzlkNTcxYzU3MmE3MTU5MGM2ZjBhY2JkNWYzY1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEF1ZyAxOCAyMDo1MTo0MyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMgYi9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmNcXG5pbmRleCBhYTMzZDk0ZTExYjVmLi4yYzc2Y2RmYjU4NTg0IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuY1xcbkBAIC0yNTE4LDYgKzI1MTgsMTUgQEAgbXQ3NTMwX3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG4gXFx0aWYgKCh2YWwgXFx1MDAyNiBNVDc1MzBfWFRBTF9NQVNLKSA9PSBNVDc1MzBfWFRBTF80ME1IWilcXG4gXFx0XFx0bXQ3NTMwX3BsbF9zZXR1cChwcml2KTtcXG4gXFxuK1xcdGlmIChwcml2LVxcdTAwM2VpZCA9PSBJRF9NVDc2MjEpIHtcXG4rXFx0XFx0LyogRGlzYWJsZSBFRUUgYWR2ZXJ0aXNlbWVudCBvbiB0aGUgc3dpdGNoIFBIWXMuICovXFxuK1xcdFxcdGZvciAoaSA9IE1UNzUzWF9DVFJMX1BIWV9BRERSKHByaXYtXFx1MDAzZW1kaW9kZXYtXFx1MDAzZWFkZHIpO1xcbitcXHRcXHQgICAgIGkgXFx1MDAzYyBNVDc1M1hfQ1RSTF9QSFlfQUREUihwcml2LVxcdTAwM2VtZGlvZGV2LVxcdTAwM2VhZGRyKSArIE1UNzUzMF9OVU1fUEhZUztcXG4rXFx0XFx0ICAgICBpKyspIHtcXG4rXFx0XFx0XFx0bXQ3NTMwX3BoeV93cml0ZV9jNDUocHJpdiwgaSwgTURJT19NTURfQU4sIE1ESU9fQU5fRUVFX0FEViwgMCk7XFxuK1xcdFxcdH1cXG4rXFx0fVxcbitcXG4gXFx0bXQ3NTN4X3RyYXBfZnJhbWVzKHByaXYpO1xcbiBcXG4gXFx0LyogRW5hYmxlIGFuZCByZXNldCBNSUIgY291bnRlcnMgKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMjA6NTE6NDUuMTMxNTkwMTA3WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6Mzc4NjM3MDcwNjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBtdDc1MzAgRFNBIHN3aXRjaCBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyIGZvciBNZWRpYVRlayBzd2l0Y2hlcyAoTVQ3NTMwL01UNzUzMS9NVDc2MjEpLiBUaGlzIGRyaXZlciByZXF1aXJlcyBzcGVjaWZpYyBoYXJkd2FyZSBvciBhIGNvcnJlc3BvbmRpbmcgZGV2aWNlIHRyZWUgbm9kZSB0byBwcm9iZSBhbmQgaXMgbm90IHJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSB1c2VkIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNTNkODVjMDdmYzUxMzlkNTcxYzU3MmE3MTU5MGM2ZjBhY2JkNWYzY1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDE4IDIwOjUxOjQzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL210NzUzMC5jIGIvZHJpdmVycy9uZXQvZHNhL210NzUzMC5jXG5pbmRleCBhYTMzZDk0ZTExYjVmLi4yYzc2Y2RmYjU4NTg0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL210NzUzMC5jXG4rKysgYi9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmNcbkBAIC0yNTE4LDYgKzI1MTgsMTUgQEAgbXQ3NTMwX3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbiBcdGlmICgodmFsIFx1MDAyNiBNVDc1MzBfWFRBTF9NQVNLKSA9PSBNVDc1MzBfWFRBTF80ME1IWilcbiBcdFx0bXQ3NTMwX3BsbF9zZXR1cChwcml2KTtcbiBcbitcdGlmIChwcml2LVx1MDAzZWlkID09IElEX01UNzYyMSkge1xuK1x0XHQvKiBEaXNhYmxlIEVFRSBhZHZlcnRpc2VtZW50IG9uIHRoZSBzd2l0Y2ggUEhZcy4gKi9cbitcdFx0Zm9yIChpID0gTVQ3NTNYX0NUUkxfUEhZX0FERFIocHJpdi1cdTAwM2VtZGlvZGV2LVx1MDAzZWFkZHIpO1xuK1x0XHQgICAgIGkgXHUwMDNjIE1UNzUzWF9DVFJMX1BIWV9BRERSKHByaXYtXHUwMDNlbWRpb2Rldi1cdTAwM2VhZGRyKSArIE1UNzUzMF9OVU1fUEhZUztcbitcdFx0ICAgICBpKyspIHtcbitcdFx0XHRtdDc1MzBfcGh5X3dyaXRlX2M0NShwcml2LCBpLCBNRElPX01NRF9BTiwgTURJT19BTl9FRUVfQURWLCAwKTtcbitcdFx0fVxuK1x0fVxuK1xuIFx0bXQ3NTN4X3RyYXBfZnJhbWVzKHByaXYpO1xuIFxuIFx0LyogRW5hYmxlIGFuZCByZXNldCBNSUIgY291bnRlcnMgKi9cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDIwOjUxOjQ1LjEzMTU5MTY5N1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxNDY2NTM4MzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBFRUUgQWR2ZXJ0aXNlbWVudCBEaXNhYmxlIFBhdGNoIGluIGBtdDc1MzAuY2AqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgZHJpdmVycy9uZXQvZHNhL210NzUzMC5jYC4gSXQncyBkaXNhYmxpbmcgRUVFIGFkdmVydGlzZW1lbnQgb24gdGhlIHN3aXRjaCBQSFlzIGZvciBgSURfTVQ3NjIxYCB3aXRoaW4gdGhlIGBtdDc1MzBfc2V0dXBgIGZ1bmN0aW9uLiBNeSBpbml0aWFsIHF1ZXN0aW9uIGlzOiAqaG93KiByZWFjaGFibGUgaXMgdGhpcyBjb2RlIGluIGEgdmlydHVhbGl6ZWQgc2V0dGluZz9cblxuSSBrbm93IGBtdDc1MzAuY2AgaXMgdGhlIGRyaXZlciBmb3IgdGhvc2UgTWVkaWFUZWsgTVQ3NTMwL01UNzUzMS9NVDc2MjEgRFNBIHN3aXRjaGVzLiBEU0Egc3dpdGNoZXMsIGZyb20gbXkgZXhwZXJpZW5jZSwgdXN1YWxseSBpbnRlcmZhY2UgdGhyb3VnaCBNRElPLCBTUEksIG9yIG1lbW9yeSBtYXBwaW5nLiBHaXZlbiB0aGUgYXJjaGl0ZWN0dXJlIG9mIHRoZSBkcml2ZXIsIEknbSBsZWFuaW5nIHRvd2FyZHMgaXQgYmVpbmcgYW4gTURJTyBjb25uZWN0aW9uLiBUaGlzIG1ha2VzIHZpcnR1YWxpemF0aW9uIG1vcmUgY2hhbGxlbmdpbmcsIGFzIHRoZXNlIHR5cGVzIG9mIHN3aXRjaGVzIHJlcXVpcmUgZWl0aGVyIHNwZWNpZmljIGhhcmR3YXJlIG9yIGF0IHRoZSB2ZXJ5IGxlYXN0LCBhIHZlcnkgcHJlY2lzZSBkZXZpY2UgdHJlZSBjb25maWd1cmF0aW9uLlxuXG5TbyB0aGUgbWFpbiBxdWVzdGlvbiBpcywgY2FuIEkgdHJpZ2dlciB0aGlzIGNvZGUgcGF0aCwgc3BlY2lmaWNhbGx5IGBtdDc1MzBfc2V0dXBgLCB3aXRoaW4gc29tZXRoaW5nIGxpa2UgUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmU/IEknbGwgbmVlZCB0byBmaWd1cmUgb3V0IGV4YWN0bHkgKmhvdyogYG10NzUzMF9zZXR1cGAgaXMgY2FsbGVkIHRvIGV2ZW4gc3RhcnQgZG93biB0aGF0IHBhdGguIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBlbnRyeSBwb2ludCBhbmQgaWYgdGhlcmUncyBhIGZlYXNpYmxlIHdheSB0byBlbXVsYXRlIHRoZSBuZWNlc3NhcnkgaGFyZHdhcmUgc2V0dXAsIGluY2x1ZGluZyB0aGUgTURJTyBhY2Nlc3MsIHdpdGhpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBUaW1lIHRvIGRpZyBpbnRvIHRoZSBjYWxsIGdyYXBoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTU0LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTkyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMjA6NTE6NTAuMjc4MjQ5MDgxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MDk3MTk1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzUzMF9zZXR1cFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTM3Mz1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozNzQ6bXQ3NTMwX3NldHVwX3BvcnQ2KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzc1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0xMDQ2PXN0YXRpYyBjb25zdCBjaGFyICptdDc1MzBfcDVfbW9kZV9zdHIodW5zaWduZWQgaW50IG1vZGUpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTA1Ny1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MTA1ODpzdGF0aWMgdm9pZCBtdDc1MzBfc2V0dXBfcG9ydDUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xMDU5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0xNjQzPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MTY0NDptdDc1MzBfc2V0dXBfdmxhbjAoc3RydWN0IG10NzUzMF9wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xNjQ1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0xNjYwPW10NzUzMF9wb3J0X3NldF92bGFuX3VuYXdhcmUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xNjk3LVxcdFxcdG11dGV4X2xvY2soXFx1MDAyNnByaXYtXFx1MDAzZXJlZ19tdXRleCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjE2OTg6XFx0XFx0bXQ3NTMwX3NldHVwX3ZsYW4wKHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xNjk5LVxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2cHJpdi1cXHUwMDNlcmVnX211dGV4KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0xOTkyPW10NzUzMF9wb3J0X3ZsYW5fYWRkKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjAwMi1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjAwMzpcXHQvKiBWSUQgMCBpcyBtYW5hZ2VkIGV4Y2x1c2l2ZWx5IGJ5IG10NzUzMF9zZXR1cF92bGFuMCgpIGZvclxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMDA0LVxcdCAqIFZMQU4tdW5hd2FyZSBicmlkZ2Ugb3BlcmF0aW9uLiBEb24ndCBsZXQgdGhlIGJyaWRnZSBvdmVyd3JpdGVcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0yMDQ2PW10NzUzMF9wb3J0X3ZsYW5fZGVsKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjA1My1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjA1NDpcXHQvKiBWSUQgMCBpcyBtYW5hZ2VkIGV4Y2x1c2l2ZWx5IGJ5IG10NzUzMF9zZXR1cF92bGFuMCgpLiAqL1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMDU1LVxcdGlmICh2bGFuLVxcdTAwM2V2aWQgPT0gMClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0yMjI5PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjIzMDptdDc1MzBfc2V0dXBfZ3BpbyhzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIyMzEte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTIyNTk9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjI2MDptdDc1MzBfc2V0dXBfbWRpb19pcnEoc3RydWN0IG10NzUzMF9wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMjYxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0yMzA5PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjMxMDptdDc1MzBfc2V0dXBfaXJxKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjMxMS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MjM2MD1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIzNjE6bXQ3NTMwX3NldHVwX21kaW8oc3RydWN0IG10NzUzMF9wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMzYyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMzk0LVxcdGlmIChwcml2LVxcdTAwM2VpcnFfZG9tYWluIFxcdTAwMjZcXHUwMDI2ICFtbnApXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIzOTU6XFx0XFx0bXQ3NTMwX3NldHVwX21kaW9faXJxKHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMzk2LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTI0MDk9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyNDEwOm10NzUzMF9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI0MTEte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI1NjgtXFx0LyogU2V0dXAgVkxBTiBJRCAwIGZvciBWTEFOLXVuYXdhcmUgYnJpZGdlcyAqL1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyNTY5OlxcdHJldCA9IG10NzUzMF9zZXR1cF92bGFuMChwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjU3MC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI2MTMtXFx0XFx0XFx0bXQ3NTMwX2NsZWFyKHByaXYsIE1UNzUzWF9NVFJBUCwgTVQ3NTMwX1A1X0RJUyk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjI2MTQ6XFx0XFx0XFx0bXQ3NTMwX3NldHVwX3BvcnQ1KGRzLCBpbnRlcmZhY2UpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNjE1LVxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNjE5LVxcdGlmIChvZl9wcm9wZXJ0eV9yZWFkX2Jvb2wocHJpdi1cXHUwMDNlZGV2LVxcdTAwM2VvZl9ub2RlLCBcXFwiZ3Bpby1jb250cm9sbGVyXFxcIikpIHtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjYyMDpcXHRcXHRyZXQgPSBtdDc1MzBfc2V0dXBfZ3Bpbyhwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjYyMS1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTI2MzU9bXQ3NTMxX3NldHVwX2NvbW1vbihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjcwMS1cXHQvKiBTZXR1cCBWTEFOIElEIDAgZm9yIFZMQU4tdW5hd2FyZSBicmlkZ2VzICovXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjI3MDI6XFx0cmV0dXJuIG10NzUzMF9zZXR1cF92bGFuMChwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjcwMy19XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MjkxNT1tdDc1MzBfbWFjX2NvbmZpZyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCB1bnNpZ25lZCBpbnQgbW9kZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yOTIwLVxcdGlmIChwb3J0ID09IDUpXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjI5MjE6XFx0XFx0bXQ3NTMwX3NldHVwX3BvcnQ1KHByaXYtXFx1MDAzZWRzLCBpbnRlcmZhY2UpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yOTIyLVxcdGVsc2UgaWYgKHBvcnQgPT0gNilcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjkyMzpcXHRcXHRtdDc1MzBfc2V0dXBfcG9ydDYocHJpdi1cXHUwMDNlZHMsIGludGVyZmFjZSk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI5MjQtfVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTMxODU9bXQ3NTN4X3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zMTkzLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozMTk0OlxcdHJldCA9IG10NzUzMF9zZXR1cF9pcnEocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTMxOTUtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zMTk3LVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozMTk4OlxcdHJldCA9IG10NzUzMF9zZXR1cF9tZGlvKHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zMTk5LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MzM5Nz1jb25zdCBzdHJ1Y3QgbXQ3NTN4X2luZm8gbXQ3NTN4X3RhYmxlW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzQwMC1cXHRcXHQucGNzX29wcyA9IFxcdTAwMjZtdDc1MzBfcGNzX29wcyxcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MzQwMTpcXHRcXHQuc3dfc2V0dXAgPSBtdDc1MzBfc2V0dXAsXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTM0MDItXFx0XFx0LnBoeV9yZWFkX2MyMiA9IG10NzUzMF9waHlfcmVhZF9jMjIsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzQxMS1cXHRcXHQucGNzX29wcyA9IFxcdTAwMjZtdDc1MzBfcGNzX29wcyxcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MzQxMjpcXHRcXHQuc3dfc2V0dXAgPSBtdDc1MzBfc2V0dXAsXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTM0MTMtXFx0XFx0LnBoeV9yZWFkX2MyMiA9IG10NzUzMF9waHlfcmVhZF9jMjIsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDIwOjUxOjUwLjMyMjM1MTc5NloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1MTA4ODEwMzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBtdDc1MzAgRHJpdmVyIEluaXRpYWxpemF0aW9uKipcblxuT2theSwgc28gSSBzZWUgdGhhdCBgbXQ3NTMwX3NldHVwYCBpcyBiZWluZyBsaW5rZWQgdG8gdGhlIGAuc3dfc2V0dXBgIGZ1bmN0aW9uIHBvaW50ZXIgd2l0aGluIHRoZSBgbXQ3NTN4X3RhYmxlYCBzdHJ1Y3R1cmUuIFRoYXQgdGFibGUgaXMsIGVzc2VudGlhbGx5LCB0aGUgYmx1ZXByaW50IHVzZWQgYnkgdGhlIGRyaXZlciB0byBicmluZyB0aGUgc3dpdGNoIG9ubGluZS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGNhbiBJIGV2ZW4gZ2V0IHRvIHRoaXMgY29kZSB3aXRob3V0IHNwZWNpZmljLCByZWFsIGhhcmR3YXJlPyBHaXZlbiB0aGF0IGl0J3MgYSBwbGF0Zm9ybS9NRElPIGRyaXZlciwgdGhhdCdzIHRoZSBjcnVjaWFsIHF1ZXN0aW9uLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGVyZSdzIGEgcHJhY3RpY2FsIHdheSB0byBkZWJ1ZyBpdCBpbiBhIHN0YW5kYXJkIFFFTVUgc2V0dXAuIEknbGwgbmVlZCB0byBkaWcgaW50byB0aGUgZHJpdmVyIGNvZGUgaXRzZWxmIHRvIGZ1bGx5IGdyYXNwIHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS4gTXkgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgdGhlIGNvZGUsIHByb2JhYmx5IGBkcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uY2AsIG9yIHNvbWV0aGluZyBhbG9uZyB0aG9zZSBsaW5lcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgZHJpdmVyIHJlZ2lzdGVycyBpdHNlbGYgd2l0aCB0aGUgc3lzdGVtLCB0aGF0IHdpbGwgZ2l2ZSBtZSBteSBmaXJzdCBjbHVlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTE3MywiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDIwOjUxOjU0LjgzMzIzNDc5N1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDAxNTMxNSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibW9kdWxlXy4qZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2RzYS9tdDc1MzBcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDIwOjUxOjU0Ljg4MzI1ODk3MloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1Njc2Nzk2MjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipOYXZpZ2F0aW5nIHRoZSBEU0EgRHJpdmVyIExhbmRzY2FwZSoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBkaXZlIGludG8gdGhlIERTQSAoRGlzdHJpYnV0ZWQgU3dpdGNoIEFyY2hpdGVjdHVyZSkgZHJpdmVyIGNvZGUsIGFuZCBzcGVjaWZpY2FsbHksIEknbSBpbnRlcmVzdGVkIGluIHRoZSBmaWxlcyByZWxhdGVkIHRvIHRoZSBgbXQ3NTMwYCBjaGlwc2V0LiBUaGF0IHNlZW1zIGxpa2UgYSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IOKAkyBgZHJpdmVycy9uZXQvZHNhL2AgaXMgd2hlcmUgSSB3b3VsZCBleHBlY3QgdG8gZmluZCB0aGUgbWFqb3JpdHkgb2YgdGhlIHJlbGV2YW50IGNvZGUuIEdpdmVuIG15IGV4cGVydGlzZSwgSSBhbHJlYWR5IGhhdmUgYSBtZW50YWwgbW9kZWwgb2YgaG93IHRoZXNlIERTQSBkcml2ZXJzIGFyZSBnZW5lcmFsbHkgc3RydWN0dXJlZC4gU28sIEknbGwgZ28gdGhyb3VnaCB0aGlzIGRpcmVjdG9yeSBhbmQgZmlsdGVyIG9uIGBtdDc1MzAqYC4gVGhpcyBzaG91bGQgeWllbGQgdGhlIGNyaXRpY2FsIHNvdXJjZSBmaWxlcywgY29uZmlndXJhdGlvbiBvcHRpb25zLCBhbmQgZGV2aWNlLXNwZWNpZmljIGluZm9ybWF0aW9uIEknbSBnb2luZyB0byBuZWVkLiBUaGVuIEkgY2FuIGdldCB0byB3b3JrIVxuXG5cbiIsIklucHV0VG9rZW5zIjo1NTMwLCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMjA6NTE6NTguNDUwOTQxNjVaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJjb2Rlc2VhcmNoLWRpci1pbmRleCIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgxMDcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRGlyXCI6IFwiZHJpdmVycy9uZXQvZHNhXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIkZpbGVzXCI6IFtcbiAgICBcImJjbV9zZjIuY1wiLFxuICAgIFwiYmNtX3NmMi5oXCIsXG4gICAgXCJiY21fc2YyX2NmcC5jXCIsXG4gICAgXCJiY21fc2YyX3JlZ3MuaFwiLFxuICAgIFwiZHNhX2xvb3AuY1wiLFxuICAgIFwia3M4OTk1LmNcIixcbiAgICBcImxhbjkzMDMtY29yZS5jXCIsXG4gICAgXCJsYW45MzAzLmhcIixcbiAgICBcImxhbjkzMDNfaTJjLmNcIixcbiAgICBcImxhbjkzMDNfbWRpby5jXCIsXG4gICAgXCJtdDc1MzAtbWRpby5jXCIsXG4gICAgXCJtdDc1MzAtbW1pby5jXCIsXG4gICAgXCJtdDc1MzAuY1wiLFxuICAgIFwibXQ3NTMwLmhcIixcbiAgICBcIm12ODhlNjA2MC5jXCIsXG4gICAgXCJtdjg4ZTYwNjAuaFwiLFxuICAgIFwicnpuMV9hNXBzdy5jXCIsXG4gICAgXCJyem4xX2E1cHN3LmhcIixcbiAgICBcInZpdGVzc2UtdnNjNzN4eC1jb3JlLmNcIixcbiAgICBcInZpdGVzc2UtdnNjNzN4eC1wbGF0Zm9ybS5jXCIsXG4gICAgXCJ2aXRlc3NlLXZzYzczeHgtc3BpLmNcIixcbiAgICBcInZpdGVzc2UtdnNjNzN4eC5oXCIsXG4gICAgXCJ5dDkyMXguY1wiLFxuICAgIFwieXQ5MjF4LmhcIlxuICBdLFxuICBcIlN1YmRpcnNcIjogW1xuICAgIFwiYjUzXCIsXG4gICAgXCJoaXJzY2htYW5uXCIsXG4gICAgXCJsYW50aXFcIixcbiAgICBcIm1pY3JvY2hpcFwiLFxuICAgIFwibXY4OGU2eHh4XCIsXG4gICAgXCJteGw4NjJ4eFwiLFxuICAgIFwibmV0Y1wiLFxuICAgIFwib2NlbG90XCIsXG4gICAgXCJxY2FcIixcbiAgICBcInJlYWx0ZWtcIixcbiAgICBcInNqYTExMDVcIixcbiAgICBcInhyczcwMHhcIlxuICBdXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQyMDo1MTo1OC40NTEwMjM4OFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ5MjIxNzg0OTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIGZpbGVzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNVDc1MzAgRHJpdmVyIEltcGxlbWVudGF0aW9uKipcblxuUmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJJ20gZ29pbmcgdG8gc3RhcnQgYnkgdGFraW5nIGEgY2xvc2UgbG9vayBhdCBgbXQ3NTMwLW1kaW8uY2AgYW5kIGBtdDc1MzAtbW1pby5jYC4gQmFzZWQgb24gdGhlIG5hbWluZywgSSdtIGV4cGVjdGluZyBgbWRpb2AgdG8gaGFuZGxlIHRoZSBNZWRpYSBJbmRlcGVuZGVudCBJbnRlcmZhY2UsIGxpa2VseSBmb3IgUEhZIGNvbW11bmljYXRpb24uIEl0J2xsIHByb2JhYmx5IGRlYWwgd2l0aCByZWdpc3RlcnMgcmVsYXRlZCB0byBjb25maWd1cmluZyBhbmQgYWNjZXNzaW5nIGV4dGVybmFsIFBIWXMgY29ubmVjdGVkIHRvIHRoZSBzd2l0Y2guIEknbGwgd2FudCB0byBzZWUgaG93IHRoZXkncmUgaGFuZGxpbmcgTURJTyB0cmFuc2FjdGlvbnMsIHNldHRpbmcgdXAgdGhlIGNsb2NrIGZyZXF1ZW5jeSwgYW5kIGRlYWxpbmcgd2l0aCBhbnkgcG90ZW50aWFsIHRpbWluZyBjb25zdHJhaW50cy4gVGhlbiwgSSdsbCBuZWVkIHRvIGNoZWNrIGhvdyBpdCBhY3R1YWxseSB0cmFuc2xhdGVzIHRob3NlIE1ESU8gYWNjZXNzZXMgaW50byB0aGUgcmVsZXZhbnQgaGFyZHdhcmUgaW50ZXJhY3Rpb25zLlxuXG5gbXQ3NTMwLW1taW8uY2AsIG9uIHRoZSBvdGhlciBoYW5kLCBzaG91bGQgY29udGFpbiB0aGUgY29kZSByZXNwb25zaWJsZSBmb3IgZGlyZWN0IG1lbW9yeS1tYXBwZWQgSS9PIChNTUlPKSBhY2Nlc3MgdG8gdGhlIE1UNzUzMCdzIGludGVybmFsIHJlZ2lzdGVycy4gVGhpcyBpcyB3aGVyZSB0aGUgY29yZSBzd2l0Y2ggY29uZmlndXJhdGlvbiBpcyBnb2luZyB0byBiZSBoYW5kbGVkLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHJlZ2lzdGVyIGRlZmluaXRpb25zLCBtZW1vcnkgbWFwcGluZyBkZXRhaWxzLCBhbmQgdGhlIGNvcmUgZnVuY3Rpb25zIGZvciBjb250cm9sbGluZyB0aGUgc3dpdGNoJ3MgZnVuY3Rpb25hbGl0eTogcG9ydCBjb25maWd1cmF0aW9uLCBWTEFOIG1hbmFnZW1lbnQsIGZvcndhcmRpbmcgdGFibGUgbWFuaXB1bGF0aW9uLCBhbmQgaW50ZXJydXB0IGhhbmRsaW5nLiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiB0aGUgTU1JTyBjb2RlIGFuZCB0aGUgTURJTyBjb2RlLiBBcmUgdGhlcmUgc2hhcmVkIGRhdGEgc3RydWN0dXJlcz8gSG93IGFyZSBQSFkgc2V0dGluZ3MgcmVmbGVjdGVkIGluIHRoZSBpbnRlcm5hbCBzd2l0Y2ggY29uZmlndXJhdGlvbj8gSSdsbCBwcm9iYWJseSBiZSBkaXZpbmcgZGVlcCBpbnRvIHRoZSByZWdpc3RlciBkZXNjcmlwdGlvbnMgdG8gZ2V0IGEgc29saWQgZ3Jhc3Agb2YgdGhpcyBzdHVmZi4gSSdsbCBhbHNvIGJlIGV4cGVjdGluZyB0byBzZWUgYSBnb29kIGFtb3VudCBvZiB3b3JrIG9uIGxvY2sgY29udGVudGlvbiBhbmQgc3luY2hyb25pemF0aW9uLCBnaXZlbiB0aGUgY29tcGxleGl0eSBvZiB0aGUgaGFyZHdhcmUgYW5kIHRoZSBuZWVkIHRvIHByZXZlbnQgZGF0YSBjb3JydXB0aW9uLiBJIHdhbnQgdG8gcGF5IGF0dGVudGlvbiB0byBhbnkgcG90ZW50aWFsIGlzc3VlcyBzdWNoIGFzIHJlZ2lzdGVyIGFjY2VzcyBvcmRlciwgYW55IHJhY2UgY29uZGl0aW9ucywgYW5kIGhvdyB0aGV5IGhhbmRsZWQgdGhlbS4gRXNzZW50aWFsbHksIEknbSBsb29raW5nIGZvciBhIHNvbGlkIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoZXkndmUgaW1wbGVtZW50ZWQgdGhlIGxvdy1sZXZlbCBpbnRlcmFjdGlvbiB3aXRoIHRoZSBzd2l0Y2ggc2lsaWNvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NjEyNywiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5LCJUb29sQ2FsbHMiOlsiY29kZXNlYXJjaC1kaXItaW5kZXgiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQyMDo1MjowMy4zNzMyMDQ4NjdaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0MTIyMTczNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtb2R1bGVfLipkcml2ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM9MjU4PXN0YXRpYyBzdHJ1Y3QgbWRpb19kcml2ZXIgbXQ3NTMwX21kaW9fZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjY3LVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjI2ODptZGlvX21vZHVsZV9kcml2ZXIobXQ3NTMwX21kaW9fZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yNjktXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDIwOjUyOjAzLjYxNDQzMTU3MloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDI0OTE3ODU3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBNVDc1MzAgTURJTyBEcml2ZXIncyBBY2Nlc3NpYmlsaXR5KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBNRElPIGRyaXZlciwgdGhlIGBtdDc1MzBgLiBNeSBpbml0aWFsIHRob3VnaHRzIGFyZSB0aGF0IE1ESU8gZGV2aWNlcyBhcmUgdXN1YWxseSBoYW5kbGVkIGR1cmluZyBzeXN0ZW0gc2V0dXAsIHR5cGljYWxseSBpbnN0YW50aWF0ZWQgdGhyb3VnaCB0aGUgZGV2aWNlIHRyZWUgb3IgQUNQSSwgb3Igc29tZXRpbWVzIGJ5IGRlZGljYXRlZCBuZXR3b3JrIGRyaXZlcnMgdGhhdCBoYW5kbGUgdGhlIHJlZ2lzdHJhdGlvbiBvZiB0aGUgTURJTyBidXNlcyBhbmQgZGV2aWNlcy4gTm93LCBpbiBhIHZpcnR1YWwgZW52aXJvbm1lbnQgbGlrZSBRRU1VLCB0aGUga2V5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBzcGVjaWZpYyBkZXZpY2UgaXMgZXZlbiAqcmVhY2hhYmxlKi4gVW5sZXNzIHRoZXJlJ3MgYW4gZW11bGF0ZWQgTURJTyBidXMgdGhhdCBhY3R1YWxseSBpbnN0YW50aWF0ZXMgaXQg4oCTIHNvbWV0aGluZyB0cmlnZ2VyZWQgYnkgYSBzcGVjaWZpYyBlbXVsYXRlZCBib2FyZCBjb25maWd1cmF0aW9uLCBhIHNwZWNpZmljIGRldmljZSB0cmVlIHNldHVwIOKAkyBpdCdzIGdvaW5nIHRvIGJlIGluYWNjZXNzaWJsZS5cblxuSSBoYWQgYSBmbGVldGluZyB0aG91Z2h0IGFib3V0IHN5emthbGxlciwgd29uZGVyaW5nIGlmIGl0IGNvdWxkIGluamVjdCB0aGUgTURJTyBkZXZpY2UuIFN5emthbGxlciAqY2FuKiBzb21ldGltZXMgaW5qZWN0IGRldmljZXMgaWYgdGhlcmUncyBhIG1lY2hhbmlzbSB0byByZWdpc3RlciB0aGVtIGZyb20gdXNlcnNwYWNlLCBidXQgTURJTyBkZXZpY2VzIGFyZW4ndCB1c3VhbGx5IGVhc2lseSBpbmplY3RlZC4gSXQgdHlwaWNhbGx5IHJlcXVpcmVzIGNvbnRyb2wgb3ZlciBhIHZpcnR1YWwgTURJTyBidXMuIFNvLCBjYW4gSSByZWFjaCB0aGUgYG10NzUzMF9zZXR1cGAgZnVuY3Rpb24/IFRoYXQncyB0aGUgY29yZSBvZiB0aGUgcXVlc3Rpb24uXG5cbkkgYnJpZWZseSBjaGVja2VkIHN5emthbGxlciB0byBzZWUgaWYgaXQgaGFkIGEgd2F5IHRvIGZ1enogTURJTyBkZXZpY2VzIGluIGdlbmVyYWwuIEl0IGRvZXNuJ3Qgc2VlbSB0byBoYXZlIGEgZ2VuZXJpYyBtZXRob2QgZm9yIGluc3RhbnRpYXRpbmcgKmFyYml0cmFyeSogTURJTyBkZXZpY2VzIHVubGVzcywgcGVyaGFwcywgdGhlcmUncyBhIE5ldGxpbmsgaW50ZXJmYWNlIG9yIHNvbWV0aGluZyBzaW1pbGFyLiBUaGVuIEkgcmVtZW1iZXJlZCB0aGUgYGRzYV9sb29wYCBzZXR1cCwgdGhhdCBzeXprYWxsZXIgdXNlcyBmb3IgdGVzdGluZyBEU0EsIGJ1dCBgbXQ3NTMwYCBpcyBzdGlsbCBzcGVjaWZpYyBoYXJkd2FyZS5cblxuU28sIGlzIHRoaXMgZHJpdmVyIGV2ZW4gKnJlYWNoYWJsZSogaW4gYSBRRU1VIGVudmlyb25tZW50PyBJIG5lZWQgdG8gY2hlY2sgZm9yIFFFTVUgYm9hcmRzIHRoYXQgYWN0dWFsbHkgdXNlIHRoZSBgbXQ3NTMwYCBzd2l0Y2guIFRoZSBNVDc1MzAgaXMgYSBNZWRpYVRlayBzd2l0Y2gsIHR5cGljYWxseSB1c2VkIHdpdGggTWVkaWFUZWsgU29DcyBsaWtlIHRoZSBNVDc2MjEsIE1UNzYyMiwgTVQ3NjIzLCBNVDc2MjkuIEhvd2V2ZXIsIFFFTVUgZG9lc24ndCBlbXVsYXRlIHRob3NlIFNvQ3MgYnkgZGVmYXVsdCBpbiBhIHdheSB0aGF0IGFsaWducyB3aXRoIHN5emthbGxlcidzIHR5cGljYWwgdGFyZ2V0cywgbGlrZSB4ODZfNjQsIGFybTY0IHZpcnQsIGFuZCBzbyBvbi5cblxuVGhlIGxpa2VseSBvdXRjb21lLCBldmVuIGlmIHRoZSBkcml2ZXIgKmlzKiBjb21waWxlZCBpbnRvIHRoZSBrZXJuZWwsIGlzIHRoYXQgdGhlIE1ESU8gZHJpdmVyJ3MgYHByb2JlYCBmdW5jdGlvbiB3b24ndCBiZSBjYWxsZWQgYmVjYXVzZSB0aGVyZSdzIG5vIGFjdHVhbCBoYXJkd2FyZSBwcmVzZW50IG9yIG5vIG1hdGNoaW5nIGRldmljZSB0cmVlIG5vZGUuIFRoZXJlZm9yZSwgSSBzaG91bGQgY29uZmlybSB3aGF0IHRoZSBgcHJvYmVgIGZ1bmN0aW9uIGRvZXMgaW4gYG10NzUzMC1tZGlvLmNgIGp1c3QgdG8gYmUgc3VyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Njc1MSwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQyMDo1MjoxMy44NjM2MTIyMTRaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg2NDAzMjcxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzUzMF9wcm9iZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYz0xNTQ9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjE1NTptdDc1MzBfcHJvYmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTE1Ni17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xNzAtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MTcxOlxcdHJldCA9IG10NzUzMF9wcm9iZV9jb21tb24ocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTcyLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYz0yNTg9c3RhdGljIHN0cnVjdCBtZGlvX2RyaXZlciBtdDc1MzBfbWRpb19kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MjU5OlxcdC5wcm9iZSAgPSBtdDc1MzBfcHJvYmUsXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjYwLVxcdC5yZW1vdmUgPSBtdDc1MzBfcmVtb3ZlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQyMDo1MjoxMy45NTAwMjA1NzVaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzgxODkxMTg1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSB0aGUgb25lIHRoaW5raW5nIGl0OlxuXG4qKkRpZ2dpbmcgaW50byB0aGUgTURJTyBEZXZpY2UgTWF0Y2hpbmcqKlxuXG5Pa2F5LCBzbyBgbXQ3NTMwX3Byb2JlYCBpcyB0cmlnZ2VyZWQuIFRoYXQncyBnb29kLCB0aGF0IG1lYW5zIHdlJ3ZlIGdvdCBhIG1hdGNoLiBCdXQuLi4gKmhvdyogZGlkIHRoZSBNRElPIGRldmljZSBhY3R1YWxseSBtYXRjaCBpbiB0aGUgZmlyc3QgcGxhY2U/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjcml0ZXJpYS4gSXMgaXQgYSBzcGVjaWZpYyBkZXZpY2UgSUQ/IEEgcGFydGljdWxhciByZWdpc3RlciB2YWx1ZT8gRG9lcyBpdCBpbnZvbHZlIERUIGJpbmRpbmdzPyBJIG5lZWQgdG8gdHJhY2UgYmFjayBmcm9tIHRoZSBgbXQ3NTMwX3Byb2JlYCBjYWxsIHRvIHVuZGVyc3RhbmQgdGhlIG1hdGNoaW5nIHByb2Nlc3MuIEkgbmVlZCB0byBiZSBzdXJlIHRoZSBwcm9iZSBpcyBydW5uaW5nIG9uICp0aGlzKiBzcGVjaWZpYyBkZXZpY2UsIGFuZCBub3Qgc29tZXRoaW5nIHNpbWlsYXIuIEdvdHRhIGRpdmUgaW50byB0aGUgZGV2aWNlIHRyZWUgYW5kIGRyaXZlciBjb3JlIGludGVyYWN0aW9ucyB0byBzZWUgd2hhdCBsZWQgdXMgaGVyZS4gVGhpcyBtYXRjaGluZyBtZWNoYW5pc20gaXMga2V5IHRvIHRoZSBlbnRpcmUgZHJpdmVyJ3MgZnVuY3Rpb25hbGl0eS4gSSBuZWVkIHRvIG5haWwgZG93biB0aGUgZXhhY3QgcGF0aCB0byBlbnN1cmUgcmVsaWFibGUgb3BlcmF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MDYxLCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMjA6NTI6MTcuNzY4OTM1MTQ4WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTEzODAzNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc1MzBfb2ZfbWF0Y2hcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM9OTE9bXQ3NTMxX2NyZWF0ZV9zZ21paShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xMzctXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MTM4OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG10NzUzMF9vZl9tYXRjaFtdID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTEzOS1cXHR7IC5jb21wYXRpYmxlID0gXFxcIm1lZGlhdGVrLG10NzYyMVxcXCIsIC5kYXRhID0gXFx1MDAyNm10NzUzeF90YWJsZVtJRF9NVDc2MjFdLCB9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTQzLX07XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MTQ0Ok1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG10NzUzMF9vZl9tYXRjaCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTQ1LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM9MjU4PXN0YXRpYyBzdHJ1Y3QgbWRpb19kcml2ZXIgbXQ3NTMwX21kaW9fZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjYzLVxcdFxcdC5uYW1lID0gXFxcIm10NzUzMC1tZGlvXFxcIixcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyNjQ6XFx0XFx0Lm9mX21hdGNoX3RhYmxlID0gbXQ3NTMwX29mX21hdGNoLFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTI2NS1cXHR9LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQyMDo1MjoxNy44MjAwNzczODJaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTE3NTE5MjUxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBgbXQ3NTMwYCBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGxvb2tlZCBhdCB0aGlzIGRyaXZlciwgYW5kIGJhc2VkIG9uIGl0cyBtYXRjaGluZyBjcml0ZXJpYSB1c2luZyB0aGUgZGV2aWNlIHRyZWUgKGBvZl9tYXRjaF90YWJsZWApLCBpdCdzIGNsZWFyIHRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIsIHNwZWNpZmljYWxseSBmb3IgYSBNZWRpYVRlayBzd2l0Y2guIEluIGEgdHlwaWNhbCB4ODZfNjQgb3IgYXJtNjQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQg4oCTIHRoZSBraW5kIEknbSB1c2VkIHRvIHNlZWluZyB3aXRob3V0IGEgY3VzdG9tIGRldmljZSB0cmVlIGluamVjdGluZyB0aGUgbm9kZSDigJMgdGhpcyB0aGluZyBzaW1wbHkgKndvbid0KiBwcm9iZS4gVGhlIGBtdDc1MzBfc2V0dXBgIGZ1bmN0aW9uLCB3aGljaCBpcyBsaWtlbHkgd2hlcmUgYW55IGludGVyZXN0aW5nIGZ1bmN0aW9uYWxpdHkgcmVzaWRlcywgd2lsbCBuZXZlciBiZSBleGVjdXRlZCB1bmRlciB0aG9zZSBjaXJjdW1zdGFuY2VzLiBDb25zaWRlcmluZyBhbGwgdGhpcywgdGhlcmUncyBubyB3YXkgaXQncyBnb2luZyB0byBiZSBleHBvc2VkIGZvciBhbnkga2luZCBvZiBpbnRlcmVzdGluZyBmdXp6aW5nLiBTbywgSSdtIG1hcmtpbmcgaXQgYXMgV29ydGhGdXp6aW5nPWZhbHNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NzQ1LCJPdXRwdXRUb2tlbnMiOjEwOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDIwOjUyOjIyLjk5NTI3MzU3M1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBtdDc1MzAgRFNBIHN3aXRjaCBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyIGZvciBNZWRpYVRlayBzd2l0Y2hlcyAoTVQ3NTMwL01UNzUzMS9NVDc2MjEpLiBUaGlzIGRyaXZlciByZXF1aXJlcyBzcGVjaWZpYyBoYXJkd2FyZSBvciBhIGNvcnJlc3BvbmRpbmcgZGV2aWNlIHRyZWUgbm9kZSB0byBwcm9iZSBhbmQgaXMgbm90IHJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSB1c2VkIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG10NzUzMCBEU0Egc3dpdGNoIGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgZm9yIE1lZGlhVGVrIHN3aXRjaGVzIChNVDc1MzAvTVQ3NTMxL01UNzYyMSkuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHNwZWNpZmljIGhhcmR3YXJlIG9yIGEgY29ycmVzcG9uZGluZyBkZXZpY2UgdHJlZSBub2RlIHRvIHByb2JlIGFuZCBpcyBub3QgcmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFIHVzZWQgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQyMDo1MjoyMi45OTUyOTkxODNaIiwiU2VxIjoxNywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow2srvr[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-18 20:49:48 +0000 UTC FinishedAt: 2026-08-18 20:52:23 +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+CgkJCTx0ZD4yMDI2LzA4LzE4IDIwOjUxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG10NzUzMCBEU0Egc3dpdGNoIGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgZm9yIE1lZGlhVGVrIHN3aXRjaGVzIChNVDc1MzAvTVQ3NTMxL01UNzYyMSkuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHNwZWNpZmljIGhhcmR3YXJlIG9yIGEgY29ycmVzcG9uZGluZyBkZXZpY2UgdHJlZSBub2RlIHRvIHByb2JlIGFuZCBpcyBub3QgcmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFIHVzZWQgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDIwOjUxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNTNkODVjMDdmYzUxMzlkNTcxYzU3MmE3MTU5MGM2ZjBhY2JkNWYzY1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDE4IDIwOjUxOjQzIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYyBiL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuY1xuaW5kZXggYWEzM2Q5NGUxMWI1Zi4uMmM3NmNkZmI1ODU4NCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZHNhL210NzUzMC5jXG5AQCAtMjUxOCw2ICYjNDM7MjUxOCwxNSBAQCBtdDc1MzBfc2V0dXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuIFx0aWYgKCh2YWwgXHUwMDI2IE1UNzUzMF9YVEFMX01BU0spID09IE1UNzUzMF9YVEFMXzQwTUhaKVxuIFx0XHRtdDc1MzBfcGxsX3NldHVwKHByaXYpO1xuIFxuJiM0MztcdGlmIChwcml2LVx1MDAzZWlkID09IElEX01UNzYyMSkge1xuJiM0MztcdFx0LyogRGlzYWJsZSBFRUUgYWR2ZXJ0aXNlbWVudCBvbiB0aGUgc3dpdGNoIFBIWXMuICovXG4mIzQzO1x0XHRmb3IgKGkgPSBNVDc1M1hfQ1RSTF9QSFlfQUREUihwcml2LVx1MDAzZW1kaW9kZXYtXHUwMDNlYWRkcik7XG4mIzQzO1x0XHQgICAgIGkgXHUwMDNjIE1UNzUzWF9DVFJMX1BIWV9BRERSKHByaXYtXHUwMDNlbWRpb2Rldi1cdTAwM2VhZGRyKSAmIzQzOyBNVDc1MzBfTlVNX1BIWVM7XG4mIzQzO1x0XHQgICAgIGkmIzQzOyYjNDM7KSB7XG4mIzQzO1x0XHRcdG10NzUzMF9waHlfd3JpdGVfYzQ1KHByaXYsIGksIE1ESU9fTU1EX0FOLCBNRElPX0FOX0VFRV9BRFYsIDApO1xuJiM0MztcdFx0fVxuJiM0MztcdH1cbiYjNDM7XG4gXHRtdDc1M3hfdHJhcF9mcmFtZXMocHJpdik7XG4gXG4gXHQvKiBFbmFibGUgYW5kIHJlc2V0IE1JQiBjb3VudGVycyAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDIwOjUxPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbXQ3NTMwIERTQSBzd2l0Y2ggZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciBmb3IgTWVkaWFUZWsgc3dpdGNoZXMgKE1UNzUzMC9NVDc1MzEvTVQ3NjIxKS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgaGFyZHdhcmUgb3IgYSBjb3JyZXNwb25kaW5nIGRldmljZSB0cmVlIG5vZGUgdG8gcHJvYmUgYW5kIGlzIG5vdCByZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UgdXNlZCBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1M2Q4NWMwN2ZjNTEzOWQ1NzFjNTcyYTcxNTkwYzZmMGFjYmQ1ZjNjCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBBdWcgMTggMjA6NTE6NDMgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMgYi9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMKaW5kZXggYWEzM2Q5NGUxMWI1Zi4uMmM3NmNkZmI1ODU4NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZHNhL210NzUzMC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYwpAQCAtMjUxOCw2ICYjNDM7MjUxOCwxNSBAQCBtdDc1MzBfc2V0dXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKQogCWlmICgodmFsICZhbXA7IE1UNzUzMF9YVEFMX01BU0spID09IE1UNzUzMF9YVEFMXzQwTUhaKQogCQltdDc1MzBfcGxsX3NldHVwKHByaXYpOwogCiYjNDM7CWlmIChwcml2LSZndDtpZCA9PSBJRF9NVDc2MjEpIHsKJiM0MzsJCS8qIERpc2FibGUgRUVFIGFkdmVydGlzZW1lbnQgb24gdGhlIHN3aXRjaCBQSFlzLiAqLwomIzQzOwkJZm9yIChpID0gTVQ3NTNYX0NUUkxfUEhZX0FERFIocHJpdi0mZ3Q7bWRpb2Rldi0mZ3Q7YWRkcik7CiYjNDM7CQkgICAgIGkgJmx0OyBNVDc1M1hfQ1RSTF9QSFlfQUREUihwcml2LSZndDttZGlvZGV2LSZndDthZGRyKSAmIzQzOyBNVDc1MzBfTlVNX1BIWVM7CiYjNDM7CQkgICAgIGkmIzQzOyYjNDM7KSB7CiYjNDM7CQkJbXQ3NTMwX3BoeV93cml0ZV9jNDUocHJpdiwgaSwgTURJT19NTURfQU4sIE1ESU9fQU5fRUVFX0FEViwgMCk7CiYjNDM7CQl9CiYjNDM7CX0KJiM0MzsKIAltdDc1M3hfdHJhcF9mcmFtZXMocHJpdik7CiAKIAkvKiBFbmFibGUgYW5kIHJlc2V0IE1JQiBjb3VudGVycyAqLwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAyMDo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTU0CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMTkyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRUVFIEFkdmVydGlzZW1lbnQgRGlzYWJsZSBQYXRjaCBpbiBgbXQ3NTMwLmNgKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgZHJpdmVycy9uZXQvZHNhL210NzUzMC5jYC4gSXQmIzM5O3MgZGlzYWJsaW5nIEVFRSBhZHZlcnRpc2VtZW50IG9uIHRoZSBzd2l0Y2ggUEhZcyBmb3IgYElEX01UNzYyMWAgd2l0aGluIHRoZSBgbXQ3NTMwX3NldHVwYCBmdW5jdGlvbi4gTXkgaW5pdGlhbCBxdWVzdGlvbiBpczogKmhvdyogcmVhY2hhYmxlIGlzIHRoaXMgY29kZSBpbiBhIHZpcnR1YWxpemVkIHNldHRpbmc/CgpJIGtub3cgYG10NzUzMC5jYCBpcyB0aGUgZHJpdmVyIGZvciB0aG9zZSBNZWRpYVRlayBNVDc1MzAvTVQ3NTMxL01UNzYyMSBEU0Egc3dpdGNoZXMuIERTQSBzd2l0Y2hlcywgZnJvbSBteSBleHBlcmllbmNlLCB1c3VhbGx5IGludGVyZmFjZSB0aHJvdWdoIE1ESU8sIFNQSSwgb3IgbWVtb3J5IG1hcHBpbmcuIEdpdmVuIHRoZSBhcmNoaXRlY3R1cmUgb2YgdGhlIGRyaXZlciwgSSYjMzk7bSBsZWFuaW5nIHRvd2FyZHMgaXQgYmVpbmcgYW4gTURJTyBjb25uZWN0aW9uLiBUaGlzIG1ha2VzIHZpcnR1YWxpemF0aW9uIG1vcmUgY2hhbGxlbmdpbmcsIGFzIHRoZXNlIHR5cGVzIG9mIHN3aXRjaGVzIHJlcXVpcmUgZWl0aGVyIHNwZWNpZmljIGhhcmR3YXJlIG9yIGF0IHRoZSB2ZXJ5IGxlYXN0LCBhIHZlcnkgcHJlY2lzZSBkZXZpY2UgdHJlZSBjb25maWd1cmF0aW9uLgoKU28gdGhlIG1haW4gcXVlc3Rpb24gaXMsIGNhbiBJIHRyaWdnZXIgdGhpcyBjb2RlIHBhdGgsIHNwZWNpZmljYWxseSBgbXQ3NTMwX3NldHVwYCwgd2l0aGluIHNvbWV0aGluZyBsaWtlIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lPyBJJiMzOTtsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgZXhhY3RseSAqaG93KiBgbXQ3NTMwX3NldHVwYCBpcyBjYWxsZWQgdG8gZXZlbiBzdGFydCBkb3duIHRoYXQgcGF0aC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGVudHJ5IHBvaW50IGFuZCBpZiB0aGVyZSYjMzk7cyBhIGZlYXNpYmxlIHdheSB0byBlbXVsYXRlIHRoZSBuZWNlc3NhcnkgaGFyZHdhcmUgc2V0dXAsIGluY2x1ZGluZyB0aGUgTURJTyBhY2Nlc3MsIHdpdGhpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBUaW1lIHRvIGRpZyBpbnRvIHRoZSBjYWxsIGdyYXBoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDIwOjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzUzMF9zZXR1cCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MzczPXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6Mzc0Om10NzUzMF9zZXR1cF9wb3J0NihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzc1LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MTA0Nj1zdGF0aWMgY29uc3QgY2hhciAqbXQ3NTMwX3A1X21vZGVfc3RyKHVuc2lnbmVkIGludCBtb2RlKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xMDU3LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjEwNTg6c3RhdGljIHZvaWQgbXQ3NTMwX3NldHVwX3BvcnQ1KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xMDU5LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MTY0Mz1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MTY0NDptdDc1MzBfc2V0dXBfdmxhbjAoc3RydWN0IG10NzUzMF9wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTE2NDUte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0xNjYwPW10NzUzMF9wb3J0X3NldF92bGFuX3VuYXdhcmUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTY5Ny1cdFx0bXV0ZXhfbG9jayhcdTAwMjZwcml2LVx1MDAzZXJlZ19tdXRleCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MTY5ODpcdFx0bXQ3NTMwX3NldHVwX3ZsYW4wKHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTE2OTktXHRcdG11dGV4X3VubG9jayhcdTAwMjZwcml2LVx1MDAzZXJlZ19tdXRleCk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTE5OTI9bXQ3NTMwX3BvcnRfdmxhbl9hZGQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjAwMi1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMDAzOlx0LyogVklEIDAgaXMgbWFuYWdlZCBleGNsdXNpdmVseSBieSBtdDc1MzBfc2V0dXBfdmxhbjAoKSBmb3JcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMDA0LVx0ICogVkxBTi11bmF3YXJlIGJyaWRnZSBvcGVyYXRpb24uIERvbiYjMzk7dCBsZXQgdGhlIGJyaWRnZSBvdmVyd3JpdGVcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MjA0Nj1tdDc1MzBfcG9ydF92bGFuX2RlbChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMDUzLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIwNTQ6XHQvKiBWSUQgMCBpcyBtYW5hZ2VkIGV4Y2x1c2l2ZWx5IGJ5IG10NzUzMF9zZXR1cF92bGFuMCgpLiAqL1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIwNTUtXHRpZiAodmxhbi1cdTAwM2V2aWQgPT0gMClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MjIyOT1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjIzMDptdDc1MzBfc2V0dXBfZ3BpbyhzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjIzMS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTIyNTk9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMjYwOm10NzUzMF9zZXR1cF9tZGlvX2lycShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjI2MS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTIzMDk9c3RhdGljIGludFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIzMTA6bXQ3NTMwX3NldHVwX2lycShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjMxMS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTIzNjA9c3RhdGljIGludFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIzNjE6bXQ3NTMwX3NldHVwX21kaW8oc3RydWN0IG10NzUzMF9wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIzNjIte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMzk0LVx0aWYgKHByaXYtXHUwMDNlaXJxX2RvbWFpbiBcdTAwMjZcdTAwMjYgIW1ucClcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMzk1Olx0XHRtdDc1MzBfc2V0dXBfbWRpb19pcnEocHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjM5Ni1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MjQwOT1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjQxMDptdDc1MzBfc2V0dXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI0MTEte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNTY4LVx0LyogU2V0dXAgVkxBTiBJRCAwIGZvciBWTEFOLXVuYXdhcmUgYnJpZGdlcyAqL1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjI1Njk6XHRyZXQgPSBtdDc1MzBfc2V0dXBfdmxhbjAocHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjU3MC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI2MTMtXHRcdFx0bXQ3NTMwX2NsZWFyKHByaXYsIE1UNzUzWF9NVFJBUCwgTVQ3NTMwX1A1X0RJUyk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjYxNDpcdFx0XHRtdDc1MzBfc2V0dXBfcG9ydDUoZHMsIGludGVyZmFjZSk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjYxNS1cdFx0fVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNjE5LVx0aWYgKG9mX3Byb3BlcnR5X3JlYWRfYm9vbChwcml2LVx1MDAzZWRldi1cdTAwM2VvZl9ub2RlLCBcJiMzNDtncGlvLWNvbnRyb2xsZXJcJiMzNDspKSB7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjYyMDpcdFx0cmV0ID0gbXQ3NTMwX3NldHVwX2dwaW8ocHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjYyMS1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MjYzNT1tdDc1MzFfc2V0dXBfY29tbW9uKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjcwMS1cdC8qIFNldHVwIFZMQU4gSUQgMCBmb3IgVkxBTi11bmF3YXJlIGJyaWRnZXMgKi9cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyNzAyOlx0cmV0dXJuIG10NzUzMF9zZXR1cF92bGFuMChwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNzAzLX1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MjkxNT1tdDc1MzBfbWFjX2NvbmZpZyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCB1bnNpZ25lZCBpbnQgbW9kZSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjkyMC1cdGlmIChwb3J0ID09IDUpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjkyMTpcdFx0bXQ3NTMwX3NldHVwX3BvcnQ1KHByaXYtXHUwMDNlZHMsIGludGVyZmFjZSk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjkyMi1cdGVsc2UgaWYgKHBvcnQgPT0gNilcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyOTIzOlx0XHRtdDc1MzBfc2V0dXBfcG9ydDYocHJpdi1cdTAwM2VkcywgaW50ZXJmYWNlKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yOTI0LX1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MzE4NT1tdDc1M3hfc2V0dXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zMTkzLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjMxOTQ6XHRyZXQgPSBtdDc1MzBfc2V0dXBfaXJxKHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTMxOTUtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zMTk3LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjMxOTg6XHRyZXQgPSBtdDc1MzBfc2V0dXBfbWRpbyhwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zMTk5LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MzM5Nz1jb25zdCBzdHJ1Y3QgbXQ3NTN4X2luZm8gbXQ3NTN4X3RhYmxlW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTM0MDAtXHRcdC5wY3Nfb3BzID0gXHUwMDI2bXQ3NTMwX3Bjc19vcHMsXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MzQwMTpcdFx0LnN3X3NldHVwID0gbXQ3NTMwX3NldHVwLFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTM0MDItXHRcdC5waHlfcmVhZF9jMjIgPSBtdDc1MzBfcGh5X3JlYWRfYzIyLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zNDExLVx0XHQucGNzX29wcyA9IFx1MDAyNm10NzUzMF9wY3Nfb3BzLFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjM0MTI6XHRcdC5zd19zZXR1cCA9IG10NzUzMF9zZXR1cCxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zNDEzLVx0XHQucGh5X3JlYWRfYzIyID0gbXQ3NTMwX3BoeV9yZWFkX2MyMixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAyMDo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTczCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogOTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBtdDc1MzAgRHJpdmVyIEluaXRpYWxpemF0aW9uKioKCk9rYXksIHNvIEkgc2VlIHRoYXQgYG10NzUzMF9zZXR1cGAgaXMgYmVpbmcgbGlua2VkIHRvIHRoZSBgLnN3X3NldHVwYCBmdW5jdGlvbiBwb2ludGVyIHdpdGhpbiB0aGUgYG10NzUzeF90YWJsZWAgc3RydWN0dXJlLiBUaGF0IHRhYmxlIGlzLCBlc3NlbnRpYWxseSwgdGhlIGJsdWVwcmludCB1c2VkIGJ5IHRoZSBkcml2ZXIgdG8gYnJpbmcgdGhlIHN3aXRjaCBvbmxpbmUuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBjYW4gSSBldmVuIGdldCB0byB0aGlzIGNvZGUgd2l0aG91dCBzcGVjaWZpYywgcmVhbCBoYXJkd2FyZT8gR2l2ZW4gdGhhdCBpdCYjMzk7cyBhIHBsYXRmb3JtL01ESU8gZHJpdmVyLCB0aGF0JiMzOTtzIHRoZSBjcnVjaWFsIHF1ZXN0aW9uLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGVyZSYjMzk7cyBhIHByYWN0aWNhbCB3YXkgdG8gZGVidWcgaXQgaW4gYSBzdGFuZGFyZCBRRU1VIHNldHVwLiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBkcml2ZXIgY29kZSBpdHNlbGYgdG8gZnVsbHkgZ3Jhc3AgdGhlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlLiBNeSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgY29kZSwgcHJvYmFibHkgYGRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jYCwgb3Igc29tZXRoaW5nIGFsb25nIHRob3NlIGxpbmVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBkcml2ZXIgcmVnaXN0ZXJzIGl0c2VsZiB3aXRoIHRoZSBzeXN0ZW0sIHRoYXQgd2lsbCBnaXZlIG1lIG15IGZpcnN0IGNsdWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDIwOjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlXy4qZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL210NzUzMCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMjA6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTUzMAoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipOYXZpZ2F0aW5nIHRoZSBEU0EgRHJpdmVyIExhbmRzY2FwZSoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZGl2ZSBpbnRvIHRoZSBEU0EgKERpc3RyaWJ1dGVkIFN3aXRjaCBBcmNoaXRlY3R1cmUpIGRyaXZlciBjb2RlLCBhbmQgc3BlY2lmaWNhbGx5LCBJJiMzOTttIGludGVyZXN0ZWQgaW4gdGhlIGZpbGVzIHJlbGF0ZWQgdG8gdGhlIGBtdDc1MzBgIGNoaXBzZXQuIFRoYXQgc2VlbXMgbGlrZSBhIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQg4oCTIGBkcml2ZXJzL25ldC9kc2EvYCBpcyB3aGVyZSBJIHdvdWxkIGV4cGVjdCB0byBmaW5kIHRoZSBtYWpvcml0eSBvZiB0aGUgcmVsZXZhbnQgY29kZS4gR2l2ZW4gbXkgZXhwZXJ0aXNlLCBJIGFscmVhZHkgaGF2ZSBhIG1lbnRhbCBtb2RlbCBvZiBob3cgdGhlc2UgRFNBIGRyaXZlcnMgYXJlIGdlbmVyYWxseSBzdHJ1Y3R1cmVkLiBTbywgSSYjMzk7bGwgZ28gdGhyb3VnaCB0aGlzIGRpcmVjdG9yeSBhbmQgZmlsdGVyIG9uIGBtdDc1MzAqYC4gVGhpcyBzaG91bGQgeWllbGQgdGhlIGNyaXRpY2FsIHNvdXJjZSBmaWxlcywgY29uZmlndXJhdGlvbiBvcHRpb25zLCBhbmQgZGV2aWNlLXNwZWNpZmljIGluZm9ybWF0aW9uIEkmIzM5O20gZ29pbmcgdG8gbmVlZC4gVGhlbiBJIGNhbiBnZXQgdG8gd29yayEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAyMDo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmNvZGVzZWFyY2gtZGlyLWluZGV4PC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtEaXImIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZXMmIzM0OzogWwogICAgJiMzNDtiY21fc2YyLmMmIzM0OywKICAgICYjMzQ7YmNtX3NmMi5oJiMzNDssCiAgICAmIzM0O2JjbV9zZjJfY2ZwLmMmIzM0OywKICAgICYjMzQ7YmNtX3NmMl9yZWdzLmgmIzM0OywKICAgICYjMzQ7ZHNhX2xvb3AuYyYjMzQ7LAogICAgJiMzNDtrczg5OTUuYyYjMzQ7LAogICAgJiMzNDtsYW45MzAzLWNvcmUuYyYjMzQ7LAogICAgJiMzNDtsYW45MzAzLmgmIzM0OywKICAgICYjMzQ7bGFuOTMwM19pMmMuYyYjMzQ7LAogICAgJiMzNDtsYW45MzAzX21kaW8uYyYjMzQ7LAogICAgJiMzNDttdDc1MzAtbWRpby5jJiMzNDssCiAgICAmIzM0O210NzUzMC1tbWlvLmMmIzM0OywKICAgICYjMzQ7bXQ3NTMwLmMmIzM0OywKICAgICYjMzQ7bXQ3NTMwLmgmIzM0OywKICAgICYjMzQ7bXY4OGU2MDYwLmMmIzM0OywKICAgICYjMzQ7bXY4OGU2MDYwLmgmIzM0OywKICAgICYjMzQ7cnpuMV9hNXBzdy5jJiMzNDssCiAgICAmIzM0O3J6bjFfYTVwc3cuaCYjMzQ7LAogICAgJiMzNDt2aXRlc3NlLXZzYzczeHgtY29yZS5jJiMzNDssCiAgICAmIzM0O3ZpdGVzc2UtdnNjNzN4eC1wbGF0Zm9ybS5jJiMzNDssCiAgICAmIzM0O3ZpdGVzc2UtdnNjNzN4eC1zcGkuYyYjMzQ7LAogICAgJiMzNDt2aXRlc3NlLXZzYzczeHguaCYjMzQ7LAogICAgJiMzNDt5dDkyMXguYyYjMzQ7LAogICAgJiMzNDt5dDkyMXguaCYjMzQ7CiAgXSwKICAmIzM0O1N1YmRpcnMmIzM0OzogWwogICAgJiMzNDtiNTMmIzM0OywKICAgICYjMzQ7aGlyc2NobWFubiYjMzQ7LAogICAgJiMzNDtsYW50aXEmIzM0OywKICAgICYjMzQ7bWljcm9jaGlwJiMzNDssCiAgICAmIzM0O212ODhlNnh4eCYjMzQ7LAogICAgJiMzNDtteGw4NjJ4eCYjMzQ7LAogICAgJiMzNDtuZXRjJiMzNDssCiAgICAmIzM0O29jZWxvdCYjMzQ7LAogICAgJiMzNDtxY2EmIzM0OywKICAgICYjMzQ7cmVhbHRlayYjMzQ7LAogICAgJiMzNDtzamExMTA1JiMzNDssCiAgICAmIzM0O3hyczcwMHgmIzM0OwogIF0KfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDIwOjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYxMjcKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIGZpbGVzOgoKKipEaXZpbmcgaW50byB0aGUgTVQ3NTMwIERyaXZlciBJbXBsZW1lbnRhdGlvbioqCgpSaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IGJ5IHRha2luZyBhIGNsb3NlIGxvb2sgYXQgYG10NzUzMC1tZGlvLmNgIGFuZCBgbXQ3NTMwLW1taW8uY2AuIEJhc2VkIG9uIHRoZSBuYW1pbmcsIEkmIzM5O20gZXhwZWN0aW5nIGBtZGlvYCB0byBoYW5kbGUgdGhlIE1lZGlhIEluZGVwZW5kZW50IEludGVyZmFjZSwgbGlrZWx5IGZvciBQSFkgY29tbXVuaWNhdGlvbi4gSXQmIzM5O2xsIHByb2JhYmx5IGRlYWwgd2l0aCByZWdpc3RlcnMgcmVsYXRlZCB0byBjb25maWd1cmluZyBhbmQgYWNjZXNzaW5nIGV4dGVybmFsIFBIWXMgY29ubmVjdGVkIHRvIHRoZSBzd2l0Y2guIEkmIzM5O2xsIHdhbnQgdG8gc2VlIGhvdyB0aGV5JiMzOTtyZSBoYW5kbGluZyBNRElPIHRyYW5zYWN0aW9ucywgc2V0dGluZyB1cCB0aGUgY2xvY2sgZnJlcXVlbmN5LCBhbmQgZGVhbGluZyB3aXRoIGFueSBwb3RlbnRpYWwgdGltaW5nIGNvbnN0cmFpbnRzLiBUaGVuLCBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIGhvdyBpdCBhY3R1YWxseSB0cmFuc2xhdGVzIHRob3NlIE1ESU8gYWNjZXNzZXMgaW50byB0aGUgcmVsZXZhbnQgaGFyZHdhcmUgaW50ZXJhY3Rpb25zLgoKYG10NzUzMC1tbWlvLmNgLCBvbiB0aGUgb3RoZXIgaGFuZCwgc2hvdWxkIGNvbnRhaW4gdGhlIGNvZGUgcmVzcG9uc2libGUgZm9yIGRpcmVjdCBtZW1vcnktbWFwcGVkIEkvTyAoTU1JTykgYWNjZXNzIHRvIHRoZSBNVDc1MzAmIzM5O3MgaW50ZXJuYWwgcmVnaXN0ZXJzLiBUaGlzIGlzIHdoZXJlIHRoZSBjb3JlIHN3aXRjaCBjb25maWd1cmF0aW9uIGlzIGdvaW5nIHRvIGJlIGhhbmRsZWQuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHJlZ2lzdGVyIGRlZmluaXRpb25zLCBtZW1vcnkgbWFwcGluZyBkZXRhaWxzLCBhbmQgdGhlIGNvcmUgZnVuY3Rpb25zIGZvciBjb250cm9sbGluZyB0aGUgc3dpdGNoJiMzOTtzIGZ1bmN0aW9uYWxpdHk6IHBvcnQgY29uZmlndXJhdGlvbiwgVkxBTiBtYW5hZ2VtZW50LCBmb3J3YXJkaW5nIHRhYmxlIG1hbmlwdWxhdGlvbiwgYW5kIGludGVycnVwdCBoYW5kbGluZy4gSSYjMzk7bGwgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIHRoZSBNTUlPIGNvZGUgYW5kIHRoZSBNRElPIGNvZGUuIEFyZSB0aGVyZSBzaGFyZWQgZGF0YSBzdHJ1Y3R1cmVzPyBIb3cgYXJlIFBIWSBzZXR0aW5ncyByZWZsZWN0ZWQgaW4gdGhlIGludGVybmFsIHN3aXRjaCBjb25maWd1cmF0aW9uPyBJJiMzOTtsbCBwcm9iYWJseSBiZSBkaXZpbmcgZGVlcCBpbnRvIHRoZSByZWdpc3RlciBkZXNjcmlwdGlvbnMgdG8gZ2V0IGEgc29saWQgZ3Jhc3Agb2YgdGhpcyBzdHVmZi4gSSYjMzk7bGwgYWxzbyBiZSBleHBlY3RpbmcgdG8gc2VlIGEgZ29vZCBhbW91bnQgb2Ygd29yayBvbiBsb2NrIGNvbnRlbnRpb24gYW5kIHN5bmNocm9uaXphdGlvbiwgZ2l2ZW4gdGhlIGNvbXBsZXhpdHkgb2YgdGhlIGhhcmR3YXJlIGFuZCB0aGUgbmVlZCB0byBwcmV2ZW50IGRhdGEgY29ycnVwdGlvbi4gSSB3YW50IHRvIHBheSBhdHRlbnRpb24gdG8gYW55IHBvdGVudGlhbCBpc3N1ZXMgc3VjaCBhcyByZWdpc3RlciBhY2Nlc3Mgb3JkZXIsIGFueSByYWNlIGNvbmRpdGlvbnMsIGFuZCBob3cgdGhleSBoYW5kbGVkIHRoZW0uIEVzc2VudGlhbGx5LCBJJiMzOTttIGxvb2tpbmcgZm9yIGEgc29saWQgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhleSYjMzk7dmUgaW1wbGVtZW50ZWQgdGhlIGxvdy1sZXZlbCBpbnRlcmFjdGlvbiB3aXRoIHRoZSBzd2l0Y2ggc2lsaWNvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMjA6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlXy4qZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM9MjU4PXN0YXRpYyBzdHJ1Y3QgbWRpb19kcml2ZXIgbXQ3NTMwX21kaW9fZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTI2Ny1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjI2ODptZGlvX21vZHVsZV9kcml2ZXIobXQ3NTMwX21kaW9fZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTI2OS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMjA6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjc1MQoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDQyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBNVDc1MzAgTURJTyBEcml2ZXImIzM5O3MgQWNjZXNzaWJpbGl0eSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBNRElPIGRyaXZlciwgdGhlIGBtdDc1MzBgLiBNeSBpbml0aWFsIHRob3VnaHRzIGFyZSB0aGF0IE1ESU8gZGV2aWNlcyBhcmUgdXN1YWxseSBoYW5kbGVkIGR1cmluZyBzeXN0ZW0gc2V0dXAsIHR5cGljYWxseSBpbnN0YW50aWF0ZWQgdGhyb3VnaCB0aGUgZGV2aWNlIHRyZWUgb3IgQUNQSSwgb3Igc29tZXRpbWVzIGJ5IGRlZGljYXRlZCBuZXR3b3JrIGRyaXZlcnMgdGhhdCBoYW5kbGUgdGhlIHJlZ2lzdHJhdGlvbiBvZiB0aGUgTURJTyBidXNlcyBhbmQgZGV2aWNlcy4gTm93LCBpbiBhIHZpcnR1YWwgZW52aXJvbm1lbnQgbGlrZSBRRU1VLCB0aGUga2V5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBzcGVjaWZpYyBkZXZpY2UgaXMgZXZlbiAqcmVhY2hhYmxlKi4gVW5sZXNzIHRoZXJlJiMzOTtzIGFuIGVtdWxhdGVkIE1ESU8gYnVzIHRoYXQgYWN0dWFsbHkgaW5zdGFudGlhdGVzIGl0IOKAkyBzb21ldGhpbmcgdHJpZ2dlcmVkIGJ5IGEgc3BlY2lmaWMgZW11bGF0ZWQgYm9hcmQgY29uZmlndXJhdGlvbiwgYSBzcGVjaWZpYyBkZXZpY2UgdHJlZSBzZXR1cCDigJMgaXQmIzM5O3MgZ29pbmcgdG8gYmUgaW5hY2Nlc3NpYmxlLgoKSSBoYWQgYSBmbGVldGluZyB0aG91Z2h0IGFib3V0IHN5emthbGxlciwgd29uZGVyaW5nIGlmIGl0IGNvdWxkIGluamVjdCB0aGUgTURJTyBkZXZpY2UuIFN5emthbGxlciAqY2FuKiBzb21ldGltZXMgaW5qZWN0IGRldmljZXMgaWYgdGhlcmUmIzM5O3MgYSBtZWNoYW5pc20gdG8gcmVnaXN0ZXIgdGhlbSBmcm9tIHVzZXJzcGFjZSwgYnV0IE1ESU8gZGV2aWNlcyBhcmVuJiMzOTt0IHVzdWFsbHkgZWFzaWx5IGluamVjdGVkLiBJdCB0eXBpY2FsbHkgcmVxdWlyZXMgY29udHJvbCBvdmVyIGEgdmlydHVhbCBNRElPIGJ1cy4gU28sIGNhbiBJIHJlYWNoIHRoZSBgbXQ3NTMwX3NldHVwYCBmdW5jdGlvbj8gVGhhdCYjMzk7cyB0aGUgY29yZSBvZiB0aGUgcXVlc3Rpb24uCgpJIGJyaWVmbHkgY2hlY2tlZCBzeXprYWxsZXIgdG8gc2VlIGlmIGl0IGhhZCBhIHdheSB0byBmdXp6IE1ESU8gZGV2aWNlcyBpbiBnZW5lcmFsLiBJdCBkb2VzbiYjMzk7dCBzZWVtIHRvIGhhdmUgYSBnZW5lcmljIG1ldGhvZCBmb3IgaW5zdGFudGlhdGluZyAqYXJiaXRyYXJ5KiBNRElPIGRldmljZXMgdW5sZXNzLCBwZXJoYXBzLCB0aGVyZSYjMzk7cyBhIE5ldGxpbmsgaW50ZXJmYWNlIG9yIHNvbWV0aGluZyBzaW1pbGFyLiBUaGVuIEkgcmVtZW1iZXJlZCB0aGUgYGRzYV9sb29wYCBzZXR1cCwgdGhhdCBzeXprYWxsZXIgdXNlcyBmb3IgdGVzdGluZyBEU0EsIGJ1dCBgbXQ3NTMwYCBpcyBzdGlsbCBzcGVjaWZpYyBoYXJkd2FyZS4KClNvLCBpcyB0aGlzIGRyaXZlciBldmVuICpyZWFjaGFibGUqIGluIGEgUUVNVSBlbnZpcm9ubWVudD8gSSBuZWVkIHRvIGNoZWNrIGZvciBRRU1VIGJvYXJkcyB0aGF0IGFjdHVhbGx5IHVzZSB0aGUgYG10NzUzMGAgc3dpdGNoLiBUaGUgTVQ3NTMwIGlzIGEgTWVkaWFUZWsgc3dpdGNoLCB0eXBpY2FsbHkgdXNlZCB3aXRoIE1lZGlhVGVrIFNvQ3MgbGlrZSB0aGUgTVQ3NjIxLCBNVDc2MjIsIE1UNzYyMywgTVQ3NjI5LiBIb3dldmVyLCBRRU1VIGRvZXNuJiMzOTt0IGVtdWxhdGUgdGhvc2UgU29DcyBieSBkZWZhdWx0IGluIGEgd2F5IHRoYXQgYWxpZ25zIHdpdGggc3l6a2FsbGVyJiMzOTtzIHR5cGljYWwgdGFyZ2V0cywgbGlrZSB4ODZfNjQsIGFybTY0IHZpcnQsIGFuZCBzbyBvbi4KClRoZSBsaWtlbHkgb3V0Y29tZSwgZXZlbiBpZiB0aGUgZHJpdmVyICppcyogY29tcGlsZWQgaW50byB0aGUga2VybmVsLCBpcyB0aGF0IHRoZSBNRElPIGRyaXZlciYjMzk7cyBgcHJvYmVgIGZ1bmN0aW9uIHdvbiYjMzk7dCBiZSBjYWxsZWQgYmVjYXVzZSB0aGVyZSYjMzk7cyBubyBhY3R1YWwgaGFyZHdhcmUgcHJlc2VudCBvciBubyBtYXRjaGluZyBkZXZpY2UgdHJlZSBub2RlLiBUaGVyZWZvcmUsIEkgc2hvdWxkIGNvbmZpcm0gd2hhdCB0aGUgYHByb2JlYCBmdW5jdGlvbiBkb2VzIGluIGBtdDc1MzAtbWRpby5jYCBqdXN0IHRvIGJlIHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDIwOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzUzMF9wcm9iZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jPTE1ND1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoxNTU6bXQ3NTMwX3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTE1Ni17XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTcwLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MTcxOlx0cmV0ID0gbXQ3NTMwX3Byb2JlX2NvbW1vbihwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTE3Mi1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM9MjU4PXN0YXRpYyBzdHJ1Y3QgbWRpb19kcml2ZXIgbXQ3NTMwX21kaW9fZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MjU5Olx0LnByb2JlICA9IG10NzUzMF9wcm9iZSxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTI2MC1cdC5yZW1vdmUgPSBtdDc1MzBfcmVtb3ZlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAyMDo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MDYxCgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHRoZSBvbmUgdGhpbmtpbmcgaXQ6CgoqKkRpZ2dpbmcgaW50byB0aGUgTURJTyBEZXZpY2UgTWF0Y2hpbmcqKgoKT2theSwgc28gYG10NzUzMF9wcm9iZWAgaXMgdHJpZ2dlcmVkLiBUaGF0JiMzOTtzIGdvb2QsIHRoYXQgbWVhbnMgd2UmIzM5O3ZlIGdvdCBhIG1hdGNoLiBCdXQuLi4gKmhvdyogZGlkIHRoZSBNRElPIGRldmljZSBhY3R1YWxseSBtYXRjaCBpbiB0aGUgZmlyc3QgcGxhY2U/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjcml0ZXJpYS4gSXMgaXQgYSBzcGVjaWZpYyBkZXZpY2UgSUQ/IEEgcGFydGljdWxhciByZWdpc3RlciB2YWx1ZT8gRG9lcyBpdCBpbnZvbHZlIERUIGJpbmRpbmdzPyBJIG5lZWQgdG8gdHJhY2UgYmFjayBmcm9tIHRoZSBgbXQ3NTMwX3Byb2JlYCBjYWxsIHRvIHVuZGVyc3RhbmQgdGhlIG1hdGNoaW5nIHByb2Nlc3MuIEkgbmVlZCB0byBiZSBzdXJlIHRoZSBwcm9iZSBpcyBydW5uaW5nIG9uICp0aGlzKiBzcGVjaWZpYyBkZXZpY2UsIGFuZCBub3Qgc29tZXRoaW5nIHNpbWlsYXIuIEdvdHRhIGRpdmUgaW50byB0aGUgZGV2aWNlIHRyZWUgYW5kIGRyaXZlciBjb3JlIGludGVyYWN0aW9ucyB0byBzZWUgd2hhdCBsZWQgdXMgaGVyZS4gVGhpcyBtYXRjaGluZyBtZWNoYW5pc20gaXMga2V5IHRvIHRoZSBlbnRpcmUgZHJpdmVyJiMzOTtzIGZ1bmN0aW9uYWxpdHkuIEkgbmVlZCB0byBuYWlsIGRvd24gdGhlIGV4YWN0IHBhdGggdG8gZW5zdXJlIHJlbGlhYmxlIG9wZXJhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMjA6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3NTMwX29mX21hdGNoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM9OTE9bXQ3NTMxX2NyZWF0ZV9zZ21paShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTM3LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MTM4OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG10NzUzMF9vZl9tYXRjaFtdID0ge1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTM5LVx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O21lZGlhdGVrLG10NzYyMVwmIzM0OywgLmRhdGEgPSBcdTAwMjZtdDc1M3hfdGFibGVbSURfTVQ3NjIxXSwgfSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xNDMtfTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjE0NDpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBtdDc1MzBfb2ZfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTQ1LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jPTI1OD1zdGF0aWMgc3RydWN0IG1kaW9fZHJpdmVyIG10NzUzMF9tZGlvX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yNjMtXHRcdC5uYW1lID0gXCYjMzQ7bXQ3NTMwLW1kaW9cJiMzNDssXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyNjQ6XHRcdC5vZl9tYXRjaF90YWJsZSA9IG10NzUzMF9vZl9tYXRjaCxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTI2NS1cdH0sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDIwOjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg3NDUKCQkJCQkJCW91dHB1dDogMTA4CgkJCQkJCQl0aG91Z2h0czogODYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgYG10NzUzMGAgRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O3ZlIGxvb2tlZCBhdCB0aGlzIGRyaXZlciwgYW5kIGJhc2VkIG9uIGl0cyBtYXRjaGluZyBjcml0ZXJpYSB1c2luZyB0aGUgZGV2aWNlIHRyZWUgKGBvZl9tYXRjaF90YWJsZWApLCBpdCYjMzk7cyBjbGVhciB0aGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZm9yIGEgTWVkaWFUZWsgc3dpdGNoLiBJbiBhIHR5cGljYWwgeDg2XzY0IG9yIGFybTY0IHZpcnR1YWxpemVkIGVudmlyb25tZW50IOKAkyB0aGUga2luZCBJJiMzOTttIHVzZWQgdG8gc2VlaW5nIHdpdGhvdXQgYSBjdXN0b20gZGV2aWNlIHRyZWUgaW5qZWN0aW5nIHRoZSBub2RlIOKAkyB0aGlzIHRoaW5nIHNpbXBseSAqd29uJiMzOTt0KiBwcm9iZS4gVGhlIGBtdDc1MzBfc2V0dXBgIGZ1bmN0aW9uLCB3aGljaCBpcyBsaWtlbHkgd2hlcmUgYW55IGludGVyZXN0aW5nIGZ1bmN0aW9uYWxpdHkgcmVzaWRlcywgd2lsbCBuZXZlciBiZSBleGVjdXRlZCB1bmRlciB0aG9zZSBjaXJjdW1zdGFuY2VzLiBDb25zaWRlcmluZyBhbGwgdGhpcywgdGhlcmUmIzM5O3Mgbm8gd2F5IGl0JiMzOTtzIGdvaW5nIHRvIGJlIGV4cG9zZWQgZm9yIGFueSBraW5kIG9mIGludGVyZXN0aW5nIGZ1enppbmcuIFNvLCBJJiMzOTttIG1hcmtpbmcgaXQgYXMgV29ydGhGdXp6aW5nPWZhbHNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAyMDo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBtdDc1MzAgRFNBIHN3aXRjaCBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyIGZvciBNZWRpYVRlayBzd2l0Y2hlcyAoTVQ3NTMwL01UNzUzMS9NVDc2MjEpLiBUaGlzIGRyaXZlciByZXF1aXJlcyBzcGVjaWZpYyBoYXJkd2FyZSBvciBhIGNvcnJlc3BvbmRpbmcgZGV2aWNlIHRyZWUgbm9kZSB0byBwcm9iZSBhbmQgaXMgbm90IHJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSB1c2VkIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG10NzUzMCBEU0Egc3dpdGNoIGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgZm9yIE1lZGlhVGVrIHN3aXRjaGVzIChNVDc1MzAvTVQ3NTMxL01UNzYyMSkuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHNwZWNpZmljIGhhcmR3YXJlIG9yIGEgY29ycmVzcG9uZGluZyBkZXZpY2UgdHJlZSBub2RlIHRvIHByb2JlIGFuZCBpcyBub3QgcmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFIHVzZWQgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAyMDo1MjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMThUMjA6NTE6NDQuNjk3Mjc0NTkzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzgyOTgwMzUwMzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbXQ3NTMwIERTQSBzd2l0Y2ggZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciBmb3IgTWVkaWFUZWsgc3dpdGNoZXMgKE1UNzUzMC9NVDc1MzEvTVQ3NjIxKS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgaGFyZHdhcmUgb3IgYSBjb3JyZXNwb25kaW5nIGRldmljZSB0cmVlIG5vZGUgdG8gcHJvYmUgYW5kIGlzIG5vdCByZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UgdXNlZCBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDIwOjUxOjQ0LjY5NzI4MDQ0M1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDMzNjQzMzA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNTNkODVjMDdmYzUxMzlkNTcxYzU3MmE3MTU5MGM2ZjBhY2JkNWYzY1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEF1ZyAxOCAyMDo1MTo0MyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMgYi9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmNcXG5pbmRleCBhYTMzZDk0ZTExYjVmLi4yYzc2Y2RmYjU4NTg0IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuY1xcbkBAIC0yNTE4LDYgKzI1MTgsMTUgQEAgbXQ3NTMwX3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG4gXFx0aWYgKCh2YWwgXFx1MDAyNiBNVDc1MzBfWFRBTF9NQVNLKSA9PSBNVDc1MzBfWFRBTF80ME1IWilcXG4gXFx0XFx0bXQ3NTMwX3BsbF9zZXR1cChwcml2KTtcXG4gXFxuK1xcdGlmIChwcml2LVxcdTAwM2VpZCA9PSBJRF9NVDc2MjEpIHtcXG4rXFx0XFx0LyogRGlzYWJsZSBFRUUgYWR2ZXJ0aXNlbWVudCBvbiB0aGUgc3dpdGNoIFBIWXMuICovXFxuK1xcdFxcdGZvciAoaSA9IE1UNzUzWF9DVFJMX1BIWV9BRERSKHByaXYtXFx1MDAzZW1kaW9kZXYtXFx1MDAzZWFkZHIpO1xcbitcXHRcXHQgICAgIGkgXFx1MDAzYyBNVDc1M1hfQ1RSTF9QSFlfQUREUihwcml2LVxcdTAwM2VtZGlvZGV2LVxcdTAwM2VhZGRyKSArIE1UNzUzMF9OVU1fUEhZUztcXG4rXFx0XFx0ICAgICBpKyspIHtcXG4rXFx0XFx0XFx0bXQ3NTMwX3BoeV93cml0ZV9jNDUocHJpdiwgaSwgTURJT19NTURfQU4sIE1ESU9fQU5fRUVFX0FEViwgMCk7XFxuK1xcdFxcdH1cXG4rXFx0fVxcbitcXG4gXFx0bXQ3NTN4X3RyYXBfZnJhbWVzKHByaXYpO1xcbiBcXG4gXFx0LyogRW5hYmxlIGFuZCByZXNldCBNSUIgY291bnRlcnMgKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMjA6NTE6NDUuMTMxNTkwMTA3WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6Mzc4NjM3MDcwNjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBtdDc1MzAgRFNBIHN3aXRjaCBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyIGZvciBNZWRpYVRlayBzd2l0Y2hlcyAoTVQ3NTMwL01UNzUzMS9NVDc2MjEpLiBUaGlzIGRyaXZlciByZXF1aXJlcyBzcGVjaWZpYyBoYXJkd2FyZSBvciBhIGNvcnJlc3BvbmRpbmcgZGV2aWNlIHRyZWUgbm9kZSB0byBwcm9iZSBhbmQgaXMgbm90IHJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSB1c2VkIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNTNkODVjMDdmYzUxMzlkNTcxYzU3MmE3MTU5MGM2ZjBhY2JkNWYzY1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDE4IDIwOjUxOjQzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL210NzUzMC5jIGIvZHJpdmVycy9uZXQvZHNhL210NzUzMC5jXG5pbmRleCBhYTMzZDk0ZTExYjVmLi4yYzc2Y2RmYjU4NTg0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL210NzUzMC5jXG4rKysgYi9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmNcbkBAIC0yNTE4LDYgKzI1MTgsMTUgQEAgbXQ3NTMwX3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbiBcdGlmICgodmFsIFx1MDAyNiBNVDc1MzBfWFRBTF9NQVNLKSA9PSBNVDc1MzBfWFRBTF80ME1IWilcbiBcdFx0bXQ3NTMwX3BsbF9zZXR1cChwcml2KTtcbiBcbitcdGlmIChwcml2LVx1MDAzZWlkID09IElEX01UNzYyMSkge1xuK1x0XHQvKiBEaXNhYmxlIEVFRSBhZHZlcnRpc2VtZW50IG9uIHRoZSBzd2l0Y2ggUEhZcy4gKi9cbitcdFx0Zm9yIChpID0gTVQ3NTNYX0NUUkxfUEhZX0FERFIocHJpdi1cdTAwM2VtZGlvZGV2LVx1MDAzZWFkZHIpO1xuK1x0XHQgICAgIGkgXHUwMDNjIE1UNzUzWF9DVFJMX1BIWV9BRERSKHByaXYtXHUwMDNlbWRpb2Rldi1cdTAwM2VhZGRyKSArIE1UNzUzMF9OVU1fUEhZUztcbitcdFx0ICAgICBpKyspIHtcbitcdFx0XHRtdDc1MzBfcGh5X3dyaXRlX2M0NShwcml2LCBpLCBNRElPX01NRF9BTiwgTURJT19BTl9FRUVfQURWLCAwKTtcbitcdFx0fVxuK1x0fVxuK1xuIFx0bXQ3NTN4X3RyYXBfZnJhbWVzKHByaXYpO1xuIFxuIFx0LyogRW5hYmxlIGFuZCByZXNldCBNSUIgY291bnRlcnMgKi9cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDIwOjUxOjQ1LjEzMTU5MTY5N1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxNDY2NTM4MzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBFRUUgQWR2ZXJ0aXNlbWVudCBEaXNhYmxlIFBhdGNoIGluIGBtdDc1MzAuY2AqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgZHJpdmVycy9uZXQvZHNhL210NzUzMC5jYC4gSXQncyBkaXNhYmxpbmcgRUVFIGFkdmVydGlzZW1lbnQgb24gdGhlIHN3aXRjaCBQSFlzIGZvciBgSURfTVQ3NjIxYCB3aXRoaW4gdGhlIGBtdDc1MzBfc2V0dXBgIGZ1bmN0aW9uLiBNeSBpbml0aWFsIHF1ZXN0aW9uIGlzOiAqaG93KiByZWFjaGFibGUgaXMgdGhpcyBjb2RlIGluIGEgdmlydHVhbGl6ZWQgc2V0dGluZz9cblxuSSBrbm93IGBtdDc1MzAuY2AgaXMgdGhlIGRyaXZlciBmb3IgdGhvc2UgTWVkaWFUZWsgTVQ3NTMwL01UNzUzMS9NVDc2MjEgRFNBIHN3aXRjaGVzLiBEU0Egc3dpdGNoZXMsIGZyb20gbXkgZXhwZXJpZW5jZSwgdXN1YWxseSBpbnRlcmZhY2UgdGhyb3VnaCBNRElPLCBTUEksIG9yIG1lbW9yeSBtYXBwaW5nLiBHaXZlbiB0aGUgYXJjaGl0ZWN0dXJlIG9mIHRoZSBkcml2ZXIsIEknbSBsZWFuaW5nIHRvd2FyZHMgaXQgYmVpbmcgYW4gTURJTyBjb25uZWN0aW9uLiBUaGlzIG1ha2VzIHZpcnR1YWxpemF0aW9uIG1vcmUgY2hhbGxlbmdpbmcsIGFzIHRoZXNlIHR5cGVzIG9mIHN3aXRjaGVzIHJlcXVpcmUgZWl0aGVyIHNwZWNpZmljIGhhcmR3YXJlIG9yIGF0IHRoZSB2ZXJ5IGxlYXN0LCBhIHZlcnkgcHJlY2lzZSBkZXZpY2UgdHJlZSBjb25maWd1cmF0aW9uLlxuXG5TbyB0aGUgbWFpbiBxdWVzdGlvbiBpcywgY2FuIEkgdHJpZ2dlciB0aGlzIGNvZGUgcGF0aCwgc3BlY2lmaWNhbGx5IGBtdDc1MzBfc2V0dXBgLCB3aXRoaW4gc29tZXRoaW5nIGxpa2UgUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmU/IEknbGwgbmVlZCB0byBmaWd1cmUgb3V0IGV4YWN0bHkgKmhvdyogYG10NzUzMF9zZXR1cGAgaXMgY2FsbGVkIHRvIGV2ZW4gc3RhcnQgZG93biB0aGF0IHBhdGguIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBlbnRyeSBwb2ludCBhbmQgaWYgdGhlcmUncyBhIGZlYXNpYmxlIHdheSB0byBlbXVsYXRlIHRoZSBuZWNlc3NhcnkgaGFyZHdhcmUgc2V0dXAsIGluY2x1ZGluZyB0aGUgTURJTyBhY2Nlc3MsIHdpdGhpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBUaW1lIHRvIGRpZyBpbnRvIHRoZSBjYWxsIGdyYXBoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTU0LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTkyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMjA6NTE6NTAuMjc4MjQ5MDgxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MDk3MTk1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzUzMF9zZXR1cFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTM3Mz1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozNzQ6bXQ3NTMwX3NldHVwX3BvcnQ2KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzc1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0xMDQ2PXN0YXRpYyBjb25zdCBjaGFyICptdDc1MzBfcDVfbW9kZV9zdHIodW5zaWduZWQgaW50IG1vZGUpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTA1Ny1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MTA1ODpzdGF0aWMgdm9pZCBtdDc1MzBfc2V0dXBfcG9ydDUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xMDU5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0xNjQzPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MTY0NDptdDc1MzBfc2V0dXBfdmxhbjAoc3RydWN0IG10NzUzMF9wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xNjQ1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0xNjYwPW10NzUzMF9wb3J0X3NldF92bGFuX3VuYXdhcmUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xNjk3LVxcdFxcdG11dGV4X2xvY2soXFx1MDAyNnByaXYtXFx1MDAzZXJlZ19tdXRleCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjE2OTg6XFx0XFx0bXQ3NTMwX3NldHVwX3ZsYW4wKHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xNjk5LVxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2cHJpdi1cXHUwMDNlcmVnX211dGV4KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0xOTkyPW10NzUzMF9wb3J0X3ZsYW5fYWRkKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjAwMi1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjAwMzpcXHQvKiBWSUQgMCBpcyBtYW5hZ2VkIGV4Y2x1c2l2ZWx5IGJ5IG10NzUzMF9zZXR1cF92bGFuMCgpIGZvclxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMDA0LVxcdCAqIFZMQU4tdW5hd2FyZSBicmlkZ2Ugb3BlcmF0aW9uLiBEb24ndCBsZXQgdGhlIGJyaWRnZSBvdmVyd3JpdGVcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0yMDQ2PW10NzUzMF9wb3J0X3ZsYW5fZGVsKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjA1My1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjA1NDpcXHQvKiBWSUQgMCBpcyBtYW5hZ2VkIGV4Y2x1c2l2ZWx5IGJ5IG10NzUzMF9zZXR1cF92bGFuMCgpLiAqL1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMDU1LVxcdGlmICh2bGFuLVxcdTAwM2V2aWQgPT0gMClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0yMjI5PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjIzMDptdDc1MzBfc2V0dXBfZ3BpbyhzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIyMzEte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTIyNTk9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjI2MDptdDc1MzBfc2V0dXBfbWRpb19pcnEoc3RydWN0IG10NzUzMF9wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMjYxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0yMzA5PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjMxMDptdDc1MzBfc2V0dXBfaXJxKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjMxMS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MjM2MD1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIzNjE6bXQ3NTMwX3NldHVwX21kaW8oc3RydWN0IG10NzUzMF9wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMzYyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMzk0LVxcdGlmIChwcml2LVxcdTAwM2VpcnFfZG9tYWluIFxcdTAwMjZcXHUwMDI2ICFtbnApXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIzOTU6XFx0XFx0bXQ3NTMwX3NldHVwX21kaW9faXJxKHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMzk2LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTI0MDk9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyNDEwOm10NzUzMF9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI0MTEte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI1NjgtXFx0LyogU2V0dXAgVkxBTiBJRCAwIGZvciBWTEFOLXVuYXdhcmUgYnJpZGdlcyAqL1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyNTY5OlxcdHJldCA9IG10NzUzMF9zZXR1cF92bGFuMChwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjU3MC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI2MTMtXFx0XFx0XFx0bXQ3NTMwX2NsZWFyKHByaXYsIE1UNzUzWF9NVFJBUCwgTVQ3NTMwX1A1X0RJUyk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjI2MTQ6XFx0XFx0XFx0bXQ3NTMwX3NldHVwX3BvcnQ1KGRzLCBpbnRlcmZhY2UpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNjE1LVxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNjE5LVxcdGlmIChvZl9wcm9wZXJ0eV9yZWFkX2Jvb2wocHJpdi1cXHUwMDNlZGV2LVxcdTAwM2VvZl9ub2RlLCBcXFwiZ3Bpby1jb250cm9sbGVyXFxcIikpIHtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjYyMDpcXHRcXHRyZXQgPSBtdDc1MzBfc2V0dXBfZ3Bpbyhwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjYyMS1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTI2MzU9bXQ3NTMxX3NldHVwX2NvbW1vbihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjcwMS1cXHQvKiBTZXR1cCBWTEFOIElEIDAgZm9yIFZMQU4tdW5hd2FyZSBicmlkZ2VzICovXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjI3MDI6XFx0cmV0dXJuIG10NzUzMF9zZXR1cF92bGFuMChwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjcwMy19XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MjkxNT1tdDc1MzBfbWFjX2NvbmZpZyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCB1bnNpZ25lZCBpbnQgbW9kZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yOTIwLVxcdGlmIChwb3J0ID09IDUpXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjI5MjE6XFx0XFx0bXQ3NTMwX3NldHVwX3BvcnQ1KHByaXYtXFx1MDAzZWRzLCBpbnRlcmZhY2UpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yOTIyLVxcdGVsc2UgaWYgKHBvcnQgPT0gNilcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjkyMzpcXHRcXHRtdDc1MzBfc2V0dXBfcG9ydDYocHJpdi1cXHUwMDNlZHMsIGludGVyZmFjZSk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI5MjQtfVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTMxODU9bXQ3NTN4X3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zMTkzLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozMTk0OlxcdHJldCA9IG10NzUzMF9zZXR1cF9pcnEocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTMxOTUtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zMTk3LVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozMTk4OlxcdHJldCA9IG10NzUzMF9zZXR1cF9tZGlvKHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zMTk5LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MzM5Nz1jb25zdCBzdHJ1Y3QgbXQ3NTN4X2luZm8gbXQ3NTN4X3RhYmxlW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzQwMC1cXHRcXHQucGNzX29wcyA9IFxcdTAwMjZtdDc1MzBfcGNzX29wcyxcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MzQwMTpcXHRcXHQuc3dfc2V0dXAgPSBtdDc1MzBfc2V0dXAsXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTM0MDItXFx0XFx0LnBoeV9yZWFkX2MyMiA9IG10NzUzMF9waHlfcmVhZF9jMjIsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzQxMS1cXHRcXHQucGNzX29wcyA9IFxcdTAwMjZtdDc1MzBfcGNzX29wcyxcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MzQxMjpcXHRcXHQuc3dfc2V0dXAgPSBtdDc1MzBfc2V0dXAsXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTM0MTMtXFx0XFx0LnBoeV9yZWFkX2MyMiA9IG10NzUzMF9waHlfcmVhZF9jMjIsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDIwOjUxOjUwLjMyMjM1MTc5NloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1MTA4ODEwMzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBtdDc1MzAgRHJpdmVyIEluaXRpYWxpemF0aW9uKipcblxuT2theSwgc28gSSBzZWUgdGhhdCBgbXQ3NTMwX3NldHVwYCBpcyBiZWluZyBsaW5rZWQgdG8gdGhlIGAuc3dfc2V0dXBgIGZ1bmN0aW9uIHBvaW50ZXIgd2l0aGluIHRoZSBgbXQ3NTN4X3RhYmxlYCBzdHJ1Y3R1cmUuIFRoYXQgdGFibGUgaXMsIGVzc2VudGlhbGx5LCB0aGUgYmx1ZXByaW50IHVzZWQgYnkgdGhlIGRyaXZlciB0byBicmluZyB0aGUgc3dpdGNoIG9ubGluZS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGNhbiBJIGV2ZW4gZ2V0IHRvIHRoaXMgY29kZSB3aXRob3V0IHNwZWNpZmljLCByZWFsIGhhcmR3YXJlPyBHaXZlbiB0aGF0IGl0J3MgYSBwbGF0Zm9ybS9NRElPIGRyaXZlciwgdGhhdCdzIHRoZSBjcnVjaWFsIHF1ZXN0aW9uLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGVyZSdzIGEgcHJhY3RpY2FsIHdheSB0byBkZWJ1ZyBpdCBpbiBhIHN0YW5kYXJkIFFFTVUgc2V0dXAuIEknbGwgbmVlZCB0byBkaWcgaW50byB0aGUgZHJpdmVyIGNvZGUgaXRzZWxmIHRvIGZ1bGx5IGdyYXNwIHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS4gTXkgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgdGhlIGNvZGUsIHByb2JhYmx5IGBkcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uY2AsIG9yIHNvbWV0aGluZyBhbG9uZyB0aG9zZSBsaW5lcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgZHJpdmVyIHJlZ2lzdGVycyBpdHNlbGYgd2l0aCB0aGUgc3lzdGVtLCB0aGF0IHdpbGwgZ2l2ZSBtZSBteSBmaXJzdCBjbHVlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTE3MywiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDIwOjUxOjU0LjgzMzIzNDc5N1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDAxNTMxNSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibW9kdWxlXy4qZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2RzYS9tdDc1MzBcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDIwOjUxOjU0Ljg4MzI1ODk3MloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1Njc2Nzk2MjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipOYXZpZ2F0aW5nIHRoZSBEU0EgRHJpdmVyIExhbmRzY2FwZSoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBkaXZlIGludG8gdGhlIERTQSAoRGlzdHJpYnV0ZWQgU3dpdGNoIEFyY2hpdGVjdHVyZSkgZHJpdmVyIGNvZGUsIGFuZCBzcGVjaWZpY2FsbHksIEknbSBpbnRlcmVzdGVkIGluIHRoZSBmaWxlcyByZWxhdGVkIHRvIHRoZSBgbXQ3NTMwYCBjaGlwc2V0LiBUaGF0IHNlZW1zIGxpa2UgYSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IOKAkyBgZHJpdmVycy9uZXQvZHNhL2AgaXMgd2hlcmUgSSB3b3VsZCBleHBlY3QgdG8gZmluZCB0aGUgbWFqb3JpdHkgb2YgdGhlIHJlbGV2YW50IGNvZGUuIEdpdmVuIG15IGV4cGVydGlzZSwgSSBhbHJlYWR5IGhhdmUgYSBtZW50YWwgbW9kZWwgb2YgaG93IHRoZXNlIERTQSBkcml2ZXJzIGFyZSBnZW5lcmFsbHkgc3RydWN0dXJlZC4gU28sIEknbGwgZ28gdGhyb3VnaCB0aGlzIGRpcmVjdG9yeSBhbmQgZmlsdGVyIG9uIGBtdDc1MzAqYC4gVGhpcyBzaG91bGQgeWllbGQgdGhlIGNyaXRpY2FsIHNvdXJjZSBmaWxlcywgY29uZmlndXJhdGlvbiBvcHRpb25zLCBhbmQgZGV2aWNlLXNwZWNpZmljIGluZm9ybWF0aW9uIEknbSBnb2luZyB0byBuZWVkLiBUaGVuIEkgY2FuIGdldCB0byB3b3JrIVxuXG5cbiIsIklucHV0VG9rZW5zIjo1NTMwLCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMjA6NTE6NTguNDUwOTQxNjVaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJjb2Rlc2VhcmNoLWRpci1pbmRleCIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgxMDcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRGlyXCI6IFwiZHJpdmVycy9uZXQvZHNhXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIkZpbGVzXCI6IFtcbiAgICBcImJjbV9zZjIuY1wiLFxuICAgIFwiYmNtX3NmMi5oXCIsXG4gICAgXCJiY21fc2YyX2NmcC5jXCIsXG4gICAgXCJiY21fc2YyX3JlZ3MuaFwiLFxuICAgIFwiZHNhX2xvb3AuY1wiLFxuICAgIFwia3M4OTk1LmNcIixcbiAgICBcImxhbjkzMDMtY29yZS5jXCIsXG4gICAgXCJsYW45MzAzLmhcIixcbiAgICBcImxhbjkzMDNfaTJjLmNcIixcbiAgICBcImxhbjkzMDNfbWRpby5jXCIsXG4gICAgXCJtdDc1MzAtbWRpby5jXCIsXG4gICAgXCJtdDc1MzAtbW1pby5jXCIsXG4gICAgXCJtdDc1MzAuY1wiLFxuICAgIFwibXQ3NTMwLmhcIixcbiAgICBcIm12ODhlNjA2MC5jXCIsXG4gICAgXCJtdjg4ZTYwNjAuaFwiLFxuICAgIFwicnpuMV9hNXBzdy5jXCIsXG4gICAgXCJyem4xX2E1cHN3LmhcIixcbiAgICBcInZpdGVzc2UtdnNjNzN4eC1jb3JlLmNcIixcbiAgICBcInZpdGVzc2UtdnNjNzN4eC1wbGF0Zm9ybS5jXCIsXG4gICAgXCJ2aXRlc3NlLXZzYzczeHgtc3BpLmNcIixcbiAgICBcInZpdGVzc2UtdnNjNzN4eC5oXCIsXG4gICAgXCJ5dDkyMXguY1wiLFxuICAgIFwieXQ5MjF4LmhcIlxuICBdLFxuICBcIlN1YmRpcnNcIjogW1xuICAgIFwiYjUzXCIsXG4gICAgXCJoaXJzY2htYW5uXCIsXG4gICAgXCJsYW50aXFcIixcbiAgICBcIm1pY3JvY2hpcFwiLFxuICAgIFwibXY4OGU2eHh4XCIsXG4gICAgXCJteGw4NjJ4eFwiLFxuICAgIFwibmV0Y1wiLFxuICAgIFwib2NlbG90XCIsXG4gICAgXCJxY2FcIixcbiAgICBcInJlYWx0ZWtcIixcbiAgICBcInNqYTExMDVcIixcbiAgICBcInhyczcwMHhcIlxuICBdXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQyMDo1MTo1OC40NTEwMjM4OFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ5MjIxNzg0OTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIGZpbGVzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNVDc1MzAgRHJpdmVyIEltcGxlbWVudGF0aW9uKipcblxuUmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJJ20gZ29pbmcgdG8gc3RhcnQgYnkgdGFraW5nIGEgY2xvc2UgbG9vayBhdCBgbXQ3NTMwLW1kaW8uY2AgYW5kIGBtdDc1MzAtbW1pby5jYC4gQmFzZWQgb24gdGhlIG5hbWluZywgSSdtIGV4cGVjdGluZyBgbWRpb2AgdG8gaGFuZGxlIHRoZSBNZWRpYSBJbmRlcGVuZGVudCBJbnRlcmZhY2UsIGxpa2VseSBmb3IgUEhZIGNvbW11bmljYXRpb24uIEl0J2xsIHByb2JhYmx5IGRlYWwgd2l0aCByZWdpc3RlcnMgcmVsYXRlZCB0byBjb25maWd1cmluZyBhbmQgYWNjZXNzaW5nIGV4dGVybmFsIFBIWXMgY29ubmVjdGVkIHRvIHRoZSBzd2l0Y2guIEknbGwgd2FudCB0byBzZWUgaG93IHRoZXkncmUgaGFuZGxpbmcgTURJTyB0cmFuc2FjdGlvbnMsIHNldHRpbmcgdXAgdGhlIGNsb2NrIGZyZXF1ZW5jeSwgYW5kIGRlYWxpbmcgd2l0aCBhbnkgcG90ZW50aWFsIHRpbWluZyBjb25zdHJhaW50cy4gVGhlbiwgSSdsbCBuZWVkIHRvIGNoZWNrIGhvdyBpdCBhY3R1YWxseSB0cmFuc2xhdGVzIHRob3NlIE1ESU8gYWNjZXNzZXMgaW50byB0aGUgcmVsZXZhbnQgaGFyZHdhcmUgaW50ZXJhY3Rpb25zLlxuXG5gbXQ3NTMwLW1taW8uY2AsIG9uIHRoZSBvdGhlciBoYW5kLCBzaG91bGQgY29udGFpbiB0aGUgY29kZSByZXNwb25zaWJsZSBmb3IgZGlyZWN0IG1lbW9yeS1tYXBwZWQgSS9PIChNTUlPKSBhY2Nlc3MgdG8gdGhlIE1UNzUzMCdzIGludGVybmFsIHJlZ2lzdGVycy4gVGhpcyBpcyB3aGVyZSB0aGUgY29yZSBzd2l0Y2ggY29uZmlndXJhdGlvbiBpcyBnb2luZyB0byBiZSBoYW5kbGVkLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHJlZ2lzdGVyIGRlZmluaXRpb25zLCBtZW1vcnkgbWFwcGluZyBkZXRhaWxzLCBhbmQgdGhlIGNvcmUgZnVuY3Rpb25zIGZvciBjb250cm9sbGluZyB0aGUgc3dpdGNoJ3MgZnVuY3Rpb25hbGl0eTogcG9ydCBjb25maWd1cmF0aW9uLCBWTEFOIG1hbmFnZW1lbnQsIGZvcndhcmRpbmcgdGFibGUgbWFuaXB1bGF0aW9uLCBhbmQgaW50ZXJydXB0IGhhbmRsaW5nLiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiB0aGUgTU1JTyBjb2RlIGFuZCB0aGUgTURJTyBjb2RlLiBBcmUgdGhlcmUgc2hhcmVkIGRhdGEgc3RydWN0dXJlcz8gSG93IGFyZSBQSFkgc2V0dGluZ3MgcmVmbGVjdGVkIGluIHRoZSBpbnRlcm5hbCBzd2l0Y2ggY29uZmlndXJhdGlvbj8gSSdsbCBwcm9iYWJseSBiZSBkaXZpbmcgZGVlcCBpbnRvIHRoZSByZWdpc3RlciBkZXNjcmlwdGlvbnMgdG8gZ2V0IGEgc29saWQgZ3Jhc3Agb2YgdGhpcyBzdHVmZi4gSSdsbCBhbHNvIGJlIGV4cGVjdGluZyB0byBzZWUgYSBnb29kIGFtb3VudCBvZiB3b3JrIG9uIGxvY2sgY29udGVudGlvbiBhbmQgc3luY2hyb25pemF0aW9uLCBnaXZlbiB0aGUgY29tcGxleGl0eSBvZiB0aGUgaGFyZHdhcmUgYW5kIHRoZSBuZWVkIHRvIHByZXZlbnQgZGF0YSBjb3JydXB0aW9uLiBJIHdhbnQgdG8gcGF5IGF0dGVudGlvbiB0byBhbnkgcG90ZW50aWFsIGlzc3VlcyBzdWNoIGFzIHJlZ2lzdGVyIGFjY2VzcyBvcmRlciwgYW55IHJhY2UgY29uZGl0aW9ucywgYW5kIGhvdyB0aGV5IGhhbmRsZWQgdGhlbS4gRXNzZW50aWFsbHksIEknbSBsb29raW5nIGZvciBhIHNvbGlkIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoZXkndmUgaW1wbGVtZW50ZWQgdGhlIGxvdy1sZXZlbCBpbnRlcmFjdGlvbiB3aXRoIHRoZSBzd2l0Y2ggc2lsaWNvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NjEyNywiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5LCJUb29sQ2FsbHMiOlsiY29kZXNlYXJjaC1kaXItaW5kZXgiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQyMDo1MjowMy4zNzMyMDQ4NjdaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0MTIyMTczNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtb2R1bGVfLipkcml2ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM9MjU4PXN0YXRpYyBzdHJ1Y3QgbWRpb19kcml2ZXIgbXQ3NTMwX21kaW9fZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjY3LVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjI2ODptZGlvX21vZHVsZV9kcml2ZXIobXQ3NTMwX21kaW9fZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yNjktXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDIwOjUyOjAzLjYxNDQzMTU3MloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDI0OTE3ODU3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBNVDc1MzAgTURJTyBEcml2ZXIncyBBY2Nlc3NpYmlsaXR5KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBNRElPIGRyaXZlciwgdGhlIGBtdDc1MzBgLiBNeSBpbml0aWFsIHRob3VnaHRzIGFyZSB0aGF0IE1ESU8gZGV2aWNlcyBhcmUgdXN1YWxseSBoYW5kbGVkIGR1cmluZyBzeXN0ZW0gc2V0dXAsIHR5cGljYWxseSBpbnN0YW50aWF0ZWQgdGhyb3VnaCB0aGUgZGV2aWNlIHRyZWUgb3IgQUNQSSwgb3Igc29tZXRpbWVzIGJ5IGRlZGljYXRlZCBuZXR3b3JrIGRyaXZlcnMgdGhhdCBoYW5kbGUgdGhlIHJlZ2lzdHJhdGlvbiBvZiB0aGUgTURJTyBidXNlcyBhbmQgZGV2aWNlcy4gTm93LCBpbiBhIHZpcnR1YWwgZW52aXJvbm1lbnQgbGlrZSBRRU1VLCB0aGUga2V5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBzcGVjaWZpYyBkZXZpY2UgaXMgZXZlbiAqcmVhY2hhYmxlKi4gVW5sZXNzIHRoZXJlJ3MgYW4gZW11bGF0ZWQgTURJTyBidXMgdGhhdCBhY3R1YWxseSBpbnN0YW50aWF0ZXMgaXQg4oCTIHNvbWV0aGluZyB0cmlnZ2VyZWQgYnkgYSBzcGVjaWZpYyBlbXVsYXRlZCBib2FyZCBjb25maWd1cmF0aW9uLCBhIHNwZWNpZmljIGRldmljZSB0cmVlIHNldHVwIOKAkyBpdCdzIGdvaW5nIHRvIGJlIGluYWNjZXNzaWJsZS5cblxuSSBoYWQgYSBmbGVldGluZyB0aG91Z2h0IGFib3V0IHN5emthbGxlciwgd29uZGVyaW5nIGlmIGl0IGNvdWxkIGluamVjdCB0aGUgTURJTyBkZXZpY2UuIFN5emthbGxlciAqY2FuKiBzb21ldGltZXMgaW5qZWN0IGRldmljZXMgaWYgdGhlcmUncyBhIG1lY2hhbmlzbSB0byByZWdpc3RlciB0aGVtIGZyb20gdXNlcnNwYWNlLCBidXQgTURJTyBkZXZpY2VzIGFyZW4ndCB1c3VhbGx5IGVhc2lseSBpbmplY3RlZC4gSXQgdHlwaWNhbGx5IHJlcXVpcmVzIGNvbnRyb2wgb3ZlciBhIHZpcnR1YWwgTURJTyBidXMuIFNvLCBjYW4gSSByZWFjaCB0aGUgYG10NzUzMF9zZXR1cGAgZnVuY3Rpb24/IFRoYXQncyB0aGUgY29yZSBvZiB0aGUgcXVlc3Rpb24uXG5cbkkgYnJpZWZseSBjaGVja2VkIHN5emthbGxlciB0byBzZWUgaWYgaXQgaGFkIGEgd2F5IHRvIGZ1enogTURJTyBkZXZpY2VzIGluIGdlbmVyYWwuIEl0IGRvZXNuJ3Qgc2VlbSB0byBoYXZlIGEgZ2VuZXJpYyBtZXRob2QgZm9yIGluc3RhbnRpYXRpbmcgKmFyYml0cmFyeSogTURJTyBkZXZpY2VzIHVubGVzcywgcGVyaGFwcywgdGhlcmUncyBhIE5ldGxpbmsgaW50ZXJmYWNlIG9yIHNvbWV0aGluZyBzaW1pbGFyLiBUaGVuIEkgcmVtZW1iZXJlZCB0aGUgYGRzYV9sb29wYCBzZXR1cCwgdGhhdCBzeXprYWxsZXIgdXNlcyBmb3IgdGVzdGluZyBEU0EsIGJ1dCBgbXQ3NTMwYCBpcyBzdGlsbCBzcGVjaWZpYyBoYXJkd2FyZS5cblxuU28sIGlzIHRoaXMgZHJpdmVyIGV2ZW4gKnJlYWNoYWJsZSogaW4gYSBRRU1VIGVudmlyb25tZW50PyBJIG5lZWQgdG8gY2hlY2sgZm9yIFFFTVUgYm9hcmRzIHRoYXQgYWN0dWFsbHkgdXNlIHRoZSBgbXQ3NTMwYCBzd2l0Y2guIFRoZSBNVDc1MzAgaXMgYSBNZWRpYVRlayBzd2l0Y2gsIHR5cGljYWxseSB1c2VkIHdpdGggTWVkaWFUZWsgU29DcyBsaWtlIHRoZSBNVDc2MjEsIE1UNzYyMiwgTVQ3NjIzLCBNVDc2MjkuIEhvd2V2ZXIsIFFFTVUgZG9lc24ndCBlbXVsYXRlIHRob3NlIFNvQ3MgYnkgZGVmYXVsdCBpbiBhIHdheSB0aGF0IGFsaWducyB3aXRoIHN5emthbGxlcidzIHR5cGljYWwgdGFyZ2V0cywgbGlrZSB4ODZfNjQsIGFybTY0IHZpcnQsIGFuZCBzbyBvbi5cblxuVGhlIGxpa2VseSBvdXRjb21lLCBldmVuIGlmIHRoZSBkcml2ZXIgKmlzKiBjb21waWxlZCBpbnRvIHRoZSBrZXJuZWwsIGlzIHRoYXQgdGhlIE1ESU8gZHJpdmVyJ3MgYHByb2JlYCBmdW5jdGlvbiB3b24ndCBiZSBjYWxsZWQgYmVjYXVzZSB0aGVyZSdzIG5vIGFjdHVhbCBoYXJkd2FyZSBwcmVzZW50IG9yIG5vIG1hdGNoaW5nIGRldmljZSB0cmVlIG5vZGUuIFRoZXJlZm9yZSwgSSBzaG91bGQgY29uZmlybSB3aGF0IHRoZSBgcHJvYmVgIGZ1bmN0aW9uIGRvZXMgaW4gYG10NzUzMC1tZGlvLmNgIGp1c3QgdG8gYmUgc3VyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Njc1MSwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQyMDo1MjoxMy44NjM2MTIyMTRaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg2NDAzMjcxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzUzMF9wcm9iZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYz0xNTQ9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjE1NTptdDc1MzBfcHJvYmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTE1Ni17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xNzAtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MTcxOlxcdHJldCA9IG10NzUzMF9wcm9iZV9jb21tb24ocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTcyLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYz0yNTg9c3RhdGljIHN0cnVjdCBtZGlvX2RyaXZlciBtdDc1MzBfbWRpb19kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MjU5OlxcdC5wcm9iZSAgPSBtdDc1MzBfcHJvYmUsXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjYwLVxcdC5yZW1vdmUgPSBtdDc1MzBfcmVtb3ZlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQyMDo1MjoxMy45NTAwMjA1NzVaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzgxODkxMTg1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSB0aGUgb25lIHRoaW5raW5nIGl0OlxuXG4qKkRpZ2dpbmcgaW50byB0aGUgTURJTyBEZXZpY2UgTWF0Y2hpbmcqKlxuXG5Pa2F5LCBzbyBgbXQ3NTMwX3Byb2JlYCBpcyB0cmlnZ2VyZWQuIFRoYXQncyBnb29kLCB0aGF0IG1lYW5zIHdlJ3ZlIGdvdCBhIG1hdGNoLiBCdXQuLi4gKmhvdyogZGlkIHRoZSBNRElPIGRldmljZSBhY3R1YWxseSBtYXRjaCBpbiB0aGUgZmlyc3QgcGxhY2U/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjcml0ZXJpYS4gSXMgaXQgYSBzcGVjaWZpYyBkZXZpY2UgSUQ/IEEgcGFydGljdWxhciByZWdpc3RlciB2YWx1ZT8gRG9lcyBpdCBpbnZvbHZlIERUIGJpbmRpbmdzPyBJIG5lZWQgdG8gdHJhY2UgYmFjayBmcm9tIHRoZSBgbXQ3NTMwX3Byb2JlYCBjYWxsIHRvIHVuZGVyc3RhbmQgdGhlIG1hdGNoaW5nIHByb2Nlc3MuIEkgbmVlZCB0byBiZSBzdXJlIHRoZSBwcm9iZSBpcyBydW5uaW5nIG9uICp0aGlzKiBzcGVjaWZpYyBkZXZpY2UsIGFuZCBub3Qgc29tZXRoaW5nIHNpbWlsYXIuIEdvdHRhIGRpdmUgaW50byB0aGUgZGV2aWNlIHRyZWUgYW5kIGRyaXZlciBjb3JlIGludGVyYWN0aW9ucyB0byBzZWUgd2hhdCBsZWQgdXMgaGVyZS4gVGhpcyBtYXRjaGluZyBtZWNoYW5pc20gaXMga2V5IHRvIHRoZSBlbnRpcmUgZHJpdmVyJ3MgZnVuY3Rpb25hbGl0eS4gSSBuZWVkIHRvIG5haWwgZG93biB0aGUgZXhhY3QgcGF0aCB0byBlbnN1cmUgcmVsaWFibGUgb3BlcmF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MDYxLCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMjA6NTI6MTcuNzY4OTM1MTQ4WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTEzODAzNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc1MzBfb2ZfbWF0Y2hcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM9OTE9bXQ3NTMxX2NyZWF0ZV9zZ21paShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xMzctXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MTM4OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG10NzUzMF9vZl9tYXRjaFtdID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTEzOS1cXHR7IC5jb21wYXRpYmxlID0gXFxcIm1lZGlhdGVrLG10NzYyMVxcXCIsIC5kYXRhID0gXFx1MDAyNm10NzUzeF90YWJsZVtJRF9NVDc2MjFdLCB9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTQzLX07XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MTQ0Ok1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG10NzUzMF9vZl9tYXRjaCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTQ1LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM9MjU4PXN0YXRpYyBzdHJ1Y3QgbWRpb19kcml2ZXIgbXQ3NTMwX21kaW9fZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjYzLVxcdFxcdC5uYW1lID0gXFxcIm10NzUzMC1tZGlvXFxcIixcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyNjQ6XFx0XFx0Lm9mX21hdGNoX3RhYmxlID0gbXQ3NTMwX29mX21hdGNoLFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTI2NS1cXHR9LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQyMDo1MjoxNy44MjAwNzczODJaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTE3NTE5MjUxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBgbXQ3NTMwYCBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGxvb2tlZCBhdCB0aGlzIGRyaXZlciwgYW5kIGJhc2VkIG9uIGl0cyBtYXRjaGluZyBjcml0ZXJpYSB1c2luZyB0aGUgZGV2aWNlIHRyZWUgKGBvZl9tYXRjaF90YWJsZWApLCBpdCdzIGNsZWFyIHRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIsIHNwZWNpZmljYWxseSBmb3IgYSBNZWRpYVRlayBzd2l0Y2guIEluIGEgdHlwaWNhbCB4ODZfNjQgb3IgYXJtNjQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQg4oCTIHRoZSBraW5kIEknbSB1c2VkIHRvIHNlZWluZyB3aXRob3V0IGEgY3VzdG9tIGRldmljZSB0cmVlIGluamVjdGluZyB0aGUgbm9kZSDigJMgdGhpcyB0aGluZyBzaW1wbHkgKndvbid0KiBwcm9iZS4gVGhlIGBtdDc1MzBfc2V0dXBgIGZ1bmN0aW9uLCB3aGljaCBpcyBsaWtlbHkgd2hlcmUgYW55IGludGVyZXN0aW5nIGZ1bmN0aW9uYWxpdHkgcmVzaWRlcywgd2lsbCBuZXZlciBiZSBleGVjdXRlZCB1bmRlciB0aG9zZSBjaXJjdW1zdGFuY2VzLiBDb25zaWRlcmluZyBhbGwgdGhpcywgdGhlcmUncyBubyB3YXkgaXQncyBnb2luZyB0byBiZSBleHBvc2VkIGZvciBhbnkga2luZCBvZiBpbnRlcmVzdGluZyBmdXp6aW5nLiBTbywgSSdtIG1hcmtpbmcgaXQgYXMgV29ydGhGdXp6aW5nPWZhbHNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NzQ1LCJPdXRwdXRUb2tlbnMiOjEwOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDIwOjUyOjIyLjk5NTI3MzU3M1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBtdDc1MzAgRFNBIHN3aXRjaCBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyIGZvciBNZWRpYVRlayBzd2l0Y2hlcyAoTVQ3NTMwL01UNzUzMS9NVDc2MjEpLiBUaGlzIGRyaXZlciByZXF1aXJlcyBzcGVjaWZpYyBoYXJkd2FyZSBvciBhIGNvcnJlc3BvbmRpbmcgZGV2aWNlIHRyZWUgbm9kZSB0byBwcm9iZSBhbmQgaXMgbm90IHJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSB1c2VkIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG10NzUzMCBEU0Egc3dpdGNoIGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgZm9yIE1lZGlhVGVrIHN3aXRjaGVzIChNVDc1MzAvTVQ3NTMxL01UNzYyMSkuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHNwZWNpZmljIGhhcmR3YXJlIG9yIGEgY29ycmVzcG9uZGluZyBkZXZpY2UgdHJlZSBub2RlIHRvIHByb2JlIGFuZCBpcyBub3QgcmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFIHVzZWQgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQyMDo1MjoyMi45OTUyOTkxODNaIiwiU2VxIjoxNywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow2srvr[1] Phase: Running StartedAt: 2026-08-18 20:52:33 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2srvr[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-18 20:52:33 +0000 UTC FinishedAt: 2026-08-18 20:52:37 +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,}