Name: series-workflow7jcmd Phase: Failed StartedAt: 2026-08-02 12:02:24 +0000 UTC FinishedAt: 2026-08-02 12:32:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7jcmd[0] Phase: Succeeded StartedAt: 2026-08-02 12:02:24 +0000 UTC FinishedAt: 2026-08-02 12:32:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7jcmd[0].run-triage Phase: Succeeded StartedAt: 2026-08-02 12:02:24 +0000 UTC FinishedAt: 2026-08-02 12:32:26 +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+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjMxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIG1vZGlmaWVkIGZ1bmN0aW9uIGBhdGgxMWtfZHBfc3JuZ19zZXR1cGAgaXMgcGFydCBvZiB0aGUgZGF0YXBhdGggaW5pdGlhbGl6YXRpb24gZm9yIHRoZSBhdGgxMWsgZHJpdmVyIChRdWFsY29tbSBBdGhlcm9zIDgwMi4xMWF4KS4gSXQgaXMgb25seSBjYWxsZWQgYWZ0ZXIgdGhlIFFNSSBmaXJtd2FyZSBpcyBzdWNjZXNzZnVsbHkgbG9hZGVkIGFuZCByZWFkeSAoYGF0aDExa19jb3JlX3FtaV9maXJtd2FyZV9yZWFkeWApLiBTaW5jZSBRRU1VIGRvZXMgbm90IGVtdWxhdGUgYXRoMTFrIGhhcmR3YXJlIGFuZCBzeXprYWxsZXIgY2Fubm90IHByb3ZpZGUgdGhlIG5lY2Vzc2FyeSBoYXJkd2FyZSBzdGF0ZSBhbmQgZmlybXdhcmUgdG8gcmVhY2ggdGhpcyBpbml0aWFsaXphdGlvbiBwaGFzZSwgdGhpcyBjb2RlIGlzIHVucmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjozMTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDE0MGE5MDA1NWUzZDFhMzhiMDAzZDRkYzU2NjUyZmM4MjA5MjNiNTdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEF1ZyAyIDEyOjMxOjAwIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuY1xuaW5kZXggZjM4OWI5N2FjYmRkNS4uYmU2NWQ3M2I5MDRiNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jXG5AQCAtMzEzLDYgJiM0MzszMTMsNyBAQCBpbnQgYXRoMTFrX2RwX3Nybmdfc2V0dXAoc3RydWN0IGF0aDExa19iYXNlICphYiwgc3RydWN0IGRwX3NybmcgKnJpbmcsXG4gXHRjYXNlIEhBTF9SWERNQV9ESVJfQlVGOlxuIFx0XHRicmVhaztcbiBcdGRlZmF1bHQ6XG4mIzQzO1x0XHRhdGgxMWtfZHBfc3JuZ19jbGVhbnVwKGFiLCByaW5nKTtcbiBcdFx0YXRoMTFrX3dhcm4oYWIsIFwmIzM0O05vdCBhIHZhbGlkIHJpbmcgdHlwZSBpbiBkcCA6JWRcXG5cJiMzNDssIHR5cGUpO1xuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdH1cbkBAIC0zMjQsNiAmIzQzOzMyNSw3IEBAIGludCBhdGgxMWtfZHBfc3JuZ19zZXR1cChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCBzdHJ1Y3QgZHBfc3JuZyAqcmluZyxcbiBcbiBcdHJldCA9IGF0aDExa19oYWxfc3JuZ19zZXR1cChhYiwgdHlwZSwgcmluZ19udW0sIG1hY19pZCwgXHUwMDI2cGFyYW1zKTtcbiBcdGlmIChyZXQgXHUwMDNjIDApIHtcbiYjNDM7XHRcdGF0aDExa19kcF9zcm5nX2NsZWFudXAoYWIsIHJpbmcpO1xuIFx0XHRhdGgxMWtfd2FybihhYiwgXCYjMzQ7ZmFpbGVkIHRvIHNldHVwIHNybmc6ICVkIHJpbmdfaWQgJWRcXG5cJiMzNDssXG4gXHRcdFx0ICAgIHJldCwgcmluZ19udW0pO1xuIFx0XHRyZXR1cm4gcmV0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjMxPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBtb2RpZmllZCBmdW5jdGlvbiBgYXRoMTFrX2RwX3Nybmdfc2V0dXBgIGlzIHBhcnQgb2YgdGhlIGRhdGFwYXRoIGluaXRpYWxpemF0aW9uIGZvciB0aGUgYXRoMTFrIGRyaXZlciAoUXVhbGNvbW0gQXRoZXJvcyA4MDIuMTFheCkuIEl0IGlzIG9ubHkgY2FsbGVkIGFmdGVyIHRoZSBRTUkgZmlybXdhcmUgaXMgc3VjY2Vzc2Z1bGx5IGxvYWRlZCBhbmQgcmVhZHkgKGBhdGgxMWtfY29yZV9xbWlfZmlybXdhcmVfcmVhZHlgKS4gU2luY2UgUUVNVSBkb2VzIG5vdCBlbXVsYXRlIGF0aDExayBoYXJkd2FyZSBhbmQgc3l6a2FsbGVyIGNhbm5vdCBwcm92aWRlIHRoZSBuZWNlc3NhcnkgaGFyZHdhcmUgc3RhdGUgYW5kIGZpcm13YXJlIHRvIHJlYWNoIHRoaXMgaW5pdGlhbGl6YXRpb24gcGhhc2UsIHRoaXMgY29kZSBpcyB1bnJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAxNDBhOTAwNTVlM2QxYTM4YjAwM2Q0ZGM1NjY1MmZjODIwOTIzYjU3CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBBdWcgMiAxMjozMTowMCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYwppbmRleCBmMzg5Yjk3YWNiZGQ1Li5iZTY1ZDczYjkwNGI2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jCkBAIC0zMTMsNiAmIzQzOzMxMyw3IEBAIGludCBhdGgxMWtfZHBfc3JuZ19zZXR1cChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCBzdHJ1Y3QgZHBfc3JuZyAqcmluZywKIAljYXNlIEhBTF9SWERNQV9ESVJfQlVGOgogCQlicmVhazsKIAlkZWZhdWx0OgomIzQzOwkJYXRoMTFrX2RwX3NybmdfY2xlYW51cChhYiwgcmluZyk7CiAJCWF0aDExa193YXJuKGFiLCAmIzM0O05vdCBhIHZhbGlkIHJpbmcgdHlwZSBpbiBkcCA6JWRcbiYjMzQ7LCB0eXBlKTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQpAQCAtMzI0LDYgJiM0MzszMjUsNyBAQCBpbnQgYXRoMTFrX2RwX3Nybmdfc2V0dXAoc3RydWN0IGF0aDExa19iYXNlICphYiwgc3RydWN0IGRwX3NybmcgKnJpbmcsCiAKIAlyZXQgPSBhdGgxMWtfaGFsX3Nybmdfc2V0dXAoYWIsIHR5cGUsIHJpbmdfbnVtLCBtYWNfaWQsICZhbXA7cGFyYW1zKTsKIAlpZiAocmV0ICZsdDsgMCkgewomIzQzOwkJYXRoMTFrX2RwX3NybmdfY2xlYW51cChhYiwgcmluZyk7CiAJCWF0aDExa193YXJuKGFiLCAmIzM0O2ZhaWxlZCB0byBzZXR1cCBzcm5nOiAlZCByaW5nX2lkICVkXG4mIzM0OywKIAkJCSAgICByZXQsIHJpbmdfbnVtKTsKIAkJcmV0dXJuIHJldDsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjI0MgoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDQ1MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIHRoZSBgYXRoMTFrYCBEcml2ZXIqKgoKT2theSwgc28gdGhlcmUmIzM5O3MgYSBwYXRjaCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jYCB0aGF0IGFkZHMgYGF0aDExa19kcF9zcm5nX2NsZWFudXBgIGluIHNvbWUgZXJyb3IgcGF0aHMgd2l0aGluIGBhdGgxMWtfZHBfc3JuZ19zZXR1cGAuIE15IGluaXRpYWwgdGhvdWdodCBpcywgY2FuIHdlIGZ1enogdGhpcyBkcml2ZXI/IGBhdGgxMWtgIGlzIGEgd2lyZWxlc3MgZHJpdmVyIGZvciBRdWFsY29tbSBBdGhlcm9zIDgwMi4xMWF4IGRldmljZXMuIENsYXNzaWMuCgpUaGUgbmV4dCBxdWVzdGlvbjogaG93IGFjY2Vzc2libGUgaXMgdGhpcyBjb2RlIGluIGEgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudD8gR2l2ZW4gdGhhdCBgYXRoMTFrYCB0eXBpY2FsbHkgcmVsaWVzIG9uIHNwZWNpZmljIGhhcmR3YXJlIOKAkyBQQ0llIG9yIEFIQiDigJMgaXQmIzM5O3MgdXN1YWxseSBub3QgdGhhdCBzdHJhaWdodGZvcndhcmQuIFFFTVUgZ2VuZXJhbGx5IGRvZXNuJiMzOTt0IGVtdWxhdGUgdGhlIGhhcmR3YXJlIGRpcmVjdGx5LCByaWdodD8gSSByZWNhbGwgdGhhdCBgbWFjODAyMTFfaHdzaW1gIGlzIGVtdWxhdGVkLCBidXQgYGF0aDExa2AgaXMgYSByZWFsIGhhcmR3YXJlIGRyaXZlci4gSXQmIzM5O3MgYnVpbHQgdG8gaW50ZXJmYWNlIHdpdGggcGh5c2ljYWwgaGFyZHdhcmUuCgpTbywgdGhlIHJlYWwgcXVlc3Rpb24gaXM6IENhbiB3ZSBhY3R1YWxseSBmdXp6IGEgaGFyZHdhcmUgZHJpdmVyPyBUaGVzZSBraW5kcyBvZiBkcml2ZXJzLCB0aGF0IG5lZWQgcGh5c2ljYWwgUENJZSBjYXJkcyBhbmQgd2hpY2ggYXJlbiYjMzk7dCBlbXVsYXRlZCBpbiBRRU1VLCBhcmUgbm9ybWFsbHkgYSBkZWFkIGVuZC4gVW5sZXNzIHRoZXJlJiMzOTtzIGEgVVNCIG9yIHNvbWUgb3RoZXIgaW50ZXJmYWNlIGF2YWlsYWJsZSwgb3IsIHdhaXQsIGNvdWxkIHdlIGxldmVyYWdlIFBDSSBmdXp6aW5nPwoKQWgsIHJpZ2h0LCBzeXprYWxsZXIuIFN5emthbGxlciAqZG9lcyogaGF2ZSBQQ0kgZnV6emluZyBjYXBhYmlsaXRpZXMsIGxpa2UgdmhjaSBhbmQgb3RoZXJzLiBUaGUgcXVlc3Rpb24gdGhlbiBiZWNvbWVzLCBkb2VzIGl0IHN1cHBvcnQgYGF0aDExa2A/IFdlIG5lZWQgdG8gdmVyaWZ5IGlmIHRoZXJlJiMzOTtzIGFueSBleGlzdGluZyBQQ0kgZW11bGF0aW9uIG9yIHN1cHBvcnQgZm9yIGBhdGgxMWtgLiBObywgdGhlIGRyaXZlciBpdHNlbGYgaXMgYSBQQ0kvQUhCIGRyaXZlci4KCkxldCYjMzk7cyBjaGVjayB0aGUgY3JpdGVyaWEuIFRoZSBzaXR1YXRpb24gd2UgYXJlIGluIGlzOiAmIzM0O0NvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLCBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4mIzM0OyBJcyBgYXRoMTFrYCBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIGRyaXZlcj8gWWVzLCBpdCYjMzk7cyBRdWFsY29tbSBBdGhlcm9zLCBzbyBpdCBkZWZpbml0ZWx5IGZhbGxzIHVuZGVyIHRoYXQgY2F0ZWdvcnkuCgpPa2F5LCBzbyBzeXprYWxsZXIgKmNhbiogZnV6eiBQQ0kgZHJpdmVycyB1c2luZyBpdHMgUENJIGZ1enplciwgd2hpY2ggaW5jbHVkZXMgYHN5ei11c2JgIGFuZCBgc3l6LXBjaWAuIEV4Y2VsbGVudC4gVGhlIGtleSBxdWVzdGlvbiBub3cgYmVjb21lcywgaXMgYGF0aDExa2AgYWN0dWFsbHkgZnV6emFibGU/IEkgbmVlZCB0byBkaWcgaW50byB0aGUga2VybmVsIHNvdXJjZSBhbmQgc2VhcmNoIGZvciB0aGUgYGF0aDExa2AgY29uZmlndXJhdGlvbi4gTGV0JiMzOTtzIHNlZSBpZiB3ZSBjYW4gZ2V0IHRoaXMgbW92aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2F0aDExa19kcF9zcm5nX3NldHVwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kYnJpbmcuYz0yMzc9aW50IGF0aDExa19kYnJpbmdfc3JuZ19zZXR1cChzdHJ1Y3QgYXRoMTFrICphciwgc3RydWN0IGF0aDExa19kYnJpbmcgKnJpbmcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kYnJpbmcuYy0yNDEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RicmluZy5jOjI0MjpcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFyLVx1MDAzZWFiLCBcdTAwMjZyaW5nLVx1MDAzZXJlZmlsbF9zcm5nLCBIQUxfUlhETUFfRElSX0JVRixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGJyaW5nLmMtMjQzLVx0XHRcdFx0ICAgcmluZ19udW0sIGFyLVx1MDAzZXBkZXZfaWR4LCBudW1fZW50cmllcyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jPTE4MT1zdGF0aWMgdm9pZCBhdGgxMWtfZHBfc3JuZ19tc2lfc2V0dXAoc3RydWN0IGF0aDExa19iYXNlICphYixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtMjIwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jOjIyMTppbnQgYXRoMTFrX2RwX3Nybmdfc2V0dXAoc3RydWN0IGF0aDExa19iYXNlICphYiwgc3RydWN0IGRwX3NybmcgKnJpbmcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtMjIyLVx0XHRcdCBlbnVtIGhhbF9yaW5nX3R5cGUgdHlwZSwgaW50IHJpbmdfbnVtLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYz0zNzI9c3RhdGljIGludCBhdGgxMWtfZHBfc3JuZ19jb21tb25fc2V0dXAoc3RydWN0IGF0aDExa19iYXNlICphYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtMzc4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jOjM3OTpcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFiLCBcdTAwMjZkcC1cdTAwM2V3Ym1fZGVzY19yZWxfcmluZyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy0zODAtXHRcdFx0XHQgICBIQUxfU1cyV0JNX1JFTEVBU0UsIDAsIDAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTM4Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYzozODg6XHRyZXQgPSBhdGgxMWtfZHBfc3JuZ19zZXR1cChhYiwgXHUwMDI2ZHAtXHUwMDNldGNsX2NtZF9yaW5nLCBIQUxfVENMX0NNRCwgMCwgMCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy0zODktXHRcdFx0XHQgICBEUF9UQ0xfQ01EX1JJTkdfU0laRSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTM5NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYzozOTU6XHRyZXQgPSBhdGgxMWtfZHBfc3JuZ19zZXR1cChhYiwgXHUwMDI2ZHAtXHUwMDNldGNsX3N0YXR1c19yaW5nLCBIQUxfVENMX1NUQVRVUyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy0zOTYtXHRcdFx0XHQgICAwLCAwLCBEUF9UQ0xfU1RBVFVTX1JJTkdfU0laRSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTQwNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYzo0MDY6XHRcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFiLCBcdTAwMjZkcC1cdTAwM2V0eF9yaW5nW2ldLnRjbF9kYXRhX3JpbmcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtNDA3LVx0XHRcdFx0XHQgICBIQUxfVENMX0RBVEEsIHRjbF9udW0sIDAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTQxNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYzo0MTU6XHRcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFiLCBcdTAwMjZkcC1cdTAwM2V0eF9yaW5nW2ldLnRjbF9jb21wX3JpbmcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtNDE2LVx0XHRcdFx0XHQgICBIQUxfV0JNMlNXX1JFTEVBU0UsIHdibV9udW0sIDAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTQzMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYzo0MzI6XHRyZXQgPSBhdGgxMWtfZHBfc3JuZ19zZXR1cChhYiwgXHUwMDI2ZHAtXHUwMDNlcmVvX3JlaW5qZWN0X3JpbmcsIEhBTF9SRU9fUkVJTkpFQ1QsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtNDMzLVx0XHRcdFx0ICAgMCwgMCwgRFBfUkVPX1JFSU5KRUNUX1JJTkdfU0laRSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTQzOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYzo0NDA6XHRyZXQgPSBhdGgxMWtfZHBfc3JuZ19zZXR1cChhYiwgXHUwMDI2ZHAtXHUwMDNlcnhfcmVsX3JpbmcsIEhBTF9XQk0yU1dfUkVMRUFTRSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy00NDEtXHRcdFx0XHQgICBEUF9SWF9SRUxFQVNFX1JJTkdfTlVNLCAwLCBEUF9SWF9SRUxFQVNFX1JJTkdfU0laRSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTQ0Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYzo0NDc6XHRyZXQgPSBhdGgxMWtfZHBfc3JuZ19zZXR1cChhYiwgXHUwMDI2ZHAtXHUwMDNlcmVvX2V4Y2VwdF9yaW5nLCBIQUxfUkVPX0VYQ0VQVElPTixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy00NDgtXHRcdFx0XHQgICAwLCAwLCBEUF9SRU9fRVhDRVBUSU9OX1JJTkdfU0laRSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTQ1NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYzo0NTU6XHRyZXQgPSBhdGgxMWtfZHBfc3JuZ19zZXR1cChhYiwgXHUwMDI2ZHAtXHUwMDNlcmVvX2NtZF9yaW5nLCBIQUxfUkVPX0NNRCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy00NTYtXHRcdFx0XHQgICAwLCAwLCBEUF9SRU9fQ01EX1JJTkdfU0laRSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTQ2OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYzo0Njk6XHRyZXQgPSBhdGgxMWtfZHBfc3JuZ19zZXR1cChhYiwgXHUwMDI2ZHAtXHUwMDNlcmVvX3N0YXR1c19yaW5nLCBIQUxfUkVPX1NUQVRVUyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy00NzAtXHRcdFx0XHQgICAwLCAwLCBEUF9SRU9fU1RBVFVTX1JJTkdfU0laRSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jPTY0OD1zdGF0aWMgaW50IGF0aDExa193Ym1faWRsZV9yaW5nX3NldHVwKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIHUzMiAqbl9saW5rX2Rlc2MpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTY3NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYzo2NzU6XHRyZXQgPSBhdGgxMWtfZHBfc3JuZ19zZXR1cChhYiwgXHUwMDI2ZHAtXHUwMDNld2JtX2lkbGVfcmluZyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy02NzYtXHRcdFx0XHQgICBIQUxfV0JNX0lETEVfTElOSywgMCwgMCwgKm5fbGlua19kZXNjKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmg9MTY3Mj12b2lkIGF0aDExa19kcF9zcm5nX2NsZWFudXAoc3RydWN0IGF0aDExa19iYXNlICphYiwgc3RydWN0IGRwX3NybmcgKnJpbmcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5oOjE2NzM6aW50IGF0aDExa19kcF9zcm5nX3NldHVwKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIHN0cnVjdCBkcF9zcm5nICpyaW5nLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5oLTE2NzQtXHRcdFx0IGVudW0gaGFsX3JpbmdfdHlwZSB0eXBlLCBpbnQgcmluZ19udW0sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jPTU0Nj1pbnQgYXRoMTFrX2RwX3BkZXZfcmVvX3NldHVwKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jLTU1Mi1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIERQX1JFT19EU1RfUklOR19NQVg7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmM6NTUzOlx0XHRyZXQgPSBhdGgxMWtfZHBfc3JuZ19zZXR1cChhYiwgXHUwMDI2ZHAtXHUwMDNlcmVvX2RzdF9yaW5nW2ldLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jLTU1NC1cdFx0XHRcdFx0ICAgSEFMX1JFT19EU1QsIGksIDAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jPTU3MD1zdGF0aWMgaW50IGF0aDExa19kcF9yeF9wZGV2X3NybmdfYWxsb2Moc3RydWN0IGF0aDExayAqYXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jLTU3Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYzo1Nzg6XHRyZXQgPSBhdGgxMWtfZHBfc3JuZ19zZXR1cChhci1cdTAwM2VhYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYy01NzktXHRcdFx0XHQgICBcdTAwMjZkcC1cdTAwM2VyeF9yZWZpbGxfYnVmX3JpbmcucmVmaWxsX2J1Zl9yaW5nLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYy01ODgtXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGFiLVx1MDAzZWh3X3BhcmFtcy5udW1fcnhkbWFfcGVyX3BkZXY7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmM6NTg5Olx0XHRcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFyLVx1MDAzZWFiLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jLTU5MC1cdFx0XHRcdFx0XHQgICBcdTAwMjZkcC1cdTAwM2VyeF9tYWNfYnVmX3JpbmdbaV0sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jLTYwMS1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIGFiLVx1MDAzZWh3X3BhcmFtcy5udW1fcnhkbWFfcGVyX3BkZXY7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmM6NjAyOlx0XHRyZXQgPSBhdGgxMWtfZHBfc3JuZ19zZXR1cChhci1cdTAwM2VhYiwgXHUwMDI2ZHAtXHUwMDNlcnhkbWFfZXJyX2RzdF9yaW5nW2ldLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jLTYwMy1cdFx0XHRcdFx0ICAgSEFMX1JYRE1BX0RTVCwgMCwgZHAtXHUwMDNlbWFjX2lkICYjNDM7IGksXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jLTYxMi1cdFx0c3JuZyA9IFx1MDAyNmRwLVx1MDAzZXJ4X21vbl9zdGF0dXNfcmVmaWxsX3JpbmdbaV0ucmVmaWxsX2J1Zl9yaW5nO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jOjYxMzpcdFx0cmV0ID0gYXRoMTFrX2RwX3Nybmdfc2V0dXAoYXItXHUwMDNlYWIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmMtNjE0LVx0XHRcdFx0XHQgICBzcm5nLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYy02MzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmM6NjM2Olx0cmV0ID0gYXRoMTFrX2RwX3Nybmdfc2V0dXAoYXItXHUwMDNlYWIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmMtNjM3LVx0XHRcdFx0ICAgXHUwMDI2ZHAtXHUwMDNlcnhkbWFfbW9uX2J1Zl9yaW5nLnJlZmlsbF9idWZfcmluZyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmMtNjQ1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jOjY0NjpcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFyLVx1MDAzZWFiLCBcdTAwMjZkcC1cdTAwM2VyeGRtYV9tb25fZHN0X3JpbmcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmMtNjQ3LVx0XHRcdFx0ICAgSEFMX1JYRE1BX01PTklUT1JfRFNULCAwLCBkcC1cdTAwM2VtYWNfaWQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jLTY1NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYzo2NTU6XHRyZXQgPSBhdGgxMWtfZHBfc3JuZ19zZXR1cChhci1cdTAwM2VhYiwgXHUwMDI2ZHAtXHUwMDNlcnhkbWFfbW9uX2Rlc2NfcmluZyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYy02NTYtXHRcdFx0XHQgICBIQUxfUlhETUFfTU9OSVRPUl9ERVNDLCAwLCBkcC1cdTAwM2VtYWNfaWQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjM2MAoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDIwNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEZ1enppbmcgUG90ZW50aWFsIG9mIGBhdGgxMWtgKioKCk9rYXksIHNvIHRoZSBjb2RlIGluIHF1ZXN0aW9uIHNlZW1zIHRvIGJlIHdpdGhpbiBgYXRoMTFrX2RwX3Nybmdfc2V0dXBgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtSaWdodCwgYGF0aDExa2AuLi4gdGhhdCYjMzk7cyBRdWFsY29tbSBBdGhlcm9zJiMzOTsgODAyLjExYXggaGFyZHdhcmUgZHJpdmVyLiYjMzQ7IE5vdyB0aGUgcXVlc3Rpb24gYmVjb21lcywgZG9lcyB0aGlzIGRyaXZlciByZWx5IG9uIGFjdHVhbCBQQ0llIGhhcmR3YXJlLCBhbmQgd2lsbCBpdCBub3Qgd29yayB3aXRoIHN0YW5kYXJkIFFFTVUgZW11bGF0aW9uPyBHaXZlbiB0aGF0IGBhdGgxMWtgIGlzIGEgUENJZS9BSEIgZHJpdmVyLCB0aGUgYW5zd2VyIGlzIG1vc3QgbGlrZWx5IHllcy4gVGhhdCBtYWtlcyB0aGluZ3MgaW50ZXJlc3RpbmcgZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUuCgpUaGUgcHJvbXB0IHNwZWNpZmljYWxseSBtZW50aW9ucyBjb2RlIHdpdGhpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycywgd2hpY2ggYWxzbyByZXF1aXJlIHBoeXNpY2FsIFBDSWUgY2FyZHMsIGFuZCBtZW50aW9ucyBzZXZlcmFsIGRyaXZlcnMgdGhhdCBmYWxsIGludG8gdGhpcyBjYXRlZ29yeS4gQW5kIGBhdGgxMWtgICppcyogdmVuZG9yLXNwZWNpZmljLCBzbyBpdCBsaW5lcyB1cCB3aXRoIHRoZSBkZXNjcmlwdGlvbi4KCkJ1dCB3YWl0IGEgbWludXRlISBTeXprYWxsZXIgKmRvZXMqIGhhdmUgUENJIGZ1enppbmcgY2FwYWJpbGl0aWVzLCBkb2VzbiYjMzk7dCBpdD8gVGhlIHF1ZXN0aW9uIG5vdyBiZWNvbWVzLCBoYXMgYW55b25lIGFscmVhZHkgYXR0ZW1wdGVkIHRvIGZ1enogYGF0aDExa2A/IEkgbmVlZCB0byBjaGVjayBmb3IgYSBzeXprYWxsZXIgZGVzY3JpcHRpb24gcmVsYXRlZCB0byB0aGlzIGRyaXZlci4gTGV0JiMzOTtzIGRpZyBkZWVwZXIgYW5kIHNlZSB3aGF0IHdlIGNhbiBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoMTFrJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7c3lzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjg2NwoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDc5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgdGhlIEF0aDExayBEcml2ZXIgd2l0aCBTeXprYWxsZXIqKgoKT2theSwgc28gdGhlcmUmIzM5O3Mgbm8gZGVkaWNhdGVkIHN5emthbGxlciBkZXNjcmlwdGlvbiBmb3IgdGhlIGF0aDExayBkcml2ZXIsIHdoaWNoIGlzIGEgYml0IG9mIGEgcm9hZGJsb2NrLiBCdXQgaG9sZCBvbiwgdGhlIGdlbmVyaWMgUENJIGZ1enplciAoc3BlY2lmaWNhbGx5IGBzeXpfcGNpX2RldmljZWApIGlzIGF2YWlsYWJsZSwgYW5kIHRoYXQgb3BlbnMgdXAgc29tZSBwb3NzaWJpbGl0aWVzLiBUaGUgcXVlc3Rpb24gbm93IGJlY29tZXM6IGNhbiBJIHNvbWVob3cgdHJpZ2dlciBgYXRoMTFrX2RwX3Nybmdfc2V0dXBgIOKAkyB0aGUgdGFyZ2V0IOKAkyB0aHJvdWdoIGEgUENJIHByb2JlPyBUaGF0IHNlZW1zIGxpa2UgdGhlIG1vc3QgZGlyZWN0IHJvdXRlLCBhbmQgaXQmIzM5O3MgdGhlIG9uZSBJIG5lZWQgdG8gZXhwbG9yZS4gVGltZSB0byBkaXZlIGludG8gdGhlIGBhdGgxMWtfcGNpX3Byb2JlYCBmdW5jdGlvbiBhbmQgc2VlIGlmIGl0JiMzOTtzIGZlYXNpYmxlIHRvIG1hbmlwdWxhdGUgdGhlIFBDSSBwcm9iZSBwcm9jZXNzIHRvIHJlYWNoIHdoYXQgSSYjMzk7bSBsb29raW5nIGZvci4gTGV0JiMzOTtzIHNlZSBpZiB0aGlzIGh1bmNoIHBhbnMgb3V0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2F0aDExa19wY2lfcHJvYmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3BjaS5jPTk0MD1zdGF0aWMgaW50IGF0aDExa19wY2lfc2V0X2lycV9hZmZpbml0eV9oaW50KHN0cnVjdCBhdGgxMWtfcGNpICphYl9wY2ksXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYy05NDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3BjaS5jOjk0OTpzdGF0aWMgaW50IGF0aDExa19wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3BjaS5jLTk1MC1cdFx0XHQgICAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKnBjaV9kZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYz0xMjk2PXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBhdGgxMWtfcGNpX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3BjaS5jLTEyOTgtXHQuaWRfdGFibGUgPSBhdGgxMWtfcGNpX2lkX3RhYmxlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYzoxMjk5Olx0LnByb2JlID0gYXRoMTFrX3BjaV9wcm9iZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmMtMTMwMC1cdC5yZW1vdmUgPSBhdGgxMWtfcGNpX3JlbW92ZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NTAyCgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMjAyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRnV6emFiaWxpdHkgb2YgdGhlIGF0aDExayBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcHJvbXB0IGFuZCB0aGlua2luZyBhYm91dCBob3cgdG8gYXBwcm9hY2ggdGhpcyBmdXp6aW5nIHRhc2suIFRoZSBtZW50aW9uIG9mIFBDSSBkcml2ZXJzIGltbWVkaWF0ZWx5IGJyaW5ncyBgc3l6X3BjaV9kZXZpY2VgIHRvIG1pbmQuIElmIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBQQ0kgZHJpdmVyLCBzeXprYWxsZXIgc2hvdWxkIGJlIGFibGUgdG8gcHJvYmUgaXQsIHJpZ2h0PyBCdXQgdGhlIHByb21wdCBzcGVjaWZpY2FsbHkgY2FsbHMgb3V0IHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzLCBhbmQgbWVudGlvbnMgdGhhdCB0aGV5IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KCk5vdywgaXMgYXRoMTFrIG9uZSBvZiB0aG9zZT8gTm8sIGl0JiMzOTtzIGEgd2lyZWxlc3MgZHJpdmVyLCBub3QgYSBTbWFydE5JQyBvciBHUFUuIEhvd2V2ZXIsIGl0ICppcyogYSBoYXJkd2FyZSBkcml2ZXIuIFNvLCBkb2VzIGl0IHJlcXVpcmUgcGh5c2ljYWwgY2FyZHMgdGhhdCBRRU1VIGNhbiYjMzk7dCBlbXVsYXRlPyBUaGUgYW5zd2VyIGlzIHllcy4gU3RpbGwsIEkga25vdyB0aGF0IHN5emthbGxlcuKAmXMgUENJIGZ1enplciBjYW4gZW11bGF0ZSBQQ0kgZGV2aWNlcyBhbmQgdHJpZ2dlciB0aGUgZGV2aWNlJiMzOTtzIHByb2JlIGZ1bmN0aW9ucywgcmlnaHQ/IFNvLCBoZXJlJiMzOTtzIHRoZSBjcnVjaWFsIHF1ZXN0aW9uOiBJZiBzeXprYWxsZXImIzM5O3MgUENJIGZ1enplciAqY2FuKiB0cmlnZ2VyIGl0LCBpcyB0aGF0IGNvbnNpZGVyZWQgZnV6emFibGU/IEkgdGhpbmsgaXQgbWlnaHQgYmUhIEl0JiMzOTtzIHdvcnRoIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbi4gTGV0JiMzOTtzIHNlZSBpZiB3ZSBjYW4gZ2V0IHRvIGBhdGgxMWtfZHBfc3JuZ19zZXR1cGAgZHVyaW5nIHByb2JlLiBUaGF0JiMzOTtzIHRoZSBrZXkgdG8gZmlndXJpbmcgb3V0IHRoZSBhbnN3ZXIgdG8gdGhpcyBxdWVzdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoMTFrX2RwX3Nybmdfc2V0dXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RicmluZy5jPTIzNz1pbnQgYXRoMTFrX2RicmluZ19zcm5nX3NldHVwKHN0cnVjdCBhdGgxMWsgKmFyLCBzdHJ1Y3QgYXRoMTFrX2RicmluZyAqcmluZyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RicmluZy5jLTI0MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGJyaW5nLmM6MjQyOlx0cmV0ID0gYXRoMTFrX2RwX3Nybmdfc2V0dXAoYXItXHUwMDNlYWIsIFx1MDAyNnJpbmctXHUwMDNlcmVmaWxsX3NybmcsIEhBTF9SWERNQV9ESVJfQlVGLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kYnJpbmcuYy0yNDMtXHRcdFx0XHQgICByaW5nX251bSwgYXItXHUwMDNlcGRldl9pZHgsIG51bV9lbnRyaWVzKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmM9MTgxPXN0YXRpYyB2b2lkIGF0aDExa19kcF9zcm5nX21zaV9zZXR1cChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy0yMjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmM6MjIxOmludCBhdGgxMWtfZHBfc3JuZ19zZXR1cChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCBzdHJ1Y3QgZHBfc3JuZyAqcmluZyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy0yMjItXHRcdFx0IGVudW0gaGFsX3JpbmdfdHlwZSB0eXBlLCBpbnQgcmluZ19udW0sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jPTM3Mj1zdGF0aWMgaW50IGF0aDExa19kcF9zcm5nX2NvbW1vbl9zZXR1cChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy0zNzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmM6Mzc5Olx0cmV0ID0gYXRoMTFrX2RwX3Nybmdfc2V0dXAoYWIsIFx1MDAyNmRwLVx1MDAzZXdibV9kZXNjX3JlbF9yaW5nLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTM4MC1cdFx0XHRcdCAgIEhBTF9TVzJXQk1fUkVMRUFTRSwgMCwgMCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtMzg3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jOjM4ODpcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFiLCBcdTAwMjZkcC1cdTAwM2V0Y2xfY21kX3JpbmcsIEhBTF9UQ0xfQ01ELCAwLCAwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTM4OS1cdFx0XHRcdCAgIERQX1RDTF9DTURfUklOR19TSVpFKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtMzk0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jOjM5NTpcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFiLCBcdTAwMjZkcC1cdTAwM2V0Y2xfc3RhdHVzX3JpbmcsIEhBTF9UQ0xfU1RBVFVTLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTM5Ni1cdFx0XHRcdCAgIDAsIDAsIERQX1RDTF9TVEFUVVNfUklOR19TSVpFKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtNDA1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jOjQwNjpcdFx0cmV0ID0gYXRoMTFrX2RwX3Nybmdfc2V0dXAoYWIsIFx1MDAyNmRwLVx1MDAzZXR4X3JpbmdbaV0udGNsX2RhdGFfcmluZyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy00MDctXHRcdFx0XHRcdCAgIEhBTF9UQ0xfREFUQSwgdGNsX251bSwgMCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtNDE0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jOjQxNTpcdFx0cmV0ID0gYXRoMTFrX2RwX3Nybmdfc2V0dXAoYWIsIFx1MDAyNmRwLVx1MDAzZXR4X3JpbmdbaV0udGNsX2NvbXBfcmluZyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy00MTYtXHRcdFx0XHRcdCAgIEhBTF9XQk0yU1dfUkVMRUFTRSwgd2JtX251bSwgMCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtNDMxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jOjQzMjpcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFiLCBcdTAwMjZkcC1cdTAwM2VyZW9fcmVpbmplY3RfcmluZywgSEFMX1JFT19SRUlOSkVDVCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy00MzMtXHRcdFx0XHQgICAwLCAwLCBEUF9SRU9fUkVJTkpFQ1RfUklOR19TSVpFKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtNDM5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jOjQ0MDpcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFiLCBcdTAwMjZkcC1cdTAwM2VyeF9yZWxfcmluZywgSEFMX1dCTTJTV19SRUxFQVNFLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTQ0MS1cdFx0XHRcdCAgIERQX1JYX1JFTEVBU0VfUklOR19OVU0sIDAsIERQX1JYX1JFTEVBU0VfUklOR19TSVpFKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtNDQ2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jOjQ0NzpcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFiLCBcdTAwMjZkcC1cdTAwM2VyZW9fZXhjZXB0X3JpbmcsIEhBTF9SRU9fRVhDRVBUSU9OLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTQ0OC1cdFx0XHRcdCAgIDAsIDAsIERQX1JFT19FWENFUFRJT05fUklOR19TSVpFKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtNDU0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jOjQ1NTpcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFiLCBcdTAwMjZkcC1cdTAwM2VyZW9fY21kX3JpbmcsIEhBTF9SRU9fQ01ELFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTQ1Ni1cdFx0XHRcdCAgIDAsIDAsIERQX1JFT19DTURfUklOR19TSVpFKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtNDY4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jOjQ2OTpcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFiLCBcdTAwMjZkcC1cdTAwM2VyZW9fc3RhdHVzX3JpbmcsIEhBTF9SRU9fU1RBVFVTLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTQ3MC1cdFx0XHRcdCAgIDAsIDAsIERQX1JFT19TVEFUVVNfUklOR19TSVpFKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmM9NjQ4PXN0YXRpYyBpbnQgYXRoMTFrX3dibV9pZGxlX3Jpbmdfc2V0dXAoc3RydWN0IGF0aDExa19iYXNlICphYiwgdTMyICpuX2xpbmtfZGVzYylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtNjc0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jOjY3NTpcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFiLCBcdTAwMjZkcC1cdTAwM2V3Ym1faWRsZV9yaW5nLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTY3Ni1cdFx0XHRcdCAgIEhBTF9XQk1fSURMRV9MSU5LLCAwLCAwLCAqbl9saW5rX2Rlc2MpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuaD0xNjcyPXZvaWQgYXRoMTFrX2RwX3NybmdfY2xlYW51cChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCBzdHJ1Y3QgZHBfc3JuZyAqcmluZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmg6MTY3MzppbnQgYXRoMTFrX2RwX3Nybmdfc2V0dXAoc3RydWN0IGF0aDExa19iYXNlICphYiwgc3RydWN0IGRwX3NybmcgKnJpbmcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmgtMTY3NC1cdFx0XHQgZW51bSBoYWxfcmluZ190eXBlIHR5cGUsIGludCByaW5nX251bSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmM9NTQ2PWludCBhdGgxMWtfZHBfcGRldl9yZW9fc2V0dXAoc3RydWN0IGF0aDExa19iYXNlICphYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmMtNTUyLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgRFBfUkVPX0RTVF9SSU5HX01BWDsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYzo1NTM6XHRcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFiLCBcdTAwMjZkcC1cdTAwM2VyZW9fZHN0X3JpbmdbaV0sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmMtNTU0LVx0XHRcdFx0XHQgICBIQUxfUkVPX0RTVCwgaSwgMCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmM9NTcwPXN0YXRpYyBpbnQgYXRoMTFrX2RwX3J4X3BkZXZfc3JuZ19hbGxvYyhzdHJ1Y3QgYXRoMTFrICphcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmMtNTc3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jOjU3ODpcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFyLVx1MDAzZWFiLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jLTU3OS1cdFx0XHRcdCAgIFx1MDAyNmRwLVx1MDAzZXJ4X3JlZmlsbF9idWZfcmluZy5yZWZpbGxfYnVmX3JpbmcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jLTU4OC1cdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgYWItXHUwMDNlaHdfcGFyYW1zLm51bV9yeGRtYV9wZXJfcGRldjsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYzo1ODk6XHRcdFx0cmV0ID0gYXRoMTFrX2RwX3Nybmdfc2V0dXAoYXItXHUwMDNlYWIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmMtNTkwLVx0XHRcdFx0XHRcdCAgIFx1MDAyNmRwLVx1MDAzZXJ4X21hY19idWZfcmluZ1tpXSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmMtNjAxLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgYWItXHUwMDNlaHdfcGFyYW1zLm51bV9yeGRtYV9wZXJfcGRldjsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYzo2MDI6XHRcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFyLVx1MDAzZWFiLCBcdTAwMjZkcC1cdTAwM2VyeGRtYV9lcnJfZHN0X3JpbmdbaV0sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmMtNjAzLVx0XHRcdFx0XHQgICBIQUxfUlhETUFfRFNULCAwLCBkcC1cdTAwM2VtYWNfaWQgJiM0MzsgaSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmMtNjEyLVx0XHRzcm5nID0gXHUwMDI2ZHAtXHUwMDNlcnhfbW9uX3N0YXR1c19yZWZpbGxfcmluZ1tpXS5yZWZpbGxfYnVmX3Jpbmc7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmM6NjEzOlx0XHRyZXQgPSBhdGgxMWtfZHBfc3JuZ19zZXR1cChhci1cdTAwM2VhYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYy02MTQtXHRcdFx0XHRcdCAgIHNybmcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jLTYzNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYzo2MzY6XHRyZXQgPSBhdGgxMWtfZHBfc3JuZ19zZXR1cChhci1cdTAwM2VhYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYy02MzctXHRcdFx0XHQgICBcdTAwMjZkcC1cdTAwM2VyeGRtYV9tb25fYnVmX3JpbmcucmVmaWxsX2J1Zl9yaW5nLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYy02NDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmM6NjQ2Olx0cmV0ID0gYXRoMTFrX2RwX3Nybmdfc2V0dXAoYXItXHUwMDNlYWIsIFx1MDAyNmRwLVx1MDAzZXJ4ZG1hX21vbl9kc3RfcmluZyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYy02NDctXHRcdFx0XHQgICBIQUxfUlhETUFfTU9OSVRPUl9EU1QsIDAsIGRwLVx1MDAzZW1hY19pZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmMtNjU0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jOjY1NTpcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFyLVx1MDAzZWFiLCBcdTAwMjZkcC1cdTAwM2VyeGRtYV9tb25fZGVzY19yaW5nLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jLTY1Ni1cdFx0XHRcdCAgIEhBTF9SWERNQV9NT05JVE9SX0RFU0MsIDAsIGRwLVx1MDAzZW1hY19pZCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTExMTgKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAzMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQcm9tcHQmIzM5O3MgQXBwbGljYWJpbGl0eSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgcHJvbXB0IHNwZWNpZmljYWxseSBtZW50aW9ucyBjb2RlIHJlbGF0ZWQgdG8gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMuIEkgaW1tZWRpYXRlbHkgdGhvdWdodCBhYm91dCBgYXRoMTFrYCDigJMgaXQmIzM5O3MgYSBRdWFsY29tbSBBdGhlcm9zIDgwMi4xMWF4IGRyaXZlciwgZGVmaW5pdGVseSB2ZW5kb3Itc3BlY2lmaWMgYW5kIFBDSWUuIEhvd2V2ZXIsIGlzIGl0IGEgKnN3aXRjaCosIGEgKlNtYXJ0TklDKiwgb3IgYSAqR1BVKiBkcml2ZXI/IE5vLCBpdCYjMzk7cyBhIHdpcmVsZXNzIGRyaXZlci4gU28sIGluaXRpYWwgcGFzcywgaXQgZG9lc24mIzM5O3QgcXVpdGUgZml0IHRoZSAqdHlwZXMqIG9mIGRyaXZlcnMgbWVudGlvbmVkLgoKVGhlIHNlY29uZCBwYXJ0IG9mIHRoZSBwcm9tcHQgaXMga2V5OiAmIzM0Oy4uLnJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyAqbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUqLiYjMzQ7IFllcywgdGhhdCYjMzk7cyB0cnVlIGZvciBgYXRoMTFrYC4gUUVNVSBkb2VzbiYjMzk7dCBvZmZlciBhIGRpcmVjdCBoYXJkd2FyZSBlbXVsYXRpb24gZm9yIHRoZSBzcGVjaWZpYyBRdWFsY29tbSBBdGhlcm9zIGNoaXBzZXRzLgoKQnV0IHRoZW4gSSByZW1lbWJlcmVkIHRoZSBgc3l6a2FsbGVyYCBQQ0kgZnV6emVyLiBJdCAqY2FuKiBlbXVsYXRlIFBDSSBkZXZpY2VzLCBkb2VzbiYjMzk7dCBpdD8gU28sIGV2ZW4gdGhvdWdoIGl0JiMzOTtzIG5vdCBhICpwZXJmZWN0KiBoYXJkd2FyZSBtb2RlbCwgdGhlIHF1ZXN0aW9uIGJlY29tZXMsIGNvdWxkIGl0IGJlIGZ1enplZCB2aWEgdGhhdCBtZWNoYW5pc20/IFRoZSB3b3JkaW5nIG9mIHRoZSBwcm9tcHQsIGFnYWluLCBzcGVjaWZpY2FsbHkgc2F5cyAqbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUqLiBUaGUgZnV6emVyIG1pZ2h0IGdldCB0aGUgZGV2aWNlIHByb2JlZCwgYnV0IGl0JiMzOTtzIG5vdCB0aGUgJiMzNDtzdGFuZGFyZCYjMzQ7IFFFTVUgZW52aXJvbm1lbnQuCgpUaGVuIEkgY2lyY2xlZCBiYWNrIHRvIHRoZSBmYWN0IHRoYXQgYGF0aDExa2AgaXMgYSB3aXJlbGVzcyBkcml2ZXIuIFN5emthbGxlciAqZG9lcyogaGF2ZSBgbWFjODAyMTFfaHdzaW1gIGZvciB3aXJlbGVzcyBmdXp6aW5nLCBidXQgaXQgYnlwYXNzZXMgdGhlIGRpcmVjdCB1c2Ugb2YgYGF0aDExa2AuCgpTbywgdGhlIGtleSBoZXJlIGlzIHdoZXRoZXIgYHN5emthbGxlcmAmIzM5O3MgUENJIGZ1enplciBjYW4gYmUgbGV2ZXJhZ2VkIHRvICp0cmlnZ2VyKiB0aGUgYGF0aDExa2AgcHJvYmUgc2VxdWVuY2UuIElmIGl0IGNhbiwgdGhlbiB3ZSBtaWdodCBoYXZlIGEgdmlhYmxlIGZ1enppbmcgdGFyZ2V0LiBJdCYjMzk7cyBhIGxvbmcgc2hvdCwgZ2l2ZW4gdGhlIGRyaXZlciB0eXBlLCBidXQgdGhlIHBvdGVudGlhbCBpcyB0aGVyZS4KCkZpbmFsbHksIEkgbmVlZCB0byBjaGVjayB3aGV0aGVyIGBhdGgxMWtgIG5lZWRzIGZpcm13YXJlIHRvIGV2ZW4gYmVnaW4gaXRzIGluaXRpYWxpemF0aW9uLiBNYW55IHdpcmVsZXNzIGRyaXZlcnMgYXJlIGZpcm13YXJlLWRlcGVuZGVudCwgYW5kIGlmIHNvLCBpdCYjMzk7cyBhIG5lY2Vzc2FyeSBzdGVwIGJlZm9yZSBhbnkgbWVhbmluZ2Z1bCBmdXp6aW5nIGNhbiBjb21tZW5jZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cmVxdWVzdF9maXJtd2FyZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZncuYy0xMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZncuYzoxMTpzdGF0aWMgaW50IGF0aDExa19md19yZXF1ZXN0X2Zpcm13YXJlX2FwaV9uKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Z3LmMtMTItXHRcdFx0XHRcdCAgICBjb25zdCBjaGFyICpuYW1lKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZncuYz0xNDc9aW50IGF0aDExa19md19wcmVfaW5pdChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZncuYy0xNTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Z3LmM6MTUxOlx0cmV0ID0gYXRoMTFrX2Z3X3JlcXVlc3RfZmlybXdhcmVfYXBpX24oYWIsIEFUSDExS19GV19BUEkyX0ZJTEUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9mdy5jLTE1Mi1cdGlmIChyZXQgPT0gMCkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjIwMAoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDEyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgRmlybXdhcmUgRGVwZW5kZW5jaWVzIGluIFN5emthbGxlciBDb3ZlcmFnZSoqCgpPa2F5LCBzbyBJJiMzOTttIHRyeWluZyB0byB1bmRlcnN0YW5kIGhvdyB3ZWxsIFN5emthbGxlciBjYW4gY292ZXIgYSBzcGVjaWZpYyBhcmVhLCBhbmQgZmlybXdhcmUgZGVwZW5kZW5jaWVzIGFyZSBkZWZpbml0ZWx5IGEgcG90ZW50aWFsIGh1cmRsZS4gSSYjMzk7bSB0aGlua2luZywgaWYgdGhlIGZ1bmN0aW9uYWxpdHkgSSYjMzk7bSBpbnRlcmVzdGVkIGluLCB3aGF0ZXZlciBpdCBtYXkgYmUsIHJlcXVpcmVzIGEgZmlybXdhcmUgY29tcG9uZW50LCBTeXprYWxsZXImIzM5O3MgY292ZXJhZ2UgbWlnaHQgYmUgbGltaXRlZC4gVW5sZXNzIHRoZSByZXF1aXJlZCBmaXJtd2FyZSBpcyBiYWtlZCBpbnRvIHRoZSBzdGFuZGFyZCBgbGludXgtZmlybXdhcmVgIHBhY2thZ2UgYW5kIHByZXNlbnQgaW4gdGhlIFN5emthbGxlciBpbWFnZSwgb3IgaWYgdGhlcmUmIzM5O3Mgc29tZSBzb3J0IG9mIGdyYWNlZnVsIGZhaWx1cmUgaGFuZGxpbmcgYnVpbHQgaW4sIEkmIzM5O20gcHJvYmFibHkgb3V0IG9mIGx1Y2suCgpUbyBnZXQgYSBoYW5kbGUgb24gdGhpcywgSSBuZWVkIHRvIGludmVzdGlnYXRlIHRoZSBzcGVjaWZpYyBmdW5jdGlvbiBpbiBxdWVzdGlvbjogYGF0aDExa19kcF9zcm5nX3NldHVwYC4gTGV0IG1lIHRyYWNlIGl0cyB1c2FnZSB0byBmaWd1cmUgb3V0IHRoZSBjb250ZXh0IHdoZXJlIGl0IGdldHMgY2FsbGVkLiBGcm9tIGEgcXVpY2sgc2VhcmNoLCBpdCBhcHBlYXJzIHRvIGJlIGNhbGxlZCBmcm9tIGEgZmV3IHBsYWNlcywgbGlrZSBgYXRoMTFrX2RwX3NybmdfY29tbW9uX3NldHVwYCwgYGF0aDExa19kcF9yeF9wZGV2X3NybmdfYWxsb2NgLCBhbmQgcGVyaGFwcyBvdGhlcnMuCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc3RhcnQgd2l0aCB0cmFjaW5nIHRoZSBleGVjdXRpb24gb2YgYGF0aDExa19kcF9zcm5nX2NvbW1vbl9zZXR1cGAuIFRoaXMgc2VlbXMgbGlrZSBhIHJlYXNvbmFibGUgc3RhcnRpbmcgcG9pbnQgdG8gYmVnaW4gdGhlIGFuYWx5c2lzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdGgxMWtfZHBfc3JuZ19jb21tb25fc2V0dXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmM9MzUyPXN0YXRpYyB2b2lkIGF0aDExa19kcF9zcm5nX2NvbW1vbl9jbGVhbnVwKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTM3MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYzozNzI6c3RhdGljIGludCBhdGgxMWtfZHBfc3JuZ19jb21tb25fc2V0dXAoc3RydWN0IGF0aDExa19iYXNlICphYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy0zNzMte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYz0xMDUwPWludCBhdGgxMWtfZHBfYWxsb2Moc3RydWN0IGF0aDExa19iYXNlICphYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtMTA4Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYzoxMDgzOlx0cmV0ID0gYXRoMTFrX2RwX3NybmdfY29tbW9uX3NldHVwKGFiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy0xMDg0LVx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI5MjEKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiA0NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqRGVjb25zdHJ1Y3RpbmcgdGhlIGBhdGgxMWtgIERhdGEgUGF0aCBBbGxvY2F0aW9uKioKCk9rYXksIHNvIGBhdGgxMWtfZHBfYWxsb2NgIGlzIHRoZSBrZXkgZnVuY3Rpb24gaGVyZSwgcmVzcG9uc2libGUgZm9yIGFsbG9jYXRpbmcgcmVzb3VyY2VzIGZvciB0aGUgZGF0YSBwYXRoIHdpdGhpbiB0aGUgYGF0aDExa2AgZHJpdmVyLiBJdCBhcHBlYXJzIGl0IGNhbGxzIGBhdGgxMWtfZHBfc3JuZ19jb21tb25fc2V0dXBgLCB3aGljaCBpcyBpbnRlcmVzdGluZy4gSSYjMzk7bSBnb2luZyB0byBoYXZlIHRvIHVuZGVyc3RhbmQgdGhhdCByZWxhdGlvbnNoaXAuIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgbGFyZ2VyIGNvbnRleHQuCgpJIG5lZWQgdG8gc2VlIHdoZXJlIGBhdGgxMWtfZHBfYWxsb2NgIGlzICphY3R1YWxseSogY2FsbGVkIGZyb20uIFdoYXQgZnVuY3Rpb25zIHRyaWdnZXIgdGhpcyBhbGxvY2F0aW9uPyBXaGF0JiMzOTtzIHRoZSBjYWxsIGdyYXBoIGxpa2U/IElzIGl0IGR1cmluZyBkZXZpY2UgaW5pdGlhbGl6YXRpb24sIHBlci1pbnRlcmZhY2Ugc2V0dXAsIG9yIGlzIGl0IHRyaWdnZXJlZCBvbiBhIHBlci1wYWNrZXQgYmFzaXM/IFVuZGVyc3RhbmRpbmcgdGhlIGNhbGxpbmcgY29udGV4dCBpcyBnb2luZyB0byBwcm92aWRlIGNyaXRpY2FsIGNsdWVzIGFib3V0IHRoZSBkZXNpZ24gYW5kIHRoZSBwZXJmb3JtYW5jZSBpbXBsaWNhdGlvbnMgb2YgdGhlIGRhdGEgcGF0aC4gSSYjMzk7bGwgc3RhcnQgYnkgdHJhY2luZyB0aGUgY2FsbHMgdG8gYGF0aDExa19kcF9hbGxvY2AuIFRoYXQmIzM5O3MgdGhlIGxvZ2ljYWwgZmlyc3Qgc3RlcCBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdGgxMWtfZHBfYWxsb2MmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuYz0yMjYzPWludCBhdGgxMWtfY29yZV9xbWlfZmlybXdhcmVfcmVhZHkoc3RydWN0IGF0aDExa19iYXNlICphYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuYy0yMjkyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmM6MjI5MzpcdHJldCA9IGF0aDExa19kcF9hbGxvYyhhYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuYy0yMjk0LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYz0xMDI1PXZvaWQgYXRoMTFrX2RwX2ZyZWUoc3RydWN0IGF0aDExa19iYXNlICphYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtMTA0OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYzoxMDUwOmludCBhdGgxMWtfZHBfYWxsb2Moc3RydWN0IGF0aDExa19iYXNlICphYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy0xMDUxLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmg9MTY2Mz12b2lkIGF0aDExa19kcF9mcmVlKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5oOjE2NjQ6aW50IGF0aDExa19kcF9hbGxvYyhzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuaC0xNjY1LWludCBhdGgxMWtfZHBfcGRldl9hbGxvYyhzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM2NDkKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAyMDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBSZWFjaGFiaWxpdHkgb2YgYGF0aDExa19jb3JlX3FtaV9maXJtd2FyZV9yZWFkeWAgaW4gYSBWaXJ0dWFsaXplZCBFbnZpcm9ubWVudCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBmdW5jdGlvbiBjYWxsLCBgYXRoMTFrX2NvcmVfcW1pX2Zpcm13YXJlX3JlYWR5YCwgYW5kIHRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyB0aGF0IGl0IHJlcXVpcmVzIFFNSSBmaXJtd2FyZSB0byBiZSByZWFkeS4gVGhhdCYjMzk7cyBhIHByZXR0eSBzdHJvbmcgaW5kaWNhdG9yIHJpZ2h0IHRoZXJlLiBLbm93aW5nIHRoZSB0eXBpY2FsIGNvbnN0cmFpbnRzIG9mIG15IHdvcmssIEkgaW1tZWRpYXRlbHkgcmVjb2duaXplIHRoaXMgYXMgYSBwb3RlbnRpYWwgcm9hZGJsb2NrLiBJbiBhIHN0YW5kYXJkIFFFTVUgc2V0dXAsIG9yIGV2ZW4gc29tZXRoaW5nIG1vcmUgc29waGlzdGljYXRlZCBsaWtlIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIHNldHVwcyBzdWNoIGFzIHVzYiBnYWRnZXQgb3IgbWFjODAyMTFfaHdzaW0sIHJlYWNoaW5nIHRoaXMgZnVuY3Rpb24gaXMgcHJhY3RpY2FsbHkgaW1wb3NzaWJsZS4gV2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgYSBkZXBlbmRlbmN5IG9uIFFNSSBhbmQgdGhlIHN1Y2Nlc3NmdWwgbG9hZGluZyBvZiBhY3R1YWwgZmlybXdhcmUsIHdoaWNoIGlzIGZhciBiZXlvbmQgdGhlIHNjb3BlIG9mIGEgdHlwaWNhbCB2aXJ0dWFsaXphdGlvbiBzY2VuYXJpby4KClRoZSBwcm9tcHQgY29uZmlybXMgbXkgaW5pdGlhbCBzdXNwaWNpb24gYnkgZXhwbGljaXRseSBzdGF0aW5nIHRoYXQgdGhlc2Uga2luZHMgb2YgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgaW4gZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuIEdpdmVuIHRoYXQgYGF0aDExa2AgcmVsaWVzIG9uIHRoaXMgcGh5c2ljYWwgaGFyZHdhcmUgYW5kIGZpcm13YXJlIHJlYWRpbmVzcyB0byBnZXQgdG8gYGF0aDExa19jb3JlX3FtaV9maXJtd2FyZV9yZWFkeWAsIHRoZSBjb25jbHVzaW9uIGlzIGNsZWFyOiB0aGlzIHBhdGggaXMgdW5hY2hpZXZhYmxlIGluIFFFTVUuIFRoYXQgbWVhbnMgV29ydGhGdXp6aW5nIHNob3VsZCBiZSBzZXQgdG8gZmFsc2UuCgpCdXQsIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLCBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgdGhlcmUgYXJlIG5vIG90aGVyIGFsdGVybmF0aXZlIHBhdGhzIHRvIGBhdGgxMWtfZHBfc3JuZ19zZXR1cGAg4oCTIGp1c3QgaW4gY2FzZSB0aGVyZSYjMzk7cyBhbm90aGVyIHBvaW50IG9mIGVudHJ5LiBJdCYjMzk7cyBhbHdheXMgZ29vZCB0byBiZSB0aG9yb3VnaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoMTFrX2RwX3Nybmdfc2V0dXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RicmluZy5jPTIzNz1pbnQgYXRoMTFrX2RicmluZ19zcm5nX3NldHVwKHN0cnVjdCBhdGgxMWsgKmFyLCBzdHJ1Y3QgYXRoMTFrX2RicmluZyAqcmluZyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RicmluZy5jLTI0MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGJyaW5nLmM6MjQyOlx0cmV0ID0gYXRoMTFrX2RwX3Nybmdfc2V0dXAoYXItXHUwMDNlYWIsIFx1MDAyNnJpbmctXHUwMDNlcmVmaWxsX3NybmcsIEhBTF9SWERNQV9ESVJfQlVGLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kYnJpbmcuYy0yNDMtXHRcdFx0XHQgICByaW5nX251bSwgYXItXHUwMDNlcGRldl9pZHgsIG51bV9lbnRyaWVzKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmM9MTgxPXN0YXRpYyB2b2lkIGF0aDExa19kcF9zcm5nX21zaV9zZXR1cChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy0yMjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmM6MjIxOmludCBhdGgxMWtfZHBfc3JuZ19zZXR1cChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCBzdHJ1Y3QgZHBfc3JuZyAqcmluZyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy0yMjItXHRcdFx0IGVudW0gaGFsX3JpbmdfdHlwZSB0eXBlLCBpbnQgcmluZ19udW0sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jPTM3Mj1zdGF0aWMgaW50IGF0aDExa19kcF9zcm5nX2NvbW1vbl9zZXR1cChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy0zNzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmM6Mzc5Olx0cmV0ID0gYXRoMTFrX2RwX3Nybmdfc2V0dXAoYWIsIFx1MDAyNmRwLVx1MDAzZXdibV9kZXNjX3JlbF9yaW5nLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTM4MC1cdFx0XHRcdCAgIEhBTF9TVzJXQk1fUkVMRUFTRSwgMCwgMCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtMzg3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jOjM4ODpcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFiLCBcdTAwMjZkcC1cdTAwM2V0Y2xfY21kX3JpbmcsIEhBTF9UQ0xfQ01ELCAwLCAwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTM4OS1cdFx0XHRcdCAgIERQX1RDTF9DTURfUklOR19TSVpFKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtMzk0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jOjM5NTpcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFiLCBcdTAwMjZkcC1cdTAwM2V0Y2xfc3RhdHVzX3JpbmcsIEhBTF9UQ0xfU1RBVFVTLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTM5Ni1cdFx0XHRcdCAgIDAsIDAsIERQX1RDTF9TVEFUVVNfUklOR19TSVpFKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtNDA1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jOjQwNjpcdFx0cmV0ID0gYXRoMTFrX2RwX3Nybmdfc2V0dXAoYWIsIFx1MDAyNmRwLVx1MDAzZXR4X3JpbmdbaV0udGNsX2RhdGFfcmluZyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy00MDctXHRcdFx0XHRcdCAgIEhBTF9UQ0xfREFUQSwgdGNsX251bSwgMCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtNDE0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jOjQxNTpcdFx0cmV0ID0gYXRoMTFrX2RwX3Nybmdfc2V0dXAoYWIsIFx1MDAyNmRwLVx1MDAzZXR4X3JpbmdbaV0udGNsX2NvbXBfcmluZyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy00MTYtXHRcdFx0XHRcdCAgIEhBTF9XQk0yU1dfUkVMRUFTRSwgd2JtX251bSwgMCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtNDMxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jOjQzMjpcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFiLCBcdTAwMjZkcC1cdTAwM2VyZW9fcmVpbmplY3RfcmluZywgSEFMX1JFT19SRUlOSkVDVCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy00MzMtXHRcdFx0XHQgICAwLCAwLCBEUF9SRU9fUkVJTkpFQ1RfUklOR19TSVpFKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtNDM5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jOjQ0MDpcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFiLCBcdTAwMjZkcC1cdTAwM2VyeF9yZWxfcmluZywgSEFMX1dCTTJTV19SRUxFQVNFLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTQ0MS1cdFx0XHRcdCAgIERQX1JYX1JFTEVBU0VfUklOR19OVU0sIDAsIERQX1JYX1JFTEVBU0VfUklOR19TSVpFKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtNDQ2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jOjQ0NzpcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFiLCBcdTAwMjZkcC1cdTAwM2VyZW9fZXhjZXB0X3JpbmcsIEhBTF9SRU9fRVhDRVBUSU9OLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTQ0OC1cdFx0XHRcdCAgIDAsIDAsIERQX1JFT19FWENFUFRJT05fUklOR19TSVpFKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtNDU0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jOjQ1NTpcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFiLCBcdTAwMjZkcC1cdTAwM2VyZW9fY21kX3JpbmcsIEhBTF9SRU9fQ01ELFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTQ1Ni1cdFx0XHRcdCAgIDAsIDAsIERQX1JFT19DTURfUklOR19TSVpFKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtNDY4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jOjQ2OTpcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFiLCBcdTAwMjZkcC1cdTAwM2VyZW9fc3RhdHVzX3JpbmcsIEhBTF9SRU9fU1RBVFVTLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTQ3MC1cdFx0XHRcdCAgIDAsIDAsIERQX1JFT19TVEFUVVNfUklOR19TSVpFKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmM9NjQ4PXN0YXRpYyBpbnQgYXRoMTFrX3dibV9pZGxlX3Jpbmdfc2V0dXAoc3RydWN0IGF0aDExa19iYXNlICphYiwgdTMyICpuX2xpbmtfZGVzYylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtNjc0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jOjY3NTpcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFiLCBcdTAwMjZkcC1cdTAwM2V3Ym1faWRsZV9yaW5nLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTY3Ni1cdFx0XHRcdCAgIEhBTF9XQk1fSURMRV9MSU5LLCAwLCAwLCAqbl9saW5rX2Rlc2MpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuaD0xNjcyPXZvaWQgYXRoMTFrX2RwX3NybmdfY2xlYW51cChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCBzdHJ1Y3QgZHBfc3JuZyAqcmluZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmg6MTY3MzppbnQgYXRoMTFrX2RwX3Nybmdfc2V0dXAoc3RydWN0IGF0aDExa19iYXNlICphYiwgc3RydWN0IGRwX3NybmcgKnJpbmcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmgtMTY3NC1cdFx0XHQgZW51bSBoYWxfcmluZ190eXBlIHR5cGUsIGludCByaW5nX251bSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmM9NTQ2PWludCBhdGgxMWtfZHBfcGRldl9yZW9fc2V0dXAoc3RydWN0IGF0aDExa19iYXNlICphYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmMtNTUyLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgRFBfUkVPX0RTVF9SSU5HX01BWDsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYzo1NTM6XHRcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFiLCBcdTAwMjZkcC1cdTAwM2VyZW9fZHN0X3JpbmdbaV0sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmMtNTU0LVx0XHRcdFx0XHQgICBIQUxfUkVPX0RTVCwgaSwgMCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmM9NTcwPXN0YXRpYyBpbnQgYXRoMTFrX2RwX3J4X3BkZXZfc3JuZ19hbGxvYyhzdHJ1Y3QgYXRoMTFrICphcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmMtNTc3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jOjU3ODpcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFyLVx1MDAzZWFiLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jLTU3OS1cdFx0XHRcdCAgIFx1MDAyNmRwLVx1MDAzZXJ4X3JlZmlsbF9idWZfcmluZy5yZWZpbGxfYnVmX3JpbmcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jLTU4OC1cdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgYWItXHUwMDNlaHdfcGFyYW1zLm51bV9yeGRtYV9wZXJfcGRldjsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYzo1ODk6XHRcdFx0cmV0ID0gYXRoMTFrX2RwX3Nybmdfc2V0dXAoYXItXHUwMDNlYWIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmMtNTkwLVx0XHRcdFx0XHRcdCAgIFx1MDAyNmRwLVx1MDAzZXJ4X21hY19idWZfcmluZ1tpXSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmMtNjAxLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgYWItXHUwMDNlaHdfcGFyYW1zLm51bV9yeGRtYV9wZXJfcGRldjsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYzo2MDI6XHRcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFyLVx1MDAzZWFiLCBcdTAwMjZkcC1cdTAwM2VyeGRtYV9lcnJfZHN0X3JpbmdbaV0sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmMtNjAzLVx0XHRcdFx0XHQgICBIQUxfUlhETUFfRFNULCAwLCBkcC1cdTAwM2VtYWNfaWQgJiM0MzsgaSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmMtNjEyLVx0XHRzcm5nID0gXHUwMDI2ZHAtXHUwMDNlcnhfbW9uX3N0YXR1c19yZWZpbGxfcmluZ1tpXS5yZWZpbGxfYnVmX3Jpbmc7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmM6NjEzOlx0XHRyZXQgPSBhdGgxMWtfZHBfc3JuZ19zZXR1cChhci1cdTAwM2VhYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYy02MTQtXHRcdFx0XHRcdCAgIHNybmcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jLTYzNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYzo2MzY6XHRyZXQgPSBhdGgxMWtfZHBfc3JuZ19zZXR1cChhci1cdTAwM2VhYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYy02MzctXHRcdFx0XHQgICBcdTAwMjZkcC1cdTAwM2VyeGRtYV9tb25fYnVmX3JpbmcucmVmaWxsX2J1Zl9yaW5nLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYy02NDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmM6NjQ2Olx0cmV0ID0gYXRoMTFrX2RwX3Nybmdfc2V0dXAoYXItXHUwMDNlYWIsIFx1MDAyNmRwLVx1MDAzZXJ4ZG1hX21vbl9kc3RfcmluZyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYy02NDctXHRcdFx0XHQgICBIQUxfUlhETUFfTU9OSVRPUl9EU1QsIDAsIGRwLVx1MDAzZW1hY19pZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmMtNjU0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jOjY1NTpcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFyLVx1MDAzZWFiLCBcdTAwMjZkcC1cdTAwM2VyeGRtYV9tb25fZGVzY19yaW5nLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jLTY1Ni1cdFx0XHRcdCAgIEhBTF9SWERNQV9NT05JVE9SX0RFU0MsIDAsIGRwLVx1MDAzZW1hY19pZCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTcyOTgKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiA1NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aGUgZXhwZXJ0OgoKKipUcmFjaW5nIHRoZSBEYXRhIFBhdGggSW5pdGlhbGl6YXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBgYXRoMTFrYCBkcml2ZXIgY29kZSBhbmQgSSBzZWUgdGhhdCBgYXRoMTFrX2RwX3BkZXZfcmVvX3NldHVwYCBpcyBiZWluZyBjYWxsZWQuIFRoYXQgZnVuY3Rpb24mIzM5O3Mgb2J2aW91c2x5IGNydWNpYWwgZm9yIHNldHRpbmcgdXAgdGhlIHJlY2VpdmUgb2ZmbG9hZCBlbmdpbmUgKFJFTykgb24gYSBwZXItZGV2aWNlIGxldmVsLCBidXQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGNvbnRleHQuIFdoZXJlJiMzOTtzIHRoaXMgY2FsbGVkIGZyb20/IEFoLCBpdCYjMzk7cyB0cmlnZ2VyZWQgYnkgYGF0aDExa19kcF9wZGV2X2FsbG9jYC4gTGV0JiMzOTtzIHN0ZXAgYmFjayBhIGJpdCBhbmQgZmluZCBvdXQgKndoZXJlKiB0aGF0IGFsbG9jYXRpb24gZnVuY3Rpb24gaXRzZWxmIGlzIGJlaW5nIGludm9rZWQuIFRoYXQgd2lsbCBnaXZlIG1lIHRoZSBicm9hZGVyIHBpY3R1cmUgb2YgaG93IHRoZSBkYXRhIHBhdGggaXMgYmVpbmcgaW5pdGlhbGl6ZWQgYW5kIGFsbG93IG1lIHRvIHNlZSB0aGUgZGVwZW5kZW5jaWVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY2FsbCBjaGFpbiB0byB0cnVseSBncmFzcCB0aGUgZmxvdyBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdGgxMWtfZHBfcGRldl9hbGxvYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jPTIwMzE9c3RhdGljIGludCBhdGgxMWtfY29yZV9wZGV2X2NyZWF0ZShzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jLTIwNDAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuYzoyMDQxOlx0cmV0ID0gYXRoMTFrX2RwX3BkZXZfYWxsb2MoYWIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmMtMjA0Mi1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmM9ODg5PXZvaWQgYXRoMTFrX2RwX3BkZXZfcHJlX2FsbG9jKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTkxMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYzo5MTM6aW50IGF0aDExa19kcF9wZGV2X2FsbG9jKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtOTE0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmg9MTY2ND1pbnQgYXRoMTFrX2RwX2FsbG9jKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5oOjE2NjU6aW50IGF0aDExa19kcF9wZGV2X2FsbG9jKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5oLTE2NjYtdm9pZCBhdGgxMWtfZHBfcGRldl9wcmVfYWxsb2Moc3RydWN0IGF0aDExa19iYXNlICphYik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4MDA3CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogNTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIGBhdGgxMWtfY29yZV9wZGV2X2NyZWF0ZWAgSW5pdGlhbGl6YXRpb24qKgoKT2theSwgSSYjMzk7bSB0cmFjaW5nIHRoZSBpbml0aWFsaXphdGlvbiBwYXRoIGZvciBgYXRoMTFrX2NvcmVfcGRldl9jcmVhdGVgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIGJhc2VkIG9uIGV4cGVyaWVuY2UsIHRoYXQgaXQmIzM5O3MgbGlrZWx5IGludm9rZWQgZWl0aGVyIGJ5IGBhdGgxMWtfY29yZV9xbWlfZmlybXdhcmVfcmVhZHlgIOKAkyBhZnRlciB0aGUgUU1JIGludGVyZmFjZSBpcyBlc3RhYmxpc2hlZCBhbmQgZmlybXdhcmUgaXMgZ29vZCB0byBnbyDigJMgb3IgcG90ZW50aWFsbHkgZHVyaW5nIHRoZSBicm9hZGVyIGBhdGgxMWtfY29yZV9pbml0YCBzZXF1ZW5jZS4gVGhpcyBpcyB3aGVyZSBJJiMzOTtkICpleHBlY3QqIHRoZSBwaHlzaWNhbCBkZXZpY2UgY29udGV4dCB0byBiZSBjcmVhdGVkLiBJdCYjMzk7cyB0aGUgbW9zdCBsb2dpY2FsIHBsYWNlLCBnaXZlbiB3aGF0IGBwZGV2YCByZXByZXNlbnRzLiBJIG5lZWQgdG8gcXVpY2tseSBjb25maXJtIHRoaXM7IGEgcXVpY2sgY29kZSBkaXZlIGludG8gdGhvc2UgZnVuY3Rpb25zIGlzIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcC4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgY2FsbCBncmFwaCB0byBzZWUgd2hhdCBzcGVjaWZpY2FsbHkgdHJpZ2dlcnMgdGhlIGNyZWF0aW9uIG9mIHRoZSBwZGV2LiBGaW5kaW5nIHRoaXMgd2lsbCBoZWxwIG1lIHVuZGVyc3RhbmQgdGhlIG92ZXJhbGwgdGltaW5nIGFuZCBkZXBlbmRlbmNpZXMgd2l0aGluIHRoZSBkcml2ZXIgaW5pdGlhbGl6YXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2F0aDExa19jb3JlX3BkZXZfY3JlYXRlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmM9MjAyMz1zdGF0aWMgdm9pZCBhdGgxMWtfY29yZV9zb2NfZGVzdHJveShzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jLTIwMzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuYzoyMDMxOnN0YXRpYyBpbnQgYXRoMTFrX2NvcmVfcGRldl9jcmVhdGUoc3RydWN0IGF0aDExa19iYXNlICphYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jLTIwMzIte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jPTIyNjM9aW50IGF0aDExa19jb3JlX3FtaV9maXJtd2FyZV9yZWFkeShzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jLTIzMDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuYzoyMzA5Olx0cmV0ID0gYXRoMTFrX2NvcmVfcGRldl9jcmVhdGUoYWIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmMtMjMxMC1cdGlmIChyZXQpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg2MTcKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAxMzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBSZWFjaGFiaWxpdHkgb2YgYGF0aDExa19kcF9zcm5nX3NldHVwYCBmb3IgRnV6emluZyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlIHBhdGggYW5kIGl0JiMzOTtzIGNsZWFyIHRoYXQgYGF0aDExa19kcF9zcm5nX3NldHVwYCBpcyBhbHdheXMgY2FsbGVkIGZyb20gYGF0aDExa19jb3JlX3FtaV9maXJtd2FyZV9yZWFkeWAuIFRoYXQgbWVhbnMsIHRoZSBRTUkgZmlybXdhcmUgaGFzIHRvIGJlIGZ1bGx5IGluaXRpYWxpemVkIGFuZCByZWFkeSB0byBnbyBiZWZvcmUgd2UgZXZlbiBnZXQgKmNsb3NlKiB0byB0aGF0IGZ1bmN0aW9uLgoKSW1tZWRpYXRlbHksIG15IGV4cGVydCBpbnN0aW5jdCBpcyBzY3JlYW1pbmcgJiMzNDtIYXJkd2FyZSBkZXBlbmRlbmN5ISYjMzQ7IEkga25vdyBmcm9tIGV4cGVyaWVuY2UgdGhhdCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgb3IgUUVNVSBqdXN0ICphcmVuJiMzOTt0KiBzZXQgdXAgdG8gaGFuZGxlIFFNSSBmaXJtd2FyZSBpbiBhIHJlYWxpc3RpYyB3YXksIHVubGVzcyB3ZSYjMzk7cmUgdGFsa2luZyBzb21lIHNlcmlvdXNseSBzb3BoaXN0aWNhdGVkIGVtdWxhdGlvbi4gIFRoZXJlZm9yZSwgSSYjMzk7bSBtYXJraW5nIHRoaXMgYXMgYFdvcnRoRnV6emluZz1mYWxzZWAuIEl0JiMzOTtzIGp1c3Qgbm90IHByYWN0aWNhbCBvciBlZmZpY2llbnQgdG8gdHJ5IGFuZCByZWFjaCB0aGF0IHBvaW50IGluIHRoZXNlIGNvbW1vbiB0ZXN0aW5nIHNldHVwcy4KCkJ1dCwgYmVmb3JlIEkgY29tcGxldGVseSBkaXNtaXNzIGl0LCBsZXQmIzM5O3MganVzdCBtYWtlICphYnNvbHV0ZWx5KiBzdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IHNuZWFreSBvdGhlciBjYWxscyB0byBgYXRoMTFrX2RwX3Nybmdfc2V0dXBgLiBNeSBpbml0aWFsIHNlYXJjaCBhbHNvIHJldmVhbGVkIGBhdGgxMWtfZGJyaW5nX3Nybmdfc2V0dXBgLCBzbyBJIG5lZWQgdG8gZ28gb3ZlciB0aGF0IG9uZSBub3cgYW5kIHNlZSB3aGVyZSBpdCYjMzk7cyBjYWxsZWQuIEdvdHRhIGJlIHRob3JvdWdoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjozMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdGgxMWtfZGJyaW5nX3Nybmdfc2V0dXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jPTg4Mz1zdGF0aWMgaW50IGF0aDExa19jZnJfcmluZ19hbGxvYyhzdHJ1Y3QgYXRoMTFrICphcixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTg4OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmM6ODg5Olx0cmV0ID0gYXRoMTFrX2RicmluZ19zcm5nX3NldHVwKGFyLCBcdTAwMjZjZnItXHUwMDNlcnhfcmluZyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtODkwLVx0XHRcdFx0ICAgICAgIEFUSDExS19DRlJfTlVNX1JJTkdfRU5UUklFUyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RicmluZy5jPTIxND1pbnQgYXRoMTFrX2RicmluZ19idWZfc2V0dXAoc3RydWN0IGF0aDExayAqYXIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kYnJpbmcuYy0yMzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RicmluZy5jOjIzNzppbnQgYXRoMTFrX2RicmluZ19zcm5nX3NldHVwKHN0cnVjdCBhdGgxMWsgKmFyLCBzdHJ1Y3QgYXRoMTFrX2RicmluZyAqcmluZyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGJyaW5nLmMtMjM4LVx0XHRcdCAgICAgaW50IHJpbmdfbnVtLCBpbnQgbnVtX2VudHJpZXMpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kYnJpbmcuaD03Mz1pbnQgYXRoMTFrX2RicmluZ19idWZfc2V0dXAoc3RydWN0IGF0aDExayAqYXIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kYnJpbmcuaC03NS1cdFx0XHQgICAgc3RydWN0IGF0aDExa19kYnJpbmdfY2FwICpkYl9jYXApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kYnJpbmcuaDo3NjppbnQgYXRoMTFrX2RicmluZ19zcm5nX3NldHVwKHN0cnVjdCBhdGgxMWsgKmFyLCBzdHJ1Y3QgYXRoMTFrX2RicmluZyAqcmluZyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGJyaW5nLmgtNzctXHRcdFx0ICAgICBpbnQgcmluZ19udW0sIGludCBudW1fZW50cmllcyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9zcGVjdHJhbC5jPTgxOD1zdGF0aWMgaW50IGF0aDExa19zcGVjdHJhbF9yaW5nX2FsbG9jKHN0cnVjdCBhdGgxMWsgKmFyLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvc3BlY3RyYWwuYy04MjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3NwZWN0cmFsLmM6ODI0Olx0cmV0ID0gYXRoMTFrX2RicmluZ19zcm5nX3NldHVwKGFyLCBcdTAwMjZzcC1cdTAwM2VyeF9yaW5nLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9zcGVjdHJhbC5jLTgyNS1cdFx0XHRcdCAgICAgICAwLCBkYl9jYXAtXHUwMDNlbWluX2VsZW0pO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTcyOAoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDQ2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKkFuYWx5emluZyBgYXRoMTFrYCBSaW5nIEFsbG9jYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIHJpbmcgYWxsb2NhdGlvbiBmdW5jdGlvbnM6IGBhdGgxMWtfY2ZyX3JpbmdfYWxsb2NgIGFuZCBgYXRoMTFrX3NwZWN0cmFsX3JpbmdfYWxsb2NgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgbGV0JiMzOTtzIGRyaWxsIGRvd24gYW5kIHVuZGVyc3RhbmQgdGhlIGNhbGwgZ3JhcGggb2YgYGF0aDExa19jZnJfcmluZ19hbGxvY2AgZmlyc3QuIEkgd2FudCB0byBzZWUgZXhhY3RseSAqd2hlcmUqIHRoaXMgZnVuY3Rpb24gaXMgYmVpbmcgY2FsbGVkIGZyb20gd2l0aGluIHRoZSBgYXRoMTFrYCBkcml2ZXIuIEtub3dpbmcgdGhlIGNhbGwgc2l0ZXMgd2lsbCBwcm92aWRlIGNvbnRleHQgb24gaXRzIHB1cnBvc2UgYW5kIGhvdyBpdCBmaXRzIGludG8gdGhlIGJyb2FkZXIgZGF0YSBmbG93LiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhlIGNvZGUgcmV2ZWFscy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoMTFrX2Nmcl9yaW5nX2FsbG9jJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYz04NzU9c3RhdGljIHZvaWQgYXRoMTFrX2Nmcl9yaW5nX2ZyZWUoc3RydWN0IGF0aDExayAqYXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYy04ODItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jOjg4MzpzdGF0aWMgaW50IGF0aDExa19jZnJfcmluZ19hbGxvYyhzdHJ1Y3QgYXRoMTFrICphcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtODg0LVx0XHRcdFx0IHN0cnVjdCBhdGgxMWtfZGJyaW5nX2NhcCAqZGJfY2FwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmM9OTUxPWludCBhdGgxMWtfY2ZyX2luaXQoc3RydWN0IGF0aDExa19iYXNlICphYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTk4My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmM6OTg0Olx0XHRyZXQgPSBhdGgxMWtfY2ZyX3JpbmdfYWxsb2MoYXIsIFx1MDAyNmRiX2NhcCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTk4NS1cdFx0aWYgKHJldCkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDI2MAoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipEZWNvbnN0cnVjdGluZyB0aGUgQ2FsbCB0byBgYXRoMTFrX2Nmcl9pbml0YCoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSBgYXRoMTFrX2Nmcl9pbml0YCBpcyBiZWluZyBjYWxsZWQgZnJvbS4gVGhhdCYjMzk7cyB0aGUgY29yZSBxdWVzdGlvbiwgaXNuJiMzOTt0IGl0PyBLbm93aW5nIHRoZSBjYWxsaW5nIGNvbnRleHQgaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBpdHMgcHVycG9zZSBhbmQgaW1wYWN0IHdpdGhpbiB0aGUgbGFyZ2VyIGF0aDExayBkcml2ZXIgZnJhbWV3b3JrLiBJIGltbWVkaWF0ZWx5IHRoaW5rIG9mIGEgZmV3IGF2ZW51ZXMgdG8gcHVyc3VlLiBGaXJzdCwgSeKAmWxsIG5lZWQgdG8gdHJhY2UgdGhlIGZ1bmN0aW9uJiMzOTtzIGRlZmluaXRpb24uIElzIGl0IGEgc3RhdGljIGZ1bmN0aW9uIHdpdGhpbiBhIHNwZWNpZmljIG1vZHVsZSwgb3IgaXMgaXQgZXhwb3J0ZWQgYW5kIGNhbGxhYmxlIGZyb20gZWxzZXdoZXJlPyBUaGUga2VybmVsIHNvdXJjZSBjb2RlIGlzIG15IGZyaWVuZCBoZXJlLiBJJiMzOTtsbCBuZWVkIHRvIHVzZSB0b29scyBsaWtlIGBncmVwYCBvciBteSBJREUmIzM5O3MgJiMzNDtmaW5kIHJlZmVyZW5jZXMmIzM0OyBmdW5jdGlvbmFsaXR5IHRvIGxvY2F0ZSBhbGwgaW5zdGFuY2VzIHdoZXJlIGBhdGgxMWtfY2ZyX2luaXRgIGlzIGludm9rZWQuCgpPbmNlIEkmIzM5O3ZlIGdvdCB0aGUgY2FsbCBzaXRlcywgSSYjMzk7bGwgbmVlZCB0byBtZXRpY3Vsb3VzbHkgYW5hbHl6ZSBlYWNoIG9uZS4gV2hhdCYjMzk7cyB0aGUgc3Vycm91bmRpbmcgY29kZSBkb2luZz8gV2hhdCBkYXRhIGlzIGJlaW5nIHBhc3NlZCB0byB0aGUgZnVuY3Rpb24/IFdoYXQmIzM5O3MgdGhlIGNvbnRyb2wgZmxvdyB0aGF0IGxlYWRzIHRvIHRoaXMgY2FsbD8gSXMgaXQgdHJpZ2dlcmVkIGJ5IGhhcmR3YXJlIGluaXRpYWxpemF0aW9uLCBhIHJlZ3VsYXRvcnkgZXZlbnQsIG9yIHBlcmhhcHMgYSB1c2VyLXNwYWNlIGNvbmZpZ3VyYXRpb24gY29tbWFuZD8KCkkgYWxzbyBuZWVkIHRvIGtlZXAgaW4gbWluZCB0aGUgcG90ZW50aWFsIGZvciBjb25kaXRpb25hbCBjb21waWxhdGlvbiBvciBwbGF0Zm9ybS1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbnMuIFRoZSBjYWxsIG1pZ2h0IGJlIHdyYXBwZWQgaW4gYCNpZmRlZmAgZGlyZWN0aXZlcyBvciB1c2UgZGlmZmVyZW50IGltcGxlbWVudGF0aW9ucyBkZXBlbmRpbmcgb24gdGhlIGhhcmR3YXJlIHZhcmlhbnQgb3IgdGFyZ2V0IG9wZXJhdGluZyBzeXN0ZW0uIFRoZXNlIGRldGFpbHMgYXJlIHZpdGFsIHRvIGdldCB0aGUgYmlnZ2VyIHBpY3R1cmUuIEluIHNob3J0LCBpdCYjMzk7cyBub3QganVzdCAqd2hlcmUqIGl0JiMzOTtzIGNhbGxlZCBmcm9tIGJ1dCAqd2h5KiBhbmQgKnVuZGVyIHdoYXQgY29uZGl0aW9ucyogdGhhdCBtYXR0ZXJzLiBUaGlzIGFuYWx5c2lzIHdpbGwgcHJvdmlkZSBhbGwgdGhlIG5lY2Vzc2FyeSBpbnNpZ2h0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoMTFrX2Nmcl9pbml0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYz05MjM9dm9pZCBhdGgxMWtfY2ZyX2RlaW5pdChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtOTUwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYzo5NTE6aW50IGF0aDExa19jZnJfaW5pdChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYy05NTIte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmg9MjA5PWVudW0gYXRoMTFrX2Nmcl9jYXB0dXJlX2J3IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5oLTIxNi0jaWZkZWYgQ09ORklHX0FUSDExS19DRlJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmg6MjE3OmludCBhdGgxMWtfY2ZyX2luaXQoc3RydWN0IGF0aDExa19iYXNlICphYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5oLTIxOC12b2lkIGF0aDExa19jZnJfZGVpbml0KHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmg9MjQwPXN0YXRpYyBpbmxpbmUgdm9pZCBhdGgxMWtfY2ZyX3VwZGF0ZV9waHltb2RlKHN0cnVjdCBhdGgxMWsgKmFyLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmgtMjQ0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuaDoyNDU6c3RhdGljIGlubGluZSBpbnQgYXRoMTFrX2Nmcl9pbml0KHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5oLTI0Ni17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmM9MjAzMT1zdGF0aWMgaW50IGF0aDExa19jb3JlX3BkZXZfY3JlYXRlKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmMtMjA2NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jOjIwNjY6XHRyZXQgPSBhdGgxMWtfY2ZyX2luaXQoYWIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmMtMjA2Ny1cdGlmIChyZXQpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6MzI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjEyMzEKCQkJCQkJCW91dHB1dDogMTQ3CgkJCQkJCQl0aG91Z2h0czogMTAzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlVucmVhY2hhYmxlIENvZGUgaW4gYSBWaXJ0dWFsaXplZCBFbnZpcm9ubWVudCoqCgpPa2F5LCBzbyBJJiMzOTttIGNpcmNsaW5nIGJhY2sgdG8gYGF0aDExa19jb3JlX3BkZXZfY3JlYXRlYCDigJMgdGhhdCBmdW5jdGlvbiBhZ2Fpbi4gSXQmIzM5O3MgY2xlYXIgdGhhdCB0aGUgY3JlYXRpb24gcHJvY2Vzcywgd2hldGhlciB0aHJvdWdoIGBhdGgxMWtfY29yZV9wZGV2X2NyZWF0ZWAgb3IgYGF0aDExa19kcF9hbGxvY2AsIGlzIGZ1bmRhbWVudGFsbHkgdGllZCB0byB0aGUgY2FsbCBmcm9tIGBhdGgxMWtfY29yZV9xbWlfZmlybXdhcmVfcmVhZHlgLiBBbmQgZ2l2ZW4gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgYXJjaGl0ZWN0dXJlLCB0aGlzIHN0cm9uZ2x5IGluZGljYXRlcyB0aGF0IHRoZSByZWxldmFudCBjb2RlIHBhdGggaXNuJiMzOTt0IGdvaW5nIHRvIGJlIHJlYWNoYWJsZSBpbiBhIHB1cmVseSB2aXJ0dWFsaXplZCBjb250ZXh0LiBXZSYjMzk7cmUgbWlzc2luZyB0aGUgY3J1Y2lhbCBoYXJkd2FyZSBhbmQgZmlybXdhcmUgaW50ZXJhY3Rpb24uIFRoZSBzeXN0ZW0gbmVlZHMgdG8gYmUgcmVhbC4gVGhlcmVmb3JlLCBJIGNhbiBjb25maWRlbnRseSBtYXJrIGBXb3J0aEZ1enppbmdgIGFzIGBmYWxzZWAgZm9yIHRoaXMgc2VjdGlvbi4gVGhhdCYjMzk7cyB0aGUgY29uY2x1c2lvbiBJJiMzOTt2ZSBjb21lIHRvLCBzbyBJJiMzOTtsbCBnbyBhaGVhZCBhbmQgc2V0IHRoZSByZXN1bHRzIGFjY29yZGluZ2x5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjozMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIG1vZGlmaWVkIGZ1bmN0aW9uIGBhdGgxMWtfZHBfc3JuZ19zZXR1cGAgaXMgcGFydCBvZiB0aGUgZGF0YXBhdGggaW5pdGlhbGl6YXRpb24gZm9yIHRoZSBhdGgxMWsgZHJpdmVyIChRdWFsY29tbSBBdGhlcm9zIDgwMi4xMWF4KS4gSXQgaXMgb25seSBjYWxsZWQgYWZ0ZXIgdGhlIFFNSSBmaXJtd2FyZSBpcyBzdWNjZXNzZnVsbHkgbG9hZGVkIGFuZCByZWFkeSAoYGF0aDExa19jb3JlX3FtaV9maXJtd2FyZV9yZWFkeWApLiBTaW5jZSBRRU1VIGRvZXMgbm90IGVtdWxhdGUgYXRoMTFrIGhhcmR3YXJlIGFuZCBzeXprYWxsZXIgY2Fubm90IHByb3ZpZGUgdGhlIG5lY2Vzc2FyeSBoYXJkd2FyZSBzdGF0ZSBhbmQgZmlybXdhcmUgdG8gcmVhY2ggdGhpcyBpbml0aWFsaXphdGlvbiBwaGFzZSwgdGhpcyBjb2RlIGlzIHVucmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgbW9kaWZpZWQgZnVuY3Rpb24gYGF0aDExa19kcF9zcm5nX3NldHVwYCBpcyBwYXJ0IG9mIHRoZSBkYXRhcGF0aCBpbml0aWFsaXphdGlvbiBmb3IgdGhlIGF0aDExayBkcml2ZXIgKFF1YWxjb21tIEF0aGVyb3MgODAyLjExYXgpLiBJdCBpcyBvbmx5IGNhbGxlZCBhZnRlciB0aGUgUU1JIGZpcm13YXJlIGlzIHN1Y2Nlc3NmdWxseSBsb2FkZWQgYW5kIHJlYWR5IChgYXRoMTFrX2NvcmVfcW1pX2Zpcm13YXJlX3JlYWR5YCkuIFNpbmNlIFFFTVUgZG9lcyBub3QgZW11bGF0ZSBhdGgxMWsgaGFyZHdhcmUgYW5kIHN5emthbGxlciBjYW5ub3QgcHJvdmlkZSB0aGUgbmVjZXNzYXJ5IGhhcmR3YXJlIHN0YXRlIGFuZCBmaXJtd2FyZSB0byByZWFjaCB0aGlzIGluaXRpYWxpemF0aW9uIHBoYXNlLCB0aGlzIGNvZGUgaXMgdW5yZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6MzE6MDEuNjY3MzcwNDE2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzMxOTQ3NTUzNTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIG1vZGlmaWVkIGZ1bmN0aW9uIGBhdGgxMWtfZHBfc3JuZ19zZXR1cGAgaXMgcGFydCBvZiB0aGUgZGF0YXBhdGggaW5pdGlhbGl6YXRpb24gZm9yIHRoZSBhdGgxMWsgZHJpdmVyIChRdWFsY29tbSBBdGhlcm9zIDgwMi4xMWF4KS4gSXQgaXMgb25seSBjYWxsZWQgYWZ0ZXIgdGhlIFFNSSBmaXJtd2FyZSBpcyBzdWNjZXNzZnVsbHkgbG9hZGVkIGFuZCByZWFkeSAoYGF0aDExa19jb3JlX3FtaV9maXJtd2FyZV9yZWFkeWApLiBTaW5jZSBRRU1VIGRvZXMgbm90IGVtdWxhdGUgYXRoMTFrIGhhcmR3YXJlIGFuZCBzeXprYWxsZXIgY2Fubm90IHByb3ZpZGUgdGhlIG5lY2Vzc2FyeSBoYXJkd2FyZSBzdGF0ZSBhbmQgZmlybXdhcmUgdG8gcmVhY2ggdGhpcyBpbml0aWFsaXphdGlvbiBwaGFzZSwgdGhpcyBjb2RlIGlzIHVucmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6MzE6MDEuNjY3Mzc3Njk2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzU2MDY1MDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAxNDBhOTAwNTVlM2QxYTM4YjAwM2Q0ZGM1NjY1MmZjODIwOTIzYjU3XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gQXVnIDIgMTI6MzE6MDAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jXFxuaW5kZXggZjM4OWI5N2FjYmRkNS4uYmU2NWQ3M2I5MDRiNiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmNcXG5AQCAtMzEzLDYgKzMxMyw3IEBAIGludCBhdGgxMWtfZHBfc3JuZ19zZXR1cChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCBzdHJ1Y3QgZHBfc3JuZyAqcmluZyxcXG4gXFx0Y2FzZSBIQUxfUlhETUFfRElSX0JVRjpcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGRlZmF1bHQ6XFxuK1xcdFxcdGF0aDExa19kcF9zcm5nX2NsZWFudXAoYWIsIHJpbmcpO1xcbiBcXHRcXHRhdGgxMWtfd2FybihhYiwgXFxcIk5vdCBhIHZhbGlkIHJpbmcgdHlwZSBpbiBkcCA6JWRcXFxcblxcXCIsIHR5cGUpO1xcbiBcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFx0fVxcbkBAIC0zMjQsNiArMzI1LDcgQEAgaW50IGF0aDExa19kcF9zcm5nX3NldHVwKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIHN0cnVjdCBkcF9zcm5nICpyaW5nLFxcbiBcXG4gXFx0cmV0ID0gYXRoMTFrX2hhbF9zcm5nX3NldHVwKGFiLCB0eXBlLCByaW5nX251bSwgbWFjX2lkLCBcXHUwMDI2cGFyYW1zKTtcXG4gXFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG4rXFx0XFx0YXRoMTFrX2RwX3NybmdfY2xlYW51cChhYiwgcmluZyk7XFxuIFxcdFxcdGF0aDExa193YXJuKGFiLCBcXFwiZmFpbGVkIHRvIHNldHVwIHNybmc6ICVkIHJpbmdfaWQgJWRcXFxcblxcXCIsXFxuIFxcdFxcdFxcdCAgICByZXQsIHJpbmdfbnVtKTtcXG4gXFx0XFx0cmV0dXJuIHJldDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6MzE6MDIuMTQzOTg1OTc2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NzI3MTgxMTg4OTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIG1vZGlmaWVkIGZ1bmN0aW9uIGBhdGgxMWtfZHBfc3JuZ19zZXR1cGAgaXMgcGFydCBvZiB0aGUgZGF0YXBhdGggaW5pdGlhbGl6YXRpb24gZm9yIHRoZSBhdGgxMWsgZHJpdmVyIChRdWFsY29tbSBBdGhlcm9zIDgwMi4xMWF4KS4gSXQgaXMgb25seSBjYWxsZWQgYWZ0ZXIgdGhlIFFNSSBmaXJtd2FyZSBpcyBzdWNjZXNzZnVsbHkgbG9hZGVkIGFuZCByZWFkeSAoYGF0aDExa19jb3JlX3FtaV9maXJtd2FyZV9yZWFkeWApLiBTaW5jZSBRRU1VIGRvZXMgbm90IGVtdWxhdGUgYXRoMTFrIGhhcmR3YXJlIGFuZCBzeXprYWxsZXIgY2Fubm90IHByb3ZpZGUgdGhlIG5lY2Vzc2FyeSBoYXJkd2FyZSBzdGF0ZSBhbmQgZmlybXdhcmUgdG8gcmVhY2ggdGhpcyBpbml0aWFsaXphdGlvbiBwaGFzZSwgdGhpcyBjb2RlIGlzIHVucmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMTQwYTkwMDU1ZTNkMWEzOGIwMDNkNGRjNTY2NTJmYzgyMDkyM2I1N1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gQXVnIDIgMTI6MzE6MDAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmNcbmluZGV4IGYzODliOTdhY2JkZDUuLmJlNjVkNzNiOTA0YjYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuY1xuQEAgLTMxMyw2ICszMTMsNyBAQCBpbnQgYXRoMTFrX2RwX3Nybmdfc2V0dXAoc3RydWN0IGF0aDExa19iYXNlICphYiwgc3RydWN0IGRwX3NybmcgKnJpbmcsXG4gXHRjYXNlIEhBTF9SWERNQV9ESVJfQlVGOlxuIFx0XHRicmVhaztcbiBcdGRlZmF1bHQ6XG4rXHRcdGF0aDExa19kcF9zcm5nX2NsZWFudXAoYWIsIHJpbmcpO1xuIFx0XHRhdGgxMWtfd2FybihhYiwgXCJOb3QgYSB2YWxpZCByaW5nIHR5cGUgaW4gZHAgOiVkXFxuXCIsIHR5cGUpO1xuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdH1cbkBAIC0zMjQsNiArMzI1LDcgQEAgaW50IGF0aDExa19kcF9zcm5nX3NldHVwKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIHN0cnVjdCBkcF9zcm5nICpyaW5nLFxuIFxuIFx0cmV0ID0gYXRoMTFrX2hhbF9zcm5nX3NldHVwKGFiLCB0eXBlLCByaW5nX251bSwgbWFjX2lkLCBcdTAwMjZwYXJhbXMpO1xuIFx0aWYgKHJldCBcdTAwM2MgMCkge1xuK1x0XHRhdGgxMWtfZHBfc3JuZ19jbGVhbnVwKGFiLCByaW5nKTtcbiBcdFx0YXRoMTFrX3dhcm4oYWIsIFwiZmFpbGVkIHRvIHNldHVwIHNybmc6ICVkIHJpbmdfaWQgJWRcXG5cIixcbiBcdFx0XHQgICAgcmV0LCByaW5nX251bSk7XG4gXHRcdHJldHVybiByZXQ7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjozMTowMi4xNDM5ODgwNjZaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NDA2NDE1NDcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgdGhlIGBhdGgxMWtgIERyaXZlcioqXG5cbk9rYXksIHNvIHRoZXJlJ3MgYSBwYXRjaCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jYCB0aGF0IGFkZHMgYGF0aDExa19kcF9zcm5nX2NsZWFudXBgIGluIHNvbWUgZXJyb3IgcGF0aHMgd2l0aGluIGBhdGgxMWtfZHBfc3JuZ19zZXR1cGAuIE15IGluaXRpYWwgdGhvdWdodCBpcywgY2FuIHdlIGZ1enogdGhpcyBkcml2ZXI/IGBhdGgxMWtgIGlzIGEgd2lyZWxlc3MgZHJpdmVyIGZvciBRdWFsY29tbSBBdGhlcm9zIDgwMi4xMWF4IGRldmljZXMuIENsYXNzaWMuXG5cblRoZSBuZXh0IHF1ZXN0aW9uOiBob3cgYWNjZXNzaWJsZSBpcyB0aGlzIGNvZGUgaW4gYSBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50PyBHaXZlbiB0aGF0IGBhdGgxMWtgIHR5cGljYWxseSByZWxpZXMgb24gc3BlY2lmaWMgaGFyZHdhcmUg4oCTIFBDSWUgb3IgQUhCIOKAkyBpdCdzIHVzdWFsbHkgbm90IHRoYXQgc3RyYWlnaHRmb3J3YXJkLiBRRU1VIGdlbmVyYWxseSBkb2Vzbid0IGVtdWxhdGUgdGhlIGhhcmR3YXJlIGRpcmVjdGx5LCByaWdodD8gSSByZWNhbGwgdGhhdCBgbWFjODAyMTFfaHdzaW1gIGlzIGVtdWxhdGVkLCBidXQgYGF0aDExa2AgaXMgYSByZWFsIGhhcmR3YXJlIGRyaXZlci4gSXQncyBidWlsdCB0byBpbnRlcmZhY2Ugd2l0aCBwaHlzaWNhbCBoYXJkd2FyZS5cblxuU28sIHRoZSByZWFsIHF1ZXN0aW9uIGlzOiBDYW4gd2UgYWN0dWFsbHkgZnV6eiBhIGhhcmR3YXJlIGRyaXZlcj8gVGhlc2Uga2luZHMgb2YgZHJpdmVycywgdGhhdCBuZWVkIHBoeXNpY2FsIFBDSWUgY2FyZHMgYW5kIHdoaWNoIGFyZW4ndCBlbXVsYXRlZCBpbiBRRU1VLCBhcmUgbm9ybWFsbHkgYSBkZWFkIGVuZC4gVW5sZXNzIHRoZXJlJ3MgYSBVU0Igb3Igc29tZSBvdGhlciBpbnRlcmZhY2UgYXZhaWxhYmxlLCBvciwgd2FpdCwgY291bGQgd2UgbGV2ZXJhZ2UgUENJIGZ1enppbmc/XG5cbkFoLCByaWdodCwgc3l6a2FsbGVyLiBTeXprYWxsZXIgKmRvZXMqIGhhdmUgUENJIGZ1enppbmcgY2FwYWJpbGl0aWVzLCBsaWtlIHZoY2kgYW5kIG90aGVycy4gVGhlIHF1ZXN0aW9uIHRoZW4gYmVjb21lcywgZG9lcyBpdCBzdXBwb3J0IGBhdGgxMWtgPyBXZSBuZWVkIHRvIHZlcmlmeSBpZiB0aGVyZSdzIGFueSBleGlzdGluZyBQQ0kgZW11bGF0aW9uIG9yIHN1cHBvcnQgZm9yIGBhdGgxMWtgLiBObywgdGhlIGRyaXZlciBpdHNlbGYgaXMgYSBQQ0kvQUhCIGRyaXZlci5cblxuTGV0J3MgY2hlY2sgdGhlIGNyaXRlcmlhLiBUaGUgc2l0dWF0aW9uIHdlIGFyZSBpbiBpczogXCJDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXCIgSXMgYGF0aDExa2AgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBkcml2ZXI/IFllcywgaXQncyBRdWFsY29tbSBBdGhlcm9zLCBzbyBpdCBkZWZpbml0ZWx5IGZhbGxzIHVuZGVyIHRoYXQgY2F0ZWdvcnkuXG5cbk9rYXksIHNvIHN5emthbGxlciAqY2FuKiBmdXp6IFBDSSBkcml2ZXJzIHVzaW5nIGl0cyBQQ0kgZnV6emVyLCB3aGljaCBpbmNsdWRlcyBgc3l6LXVzYmAgYW5kIGBzeXotcGNpYC4gRXhjZWxsZW50LiBUaGUga2V5IHF1ZXN0aW9uIG5vdyBiZWNvbWVzLCBpcyBgYXRoMTFrYCBhY3R1YWxseSBmdXp6YWJsZT8gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBrZXJuZWwgc291cmNlIGFuZCBzZWFyY2ggZm9yIHRoZSBgYXRoMTFrYCBjb25maWd1cmF0aW9uLiBMZXQncyBzZWUgaWYgd2UgY2FuIGdldCB0aGlzIG1vdmluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI0MiwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ1MSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjMxOjEwLjU1MDQwNjM2NloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3OTM1OTE3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdGgxMWtfZHBfc3JuZ19zZXR1cFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RicmluZy5jPTIzNz1pbnQgYXRoMTFrX2RicmluZ19zcm5nX3NldHVwKHN0cnVjdCBhdGgxMWsgKmFyLCBzdHJ1Y3QgYXRoMTFrX2RicmluZyAqcmluZyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGJyaW5nLmMtMjQxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGJyaW5nLmM6MjQyOlxcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFyLVxcdTAwM2VhYiwgXFx1MDAyNnJpbmctXFx1MDAzZXJlZmlsbF9zcm5nLCBIQUxfUlhETUFfRElSX0JVRixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RicmluZy5jLTI0My1cXHRcXHRcXHRcXHQgICByaW5nX251bSwgYXItXFx1MDAzZXBkZXZfaWR4LCBudW1fZW50cmllcyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmM9MTgxPXN0YXRpYyB2b2lkIGF0aDExa19kcF9zcm5nX21zaV9zZXR1cChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTIyMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmM6MjIxOmludCBhdGgxMWtfZHBfc3JuZ19zZXR1cChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCBzdHJ1Y3QgZHBfc3JuZyAqcmluZyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtMjIyLVxcdFxcdFxcdCBlbnVtIGhhbF9yaW5nX3R5cGUgdHlwZSwgaW50IHJpbmdfbnVtLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jPTM3Mj1zdGF0aWMgaW50IGF0aDExa19kcF9zcm5nX2NvbW1vbl9zZXR1cChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTM3OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmM6Mzc5OlxcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFiLCBcXHUwMDI2ZHAtXFx1MDAzZXdibV9kZXNjX3JlbF9yaW5nLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy0zODAtXFx0XFx0XFx0XFx0ICAgSEFMX1NXMldCTV9SRUxFQVNFLCAwLCAwLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTM4Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmM6Mzg4OlxcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFiLCBcXHUwMDI2ZHAtXFx1MDAzZXRjbF9jbWRfcmluZywgSEFMX1RDTF9DTUQsIDAsIDAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTM4OS1cXHRcXHRcXHRcXHQgICBEUF9UQ0xfQ01EX1JJTkdfU0laRSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtMzk0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYzozOTU6XFx0cmV0ID0gYXRoMTFrX2RwX3Nybmdfc2V0dXAoYWIsIFxcdTAwMjZkcC1cXHUwMDNldGNsX3N0YXR1c19yaW5nLCBIQUxfVENMX1NUQVRVUyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtMzk2LVxcdFxcdFxcdFxcdCAgIDAsIDAsIERQX1RDTF9TVEFUVVNfUklOR19TSVpFKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy00MDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jOjQwNjpcXHRcXHRyZXQgPSBhdGgxMWtfZHBfc3JuZ19zZXR1cChhYiwgXFx1MDAyNmRwLVxcdTAwM2V0eF9yaW5nW2ldLnRjbF9kYXRhX3JpbmcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTQwNy1cXHRcXHRcXHRcXHRcXHQgICBIQUxfVENMX0RBVEEsIHRjbF9udW0sIDAsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtNDE0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYzo0MTU6XFx0XFx0cmV0ID0gYXRoMTFrX2RwX3Nybmdfc2V0dXAoYWIsIFxcdTAwMjZkcC1cXHUwMDNldHhfcmluZ1tpXS50Y2xfY29tcF9yaW5nLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy00MTYtXFx0XFx0XFx0XFx0XFx0ICAgSEFMX1dCTTJTV19SRUxFQVNFLCB3Ym1fbnVtLCAwLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTQzMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmM6NDMyOlxcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFiLCBcXHUwMDI2ZHAtXFx1MDAzZXJlb19yZWluamVjdF9yaW5nLCBIQUxfUkVPX1JFSU5KRUNULFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy00MzMtXFx0XFx0XFx0XFx0ICAgMCwgMCwgRFBfUkVPX1JFSU5KRUNUX1JJTkdfU0laRSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtNDM5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYzo0NDA6XFx0cmV0ID0gYXRoMTFrX2RwX3Nybmdfc2V0dXAoYWIsIFxcdTAwMjZkcC1cXHUwMDNlcnhfcmVsX3JpbmcsIEhBTF9XQk0yU1dfUkVMRUFTRSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtNDQxLVxcdFxcdFxcdFxcdCAgIERQX1JYX1JFTEVBU0VfUklOR19OVU0sIDAsIERQX1JYX1JFTEVBU0VfUklOR19TSVpFKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy00NDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jOjQ0NzpcXHRyZXQgPSBhdGgxMWtfZHBfc3JuZ19zZXR1cChhYiwgXFx1MDAyNmRwLVxcdTAwM2VyZW9fZXhjZXB0X3JpbmcsIEhBTF9SRU9fRVhDRVBUSU9OLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy00NDgtXFx0XFx0XFx0XFx0ICAgMCwgMCwgRFBfUkVPX0VYQ0VQVElPTl9SSU5HX1NJWkUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTQ1NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmM6NDU1OlxcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFiLCBcXHUwMDI2ZHAtXFx1MDAzZXJlb19jbWRfcmluZywgSEFMX1JFT19DTUQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTQ1Ni1cXHRcXHRcXHRcXHQgICAwLCAwLCBEUF9SRU9fQ01EX1JJTkdfU0laRSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtNDY4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYzo0Njk6XFx0cmV0ID0gYXRoMTFrX2RwX3Nybmdfc2V0dXAoYWIsIFxcdTAwMjZkcC1cXHUwMDNlcmVvX3N0YXR1c19yaW5nLCBIQUxfUkVPX1NUQVRVUyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtNDcwLVxcdFxcdFxcdFxcdCAgIDAsIDAsIERQX1JFT19TVEFUVVNfUklOR19TSVpFKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYz02NDg9c3RhdGljIGludCBhdGgxMWtfd2JtX2lkbGVfcmluZ19zZXR1cChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCB1MzIgKm5fbGlua19kZXNjKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTY3NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmM6Njc1OlxcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFiLCBcXHUwMDI2ZHAtXFx1MDAzZXdibV9pZGxlX3JpbmcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTY3Ni1cXHRcXHRcXHRcXHQgICBIQUxfV0JNX0lETEVfTElOSywgMCwgMCwgKm5fbGlua19kZXNjKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuaD0xNjcyPXZvaWQgYXRoMTFrX2RwX3NybmdfY2xlYW51cChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCBzdHJ1Y3QgZHBfc3JuZyAqcmluZyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5oOjE2NzM6aW50IGF0aDExa19kcF9zcm5nX3NldHVwKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIHN0cnVjdCBkcF9zcm5nICpyaW5nLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuaC0xNjc0LVxcdFxcdFxcdCBlbnVtIGhhbF9yaW5nX3R5cGUgdHlwZSwgaW50IHJpbmdfbnVtLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jPTU0Nj1pbnQgYXRoMTFrX2RwX3BkZXZfcmVvX3NldHVwKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmMtNTUyLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBEUF9SRU9fRFNUX1JJTkdfTUFYOyBpKyspIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmM6NTUzOlxcdFxcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFiLCBcXHUwMDI2ZHAtXFx1MDAzZXJlb19kc3RfcmluZ1tpXSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmMtNTU0LVxcdFxcdFxcdFxcdFxcdCAgIEhBTF9SRU9fRFNULCBpLCAwLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jPTU3MD1zdGF0aWMgaW50IGF0aDExa19kcF9yeF9wZGV2X3NybmdfYWxsb2Moc3RydWN0IGF0aDExayAqYXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmMtNTc3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYzo1Nzg6XFx0cmV0ID0gYXRoMTFrX2RwX3Nybmdfc2V0dXAoYXItXFx1MDAzZWFiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYy01NzktXFx0XFx0XFx0XFx0ICAgXFx1MDAyNmRwLVxcdTAwM2VyeF9yZWZpbGxfYnVmX3JpbmcucmVmaWxsX2J1Zl9yaW5nLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jLTU4OC1cXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgYWItXFx1MDAzZWh3X3BhcmFtcy5udW1fcnhkbWFfcGVyX3BkZXY7IGkrKykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYzo1ODk6XFx0XFx0XFx0cmV0ID0gYXRoMTFrX2RwX3Nybmdfc2V0dXAoYXItXFx1MDAzZWFiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYy01OTAtXFx0XFx0XFx0XFx0XFx0XFx0ICAgXFx1MDAyNmRwLVxcdTAwM2VyeF9tYWNfYnVmX3JpbmdbaV0sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmMtNjAxLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBhYi1cXHUwMDNlaHdfcGFyYW1zLm51bV9yeGRtYV9wZXJfcGRldjsgaSsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jOjYwMjpcXHRcXHRyZXQgPSBhdGgxMWtfZHBfc3JuZ19zZXR1cChhci1cXHUwMDNlYWIsIFxcdTAwMjZkcC1cXHUwMDNlcnhkbWFfZXJyX2RzdF9yaW5nW2ldLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYy02MDMtXFx0XFx0XFx0XFx0XFx0ICAgSEFMX1JYRE1BX0RTVCwgMCwgZHAtXFx1MDAzZW1hY19pZCArIGksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmMtNjEyLVxcdFxcdHNybmcgPSBcXHUwMDI2ZHAtXFx1MDAzZXJ4X21vbl9zdGF0dXNfcmVmaWxsX3JpbmdbaV0ucmVmaWxsX2J1Zl9yaW5nO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYzo2MTM6XFx0XFx0cmV0ID0gYXRoMTFrX2RwX3Nybmdfc2V0dXAoYXItXFx1MDAzZWFiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYy02MTQtXFx0XFx0XFx0XFx0XFx0ICAgc3JuZyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYy02MzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jOjYzNjpcXHRyZXQgPSBhdGgxMWtfZHBfc3JuZ19zZXR1cChhci1cXHUwMDNlYWIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jLTYzNy1cXHRcXHRcXHRcXHQgICBcXHUwMDI2ZHAtXFx1MDAzZXJ4ZG1hX21vbl9idWZfcmluZy5yZWZpbGxfYnVmX3JpbmcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmMtNjQ1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYzo2NDY6XFx0cmV0ID0gYXRoMTFrX2RwX3Nybmdfc2V0dXAoYXItXFx1MDAzZWFiLCBcXHUwMDI2ZHAtXFx1MDAzZXJ4ZG1hX21vbl9kc3RfcmluZyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmMtNjQ3LVxcdFxcdFxcdFxcdCAgIEhBTF9SWERNQV9NT05JVE9SX0RTVCwgMCwgZHAtXFx1MDAzZW1hY19pZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYy02NTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jOjY1NTpcXHRyZXQgPSBhdGgxMWtfZHBfc3JuZ19zZXR1cChhci1cXHUwMDNlYWIsIFxcdTAwMjZkcC1cXHUwMDNlcnhkbWFfbW9uX2Rlc2NfcmluZyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmMtNjU2LVxcdFxcdFxcdFxcdCAgIEhBTF9SWERNQV9NT05JVE9SX0RFU0MsIDAsIGRwLVxcdTAwM2VtYWNfaWQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjMxOjEwLjYyOTc3NDIyMVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1MTAzNjUyMzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBGdXp6aW5nIFBvdGVudGlhbCBvZiBgYXRoMTFrYCoqXG5cbk9rYXksIHNvIHRoZSBjb2RlIGluIHF1ZXN0aW9uIHNlZW1zIHRvIGJlIHdpdGhpbiBgYXRoMTFrX2RwX3Nybmdfc2V0dXBgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJSaWdodCwgYGF0aDExa2AuLi4gdGhhdCdzIFF1YWxjb21tIEF0aGVyb3MnIDgwMi4xMWF4IGhhcmR3YXJlIGRyaXZlci5cIiBOb3cgdGhlIHF1ZXN0aW9uIGJlY29tZXMsIGRvZXMgdGhpcyBkcml2ZXIgcmVseSBvbiBhY3R1YWwgUENJZSBoYXJkd2FyZSwgYW5kIHdpbGwgaXQgbm90IHdvcmsgd2l0aCBzdGFuZGFyZCBRRU1VIGVtdWxhdGlvbj8gR2l2ZW4gdGhhdCBgYXRoMTFrYCBpcyBhIFBDSWUvQUhCIGRyaXZlciwgdGhlIGFuc3dlciBpcyBtb3N0IGxpa2VseSB5ZXMuIFRoYXQgbWFrZXMgdGhpbmdzIGludGVyZXN0aW5nIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLlxuXG5UaGUgcHJvbXB0IHNwZWNpZmljYWxseSBtZW50aW9ucyBjb2RlIHdpdGhpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycywgd2hpY2ggYWxzbyByZXF1aXJlIHBoeXNpY2FsIFBDSWUgY2FyZHMsIGFuZCBtZW50aW9ucyBzZXZlcmFsIGRyaXZlcnMgdGhhdCBmYWxsIGludG8gdGhpcyBjYXRlZ29yeS4gQW5kIGBhdGgxMWtgICppcyogdmVuZG9yLXNwZWNpZmljLCBzbyBpdCBsaW5lcyB1cCB3aXRoIHRoZSBkZXNjcmlwdGlvbi5cblxuQnV0IHdhaXQgYSBtaW51dGUhIFN5emthbGxlciAqZG9lcyogaGF2ZSBQQ0kgZnV6emluZyBjYXBhYmlsaXRpZXMsIGRvZXNuJ3QgaXQ/IFRoZSBxdWVzdGlvbiBub3cgYmVjb21lcywgaGFzIGFueW9uZSBhbHJlYWR5IGF0dGVtcHRlZCB0byBmdXp6IGBhdGgxMWtgPyBJIG5lZWQgdG8gY2hlY2sgZm9yIGEgc3l6a2FsbGVyIGRlc2NyaXB0aW9uIHJlbGF0ZWQgdG8gdGhpcyBkcml2ZXIuIExldCdzIGRpZyBkZWVwZXIgYW5kIHNlZSB3aGF0IHdlIGNhbiBmaW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MzYwLCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjA3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjMxOjE1LjE0MDE0Mjc4N1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjM3NDc2OTIsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0aDExa1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJzeXMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjozMToxNS4yNjM5MDUxODlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTk4NDQ1MTI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgdGhlIEF0aDExayBEcml2ZXIgd2l0aCBTeXprYWxsZXIqKlxuXG5Pa2F5LCBzbyB0aGVyZSdzIG5vIGRlZGljYXRlZCBzeXprYWxsZXIgZGVzY3JpcHRpb24gZm9yIHRoZSBhdGgxMWsgZHJpdmVyLCB3aGljaCBpcyBhIGJpdCBvZiBhIHJvYWRibG9jay4gQnV0IGhvbGQgb24sIHRoZSBnZW5lcmljIFBDSSBmdXp6ZXIgKHNwZWNpZmljYWxseSBgc3l6X3BjaV9kZXZpY2VgKSBpcyBhdmFpbGFibGUsIGFuZCB0aGF0IG9wZW5zIHVwIHNvbWUgcG9zc2liaWxpdGllcy4gVGhlIHF1ZXN0aW9uIG5vdyBiZWNvbWVzOiBjYW4gSSBzb21laG93IHRyaWdnZXIgYGF0aDExa19kcF9zcm5nX3NldHVwYCDigJMgdGhlIHRhcmdldCDigJMgdGhyb3VnaCBhIFBDSSBwcm9iZT8gVGhhdCBzZWVtcyBsaWtlIHRoZSBtb3N0IGRpcmVjdCByb3V0ZSwgYW5kIGl0J3MgdGhlIG9uZSBJIG5lZWQgdG8gZXhwbG9yZS4gVGltZSB0byBkaXZlIGludG8gdGhlIGBhdGgxMWtfcGNpX3Byb2JlYCBmdW5jdGlvbiBhbmQgc2VlIGlmIGl0J3MgZmVhc2libGUgdG8gbWFuaXB1bGF0ZSB0aGUgUENJIHByb2JlIHByb2Nlc3MgdG8gcmVhY2ggd2hhdCBJJ20gbG9va2luZyBmb3IuIExldCdzIHNlZSBpZiB0aGlzIGh1bmNoIHBhbnMgb3V0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2ODY3LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6MzE6MTkuMjYyMzU0MDM4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY5NDUyMTA1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0aDExa19wY2lfcHJvYmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYz05NDA9c3RhdGljIGludCBhdGgxMWtfcGNpX3NldF9pcnFfYWZmaW5pdHlfaGludChzdHJ1Y3QgYXRoMTFrX3BjaSAqYWJfcGNpLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYy05NDgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYzo5NDk6c3RhdGljIGludCBhdGgxMWtfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmMtOTUwLVxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqcGNpX2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmM9MTI5Nj1zdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgYXRoMTFrX3BjaV9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3BjaS5jLTEyOTgtXFx0LmlkX3RhYmxlID0gYXRoMTFrX3BjaV9pZF90YWJsZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3BjaS5jOjEyOTk6XFx0LnByb2JlID0gYXRoMTFrX3BjaV9wcm9iZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3BjaS5jLTEzMDAtXFx0LnJlbW92ZSA9IGF0aDExa19wY2lfcmVtb3ZlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjozMToxOS4zMzE4MTM5MTNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NzEwNDc0MTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRnV6emFiaWxpdHkgb2YgdGhlIGF0aDExayBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHByb21wdCBhbmQgdGhpbmtpbmcgYWJvdXQgaG93IHRvIGFwcHJvYWNoIHRoaXMgZnV6emluZyB0YXNrLiBUaGUgbWVudGlvbiBvZiBQQ0kgZHJpdmVycyBpbW1lZGlhdGVseSBicmluZ3MgYHN5el9wY2lfZGV2aWNlYCB0byBtaW5kLiBJZiB3ZSdyZSBkZWFsaW5nIHdpdGggYSBQQ0kgZHJpdmVyLCBzeXprYWxsZXIgc2hvdWxkIGJlIGFibGUgdG8gcHJvYmUgaXQsIHJpZ2h0PyBCdXQgdGhlIHByb21wdCBzcGVjaWZpY2FsbHkgY2FsbHMgb3V0IHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzLCBhbmQgbWVudGlvbnMgdGhhdCB0aGV5IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cblxuTm93LCBpcyBhdGgxMWsgb25lIG9mIHRob3NlPyBObywgaXQncyBhIHdpcmVsZXNzIGRyaXZlciwgbm90IGEgU21hcnROSUMgb3IgR1BVLiBIb3dldmVyLCBpdCAqaXMqIGEgaGFyZHdhcmUgZHJpdmVyLiBTbywgZG9lcyBpdCByZXF1aXJlIHBoeXNpY2FsIGNhcmRzIHRoYXQgUUVNVSBjYW4ndCBlbXVsYXRlPyBUaGUgYW5zd2VyIGlzIHllcy4gU3RpbGwsIEkga25vdyB0aGF0IHN5emthbGxlcuKAmXMgUENJIGZ1enplciBjYW4gZW11bGF0ZSBQQ0kgZGV2aWNlcyBhbmQgdHJpZ2dlciB0aGUgZGV2aWNlJ3MgcHJvYmUgZnVuY3Rpb25zLCByaWdodD8gU28sIGhlcmUncyB0aGUgY3J1Y2lhbCBxdWVzdGlvbjogSWYgc3l6a2FsbGVyJ3MgUENJIGZ1enplciAqY2FuKiB0cmlnZ2VyIGl0LCBpcyB0aGF0IGNvbnNpZGVyZWQgZnV6emFibGU/IEkgdGhpbmsgaXQgbWlnaHQgYmUhIEl0J3Mgd29ydGggZnVydGhlciBpbnZlc3RpZ2F0aW9uLiBMZXQncyBzZWUgaWYgd2UgY2FuIGdldCB0byBgYXRoMTFrX2RwX3Nybmdfc2V0dXBgIGR1cmluZyBwcm9iZS4gVGhhdCdzIHRoZSBrZXkgdG8gZmlndXJpbmcgb3V0IHRoZSBhbnN3ZXIgdG8gdGhpcyBxdWVzdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NzUwMiwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjozMToyNS4wNDIyOTE2MjNaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkwNDg4OTI0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0aDExa19kcF9zcm5nX3NldHVwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGJyaW5nLmM9MjM3PWludCBhdGgxMWtfZGJyaW5nX3Nybmdfc2V0dXAoc3RydWN0IGF0aDExayAqYXIsIHN0cnVjdCBhdGgxMWtfZGJyaW5nICpyaW5nLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kYnJpbmcuYy0yNDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kYnJpbmcuYzoyNDI6XFx0cmV0ID0gYXRoMTFrX2RwX3Nybmdfc2V0dXAoYXItXFx1MDAzZWFiLCBcXHUwMDI2cmluZy1cXHUwMDNlcmVmaWxsX3NybmcsIEhBTF9SWERNQV9ESVJfQlVGLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGJyaW5nLmMtMjQzLVxcdFxcdFxcdFxcdCAgIHJpbmdfbnVtLCBhci1cXHUwMDNlcGRldl9pZHgsIG51bV9lbnRyaWVzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYz0xODE9c3RhdGljIHZvaWQgYXRoMTFrX2RwX3NybmdfbXNpX3NldHVwKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtMjIwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYzoyMjE6aW50IGF0aDExa19kcF9zcm5nX3NldHVwKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIHN0cnVjdCBkcF9zcm5nICpyaW5nLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy0yMjItXFx0XFx0XFx0IGVudW0gaGFsX3JpbmdfdHlwZSB0eXBlLCBpbnQgcmluZ19udW0sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmM9MzcyPXN0YXRpYyBpbnQgYXRoMTFrX2RwX3NybmdfY29tbW9uX3NldHVwKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtMzc4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYzozNzk6XFx0cmV0ID0gYXRoMTFrX2RwX3Nybmdfc2V0dXAoYWIsIFxcdTAwMjZkcC1cXHUwMDNld2JtX2Rlc2NfcmVsX3JpbmcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTM4MC1cXHRcXHRcXHRcXHQgICBIQUxfU1cyV0JNX1JFTEVBU0UsIDAsIDAsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtMzg3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYzozODg6XFx0cmV0ID0gYXRoMTFrX2RwX3Nybmdfc2V0dXAoYWIsIFxcdTAwMjZkcC1cXHUwMDNldGNsX2NtZF9yaW5nLCBIQUxfVENMX0NNRCwgMCwgMCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtMzg5LVxcdFxcdFxcdFxcdCAgIERQX1RDTF9DTURfUklOR19TSVpFKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy0zOTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jOjM5NTpcXHRyZXQgPSBhdGgxMWtfZHBfc3JuZ19zZXR1cChhYiwgXFx1MDAyNmRwLVxcdTAwM2V0Y2xfc3RhdHVzX3JpbmcsIEhBTF9UQ0xfU1RBVFVTLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy0zOTYtXFx0XFx0XFx0XFx0ICAgMCwgMCwgRFBfVENMX1NUQVRVU19SSU5HX1NJWkUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTQwNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmM6NDA2OlxcdFxcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFiLCBcXHUwMDI2ZHAtXFx1MDAzZXR4X3JpbmdbaV0udGNsX2RhdGFfcmluZyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtNDA3LVxcdFxcdFxcdFxcdFxcdCAgIEhBTF9UQ0xfREFUQSwgdGNsX251bSwgMCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy00MTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jOjQxNTpcXHRcXHRyZXQgPSBhdGgxMWtfZHBfc3JuZ19zZXR1cChhYiwgXFx1MDAyNmRwLVxcdTAwM2V0eF9yaW5nW2ldLnRjbF9jb21wX3JpbmcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTQxNi1cXHRcXHRcXHRcXHRcXHQgICBIQUxfV0JNMlNXX1JFTEVBU0UsIHdibV9udW0sIDAsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtNDMxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYzo0MzI6XFx0cmV0ID0gYXRoMTFrX2RwX3Nybmdfc2V0dXAoYWIsIFxcdTAwMjZkcC1cXHUwMDNlcmVvX3JlaW5qZWN0X3JpbmcsIEhBTF9SRU9fUkVJTkpFQ1QsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTQzMy1cXHRcXHRcXHRcXHQgICAwLCAwLCBEUF9SRU9fUkVJTkpFQ1RfUklOR19TSVpFKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy00MzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jOjQ0MDpcXHRyZXQgPSBhdGgxMWtfZHBfc3JuZ19zZXR1cChhYiwgXFx1MDAyNmRwLVxcdTAwM2VyeF9yZWxfcmluZywgSEFMX1dCTTJTV19SRUxFQVNFLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy00NDEtXFx0XFx0XFx0XFx0ICAgRFBfUlhfUkVMRUFTRV9SSU5HX05VTSwgMCwgRFBfUlhfUkVMRUFTRV9SSU5HX1NJWkUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTQ0Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmM6NDQ3OlxcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFiLCBcXHUwMDI2ZHAtXFx1MDAzZXJlb19leGNlcHRfcmluZywgSEFMX1JFT19FWENFUFRJT04sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTQ0OC1cXHRcXHRcXHRcXHQgICAwLCAwLCBEUF9SRU9fRVhDRVBUSU9OX1JJTkdfU0laRSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtNDU0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYzo0NTU6XFx0cmV0ID0gYXRoMTFrX2RwX3Nybmdfc2V0dXAoYWIsIFxcdTAwMjZkcC1cXHUwMDNlcmVvX2NtZF9yaW5nLCBIQUxfUkVPX0NNRCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtNDU2LVxcdFxcdFxcdFxcdCAgIDAsIDAsIERQX1JFT19DTURfUklOR19TSVpFKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy00NjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jOjQ2OTpcXHRyZXQgPSBhdGgxMWtfZHBfc3JuZ19zZXR1cChhYiwgXFx1MDAyNmRwLVxcdTAwM2VyZW9fc3RhdHVzX3JpbmcsIEhBTF9SRU9fU1RBVFVTLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy00NzAtXFx0XFx0XFx0XFx0ICAgMCwgMCwgRFBfUkVPX1NUQVRVU19SSU5HX1NJWkUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jPTY0OD1zdGF0aWMgaW50IGF0aDExa193Ym1faWRsZV9yaW5nX3NldHVwKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIHUzMiAqbl9saW5rX2Rlc2MpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtNjc0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYzo2NzU6XFx0cmV0ID0gYXRoMTFrX2RwX3Nybmdfc2V0dXAoYWIsIFxcdTAwMjZkcC1cXHUwMDNld2JtX2lkbGVfcmluZyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtNjc2LVxcdFxcdFxcdFxcdCAgIEhBTF9XQk1fSURMRV9MSU5LLCAwLCAwLCAqbl9saW5rX2Rlc2MpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5oPTE2NzI9dm9pZCBhdGgxMWtfZHBfc3JuZ19jbGVhbnVwKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIHN0cnVjdCBkcF9zcm5nICpyaW5nKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmg6MTY3MzppbnQgYXRoMTFrX2RwX3Nybmdfc2V0dXAoc3RydWN0IGF0aDExa19iYXNlICphYiwgc3RydWN0IGRwX3NybmcgKnJpbmcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5oLTE2NzQtXFx0XFx0XFx0IGVudW0gaGFsX3JpbmdfdHlwZSB0eXBlLCBpbnQgcmluZ19udW0sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmM9NTQ2PWludCBhdGgxMWtfZHBfcGRldl9yZW9fc2V0dXAoc3RydWN0IGF0aDExa19iYXNlICphYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYy01NTItXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIERQX1JFT19EU1RfUklOR19NQVg7IGkrKykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYzo1NTM6XFx0XFx0cmV0ID0gYXRoMTFrX2RwX3Nybmdfc2V0dXAoYWIsIFxcdTAwMjZkcC1cXHUwMDNlcmVvX2RzdF9yaW5nW2ldLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYy01NTQtXFx0XFx0XFx0XFx0XFx0ICAgSEFMX1JFT19EU1QsIGksIDAsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmM9NTcwPXN0YXRpYyBpbnQgYXRoMTFrX2RwX3J4X3BkZXZfc3JuZ19hbGxvYyhzdHJ1Y3QgYXRoMTFrICphcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYy01NzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jOjU3ODpcXHRyZXQgPSBhdGgxMWtfZHBfc3JuZ19zZXR1cChhci1cXHUwMDNlYWIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jLTU3OS1cXHRcXHRcXHRcXHQgICBcXHUwMDI2ZHAtXFx1MDAzZXJ4X3JlZmlsbF9idWZfcmluZy5yZWZpbGxfYnVmX3JpbmcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmMtNTg4LVxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBhYi1cXHUwMDNlaHdfcGFyYW1zLm51bV9yeGRtYV9wZXJfcGRldjsgaSsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jOjU4OTpcXHRcXHRcXHRyZXQgPSBhdGgxMWtfZHBfc3JuZ19zZXR1cChhci1cXHUwMDNlYWIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jLTU5MC1cXHRcXHRcXHRcXHRcXHRcXHQgICBcXHUwMDI2ZHAtXFx1MDAzZXJ4X21hY19idWZfcmluZ1tpXSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYy02MDEtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGFiLVxcdTAwM2Vod19wYXJhbXMubnVtX3J4ZG1hX3Blcl9wZGV2OyBpKyspIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmM6NjAyOlxcdFxcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFyLVxcdTAwM2VhYiwgXFx1MDAyNmRwLVxcdTAwM2VyeGRtYV9lcnJfZHN0X3JpbmdbaV0sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jLTYwMy1cXHRcXHRcXHRcXHRcXHQgICBIQUxfUlhETUFfRFNULCAwLCBkcC1cXHUwMDNlbWFjX2lkICsgaSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYy02MTItXFx0XFx0c3JuZyA9IFxcdTAwMjZkcC1cXHUwMDNlcnhfbW9uX3N0YXR1c19yZWZpbGxfcmluZ1tpXS5yZWZpbGxfYnVmX3Jpbmc7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jOjYxMzpcXHRcXHRyZXQgPSBhdGgxMWtfZHBfc3JuZ19zZXR1cChhci1cXHUwMDNlYWIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jLTYxNC1cXHRcXHRcXHRcXHRcXHQgICBzcm5nLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jLTYzNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmM6NjM2OlxcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFyLVxcdTAwM2VhYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmMtNjM3LVxcdFxcdFxcdFxcdCAgIFxcdTAwMjZkcC1cXHUwMDNlcnhkbWFfbW9uX2J1Zl9yaW5nLnJlZmlsbF9idWZfcmluZyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYy02NDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jOjY0NjpcXHRyZXQgPSBhdGgxMWtfZHBfc3JuZ19zZXR1cChhci1cXHUwMDNlYWIsIFxcdTAwMjZkcC1cXHUwMDNlcnhkbWFfbW9uX2RzdF9yaW5nLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYy02NDctXFx0XFx0XFx0XFx0ICAgSEFMX1JYRE1BX01PTklUT1JfRFNULCAwLCBkcC1cXHUwMDNlbWFjX2lkLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jLTY1NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmM6NjU1OlxcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFyLVxcdTAwM2VhYiwgXFx1MDAyNmRwLVxcdTAwM2VyeGRtYV9tb25fZGVzY19yaW5nLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYy02NTYtXFx0XFx0XFx0XFx0ICAgSEFMX1JYRE1BX01PTklUT1JfREVTQywgMCwgZHAtXFx1MDAzZW1hY19pZCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6MzE6MjUuMTMyNzg5MTg4WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc1MTAxMjc1MTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQcm9tcHQncyBBcHBsaWNhYmlsaXR5KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgcHJvbXB0IHNwZWNpZmljYWxseSBtZW50aW9ucyBjb2RlIHJlbGF0ZWQgdG8gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMuIEkgaW1tZWRpYXRlbHkgdGhvdWdodCBhYm91dCBgYXRoMTFrYCDigJMgaXQncyBhIFF1YWxjb21tIEF0aGVyb3MgODAyLjExYXggZHJpdmVyLCBkZWZpbml0ZWx5IHZlbmRvci1zcGVjaWZpYyBhbmQgUENJZS4gSG93ZXZlciwgaXMgaXQgYSAqc3dpdGNoKiwgYSAqU21hcnROSUMqLCBvciBhICpHUFUqIGRyaXZlcj8gTm8sIGl0J3MgYSB3aXJlbGVzcyBkcml2ZXIuIFNvLCBpbml0aWFsIHBhc3MsIGl0IGRvZXNuJ3QgcXVpdGUgZml0IHRoZSAqdHlwZXMqIG9mIGRyaXZlcnMgbWVudGlvbmVkLlxuXG5UaGUgc2Vjb25kIHBhcnQgb2YgdGhlIHByb21wdCBpcyBrZXk6IFwiLi4ucmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzICpub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSouXCIgWWVzLCB0aGF0J3MgdHJ1ZSBmb3IgYGF0aDExa2AuIFFFTVUgZG9lc24ndCBvZmZlciBhIGRpcmVjdCBoYXJkd2FyZSBlbXVsYXRpb24gZm9yIHRoZSBzcGVjaWZpYyBRdWFsY29tbSBBdGhlcm9zIGNoaXBzZXRzLlxuXG5CdXQgdGhlbiBJIHJlbWVtYmVyZWQgdGhlIGBzeXprYWxsZXJgIFBDSSBmdXp6ZXIuIEl0ICpjYW4qIGVtdWxhdGUgUENJIGRldmljZXMsIGRvZXNuJ3QgaXQ/IFNvLCBldmVuIHRob3VnaCBpdCdzIG5vdCBhICpwZXJmZWN0KiBoYXJkd2FyZSBtb2RlbCwgdGhlIHF1ZXN0aW9uIGJlY29tZXMsIGNvdWxkIGl0IGJlIGZ1enplZCB2aWEgdGhhdCBtZWNoYW5pc20/IFRoZSB3b3JkaW5nIG9mIHRoZSBwcm9tcHQsIGFnYWluLCBzcGVjaWZpY2FsbHkgc2F5cyAqbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUqLiBUaGUgZnV6emVyIG1pZ2h0IGdldCB0aGUgZGV2aWNlIHByb2JlZCwgYnV0IGl0J3Mgbm90IHRoZSBcInN0YW5kYXJkXCIgUUVNVSBlbnZpcm9ubWVudC5cblxuVGhlbiBJIGNpcmNsZWQgYmFjayB0byB0aGUgZmFjdCB0aGF0IGBhdGgxMWtgIGlzIGEgd2lyZWxlc3MgZHJpdmVyLiBTeXprYWxsZXIgKmRvZXMqIGhhdmUgYG1hYzgwMjExX2h3c2ltYCBmb3Igd2lyZWxlc3MgZnV6emluZywgYnV0IGl0IGJ5cGFzc2VzIHRoZSBkaXJlY3QgdXNlIG9mIGBhdGgxMWtgLlxuXG5TbywgdGhlIGtleSBoZXJlIGlzIHdoZXRoZXIgYHN5emthbGxlcmAncyBQQ0kgZnV6emVyIGNhbiBiZSBsZXZlcmFnZWQgdG8gKnRyaWdnZXIqIHRoZSBgYXRoMTFrYCBwcm9iZSBzZXF1ZW5jZS4gSWYgaXQgY2FuLCB0aGVuIHdlIG1pZ2h0IGhhdmUgYSB2aWFibGUgZnV6emluZyB0YXJnZXQuIEl0J3MgYSBsb25nIHNob3QsIGdpdmVuIHRoZSBkcml2ZXIgdHlwZSwgYnV0IHRoZSBwb3RlbnRpYWwgaXMgdGhlcmUuXG5cbkZpbmFsbHksIEkgbmVlZCB0byBjaGVjayB3aGV0aGVyIGBhdGgxMWtgIG5lZWRzIGZpcm13YXJlIHRvIGV2ZW4gYmVnaW4gaXRzIGluaXRpYWxpemF0aW9uLiBNYW55IHdpcmVsZXNzIGRyaXZlcnMgYXJlIGZpcm13YXJlLWRlcGVuZGVudCwgYW5kIGlmIHNvLCBpdCdzIGEgbmVjZXNzYXJ5IHN0ZXAgYmVmb3JlIGFueSBtZWFuaW5nZnVsIGZ1enppbmcgY2FuIGNvbW1lbmNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTExOCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjozMTozMi42NDI5MjAyMDRaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk2ODcxNDk0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJlcXVlc3RfZmlybXdhcmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9mdy5jLTEwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZncuYzoxMTpzdGF0aWMgaW50IGF0aDExa19md19yZXF1ZXN0X2Zpcm13YXJlX2FwaV9uKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9mdy5jLTEyLVxcdFxcdFxcdFxcdFxcdCAgICBjb25zdCBjaGFyICpuYW1lKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9mdy5jPTE0Nz1pbnQgYXRoMTFrX2Z3X3ByZV9pbml0KHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Z3LmMtMTUwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZncuYzoxNTE6XFx0cmV0ID0gYXRoMTFrX2Z3X3JlcXVlc3RfZmlybXdhcmVfYXBpX24oYWIsIEFUSDExS19GV19BUEkyX0ZJTEUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZncuYy0xNTItXFx0aWYgKHJldCA9PSAwKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjMxOjMyLjczOTc5ODYyOFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzkyMDc0Mjc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBGaXJtd2FyZSBEZXBlbmRlbmNpZXMgaW4gU3l6a2FsbGVyIENvdmVyYWdlKipcblxuT2theSwgc28gSSdtIHRyeWluZyB0byB1bmRlcnN0YW5kIGhvdyB3ZWxsIFN5emthbGxlciBjYW4gY292ZXIgYSBzcGVjaWZpYyBhcmVhLCBhbmQgZmlybXdhcmUgZGVwZW5kZW5jaWVzIGFyZSBkZWZpbml0ZWx5IGEgcG90ZW50aWFsIGh1cmRsZS4gSSdtIHRoaW5raW5nLCBpZiB0aGUgZnVuY3Rpb25hbGl0eSBJJ20gaW50ZXJlc3RlZCBpbiwgd2hhdGV2ZXIgaXQgbWF5IGJlLCByZXF1aXJlcyBhIGZpcm13YXJlIGNvbXBvbmVudCwgU3l6a2FsbGVyJ3MgY292ZXJhZ2UgbWlnaHQgYmUgbGltaXRlZC4gVW5sZXNzIHRoZSByZXF1aXJlZCBmaXJtd2FyZSBpcyBiYWtlZCBpbnRvIHRoZSBzdGFuZGFyZCBgbGludXgtZmlybXdhcmVgIHBhY2thZ2UgYW5kIHByZXNlbnQgaW4gdGhlIFN5emthbGxlciBpbWFnZSwgb3IgaWYgdGhlcmUncyBzb21lIHNvcnQgb2YgZ3JhY2VmdWwgZmFpbHVyZSBoYW5kbGluZyBidWlsdCBpbiwgSSdtIHByb2JhYmx5IG91dCBvZiBsdWNrLlxuXG5UbyBnZXQgYSBoYW5kbGUgb24gdGhpcywgSSBuZWVkIHRvIGludmVzdGlnYXRlIHRoZSBzcGVjaWZpYyBmdW5jdGlvbiBpbiBxdWVzdGlvbjogYGF0aDExa19kcF9zcm5nX3NldHVwYC4gTGV0IG1lIHRyYWNlIGl0cyB1c2FnZSB0byBmaWd1cmUgb3V0IHRoZSBjb250ZXh0IHdoZXJlIGl0IGdldHMgY2FsbGVkLiBGcm9tIGEgcXVpY2sgc2VhcmNoLCBpdCBhcHBlYXJzIHRvIGJlIGNhbGxlZCBmcm9tIGEgZmV3IHBsYWNlcywgbGlrZSBgYXRoMTFrX2RwX3NybmdfY29tbW9uX3NldHVwYCwgYGF0aDExa19kcF9yeF9wZGV2X3NybmdfYWxsb2NgLCBhbmQgcGVyaGFwcyBvdGhlcnMuXG5cbkFscmlnaHQsIGxldCdzIHN0YXJ0IHdpdGggdHJhY2luZyB0aGUgZXhlY3V0aW9uIG9mIGBhdGgxMWtfZHBfc3JuZ19jb21tb25fc2V0dXBgLiBUaGlzIHNlZW1zIGxpa2UgYSByZWFzb25hYmxlIHN0YXJ0aW5nIHBvaW50IHRvIGJlZ2luIHRoZSBhbmFseXNpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTIyMDAsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6MzE6MzcuMTMxODc2NzAyWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3Mjk0Mjc1NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdGgxMWtfZHBfc3JuZ19jb21tb25fc2V0dXBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jPTM1Mj1zdGF0aWMgdm9pZCBhdGgxMWtfZHBfc3JuZ19jb21tb25fY2xlYW51cChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTM3MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmM6MzcyOnN0YXRpYyBpbnQgYXRoMTFrX2RwX3NybmdfY29tbW9uX3NldHVwKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTM3My17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmM9MTA1MD1pbnQgYXRoMTFrX2RwX2FsbG9jKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtMTA4Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmM6MTA4MzpcXHRyZXQgPSBhdGgxMWtfZHBfc3JuZ19jb21tb25fc2V0dXAoYWIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy0xMDg0LVxcdGlmIChyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjMxOjM3LjIwNDgzNDE5N1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjkxMjE5NTc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqRGVjb25zdHJ1Y3RpbmcgdGhlIGBhdGgxMWtgIERhdGEgUGF0aCBBbGxvY2F0aW9uKipcblxuT2theSwgc28gYGF0aDExa19kcF9hbGxvY2AgaXMgdGhlIGtleSBmdW5jdGlvbiBoZXJlLCByZXNwb25zaWJsZSBmb3IgYWxsb2NhdGluZyByZXNvdXJjZXMgZm9yIHRoZSBkYXRhIHBhdGggd2l0aGluIHRoZSBgYXRoMTFrYCBkcml2ZXIuIEl0IGFwcGVhcnMgaXQgY2FsbHMgYGF0aDExa19kcF9zcm5nX2NvbW1vbl9zZXR1cGAsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBJJ20gZ29pbmcgdG8gaGF2ZSB0byB1bmRlcnN0YW5kIHRoYXQgcmVsYXRpb25zaGlwLiBGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGxhcmdlciBjb250ZXh0LlxuXG5JIG5lZWQgdG8gc2VlIHdoZXJlIGBhdGgxMWtfZHBfYWxsb2NgIGlzICphY3R1YWxseSogY2FsbGVkIGZyb20uIFdoYXQgZnVuY3Rpb25zIHRyaWdnZXIgdGhpcyBhbGxvY2F0aW9uPyBXaGF0J3MgdGhlIGNhbGwgZ3JhcGggbGlrZT8gSXMgaXQgZHVyaW5nIGRldmljZSBpbml0aWFsaXphdGlvbiwgcGVyLWludGVyZmFjZSBzZXR1cCwgb3IgaXMgaXQgdHJpZ2dlcmVkIG9uIGEgcGVyLXBhY2tldCBiYXNpcz8gVW5kZXJzdGFuZGluZyB0aGUgY2FsbGluZyBjb250ZXh0IGlzIGdvaW5nIHRvIHByb3ZpZGUgY3JpdGljYWwgY2x1ZXMgYWJvdXQgdGhlIGRlc2lnbiBhbmQgdGhlIHBlcmZvcm1hbmNlIGltcGxpY2F0aW9ucyBvZiB0aGUgZGF0YSBwYXRoLiBJJ2xsIHN0YXJ0IGJ5IHRyYWNpbmcgdGhlIGNhbGxzIHRvIGBhdGgxMWtfZHBfYWxsb2NgLiBUaGF0J3MgdGhlIGxvZ2ljYWwgZmlyc3Qgc3RlcCBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjkyMSwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjMxOjQxLjg5NjA1Nzc1MloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTE2OTEwMjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRoMTFrX2RwX2FsbG9jXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jPTIyNjM9aW50IGF0aDExa19jb3JlX3FtaV9maXJtd2FyZV9yZWFkeShzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmMtMjI5Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuYzoyMjkzOlxcdHJldCA9IGF0aDExa19kcF9hbGxvYyhhYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmMtMjI5NC1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmM9MTAyNT12b2lkIGF0aDExa19kcF9mcmVlKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtMTA0OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmM6MTA1MDppbnQgYXRoMTFrX2RwX2FsbG9jKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTEwNTEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5oPTE2NjM9dm9pZCBhdGgxMWtfZHBfZnJlZShzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmg6MTY2NDppbnQgYXRoMTFrX2RwX2FsbG9jKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuaC0xNjY1LWludCBhdGgxMWtfZHBfcGRldl9hbGxvYyhzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6MzE6NDEuOTg3NzU1MzM2WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU3MDI5MDE0NjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBSZWFjaGFiaWxpdHkgb2YgYGF0aDExa19jb3JlX3FtaV9maXJtd2FyZV9yZWFkeWAgaW4gYSBWaXJ0dWFsaXplZCBFbnZpcm9ubWVudCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgZnVuY3Rpb24gY2FsbCwgYGF0aDExa19jb3JlX3FtaV9maXJtd2FyZV9yZWFkeWAsIGFuZCB0aGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgaXMgdGhhdCBpdCByZXF1aXJlcyBRTUkgZmlybXdhcmUgdG8gYmUgcmVhZHkuIFRoYXQncyBhIHByZXR0eSBzdHJvbmcgaW5kaWNhdG9yIHJpZ2h0IHRoZXJlLiBLbm93aW5nIHRoZSB0eXBpY2FsIGNvbnN0cmFpbnRzIG9mIG15IHdvcmssIEkgaW1tZWRpYXRlbHkgcmVjb2duaXplIHRoaXMgYXMgYSBwb3RlbnRpYWwgcm9hZGJsb2NrLiBJbiBhIHN0YW5kYXJkIFFFTVUgc2V0dXAsIG9yIGV2ZW4gc29tZXRoaW5nIG1vcmUgc29waGlzdGljYXRlZCBsaWtlIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIHNldHVwcyBzdWNoIGFzIHVzYiBnYWRnZXQgb3IgbWFjODAyMTFfaHdzaW0sIHJlYWNoaW5nIHRoaXMgZnVuY3Rpb24gaXMgcHJhY3RpY2FsbHkgaW1wb3NzaWJsZS4gV2UncmUgdGFsa2luZyBhYm91dCBhIGRlcGVuZGVuY3kgb24gUU1JIGFuZCB0aGUgc3VjY2Vzc2Z1bCBsb2FkaW5nIG9mIGFjdHVhbCBmaXJtd2FyZSwgd2hpY2ggaXMgZmFyIGJleW9uZCB0aGUgc2NvcGUgb2YgYSB0eXBpY2FsIHZpcnR1YWxpemF0aW9uIHNjZW5hcmlvLlxuXG5UaGUgcHJvbXB0IGNvbmZpcm1zIG15IGluaXRpYWwgc3VzcGljaW9uIGJ5IGV4cGxpY2l0bHkgc3RhdGluZyB0aGF0IHRoZXNlIGtpbmRzIG9mIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGluIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLiBHaXZlbiB0aGF0IGBhdGgxMWtgIHJlbGllcyBvbiB0aGlzIHBoeXNpY2FsIGhhcmR3YXJlIGFuZCBmaXJtd2FyZSByZWFkaW5lc3MgdG8gZ2V0IHRvIGBhdGgxMWtfY29yZV9xbWlfZmlybXdhcmVfcmVhZHlgLCB0aGUgY29uY2x1c2lvbiBpcyBjbGVhcjogdGhpcyBwYXRoIGlzIHVuYWNoaWV2YWJsZSBpbiBRRU1VLiBUaGF0IG1lYW5zIFdvcnRoRnV6emluZyBzaG91bGQgYmUgc2V0IHRvIGZhbHNlLlxuXG5CdXQsIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLCBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgdGhlcmUgYXJlIG5vIG90aGVyIGFsdGVybmF0aXZlIHBhdGhzIHRvIGBhdGgxMWtfZHBfc3JuZ19zZXR1cGAg4oCTIGp1c3QgaW4gY2FzZSB0aGVyZSdzIGFub3RoZXIgcG9pbnQgb2YgZW50cnkuIEl0J3MgYWx3YXlzIGdvb2QgdG8gYmUgdGhvcm91Z2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzNjQ5LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjMxOjQ3LjY5MDY1OTMxN1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAyMzY1NzkzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0aDExa19kcF9zcm5nX3NldHVwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGJyaW5nLmM9MjM3PWludCBhdGgxMWtfZGJyaW5nX3Nybmdfc2V0dXAoc3RydWN0IGF0aDExayAqYXIsIHN0cnVjdCBhdGgxMWtfZGJyaW5nICpyaW5nLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kYnJpbmcuYy0yNDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kYnJpbmcuYzoyNDI6XFx0cmV0ID0gYXRoMTFrX2RwX3Nybmdfc2V0dXAoYXItXFx1MDAzZWFiLCBcXHUwMDI2cmluZy1cXHUwMDNlcmVmaWxsX3NybmcsIEhBTF9SWERNQV9ESVJfQlVGLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGJyaW5nLmMtMjQzLVxcdFxcdFxcdFxcdCAgIHJpbmdfbnVtLCBhci1cXHUwMDNlcGRldl9pZHgsIG51bV9lbnRyaWVzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYz0xODE9c3RhdGljIHZvaWQgYXRoMTFrX2RwX3NybmdfbXNpX3NldHVwKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtMjIwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYzoyMjE6aW50IGF0aDExa19kcF9zcm5nX3NldHVwKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIHN0cnVjdCBkcF9zcm5nICpyaW5nLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy0yMjItXFx0XFx0XFx0IGVudW0gaGFsX3JpbmdfdHlwZSB0eXBlLCBpbnQgcmluZ19udW0sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmM9MzcyPXN0YXRpYyBpbnQgYXRoMTFrX2RwX3NybmdfY29tbW9uX3NldHVwKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtMzc4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYzozNzk6XFx0cmV0ID0gYXRoMTFrX2RwX3Nybmdfc2V0dXAoYWIsIFxcdTAwMjZkcC1cXHUwMDNld2JtX2Rlc2NfcmVsX3JpbmcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTM4MC1cXHRcXHRcXHRcXHQgICBIQUxfU1cyV0JNX1JFTEVBU0UsIDAsIDAsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtMzg3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYzozODg6XFx0cmV0ID0gYXRoMTFrX2RwX3Nybmdfc2V0dXAoYWIsIFxcdTAwMjZkcC1cXHUwMDNldGNsX2NtZF9yaW5nLCBIQUxfVENMX0NNRCwgMCwgMCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtMzg5LVxcdFxcdFxcdFxcdCAgIERQX1RDTF9DTURfUklOR19TSVpFKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy0zOTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jOjM5NTpcXHRyZXQgPSBhdGgxMWtfZHBfc3JuZ19zZXR1cChhYiwgXFx1MDAyNmRwLVxcdTAwM2V0Y2xfc3RhdHVzX3JpbmcsIEhBTF9UQ0xfU1RBVFVTLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy0zOTYtXFx0XFx0XFx0XFx0ICAgMCwgMCwgRFBfVENMX1NUQVRVU19SSU5HX1NJWkUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTQwNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmM6NDA2OlxcdFxcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFiLCBcXHUwMDI2ZHAtXFx1MDAzZXR4X3JpbmdbaV0udGNsX2RhdGFfcmluZyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtNDA3LVxcdFxcdFxcdFxcdFxcdCAgIEhBTF9UQ0xfREFUQSwgdGNsX251bSwgMCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy00MTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jOjQxNTpcXHRcXHRyZXQgPSBhdGgxMWtfZHBfc3JuZ19zZXR1cChhYiwgXFx1MDAyNmRwLVxcdTAwM2V0eF9yaW5nW2ldLnRjbF9jb21wX3JpbmcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTQxNi1cXHRcXHRcXHRcXHRcXHQgICBIQUxfV0JNMlNXX1JFTEVBU0UsIHdibV9udW0sIDAsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtNDMxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYzo0MzI6XFx0cmV0ID0gYXRoMTFrX2RwX3Nybmdfc2V0dXAoYWIsIFxcdTAwMjZkcC1cXHUwMDNlcmVvX3JlaW5qZWN0X3JpbmcsIEhBTF9SRU9fUkVJTkpFQ1QsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTQzMy1cXHRcXHRcXHRcXHQgICAwLCAwLCBEUF9SRU9fUkVJTkpFQ1RfUklOR19TSVpFKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy00MzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jOjQ0MDpcXHRyZXQgPSBhdGgxMWtfZHBfc3JuZ19zZXR1cChhYiwgXFx1MDAyNmRwLVxcdTAwM2VyeF9yZWxfcmluZywgSEFMX1dCTTJTV19SRUxFQVNFLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy00NDEtXFx0XFx0XFx0XFx0ICAgRFBfUlhfUkVMRUFTRV9SSU5HX05VTSwgMCwgRFBfUlhfUkVMRUFTRV9SSU5HX1NJWkUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTQ0Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmM6NDQ3OlxcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFiLCBcXHUwMDI2ZHAtXFx1MDAzZXJlb19leGNlcHRfcmluZywgSEFMX1JFT19FWENFUFRJT04sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTQ0OC1cXHRcXHRcXHRcXHQgICAwLCAwLCBEUF9SRU9fRVhDRVBUSU9OX1JJTkdfU0laRSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtNDU0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYzo0NTU6XFx0cmV0ID0gYXRoMTFrX2RwX3Nybmdfc2V0dXAoYWIsIFxcdTAwMjZkcC1cXHUwMDNlcmVvX2NtZF9yaW5nLCBIQUxfUkVPX0NNRCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtNDU2LVxcdFxcdFxcdFxcdCAgIDAsIDAsIERQX1JFT19DTURfUklOR19TSVpFKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy00NjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jOjQ2OTpcXHRyZXQgPSBhdGgxMWtfZHBfc3JuZ19zZXR1cChhYiwgXFx1MDAyNmRwLVxcdTAwM2VyZW9fc3RhdHVzX3JpbmcsIEhBTF9SRU9fU1RBVFVTLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy00NzAtXFx0XFx0XFx0XFx0ICAgMCwgMCwgRFBfUkVPX1NUQVRVU19SSU5HX1NJWkUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jPTY0OD1zdGF0aWMgaW50IGF0aDExa193Ym1faWRsZV9yaW5nX3NldHVwKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIHUzMiAqbl9saW5rX2Rlc2MpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtNjc0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYzo2NzU6XFx0cmV0ID0gYXRoMTFrX2RwX3Nybmdfc2V0dXAoYWIsIFxcdTAwMjZkcC1cXHUwMDNld2JtX2lkbGVfcmluZyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtNjc2LVxcdFxcdFxcdFxcdCAgIEhBTF9XQk1fSURMRV9MSU5LLCAwLCAwLCAqbl9saW5rX2Rlc2MpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5oPTE2NzI9dm9pZCBhdGgxMWtfZHBfc3JuZ19jbGVhbnVwKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIHN0cnVjdCBkcF9zcm5nICpyaW5nKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmg6MTY3MzppbnQgYXRoMTFrX2RwX3Nybmdfc2V0dXAoc3RydWN0IGF0aDExa19iYXNlICphYiwgc3RydWN0IGRwX3NybmcgKnJpbmcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5oLTE2NzQtXFx0XFx0XFx0IGVudW0gaGFsX3JpbmdfdHlwZSB0eXBlLCBpbnQgcmluZ19udW0sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmM9NTQ2PWludCBhdGgxMWtfZHBfcGRldl9yZW9fc2V0dXAoc3RydWN0IGF0aDExa19iYXNlICphYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYy01NTItXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIERQX1JFT19EU1RfUklOR19NQVg7IGkrKykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYzo1NTM6XFx0XFx0cmV0ID0gYXRoMTFrX2RwX3Nybmdfc2V0dXAoYWIsIFxcdTAwMjZkcC1cXHUwMDNlcmVvX2RzdF9yaW5nW2ldLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYy01NTQtXFx0XFx0XFx0XFx0XFx0ICAgSEFMX1JFT19EU1QsIGksIDAsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmM9NTcwPXN0YXRpYyBpbnQgYXRoMTFrX2RwX3J4X3BkZXZfc3JuZ19hbGxvYyhzdHJ1Y3QgYXRoMTFrICphcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYy01NzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jOjU3ODpcXHRyZXQgPSBhdGgxMWtfZHBfc3JuZ19zZXR1cChhci1cXHUwMDNlYWIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jLTU3OS1cXHRcXHRcXHRcXHQgICBcXHUwMDI2ZHAtXFx1MDAzZXJ4X3JlZmlsbF9idWZfcmluZy5yZWZpbGxfYnVmX3JpbmcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmMtNTg4LVxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBhYi1cXHUwMDNlaHdfcGFyYW1zLm51bV9yeGRtYV9wZXJfcGRldjsgaSsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jOjU4OTpcXHRcXHRcXHRyZXQgPSBhdGgxMWtfZHBfc3JuZ19zZXR1cChhci1cXHUwMDNlYWIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jLTU5MC1cXHRcXHRcXHRcXHRcXHRcXHQgICBcXHUwMDI2ZHAtXFx1MDAzZXJ4X21hY19idWZfcmluZ1tpXSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYy02MDEtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGFiLVxcdTAwM2Vod19wYXJhbXMubnVtX3J4ZG1hX3Blcl9wZGV2OyBpKyspIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmM6NjAyOlxcdFxcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFyLVxcdTAwM2VhYiwgXFx1MDAyNmRwLVxcdTAwM2VyeGRtYV9lcnJfZHN0X3JpbmdbaV0sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jLTYwMy1cXHRcXHRcXHRcXHRcXHQgICBIQUxfUlhETUFfRFNULCAwLCBkcC1cXHUwMDNlbWFjX2lkICsgaSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYy02MTItXFx0XFx0c3JuZyA9IFxcdTAwMjZkcC1cXHUwMDNlcnhfbW9uX3N0YXR1c19yZWZpbGxfcmluZ1tpXS5yZWZpbGxfYnVmX3Jpbmc7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jOjYxMzpcXHRcXHRyZXQgPSBhdGgxMWtfZHBfc3JuZ19zZXR1cChhci1cXHUwMDNlYWIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jLTYxNC1cXHRcXHRcXHRcXHRcXHQgICBzcm5nLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jLTYzNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmM6NjM2OlxcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFyLVxcdTAwM2VhYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmMtNjM3LVxcdFxcdFxcdFxcdCAgIFxcdTAwMjZkcC1cXHUwMDNlcnhkbWFfbW9uX2J1Zl9yaW5nLnJlZmlsbF9idWZfcmluZyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYy02NDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jOjY0NjpcXHRyZXQgPSBhdGgxMWtfZHBfc3JuZ19zZXR1cChhci1cXHUwMDNlYWIsIFxcdTAwMjZkcC1cXHUwMDNlcnhkbWFfbW9uX2RzdF9yaW5nLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYy02NDctXFx0XFx0XFx0XFx0ICAgSEFMX1JYRE1BX01PTklUT1JfRFNULCAwLCBkcC1cXHUwMDNlbWFjX2lkLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jLTY1NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmM6NjU1OlxcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFyLVxcdTAwM2VhYiwgXFx1MDAyNmRwLVxcdTAwM2VyeGRtYV9tb25fZGVzY19yaW5nLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYy02NTYtXFx0XFx0XFx0XFx0ICAgSEFMX1JYRE1BX01PTklUT1JfREVTQywgMCwgZHAtXFx1MDAzZW1hY19pZCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6MzE6NDcuNzkzMDM2NTRaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzYwNDcxNjQ3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRoZSBleHBlcnQ6XG5cbioqVHJhY2luZyB0aGUgRGF0YSBQYXRoIEluaXRpYWxpemF0aW9uKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGBhdGgxMWtgIGRyaXZlciBjb2RlIGFuZCBJIHNlZSB0aGF0IGBhdGgxMWtfZHBfcGRldl9yZW9fc2V0dXBgIGlzIGJlaW5nIGNhbGxlZC4gVGhhdCBmdW5jdGlvbidzIG9idmlvdXNseSBjcnVjaWFsIGZvciBzZXR0aW5nIHVwIHRoZSByZWNlaXZlIG9mZmxvYWQgZW5naW5lIChSRU8pIG9uIGEgcGVyLWRldmljZSBsZXZlbCwgYnV0IEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBjb250ZXh0LiBXaGVyZSdzIHRoaXMgY2FsbGVkIGZyb20/IEFoLCBpdCdzIHRyaWdnZXJlZCBieSBgYXRoMTFrX2RwX3BkZXZfYWxsb2NgLiBMZXQncyBzdGVwIGJhY2sgYSBiaXQgYW5kIGZpbmQgb3V0ICp3aGVyZSogdGhhdCBhbGxvY2F0aW9uIGZ1bmN0aW9uIGl0c2VsZiBpcyBiZWluZyBpbnZva2VkLiBUaGF0IHdpbGwgZ2l2ZSBtZSB0aGUgYnJvYWRlciBwaWN0dXJlIG9mIGhvdyB0aGUgZGF0YSBwYXRoIGlzIGJlaW5nIGluaXRpYWxpemVkIGFuZCBhbGxvdyBtZSB0byBzZWUgdGhlIGRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNhbGwgY2hhaW4gdG8gdHJ1bHkgZ3Jhc3AgdGhlIGZsb3cgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTcyOTgsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjozMTo1MS4zOTc3NTU1MDNaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwNTQyNTEwMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdGgxMWtfZHBfcGRldl9hbGxvY1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuYz0yMDMxPXN0YXRpYyBpbnQgYXRoMTFrX2NvcmVfcGRldl9jcmVhdGUoc3RydWN0IGF0aDExa19iYXNlICphYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jLTIwNDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmM6MjA0MTpcXHRyZXQgPSBhdGgxMWtfZHBfcGRldl9hbGxvYyhhYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmMtMjA0Mi1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmM9ODg5PXZvaWQgYXRoMTFrX2RwX3BkZXZfcHJlX2FsbG9jKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtOTEyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYzo5MTM6aW50IGF0aDExa19kcF9wZGV2X2FsbG9jKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTkxNC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmg9MTY2ND1pbnQgYXRoMTFrX2RwX2FsbG9jKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuaDoxNjY1OmludCBhdGgxMWtfZHBfcGRldl9hbGxvYyhzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmgtMTY2Ni12b2lkIGF0aDExa19kcF9wZGV2X3ByZV9hbGxvYyhzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6MzE6NTEuNzAzMTkxMTA0WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3MjM3NDkwMjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyBgYXRoMTFrX2NvcmVfcGRldl9jcmVhdGVgIEluaXRpYWxpemF0aW9uKipcblxuT2theSwgSSdtIHRyYWNpbmcgdGhlIGluaXRpYWxpemF0aW9uIHBhdGggZm9yIGBhdGgxMWtfY29yZV9wZGV2X2NyZWF0ZWAuIE15IGluaXRpYWwgdGhvdWdodCBpcywgYmFzZWQgb24gZXhwZXJpZW5jZSwgdGhhdCBpdCdzIGxpa2VseSBpbnZva2VkIGVpdGhlciBieSBgYXRoMTFrX2NvcmVfcW1pX2Zpcm13YXJlX3JlYWR5YCDigJMgYWZ0ZXIgdGhlIFFNSSBpbnRlcmZhY2UgaXMgZXN0YWJsaXNoZWQgYW5kIGZpcm13YXJlIGlzIGdvb2QgdG8gZ28g4oCTIG9yIHBvdGVudGlhbGx5IGR1cmluZyB0aGUgYnJvYWRlciBgYXRoMTFrX2NvcmVfaW5pdGAgc2VxdWVuY2UuIFRoaXMgaXMgd2hlcmUgSSdkICpleHBlY3QqIHRoZSBwaHlzaWNhbCBkZXZpY2UgY29udGV4dCB0byBiZSBjcmVhdGVkLiBJdCdzIHRoZSBtb3N0IGxvZ2ljYWwgcGxhY2UsIGdpdmVuIHdoYXQgYHBkZXZgIHJlcHJlc2VudHMuIEkgbmVlZCB0byBxdWlja2x5IGNvbmZpcm0gdGhpczsgYSBxdWljayBjb2RlIGRpdmUgaW50byB0aG9zZSBmdW5jdGlvbnMgaXMgdGhlIG5leHQgbG9naWNhbCBzdGVwLiBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIGNhbGwgZ3JhcGggdG8gc2VlIHdoYXQgc3BlY2lmaWNhbGx5IHRyaWdnZXJzIHRoZSBjcmVhdGlvbiBvZiB0aGUgcGRldi4gRmluZGluZyB0aGlzIHdpbGwgaGVscCBtZSB1bmRlcnN0YW5kIHRoZSBvdmVyYWxsIHRpbWluZyBhbmQgZGVwZW5kZW5jaWVzIHdpdGhpbiB0aGUgZHJpdmVyIGluaXRpYWxpemF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODAwNywiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjMxOjU2LjQyNjk0MzU5N1oiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjYzNTk2MzI0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0aDExa19jb3JlX3BkZXZfY3JlYXRlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jPTIwMjM9c3RhdGljIHZvaWQgYXRoMTFrX2NvcmVfc29jX2Rlc3Ryb3koc3RydWN0IGF0aDExa19iYXNlICphYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jLTIwMzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmM6MjAzMTpzdGF0aWMgaW50IGF0aDExa19jb3JlX3BkZXZfY3JlYXRlKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmMtMjAzMi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuYz0yMjYzPWludCBhdGgxMWtfY29yZV9xbWlfZmlybXdhcmVfcmVhZHkoc3RydWN0IGF0aDExa19iYXNlICphYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jLTIzMDgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmM6MjMwOTpcXHRyZXQgPSBhdGgxMWtfY29yZV9wZGV2X2NyZWF0ZShhYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmMtMjMxMC1cXHRpZiAocmV0KSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjMxOjU2LjY5MDU0NjY4WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2NzU5MzYyNjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBSZWFjaGFiaWxpdHkgb2YgYGF0aDExa19kcF9zcm5nX3NldHVwYCBmb3IgRnV6emluZyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBwYXRoIGFuZCBpdCdzIGNsZWFyIHRoYXQgYGF0aDExa19kcF9zcm5nX3NldHVwYCBpcyBhbHdheXMgY2FsbGVkIGZyb20gYGF0aDExa19jb3JlX3FtaV9maXJtd2FyZV9yZWFkeWAuIFRoYXQgbWVhbnMsIHRoZSBRTUkgZmlybXdhcmUgaGFzIHRvIGJlIGZ1bGx5IGluaXRpYWxpemVkIGFuZCByZWFkeSB0byBnbyBiZWZvcmUgd2UgZXZlbiBnZXQgKmNsb3NlKiB0byB0aGF0IGZ1bmN0aW9uLlxuXG5JbW1lZGlhdGVseSwgbXkgZXhwZXJ0IGluc3RpbmN0IGlzIHNjcmVhbWluZyBcIkhhcmR3YXJlIGRlcGVuZGVuY3khXCIgSSBrbm93IGZyb20gZXhwZXJpZW5jZSB0aGF0IHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdvb2dsZSBDb21wdXRlIEVuZ2luZSBvciBRRU1VIGp1c3QgKmFyZW4ndCogc2V0IHVwIHRvIGhhbmRsZSBRTUkgZmlybXdhcmUgaW4gYSByZWFsaXN0aWMgd2F5LCB1bmxlc3Mgd2UncmUgdGFsa2luZyBzb21lIHNlcmlvdXNseSBzb3BoaXN0aWNhdGVkIGVtdWxhdGlvbi4gIFRoZXJlZm9yZSwgSSdtIG1hcmtpbmcgdGhpcyBhcyBgV29ydGhGdXp6aW5nPWZhbHNlYC4gSXQncyBqdXN0IG5vdCBwcmFjdGljYWwgb3IgZWZmaWNpZW50IHRvIHRyeSBhbmQgcmVhY2ggdGhhdCBwb2ludCBpbiB0aGVzZSBjb21tb24gdGVzdGluZyBzZXR1cHMuXG5cbkJ1dCwgYmVmb3JlIEkgY29tcGxldGVseSBkaXNtaXNzIGl0LCBsZXQncyBqdXN0IG1ha2UgKmFic29sdXRlbHkqIHN1cmUgdGhlcmUgYXJlbid0IGFueSBzbmVha3kgb3RoZXIgY2FsbHMgdG8gYGF0aDExa19kcF9zcm5nX3NldHVwYC4gTXkgaW5pdGlhbCBzZWFyY2ggYWxzbyByZXZlYWxlZCBgYXRoMTFrX2RicmluZ19zcm5nX3NldHVwYCwgc28gSSBuZWVkIHRvIGdvIG92ZXIgdGhhdCBvbmUgbm93IGFuZCBzZWUgd2hlcmUgaXQncyBjYWxsZWQuIEdvdHRhIGJlIHRob3JvdWdoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODYxNywiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjozMjowMS4zNjY0ODgwNDVaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNjYyMjg1MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdGgxMWtfZGJyaW5nX3Nybmdfc2V0dXBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYz04ODM9c3RhdGljIGludCBhdGgxMWtfY2ZyX3JpbmdfYWxsb2Moc3RydWN0IGF0aDExayAqYXIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTg4OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jOjg4OTpcXHRyZXQgPSBhdGgxMWtfZGJyaW5nX3Nybmdfc2V0dXAoYXIsIFxcdTAwMjZjZnItXFx1MDAzZXJ4X3JpbmcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYy04OTAtXFx0XFx0XFx0XFx0ICAgICAgIEFUSDExS19DRlJfTlVNX1JJTkdfRU5UUklFUyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGJyaW5nLmM9MjE0PWludCBhdGgxMWtfZGJyaW5nX2J1Zl9zZXR1cChzdHJ1Y3QgYXRoMTFrICphcixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGJyaW5nLmMtMjM2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGJyaW5nLmM6MjM3OmludCBhdGgxMWtfZGJyaW5nX3Nybmdfc2V0dXAoc3RydWN0IGF0aDExayAqYXIsIHN0cnVjdCBhdGgxMWtfZGJyaW5nICpyaW5nLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGJyaW5nLmMtMjM4LVxcdFxcdFxcdCAgICAgaW50IHJpbmdfbnVtLCBpbnQgbnVtX2VudHJpZXMpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RicmluZy5oPTczPWludCBhdGgxMWtfZGJyaW5nX2J1Zl9zZXR1cChzdHJ1Y3QgYXRoMTFrICphcixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGJyaW5nLmgtNzUtXFx0XFx0XFx0ICAgIHN0cnVjdCBhdGgxMWtfZGJyaW5nX2NhcCAqZGJfY2FwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RicmluZy5oOjc2OmludCBhdGgxMWtfZGJyaW5nX3Nybmdfc2V0dXAoc3RydWN0IGF0aDExayAqYXIsIHN0cnVjdCBhdGgxMWtfZGJyaW5nICpyaW5nLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGJyaW5nLmgtNzctXFx0XFx0XFx0ICAgICBpbnQgcmluZ19udW0sIGludCBudW1fZW50cmllcyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3NwZWN0cmFsLmM9ODE4PXN0YXRpYyBpbnQgYXRoMTFrX3NwZWN0cmFsX3JpbmdfYWxsb2Moc3RydWN0IGF0aDExayAqYXIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3NwZWN0cmFsLmMtODIzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvc3BlY3RyYWwuYzo4MjQ6XFx0cmV0ID0gYXRoMTFrX2RicmluZ19zcm5nX3NldHVwKGFyLCBcXHUwMDI2c3AtXFx1MDAzZXJ4X3JpbmcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9zcGVjdHJhbC5jLTgyNS1cXHRcXHRcXHRcXHQgICAgICAgMCwgZGJfY2FwLVxcdTAwM2VtaW5fZWxlbSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjMyOjAxLjQ4MzExNjYzOFoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTE2NDI5NjcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipBbmFseXppbmcgYGF0aDExa2AgUmluZyBBbGxvY2F0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgcmluZyBhbGxvY2F0aW9uIGZ1bmN0aW9uczogYGF0aDExa19jZnJfcmluZ19hbGxvY2AgYW5kIGBhdGgxMWtfc3BlY3RyYWxfcmluZ19hbGxvY2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBsZXQncyBkcmlsbCBkb3duIGFuZCB1bmRlcnN0YW5kIHRoZSBjYWxsIGdyYXBoIG9mIGBhdGgxMWtfY2ZyX3JpbmdfYWxsb2NgIGZpcnN0LiBJIHdhbnQgdG8gc2VlIGV4YWN0bHkgKndoZXJlKiB0aGlzIGZ1bmN0aW9uIGlzIGJlaW5nIGNhbGxlZCBmcm9tIHdpdGhpbiB0aGUgYGF0aDExa2AgZHJpdmVyLiBLbm93aW5nIHRoZSBjYWxsIHNpdGVzIHdpbGwgcHJvdmlkZSBjb250ZXh0IG9uIGl0cyBwdXJwb3NlIGFuZCBob3cgaXQgZml0cyBpbnRvIHRoZSBicm9hZGVyIGRhdGEgZmxvdy4gTGV0J3Mgc2VlIHdoYXQgdGhlIGNvZGUgcmV2ZWFscy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk3MjgsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjozMjowNS41OTk1NTA1MDhaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg2OTQ3MjY0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0aDExa19jZnJfcmluZ19hbGxvY1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jPTg3NT1zdGF0aWMgdm9pZCBhdGgxMWtfY2ZyX3JpbmdfZnJlZShzdHJ1Y3QgYXRoMTFrICphcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtODgyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmM6ODgzOnN0YXRpYyBpbnQgYXRoMTFrX2Nmcl9yaW5nX2FsbG9jKHN0cnVjdCBhdGgxMWsgKmFyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtODg0LVxcdFxcdFxcdFxcdCBzdHJ1Y3QgYXRoMTFrX2RicmluZ19jYXAgKmRiX2NhcClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmM9OTUxPWludCBhdGgxMWtfY2ZyX2luaXQoc3RydWN0IGF0aDExa19iYXNlICphYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtOTgzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmM6OTg0OlxcdFxcdHJldCA9IGF0aDExa19jZnJfcmluZ19hbGxvYyhhciwgXFx1MDAyNmRiX2NhcCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYy05ODUtXFx0XFx0aWYgKHJldCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjozMjowNS42ODY1MDI1NzNaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDA2Nzc2NzM4NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKkRlY29uc3RydWN0aW5nIHRoZSBDYWxsIHRvIGBhdGgxMWtfY2ZyX2luaXRgKipcblxuT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgYGF0aDExa19jZnJfaW5pdGAgaXMgYmVpbmcgY2FsbGVkIGZyb20uIFRoYXQncyB0aGUgY29yZSBxdWVzdGlvbiwgaXNuJ3QgaXQ/IEtub3dpbmcgdGhlIGNhbGxpbmcgY29udGV4dCBpcyBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIGl0cyBwdXJwb3NlIGFuZCBpbXBhY3Qgd2l0aGluIHRoZSBsYXJnZXIgYXRoMTFrIGRyaXZlciBmcmFtZXdvcmsuIEkgaW1tZWRpYXRlbHkgdGhpbmsgb2YgYSBmZXcgYXZlbnVlcyB0byBwdXJzdWUuIEZpcnN0LCBJ4oCZbGwgbmVlZCB0byB0cmFjZSB0aGUgZnVuY3Rpb24ncyBkZWZpbml0aW9uLiBJcyBpdCBhIHN0YXRpYyBmdW5jdGlvbiB3aXRoaW4gYSBzcGVjaWZpYyBtb2R1bGUsIG9yIGlzIGl0IGV4cG9ydGVkIGFuZCBjYWxsYWJsZSBmcm9tIGVsc2V3aGVyZT8gVGhlIGtlcm5lbCBzb3VyY2UgY29kZSBpcyBteSBmcmllbmQgaGVyZS4gSSdsbCBuZWVkIHRvIHVzZSB0b29scyBsaWtlIGBncmVwYCBvciBteSBJREUncyBcImZpbmQgcmVmZXJlbmNlc1wiIGZ1bmN0aW9uYWxpdHkgdG8gbG9jYXRlIGFsbCBpbnN0YW5jZXMgd2hlcmUgYGF0aDExa19jZnJfaW5pdGAgaXMgaW52b2tlZC5cblxuT25jZSBJJ3ZlIGdvdCB0aGUgY2FsbCBzaXRlcywgSSdsbCBuZWVkIHRvIG1ldGljdWxvdXNseSBhbmFseXplIGVhY2ggb25lLiBXaGF0J3MgdGhlIHN1cnJvdW5kaW5nIGNvZGUgZG9pbmc/IFdoYXQgZGF0YSBpcyBiZWluZyBwYXNzZWQgdG8gdGhlIGZ1bmN0aW9uPyBXaGF0J3MgdGhlIGNvbnRyb2wgZmxvdyB0aGF0IGxlYWRzIHRvIHRoaXMgY2FsbD8gSXMgaXQgdHJpZ2dlcmVkIGJ5IGhhcmR3YXJlIGluaXRpYWxpemF0aW9uLCBhIHJlZ3VsYXRvcnkgZXZlbnQsIG9yIHBlcmhhcHMgYSB1c2VyLXNwYWNlIGNvbmZpZ3VyYXRpb24gY29tbWFuZD9cblxuSSBhbHNvIG5lZWQgdG8ga2VlcCBpbiBtaW5kIHRoZSBwb3RlbnRpYWwgZm9yIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIG9yIHBsYXRmb3JtLXNwZWNpZmljIGltcGxlbWVudGF0aW9ucy4gVGhlIGNhbGwgbWlnaHQgYmUgd3JhcHBlZCBpbiBgI2lmZGVmYCBkaXJlY3RpdmVzIG9yIHVzZSBkaWZmZXJlbnQgaW1wbGVtZW50YXRpb25zIGRlcGVuZGluZyBvbiB0aGUgaGFyZHdhcmUgdmFyaWFudCBvciB0YXJnZXQgb3BlcmF0aW5nIHN5c3RlbS4gVGhlc2UgZGV0YWlscyBhcmUgdml0YWwgdG8gZ2V0IHRoZSBiaWdnZXIgcGljdHVyZS4gSW4gc2hvcnQsIGl0J3Mgbm90IGp1c3QgKndoZXJlKiBpdCdzIGNhbGxlZCBmcm9tIGJ1dCAqd2h5KiBhbmQgKnVuZGVyIHdoYXQgY29uZGl0aW9ucyogdGhhdCBtYXR0ZXJzLiBUaGlzIGFuYWx5c2lzIHdpbGwgcHJvdmlkZSBhbGwgdGhlIG5lY2Vzc2FyeSBpbnNpZ2h0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAyNjAsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjozMjowOS43NTQyNzUxMDdaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMTY4OTc2MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdGgxMWtfY2ZyX2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYz05MjM9dm9pZCBhdGgxMWtfY2ZyX2RlaW5pdChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYy05NTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYzo5NTE6aW50IGF0aDExa19jZnJfaW5pdChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtOTUyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmg9MjA5PWVudW0gYXRoMTFrX2Nmcl9jYXB0dXJlX2J3IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmgtMjE2LSNpZmRlZiBDT05GSUdfQVRIMTFLX0NGUlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmg6MjE3OmludCBhdGgxMWtfY2ZyX2luaXQoc3RydWN0IGF0aDExa19iYXNlICphYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuaC0yMTgtdm9pZCBhdGgxMWtfY2ZyX2RlaW5pdChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmg9MjQwPXN0YXRpYyBpbmxpbmUgdm9pZCBhdGgxMWtfY2ZyX3VwZGF0ZV9waHltb2RlKHN0cnVjdCBhdGgxMWsgKmFyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuaC0yNDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuaDoyNDU6c3RhdGljIGlubGluZSBpbnQgYXRoMTFrX2Nmcl9pbml0KHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuaC0yNDYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmM9MjAzMT1zdGF0aWMgaW50IGF0aDExa19jb3JlX3BkZXZfY3JlYXRlKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuYy0yMDY1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jOjIwNjY6XFx0cmV0ID0gYXRoMTFrX2Nmcl9pbml0KGFiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuYy0yMDY3LVxcdGlmIChyZXQpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6MzI6MDkuODY1OTcyNzNaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDk5NjA4MzE0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipVbnJlYWNoYWJsZSBDb2RlIGluIGEgVmlydHVhbGl6ZWQgRW52aXJvbm1lbnQqKlxuXG5Pa2F5LCBzbyBJJ20gY2lyY2xpbmcgYmFjayB0byBgYXRoMTFrX2NvcmVfcGRldl9jcmVhdGVgIOKAkyB0aGF0IGZ1bmN0aW9uIGFnYWluLiBJdCdzIGNsZWFyIHRoYXQgdGhlIGNyZWF0aW9uIHByb2Nlc3MsIHdoZXRoZXIgdGhyb3VnaCBgYXRoMTFrX2NvcmVfcGRldl9jcmVhdGVgIG9yIGBhdGgxMWtfZHBfYWxsb2NgLCBpcyBmdW5kYW1lbnRhbGx5IHRpZWQgdG8gdGhlIGNhbGwgZnJvbSBgYXRoMTFrX2NvcmVfcW1pX2Zpcm13YXJlX3JlYWR5YC4gQW5kIGdpdmVuIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIGFyY2hpdGVjdHVyZSwgdGhpcyBzdHJvbmdseSBpbmRpY2F0ZXMgdGhhdCB0aGUgcmVsZXZhbnQgY29kZSBwYXRoIGlzbid0IGdvaW5nIHRvIGJlIHJlYWNoYWJsZSBpbiBhIHB1cmVseSB2aXJ0dWFsaXplZCBjb250ZXh0LiBXZSdyZSBtaXNzaW5nIHRoZSBjcnVjaWFsIGhhcmR3YXJlIGFuZCBmaXJtd2FyZSBpbnRlcmFjdGlvbi4gVGhlIHN5c3RlbSBuZWVkcyB0byBiZSByZWFsLiBUaGVyZWZvcmUsIEkgY2FuIGNvbmZpZGVudGx5IG1hcmsgYFdvcnRoRnV6emluZ2AgYXMgYGZhbHNlYCBmb3IgdGhpcyBzZWN0aW9uLiBUaGF0J3MgdGhlIGNvbmNsdXNpb24gSSd2ZSBjb21lIHRvLCBzbyBJJ2xsIGdvIGFoZWFkIGFuZCBzZXQgdGhlIHJlc3VsdHMgYWNjb3JkaW5nbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMjMxLCJPdXRwdXRUb2tlbnMiOjE0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjozMjoxNC44NjIwNTk0MzVaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzMzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBtb2RpZmllZCBmdW5jdGlvbiBgYXRoMTFrX2RwX3Nybmdfc2V0dXBgIGlzIHBhcnQgb2YgdGhlIGRhdGFwYXRoIGluaXRpYWxpemF0aW9uIGZvciB0aGUgYXRoMTFrIGRyaXZlciAoUXVhbGNvbW0gQXRoZXJvcyA4MDIuMTFheCkuIEl0IGlzIG9ubHkgY2FsbGVkIGFmdGVyIHRoZSBRTUkgZmlybXdhcmUgaXMgc3VjY2Vzc2Z1bGx5IGxvYWRlZCBhbmQgcmVhZHkgKGBhdGgxMWtfY29yZV9xbWlfZmlybXdhcmVfcmVhZHlgKS4gU2luY2UgUUVNVSBkb2VzIG5vdCBlbXVsYXRlIGF0aDExayBoYXJkd2FyZSBhbmQgc3l6a2FsbGVyIGNhbm5vdCBwcm92aWRlIHRoZSBuZWNlc3NhcnkgaGFyZHdhcmUgc3RhdGUgYW5kIGZpcm13YXJlIHRvIHJlYWNoIHRoaXMgaW5pdGlhbGl6YXRpb24gcGhhc2UsIHRoaXMgY29kZSBpcyB1bnJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIG1vZGlmaWVkIGZ1bmN0aW9uIGBhdGgxMWtfZHBfc3JuZ19zZXR1cGAgaXMgcGFydCBvZiB0aGUgZGF0YXBhdGggaW5pdGlhbGl6YXRpb24gZm9yIHRoZSBhdGgxMWsgZHJpdmVyIChRdWFsY29tbSBBdGhlcm9zIDgwMi4xMWF4KS4gSXQgaXMgb25seSBjYWxsZWQgYWZ0ZXIgdGhlIFFNSSBmaXJtd2FyZSBpcyBzdWNjZXNzZnVsbHkgbG9hZGVkIGFuZCByZWFkeSAoYGF0aDExa19jb3JlX3FtaV9maXJtd2FyZV9yZWFkeWApLiBTaW5jZSBRRU1VIGRvZXMgbm90IGVtdWxhdGUgYXRoMTFrIGhhcmR3YXJlIGFuZCBzeXprYWxsZXIgY2Fubm90IHByb3ZpZGUgdGhlIG5lY2Vzc2FyeSBoYXJkd2FyZSBzdGF0ZSBhbmQgZmlybXdhcmUgdG8gcmVhY2ggdGhpcyBpbml0aWFsaXphdGlvbiBwaGFzZSwgdGhpcyBjb2RlIGlzIHVucmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflow7jcmd[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-02 12:02:24 +0000 UTC FinishedAt: 2026-08-02 12:32:16 +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+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjMxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIG1vZGlmaWVkIGZ1bmN0aW9uIGBhdGgxMWtfZHBfc3JuZ19zZXR1cGAgaXMgcGFydCBvZiB0aGUgZGF0YXBhdGggaW5pdGlhbGl6YXRpb24gZm9yIHRoZSBhdGgxMWsgZHJpdmVyIChRdWFsY29tbSBBdGhlcm9zIDgwMi4xMWF4KS4gSXQgaXMgb25seSBjYWxsZWQgYWZ0ZXIgdGhlIFFNSSBmaXJtd2FyZSBpcyBzdWNjZXNzZnVsbHkgbG9hZGVkIGFuZCByZWFkeSAoYGF0aDExa19jb3JlX3FtaV9maXJtd2FyZV9yZWFkeWApLiBTaW5jZSBRRU1VIGRvZXMgbm90IGVtdWxhdGUgYXRoMTFrIGhhcmR3YXJlIGFuZCBzeXprYWxsZXIgY2Fubm90IHByb3ZpZGUgdGhlIG5lY2Vzc2FyeSBoYXJkd2FyZSBzdGF0ZSBhbmQgZmlybXdhcmUgdG8gcmVhY2ggdGhpcyBpbml0aWFsaXphdGlvbiBwaGFzZSwgdGhpcyBjb2RlIGlzIHVucmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjozMTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDE0MGE5MDA1NWUzZDFhMzhiMDAzZDRkYzU2NjUyZmM4MjA5MjNiNTdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEF1ZyAyIDEyOjMxOjAwIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuY1xuaW5kZXggZjM4OWI5N2FjYmRkNS4uYmU2NWQ3M2I5MDRiNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jXG5AQCAtMzEzLDYgJiM0MzszMTMsNyBAQCBpbnQgYXRoMTFrX2RwX3Nybmdfc2V0dXAoc3RydWN0IGF0aDExa19iYXNlICphYiwgc3RydWN0IGRwX3NybmcgKnJpbmcsXG4gXHRjYXNlIEhBTF9SWERNQV9ESVJfQlVGOlxuIFx0XHRicmVhaztcbiBcdGRlZmF1bHQ6XG4mIzQzO1x0XHRhdGgxMWtfZHBfc3JuZ19jbGVhbnVwKGFiLCByaW5nKTtcbiBcdFx0YXRoMTFrX3dhcm4oYWIsIFwmIzM0O05vdCBhIHZhbGlkIHJpbmcgdHlwZSBpbiBkcCA6JWRcXG5cJiMzNDssIHR5cGUpO1xuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdH1cbkBAIC0zMjQsNiAmIzQzOzMyNSw3IEBAIGludCBhdGgxMWtfZHBfc3JuZ19zZXR1cChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCBzdHJ1Y3QgZHBfc3JuZyAqcmluZyxcbiBcbiBcdHJldCA9IGF0aDExa19oYWxfc3JuZ19zZXR1cChhYiwgdHlwZSwgcmluZ19udW0sIG1hY19pZCwgXHUwMDI2cGFyYW1zKTtcbiBcdGlmIChyZXQgXHUwMDNjIDApIHtcbiYjNDM7XHRcdGF0aDExa19kcF9zcm5nX2NsZWFudXAoYWIsIHJpbmcpO1xuIFx0XHRhdGgxMWtfd2FybihhYiwgXCYjMzQ7ZmFpbGVkIHRvIHNldHVwIHNybmc6ICVkIHJpbmdfaWQgJWRcXG5cJiMzNDssXG4gXHRcdFx0ICAgIHJldCwgcmluZ19udW0pO1xuIFx0XHRyZXR1cm4gcmV0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjMxPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBtb2RpZmllZCBmdW5jdGlvbiBgYXRoMTFrX2RwX3Nybmdfc2V0dXBgIGlzIHBhcnQgb2YgdGhlIGRhdGFwYXRoIGluaXRpYWxpemF0aW9uIGZvciB0aGUgYXRoMTFrIGRyaXZlciAoUXVhbGNvbW0gQXRoZXJvcyA4MDIuMTFheCkuIEl0IGlzIG9ubHkgY2FsbGVkIGFmdGVyIHRoZSBRTUkgZmlybXdhcmUgaXMgc3VjY2Vzc2Z1bGx5IGxvYWRlZCBhbmQgcmVhZHkgKGBhdGgxMWtfY29yZV9xbWlfZmlybXdhcmVfcmVhZHlgKS4gU2luY2UgUUVNVSBkb2VzIG5vdCBlbXVsYXRlIGF0aDExayBoYXJkd2FyZSBhbmQgc3l6a2FsbGVyIGNhbm5vdCBwcm92aWRlIHRoZSBuZWNlc3NhcnkgaGFyZHdhcmUgc3RhdGUgYW5kIGZpcm13YXJlIHRvIHJlYWNoIHRoaXMgaW5pdGlhbGl6YXRpb24gcGhhc2UsIHRoaXMgY29kZSBpcyB1bnJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAxNDBhOTAwNTVlM2QxYTM4YjAwM2Q0ZGM1NjY1MmZjODIwOTIzYjU3CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBBdWcgMiAxMjozMTowMCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYwppbmRleCBmMzg5Yjk3YWNiZGQ1Li5iZTY1ZDczYjkwNGI2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jCkBAIC0zMTMsNiAmIzQzOzMxMyw3IEBAIGludCBhdGgxMWtfZHBfc3JuZ19zZXR1cChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCBzdHJ1Y3QgZHBfc3JuZyAqcmluZywKIAljYXNlIEhBTF9SWERNQV9ESVJfQlVGOgogCQlicmVhazsKIAlkZWZhdWx0OgomIzQzOwkJYXRoMTFrX2RwX3NybmdfY2xlYW51cChhYiwgcmluZyk7CiAJCWF0aDExa193YXJuKGFiLCAmIzM0O05vdCBhIHZhbGlkIHJpbmcgdHlwZSBpbiBkcCA6JWRcbiYjMzQ7LCB0eXBlKTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQpAQCAtMzI0LDYgJiM0MzszMjUsNyBAQCBpbnQgYXRoMTFrX2RwX3Nybmdfc2V0dXAoc3RydWN0IGF0aDExa19iYXNlICphYiwgc3RydWN0IGRwX3NybmcgKnJpbmcsCiAKIAlyZXQgPSBhdGgxMWtfaGFsX3Nybmdfc2V0dXAoYWIsIHR5cGUsIHJpbmdfbnVtLCBtYWNfaWQsICZhbXA7cGFyYW1zKTsKIAlpZiAocmV0ICZsdDsgMCkgewomIzQzOwkJYXRoMTFrX2RwX3NybmdfY2xlYW51cChhYiwgcmluZyk7CiAJCWF0aDExa193YXJuKGFiLCAmIzM0O2ZhaWxlZCB0byBzZXR1cCBzcm5nOiAlZCByaW5nX2lkICVkXG4mIzM0OywKIAkJCSAgICByZXQsIHJpbmdfbnVtKTsKIAkJcmV0dXJuIHJldDsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjI0MgoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDQ1MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIHRoZSBgYXRoMTFrYCBEcml2ZXIqKgoKT2theSwgc28gdGhlcmUmIzM5O3MgYSBwYXRjaCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jYCB0aGF0IGFkZHMgYGF0aDExa19kcF9zcm5nX2NsZWFudXBgIGluIHNvbWUgZXJyb3IgcGF0aHMgd2l0aGluIGBhdGgxMWtfZHBfc3JuZ19zZXR1cGAuIE15IGluaXRpYWwgdGhvdWdodCBpcywgY2FuIHdlIGZ1enogdGhpcyBkcml2ZXI/IGBhdGgxMWtgIGlzIGEgd2lyZWxlc3MgZHJpdmVyIGZvciBRdWFsY29tbSBBdGhlcm9zIDgwMi4xMWF4IGRldmljZXMuIENsYXNzaWMuCgpUaGUgbmV4dCBxdWVzdGlvbjogaG93IGFjY2Vzc2libGUgaXMgdGhpcyBjb2RlIGluIGEgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudD8gR2l2ZW4gdGhhdCBgYXRoMTFrYCB0eXBpY2FsbHkgcmVsaWVzIG9uIHNwZWNpZmljIGhhcmR3YXJlIOKAkyBQQ0llIG9yIEFIQiDigJMgaXQmIzM5O3MgdXN1YWxseSBub3QgdGhhdCBzdHJhaWdodGZvcndhcmQuIFFFTVUgZ2VuZXJhbGx5IGRvZXNuJiMzOTt0IGVtdWxhdGUgdGhlIGhhcmR3YXJlIGRpcmVjdGx5LCByaWdodD8gSSByZWNhbGwgdGhhdCBgbWFjODAyMTFfaHdzaW1gIGlzIGVtdWxhdGVkLCBidXQgYGF0aDExa2AgaXMgYSByZWFsIGhhcmR3YXJlIGRyaXZlci4gSXQmIzM5O3MgYnVpbHQgdG8gaW50ZXJmYWNlIHdpdGggcGh5c2ljYWwgaGFyZHdhcmUuCgpTbywgdGhlIHJlYWwgcXVlc3Rpb24gaXM6IENhbiB3ZSBhY3R1YWxseSBmdXp6IGEgaGFyZHdhcmUgZHJpdmVyPyBUaGVzZSBraW5kcyBvZiBkcml2ZXJzLCB0aGF0IG5lZWQgcGh5c2ljYWwgUENJZSBjYXJkcyBhbmQgd2hpY2ggYXJlbiYjMzk7dCBlbXVsYXRlZCBpbiBRRU1VLCBhcmUgbm9ybWFsbHkgYSBkZWFkIGVuZC4gVW5sZXNzIHRoZXJlJiMzOTtzIGEgVVNCIG9yIHNvbWUgb3RoZXIgaW50ZXJmYWNlIGF2YWlsYWJsZSwgb3IsIHdhaXQsIGNvdWxkIHdlIGxldmVyYWdlIFBDSSBmdXp6aW5nPwoKQWgsIHJpZ2h0LCBzeXprYWxsZXIuIFN5emthbGxlciAqZG9lcyogaGF2ZSBQQ0kgZnV6emluZyBjYXBhYmlsaXRpZXMsIGxpa2UgdmhjaSBhbmQgb3RoZXJzLiBUaGUgcXVlc3Rpb24gdGhlbiBiZWNvbWVzLCBkb2VzIGl0IHN1cHBvcnQgYGF0aDExa2A/IFdlIG5lZWQgdG8gdmVyaWZ5IGlmIHRoZXJlJiMzOTtzIGFueSBleGlzdGluZyBQQ0kgZW11bGF0aW9uIG9yIHN1cHBvcnQgZm9yIGBhdGgxMWtgLiBObywgdGhlIGRyaXZlciBpdHNlbGYgaXMgYSBQQ0kvQUhCIGRyaXZlci4KCkxldCYjMzk7cyBjaGVjayB0aGUgY3JpdGVyaWEuIFRoZSBzaXR1YXRpb24gd2UgYXJlIGluIGlzOiAmIzM0O0NvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLCBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4mIzM0OyBJcyBgYXRoMTFrYCBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIGRyaXZlcj8gWWVzLCBpdCYjMzk7cyBRdWFsY29tbSBBdGhlcm9zLCBzbyBpdCBkZWZpbml0ZWx5IGZhbGxzIHVuZGVyIHRoYXQgY2F0ZWdvcnkuCgpPa2F5LCBzbyBzeXprYWxsZXIgKmNhbiogZnV6eiBQQ0kgZHJpdmVycyB1c2luZyBpdHMgUENJIGZ1enplciwgd2hpY2ggaW5jbHVkZXMgYHN5ei11c2JgIGFuZCBgc3l6LXBjaWAuIEV4Y2VsbGVudC4gVGhlIGtleSBxdWVzdGlvbiBub3cgYmVjb21lcywgaXMgYGF0aDExa2AgYWN0dWFsbHkgZnV6emFibGU/IEkgbmVlZCB0byBkaWcgaW50byB0aGUga2VybmVsIHNvdXJjZSBhbmQgc2VhcmNoIGZvciB0aGUgYGF0aDExa2AgY29uZmlndXJhdGlvbi4gTGV0JiMzOTtzIHNlZSBpZiB3ZSBjYW4gZ2V0IHRoaXMgbW92aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2F0aDExa19kcF9zcm5nX3NldHVwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kYnJpbmcuYz0yMzc9aW50IGF0aDExa19kYnJpbmdfc3JuZ19zZXR1cChzdHJ1Y3QgYXRoMTFrICphciwgc3RydWN0IGF0aDExa19kYnJpbmcgKnJpbmcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kYnJpbmcuYy0yNDEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RicmluZy5jOjI0MjpcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFyLVx1MDAzZWFiLCBcdTAwMjZyaW5nLVx1MDAzZXJlZmlsbF9zcm5nLCBIQUxfUlhETUFfRElSX0JVRixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGJyaW5nLmMtMjQzLVx0XHRcdFx0ICAgcmluZ19udW0sIGFyLVx1MDAzZXBkZXZfaWR4LCBudW1fZW50cmllcyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jPTE4MT1zdGF0aWMgdm9pZCBhdGgxMWtfZHBfc3JuZ19tc2lfc2V0dXAoc3RydWN0IGF0aDExa19iYXNlICphYixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtMjIwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jOjIyMTppbnQgYXRoMTFrX2RwX3Nybmdfc2V0dXAoc3RydWN0IGF0aDExa19iYXNlICphYiwgc3RydWN0IGRwX3NybmcgKnJpbmcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtMjIyLVx0XHRcdCBlbnVtIGhhbF9yaW5nX3R5cGUgdHlwZSwgaW50IHJpbmdfbnVtLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYz0zNzI9c3RhdGljIGludCBhdGgxMWtfZHBfc3JuZ19jb21tb25fc2V0dXAoc3RydWN0IGF0aDExa19iYXNlICphYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtMzc4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jOjM3OTpcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFiLCBcdTAwMjZkcC1cdTAwM2V3Ym1fZGVzY19yZWxfcmluZyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy0zODAtXHRcdFx0XHQgICBIQUxfU1cyV0JNX1JFTEVBU0UsIDAsIDAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTM4Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYzozODg6XHRyZXQgPSBhdGgxMWtfZHBfc3JuZ19zZXR1cChhYiwgXHUwMDI2ZHAtXHUwMDNldGNsX2NtZF9yaW5nLCBIQUxfVENMX0NNRCwgMCwgMCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy0zODktXHRcdFx0XHQgICBEUF9UQ0xfQ01EX1JJTkdfU0laRSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTM5NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYzozOTU6XHRyZXQgPSBhdGgxMWtfZHBfc3JuZ19zZXR1cChhYiwgXHUwMDI2ZHAtXHUwMDNldGNsX3N0YXR1c19yaW5nLCBIQUxfVENMX1NUQVRVUyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy0zOTYtXHRcdFx0XHQgICAwLCAwLCBEUF9UQ0xfU1RBVFVTX1JJTkdfU0laRSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTQwNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYzo0MDY6XHRcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFiLCBcdTAwMjZkcC1cdTAwM2V0eF9yaW5nW2ldLnRjbF9kYXRhX3JpbmcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtNDA3LVx0XHRcdFx0XHQgICBIQUxfVENMX0RBVEEsIHRjbF9udW0sIDAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTQxNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYzo0MTU6XHRcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFiLCBcdTAwMjZkcC1cdTAwM2V0eF9yaW5nW2ldLnRjbF9jb21wX3JpbmcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtNDE2LVx0XHRcdFx0XHQgICBIQUxfV0JNMlNXX1JFTEVBU0UsIHdibV9udW0sIDAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTQzMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYzo0MzI6XHRyZXQgPSBhdGgxMWtfZHBfc3JuZ19zZXR1cChhYiwgXHUwMDI2ZHAtXHUwMDNlcmVvX3JlaW5qZWN0X3JpbmcsIEhBTF9SRU9fUkVJTkpFQ1QsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtNDMzLVx0XHRcdFx0ICAgMCwgMCwgRFBfUkVPX1JFSU5KRUNUX1JJTkdfU0laRSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTQzOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYzo0NDA6XHRyZXQgPSBhdGgxMWtfZHBfc3JuZ19zZXR1cChhYiwgXHUwMDI2ZHAtXHUwMDNlcnhfcmVsX3JpbmcsIEhBTF9XQk0yU1dfUkVMRUFTRSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy00NDEtXHRcdFx0XHQgICBEUF9SWF9SRUxFQVNFX1JJTkdfTlVNLCAwLCBEUF9SWF9SRUxFQVNFX1JJTkdfU0laRSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTQ0Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYzo0NDc6XHRyZXQgPSBhdGgxMWtfZHBfc3JuZ19zZXR1cChhYiwgXHUwMDI2ZHAtXHUwMDNlcmVvX2V4Y2VwdF9yaW5nLCBIQUxfUkVPX0VYQ0VQVElPTixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy00NDgtXHRcdFx0XHQgICAwLCAwLCBEUF9SRU9fRVhDRVBUSU9OX1JJTkdfU0laRSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTQ1NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYzo0NTU6XHRyZXQgPSBhdGgxMWtfZHBfc3JuZ19zZXR1cChhYiwgXHUwMDI2ZHAtXHUwMDNlcmVvX2NtZF9yaW5nLCBIQUxfUkVPX0NNRCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy00NTYtXHRcdFx0XHQgICAwLCAwLCBEUF9SRU9fQ01EX1JJTkdfU0laRSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTQ2OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYzo0Njk6XHRyZXQgPSBhdGgxMWtfZHBfc3JuZ19zZXR1cChhYiwgXHUwMDI2ZHAtXHUwMDNlcmVvX3N0YXR1c19yaW5nLCBIQUxfUkVPX1NUQVRVUyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy00NzAtXHRcdFx0XHQgICAwLCAwLCBEUF9SRU9fU1RBVFVTX1JJTkdfU0laRSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jPTY0OD1zdGF0aWMgaW50IGF0aDExa193Ym1faWRsZV9yaW5nX3NldHVwKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIHUzMiAqbl9saW5rX2Rlc2MpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTY3NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYzo2NzU6XHRyZXQgPSBhdGgxMWtfZHBfc3JuZ19zZXR1cChhYiwgXHUwMDI2ZHAtXHUwMDNld2JtX2lkbGVfcmluZyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy02NzYtXHRcdFx0XHQgICBIQUxfV0JNX0lETEVfTElOSywgMCwgMCwgKm5fbGlua19kZXNjKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmg9MTY3Mj12b2lkIGF0aDExa19kcF9zcm5nX2NsZWFudXAoc3RydWN0IGF0aDExa19iYXNlICphYiwgc3RydWN0IGRwX3NybmcgKnJpbmcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5oOjE2NzM6aW50IGF0aDExa19kcF9zcm5nX3NldHVwKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIHN0cnVjdCBkcF9zcm5nICpyaW5nLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5oLTE2NzQtXHRcdFx0IGVudW0gaGFsX3JpbmdfdHlwZSB0eXBlLCBpbnQgcmluZ19udW0sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jPTU0Nj1pbnQgYXRoMTFrX2RwX3BkZXZfcmVvX3NldHVwKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jLTU1Mi1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIERQX1JFT19EU1RfUklOR19NQVg7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmM6NTUzOlx0XHRyZXQgPSBhdGgxMWtfZHBfc3JuZ19zZXR1cChhYiwgXHUwMDI2ZHAtXHUwMDNlcmVvX2RzdF9yaW5nW2ldLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jLTU1NC1cdFx0XHRcdFx0ICAgSEFMX1JFT19EU1QsIGksIDAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jPTU3MD1zdGF0aWMgaW50IGF0aDExa19kcF9yeF9wZGV2X3NybmdfYWxsb2Moc3RydWN0IGF0aDExayAqYXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jLTU3Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYzo1Nzg6XHRyZXQgPSBhdGgxMWtfZHBfc3JuZ19zZXR1cChhci1cdTAwM2VhYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYy01NzktXHRcdFx0XHQgICBcdTAwMjZkcC1cdTAwM2VyeF9yZWZpbGxfYnVmX3JpbmcucmVmaWxsX2J1Zl9yaW5nLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYy01ODgtXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGFiLVx1MDAzZWh3X3BhcmFtcy5udW1fcnhkbWFfcGVyX3BkZXY7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmM6NTg5Olx0XHRcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFyLVx1MDAzZWFiLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jLTU5MC1cdFx0XHRcdFx0XHQgICBcdTAwMjZkcC1cdTAwM2VyeF9tYWNfYnVmX3JpbmdbaV0sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jLTYwMS1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIGFiLVx1MDAzZWh3X3BhcmFtcy5udW1fcnhkbWFfcGVyX3BkZXY7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmM6NjAyOlx0XHRyZXQgPSBhdGgxMWtfZHBfc3JuZ19zZXR1cChhci1cdTAwM2VhYiwgXHUwMDI2ZHAtXHUwMDNlcnhkbWFfZXJyX2RzdF9yaW5nW2ldLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jLTYwMy1cdFx0XHRcdFx0ICAgSEFMX1JYRE1BX0RTVCwgMCwgZHAtXHUwMDNlbWFjX2lkICYjNDM7IGksXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jLTYxMi1cdFx0c3JuZyA9IFx1MDAyNmRwLVx1MDAzZXJ4X21vbl9zdGF0dXNfcmVmaWxsX3JpbmdbaV0ucmVmaWxsX2J1Zl9yaW5nO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jOjYxMzpcdFx0cmV0ID0gYXRoMTFrX2RwX3Nybmdfc2V0dXAoYXItXHUwMDNlYWIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmMtNjE0LVx0XHRcdFx0XHQgICBzcm5nLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYy02MzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmM6NjM2Olx0cmV0ID0gYXRoMTFrX2RwX3Nybmdfc2V0dXAoYXItXHUwMDNlYWIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmMtNjM3LVx0XHRcdFx0ICAgXHUwMDI2ZHAtXHUwMDNlcnhkbWFfbW9uX2J1Zl9yaW5nLnJlZmlsbF9idWZfcmluZyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmMtNjQ1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jOjY0NjpcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFyLVx1MDAzZWFiLCBcdTAwMjZkcC1cdTAwM2VyeGRtYV9tb25fZHN0X3JpbmcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmMtNjQ3LVx0XHRcdFx0ICAgSEFMX1JYRE1BX01PTklUT1JfRFNULCAwLCBkcC1cdTAwM2VtYWNfaWQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jLTY1NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYzo2NTU6XHRyZXQgPSBhdGgxMWtfZHBfc3JuZ19zZXR1cChhci1cdTAwM2VhYiwgXHUwMDI2ZHAtXHUwMDNlcnhkbWFfbW9uX2Rlc2NfcmluZyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYy02NTYtXHRcdFx0XHQgICBIQUxfUlhETUFfTU9OSVRPUl9ERVNDLCAwLCBkcC1cdTAwM2VtYWNfaWQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjM2MAoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDIwNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEZ1enppbmcgUG90ZW50aWFsIG9mIGBhdGgxMWtgKioKCk9rYXksIHNvIHRoZSBjb2RlIGluIHF1ZXN0aW9uIHNlZW1zIHRvIGJlIHdpdGhpbiBgYXRoMTFrX2RwX3Nybmdfc2V0dXBgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtSaWdodCwgYGF0aDExa2AuLi4gdGhhdCYjMzk7cyBRdWFsY29tbSBBdGhlcm9zJiMzOTsgODAyLjExYXggaGFyZHdhcmUgZHJpdmVyLiYjMzQ7IE5vdyB0aGUgcXVlc3Rpb24gYmVjb21lcywgZG9lcyB0aGlzIGRyaXZlciByZWx5IG9uIGFjdHVhbCBQQ0llIGhhcmR3YXJlLCBhbmQgd2lsbCBpdCBub3Qgd29yayB3aXRoIHN0YW5kYXJkIFFFTVUgZW11bGF0aW9uPyBHaXZlbiB0aGF0IGBhdGgxMWtgIGlzIGEgUENJZS9BSEIgZHJpdmVyLCB0aGUgYW5zd2VyIGlzIG1vc3QgbGlrZWx5IHllcy4gVGhhdCBtYWtlcyB0aGluZ3MgaW50ZXJlc3RpbmcgZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUuCgpUaGUgcHJvbXB0IHNwZWNpZmljYWxseSBtZW50aW9ucyBjb2RlIHdpdGhpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycywgd2hpY2ggYWxzbyByZXF1aXJlIHBoeXNpY2FsIFBDSWUgY2FyZHMsIGFuZCBtZW50aW9ucyBzZXZlcmFsIGRyaXZlcnMgdGhhdCBmYWxsIGludG8gdGhpcyBjYXRlZ29yeS4gQW5kIGBhdGgxMWtgICppcyogdmVuZG9yLXNwZWNpZmljLCBzbyBpdCBsaW5lcyB1cCB3aXRoIHRoZSBkZXNjcmlwdGlvbi4KCkJ1dCB3YWl0IGEgbWludXRlISBTeXprYWxsZXIgKmRvZXMqIGhhdmUgUENJIGZ1enppbmcgY2FwYWJpbGl0aWVzLCBkb2VzbiYjMzk7dCBpdD8gVGhlIHF1ZXN0aW9uIG5vdyBiZWNvbWVzLCBoYXMgYW55b25lIGFscmVhZHkgYXR0ZW1wdGVkIHRvIGZ1enogYGF0aDExa2A/IEkgbmVlZCB0byBjaGVjayBmb3IgYSBzeXprYWxsZXIgZGVzY3JpcHRpb24gcmVsYXRlZCB0byB0aGlzIGRyaXZlci4gTGV0JiMzOTtzIGRpZyBkZWVwZXIgYW5kIHNlZSB3aGF0IHdlIGNhbiBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoMTFrJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7c3lzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjg2NwoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDc5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgdGhlIEF0aDExayBEcml2ZXIgd2l0aCBTeXprYWxsZXIqKgoKT2theSwgc28gdGhlcmUmIzM5O3Mgbm8gZGVkaWNhdGVkIHN5emthbGxlciBkZXNjcmlwdGlvbiBmb3IgdGhlIGF0aDExayBkcml2ZXIsIHdoaWNoIGlzIGEgYml0IG9mIGEgcm9hZGJsb2NrLiBCdXQgaG9sZCBvbiwgdGhlIGdlbmVyaWMgUENJIGZ1enplciAoc3BlY2lmaWNhbGx5IGBzeXpfcGNpX2RldmljZWApIGlzIGF2YWlsYWJsZSwgYW5kIHRoYXQgb3BlbnMgdXAgc29tZSBwb3NzaWJpbGl0aWVzLiBUaGUgcXVlc3Rpb24gbm93IGJlY29tZXM6IGNhbiBJIHNvbWVob3cgdHJpZ2dlciBgYXRoMTFrX2RwX3Nybmdfc2V0dXBgIOKAkyB0aGUgdGFyZ2V0IOKAkyB0aHJvdWdoIGEgUENJIHByb2JlPyBUaGF0IHNlZW1zIGxpa2UgdGhlIG1vc3QgZGlyZWN0IHJvdXRlLCBhbmQgaXQmIzM5O3MgdGhlIG9uZSBJIG5lZWQgdG8gZXhwbG9yZS4gVGltZSB0byBkaXZlIGludG8gdGhlIGBhdGgxMWtfcGNpX3Byb2JlYCBmdW5jdGlvbiBhbmQgc2VlIGlmIGl0JiMzOTtzIGZlYXNpYmxlIHRvIG1hbmlwdWxhdGUgdGhlIFBDSSBwcm9iZSBwcm9jZXNzIHRvIHJlYWNoIHdoYXQgSSYjMzk7bSBsb29raW5nIGZvci4gTGV0JiMzOTtzIHNlZSBpZiB0aGlzIGh1bmNoIHBhbnMgb3V0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2F0aDExa19wY2lfcHJvYmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3BjaS5jPTk0MD1zdGF0aWMgaW50IGF0aDExa19wY2lfc2V0X2lycV9hZmZpbml0eV9oaW50KHN0cnVjdCBhdGgxMWtfcGNpICphYl9wY2ksXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYy05NDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3BjaS5jOjk0OTpzdGF0aWMgaW50IGF0aDExa19wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3BjaS5jLTk1MC1cdFx0XHQgICAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKnBjaV9kZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYz0xMjk2PXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBhdGgxMWtfcGNpX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3BjaS5jLTEyOTgtXHQuaWRfdGFibGUgPSBhdGgxMWtfcGNpX2lkX3RhYmxlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYzoxMjk5Olx0LnByb2JlID0gYXRoMTFrX3BjaV9wcm9iZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmMtMTMwMC1cdC5yZW1vdmUgPSBhdGgxMWtfcGNpX3JlbW92ZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NTAyCgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMjAyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRnV6emFiaWxpdHkgb2YgdGhlIGF0aDExayBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcHJvbXB0IGFuZCB0aGlua2luZyBhYm91dCBob3cgdG8gYXBwcm9hY2ggdGhpcyBmdXp6aW5nIHRhc2suIFRoZSBtZW50aW9uIG9mIFBDSSBkcml2ZXJzIGltbWVkaWF0ZWx5IGJyaW5ncyBgc3l6X3BjaV9kZXZpY2VgIHRvIG1pbmQuIElmIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBQQ0kgZHJpdmVyLCBzeXprYWxsZXIgc2hvdWxkIGJlIGFibGUgdG8gcHJvYmUgaXQsIHJpZ2h0PyBCdXQgdGhlIHByb21wdCBzcGVjaWZpY2FsbHkgY2FsbHMgb3V0IHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzLCBhbmQgbWVudGlvbnMgdGhhdCB0aGV5IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KCk5vdywgaXMgYXRoMTFrIG9uZSBvZiB0aG9zZT8gTm8sIGl0JiMzOTtzIGEgd2lyZWxlc3MgZHJpdmVyLCBub3QgYSBTbWFydE5JQyBvciBHUFUuIEhvd2V2ZXIsIGl0ICppcyogYSBoYXJkd2FyZSBkcml2ZXIuIFNvLCBkb2VzIGl0IHJlcXVpcmUgcGh5c2ljYWwgY2FyZHMgdGhhdCBRRU1VIGNhbiYjMzk7dCBlbXVsYXRlPyBUaGUgYW5zd2VyIGlzIHllcy4gU3RpbGwsIEkga25vdyB0aGF0IHN5emthbGxlcuKAmXMgUENJIGZ1enplciBjYW4gZW11bGF0ZSBQQ0kgZGV2aWNlcyBhbmQgdHJpZ2dlciB0aGUgZGV2aWNlJiMzOTtzIHByb2JlIGZ1bmN0aW9ucywgcmlnaHQ/IFNvLCBoZXJlJiMzOTtzIHRoZSBjcnVjaWFsIHF1ZXN0aW9uOiBJZiBzeXprYWxsZXImIzM5O3MgUENJIGZ1enplciAqY2FuKiB0cmlnZ2VyIGl0LCBpcyB0aGF0IGNvbnNpZGVyZWQgZnV6emFibGU/IEkgdGhpbmsgaXQgbWlnaHQgYmUhIEl0JiMzOTtzIHdvcnRoIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbi4gTGV0JiMzOTtzIHNlZSBpZiB3ZSBjYW4gZ2V0IHRvIGBhdGgxMWtfZHBfc3JuZ19zZXR1cGAgZHVyaW5nIHByb2JlLiBUaGF0JiMzOTtzIHRoZSBrZXkgdG8gZmlndXJpbmcgb3V0IHRoZSBhbnN3ZXIgdG8gdGhpcyBxdWVzdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoMTFrX2RwX3Nybmdfc2V0dXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RicmluZy5jPTIzNz1pbnQgYXRoMTFrX2RicmluZ19zcm5nX3NldHVwKHN0cnVjdCBhdGgxMWsgKmFyLCBzdHJ1Y3QgYXRoMTFrX2RicmluZyAqcmluZyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RicmluZy5jLTI0MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGJyaW5nLmM6MjQyOlx0cmV0ID0gYXRoMTFrX2RwX3Nybmdfc2V0dXAoYXItXHUwMDNlYWIsIFx1MDAyNnJpbmctXHUwMDNlcmVmaWxsX3NybmcsIEhBTF9SWERNQV9ESVJfQlVGLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kYnJpbmcuYy0yNDMtXHRcdFx0XHQgICByaW5nX251bSwgYXItXHUwMDNlcGRldl9pZHgsIG51bV9lbnRyaWVzKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmM9MTgxPXN0YXRpYyB2b2lkIGF0aDExa19kcF9zcm5nX21zaV9zZXR1cChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy0yMjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmM6MjIxOmludCBhdGgxMWtfZHBfc3JuZ19zZXR1cChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCBzdHJ1Y3QgZHBfc3JuZyAqcmluZyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy0yMjItXHRcdFx0IGVudW0gaGFsX3JpbmdfdHlwZSB0eXBlLCBpbnQgcmluZ19udW0sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jPTM3Mj1zdGF0aWMgaW50IGF0aDExa19kcF9zcm5nX2NvbW1vbl9zZXR1cChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy0zNzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmM6Mzc5Olx0cmV0ID0gYXRoMTFrX2RwX3Nybmdfc2V0dXAoYWIsIFx1MDAyNmRwLVx1MDAzZXdibV9kZXNjX3JlbF9yaW5nLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTM4MC1cdFx0XHRcdCAgIEhBTF9TVzJXQk1fUkVMRUFTRSwgMCwgMCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtMzg3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jOjM4ODpcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFiLCBcdTAwMjZkcC1cdTAwM2V0Y2xfY21kX3JpbmcsIEhBTF9UQ0xfQ01ELCAwLCAwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTM4OS1cdFx0XHRcdCAgIERQX1RDTF9DTURfUklOR19TSVpFKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtMzk0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jOjM5NTpcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFiLCBcdTAwMjZkcC1cdTAwM2V0Y2xfc3RhdHVzX3JpbmcsIEhBTF9UQ0xfU1RBVFVTLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTM5Ni1cdFx0XHRcdCAgIDAsIDAsIERQX1RDTF9TVEFUVVNfUklOR19TSVpFKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtNDA1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jOjQwNjpcdFx0cmV0ID0gYXRoMTFrX2RwX3Nybmdfc2V0dXAoYWIsIFx1MDAyNmRwLVx1MDAzZXR4X3JpbmdbaV0udGNsX2RhdGFfcmluZyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy00MDctXHRcdFx0XHRcdCAgIEhBTF9UQ0xfREFUQSwgdGNsX251bSwgMCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtNDE0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jOjQxNTpcdFx0cmV0ID0gYXRoMTFrX2RwX3Nybmdfc2V0dXAoYWIsIFx1MDAyNmRwLVx1MDAzZXR4X3JpbmdbaV0udGNsX2NvbXBfcmluZyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy00MTYtXHRcdFx0XHRcdCAgIEhBTF9XQk0yU1dfUkVMRUFTRSwgd2JtX251bSwgMCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtNDMxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jOjQzMjpcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFiLCBcdTAwMjZkcC1cdTAwM2VyZW9fcmVpbmplY3RfcmluZywgSEFMX1JFT19SRUlOSkVDVCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy00MzMtXHRcdFx0XHQgICAwLCAwLCBEUF9SRU9fUkVJTkpFQ1RfUklOR19TSVpFKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtNDM5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jOjQ0MDpcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFiLCBcdTAwMjZkcC1cdTAwM2VyeF9yZWxfcmluZywgSEFMX1dCTTJTV19SRUxFQVNFLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTQ0MS1cdFx0XHRcdCAgIERQX1JYX1JFTEVBU0VfUklOR19OVU0sIDAsIERQX1JYX1JFTEVBU0VfUklOR19TSVpFKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtNDQ2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jOjQ0NzpcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFiLCBcdTAwMjZkcC1cdTAwM2VyZW9fZXhjZXB0X3JpbmcsIEhBTF9SRU9fRVhDRVBUSU9OLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTQ0OC1cdFx0XHRcdCAgIDAsIDAsIERQX1JFT19FWENFUFRJT05fUklOR19TSVpFKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtNDU0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jOjQ1NTpcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFiLCBcdTAwMjZkcC1cdTAwM2VyZW9fY21kX3JpbmcsIEhBTF9SRU9fQ01ELFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTQ1Ni1cdFx0XHRcdCAgIDAsIDAsIERQX1JFT19DTURfUklOR19TSVpFKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtNDY4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jOjQ2OTpcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFiLCBcdTAwMjZkcC1cdTAwM2VyZW9fc3RhdHVzX3JpbmcsIEhBTF9SRU9fU1RBVFVTLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTQ3MC1cdFx0XHRcdCAgIDAsIDAsIERQX1JFT19TVEFUVVNfUklOR19TSVpFKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmM9NjQ4PXN0YXRpYyBpbnQgYXRoMTFrX3dibV9pZGxlX3Jpbmdfc2V0dXAoc3RydWN0IGF0aDExa19iYXNlICphYiwgdTMyICpuX2xpbmtfZGVzYylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtNjc0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jOjY3NTpcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFiLCBcdTAwMjZkcC1cdTAwM2V3Ym1faWRsZV9yaW5nLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTY3Ni1cdFx0XHRcdCAgIEhBTF9XQk1fSURMRV9MSU5LLCAwLCAwLCAqbl9saW5rX2Rlc2MpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuaD0xNjcyPXZvaWQgYXRoMTFrX2RwX3NybmdfY2xlYW51cChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCBzdHJ1Y3QgZHBfc3JuZyAqcmluZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmg6MTY3MzppbnQgYXRoMTFrX2RwX3Nybmdfc2V0dXAoc3RydWN0IGF0aDExa19iYXNlICphYiwgc3RydWN0IGRwX3NybmcgKnJpbmcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmgtMTY3NC1cdFx0XHQgZW51bSBoYWxfcmluZ190eXBlIHR5cGUsIGludCByaW5nX251bSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmM9NTQ2PWludCBhdGgxMWtfZHBfcGRldl9yZW9fc2V0dXAoc3RydWN0IGF0aDExa19iYXNlICphYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmMtNTUyLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgRFBfUkVPX0RTVF9SSU5HX01BWDsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYzo1NTM6XHRcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFiLCBcdTAwMjZkcC1cdTAwM2VyZW9fZHN0X3JpbmdbaV0sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmMtNTU0LVx0XHRcdFx0XHQgICBIQUxfUkVPX0RTVCwgaSwgMCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmM9NTcwPXN0YXRpYyBpbnQgYXRoMTFrX2RwX3J4X3BkZXZfc3JuZ19hbGxvYyhzdHJ1Y3QgYXRoMTFrICphcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmMtNTc3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jOjU3ODpcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFyLVx1MDAzZWFiLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jLTU3OS1cdFx0XHRcdCAgIFx1MDAyNmRwLVx1MDAzZXJ4X3JlZmlsbF9idWZfcmluZy5yZWZpbGxfYnVmX3JpbmcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jLTU4OC1cdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgYWItXHUwMDNlaHdfcGFyYW1zLm51bV9yeGRtYV9wZXJfcGRldjsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYzo1ODk6XHRcdFx0cmV0ID0gYXRoMTFrX2RwX3Nybmdfc2V0dXAoYXItXHUwMDNlYWIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmMtNTkwLVx0XHRcdFx0XHRcdCAgIFx1MDAyNmRwLVx1MDAzZXJ4X21hY19idWZfcmluZ1tpXSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmMtNjAxLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgYWItXHUwMDNlaHdfcGFyYW1zLm51bV9yeGRtYV9wZXJfcGRldjsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYzo2MDI6XHRcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFyLVx1MDAzZWFiLCBcdTAwMjZkcC1cdTAwM2VyeGRtYV9lcnJfZHN0X3JpbmdbaV0sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmMtNjAzLVx0XHRcdFx0XHQgICBIQUxfUlhETUFfRFNULCAwLCBkcC1cdTAwM2VtYWNfaWQgJiM0MzsgaSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmMtNjEyLVx0XHRzcm5nID0gXHUwMDI2ZHAtXHUwMDNlcnhfbW9uX3N0YXR1c19yZWZpbGxfcmluZ1tpXS5yZWZpbGxfYnVmX3Jpbmc7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmM6NjEzOlx0XHRyZXQgPSBhdGgxMWtfZHBfc3JuZ19zZXR1cChhci1cdTAwM2VhYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYy02MTQtXHRcdFx0XHRcdCAgIHNybmcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jLTYzNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYzo2MzY6XHRyZXQgPSBhdGgxMWtfZHBfc3JuZ19zZXR1cChhci1cdTAwM2VhYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYy02MzctXHRcdFx0XHQgICBcdTAwMjZkcC1cdTAwM2VyeGRtYV9tb25fYnVmX3JpbmcucmVmaWxsX2J1Zl9yaW5nLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYy02NDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmM6NjQ2Olx0cmV0ID0gYXRoMTFrX2RwX3Nybmdfc2V0dXAoYXItXHUwMDNlYWIsIFx1MDAyNmRwLVx1MDAzZXJ4ZG1hX21vbl9kc3RfcmluZyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYy02NDctXHRcdFx0XHQgICBIQUxfUlhETUFfTU9OSVRPUl9EU1QsIDAsIGRwLVx1MDAzZW1hY19pZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmMtNjU0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jOjY1NTpcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFyLVx1MDAzZWFiLCBcdTAwMjZkcC1cdTAwM2VyeGRtYV9tb25fZGVzY19yaW5nLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jLTY1Ni1cdFx0XHRcdCAgIEhBTF9SWERNQV9NT05JVE9SX0RFU0MsIDAsIGRwLVx1MDAzZW1hY19pZCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTExMTgKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAzMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQcm9tcHQmIzM5O3MgQXBwbGljYWJpbGl0eSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgcHJvbXB0IHNwZWNpZmljYWxseSBtZW50aW9ucyBjb2RlIHJlbGF0ZWQgdG8gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMuIEkgaW1tZWRpYXRlbHkgdGhvdWdodCBhYm91dCBgYXRoMTFrYCDigJMgaXQmIzM5O3MgYSBRdWFsY29tbSBBdGhlcm9zIDgwMi4xMWF4IGRyaXZlciwgZGVmaW5pdGVseSB2ZW5kb3Itc3BlY2lmaWMgYW5kIFBDSWUuIEhvd2V2ZXIsIGlzIGl0IGEgKnN3aXRjaCosIGEgKlNtYXJ0TklDKiwgb3IgYSAqR1BVKiBkcml2ZXI/IE5vLCBpdCYjMzk7cyBhIHdpcmVsZXNzIGRyaXZlci4gU28sIGluaXRpYWwgcGFzcywgaXQgZG9lc24mIzM5O3QgcXVpdGUgZml0IHRoZSAqdHlwZXMqIG9mIGRyaXZlcnMgbWVudGlvbmVkLgoKVGhlIHNlY29uZCBwYXJ0IG9mIHRoZSBwcm9tcHQgaXMga2V5OiAmIzM0Oy4uLnJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyAqbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUqLiYjMzQ7IFllcywgdGhhdCYjMzk7cyB0cnVlIGZvciBgYXRoMTFrYC4gUUVNVSBkb2VzbiYjMzk7dCBvZmZlciBhIGRpcmVjdCBoYXJkd2FyZSBlbXVsYXRpb24gZm9yIHRoZSBzcGVjaWZpYyBRdWFsY29tbSBBdGhlcm9zIGNoaXBzZXRzLgoKQnV0IHRoZW4gSSByZW1lbWJlcmVkIHRoZSBgc3l6a2FsbGVyYCBQQ0kgZnV6emVyLiBJdCAqY2FuKiBlbXVsYXRlIFBDSSBkZXZpY2VzLCBkb2VzbiYjMzk7dCBpdD8gU28sIGV2ZW4gdGhvdWdoIGl0JiMzOTtzIG5vdCBhICpwZXJmZWN0KiBoYXJkd2FyZSBtb2RlbCwgdGhlIHF1ZXN0aW9uIGJlY29tZXMsIGNvdWxkIGl0IGJlIGZ1enplZCB2aWEgdGhhdCBtZWNoYW5pc20/IFRoZSB3b3JkaW5nIG9mIHRoZSBwcm9tcHQsIGFnYWluLCBzcGVjaWZpY2FsbHkgc2F5cyAqbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUqLiBUaGUgZnV6emVyIG1pZ2h0IGdldCB0aGUgZGV2aWNlIHByb2JlZCwgYnV0IGl0JiMzOTtzIG5vdCB0aGUgJiMzNDtzdGFuZGFyZCYjMzQ7IFFFTVUgZW52aXJvbm1lbnQuCgpUaGVuIEkgY2lyY2xlZCBiYWNrIHRvIHRoZSBmYWN0IHRoYXQgYGF0aDExa2AgaXMgYSB3aXJlbGVzcyBkcml2ZXIuIFN5emthbGxlciAqZG9lcyogaGF2ZSBgbWFjODAyMTFfaHdzaW1gIGZvciB3aXJlbGVzcyBmdXp6aW5nLCBidXQgaXQgYnlwYXNzZXMgdGhlIGRpcmVjdCB1c2Ugb2YgYGF0aDExa2AuCgpTbywgdGhlIGtleSBoZXJlIGlzIHdoZXRoZXIgYHN5emthbGxlcmAmIzM5O3MgUENJIGZ1enplciBjYW4gYmUgbGV2ZXJhZ2VkIHRvICp0cmlnZ2VyKiB0aGUgYGF0aDExa2AgcHJvYmUgc2VxdWVuY2UuIElmIGl0IGNhbiwgdGhlbiB3ZSBtaWdodCBoYXZlIGEgdmlhYmxlIGZ1enppbmcgdGFyZ2V0LiBJdCYjMzk7cyBhIGxvbmcgc2hvdCwgZ2l2ZW4gdGhlIGRyaXZlciB0eXBlLCBidXQgdGhlIHBvdGVudGlhbCBpcyB0aGVyZS4KCkZpbmFsbHksIEkgbmVlZCB0byBjaGVjayB3aGV0aGVyIGBhdGgxMWtgIG5lZWRzIGZpcm13YXJlIHRvIGV2ZW4gYmVnaW4gaXRzIGluaXRpYWxpemF0aW9uLiBNYW55IHdpcmVsZXNzIGRyaXZlcnMgYXJlIGZpcm13YXJlLWRlcGVuZGVudCwgYW5kIGlmIHNvLCBpdCYjMzk7cyBhIG5lY2Vzc2FyeSBzdGVwIGJlZm9yZSBhbnkgbWVhbmluZ2Z1bCBmdXp6aW5nIGNhbiBjb21tZW5jZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cmVxdWVzdF9maXJtd2FyZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZncuYy0xMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZncuYzoxMTpzdGF0aWMgaW50IGF0aDExa19md19yZXF1ZXN0X2Zpcm13YXJlX2FwaV9uKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Z3LmMtMTItXHRcdFx0XHRcdCAgICBjb25zdCBjaGFyICpuYW1lKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZncuYz0xNDc9aW50IGF0aDExa19md19wcmVfaW5pdChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZncuYy0xNTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Z3LmM6MTUxOlx0cmV0ID0gYXRoMTFrX2Z3X3JlcXVlc3RfZmlybXdhcmVfYXBpX24oYWIsIEFUSDExS19GV19BUEkyX0ZJTEUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9mdy5jLTE1Mi1cdGlmIChyZXQgPT0gMCkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjIwMAoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDEyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgRmlybXdhcmUgRGVwZW5kZW5jaWVzIGluIFN5emthbGxlciBDb3ZlcmFnZSoqCgpPa2F5LCBzbyBJJiMzOTttIHRyeWluZyB0byB1bmRlcnN0YW5kIGhvdyB3ZWxsIFN5emthbGxlciBjYW4gY292ZXIgYSBzcGVjaWZpYyBhcmVhLCBhbmQgZmlybXdhcmUgZGVwZW5kZW5jaWVzIGFyZSBkZWZpbml0ZWx5IGEgcG90ZW50aWFsIGh1cmRsZS4gSSYjMzk7bSB0aGlua2luZywgaWYgdGhlIGZ1bmN0aW9uYWxpdHkgSSYjMzk7bSBpbnRlcmVzdGVkIGluLCB3aGF0ZXZlciBpdCBtYXkgYmUsIHJlcXVpcmVzIGEgZmlybXdhcmUgY29tcG9uZW50LCBTeXprYWxsZXImIzM5O3MgY292ZXJhZ2UgbWlnaHQgYmUgbGltaXRlZC4gVW5sZXNzIHRoZSByZXF1aXJlZCBmaXJtd2FyZSBpcyBiYWtlZCBpbnRvIHRoZSBzdGFuZGFyZCBgbGludXgtZmlybXdhcmVgIHBhY2thZ2UgYW5kIHByZXNlbnQgaW4gdGhlIFN5emthbGxlciBpbWFnZSwgb3IgaWYgdGhlcmUmIzM5O3Mgc29tZSBzb3J0IG9mIGdyYWNlZnVsIGZhaWx1cmUgaGFuZGxpbmcgYnVpbHQgaW4sIEkmIzM5O20gcHJvYmFibHkgb3V0IG9mIGx1Y2suCgpUbyBnZXQgYSBoYW5kbGUgb24gdGhpcywgSSBuZWVkIHRvIGludmVzdGlnYXRlIHRoZSBzcGVjaWZpYyBmdW5jdGlvbiBpbiBxdWVzdGlvbjogYGF0aDExa19kcF9zcm5nX3NldHVwYC4gTGV0IG1lIHRyYWNlIGl0cyB1c2FnZSB0byBmaWd1cmUgb3V0IHRoZSBjb250ZXh0IHdoZXJlIGl0IGdldHMgY2FsbGVkLiBGcm9tIGEgcXVpY2sgc2VhcmNoLCBpdCBhcHBlYXJzIHRvIGJlIGNhbGxlZCBmcm9tIGEgZmV3IHBsYWNlcywgbGlrZSBgYXRoMTFrX2RwX3NybmdfY29tbW9uX3NldHVwYCwgYGF0aDExa19kcF9yeF9wZGV2X3NybmdfYWxsb2NgLCBhbmQgcGVyaGFwcyBvdGhlcnMuCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc3RhcnQgd2l0aCB0cmFjaW5nIHRoZSBleGVjdXRpb24gb2YgYGF0aDExa19kcF9zcm5nX2NvbW1vbl9zZXR1cGAuIFRoaXMgc2VlbXMgbGlrZSBhIHJlYXNvbmFibGUgc3RhcnRpbmcgcG9pbnQgdG8gYmVnaW4gdGhlIGFuYWx5c2lzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdGgxMWtfZHBfc3JuZ19jb21tb25fc2V0dXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmM9MzUyPXN0YXRpYyB2b2lkIGF0aDExa19kcF9zcm5nX2NvbW1vbl9jbGVhbnVwKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTM3MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYzozNzI6c3RhdGljIGludCBhdGgxMWtfZHBfc3JuZ19jb21tb25fc2V0dXAoc3RydWN0IGF0aDExa19iYXNlICphYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy0zNzMte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYz0xMDUwPWludCBhdGgxMWtfZHBfYWxsb2Moc3RydWN0IGF0aDExa19iYXNlICphYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtMTA4Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYzoxMDgzOlx0cmV0ID0gYXRoMTFrX2RwX3NybmdfY29tbW9uX3NldHVwKGFiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy0xMDg0LVx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI5MjEKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiA0NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqRGVjb25zdHJ1Y3RpbmcgdGhlIGBhdGgxMWtgIERhdGEgUGF0aCBBbGxvY2F0aW9uKioKCk9rYXksIHNvIGBhdGgxMWtfZHBfYWxsb2NgIGlzIHRoZSBrZXkgZnVuY3Rpb24gaGVyZSwgcmVzcG9uc2libGUgZm9yIGFsbG9jYXRpbmcgcmVzb3VyY2VzIGZvciB0aGUgZGF0YSBwYXRoIHdpdGhpbiB0aGUgYGF0aDExa2AgZHJpdmVyLiBJdCBhcHBlYXJzIGl0IGNhbGxzIGBhdGgxMWtfZHBfc3JuZ19jb21tb25fc2V0dXBgLCB3aGljaCBpcyBpbnRlcmVzdGluZy4gSSYjMzk7bSBnb2luZyB0byBoYXZlIHRvIHVuZGVyc3RhbmQgdGhhdCByZWxhdGlvbnNoaXAuIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgbGFyZ2VyIGNvbnRleHQuCgpJIG5lZWQgdG8gc2VlIHdoZXJlIGBhdGgxMWtfZHBfYWxsb2NgIGlzICphY3R1YWxseSogY2FsbGVkIGZyb20uIFdoYXQgZnVuY3Rpb25zIHRyaWdnZXIgdGhpcyBhbGxvY2F0aW9uPyBXaGF0JiMzOTtzIHRoZSBjYWxsIGdyYXBoIGxpa2U/IElzIGl0IGR1cmluZyBkZXZpY2UgaW5pdGlhbGl6YXRpb24sIHBlci1pbnRlcmZhY2Ugc2V0dXAsIG9yIGlzIGl0IHRyaWdnZXJlZCBvbiBhIHBlci1wYWNrZXQgYmFzaXM/IFVuZGVyc3RhbmRpbmcgdGhlIGNhbGxpbmcgY29udGV4dCBpcyBnb2luZyB0byBwcm92aWRlIGNyaXRpY2FsIGNsdWVzIGFib3V0IHRoZSBkZXNpZ24gYW5kIHRoZSBwZXJmb3JtYW5jZSBpbXBsaWNhdGlvbnMgb2YgdGhlIGRhdGEgcGF0aC4gSSYjMzk7bGwgc3RhcnQgYnkgdHJhY2luZyB0aGUgY2FsbHMgdG8gYGF0aDExa19kcF9hbGxvY2AuIFRoYXQmIzM5O3MgdGhlIGxvZ2ljYWwgZmlyc3Qgc3RlcCBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdGgxMWtfZHBfYWxsb2MmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuYz0yMjYzPWludCBhdGgxMWtfY29yZV9xbWlfZmlybXdhcmVfcmVhZHkoc3RydWN0IGF0aDExa19iYXNlICphYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuYy0yMjkyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmM6MjI5MzpcdHJldCA9IGF0aDExa19kcF9hbGxvYyhhYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuYy0yMjk0LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYz0xMDI1PXZvaWQgYXRoMTFrX2RwX2ZyZWUoc3RydWN0IGF0aDExa19iYXNlICphYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtMTA0OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYzoxMDUwOmludCBhdGgxMWtfZHBfYWxsb2Moc3RydWN0IGF0aDExa19iYXNlICphYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy0xMDUxLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmg9MTY2Mz12b2lkIGF0aDExa19kcF9mcmVlKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5oOjE2NjQ6aW50IGF0aDExa19kcF9hbGxvYyhzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuaC0xNjY1LWludCBhdGgxMWtfZHBfcGRldl9hbGxvYyhzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM2NDkKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAyMDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBSZWFjaGFiaWxpdHkgb2YgYGF0aDExa19jb3JlX3FtaV9maXJtd2FyZV9yZWFkeWAgaW4gYSBWaXJ0dWFsaXplZCBFbnZpcm9ubWVudCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBmdW5jdGlvbiBjYWxsLCBgYXRoMTFrX2NvcmVfcW1pX2Zpcm13YXJlX3JlYWR5YCwgYW5kIHRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyB0aGF0IGl0IHJlcXVpcmVzIFFNSSBmaXJtd2FyZSB0byBiZSByZWFkeS4gVGhhdCYjMzk7cyBhIHByZXR0eSBzdHJvbmcgaW5kaWNhdG9yIHJpZ2h0IHRoZXJlLiBLbm93aW5nIHRoZSB0eXBpY2FsIGNvbnN0cmFpbnRzIG9mIG15IHdvcmssIEkgaW1tZWRpYXRlbHkgcmVjb2duaXplIHRoaXMgYXMgYSBwb3RlbnRpYWwgcm9hZGJsb2NrLiBJbiBhIHN0YW5kYXJkIFFFTVUgc2V0dXAsIG9yIGV2ZW4gc29tZXRoaW5nIG1vcmUgc29waGlzdGljYXRlZCBsaWtlIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIHNldHVwcyBzdWNoIGFzIHVzYiBnYWRnZXQgb3IgbWFjODAyMTFfaHdzaW0sIHJlYWNoaW5nIHRoaXMgZnVuY3Rpb24gaXMgcHJhY3RpY2FsbHkgaW1wb3NzaWJsZS4gV2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgYSBkZXBlbmRlbmN5IG9uIFFNSSBhbmQgdGhlIHN1Y2Nlc3NmdWwgbG9hZGluZyBvZiBhY3R1YWwgZmlybXdhcmUsIHdoaWNoIGlzIGZhciBiZXlvbmQgdGhlIHNjb3BlIG9mIGEgdHlwaWNhbCB2aXJ0dWFsaXphdGlvbiBzY2VuYXJpby4KClRoZSBwcm9tcHQgY29uZmlybXMgbXkgaW5pdGlhbCBzdXNwaWNpb24gYnkgZXhwbGljaXRseSBzdGF0aW5nIHRoYXQgdGhlc2Uga2luZHMgb2YgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgaW4gZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuIEdpdmVuIHRoYXQgYGF0aDExa2AgcmVsaWVzIG9uIHRoaXMgcGh5c2ljYWwgaGFyZHdhcmUgYW5kIGZpcm13YXJlIHJlYWRpbmVzcyB0byBnZXQgdG8gYGF0aDExa19jb3JlX3FtaV9maXJtd2FyZV9yZWFkeWAsIHRoZSBjb25jbHVzaW9uIGlzIGNsZWFyOiB0aGlzIHBhdGggaXMgdW5hY2hpZXZhYmxlIGluIFFFTVUuIFRoYXQgbWVhbnMgV29ydGhGdXp6aW5nIHNob3VsZCBiZSBzZXQgdG8gZmFsc2UuCgpCdXQsIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLCBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgdGhlcmUgYXJlIG5vIG90aGVyIGFsdGVybmF0aXZlIHBhdGhzIHRvIGBhdGgxMWtfZHBfc3JuZ19zZXR1cGAg4oCTIGp1c3QgaW4gY2FzZSB0aGVyZSYjMzk7cyBhbm90aGVyIHBvaW50IG9mIGVudHJ5LiBJdCYjMzk7cyBhbHdheXMgZ29vZCB0byBiZSB0aG9yb3VnaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoMTFrX2RwX3Nybmdfc2V0dXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RicmluZy5jPTIzNz1pbnQgYXRoMTFrX2RicmluZ19zcm5nX3NldHVwKHN0cnVjdCBhdGgxMWsgKmFyLCBzdHJ1Y3QgYXRoMTFrX2RicmluZyAqcmluZyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RicmluZy5jLTI0MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGJyaW5nLmM6MjQyOlx0cmV0ID0gYXRoMTFrX2RwX3Nybmdfc2V0dXAoYXItXHUwMDNlYWIsIFx1MDAyNnJpbmctXHUwMDNlcmVmaWxsX3NybmcsIEhBTF9SWERNQV9ESVJfQlVGLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kYnJpbmcuYy0yNDMtXHRcdFx0XHQgICByaW5nX251bSwgYXItXHUwMDNlcGRldl9pZHgsIG51bV9lbnRyaWVzKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmM9MTgxPXN0YXRpYyB2b2lkIGF0aDExa19kcF9zcm5nX21zaV9zZXR1cChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy0yMjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmM6MjIxOmludCBhdGgxMWtfZHBfc3JuZ19zZXR1cChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCBzdHJ1Y3QgZHBfc3JuZyAqcmluZyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy0yMjItXHRcdFx0IGVudW0gaGFsX3JpbmdfdHlwZSB0eXBlLCBpbnQgcmluZ19udW0sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jPTM3Mj1zdGF0aWMgaW50IGF0aDExa19kcF9zcm5nX2NvbW1vbl9zZXR1cChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy0zNzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmM6Mzc5Olx0cmV0ID0gYXRoMTFrX2RwX3Nybmdfc2V0dXAoYWIsIFx1MDAyNmRwLVx1MDAzZXdibV9kZXNjX3JlbF9yaW5nLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTM4MC1cdFx0XHRcdCAgIEhBTF9TVzJXQk1fUkVMRUFTRSwgMCwgMCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtMzg3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jOjM4ODpcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFiLCBcdTAwMjZkcC1cdTAwM2V0Y2xfY21kX3JpbmcsIEhBTF9UQ0xfQ01ELCAwLCAwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTM4OS1cdFx0XHRcdCAgIERQX1RDTF9DTURfUklOR19TSVpFKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtMzk0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jOjM5NTpcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFiLCBcdTAwMjZkcC1cdTAwM2V0Y2xfc3RhdHVzX3JpbmcsIEhBTF9UQ0xfU1RBVFVTLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTM5Ni1cdFx0XHRcdCAgIDAsIDAsIERQX1RDTF9TVEFUVVNfUklOR19TSVpFKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtNDA1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jOjQwNjpcdFx0cmV0ID0gYXRoMTFrX2RwX3Nybmdfc2V0dXAoYWIsIFx1MDAyNmRwLVx1MDAzZXR4X3JpbmdbaV0udGNsX2RhdGFfcmluZyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy00MDctXHRcdFx0XHRcdCAgIEhBTF9UQ0xfREFUQSwgdGNsX251bSwgMCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtNDE0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jOjQxNTpcdFx0cmV0ID0gYXRoMTFrX2RwX3Nybmdfc2V0dXAoYWIsIFx1MDAyNmRwLVx1MDAzZXR4X3JpbmdbaV0udGNsX2NvbXBfcmluZyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy00MTYtXHRcdFx0XHRcdCAgIEhBTF9XQk0yU1dfUkVMRUFTRSwgd2JtX251bSwgMCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtNDMxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jOjQzMjpcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFiLCBcdTAwMjZkcC1cdTAwM2VyZW9fcmVpbmplY3RfcmluZywgSEFMX1JFT19SRUlOSkVDVCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy00MzMtXHRcdFx0XHQgICAwLCAwLCBEUF9SRU9fUkVJTkpFQ1RfUklOR19TSVpFKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtNDM5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jOjQ0MDpcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFiLCBcdTAwMjZkcC1cdTAwM2VyeF9yZWxfcmluZywgSEFMX1dCTTJTV19SRUxFQVNFLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTQ0MS1cdFx0XHRcdCAgIERQX1JYX1JFTEVBU0VfUklOR19OVU0sIDAsIERQX1JYX1JFTEVBU0VfUklOR19TSVpFKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtNDQ2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jOjQ0NzpcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFiLCBcdTAwMjZkcC1cdTAwM2VyZW9fZXhjZXB0X3JpbmcsIEhBTF9SRU9fRVhDRVBUSU9OLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTQ0OC1cdFx0XHRcdCAgIDAsIDAsIERQX1JFT19FWENFUFRJT05fUklOR19TSVpFKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtNDU0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jOjQ1NTpcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFiLCBcdTAwMjZkcC1cdTAwM2VyZW9fY21kX3JpbmcsIEhBTF9SRU9fQ01ELFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTQ1Ni1cdFx0XHRcdCAgIDAsIDAsIERQX1JFT19DTURfUklOR19TSVpFKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtNDY4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jOjQ2OTpcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFiLCBcdTAwMjZkcC1cdTAwM2VyZW9fc3RhdHVzX3JpbmcsIEhBTF9SRU9fU1RBVFVTLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTQ3MC1cdFx0XHRcdCAgIDAsIDAsIERQX1JFT19TVEFUVVNfUklOR19TSVpFKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmM9NjQ4PXN0YXRpYyBpbnQgYXRoMTFrX3dibV9pZGxlX3Jpbmdfc2V0dXAoc3RydWN0IGF0aDExa19iYXNlICphYiwgdTMyICpuX2xpbmtfZGVzYylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtNjc0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jOjY3NTpcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFiLCBcdTAwMjZkcC1cdTAwM2V3Ym1faWRsZV9yaW5nLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTY3Ni1cdFx0XHRcdCAgIEhBTF9XQk1fSURMRV9MSU5LLCAwLCAwLCAqbl9saW5rX2Rlc2MpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuaD0xNjcyPXZvaWQgYXRoMTFrX2RwX3NybmdfY2xlYW51cChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCBzdHJ1Y3QgZHBfc3JuZyAqcmluZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmg6MTY3MzppbnQgYXRoMTFrX2RwX3Nybmdfc2V0dXAoc3RydWN0IGF0aDExa19iYXNlICphYiwgc3RydWN0IGRwX3NybmcgKnJpbmcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmgtMTY3NC1cdFx0XHQgZW51bSBoYWxfcmluZ190eXBlIHR5cGUsIGludCByaW5nX251bSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmM9NTQ2PWludCBhdGgxMWtfZHBfcGRldl9yZW9fc2V0dXAoc3RydWN0IGF0aDExa19iYXNlICphYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmMtNTUyLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgRFBfUkVPX0RTVF9SSU5HX01BWDsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYzo1NTM6XHRcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFiLCBcdTAwMjZkcC1cdTAwM2VyZW9fZHN0X3JpbmdbaV0sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmMtNTU0LVx0XHRcdFx0XHQgICBIQUxfUkVPX0RTVCwgaSwgMCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmM9NTcwPXN0YXRpYyBpbnQgYXRoMTFrX2RwX3J4X3BkZXZfc3JuZ19hbGxvYyhzdHJ1Y3QgYXRoMTFrICphcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmMtNTc3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jOjU3ODpcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFyLVx1MDAzZWFiLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jLTU3OS1cdFx0XHRcdCAgIFx1MDAyNmRwLVx1MDAzZXJ4X3JlZmlsbF9idWZfcmluZy5yZWZpbGxfYnVmX3JpbmcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jLTU4OC1cdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgYWItXHUwMDNlaHdfcGFyYW1zLm51bV9yeGRtYV9wZXJfcGRldjsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYzo1ODk6XHRcdFx0cmV0ID0gYXRoMTFrX2RwX3Nybmdfc2V0dXAoYXItXHUwMDNlYWIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmMtNTkwLVx0XHRcdFx0XHRcdCAgIFx1MDAyNmRwLVx1MDAzZXJ4X21hY19idWZfcmluZ1tpXSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmMtNjAxLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgYWItXHUwMDNlaHdfcGFyYW1zLm51bV9yeGRtYV9wZXJfcGRldjsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYzo2MDI6XHRcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFyLVx1MDAzZWFiLCBcdTAwMjZkcC1cdTAwM2VyeGRtYV9lcnJfZHN0X3JpbmdbaV0sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmMtNjAzLVx0XHRcdFx0XHQgICBIQUxfUlhETUFfRFNULCAwLCBkcC1cdTAwM2VtYWNfaWQgJiM0MzsgaSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmMtNjEyLVx0XHRzcm5nID0gXHUwMDI2ZHAtXHUwMDNlcnhfbW9uX3N0YXR1c19yZWZpbGxfcmluZ1tpXS5yZWZpbGxfYnVmX3Jpbmc7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmM6NjEzOlx0XHRyZXQgPSBhdGgxMWtfZHBfc3JuZ19zZXR1cChhci1cdTAwM2VhYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYy02MTQtXHRcdFx0XHRcdCAgIHNybmcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jLTYzNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYzo2MzY6XHRyZXQgPSBhdGgxMWtfZHBfc3JuZ19zZXR1cChhci1cdTAwM2VhYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYy02MzctXHRcdFx0XHQgICBcdTAwMjZkcC1cdTAwM2VyeGRtYV9tb25fYnVmX3JpbmcucmVmaWxsX2J1Zl9yaW5nLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYy02NDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmM6NjQ2Olx0cmV0ID0gYXRoMTFrX2RwX3Nybmdfc2V0dXAoYXItXHUwMDNlYWIsIFx1MDAyNmRwLVx1MDAzZXJ4ZG1hX21vbl9kc3RfcmluZyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYy02NDctXHRcdFx0XHQgICBIQUxfUlhETUFfTU9OSVRPUl9EU1QsIDAsIGRwLVx1MDAzZW1hY19pZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmMtNjU0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jOjY1NTpcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFyLVx1MDAzZWFiLCBcdTAwMjZkcC1cdTAwM2VyeGRtYV9tb25fZGVzY19yaW5nLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jLTY1Ni1cdFx0XHRcdCAgIEhBTF9SWERNQV9NT05JVE9SX0RFU0MsIDAsIGRwLVx1MDAzZW1hY19pZCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTcyOTgKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiA1NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aGUgZXhwZXJ0OgoKKipUcmFjaW5nIHRoZSBEYXRhIFBhdGggSW5pdGlhbGl6YXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBgYXRoMTFrYCBkcml2ZXIgY29kZSBhbmQgSSBzZWUgdGhhdCBgYXRoMTFrX2RwX3BkZXZfcmVvX3NldHVwYCBpcyBiZWluZyBjYWxsZWQuIFRoYXQgZnVuY3Rpb24mIzM5O3Mgb2J2aW91c2x5IGNydWNpYWwgZm9yIHNldHRpbmcgdXAgdGhlIHJlY2VpdmUgb2ZmbG9hZCBlbmdpbmUgKFJFTykgb24gYSBwZXItZGV2aWNlIGxldmVsLCBidXQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGNvbnRleHQuIFdoZXJlJiMzOTtzIHRoaXMgY2FsbGVkIGZyb20/IEFoLCBpdCYjMzk7cyB0cmlnZ2VyZWQgYnkgYGF0aDExa19kcF9wZGV2X2FsbG9jYC4gTGV0JiMzOTtzIHN0ZXAgYmFjayBhIGJpdCBhbmQgZmluZCBvdXQgKndoZXJlKiB0aGF0IGFsbG9jYXRpb24gZnVuY3Rpb24gaXRzZWxmIGlzIGJlaW5nIGludm9rZWQuIFRoYXQgd2lsbCBnaXZlIG1lIHRoZSBicm9hZGVyIHBpY3R1cmUgb2YgaG93IHRoZSBkYXRhIHBhdGggaXMgYmVpbmcgaW5pdGlhbGl6ZWQgYW5kIGFsbG93IG1lIHRvIHNlZSB0aGUgZGVwZW5kZW5jaWVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY2FsbCBjaGFpbiB0byB0cnVseSBncmFzcCB0aGUgZmxvdyBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdGgxMWtfZHBfcGRldl9hbGxvYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jPTIwMzE9c3RhdGljIGludCBhdGgxMWtfY29yZV9wZGV2X2NyZWF0ZShzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jLTIwNDAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuYzoyMDQxOlx0cmV0ID0gYXRoMTFrX2RwX3BkZXZfYWxsb2MoYWIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmMtMjA0Mi1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmM9ODg5PXZvaWQgYXRoMTFrX2RwX3BkZXZfcHJlX2FsbG9jKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTkxMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYzo5MTM6aW50IGF0aDExa19kcF9wZGV2X2FsbG9jKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtOTE0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmg9MTY2ND1pbnQgYXRoMTFrX2RwX2FsbG9jKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5oOjE2NjU6aW50IGF0aDExa19kcF9wZGV2X2FsbG9jKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5oLTE2NjYtdm9pZCBhdGgxMWtfZHBfcGRldl9wcmVfYWxsb2Moc3RydWN0IGF0aDExa19iYXNlICphYik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4MDA3CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogNTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIGBhdGgxMWtfY29yZV9wZGV2X2NyZWF0ZWAgSW5pdGlhbGl6YXRpb24qKgoKT2theSwgSSYjMzk7bSB0cmFjaW5nIHRoZSBpbml0aWFsaXphdGlvbiBwYXRoIGZvciBgYXRoMTFrX2NvcmVfcGRldl9jcmVhdGVgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIGJhc2VkIG9uIGV4cGVyaWVuY2UsIHRoYXQgaXQmIzM5O3MgbGlrZWx5IGludm9rZWQgZWl0aGVyIGJ5IGBhdGgxMWtfY29yZV9xbWlfZmlybXdhcmVfcmVhZHlgIOKAkyBhZnRlciB0aGUgUU1JIGludGVyZmFjZSBpcyBlc3RhYmxpc2hlZCBhbmQgZmlybXdhcmUgaXMgZ29vZCB0byBnbyDigJMgb3IgcG90ZW50aWFsbHkgZHVyaW5nIHRoZSBicm9hZGVyIGBhdGgxMWtfY29yZV9pbml0YCBzZXF1ZW5jZS4gVGhpcyBpcyB3aGVyZSBJJiMzOTtkICpleHBlY3QqIHRoZSBwaHlzaWNhbCBkZXZpY2UgY29udGV4dCB0byBiZSBjcmVhdGVkLiBJdCYjMzk7cyB0aGUgbW9zdCBsb2dpY2FsIHBsYWNlLCBnaXZlbiB3aGF0IGBwZGV2YCByZXByZXNlbnRzLiBJIG5lZWQgdG8gcXVpY2tseSBjb25maXJtIHRoaXM7IGEgcXVpY2sgY29kZSBkaXZlIGludG8gdGhvc2UgZnVuY3Rpb25zIGlzIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcC4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgY2FsbCBncmFwaCB0byBzZWUgd2hhdCBzcGVjaWZpY2FsbHkgdHJpZ2dlcnMgdGhlIGNyZWF0aW9uIG9mIHRoZSBwZGV2LiBGaW5kaW5nIHRoaXMgd2lsbCBoZWxwIG1lIHVuZGVyc3RhbmQgdGhlIG92ZXJhbGwgdGltaW5nIGFuZCBkZXBlbmRlbmNpZXMgd2l0aGluIHRoZSBkcml2ZXIgaW5pdGlhbGl6YXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2F0aDExa19jb3JlX3BkZXZfY3JlYXRlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmM9MjAyMz1zdGF0aWMgdm9pZCBhdGgxMWtfY29yZV9zb2NfZGVzdHJveShzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jLTIwMzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuYzoyMDMxOnN0YXRpYyBpbnQgYXRoMTFrX2NvcmVfcGRldl9jcmVhdGUoc3RydWN0IGF0aDExa19iYXNlICphYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jLTIwMzIte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jPTIyNjM9aW50IGF0aDExa19jb3JlX3FtaV9maXJtd2FyZV9yZWFkeShzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jLTIzMDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuYzoyMzA5Olx0cmV0ID0gYXRoMTFrX2NvcmVfcGRldl9jcmVhdGUoYWIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmMtMjMxMC1cdGlmIChyZXQpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg2MTcKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAxMzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBSZWFjaGFiaWxpdHkgb2YgYGF0aDExa19kcF9zcm5nX3NldHVwYCBmb3IgRnV6emluZyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlIHBhdGggYW5kIGl0JiMzOTtzIGNsZWFyIHRoYXQgYGF0aDExa19kcF9zcm5nX3NldHVwYCBpcyBhbHdheXMgY2FsbGVkIGZyb20gYGF0aDExa19jb3JlX3FtaV9maXJtd2FyZV9yZWFkeWAuIFRoYXQgbWVhbnMsIHRoZSBRTUkgZmlybXdhcmUgaGFzIHRvIGJlIGZ1bGx5IGluaXRpYWxpemVkIGFuZCByZWFkeSB0byBnbyBiZWZvcmUgd2UgZXZlbiBnZXQgKmNsb3NlKiB0byB0aGF0IGZ1bmN0aW9uLgoKSW1tZWRpYXRlbHksIG15IGV4cGVydCBpbnN0aW5jdCBpcyBzY3JlYW1pbmcgJiMzNDtIYXJkd2FyZSBkZXBlbmRlbmN5ISYjMzQ7IEkga25vdyBmcm9tIGV4cGVyaWVuY2UgdGhhdCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgb3IgUUVNVSBqdXN0ICphcmVuJiMzOTt0KiBzZXQgdXAgdG8gaGFuZGxlIFFNSSBmaXJtd2FyZSBpbiBhIHJlYWxpc3RpYyB3YXksIHVubGVzcyB3ZSYjMzk7cmUgdGFsa2luZyBzb21lIHNlcmlvdXNseSBzb3BoaXN0aWNhdGVkIGVtdWxhdGlvbi4gIFRoZXJlZm9yZSwgSSYjMzk7bSBtYXJraW5nIHRoaXMgYXMgYFdvcnRoRnV6emluZz1mYWxzZWAuIEl0JiMzOTtzIGp1c3Qgbm90IHByYWN0aWNhbCBvciBlZmZpY2llbnQgdG8gdHJ5IGFuZCByZWFjaCB0aGF0IHBvaW50IGluIHRoZXNlIGNvbW1vbiB0ZXN0aW5nIHNldHVwcy4KCkJ1dCwgYmVmb3JlIEkgY29tcGxldGVseSBkaXNtaXNzIGl0LCBsZXQmIzM5O3MganVzdCBtYWtlICphYnNvbHV0ZWx5KiBzdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IHNuZWFreSBvdGhlciBjYWxscyB0byBgYXRoMTFrX2RwX3Nybmdfc2V0dXBgLiBNeSBpbml0aWFsIHNlYXJjaCBhbHNvIHJldmVhbGVkIGBhdGgxMWtfZGJyaW5nX3Nybmdfc2V0dXBgLCBzbyBJIG5lZWQgdG8gZ28gb3ZlciB0aGF0IG9uZSBub3cgYW5kIHNlZSB3aGVyZSBpdCYjMzk7cyBjYWxsZWQuIEdvdHRhIGJlIHRob3JvdWdoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjozMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdGgxMWtfZGJyaW5nX3Nybmdfc2V0dXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jPTg4Mz1zdGF0aWMgaW50IGF0aDExa19jZnJfcmluZ19hbGxvYyhzdHJ1Y3QgYXRoMTFrICphcixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTg4OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmM6ODg5Olx0cmV0ID0gYXRoMTFrX2RicmluZ19zcm5nX3NldHVwKGFyLCBcdTAwMjZjZnItXHUwMDNlcnhfcmluZyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtODkwLVx0XHRcdFx0ICAgICAgIEFUSDExS19DRlJfTlVNX1JJTkdfRU5UUklFUyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RicmluZy5jPTIxND1pbnQgYXRoMTFrX2RicmluZ19idWZfc2V0dXAoc3RydWN0IGF0aDExayAqYXIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kYnJpbmcuYy0yMzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RicmluZy5jOjIzNzppbnQgYXRoMTFrX2RicmluZ19zcm5nX3NldHVwKHN0cnVjdCBhdGgxMWsgKmFyLCBzdHJ1Y3QgYXRoMTFrX2RicmluZyAqcmluZyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGJyaW5nLmMtMjM4LVx0XHRcdCAgICAgaW50IHJpbmdfbnVtLCBpbnQgbnVtX2VudHJpZXMpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kYnJpbmcuaD03Mz1pbnQgYXRoMTFrX2RicmluZ19idWZfc2V0dXAoc3RydWN0IGF0aDExayAqYXIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kYnJpbmcuaC03NS1cdFx0XHQgICAgc3RydWN0IGF0aDExa19kYnJpbmdfY2FwICpkYl9jYXApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kYnJpbmcuaDo3NjppbnQgYXRoMTFrX2RicmluZ19zcm5nX3NldHVwKHN0cnVjdCBhdGgxMWsgKmFyLCBzdHJ1Y3QgYXRoMTFrX2RicmluZyAqcmluZyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGJyaW5nLmgtNzctXHRcdFx0ICAgICBpbnQgcmluZ19udW0sIGludCBudW1fZW50cmllcyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9zcGVjdHJhbC5jPTgxOD1zdGF0aWMgaW50IGF0aDExa19zcGVjdHJhbF9yaW5nX2FsbG9jKHN0cnVjdCBhdGgxMWsgKmFyLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvc3BlY3RyYWwuYy04MjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3NwZWN0cmFsLmM6ODI0Olx0cmV0ID0gYXRoMTFrX2RicmluZ19zcm5nX3NldHVwKGFyLCBcdTAwMjZzcC1cdTAwM2VyeF9yaW5nLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9zcGVjdHJhbC5jLTgyNS1cdFx0XHRcdCAgICAgICAwLCBkYl9jYXAtXHUwMDNlbWluX2VsZW0pO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTcyOAoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDQ2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKkFuYWx5emluZyBgYXRoMTFrYCBSaW5nIEFsbG9jYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIHJpbmcgYWxsb2NhdGlvbiBmdW5jdGlvbnM6IGBhdGgxMWtfY2ZyX3JpbmdfYWxsb2NgIGFuZCBgYXRoMTFrX3NwZWN0cmFsX3JpbmdfYWxsb2NgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgbGV0JiMzOTtzIGRyaWxsIGRvd24gYW5kIHVuZGVyc3RhbmQgdGhlIGNhbGwgZ3JhcGggb2YgYGF0aDExa19jZnJfcmluZ19hbGxvY2AgZmlyc3QuIEkgd2FudCB0byBzZWUgZXhhY3RseSAqd2hlcmUqIHRoaXMgZnVuY3Rpb24gaXMgYmVpbmcgY2FsbGVkIGZyb20gd2l0aGluIHRoZSBgYXRoMTFrYCBkcml2ZXIuIEtub3dpbmcgdGhlIGNhbGwgc2l0ZXMgd2lsbCBwcm92aWRlIGNvbnRleHQgb24gaXRzIHB1cnBvc2UgYW5kIGhvdyBpdCBmaXRzIGludG8gdGhlIGJyb2FkZXIgZGF0YSBmbG93LiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhlIGNvZGUgcmV2ZWFscy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoMTFrX2Nmcl9yaW5nX2FsbG9jJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYz04NzU9c3RhdGljIHZvaWQgYXRoMTFrX2Nmcl9yaW5nX2ZyZWUoc3RydWN0IGF0aDExayAqYXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYy04ODItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jOjg4MzpzdGF0aWMgaW50IGF0aDExa19jZnJfcmluZ19hbGxvYyhzdHJ1Y3QgYXRoMTFrICphcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtODg0LVx0XHRcdFx0IHN0cnVjdCBhdGgxMWtfZGJyaW5nX2NhcCAqZGJfY2FwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmM9OTUxPWludCBhdGgxMWtfY2ZyX2luaXQoc3RydWN0IGF0aDExa19iYXNlICphYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTk4My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmM6OTg0Olx0XHRyZXQgPSBhdGgxMWtfY2ZyX3JpbmdfYWxsb2MoYXIsIFx1MDAyNmRiX2NhcCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTk4NS1cdFx0aWYgKHJldCkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDI2MAoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipEZWNvbnN0cnVjdGluZyB0aGUgQ2FsbCB0byBgYXRoMTFrX2Nmcl9pbml0YCoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSBgYXRoMTFrX2Nmcl9pbml0YCBpcyBiZWluZyBjYWxsZWQgZnJvbS4gVGhhdCYjMzk7cyB0aGUgY29yZSBxdWVzdGlvbiwgaXNuJiMzOTt0IGl0PyBLbm93aW5nIHRoZSBjYWxsaW5nIGNvbnRleHQgaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBpdHMgcHVycG9zZSBhbmQgaW1wYWN0IHdpdGhpbiB0aGUgbGFyZ2VyIGF0aDExayBkcml2ZXIgZnJhbWV3b3JrLiBJIGltbWVkaWF0ZWx5IHRoaW5rIG9mIGEgZmV3IGF2ZW51ZXMgdG8gcHVyc3VlLiBGaXJzdCwgSeKAmWxsIG5lZWQgdG8gdHJhY2UgdGhlIGZ1bmN0aW9uJiMzOTtzIGRlZmluaXRpb24uIElzIGl0IGEgc3RhdGljIGZ1bmN0aW9uIHdpdGhpbiBhIHNwZWNpZmljIG1vZHVsZSwgb3IgaXMgaXQgZXhwb3J0ZWQgYW5kIGNhbGxhYmxlIGZyb20gZWxzZXdoZXJlPyBUaGUga2VybmVsIHNvdXJjZSBjb2RlIGlzIG15IGZyaWVuZCBoZXJlLiBJJiMzOTtsbCBuZWVkIHRvIHVzZSB0b29scyBsaWtlIGBncmVwYCBvciBteSBJREUmIzM5O3MgJiMzNDtmaW5kIHJlZmVyZW5jZXMmIzM0OyBmdW5jdGlvbmFsaXR5IHRvIGxvY2F0ZSBhbGwgaW5zdGFuY2VzIHdoZXJlIGBhdGgxMWtfY2ZyX2luaXRgIGlzIGludm9rZWQuCgpPbmNlIEkmIzM5O3ZlIGdvdCB0aGUgY2FsbCBzaXRlcywgSSYjMzk7bGwgbmVlZCB0byBtZXRpY3Vsb3VzbHkgYW5hbHl6ZSBlYWNoIG9uZS4gV2hhdCYjMzk7cyB0aGUgc3Vycm91bmRpbmcgY29kZSBkb2luZz8gV2hhdCBkYXRhIGlzIGJlaW5nIHBhc3NlZCB0byB0aGUgZnVuY3Rpb24/IFdoYXQmIzM5O3MgdGhlIGNvbnRyb2wgZmxvdyB0aGF0IGxlYWRzIHRvIHRoaXMgY2FsbD8gSXMgaXQgdHJpZ2dlcmVkIGJ5IGhhcmR3YXJlIGluaXRpYWxpemF0aW9uLCBhIHJlZ3VsYXRvcnkgZXZlbnQsIG9yIHBlcmhhcHMgYSB1c2VyLXNwYWNlIGNvbmZpZ3VyYXRpb24gY29tbWFuZD8KCkkgYWxzbyBuZWVkIHRvIGtlZXAgaW4gbWluZCB0aGUgcG90ZW50aWFsIGZvciBjb25kaXRpb25hbCBjb21waWxhdGlvbiBvciBwbGF0Zm9ybS1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbnMuIFRoZSBjYWxsIG1pZ2h0IGJlIHdyYXBwZWQgaW4gYCNpZmRlZmAgZGlyZWN0aXZlcyBvciB1c2UgZGlmZmVyZW50IGltcGxlbWVudGF0aW9ucyBkZXBlbmRpbmcgb24gdGhlIGhhcmR3YXJlIHZhcmlhbnQgb3IgdGFyZ2V0IG9wZXJhdGluZyBzeXN0ZW0uIFRoZXNlIGRldGFpbHMgYXJlIHZpdGFsIHRvIGdldCB0aGUgYmlnZ2VyIHBpY3R1cmUuIEluIHNob3J0LCBpdCYjMzk7cyBub3QganVzdCAqd2hlcmUqIGl0JiMzOTtzIGNhbGxlZCBmcm9tIGJ1dCAqd2h5KiBhbmQgKnVuZGVyIHdoYXQgY29uZGl0aW9ucyogdGhhdCBtYXR0ZXJzLiBUaGlzIGFuYWx5c2lzIHdpbGwgcHJvdmlkZSBhbGwgdGhlIG5lY2Vzc2FyeSBpbnNpZ2h0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoMTFrX2Nmcl9pbml0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYz05MjM9dm9pZCBhdGgxMWtfY2ZyX2RlaW5pdChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtOTUwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYzo5NTE6aW50IGF0aDExa19jZnJfaW5pdChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYy05NTIte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmg9MjA5PWVudW0gYXRoMTFrX2Nmcl9jYXB0dXJlX2J3IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5oLTIxNi0jaWZkZWYgQ09ORklHX0FUSDExS19DRlJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmg6MjE3OmludCBhdGgxMWtfY2ZyX2luaXQoc3RydWN0IGF0aDExa19iYXNlICphYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5oLTIxOC12b2lkIGF0aDExa19jZnJfZGVpbml0KHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmg9MjQwPXN0YXRpYyBpbmxpbmUgdm9pZCBhdGgxMWtfY2ZyX3VwZGF0ZV9waHltb2RlKHN0cnVjdCBhdGgxMWsgKmFyLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmgtMjQ0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuaDoyNDU6c3RhdGljIGlubGluZSBpbnQgYXRoMTFrX2Nmcl9pbml0KHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5oLTI0Ni17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmM9MjAzMT1zdGF0aWMgaW50IGF0aDExa19jb3JlX3BkZXZfY3JlYXRlKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmMtMjA2NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jOjIwNjY6XHRyZXQgPSBhdGgxMWtfY2ZyX2luaXQoYWIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmMtMjA2Ny1cdGlmIChyZXQpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6MzI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjEyMzEKCQkJCQkJCW91dHB1dDogMTQ3CgkJCQkJCQl0aG91Z2h0czogMTAzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlVucmVhY2hhYmxlIENvZGUgaW4gYSBWaXJ0dWFsaXplZCBFbnZpcm9ubWVudCoqCgpPa2F5LCBzbyBJJiMzOTttIGNpcmNsaW5nIGJhY2sgdG8gYGF0aDExa19jb3JlX3BkZXZfY3JlYXRlYCDigJMgdGhhdCBmdW5jdGlvbiBhZ2Fpbi4gSXQmIzM5O3MgY2xlYXIgdGhhdCB0aGUgY3JlYXRpb24gcHJvY2Vzcywgd2hldGhlciB0aHJvdWdoIGBhdGgxMWtfY29yZV9wZGV2X2NyZWF0ZWAgb3IgYGF0aDExa19kcF9hbGxvY2AsIGlzIGZ1bmRhbWVudGFsbHkgdGllZCB0byB0aGUgY2FsbCBmcm9tIGBhdGgxMWtfY29yZV9xbWlfZmlybXdhcmVfcmVhZHlgLiBBbmQgZ2l2ZW4gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgYXJjaGl0ZWN0dXJlLCB0aGlzIHN0cm9uZ2x5IGluZGljYXRlcyB0aGF0IHRoZSByZWxldmFudCBjb2RlIHBhdGggaXNuJiMzOTt0IGdvaW5nIHRvIGJlIHJlYWNoYWJsZSBpbiBhIHB1cmVseSB2aXJ0dWFsaXplZCBjb250ZXh0LiBXZSYjMzk7cmUgbWlzc2luZyB0aGUgY3J1Y2lhbCBoYXJkd2FyZSBhbmQgZmlybXdhcmUgaW50ZXJhY3Rpb24uIFRoZSBzeXN0ZW0gbmVlZHMgdG8gYmUgcmVhbC4gVGhlcmVmb3JlLCBJIGNhbiBjb25maWRlbnRseSBtYXJrIGBXb3J0aEZ1enppbmdgIGFzIGBmYWxzZWAgZm9yIHRoaXMgc2VjdGlvbi4gVGhhdCYjMzk7cyB0aGUgY29uY2x1c2lvbiBJJiMzOTt2ZSBjb21lIHRvLCBzbyBJJiMzOTtsbCBnbyBhaGVhZCBhbmQgc2V0IHRoZSByZXN1bHRzIGFjY29yZGluZ2x5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjozMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIG1vZGlmaWVkIGZ1bmN0aW9uIGBhdGgxMWtfZHBfc3JuZ19zZXR1cGAgaXMgcGFydCBvZiB0aGUgZGF0YXBhdGggaW5pdGlhbGl6YXRpb24gZm9yIHRoZSBhdGgxMWsgZHJpdmVyIChRdWFsY29tbSBBdGhlcm9zIDgwMi4xMWF4KS4gSXQgaXMgb25seSBjYWxsZWQgYWZ0ZXIgdGhlIFFNSSBmaXJtd2FyZSBpcyBzdWNjZXNzZnVsbHkgbG9hZGVkIGFuZCByZWFkeSAoYGF0aDExa19jb3JlX3FtaV9maXJtd2FyZV9yZWFkeWApLiBTaW5jZSBRRU1VIGRvZXMgbm90IGVtdWxhdGUgYXRoMTFrIGhhcmR3YXJlIGFuZCBzeXprYWxsZXIgY2Fubm90IHByb3ZpZGUgdGhlIG5lY2Vzc2FyeSBoYXJkd2FyZSBzdGF0ZSBhbmQgZmlybXdhcmUgdG8gcmVhY2ggdGhpcyBpbml0aWFsaXphdGlvbiBwaGFzZSwgdGhpcyBjb2RlIGlzIHVucmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgbW9kaWZpZWQgZnVuY3Rpb24gYGF0aDExa19kcF9zcm5nX3NldHVwYCBpcyBwYXJ0IG9mIHRoZSBkYXRhcGF0aCBpbml0aWFsaXphdGlvbiBmb3IgdGhlIGF0aDExayBkcml2ZXIgKFF1YWxjb21tIEF0aGVyb3MgODAyLjExYXgpLiBJdCBpcyBvbmx5IGNhbGxlZCBhZnRlciB0aGUgUU1JIGZpcm13YXJlIGlzIHN1Y2Nlc3NmdWxseSBsb2FkZWQgYW5kIHJlYWR5IChgYXRoMTFrX2NvcmVfcW1pX2Zpcm13YXJlX3JlYWR5YCkuIFNpbmNlIFFFTVUgZG9lcyBub3QgZW11bGF0ZSBhdGgxMWsgaGFyZHdhcmUgYW5kIHN5emthbGxlciBjYW5ub3QgcHJvdmlkZSB0aGUgbmVjZXNzYXJ5IGhhcmR3YXJlIHN0YXRlIGFuZCBmaXJtd2FyZSB0byByZWFjaCB0aGlzIGluaXRpYWxpemF0aW9uIHBoYXNlLCB0aGlzIGNvZGUgaXMgdW5yZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6MzE6MDEuNjY3MzcwNDE2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzMxOTQ3NTUzNTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIG1vZGlmaWVkIGZ1bmN0aW9uIGBhdGgxMWtfZHBfc3JuZ19zZXR1cGAgaXMgcGFydCBvZiB0aGUgZGF0YXBhdGggaW5pdGlhbGl6YXRpb24gZm9yIHRoZSBhdGgxMWsgZHJpdmVyIChRdWFsY29tbSBBdGhlcm9zIDgwMi4xMWF4KS4gSXQgaXMgb25seSBjYWxsZWQgYWZ0ZXIgdGhlIFFNSSBmaXJtd2FyZSBpcyBzdWNjZXNzZnVsbHkgbG9hZGVkIGFuZCByZWFkeSAoYGF0aDExa19jb3JlX3FtaV9maXJtd2FyZV9yZWFkeWApLiBTaW5jZSBRRU1VIGRvZXMgbm90IGVtdWxhdGUgYXRoMTFrIGhhcmR3YXJlIGFuZCBzeXprYWxsZXIgY2Fubm90IHByb3ZpZGUgdGhlIG5lY2Vzc2FyeSBoYXJkd2FyZSBzdGF0ZSBhbmQgZmlybXdhcmUgdG8gcmVhY2ggdGhpcyBpbml0aWFsaXphdGlvbiBwaGFzZSwgdGhpcyBjb2RlIGlzIHVucmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6MzE6MDEuNjY3Mzc3Njk2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzU2MDY1MDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAxNDBhOTAwNTVlM2QxYTM4YjAwM2Q0ZGM1NjY1MmZjODIwOTIzYjU3XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gQXVnIDIgMTI6MzE6MDAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jXFxuaW5kZXggZjM4OWI5N2FjYmRkNS4uYmU2NWQ3M2I5MDRiNiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmNcXG5AQCAtMzEzLDYgKzMxMyw3IEBAIGludCBhdGgxMWtfZHBfc3JuZ19zZXR1cChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCBzdHJ1Y3QgZHBfc3JuZyAqcmluZyxcXG4gXFx0Y2FzZSBIQUxfUlhETUFfRElSX0JVRjpcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGRlZmF1bHQ6XFxuK1xcdFxcdGF0aDExa19kcF9zcm5nX2NsZWFudXAoYWIsIHJpbmcpO1xcbiBcXHRcXHRhdGgxMWtfd2FybihhYiwgXFxcIk5vdCBhIHZhbGlkIHJpbmcgdHlwZSBpbiBkcCA6JWRcXFxcblxcXCIsIHR5cGUpO1xcbiBcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFx0fVxcbkBAIC0zMjQsNiArMzI1LDcgQEAgaW50IGF0aDExa19kcF9zcm5nX3NldHVwKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIHN0cnVjdCBkcF9zcm5nICpyaW5nLFxcbiBcXG4gXFx0cmV0ID0gYXRoMTFrX2hhbF9zcm5nX3NldHVwKGFiLCB0eXBlLCByaW5nX251bSwgbWFjX2lkLCBcXHUwMDI2cGFyYW1zKTtcXG4gXFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG4rXFx0XFx0YXRoMTFrX2RwX3NybmdfY2xlYW51cChhYiwgcmluZyk7XFxuIFxcdFxcdGF0aDExa193YXJuKGFiLCBcXFwiZmFpbGVkIHRvIHNldHVwIHNybmc6ICVkIHJpbmdfaWQgJWRcXFxcblxcXCIsXFxuIFxcdFxcdFxcdCAgICByZXQsIHJpbmdfbnVtKTtcXG4gXFx0XFx0cmV0dXJuIHJldDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6MzE6MDIuMTQzOTg1OTc2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NzI3MTgxMTg4OTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIG1vZGlmaWVkIGZ1bmN0aW9uIGBhdGgxMWtfZHBfc3JuZ19zZXR1cGAgaXMgcGFydCBvZiB0aGUgZGF0YXBhdGggaW5pdGlhbGl6YXRpb24gZm9yIHRoZSBhdGgxMWsgZHJpdmVyIChRdWFsY29tbSBBdGhlcm9zIDgwMi4xMWF4KS4gSXQgaXMgb25seSBjYWxsZWQgYWZ0ZXIgdGhlIFFNSSBmaXJtd2FyZSBpcyBzdWNjZXNzZnVsbHkgbG9hZGVkIGFuZCByZWFkeSAoYGF0aDExa19jb3JlX3FtaV9maXJtd2FyZV9yZWFkeWApLiBTaW5jZSBRRU1VIGRvZXMgbm90IGVtdWxhdGUgYXRoMTFrIGhhcmR3YXJlIGFuZCBzeXprYWxsZXIgY2Fubm90IHByb3ZpZGUgdGhlIG5lY2Vzc2FyeSBoYXJkd2FyZSBzdGF0ZSBhbmQgZmlybXdhcmUgdG8gcmVhY2ggdGhpcyBpbml0aWFsaXphdGlvbiBwaGFzZSwgdGhpcyBjb2RlIGlzIHVucmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMTQwYTkwMDU1ZTNkMWEzOGIwMDNkNGRjNTY2NTJmYzgyMDkyM2I1N1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gQXVnIDIgMTI6MzE6MDAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmNcbmluZGV4IGYzODliOTdhY2JkZDUuLmJlNjVkNzNiOTA0YjYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuY1xuQEAgLTMxMyw2ICszMTMsNyBAQCBpbnQgYXRoMTFrX2RwX3Nybmdfc2V0dXAoc3RydWN0IGF0aDExa19iYXNlICphYiwgc3RydWN0IGRwX3NybmcgKnJpbmcsXG4gXHRjYXNlIEhBTF9SWERNQV9ESVJfQlVGOlxuIFx0XHRicmVhaztcbiBcdGRlZmF1bHQ6XG4rXHRcdGF0aDExa19kcF9zcm5nX2NsZWFudXAoYWIsIHJpbmcpO1xuIFx0XHRhdGgxMWtfd2FybihhYiwgXCJOb3QgYSB2YWxpZCByaW5nIHR5cGUgaW4gZHAgOiVkXFxuXCIsIHR5cGUpO1xuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdH1cbkBAIC0zMjQsNiArMzI1LDcgQEAgaW50IGF0aDExa19kcF9zcm5nX3NldHVwKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIHN0cnVjdCBkcF9zcm5nICpyaW5nLFxuIFxuIFx0cmV0ID0gYXRoMTFrX2hhbF9zcm5nX3NldHVwKGFiLCB0eXBlLCByaW5nX251bSwgbWFjX2lkLCBcdTAwMjZwYXJhbXMpO1xuIFx0aWYgKHJldCBcdTAwM2MgMCkge1xuK1x0XHRhdGgxMWtfZHBfc3JuZ19jbGVhbnVwKGFiLCByaW5nKTtcbiBcdFx0YXRoMTFrX3dhcm4oYWIsIFwiZmFpbGVkIHRvIHNldHVwIHNybmc6ICVkIHJpbmdfaWQgJWRcXG5cIixcbiBcdFx0XHQgICAgcmV0LCByaW5nX251bSk7XG4gXHRcdHJldHVybiByZXQ7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjozMTowMi4xNDM5ODgwNjZaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NDA2NDE1NDcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgdGhlIGBhdGgxMWtgIERyaXZlcioqXG5cbk9rYXksIHNvIHRoZXJlJ3MgYSBwYXRjaCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jYCB0aGF0IGFkZHMgYGF0aDExa19kcF9zcm5nX2NsZWFudXBgIGluIHNvbWUgZXJyb3IgcGF0aHMgd2l0aGluIGBhdGgxMWtfZHBfc3JuZ19zZXR1cGAuIE15IGluaXRpYWwgdGhvdWdodCBpcywgY2FuIHdlIGZ1enogdGhpcyBkcml2ZXI/IGBhdGgxMWtgIGlzIGEgd2lyZWxlc3MgZHJpdmVyIGZvciBRdWFsY29tbSBBdGhlcm9zIDgwMi4xMWF4IGRldmljZXMuIENsYXNzaWMuXG5cblRoZSBuZXh0IHF1ZXN0aW9uOiBob3cgYWNjZXNzaWJsZSBpcyB0aGlzIGNvZGUgaW4gYSBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50PyBHaXZlbiB0aGF0IGBhdGgxMWtgIHR5cGljYWxseSByZWxpZXMgb24gc3BlY2lmaWMgaGFyZHdhcmUg4oCTIFBDSWUgb3IgQUhCIOKAkyBpdCdzIHVzdWFsbHkgbm90IHRoYXQgc3RyYWlnaHRmb3J3YXJkLiBRRU1VIGdlbmVyYWxseSBkb2Vzbid0IGVtdWxhdGUgdGhlIGhhcmR3YXJlIGRpcmVjdGx5LCByaWdodD8gSSByZWNhbGwgdGhhdCBgbWFjODAyMTFfaHdzaW1gIGlzIGVtdWxhdGVkLCBidXQgYGF0aDExa2AgaXMgYSByZWFsIGhhcmR3YXJlIGRyaXZlci4gSXQncyBidWlsdCB0byBpbnRlcmZhY2Ugd2l0aCBwaHlzaWNhbCBoYXJkd2FyZS5cblxuU28sIHRoZSByZWFsIHF1ZXN0aW9uIGlzOiBDYW4gd2UgYWN0dWFsbHkgZnV6eiBhIGhhcmR3YXJlIGRyaXZlcj8gVGhlc2Uga2luZHMgb2YgZHJpdmVycywgdGhhdCBuZWVkIHBoeXNpY2FsIFBDSWUgY2FyZHMgYW5kIHdoaWNoIGFyZW4ndCBlbXVsYXRlZCBpbiBRRU1VLCBhcmUgbm9ybWFsbHkgYSBkZWFkIGVuZC4gVW5sZXNzIHRoZXJlJ3MgYSBVU0Igb3Igc29tZSBvdGhlciBpbnRlcmZhY2UgYXZhaWxhYmxlLCBvciwgd2FpdCwgY291bGQgd2UgbGV2ZXJhZ2UgUENJIGZ1enppbmc/XG5cbkFoLCByaWdodCwgc3l6a2FsbGVyLiBTeXprYWxsZXIgKmRvZXMqIGhhdmUgUENJIGZ1enppbmcgY2FwYWJpbGl0aWVzLCBsaWtlIHZoY2kgYW5kIG90aGVycy4gVGhlIHF1ZXN0aW9uIHRoZW4gYmVjb21lcywgZG9lcyBpdCBzdXBwb3J0IGBhdGgxMWtgPyBXZSBuZWVkIHRvIHZlcmlmeSBpZiB0aGVyZSdzIGFueSBleGlzdGluZyBQQ0kgZW11bGF0aW9uIG9yIHN1cHBvcnQgZm9yIGBhdGgxMWtgLiBObywgdGhlIGRyaXZlciBpdHNlbGYgaXMgYSBQQ0kvQUhCIGRyaXZlci5cblxuTGV0J3MgY2hlY2sgdGhlIGNyaXRlcmlhLiBUaGUgc2l0dWF0aW9uIHdlIGFyZSBpbiBpczogXCJDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXCIgSXMgYGF0aDExa2AgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBkcml2ZXI/IFllcywgaXQncyBRdWFsY29tbSBBdGhlcm9zLCBzbyBpdCBkZWZpbml0ZWx5IGZhbGxzIHVuZGVyIHRoYXQgY2F0ZWdvcnkuXG5cbk9rYXksIHNvIHN5emthbGxlciAqY2FuKiBmdXp6IFBDSSBkcml2ZXJzIHVzaW5nIGl0cyBQQ0kgZnV6emVyLCB3aGljaCBpbmNsdWRlcyBgc3l6LXVzYmAgYW5kIGBzeXotcGNpYC4gRXhjZWxsZW50LiBUaGUga2V5IHF1ZXN0aW9uIG5vdyBiZWNvbWVzLCBpcyBgYXRoMTFrYCBhY3R1YWxseSBmdXp6YWJsZT8gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBrZXJuZWwgc291cmNlIGFuZCBzZWFyY2ggZm9yIHRoZSBgYXRoMTFrYCBjb25maWd1cmF0aW9uLiBMZXQncyBzZWUgaWYgd2UgY2FuIGdldCB0aGlzIG1vdmluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI0MiwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ1MSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjMxOjEwLjU1MDQwNjM2NloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3OTM1OTE3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdGgxMWtfZHBfc3JuZ19zZXR1cFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RicmluZy5jPTIzNz1pbnQgYXRoMTFrX2RicmluZ19zcm5nX3NldHVwKHN0cnVjdCBhdGgxMWsgKmFyLCBzdHJ1Y3QgYXRoMTFrX2RicmluZyAqcmluZyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGJyaW5nLmMtMjQxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGJyaW5nLmM6MjQyOlxcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFyLVxcdTAwM2VhYiwgXFx1MDAyNnJpbmctXFx1MDAzZXJlZmlsbF9zcm5nLCBIQUxfUlhETUFfRElSX0JVRixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RicmluZy5jLTI0My1cXHRcXHRcXHRcXHQgICByaW5nX251bSwgYXItXFx1MDAzZXBkZXZfaWR4LCBudW1fZW50cmllcyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmM9MTgxPXN0YXRpYyB2b2lkIGF0aDExa19kcF9zcm5nX21zaV9zZXR1cChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTIyMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmM6MjIxOmludCBhdGgxMWtfZHBfc3JuZ19zZXR1cChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCBzdHJ1Y3QgZHBfc3JuZyAqcmluZyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtMjIyLVxcdFxcdFxcdCBlbnVtIGhhbF9yaW5nX3R5cGUgdHlwZSwgaW50IHJpbmdfbnVtLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jPTM3Mj1zdGF0aWMgaW50IGF0aDExa19kcF9zcm5nX2NvbW1vbl9zZXR1cChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTM3OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmM6Mzc5OlxcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFiLCBcXHUwMDI2ZHAtXFx1MDAzZXdibV9kZXNjX3JlbF9yaW5nLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy0zODAtXFx0XFx0XFx0XFx0ICAgSEFMX1NXMldCTV9SRUxFQVNFLCAwLCAwLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTM4Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmM6Mzg4OlxcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFiLCBcXHUwMDI2ZHAtXFx1MDAzZXRjbF9jbWRfcmluZywgSEFMX1RDTF9DTUQsIDAsIDAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTM4OS1cXHRcXHRcXHRcXHQgICBEUF9UQ0xfQ01EX1JJTkdfU0laRSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtMzk0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYzozOTU6XFx0cmV0ID0gYXRoMTFrX2RwX3Nybmdfc2V0dXAoYWIsIFxcdTAwMjZkcC1cXHUwMDNldGNsX3N0YXR1c19yaW5nLCBIQUxfVENMX1NUQVRVUyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtMzk2LVxcdFxcdFxcdFxcdCAgIDAsIDAsIERQX1RDTF9TVEFUVVNfUklOR19TSVpFKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy00MDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jOjQwNjpcXHRcXHRyZXQgPSBhdGgxMWtfZHBfc3JuZ19zZXR1cChhYiwgXFx1MDAyNmRwLVxcdTAwM2V0eF9yaW5nW2ldLnRjbF9kYXRhX3JpbmcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTQwNy1cXHRcXHRcXHRcXHRcXHQgICBIQUxfVENMX0RBVEEsIHRjbF9udW0sIDAsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtNDE0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYzo0MTU6XFx0XFx0cmV0ID0gYXRoMTFrX2RwX3Nybmdfc2V0dXAoYWIsIFxcdTAwMjZkcC1cXHUwMDNldHhfcmluZ1tpXS50Y2xfY29tcF9yaW5nLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy00MTYtXFx0XFx0XFx0XFx0XFx0ICAgSEFMX1dCTTJTV19SRUxFQVNFLCB3Ym1fbnVtLCAwLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTQzMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmM6NDMyOlxcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFiLCBcXHUwMDI2ZHAtXFx1MDAzZXJlb19yZWluamVjdF9yaW5nLCBIQUxfUkVPX1JFSU5KRUNULFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy00MzMtXFx0XFx0XFx0XFx0ICAgMCwgMCwgRFBfUkVPX1JFSU5KRUNUX1JJTkdfU0laRSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtNDM5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYzo0NDA6XFx0cmV0ID0gYXRoMTFrX2RwX3Nybmdfc2V0dXAoYWIsIFxcdTAwMjZkcC1cXHUwMDNlcnhfcmVsX3JpbmcsIEhBTF9XQk0yU1dfUkVMRUFTRSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtNDQxLVxcdFxcdFxcdFxcdCAgIERQX1JYX1JFTEVBU0VfUklOR19OVU0sIDAsIERQX1JYX1JFTEVBU0VfUklOR19TSVpFKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy00NDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jOjQ0NzpcXHRyZXQgPSBhdGgxMWtfZHBfc3JuZ19zZXR1cChhYiwgXFx1MDAyNmRwLVxcdTAwM2VyZW9fZXhjZXB0X3JpbmcsIEhBTF9SRU9fRVhDRVBUSU9OLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy00NDgtXFx0XFx0XFx0XFx0ICAgMCwgMCwgRFBfUkVPX0VYQ0VQVElPTl9SSU5HX1NJWkUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTQ1NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmM6NDU1OlxcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFiLCBcXHUwMDI2ZHAtXFx1MDAzZXJlb19jbWRfcmluZywgSEFMX1JFT19DTUQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTQ1Ni1cXHRcXHRcXHRcXHQgICAwLCAwLCBEUF9SRU9fQ01EX1JJTkdfU0laRSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtNDY4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYzo0Njk6XFx0cmV0ID0gYXRoMTFrX2RwX3Nybmdfc2V0dXAoYWIsIFxcdTAwMjZkcC1cXHUwMDNlcmVvX3N0YXR1c19yaW5nLCBIQUxfUkVPX1NUQVRVUyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtNDcwLVxcdFxcdFxcdFxcdCAgIDAsIDAsIERQX1JFT19TVEFUVVNfUklOR19TSVpFKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYz02NDg9c3RhdGljIGludCBhdGgxMWtfd2JtX2lkbGVfcmluZ19zZXR1cChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCB1MzIgKm5fbGlua19kZXNjKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTY3NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmM6Njc1OlxcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFiLCBcXHUwMDI2ZHAtXFx1MDAzZXdibV9pZGxlX3JpbmcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTY3Ni1cXHRcXHRcXHRcXHQgICBIQUxfV0JNX0lETEVfTElOSywgMCwgMCwgKm5fbGlua19kZXNjKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuaD0xNjcyPXZvaWQgYXRoMTFrX2RwX3NybmdfY2xlYW51cChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCBzdHJ1Y3QgZHBfc3JuZyAqcmluZyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5oOjE2NzM6aW50IGF0aDExa19kcF9zcm5nX3NldHVwKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIHN0cnVjdCBkcF9zcm5nICpyaW5nLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuaC0xNjc0LVxcdFxcdFxcdCBlbnVtIGhhbF9yaW5nX3R5cGUgdHlwZSwgaW50IHJpbmdfbnVtLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jPTU0Nj1pbnQgYXRoMTFrX2RwX3BkZXZfcmVvX3NldHVwKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmMtNTUyLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBEUF9SRU9fRFNUX1JJTkdfTUFYOyBpKyspIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmM6NTUzOlxcdFxcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFiLCBcXHUwMDI2ZHAtXFx1MDAzZXJlb19kc3RfcmluZ1tpXSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmMtNTU0LVxcdFxcdFxcdFxcdFxcdCAgIEhBTF9SRU9fRFNULCBpLCAwLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jPTU3MD1zdGF0aWMgaW50IGF0aDExa19kcF9yeF9wZGV2X3NybmdfYWxsb2Moc3RydWN0IGF0aDExayAqYXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmMtNTc3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYzo1Nzg6XFx0cmV0ID0gYXRoMTFrX2RwX3Nybmdfc2V0dXAoYXItXFx1MDAzZWFiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYy01NzktXFx0XFx0XFx0XFx0ICAgXFx1MDAyNmRwLVxcdTAwM2VyeF9yZWZpbGxfYnVmX3JpbmcucmVmaWxsX2J1Zl9yaW5nLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jLTU4OC1cXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgYWItXFx1MDAzZWh3X3BhcmFtcy5udW1fcnhkbWFfcGVyX3BkZXY7IGkrKykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYzo1ODk6XFx0XFx0XFx0cmV0ID0gYXRoMTFrX2RwX3Nybmdfc2V0dXAoYXItXFx1MDAzZWFiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYy01OTAtXFx0XFx0XFx0XFx0XFx0XFx0ICAgXFx1MDAyNmRwLVxcdTAwM2VyeF9tYWNfYnVmX3JpbmdbaV0sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmMtNjAxLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBhYi1cXHUwMDNlaHdfcGFyYW1zLm51bV9yeGRtYV9wZXJfcGRldjsgaSsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jOjYwMjpcXHRcXHRyZXQgPSBhdGgxMWtfZHBfc3JuZ19zZXR1cChhci1cXHUwMDNlYWIsIFxcdTAwMjZkcC1cXHUwMDNlcnhkbWFfZXJyX2RzdF9yaW5nW2ldLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYy02MDMtXFx0XFx0XFx0XFx0XFx0ICAgSEFMX1JYRE1BX0RTVCwgMCwgZHAtXFx1MDAzZW1hY19pZCArIGksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmMtNjEyLVxcdFxcdHNybmcgPSBcXHUwMDI2ZHAtXFx1MDAzZXJ4X21vbl9zdGF0dXNfcmVmaWxsX3JpbmdbaV0ucmVmaWxsX2J1Zl9yaW5nO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYzo2MTM6XFx0XFx0cmV0ID0gYXRoMTFrX2RwX3Nybmdfc2V0dXAoYXItXFx1MDAzZWFiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYy02MTQtXFx0XFx0XFx0XFx0XFx0ICAgc3JuZyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYy02MzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jOjYzNjpcXHRyZXQgPSBhdGgxMWtfZHBfc3JuZ19zZXR1cChhci1cXHUwMDNlYWIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jLTYzNy1cXHRcXHRcXHRcXHQgICBcXHUwMDI2ZHAtXFx1MDAzZXJ4ZG1hX21vbl9idWZfcmluZy5yZWZpbGxfYnVmX3JpbmcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmMtNjQ1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYzo2NDY6XFx0cmV0ID0gYXRoMTFrX2RwX3Nybmdfc2V0dXAoYXItXFx1MDAzZWFiLCBcXHUwMDI2ZHAtXFx1MDAzZXJ4ZG1hX21vbl9kc3RfcmluZyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmMtNjQ3LVxcdFxcdFxcdFxcdCAgIEhBTF9SWERNQV9NT05JVE9SX0RTVCwgMCwgZHAtXFx1MDAzZW1hY19pZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYy02NTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jOjY1NTpcXHRyZXQgPSBhdGgxMWtfZHBfc3JuZ19zZXR1cChhci1cXHUwMDNlYWIsIFxcdTAwMjZkcC1cXHUwMDNlcnhkbWFfbW9uX2Rlc2NfcmluZyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmMtNjU2LVxcdFxcdFxcdFxcdCAgIEhBTF9SWERNQV9NT05JVE9SX0RFU0MsIDAsIGRwLVxcdTAwM2VtYWNfaWQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjMxOjEwLjYyOTc3NDIyMVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1MTAzNjUyMzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBGdXp6aW5nIFBvdGVudGlhbCBvZiBgYXRoMTFrYCoqXG5cbk9rYXksIHNvIHRoZSBjb2RlIGluIHF1ZXN0aW9uIHNlZW1zIHRvIGJlIHdpdGhpbiBgYXRoMTFrX2RwX3Nybmdfc2V0dXBgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJSaWdodCwgYGF0aDExa2AuLi4gdGhhdCdzIFF1YWxjb21tIEF0aGVyb3MnIDgwMi4xMWF4IGhhcmR3YXJlIGRyaXZlci5cIiBOb3cgdGhlIHF1ZXN0aW9uIGJlY29tZXMsIGRvZXMgdGhpcyBkcml2ZXIgcmVseSBvbiBhY3R1YWwgUENJZSBoYXJkd2FyZSwgYW5kIHdpbGwgaXQgbm90IHdvcmsgd2l0aCBzdGFuZGFyZCBRRU1VIGVtdWxhdGlvbj8gR2l2ZW4gdGhhdCBgYXRoMTFrYCBpcyBhIFBDSWUvQUhCIGRyaXZlciwgdGhlIGFuc3dlciBpcyBtb3N0IGxpa2VseSB5ZXMuIFRoYXQgbWFrZXMgdGhpbmdzIGludGVyZXN0aW5nIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLlxuXG5UaGUgcHJvbXB0IHNwZWNpZmljYWxseSBtZW50aW9ucyBjb2RlIHdpdGhpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycywgd2hpY2ggYWxzbyByZXF1aXJlIHBoeXNpY2FsIFBDSWUgY2FyZHMsIGFuZCBtZW50aW9ucyBzZXZlcmFsIGRyaXZlcnMgdGhhdCBmYWxsIGludG8gdGhpcyBjYXRlZ29yeS4gQW5kIGBhdGgxMWtgICppcyogdmVuZG9yLXNwZWNpZmljLCBzbyBpdCBsaW5lcyB1cCB3aXRoIHRoZSBkZXNjcmlwdGlvbi5cblxuQnV0IHdhaXQgYSBtaW51dGUhIFN5emthbGxlciAqZG9lcyogaGF2ZSBQQ0kgZnV6emluZyBjYXBhYmlsaXRpZXMsIGRvZXNuJ3QgaXQ/IFRoZSBxdWVzdGlvbiBub3cgYmVjb21lcywgaGFzIGFueW9uZSBhbHJlYWR5IGF0dGVtcHRlZCB0byBmdXp6IGBhdGgxMWtgPyBJIG5lZWQgdG8gY2hlY2sgZm9yIGEgc3l6a2FsbGVyIGRlc2NyaXB0aW9uIHJlbGF0ZWQgdG8gdGhpcyBkcml2ZXIuIExldCdzIGRpZyBkZWVwZXIgYW5kIHNlZSB3aGF0IHdlIGNhbiBmaW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MzYwLCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjA3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjMxOjE1LjE0MDE0Mjc4N1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjM3NDc2OTIsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0aDExa1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJzeXMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjozMToxNS4yNjM5MDUxODlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTk4NDQ1MTI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgdGhlIEF0aDExayBEcml2ZXIgd2l0aCBTeXprYWxsZXIqKlxuXG5Pa2F5LCBzbyB0aGVyZSdzIG5vIGRlZGljYXRlZCBzeXprYWxsZXIgZGVzY3JpcHRpb24gZm9yIHRoZSBhdGgxMWsgZHJpdmVyLCB3aGljaCBpcyBhIGJpdCBvZiBhIHJvYWRibG9jay4gQnV0IGhvbGQgb24sIHRoZSBnZW5lcmljIFBDSSBmdXp6ZXIgKHNwZWNpZmljYWxseSBgc3l6X3BjaV9kZXZpY2VgKSBpcyBhdmFpbGFibGUsIGFuZCB0aGF0IG9wZW5zIHVwIHNvbWUgcG9zc2liaWxpdGllcy4gVGhlIHF1ZXN0aW9uIG5vdyBiZWNvbWVzOiBjYW4gSSBzb21laG93IHRyaWdnZXIgYGF0aDExa19kcF9zcm5nX3NldHVwYCDigJMgdGhlIHRhcmdldCDigJMgdGhyb3VnaCBhIFBDSSBwcm9iZT8gVGhhdCBzZWVtcyBsaWtlIHRoZSBtb3N0IGRpcmVjdCByb3V0ZSwgYW5kIGl0J3MgdGhlIG9uZSBJIG5lZWQgdG8gZXhwbG9yZS4gVGltZSB0byBkaXZlIGludG8gdGhlIGBhdGgxMWtfcGNpX3Byb2JlYCBmdW5jdGlvbiBhbmQgc2VlIGlmIGl0J3MgZmVhc2libGUgdG8gbWFuaXB1bGF0ZSB0aGUgUENJIHByb2JlIHByb2Nlc3MgdG8gcmVhY2ggd2hhdCBJJ20gbG9va2luZyBmb3IuIExldCdzIHNlZSBpZiB0aGlzIGh1bmNoIHBhbnMgb3V0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2ODY3LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6MzE6MTkuMjYyMzU0MDM4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY5NDUyMTA1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0aDExa19wY2lfcHJvYmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYz05NDA9c3RhdGljIGludCBhdGgxMWtfcGNpX3NldF9pcnFfYWZmaW5pdHlfaGludChzdHJ1Y3QgYXRoMTFrX3BjaSAqYWJfcGNpLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYy05NDgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYzo5NDk6c3RhdGljIGludCBhdGgxMWtfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmMtOTUwLVxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqcGNpX2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmM9MTI5Nj1zdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgYXRoMTFrX3BjaV9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3BjaS5jLTEyOTgtXFx0LmlkX3RhYmxlID0gYXRoMTFrX3BjaV9pZF90YWJsZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3BjaS5jOjEyOTk6XFx0LnByb2JlID0gYXRoMTFrX3BjaV9wcm9iZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3BjaS5jLTEzMDAtXFx0LnJlbW92ZSA9IGF0aDExa19wY2lfcmVtb3ZlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjozMToxOS4zMzE4MTM5MTNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NzEwNDc0MTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRnV6emFiaWxpdHkgb2YgdGhlIGF0aDExayBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHByb21wdCBhbmQgdGhpbmtpbmcgYWJvdXQgaG93IHRvIGFwcHJvYWNoIHRoaXMgZnV6emluZyB0YXNrLiBUaGUgbWVudGlvbiBvZiBQQ0kgZHJpdmVycyBpbW1lZGlhdGVseSBicmluZ3MgYHN5el9wY2lfZGV2aWNlYCB0byBtaW5kLiBJZiB3ZSdyZSBkZWFsaW5nIHdpdGggYSBQQ0kgZHJpdmVyLCBzeXprYWxsZXIgc2hvdWxkIGJlIGFibGUgdG8gcHJvYmUgaXQsIHJpZ2h0PyBCdXQgdGhlIHByb21wdCBzcGVjaWZpY2FsbHkgY2FsbHMgb3V0IHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzLCBhbmQgbWVudGlvbnMgdGhhdCB0aGV5IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cblxuTm93LCBpcyBhdGgxMWsgb25lIG9mIHRob3NlPyBObywgaXQncyBhIHdpcmVsZXNzIGRyaXZlciwgbm90IGEgU21hcnROSUMgb3IgR1BVLiBIb3dldmVyLCBpdCAqaXMqIGEgaGFyZHdhcmUgZHJpdmVyLiBTbywgZG9lcyBpdCByZXF1aXJlIHBoeXNpY2FsIGNhcmRzIHRoYXQgUUVNVSBjYW4ndCBlbXVsYXRlPyBUaGUgYW5zd2VyIGlzIHllcy4gU3RpbGwsIEkga25vdyB0aGF0IHN5emthbGxlcuKAmXMgUENJIGZ1enplciBjYW4gZW11bGF0ZSBQQ0kgZGV2aWNlcyBhbmQgdHJpZ2dlciB0aGUgZGV2aWNlJ3MgcHJvYmUgZnVuY3Rpb25zLCByaWdodD8gU28sIGhlcmUncyB0aGUgY3J1Y2lhbCBxdWVzdGlvbjogSWYgc3l6a2FsbGVyJ3MgUENJIGZ1enplciAqY2FuKiB0cmlnZ2VyIGl0LCBpcyB0aGF0IGNvbnNpZGVyZWQgZnV6emFibGU/IEkgdGhpbmsgaXQgbWlnaHQgYmUhIEl0J3Mgd29ydGggZnVydGhlciBpbnZlc3RpZ2F0aW9uLiBMZXQncyBzZWUgaWYgd2UgY2FuIGdldCB0byBgYXRoMTFrX2RwX3Nybmdfc2V0dXBgIGR1cmluZyBwcm9iZS4gVGhhdCdzIHRoZSBrZXkgdG8gZmlndXJpbmcgb3V0IHRoZSBhbnN3ZXIgdG8gdGhpcyBxdWVzdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NzUwMiwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjozMToyNS4wNDIyOTE2MjNaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkwNDg4OTI0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0aDExa19kcF9zcm5nX3NldHVwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGJyaW5nLmM9MjM3PWludCBhdGgxMWtfZGJyaW5nX3Nybmdfc2V0dXAoc3RydWN0IGF0aDExayAqYXIsIHN0cnVjdCBhdGgxMWtfZGJyaW5nICpyaW5nLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kYnJpbmcuYy0yNDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kYnJpbmcuYzoyNDI6XFx0cmV0ID0gYXRoMTFrX2RwX3Nybmdfc2V0dXAoYXItXFx1MDAzZWFiLCBcXHUwMDI2cmluZy1cXHUwMDNlcmVmaWxsX3NybmcsIEhBTF9SWERNQV9ESVJfQlVGLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGJyaW5nLmMtMjQzLVxcdFxcdFxcdFxcdCAgIHJpbmdfbnVtLCBhci1cXHUwMDNlcGRldl9pZHgsIG51bV9lbnRyaWVzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYz0xODE9c3RhdGljIHZvaWQgYXRoMTFrX2RwX3NybmdfbXNpX3NldHVwKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtMjIwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYzoyMjE6aW50IGF0aDExa19kcF9zcm5nX3NldHVwKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIHN0cnVjdCBkcF9zcm5nICpyaW5nLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy0yMjItXFx0XFx0XFx0IGVudW0gaGFsX3JpbmdfdHlwZSB0eXBlLCBpbnQgcmluZ19udW0sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmM9MzcyPXN0YXRpYyBpbnQgYXRoMTFrX2RwX3NybmdfY29tbW9uX3NldHVwKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtMzc4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYzozNzk6XFx0cmV0ID0gYXRoMTFrX2RwX3Nybmdfc2V0dXAoYWIsIFxcdTAwMjZkcC1cXHUwMDNld2JtX2Rlc2NfcmVsX3JpbmcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTM4MC1cXHRcXHRcXHRcXHQgICBIQUxfU1cyV0JNX1JFTEVBU0UsIDAsIDAsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtMzg3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYzozODg6XFx0cmV0ID0gYXRoMTFrX2RwX3Nybmdfc2V0dXAoYWIsIFxcdTAwMjZkcC1cXHUwMDNldGNsX2NtZF9yaW5nLCBIQUxfVENMX0NNRCwgMCwgMCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtMzg5LVxcdFxcdFxcdFxcdCAgIERQX1RDTF9DTURfUklOR19TSVpFKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy0zOTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jOjM5NTpcXHRyZXQgPSBhdGgxMWtfZHBfc3JuZ19zZXR1cChhYiwgXFx1MDAyNmRwLVxcdTAwM2V0Y2xfc3RhdHVzX3JpbmcsIEhBTF9UQ0xfU1RBVFVTLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy0zOTYtXFx0XFx0XFx0XFx0ICAgMCwgMCwgRFBfVENMX1NUQVRVU19SSU5HX1NJWkUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTQwNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmM6NDA2OlxcdFxcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFiLCBcXHUwMDI2ZHAtXFx1MDAzZXR4X3JpbmdbaV0udGNsX2RhdGFfcmluZyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtNDA3LVxcdFxcdFxcdFxcdFxcdCAgIEhBTF9UQ0xfREFUQSwgdGNsX251bSwgMCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy00MTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jOjQxNTpcXHRcXHRyZXQgPSBhdGgxMWtfZHBfc3JuZ19zZXR1cChhYiwgXFx1MDAyNmRwLVxcdTAwM2V0eF9yaW5nW2ldLnRjbF9jb21wX3JpbmcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTQxNi1cXHRcXHRcXHRcXHRcXHQgICBIQUxfV0JNMlNXX1JFTEVBU0UsIHdibV9udW0sIDAsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtNDMxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYzo0MzI6XFx0cmV0ID0gYXRoMTFrX2RwX3Nybmdfc2V0dXAoYWIsIFxcdTAwMjZkcC1cXHUwMDNlcmVvX3JlaW5qZWN0X3JpbmcsIEhBTF9SRU9fUkVJTkpFQ1QsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTQzMy1cXHRcXHRcXHRcXHQgICAwLCAwLCBEUF9SRU9fUkVJTkpFQ1RfUklOR19TSVpFKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy00MzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jOjQ0MDpcXHRyZXQgPSBhdGgxMWtfZHBfc3JuZ19zZXR1cChhYiwgXFx1MDAyNmRwLVxcdTAwM2VyeF9yZWxfcmluZywgSEFMX1dCTTJTV19SRUxFQVNFLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy00NDEtXFx0XFx0XFx0XFx0ICAgRFBfUlhfUkVMRUFTRV9SSU5HX05VTSwgMCwgRFBfUlhfUkVMRUFTRV9SSU5HX1NJWkUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTQ0Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmM6NDQ3OlxcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFiLCBcXHUwMDI2ZHAtXFx1MDAzZXJlb19leGNlcHRfcmluZywgSEFMX1JFT19FWENFUFRJT04sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTQ0OC1cXHRcXHRcXHRcXHQgICAwLCAwLCBEUF9SRU9fRVhDRVBUSU9OX1JJTkdfU0laRSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtNDU0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYzo0NTU6XFx0cmV0ID0gYXRoMTFrX2RwX3Nybmdfc2V0dXAoYWIsIFxcdTAwMjZkcC1cXHUwMDNlcmVvX2NtZF9yaW5nLCBIQUxfUkVPX0NNRCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtNDU2LVxcdFxcdFxcdFxcdCAgIDAsIDAsIERQX1JFT19DTURfUklOR19TSVpFKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy00NjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jOjQ2OTpcXHRyZXQgPSBhdGgxMWtfZHBfc3JuZ19zZXR1cChhYiwgXFx1MDAyNmRwLVxcdTAwM2VyZW9fc3RhdHVzX3JpbmcsIEhBTF9SRU9fU1RBVFVTLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy00NzAtXFx0XFx0XFx0XFx0ICAgMCwgMCwgRFBfUkVPX1NUQVRVU19SSU5HX1NJWkUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jPTY0OD1zdGF0aWMgaW50IGF0aDExa193Ym1faWRsZV9yaW5nX3NldHVwKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIHUzMiAqbl9saW5rX2Rlc2MpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtNjc0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYzo2NzU6XFx0cmV0ID0gYXRoMTFrX2RwX3Nybmdfc2V0dXAoYWIsIFxcdTAwMjZkcC1cXHUwMDNld2JtX2lkbGVfcmluZyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtNjc2LVxcdFxcdFxcdFxcdCAgIEhBTF9XQk1fSURMRV9MSU5LLCAwLCAwLCAqbl9saW5rX2Rlc2MpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5oPTE2NzI9dm9pZCBhdGgxMWtfZHBfc3JuZ19jbGVhbnVwKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIHN0cnVjdCBkcF9zcm5nICpyaW5nKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmg6MTY3MzppbnQgYXRoMTFrX2RwX3Nybmdfc2V0dXAoc3RydWN0IGF0aDExa19iYXNlICphYiwgc3RydWN0IGRwX3NybmcgKnJpbmcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5oLTE2NzQtXFx0XFx0XFx0IGVudW0gaGFsX3JpbmdfdHlwZSB0eXBlLCBpbnQgcmluZ19udW0sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmM9NTQ2PWludCBhdGgxMWtfZHBfcGRldl9yZW9fc2V0dXAoc3RydWN0IGF0aDExa19iYXNlICphYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYy01NTItXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIERQX1JFT19EU1RfUklOR19NQVg7IGkrKykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYzo1NTM6XFx0XFx0cmV0ID0gYXRoMTFrX2RwX3Nybmdfc2V0dXAoYWIsIFxcdTAwMjZkcC1cXHUwMDNlcmVvX2RzdF9yaW5nW2ldLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYy01NTQtXFx0XFx0XFx0XFx0XFx0ICAgSEFMX1JFT19EU1QsIGksIDAsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmM9NTcwPXN0YXRpYyBpbnQgYXRoMTFrX2RwX3J4X3BkZXZfc3JuZ19hbGxvYyhzdHJ1Y3QgYXRoMTFrICphcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYy01NzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jOjU3ODpcXHRyZXQgPSBhdGgxMWtfZHBfc3JuZ19zZXR1cChhci1cXHUwMDNlYWIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jLTU3OS1cXHRcXHRcXHRcXHQgICBcXHUwMDI2ZHAtXFx1MDAzZXJ4X3JlZmlsbF9idWZfcmluZy5yZWZpbGxfYnVmX3JpbmcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmMtNTg4LVxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBhYi1cXHUwMDNlaHdfcGFyYW1zLm51bV9yeGRtYV9wZXJfcGRldjsgaSsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jOjU4OTpcXHRcXHRcXHRyZXQgPSBhdGgxMWtfZHBfc3JuZ19zZXR1cChhci1cXHUwMDNlYWIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jLTU5MC1cXHRcXHRcXHRcXHRcXHRcXHQgICBcXHUwMDI2ZHAtXFx1MDAzZXJ4X21hY19idWZfcmluZ1tpXSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYy02MDEtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGFiLVxcdTAwM2Vod19wYXJhbXMubnVtX3J4ZG1hX3Blcl9wZGV2OyBpKyspIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmM6NjAyOlxcdFxcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFyLVxcdTAwM2VhYiwgXFx1MDAyNmRwLVxcdTAwM2VyeGRtYV9lcnJfZHN0X3JpbmdbaV0sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jLTYwMy1cXHRcXHRcXHRcXHRcXHQgICBIQUxfUlhETUFfRFNULCAwLCBkcC1cXHUwMDNlbWFjX2lkICsgaSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYy02MTItXFx0XFx0c3JuZyA9IFxcdTAwMjZkcC1cXHUwMDNlcnhfbW9uX3N0YXR1c19yZWZpbGxfcmluZ1tpXS5yZWZpbGxfYnVmX3Jpbmc7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jOjYxMzpcXHRcXHRyZXQgPSBhdGgxMWtfZHBfc3JuZ19zZXR1cChhci1cXHUwMDNlYWIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jLTYxNC1cXHRcXHRcXHRcXHRcXHQgICBzcm5nLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jLTYzNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmM6NjM2OlxcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFyLVxcdTAwM2VhYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmMtNjM3LVxcdFxcdFxcdFxcdCAgIFxcdTAwMjZkcC1cXHUwMDNlcnhkbWFfbW9uX2J1Zl9yaW5nLnJlZmlsbF9idWZfcmluZyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYy02NDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jOjY0NjpcXHRyZXQgPSBhdGgxMWtfZHBfc3JuZ19zZXR1cChhci1cXHUwMDNlYWIsIFxcdTAwMjZkcC1cXHUwMDNlcnhkbWFfbW9uX2RzdF9yaW5nLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYy02NDctXFx0XFx0XFx0XFx0ICAgSEFMX1JYRE1BX01PTklUT1JfRFNULCAwLCBkcC1cXHUwMDNlbWFjX2lkLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jLTY1NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmM6NjU1OlxcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFyLVxcdTAwM2VhYiwgXFx1MDAyNmRwLVxcdTAwM2VyeGRtYV9tb25fZGVzY19yaW5nLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYy02NTYtXFx0XFx0XFx0XFx0ICAgSEFMX1JYRE1BX01PTklUT1JfREVTQywgMCwgZHAtXFx1MDAzZW1hY19pZCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6MzE6MjUuMTMyNzg5MTg4WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc1MTAxMjc1MTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQcm9tcHQncyBBcHBsaWNhYmlsaXR5KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgcHJvbXB0IHNwZWNpZmljYWxseSBtZW50aW9ucyBjb2RlIHJlbGF0ZWQgdG8gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMuIEkgaW1tZWRpYXRlbHkgdGhvdWdodCBhYm91dCBgYXRoMTFrYCDigJMgaXQncyBhIFF1YWxjb21tIEF0aGVyb3MgODAyLjExYXggZHJpdmVyLCBkZWZpbml0ZWx5IHZlbmRvci1zcGVjaWZpYyBhbmQgUENJZS4gSG93ZXZlciwgaXMgaXQgYSAqc3dpdGNoKiwgYSAqU21hcnROSUMqLCBvciBhICpHUFUqIGRyaXZlcj8gTm8sIGl0J3MgYSB3aXJlbGVzcyBkcml2ZXIuIFNvLCBpbml0aWFsIHBhc3MsIGl0IGRvZXNuJ3QgcXVpdGUgZml0IHRoZSAqdHlwZXMqIG9mIGRyaXZlcnMgbWVudGlvbmVkLlxuXG5UaGUgc2Vjb25kIHBhcnQgb2YgdGhlIHByb21wdCBpcyBrZXk6IFwiLi4ucmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzICpub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSouXCIgWWVzLCB0aGF0J3MgdHJ1ZSBmb3IgYGF0aDExa2AuIFFFTVUgZG9lc24ndCBvZmZlciBhIGRpcmVjdCBoYXJkd2FyZSBlbXVsYXRpb24gZm9yIHRoZSBzcGVjaWZpYyBRdWFsY29tbSBBdGhlcm9zIGNoaXBzZXRzLlxuXG5CdXQgdGhlbiBJIHJlbWVtYmVyZWQgdGhlIGBzeXprYWxsZXJgIFBDSSBmdXp6ZXIuIEl0ICpjYW4qIGVtdWxhdGUgUENJIGRldmljZXMsIGRvZXNuJ3QgaXQ/IFNvLCBldmVuIHRob3VnaCBpdCdzIG5vdCBhICpwZXJmZWN0KiBoYXJkd2FyZSBtb2RlbCwgdGhlIHF1ZXN0aW9uIGJlY29tZXMsIGNvdWxkIGl0IGJlIGZ1enplZCB2aWEgdGhhdCBtZWNoYW5pc20/IFRoZSB3b3JkaW5nIG9mIHRoZSBwcm9tcHQsIGFnYWluLCBzcGVjaWZpY2FsbHkgc2F5cyAqbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUqLiBUaGUgZnV6emVyIG1pZ2h0IGdldCB0aGUgZGV2aWNlIHByb2JlZCwgYnV0IGl0J3Mgbm90IHRoZSBcInN0YW5kYXJkXCIgUUVNVSBlbnZpcm9ubWVudC5cblxuVGhlbiBJIGNpcmNsZWQgYmFjayB0byB0aGUgZmFjdCB0aGF0IGBhdGgxMWtgIGlzIGEgd2lyZWxlc3MgZHJpdmVyLiBTeXprYWxsZXIgKmRvZXMqIGhhdmUgYG1hYzgwMjExX2h3c2ltYCBmb3Igd2lyZWxlc3MgZnV6emluZywgYnV0IGl0IGJ5cGFzc2VzIHRoZSBkaXJlY3QgdXNlIG9mIGBhdGgxMWtgLlxuXG5TbywgdGhlIGtleSBoZXJlIGlzIHdoZXRoZXIgYHN5emthbGxlcmAncyBQQ0kgZnV6emVyIGNhbiBiZSBsZXZlcmFnZWQgdG8gKnRyaWdnZXIqIHRoZSBgYXRoMTFrYCBwcm9iZSBzZXF1ZW5jZS4gSWYgaXQgY2FuLCB0aGVuIHdlIG1pZ2h0IGhhdmUgYSB2aWFibGUgZnV6emluZyB0YXJnZXQuIEl0J3MgYSBsb25nIHNob3QsIGdpdmVuIHRoZSBkcml2ZXIgdHlwZSwgYnV0IHRoZSBwb3RlbnRpYWwgaXMgdGhlcmUuXG5cbkZpbmFsbHksIEkgbmVlZCB0byBjaGVjayB3aGV0aGVyIGBhdGgxMWtgIG5lZWRzIGZpcm13YXJlIHRvIGV2ZW4gYmVnaW4gaXRzIGluaXRpYWxpemF0aW9uLiBNYW55IHdpcmVsZXNzIGRyaXZlcnMgYXJlIGZpcm13YXJlLWRlcGVuZGVudCwgYW5kIGlmIHNvLCBpdCdzIGEgbmVjZXNzYXJ5IHN0ZXAgYmVmb3JlIGFueSBtZWFuaW5nZnVsIGZ1enppbmcgY2FuIGNvbW1lbmNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTExOCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjozMTozMi42NDI5MjAyMDRaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk2ODcxNDk0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJlcXVlc3RfZmlybXdhcmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9mdy5jLTEwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZncuYzoxMTpzdGF0aWMgaW50IGF0aDExa19md19yZXF1ZXN0X2Zpcm13YXJlX2FwaV9uKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9mdy5jLTEyLVxcdFxcdFxcdFxcdFxcdCAgICBjb25zdCBjaGFyICpuYW1lKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9mdy5jPTE0Nz1pbnQgYXRoMTFrX2Z3X3ByZV9pbml0KHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Z3LmMtMTUwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZncuYzoxNTE6XFx0cmV0ID0gYXRoMTFrX2Z3X3JlcXVlc3RfZmlybXdhcmVfYXBpX24oYWIsIEFUSDExS19GV19BUEkyX0ZJTEUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZncuYy0xNTItXFx0aWYgKHJldCA9PSAwKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjMxOjMyLjczOTc5ODYyOFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzkyMDc0Mjc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBGaXJtd2FyZSBEZXBlbmRlbmNpZXMgaW4gU3l6a2FsbGVyIENvdmVyYWdlKipcblxuT2theSwgc28gSSdtIHRyeWluZyB0byB1bmRlcnN0YW5kIGhvdyB3ZWxsIFN5emthbGxlciBjYW4gY292ZXIgYSBzcGVjaWZpYyBhcmVhLCBhbmQgZmlybXdhcmUgZGVwZW5kZW5jaWVzIGFyZSBkZWZpbml0ZWx5IGEgcG90ZW50aWFsIGh1cmRsZS4gSSdtIHRoaW5raW5nLCBpZiB0aGUgZnVuY3Rpb25hbGl0eSBJJ20gaW50ZXJlc3RlZCBpbiwgd2hhdGV2ZXIgaXQgbWF5IGJlLCByZXF1aXJlcyBhIGZpcm13YXJlIGNvbXBvbmVudCwgU3l6a2FsbGVyJ3MgY292ZXJhZ2UgbWlnaHQgYmUgbGltaXRlZC4gVW5sZXNzIHRoZSByZXF1aXJlZCBmaXJtd2FyZSBpcyBiYWtlZCBpbnRvIHRoZSBzdGFuZGFyZCBgbGludXgtZmlybXdhcmVgIHBhY2thZ2UgYW5kIHByZXNlbnQgaW4gdGhlIFN5emthbGxlciBpbWFnZSwgb3IgaWYgdGhlcmUncyBzb21lIHNvcnQgb2YgZ3JhY2VmdWwgZmFpbHVyZSBoYW5kbGluZyBidWlsdCBpbiwgSSdtIHByb2JhYmx5IG91dCBvZiBsdWNrLlxuXG5UbyBnZXQgYSBoYW5kbGUgb24gdGhpcywgSSBuZWVkIHRvIGludmVzdGlnYXRlIHRoZSBzcGVjaWZpYyBmdW5jdGlvbiBpbiBxdWVzdGlvbjogYGF0aDExa19kcF9zcm5nX3NldHVwYC4gTGV0IG1lIHRyYWNlIGl0cyB1c2FnZSB0byBmaWd1cmUgb3V0IHRoZSBjb250ZXh0IHdoZXJlIGl0IGdldHMgY2FsbGVkLiBGcm9tIGEgcXVpY2sgc2VhcmNoLCBpdCBhcHBlYXJzIHRvIGJlIGNhbGxlZCBmcm9tIGEgZmV3IHBsYWNlcywgbGlrZSBgYXRoMTFrX2RwX3NybmdfY29tbW9uX3NldHVwYCwgYGF0aDExa19kcF9yeF9wZGV2X3NybmdfYWxsb2NgLCBhbmQgcGVyaGFwcyBvdGhlcnMuXG5cbkFscmlnaHQsIGxldCdzIHN0YXJ0IHdpdGggdHJhY2luZyB0aGUgZXhlY3V0aW9uIG9mIGBhdGgxMWtfZHBfc3JuZ19jb21tb25fc2V0dXBgLiBUaGlzIHNlZW1zIGxpa2UgYSByZWFzb25hYmxlIHN0YXJ0aW5nIHBvaW50IHRvIGJlZ2luIHRoZSBhbmFseXNpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTIyMDAsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6MzE6MzcuMTMxODc2NzAyWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3Mjk0Mjc1NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdGgxMWtfZHBfc3JuZ19jb21tb25fc2V0dXBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jPTM1Mj1zdGF0aWMgdm9pZCBhdGgxMWtfZHBfc3JuZ19jb21tb25fY2xlYW51cChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTM3MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmM6MzcyOnN0YXRpYyBpbnQgYXRoMTFrX2RwX3NybmdfY29tbW9uX3NldHVwKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTM3My17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmM9MTA1MD1pbnQgYXRoMTFrX2RwX2FsbG9jKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtMTA4Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmM6MTA4MzpcXHRyZXQgPSBhdGgxMWtfZHBfc3JuZ19jb21tb25fc2V0dXAoYWIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy0xMDg0LVxcdGlmIChyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjMxOjM3LjIwNDgzNDE5N1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjkxMjE5NTc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqRGVjb25zdHJ1Y3RpbmcgdGhlIGBhdGgxMWtgIERhdGEgUGF0aCBBbGxvY2F0aW9uKipcblxuT2theSwgc28gYGF0aDExa19kcF9hbGxvY2AgaXMgdGhlIGtleSBmdW5jdGlvbiBoZXJlLCByZXNwb25zaWJsZSBmb3IgYWxsb2NhdGluZyByZXNvdXJjZXMgZm9yIHRoZSBkYXRhIHBhdGggd2l0aGluIHRoZSBgYXRoMTFrYCBkcml2ZXIuIEl0IGFwcGVhcnMgaXQgY2FsbHMgYGF0aDExa19kcF9zcm5nX2NvbW1vbl9zZXR1cGAsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBJJ20gZ29pbmcgdG8gaGF2ZSB0byB1bmRlcnN0YW5kIHRoYXQgcmVsYXRpb25zaGlwLiBGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGxhcmdlciBjb250ZXh0LlxuXG5JIG5lZWQgdG8gc2VlIHdoZXJlIGBhdGgxMWtfZHBfYWxsb2NgIGlzICphY3R1YWxseSogY2FsbGVkIGZyb20uIFdoYXQgZnVuY3Rpb25zIHRyaWdnZXIgdGhpcyBhbGxvY2F0aW9uPyBXaGF0J3MgdGhlIGNhbGwgZ3JhcGggbGlrZT8gSXMgaXQgZHVyaW5nIGRldmljZSBpbml0aWFsaXphdGlvbiwgcGVyLWludGVyZmFjZSBzZXR1cCwgb3IgaXMgaXQgdHJpZ2dlcmVkIG9uIGEgcGVyLXBhY2tldCBiYXNpcz8gVW5kZXJzdGFuZGluZyB0aGUgY2FsbGluZyBjb250ZXh0IGlzIGdvaW5nIHRvIHByb3ZpZGUgY3JpdGljYWwgY2x1ZXMgYWJvdXQgdGhlIGRlc2lnbiBhbmQgdGhlIHBlcmZvcm1hbmNlIGltcGxpY2F0aW9ucyBvZiB0aGUgZGF0YSBwYXRoLiBJJ2xsIHN0YXJ0IGJ5IHRyYWNpbmcgdGhlIGNhbGxzIHRvIGBhdGgxMWtfZHBfYWxsb2NgLiBUaGF0J3MgdGhlIGxvZ2ljYWwgZmlyc3Qgc3RlcCBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjkyMSwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjMxOjQxLjg5NjA1Nzc1MloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTE2OTEwMjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRoMTFrX2RwX2FsbG9jXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jPTIyNjM9aW50IGF0aDExa19jb3JlX3FtaV9maXJtd2FyZV9yZWFkeShzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmMtMjI5Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuYzoyMjkzOlxcdHJldCA9IGF0aDExa19kcF9hbGxvYyhhYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmMtMjI5NC1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmM9MTAyNT12b2lkIGF0aDExa19kcF9mcmVlKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtMTA0OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmM6MTA1MDppbnQgYXRoMTFrX2RwX2FsbG9jKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTEwNTEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5oPTE2NjM9dm9pZCBhdGgxMWtfZHBfZnJlZShzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmg6MTY2NDppbnQgYXRoMTFrX2RwX2FsbG9jKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuaC0xNjY1LWludCBhdGgxMWtfZHBfcGRldl9hbGxvYyhzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6MzE6NDEuOTg3NzU1MzM2WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU3MDI5MDE0NjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBSZWFjaGFiaWxpdHkgb2YgYGF0aDExa19jb3JlX3FtaV9maXJtd2FyZV9yZWFkeWAgaW4gYSBWaXJ0dWFsaXplZCBFbnZpcm9ubWVudCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgZnVuY3Rpb24gY2FsbCwgYGF0aDExa19jb3JlX3FtaV9maXJtd2FyZV9yZWFkeWAsIGFuZCB0aGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgaXMgdGhhdCBpdCByZXF1aXJlcyBRTUkgZmlybXdhcmUgdG8gYmUgcmVhZHkuIFRoYXQncyBhIHByZXR0eSBzdHJvbmcgaW5kaWNhdG9yIHJpZ2h0IHRoZXJlLiBLbm93aW5nIHRoZSB0eXBpY2FsIGNvbnN0cmFpbnRzIG9mIG15IHdvcmssIEkgaW1tZWRpYXRlbHkgcmVjb2duaXplIHRoaXMgYXMgYSBwb3RlbnRpYWwgcm9hZGJsb2NrLiBJbiBhIHN0YW5kYXJkIFFFTVUgc2V0dXAsIG9yIGV2ZW4gc29tZXRoaW5nIG1vcmUgc29waGlzdGljYXRlZCBsaWtlIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIHNldHVwcyBzdWNoIGFzIHVzYiBnYWRnZXQgb3IgbWFjODAyMTFfaHdzaW0sIHJlYWNoaW5nIHRoaXMgZnVuY3Rpb24gaXMgcHJhY3RpY2FsbHkgaW1wb3NzaWJsZS4gV2UncmUgdGFsa2luZyBhYm91dCBhIGRlcGVuZGVuY3kgb24gUU1JIGFuZCB0aGUgc3VjY2Vzc2Z1bCBsb2FkaW5nIG9mIGFjdHVhbCBmaXJtd2FyZSwgd2hpY2ggaXMgZmFyIGJleW9uZCB0aGUgc2NvcGUgb2YgYSB0eXBpY2FsIHZpcnR1YWxpemF0aW9uIHNjZW5hcmlvLlxuXG5UaGUgcHJvbXB0IGNvbmZpcm1zIG15IGluaXRpYWwgc3VzcGljaW9uIGJ5IGV4cGxpY2l0bHkgc3RhdGluZyB0aGF0IHRoZXNlIGtpbmRzIG9mIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGluIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLiBHaXZlbiB0aGF0IGBhdGgxMWtgIHJlbGllcyBvbiB0aGlzIHBoeXNpY2FsIGhhcmR3YXJlIGFuZCBmaXJtd2FyZSByZWFkaW5lc3MgdG8gZ2V0IHRvIGBhdGgxMWtfY29yZV9xbWlfZmlybXdhcmVfcmVhZHlgLCB0aGUgY29uY2x1c2lvbiBpcyBjbGVhcjogdGhpcyBwYXRoIGlzIHVuYWNoaWV2YWJsZSBpbiBRRU1VLiBUaGF0IG1lYW5zIFdvcnRoRnV6emluZyBzaG91bGQgYmUgc2V0IHRvIGZhbHNlLlxuXG5CdXQsIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLCBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgdGhlcmUgYXJlIG5vIG90aGVyIGFsdGVybmF0aXZlIHBhdGhzIHRvIGBhdGgxMWtfZHBfc3JuZ19zZXR1cGAg4oCTIGp1c3QgaW4gY2FzZSB0aGVyZSdzIGFub3RoZXIgcG9pbnQgb2YgZW50cnkuIEl0J3MgYWx3YXlzIGdvb2QgdG8gYmUgdGhvcm91Z2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzNjQ5LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjMxOjQ3LjY5MDY1OTMxN1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAyMzY1NzkzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0aDExa19kcF9zcm5nX3NldHVwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGJyaW5nLmM9MjM3PWludCBhdGgxMWtfZGJyaW5nX3Nybmdfc2V0dXAoc3RydWN0IGF0aDExayAqYXIsIHN0cnVjdCBhdGgxMWtfZGJyaW5nICpyaW5nLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kYnJpbmcuYy0yNDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kYnJpbmcuYzoyNDI6XFx0cmV0ID0gYXRoMTFrX2RwX3Nybmdfc2V0dXAoYXItXFx1MDAzZWFiLCBcXHUwMDI2cmluZy1cXHUwMDNlcmVmaWxsX3NybmcsIEhBTF9SWERNQV9ESVJfQlVGLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGJyaW5nLmMtMjQzLVxcdFxcdFxcdFxcdCAgIHJpbmdfbnVtLCBhci1cXHUwMDNlcGRldl9pZHgsIG51bV9lbnRyaWVzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYz0xODE9c3RhdGljIHZvaWQgYXRoMTFrX2RwX3NybmdfbXNpX3NldHVwKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtMjIwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYzoyMjE6aW50IGF0aDExa19kcF9zcm5nX3NldHVwKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIHN0cnVjdCBkcF9zcm5nICpyaW5nLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy0yMjItXFx0XFx0XFx0IGVudW0gaGFsX3JpbmdfdHlwZSB0eXBlLCBpbnQgcmluZ19udW0sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmM9MzcyPXN0YXRpYyBpbnQgYXRoMTFrX2RwX3NybmdfY29tbW9uX3NldHVwKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtMzc4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYzozNzk6XFx0cmV0ID0gYXRoMTFrX2RwX3Nybmdfc2V0dXAoYWIsIFxcdTAwMjZkcC1cXHUwMDNld2JtX2Rlc2NfcmVsX3JpbmcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTM4MC1cXHRcXHRcXHRcXHQgICBIQUxfU1cyV0JNX1JFTEVBU0UsIDAsIDAsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtMzg3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYzozODg6XFx0cmV0ID0gYXRoMTFrX2RwX3Nybmdfc2V0dXAoYWIsIFxcdTAwMjZkcC1cXHUwMDNldGNsX2NtZF9yaW5nLCBIQUxfVENMX0NNRCwgMCwgMCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtMzg5LVxcdFxcdFxcdFxcdCAgIERQX1RDTF9DTURfUklOR19TSVpFKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy0zOTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jOjM5NTpcXHRyZXQgPSBhdGgxMWtfZHBfc3JuZ19zZXR1cChhYiwgXFx1MDAyNmRwLVxcdTAwM2V0Y2xfc3RhdHVzX3JpbmcsIEhBTF9UQ0xfU1RBVFVTLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy0zOTYtXFx0XFx0XFx0XFx0ICAgMCwgMCwgRFBfVENMX1NUQVRVU19SSU5HX1NJWkUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTQwNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmM6NDA2OlxcdFxcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFiLCBcXHUwMDI2ZHAtXFx1MDAzZXR4X3JpbmdbaV0udGNsX2RhdGFfcmluZyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtNDA3LVxcdFxcdFxcdFxcdFxcdCAgIEhBTF9UQ0xfREFUQSwgdGNsX251bSwgMCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy00MTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jOjQxNTpcXHRcXHRyZXQgPSBhdGgxMWtfZHBfc3JuZ19zZXR1cChhYiwgXFx1MDAyNmRwLVxcdTAwM2V0eF9yaW5nW2ldLnRjbF9jb21wX3JpbmcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTQxNi1cXHRcXHRcXHRcXHRcXHQgICBIQUxfV0JNMlNXX1JFTEVBU0UsIHdibV9udW0sIDAsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtNDMxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYzo0MzI6XFx0cmV0ID0gYXRoMTFrX2RwX3Nybmdfc2V0dXAoYWIsIFxcdTAwMjZkcC1cXHUwMDNlcmVvX3JlaW5qZWN0X3JpbmcsIEhBTF9SRU9fUkVJTkpFQ1QsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTQzMy1cXHRcXHRcXHRcXHQgICAwLCAwLCBEUF9SRU9fUkVJTkpFQ1RfUklOR19TSVpFKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy00MzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jOjQ0MDpcXHRyZXQgPSBhdGgxMWtfZHBfc3JuZ19zZXR1cChhYiwgXFx1MDAyNmRwLVxcdTAwM2VyeF9yZWxfcmluZywgSEFMX1dCTTJTV19SRUxFQVNFLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy00NDEtXFx0XFx0XFx0XFx0ICAgRFBfUlhfUkVMRUFTRV9SSU5HX05VTSwgMCwgRFBfUlhfUkVMRUFTRV9SSU5HX1NJWkUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTQ0Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmM6NDQ3OlxcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFiLCBcXHUwMDI2ZHAtXFx1MDAzZXJlb19leGNlcHRfcmluZywgSEFMX1JFT19FWENFUFRJT04sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTQ0OC1cXHRcXHRcXHRcXHQgICAwLCAwLCBEUF9SRU9fRVhDRVBUSU9OX1JJTkdfU0laRSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtNDU0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYzo0NTU6XFx0cmV0ID0gYXRoMTFrX2RwX3Nybmdfc2V0dXAoYWIsIFxcdTAwMjZkcC1cXHUwMDNlcmVvX2NtZF9yaW5nLCBIQUxfUkVPX0NNRCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtNDU2LVxcdFxcdFxcdFxcdCAgIDAsIDAsIERQX1JFT19DTURfUklOR19TSVpFKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy00NjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jOjQ2OTpcXHRyZXQgPSBhdGgxMWtfZHBfc3JuZ19zZXR1cChhYiwgXFx1MDAyNmRwLVxcdTAwM2VyZW9fc3RhdHVzX3JpbmcsIEhBTF9SRU9fU1RBVFVTLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYy00NzAtXFx0XFx0XFx0XFx0ICAgMCwgMCwgRFBfUkVPX1NUQVRVU19SSU5HX1NJWkUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jPTY0OD1zdGF0aWMgaW50IGF0aDExa193Ym1faWRsZV9yaW5nX3NldHVwKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIHUzMiAqbl9saW5rX2Rlc2MpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtNjc0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYzo2NzU6XFx0cmV0ID0gYXRoMTFrX2RwX3Nybmdfc2V0dXAoYWIsIFxcdTAwMjZkcC1cXHUwMDNld2JtX2lkbGVfcmluZyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtNjc2LVxcdFxcdFxcdFxcdCAgIEhBTF9XQk1fSURMRV9MSU5LLCAwLCAwLCAqbl9saW5rX2Rlc2MpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5oPTE2NzI9dm9pZCBhdGgxMWtfZHBfc3JuZ19jbGVhbnVwKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIHN0cnVjdCBkcF9zcm5nICpyaW5nKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmg6MTY3MzppbnQgYXRoMTFrX2RwX3Nybmdfc2V0dXAoc3RydWN0IGF0aDExa19iYXNlICphYiwgc3RydWN0IGRwX3NybmcgKnJpbmcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5oLTE2NzQtXFx0XFx0XFx0IGVudW0gaGFsX3JpbmdfdHlwZSB0eXBlLCBpbnQgcmluZ19udW0sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmM9NTQ2PWludCBhdGgxMWtfZHBfcGRldl9yZW9fc2V0dXAoc3RydWN0IGF0aDExa19iYXNlICphYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYy01NTItXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIERQX1JFT19EU1RfUklOR19NQVg7IGkrKykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYzo1NTM6XFx0XFx0cmV0ID0gYXRoMTFrX2RwX3Nybmdfc2V0dXAoYWIsIFxcdTAwMjZkcC1cXHUwMDNlcmVvX2RzdF9yaW5nW2ldLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYy01NTQtXFx0XFx0XFx0XFx0XFx0ICAgSEFMX1JFT19EU1QsIGksIDAsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmM9NTcwPXN0YXRpYyBpbnQgYXRoMTFrX2RwX3J4X3BkZXZfc3JuZ19hbGxvYyhzdHJ1Y3QgYXRoMTFrICphcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYy01NzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jOjU3ODpcXHRyZXQgPSBhdGgxMWtfZHBfc3JuZ19zZXR1cChhci1cXHUwMDNlYWIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jLTU3OS1cXHRcXHRcXHRcXHQgICBcXHUwMDI2ZHAtXFx1MDAzZXJ4X3JlZmlsbF9idWZfcmluZy5yZWZpbGxfYnVmX3JpbmcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmMtNTg4LVxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBhYi1cXHUwMDNlaHdfcGFyYW1zLm51bV9yeGRtYV9wZXJfcGRldjsgaSsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jOjU4OTpcXHRcXHRcXHRyZXQgPSBhdGgxMWtfZHBfc3JuZ19zZXR1cChhci1cXHUwMDNlYWIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jLTU5MC1cXHRcXHRcXHRcXHRcXHRcXHQgICBcXHUwMDI2ZHAtXFx1MDAzZXJ4X21hY19idWZfcmluZ1tpXSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYy02MDEtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGFiLVxcdTAwM2Vod19wYXJhbXMubnVtX3J4ZG1hX3Blcl9wZGV2OyBpKyspIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmM6NjAyOlxcdFxcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFyLVxcdTAwM2VhYiwgXFx1MDAyNmRwLVxcdTAwM2VyeGRtYV9lcnJfZHN0X3JpbmdbaV0sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jLTYwMy1cXHRcXHRcXHRcXHRcXHQgICBIQUxfUlhETUFfRFNULCAwLCBkcC1cXHUwMDNlbWFjX2lkICsgaSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYy02MTItXFx0XFx0c3JuZyA9IFxcdTAwMjZkcC1cXHUwMDNlcnhfbW9uX3N0YXR1c19yZWZpbGxfcmluZ1tpXS5yZWZpbGxfYnVmX3Jpbmc7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jOjYxMzpcXHRcXHRyZXQgPSBhdGgxMWtfZHBfc3JuZ19zZXR1cChhci1cXHUwMDNlYWIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jLTYxNC1cXHRcXHRcXHRcXHRcXHQgICBzcm5nLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jLTYzNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmM6NjM2OlxcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFyLVxcdTAwM2VhYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmMtNjM3LVxcdFxcdFxcdFxcdCAgIFxcdTAwMjZkcC1cXHUwMDNlcnhkbWFfbW9uX2J1Zl9yaW5nLnJlZmlsbF9idWZfcmluZyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYy02NDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jOjY0NjpcXHRyZXQgPSBhdGgxMWtfZHBfc3JuZ19zZXR1cChhci1cXHUwMDNlYWIsIFxcdTAwMjZkcC1cXHUwMDNlcnhkbWFfbW9uX2RzdF9yaW5nLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYy02NDctXFx0XFx0XFx0XFx0ICAgSEFMX1JYRE1BX01PTklUT1JfRFNULCAwLCBkcC1cXHUwMDNlbWFjX2lkLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jLTY1NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmM6NjU1OlxcdHJldCA9IGF0aDExa19kcF9zcm5nX3NldHVwKGFyLVxcdTAwM2VhYiwgXFx1MDAyNmRwLVxcdTAwM2VyeGRtYV9tb25fZGVzY19yaW5nLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYy02NTYtXFx0XFx0XFx0XFx0ICAgSEFMX1JYRE1BX01PTklUT1JfREVTQywgMCwgZHAtXFx1MDAzZW1hY19pZCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6MzE6NDcuNzkzMDM2NTRaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzYwNDcxNjQ3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRoZSBleHBlcnQ6XG5cbioqVHJhY2luZyB0aGUgRGF0YSBQYXRoIEluaXRpYWxpemF0aW9uKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGBhdGgxMWtgIGRyaXZlciBjb2RlIGFuZCBJIHNlZSB0aGF0IGBhdGgxMWtfZHBfcGRldl9yZW9fc2V0dXBgIGlzIGJlaW5nIGNhbGxlZC4gVGhhdCBmdW5jdGlvbidzIG9idmlvdXNseSBjcnVjaWFsIGZvciBzZXR0aW5nIHVwIHRoZSByZWNlaXZlIG9mZmxvYWQgZW5naW5lIChSRU8pIG9uIGEgcGVyLWRldmljZSBsZXZlbCwgYnV0IEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBjb250ZXh0LiBXaGVyZSdzIHRoaXMgY2FsbGVkIGZyb20/IEFoLCBpdCdzIHRyaWdnZXJlZCBieSBgYXRoMTFrX2RwX3BkZXZfYWxsb2NgLiBMZXQncyBzdGVwIGJhY2sgYSBiaXQgYW5kIGZpbmQgb3V0ICp3aGVyZSogdGhhdCBhbGxvY2F0aW9uIGZ1bmN0aW9uIGl0c2VsZiBpcyBiZWluZyBpbnZva2VkLiBUaGF0IHdpbGwgZ2l2ZSBtZSB0aGUgYnJvYWRlciBwaWN0dXJlIG9mIGhvdyB0aGUgZGF0YSBwYXRoIGlzIGJlaW5nIGluaXRpYWxpemVkIGFuZCBhbGxvdyBtZSB0byBzZWUgdGhlIGRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNhbGwgY2hhaW4gdG8gdHJ1bHkgZ3Jhc3AgdGhlIGZsb3cgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTcyOTgsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjozMTo1MS4zOTc3NTU1MDNaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwNTQyNTEwMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdGgxMWtfZHBfcGRldl9hbGxvY1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuYz0yMDMxPXN0YXRpYyBpbnQgYXRoMTFrX2NvcmVfcGRldl9jcmVhdGUoc3RydWN0IGF0aDExa19iYXNlICphYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jLTIwNDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmM6MjA0MTpcXHRyZXQgPSBhdGgxMWtfZHBfcGRldl9hbGxvYyhhYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmMtMjA0Mi1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmM9ODg5PXZvaWQgYXRoMTFrX2RwX3BkZXZfcHJlX2FsbG9jKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtOTEyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYzo5MTM6aW50IGF0aDExa19kcF9wZGV2X2FsbG9jKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jLTkxNC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmg9MTY2ND1pbnQgYXRoMTFrX2RwX2FsbG9jKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuaDoxNjY1OmludCBhdGgxMWtfZHBfcGRldl9hbGxvYyhzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmgtMTY2Ni12b2lkIGF0aDExa19kcF9wZGV2X3ByZV9hbGxvYyhzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6MzE6NTEuNzAzMTkxMTA0WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3MjM3NDkwMjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyBgYXRoMTFrX2NvcmVfcGRldl9jcmVhdGVgIEluaXRpYWxpemF0aW9uKipcblxuT2theSwgSSdtIHRyYWNpbmcgdGhlIGluaXRpYWxpemF0aW9uIHBhdGggZm9yIGBhdGgxMWtfY29yZV9wZGV2X2NyZWF0ZWAuIE15IGluaXRpYWwgdGhvdWdodCBpcywgYmFzZWQgb24gZXhwZXJpZW5jZSwgdGhhdCBpdCdzIGxpa2VseSBpbnZva2VkIGVpdGhlciBieSBgYXRoMTFrX2NvcmVfcW1pX2Zpcm13YXJlX3JlYWR5YCDigJMgYWZ0ZXIgdGhlIFFNSSBpbnRlcmZhY2UgaXMgZXN0YWJsaXNoZWQgYW5kIGZpcm13YXJlIGlzIGdvb2QgdG8gZ28g4oCTIG9yIHBvdGVudGlhbGx5IGR1cmluZyB0aGUgYnJvYWRlciBgYXRoMTFrX2NvcmVfaW5pdGAgc2VxdWVuY2UuIFRoaXMgaXMgd2hlcmUgSSdkICpleHBlY3QqIHRoZSBwaHlzaWNhbCBkZXZpY2UgY29udGV4dCB0byBiZSBjcmVhdGVkLiBJdCdzIHRoZSBtb3N0IGxvZ2ljYWwgcGxhY2UsIGdpdmVuIHdoYXQgYHBkZXZgIHJlcHJlc2VudHMuIEkgbmVlZCB0byBxdWlja2x5IGNvbmZpcm0gdGhpczsgYSBxdWljayBjb2RlIGRpdmUgaW50byB0aG9zZSBmdW5jdGlvbnMgaXMgdGhlIG5leHQgbG9naWNhbCBzdGVwLiBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIGNhbGwgZ3JhcGggdG8gc2VlIHdoYXQgc3BlY2lmaWNhbGx5IHRyaWdnZXJzIHRoZSBjcmVhdGlvbiBvZiB0aGUgcGRldi4gRmluZGluZyB0aGlzIHdpbGwgaGVscCBtZSB1bmRlcnN0YW5kIHRoZSBvdmVyYWxsIHRpbWluZyBhbmQgZGVwZW5kZW5jaWVzIHdpdGhpbiB0aGUgZHJpdmVyIGluaXRpYWxpemF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODAwNywiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjMxOjU2LjQyNjk0MzU5N1oiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjYzNTk2MzI0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0aDExa19jb3JlX3BkZXZfY3JlYXRlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jPTIwMjM9c3RhdGljIHZvaWQgYXRoMTFrX2NvcmVfc29jX2Rlc3Ryb3koc3RydWN0IGF0aDExa19iYXNlICphYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jLTIwMzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmM6MjAzMTpzdGF0aWMgaW50IGF0aDExa19jb3JlX3BkZXZfY3JlYXRlKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmMtMjAzMi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuYz0yMjYzPWludCBhdGgxMWtfY29yZV9xbWlfZmlybXdhcmVfcmVhZHkoc3RydWN0IGF0aDExa19iYXNlICphYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jLTIzMDgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmM6MjMwOTpcXHRyZXQgPSBhdGgxMWtfY29yZV9wZGV2X2NyZWF0ZShhYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmMtMjMxMC1cXHRpZiAocmV0KSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjMxOjU2LjY5MDU0NjY4WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2NzU5MzYyNjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBSZWFjaGFiaWxpdHkgb2YgYGF0aDExa19kcF9zcm5nX3NldHVwYCBmb3IgRnV6emluZyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBwYXRoIGFuZCBpdCdzIGNsZWFyIHRoYXQgYGF0aDExa19kcF9zcm5nX3NldHVwYCBpcyBhbHdheXMgY2FsbGVkIGZyb20gYGF0aDExa19jb3JlX3FtaV9maXJtd2FyZV9yZWFkeWAuIFRoYXQgbWVhbnMsIHRoZSBRTUkgZmlybXdhcmUgaGFzIHRvIGJlIGZ1bGx5IGluaXRpYWxpemVkIGFuZCByZWFkeSB0byBnbyBiZWZvcmUgd2UgZXZlbiBnZXQgKmNsb3NlKiB0byB0aGF0IGZ1bmN0aW9uLlxuXG5JbW1lZGlhdGVseSwgbXkgZXhwZXJ0IGluc3RpbmN0IGlzIHNjcmVhbWluZyBcIkhhcmR3YXJlIGRlcGVuZGVuY3khXCIgSSBrbm93IGZyb20gZXhwZXJpZW5jZSB0aGF0IHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdvb2dsZSBDb21wdXRlIEVuZ2luZSBvciBRRU1VIGp1c3QgKmFyZW4ndCogc2V0IHVwIHRvIGhhbmRsZSBRTUkgZmlybXdhcmUgaW4gYSByZWFsaXN0aWMgd2F5LCB1bmxlc3Mgd2UncmUgdGFsa2luZyBzb21lIHNlcmlvdXNseSBzb3BoaXN0aWNhdGVkIGVtdWxhdGlvbi4gIFRoZXJlZm9yZSwgSSdtIG1hcmtpbmcgdGhpcyBhcyBgV29ydGhGdXp6aW5nPWZhbHNlYC4gSXQncyBqdXN0IG5vdCBwcmFjdGljYWwgb3IgZWZmaWNpZW50IHRvIHRyeSBhbmQgcmVhY2ggdGhhdCBwb2ludCBpbiB0aGVzZSBjb21tb24gdGVzdGluZyBzZXR1cHMuXG5cbkJ1dCwgYmVmb3JlIEkgY29tcGxldGVseSBkaXNtaXNzIGl0LCBsZXQncyBqdXN0IG1ha2UgKmFic29sdXRlbHkqIHN1cmUgdGhlcmUgYXJlbid0IGFueSBzbmVha3kgb3RoZXIgY2FsbHMgdG8gYGF0aDExa19kcF9zcm5nX3NldHVwYC4gTXkgaW5pdGlhbCBzZWFyY2ggYWxzbyByZXZlYWxlZCBgYXRoMTFrX2RicmluZ19zcm5nX3NldHVwYCwgc28gSSBuZWVkIHRvIGdvIG92ZXIgdGhhdCBvbmUgbm93IGFuZCBzZWUgd2hlcmUgaXQncyBjYWxsZWQuIEdvdHRhIGJlIHRob3JvdWdoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODYxNywiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjozMjowMS4zNjY0ODgwNDVaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNjYyMjg1MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdGgxMWtfZGJyaW5nX3Nybmdfc2V0dXBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYz04ODM9c3RhdGljIGludCBhdGgxMWtfY2ZyX3JpbmdfYWxsb2Moc3RydWN0IGF0aDExayAqYXIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jLTg4OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jOjg4OTpcXHRyZXQgPSBhdGgxMWtfZGJyaW5nX3Nybmdfc2V0dXAoYXIsIFxcdTAwMjZjZnItXFx1MDAzZXJ4X3JpbmcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYy04OTAtXFx0XFx0XFx0XFx0ICAgICAgIEFUSDExS19DRlJfTlVNX1JJTkdfRU5UUklFUyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGJyaW5nLmM9MjE0PWludCBhdGgxMWtfZGJyaW5nX2J1Zl9zZXR1cChzdHJ1Y3QgYXRoMTFrICphcixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGJyaW5nLmMtMjM2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGJyaW5nLmM6MjM3OmludCBhdGgxMWtfZGJyaW5nX3Nybmdfc2V0dXAoc3RydWN0IGF0aDExayAqYXIsIHN0cnVjdCBhdGgxMWtfZGJyaW5nICpyaW5nLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGJyaW5nLmMtMjM4LVxcdFxcdFxcdCAgICAgaW50IHJpbmdfbnVtLCBpbnQgbnVtX2VudHJpZXMpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RicmluZy5oPTczPWludCBhdGgxMWtfZGJyaW5nX2J1Zl9zZXR1cChzdHJ1Y3QgYXRoMTFrICphcixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGJyaW5nLmgtNzUtXFx0XFx0XFx0ICAgIHN0cnVjdCBhdGgxMWtfZGJyaW5nX2NhcCAqZGJfY2FwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RicmluZy5oOjc2OmludCBhdGgxMWtfZGJyaW5nX3Nybmdfc2V0dXAoc3RydWN0IGF0aDExayAqYXIsIHN0cnVjdCBhdGgxMWtfZGJyaW5nICpyaW5nLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGJyaW5nLmgtNzctXFx0XFx0XFx0ICAgICBpbnQgcmluZ19udW0sIGludCBudW1fZW50cmllcyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3NwZWN0cmFsLmM9ODE4PXN0YXRpYyBpbnQgYXRoMTFrX3NwZWN0cmFsX3JpbmdfYWxsb2Moc3RydWN0IGF0aDExayAqYXIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3NwZWN0cmFsLmMtODIzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvc3BlY3RyYWwuYzo4MjQ6XFx0cmV0ID0gYXRoMTFrX2RicmluZ19zcm5nX3NldHVwKGFyLCBcXHUwMDI2c3AtXFx1MDAzZXJ4X3JpbmcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9zcGVjdHJhbC5jLTgyNS1cXHRcXHRcXHRcXHQgICAgICAgMCwgZGJfY2FwLVxcdTAwM2VtaW5fZWxlbSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjMyOjAxLjQ4MzExNjYzOFoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTE2NDI5NjcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipBbmFseXppbmcgYGF0aDExa2AgUmluZyBBbGxvY2F0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgcmluZyBhbGxvY2F0aW9uIGZ1bmN0aW9uczogYGF0aDExa19jZnJfcmluZ19hbGxvY2AgYW5kIGBhdGgxMWtfc3BlY3RyYWxfcmluZ19hbGxvY2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBsZXQncyBkcmlsbCBkb3duIGFuZCB1bmRlcnN0YW5kIHRoZSBjYWxsIGdyYXBoIG9mIGBhdGgxMWtfY2ZyX3JpbmdfYWxsb2NgIGZpcnN0LiBJIHdhbnQgdG8gc2VlIGV4YWN0bHkgKndoZXJlKiB0aGlzIGZ1bmN0aW9uIGlzIGJlaW5nIGNhbGxlZCBmcm9tIHdpdGhpbiB0aGUgYGF0aDExa2AgZHJpdmVyLiBLbm93aW5nIHRoZSBjYWxsIHNpdGVzIHdpbGwgcHJvdmlkZSBjb250ZXh0IG9uIGl0cyBwdXJwb3NlIGFuZCBob3cgaXQgZml0cyBpbnRvIHRoZSBicm9hZGVyIGRhdGEgZmxvdy4gTGV0J3Mgc2VlIHdoYXQgdGhlIGNvZGUgcmV2ZWFscy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk3MjgsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjozMjowNS41OTk1NTA1MDhaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg2OTQ3MjY0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0aDExa19jZnJfcmluZ19hbGxvY1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Nmci5jPTg3NT1zdGF0aWMgdm9pZCBhdGgxMWtfY2ZyX3JpbmdfZnJlZShzdHJ1Y3QgYXRoMTFrICphcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtODgyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmM6ODgzOnN0YXRpYyBpbnQgYXRoMTFrX2Nmcl9yaW5nX2FsbG9jKHN0cnVjdCBhdGgxMWsgKmFyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtODg0LVxcdFxcdFxcdFxcdCBzdHJ1Y3QgYXRoMTFrX2RicmluZ19jYXAgKmRiX2NhcClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmM9OTUxPWludCBhdGgxMWtfY2ZyX2luaXQoc3RydWN0IGF0aDExa19iYXNlICphYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtOTgzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmM6OTg0OlxcdFxcdHJldCA9IGF0aDExa19jZnJfcmluZ19hbGxvYyhhciwgXFx1MDAyNmRiX2NhcCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYy05ODUtXFx0XFx0aWYgKHJldCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjozMjowNS42ODY1MDI1NzNaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDA2Nzc2NzM4NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKkRlY29uc3RydWN0aW5nIHRoZSBDYWxsIHRvIGBhdGgxMWtfY2ZyX2luaXRgKipcblxuT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgYGF0aDExa19jZnJfaW5pdGAgaXMgYmVpbmcgY2FsbGVkIGZyb20uIFRoYXQncyB0aGUgY29yZSBxdWVzdGlvbiwgaXNuJ3QgaXQ/IEtub3dpbmcgdGhlIGNhbGxpbmcgY29udGV4dCBpcyBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIGl0cyBwdXJwb3NlIGFuZCBpbXBhY3Qgd2l0aGluIHRoZSBsYXJnZXIgYXRoMTFrIGRyaXZlciBmcmFtZXdvcmsuIEkgaW1tZWRpYXRlbHkgdGhpbmsgb2YgYSBmZXcgYXZlbnVlcyB0byBwdXJzdWUuIEZpcnN0LCBJ4oCZbGwgbmVlZCB0byB0cmFjZSB0aGUgZnVuY3Rpb24ncyBkZWZpbml0aW9uLiBJcyBpdCBhIHN0YXRpYyBmdW5jdGlvbiB3aXRoaW4gYSBzcGVjaWZpYyBtb2R1bGUsIG9yIGlzIGl0IGV4cG9ydGVkIGFuZCBjYWxsYWJsZSBmcm9tIGVsc2V3aGVyZT8gVGhlIGtlcm5lbCBzb3VyY2UgY29kZSBpcyBteSBmcmllbmQgaGVyZS4gSSdsbCBuZWVkIHRvIHVzZSB0b29scyBsaWtlIGBncmVwYCBvciBteSBJREUncyBcImZpbmQgcmVmZXJlbmNlc1wiIGZ1bmN0aW9uYWxpdHkgdG8gbG9jYXRlIGFsbCBpbnN0YW5jZXMgd2hlcmUgYGF0aDExa19jZnJfaW5pdGAgaXMgaW52b2tlZC5cblxuT25jZSBJJ3ZlIGdvdCB0aGUgY2FsbCBzaXRlcywgSSdsbCBuZWVkIHRvIG1ldGljdWxvdXNseSBhbmFseXplIGVhY2ggb25lLiBXaGF0J3MgdGhlIHN1cnJvdW5kaW5nIGNvZGUgZG9pbmc/IFdoYXQgZGF0YSBpcyBiZWluZyBwYXNzZWQgdG8gdGhlIGZ1bmN0aW9uPyBXaGF0J3MgdGhlIGNvbnRyb2wgZmxvdyB0aGF0IGxlYWRzIHRvIHRoaXMgY2FsbD8gSXMgaXQgdHJpZ2dlcmVkIGJ5IGhhcmR3YXJlIGluaXRpYWxpemF0aW9uLCBhIHJlZ3VsYXRvcnkgZXZlbnQsIG9yIHBlcmhhcHMgYSB1c2VyLXNwYWNlIGNvbmZpZ3VyYXRpb24gY29tbWFuZD9cblxuSSBhbHNvIG5lZWQgdG8ga2VlcCBpbiBtaW5kIHRoZSBwb3RlbnRpYWwgZm9yIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIG9yIHBsYXRmb3JtLXNwZWNpZmljIGltcGxlbWVudGF0aW9ucy4gVGhlIGNhbGwgbWlnaHQgYmUgd3JhcHBlZCBpbiBgI2lmZGVmYCBkaXJlY3RpdmVzIG9yIHVzZSBkaWZmZXJlbnQgaW1wbGVtZW50YXRpb25zIGRlcGVuZGluZyBvbiB0aGUgaGFyZHdhcmUgdmFyaWFudCBvciB0YXJnZXQgb3BlcmF0aW5nIHN5c3RlbS4gVGhlc2UgZGV0YWlscyBhcmUgdml0YWwgdG8gZ2V0IHRoZSBiaWdnZXIgcGljdHVyZS4gSW4gc2hvcnQsIGl0J3Mgbm90IGp1c3QgKndoZXJlKiBpdCdzIGNhbGxlZCBmcm9tIGJ1dCAqd2h5KiBhbmQgKnVuZGVyIHdoYXQgY29uZGl0aW9ucyogdGhhdCBtYXR0ZXJzLiBUaGlzIGFuYWx5c2lzIHdpbGwgcHJvdmlkZSBhbGwgdGhlIG5lY2Vzc2FyeSBpbnNpZ2h0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAyNjAsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjozMjowOS43NTQyNzUxMDdaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMTY4OTc2MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdGgxMWtfY2ZyX2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYz05MjM9dm9pZCBhdGgxMWtfY2ZyX2RlaW5pdChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYy05NTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuYzo5NTE6aW50IGF0aDExa19jZnJfaW5pdChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmMtOTUyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmg9MjA5PWVudW0gYXRoMTFrX2Nmcl9jYXB0dXJlX2J3IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmgtMjE2LSNpZmRlZiBDT05GSUdfQVRIMTFLX0NGUlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmg6MjE3OmludCBhdGgxMWtfY2ZyX2luaXQoc3RydWN0IGF0aDExa19iYXNlICphYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuaC0yMTgtdm9pZCBhdGgxMWtfY2ZyX2RlaW5pdChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY2ZyLmg9MjQwPXN0YXRpYyBpbmxpbmUgdm9pZCBhdGgxMWtfY2ZyX3VwZGF0ZV9waHltb2RlKHN0cnVjdCBhdGgxMWsgKmFyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuaC0yNDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuaDoyNDU6c3RhdGljIGlubGluZSBpbnQgYXRoMTFrX2Nmcl9pbml0KHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jZnIuaC0yNDYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmM9MjAzMT1zdGF0aWMgaW50IGF0aDExa19jb3JlX3BkZXZfY3JlYXRlKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuYy0yMDY1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jOjIwNjY6XFx0cmV0ID0gYXRoMTFrX2Nmcl9pbml0KGFiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuYy0yMDY3LVxcdGlmIChyZXQpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6MzI6MDkuODY1OTcyNzNaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDk5NjA4MzE0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipVbnJlYWNoYWJsZSBDb2RlIGluIGEgVmlydHVhbGl6ZWQgRW52aXJvbm1lbnQqKlxuXG5Pa2F5LCBzbyBJJ20gY2lyY2xpbmcgYmFjayB0byBgYXRoMTFrX2NvcmVfcGRldl9jcmVhdGVgIOKAkyB0aGF0IGZ1bmN0aW9uIGFnYWluLiBJdCdzIGNsZWFyIHRoYXQgdGhlIGNyZWF0aW9uIHByb2Nlc3MsIHdoZXRoZXIgdGhyb3VnaCBgYXRoMTFrX2NvcmVfcGRldl9jcmVhdGVgIG9yIGBhdGgxMWtfZHBfYWxsb2NgLCBpcyBmdW5kYW1lbnRhbGx5IHRpZWQgdG8gdGhlIGNhbGwgZnJvbSBgYXRoMTFrX2NvcmVfcW1pX2Zpcm13YXJlX3JlYWR5YC4gQW5kIGdpdmVuIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIGFyY2hpdGVjdHVyZSwgdGhpcyBzdHJvbmdseSBpbmRpY2F0ZXMgdGhhdCB0aGUgcmVsZXZhbnQgY29kZSBwYXRoIGlzbid0IGdvaW5nIHRvIGJlIHJlYWNoYWJsZSBpbiBhIHB1cmVseSB2aXJ0dWFsaXplZCBjb250ZXh0LiBXZSdyZSBtaXNzaW5nIHRoZSBjcnVjaWFsIGhhcmR3YXJlIGFuZCBmaXJtd2FyZSBpbnRlcmFjdGlvbi4gVGhlIHN5c3RlbSBuZWVkcyB0byBiZSByZWFsLiBUaGVyZWZvcmUsIEkgY2FuIGNvbmZpZGVudGx5IG1hcmsgYFdvcnRoRnV6emluZ2AgYXMgYGZhbHNlYCBmb3IgdGhpcyBzZWN0aW9uLiBUaGF0J3MgdGhlIGNvbmNsdXNpb24gSSd2ZSBjb21lIHRvLCBzbyBJJ2xsIGdvIGFoZWFkIGFuZCBzZXQgdGhlIHJlc3VsdHMgYWNjb3JkaW5nbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMjMxLCJPdXRwdXRUb2tlbnMiOjE0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjozMjoxNC44NjIwNTk0MzVaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzMzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBtb2RpZmllZCBmdW5jdGlvbiBgYXRoMTFrX2RwX3Nybmdfc2V0dXBgIGlzIHBhcnQgb2YgdGhlIGRhdGFwYXRoIGluaXRpYWxpemF0aW9uIGZvciB0aGUgYXRoMTFrIGRyaXZlciAoUXVhbGNvbW0gQXRoZXJvcyA4MDIuMTFheCkuIEl0IGlzIG9ubHkgY2FsbGVkIGFmdGVyIHRoZSBRTUkgZmlybXdhcmUgaXMgc3VjY2Vzc2Z1bGx5IGxvYWRlZCBhbmQgcmVhZHkgKGBhdGgxMWtfY29yZV9xbWlfZmlybXdhcmVfcmVhZHlgKS4gU2luY2UgUUVNVSBkb2VzIG5vdCBlbXVsYXRlIGF0aDExayBoYXJkd2FyZSBhbmQgc3l6a2FsbGVyIGNhbm5vdCBwcm92aWRlIHRoZSBuZWNlc3NhcnkgaGFyZHdhcmUgc3RhdGUgYW5kIGZpcm13YXJlIHRvIHJlYWNoIHRoaXMgaW5pdGlhbGl6YXRpb24gcGhhc2UsIHRoaXMgY29kZSBpcyB1bnJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIG1vZGlmaWVkIGZ1bmN0aW9uIGBhdGgxMWtfZHBfc3JuZ19zZXR1cGAgaXMgcGFydCBvZiB0aGUgZGF0YXBhdGggaW5pdGlhbGl6YXRpb24gZm9yIHRoZSBhdGgxMWsgZHJpdmVyIChRdWFsY29tbSBBdGhlcm9zIDgwMi4xMWF4KS4gSXQgaXMgb25seSBjYWxsZWQgYWZ0ZXIgdGhlIFFNSSBmaXJtd2FyZSBpcyBzdWNjZXNzZnVsbHkgbG9hZGVkIGFuZCByZWFkeSAoYGF0aDExa19jb3JlX3FtaV9maXJtd2FyZV9yZWFkeWApLiBTaW5jZSBRRU1VIGRvZXMgbm90IGVtdWxhdGUgYXRoMTFrIGhhcmR3YXJlIGFuZCBzeXprYWxsZXIgY2Fubm90IHByb3ZpZGUgdGhlIG5lY2Vzc2FyeSBoYXJkd2FyZSBzdGF0ZSBhbmQgZmlybXdhcmUgdG8gcmVhY2ggdGhpcyBpbml0aWFsaXphdGlvbiBwaGFzZSwgdGhpcyBjb2RlIGlzIHVucmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflow7jcmd[1] Phase: Running StartedAt: 2026-08-02 12:32:26 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7jcmd[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-02 12:32:26 +0000 UTC FinishedAt: 2026-08-02 12:32:30 +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,}