Name: series-workflowddvxl Phase: Failed StartedAt: 2026-08-15 07:03:10 +0000 UTC FinishedAt: 2026-08-15 07:22:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowddvxl[0] Phase: Succeeded StartedAt: 2026-08-15 07:03:10 +0000 UTC FinishedAt: 2026-08-15 07:22:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowddvxl[0].run-triage Phase: Succeeded StartedAt: 2026-08-15 07:03:10 +0000 UTC FinishedAt: 2026-08-15 07:22:30 +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+CgkJCTx0ZD4yMDI2LzA4LzE1IDA3OjIxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIG1pc3NpbmcgY2FsbCB0byBgcmVmX3RyYWNrZXJfZGlyX2V4aXQoKWAgaW4gdGhlIGVycm9yIHBhdGggb2YgYGFsbG9jX25ldGRldl9tcXMoKWAuIFRoaXMgaXMgYSBzaW1wbGUgbWVtb3J5IGxlYWsgZml4IGZvciB0aGUgcmVmZXJlbmNlIHRyYWNraW5nIGluZnJhc3RydWN0dXJlICh3aGljaCBpcyBwcmltYXJpbHkgdXNlZCBmb3IgZGVidWdnaW5nKSBhbmQgZG9lcyBub3QgaW50cm9kdWNlIG5ldyBmdW5jdGlvbmFsIGxvZ2ljIG9yIGNvbXBsZXggc3RhdGUgY2hhbmdlcyB0aGF0IHdvdWxkIGJlbmVmaXQgZnJvbSBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwNzoyMTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGRmMmUxYTQyMWI3OTJlMWJiMzFjODVkZGQ1ZTk0NmRmMGU5YTI5YWJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEF1ZyAxNSAwNzoyMTozOCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvY29yZS9kZXYuYyBiL25ldC9jb3JlL2Rldi5jXG5pbmRleCBlY2U2NzAwNTM2ZDliLi5jMWIxNjhiMDU3MWUwIDEwMDY0NFxuLS0tIGEvbmV0L2NvcmUvZGV2LmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9jb3JlL2Rldi5jXG5AQCAtMTIxNjQsNiAmIzQzOzEyMTY0LDcgQEAgc3RydWN0IG5ldF9kZXZpY2UgKmFsbG9jX25ldGRldl9tcXMoaW50IHNpemVvZl9wcml2LCBjb25zdCBjaGFyICpuYW1lLFxuIFx0ZnJlZV9wZXJjcHUoZGV2LVx1MDAzZXBjcHVfcmVmY250KTtcbiBmcmVlX2RldjpcbiAjZW5kaWZcbiYjNDM7XHRyZWZfdHJhY2tlcl9kaXJfZXhpdChcdTAwMjZkZXYtXHUwMDNlcmVmY250X3RyYWNrZXIpO1xuIFx0a3ZmcmVlKGRldik7XG4gXHRyZXR1cm4gTlVMTDtcbiB9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDc6MjE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBtaXNzaW5nIGNhbGwgdG8gYHJlZl90cmFja2VyX2Rpcl9leGl0KClgIGluIHRoZSBlcnJvciBwYXRoIG9mIGBhbGxvY19uZXRkZXZfbXFzKClgLiBUaGlzIGlzIGEgc2ltcGxlIG1lbW9yeSBsZWFrIGZpeCBmb3IgdGhlIHJlZmVyZW5jZSB0cmFja2luZyBpbmZyYXN0cnVjdHVyZSAod2hpY2ggaXMgcHJpbWFyaWx5IHVzZWQgZm9yIGRlYnVnZ2luZykgYW5kIGRvZXMgbm90IGludHJvZHVjZSBuZXcgZnVuY3Rpb25hbCBsb2dpYyBvciBjb21wbGV4IHN0YXRlIGNoYW5nZXMgdGhhdCB3b3VsZCBiZW5lZml0IGZyb20gZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBkZjJlMWE0MjFiNzkyZTFiYjMxYzg1ZGRkNWU5NDZkZjBlOWEyOWFiCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBBdWcgMTUgMDc6MjE6MzggMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvY29yZS9kZXYuYyBiL25ldC9jb3JlL2Rldi5jCmluZGV4IGVjZTY3MDA1MzZkOWIuLmMxYjE2OGIwNTcxZTAgMTAwNjQ0Ci0tLSBhL25ldC9jb3JlL2Rldi5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9jb3JlL2Rldi5jCkBAIC0xMjE2NCw2ICYjNDM7MTIxNjQsNyBAQCBzdHJ1Y3QgbmV0X2RldmljZSAqYWxsb2NfbmV0ZGV2X21xcyhpbnQgc2l6ZW9mX3ByaXYsIGNvbnN0IGNoYXIgKm5hbWUsCiAJZnJlZV9wZXJjcHUoZGV2LSZndDtwY3B1X3JlZmNudCk7CiBmcmVlX2RldjoKICNlbmRpZgomIzQzOwlyZWZfdHJhY2tlcl9kaXJfZXhpdCgmYW1wO2Rldi0mZ3Q7cmVmY250X3RyYWNrZXIpOwogCWt2ZnJlZShkZXYpOwogCXJldHVybiBOVUxMOwogfQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwNzoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTU2CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhlIHNpdHVhdGlvbiwgcHJlc2VudGVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgYW4gZXhwZXJ0OgoKKipJbnZlc3RpZ2F0aW5nIGEgUmVzb3VyY2UgTGVhayBGaXggaW4gYGFsbG9jX25ldGRldl9tcXNgKioKCk9rYXksIEkmIzM5O3ZlIGdvdCBhIHBhdGNoIGhlcmUgdGhhdCYjMzk7cyBhZGRpbmcgYHJlZl90cmFja2VyX2Rpcl9leGl0KCZhbXA7ZGV2LSZndDtyZWZjbnRfdHJhY2tlcik7YCB0byB0aGUgYGFsbG9jX25ldGRldl9tcXNgIGZ1bmN0aW9uIHdpdGhpbiBgbmV0L2NvcmUvZGV2LmNgLiBJbW1lZGlhdGVseSwgbXkgYnJhaW4gZmxhZ3MgdGhpcyBhcyBhIHBvdGVudGlhbCBmaXggZm9yIGEgcmVzb3VyY2UgbGVhaywgc3BlY2lmaWNhbGx5IHdpdGhpbiBhbiBlcnJvciBoYW5kbGluZyBwYXRoLiBUaGUgdXNlIG9mIGEgcmVmZXJlbmNlIGNvdW50ZXIgdHJhY2tlciBpbmRpY2F0ZXMgdGhhdCBzb21lIHJlc291cmNlIGFsbG9jYXRpb24gaXMgaGFwcGVuaW5nIGluIHRoZSBzdWNjZXNzIHBhdGhzIGFuZCBzb21lIGZyZWVpbmcgaXMgcmVxdWlyZWQgaW4gdGhlIGVycm9yIHBhdGhzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aHkgdGhpcyBzcGVjaWZpYyBjbGVhbnVwIGlzIHJlcXVpcmVkLgoKTXkgZmlyc3QgdGhvdWdodCBpcyB0byBkaXZlIHJpZ2h0IGludG8gdGhlIGBhbGxvY19uZXRkZXZfbXFzYCBmdW5jdGlvbiBpdHNlbGYuIEkgbmVlZCB0byB0cmFjZSB0aGUgcmVzb3VyY2UgYWxsb2NhdGlvbnMgYW5kIGRlYWxsb2NhdGlvbnMgd2l0aGluIHRoYXQgZnVuY3Rpb24gdG8gdW5kZXJzdGFuZCB0aGUgZmxvdyBjb250cm9sLCBlcnJvciBoYW5kbGluZywgYW5kIHRoZSBjaXJjdW1zdGFuY2VzIHVuZGVyIHdoaWNoIHRoaXMgYHJlZl90cmFja2VyX2Rpcl9leGl0YCBjYWxsIGlzIG5lY2Vzc2FyeS4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3Igd2hlcmUgcmVzb3VyY2VzIGFyZSBhbGxvY2F0ZWQgYnV0IG5vdCBuZWNlc3NhcmlseSBmcmVlZCB3aGVuIHNvbWV0aGluZyBnb2VzIHdyb25nLiBUaGlzIHBhdGNoICpzdWdnZXN0cyogdGhhdCBzb21lIHNvcnQgb2YgcmVmZXJlbmNlIGlzIGJlaW5nIGhlbGQgaW4gdGhlIGZhaWx1cmUgcGF0aCB0aGF0IG5lZWRzIHRvIGJlIGRlY3JlbWVudGVkLiBJcyB0aGUgcmVzb3VyY2UgYmVpbmcgaGVsZCBkdWUgdG8gYW4gZWFybHkgcmV0dXJuLCBhbmQgaXMgdGhlIHRyYWNrZXIgcHJvcGVybHkgaW5pdGlhbGl6ZWQgdG8gYWNjb3VudCBmb3IgdGhlIGFsbG9jYXRpb24gYW5kIGRlYWxsb2NhdGlvbj8gSXMgdGhlIGNsZWFudXAgY29ycmVjdD8KCkkmIzM5O2xsIGJlIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gYW55IG5lc3RlZCBmdW5jdGlvbiBjYWxscywgZXNwZWNpYWxseSB0aG9zZSB0aGF0IGludm9sdmUgbWVtb3J5IGFsbG9jYXRpb24sIHJlc291cmNlIHJlZ2lzdHJhdGlvbiwgYW5kIHVsdGltYXRlbHksIGRlYWxsb2NhdGlvbi4gSSYjMzk7bGwgbmVlZCB0byBjb25maXJtIHRoYXQgdGhpcyBgcmVmX3RyYWNrZXJfZGlyX2V4aXRgIGNhbGwgaXMgaW4gdGhlIHJpZ2h0IHBsYWNlLCB0aGF0IGl0JiMzOTtzIGJlaW5nIHRyaWdnZXJlZCBjb3JyZWN0bHksIGFuZCBtb3N0IGltcG9ydGFudGx5LCB0aGF0IGl0JiMzOTtzIGFjdHVhbGx5IHJlc29sdmluZyB0aGUgbGVhayBvciBpcyBhdCBsZWFzdCBjb3JyZWN0bHkgY2xlYW5pbmcgdXAgaW4gYW4gZXJyb3IgcGF0aC4gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGl0JiMzOTtzIHRoZSBjb3JyZWN0IGtpbmQgb2YgcmVzb3VyY2UgdHJhY2tpbmcuIERvZXMgaXQgYWRkcmVzcyB0aGUgc3BlY2lmaWMgaXNzdWUgdGhhdCB0aGUgdHJhY2tlciBpcyBpbnRlbmRlZCBmb3I/CgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDc6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvY29yZS9kZXYuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEyMTUwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzEyMTUwOlx0XHRkZXYtXHUwMDNlZ3JvdXAgPSBJTklUX05FVERFVl9HUk9VUDtcbjEyMTUxOlx0XHRpZiAoIWRldi1cdTAwM2VldGh0b29sX29wcylcbjEyMTUyOlx0XHRcdGRldi1cdTAwM2VldGh0b29sX29wcyA9IFx1MDAyNmRlZmF1bHRfZXRodG9vbF9vcHM7XG4xMjE1MzpcdFxuMTIxNTQ6XHRcdG5mX2hvb2tfbmV0ZGV2X2luaXQoZGV2KTtcbjEyMTU1Olx0XG4xMjE1NjpcdFx0cmV0dXJuIGRldjtcbjEyMTU3Olx0XG4xMjE1ODpcdGZyZWVfYWxsOlxuMTIxNTk6XHRcdGZyZWVfbmV0ZGV2KGRldik7XG4xMjE2MDpcdFx0cmV0dXJuIE5VTEw7XG4xMjE2MTpcdFxuMTIxNjI6XHRmcmVlX3BjcHU6XG4xMjE2MzpcdCNpZmRlZiBDT05GSUdfUENQVV9ERVZfUkVGQ05UXG4xMjE2NDpcdFx0ZnJlZV9wZXJjcHUoZGV2LVx1MDAzZXBjcHVfcmVmY250KTtcbjEyMTY1Olx0ZnJlZV9kZXY6XG4xMjE2NjpcdCNlbmRpZlxuMTIxNjc6XHRcdHJlZl90cmFja2VyX2Rpcl9leGl0KFx1MDAyNmRldi1cdTAwM2VyZWZjbnRfdHJhY2tlcik7XG4xMjE2ODpcdFx0a3ZmcmVlKGRldik7XG4xMjE2OTpcdFx0cmV0dXJuIE5VTEw7XG4xMjE3MDpcdH1cbjEyMTcxOlx0RVhQT1JUX1NZTUJPTChhbGxvY19uZXRkZXZfbXFzKTtcbjEyMTcyOlx0XG4xMjE3MzpcdHN0YXRpYyB2b2lkIG5ldGRldl9uYXBpX2V4aXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbjEyMTc0Olx0e1xuMTIxNzU6XHRcdGlmICghbGlzdF9lbXB0eShcdTAwMjZkZXYtXHUwMDNlbmFwaV9saXN0KSkge1xuMTIxNzY6XHRcdFx0c3RydWN0IG5hcGlfc3RydWN0ICpwLCAqbjtcbjEyMTc3Olx0XG4xMjE3ODpcdFx0XHRuZXRkZXZfbG9jayhkZXYpO1xuMTIxNzk6XHRcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHAsIG4sIFx1MDAyNmRldi1cdTAwM2VuYXBpX2xpc3QsIGRldl9saXN0KVxuMTIxODA6XHRcdFx0XHRfX25ldGlmX25hcGlfZGVsX2xvY2tlZChwKTtcbjEyMTgxOlx0XHRcdG5ldGRldl91bmxvY2soZGV2KTtcbjEyMTgyOlx0XG4xMjE4MzpcdFx0XHRzeW5jaHJvbml6ZV9uZXQoKTtcbjEyMTg0Olx0XHR9XG4xMjE4NTpcdFxuMTIxODY6XHRcdGt2ZnJlZShkZXYtXHUwMDNlbmFwaV9jb25maWcpO1xuMTIxODc6XHR9XG4xMjE4ODpcdFxuMTIxODk6XHQvKipcbjEyMTkwOlx0ICogZnJlZV9uZXRkZXYgLSBmcmVlIG5ldHdvcmsgZGV2aWNlXG4xMjE5MTpcdCAqIEBkZXY6IGRldmljZVxuMTIxOTI6XHQgKlxuMTIxOTM6XHQgKiBUaGlzIGZ1bmN0aW9uIGRvZXMgdGhlIGxhc3Qgc3RhZ2Ugb2YgZGVzdHJveWluZyBhbiBhbGxvY2F0ZWQgZGV2aWNlXG4xMjE5NDpcdCAqIGludGVyZmFjZS4gVGhlIHJlZmVyZW5jZSB0byB0aGUgZGV2aWNlIG9iamVjdCBpcyByZWxlYXNlZC4gSWYgdGhpc1xuMTIxOTU6XHQgKiBpcyB0aGUgbGFzdCByZWZlcmVuY2UgdGhlbiBpdCB3aWxsIGJlIGZyZWVkLk11c3QgYmUgY2FsbGVkIGluIHByb2Nlc3NcbjEyMTk2Olx0ICogY29udGV4dC5cbjEyMTk3Olx0ICovXG4xMjE5ODpcdHZvaWQgZnJlZV9uZXRkZXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbjEyMTk5Olx0e1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDA3OjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyMTIKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAyMDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgU3VidGxlIE5ldHdvcmsgRGV2aWNlIEFsbG9jYXRpb24gUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0JiMzOTtzIGEgbWlub3IgY2hhbmdlIGluIGBhbGxvY19uZXRkZXZfbXFzYC4gVGhleSYjMzk7cmUgYWRkaW5nIGByZWZfdHJhY2tlcl9kaXJfZXhpdCgmYW1wO2Rldi0mZ3Q7cmVmY250X3RyYWNrZXIpYCB0byB0aGUgZXJyb3IgaGFuZGxpbmcgcGF0aCwgc3BlY2lmaWNhbGx5IGluIGBmcmVlX3BjcHVgIGFuZCBgZnJlZV9kZXZgLiBSaWdodCBvZmYgdGhlIGJhdCwgSSByZWNvZ25pemUgdGhpcyBpcyBhYm91dCBwcmV2ZW50aW5nIHNvbWUga2luZCBvZiByZXNvdXJjZSBsZWFrIG9yLCBwb3RlbnRpYWxseSwgYSBtb3JlIHNlcmlvdXMgaXNzdWUgd2hlbiB0aGUgYWxsb2NhdGlvbiBmYWlscy4gQSBxdWljayByZXZpZXcgYW5kIHRoZSBmaXggbG9va3MgY29ycmVjdC4KCk15IGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtXb3J0aCBmdXp6aW5nPyYjMzQ7IEJ1dCBpdCYjMzk7cyBhICp2ZXJ5KiBzcGVjaWZpYyBmYWlsdXJlIHNjZW5hcmlvLiBUbyBwcm9wZXJseSBmdXp6IHRoaXMsIEkmIzM5O2QgcHJvYmFibHkgbmVlZCB0byBpbmplY3QgZmF1bHRzIGludG8gYGFsbG9jX25ldGRldl9tcXNgIGl0c2VsZiwgYW5kIHRoYXQmIzM5O3MgYSAqY29yZSogZnVuY3Rpb24uIE5vdCBpZGVhbC4gSXQmIzM5O3MgdXNlZCBldmVyeXdoZXJlLiBUaGVuIEkgcmVtZW1iZXIgdGhhdCB0aGlzIGlzIGZvciAqYW55KiBuZXR3b3JrIGRldmljZSBjcmVhdGlvbiBzbyBJIHJlLWV2YWx1YXRlLiBJZiBpdCBmYWlscywgaXQgaXMgc3VwcG9zZWQgdG8gY2xlYW4gdXAsIHdoaWNoIGlzIHdoYXQgdGhpcyBwYXRjaCBhcHBlYXJzIHRvIGJlIGRvaW5nLgoKVGhlbiBJIHBhdXNlZCB0byB0aGluayBhYm91dCB3aGF0IGlzIHNwZWNpZmljIGFib3V0IGByZWZfdHJhY2tlcl9kaXJfZXhpdGAuIFRoZSBjb250ZXh0IHJlbWluZHMgbWUgdGhhdCB0aGUgYHJlZl90cmFja2VyYCBzdHVmZiBpcyBvbmx5IGVuYWJsZWQgaWYgYENPTkZJR19SRUZfVFJBQ0tFUmAgaXMgZW5hYmxlZCwgcmlnaHQ/IFNvLCBpcyAqdGhhdCogY29uZmlnIG5lZWRlZD8gQW5kIGlzIGl0IGVuYWJsZWQgaW4gdGhlIHN5emthbGxlciBjb25maWd1cmF0aW9uLiBNeSBpbnRlcm5hbCBmbGFncyBqdXN0IGZsaXBwZWQuIE9rYXksIGl0IGxvb2tzIGxpa2UgaXQgaXMgc2V0LiBJZiBgQ09ORklHX1JFRl9UUkFDS0VSYCBpc24mIzM5O3QgZW5hYmxlZCwgdGhlbiB0aGlzIGZ1bmN0aW9uIGNhbGwgd2lsbCBiZSBjb21waWxlZCBvdXQuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCYjMzk7cyBhY2NvdW50ZWQgZm9yLiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgaWYgYENPTkZJR19SRUZfVFJBQ0tFUmAgaXMgZXZlbiByZXF1aXJlZCBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDA3OjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3JlZl90cmFja2VyX2Rpcl9leGl0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvZHBsbC9kcGxsX2NvcmUuYz0xMTM9c3RhdGljIHZvaWQgX19kcGxsX2RldmljZV9wdXQoc3RydWN0IGRwbGxfZGV2aWNlICpkcGxsLCBkcGxsX3RyYWNrZXIgKnRyYWNrZXIpXG4tLVxuZHJpdmVycy9kcGxsL2RwbGxfY29yZS5jLTEyMS1cdFx0V0FSTl9PTighbGlzdF9lbXB0eShcdTAwMjZkcGxsLVx1MDAzZXJlZ2lzdHJhdGlvbl9saXN0KSk7XG5kcml2ZXJzL2RwbGwvZHBsbF9jb3JlLmM6MTIyOlx0XHRyZWZfdHJhY2tlcl9kaXJfZXhpdChcdTAwMjZkcGxsLVx1MDAzZXJlZmNudF90cmFja2VyKTtcbmRyaXZlcnMvZHBsbC9kcGxsX2NvcmUuYy0xMjMtXHRcdGtmcmVlKGRwbGwpO1xuLS1cbmRyaXZlcnMvZHBsbC9kcGxsX2NvcmUuYz0xNTA9c3RhdGljIHZvaWQgX19kcGxsX3Bpbl9wdXQoc3RydWN0IGRwbGxfcGluICpwaW4sIGRwbGxfdHJhY2tlciAqdHJhY2tlcilcbi0tXG5kcml2ZXJzL2RwbGwvZHBsbF9jb3JlLmMtMTYwLVx0XHRkcGxsX3Bpbl9pZHhfZnJlZShwaW4tXHUwMDNlcGluX2lkeCk7XG5kcml2ZXJzL2RwbGwvZHBsbF9jb3JlLmM6MTYxOlx0XHRyZWZfdHJhY2tlcl9kaXJfZXhpdChcdTAwMjZwaW4tXHUwMDNlcmVmY250X3RyYWNrZXIpO1xuZHJpdmVycy9kcGxsL2RwbGxfY29yZS5jLTE2Mi1cdFx0a2ZyZWVfcmN1KHBpbiwgcmN1KTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZGlzcGxheS9kcm1fZHBfdHVubmVsLmM9MTkwMD1zdGF0aWMgdm9pZCBkZXN0cm95X21ncihzdHJ1Y3QgZHJtX2RwX3R1bm5lbF9tZ3IgKm1ncilcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZGlzcGxheS9kcm1fZHBfdHVubmVsLmMtMTkwOS0jaWZkZWYgQ09ORklHX0RSTV9ESVNQTEFZX0RQX1RVTk5FTF9TVEFURV9ERUJVR1xuZHJpdmVycy9ncHUvZHJtL2Rpc3BsYXkvZHJtX2RwX3R1bm5lbC5jOjE5MTA6XHRyZWZfdHJhY2tlcl9kaXJfZXhpdChcdTAwMjZtZ3ItXHUwMDNlcmVmX3RyYWNrZXIpO1xuZHJpdmVycy9ncHUvZHJtL2Rpc3BsYXkvZHJtX2RwX3R1bm5lbC5jLTE5MTEtI2VuZGlmXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVudGltZV9wbS5jPTg2PXN0YXRpYyB2b2lkIHVudHJhY2tfYWxsX2ludGVsX3J1bnRpbWVfcG1fd2FrZXJlZnMoc3RydWN0IGludGVsX3J1bnRpbWVfcG0gKnJwbSlcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3J1bnRpbWVfcG0uYy04Ny17XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmM6ODg6XHRyZWZfdHJhY2tlcl9kaXJfZXhpdChcdTAwMjZycG0tXHUwMDNlZGVidWcpO1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVudGltZV9wbS5jLTg5LX1cbi0tXG5mcy9idHJmcy9kZWxheWVkLWlub2RlLmM9MTM1PXN0YXRpYyBzdHJ1Y3QgYnRyZnNfZGVsYXllZF9ub2RlICpidHJmc19nZXRfb3JfY3JlYXRlX2RlbGF5ZWRfbm9kZShcbi0tXG5mcy9idHJmcy9kZWxheWVkLWlub2RlLmMtMTgyLVx0YnRyZnNfZGVsYXllZF9ub2RlX3JlZl90cmFja2VyX2ZyZWUobm9kZSwgXHUwMDI2bm9kZS1cdTAwM2Vpbm9kZV9jYWNoZV90cmFja2VyKTtcbmZzL2J0cmZzL2RlbGF5ZWQtaW5vZGUuYzoxODM6XHRidHJmc19kZWxheWVkX25vZGVfcmVmX3RyYWNrZXJfZGlyX2V4aXQobm9kZSk7XG5mcy9idHJmcy9kZWxheWVkLWlub2RlLmMtMTg0LVx0a21lbV9jYWNoZV9mcmVlKGRlbGF5ZWRfbm9kZV9jYWNoZSwgbm9kZSk7XG4tLVxuZnMvYnRyZnMvZGVsYXllZC1pbm9kZS5jPTI4MT1zdGF0aWMgdm9pZCBfX2J0cmZzX3JlbGVhc2VfZGVsYXllZF9ub2RlKFxuLS1cbmZzL2J0cmZzL2RlbGF5ZWQtaW5vZGUuYy0zMDgtXHRcdEFTU0VSVChyZWZjb3VudF9yZWFkKFx1MDAyNmRlbGF5ZWRfbm9kZS1cdTAwM2VyZWZzKSA9PSAwKTtcbmZzL2J0cmZzL2RlbGF5ZWQtaW5vZGUuYzozMDk6XHRcdGJ0cmZzX2RlbGF5ZWRfbm9kZV9yZWZfdHJhY2tlcl9kaXJfZXhpdChkZWxheWVkX25vZGUpO1xuZnMvYnRyZnMvZGVsYXllZC1pbm9kZS5jLTMxMC1cdFx0a21lbV9jYWNoZV9mcmVlKGRlbGF5ZWRfbm9kZV9jYWNoZSwgZGVsYXllZF9ub2RlKTtcbi0tXG5mcy9idHJmcy9kZWxheWVkLWlub2RlLmg9MTg0PXN0YXRpYyBpbmxpbmUgdm9pZCBidHJmc19kZWxheWVkX25vZGVfcmVmX3RyYWNrZXJfZGlyX2luaXQoc3RydWN0IGJ0cmZzX2RlbGF5ZWRfbm9kZSAqbm9kZSlcbi0tXG5mcy9idHJmcy9kZWxheWVkLWlub2RlLmgtMTkzLVxuZnMvYnRyZnMvZGVsYXllZC1pbm9kZS5oOjE5NDpzdGF0aWMgaW5saW5lIHZvaWQgYnRyZnNfZGVsYXllZF9ub2RlX3JlZl90cmFja2VyX2Rpcl9leGl0KHN0cnVjdCBidHJmc19kZWxheWVkX25vZGUgKm5vZGUpXG5mcy9idHJmcy9kZWxheWVkLWlub2RlLmgtMTk1LXtcbi0tXG5mcy9idHJmcy9kZWxheWVkLWlub2RlLmgtMTk4LVxuZnMvYnRyZnMvZGVsYXllZC1pbm9kZS5oOjE5OTpcdHJlZl90cmFja2VyX2Rpcl9leGl0KFx1MDAyNm5vZGUtXHUwMDNlcmVmX2Rpci5kaXIpO1xuZnMvYnRyZnMvZGVsYXllZC1pbm9kZS5oLTIwMC19XG4tLVxuZnMvYnRyZnMvZGVsYXllZC1pbm9kZS5oPTIzNz1zdGF0aWMgaW5saW5lIHZvaWQgYnRyZnNfZGVsYXllZF9ub2RlX3JlZl90cmFja2VyX2Rpcl9pbml0KHN0cnVjdCBidHJmc19kZWxheWVkX25vZGUgKm5vZGUpIHsgfVxuZnMvYnRyZnMvZGVsYXllZC1pbm9kZS5oLTIzOC1cbmZzL2J0cmZzL2RlbGF5ZWQtaW5vZGUuaDoyMzk6c3RhdGljIGlubGluZSB2b2lkIGJ0cmZzX2RlbGF5ZWRfbm9kZV9yZWZfdHJhY2tlcl9kaXJfZXhpdChzdHJ1Y3QgYnRyZnNfZGVsYXllZF9ub2RlICpub2RlKSB7IH1cbmZzL2J0cmZzL2RlbGF5ZWQtaW5vZGUuaC0yNDAtXG4tLVxuaW5jbHVkZS9saW51eC9yZWZfdHJhY2tlci5oPTU4PXN0YXRpYyBpbmxpbmUgdm9pZCByZWZfdHJhY2tlcl9kaXJfaW5pdChzdHJ1Y3QgcmVmX3RyYWNrZXJfZGlyICpkaXIsXG4tLVxuaW5jbHVkZS9saW51eC9yZWZfdHJhY2tlci5oLTczLVxuaW5jbHVkZS9saW51eC9yZWZfdHJhY2tlci5oOjc0OnZvaWQgcmVmX3RyYWNrZXJfZGlyX2V4aXQoc3RydWN0IHJlZl90cmFja2VyX2RpciAqZGlyKTtcbmluY2x1ZGUvbGludXgvcmVmX3RyYWNrZXIuaC03NS1cbi0tXG5pbmNsdWRlL2xpbnV4L3JlZl90cmFja2VyLmg9MTAzPXZvaWQgcmVmX3RyYWNrZXJfZGlyX3N5bWxpbmsoc3RydWN0IHJlZl90cmFja2VyX2RpciAqZGlyLCBjb25zdCBjaGFyICpmbXQsIC4uLilcbi0tXG5pbmNsdWRlL2xpbnV4L3JlZl90cmFja2VyLmgtMTA2LVxuaW5jbHVkZS9saW51eC9yZWZfdHJhY2tlci5oOjEwNzpzdGF0aWMgaW5saW5lIHZvaWQgcmVmX3RyYWNrZXJfZGlyX2V4aXQoc3RydWN0IHJlZl90cmFja2VyX2RpciAqZGlyKVxuaW5jbHVkZS9saW51eC9yZWZfdHJhY2tlci5oLTEwOC17XG4tLVxubGliL3JlZl90cmFja2VyLmM9MjM9c3RydWN0IHJlZl90cmFja2VyX2Rpcl9zdGF0cyB7XG4tLVxubGliL3JlZl90cmFja2VyLmMtMzYtICogcmVmX3RyYWNrZXJfZGlyX2luaXQoKSBpcyB1c3VhbGx5IGNhbGxlZCBpbiBhbGxvY2F0aW9uLXNhZmUgY29udGV4dHMsIGJ1dFxubGliL3JlZl90cmFja2VyLmM6Mzc6ICogdGhlIHNhbWUgaXMgbm90IHRydWUgb2YgcmVmX3RyYWNrZXJfZGlyX2V4aXQoKSB3aGljaCBjYW4gYmUgY2FsbGVkIGZyb21cbmxpYi9yZWZfdHJhY2tlci5jLTM4LSAqIGFueXdoZXJlIGFuIG9iamVjdCBpcyBmcmVlZC4gUmVtb3ZpbmcgZGVidWdmcyBkZW50cmllcyBpcyBhIGJsb2NraW5nXG4tLVxubGliL3JlZl90cmFja2VyLmMtNDEtICogRWFjaCBkZW50cnkgaXMgdHJhY2tlZCBpbiB0aGUgYXBwcm9wcmlhdGUgeGFycmF5LiAgV2hlblxubGliL3JlZl90cmFja2VyLmM6NDI6ICogcmVmX3RyYWNrZXJfZGlyX2V4aXQoKSBpcyBjYWxsZWQsIGl0cyBlbnRyaWVzIGluIHRoZSB4YXJyYXlzIGFyZSBtYXJrZWQgYW5kXG5saWIvcmVmX3RyYWNrZXIuYy00My0gKiB0aGUgd29ya3F1ZXVlIGpvYiBpcyBzY2hlZHVsZWQuIFRoZSB3b3JrZXIgdGhlbiBydW5zIGFuZCBkZWxldGVzIGFueSBtYXJrZWRcbi0tXG5saWIvcmVmX3RyYWNrZXIuYz0yMTc9RVhQT1JUX1NZTUJPTChyZWZfdHJhY2tlcl9kaXJfc25wcmludCk7XG5saWIvcmVmX3RyYWNrZXIuYy0yMTgtXG5saWIvcmVmX3RyYWNrZXIuYzoyMTk6dm9pZCByZWZfdHJhY2tlcl9kaXJfZXhpdChzdHJ1Y3QgcmVmX3RyYWNrZXJfZGlyICpkaXIpXG5saWIvcmVmX3RyYWNrZXIuYy0yMjAte1xuLS1cbmxpYi9yZWZfdHJhY2tlci5jLTI0OS19XG5saWIvcmVmX3RyYWNrZXIuYzoyNTA6RVhQT1JUX1NZTUJPTChyZWZfdHJhY2tlcl9kaXJfZXhpdCk7XG5saWIvcmVmX3RyYWNrZXIuYy0yNTEtXG4tLVxubGliL3JlZl90cmFja2VyLmM9MzY5PXN0YXRpYyBpbnQgcmVmX3RyYWNrZXJfZGVidWdmc19zaG93KHN0cnVjdCBzZXFfZmlsZSAqZiwgdm9pZCAqdilcbi0tXG5saWIvcmVmX3RyYWNrZXIuYy0zNzYtXHQvKlxubGliL3JlZl90cmFja2VyLmM6Mzc3Olx0ICogXCYjMzQ7ZGlyXCYjMzQ7IG1heSBub3QgZXhpc3QgYXQgdGhpcyBwb2ludCBpZiByZWZfdHJhY2tlcl9kaXJfZXhpdCgpIGhhc1xubGliL3JlZl90cmFja2VyLmMtMzc4LVx0ICogYWxyZWFkeSBiZWVuIGNhbGxlZC4gVGFrZSBjYXJlIG5vdCB0byBkZXJlZmVyZW5jZSBpdCB1bnRpbCBpdHNcbi0tXG5saWIvcmVmX3RyYWNrZXIuYy0zODMtXHQgKiBkZWFkLCB0aGVuIGl0JiMzOTtzIHNhZmUgdG8gdGFrZSBkaXItXHUwMDNlbG9jayB3aGljaCBwcmV2ZW50c1xubGliL3JlZl90cmFja2VyLmM6Mzg0Olx0ICogcmVmX3RyYWNrZXJfZGlyX2V4aXQoKSBmcm9tIGNvbXBsZXRpbmcuIE9uY2UgdGhlIGRpci1cdTAwM2Vsb2NrIGlzXG5saWIvcmVmX3RyYWNrZXIuYy0zODUtXHQgKiBhY3F1aXJlZCwgdGhlIHhhX2xvY2sgY2FuIGJlIHJlbGVhc2VkLiBBbGwgb2YgdGhpcyBtdXN0IGJlIElSUS1zYWZlLlxuLS1cbmxpYi90ZXN0X3JlZl90cmFja2VyLmM9NjM9c3RhdGljIGludCBfX2luaXQgdGVzdF9yZWZfdHJhY2tlcl9pbml0KHZvaWQpXG4tLVxubGliL3Rlc3RfcmVmX3RyYWNrZXIuYy0xMDItXHQvKiBUaGlzIHNob3VsZCB3YXJuIGFib3V0IHRyYWNrZXJbMF0gXHUwMDI2IHRyYWNrZXJbMV0gYmVpbmcgbm90IGZyZWVkLiAqL1xubGliL3Rlc3RfcmVmX3RyYWNrZXIuYzoxMDM6XHRyZWZfdHJhY2tlcl9kaXJfZXhpdChcdTAwMjZyZWZfZGlyKTtcbmxpYi90ZXN0X3JlZl90cmFja2VyLmMtMTA0LVxuLS1cbm5ldC9jb3JlL2Rldi5jPTEyMDM2PXN0cnVjdCBuZXRfZGV2aWNlICphbGxvY19uZXRkZXZfbXFzKGludCBzaXplb2ZfcHJpdiwgY29uc3QgY2hhciAqbmFtZSxcbi0tXG5uZXQvY29yZS9kZXYuYy0xMjE2Ni0jZW5kaWZcbm5ldC9jb3JlL2Rldi5jOjEyMTY3Olx0cmVmX3RyYWNrZXJfZGlyX2V4aXQoXHUwMDI2ZGV2LVx1MDAzZXJlZmNudF90cmFja2VyKTtcbm5ldC9jb3JlL2Rldi5jLTEyMTY4LVx0a3ZmcmVlKGRldik7XG4tLVxubmV0L2NvcmUvZGV2LmM9MTIxOTg9dm9pZCBmcmVlX25ldGRldihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbm5ldC9jb3JlL2Rldi5jLTEyMjI4LVxubmV0L2NvcmUvZGV2LmM6MTIyMjk6XHRyZWZfdHJhY2tlcl9kaXJfZXhpdChcdTAwMjZkZXYtXHUwMDNlcmVmY250X3RyYWNrZXIpO1xubmV0L2NvcmUvZGV2LmMtMTIyMzAtI2lmZGVmIENPTkZJR19QQ1BVX0RFVl9SRUZDTlRcbi0tXG5uZXQvY29yZS9uZXRfbmFtZXNwYWNlLmM9NTMwPXZvaWQgbmV0X3Bhc3NpdmVfZGVjKHN0cnVjdCBuZXQgKm5ldClcbi0tXG5uZXQvY29yZS9uZXRfbmFtZXNwYWNlLmMtNTM1LVx0XHQvKiBUaGVyZSBzaG91bGQgbm90IGJlIGFueSB0cmFja2VycyBsZWZ0IHRoZXJlLiAqL1xubmV0L2NvcmUvbmV0X25hbWVzcGFjZS5jOjUzNjpcdFx0cmVmX3RyYWNrZXJfZGlyX2V4aXQoXHUwMDI2bmV0LVx1MDAzZW5vdHJlZmNudF90cmFja2VyKTtcbm5ldC9jb3JlL25ldF9uYW1lc3BhY2UuYy01MzctXG4tLVxubmV0L2NvcmUvbmV0X25hbWVzcGFjZS5jPTc0NT12b2lkIF9fcHV0X25ldChzdHJ1Y3QgbmV0ICpuZXQpXG5uZXQvY29yZS9uZXRfbmFtZXNwYWNlLmMtNzQ2LXtcbm5ldC9jb3JlL25ldF9uYW1lc3BhY2UuYzo3NDc6XHRyZWZfdHJhY2tlcl9kaXJfZXhpdChcdTAwMjZuZXQtXHUwMDNlcmVmY250X3RyYWNrZXIpO1xubmV0L2NvcmUvbmV0X25hbWVzcGFjZS5jLTc0OC1cdC8qIENsZWFudXAgdGhlIG5ldHdvcmsgbmFtZXNwYWNlIGluIHByb2Nlc3MgY29udGV4dCAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDA3OjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYzMjQKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUmVmIFRyYWNrZXIgQ2xlYW4tdXAgaW4gYGFsbG9jX25ldGRldl9tcXNgIEVycm9yIFBhdGgqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBhZGRpbmcgYHJlZl90cmFja2VyX2Rpcl9leGl0YCB0byB0aGUgZXJyb3IgcGF0aCBpbiBgYWxsb2NfbmV0ZGV2X21xc2AuIFJpZ2h0LCBhIGRpYWdub3N0aWMgY2hhbmdlIHNwZWNpZmljYWxseSBmb3Igc3lzdGVtcyB3aXRoIGBDT05GSUdfUkVGX1RSQUNLRVJgIGVuYWJsZWQuIEl0IGxvb2tzIGxpa2UgaXQmIzM5O3MganVzdCBhYm91dCBjbGVhbmluZyB1cCB0aGUgcmVmZXJlbmNlIHRyYWNrZXIsIHdoaWNoIGlzIGdvb2QuIElmIHRoaXMgaXNuJiMzOTt0IGNhbGxlZCwgaXQmIzM5O3MgcG9zc2libGUgdGhlcmUgY291bGQgYmUgYSBtZW1vcnkgbGVhayBpbiB0aGUgdHJhY2tlciBpdHNlbGYsIG9yIGF0IGxlYXN0IHdlJiMzOTtkIHNlZSBzb21lIHdhcm5pbmdzLiBJIG5lZWQgdG8gdGFrZSBhIHF1aWNrIGxvb2sgYXQgdGhlIGltcGxlbWVudGF0aW9uIG9mIGByZWZfdHJhY2tlcl9kaXJfZXhpdGAgdG8gYmUgc3VyZSBJJiMzOTttIGZvbGxvd2luZyB0aGUgbG9naWMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDc6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtsaWIvcmVmX3RyYWNrZXIuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIxOSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjE5Olx0dm9pZCByZWZfdHJhY2tlcl9kaXJfZXhpdChzdHJ1Y3QgcmVmX3RyYWNrZXJfZGlyICpkaXIpXG4gMjIwOlx0e1xuIDIyMTpcdFx0c3RydWN0IHJlZl90cmFja2VyICp0cmFja2VyLCAqbjtcbiAyMjI6XHRcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4gMjIzOlx0XHRib29sIGxlYWsgPSBmYWxzZTtcbiAyMjQ6XHRcbiAyMjU6XHRcdGRpci1cdTAwM2VkZWFkID0gdHJ1ZTtcbiAyMjY6XHRcdC8qXG4gMjI3Olx0XHQgKiBUaGUgeGFycmF5IGVudHJpZXMgbXVzdCBiZSBtYXJrZWQgYmVmb3JlIHRoZSBkaXItXHUwMDNlbG9jayBpcyB0YWtlbiB0b1xuIDIyODpcdFx0ICogcHJvdGVjdCBzaW11bHRhbmVvdXMgZGVidWdmcyByZWFkZXJzLlxuIDIyOTpcdFx0ICovXG4gMjMwOlx0XHRyZWZfdHJhY2tlcl9kZWJ1Z2ZzX21hcmsoZGlyKTtcbiAyMzE6XHRcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmRpci1cdTAwM2Vsb2NrLCBmbGFncyk7XG4gMjMyOlx0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUodHJhY2tlciwgbiwgXHUwMDI2ZGlyLVx1MDAzZXF1YXJhbnRpbmUsIGhlYWQpIHtcbiAyMzM6XHRcdFx0bGlzdF9kZWwoXHUwMDI2dHJhY2tlci1cdTAwM2VoZWFkKTtcbiAyMzQ6XHRcdFx0a2ZyZWUodHJhY2tlcik7XG4gMjM1Olx0XHRcdGRpci1cdTAwM2VxdWFyYW50aW5lX2F2YWlsJiM0MzsmIzQzOztcbiAyMzY6XHRcdH1cbiAyMzc6XHRcdGlmICghbGlzdF9lbXB0eShcdTAwMjZkaXItXHUwMDNlbGlzdCkpIHtcbiAyMzg6XHRcdFx0cmVmX3RyYWNrZXJfZGlyX3ByaW50X2xvY2tlZChkaXIsIDE2KTtcbiAyMzk6XHRcdFx0bGVhayA9IHRydWU7XG4gMjQwOlx0XHRcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZSh0cmFja2VyLCBuLCBcdTAwMjZkaXItXHUwMDNlbGlzdCwgaGVhZCkge1xuIDI0MTpcdFx0XHRcdGxpc3RfZGVsKFx1MDAyNnRyYWNrZXItXHUwMDNlaGVhZCk7XG4gMjQyOlx0XHRcdFx0a2ZyZWUodHJhY2tlcik7XG4gMjQzOlx0XHRcdH1cbiAyNDQ6XHRcdH1cbiAyNDU6XHRcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2ZGlyLVx1MDAzZWxvY2ssIGZsYWdzKTtcbiAyNDY6XHRcdFdBUk5fT05fT05DRShsZWFrKTtcbiAyNDc6XHRcdFdBUk5fT05fT05DRShyZWZjb3VudF9yZWFkKFx1MDAyNmRpci1cdTAwM2V1bnRyYWNrZWQpICE9IDEpO1xuIDI0ODpcdFx0V0FSTl9PTl9PTkNFKHJlZmNvdW50X3JlYWQoXHUwMDI2ZGlyLVx1MDAzZW5vX3RyYWNrZXIpICE9IDEpO1xuIDI0OTpcdH1cbiAyNTA6XHRFWFBPUlRfU1lNQk9MKHJlZl90cmFja2VyX2Rpcl9leGl0KTtcbiAyNTE6XHRcbiAyNTI6XHRpbnQgcmVmX3RyYWNrZXJfYWxsb2Moc3RydWN0IHJlZl90cmFja2VyX2RpciAqZGlyLFxuIDI1MzpcdFx0XHQgICAgICBzdHJ1Y3QgcmVmX3RyYWNrZXIgKip0cmFja2VycCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwNzoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MTkzCgkJCQkJCQlvdXRwdXQ6IDEwMAoJCQkJCQkJdGhvdWdodHM6IDIyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50OiBOb3QgV29ydGggRnV6emluZyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IGluY2x1ZGVzIGByZWZfdHJhY2tlcl9kaXJfZXhpdGAuIE15IGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDttZW1vcnkgbGVhayBmaXggZm9yIGBhbGxvY19uZXRkZXZfbXFzYCBvbiB0aGUgZXJyb3IgcGF0aCDigJMgc2hvdWxkIHdlIGJvdGhlciBmdXp6aW5nIHRoaXM/JiMzNDsgSXQmIzM5O3MgYSBjbGVhbnVwIGZ1bmN0aW9uLCByZWFsbHksIGp1c3QgY2FsbGluZyBgcmVmX3RyYWNrZXJfZGlyX2V4aXRgLiBBIHZlcnkgc3RyYWlnaHRmb3J3YXJkIG1lbW9yeSBsZWFrIGZpeCwgbm90aGluZyBjb21wbGljYXRlZC4KCkkmIzM5O20gbGVhbmluZyB0b3dhcmRzICYjMzQ7bm8uJiMzNDsgVGhpcyBjaGFuZ2UgKm9ubHkqIGFkZHMgdGhlIGNhbGwgdG8gYHJlZl90cmFja2VyX2Rpcl9leGl0YCBvbiBhIGZhaWx1cmUgcGF0aC4gSXQgZG9lc24mIzM5O3QgYWRkIGFueSBuZXcgY29yZSBmdW5jdGlvbmFsaXR5IHRoYXQmIzM5O3MgcmlwZSBmb3IgZnV6emluZy4gSXQmIzM5O3Mgc3RyaWN0bHkgYWJvdXQgY2xlYW5pbmcgdXAgcmVzb3VyY2VzLiBBbmQsIG9oIHllYWgsIGl0JiMzOTtzIGNvbm5lY3RlZCB0byB0aGUgYENPTkZJR19SRUZfVFJBQ0tFUmAgaW5mcmFzdHJ1Y3R1cmUsIHJpZ2h0PyBTbyBpdCYjMzk7cyBiYXNpY2FsbHkgcGFydCBvZiB0aGUgZGVidWdnaW5nIHNldHVwLgoKRXZlbiBpZiBpdCAqd2FzbiYjMzk7dCogdGllZCB0byBkZWJ1Z2dpbmcsIGl0JiMzOTtzIHN0aWxsIGp1c3QgdGhhdCBzaW5nbGUgY2xlYW51cCBjYWxsIG9uIGFuIGVycm9yIHBhdGguIEl0JiMzOTtzIG5vdCBpbnRyb2R1Y2luZyBhIG5ldyBjb2RlIHBhdGggdGhhdCYjMzk7cyB3b3J0aCBmdXp6aW5nIHRvIHVuY292ZXIgYnVncy4KClRoZXJlZm9yZSwgbXkgZmluYWwgYW5zd2VyIGlzICoqV29ydGhGdXp6aW5nPWZhbHNlKiouIFRoaXMgaXMgYSBtZW1vcnkgbGVhayBmaXggaW4gYW4gZXJyb3IgcGF0aCwgYW5kIGl0JiMzOTtzIHJlbGF0ZWQgdG8gZGlhZ25vc3RpYy9kZWJ1Z2dpbmcgaW5mcmFzdHJ1Y3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDA3OjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIG1pc3NpbmcgY2FsbCB0byBgcmVmX3RyYWNrZXJfZGlyX2V4aXQoKWAgaW4gdGhlIGVycm9yIHBhdGggb2YgYGFsbG9jX25ldGRldl9tcXMoKWAuIFRoaXMgaXMgYSBzaW1wbGUgbWVtb3J5IGxlYWsgZml4IGZvciB0aGUgcmVmZXJlbmNlIHRyYWNraW5nIGluZnJhc3RydWN0dXJlICh3aGljaCBpcyBwcmltYXJpbHkgdXNlZCBmb3IgZGVidWdnaW5nKSBhbmQgZG9lcyBub3QgaW50cm9kdWNlIG5ldyBmdW5jdGlvbmFsIGxvZ2ljIG9yIGNvbXBsZXggc3RhdGUgY2hhbmdlcyB0aGF0IHdvdWxkIGJlbmVmaXQgZnJvbSBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIG1pc3NpbmcgY2FsbCB0byBgcmVmX3RyYWNrZXJfZGlyX2V4aXQoKWAgaW4gdGhlIGVycm9yIHBhdGggb2YgYGFsbG9jX25ldGRldl9tcXMoKWAuIFRoaXMgaXMgYSBzaW1wbGUgbWVtb3J5IGxlYWsgZml4IGZvciB0aGUgcmVmZXJlbmNlIHRyYWNraW5nIGluZnJhc3RydWN0dXJlICh3aGljaCBpcyBwcmltYXJpbHkgdXNlZCBmb3IgZGVidWdnaW5nKSBhbmQgZG9lcyBub3QgaW50cm9kdWNlIG5ldyBmdW5jdGlvbmFsIGxvZ2ljIG9yIGNvbXBsZXggc3RhdGUgY2hhbmdlcyB0aGF0IHdvdWxkIGJlbmVmaXQgZnJvbSBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDc6MjI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDA3OjIxOjM5LjQyMzkwNzYxOFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxMzMzODgyNzcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIG1pc3NpbmcgY2FsbCB0byBgcmVmX3RyYWNrZXJfZGlyX2V4aXQoKWAgaW4gdGhlIGVycm9yIHBhdGggb2YgYGFsbG9jX25ldGRldl9tcXMoKWAuIFRoaXMgaXMgYSBzaW1wbGUgbWVtb3J5IGxlYWsgZml4IGZvciB0aGUgcmVmZXJlbmNlIHRyYWNraW5nIGluZnJhc3RydWN0dXJlICh3aGljaCBpcyBwcmltYXJpbHkgdXNlZCBmb3IgZGVidWdnaW5nKSBhbmQgZG9lcyBub3QgaW50cm9kdWNlIG5ldyBmdW5jdGlvbmFsIGxvZ2ljIG9yIGNvbXBsZXggc3RhdGUgY2hhbmdlcyB0aGF0IHdvdWxkIGJlbmVmaXQgZnJvbSBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDc6MjE6MzkuNDIzOTE1ODU4WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzQ3MjIwODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBkZjJlMWE0MjFiNzkyZTFiYjMxYzg1ZGRkNWU5NDZkZjBlOWEyOWFiXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgQXVnIDE1IDA3OjIxOjM4IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9jb3JlL2Rldi5jIGIvbmV0L2NvcmUvZGV2LmNcXG5pbmRleCBlY2U2NzAwNTM2ZDliLi5jMWIxNjhiMDU3MWUwIDEwMDY0NFxcbi0tLSBhL25ldC9jb3JlL2Rldi5jXFxuKysrIGIvbmV0L2NvcmUvZGV2LmNcXG5AQCAtMTIxNjQsNiArMTIxNjQsNyBAQCBzdHJ1Y3QgbmV0X2RldmljZSAqYWxsb2NfbmV0ZGV2X21xcyhpbnQgc2l6ZW9mX3ByaXYsIGNvbnN0IGNoYXIgKm5hbWUsXFxuIFxcdGZyZWVfcGVyY3B1KGRldi1cXHUwMDNlcGNwdV9yZWZjbnQpO1xcbiBmcmVlX2RldjpcXG4gI2VuZGlmXFxuK1xcdHJlZl90cmFja2VyX2Rpcl9leGl0KFxcdTAwMjZkZXYtXFx1MDAzZXJlZmNudF90cmFja2VyKTtcXG4gXFx0a3ZmcmVlKGRldik7XFxuIFxcdHJldHVybiBOVUxMO1xcbiB9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDA3OjIxOjM5Ljg5OTM4MzY4M1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjIwODU4MzkzMzIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgbWlzc2luZyBjYWxsIHRvIGByZWZfdHJhY2tlcl9kaXJfZXhpdCgpYCBpbiB0aGUgZXJyb3IgcGF0aCBvZiBgYWxsb2NfbmV0ZGV2X21xcygpYC4gVGhpcyBpcyBhIHNpbXBsZSBtZW1vcnkgbGVhayBmaXggZm9yIHRoZSByZWZlcmVuY2UgdHJhY2tpbmcgaW5mcmFzdHJ1Y3R1cmUgKHdoaWNoIGlzIHByaW1hcmlseSB1c2VkIGZvciBkZWJ1Z2dpbmcpIGFuZCBkb2VzIG5vdCBpbnRyb2R1Y2UgbmV3IGZ1bmN0aW9uYWwgbG9naWMgb3IgY29tcGxleCBzdGF0ZSBjaGFuZ2VzIHRoYXQgd291bGQgYmVuZWZpdCBmcm9tIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBkZjJlMWE0MjFiNzkyZTFiYjMxYzg1ZGRkNWU5NDZkZjBlOWEyOWFiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBBdWcgMTUgMDc6MjE6MzggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvY29yZS9kZXYuYyBiL25ldC9jb3JlL2Rldi5jXG5pbmRleCBlY2U2NzAwNTM2ZDliLi5jMWIxNjhiMDU3MWUwIDEwMDY0NFxuLS0tIGEvbmV0L2NvcmUvZGV2LmNcbisrKyBiL25ldC9jb3JlL2Rldi5jXG5AQCAtMTIxNjQsNiArMTIxNjQsNyBAQCBzdHJ1Y3QgbmV0X2RldmljZSAqYWxsb2NfbmV0ZGV2X21xcyhpbnQgc2l6ZW9mX3ByaXYsIGNvbnN0IGNoYXIgKm5hbWUsXG4gXHRmcmVlX3BlcmNwdShkZXYtXHUwMDNlcGNwdV9yZWZjbnQpO1xuIGZyZWVfZGV2OlxuICNlbmRpZlxuK1x0cmVmX3RyYWNrZXJfZGlyX2V4aXQoXHUwMDI2ZGV2LVx1MDAzZXJlZmNudF90cmFja2VyKTtcbiBcdGt2ZnJlZShkZXYpO1xuIFx0cmV0dXJuIE5VTEw7XG4gfVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDc6MjE6MzkuODk5Mzg2NDc0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDI1MTk2MjgwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHRoZSBzaXR1YXRpb24sIHByZXNlbnRlZCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIGFuIGV4cGVydDpcblxuKipJbnZlc3RpZ2F0aW5nIGEgUmVzb3VyY2UgTGVhayBGaXggaW4gYGFsbG9jX25ldGRldl9tcXNgKipcblxuT2theSwgSSd2ZSBnb3QgYSBwYXRjaCBoZXJlIHRoYXQncyBhZGRpbmcgYHJlZl90cmFja2VyX2Rpcl9leGl0KFx1MDAyNmRldi1cdTAwM2VyZWZjbnRfdHJhY2tlcik7YCB0byB0aGUgYGFsbG9jX25ldGRldl9tcXNgIGZ1bmN0aW9uIHdpdGhpbiBgbmV0L2NvcmUvZGV2LmNgLiBJbW1lZGlhdGVseSwgbXkgYnJhaW4gZmxhZ3MgdGhpcyBhcyBhIHBvdGVudGlhbCBmaXggZm9yIGEgcmVzb3VyY2UgbGVhaywgc3BlY2lmaWNhbGx5IHdpdGhpbiBhbiBlcnJvciBoYW5kbGluZyBwYXRoLiBUaGUgdXNlIG9mIGEgcmVmZXJlbmNlIGNvdW50ZXIgdHJhY2tlciBpbmRpY2F0ZXMgdGhhdCBzb21lIHJlc291cmNlIGFsbG9jYXRpb24gaXMgaGFwcGVuaW5nIGluIHRoZSBzdWNjZXNzIHBhdGhzIGFuZCBzb21lIGZyZWVpbmcgaXMgcmVxdWlyZWQgaW4gdGhlIGVycm9yIHBhdGhzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aHkgdGhpcyBzcGVjaWZpYyBjbGVhbnVwIGlzIHJlcXVpcmVkLlxuXG5NeSBmaXJzdCB0aG91Z2h0IGlzIHRvIGRpdmUgcmlnaHQgaW50byB0aGUgYGFsbG9jX25ldGRldl9tcXNgIGZ1bmN0aW9uIGl0c2VsZi4gSSBuZWVkIHRvIHRyYWNlIHRoZSByZXNvdXJjZSBhbGxvY2F0aW9ucyBhbmQgZGVhbGxvY2F0aW9ucyB3aXRoaW4gdGhhdCBmdW5jdGlvbiB0byB1bmRlcnN0YW5kIHRoZSBmbG93IGNvbnRyb2wsIGVycm9yIGhhbmRsaW5nLCBhbmQgdGhlIGNpcmN1bXN0YW5jZXMgdW5kZXIgd2hpY2ggdGhpcyBgcmVmX3RyYWNrZXJfZGlyX2V4aXRgIGNhbGwgaXMgbmVjZXNzYXJ5LiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHdoZXJlIHJlc291cmNlcyBhcmUgYWxsb2NhdGVkIGJ1dCBub3QgbmVjZXNzYXJpbHkgZnJlZWQgd2hlbiBzb21ldGhpbmcgZ29lcyB3cm9uZy4gVGhpcyBwYXRjaCAqc3VnZ2VzdHMqIHRoYXQgc29tZSBzb3J0IG9mIHJlZmVyZW5jZSBpcyBiZWluZyBoZWxkIGluIHRoZSBmYWlsdXJlIHBhdGggdGhhdCBuZWVkcyB0byBiZSBkZWNyZW1lbnRlZC4gSXMgdGhlIHJlc291cmNlIGJlaW5nIGhlbGQgZHVlIHRvIGFuIGVhcmx5IHJldHVybiwgYW5kIGlzIHRoZSB0cmFja2VyIHByb3Blcmx5IGluaXRpYWxpemVkIHRvIGFjY291bnQgZm9yIHRoZSBhbGxvY2F0aW9uIGFuZCBkZWFsbG9jYXRpb24/IElzIHRoZSBjbGVhbnVwIGNvcnJlY3Q/XG5cbkknbGwgYmUgcGF5aW5nIGNsb3NlIGF0dGVudGlvbiB0byBhbnkgbmVzdGVkIGZ1bmN0aW9uIGNhbGxzLCBlc3BlY2lhbGx5IHRob3NlIHRoYXQgaW52b2x2ZSBtZW1vcnkgYWxsb2NhdGlvbiwgcmVzb3VyY2UgcmVnaXN0cmF0aW9uLCBhbmQgdWx0aW1hdGVseSwgZGVhbGxvY2F0aW9uLiBJJ2xsIG5lZWQgdG8gY29uZmlybSB0aGF0IHRoaXMgYHJlZl90cmFja2VyX2Rpcl9leGl0YCBjYWxsIGlzIGluIHRoZSByaWdodCBwbGFjZSwgdGhhdCBpdCdzIGJlaW5nIHRyaWdnZXJlZCBjb3JyZWN0bHksIGFuZCBtb3N0IGltcG9ydGFudGx5LCB0aGF0IGl0J3MgYWN0dWFsbHkgcmVzb2x2aW5nIHRoZSBsZWFrIG9yIGlzIGF0IGxlYXN0IGNvcnJlY3RseSBjbGVhbmluZyB1cCBpbiBhbiBlcnJvciBwYXRoLiBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgaXQncyB0aGUgY29ycmVjdCBraW5kIG9mIHJlc291cmNlIHRyYWNraW5nLiBEb2VzIGl0IGFkZHJlc3MgdGhlIHNwZWNpZmljIGlzc3VlIHRoYXQgdGhlIHRyYWNrZXIgaXMgaW50ZW5kZWQgZm9yP1xuXG5cbiIsIklucHV0VG9rZW5zIjoxOTU2LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzcsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwNzoyMTo0NC4xNTEzNTM2NDZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2ODAxNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2NvcmUvZGV2LmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTIxNTAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjEyMTUwOlxcdFxcdGRldi1cXHUwMDNlZ3JvdXAgPSBJTklUX05FVERFVl9HUk9VUDtcXG4xMjE1MTpcXHRcXHRpZiAoIWRldi1cXHUwMDNlZXRodG9vbF9vcHMpXFxuMTIxNTI6XFx0XFx0XFx0ZGV2LVxcdTAwM2VldGh0b29sX29wcyA9IFxcdTAwMjZkZWZhdWx0X2V0aHRvb2xfb3BzO1xcbjEyMTUzOlxcdFxcbjEyMTU0OlxcdFxcdG5mX2hvb2tfbmV0ZGV2X2luaXQoZGV2KTtcXG4xMjE1NTpcXHRcXG4xMjE1NjpcXHRcXHRyZXR1cm4gZGV2O1xcbjEyMTU3OlxcdFxcbjEyMTU4OlxcdGZyZWVfYWxsOlxcbjEyMTU5OlxcdFxcdGZyZWVfbmV0ZGV2KGRldik7XFxuMTIxNjA6XFx0XFx0cmV0dXJuIE5VTEw7XFxuMTIxNjE6XFx0XFxuMTIxNjI6XFx0ZnJlZV9wY3B1OlxcbjEyMTYzOlxcdCNpZmRlZiBDT05GSUdfUENQVV9ERVZfUkVGQ05UXFxuMTIxNjQ6XFx0XFx0ZnJlZV9wZXJjcHUoZGV2LVxcdTAwM2VwY3B1X3JlZmNudCk7XFxuMTIxNjU6XFx0ZnJlZV9kZXY6XFxuMTIxNjY6XFx0I2VuZGlmXFxuMTIxNjc6XFx0XFx0cmVmX3RyYWNrZXJfZGlyX2V4aXQoXFx1MDAyNmRldi1cXHUwMDNlcmVmY250X3RyYWNrZXIpO1xcbjEyMTY4OlxcdFxcdGt2ZnJlZShkZXYpO1xcbjEyMTY5OlxcdFxcdHJldHVybiBOVUxMO1xcbjEyMTcwOlxcdH1cXG4xMjE3MTpcXHRFWFBPUlRfU1lNQk9MKGFsbG9jX25ldGRldl9tcXMpO1xcbjEyMTcyOlxcdFxcbjEyMTczOlxcdHN0YXRpYyB2b2lkIG5ldGRldl9uYXBpX2V4aXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4xMjE3NDpcXHR7XFxuMTIxNzU6XFx0XFx0aWYgKCFsaXN0X2VtcHR5KFxcdTAwMjZkZXYtXFx1MDAzZW5hcGlfbGlzdCkpIHtcXG4xMjE3NjpcXHRcXHRcXHRzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKnAsICpuO1xcbjEyMTc3OlxcdFxcbjEyMTc4OlxcdFxcdFxcdG5ldGRldl9sb2NrKGRldik7XFxuMTIxNzk6XFx0XFx0XFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHAsIG4sIFxcdTAwMjZkZXYtXFx1MDAzZW5hcGlfbGlzdCwgZGV2X2xpc3QpXFxuMTIxODA6XFx0XFx0XFx0XFx0X19uZXRpZl9uYXBpX2RlbF9sb2NrZWQocCk7XFxuMTIxODE6XFx0XFx0XFx0bmV0ZGV2X3VubG9jayhkZXYpO1xcbjEyMTgyOlxcdFxcbjEyMTgzOlxcdFxcdFxcdHN5bmNocm9uaXplX25ldCgpO1xcbjEyMTg0OlxcdFxcdH1cXG4xMjE4NTpcXHRcXG4xMjE4NjpcXHRcXHRrdmZyZWUoZGV2LVxcdTAwM2VuYXBpX2NvbmZpZyk7XFxuMTIxODc6XFx0fVxcbjEyMTg4OlxcdFxcbjEyMTg5OlxcdC8qKlxcbjEyMTkwOlxcdCAqIGZyZWVfbmV0ZGV2IC0gZnJlZSBuZXR3b3JrIGRldmljZVxcbjEyMTkxOlxcdCAqIEBkZXY6IGRldmljZVxcbjEyMTkyOlxcdCAqXFxuMTIxOTM6XFx0ICogVGhpcyBmdW5jdGlvbiBkb2VzIHRoZSBsYXN0IHN0YWdlIG9mIGRlc3Ryb3lpbmcgYW4gYWxsb2NhdGVkIGRldmljZVxcbjEyMTk0OlxcdCAqIGludGVyZmFjZS4gVGhlIHJlZmVyZW5jZSB0byB0aGUgZGV2aWNlIG9iamVjdCBpcyByZWxlYXNlZC4gSWYgdGhpc1xcbjEyMTk1OlxcdCAqIGlzIHRoZSBsYXN0IHJlZmVyZW5jZSB0aGVuIGl0IHdpbGwgYmUgZnJlZWQuTXVzdCBiZSBjYWxsZWQgaW4gcHJvY2Vzc1xcbjEyMTk2OlxcdCAqIGNvbnRleHQuXFxuMTIxOTc6XFx0ICovXFxuMTIxOTg6XFx0dm9pZCBmcmVlX25ldGRldihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbjEyMTk5OlxcdHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDc6MjE6NDQuMTUyMDM2NDk2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTMyMzk4MTE3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBTdWJ0bGUgTmV0d29yayBEZXZpY2UgQWxsb2NhdGlvbiBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0J3MgYSBtaW5vciBjaGFuZ2UgaW4gYGFsbG9jX25ldGRldl9tcXNgLiBUaGV5J3JlIGFkZGluZyBgcmVmX3RyYWNrZXJfZGlyX2V4aXQoXHUwMDI2ZGV2LVx1MDAzZXJlZmNudF90cmFja2VyKWAgdG8gdGhlIGVycm9yIGhhbmRsaW5nIHBhdGgsIHNwZWNpZmljYWxseSBpbiBgZnJlZV9wY3B1YCBhbmQgYGZyZWVfZGV2YC4gUmlnaHQgb2ZmIHRoZSBiYXQsIEkgcmVjb2duaXplIHRoaXMgaXMgYWJvdXQgcHJldmVudGluZyBzb21lIGtpbmQgb2YgcmVzb3VyY2UgbGVhayBvciwgcG90ZW50aWFsbHksIGEgbW9yZSBzZXJpb3VzIGlzc3VlIHdoZW4gdGhlIGFsbG9jYXRpb24gZmFpbHMuIEEgcXVpY2sgcmV2aWV3IGFuZCB0aGUgZml4IGxvb2tzIGNvcnJlY3QuXG5cbk15IGluaXRpYWwgdGhvdWdodCBpcywgXCJXb3J0aCBmdXp6aW5nP1wiIEJ1dCBpdCdzIGEgKnZlcnkqIHNwZWNpZmljIGZhaWx1cmUgc2NlbmFyaW8uIFRvIHByb3Blcmx5IGZ1enogdGhpcywgSSdkIHByb2JhYmx5IG5lZWQgdG8gaW5qZWN0IGZhdWx0cyBpbnRvIGBhbGxvY19uZXRkZXZfbXFzYCBpdHNlbGYsIGFuZCB0aGF0J3MgYSAqY29yZSogZnVuY3Rpb24uIE5vdCBpZGVhbC4gSXQncyB1c2VkIGV2ZXJ5d2hlcmUuIFRoZW4gSSByZW1lbWJlciB0aGF0IHRoaXMgaXMgZm9yICphbnkqIG5ldHdvcmsgZGV2aWNlIGNyZWF0aW9uIHNvIEkgcmUtZXZhbHVhdGUuIElmIGl0IGZhaWxzLCBpdCBpcyBzdXBwb3NlZCB0byBjbGVhbiB1cCwgd2hpY2ggaXMgd2hhdCB0aGlzIHBhdGNoIGFwcGVhcnMgdG8gYmUgZG9pbmcuXG5cblRoZW4gSSBwYXVzZWQgdG8gdGhpbmsgYWJvdXQgd2hhdCBpcyBzcGVjaWZpYyBhYm91dCBgcmVmX3RyYWNrZXJfZGlyX2V4aXRgLiBUaGUgY29udGV4dCByZW1pbmRzIG1lIHRoYXQgdGhlIGByZWZfdHJhY2tlcmAgc3R1ZmYgaXMgb25seSBlbmFibGVkIGlmIGBDT05GSUdfUkVGX1RSQUNLRVJgIGlzIGVuYWJsZWQsIHJpZ2h0PyBTbywgaXMgKnRoYXQqIGNvbmZpZyBuZWVkZWQ/IEFuZCBpcyBpdCBlbmFibGVkIGluIHRoZSBzeXprYWxsZXIgY29uZmlndXJhdGlvbi4gTXkgaW50ZXJuYWwgZmxhZ3MganVzdCBmbGlwcGVkLiBPa2F5LCBpdCBsb29rcyBsaWtlIGl0IGlzIHNldC4gSWYgYENPTkZJR19SRUZfVFJBQ0tFUmAgaXNuJ3QgZW5hYmxlZCwgdGhlbiB0aGlzIGZ1bmN0aW9uIGNhbGwgd2lsbCBiZSBjb21waWxlZCBvdXQuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCdzIGFjY291bnRlZCBmb3IuIEknbSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGlmIGBDT05GSUdfUkVGX1RSQUNLRVJgIGlzIGV2ZW4gcmVxdWlyZWQgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzIxMiwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwOCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDA3OjIxOjQ5LjQ3NjAyMDM4NloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTM3OTk2NzMyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJlZl90cmFja2VyX2Rpcl9leGl0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2RwbGwvZHBsbF9jb3JlLmM9MTEzPXN0YXRpYyB2b2lkIF9fZHBsbF9kZXZpY2VfcHV0KHN0cnVjdCBkcGxsX2RldmljZSAqZHBsbCwgZHBsbF90cmFja2VyICp0cmFja2VyKVxcbi0tXFxuZHJpdmVycy9kcGxsL2RwbGxfY29yZS5jLTEyMS1cXHRcXHRXQVJOX09OKCFsaXN0X2VtcHR5KFxcdTAwMjZkcGxsLVxcdTAwM2VyZWdpc3RyYXRpb25fbGlzdCkpO1xcbmRyaXZlcnMvZHBsbC9kcGxsX2NvcmUuYzoxMjI6XFx0XFx0cmVmX3RyYWNrZXJfZGlyX2V4aXQoXFx1MDAyNmRwbGwtXFx1MDAzZXJlZmNudF90cmFja2VyKTtcXG5kcml2ZXJzL2RwbGwvZHBsbF9jb3JlLmMtMTIzLVxcdFxcdGtmcmVlKGRwbGwpO1xcbi0tXFxuZHJpdmVycy9kcGxsL2RwbGxfY29yZS5jPTE1MD1zdGF0aWMgdm9pZCBfX2RwbGxfcGluX3B1dChzdHJ1Y3QgZHBsbF9waW4gKnBpbiwgZHBsbF90cmFja2VyICp0cmFja2VyKVxcbi0tXFxuZHJpdmVycy9kcGxsL2RwbGxfY29yZS5jLTE2MC1cXHRcXHRkcGxsX3Bpbl9pZHhfZnJlZShwaW4tXFx1MDAzZXBpbl9pZHgpO1xcbmRyaXZlcnMvZHBsbC9kcGxsX2NvcmUuYzoxNjE6XFx0XFx0cmVmX3RyYWNrZXJfZGlyX2V4aXQoXFx1MDAyNnBpbi1cXHUwMDNlcmVmY250X3RyYWNrZXIpO1xcbmRyaXZlcnMvZHBsbC9kcGxsX2NvcmUuYy0xNjItXFx0XFx0a2ZyZWVfcmN1KHBpbiwgcmN1KTtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kaXNwbGF5L2RybV9kcF90dW5uZWwuYz0xOTAwPXN0YXRpYyB2b2lkIGRlc3Ryb3lfbWdyKHN0cnVjdCBkcm1fZHBfdHVubmVsX21nciAqbWdyKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2Rpc3BsYXkvZHJtX2RwX3R1bm5lbC5jLTE5MDktI2lmZGVmIENPTkZJR19EUk1fRElTUExBWV9EUF9UVU5ORUxfU1RBVEVfREVCVUdcXG5kcml2ZXJzL2dwdS9kcm0vZGlzcGxheS9kcm1fZHBfdHVubmVsLmM6MTkxMDpcXHRyZWZfdHJhY2tlcl9kaXJfZXhpdChcXHUwMDI2bWdyLVxcdTAwM2VyZWZfdHJhY2tlcik7XFxuZHJpdmVycy9ncHUvZHJtL2Rpc3BsYXkvZHJtX2RwX3R1bm5lbC5jLTE5MTEtI2VuZGlmXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmM9ODY9c3RhdGljIHZvaWQgdW50cmFja19hbGxfaW50ZWxfcnVudGltZV9wbV93YWtlcmVmcyhzdHJ1Y3QgaW50ZWxfcnVudGltZV9wbSAqcnBtKVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3J1bnRpbWVfcG0uYy04Ny17XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVudGltZV9wbS5jOjg4OlxcdHJlZl90cmFja2VyX2Rpcl9leGl0KFxcdTAwMjZycG0tXFx1MDAzZWRlYnVnKTtcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmMtODktfVxcbi0tXFxuZnMvYnRyZnMvZGVsYXllZC1pbm9kZS5jPTEzNT1zdGF0aWMgc3RydWN0IGJ0cmZzX2RlbGF5ZWRfbm9kZSAqYnRyZnNfZ2V0X29yX2NyZWF0ZV9kZWxheWVkX25vZGUoXFxuLS1cXG5mcy9idHJmcy9kZWxheWVkLWlub2RlLmMtMTgyLVxcdGJ0cmZzX2RlbGF5ZWRfbm9kZV9yZWZfdHJhY2tlcl9mcmVlKG5vZGUsIFxcdTAwMjZub2RlLVxcdTAwM2Vpbm9kZV9jYWNoZV90cmFja2VyKTtcXG5mcy9idHJmcy9kZWxheWVkLWlub2RlLmM6MTgzOlxcdGJ0cmZzX2RlbGF5ZWRfbm9kZV9yZWZfdHJhY2tlcl9kaXJfZXhpdChub2RlKTtcXG5mcy9idHJmcy9kZWxheWVkLWlub2RlLmMtMTg0LVxcdGttZW1fY2FjaGVfZnJlZShkZWxheWVkX25vZGVfY2FjaGUsIG5vZGUpO1xcbi0tXFxuZnMvYnRyZnMvZGVsYXllZC1pbm9kZS5jPTI4MT1zdGF0aWMgdm9pZCBfX2J0cmZzX3JlbGVhc2VfZGVsYXllZF9ub2RlKFxcbi0tXFxuZnMvYnRyZnMvZGVsYXllZC1pbm9kZS5jLTMwOC1cXHRcXHRBU1NFUlQocmVmY291bnRfcmVhZChcXHUwMDI2ZGVsYXllZF9ub2RlLVxcdTAwM2VyZWZzKSA9PSAwKTtcXG5mcy9idHJmcy9kZWxheWVkLWlub2RlLmM6MzA5OlxcdFxcdGJ0cmZzX2RlbGF5ZWRfbm9kZV9yZWZfdHJhY2tlcl9kaXJfZXhpdChkZWxheWVkX25vZGUpO1xcbmZzL2J0cmZzL2RlbGF5ZWQtaW5vZGUuYy0zMTAtXFx0XFx0a21lbV9jYWNoZV9mcmVlKGRlbGF5ZWRfbm9kZV9jYWNoZSwgZGVsYXllZF9ub2RlKTtcXG4tLVxcbmZzL2J0cmZzL2RlbGF5ZWQtaW5vZGUuaD0xODQ9c3RhdGljIGlubGluZSB2b2lkIGJ0cmZzX2RlbGF5ZWRfbm9kZV9yZWZfdHJhY2tlcl9kaXJfaW5pdChzdHJ1Y3QgYnRyZnNfZGVsYXllZF9ub2RlICpub2RlKVxcbi0tXFxuZnMvYnRyZnMvZGVsYXllZC1pbm9kZS5oLTE5My1cXG5mcy9idHJmcy9kZWxheWVkLWlub2RlLmg6MTk0OnN0YXRpYyBpbmxpbmUgdm9pZCBidHJmc19kZWxheWVkX25vZGVfcmVmX3RyYWNrZXJfZGlyX2V4aXQoc3RydWN0IGJ0cmZzX2RlbGF5ZWRfbm9kZSAqbm9kZSlcXG5mcy9idHJmcy9kZWxheWVkLWlub2RlLmgtMTk1LXtcXG4tLVxcbmZzL2J0cmZzL2RlbGF5ZWQtaW5vZGUuaC0xOTgtXFxuZnMvYnRyZnMvZGVsYXllZC1pbm9kZS5oOjE5OTpcXHRyZWZfdHJhY2tlcl9kaXJfZXhpdChcXHUwMDI2bm9kZS1cXHUwMDNlcmVmX2Rpci5kaXIpO1xcbmZzL2J0cmZzL2RlbGF5ZWQtaW5vZGUuaC0yMDAtfVxcbi0tXFxuZnMvYnRyZnMvZGVsYXllZC1pbm9kZS5oPTIzNz1zdGF0aWMgaW5saW5lIHZvaWQgYnRyZnNfZGVsYXllZF9ub2RlX3JlZl90cmFja2VyX2Rpcl9pbml0KHN0cnVjdCBidHJmc19kZWxheWVkX25vZGUgKm5vZGUpIHsgfVxcbmZzL2J0cmZzL2RlbGF5ZWQtaW5vZGUuaC0yMzgtXFxuZnMvYnRyZnMvZGVsYXllZC1pbm9kZS5oOjIzOTpzdGF0aWMgaW5saW5lIHZvaWQgYnRyZnNfZGVsYXllZF9ub2RlX3JlZl90cmFja2VyX2Rpcl9leGl0KHN0cnVjdCBidHJmc19kZWxheWVkX25vZGUgKm5vZGUpIHsgfVxcbmZzL2J0cmZzL2RlbGF5ZWQtaW5vZGUuaC0yNDAtXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3JlZl90cmFja2VyLmg9NTg9c3RhdGljIGlubGluZSB2b2lkIHJlZl90cmFja2VyX2Rpcl9pbml0KHN0cnVjdCByZWZfdHJhY2tlcl9kaXIgKmRpcixcXG4tLVxcbmluY2x1ZGUvbGludXgvcmVmX3RyYWNrZXIuaC03My1cXG5pbmNsdWRlL2xpbnV4L3JlZl90cmFja2VyLmg6NzQ6dm9pZCByZWZfdHJhY2tlcl9kaXJfZXhpdChzdHJ1Y3QgcmVmX3RyYWNrZXJfZGlyICpkaXIpO1xcbmluY2x1ZGUvbGludXgvcmVmX3RyYWNrZXIuaC03NS1cXG4tLVxcbmluY2x1ZGUvbGludXgvcmVmX3RyYWNrZXIuaD0xMDM9dm9pZCByZWZfdHJhY2tlcl9kaXJfc3ltbGluayhzdHJ1Y3QgcmVmX3RyYWNrZXJfZGlyICpkaXIsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKVxcbi0tXFxuaW5jbHVkZS9saW51eC9yZWZfdHJhY2tlci5oLTEwNi1cXG5pbmNsdWRlL2xpbnV4L3JlZl90cmFja2VyLmg6MTA3OnN0YXRpYyBpbmxpbmUgdm9pZCByZWZfdHJhY2tlcl9kaXJfZXhpdChzdHJ1Y3QgcmVmX3RyYWNrZXJfZGlyICpkaXIpXFxuaW5jbHVkZS9saW51eC9yZWZfdHJhY2tlci5oLTEwOC17XFxuLS1cXG5saWIvcmVmX3RyYWNrZXIuYz0yMz1zdHJ1Y3QgcmVmX3RyYWNrZXJfZGlyX3N0YXRzIHtcXG4tLVxcbmxpYi9yZWZfdHJhY2tlci5jLTM2LSAqIHJlZl90cmFja2VyX2Rpcl9pbml0KCkgaXMgdXN1YWxseSBjYWxsZWQgaW4gYWxsb2NhdGlvbi1zYWZlIGNvbnRleHRzLCBidXRcXG5saWIvcmVmX3RyYWNrZXIuYzozNzogKiB0aGUgc2FtZSBpcyBub3QgdHJ1ZSBvZiByZWZfdHJhY2tlcl9kaXJfZXhpdCgpIHdoaWNoIGNhbiBiZSBjYWxsZWQgZnJvbVxcbmxpYi9yZWZfdHJhY2tlci5jLTM4LSAqIGFueXdoZXJlIGFuIG9iamVjdCBpcyBmcmVlZC4gUmVtb3ZpbmcgZGVidWdmcyBkZW50cmllcyBpcyBhIGJsb2NraW5nXFxuLS1cXG5saWIvcmVmX3RyYWNrZXIuYy00MS0gKiBFYWNoIGRlbnRyeSBpcyB0cmFja2VkIGluIHRoZSBhcHByb3ByaWF0ZSB4YXJyYXkuICBXaGVuXFxubGliL3JlZl90cmFja2VyLmM6NDI6ICogcmVmX3RyYWNrZXJfZGlyX2V4aXQoKSBpcyBjYWxsZWQsIGl0cyBlbnRyaWVzIGluIHRoZSB4YXJyYXlzIGFyZSBtYXJrZWQgYW5kXFxubGliL3JlZl90cmFja2VyLmMtNDMtICogdGhlIHdvcmtxdWV1ZSBqb2IgaXMgc2NoZWR1bGVkLiBUaGUgd29ya2VyIHRoZW4gcnVucyBhbmQgZGVsZXRlcyBhbnkgbWFya2VkXFxuLS1cXG5saWIvcmVmX3RyYWNrZXIuYz0yMTc9RVhQT1JUX1NZTUJPTChyZWZfdHJhY2tlcl9kaXJfc25wcmludCk7XFxubGliL3JlZl90cmFja2VyLmMtMjE4LVxcbmxpYi9yZWZfdHJhY2tlci5jOjIxOTp2b2lkIHJlZl90cmFja2VyX2Rpcl9leGl0KHN0cnVjdCByZWZfdHJhY2tlcl9kaXIgKmRpcilcXG5saWIvcmVmX3RyYWNrZXIuYy0yMjAte1xcbi0tXFxubGliL3JlZl90cmFja2VyLmMtMjQ5LX1cXG5saWIvcmVmX3RyYWNrZXIuYzoyNTA6RVhQT1JUX1NZTUJPTChyZWZfdHJhY2tlcl9kaXJfZXhpdCk7XFxubGliL3JlZl90cmFja2VyLmMtMjUxLVxcbi0tXFxubGliL3JlZl90cmFja2VyLmM9MzY5PXN0YXRpYyBpbnQgcmVmX3RyYWNrZXJfZGVidWdmc19zaG93KHN0cnVjdCBzZXFfZmlsZSAqZiwgdm9pZCAqdilcXG4tLVxcbmxpYi9yZWZfdHJhY2tlci5jLTM3Ni1cXHQvKlxcbmxpYi9yZWZfdHJhY2tlci5jOjM3NzpcXHQgKiBcXFwiZGlyXFxcIiBtYXkgbm90IGV4aXN0IGF0IHRoaXMgcG9pbnQgaWYgcmVmX3RyYWNrZXJfZGlyX2V4aXQoKSBoYXNcXG5saWIvcmVmX3RyYWNrZXIuYy0zNzgtXFx0ICogYWxyZWFkeSBiZWVuIGNhbGxlZC4gVGFrZSBjYXJlIG5vdCB0byBkZXJlZmVyZW5jZSBpdCB1bnRpbCBpdHNcXG4tLVxcbmxpYi9yZWZfdHJhY2tlci5jLTM4My1cXHQgKiBkZWFkLCB0aGVuIGl0J3Mgc2FmZSB0byB0YWtlIGRpci1cXHUwMDNlbG9jayB3aGljaCBwcmV2ZW50c1xcbmxpYi9yZWZfdHJhY2tlci5jOjM4NDpcXHQgKiByZWZfdHJhY2tlcl9kaXJfZXhpdCgpIGZyb20gY29tcGxldGluZy4gT25jZSB0aGUgZGlyLVxcdTAwM2Vsb2NrIGlzXFxubGliL3JlZl90cmFja2VyLmMtMzg1LVxcdCAqIGFjcXVpcmVkLCB0aGUgeGFfbG9jayBjYW4gYmUgcmVsZWFzZWQuIEFsbCBvZiB0aGlzIG11c3QgYmUgSVJRLXNhZmUuXFxuLS1cXG5saWIvdGVzdF9yZWZfdHJhY2tlci5jPTYzPXN0YXRpYyBpbnQgX19pbml0IHRlc3RfcmVmX3RyYWNrZXJfaW5pdCh2b2lkKVxcbi0tXFxubGliL3Rlc3RfcmVmX3RyYWNrZXIuYy0xMDItXFx0LyogVGhpcyBzaG91bGQgd2FybiBhYm91dCB0cmFja2VyWzBdIFxcdTAwMjYgdHJhY2tlclsxXSBiZWluZyBub3QgZnJlZWQuICovXFxubGliL3Rlc3RfcmVmX3RyYWNrZXIuYzoxMDM6XFx0cmVmX3RyYWNrZXJfZGlyX2V4aXQoXFx1MDAyNnJlZl9kaXIpO1xcbmxpYi90ZXN0X3JlZl90cmFja2VyLmMtMTA0LVxcbi0tXFxubmV0L2NvcmUvZGV2LmM9MTIwMzY9c3RydWN0IG5ldF9kZXZpY2UgKmFsbG9jX25ldGRldl9tcXMoaW50IHNpemVvZl9wcml2LCBjb25zdCBjaGFyICpuYW1lLFxcbi0tXFxubmV0L2NvcmUvZGV2LmMtMTIxNjYtI2VuZGlmXFxubmV0L2NvcmUvZGV2LmM6MTIxNjc6XFx0cmVmX3RyYWNrZXJfZGlyX2V4aXQoXFx1MDAyNmRldi1cXHUwMDNlcmVmY250X3RyYWNrZXIpO1xcbm5ldC9jb3JlL2Rldi5jLTEyMTY4LVxcdGt2ZnJlZShkZXYpO1xcbi0tXFxubmV0L2NvcmUvZGV2LmM9MTIxOTg9dm9pZCBmcmVlX25ldGRldihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxubmV0L2NvcmUvZGV2LmMtMTIyMjgtXFxubmV0L2NvcmUvZGV2LmM6MTIyMjk6XFx0cmVmX3RyYWNrZXJfZGlyX2V4aXQoXFx1MDAyNmRldi1cXHUwMDNlcmVmY250X3RyYWNrZXIpO1xcbm5ldC9jb3JlL2Rldi5jLTEyMjMwLSNpZmRlZiBDT05GSUdfUENQVV9ERVZfUkVGQ05UXFxuLS1cXG5uZXQvY29yZS9uZXRfbmFtZXNwYWNlLmM9NTMwPXZvaWQgbmV0X3Bhc3NpdmVfZGVjKHN0cnVjdCBuZXQgKm5ldClcXG4tLVxcbm5ldC9jb3JlL25ldF9uYW1lc3BhY2UuYy01MzUtXFx0XFx0LyogVGhlcmUgc2hvdWxkIG5vdCBiZSBhbnkgdHJhY2tlcnMgbGVmdCB0aGVyZS4gKi9cXG5uZXQvY29yZS9uZXRfbmFtZXNwYWNlLmM6NTM2OlxcdFxcdHJlZl90cmFja2VyX2Rpcl9leGl0KFxcdTAwMjZuZXQtXFx1MDAzZW5vdHJlZmNudF90cmFja2VyKTtcXG5uZXQvY29yZS9uZXRfbmFtZXNwYWNlLmMtNTM3LVxcbi0tXFxubmV0L2NvcmUvbmV0X25hbWVzcGFjZS5jPTc0NT12b2lkIF9fcHV0X25ldChzdHJ1Y3QgbmV0ICpuZXQpXFxubmV0L2NvcmUvbmV0X25hbWVzcGFjZS5jLTc0Ni17XFxubmV0L2NvcmUvbmV0X25hbWVzcGFjZS5jOjc0NzpcXHRyZWZfdHJhY2tlcl9kaXJfZXhpdChcXHUwMDI2bmV0LVxcdTAwM2VyZWZjbnRfdHJhY2tlcik7XFxubmV0L2NvcmUvbmV0X25hbWVzcGFjZS5jLTc0OC1cXHQvKiBDbGVhbnVwIHRoZSBuZXR3b3JrIG5hbWVzcGFjZSBpbiBwcm9jZXNzIGNvbnRleHQgKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDc6MjE6NTEuNDE0MDI1Nzc4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQwMDM0MzU3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipSZWYgVHJhY2tlciBDbGVhbi11cCBpbiBgYWxsb2NfbmV0ZGV2X21xc2AgRXJyb3IgUGF0aCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYWRkaW5nIGByZWZfdHJhY2tlcl9kaXJfZXhpdGAgdG8gdGhlIGVycm9yIHBhdGggaW4gYGFsbG9jX25ldGRldl9tcXNgLiBSaWdodCwgYSBkaWFnbm9zdGljIGNoYW5nZSBzcGVjaWZpY2FsbHkgZm9yIHN5c3RlbXMgd2l0aCBgQ09ORklHX1JFRl9UUkFDS0VSYCBlbmFibGVkLiBJdCBsb29rcyBsaWtlIGl0J3MganVzdCBhYm91dCBjbGVhbmluZyB1cCB0aGUgcmVmZXJlbmNlIHRyYWNrZXIsIHdoaWNoIGlzIGdvb2QuIElmIHRoaXMgaXNuJ3QgY2FsbGVkLCBpdCdzIHBvc3NpYmxlIHRoZXJlIGNvdWxkIGJlIGEgbWVtb3J5IGxlYWsgaW4gdGhlIHRyYWNrZXIgaXRzZWxmLCBvciBhdCBsZWFzdCB3ZSdkIHNlZSBzb21lIHdhcm5pbmdzLiBJIG5lZWQgdG8gdGFrZSBhIHF1aWNrIGxvb2sgYXQgdGhlIGltcGxlbWVudGF0aW9uIG9mIGByZWZfdHJhY2tlcl9kaXJfZXhpdGAgdG8gYmUgc3VyZSBJJ20gZm9sbG93aW5nIHRoZSBsb2dpYy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjMyNCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwNzoyMTo1NC44MTQzNzMyMzZaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NjA1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJsaWIvcmVmX3RyYWNrZXIuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMTksXG4gIFwiTGluZUNvdW50XCI6IDM1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAyMTk6XFx0dm9pZCByZWZfdHJhY2tlcl9kaXJfZXhpdChzdHJ1Y3QgcmVmX3RyYWNrZXJfZGlyICpkaXIpXFxuIDIyMDpcXHR7XFxuIDIyMTpcXHRcXHRzdHJ1Y3QgcmVmX3RyYWNrZXIgKnRyYWNrZXIsICpuO1xcbiAyMjI6XFx0XFx0dW5zaWduZWQgbG9uZyBmbGFncztcXG4gMjIzOlxcdFxcdGJvb2wgbGVhayA9IGZhbHNlO1xcbiAyMjQ6XFx0XFxuIDIyNTpcXHRcXHRkaXItXFx1MDAzZWRlYWQgPSB0cnVlO1xcbiAyMjY6XFx0XFx0LypcXG4gMjI3OlxcdFxcdCAqIFRoZSB4YXJyYXkgZW50cmllcyBtdXN0IGJlIG1hcmtlZCBiZWZvcmUgdGhlIGRpci1cXHUwMDNlbG9jayBpcyB0YWtlbiB0b1xcbiAyMjg6XFx0XFx0ICogcHJvdGVjdCBzaW11bHRhbmVvdXMgZGVidWdmcyByZWFkZXJzLlxcbiAyMjk6XFx0XFx0ICovXFxuIDIzMDpcXHRcXHRyZWZfdHJhY2tlcl9kZWJ1Z2ZzX21hcmsoZGlyKTtcXG4gMjMxOlxcdFxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZkaXItXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG4gMjMyOlxcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZSh0cmFja2VyLCBuLCBcXHUwMDI2ZGlyLVxcdTAwM2VxdWFyYW50aW5lLCBoZWFkKSB7XFxuIDIzMzpcXHRcXHRcXHRsaXN0X2RlbChcXHUwMDI2dHJhY2tlci1cXHUwMDNlaGVhZCk7XFxuIDIzNDpcXHRcXHRcXHRrZnJlZSh0cmFja2VyKTtcXG4gMjM1OlxcdFxcdFxcdGRpci1cXHUwMDNlcXVhcmFudGluZV9hdmFpbCsrO1xcbiAyMzY6XFx0XFx0fVxcbiAyMzc6XFx0XFx0aWYgKCFsaXN0X2VtcHR5KFxcdTAwMjZkaXItXFx1MDAzZWxpc3QpKSB7XFxuIDIzODpcXHRcXHRcXHRyZWZfdHJhY2tlcl9kaXJfcHJpbnRfbG9ja2VkKGRpciwgMTYpO1xcbiAyMzk6XFx0XFx0XFx0bGVhayA9IHRydWU7XFxuIDI0MDpcXHRcXHRcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUodHJhY2tlciwgbiwgXFx1MDAyNmRpci1cXHUwMDNlbGlzdCwgaGVhZCkge1xcbiAyNDE6XFx0XFx0XFx0XFx0bGlzdF9kZWwoXFx1MDAyNnRyYWNrZXItXFx1MDAzZWhlYWQpO1xcbiAyNDI6XFx0XFx0XFx0XFx0a2ZyZWUodHJhY2tlcik7XFxuIDI0MzpcXHRcXHRcXHR9XFxuIDI0NDpcXHRcXHR9XFxuIDI0NTpcXHRcXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZkaXItXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG4gMjQ2OlxcdFxcdFdBUk5fT05fT05DRShsZWFrKTtcXG4gMjQ3OlxcdFxcdFdBUk5fT05fT05DRShyZWZjb3VudF9yZWFkKFxcdTAwMjZkaXItXFx1MDAzZXVudHJhY2tlZCkgIT0gMSk7XFxuIDI0ODpcXHRcXHRXQVJOX09OX09OQ0UocmVmY291bnRfcmVhZChcXHUwMDI2ZGlyLVxcdTAwM2Vub190cmFja2VyKSAhPSAxKTtcXG4gMjQ5OlxcdH1cXG4gMjUwOlxcdEVYUE9SVF9TWU1CT0wocmVmX3RyYWNrZXJfZGlyX2V4aXQpO1xcbiAyNTE6XFx0XFxuIDI1MjpcXHRpbnQgcmVmX3RyYWNrZXJfYWxsb2Moc3RydWN0IHJlZl90cmFja2VyX2RpciAqZGlyLFxcbiAyNTM6XFx0XFx0XFx0ICAgICAgc3RydWN0IHJlZl90cmFja2VyICoqdHJhY2tlcnAsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDA3OjIxOjU0LjgxNDQ2MDg3NloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU5NDMyODAyMTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudDogTm90IFdvcnRoIEZ1enppbmcqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgaW5jbHVkZXMgYHJlZl90cmFja2VyX2Rpcl9leGl0YC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBcIm1lbW9yeSBsZWFrIGZpeCBmb3IgYGFsbG9jX25ldGRldl9tcXNgIG9uIHRoZSBlcnJvciBwYXRoIOKAkyBzaG91bGQgd2UgYm90aGVyIGZ1enppbmcgdGhpcz9cIiBJdCdzIGEgY2xlYW51cCBmdW5jdGlvbiwgcmVhbGx5LCBqdXN0IGNhbGxpbmcgYHJlZl90cmFja2VyX2Rpcl9leGl0YC4gQSB2ZXJ5IHN0cmFpZ2h0Zm9yd2FyZCBtZW1vcnkgbGVhayBmaXgsIG5vdGhpbmcgY29tcGxpY2F0ZWQuXG5cbkknbSBsZWFuaW5nIHRvd2FyZHMgXCJuby5cIiBUaGlzIGNoYW5nZSAqb25seSogYWRkcyB0aGUgY2FsbCB0byBgcmVmX3RyYWNrZXJfZGlyX2V4aXRgIG9uIGEgZmFpbHVyZSBwYXRoLiBJdCBkb2Vzbid0IGFkZCBhbnkgbmV3IGNvcmUgZnVuY3Rpb25hbGl0eSB0aGF0J3MgcmlwZSBmb3IgZnV6emluZy4gSXQncyBzdHJpY3RseSBhYm91dCBjbGVhbmluZyB1cCByZXNvdXJjZXMuIEFuZCwgb2ggeWVhaCwgaXQncyBjb25uZWN0ZWQgdG8gdGhlIGBDT05GSUdfUkVGX1RSQUNLRVJgIGluZnJhc3RydWN0dXJlLCByaWdodD8gU28gaXQncyBiYXNpY2FsbHkgcGFydCBvZiB0aGUgZGVidWdnaW5nIHNldHVwLlxuXG5FdmVuIGlmIGl0ICp3YXNuJ3QqIHRpZWQgdG8gZGVidWdnaW5nLCBpdCdzIHN0aWxsIGp1c3QgdGhhdCBzaW5nbGUgY2xlYW51cCBjYWxsIG9uIGFuIGVycm9yIHBhdGguIEl0J3Mgbm90IGludHJvZHVjaW5nIGEgbmV3IGNvZGUgcGF0aCB0aGF0J3Mgd29ydGggZnV6emluZyB0byB1bmNvdmVyIGJ1Z3MuXG5cblRoZXJlZm9yZSwgbXkgZmluYWwgYW5zd2VyIGlzICoqV29ydGhGdXp6aW5nPWZhbHNlKiouIFRoaXMgaXMgYSBtZW1vcnkgbGVhayBmaXggaW4gYW4gZXJyb3IgcGF0aCwgYW5kIGl0J3MgcmVsYXRlZCB0byBkaWFnbm9zdGljL2RlYnVnZ2luZyBpbmZyYXN0cnVjdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzE5MywiT3V0cHV0VG9rZW5zIjoxMDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwNzoyMjowMC43NTc3NDQ5MDhaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTg3MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgbWlzc2luZyBjYWxsIHRvIGByZWZfdHJhY2tlcl9kaXJfZXhpdCgpYCBpbiB0aGUgZXJyb3IgcGF0aCBvZiBgYWxsb2NfbmV0ZGV2X21xcygpYC4gVGhpcyBpcyBhIHNpbXBsZSBtZW1vcnkgbGVhayBmaXggZm9yIHRoZSByZWZlcmVuY2UgdHJhY2tpbmcgaW5mcmFzdHJ1Y3R1cmUgKHdoaWNoIGlzIHByaW1hcmlseSB1c2VkIGZvciBkZWJ1Z2dpbmcpIGFuZCBkb2VzIG5vdCBpbnRyb2R1Y2UgbmV3IGZ1bmN0aW9uYWwgbG9naWMgb3IgY29tcGxleCBzdGF0ZSBjaGFuZ2VzIHRoYXQgd291bGQgYmVuZWZpdCBmcm9tIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgbWlzc2luZyBjYWxsIHRvIGByZWZfdHJhY2tlcl9kaXJfZXhpdCgpYCBpbiB0aGUgZXJyb3IgcGF0aCBvZiBgYWxsb2NfbmV0ZGV2X21xcygpYC4gVGhpcyBpcyBhIHNpbXBsZSBtZW1vcnkgbGVhayBmaXggZm9yIHRoZSByZWZlcmVuY2UgdHJhY2tpbmcgaW5mcmFzdHJ1Y3R1cmUgKHdoaWNoIGlzIHByaW1hcmlseSB1c2VkIGZvciBkZWJ1Z2dpbmcpIGFuZCBkb2VzIG5vdCBpbnRyb2R1Y2UgbmV3IGZ1bmN0aW9uYWwgbG9naWMgb3IgY29tcGxleCBzdGF0ZSBjaGFuZ2VzIHRoYXQgd291bGQgYmVuZWZpdCBmcm9tIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwNzoyMjowMC43NTc3NzkxMjhaIiwiU2VxIjoxMSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowddvxl[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-15 07:03:10 +0000 UTC FinishedAt: 2026-08-15 07:22:01 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDA3OjIxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIG1pc3NpbmcgY2FsbCB0byBgcmVmX3RyYWNrZXJfZGlyX2V4aXQoKWAgaW4gdGhlIGVycm9yIHBhdGggb2YgYGFsbG9jX25ldGRldl9tcXMoKWAuIFRoaXMgaXMgYSBzaW1wbGUgbWVtb3J5IGxlYWsgZml4IGZvciB0aGUgcmVmZXJlbmNlIHRyYWNraW5nIGluZnJhc3RydWN0dXJlICh3aGljaCBpcyBwcmltYXJpbHkgdXNlZCBmb3IgZGVidWdnaW5nKSBhbmQgZG9lcyBub3QgaW50cm9kdWNlIG5ldyBmdW5jdGlvbmFsIGxvZ2ljIG9yIGNvbXBsZXggc3RhdGUgY2hhbmdlcyB0aGF0IHdvdWxkIGJlbmVmaXQgZnJvbSBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwNzoyMTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGRmMmUxYTQyMWI3OTJlMWJiMzFjODVkZGQ1ZTk0NmRmMGU5YTI5YWJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEF1ZyAxNSAwNzoyMTozOCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvY29yZS9kZXYuYyBiL25ldC9jb3JlL2Rldi5jXG5pbmRleCBlY2U2NzAwNTM2ZDliLi5jMWIxNjhiMDU3MWUwIDEwMDY0NFxuLS0tIGEvbmV0L2NvcmUvZGV2LmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9jb3JlL2Rldi5jXG5AQCAtMTIxNjQsNiAmIzQzOzEyMTY0LDcgQEAgc3RydWN0IG5ldF9kZXZpY2UgKmFsbG9jX25ldGRldl9tcXMoaW50IHNpemVvZl9wcml2LCBjb25zdCBjaGFyICpuYW1lLFxuIFx0ZnJlZV9wZXJjcHUoZGV2LVx1MDAzZXBjcHVfcmVmY250KTtcbiBmcmVlX2RldjpcbiAjZW5kaWZcbiYjNDM7XHRyZWZfdHJhY2tlcl9kaXJfZXhpdChcdTAwMjZkZXYtXHUwMDNlcmVmY250X3RyYWNrZXIpO1xuIFx0a3ZmcmVlKGRldik7XG4gXHRyZXR1cm4gTlVMTDtcbiB9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDc6MjE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBtaXNzaW5nIGNhbGwgdG8gYHJlZl90cmFja2VyX2Rpcl9leGl0KClgIGluIHRoZSBlcnJvciBwYXRoIG9mIGBhbGxvY19uZXRkZXZfbXFzKClgLiBUaGlzIGlzIGEgc2ltcGxlIG1lbW9yeSBsZWFrIGZpeCBmb3IgdGhlIHJlZmVyZW5jZSB0cmFja2luZyBpbmZyYXN0cnVjdHVyZSAod2hpY2ggaXMgcHJpbWFyaWx5IHVzZWQgZm9yIGRlYnVnZ2luZykgYW5kIGRvZXMgbm90IGludHJvZHVjZSBuZXcgZnVuY3Rpb25hbCBsb2dpYyBvciBjb21wbGV4IHN0YXRlIGNoYW5nZXMgdGhhdCB3b3VsZCBiZW5lZml0IGZyb20gZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBkZjJlMWE0MjFiNzkyZTFiYjMxYzg1ZGRkNWU5NDZkZjBlOWEyOWFiCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBBdWcgMTUgMDc6MjE6MzggMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvY29yZS9kZXYuYyBiL25ldC9jb3JlL2Rldi5jCmluZGV4IGVjZTY3MDA1MzZkOWIuLmMxYjE2OGIwNTcxZTAgMTAwNjQ0Ci0tLSBhL25ldC9jb3JlL2Rldi5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9jb3JlL2Rldi5jCkBAIC0xMjE2NCw2ICYjNDM7MTIxNjQsNyBAQCBzdHJ1Y3QgbmV0X2RldmljZSAqYWxsb2NfbmV0ZGV2X21xcyhpbnQgc2l6ZW9mX3ByaXYsIGNvbnN0IGNoYXIgKm5hbWUsCiAJZnJlZV9wZXJjcHUoZGV2LSZndDtwY3B1X3JlZmNudCk7CiBmcmVlX2RldjoKICNlbmRpZgomIzQzOwlyZWZfdHJhY2tlcl9kaXJfZXhpdCgmYW1wO2Rldi0mZ3Q7cmVmY250X3RyYWNrZXIpOwogCWt2ZnJlZShkZXYpOwogCXJldHVybiBOVUxMOwogfQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwNzoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTU2CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhlIHNpdHVhdGlvbiwgcHJlc2VudGVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgYW4gZXhwZXJ0OgoKKipJbnZlc3RpZ2F0aW5nIGEgUmVzb3VyY2UgTGVhayBGaXggaW4gYGFsbG9jX25ldGRldl9tcXNgKioKCk9rYXksIEkmIzM5O3ZlIGdvdCBhIHBhdGNoIGhlcmUgdGhhdCYjMzk7cyBhZGRpbmcgYHJlZl90cmFja2VyX2Rpcl9leGl0KCZhbXA7ZGV2LSZndDtyZWZjbnRfdHJhY2tlcik7YCB0byB0aGUgYGFsbG9jX25ldGRldl9tcXNgIGZ1bmN0aW9uIHdpdGhpbiBgbmV0L2NvcmUvZGV2LmNgLiBJbW1lZGlhdGVseSwgbXkgYnJhaW4gZmxhZ3MgdGhpcyBhcyBhIHBvdGVudGlhbCBmaXggZm9yIGEgcmVzb3VyY2UgbGVhaywgc3BlY2lmaWNhbGx5IHdpdGhpbiBhbiBlcnJvciBoYW5kbGluZyBwYXRoLiBUaGUgdXNlIG9mIGEgcmVmZXJlbmNlIGNvdW50ZXIgdHJhY2tlciBpbmRpY2F0ZXMgdGhhdCBzb21lIHJlc291cmNlIGFsbG9jYXRpb24gaXMgaGFwcGVuaW5nIGluIHRoZSBzdWNjZXNzIHBhdGhzIGFuZCBzb21lIGZyZWVpbmcgaXMgcmVxdWlyZWQgaW4gdGhlIGVycm9yIHBhdGhzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aHkgdGhpcyBzcGVjaWZpYyBjbGVhbnVwIGlzIHJlcXVpcmVkLgoKTXkgZmlyc3QgdGhvdWdodCBpcyB0byBkaXZlIHJpZ2h0IGludG8gdGhlIGBhbGxvY19uZXRkZXZfbXFzYCBmdW5jdGlvbiBpdHNlbGYuIEkgbmVlZCB0byB0cmFjZSB0aGUgcmVzb3VyY2UgYWxsb2NhdGlvbnMgYW5kIGRlYWxsb2NhdGlvbnMgd2l0aGluIHRoYXQgZnVuY3Rpb24gdG8gdW5kZXJzdGFuZCB0aGUgZmxvdyBjb250cm9sLCBlcnJvciBoYW5kbGluZywgYW5kIHRoZSBjaXJjdW1zdGFuY2VzIHVuZGVyIHdoaWNoIHRoaXMgYHJlZl90cmFja2VyX2Rpcl9leGl0YCBjYWxsIGlzIG5lY2Vzc2FyeS4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3Igd2hlcmUgcmVzb3VyY2VzIGFyZSBhbGxvY2F0ZWQgYnV0IG5vdCBuZWNlc3NhcmlseSBmcmVlZCB3aGVuIHNvbWV0aGluZyBnb2VzIHdyb25nLiBUaGlzIHBhdGNoICpzdWdnZXN0cyogdGhhdCBzb21lIHNvcnQgb2YgcmVmZXJlbmNlIGlzIGJlaW5nIGhlbGQgaW4gdGhlIGZhaWx1cmUgcGF0aCB0aGF0IG5lZWRzIHRvIGJlIGRlY3JlbWVudGVkLiBJcyB0aGUgcmVzb3VyY2UgYmVpbmcgaGVsZCBkdWUgdG8gYW4gZWFybHkgcmV0dXJuLCBhbmQgaXMgdGhlIHRyYWNrZXIgcHJvcGVybHkgaW5pdGlhbGl6ZWQgdG8gYWNjb3VudCBmb3IgdGhlIGFsbG9jYXRpb24gYW5kIGRlYWxsb2NhdGlvbj8gSXMgdGhlIGNsZWFudXAgY29ycmVjdD8KCkkmIzM5O2xsIGJlIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gYW55IG5lc3RlZCBmdW5jdGlvbiBjYWxscywgZXNwZWNpYWxseSB0aG9zZSB0aGF0IGludm9sdmUgbWVtb3J5IGFsbG9jYXRpb24sIHJlc291cmNlIHJlZ2lzdHJhdGlvbiwgYW5kIHVsdGltYXRlbHksIGRlYWxsb2NhdGlvbi4gSSYjMzk7bGwgbmVlZCB0byBjb25maXJtIHRoYXQgdGhpcyBgcmVmX3RyYWNrZXJfZGlyX2V4aXRgIGNhbGwgaXMgaW4gdGhlIHJpZ2h0IHBsYWNlLCB0aGF0IGl0JiMzOTtzIGJlaW5nIHRyaWdnZXJlZCBjb3JyZWN0bHksIGFuZCBtb3N0IGltcG9ydGFudGx5LCB0aGF0IGl0JiMzOTtzIGFjdHVhbGx5IHJlc29sdmluZyB0aGUgbGVhayBvciBpcyBhdCBsZWFzdCBjb3JyZWN0bHkgY2xlYW5pbmcgdXAgaW4gYW4gZXJyb3IgcGF0aC4gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGl0JiMzOTtzIHRoZSBjb3JyZWN0IGtpbmQgb2YgcmVzb3VyY2UgdHJhY2tpbmcuIERvZXMgaXQgYWRkcmVzcyB0aGUgc3BlY2lmaWMgaXNzdWUgdGhhdCB0aGUgdHJhY2tlciBpcyBpbnRlbmRlZCBmb3I/CgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDc6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvY29yZS9kZXYuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEyMTUwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzEyMTUwOlx0XHRkZXYtXHUwMDNlZ3JvdXAgPSBJTklUX05FVERFVl9HUk9VUDtcbjEyMTUxOlx0XHRpZiAoIWRldi1cdTAwM2VldGh0b29sX29wcylcbjEyMTUyOlx0XHRcdGRldi1cdTAwM2VldGh0b29sX29wcyA9IFx1MDAyNmRlZmF1bHRfZXRodG9vbF9vcHM7XG4xMjE1MzpcdFxuMTIxNTQ6XHRcdG5mX2hvb2tfbmV0ZGV2X2luaXQoZGV2KTtcbjEyMTU1Olx0XG4xMjE1NjpcdFx0cmV0dXJuIGRldjtcbjEyMTU3Olx0XG4xMjE1ODpcdGZyZWVfYWxsOlxuMTIxNTk6XHRcdGZyZWVfbmV0ZGV2KGRldik7XG4xMjE2MDpcdFx0cmV0dXJuIE5VTEw7XG4xMjE2MTpcdFxuMTIxNjI6XHRmcmVlX3BjcHU6XG4xMjE2MzpcdCNpZmRlZiBDT05GSUdfUENQVV9ERVZfUkVGQ05UXG4xMjE2NDpcdFx0ZnJlZV9wZXJjcHUoZGV2LVx1MDAzZXBjcHVfcmVmY250KTtcbjEyMTY1Olx0ZnJlZV9kZXY6XG4xMjE2NjpcdCNlbmRpZlxuMTIxNjc6XHRcdHJlZl90cmFja2VyX2Rpcl9leGl0KFx1MDAyNmRldi1cdTAwM2VyZWZjbnRfdHJhY2tlcik7XG4xMjE2ODpcdFx0a3ZmcmVlKGRldik7XG4xMjE2OTpcdFx0cmV0dXJuIE5VTEw7XG4xMjE3MDpcdH1cbjEyMTcxOlx0RVhQT1JUX1NZTUJPTChhbGxvY19uZXRkZXZfbXFzKTtcbjEyMTcyOlx0XG4xMjE3MzpcdHN0YXRpYyB2b2lkIG5ldGRldl9uYXBpX2V4aXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbjEyMTc0Olx0e1xuMTIxNzU6XHRcdGlmICghbGlzdF9lbXB0eShcdTAwMjZkZXYtXHUwMDNlbmFwaV9saXN0KSkge1xuMTIxNzY6XHRcdFx0c3RydWN0IG5hcGlfc3RydWN0ICpwLCAqbjtcbjEyMTc3Olx0XG4xMjE3ODpcdFx0XHRuZXRkZXZfbG9jayhkZXYpO1xuMTIxNzk6XHRcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHAsIG4sIFx1MDAyNmRldi1cdTAwM2VuYXBpX2xpc3QsIGRldl9saXN0KVxuMTIxODA6XHRcdFx0XHRfX25ldGlmX25hcGlfZGVsX2xvY2tlZChwKTtcbjEyMTgxOlx0XHRcdG5ldGRldl91bmxvY2soZGV2KTtcbjEyMTgyOlx0XG4xMjE4MzpcdFx0XHRzeW5jaHJvbml6ZV9uZXQoKTtcbjEyMTg0Olx0XHR9XG4xMjE4NTpcdFxuMTIxODY6XHRcdGt2ZnJlZShkZXYtXHUwMDNlbmFwaV9jb25maWcpO1xuMTIxODc6XHR9XG4xMjE4ODpcdFxuMTIxODk6XHQvKipcbjEyMTkwOlx0ICogZnJlZV9uZXRkZXYgLSBmcmVlIG5ldHdvcmsgZGV2aWNlXG4xMjE5MTpcdCAqIEBkZXY6IGRldmljZVxuMTIxOTI6XHQgKlxuMTIxOTM6XHQgKiBUaGlzIGZ1bmN0aW9uIGRvZXMgdGhlIGxhc3Qgc3RhZ2Ugb2YgZGVzdHJveWluZyBhbiBhbGxvY2F0ZWQgZGV2aWNlXG4xMjE5NDpcdCAqIGludGVyZmFjZS4gVGhlIHJlZmVyZW5jZSB0byB0aGUgZGV2aWNlIG9iamVjdCBpcyByZWxlYXNlZC4gSWYgdGhpc1xuMTIxOTU6XHQgKiBpcyB0aGUgbGFzdCByZWZlcmVuY2UgdGhlbiBpdCB3aWxsIGJlIGZyZWVkLk11c3QgYmUgY2FsbGVkIGluIHByb2Nlc3NcbjEyMTk2Olx0ICogY29udGV4dC5cbjEyMTk3Olx0ICovXG4xMjE5ODpcdHZvaWQgZnJlZV9uZXRkZXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbjEyMTk5Olx0e1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDA3OjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyMTIKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAyMDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgU3VidGxlIE5ldHdvcmsgRGV2aWNlIEFsbG9jYXRpb24gUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0JiMzOTtzIGEgbWlub3IgY2hhbmdlIGluIGBhbGxvY19uZXRkZXZfbXFzYC4gVGhleSYjMzk7cmUgYWRkaW5nIGByZWZfdHJhY2tlcl9kaXJfZXhpdCgmYW1wO2Rldi0mZ3Q7cmVmY250X3RyYWNrZXIpYCB0byB0aGUgZXJyb3IgaGFuZGxpbmcgcGF0aCwgc3BlY2lmaWNhbGx5IGluIGBmcmVlX3BjcHVgIGFuZCBgZnJlZV9kZXZgLiBSaWdodCBvZmYgdGhlIGJhdCwgSSByZWNvZ25pemUgdGhpcyBpcyBhYm91dCBwcmV2ZW50aW5nIHNvbWUga2luZCBvZiByZXNvdXJjZSBsZWFrIG9yLCBwb3RlbnRpYWxseSwgYSBtb3JlIHNlcmlvdXMgaXNzdWUgd2hlbiB0aGUgYWxsb2NhdGlvbiBmYWlscy4gQSBxdWljayByZXZpZXcgYW5kIHRoZSBmaXggbG9va3MgY29ycmVjdC4KCk15IGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtXb3J0aCBmdXp6aW5nPyYjMzQ7IEJ1dCBpdCYjMzk7cyBhICp2ZXJ5KiBzcGVjaWZpYyBmYWlsdXJlIHNjZW5hcmlvLiBUbyBwcm9wZXJseSBmdXp6IHRoaXMsIEkmIzM5O2QgcHJvYmFibHkgbmVlZCB0byBpbmplY3QgZmF1bHRzIGludG8gYGFsbG9jX25ldGRldl9tcXNgIGl0c2VsZiwgYW5kIHRoYXQmIzM5O3MgYSAqY29yZSogZnVuY3Rpb24uIE5vdCBpZGVhbC4gSXQmIzM5O3MgdXNlZCBldmVyeXdoZXJlLiBUaGVuIEkgcmVtZW1iZXIgdGhhdCB0aGlzIGlzIGZvciAqYW55KiBuZXR3b3JrIGRldmljZSBjcmVhdGlvbiBzbyBJIHJlLWV2YWx1YXRlLiBJZiBpdCBmYWlscywgaXQgaXMgc3VwcG9zZWQgdG8gY2xlYW4gdXAsIHdoaWNoIGlzIHdoYXQgdGhpcyBwYXRjaCBhcHBlYXJzIHRvIGJlIGRvaW5nLgoKVGhlbiBJIHBhdXNlZCB0byB0aGluayBhYm91dCB3aGF0IGlzIHNwZWNpZmljIGFib3V0IGByZWZfdHJhY2tlcl9kaXJfZXhpdGAuIFRoZSBjb250ZXh0IHJlbWluZHMgbWUgdGhhdCB0aGUgYHJlZl90cmFja2VyYCBzdHVmZiBpcyBvbmx5IGVuYWJsZWQgaWYgYENPTkZJR19SRUZfVFJBQ0tFUmAgaXMgZW5hYmxlZCwgcmlnaHQ/IFNvLCBpcyAqdGhhdCogY29uZmlnIG5lZWRlZD8gQW5kIGlzIGl0IGVuYWJsZWQgaW4gdGhlIHN5emthbGxlciBjb25maWd1cmF0aW9uLiBNeSBpbnRlcm5hbCBmbGFncyBqdXN0IGZsaXBwZWQuIE9rYXksIGl0IGxvb2tzIGxpa2UgaXQgaXMgc2V0LiBJZiBgQ09ORklHX1JFRl9UUkFDS0VSYCBpc24mIzM5O3QgZW5hYmxlZCwgdGhlbiB0aGlzIGZ1bmN0aW9uIGNhbGwgd2lsbCBiZSBjb21waWxlZCBvdXQuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCYjMzk7cyBhY2NvdW50ZWQgZm9yLiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgaWYgYENPTkZJR19SRUZfVFJBQ0tFUmAgaXMgZXZlbiByZXF1aXJlZCBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDA3OjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3JlZl90cmFja2VyX2Rpcl9leGl0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvZHBsbC9kcGxsX2NvcmUuYz0xMTM9c3RhdGljIHZvaWQgX19kcGxsX2RldmljZV9wdXQoc3RydWN0IGRwbGxfZGV2aWNlICpkcGxsLCBkcGxsX3RyYWNrZXIgKnRyYWNrZXIpXG4tLVxuZHJpdmVycy9kcGxsL2RwbGxfY29yZS5jLTEyMS1cdFx0V0FSTl9PTighbGlzdF9lbXB0eShcdTAwMjZkcGxsLVx1MDAzZXJlZ2lzdHJhdGlvbl9saXN0KSk7XG5kcml2ZXJzL2RwbGwvZHBsbF9jb3JlLmM6MTIyOlx0XHRyZWZfdHJhY2tlcl9kaXJfZXhpdChcdTAwMjZkcGxsLVx1MDAzZXJlZmNudF90cmFja2VyKTtcbmRyaXZlcnMvZHBsbC9kcGxsX2NvcmUuYy0xMjMtXHRcdGtmcmVlKGRwbGwpO1xuLS1cbmRyaXZlcnMvZHBsbC9kcGxsX2NvcmUuYz0xNTA9c3RhdGljIHZvaWQgX19kcGxsX3Bpbl9wdXQoc3RydWN0IGRwbGxfcGluICpwaW4sIGRwbGxfdHJhY2tlciAqdHJhY2tlcilcbi0tXG5kcml2ZXJzL2RwbGwvZHBsbF9jb3JlLmMtMTYwLVx0XHRkcGxsX3Bpbl9pZHhfZnJlZShwaW4tXHUwMDNlcGluX2lkeCk7XG5kcml2ZXJzL2RwbGwvZHBsbF9jb3JlLmM6MTYxOlx0XHRyZWZfdHJhY2tlcl9kaXJfZXhpdChcdTAwMjZwaW4tXHUwMDNlcmVmY250X3RyYWNrZXIpO1xuZHJpdmVycy9kcGxsL2RwbGxfY29yZS5jLTE2Mi1cdFx0a2ZyZWVfcmN1KHBpbiwgcmN1KTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZGlzcGxheS9kcm1fZHBfdHVubmVsLmM9MTkwMD1zdGF0aWMgdm9pZCBkZXN0cm95X21ncihzdHJ1Y3QgZHJtX2RwX3R1bm5lbF9tZ3IgKm1ncilcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZGlzcGxheS9kcm1fZHBfdHVubmVsLmMtMTkwOS0jaWZkZWYgQ09ORklHX0RSTV9ESVNQTEFZX0RQX1RVTk5FTF9TVEFURV9ERUJVR1xuZHJpdmVycy9ncHUvZHJtL2Rpc3BsYXkvZHJtX2RwX3R1bm5lbC5jOjE5MTA6XHRyZWZfdHJhY2tlcl9kaXJfZXhpdChcdTAwMjZtZ3ItXHUwMDNlcmVmX3RyYWNrZXIpO1xuZHJpdmVycy9ncHUvZHJtL2Rpc3BsYXkvZHJtX2RwX3R1bm5lbC5jLTE5MTEtI2VuZGlmXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVudGltZV9wbS5jPTg2PXN0YXRpYyB2b2lkIHVudHJhY2tfYWxsX2ludGVsX3J1bnRpbWVfcG1fd2FrZXJlZnMoc3RydWN0IGludGVsX3J1bnRpbWVfcG0gKnJwbSlcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3J1bnRpbWVfcG0uYy04Ny17XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmM6ODg6XHRyZWZfdHJhY2tlcl9kaXJfZXhpdChcdTAwMjZycG0tXHUwMDNlZGVidWcpO1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVudGltZV9wbS5jLTg5LX1cbi0tXG5mcy9idHJmcy9kZWxheWVkLWlub2RlLmM9MTM1PXN0YXRpYyBzdHJ1Y3QgYnRyZnNfZGVsYXllZF9ub2RlICpidHJmc19nZXRfb3JfY3JlYXRlX2RlbGF5ZWRfbm9kZShcbi0tXG5mcy9idHJmcy9kZWxheWVkLWlub2RlLmMtMTgyLVx0YnRyZnNfZGVsYXllZF9ub2RlX3JlZl90cmFja2VyX2ZyZWUobm9kZSwgXHUwMDI2bm9kZS1cdTAwM2Vpbm9kZV9jYWNoZV90cmFja2VyKTtcbmZzL2J0cmZzL2RlbGF5ZWQtaW5vZGUuYzoxODM6XHRidHJmc19kZWxheWVkX25vZGVfcmVmX3RyYWNrZXJfZGlyX2V4aXQobm9kZSk7XG5mcy9idHJmcy9kZWxheWVkLWlub2RlLmMtMTg0LVx0a21lbV9jYWNoZV9mcmVlKGRlbGF5ZWRfbm9kZV9jYWNoZSwgbm9kZSk7XG4tLVxuZnMvYnRyZnMvZGVsYXllZC1pbm9kZS5jPTI4MT1zdGF0aWMgdm9pZCBfX2J0cmZzX3JlbGVhc2VfZGVsYXllZF9ub2RlKFxuLS1cbmZzL2J0cmZzL2RlbGF5ZWQtaW5vZGUuYy0zMDgtXHRcdEFTU0VSVChyZWZjb3VudF9yZWFkKFx1MDAyNmRlbGF5ZWRfbm9kZS1cdTAwM2VyZWZzKSA9PSAwKTtcbmZzL2J0cmZzL2RlbGF5ZWQtaW5vZGUuYzozMDk6XHRcdGJ0cmZzX2RlbGF5ZWRfbm9kZV9yZWZfdHJhY2tlcl9kaXJfZXhpdChkZWxheWVkX25vZGUpO1xuZnMvYnRyZnMvZGVsYXllZC1pbm9kZS5jLTMxMC1cdFx0a21lbV9jYWNoZV9mcmVlKGRlbGF5ZWRfbm9kZV9jYWNoZSwgZGVsYXllZF9ub2RlKTtcbi0tXG5mcy9idHJmcy9kZWxheWVkLWlub2RlLmg9MTg0PXN0YXRpYyBpbmxpbmUgdm9pZCBidHJmc19kZWxheWVkX25vZGVfcmVmX3RyYWNrZXJfZGlyX2luaXQoc3RydWN0IGJ0cmZzX2RlbGF5ZWRfbm9kZSAqbm9kZSlcbi0tXG5mcy9idHJmcy9kZWxheWVkLWlub2RlLmgtMTkzLVxuZnMvYnRyZnMvZGVsYXllZC1pbm9kZS5oOjE5NDpzdGF0aWMgaW5saW5lIHZvaWQgYnRyZnNfZGVsYXllZF9ub2RlX3JlZl90cmFja2VyX2Rpcl9leGl0KHN0cnVjdCBidHJmc19kZWxheWVkX25vZGUgKm5vZGUpXG5mcy9idHJmcy9kZWxheWVkLWlub2RlLmgtMTk1LXtcbi0tXG5mcy9idHJmcy9kZWxheWVkLWlub2RlLmgtMTk4LVxuZnMvYnRyZnMvZGVsYXllZC1pbm9kZS5oOjE5OTpcdHJlZl90cmFja2VyX2Rpcl9leGl0KFx1MDAyNm5vZGUtXHUwMDNlcmVmX2Rpci5kaXIpO1xuZnMvYnRyZnMvZGVsYXllZC1pbm9kZS5oLTIwMC19XG4tLVxuZnMvYnRyZnMvZGVsYXllZC1pbm9kZS5oPTIzNz1zdGF0aWMgaW5saW5lIHZvaWQgYnRyZnNfZGVsYXllZF9ub2RlX3JlZl90cmFja2VyX2Rpcl9pbml0KHN0cnVjdCBidHJmc19kZWxheWVkX25vZGUgKm5vZGUpIHsgfVxuZnMvYnRyZnMvZGVsYXllZC1pbm9kZS5oLTIzOC1cbmZzL2J0cmZzL2RlbGF5ZWQtaW5vZGUuaDoyMzk6c3RhdGljIGlubGluZSB2b2lkIGJ0cmZzX2RlbGF5ZWRfbm9kZV9yZWZfdHJhY2tlcl9kaXJfZXhpdChzdHJ1Y3QgYnRyZnNfZGVsYXllZF9ub2RlICpub2RlKSB7IH1cbmZzL2J0cmZzL2RlbGF5ZWQtaW5vZGUuaC0yNDAtXG4tLVxuaW5jbHVkZS9saW51eC9yZWZfdHJhY2tlci5oPTU4PXN0YXRpYyBpbmxpbmUgdm9pZCByZWZfdHJhY2tlcl9kaXJfaW5pdChzdHJ1Y3QgcmVmX3RyYWNrZXJfZGlyICpkaXIsXG4tLVxuaW5jbHVkZS9saW51eC9yZWZfdHJhY2tlci5oLTczLVxuaW5jbHVkZS9saW51eC9yZWZfdHJhY2tlci5oOjc0OnZvaWQgcmVmX3RyYWNrZXJfZGlyX2V4aXQoc3RydWN0IHJlZl90cmFja2VyX2RpciAqZGlyKTtcbmluY2x1ZGUvbGludXgvcmVmX3RyYWNrZXIuaC03NS1cbi0tXG5pbmNsdWRlL2xpbnV4L3JlZl90cmFja2VyLmg9MTAzPXZvaWQgcmVmX3RyYWNrZXJfZGlyX3N5bWxpbmsoc3RydWN0IHJlZl90cmFja2VyX2RpciAqZGlyLCBjb25zdCBjaGFyICpmbXQsIC4uLilcbi0tXG5pbmNsdWRlL2xpbnV4L3JlZl90cmFja2VyLmgtMTA2LVxuaW5jbHVkZS9saW51eC9yZWZfdHJhY2tlci5oOjEwNzpzdGF0aWMgaW5saW5lIHZvaWQgcmVmX3RyYWNrZXJfZGlyX2V4aXQoc3RydWN0IHJlZl90cmFja2VyX2RpciAqZGlyKVxuaW5jbHVkZS9saW51eC9yZWZfdHJhY2tlci5oLTEwOC17XG4tLVxubGliL3JlZl90cmFja2VyLmM9MjM9c3RydWN0IHJlZl90cmFja2VyX2Rpcl9zdGF0cyB7XG4tLVxubGliL3JlZl90cmFja2VyLmMtMzYtICogcmVmX3RyYWNrZXJfZGlyX2luaXQoKSBpcyB1c3VhbGx5IGNhbGxlZCBpbiBhbGxvY2F0aW9uLXNhZmUgY29udGV4dHMsIGJ1dFxubGliL3JlZl90cmFja2VyLmM6Mzc6ICogdGhlIHNhbWUgaXMgbm90IHRydWUgb2YgcmVmX3RyYWNrZXJfZGlyX2V4aXQoKSB3aGljaCBjYW4gYmUgY2FsbGVkIGZyb21cbmxpYi9yZWZfdHJhY2tlci5jLTM4LSAqIGFueXdoZXJlIGFuIG9iamVjdCBpcyBmcmVlZC4gUmVtb3ZpbmcgZGVidWdmcyBkZW50cmllcyBpcyBhIGJsb2NraW5nXG4tLVxubGliL3JlZl90cmFja2VyLmMtNDEtICogRWFjaCBkZW50cnkgaXMgdHJhY2tlZCBpbiB0aGUgYXBwcm9wcmlhdGUgeGFycmF5LiAgV2hlblxubGliL3JlZl90cmFja2VyLmM6NDI6ICogcmVmX3RyYWNrZXJfZGlyX2V4aXQoKSBpcyBjYWxsZWQsIGl0cyBlbnRyaWVzIGluIHRoZSB4YXJyYXlzIGFyZSBtYXJrZWQgYW5kXG5saWIvcmVmX3RyYWNrZXIuYy00My0gKiB0aGUgd29ya3F1ZXVlIGpvYiBpcyBzY2hlZHVsZWQuIFRoZSB3b3JrZXIgdGhlbiBydW5zIGFuZCBkZWxldGVzIGFueSBtYXJrZWRcbi0tXG5saWIvcmVmX3RyYWNrZXIuYz0yMTc9RVhQT1JUX1NZTUJPTChyZWZfdHJhY2tlcl9kaXJfc25wcmludCk7XG5saWIvcmVmX3RyYWNrZXIuYy0yMTgtXG5saWIvcmVmX3RyYWNrZXIuYzoyMTk6dm9pZCByZWZfdHJhY2tlcl9kaXJfZXhpdChzdHJ1Y3QgcmVmX3RyYWNrZXJfZGlyICpkaXIpXG5saWIvcmVmX3RyYWNrZXIuYy0yMjAte1xuLS1cbmxpYi9yZWZfdHJhY2tlci5jLTI0OS19XG5saWIvcmVmX3RyYWNrZXIuYzoyNTA6RVhQT1JUX1NZTUJPTChyZWZfdHJhY2tlcl9kaXJfZXhpdCk7XG5saWIvcmVmX3RyYWNrZXIuYy0yNTEtXG4tLVxubGliL3JlZl90cmFja2VyLmM9MzY5PXN0YXRpYyBpbnQgcmVmX3RyYWNrZXJfZGVidWdmc19zaG93KHN0cnVjdCBzZXFfZmlsZSAqZiwgdm9pZCAqdilcbi0tXG5saWIvcmVmX3RyYWNrZXIuYy0zNzYtXHQvKlxubGliL3JlZl90cmFja2VyLmM6Mzc3Olx0ICogXCYjMzQ7ZGlyXCYjMzQ7IG1heSBub3QgZXhpc3QgYXQgdGhpcyBwb2ludCBpZiByZWZfdHJhY2tlcl9kaXJfZXhpdCgpIGhhc1xubGliL3JlZl90cmFja2VyLmMtMzc4LVx0ICogYWxyZWFkeSBiZWVuIGNhbGxlZC4gVGFrZSBjYXJlIG5vdCB0byBkZXJlZmVyZW5jZSBpdCB1bnRpbCBpdHNcbi0tXG5saWIvcmVmX3RyYWNrZXIuYy0zODMtXHQgKiBkZWFkLCB0aGVuIGl0JiMzOTtzIHNhZmUgdG8gdGFrZSBkaXItXHUwMDNlbG9jayB3aGljaCBwcmV2ZW50c1xubGliL3JlZl90cmFja2VyLmM6Mzg0Olx0ICogcmVmX3RyYWNrZXJfZGlyX2V4aXQoKSBmcm9tIGNvbXBsZXRpbmcuIE9uY2UgdGhlIGRpci1cdTAwM2Vsb2NrIGlzXG5saWIvcmVmX3RyYWNrZXIuYy0zODUtXHQgKiBhY3F1aXJlZCwgdGhlIHhhX2xvY2sgY2FuIGJlIHJlbGVhc2VkLiBBbGwgb2YgdGhpcyBtdXN0IGJlIElSUS1zYWZlLlxuLS1cbmxpYi90ZXN0X3JlZl90cmFja2VyLmM9NjM9c3RhdGljIGludCBfX2luaXQgdGVzdF9yZWZfdHJhY2tlcl9pbml0KHZvaWQpXG4tLVxubGliL3Rlc3RfcmVmX3RyYWNrZXIuYy0xMDItXHQvKiBUaGlzIHNob3VsZCB3YXJuIGFib3V0IHRyYWNrZXJbMF0gXHUwMDI2IHRyYWNrZXJbMV0gYmVpbmcgbm90IGZyZWVkLiAqL1xubGliL3Rlc3RfcmVmX3RyYWNrZXIuYzoxMDM6XHRyZWZfdHJhY2tlcl9kaXJfZXhpdChcdTAwMjZyZWZfZGlyKTtcbmxpYi90ZXN0X3JlZl90cmFja2VyLmMtMTA0LVxuLS1cbm5ldC9jb3JlL2Rldi5jPTEyMDM2PXN0cnVjdCBuZXRfZGV2aWNlICphbGxvY19uZXRkZXZfbXFzKGludCBzaXplb2ZfcHJpdiwgY29uc3QgY2hhciAqbmFtZSxcbi0tXG5uZXQvY29yZS9kZXYuYy0xMjE2Ni0jZW5kaWZcbm5ldC9jb3JlL2Rldi5jOjEyMTY3Olx0cmVmX3RyYWNrZXJfZGlyX2V4aXQoXHUwMDI2ZGV2LVx1MDAzZXJlZmNudF90cmFja2VyKTtcbm5ldC9jb3JlL2Rldi5jLTEyMTY4LVx0a3ZmcmVlKGRldik7XG4tLVxubmV0L2NvcmUvZGV2LmM9MTIxOTg9dm9pZCBmcmVlX25ldGRldihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbm5ldC9jb3JlL2Rldi5jLTEyMjI4LVxubmV0L2NvcmUvZGV2LmM6MTIyMjk6XHRyZWZfdHJhY2tlcl9kaXJfZXhpdChcdTAwMjZkZXYtXHUwMDNlcmVmY250X3RyYWNrZXIpO1xubmV0L2NvcmUvZGV2LmMtMTIyMzAtI2lmZGVmIENPTkZJR19QQ1BVX0RFVl9SRUZDTlRcbi0tXG5uZXQvY29yZS9uZXRfbmFtZXNwYWNlLmM9NTMwPXZvaWQgbmV0X3Bhc3NpdmVfZGVjKHN0cnVjdCBuZXQgKm5ldClcbi0tXG5uZXQvY29yZS9uZXRfbmFtZXNwYWNlLmMtNTM1LVx0XHQvKiBUaGVyZSBzaG91bGQgbm90IGJlIGFueSB0cmFja2VycyBsZWZ0IHRoZXJlLiAqL1xubmV0L2NvcmUvbmV0X25hbWVzcGFjZS5jOjUzNjpcdFx0cmVmX3RyYWNrZXJfZGlyX2V4aXQoXHUwMDI2bmV0LVx1MDAzZW5vdHJlZmNudF90cmFja2VyKTtcbm5ldC9jb3JlL25ldF9uYW1lc3BhY2UuYy01MzctXG4tLVxubmV0L2NvcmUvbmV0X25hbWVzcGFjZS5jPTc0NT12b2lkIF9fcHV0X25ldChzdHJ1Y3QgbmV0ICpuZXQpXG5uZXQvY29yZS9uZXRfbmFtZXNwYWNlLmMtNzQ2LXtcbm5ldC9jb3JlL25ldF9uYW1lc3BhY2UuYzo3NDc6XHRyZWZfdHJhY2tlcl9kaXJfZXhpdChcdTAwMjZuZXQtXHUwMDNlcmVmY250X3RyYWNrZXIpO1xubmV0L2NvcmUvbmV0X25hbWVzcGFjZS5jLTc0OC1cdC8qIENsZWFudXAgdGhlIG5ldHdvcmsgbmFtZXNwYWNlIGluIHByb2Nlc3MgY29udGV4dCAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDA3OjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYzMjQKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUmVmIFRyYWNrZXIgQ2xlYW4tdXAgaW4gYGFsbG9jX25ldGRldl9tcXNgIEVycm9yIFBhdGgqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBhZGRpbmcgYHJlZl90cmFja2VyX2Rpcl9leGl0YCB0byB0aGUgZXJyb3IgcGF0aCBpbiBgYWxsb2NfbmV0ZGV2X21xc2AuIFJpZ2h0LCBhIGRpYWdub3N0aWMgY2hhbmdlIHNwZWNpZmljYWxseSBmb3Igc3lzdGVtcyB3aXRoIGBDT05GSUdfUkVGX1RSQUNLRVJgIGVuYWJsZWQuIEl0IGxvb2tzIGxpa2UgaXQmIzM5O3MganVzdCBhYm91dCBjbGVhbmluZyB1cCB0aGUgcmVmZXJlbmNlIHRyYWNrZXIsIHdoaWNoIGlzIGdvb2QuIElmIHRoaXMgaXNuJiMzOTt0IGNhbGxlZCwgaXQmIzM5O3MgcG9zc2libGUgdGhlcmUgY291bGQgYmUgYSBtZW1vcnkgbGVhayBpbiB0aGUgdHJhY2tlciBpdHNlbGYsIG9yIGF0IGxlYXN0IHdlJiMzOTtkIHNlZSBzb21lIHdhcm5pbmdzLiBJIG5lZWQgdG8gdGFrZSBhIHF1aWNrIGxvb2sgYXQgdGhlIGltcGxlbWVudGF0aW9uIG9mIGByZWZfdHJhY2tlcl9kaXJfZXhpdGAgdG8gYmUgc3VyZSBJJiMzOTttIGZvbGxvd2luZyB0aGUgbG9naWMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDc6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtsaWIvcmVmX3RyYWNrZXIuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIxOSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjE5Olx0dm9pZCByZWZfdHJhY2tlcl9kaXJfZXhpdChzdHJ1Y3QgcmVmX3RyYWNrZXJfZGlyICpkaXIpXG4gMjIwOlx0e1xuIDIyMTpcdFx0c3RydWN0IHJlZl90cmFja2VyICp0cmFja2VyLCAqbjtcbiAyMjI6XHRcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4gMjIzOlx0XHRib29sIGxlYWsgPSBmYWxzZTtcbiAyMjQ6XHRcbiAyMjU6XHRcdGRpci1cdTAwM2VkZWFkID0gdHJ1ZTtcbiAyMjY6XHRcdC8qXG4gMjI3Olx0XHQgKiBUaGUgeGFycmF5IGVudHJpZXMgbXVzdCBiZSBtYXJrZWQgYmVmb3JlIHRoZSBkaXItXHUwMDNlbG9jayBpcyB0YWtlbiB0b1xuIDIyODpcdFx0ICogcHJvdGVjdCBzaW11bHRhbmVvdXMgZGVidWdmcyByZWFkZXJzLlxuIDIyOTpcdFx0ICovXG4gMjMwOlx0XHRyZWZfdHJhY2tlcl9kZWJ1Z2ZzX21hcmsoZGlyKTtcbiAyMzE6XHRcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmRpci1cdTAwM2Vsb2NrLCBmbGFncyk7XG4gMjMyOlx0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUodHJhY2tlciwgbiwgXHUwMDI2ZGlyLVx1MDAzZXF1YXJhbnRpbmUsIGhlYWQpIHtcbiAyMzM6XHRcdFx0bGlzdF9kZWwoXHUwMDI2dHJhY2tlci1cdTAwM2VoZWFkKTtcbiAyMzQ6XHRcdFx0a2ZyZWUodHJhY2tlcik7XG4gMjM1Olx0XHRcdGRpci1cdTAwM2VxdWFyYW50aW5lX2F2YWlsJiM0MzsmIzQzOztcbiAyMzY6XHRcdH1cbiAyMzc6XHRcdGlmICghbGlzdF9lbXB0eShcdTAwMjZkaXItXHUwMDNlbGlzdCkpIHtcbiAyMzg6XHRcdFx0cmVmX3RyYWNrZXJfZGlyX3ByaW50X2xvY2tlZChkaXIsIDE2KTtcbiAyMzk6XHRcdFx0bGVhayA9IHRydWU7XG4gMjQwOlx0XHRcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZSh0cmFja2VyLCBuLCBcdTAwMjZkaXItXHUwMDNlbGlzdCwgaGVhZCkge1xuIDI0MTpcdFx0XHRcdGxpc3RfZGVsKFx1MDAyNnRyYWNrZXItXHUwMDNlaGVhZCk7XG4gMjQyOlx0XHRcdFx0a2ZyZWUodHJhY2tlcik7XG4gMjQzOlx0XHRcdH1cbiAyNDQ6XHRcdH1cbiAyNDU6XHRcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2ZGlyLVx1MDAzZWxvY2ssIGZsYWdzKTtcbiAyNDY6XHRcdFdBUk5fT05fT05DRShsZWFrKTtcbiAyNDc6XHRcdFdBUk5fT05fT05DRShyZWZjb3VudF9yZWFkKFx1MDAyNmRpci1cdTAwM2V1bnRyYWNrZWQpICE9IDEpO1xuIDI0ODpcdFx0V0FSTl9PTl9PTkNFKHJlZmNvdW50X3JlYWQoXHUwMDI2ZGlyLVx1MDAzZW5vX3RyYWNrZXIpICE9IDEpO1xuIDI0OTpcdH1cbiAyNTA6XHRFWFBPUlRfU1lNQk9MKHJlZl90cmFja2VyX2Rpcl9leGl0KTtcbiAyNTE6XHRcbiAyNTI6XHRpbnQgcmVmX3RyYWNrZXJfYWxsb2Moc3RydWN0IHJlZl90cmFja2VyX2RpciAqZGlyLFxuIDI1MzpcdFx0XHQgICAgICBzdHJ1Y3QgcmVmX3RyYWNrZXIgKip0cmFja2VycCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwNzoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MTkzCgkJCQkJCQlvdXRwdXQ6IDEwMAoJCQkJCQkJdGhvdWdodHM6IDIyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50OiBOb3QgV29ydGggRnV6emluZyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IGluY2x1ZGVzIGByZWZfdHJhY2tlcl9kaXJfZXhpdGAuIE15IGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDttZW1vcnkgbGVhayBmaXggZm9yIGBhbGxvY19uZXRkZXZfbXFzYCBvbiB0aGUgZXJyb3IgcGF0aCDigJMgc2hvdWxkIHdlIGJvdGhlciBmdXp6aW5nIHRoaXM/JiMzNDsgSXQmIzM5O3MgYSBjbGVhbnVwIGZ1bmN0aW9uLCByZWFsbHksIGp1c3QgY2FsbGluZyBgcmVmX3RyYWNrZXJfZGlyX2V4aXRgLiBBIHZlcnkgc3RyYWlnaHRmb3J3YXJkIG1lbW9yeSBsZWFrIGZpeCwgbm90aGluZyBjb21wbGljYXRlZC4KCkkmIzM5O20gbGVhbmluZyB0b3dhcmRzICYjMzQ7bm8uJiMzNDsgVGhpcyBjaGFuZ2UgKm9ubHkqIGFkZHMgdGhlIGNhbGwgdG8gYHJlZl90cmFja2VyX2Rpcl9leGl0YCBvbiBhIGZhaWx1cmUgcGF0aC4gSXQgZG9lc24mIzM5O3QgYWRkIGFueSBuZXcgY29yZSBmdW5jdGlvbmFsaXR5IHRoYXQmIzM5O3MgcmlwZSBmb3IgZnV6emluZy4gSXQmIzM5O3Mgc3RyaWN0bHkgYWJvdXQgY2xlYW5pbmcgdXAgcmVzb3VyY2VzLiBBbmQsIG9oIHllYWgsIGl0JiMzOTtzIGNvbm5lY3RlZCB0byB0aGUgYENPTkZJR19SRUZfVFJBQ0tFUmAgaW5mcmFzdHJ1Y3R1cmUsIHJpZ2h0PyBTbyBpdCYjMzk7cyBiYXNpY2FsbHkgcGFydCBvZiB0aGUgZGVidWdnaW5nIHNldHVwLgoKRXZlbiBpZiBpdCAqd2FzbiYjMzk7dCogdGllZCB0byBkZWJ1Z2dpbmcsIGl0JiMzOTtzIHN0aWxsIGp1c3QgdGhhdCBzaW5nbGUgY2xlYW51cCBjYWxsIG9uIGFuIGVycm9yIHBhdGguIEl0JiMzOTtzIG5vdCBpbnRyb2R1Y2luZyBhIG5ldyBjb2RlIHBhdGggdGhhdCYjMzk7cyB3b3J0aCBmdXp6aW5nIHRvIHVuY292ZXIgYnVncy4KClRoZXJlZm9yZSwgbXkgZmluYWwgYW5zd2VyIGlzICoqV29ydGhGdXp6aW5nPWZhbHNlKiouIFRoaXMgaXMgYSBtZW1vcnkgbGVhayBmaXggaW4gYW4gZXJyb3IgcGF0aCwgYW5kIGl0JiMzOTtzIHJlbGF0ZWQgdG8gZGlhZ25vc3RpYy9kZWJ1Z2dpbmcgaW5mcmFzdHJ1Y3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDA3OjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIG1pc3NpbmcgY2FsbCB0byBgcmVmX3RyYWNrZXJfZGlyX2V4aXQoKWAgaW4gdGhlIGVycm9yIHBhdGggb2YgYGFsbG9jX25ldGRldl9tcXMoKWAuIFRoaXMgaXMgYSBzaW1wbGUgbWVtb3J5IGxlYWsgZml4IGZvciB0aGUgcmVmZXJlbmNlIHRyYWNraW5nIGluZnJhc3RydWN0dXJlICh3aGljaCBpcyBwcmltYXJpbHkgdXNlZCBmb3IgZGVidWdnaW5nKSBhbmQgZG9lcyBub3QgaW50cm9kdWNlIG5ldyBmdW5jdGlvbmFsIGxvZ2ljIG9yIGNvbXBsZXggc3RhdGUgY2hhbmdlcyB0aGF0IHdvdWxkIGJlbmVmaXQgZnJvbSBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIG1pc3NpbmcgY2FsbCB0byBgcmVmX3RyYWNrZXJfZGlyX2V4aXQoKWAgaW4gdGhlIGVycm9yIHBhdGggb2YgYGFsbG9jX25ldGRldl9tcXMoKWAuIFRoaXMgaXMgYSBzaW1wbGUgbWVtb3J5IGxlYWsgZml4IGZvciB0aGUgcmVmZXJlbmNlIHRyYWNraW5nIGluZnJhc3RydWN0dXJlICh3aGljaCBpcyBwcmltYXJpbHkgdXNlZCBmb3IgZGVidWdnaW5nKSBhbmQgZG9lcyBub3QgaW50cm9kdWNlIG5ldyBmdW5jdGlvbmFsIGxvZ2ljIG9yIGNvbXBsZXggc3RhdGUgY2hhbmdlcyB0aGF0IHdvdWxkIGJlbmVmaXQgZnJvbSBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDc6MjI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDA3OjIxOjM5LjQyMzkwNzYxOFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxMzMzODgyNzcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIG1pc3NpbmcgY2FsbCB0byBgcmVmX3RyYWNrZXJfZGlyX2V4aXQoKWAgaW4gdGhlIGVycm9yIHBhdGggb2YgYGFsbG9jX25ldGRldl9tcXMoKWAuIFRoaXMgaXMgYSBzaW1wbGUgbWVtb3J5IGxlYWsgZml4IGZvciB0aGUgcmVmZXJlbmNlIHRyYWNraW5nIGluZnJhc3RydWN0dXJlICh3aGljaCBpcyBwcmltYXJpbHkgdXNlZCBmb3IgZGVidWdnaW5nKSBhbmQgZG9lcyBub3QgaW50cm9kdWNlIG5ldyBmdW5jdGlvbmFsIGxvZ2ljIG9yIGNvbXBsZXggc3RhdGUgY2hhbmdlcyB0aGF0IHdvdWxkIGJlbmVmaXQgZnJvbSBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDc6MjE6MzkuNDIzOTE1ODU4WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzQ3MjIwODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBkZjJlMWE0MjFiNzkyZTFiYjMxYzg1ZGRkNWU5NDZkZjBlOWEyOWFiXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgQXVnIDE1IDA3OjIxOjM4IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9jb3JlL2Rldi5jIGIvbmV0L2NvcmUvZGV2LmNcXG5pbmRleCBlY2U2NzAwNTM2ZDliLi5jMWIxNjhiMDU3MWUwIDEwMDY0NFxcbi0tLSBhL25ldC9jb3JlL2Rldi5jXFxuKysrIGIvbmV0L2NvcmUvZGV2LmNcXG5AQCAtMTIxNjQsNiArMTIxNjQsNyBAQCBzdHJ1Y3QgbmV0X2RldmljZSAqYWxsb2NfbmV0ZGV2X21xcyhpbnQgc2l6ZW9mX3ByaXYsIGNvbnN0IGNoYXIgKm5hbWUsXFxuIFxcdGZyZWVfcGVyY3B1KGRldi1cXHUwMDNlcGNwdV9yZWZjbnQpO1xcbiBmcmVlX2RldjpcXG4gI2VuZGlmXFxuK1xcdHJlZl90cmFja2VyX2Rpcl9leGl0KFxcdTAwMjZkZXYtXFx1MDAzZXJlZmNudF90cmFja2VyKTtcXG4gXFx0a3ZmcmVlKGRldik7XFxuIFxcdHJldHVybiBOVUxMO1xcbiB9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDA3OjIxOjM5Ljg5OTM4MzY4M1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjIwODU4MzkzMzIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgbWlzc2luZyBjYWxsIHRvIGByZWZfdHJhY2tlcl9kaXJfZXhpdCgpYCBpbiB0aGUgZXJyb3IgcGF0aCBvZiBgYWxsb2NfbmV0ZGV2X21xcygpYC4gVGhpcyBpcyBhIHNpbXBsZSBtZW1vcnkgbGVhayBmaXggZm9yIHRoZSByZWZlcmVuY2UgdHJhY2tpbmcgaW5mcmFzdHJ1Y3R1cmUgKHdoaWNoIGlzIHByaW1hcmlseSB1c2VkIGZvciBkZWJ1Z2dpbmcpIGFuZCBkb2VzIG5vdCBpbnRyb2R1Y2UgbmV3IGZ1bmN0aW9uYWwgbG9naWMgb3IgY29tcGxleCBzdGF0ZSBjaGFuZ2VzIHRoYXQgd291bGQgYmVuZWZpdCBmcm9tIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBkZjJlMWE0MjFiNzkyZTFiYjMxYzg1ZGRkNWU5NDZkZjBlOWEyOWFiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBBdWcgMTUgMDc6MjE6MzggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvY29yZS9kZXYuYyBiL25ldC9jb3JlL2Rldi5jXG5pbmRleCBlY2U2NzAwNTM2ZDliLi5jMWIxNjhiMDU3MWUwIDEwMDY0NFxuLS0tIGEvbmV0L2NvcmUvZGV2LmNcbisrKyBiL25ldC9jb3JlL2Rldi5jXG5AQCAtMTIxNjQsNiArMTIxNjQsNyBAQCBzdHJ1Y3QgbmV0X2RldmljZSAqYWxsb2NfbmV0ZGV2X21xcyhpbnQgc2l6ZW9mX3ByaXYsIGNvbnN0IGNoYXIgKm5hbWUsXG4gXHRmcmVlX3BlcmNwdShkZXYtXHUwMDNlcGNwdV9yZWZjbnQpO1xuIGZyZWVfZGV2OlxuICNlbmRpZlxuK1x0cmVmX3RyYWNrZXJfZGlyX2V4aXQoXHUwMDI2ZGV2LVx1MDAzZXJlZmNudF90cmFja2VyKTtcbiBcdGt2ZnJlZShkZXYpO1xuIFx0cmV0dXJuIE5VTEw7XG4gfVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDc6MjE6MzkuODk5Mzg2NDc0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDI1MTk2MjgwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHRoZSBzaXR1YXRpb24sIHByZXNlbnRlZCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIGFuIGV4cGVydDpcblxuKipJbnZlc3RpZ2F0aW5nIGEgUmVzb3VyY2UgTGVhayBGaXggaW4gYGFsbG9jX25ldGRldl9tcXNgKipcblxuT2theSwgSSd2ZSBnb3QgYSBwYXRjaCBoZXJlIHRoYXQncyBhZGRpbmcgYHJlZl90cmFja2VyX2Rpcl9leGl0KFx1MDAyNmRldi1cdTAwM2VyZWZjbnRfdHJhY2tlcik7YCB0byB0aGUgYGFsbG9jX25ldGRldl9tcXNgIGZ1bmN0aW9uIHdpdGhpbiBgbmV0L2NvcmUvZGV2LmNgLiBJbW1lZGlhdGVseSwgbXkgYnJhaW4gZmxhZ3MgdGhpcyBhcyBhIHBvdGVudGlhbCBmaXggZm9yIGEgcmVzb3VyY2UgbGVhaywgc3BlY2lmaWNhbGx5IHdpdGhpbiBhbiBlcnJvciBoYW5kbGluZyBwYXRoLiBUaGUgdXNlIG9mIGEgcmVmZXJlbmNlIGNvdW50ZXIgdHJhY2tlciBpbmRpY2F0ZXMgdGhhdCBzb21lIHJlc291cmNlIGFsbG9jYXRpb24gaXMgaGFwcGVuaW5nIGluIHRoZSBzdWNjZXNzIHBhdGhzIGFuZCBzb21lIGZyZWVpbmcgaXMgcmVxdWlyZWQgaW4gdGhlIGVycm9yIHBhdGhzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aHkgdGhpcyBzcGVjaWZpYyBjbGVhbnVwIGlzIHJlcXVpcmVkLlxuXG5NeSBmaXJzdCB0aG91Z2h0IGlzIHRvIGRpdmUgcmlnaHQgaW50byB0aGUgYGFsbG9jX25ldGRldl9tcXNgIGZ1bmN0aW9uIGl0c2VsZi4gSSBuZWVkIHRvIHRyYWNlIHRoZSByZXNvdXJjZSBhbGxvY2F0aW9ucyBhbmQgZGVhbGxvY2F0aW9ucyB3aXRoaW4gdGhhdCBmdW5jdGlvbiB0byB1bmRlcnN0YW5kIHRoZSBmbG93IGNvbnRyb2wsIGVycm9yIGhhbmRsaW5nLCBhbmQgdGhlIGNpcmN1bXN0YW5jZXMgdW5kZXIgd2hpY2ggdGhpcyBgcmVmX3RyYWNrZXJfZGlyX2V4aXRgIGNhbGwgaXMgbmVjZXNzYXJ5LiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHdoZXJlIHJlc291cmNlcyBhcmUgYWxsb2NhdGVkIGJ1dCBub3QgbmVjZXNzYXJpbHkgZnJlZWQgd2hlbiBzb21ldGhpbmcgZ29lcyB3cm9uZy4gVGhpcyBwYXRjaCAqc3VnZ2VzdHMqIHRoYXQgc29tZSBzb3J0IG9mIHJlZmVyZW5jZSBpcyBiZWluZyBoZWxkIGluIHRoZSBmYWlsdXJlIHBhdGggdGhhdCBuZWVkcyB0byBiZSBkZWNyZW1lbnRlZC4gSXMgdGhlIHJlc291cmNlIGJlaW5nIGhlbGQgZHVlIHRvIGFuIGVhcmx5IHJldHVybiwgYW5kIGlzIHRoZSB0cmFja2VyIHByb3Blcmx5IGluaXRpYWxpemVkIHRvIGFjY291bnQgZm9yIHRoZSBhbGxvY2F0aW9uIGFuZCBkZWFsbG9jYXRpb24/IElzIHRoZSBjbGVhbnVwIGNvcnJlY3Q/XG5cbkknbGwgYmUgcGF5aW5nIGNsb3NlIGF0dGVudGlvbiB0byBhbnkgbmVzdGVkIGZ1bmN0aW9uIGNhbGxzLCBlc3BlY2lhbGx5IHRob3NlIHRoYXQgaW52b2x2ZSBtZW1vcnkgYWxsb2NhdGlvbiwgcmVzb3VyY2UgcmVnaXN0cmF0aW9uLCBhbmQgdWx0aW1hdGVseSwgZGVhbGxvY2F0aW9uLiBJJ2xsIG5lZWQgdG8gY29uZmlybSB0aGF0IHRoaXMgYHJlZl90cmFja2VyX2Rpcl9leGl0YCBjYWxsIGlzIGluIHRoZSByaWdodCBwbGFjZSwgdGhhdCBpdCdzIGJlaW5nIHRyaWdnZXJlZCBjb3JyZWN0bHksIGFuZCBtb3N0IGltcG9ydGFudGx5LCB0aGF0IGl0J3MgYWN0dWFsbHkgcmVzb2x2aW5nIHRoZSBsZWFrIG9yIGlzIGF0IGxlYXN0IGNvcnJlY3RseSBjbGVhbmluZyB1cCBpbiBhbiBlcnJvciBwYXRoLiBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgaXQncyB0aGUgY29ycmVjdCBraW5kIG9mIHJlc291cmNlIHRyYWNraW5nLiBEb2VzIGl0IGFkZHJlc3MgdGhlIHNwZWNpZmljIGlzc3VlIHRoYXQgdGhlIHRyYWNrZXIgaXMgaW50ZW5kZWQgZm9yP1xuXG5cbiIsIklucHV0VG9rZW5zIjoxOTU2LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzcsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwNzoyMTo0NC4xNTEzNTM2NDZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2ODAxNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2NvcmUvZGV2LmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTIxNTAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjEyMTUwOlxcdFxcdGRldi1cXHUwMDNlZ3JvdXAgPSBJTklUX05FVERFVl9HUk9VUDtcXG4xMjE1MTpcXHRcXHRpZiAoIWRldi1cXHUwMDNlZXRodG9vbF9vcHMpXFxuMTIxNTI6XFx0XFx0XFx0ZGV2LVxcdTAwM2VldGh0b29sX29wcyA9IFxcdTAwMjZkZWZhdWx0X2V0aHRvb2xfb3BzO1xcbjEyMTUzOlxcdFxcbjEyMTU0OlxcdFxcdG5mX2hvb2tfbmV0ZGV2X2luaXQoZGV2KTtcXG4xMjE1NTpcXHRcXG4xMjE1NjpcXHRcXHRyZXR1cm4gZGV2O1xcbjEyMTU3OlxcdFxcbjEyMTU4OlxcdGZyZWVfYWxsOlxcbjEyMTU5OlxcdFxcdGZyZWVfbmV0ZGV2KGRldik7XFxuMTIxNjA6XFx0XFx0cmV0dXJuIE5VTEw7XFxuMTIxNjE6XFx0XFxuMTIxNjI6XFx0ZnJlZV9wY3B1OlxcbjEyMTYzOlxcdCNpZmRlZiBDT05GSUdfUENQVV9ERVZfUkVGQ05UXFxuMTIxNjQ6XFx0XFx0ZnJlZV9wZXJjcHUoZGV2LVxcdTAwM2VwY3B1X3JlZmNudCk7XFxuMTIxNjU6XFx0ZnJlZV9kZXY6XFxuMTIxNjY6XFx0I2VuZGlmXFxuMTIxNjc6XFx0XFx0cmVmX3RyYWNrZXJfZGlyX2V4aXQoXFx1MDAyNmRldi1cXHUwMDNlcmVmY250X3RyYWNrZXIpO1xcbjEyMTY4OlxcdFxcdGt2ZnJlZShkZXYpO1xcbjEyMTY5OlxcdFxcdHJldHVybiBOVUxMO1xcbjEyMTcwOlxcdH1cXG4xMjE3MTpcXHRFWFBPUlRfU1lNQk9MKGFsbG9jX25ldGRldl9tcXMpO1xcbjEyMTcyOlxcdFxcbjEyMTczOlxcdHN0YXRpYyB2b2lkIG5ldGRldl9uYXBpX2V4aXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4xMjE3NDpcXHR7XFxuMTIxNzU6XFx0XFx0aWYgKCFsaXN0X2VtcHR5KFxcdTAwMjZkZXYtXFx1MDAzZW5hcGlfbGlzdCkpIHtcXG4xMjE3NjpcXHRcXHRcXHRzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKnAsICpuO1xcbjEyMTc3OlxcdFxcbjEyMTc4OlxcdFxcdFxcdG5ldGRldl9sb2NrKGRldik7XFxuMTIxNzk6XFx0XFx0XFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHAsIG4sIFxcdTAwMjZkZXYtXFx1MDAzZW5hcGlfbGlzdCwgZGV2X2xpc3QpXFxuMTIxODA6XFx0XFx0XFx0XFx0X19uZXRpZl9uYXBpX2RlbF9sb2NrZWQocCk7XFxuMTIxODE6XFx0XFx0XFx0bmV0ZGV2X3VubG9jayhkZXYpO1xcbjEyMTgyOlxcdFxcbjEyMTgzOlxcdFxcdFxcdHN5bmNocm9uaXplX25ldCgpO1xcbjEyMTg0OlxcdFxcdH1cXG4xMjE4NTpcXHRcXG4xMjE4NjpcXHRcXHRrdmZyZWUoZGV2LVxcdTAwM2VuYXBpX2NvbmZpZyk7XFxuMTIxODc6XFx0fVxcbjEyMTg4OlxcdFxcbjEyMTg5OlxcdC8qKlxcbjEyMTkwOlxcdCAqIGZyZWVfbmV0ZGV2IC0gZnJlZSBuZXR3b3JrIGRldmljZVxcbjEyMTkxOlxcdCAqIEBkZXY6IGRldmljZVxcbjEyMTkyOlxcdCAqXFxuMTIxOTM6XFx0ICogVGhpcyBmdW5jdGlvbiBkb2VzIHRoZSBsYXN0IHN0YWdlIG9mIGRlc3Ryb3lpbmcgYW4gYWxsb2NhdGVkIGRldmljZVxcbjEyMTk0OlxcdCAqIGludGVyZmFjZS4gVGhlIHJlZmVyZW5jZSB0byB0aGUgZGV2aWNlIG9iamVjdCBpcyByZWxlYXNlZC4gSWYgdGhpc1xcbjEyMTk1OlxcdCAqIGlzIHRoZSBsYXN0IHJlZmVyZW5jZSB0aGVuIGl0IHdpbGwgYmUgZnJlZWQuTXVzdCBiZSBjYWxsZWQgaW4gcHJvY2Vzc1xcbjEyMTk2OlxcdCAqIGNvbnRleHQuXFxuMTIxOTc6XFx0ICovXFxuMTIxOTg6XFx0dm9pZCBmcmVlX25ldGRldihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbjEyMTk5OlxcdHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDc6MjE6NDQuMTUyMDM2NDk2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTMyMzk4MTE3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBTdWJ0bGUgTmV0d29yayBEZXZpY2UgQWxsb2NhdGlvbiBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0J3MgYSBtaW5vciBjaGFuZ2UgaW4gYGFsbG9jX25ldGRldl9tcXNgLiBUaGV5J3JlIGFkZGluZyBgcmVmX3RyYWNrZXJfZGlyX2V4aXQoXHUwMDI2ZGV2LVx1MDAzZXJlZmNudF90cmFja2VyKWAgdG8gdGhlIGVycm9yIGhhbmRsaW5nIHBhdGgsIHNwZWNpZmljYWxseSBpbiBgZnJlZV9wY3B1YCBhbmQgYGZyZWVfZGV2YC4gUmlnaHQgb2ZmIHRoZSBiYXQsIEkgcmVjb2duaXplIHRoaXMgaXMgYWJvdXQgcHJldmVudGluZyBzb21lIGtpbmQgb2YgcmVzb3VyY2UgbGVhayBvciwgcG90ZW50aWFsbHksIGEgbW9yZSBzZXJpb3VzIGlzc3VlIHdoZW4gdGhlIGFsbG9jYXRpb24gZmFpbHMuIEEgcXVpY2sgcmV2aWV3IGFuZCB0aGUgZml4IGxvb2tzIGNvcnJlY3QuXG5cbk15IGluaXRpYWwgdGhvdWdodCBpcywgXCJXb3J0aCBmdXp6aW5nP1wiIEJ1dCBpdCdzIGEgKnZlcnkqIHNwZWNpZmljIGZhaWx1cmUgc2NlbmFyaW8uIFRvIHByb3Blcmx5IGZ1enogdGhpcywgSSdkIHByb2JhYmx5IG5lZWQgdG8gaW5qZWN0IGZhdWx0cyBpbnRvIGBhbGxvY19uZXRkZXZfbXFzYCBpdHNlbGYsIGFuZCB0aGF0J3MgYSAqY29yZSogZnVuY3Rpb24uIE5vdCBpZGVhbC4gSXQncyB1c2VkIGV2ZXJ5d2hlcmUuIFRoZW4gSSByZW1lbWJlciB0aGF0IHRoaXMgaXMgZm9yICphbnkqIG5ldHdvcmsgZGV2aWNlIGNyZWF0aW9uIHNvIEkgcmUtZXZhbHVhdGUuIElmIGl0IGZhaWxzLCBpdCBpcyBzdXBwb3NlZCB0byBjbGVhbiB1cCwgd2hpY2ggaXMgd2hhdCB0aGlzIHBhdGNoIGFwcGVhcnMgdG8gYmUgZG9pbmcuXG5cblRoZW4gSSBwYXVzZWQgdG8gdGhpbmsgYWJvdXQgd2hhdCBpcyBzcGVjaWZpYyBhYm91dCBgcmVmX3RyYWNrZXJfZGlyX2V4aXRgLiBUaGUgY29udGV4dCByZW1pbmRzIG1lIHRoYXQgdGhlIGByZWZfdHJhY2tlcmAgc3R1ZmYgaXMgb25seSBlbmFibGVkIGlmIGBDT05GSUdfUkVGX1RSQUNLRVJgIGlzIGVuYWJsZWQsIHJpZ2h0PyBTbywgaXMgKnRoYXQqIGNvbmZpZyBuZWVkZWQ/IEFuZCBpcyBpdCBlbmFibGVkIGluIHRoZSBzeXprYWxsZXIgY29uZmlndXJhdGlvbi4gTXkgaW50ZXJuYWwgZmxhZ3MganVzdCBmbGlwcGVkLiBPa2F5LCBpdCBsb29rcyBsaWtlIGl0IGlzIHNldC4gSWYgYENPTkZJR19SRUZfVFJBQ0tFUmAgaXNuJ3QgZW5hYmxlZCwgdGhlbiB0aGlzIGZ1bmN0aW9uIGNhbGwgd2lsbCBiZSBjb21waWxlZCBvdXQuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCdzIGFjY291bnRlZCBmb3IuIEknbSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGlmIGBDT05GSUdfUkVGX1RSQUNLRVJgIGlzIGV2ZW4gcmVxdWlyZWQgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzIxMiwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwOCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDA3OjIxOjQ5LjQ3NjAyMDM4NloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTM3OTk2NzMyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJlZl90cmFja2VyX2Rpcl9leGl0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2RwbGwvZHBsbF9jb3JlLmM9MTEzPXN0YXRpYyB2b2lkIF9fZHBsbF9kZXZpY2VfcHV0KHN0cnVjdCBkcGxsX2RldmljZSAqZHBsbCwgZHBsbF90cmFja2VyICp0cmFja2VyKVxcbi0tXFxuZHJpdmVycy9kcGxsL2RwbGxfY29yZS5jLTEyMS1cXHRcXHRXQVJOX09OKCFsaXN0X2VtcHR5KFxcdTAwMjZkcGxsLVxcdTAwM2VyZWdpc3RyYXRpb25fbGlzdCkpO1xcbmRyaXZlcnMvZHBsbC9kcGxsX2NvcmUuYzoxMjI6XFx0XFx0cmVmX3RyYWNrZXJfZGlyX2V4aXQoXFx1MDAyNmRwbGwtXFx1MDAzZXJlZmNudF90cmFja2VyKTtcXG5kcml2ZXJzL2RwbGwvZHBsbF9jb3JlLmMtMTIzLVxcdFxcdGtmcmVlKGRwbGwpO1xcbi0tXFxuZHJpdmVycy9kcGxsL2RwbGxfY29yZS5jPTE1MD1zdGF0aWMgdm9pZCBfX2RwbGxfcGluX3B1dChzdHJ1Y3QgZHBsbF9waW4gKnBpbiwgZHBsbF90cmFja2VyICp0cmFja2VyKVxcbi0tXFxuZHJpdmVycy9kcGxsL2RwbGxfY29yZS5jLTE2MC1cXHRcXHRkcGxsX3Bpbl9pZHhfZnJlZShwaW4tXFx1MDAzZXBpbl9pZHgpO1xcbmRyaXZlcnMvZHBsbC9kcGxsX2NvcmUuYzoxNjE6XFx0XFx0cmVmX3RyYWNrZXJfZGlyX2V4aXQoXFx1MDAyNnBpbi1cXHUwMDNlcmVmY250X3RyYWNrZXIpO1xcbmRyaXZlcnMvZHBsbC9kcGxsX2NvcmUuYy0xNjItXFx0XFx0a2ZyZWVfcmN1KHBpbiwgcmN1KTtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kaXNwbGF5L2RybV9kcF90dW5uZWwuYz0xOTAwPXN0YXRpYyB2b2lkIGRlc3Ryb3lfbWdyKHN0cnVjdCBkcm1fZHBfdHVubmVsX21nciAqbWdyKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2Rpc3BsYXkvZHJtX2RwX3R1bm5lbC5jLTE5MDktI2lmZGVmIENPTkZJR19EUk1fRElTUExBWV9EUF9UVU5ORUxfU1RBVEVfREVCVUdcXG5kcml2ZXJzL2dwdS9kcm0vZGlzcGxheS9kcm1fZHBfdHVubmVsLmM6MTkxMDpcXHRyZWZfdHJhY2tlcl9kaXJfZXhpdChcXHUwMDI2bWdyLVxcdTAwM2VyZWZfdHJhY2tlcik7XFxuZHJpdmVycy9ncHUvZHJtL2Rpc3BsYXkvZHJtX2RwX3R1bm5lbC5jLTE5MTEtI2VuZGlmXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmM9ODY9c3RhdGljIHZvaWQgdW50cmFja19hbGxfaW50ZWxfcnVudGltZV9wbV93YWtlcmVmcyhzdHJ1Y3QgaW50ZWxfcnVudGltZV9wbSAqcnBtKVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3J1bnRpbWVfcG0uYy04Ny17XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVudGltZV9wbS5jOjg4OlxcdHJlZl90cmFja2VyX2Rpcl9leGl0KFxcdTAwMjZycG0tXFx1MDAzZWRlYnVnKTtcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmMtODktfVxcbi0tXFxuZnMvYnRyZnMvZGVsYXllZC1pbm9kZS5jPTEzNT1zdGF0aWMgc3RydWN0IGJ0cmZzX2RlbGF5ZWRfbm9kZSAqYnRyZnNfZ2V0X29yX2NyZWF0ZV9kZWxheWVkX25vZGUoXFxuLS1cXG5mcy9idHJmcy9kZWxheWVkLWlub2RlLmMtMTgyLVxcdGJ0cmZzX2RlbGF5ZWRfbm9kZV9yZWZfdHJhY2tlcl9mcmVlKG5vZGUsIFxcdTAwMjZub2RlLVxcdTAwM2Vpbm9kZV9jYWNoZV90cmFja2VyKTtcXG5mcy9idHJmcy9kZWxheWVkLWlub2RlLmM6MTgzOlxcdGJ0cmZzX2RlbGF5ZWRfbm9kZV9yZWZfdHJhY2tlcl9kaXJfZXhpdChub2RlKTtcXG5mcy9idHJmcy9kZWxheWVkLWlub2RlLmMtMTg0LVxcdGttZW1fY2FjaGVfZnJlZShkZWxheWVkX25vZGVfY2FjaGUsIG5vZGUpO1xcbi0tXFxuZnMvYnRyZnMvZGVsYXllZC1pbm9kZS5jPTI4MT1zdGF0aWMgdm9pZCBfX2J0cmZzX3JlbGVhc2VfZGVsYXllZF9ub2RlKFxcbi0tXFxuZnMvYnRyZnMvZGVsYXllZC1pbm9kZS5jLTMwOC1cXHRcXHRBU1NFUlQocmVmY291bnRfcmVhZChcXHUwMDI2ZGVsYXllZF9ub2RlLVxcdTAwM2VyZWZzKSA9PSAwKTtcXG5mcy9idHJmcy9kZWxheWVkLWlub2RlLmM6MzA5OlxcdFxcdGJ0cmZzX2RlbGF5ZWRfbm9kZV9yZWZfdHJhY2tlcl9kaXJfZXhpdChkZWxheWVkX25vZGUpO1xcbmZzL2J0cmZzL2RlbGF5ZWQtaW5vZGUuYy0zMTAtXFx0XFx0a21lbV9jYWNoZV9mcmVlKGRlbGF5ZWRfbm9kZV9jYWNoZSwgZGVsYXllZF9ub2RlKTtcXG4tLVxcbmZzL2J0cmZzL2RlbGF5ZWQtaW5vZGUuaD0xODQ9c3RhdGljIGlubGluZSB2b2lkIGJ0cmZzX2RlbGF5ZWRfbm9kZV9yZWZfdHJhY2tlcl9kaXJfaW5pdChzdHJ1Y3QgYnRyZnNfZGVsYXllZF9ub2RlICpub2RlKVxcbi0tXFxuZnMvYnRyZnMvZGVsYXllZC1pbm9kZS5oLTE5My1cXG5mcy9idHJmcy9kZWxheWVkLWlub2RlLmg6MTk0OnN0YXRpYyBpbmxpbmUgdm9pZCBidHJmc19kZWxheWVkX25vZGVfcmVmX3RyYWNrZXJfZGlyX2V4aXQoc3RydWN0IGJ0cmZzX2RlbGF5ZWRfbm9kZSAqbm9kZSlcXG5mcy9idHJmcy9kZWxheWVkLWlub2RlLmgtMTk1LXtcXG4tLVxcbmZzL2J0cmZzL2RlbGF5ZWQtaW5vZGUuaC0xOTgtXFxuZnMvYnRyZnMvZGVsYXllZC1pbm9kZS5oOjE5OTpcXHRyZWZfdHJhY2tlcl9kaXJfZXhpdChcXHUwMDI2bm9kZS1cXHUwMDNlcmVmX2Rpci5kaXIpO1xcbmZzL2J0cmZzL2RlbGF5ZWQtaW5vZGUuaC0yMDAtfVxcbi0tXFxuZnMvYnRyZnMvZGVsYXllZC1pbm9kZS5oPTIzNz1zdGF0aWMgaW5saW5lIHZvaWQgYnRyZnNfZGVsYXllZF9ub2RlX3JlZl90cmFja2VyX2Rpcl9pbml0KHN0cnVjdCBidHJmc19kZWxheWVkX25vZGUgKm5vZGUpIHsgfVxcbmZzL2J0cmZzL2RlbGF5ZWQtaW5vZGUuaC0yMzgtXFxuZnMvYnRyZnMvZGVsYXllZC1pbm9kZS5oOjIzOTpzdGF0aWMgaW5saW5lIHZvaWQgYnRyZnNfZGVsYXllZF9ub2RlX3JlZl90cmFja2VyX2Rpcl9leGl0KHN0cnVjdCBidHJmc19kZWxheWVkX25vZGUgKm5vZGUpIHsgfVxcbmZzL2J0cmZzL2RlbGF5ZWQtaW5vZGUuaC0yNDAtXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3JlZl90cmFja2VyLmg9NTg9c3RhdGljIGlubGluZSB2b2lkIHJlZl90cmFja2VyX2Rpcl9pbml0KHN0cnVjdCByZWZfdHJhY2tlcl9kaXIgKmRpcixcXG4tLVxcbmluY2x1ZGUvbGludXgvcmVmX3RyYWNrZXIuaC03My1cXG5pbmNsdWRlL2xpbnV4L3JlZl90cmFja2VyLmg6NzQ6dm9pZCByZWZfdHJhY2tlcl9kaXJfZXhpdChzdHJ1Y3QgcmVmX3RyYWNrZXJfZGlyICpkaXIpO1xcbmluY2x1ZGUvbGludXgvcmVmX3RyYWNrZXIuaC03NS1cXG4tLVxcbmluY2x1ZGUvbGludXgvcmVmX3RyYWNrZXIuaD0xMDM9dm9pZCByZWZfdHJhY2tlcl9kaXJfc3ltbGluayhzdHJ1Y3QgcmVmX3RyYWNrZXJfZGlyICpkaXIsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKVxcbi0tXFxuaW5jbHVkZS9saW51eC9yZWZfdHJhY2tlci5oLTEwNi1cXG5pbmNsdWRlL2xpbnV4L3JlZl90cmFja2VyLmg6MTA3OnN0YXRpYyBpbmxpbmUgdm9pZCByZWZfdHJhY2tlcl9kaXJfZXhpdChzdHJ1Y3QgcmVmX3RyYWNrZXJfZGlyICpkaXIpXFxuaW5jbHVkZS9saW51eC9yZWZfdHJhY2tlci5oLTEwOC17XFxuLS1cXG5saWIvcmVmX3RyYWNrZXIuYz0yMz1zdHJ1Y3QgcmVmX3RyYWNrZXJfZGlyX3N0YXRzIHtcXG4tLVxcbmxpYi9yZWZfdHJhY2tlci5jLTM2LSAqIHJlZl90cmFja2VyX2Rpcl9pbml0KCkgaXMgdXN1YWxseSBjYWxsZWQgaW4gYWxsb2NhdGlvbi1zYWZlIGNvbnRleHRzLCBidXRcXG5saWIvcmVmX3RyYWNrZXIuYzozNzogKiB0aGUgc2FtZSBpcyBub3QgdHJ1ZSBvZiByZWZfdHJhY2tlcl9kaXJfZXhpdCgpIHdoaWNoIGNhbiBiZSBjYWxsZWQgZnJvbVxcbmxpYi9yZWZfdHJhY2tlci5jLTM4LSAqIGFueXdoZXJlIGFuIG9iamVjdCBpcyBmcmVlZC4gUmVtb3ZpbmcgZGVidWdmcyBkZW50cmllcyBpcyBhIGJsb2NraW5nXFxuLS1cXG5saWIvcmVmX3RyYWNrZXIuYy00MS0gKiBFYWNoIGRlbnRyeSBpcyB0cmFja2VkIGluIHRoZSBhcHByb3ByaWF0ZSB4YXJyYXkuICBXaGVuXFxubGliL3JlZl90cmFja2VyLmM6NDI6ICogcmVmX3RyYWNrZXJfZGlyX2V4aXQoKSBpcyBjYWxsZWQsIGl0cyBlbnRyaWVzIGluIHRoZSB4YXJyYXlzIGFyZSBtYXJrZWQgYW5kXFxubGliL3JlZl90cmFja2VyLmMtNDMtICogdGhlIHdvcmtxdWV1ZSBqb2IgaXMgc2NoZWR1bGVkLiBUaGUgd29ya2VyIHRoZW4gcnVucyBhbmQgZGVsZXRlcyBhbnkgbWFya2VkXFxuLS1cXG5saWIvcmVmX3RyYWNrZXIuYz0yMTc9RVhQT1JUX1NZTUJPTChyZWZfdHJhY2tlcl9kaXJfc25wcmludCk7XFxubGliL3JlZl90cmFja2VyLmMtMjE4LVxcbmxpYi9yZWZfdHJhY2tlci5jOjIxOTp2b2lkIHJlZl90cmFja2VyX2Rpcl9leGl0KHN0cnVjdCByZWZfdHJhY2tlcl9kaXIgKmRpcilcXG5saWIvcmVmX3RyYWNrZXIuYy0yMjAte1xcbi0tXFxubGliL3JlZl90cmFja2VyLmMtMjQ5LX1cXG5saWIvcmVmX3RyYWNrZXIuYzoyNTA6RVhQT1JUX1NZTUJPTChyZWZfdHJhY2tlcl9kaXJfZXhpdCk7XFxubGliL3JlZl90cmFja2VyLmMtMjUxLVxcbi0tXFxubGliL3JlZl90cmFja2VyLmM9MzY5PXN0YXRpYyBpbnQgcmVmX3RyYWNrZXJfZGVidWdmc19zaG93KHN0cnVjdCBzZXFfZmlsZSAqZiwgdm9pZCAqdilcXG4tLVxcbmxpYi9yZWZfdHJhY2tlci5jLTM3Ni1cXHQvKlxcbmxpYi9yZWZfdHJhY2tlci5jOjM3NzpcXHQgKiBcXFwiZGlyXFxcIiBtYXkgbm90IGV4aXN0IGF0IHRoaXMgcG9pbnQgaWYgcmVmX3RyYWNrZXJfZGlyX2V4aXQoKSBoYXNcXG5saWIvcmVmX3RyYWNrZXIuYy0zNzgtXFx0ICogYWxyZWFkeSBiZWVuIGNhbGxlZC4gVGFrZSBjYXJlIG5vdCB0byBkZXJlZmVyZW5jZSBpdCB1bnRpbCBpdHNcXG4tLVxcbmxpYi9yZWZfdHJhY2tlci5jLTM4My1cXHQgKiBkZWFkLCB0aGVuIGl0J3Mgc2FmZSB0byB0YWtlIGRpci1cXHUwMDNlbG9jayB3aGljaCBwcmV2ZW50c1xcbmxpYi9yZWZfdHJhY2tlci5jOjM4NDpcXHQgKiByZWZfdHJhY2tlcl9kaXJfZXhpdCgpIGZyb20gY29tcGxldGluZy4gT25jZSB0aGUgZGlyLVxcdTAwM2Vsb2NrIGlzXFxubGliL3JlZl90cmFja2VyLmMtMzg1LVxcdCAqIGFjcXVpcmVkLCB0aGUgeGFfbG9jayBjYW4gYmUgcmVsZWFzZWQuIEFsbCBvZiB0aGlzIG11c3QgYmUgSVJRLXNhZmUuXFxuLS1cXG5saWIvdGVzdF9yZWZfdHJhY2tlci5jPTYzPXN0YXRpYyBpbnQgX19pbml0IHRlc3RfcmVmX3RyYWNrZXJfaW5pdCh2b2lkKVxcbi0tXFxubGliL3Rlc3RfcmVmX3RyYWNrZXIuYy0xMDItXFx0LyogVGhpcyBzaG91bGQgd2FybiBhYm91dCB0cmFja2VyWzBdIFxcdTAwMjYgdHJhY2tlclsxXSBiZWluZyBub3QgZnJlZWQuICovXFxubGliL3Rlc3RfcmVmX3RyYWNrZXIuYzoxMDM6XFx0cmVmX3RyYWNrZXJfZGlyX2V4aXQoXFx1MDAyNnJlZl9kaXIpO1xcbmxpYi90ZXN0X3JlZl90cmFja2VyLmMtMTA0LVxcbi0tXFxubmV0L2NvcmUvZGV2LmM9MTIwMzY9c3RydWN0IG5ldF9kZXZpY2UgKmFsbG9jX25ldGRldl9tcXMoaW50IHNpemVvZl9wcml2LCBjb25zdCBjaGFyICpuYW1lLFxcbi0tXFxubmV0L2NvcmUvZGV2LmMtMTIxNjYtI2VuZGlmXFxubmV0L2NvcmUvZGV2LmM6MTIxNjc6XFx0cmVmX3RyYWNrZXJfZGlyX2V4aXQoXFx1MDAyNmRldi1cXHUwMDNlcmVmY250X3RyYWNrZXIpO1xcbm5ldC9jb3JlL2Rldi5jLTEyMTY4LVxcdGt2ZnJlZShkZXYpO1xcbi0tXFxubmV0L2NvcmUvZGV2LmM9MTIxOTg9dm9pZCBmcmVlX25ldGRldihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxubmV0L2NvcmUvZGV2LmMtMTIyMjgtXFxubmV0L2NvcmUvZGV2LmM6MTIyMjk6XFx0cmVmX3RyYWNrZXJfZGlyX2V4aXQoXFx1MDAyNmRldi1cXHUwMDNlcmVmY250X3RyYWNrZXIpO1xcbm5ldC9jb3JlL2Rldi5jLTEyMjMwLSNpZmRlZiBDT05GSUdfUENQVV9ERVZfUkVGQ05UXFxuLS1cXG5uZXQvY29yZS9uZXRfbmFtZXNwYWNlLmM9NTMwPXZvaWQgbmV0X3Bhc3NpdmVfZGVjKHN0cnVjdCBuZXQgKm5ldClcXG4tLVxcbm5ldC9jb3JlL25ldF9uYW1lc3BhY2UuYy01MzUtXFx0XFx0LyogVGhlcmUgc2hvdWxkIG5vdCBiZSBhbnkgdHJhY2tlcnMgbGVmdCB0aGVyZS4gKi9cXG5uZXQvY29yZS9uZXRfbmFtZXNwYWNlLmM6NTM2OlxcdFxcdHJlZl90cmFja2VyX2Rpcl9leGl0KFxcdTAwMjZuZXQtXFx1MDAzZW5vdHJlZmNudF90cmFja2VyKTtcXG5uZXQvY29yZS9uZXRfbmFtZXNwYWNlLmMtNTM3LVxcbi0tXFxubmV0L2NvcmUvbmV0X25hbWVzcGFjZS5jPTc0NT12b2lkIF9fcHV0X25ldChzdHJ1Y3QgbmV0ICpuZXQpXFxubmV0L2NvcmUvbmV0X25hbWVzcGFjZS5jLTc0Ni17XFxubmV0L2NvcmUvbmV0X25hbWVzcGFjZS5jOjc0NzpcXHRyZWZfdHJhY2tlcl9kaXJfZXhpdChcXHUwMDI2bmV0LVxcdTAwM2VyZWZjbnRfdHJhY2tlcik7XFxubmV0L2NvcmUvbmV0X25hbWVzcGFjZS5jLTc0OC1cXHQvKiBDbGVhbnVwIHRoZSBuZXR3b3JrIG5hbWVzcGFjZSBpbiBwcm9jZXNzIGNvbnRleHQgKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDc6MjE6NTEuNDE0MDI1Nzc4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQwMDM0MzU3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipSZWYgVHJhY2tlciBDbGVhbi11cCBpbiBgYWxsb2NfbmV0ZGV2X21xc2AgRXJyb3IgUGF0aCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYWRkaW5nIGByZWZfdHJhY2tlcl9kaXJfZXhpdGAgdG8gdGhlIGVycm9yIHBhdGggaW4gYGFsbG9jX25ldGRldl9tcXNgLiBSaWdodCwgYSBkaWFnbm9zdGljIGNoYW5nZSBzcGVjaWZpY2FsbHkgZm9yIHN5c3RlbXMgd2l0aCBgQ09ORklHX1JFRl9UUkFDS0VSYCBlbmFibGVkLiBJdCBsb29rcyBsaWtlIGl0J3MganVzdCBhYm91dCBjbGVhbmluZyB1cCB0aGUgcmVmZXJlbmNlIHRyYWNrZXIsIHdoaWNoIGlzIGdvb2QuIElmIHRoaXMgaXNuJ3QgY2FsbGVkLCBpdCdzIHBvc3NpYmxlIHRoZXJlIGNvdWxkIGJlIGEgbWVtb3J5IGxlYWsgaW4gdGhlIHRyYWNrZXIgaXRzZWxmLCBvciBhdCBsZWFzdCB3ZSdkIHNlZSBzb21lIHdhcm5pbmdzLiBJIG5lZWQgdG8gdGFrZSBhIHF1aWNrIGxvb2sgYXQgdGhlIGltcGxlbWVudGF0aW9uIG9mIGByZWZfdHJhY2tlcl9kaXJfZXhpdGAgdG8gYmUgc3VyZSBJJ20gZm9sbG93aW5nIHRoZSBsb2dpYy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjMyNCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwNzoyMTo1NC44MTQzNzMyMzZaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NjA1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJsaWIvcmVmX3RyYWNrZXIuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMTksXG4gIFwiTGluZUNvdW50XCI6IDM1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAyMTk6XFx0dm9pZCByZWZfdHJhY2tlcl9kaXJfZXhpdChzdHJ1Y3QgcmVmX3RyYWNrZXJfZGlyICpkaXIpXFxuIDIyMDpcXHR7XFxuIDIyMTpcXHRcXHRzdHJ1Y3QgcmVmX3RyYWNrZXIgKnRyYWNrZXIsICpuO1xcbiAyMjI6XFx0XFx0dW5zaWduZWQgbG9uZyBmbGFncztcXG4gMjIzOlxcdFxcdGJvb2wgbGVhayA9IGZhbHNlO1xcbiAyMjQ6XFx0XFxuIDIyNTpcXHRcXHRkaXItXFx1MDAzZWRlYWQgPSB0cnVlO1xcbiAyMjY6XFx0XFx0LypcXG4gMjI3OlxcdFxcdCAqIFRoZSB4YXJyYXkgZW50cmllcyBtdXN0IGJlIG1hcmtlZCBiZWZvcmUgdGhlIGRpci1cXHUwMDNlbG9jayBpcyB0YWtlbiB0b1xcbiAyMjg6XFx0XFx0ICogcHJvdGVjdCBzaW11bHRhbmVvdXMgZGVidWdmcyByZWFkZXJzLlxcbiAyMjk6XFx0XFx0ICovXFxuIDIzMDpcXHRcXHRyZWZfdHJhY2tlcl9kZWJ1Z2ZzX21hcmsoZGlyKTtcXG4gMjMxOlxcdFxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZkaXItXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG4gMjMyOlxcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZSh0cmFja2VyLCBuLCBcXHUwMDI2ZGlyLVxcdTAwM2VxdWFyYW50aW5lLCBoZWFkKSB7XFxuIDIzMzpcXHRcXHRcXHRsaXN0X2RlbChcXHUwMDI2dHJhY2tlci1cXHUwMDNlaGVhZCk7XFxuIDIzNDpcXHRcXHRcXHRrZnJlZSh0cmFja2VyKTtcXG4gMjM1OlxcdFxcdFxcdGRpci1cXHUwMDNlcXVhcmFudGluZV9hdmFpbCsrO1xcbiAyMzY6XFx0XFx0fVxcbiAyMzc6XFx0XFx0aWYgKCFsaXN0X2VtcHR5KFxcdTAwMjZkaXItXFx1MDAzZWxpc3QpKSB7XFxuIDIzODpcXHRcXHRcXHRyZWZfdHJhY2tlcl9kaXJfcHJpbnRfbG9ja2VkKGRpciwgMTYpO1xcbiAyMzk6XFx0XFx0XFx0bGVhayA9IHRydWU7XFxuIDI0MDpcXHRcXHRcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUodHJhY2tlciwgbiwgXFx1MDAyNmRpci1cXHUwMDNlbGlzdCwgaGVhZCkge1xcbiAyNDE6XFx0XFx0XFx0XFx0bGlzdF9kZWwoXFx1MDAyNnRyYWNrZXItXFx1MDAzZWhlYWQpO1xcbiAyNDI6XFx0XFx0XFx0XFx0a2ZyZWUodHJhY2tlcik7XFxuIDI0MzpcXHRcXHRcXHR9XFxuIDI0NDpcXHRcXHR9XFxuIDI0NTpcXHRcXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZkaXItXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG4gMjQ2OlxcdFxcdFdBUk5fT05fT05DRShsZWFrKTtcXG4gMjQ3OlxcdFxcdFdBUk5fT05fT05DRShyZWZjb3VudF9yZWFkKFxcdTAwMjZkaXItXFx1MDAzZXVudHJhY2tlZCkgIT0gMSk7XFxuIDI0ODpcXHRcXHRXQVJOX09OX09OQ0UocmVmY291bnRfcmVhZChcXHUwMDI2ZGlyLVxcdTAwM2Vub190cmFja2VyKSAhPSAxKTtcXG4gMjQ5OlxcdH1cXG4gMjUwOlxcdEVYUE9SVF9TWU1CT0wocmVmX3RyYWNrZXJfZGlyX2V4aXQpO1xcbiAyNTE6XFx0XFxuIDI1MjpcXHRpbnQgcmVmX3RyYWNrZXJfYWxsb2Moc3RydWN0IHJlZl90cmFja2VyX2RpciAqZGlyLFxcbiAyNTM6XFx0XFx0XFx0ICAgICAgc3RydWN0IHJlZl90cmFja2VyICoqdHJhY2tlcnAsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDA3OjIxOjU0LjgxNDQ2MDg3NloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU5NDMyODAyMTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudDogTm90IFdvcnRoIEZ1enppbmcqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgaW5jbHVkZXMgYHJlZl90cmFja2VyX2Rpcl9leGl0YC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBcIm1lbW9yeSBsZWFrIGZpeCBmb3IgYGFsbG9jX25ldGRldl9tcXNgIG9uIHRoZSBlcnJvciBwYXRoIOKAkyBzaG91bGQgd2UgYm90aGVyIGZ1enppbmcgdGhpcz9cIiBJdCdzIGEgY2xlYW51cCBmdW5jdGlvbiwgcmVhbGx5LCBqdXN0IGNhbGxpbmcgYHJlZl90cmFja2VyX2Rpcl9leGl0YC4gQSB2ZXJ5IHN0cmFpZ2h0Zm9yd2FyZCBtZW1vcnkgbGVhayBmaXgsIG5vdGhpbmcgY29tcGxpY2F0ZWQuXG5cbkknbSBsZWFuaW5nIHRvd2FyZHMgXCJuby5cIiBUaGlzIGNoYW5nZSAqb25seSogYWRkcyB0aGUgY2FsbCB0byBgcmVmX3RyYWNrZXJfZGlyX2V4aXRgIG9uIGEgZmFpbHVyZSBwYXRoLiBJdCBkb2Vzbid0IGFkZCBhbnkgbmV3IGNvcmUgZnVuY3Rpb25hbGl0eSB0aGF0J3MgcmlwZSBmb3IgZnV6emluZy4gSXQncyBzdHJpY3RseSBhYm91dCBjbGVhbmluZyB1cCByZXNvdXJjZXMuIEFuZCwgb2ggeWVhaCwgaXQncyBjb25uZWN0ZWQgdG8gdGhlIGBDT05GSUdfUkVGX1RSQUNLRVJgIGluZnJhc3RydWN0dXJlLCByaWdodD8gU28gaXQncyBiYXNpY2FsbHkgcGFydCBvZiB0aGUgZGVidWdnaW5nIHNldHVwLlxuXG5FdmVuIGlmIGl0ICp3YXNuJ3QqIHRpZWQgdG8gZGVidWdnaW5nLCBpdCdzIHN0aWxsIGp1c3QgdGhhdCBzaW5nbGUgY2xlYW51cCBjYWxsIG9uIGFuIGVycm9yIHBhdGguIEl0J3Mgbm90IGludHJvZHVjaW5nIGEgbmV3IGNvZGUgcGF0aCB0aGF0J3Mgd29ydGggZnV6emluZyB0byB1bmNvdmVyIGJ1Z3MuXG5cblRoZXJlZm9yZSwgbXkgZmluYWwgYW5zd2VyIGlzICoqV29ydGhGdXp6aW5nPWZhbHNlKiouIFRoaXMgaXMgYSBtZW1vcnkgbGVhayBmaXggaW4gYW4gZXJyb3IgcGF0aCwgYW5kIGl0J3MgcmVsYXRlZCB0byBkaWFnbm9zdGljL2RlYnVnZ2luZyBpbmZyYXN0cnVjdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzE5MywiT3V0cHV0VG9rZW5zIjoxMDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwNzoyMjowMC43NTc3NDQ5MDhaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTg3MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgbWlzc2luZyBjYWxsIHRvIGByZWZfdHJhY2tlcl9kaXJfZXhpdCgpYCBpbiB0aGUgZXJyb3IgcGF0aCBvZiBgYWxsb2NfbmV0ZGV2X21xcygpYC4gVGhpcyBpcyBhIHNpbXBsZSBtZW1vcnkgbGVhayBmaXggZm9yIHRoZSByZWZlcmVuY2UgdHJhY2tpbmcgaW5mcmFzdHJ1Y3R1cmUgKHdoaWNoIGlzIHByaW1hcmlseSB1c2VkIGZvciBkZWJ1Z2dpbmcpIGFuZCBkb2VzIG5vdCBpbnRyb2R1Y2UgbmV3IGZ1bmN0aW9uYWwgbG9naWMgb3IgY29tcGxleCBzdGF0ZSBjaGFuZ2VzIHRoYXQgd291bGQgYmVuZWZpdCBmcm9tIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgbWlzc2luZyBjYWxsIHRvIGByZWZfdHJhY2tlcl9kaXJfZXhpdCgpYCBpbiB0aGUgZXJyb3IgcGF0aCBvZiBgYWxsb2NfbmV0ZGV2X21xcygpYC4gVGhpcyBpcyBhIHNpbXBsZSBtZW1vcnkgbGVhayBmaXggZm9yIHRoZSByZWZlcmVuY2UgdHJhY2tpbmcgaW5mcmFzdHJ1Y3R1cmUgKHdoaWNoIGlzIHByaW1hcmlseSB1c2VkIGZvciBkZWJ1Z2dpbmcpIGFuZCBkb2VzIG5vdCBpbnRyb2R1Y2UgbmV3IGZ1bmN0aW9uYWwgbG9naWMgb3IgY29tcGxleCBzdGF0ZSBjaGFuZ2VzIHRoYXQgd291bGQgYmVuZWZpdCBmcm9tIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwNzoyMjowMC43NTc3NzkxMjhaIiwiU2VxIjoxMSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowddvxl[1] Phase: Running StartedAt: 2026-08-15 07:22:30 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowddvxl[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-15 07:22:30 +0000 UTC FinishedAt: 2026-08-15 07:22:34 +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,}