Name: series-workflowvxntq Phase: Failed StartedAt: 2026-07-28 22:08:58 +0000 UTC FinishedAt: 2026-07-28 22:36:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvxntq[0] Phase: Succeeded StartedAt: 2026-07-28 22:08:58 +0000 UTC FinishedAt: 2026-07-28 22:36:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvxntq[0].run-triage Phase: Succeeded StartedAt: 2026-07-28 22:08:58 +0000 UTC FinishedAt: 2026-07-28 22:36:11 +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+CgkJCTx0ZD4yMDI2LzA3LzI4IDIyOjM0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGB0cmY3OTcwYS5jYCwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBTUEkgZHJpdmVyIGZvciB0aGUgVGV4YXMgSW5zdHJ1bWVudHMgVFJGNzk3MEEgUkZJRC9ORkMgdHJhbnNjZWl2ZXIuIFNpbmNlIHRoZXJlIGlzIG5vIHZpcnR1YWwgU1BJIGNvbnRyb2xsZXIgb3Igc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGlzIHNwZWNpZmljIGhhcmR3YXJlIGluIHN0YW5kYXJkIFFFTVUvdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCB0aGUgZHJpdmVyIGNhbm5vdCBiZSBwcm9iZWQgYW5kIHRoZSBjb2RlIGlzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAyMjozNDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDVjNDM5ZmQ2YTllMGFkZjY2ZTQ0MjFiN2ZmYTFjOTkwMWNkYTFmNzZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1bCAyOCAyMjozNDoyNCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25mYy90cmY3OTcwYS5jIGIvZHJpdmVycy9uZmMvdHJmNzk3MGEuY1xuaW5kZXggZjIyZTA5MTAxOWRlZS4uYmM0ZDk3NGRmZTNhYSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmZjL3RyZjc5NzBhLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmZjL3RyZjc5NzBhLmNcbkBAIC0yMTI0LDE4ICYjNDM7MjEyNCwxOSBAQCBzdGF0aWMgaW50IHRyZjc5NzBhX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXG4gXHRcdH1cbiBcdH1cbiBcbiYjNDM7XHRtdXRleF9pbml0KFx1MDAyNnRyZi1cdTAwM2Vsb2NrKTtcbiYjNDM7XHRJTklUX0RFTEFZRURfV09SSyhcdTAwMjZ0cmYtXHUwMDNldGltZW91dF93b3JrLCB0cmY3OTcwYV90aW1lb3V0X3dvcmtfaGFuZGxlcik7XG4mIzQzO1xuIFx0cmV0ID0gZGV2bV9yZXF1ZXN0X3RocmVhZGVkX2lycSh0cmYtXHUwMDNlZGV2LCBzcGktXHUwMDNlaXJxLCBOVUxMLFxuIFx0XHRcdFx0XHR0cmY3OTcwYV9pcnEsXG4gXHRcdFx0XHRcdElSUUZfVFJJR0dFUl9SSVNJTkcgfCBJUlFGX09ORVNIT1QsXG4gXHRcdFx0XHRcdFwmIzM0O3RyZjc5NzBhXCYjMzQ7LCB0cmYpO1xuIFx0aWYgKHJldCkge1xuIFx0XHRkZXZfZXJyKHRyZi1cdTAwM2VkZXYsIFwmIzM0O0NhbiYjMzk7dCByZXF1ZXN0IElSUSMlZDogJWRcXG5cJiMzNDssIHNwaS1cdTAwM2VpcnEsIHJldCk7XG4mIzQzO1x0XHRtdXRleF9kZXN0cm95KFx1MDAyNnRyZi1cdTAwM2Vsb2NrKTtcbiBcdFx0cmV0dXJuIHJldDtcbiBcdH1cbiBcbi1cdG11dGV4X2luaXQoXHUwMDI2dHJmLVx1MDAzZWxvY2spO1xuLVx0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2dHJmLVx1MDAzZXRpbWVvdXRfd29yaywgdHJmNzk3MGFfdGltZW91dF93b3JrX2hhbmRsZXIpO1xuLVxuIFx0dHJmLVx1MDAzZXZpbl9yZWd1bGF0b3IgPSBkZXZtX3JlZ3VsYXRvcl9nZXQoXHUwMDI2c3BpLVx1MDAzZWRldiwgXCYjMzQ7dmluXCYjMzQ7KTtcbiBcdGlmIChJU19FUlIodHJmLVx1MDAzZXZpbl9yZWd1bGF0b3IpKSB7XG4gXHRcdHJldCA9IFBUUl9FUlIodHJmLVx1MDAzZXZpbl9yZWd1bGF0b3IpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDIyOjM0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgdHJmNzk3MGEuY2AsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgU1BJIGRyaXZlciBmb3IgdGhlIFRleGFzIEluc3RydW1lbnRzIFRSRjc5NzBBIFJGSUQvTkZDIHRyYW5zY2VpdmVyLiBTaW5jZSB0aGVyZSBpcyBubyB2aXJ0dWFsIFNQSSBjb250cm9sbGVyIG9yIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhpcyBzcGVjaWZpYyBoYXJkd2FyZSBpbiBzdGFuZGFyZCBRRU1VL3ZpcnR1YWxpemVkIGVudmlyb25tZW50cywgdGhlIGRyaXZlciBjYW5ub3QgYmUgcHJvYmVkIGFuZCB0aGUgY29kZSBpcyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1YzQzOWZkNmE5ZTBhZGY2NmU0NDIxYjdmZmExYzk5MDFjZGExZjc2CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBKdWwgMjggMjI6MzQ6MjQgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25mYy90cmY3OTcwYS5jIGIvZHJpdmVycy9uZmMvdHJmNzk3MGEuYwppbmRleCBmMjJlMDkxMDE5ZGVlLi5iYzRkOTc0ZGZlM2FhIDEwMDY0NAotLS0gYS9kcml2ZXJzL25mYy90cmY3OTcwYS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmZjL3RyZjc5NzBhLmMKQEAgLTIxMjQsMTggJiM0MzsyMTI0LDE5IEBAIHN0YXRpYyBpbnQgdHJmNzk3MGFfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIAkJfQogCX0KIAomIzQzOwltdXRleF9pbml0KCZhbXA7dHJmLSZndDtsb2NrKTsKJiM0MzsJSU5JVF9ERUxBWUVEX1dPUksoJmFtcDt0cmYtJmd0O3RpbWVvdXRfd29yaywgdHJmNzk3MGFfdGltZW91dF93b3JrX2hhbmRsZXIpOwomIzQzOwogCXJldCA9IGRldm1fcmVxdWVzdF90aHJlYWRlZF9pcnEodHJmLSZndDtkZXYsIHNwaS0mZ3Q7aXJxLCBOVUxMLAogCQkJCQl0cmY3OTcwYV9pcnEsCiAJCQkJCUlSUUZfVFJJR0dFUl9SSVNJTkcgfCBJUlFGX09ORVNIT1QsCiAJCQkJCSYjMzQ7dHJmNzk3MGEmIzM0OywgdHJmKTsKIAlpZiAocmV0KSB7CiAJCWRldl9lcnIodHJmLSZndDtkZXYsICYjMzQ7Q2FuJiMzOTt0IHJlcXVlc3QgSVJRIyVkOiAlZFxuJiMzNDssIHNwaS0mZ3Q7aXJxLCByZXQpOwomIzQzOwkJbXV0ZXhfZGVzdHJveSgmYW1wO3RyZi0mZ3Q7bG9jayk7CiAJCXJldHVybiByZXQ7CiAJfQogCi0JbXV0ZXhfaW5pdCgmYW1wO3RyZi0mZ3Q7bG9jayk7Ci0JSU5JVF9ERUxBWUVEX1dPUksoJmFtcDt0cmYtJmd0O3RpbWVvdXRfd29yaywgdHJmNzk3MGFfdGltZW91dF93b3JrX2hhbmRsZXIpOwotCiAJdHJmLSZndDt2aW5fcmVndWxhdG9yID0gZGV2bV9yZWd1bGF0b3JfZ2V0KCZhbXA7c3BpLSZndDtkZXYsICYjMzQ7dmluJiMzNDspOwogCWlmIChJU19FUlIodHJmLSZndDt2aW5fcmVndWxhdG9yKSkgewogCQlyZXQgPSBQVFJfRVJSKHRyZi0mZ3Q7dmluX3JlZ3VsYXRvcik7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDIyOjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyODAKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAyOTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgRHJpdmVyIFBhdGNoOiBUUkY3OTcwQSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCBmb3IgYGRyaXZlcnMvbmZjL3RyZjc5NzBhLmNgLiBUaGUgY29yZSBvZiBpdCBzZWVtcyB0byBiZSBhYm91dCBzeW5jaHJvbml6aW5nIGluaXRpYWxpemF0aW9uLiBJdCBsb29rcyBsaWtlIHRoZXkmIzM5O3JlIHNoaWZ0aW5nIHRoZSBgbXV0ZXhfaW5pdGAgYW5kIGBJTklUX0RFTEFZRURfV09SS2AgY2FsbHMgZm9yIHRoZSBgdHJmLSZndDtsb2NrYCBtdXRleCBhbmQgdGhlIGB0aW1lb3V0X3dvcmtgIGRlbGF5ZWQgd29yayBxdWV1ZSB0byAqYmVmb3JlKiB0aGUgYGRldm1fcmVxdWVzdF90aHJlYWRlZF9pcnFgIGNhbGwuIFNtYXJ0IG1vdmUuIFRoaXMgYWxtb3N0IGNlcnRhaW5seSBhZGRyZXNzZXMgYSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24gd2hlcmUgdGhlIGludGVycnVwdCBoYW5kbGVyLCBgdHJmNzk3MGFfaXJxYCwgY291bGQgZ2V0IHRyaWdnZXJlZCBiZWZvcmUgdGhlc2UgY3JpdGljYWwgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXMgYXJlIGZ1bGx5IGluaXRpYWxpemVkLiBNYWtlcyBzZW5zZSDigJMgcHJldmVudCB0aGUgaGFuZGxlciBmcm9tIHRyeWluZyB0byB1c2UgYSBtdXRleCBvciB3b3JrIHF1ZXVlIHRoYXQgZG9lc24mIzM5O3QgeWV0IGV4aXN0LiBJIGFsc28gc2VlIHRoZXkmIzM5O3ZlIGFkZGVkIGEgYG11dGV4X2Rlc3Ryb3koJmFtcDt0cmYtJmd0O2xvY2spYCBjYWxsIGluIHRoZSBlcnJvciBwYXRoIG9mIGBkZXZtX3JlcXVlc3RfdGhyZWFkZWRfaXJxYCBmb3IgY2xlYW51cCwgd2hpY2ggaXMgZ29vZCBwcmFjdGljZS4KCk5vdywgbXkgZXhwZXJ0IFNwaWRleS1zZW5zZSBpcyB0aW5nbGluZy4gTGV0JiMzOTtzIHNlZSBob3cgcmVsZXZhbnQgdGhpcyBpcyBpbiBhIHZpcnR1YWxpemVkIG9yIGZ1enppbmcgY29udGV4dC4gVGhpcyBpcyBhbiBTUEkgZHJpdmVyLCByaWdodD8gWWVhaCwgYHN0cnVjdCBzcGlfZGV2aWNlICpzcGlgLiBPa2F5LCBzbyBTUEkgZHJpdmVycyBhcmUgdHlwaWNhbGx5IGhhcmR3YXJlLXNwZWNpZmljLCB1c3VhbGx5IGJvdW5kIHRvIHNwZWNpZmljIGhhcmR3YXJlIG5vZGVzIGluIGRldmljZSB0cmVlIG9yIEFDUEkuIFRoZXkmIzM5O3JlIGdlbmVyYWxseSAqbm90KiBlYXNpbHkgcmVhY2hhYmxlIHdpdGhvdXQgc3BlY2lhbCBjb25maWd1cmF0aW9uIG9yIGVtdWxhdGlvbi4gSSBkb3VidCBpdCB3b3VsZCBiZSByZWFjaGFibGUgaW4gYSBzdGFuZGFyZCB2aXJ0dWFsIGVudmlyb25tZW50IHVubGVzcyB0aGVyZSYjMzk7cyBhIHNwZWNpZmljIFNQSSBjb250cm9sbGVyIGVtdWxhdGVkLiBNYXliZSBzb21lIHNvcnQgb2YgZHVtbXkgU1BJIGNvbnRyb2xsZXIgY291bGQgYmUgdXNlZCwgb3Igc29tZXRoaW5nIHNpbWlsYXIsIGJ1dCB0aGF0IHdvdWxkIG5lZWQgdG8gYmUgaW4gcGxhY2UuCgpXYWl0LCBkaWQgSSBzZWUgc29tZXRoaW5nIGFib3V0IFN5emthbGxlciBhbmQgU1BJIHN1cHBvcnQgcmVjZW50bHk/IEkgKnRob3VnaHQqIEkgc2F3IHNvbWV0aGluZy4gSXMgdGhlcmUgYSB3YXkgd2UgY2FuIHVzZSBgdmhjaWAgb3Igc29tZXRoaW5nIHNpbWlsYXI/IE5vLCBTUEkgZnV6emluZyBpcyBub3Qgc3RyYWlnaHRmb3J3YXJkLiBIYW5nIG9uLi4uIGlzbiYjMzk7dCB0aGVyZSBzb21lIHJlY2VudCBTUEkgZnV6emluZyBzdXBwb3J0PyBJIHNob3VsZCBwcm9iYWJseSBjaGVjayB0aGF0LiBMZXQgbWUgcXVpY2tseSBzZWFyY2ggdGhlIGtlcm5lbCBzb3VyY2UgZm9yICYjMzQ7dHJmNzk3MGEmIzM0OyBhbmQgc2VlIGlmIHRoZXJlJiMzOTtzIGFueSByZWxldmFudCBjb250ZXh0IEkgbWlnaHQgYmUgbWlzc2luZy4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDIyOjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RyZjc5NzBhJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZmMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA3ODQgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvbmZjL0tjb25maWc9OT1jb25maWcgTkZDX1RSRjc5NzBBXG4tLVxuZHJpdmVycy9uZmMvS2NvbmZpZy0xOC1cdCAgc2F5IE0gIHRvIGNvbXBpbGUgaXQgYXMgYSBtb2R1bGUuIFRoZSBtb2R1bGUgd2lsbCBiZSBjYWxsZWRcbmRyaXZlcnMvbmZjL0tjb25maWc6MTk6XHQgIHRyZjc5NzBhLmtvLlxuZHJpdmVycy9uZmMvS2NvbmZpZy0yMC1cbi0tXG5kcml2ZXJzL25mYy9NYWtlZmlsZT0xMz1vYmotJChDT05GSUdfTkZDX01SVkwpXHRcdCYjNDM7PSBuZmNtcnZsL1xuZHJpdmVycy9uZmMvTWFrZWZpbGU6MTQ6b2JqLSQoQ09ORklHX05GQ19UUkY3OTcwQSlcdCYjNDM7PSB0cmY3OTcwYS5vXG5kcml2ZXJzL25mYy9NYWtlZmlsZS0xNS1vYmotJChDT05GSUdfTkZDX1NUMjFORkNBKSAgXHQmIzQzOz0gc3QyMW5mY2EvXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0yNy1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6Mjg6LyogVGhlcmUgYXJlIDMgd2F5cyB0aGUgaG9zdCBjYW4gY29tbXVuaWNhdGUgd2l0aCB0aGUgdHJmNzk3MGE6XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTI5LSAqIHBhcmFsbGVsIG1vZGUsIFNQSSB3aXRoIFNsYXZlIFNlbGVjdCAoU1MpIG1vZGUsIGFuZCBTUEkgd2l0aG91dFxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMzEtICpcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MzI6ICogVGhlIHRyZjc5NzBhIGlzIHZlcnkgdGltaW5nIHNlbnNpdGl2ZSBhbmQgdGhlIFZJTiwgRU4yLCBhbmQgRU5cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMzMtICogcGlucyBtdXN0IGFzc2VydGVkIGluIHRoYXQgb3JkZXIgYW5kIHdpdGggc3BlY2lmaWMgZGVsYXlzIGluIGJldHdlZW4uXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0zNS0gKiBjb25maXJtZWQgdG8gd29yayB3aXRoIHRoaXMgZHJpdmVyLiAgVGhlcmUgaXMgYSBidWcgd2l0aCB0aGUgY3VycmVudFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzozNjogKiB2ZXJzaW9uIG9mIHRoZSB0cmY3OTcwYSB0aGF0IHJlcXVpcmVzIHRoYXQgRU4yIHJlbWFpbiBsb3cgbm8gbWF0dGVyXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTM3LSAqIHdoYXQuICBJZiBpdCBnb2VzIGhpZ2gsIGl0IHdpbGwgZ2VuZXJhdGUgYW4gUkYgZmllbGQgZXZlbiB3aGVuIGluXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0zOS0gKiB3aGVuIEVOMiBpcyBsZWZ0IGxvdy4gIFRoZSAmIzM5O2VuMi1yZi1xdWlyayYjMzk7IGRldmljZSB0cmVlIHByb3BlcnR5XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjQwOiAqIGluZGljYXRlcyB0aGF0IHRyZjc5NzBhIGN1cnJlbnRseSBiZWluZyB1c2VkIGhhcyB0aGUgZXJyYXR1bSBhbmRcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDEtICogdGhhdCBFTjIgbXVzdCBiZSBrZXB0IGxvdy5cbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTQ0LSAqIFRpbWVvdXRzIGFyZSByZXF1aXJlZCBzbyB0aGluZ3MgZG9uJiMzOTt0IGhhbmcgd2hlbiB0aGVyZSBpcyBubyByZXNwb25zZVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo0NTogKiBmcm9tIHRoZSB0cmY3OTcwYSAob3IgdGFnKS4gIFVzaW5nIHRoaXMgbWVjaGFuaXNtIGNyZWF0ZXMgYSByYWNlIHdpdGhcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDYtICogaW50ZXJydXB0cywgaG93ZXZlci4gIFRoYXQgaXMsIGFuIGludGVycnVwdCBhbmQgYSB0aW1lb3V0IGNvdWxkIG9jY3VyXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02MC0gKiB0aGUgZW50aXJlIGFudGljb2xsaXNpb24gcHJvY2VkdXJlIGFnYWluIGJ1dCB0aGUgZGlnaXRhbCBsYXllciBkb2VzbiYjMzk7dFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo2MTogKiBzdXBwb3J0IHRoYXQuICBTbywgaWYgYW4gYWJvcnQgaXMgcmVjZWl2ZWQgYmVmb3JlIHRyZjc5NzBhX3NlbmRfY21kKClcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjItICogaGFzIHNlbnQgdGhlIGNvbW1hbmQgdG8gdGhlIHRhZywgaXQgc2ltcGx5IHJldHVybnMgLUVDQU5DRUxFRC4gIElmIHRoZVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTYtICogd2hlbiB0aGUgZnJhbWluZyBpcyAmIzM5O05GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9UMlQmIzM5Oy4gIFRoaXMgaXMgZG9uZSBieVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5NzogKiB0aGUgdHJmNzk3MGFfcGVyX2NtZF9jb25maWcoKSByb3V0aW5lLlxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05OC0gKlxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQ0LS8qIFF1aXJrcyAqL1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNDU6LyogRXJyYXR1bTogV2hlbiByZWFkaW5nIElSUSBTdGF0dXMgcmVnaXN0ZXIgb24gdHJmNzk3MGEsIHdlIG11c3QgaXNzdWUgYVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDYtICogcmVhZCBjb250aW51b3VzIGNvbW1hbmQgZm9yIElSUSBTdGF0dXMgYW5kIENvbGxpc2lvbiBQb3NpdGlvbiByZWdpc3RlcnMuXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy00MTUtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjQxNjplbnVtIHRyZjc5NzBhX3N0YXRlIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDE3LVx0VFJGNzk3MEFfU1RfUFdSX09GRixcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTQyOS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NDMwOnN0cnVjdCB0cmY3OTcwYSB7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjQzMTpcdGVudW0gdHJmNzk3MGFfc3RhdGVcdFx0c3RhdGU7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTQzMi1cdHN0cnVjdCBkZXZpY2VcdFx0XHQqZGV2O1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDY1LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo0NjY6c3RhdGljIGludCB0cmY3OTcwYV9jbWQoc3RydWN0IHRyZjc5NzBhICp0cmYsIHU4IG9wY29kZSlcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDY3LXtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTQ3OS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NDgwOnN0YXRpYyBpbnQgdHJmNzk3MGFfcmVhZChzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgdTggcmVnLCB1OCAqdmFsKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy00ODEte1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDk0LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo0OTU6c3RhdGljIGludCB0cmY3OTcwYV9yZWFkX2NvbnQoc3RydWN0IHRyZjc5NzBhICp0cmYsIHU4IHJlZywgdTggKmJ1ZixcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDk2LVx0XHRcdCAgICAgIHNpemVfdCBsZW4pXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01MjMtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjUyNDpzdGF0aWMgaW50IHRyZjc5NzBhX3dyaXRlKHN0cnVjdCB0cmY3OTcwYSAqdHJmLCB1OCByZWcsIHU4IHZhbClcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTI1LXtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTUzOC1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NTM5OnN0YXRpYyBpbnQgdHJmNzk3MGFfcmVhZF9pcnFzdGF0dXMoc3RydWN0IHRyZjc5NzBhICp0cmYsIHU4ICpzdGF0dXMpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTU0MC17XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01NjItXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjU2MzpzdGF0aWMgaW50IHRyZjc5NzBhX3VwZGF0ZV9yeF9nYWluX3JlZHVjdGlvbihzdHJ1Y3QgdHJmNzk3MGEgKnRyZilcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTY0LXtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTU3MC1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NTcxOlx0cmV0ID0gdHJmNzk3MGFfcmVhZCh0cmYsIFRSRjc5NzBBX1JYX1NQRUNJQUxfU0VUVElOR1MsIFx1MDAyNnJlZyk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTU3Mi1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01NzYtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjU3NzpcdHJldCA9IHRyZjc5NzBhX3dyaXRlKHRyZiwgVFJGNzk3MEFfUlhfU1BFQ0lBTF9TRVRUSU5HUywgcmVnKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTc4LVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTgxLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo1ODI6c3RhdGljIGludCB0cmY3OTcwYV91cGRhdGVfaXNvX2N0cmxfcmVnaXN0ZXIoc3RydWN0IHRyZjc5NzBhICp0cmYsIHU4IGlzb19jdHJsKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01ODMte1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTg1LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo1ODY6XHRyZXQgPSB0cmY3OTcwYV93cml0ZSh0cmYsIFRSRjc5NzBBX0lTT19DVFJMLCBpc29fY3RybCk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTU4Ny1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01OTItXHQgKi9cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NTkzOlx0cmV0ID0gdHJmNzk3MGFfdXBkYXRlX3J4X2dhaW5fcmVkdWN0aW9uKHRyZik7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTU5NC1cbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTU5Ny1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NTk4OnN0YXRpYyBpbnQgdHJmNzk3MGFfcmVhZF90YXJnZXRfcHJvdG8oc3RydWN0IHRyZjc5NzBhICp0cmYsIHU4ICp0YXJnZXRfcHJvdG8pXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTU5OS17XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02MTYtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjYxNzpzdGF0aWMgaW50IHRyZjc5NzBhX21vZGVfZGV0ZWN0KHN0cnVjdCB0cmY3OTcwYSAqdHJmLCB1OCAqcmZfdGVjaClcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjE4LXtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTYyMS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NjIyOlx0cmV0ID0gdHJmNzk3MGFfcmVhZF90YXJnZXRfcHJvdG8odHJmLCBcdTAwMjZ0YXJnZXRfcHJvdG8pO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02MjMtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjQ5LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo2NTA6c3RhdGljIHZvaWQgdHJmNzk3MGFfc2VuZF91cHN0cmVhbShzdHJ1Y3QgdHJmNzk3MGEgKnRyZilcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjUxLXtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTY1NS1cdGlmICh0cmYtXHUwMDNlcnhfc2tiIFx1MDAyNlx1MDAyNiAhSVNfRVJSKHRyZi1cdTAwM2VyeF9za2IpIFx1MDAyNlx1MDAyNiAhdHJmLVx1MDAzZWFib3J0aW5nKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo2NTY6XHRcdHByaW50X2hleF9kdW1wX2RlYnVnKFwmIzM0O3RyZjc5NzBhIHJ4IGRhdGE6IFwmIzM0OywgRFVNUF9QUkVGSVhfTk9ORSxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjU3LVx0XHRcdFx0ICAgICAxNiwgMSwgdHJmLVx1MDAzZXJ4X3NrYi1cdTAwM2VkYXRhLCB0cmYtXHUwMDNlcnhfc2tiLVx1MDAzZWxlbixcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTY3Ny1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6Njc4OnN0YXRpYyB2b2lkIHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHN0cnVjdCB0cmY3OTcwYSAqdHJmLCBpbnQgZXJybm8pXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTY3OS17XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02ODYtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjY4NzpcdHRyZjc5NzBhX3NlbmRfdXBzdHJlYW0odHJmKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjg4LX1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjg5LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo2OTA6c3RhdGljIGludCB0cmY3OTcwYV90cmFuc21pdChzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjkxLVx0XHRcdCAgICAgdW5zaWduZWQgaW50IGxlbiwgY29uc3QgdTggKnByZWZpeCxcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTY5OC1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6Njk5Olx0cHJpbnRfaGV4X2R1bXBfZGVidWcoXCYjMzQ7dHJmNzk3MGEgdHggZGF0YTogXCYjMzQ7LCBEVU1QX1BSRUZJWF9OT05FLFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03MDAtXHRcdFx0ICAgICAxNiwgMSwgc2tiLVx1MDAzZWRhdGEsIGxlbiwgZmFsc2UpO1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzQ3LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo3NDg6c3RhdGljIHZvaWQgdHJmNzk3MGFfZmlsbF9maWZvKHN0cnVjdCB0cmY3OTcwYSAqdHJmKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03NDkte1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzU1LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo3NTY6XHRyZXQgPSB0cmY3OTcwYV9yZWFkKHRyZiwgVFJGNzk3MEFfRklGT19TVEFUVVMsIFx1MDAyNmZpZm9fYnl0ZXMpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03NTctXHRpZiAocmV0KSB7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjc1ODpcdFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCByZXQpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03NTktXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTc3Ny1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6Nzc4Olx0cmV0ID0gdHJmNzk3MGFfdHJhbnNtaXQodHJmLCBza2IsIGxlbiwgXHUwMDI2cHJlZml4LCBzaXplb2YocHJlZml4KSk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTc3OS1cdGlmIChyZXQpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjc4MDpcdFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCByZXQpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03ODEtfVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03ODItXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjc4MzpzdGF0aWMgdm9pZCB0cmY3OTcwYV9kcmFpbl9maWZvKHN0cnVjdCB0cmY3OTcwYSAqdHJmLCB1OCBzdGF0dXMpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTc4NC17XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03ODktXHRpZiAoc3RhdHVzIFx1MDAyNiBUUkY3OTcwQV9JUlFfU1RBVFVTX0VSUk9SKSB7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjc5MDpcdFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCAtRUlPKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzkxLVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03OTMtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjc5NDpcdHJldCA9IHRyZjc5NzBhX3JlYWQodHJmLCBUUkY3OTcwQV9GSUZPX1NUQVRVUywgXHUwMDI2Zmlmb19ieXRlcyk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTc5NS1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6Nzk2Olx0XHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIHJldCk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTc5Ny1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODEyLVx0XHRpZiAoIXNrYikge1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo4MTM6XHRcdFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCAtRU5PTUVNKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODE0LVx0XHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTgyMC1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6ODIxOlx0cmV0ID0gdHJmNzk3MGFfcmVhZF9jb250KHRyZiwgVFJGNzk3MEFfRklGT19JT19SRUdJU1RFUixcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODIyLVx0XHRcdFx0IHNrYl9wdXQoc2tiLCBmaWZvX2J5dGVzKSwgZmlmb19ieXRlcyk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTgyMy1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6ODI0Olx0XHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIHJldCk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTgyNS1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODM1LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo4MzY6XHRcdHJldCA9IHRyZjc5NzBhX3JlYWQodHJmLCBUUkY3OTcwQV9GSUZPX1NUQVRVUywgXHUwMDI2Zmlmb19ieXRlcyk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTgzNy1cdFx0aWYgKHJldCkge1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo4Mzg6XHRcdFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCByZXQpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04MzktXHRcdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODQ1LVx0XHQgKiB0aGUgaWYgc3RtdCBiZWxvdyBkb2VzbiYjMzk7dCBmaXJlIGFuZCB0aGUgZHJpdmVyIHdpbGwgd2FpdFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo4NDY6XHRcdCAqIGZvciB0aGUgdHJmNzk3MGEgdG8gZ2VuZXJhdGUgYW5vdGhlciBSWCBpbnRlcnJ1cHQuXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTg0Ny1cdFx0ICovXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04NTMtXHRpZiAoc3RhdHVzID09IFRSRjc5NzBBX0lSUV9TVEFUVVNfU1JYKSB7XHQvKiBSZWNlaXZlIGNvbXBsZXRlICovXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjg1NDpcdFx0dHJmNzk3MGFfc2VuZF91cHN0cmVhbSh0cmYpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04NTUtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTg2NC1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6ODY1OnN0YXRpYyBpcnFyZXR1cm5fdCB0cmY3OTcwYV9pcnEoaW50IGlycSwgdm9pZCAqZGV2X2lkKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04NjYte1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo4Njc6XHRzdHJ1Y3QgdHJmNzk3MGEgKnRyZiA9IGRldl9pZDtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODY4LVx0aW50IHJldDtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTg3Ny1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6ODc4Olx0cmV0ID0gdHJmNzk3MGFfcmVhZF9pcnFzdGF0dXModHJmLCBcdTAwMjZzdGF0dXMpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04NzktXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04OTYtXHRcdCAqIHR1cm4gb2ZmIHRoZSByZWNlaXZlciB0byBhdm9pZCB1bm5lY2Vzc2FyeSBpbnRlcnJ1cHRzLlxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo4OTc6XHRcdCAqIEl0IHdpbGwgYmUgdHVybmVkIGJhY2sgb24gaW4gdHJmNzk3MGFfc2VuZF9jbWQoKSB3aGVuXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTg5OC1cdFx0ICogdGhlIG5leHQgY29tbWFuZCBpcyBpc3N1ZWQuXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05MDAtXHRcdGlmICh0cmYtXHUwMDNlaXNfaW5pdGlhdG9yIFx1MDAyNlx1MDAyNiAoc3RhdHVzIFx1MDAyNiBUUkY3OTcwQV9JUlFfU1RBVFVTX0VSUk9SKSkge1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5MDE6XHRcdFx0dHJmNzk3MGFfY21kKHRyZiwgVFJGNzk3MEFfQ01EX0JMT0NLX1JYKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTAyLVx0XHRcdHRyZi1cdTAwM2VzdGF0ZSA9IFRSRjc5NzBBX1NUX0lETEVfUlhfQkxPQ0tFRDtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkwNC1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTA1Olx0XHR0cmY3OTcwYV9jbWQodHJmLCBUUkY3OTcwQV9DTURfRklGT19SRVNFVCk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkwNi1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05MTAtXHRcdFx0ICAgICFjYW5jZWxfZGVsYXllZF93b3JrKFx1MDAyNnRyZi1cdTAwM2V0aW1lb3V0X3dvcmspO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5MTE6XHRcdFx0dHJmNzk3MGFfZmlsbF9maWZvKHRyZik7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkxMi1cdFx0fSBlbHNlIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTEzOlx0XHRcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgLUVJTyk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkxNC1cdFx0fVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTIwLVx0XHRcdCAgICAhY2FuY2VsX2RlbGF5ZWRfd29yayhcdTAwMjZ0cmYtXHUwMDNldGltZW91dF93b3JrKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTIxOlx0XHRcdHRyZjc5NzBhX2RyYWluX2ZpZm8odHJmLCBzdGF0dXMpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05MjItXHRcdH0gZWxzZSBpZiAoc3RhdHVzIFx1MDAyNiBUUkY3OTcwQV9JUlFfU1RBVFVTX0ZJRk8pIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTIzOlx0XHRcdHJldCA9IHRyZjc5NzBhX3JlYWQodHJmLCBUUkY3OTcwQV9GSUZPX1NUQVRVUyxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTI0LVx0XHRcdFx0XHQgICAgXHUwMDI2Zmlmb19ieXRlcyk7XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05MjgtXHRcdFx0aWYgKHJldClcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTI5Olx0XHRcdFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCByZXQpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05MzAtXHRcdFx0ZWxzZSBpZiAoIWZpZm9fYnl0ZXMpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjkzMTpcdFx0XHRcdHRyZjc5NzBhX2NtZCh0cmYsIFRSRjc5NzBBX0NNRF9GSUZPX1JFU0VUKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTMyLVx0XHR9IGVsc2UgaWYgKChzdGF0dXMgPT0gVFJGNzk3MEFfSVJRX1NUQVRVU19UWCkgfHxcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkzNS1cdFx0XHRcdFx0VFJGNzk3MEFfSVJRX1NUQVRVU19ORkNfUkYpKSkpIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTM2Olx0XHRcdHRyZjc5NzBhX2NtZCh0cmYsIFRSRjc5NzBBX0NNRF9GSUZPX1JFU0VUKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTM3LVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTQxLVx0XHRcdFx0dHJmLVx1MDAzZXJ4X3NrYiA9IEVSUl9QVFIoMCk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjk0MjpcdFx0XHRcdHRyZjc5NzBhX3NlbmRfdXBzdHJlYW0odHJmKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTQzLVx0XHRcdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05NjItXHRcdFx0Y2FzZSBORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfQU5USUNPTF9DT01QTEVURTpcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTYzOlx0XHRcdFx0cmV0ID0gdHJmNzk3MGFfd3JpdGUodHJmLFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05NjQtXHRcdFx0XHRcdCBUUkY3OTcwQV9TUEVDSUFMX0ZDTl9SRUcxLFxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTc2LVx0XHRcdGlmIChpc29fY3RybCAhPSB0cmYtXHUwMDNlaXNvX2N0cmwpIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTc3Olx0XHRcdFx0cmV0ID0gdHJmNzk3MGFfdXBkYXRlX2lzb19jdHJsX3JlZ2lzdGVyKHRyZiwgaXNvX2N0cmwpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05NzgtXHRcdFx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTgzLVx0XHR9IGVsc2Uge1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5ODQ6XHRcdFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCAtRUlPKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTg1LVx0XHR9XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05ODgtXHRcdGlmIChzdGF0dXMgIT0gVFJGNzk3MEFfSVJRX1NUQVRVU19UWClcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTg5Olx0XHRcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgLUVJTyk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk5MC1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05OTQtXHRcdFx0ICAgICFjYW5jZWxfZGVsYXllZF93b3JrKFx1MDAyNnRyZi1cdTAwM2V0aW1lb3V0X3dvcmspO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5OTU6XHRcdFx0dHJmNzk3MGFfZHJhaW5fZmlmbyh0cmYsIHN0YXR1cyk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk5Ni1cdFx0fSBlbHNlIGlmICghKHN0YXR1cyBcdTAwMjYgVFJGNzk3MEFfSVJRX1NUQVRVU19ORkNfUkYpKSB7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjk5NzpcdFx0XHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIC1FSU8pO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05OTgtXHRcdH1cbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwMDQtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwMDU6XHRcdFx0cmV0ID0gdHJmNzk3MGFfbW9kZV9kZXRlY3QodHJmLCBcdTAwMjZ0cmYtXHUwMDNlbWRfcmZfdGVjaCk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwMDYtXHRcdFx0aWYgKHJldCkge1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDA3Olx0XHRcdFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCByZXQpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDA4LVx0XHRcdH0gZWxzZSB7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwMDktXHRcdFx0XHR0cmYtXHUwMDNlc3RhdGUgPSBUUkY3OTcwQV9TVF9MSVNURU5JTkc7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwMTA6XHRcdFx0XHR0cmY3OTcwYV9kcmFpbl9maWZvKHRyZiwgc3RhdHVzKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAxMS1cdFx0XHR9XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwMTItXHRcdH0gZWxzZSBpZiAoIShzdGF0dXMgXHUwMDI2IFRSRjc5NzBBX0lSUV9TVEFUVVNfTkZDX1JGKSkge1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDEzOlx0XHRcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgLUVJTyk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwMTQtXHRcdH1cbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwMjUtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwMjY6c3RhdGljIHZvaWQgdHJmNzk3MGFfaXNzdWVfZW9mKHN0cnVjdCB0cmY3OTcwYSAqdHJmKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDI3LXtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwMzEtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwMzI6XHRyZXQgPSB0cmY3OTcwYV9jbWQodHJmLCBUUkY3OTcwQV9DTURfRklGT19SRVNFVCk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwMzMtXHRpZiAocmV0KVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDM0Olx0XHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIHJldCk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwMzUtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwMzY6XHRyZXQgPSB0cmY3OTcwYV9jbWQodHJmLCBUUkY3OTcwQV9DTURfRU9GKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAzNy1cdGlmIChyZXQpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwMzg6XHRcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgcmV0KTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAzOS1cbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwNDgtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwNDk6c3RhdGljIHZvaWQgdHJmNzk3MGFfdGltZW91dF93b3JrX2hhbmRsZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDUwLXtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTA1MTpcdHN0cnVjdCB0cmY3OTcwYSAqdHJmID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCB0cmY3OTcwYSxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA1Mi1cdFx0XHRcdFx0ICAgIHRpbWVvdXRfd29yay53b3JrKTtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwNjEtXHRlbHNlIGlmICh0cmYtXHUwMDNlc3RhdGUgPT0gVFJGNzk3MEFfU1RfV0FJVF9GT1JfUlhfREFUQV9DT05UKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDYyOlx0XHR0cmY3OTcwYV9kcmFpbl9maWZvKHRyZiwgVFJGNzk3MEFfSVJRX1NUQVRVU19TUlgpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDYzLVx0ZWxzZSBpZiAodHJmLVx1MDAzZXN0YXRlID09IFRSRjc5NzBBX1NUX1dBSVRfVE9fSVNTVUVfRU9GKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDY0Olx0XHR0cmY3OTcwYV9pc3N1ZV9lb2YodHJmKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA2NS1cdGVsc2VcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTA2NjpcdFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCAtRVRJTUVET1VUKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA2Ny1cbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwNzAtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwNzE6c3RhdGljIGludCB0cmY3OTcwYV9pbml0KHN0cnVjdCB0cmY3OTcwYSAqdHJmKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDcyLXtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwNzYtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwNzc6XHRyZXQgPSB0cmY3OTcwYV9jbWQodHJmLCBUUkY3OTcwQV9DTURfU09GVF9JTklUKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA3OC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDgxLVx0LyogU2V0IHRoZSBnYWluIHJlZHVjdGlvbiBhZnRlciBzb2Z0IGluaXQgKi9cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTA4MjpcdHJldCA9IHRyZjc5NzBhX3VwZGF0ZV9yeF9nYWluX3JlZHVjdGlvbih0cmYpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDgzLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwODUtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwODY6XHRyZXQgPSB0cmY3OTcwYV9jbWQodHJmLCBUUkY3OTcwQV9DTURfSURMRSk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwODctXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA4OS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTA5MDpcdHJldCA9IHRyZjc5NzBhX3dyaXRlKHRyZiwgVFJGNzk3MEFfUkVHX0lPX0NUUkwsXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwOTEtXHRcdFx0ICAgICB0cmYtXHUwMDNlaW9fY3RybCB8IFRSRjc5NzBBX1JFR19JT19DVFJMX1ZSUygweDEpKTtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwOTQtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwOTU6XHRyZXQgPSB0cmY3OTcwYV93cml0ZSh0cmYsIFRSRjc5NzBBX05GQ19UQVJHRVRfTEVWRUwsIDApO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDk2LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExMDItXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjExMDM6XHRyZXQgPSB0cmY3OTcwYV93cml0ZSh0cmYsIFRSRjc5NzBBX01PRFVMQVRPUl9TWVNfQ0xLX0NUUkwsXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExMDQtXHRcdFx0ICAgICB0cmYtXHUwMDNlbW9kdWxhdG9yX3N5c19jbGtfY3RybCk7XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTA3LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMTA4Olx0cmV0ID0gdHJmNzk3MGFfd3JpdGUodHJmLCBUUkY3OTcwQV9BREpVVEFCTEVfRklGT19JUlFfTEVWRUxTLFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTA5LVx0XHRcdCAgICAgVFJGNzk3MEFfQURKVVRBQkxFX0ZJRk9fSVJRX0xFVkVMU19XTEhfOTYgfFxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTExMy1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTExNDpcdHJldCA9IHRyZjc5NzBhX3dyaXRlKHRyZiwgVFJGNzk3MEFfU1BFQ0lBTF9GQ05fUkVHMSwgMCk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExMTUtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTEyNy1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTEyODpzdGF0aWMgdm9pZCB0cmY3OTcwYV9zd2l0Y2hfcmZfb2ZmKHN0cnVjdCB0cmY3OTcwYSAqdHJmKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTI5LXtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExMzctXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjExMzg6XHR0cmY3OTcwYV93cml0ZSh0cmYsIFRSRjc5NzBBX0NISVBfU1RBVFVTX0NUUkwsIHRyZi1cdTAwM2VjaGlwX3N0YXR1c19jdHJsKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTEzOS1cbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExNDYtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjExNDc6c3RhdGljIGludCB0cmY3OTcwYV9zd2l0Y2hfcmZfb24oc3RydWN0IHRyZjc5NzBhICp0cmYpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExNDgte1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTE2MC1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTE2MTpcdHJldCA9IHRyZjc5NzBhX2luaXQodHJmKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTE2Mi1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExNzEtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjExNzI6c3RhdGljIGludCB0cmY3OTcwYV9zd2l0Y2hfcmYoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgYm9vbCBvbilcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTE3My17XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjExNzQ6XHRzdHJ1Y3QgdHJmNzk3MGEgKnRyZiA9IG5mY19kaWdpdGFsX2dldF9kcnZkYXRhKGRkZXYpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTc1LVx0aW50IHJldCA9IDA7XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTg0LVx0XHRjYXNlIFRSRjc5NzBBX1NUX1JGX09GRjpcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTE4NTpcdFx0XHRyZXQgPSB0cmY3OTcwYV9zd2l0Y2hfcmZfb24odHJmKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTE4Ni1cdFx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExOTItXHRcdFx0XHRfX2Z1bmNfXywgdHJmLVx1MDAzZXN0YXRlLCBvbik7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjExOTM6XHRcdFx0dHJmNzk3MGFfc3dpdGNoX3JmX29mZih0cmYpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTk0LVx0XHRcdHJldCA9IC1FSU5WQUw7XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjA5LVx0XHRjYXNlIFRSRjc5NzBBX1NUX1dBSVRfRk9SX1JYX0RBVEFfQ09OVDpcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTIxMDpcdFx0XHR0cmY3OTcwYV9zd2l0Y2hfcmZfb2ZmKHRyZik7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyMTEtXHRcdH1cbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyMTctXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEyMTg6c3RhdGljIGludCB0cmY3OTcwYV9pbl9jb25maWdfcmZfdGVjaChzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgaW50IHRlY2gpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyMTkte1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI2OC1cdCAqIFBTTCBzZXF1ZW5jZSAoaW5kaWNhdGVkIGJ5ICYjMzk7dHJmLVx1MDAzZWlzb19jdHJsID09IDB4ZmYmIzM5OyBmcm9tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEyNjk6XHQgKiB0cmY3OTcwYV9pbml0KCkpLCBjbGVhciB0aGUgTkZDIFRhcmdldCBEZXRlY3Rpb24gTGV2ZWwgcmVnaXN0ZXJcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI3MC1cdCAqIGR1ZSB0byBlcnJhdHVtLlxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI3Mi1cdGlmICh0cmYtXHUwMDNlaXNvX2N0cmwgPT0gMHhmZilcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTI3MzpcdFx0cmV0ID0gdHJmNzk3MGFfd3JpdGUodHJmLCBUUkY3OTcwQV9ORkNfVEFSR0VUX0xFVkVMLCAwKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI3NC1cbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyNzctXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEyNzg6c3RhdGljIGludCB0cmY3OTcwYV9pc19yZl9maWVsZChzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgYm9vbCAqaXNfcmZfZmllbGQpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyNzkte1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI4Mi1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTI4MzpcdHJldCA9IHRyZjc5NzBhX3dyaXRlKHRyZiwgVFJGNzk3MEFfQ0hJUF9TVEFUVVNfQ1RSTCxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI4NC1cdFx0XHQgICAgIHRyZi1cdTAwM2VjaGlwX3N0YXR1c19jdHJsIHxcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyODgtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEyODk6XHRyZXQgPSB0cmY3OTcwYV9jbWQodHJmLCBUUkY3OTcwQV9DTURfVEVTVF9FWFRfUkYpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjkwLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyOTQtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEyOTU6XHRyZXQgPSB0cmY3OTcwYV9yZWFkKHRyZiwgVFJGNzk3MEFfUlNTSV9PU0NfU1RBVFVTLCBcdTAwMjZyc3NpKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI5Ni1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjk4LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMjk5Olx0cmV0ID0gdHJmNzk3MGFfd3JpdGUodHJmLCBUUkY3OTcwQV9DSElQX1NUQVRVU19DVFJMLFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzAwLVx0XHRcdCAgICAgdHJmLVx1MDAzZWNoaXBfc3RhdHVzX2N0cmwpO1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTMxMS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTMxMjpzdGF0aWMgaW50IHRyZjc5NzBhX2luX2NvbmZpZ19mcmFtaW5nKHN0cnVjdCB0cmY3OTcwYSAqdHJmLCBpbnQgZnJhbWluZylcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTMxMy17XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzUwLVx0aWYgKCEodHJmLVx1MDAzZWNoaXBfc3RhdHVzX2N0cmwgXHUwMDI2IFRSRjc5NzBBX0NISVBfU1RBVFVTX1JGX09OKSkge1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMzUxOlx0XHRyZXQgPSB0cmY3OTcwYV9pc19yZl9maWVsZCh0cmYsIFx1MDAyNmlzX3JmX2ZpZWxkKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTM1Mi1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzNTktXHRpZiAoaXNvX2N0cmwgIT0gdHJmLVx1MDAzZWlzb19jdHJsKSB7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEzNjA6XHRcdHJldCA9IHRyZjc5NzBhX3VwZGF0ZV9pc29fY3RybF9yZWdpc3Rlcih0cmYsIGlzb19jdHJsKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTM2MS1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzNjUtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEzNjY6XHRcdHJldCA9IHRyZjc5NzBhX3dyaXRlKHRyZiwgVFJGNzk3MEFfTU9EVUxBVE9SX1NZU19DTEtfQ1RSTCxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTM2Ny1cdFx0XHRcdCAgICAgdHJmLVx1MDAzZW1vZHVsYXRvcl9zeXNfY2xrX2N0cmwpO1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTM3Mi1cdGlmICghKHRyZi1cdTAwM2VjaGlwX3N0YXR1c19jdHJsIFx1MDAyNiBUUkY3OTcwQV9DSElQX1NUQVRVU19SRl9PTikpIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTM3MzpcdFx0cmV0ID0gdHJmNzk3MGFfd3JpdGUodHJmLCBUUkY3OTcwQV9DSElQX1NUQVRVU19DVFJMLFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzc0LVx0XHRcdFx0ICAgICB0cmYtXHUwMDNlY2hpcF9zdGF0dXNfY3RybCB8XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzg2LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMzg3OnN0YXRpYyBpbnQgdHJmNzk3MGFfaW5fY29uZmlndXJlX2h3KHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIGludCB0eXBlLFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzg4LVx0XHRcdFx0ICAgIGludCBwYXJhbSlcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTM4OS17XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEzOTA6XHRzdHJ1Y3QgdHJmNzk3MGEgKnRyZiA9IG5mY19kaWdpdGFsX2dldF9kcnZkYXRhKGRkZXYpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzkxLVx0aW50IHJldDtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0MDAtXHQgICAgKHRyZi1cdTAwM2VzdGF0ZSA9PSBUUkY3OTcwQV9TVF9SRl9PRkYpKSB7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE0MDE6XHRcdHJldCA9IHRyZjc5NzBhX3N3aXRjaF9yZl9vbih0cmYpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDAyLVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQwNy1cdGNhc2UgTkZDX0RJR0lUQUxfQ09ORklHX1JGX1RFQ0g6XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE0MDg6XHRcdHJldCA9IHRyZjc5NzBhX2luX2NvbmZpZ19yZl90ZWNoKHRyZiwgcGFyYW0pO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDA5LVx0XHRicmVhaztcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQxMC1cdGNhc2UgTkZDX0RJR0lUQUxfQ09ORklHX0ZSQU1JTkc6XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE0MTE6XHRcdHJldCA9IHRyZjc5NzBhX2luX2NvbmZpZ19mcmFtaW5nKHRyZiwgcGFyYW0pO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDEyLVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0MjItXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE0MjM6c3RhdGljIGludCB0cmY3OTcwYV9pc19pc28xNTY5M193cml0ZV9vcl9sb2NrKHU4IGNtZClcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQyNC17XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDM4LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNDM5OnN0YXRpYyBpbnQgdHJmNzk3MGFfcGVyX2NtZF9jb25maWcoc3RydWN0IHRyZjc5NzBhICp0cmYsXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0NDAtXHRcdFx0XHQgICBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQ2NC1cdFx0aWYgKHNwZWNpYWxfZmNuX3JlZzEgIT0gdHJmLVx1MDAzZXNwZWNpYWxfZmNuX3JlZzEpIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTQ2NTpcdFx0XHRyZXQgPSB0cmY3OTcwYV93cml0ZSh0cmYsIFRSRjc5NzBBX1NQRUNJQUxfRkNOX1JFRzEsXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0NjYtXHRcdFx0XHRcdCAgICAgc3BlY2lhbF9mY25fcmVnMSk7XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDkxLVx0XHRpZiAoaXNvX2N0cmwgIT0gdHJmLVx1MDAzZWlzb19jdHJsKSB7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE0OTI6XHRcdFx0cmV0ID0gdHJmNzk3MGFfdXBkYXRlX2lzb19jdHJsX3JlZ2lzdGVyKHRyZiwgaXNvX2N0cmwpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDkzLVx0XHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDk5LVx0XHRpZiAoKHRyZi1cdTAwM2VmcmFtaW5nID09IE5GQ19ESUdJVEFMX0ZSQU1JTkdfSVNPMTU2OTNfVDVUKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTUwMDpcdFx0ICAgIHRyZjc5NzBhX2lzX2lzbzE1NjkzX3dyaXRlX29yX2xvY2socmVxWzFdKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTUwMS1cdFx0ICAgIChyZXFbMF0gXHUwMDI2IElTTzE1NjkzX1JFUV9GTEFHX09QVElPTikpXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNTA3LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNTA4OnN0YXRpYyBpbnQgdHJmNzk3MGFfc2VuZF9jbWQoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTUwOS1cdFx0XHQgICAgIHN0cnVjdCBza19idWZmICpza2IsIHUxNiB0aW1lb3V0LFxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTUxMS17XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE1MTI6XHRzdHJ1Y3QgdHJmNzk3MGEgKnRyZiA9IG5mY19kaWdpdGFsX2dldF9kcnZkYXRhKGRkZXYpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNTEzLVx0dTggcHJlZml4WzVdO1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTU1MS1cdGlmICh0cmYtXHUwMDNlc3RhdGUgPT0gVFJGNzk3MEFfU1RfSURMRV9SWF9CTE9DS0VEKSB7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE1NTI6XHRcdHJldCA9IHRyZjc5NzBhX2NtZCh0cmYsIFRSRjc5NzBBX0NNRF9FTkFCTEVfUlgpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNTUzLVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTU1OS1cdGlmICh0cmYtXHUwMDNlaXNfaW5pdGlhdG9yKSB7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE1NjA6XHRcdHJldCA9IHRyZjc5NzBhX3Blcl9jbWRfY29uZmlnKHRyZiwgc2tiKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTU2MS1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE1OTYtXHQvKiBDbGVhciBwb3NzaWJsZSBzcHVyaW91cyBpbnRlcnJ1cHQgKi9cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTU5NzpcdHJldCA9IHRyZjc5NzBhX3JlYWRfaXJxc3RhdHVzKHRyZiwgXHUwMDI2c3RhdHVzKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTU5OC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNjAwLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNjAxOlx0cmV0ID0gdHJmNzk3MGFfdHJhbnNtaXQodHJmLCBza2IsIGxlbiwgcHJlZml4LCBzaXplb2YocHJlZml4KSk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE2MDItXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNjExLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNjEyOnN0YXRpYyBpbnQgdHJmNzk3MGFfdGdfY29uZmlnX3JmX3RlY2goc3RydWN0IHRyZjc5NzBhICp0cmYsIGludCB0ZWNoKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNjEzLXtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE2NDctXHQvKiBOb3JtYWxseSB3ZSB3cml0ZSB0aGUgSVNPX0NUUkwgcmVnaXN0ZXIgaW5cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTY0ODpcdCAqIHRyZjc5NzBhX3RnX2NvbmZpZ19mcmFtaW5nKCkgYmVjYXVzZSB0aGUgZnJhbWluZyBjYW4gY2hhbmdlXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE2NDktXHQgKiB0aGUgdmFsdWUgd3JpdHRlbi4gIEhvd2V2ZXIsIHdoZW4gc2VuZGluZyBhIFBTTCBSRVMsXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE2NTAtXHQgKiBkaWdpdGFsX3RnX3NlbmRfcHNsX3Jlc19jb21wbGV0ZSgpIGRvZXNuJiMzOTt0IGNhbGxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTY1MTpcdCAqIHRyZjc5NzBhX3RnX2NvbmZpZ19mcmFtaW5nKCkgc28gd2UgbXVzdCB3cml0ZSB0aGUgcmVnaXN0ZXJcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTY1Mi1cdCAqIGhlcmUuXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNjU1LVx0ICAgICh0cmYtXHUwMDNlaXNvX2N0cmxfdGVjaCAhPSB0cmYtXHUwMDNlaXNvX2N0cmwpKSB7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE2NTY6XHRcdHJldCA9IHRyZjc5NzBhX3VwZGF0ZV9pc29fY3RybF9yZWdpc3Rlcih0cmYsIHRyZi1cdTAwM2Vpc29fY3RybF90ZWNoKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTY1Ny1cbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE2NjktICovXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE2NzA6c3RhdGljIGludCB0cmY3OTcwYV90Z19jb25maWdfZnJhbWluZyhzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgaW50IGZyYW1pbmcpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE2NzEte1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTcwMy1cdGlmIChpc29fY3RybCAhPSB0cmYtXHUwMDNlaXNvX2N0cmwpIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTcwNDpcdFx0cmV0ID0gdHJmNzk3MGFfdXBkYXRlX2lzb19jdHJsX3JlZ2lzdGVyKHRyZiwgaXNvX2N0cmwpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNzA1LVx0XHRpZiAocmV0KVxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMjI6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTY0ODcKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAyMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBUUkY3OTcwQSBORkMgRHJpdmVyJiMzOTtzIFZpcnR1YWxpemF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgZHJpdmVycy9uZmMvdHJmNzk3MGEuY2Ag4oCTIHRoYXQmIzM5O3MgdGhlIE5GQyBkcml2ZXIgZm9yIHRoZSBUZXhhcyBJbnN0cnVtZW50cyBUUkY3OTcwQSB0cmFuc2NlaXZlci4gSXQmIzM5O3MgYW4gU1BJLWJhc2VkIGRyaXZlciwgd2hpY2ggaW1tZWRpYXRlbHkgbWFrZXMgdmlydHVhbGl6YXRpb24gYSBiaXQgdHJpY2tpZXIuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoZXJlJiMzOTtzIGEgcHJhY3RpY2FsIHdheSB0byB0ZXN0IHRoaXMgdGhpbmcgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCwgZXNwZWNpYWxseSB1c2luZyBzb21ldGhpbmcgbGlrZSBzeXprYWxsZXIuCgpNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gc2VlIGlmIHRoZXJlJiMzOTtzIGEgcmVhZGlseSBhdmFpbGFibGUgU1BJIGNvbnRyb2xsZXIgaW4gUUVNVSB0aGF0IHN5emthbGxlciBjYW4gbGV2ZXJhZ2UuIFRoYXQmIzM5O3MgdXN1YWxseSB0aGUgYm90dGxlbmVjay4gQW5kIGhvbmVzdGx5LCBpdCYjMzk7cyByYXJlIHRvIGZpbmQgZGlyZWN0IHN1cHBvcnQgZm9yIGEgc3BlY2lmaWMgZGV2aWNlIGxpa2UgdGhlIFRSRjc5NzBBLiBJIGtub3cgc3l6a2FsbGVyIGhhcyBzb21lIHZpcnR1YWxpemF0aW9uIHRyaWNrcyB1cCBpdHMgc2xlZXZlLiBXZSYjMzk7dmUgZ290IGB2aGNpYCBmb3IgVVNCLCBgbWFjODAyMTFfaHdzaW1gIGZvciBXaUZpLCBhbmQgZXZlbiBgbmZjc2ltYCBmb3IgTkZDLi4uIGJ1dCBgbmZjc2ltYCBpcyBhIHZpcnR1YWwgTkZDIGRldmljZSwgbm90IGFuIGVtdWxhdG9yIGZvciBhICpzcGVjaWZpYyogdHJhbnNjZWl2ZXIuIFNvLCBpdCYjMzk7cyBub3QgYSBkaXJlY3QgbWF0Y2guCgpOb3csIEkmIzM5O20gdHJ5aW5nIHRvIHJlY2FsbCBpZiBzeXprYWxsZXIgaGFzIGFueSBkZWRpY2F0ZWQgU1BJIHNldHVwIGZ1bmN0aW9ucyBsaWtlIGBzeXpfc3BpX3NldHVwYD8gTm8sIHRoYXQgZG9lc24mIzM5O3QgcmluZyBhIGJlbGwuIFdhaXQsIHRob3VnaCwgZGlkbiYjMzk7dCB0aGV5IHJlY2VudGx5IGFkZCBzb21lIHJ1ZGltZW50YXJ5IFNQSSBzdXBwb3J0IHRocm91Z2ggYSBkdW1teSBjb250cm9sbGVyPyBUaGF0IG1pZ2h0IGJlIG91ciBrZXkuIEl0JiMzOTtzIHdvcnRoIGRpZ2dpbmcgaW50byB0aGUgcmVjZW50IGNoYW5nZXMuCgpBbHJpZ2h0LCBJIG5lZWQgdG8gZm9jdXMgb24gd2hhdCBzeXprYWxsZXIga25vd3MgYWJvdXQgU1BJIGluIGdlbmVyYWwsIG9yLCBtb3JlIHNwZWNpZmljYWxseSwgYW55IG1lbnRpb25zIG9mIHRoZSBUUkY3OTcwQS4gVGltZSB0byBzZWFyY2ggdGhlIGRlc2NyaXB0aW9ucyBhbmQgc2VlIHdoYXQgY29tZXMgdXAuIFRoYXQmIzM5O3MgdGhlIGJlc3Qgcm91dGUgZm9yIGdldHRpbmcgc3RhcnRlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAyMjozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0cmY3OTcwYSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgODI0IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sLTMtLS0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sOjQ6JGlkOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvc2NoZW1hcy9uZXQvbmZjL3RpLHRyZjc5NzBhLnlhbWwjXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sLTUtJHNjaGVtYTogaHR0cDovL2RldmljZXRyZWUub3JnL21ldGEtc2NoZW1hcy9jb3JlLnlhbWwjXG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvdGksdHJmNzk3MGEueWFtbD0xMz1wcm9wZXJ0aWVzOlxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvdGksdHJmNzk3MGEueWFtbC0xNC0gIGNvbXBhdGlibGU6XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sOjE1OiAgICBjb25zdDogdGksdHJmNzk3MGFcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbmZjL3RpLHRyZjc5NzBhLnlhbWwtMTYtXG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvdGksdHJmNzk3MGEueWFtbC0yMy0gICAgZGVzY3JpcHRpb246IHxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbmZjL3RpLHRyZjc5NzBhLnlhbWw6MjQ6ICAgICAgU2V0IHRvIHNwZWNpZnkgdGhhdCB0aGUgaW5wdXQgZnJlcXVlbmN5IHRvIHRoZSB0cmY3OTcwYSBpcyAxMzU2MDAwMEh6IG9yXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sLTI1LSAgICAgIDI3MTIwMDAwSHpcbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sLTI5LSAgICBkZXNjcmlwdGlvbjogfFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvdGksdHJmNzk3MGEueWFtbDozMDogICAgICBTcGVjaWZ5IHRoYXQgdGhlIHRyZjc5NzBhIGJlaW5nIHVzZWQgaGFzIHRoZSBcJiMzNDtFTjIgUkZcJiMzNDsgZXJyYXR1bVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvdGksdHJmNzk3MGEueWFtbC0zMS1cbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sLTM3LSAgICBkZXNjcmlwdGlvbjogfFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvdGksdHJmNzk3MGEueWFtbDozODogICAgICBTcGVjaWZ5IHRoYXQgdGhlIHRyZjc5NzBhIGJlaW5nIHVzZWQgaGFzIHRoZSBcJiMzNDtJUlEgU3RhdHVzIFJlYWRcJiMzNDsgZXJyYXR1bVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvdGksdHJmNzk3MGEueWFtbC0zOS1cbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sPTc3PWV4YW1wbGVzOlxuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbmZjL3RpLHRyZjc5NzBhLnlhbWwtODYtICAgICAgICBuZmNAMCB7XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sOjg3OiAgICAgICAgICAgIGNvbXBhdGlibGUgPSBcJiMzNDt0aSx0cmY3OTcwYVwmIzM0OztcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbmZjL3RpLHRyZjc5NzBhLnlhbWwtODgtICAgICAgICAgICAgcmVnID0gXHUwMDNjMFx1MDAzZTtcbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sLTkwLSAgICAgICAgICAgIHBpbmN0cmwtbmFtZXMgPSBcJiMzNDtkZWZhdWx0XCYjMzQ7O1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvdGksdHJmNzk3MGEueWFtbDo5MTogICAgICAgICAgICBwaW5jdHJsLTAgPSBcdTAwM2NcdTAwMjZ0cmY3OTcwYV9kZWZhdWx0XHUwMDNlO1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvdGksdHJmNzk3MGEueWFtbC05Mi0gICAgICAgICAgICBzcGktbWF4LWZyZXF1ZW5jeSA9IFx1MDAzYzIwMDAwMDBcdTAwM2U7XG4tLVxuTUFJTlRBSU5FUlM9MjcxNzM9UzpcdFN1cHBvcnRlZFxuTUFJTlRBSU5FUlM6MjcxNzQ6RjpcdERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbmZjL3RpLHRyZjc5NzBhLnlhbWxcbk1BSU5UQUlORVJTOjI3MTc1OkY6XHRkcml2ZXJzL25mYy90cmY3OTcwYS5jXG5NQUlOVEFJTkVSUy0yNzE3Ni1cbi0tXG5hcmNoL2FybS9ib290L2R0cy9ueHAvaW14L2lteDZkbC1wcnRydnQuZHRzPTYwPVx0bmZjQDAge1xuYXJjaC9hcm0vYm9vdC9kdHMvbnhwL2lteC9pbXg2ZGwtcHJ0cnZ0LmR0czo2MTpcdFx0Y29tcGF0aWJsZSA9IFwmIzM0O3RpLHRyZjc5NzBhXCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvbnhwL2lteC9pbXg2ZGwtcHJ0cnZ0LmR0cy02Mi1cdFx0cmVnID0gXHUwMDNjMFx1MDAzZTtcbi0tXG5kcml2ZXJzL25mYy9LY29uZmlnPTk9Y29uZmlnIE5GQ19UUkY3OTcwQVxuLS1cbmRyaXZlcnMvbmZjL0tjb25maWctMTgtXHQgIHNheSBNICB0byBjb21waWxlIGl0IGFzIGEgbW9kdWxlLiBUaGUgbW9kdWxlIHdpbGwgYmUgY2FsbGVkXG5kcml2ZXJzL25mYy9LY29uZmlnOjE5Olx0ICB0cmY3OTcwYS5rby5cbmRyaXZlcnMvbmZjL0tjb25maWctMjAtXG4tLVxuZHJpdmVycy9uZmMvTWFrZWZpbGU9MTM9b2JqLSQoQ09ORklHX05GQ19NUlZMKVx0XHQmIzQzOz0gbmZjbXJ2bC9cbmRyaXZlcnMvbmZjL01ha2VmaWxlOjE0Om9iai0kKENPTkZJR19ORkNfVFJGNzk3MEEpXHQmIzQzOz0gdHJmNzk3MGEub1xuZHJpdmVycy9uZmMvTWFrZWZpbGUtMTUtb2JqLSQoQ09ORklHX05GQ19TVDIxTkZDQSkgIFx0JiM0Mzs9IHN0MjFuZmNhL1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMjctXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjI4Oi8qIFRoZXJlIGFyZSAzIHdheXMgdGhlIGhvc3QgY2FuIGNvbW11bmljYXRlIHdpdGggdGhlIHRyZjc5NzBhOlxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0yOS0gKiBwYXJhbGxlbCBtb2RlLCBTUEkgd2l0aCBTbGF2ZSBTZWxlY3QgKFNTKSBtb2RlLCBhbmQgU1BJIHdpdGhvdXRcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTMxLSAqXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjMyOiAqIFRoZSB0cmY3OTcwYSBpcyB2ZXJ5IHRpbWluZyBzZW5zaXRpdmUgYW5kIHRoZSBWSU4sIEVOMiwgYW5kIEVOXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTMzLSAqIHBpbnMgbXVzdCBhc3NlcnRlZCBpbiB0aGF0IG9yZGVyIGFuZCB3aXRoIHNwZWNpZmljIGRlbGF5cyBpbiBiZXR3ZWVuLlxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMzUtICogY29uZmlybWVkIHRvIHdvcmsgd2l0aCB0aGlzIGRyaXZlci4gIFRoZXJlIGlzIGEgYnVnIHdpdGggdGhlIGN1cnJlbnRcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MzY6ICogdmVyc2lvbiBvZiB0aGUgdHJmNzk3MGEgdGhhdCByZXF1aXJlcyB0aGF0IEVOMiByZW1haW4gbG93IG5vIG1hdHRlclxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0zNy0gKiB3aGF0LiAgSWYgaXQgZ29lcyBoaWdoLCBpdCB3aWxsIGdlbmVyYXRlIGFuIFJGIGZpZWxkIGV2ZW4gd2hlbiBpblxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMzktICogd2hlbiBFTjIgaXMgbGVmdCBsb3cuICBUaGUgJiMzOTtlbjItcmYtcXVpcmsmIzM5OyBkZXZpY2UgdHJlZSBwcm9wZXJ0eVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo0MDogKiBpbmRpY2F0ZXMgdGhhdCB0cmY3OTcwYSBjdXJyZW50bHkgYmVpbmcgdXNlZCBoYXMgdGhlIGVycmF0dW0gYW5kXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTQxLSAqIHRoYXQgRU4yIG11c3QgYmUga2VwdCBsb3cuXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy00NC0gKiBUaW1lb3V0cyBhcmUgcmVxdWlyZWQgc28gdGhpbmdzIGRvbiYjMzk7dCBoYW5nIHdoZW4gdGhlcmUgaXMgbm8gcmVzcG9uc2VcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NDU6ICogZnJvbSB0aGUgdHJmNzk3MGEgKG9yIHRhZykuICBVc2luZyB0aGlzIG1lY2hhbmlzbSBjcmVhdGVzIGEgcmFjZSB3aXRoXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTQ2LSAqIGludGVycnVwdHMsIGhvd2V2ZXIuICBUaGF0IGlzLCBhbiBpbnRlcnJ1cHQgYW5kIGEgdGltZW91dCBjb3VsZCBvY2N1clxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjAtICogdGhlIGVudGlyZSBhbnRpY29sbGlzaW9uIHByb2NlZHVyZSBhZ2FpbiBidXQgdGhlIGRpZ2l0YWwgbGF5ZXIgZG9lc24mIzM5O3RcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NjE6ICogc3VwcG9ydCB0aGF0LiAgU28sIGlmIGFuIGFib3J0IGlzIHJlY2VpdmVkIGJlZm9yZSB0cmY3OTcwYV9zZW5kX2NtZCgpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTYyLSAqIGhhcyBzZW50IHRoZSBjb21tYW5kIHRvIHRoZSB0YWcsIGl0IHNpbXBseSByZXR1cm5zIC1FQ0FOQ0VMRUQuICBJZiB0aGVcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk2LSAqIHdoZW4gdGhlIGZyYW1pbmcgaXMgJiMzOTtORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfVDJUJiMzOTsuICBUaGlzIGlzIGRvbmUgYnlcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTc6ICogdGhlIHRyZjc5NzBhX3Blcl9jbWRfY29uZmlnKCkgcm91dGluZS5cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTgtICpcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0NC0vKiBRdWlya3MgKi9cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTQ1Oi8qIEVycmF0dW06IFdoZW4gcmVhZGluZyBJUlEgU3RhdHVzIHJlZ2lzdGVyIG9uIHRyZjc5NzBhLCB3ZSBtdXN0IGlzc3VlIGFcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQ2LSAqIHJlYWQgY29udGludW91cyBjb21tYW5kIGZvciBJUlEgU3RhdHVzIGFuZCBDb2xsaXNpb24gUG9zaXRpb24gcmVnaXN0ZXJzLlxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDE1LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo0MTY6ZW51bSB0cmY3OTcwYV9zdGF0ZSB7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTQxNy1cdFRSRjc5NzBBX1NUX1BXUl9PRkYsXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy00MjktXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjQzMDpzdHJ1Y3QgdHJmNzk3MGEge1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo0MzE6XHRlbnVtIHRyZjc5NzBhX3N0YXRlXHRcdHN0YXRlO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy00MzItXHRzdHJ1Y3QgZGV2aWNlXHRcdFx0KmRldjtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTQ2NS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NDY2OnN0YXRpYyBpbnQgdHJmNzk3MGFfY21kKHN0cnVjdCB0cmY3OTcwYSAqdHJmLCB1OCBvcGNvZGUpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTQ2Ny17XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy00NzktXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjQ4MDpzdGF0aWMgaW50IHRyZjc5NzBhX3JlYWQoc3RydWN0IHRyZjc5NzBhICp0cmYsIHU4IHJlZywgdTggKnZhbClcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDgxLXtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTQ5NC1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NDk1OnN0YXRpYyBpbnQgdHJmNzk3MGFfcmVhZF9jb250KHN0cnVjdCB0cmY3OTcwYSAqdHJmLCB1OCByZWcsIHU4ICpidWYsXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTQ5Ni1cdFx0XHQgICAgICBzaXplX3QgbGVuKVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTIzLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo1MjQ6c3RhdGljIGludCB0cmY3OTcwYV93cml0ZShzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgdTggcmVnLCB1OCB2YWwpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTUyNS17XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01MzgtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjUzOTpzdGF0aWMgaW50IHRyZjc5NzBhX3JlYWRfaXJxc3RhdHVzKHN0cnVjdCB0cmY3OTcwYSAqdHJmLCB1OCAqc3RhdHVzKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01NDAte1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTYyLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo1NjM6c3RhdGljIGludCB0cmY3OTcwYV91cGRhdGVfcnhfZ2Fpbl9yZWR1Y3Rpb24oc3RydWN0IHRyZjc5NzBhICp0cmYpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTU2NC17XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01NzAtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjU3MTpcdHJldCA9IHRyZjc5NzBhX3JlYWQodHJmLCBUUkY3OTcwQV9SWF9TUEVDSUFMX1NFVFRJTkdTLCBcdTAwMjZyZWcpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01NzItXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTc2LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo1Nzc6XHRyZXQgPSB0cmY3OTcwYV93cml0ZSh0cmYsIFRSRjc5NzBBX1JYX1NQRUNJQUxfU0VUVElOR1MsIHJlZyk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTU3OC1cbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTU4MS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NTgyOnN0YXRpYyBpbnQgdHJmNzk3MGFfdXBkYXRlX2lzb19jdHJsX3JlZ2lzdGVyKHN0cnVjdCB0cmY3OTcwYSAqdHJmLCB1OCBpc29fY3RybClcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTgzLXtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTU4NS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NTg2Olx0cmV0ID0gdHJmNzk3MGFfd3JpdGUodHJmLCBUUkY3OTcwQV9JU09fQ1RSTCwgaXNvX2N0cmwpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01ODctXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTkyLVx0ICovXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjU5MzpcdHJldCA9IHRyZjc5NzBhX3VwZGF0ZV9yeF9nYWluX3JlZHVjdGlvbih0cmYpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01OTQtXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01OTctXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjU5ODpzdGF0aWMgaW50IHRyZjc5NzBhX3JlYWRfdGFyZ2V0X3Byb3RvKHN0cnVjdCB0cmY3OTcwYSAqdHJmLCB1OCAqdGFyZ2V0X3Byb3RvKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01OTkte1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjE2LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo2MTc6c3RhdGljIGludCB0cmY3OTcwYV9tb2RlX2RldGVjdChzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgdTggKnJmX3RlY2gpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTYxOC17XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02MjEtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjYyMjpcdHJldCA9IHRyZjc5NzBhX3JlYWRfdGFyZ2V0X3Byb3RvKHRyZiwgXHUwMDI2dGFyZ2V0X3Byb3RvKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjIzLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTY0OS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NjUwOnN0YXRpYyB2b2lkIHRyZjc5NzBhX3NlbmRfdXBzdHJlYW0oc3RydWN0IHRyZjc5NzBhICp0cmYpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTY1MS17XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02NTUtXHRpZiAodHJmLVx1MDAzZXJ4X3NrYiBcdTAwMjZcdTAwMjYgIUlTX0VSUih0cmYtXHUwMDNlcnhfc2tiKSBcdTAwMjZcdTAwMjYgIXRyZi1cdTAwM2VhYm9ydGluZylcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NjU2Olx0XHRwcmludF9oZXhfZHVtcF9kZWJ1ZyhcJiMzNDt0cmY3OTcwYSByeCBkYXRhOiBcJiMzNDssIERVTVBfUFJFRklYX05PTkUsXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTY1Ny1cdFx0XHRcdCAgICAgMTYsIDEsIHRyZi1cdTAwM2VyeF9za2ItXHUwMDNlZGF0YSwgdHJmLVx1MDAzZXJ4X3NrYi1cdTAwM2VsZW4sXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02NzctXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjY3ODpzdGF0aWMgdm9pZCB0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbShzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgaW50IGVycm5vKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02Nzkte1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjg2LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo2ODc6XHR0cmY3OTcwYV9zZW5kX3Vwc3RyZWFtKHRyZik7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTY4OC19XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTY4OS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NjkwOnN0YXRpYyBpbnQgdHJmNzk3MGFfdHJhbnNtaXQoc3RydWN0IHRyZjc5NzBhICp0cmYsIHN0cnVjdCBza19idWZmICpza2IsXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTY5MS1cdFx0XHQgICAgIHVuc2lnbmVkIGludCBsZW4sIGNvbnN0IHU4ICpwcmVmaXgsXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02OTgtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjY5OTpcdHByaW50X2hleF9kdW1wX2RlYnVnKFwmIzM0O3RyZjc5NzBhIHR4IGRhdGE6IFwmIzM0OywgRFVNUF9QUkVGSVhfTk9ORSxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzAwLVx0XHRcdCAgICAgMTYsIDEsIHNrYi1cdTAwM2VkYXRhLCBsZW4sIGZhbHNlKTtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTc0Ny1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NzQ4OnN0YXRpYyB2b2lkIHRyZjc5NzBhX2ZpbGxfZmlmbyhzdHJ1Y3QgdHJmNzk3MGEgKnRyZilcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzQ5LXtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTc1NS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NzU2Olx0cmV0ID0gdHJmNzk3MGFfcmVhZCh0cmYsIFRSRjc5NzBBX0ZJRk9fU1RBVFVTLCBcdTAwMjZmaWZvX2J5dGVzKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzU3LVx0aWYgKHJldCkge1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo3NTg6XHRcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgcmV0KTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzU5LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03NzctXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjc3ODpcdHJldCA9IHRyZjc5NzBhX3RyYW5zbWl0KHRyZiwgc2tiLCBsZW4sIFx1MDAyNnByZWZpeCwgc2l6ZW9mKHByZWZpeCkpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03NzktXHRpZiAocmV0KVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo3ODA6XHRcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgcmV0KTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzgxLX1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzgyLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo3ODM6c3RhdGljIHZvaWQgdHJmNzk3MGFfZHJhaW5fZmlmbyhzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgdTggc3RhdHVzKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03ODQte1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzg5LVx0aWYgKHN0YXR1cyBcdTAwMjYgVFJGNzk3MEFfSVJRX1NUQVRVU19FUlJPUikge1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo3OTA6XHRcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgLUVJTyk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTc5MS1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzkzLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo3OTQ6XHRyZXQgPSB0cmY3OTcwYV9yZWFkKHRyZiwgVFJGNzk3MEFfRklGT19TVEFUVVMsIFx1MDAyNmZpZm9fYnl0ZXMpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03OTUtXHRpZiAocmV0KSB7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjc5NjpcdFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCByZXQpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03OTctXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTgxMi1cdFx0aWYgKCFza2IpIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6ODEzOlx0XHRcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgLUVOT01FTSk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTgxNC1cdFx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04MjAtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjgyMTpcdHJldCA9IHRyZjc5NzBhX3JlYWRfY29udCh0cmYsIFRSRjc5NzBBX0ZJRk9fSU9fUkVHSVNURVIsXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTgyMi1cdFx0XHRcdCBza2JfcHV0KHNrYiwgZmlmb19ieXRlcyksIGZpZm9fYnl0ZXMpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04MjMtXHRpZiAocmV0KSB7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjgyNDpcdFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCByZXQpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04MjUtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTgzNS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6ODM2Olx0XHRyZXQgPSB0cmY3OTcwYV9yZWFkKHRyZiwgVFJGNzk3MEFfRklGT19TVEFUVVMsIFx1MDAyNmZpZm9fYnl0ZXMpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04MzctXHRcdGlmIChyZXQpIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6ODM4Olx0XHRcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgcmV0KTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODM5LVx0XHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTg0NS1cdFx0ICogdGhlIGlmIHN0bXQgYmVsb3cgZG9lc24mIzM5O3QgZmlyZSBhbmQgdGhlIGRyaXZlciB3aWxsIHdhaXRcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6ODQ2Olx0XHQgKiBmb3IgdGhlIHRyZjc5NzBhIHRvIGdlbmVyYXRlIGFub3RoZXIgUlggaW50ZXJydXB0LlxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04NDctXHRcdCAqL1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODUzLVx0aWYgKHN0YXR1cyA9PSBUUkY3OTcwQV9JUlFfU1RBVFVTX1NSWCkge1x0LyogUmVjZWl2ZSBjb21wbGV0ZSAqL1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo4NTQ6XHRcdHRyZjc5NzBhX3NlbmRfdXBzdHJlYW0odHJmKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODU1LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04NjQtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjg2NTpzdGF0aWMgaXJxcmV0dXJuX3QgdHJmNzk3MGFfaXJxKGludCBpcnEsIHZvaWQgKmRldl9pZClcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODY2LXtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6ODY3Olx0c3RydWN0IHRyZjc5NzBhICp0cmYgPSBkZXZfaWQ7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTg2OC1cdGludCByZXQ7XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04NzctXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjg3ODpcdHJldCA9IHRyZjc5NzBhX3JlYWRfaXJxc3RhdHVzKHRyZiwgXHUwMDI2c3RhdHVzKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODc5LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODk2LVx0XHQgKiB0dXJuIG9mZiB0aGUgcmVjZWl2ZXIgdG8gYXZvaWQgdW5uZWNlc3NhcnkgaW50ZXJydXB0cy5cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6ODk3Olx0XHQgKiBJdCB3aWxsIGJlIHR1cm5lZCBiYWNrIG9uIGluIHRyZjc5NzBhX3NlbmRfY21kKCkgd2hlblxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04OTgtXHRcdCAqIHRoZSBuZXh0IGNvbW1hbmQgaXMgaXNzdWVkLlxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTAwLVx0XHRpZiAodHJmLVx1MDAzZWlzX2luaXRpYXRvciBcdTAwMjZcdTAwMjYgKHN0YXR1cyBcdTAwMjYgVFJGNzk3MEFfSVJRX1NUQVRVU19FUlJPUikpIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTAxOlx0XHRcdHRyZjc5NzBhX2NtZCh0cmYsIFRSRjc5NzBBX0NNRF9CTE9DS19SWCk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkwMi1cdFx0XHR0cmYtXHUwMDNlc3RhdGUgPSBUUkY3OTcwQV9TVF9JRExFX1JYX0JMT0NLRUQ7XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05MDQtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjkwNTpcdFx0dHJmNzk3MGFfY21kKHRyZiwgVFJGNzk3MEFfQ01EX0ZJRk9fUkVTRVQpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05MDYtXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTEwLVx0XHRcdCAgICAhY2FuY2VsX2RlbGF5ZWRfd29yayhcdTAwMjZ0cmYtXHUwMDNldGltZW91dF93b3JrKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTExOlx0XHRcdHRyZjc5NzBhX2ZpbGxfZmlmbyh0cmYpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05MTItXHRcdH0gZWxzZSB7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjkxMzpcdFx0XHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIC1FSU8pO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05MTQtXHRcdH1cbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkyMC1cdFx0XHQgICAgIWNhbmNlbF9kZWxheWVkX3dvcmsoXHUwMDI2dHJmLVx1MDAzZXRpbWVvdXRfd29yayk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjkyMTpcdFx0XHR0cmY3OTcwYV9kcmFpbl9maWZvKHRyZiwgc3RhdHVzKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTIyLVx0XHR9IGVsc2UgaWYgKHN0YXR1cyBcdTAwMjYgVFJGNzk3MEFfSVJRX1NUQVRVU19GSUZPKSB7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjkyMzpcdFx0XHRyZXQgPSB0cmY3OTcwYV9yZWFkKHRyZiwgVFJGNzk3MEFfRklGT19TVEFUVVMsXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkyNC1cdFx0XHRcdFx0ICAgIFx1MDAyNmZpZm9fYnl0ZXMpO1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTI4LVx0XHRcdGlmIChyZXQpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjkyOTpcdFx0XHRcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgcmV0KTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTMwLVx0XHRcdGVsc2UgaWYgKCFmaWZvX2J5dGVzKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5MzE6XHRcdFx0XHR0cmY3OTcwYV9jbWQodHJmLCBUUkY3OTcwQV9DTURfRklGT19SRVNFVCk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkzMi1cdFx0fSBlbHNlIGlmICgoc3RhdHVzID09IFRSRjc5NzBBX0lSUV9TVEFUVVNfVFgpIHx8XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05MzUtXHRcdFx0XHRcdFRSRjc5NzBBX0lSUV9TVEFUVVNfTkZDX1JGKSkpKSB7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjkzNjpcdFx0XHR0cmY3OTcwYV9jbWQodHJmLCBUUkY3OTcwQV9DTURfRklGT19SRVNFVCk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkzNy1cbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk0MS1cdFx0XHRcdHRyZi1cdTAwM2VyeF9za2IgPSBFUlJfUFRSKDApO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5NDI6XHRcdFx0XHR0cmY3OTcwYV9zZW5kX3Vwc3RyZWFtKHRyZik7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk0My1cdFx0XHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTYyLVx0XHRcdGNhc2UgTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX0FOVElDT0xfQ09NUExFVEU6XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjk2MzpcdFx0XHRcdHJldCA9IHRyZjc5NzBhX3dyaXRlKHRyZixcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTY0LVx0XHRcdFx0XHQgVFJGNzk3MEFfU1BFQ0lBTF9GQ05fUkVHMSxcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk3Ni1cdFx0XHRpZiAoaXNvX2N0cmwgIT0gdHJmLVx1MDAzZWlzb19jdHJsKSB7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjk3NzpcdFx0XHRcdHJldCA9IHRyZjc5NzBhX3VwZGF0ZV9pc29fY3RybF9yZWdpc3Rlcih0cmYsIGlzb19jdHJsKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTc4LVx0XHRcdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk4My1cdFx0fSBlbHNlIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTg0Olx0XHRcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgLUVJTyk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk4NS1cdFx0fVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTg4LVx0XHRpZiAoc3RhdHVzICE9IFRSRjc5NzBBX0lSUV9TVEFUVVNfVFgpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjk4OTpcdFx0XHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIC1FSU8pO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05OTAtXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTk0LVx0XHRcdCAgICAhY2FuY2VsX2RlbGF5ZWRfd29yayhcdTAwMjZ0cmYtXHUwMDNldGltZW91dF93b3JrKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTk1Olx0XHRcdHRyZjc5NzBhX2RyYWluX2ZpZm8odHJmLCBzdGF0dXMpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05OTYtXHRcdH0gZWxzZSBpZiAoIShzdGF0dXMgXHUwMDI2IFRSRjc5NzBBX0lSUV9TVEFUVVNfTkZDX1JGKSkge1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5OTc6XHRcdFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCAtRUlPKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTk4LVx0XHR9XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDA0LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDA1Olx0XHRcdHJldCA9IHRyZjc5NzBhX21vZGVfZGV0ZWN0KHRyZiwgXHUwMDI2dHJmLVx1MDAzZW1kX3JmX3RlY2gpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDA2LVx0XHRcdGlmIChyZXQpIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTAwNzpcdFx0XHRcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgcmV0KTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAwOC1cdFx0XHR9IGVsc2Uge1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDA5LVx0XHRcdFx0dHJmLVx1MDAzZXN0YXRlID0gVFJGNzk3MEFfU1RfTElTVEVOSU5HO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDEwOlx0XHRcdFx0dHJmNzk3MGFfZHJhaW5fZmlmbyh0cmYsIHN0YXR1cyk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwMTEtXHRcdFx0fVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDEyLVx0XHR9IGVsc2UgaWYgKCEoc3RhdHVzIFx1MDAyNiBUUkY3OTcwQV9JUlFfU1RBVFVTX05GQ19SRikpIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTAxMzpcdFx0XHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIC1FSU8pO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDE0LVx0XHR9XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDI1LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDI2OnN0YXRpYyB2b2lkIHRyZjc5NzBhX2lzc3VlX2VvZihzdHJ1Y3QgdHJmNzk3MGEgKnRyZilcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAyNy17XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDMxLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDMyOlx0cmV0ID0gdHJmNzk3MGFfY21kKHRyZiwgVFJGNzk3MEFfQ01EX0ZJRk9fUkVTRVQpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDMzLVx0aWYgKHJldClcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTAzNDpcdFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCByZXQpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDM1LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDM2Olx0cmV0ID0gdHJmNzk3MGFfY21kKHRyZiwgVFJGNzk3MEFfQ01EX0VPRik7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwMzctXHRpZiAocmV0KVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDM4Olx0XHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIHJldCk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwMzktXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDQ4LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDQ5OnN0YXRpYyB2b2lkIHRyZjc5NzBhX3RpbWVvdXRfd29ya19oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA1MC17XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwNTE6XHRzdHJ1Y3QgdHJmNzk3MGEgKnRyZiA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgdHJmNzk3MGEsXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwNTItXHRcdFx0XHRcdCAgICB0aW1lb3V0X3dvcmsud29yayk7XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDYxLVx0ZWxzZSBpZiAodHJmLVx1MDAzZXN0YXRlID09IFRSRjc5NzBBX1NUX1dBSVRfRk9SX1JYX0RBVEFfQ09OVClcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTA2MjpcdFx0dHJmNzk3MGFfZHJhaW5fZmlmbyh0cmYsIFRSRjc5NzBBX0lSUV9TVEFUVVNfU1JYKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA2My1cdGVsc2UgaWYgKHRyZi1cdTAwM2VzdGF0ZSA9PSBUUkY3OTcwQV9TVF9XQUlUX1RPX0lTU1VFX0VPRilcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTA2NDpcdFx0dHJmNzk3MGFfaXNzdWVfZW9mKHRyZik7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwNjUtXHRlbHNlXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwNjY6XHRcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgLUVUSU1FRE9VVCk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwNjctXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDcwLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDcxOnN0YXRpYyBpbnQgdHJmNzk3MGFfaW5pdChzdHJ1Y3QgdHJmNzk3MGEgKnRyZilcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA3Mi17XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDc2LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDc3Olx0cmV0ID0gdHJmNzk3MGFfY21kKHRyZiwgVFJGNzk3MEFfQ01EX1NPRlRfSU5JVCk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwNzgtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA4MS1cdC8qIFNldCB0aGUgZ2FpbiByZWR1Y3Rpb24gYWZ0ZXIgc29mdCBpbml0ICovXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwODI6XHRyZXQgPSB0cmY3OTcwYV91cGRhdGVfcnhfZ2Fpbl9yZWR1Y3Rpb24odHJmKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA4My1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDg1LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDg2Olx0cmV0ID0gdHJmNzk3MGFfY21kKHRyZiwgVFJGNzk3MEFfQ01EX0lETEUpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDg3LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwODktXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwOTA6XHRyZXQgPSB0cmY3OTcwYV93cml0ZSh0cmYsIFRSRjc5NzBBX1JFR19JT19DVFJMLFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDkxLVx0XHRcdCAgICAgdHJmLVx1MDAzZWlvX2N0cmwgfCBUUkY3OTcwQV9SRUdfSU9fQ1RSTF9WUlMoMHgxKSk7XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDk0LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDk1Olx0cmV0ID0gdHJmNzk3MGFfd3JpdGUodHJmLCBUUkY3OTcwQV9ORkNfVEFSR0VUX0xFVkVMLCAwKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA5Ni1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTAyLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMTAzOlx0cmV0ID0gdHJmNzk3MGFfd3JpdGUodHJmLCBUUkY3OTcwQV9NT0RVTEFUT1JfU1lTX0NMS19DVFJMLFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTA0LVx0XHRcdCAgICAgdHJmLVx1MDAzZW1vZHVsYXRvcl9zeXNfY2xrX2N0cmwpO1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTEwNy1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTEwODpcdHJldCA9IHRyZjc5NzBhX3dyaXRlKHRyZiwgVFJGNzk3MEFfQURKVVRBQkxFX0ZJRk9fSVJRX0xFVkVMUyxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTEwOS1cdFx0XHQgICAgIFRSRjc5NzBBX0FESlVUQUJMRV9GSUZPX0lSUV9MRVZFTFNfV0xIXzk2IHxcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExMTMtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjExMTQ6XHRyZXQgPSB0cmY3OTcwYV93cml0ZSh0cmYsIFRSRjc5NzBBX1NQRUNJQUxfRkNOX1JFRzEsIDApO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTE1LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExMjctXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjExMjg6c3RhdGljIHZvaWQgdHJmNzk3MGFfc3dpdGNoX3JmX29mZihzdHJ1Y3QgdHJmNzk3MGEgKnRyZilcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTEyOS17XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTM3LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMTM4Olx0dHJmNzk3MGFfd3JpdGUodHJmLCBUUkY3OTcwQV9DSElQX1NUQVRVU19DVFJMLCB0cmYtXHUwMDNlY2hpcF9zdGF0dXNfY3RybCk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExMzktXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTQ2LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMTQ3OnN0YXRpYyBpbnQgdHJmNzk3MGFfc3dpdGNoX3JmX29uKHN0cnVjdCB0cmY3OTcwYSAqdHJmKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTQ4LXtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExNjAtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjExNjE6XHRyZXQgPSB0cmY3OTcwYV9pbml0KHRyZik7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExNjItXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTcxLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMTcyOnN0YXRpYyBpbnQgdHJmNzk3MGFfc3dpdGNoX3JmKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIGJvb2wgb24pXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExNzMte1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMTc0Olx0c3RydWN0IHRyZjc5NzBhICp0cmYgPSBuZmNfZGlnaXRhbF9nZXRfZHJ2ZGF0YShkZGV2KTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTE3NS1cdGludCByZXQgPSAwO1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTE4NC1cdFx0Y2FzZSBUUkY3OTcwQV9TVF9SRl9PRkY6XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjExODU6XHRcdFx0cmV0ID0gdHJmNzk3MGFfc3dpdGNoX3JmX29uKHRyZik7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExODYtXHRcdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTkyLVx0XHRcdFx0X19mdW5jX18sIHRyZi1cdTAwM2VzdGF0ZSwgb24pO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMTkzOlx0XHRcdHRyZjc5NzBhX3N3aXRjaF9yZl9vZmYodHJmKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTE5NC1cdFx0XHRyZXQgPSAtRUlOVkFMO1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTIwOS1cdFx0Y2FzZSBUUkY3OTcwQV9TVF9XQUlUX0ZPUl9SWF9EQVRBX0NPTlQ6XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEyMTA6XHRcdFx0dHJmNzk3MGFfc3dpdGNoX3JmX29mZih0cmYpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjExLVx0XHR9XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjE3LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMjE4OnN0YXRpYyBpbnQgdHJmNzk3MGFfaW5fY29uZmlnX3JmX3RlY2goc3RydWN0IHRyZjc5NzBhICp0cmYsIGludCB0ZWNoKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjE5LXtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyNjgtXHQgKiBQU0wgc2VxdWVuY2UgKGluZGljYXRlZCBieSAmIzM5O3RyZi1cdTAwM2Vpc29fY3RybCA9PSAweGZmJiMzOTsgZnJvbVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMjY5Olx0ICogdHJmNzk3MGFfaW5pdCgpKSwgY2xlYXIgdGhlIE5GQyBUYXJnZXQgRGV0ZWN0aW9uIExldmVsIHJlZ2lzdGVyXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyNzAtXHQgKiBkdWUgdG8gZXJyYXR1bS5cbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyNzItXHRpZiAodHJmLVx1MDAzZWlzb19jdHJsID09IDB4ZmYpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEyNzM6XHRcdHJldCA9IHRyZjc5NzBhX3dyaXRlKHRyZiwgVFJGNzk3MEFfTkZDX1RBUkdFVF9MRVZFTCwgMCk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyNzQtXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjc3LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMjc4OnN0YXRpYyBpbnQgdHJmNzk3MGFfaXNfcmZfZmllbGQoc3RydWN0IHRyZjc5NzBhICp0cmYsIGJvb2wgKmlzX3JmX2ZpZWxkKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjc5LXtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyODItXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEyODM6XHRyZXQgPSB0cmY3OTcwYV93cml0ZSh0cmYsIFRSRjc5NzBBX0NISVBfU1RBVFVTX0NUUkwsXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyODQtXHRcdFx0ICAgICB0cmYtXHUwMDNlY2hpcF9zdGF0dXNfY3RybCB8XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjg4LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMjg5Olx0cmV0ID0gdHJmNzk3MGFfY21kKHRyZiwgVFJGNzk3MEFfQ01EX1RFU1RfRVhUX1JGKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI5MC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjk0LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMjk1Olx0cmV0ID0gdHJmNzk3MGFfcmVhZCh0cmYsIFRSRjc5NzBBX1JTU0lfT1NDX1NUQVRVUywgXHUwMDI2cnNzaSk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyOTYtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI5OC1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTI5OTpcdHJldCA9IHRyZjc5NzBhX3dyaXRlKHRyZiwgVFJGNzk3MEFfQ0hJUF9TVEFUVVNfQ1RSTCxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTMwMC1cdFx0XHQgICAgIHRyZi1cdTAwM2VjaGlwX3N0YXR1c19jdHJsKTtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzMTEtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEzMTI6c3RhdGljIGludCB0cmY3OTcwYV9pbl9jb25maWdfZnJhbWluZyhzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgaW50IGZyYW1pbmcpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzMTMte1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTM1MC1cdGlmICghKHRyZi1cdTAwM2VjaGlwX3N0YXR1c19jdHJsIFx1MDAyNiBUUkY3OTcwQV9DSElQX1NUQVRVU19SRl9PTikpIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTM1MTpcdFx0cmV0ID0gdHJmNzk3MGFfaXNfcmZfZmllbGQodHJmLCBcdTAwMjZpc19yZl9maWVsZCk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzNTItXHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzU5LVx0aWYgKGlzb19jdHJsICE9IHRyZi1cdTAwM2Vpc29fY3RybCkge1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMzYwOlx0XHRyZXQgPSB0cmY3OTcwYV91cGRhdGVfaXNvX2N0cmxfcmVnaXN0ZXIodHJmLCBpc29fY3RybCk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzNjEtXHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzY1LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMzY2Olx0XHRyZXQgPSB0cmY3OTcwYV93cml0ZSh0cmYsIFRSRjc5NzBBX01PRFVMQVRPUl9TWVNfQ0xLX0NUUkwsXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzNjctXHRcdFx0XHQgICAgIHRyZi1cdTAwM2Vtb2R1bGF0b3Jfc3lzX2Nsa19jdHJsKTtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzNzItXHRpZiAoISh0cmYtXHUwMDNlY2hpcF9zdGF0dXNfY3RybCBcdTAwMjYgVFJGNzk3MEFfQ0hJUF9TVEFUVVNfUkZfT04pKSB7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEzNzM6XHRcdHJldCA9IHRyZjc5NzBhX3dyaXRlKHRyZiwgVFJGNzk3MEFfQ0hJUF9TVEFUVVNfQ1RSTCxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTM3NC1cdFx0XHRcdCAgICAgdHJmLVx1MDAzZWNoaXBfc3RhdHVzX2N0cmwgfFxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTM4Ni1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTM4NzpzdGF0aWMgaW50IHRyZjc5NzBhX2luX2NvbmZpZ3VyZV9odyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBpbnQgdHlwZSxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTM4OC1cdFx0XHRcdCAgICBpbnQgcGFyYW0pXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzODkte1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMzkwOlx0c3RydWN0IHRyZjc5NzBhICp0cmYgPSBuZmNfZGlnaXRhbF9nZXRfZHJ2ZGF0YShkZGV2KTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTM5MS1cdGludCByZXQ7XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDAwLVx0ICAgICh0cmYtXHUwMDNlc3RhdGUgPT0gVFJGNzk3MEFfU1RfUkZfT0ZGKSkge1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNDAxOlx0XHRyZXQgPSB0cmY3OTcwYV9zd2l0Y2hfcmZfb24odHJmKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQwMi1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0MDctXHRjYXNlIE5GQ19ESUdJVEFMX0NPTkZJR19SRl9URUNIOlxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNDA4Olx0XHRyZXQgPSB0cmY3OTcwYV9pbl9jb25maWdfcmZfdGVjaCh0cmYsIHBhcmFtKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQwOS1cdFx0YnJlYWs7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0MTAtXHRjYXNlIE5GQ19ESUdJVEFMX0NPTkZJR19GUkFNSU5HOlxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNDExOlx0XHRyZXQgPSB0cmY3OTcwYV9pbl9jb25maWdfZnJhbWluZyh0cmYsIHBhcmFtKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQxMi1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDIyLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNDIzOnN0YXRpYyBpbnQgdHJmNzk3MGFfaXNfaXNvMTU2OTNfd3JpdGVfb3JfbG9jayh1OCBjbWQpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0MjQte1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQzOC1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTQzOTpzdGF0aWMgaW50IHRyZjc5NzBhX3Blcl9jbWRfY29uZmlnKHN0cnVjdCB0cmY3OTcwYSAqdHJmLFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDQwLVx0XHRcdFx0ICAgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0NjQtXHRcdGlmIChzcGVjaWFsX2Zjbl9yZWcxICE9IHRyZi1cdTAwM2VzcGVjaWFsX2Zjbl9yZWcxKSB7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE0NjU6XHRcdFx0cmV0ID0gdHJmNzk3MGFfd3JpdGUodHJmLCBUUkY3OTcwQV9TUEVDSUFMX0ZDTl9SRUcxLFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDY2LVx0XHRcdFx0XHQgICAgIHNwZWNpYWxfZmNuX3JlZzEpO1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQ5MS1cdFx0aWYgKGlzb19jdHJsICE9IHRyZi1cdTAwM2Vpc29fY3RybCkge1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNDkyOlx0XHRcdHJldCA9IHRyZjc5NzBhX3VwZGF0ZV9pc29fY3RybF9yZWdpc3Rlcih0cmYsIGlzb19jdHJsKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQ5My1cdFx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQ5OS1cdFx0aWYgKCh0cmYtXHUwMDNlZnJhbWluZyA9PSBORkNfRElHSVRBTF9GUkFNSU5HX0lTTzE1NjkzX1Q1VCkgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE1MDA6XHRcdCAgICB0cmY3OTcwYV9pc19pc28xNTY5M193cml0ZV9vcl9sb2NrKHJlcVsxXSkgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE1MDEtXHRcdCAgICAocmVxWzBdIFx1MDAyNiBJU08xNTY5M19SRVFfRkxBR19PUFRJT04pKVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTUwNy1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTUwODpzdGF0aWMgaW50IHRyZjc5NzBhX3NlbmRfY21kKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE1MDktXHRcdFx0ICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MTYgdGltZW91dCxcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE1MTEte1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNTEyOlx0c3RydWN0IHRyZjc5NzBhICp0cmYgPSBuZmNfZGlnaXRhbF9nZXRfZHJ2ZGF0YShkZGV2KTtcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDIyOjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwNTkyCgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogMTkxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgdGhlIEZlYXNpYmlsaXR5IG9mIFRlc3RpbmcgYSBTcGVjaWZpYyBIYXJkd2FyZSBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7dmUgc3R1bWJsZWQgdXBvbiBgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvdGksdHJmNzk3MGEueWFtbGAgYW5kIGBhcmNoL2FybS9ib290L2R0cy9ueHAvaW14L2lteDZkbC1wcnRydnQuZHRzYC4gVGhpcyBpcyBhIHJlYWwsIGJvbmEgZmlkZSBoYXJkd2FyZSBkZXZpY2UgZHJpdmVyIOKAkyB0aGUgVEkgVFJGNzk3MEEgTkZDIGNvbnRyb2xsZXIuIFRoZSBrZXkgcXVlc3Rpb24gbm93IGlzLCBjYW4gSSBldmVuICpyZWFjaCogdGhpcyB0aGluZyB3aXRoaW4gYSBRRU1VIGVudmlyb25tZW50PyBVbmZvcnR1bmF0ZWx5LCBRRU1VIGRvZXNuJiMzOTt0IHNlZW0gdG8gaGF2ZSBlbXVsYXRpb24gZm9yIHRoZSBUUkY3OTcwQS4gRGFybi4KClNvLCBpcyB0aGVyZSBhbnkgd2F5IHRvIGluc3RhbnRpYXRlIGl0IHdpdGhvdXQgZGlyZWN0IGhhcmR3YXJlLCBtYXliZSB2aWEgc3lzZnMgb3Igc29tZXRoaW5nIGNsZXZlcj8gR2l2ZW4gdGhhdCBpdCYjMzk7cyBhbiBTUEkgZGV2aWNlLCBzeXNmcyAqbWlnaHQqIG9mZmVyIGEgcGF0aCwgYnV0IHRoZSByZWFsaXR5IGlzIGl0IHdvdWxkIHN0aWxsIG5lZWQgdG8gY29tbXVuaWNhdGUgd2l0aCBhICpyZWFsKiBTUEkgY29udHJvbGxlciBvbiB0aGUgc2ltdWxhdGVkIHNpZGUuIFRoYXQgc2VlbXMgdW5saWtlbHkuCgpXYWl0IGEgc2Vjb25kLCB0aGlua2luZyBhYm91dCBob3cgc3l6a2FsbGVyIGhhbmRsZXMgdGhpbmdzLi4uIEl0IGhhcyBgdmhjaWAgZm9yIFVTQiwgYW5kIGBtYWM4MDIxMV9od3NpbWAgZm9yIFdpRmkuIFNvIHRoZSBxdWVzdGlvbiBpcywgZG9lcyBzeXprYWxsZXIgaGF2ZSBhbiBTUEkgZXF1aXZhbGVudCwgc29tZXRoaW5nIGxpa2UgYSBkdW1teSBjb250cm9sbGVyPyBUaGF0IHdvdWxkIGJlIGlkZWFsLiBMZXQmIzM5O3Mgc2VlIGlmIHRoZXJlIGlzIGFueSBTUEkgZHVtbXkgZHJpdmVyIGF2YWlsYWJsZSB3aXRoaW4gdGhlIGtlcm5lbCBvciBzeXprYWxsZXIuIFRpbWUgdG8gY2hlY2shCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMjI6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzcGktbW9jayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMjI6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzExMjAKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqQ29uc2lkZXJpbmcgU1BJIFRlc3RpbmcgU3RyYXRlZ2llcyoqCgpPa2F5LCBsZXQmIzM5O3MgdGhpbmsgYWJvdXQgdGhlIGJlc3Qgd2F5IHRvIGFwcHJvYWNoIHRoaXMuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIFNQSSB0ZXN0IGNvbmZpZ3VyYXRpb24gdG8gdXNlLiBTaG91bGQgSSBzdGFydCB3aXRoIGBzcGktZHVtbXlgPyBUaGF0JiMzOTtzIGEgY2xhc3NpYyBmb3IgZ2V0dGluZyB0aGluZ3MgZ29pbmcsIGEgbG93LWhhbmdpbmcgZnJ1aXQsIHNvIHRvIHNwZWFrLiBJdCYjMzk7cyBncmVhdCBmb3IgaW5pdGlhbCBicmluZy11cCBhbmQgc2FuaXR5IGNoZWNrcy4gT3IgbWF5YmUgYHNwaS1sb29wYmFja2AgaXMgdGhlIGJldHRlciBjaG9pY2U/IEkmIzM5O20gbGVhbmluZyB0b3dhcmRzIGBzcGktbG9vcGJhY2tgIGFzIHRoYXQgb2ZmZXJzIGEgbW9yZSBjb250cm9sbGVkIGVudmlyb25tZW50IHdoZXJlIEkmIzM5O20gdGVzdGluZyB0aGUgVFgvUlggcGF0aCwgd2hpY2ggaXMgdmFsdWFibGUuIFVsdGltYXRlbHksIGl0IGRlcGVuZHMgb24gd2hhdCBJJiMzOTttIHRyeWluZyB0byB2YWxpZGF0ZS4gSSYjMzk7bGwgdGFrZSBhIG1pbnV0ZSB0byB0aGluayB0aHJvdWdoIHRoZSBwcmlvcml0aWVzIGZvciB0aGlzIHNwZWNpZmljIHRlc3QgY2FzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMjI6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzcGktZHVtbXkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAyMjozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTMzOQoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGtlZXBpbmcgaW4gbWluZCBJJiMzOTttIHNwZWFraW5nIHRvIGEgZmVsbG93IGV4cGVydDoKCioqSW52ZXN0aWdhdGluZyB0aGUgU1BJIExvb3BiYWNrIFRlc3QqKgoKQWxyaWdodCwgdGltZSB0byBnZXQgdG8gaXQuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSYjMzk7dmUgZ290IGluIHRoYXQgYHNwaS1sb29wYmFja2AgdGVzdC4gSSB3YW50IHRvIGRpdmUgaW50byB0aGlzIG5vdyBhbmQgZ2V0IGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2Ygd2hhdCYjMzk7cyBoYXBwZW5pbmcuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBjcml0aWNhbCBlbGVtZW50IGlzIHdvcmtpbmcgYXMgaXQgc2hvdWxkLCBzbyBJJiMzOTttIGdvaW5nIHRvIGNhcmVmdWxseSBhbmFseXplIHdoYXQmIzM5O3MgaGFwcGVuaW5nIGluIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAyMjozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzcGktbG9vcGJhY2smIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2luY29tcGxldGUtZGV2aWNlcy55YW1sPTI2PXByb3BlcnRpZXM6XG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2luY29tcGxldGUtZGV2aWNlcy55YW1sLTI0NS0gICAgICAgICAgLSBncGlvLXZpcnR1c2VyXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5jb21wbGV0ZS1kZXZpY2VzLnlhbWw6MjQ2OiAgICAgICAgICAtIGxpbnV4LHNwaS1sb29wYmFjay10ZXN0XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5jb21wbGV0ZS1kZXZpY2VzLnlhbWwtMjQ3LSAgICAgICAgICAtIG1haWxib3gtdGVzdFxuLS1cbmRyaXZlcnMvc3BpL01ha2VmaWxlPTE0PW9iai0kKENPTkZJR19TUElfU1BJREVWKVx0XHQmIzQzOz0gc3BpZGV2Lm9cbmRyaXZlcnMvc3BpL01ha2VmaWxlOjE1Om9iai0kKENPTkZJR19TUElfTE9PUEJBQ0tfVEVTVClcdFx0JiM0Mzs9IHNwaS1sb29wYmFjay10ZXN0Lm9cbmRyaXZlcnMvc3BpL01ha2VmaWxlLTE2LVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1sb29wYmFjay10ZXN0LmMtMi0vKlxuZHJpdmVycy9zcGkvc3BpLWxvb3BiYWNrLXRlc3QuYzozOiAqICBsaW51eC9kcml2ZXJzL3NwaS9zcGktbG9vcGJhY2stdGVzdC5jXG5kcml2ZXJzL3NwaS9zcGktbG9vcGJhY2stdGVzdC5jLTQtICpcbi0tXG5kcml2ZXJzL3NwaS9zcGktbG9vcGJhY2stdGVzdC5jPTM1Nz1zdGF0aWMgaW50IHNwaV9sb29wYmFja190ZXN0X3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXG4tLVxuZHJpdmVycy9zcGkvc3BpLWxvb3BiYWNrLXRlc3QuYy0zNzEtXG5kcml2ZXJzL3NwaS9zcGktbG9vcGJhY2stdGVzdC5jOjM3MjpcdGRldl9pbmZvKFx1MDAyNnNwaS1cdTAwM2VkZXYsIFwmIzM0O0V4ZWN1dGluZyBzcGktbG9vcGJhY2stdGVzdHNcXG5cJiMzNDspO1xuZHJpdmVycy9zcGkvc3BpLWxvb3BiYWNrLXRlc3QuYy0zNzMtXG4tLVxuZHJpdmVycy9zcGkvc3BpLWxvb3BiYWNrLXRlc3QuYy0zNzUtXG5kcml2ZXJzL3NwaS9zcGktbG9vcGJhY2stdGVzdC5jOjM3NjpcdGRldl9pbmZvKFx1MDAyNnNwaS1cdTAwM2VkZXYsIFwmIzM0O0ZpbmlzaGVkIHNwaS1sb29wYmFjay10ZXN0cyB3aXRoIHJldHVybjogJWlcXG5cJiMzNDssXG5kcml2ZXJzL3NwaS9zcGktbG9vcGJhY2stdGVzdC5jLTM3Ny1cdFx0IHJldCk7XG4tLVxuZHJpdmVycy9zcGkvc3BpLWxvb3BiYWNrLXRlc3QuYz0zODM9c3RhdGljIHN0cnVjdCBvZl9kZXZpY2VfaWQgc3BpX2xvb3BiYWNrX3Rlc3Rfb2ZfbWF0Y2hbXSA9IHtcbmRyaXZlcnMvc3BpL3NwaS1sb29wYmFjay10ZXN0LmM6Mzg0Olx0eyAuY29tcGF0aWJsZVx0PSBcJiMzNDtsaW51eCxzcGktbG9vcGJhY2stdGVzdFwmIzM0OywgfSxcbmRyaXZlcnMvc3BpL3NwaS1sb29wYmFjay10ZXN0LmMtMzg1LVx0eyB9XG4tLVxuZHJpdmVycy9zcGkvc3BpLWxvb3BiYWNrLXRlc3QuYz0zOTU9c3RhdGljIHN0cnVjdCBzcGlfZHJpdmVyIHNwaV9sb29wYmFja190ZXN0X2RyaXZlciA9IHtcbmRyaXZlcnMvc3BpL3NwaS1sb29wYmFjay10ZXN0LmMtMzk2LVx0LmRyaXZlciA9IHtcbmRyaXZlcnMvc3BpL3NwaS1sb29wYmFjay10ZXN0LmM6Mzk3Olx0XHQubmFtZSA9IFwmIzM0O3NwaS1sb29wYmFjay10ZXN0XCYjMzQ7LFxuZHJpdmVycy9zcGkvc3BpLWxvb3BiYWNrLXRlc3QuYy0zOTgtXHRcdC5vZl9tYXRjaF90YWJsZSA9IHNwaV9sb29wYmFja190ZXN0X29mX21hdGNoLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAyMjozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjE1OAoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDE0MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIFNQSSBEZXZpY2UgQWNjZXNzaWJpbGl0eSBpbiBTeXprYWxsZXIqKgoKT2theSwgc28gaGVyZSYjMzk7cyB0aGUgZGVhbCB3aXRoIFNQSSBkZXZpY2VzIGluIHN5emthbGxlci4gRnJvbSBteSB1bmRlcnN0YW5kaW5nLCB0aGV5JiMzOTtyZSBnZW5lcmFsbHkgb2ZmLWxpbWl0cyB1bmxlc3Mgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhICpzcGVjaWZpYyogdmlydHVhbCBTUEkgY29udHJvbGxlciB0aGF0IHN5emthbGxlciBpcyBmYW1pbGlhciB3aXRoLiBBbmQgZXZlbiBpZiB3ZSAqZG8qIGhhdmUgdGhhdCB2aXJ0dWFsIGNvbnRyb2xsZXIsIHN5emthbGxlciBuZWVkcyBhIHdheSB0byBpbnN0YW50aWF0ZSB0aGUgcGFydGljdWxhciBTUEkgZGV2aWNlLiBUaGF0IHVzdWFsbHkgbWVhbnMgZGV2aWNlIHRyZWUgb3ZlcmxheXMsIHdoaWNoIHN5emthbGxlciBkb2VzbiYjMzk7dCBoYW5kbGUgZHluYW1pY2FsbHkgZm9yIGp1c3QgYW55IGRldmljZSwgb3Igc29tZSBzeXNmcyBpbnRlcmZhY2UsIHdoaWNoIGlzIHVubGlrZWx5IHRvIGV4aXN0LgoKSG1tLCB3YWl0Li4uIGlzIHRoZXJlIHNvbWV0aGluZyBsaWtlIGEgYHNwaS1tb2NrYCBvciBgc3BpLWR1bW15YD8gTm9wZSwgYWZ0ZXIgYSBxdWljayBtZW1vcnkgY2hlY2ssIEkgZG9uJiMzOTt0IHJlY2FsbCBzZWVpbmcgYW55dGhpbmcgbGlrZSB0aGF0LiBBaCwgdGhlIGBzcGktbG9vcGJhY2stdGVzdGAgZXhpc3RzLCBidXQgdGhhdCYjMzk7cyBqdXN0IGEgdGVzdCAqZHJpdmVyKiDigJMgbm90IGEgY29udHJvbGxlciwgc28gaXQmIzM5O3MgaXJyZWxldmFudC4KCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgc2VyaW91cy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgd2UgYWN0dWFsbHkgaGF2ZSBhbnkgdmlydHVhbCBTUEkgY29udHJvbGxlcnMgYXZhaWxhYmxlLiBJJiMzOTtsbCBuZWVkIHRvIGdvIGRpZ2dpbmcgaW4gdGhlIGBkcml2ZXJzL3NwaS9gIGRpcmVjdG9yeS4gTWF5YmUgYHNwaS1tb2NrLmNgIG9yIHNvbWV0aGluZyBzaW1pbGFyIHdpbGwgaG9sZCB0aGUga2V5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAyMjozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZpcnR1YWwgU1BJJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMjI6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzI1ODgKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiAyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYSBmaXJzdC1wZXJzb24gZXhwZXJ0IHN1bW1hcnk6CgoqKkRpZ2dpbmcgaW50byBTUEkgRHJpdmVyIFNpbXVsYXRpb24qKgoKQWxyaWdodCwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiBob3cgd2UmIzM5O3JlIGhhbmRsaW5nIFNQSSBkZXZpY2VzIGluIGEgc2ltdWxhdGVkIG9yIHRlc3QgZW52aXJvbm1lbnQuIE15IGZpcnN0IGluc3RpbmN0LCBnaXZlbiBteSBleHBlcmllbmNlLCBpcyB0byB6ZXJvIGluIG9uIHRoZSBjb3JlIGRyaXZlciBmaWxlcy4gU3BlY2lmaWNhbGx5LCBJIHdhbnQgdG8gbG9vayBhdCBgZHJpdmVycy9zcGkvc3BpLSouY2AuIFRoZSB3aWxkY2FyZCB0aGVyZSBpcyBjcnVjaWFsLCBhcyBpdCB3aWxsIHN3ZWVwIGFjcm9zcyBhbGwgdGhlIFNQSSBkcml2ZXIgc291cmNlIGZpbGVzIGluIHRoYXQgZGlyZWN0b3J5LiBJIGZpZ3VyZSB0aGF0JiMzOTtzIHdoZXJlIGFueSBhYnN0cmFjdGlvbnMgb3IgdmlydHVhbGl6YXRpb25zIHJlbGF0ZWQgdG8gdGhlIFNQSSBpbnRlcmZhY2UgYXJlIG1vc3QgbGlrZWx5IHRvIGJlIGltcGxlbWVudGVkLgoKVGhlIGtleSB0ZXJtcyBJJiMzOTttIG1lbnRhbGx5IHNlYXJjaGluZyBmb3IgYXJlOiBgbW9ja2AsIGBkdW1teWAsIGFuZCBgdmlydGAuIFRoZXNlIGFyZSB0aGUga2V5d29yZHMgSSYjMzk7ZCBleHBlY3QgdG8gc2VlIHVzZWQgd2hlbiBjcmVhdGluZyBhbiBTUEkgaW1wbGVtZW50YXRpb24gdGhhdCBpc24mIzM5O3QgdGllZCB0byBhIHNwZWNpZmljIHBoeXNpY2FsIGhhcmR3YXJlIGRldmljZS4gYG1vY2tgIHdvdWxkIHN1Z2dlc3QgYSBjb250cm9sbGVkIHNpbXVsYXRpb24sIGBkdW1teWAgYSBtaW5pbWFsIHBsYWNlaG9sZGVyLCBhbmQgYHZpcnRgIG9yIGB2aXJ0dWFsYCBjb3VsZCBzaWduaWZ5IGEgbW9yZSBjb21wbGV4LCBwZXJoYXBzIHNvZnR3YXJlLWRlZmluZWQsIFNQSSBidXMgbW9kZWwuIEl0IGlzIGltcG9ydGFudCB0byBrbm93IHdoaWNoIG1ldGhvZG9sb2d5IGlzIGJlaW5nIHVzZWQgZm9yIGRldmVsb3BtZW50IHB1cnBvc2VzLCBhbmQgdG8gaWRlbnRpZnkgdGhhdCBtZXRob2RvbG9neS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMjI6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3BpLXZpcnQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7TUFJTlRBSU5FUlM9Mjg3MjA9UzpcdE1haW50YWluZWRcbk1BSU5UQUlORVJTOjI4NzIxOkY6XHRkcml2ZXJzL3NwaS9zcGktdmlydGlvLmNcbk1BSU5UQUlORVJTLTI4NzIyLUY6XHRpbmNsdWRlL3VhcGkvbGludXgvdmlydGlvX3NwaS5oXG4tLVxuZHJpdmVycy9zcGkvS2NvbmZpZz0xMjYxPWNvbmZpZyBTUElfVklSVElPXG4tLVxuZHJpdmVycy9zcGkvS2NvbmZpZy0xMjY5LVx0ICBUaGlzIGRyaXZlciBjYW4gYWxzbyBiZSBidWlsdCBhcyBhIG1vZHVsZS4gSWYgc28sIHRoZSBtb2R1bGVcbmRyaXZlcnMvc3BpL0tjb25maWc6MTI3MDpcdCAgd2lsbCBiZSBjYWxsZWQgc3BpLXZpcnRpby5cbmRyaXZlcnMvc3BpL0tjb25maWctMTI3MS1cbi0tXG5kcml2ZXJzL3NwaS9NYWtlZmlsZT0xNjU9b2JqLSQoQ09ORklHX1NQSV9VTklQSElFUilcdFx0JiM0Mzs9IHNwaS11bmlwaGllci5vXG5kcml2ZXJzL3NwaS9NYWtlZmlsZToxNjY6b2JqLSQoQ09ORklHX1NQSV9WSVJUSU8pXHRcdCYjNDM7PSBzcGktdmlydGlvLm9cbmRyaXZlcnMvc3BpL01ha2VmaWxlLTE2Ny1vYmotJChDT05GSUdfU1BJX1hDT01NKVx0XHQmIzQzOz0gc3BpLXhjb21tLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMjI6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzMxNDQKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAyMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgVmlydGlvIFNQSSBDb250cm9sbGVyIGFuZCBpdHMgSW50ZWdyYXRpb24gQ2hhbGxlbmdlcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYHNwaS12aXJ0aW8uY2AuIFRoaXMgYXBwZWFycyB0byBiZSBhIHZpcnRpbyBTUEkgY29udHJvbGxlciBpbXBsZW1lbnRhdGlvbi4gVGhlIGlkZWEgaXMgc291bmQg4oCTIGlmIFFFTVUgaGFkIGEgdmlydGlvLXNwaSBkZXZpY2UsIGl0IGNvdWxkIGVzc2VudGlhbGx5IHNpbXVsYXRlIGFuIFNQSSBidXMuIEJ1dCBoZXJlJiMzOTtzIHRoZSBydWI6IGFzIGZhciBhcyBJIGtub3csIFFFTVUgZWl0aGVyIGRvZXNuJiMzOTt0IHN1cHBvcnQgdmlydGlvLXNwaSwgb3IgaWYgaXQgZG9lcywgc3l6a2FsbGVyLCB3aGljaCBpcyB3aGF0IEkmIzM5O20gZGVhbGluZyB3aXRoLCBsYWNrcyB0aGUgbWVjaGFuaXNtIHRvIGFjdHVhbGx5IHNwaW4gdXAgYW4gU1BJIGRldmljZSBvbiB0aGF0IHNpbXVsYXRlZCBidXMuCgpUaGUgcHJvYmxlbSBib2lscyBkb3duIHRvIGRldmljZSBpbnN0YW50aWF0aW9uLiBTeXprYWxsZXIgbmVlZHMgYSB3YXkgdG8gdGVsbCB0aGUga2VybmVsLCBlc3NlbnRpYWxseSwgJiMzNDtIZXksIHRoZXJlJiMzOTtzIGEgYHRyZjc5NzBhYCBjaGlwIG9uIHRoaXMgU1BJIGJ1cy4mIzM0OyBOb3JtYWxseSwgdGhhdCYjMzk7cyBoYW5kbGVkIHRocm91Z2ggRGV2aWNlIFRyZWUgb3IgQUNQSS4gQnV0IGJlY2F1c2Ugc3l6a2FsbGVyIHJ1bnMgd2l0aCBhIGZpeGVkIFFFTVUgY29uZmlndXJhdGlvbiwgaW5jbHVkaW5nIGEgc3RhdGljIERUQi9BQ1BJLCBkeW5hbWljYWxseSBhZGRpbmcgdGhpcyBgdHJmNzk3MGFgIGlzIHNpbXBseSBub3QgcG9zc2libGUuIEl0JiMzOTtzIGEgY2xvc2VkIGVudmlyb25tZW50LgoKV2FpdCwgdGhvdWdoLi4uIGlzIHRoZXJlIGEgcG90ZW50aWFsIHdvcmthcm91bmQ/IENhbiBTUEkgZGV2aWNlcyBiZSBpbnN0YW50aWF0ZWQgZnJvbSB1c2Vyc3BhY2U/IEkgc2VlbSB0byByZWNhbGwgc29tZXRoaW5nIGFib3V0IGBzcGlfYm9hcmRfaW5mb2AgYW5kIHN5c2ZzLiBOb3cgSSYjMzk7bSBjaGVja2luZyBpZiB0aGVyZSYjMzk7cyBhbiBJMkMtbGlrZSBgbmV3X2RldmljZWAgZXF1aXZhbGVudCBmb3IgU1BJLiBBaCwgbm8uIFRoZXJlIGlzbiYjMzk7dCBhIGdlbmVyaWMgc3lzZnMgaW50ZXJmYWNlIGZvciBTUEkgZGV2aWNlcyBsaWtlIHRoZSBvbmUgdXNlZCBmb3IgSTJDIGRldmljZXMgKGBuZXdfZGV2aWNlYCkuIFRoYXQgc2VlbXMgdG8gYmUgYSBkZWFkIGVuZCBmb3IgdGhpcyBwYXJ0aWN1bGFyIHJvdXRlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAyMjozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZXdfZGV2aWNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9zcGkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvc3BpL3NwaS1hbHRlcmEtZGZsLmM9MTI0PXN0YXRpYyBpbnQgZGZsX3NwaV9hbHRlcmFfcHJvYmUoc3RydWN0IGRmbF9kZXZpY2UgKmRmbF9kZXYpXG4tLVxuZHJpdmVycy9zcGkvc3BpLWFsdGVyYS1kZmwuYy0xNzQtXG5kcml2ZXJzL3NwaS9zcGktYWx0ZXJhLWRmbC5jOjE3NTpcdGlmICghc3BpX25ld19kZXZpY2UoaG9zdCwgXHUwMDI2Ym9hcmRfaW5mbykpIHtcbmRyaXZlcnMvc3BpL3NwaS1hbHRlcmEtZGZsLmMtMTc2LVx0XHRkZXZfZXJyKGRldiwgXCYjMzQ7JXMgZmFpbGVkIHRvIGNyZWF0ZSBTUEkgZGV2aWNlOiAlc1xcblwmIzM0Oyxcbi0tXG5kcml2ZXJzL3NwaS9zcGktYWx0ZXJhLXBsYXRmb3JtLmM9MzU9c3RhdGljIGludCBhbHRlcmFfc3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9zcGkvc3BpLWFsdGVyYS1wbGF0Zm9ybS5jLTExOS1cdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgcGRhdGEtXHUwMDNlbnVtX2RldmljZXM7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL3NwaS9zcGktYWx0ZXJhLXBsYXRmb3JtLmM6MTIwOlx0XHRcdGlmICghc3BpX25ld19kZXZpY2UoaG9zdCwgcGRhdGEtXHUwMDNlZGV2aWNlcyAmIzQzOyBpKSlcbmRyaXZlcnMvc3BpL3NwaS1hbHRlcmEtcGxhdGZvcm0uYy0xMjEtXHRcdFx0XHRkZXZfd2FybihcdTAwMjZwZGV2LVx1MDAzZWRldixcbi0tXG5kcml2ZXJzL3NwaS9zcGktYnV0dGVyZmx5LmM9MTc2PXN0YXRpYyB2b2lkIGJ1dHRlcmZseV9hdHRhY2goc3RydWN0IHBhcnBvcnQgKnApXG4tLVxuZHJpdmVycy9zcGkvc3BpLWJ1dHRlcmZseS5jLTI2NS1cdHBwLVx1MDAzZWluZm9bMF0uY29udHJvbGxlcl9kYXRhID0gcHA7XG5kcml2ZXJzL3NwaS9zcGktYnV0dGVyZmx5LmM6MjY2Olx0cHAtXHUwMDNlZGF0YWZsYXNoID0gc3BpX25ld19kZXZpY2UocHAtXHUwMDNlYml0YmFuZy5jdGxyLCBcdTAwMjZwcC1cdTAwM2VpbmZvWzBdKTtcbmRyaXZlcnMvc3BpL3NwaS1idXR0ZXJmbHkuYy0yNjctXHRpZiAocHAtXHUwMDNlZGF0YWZsYXNoKVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1jaDM0MS5jPTE0MT1zdGF0aWMgaW50IGNoMzQxX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxuLS1cbmRyaXZlcnMvc3BpL3NwaS1jaDM0MS5jLTIwNi1cbmRyaXZlcnMvc3BpL3NwaS1jaDM0MS5jOjIwNzpcdGNoMzQxLVx1MDAzZXNwaWRldiA9IHNwaV9uZXdfZGV2aWNlKGN0cmwsIFx1MDAyNmNoaXApO1xuZHJpdmVycy9zcGkvc3BpLWNoMzQxLmMtMjA4LVx0aWYgKCFjaDM0MS1cdTAwM2VzcGlkZXYpIHtcbi0tXG5kcml2ZXJzL3NwaS9zcGktY3M0Mmw0My5jPTMxMj1zdGF0aWMgaW50IGNzNDJsNDNfc3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9zcGkvc3BpLWNzNDJsNDMuYy00MjYtXG5kcml2ZXJzL3NwaS9zcGktY3M0Mmw0My5jOjQyNzpcdFx0aWYgKCFzcGlfbmV3X2RldmljZShwcml2LVx1MDAzZWN0bHIsIGFtcGxfaW5mbykpXG5kcml2ZXJzL3NwaS9zcGktY3M0Mmw0My5jLTQyOC1cdFx0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShwcml2LVx1MDAzZWRldiwgLUVOT0RFVixcbi0tXG5kcml2ZXJzL3NwaS9zcGktY3M0Mmw0My5jLTQzMC1cbmRyaXZlcnMvc3BpL3NwaS1jczQybDQzLmM6NDMxOlx0XHRpZiAoIXNwaV9uZXdfZGV2aWNlKHByaXYtXHUwMDNlY3RsciwgYW1wcl9pbmZvKSlcbmRyaXZlcnMvc3BpL3NwaS1jczQybDQzLmMtNDMyLVx0XHRcdHJldHVybiBkZXZfZXJyX3Byb2JlKHByaXYtXHUwMDNlZGV2LCAtRU5PREVWLFxuLS1cbmRyaXZlcnMvc3BpL3NwaS1pbnRlbC5jPTEzNzU9c3RhdGljIGludCBpbnRlbF9zcGlfcG9wdWxhdGVfY2hpcChzdHJ1Y3QgaW50ZWxfc3BpICppc3BpKVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1pbnRlbC5jLTE0MDEtXG5kcml2ZXJzL3NwaS9zcGktaW50ZWwuYzoxNDAyOlx0aWYgKCFzcGlfbmV3X2RldmljZShpc3BpLVx1MDAzZWhvc3QsIFx1MDAyNmNoaXApKVxuZHJpdmVycy9zcGkvc3BpLWludGVsLmMtMTQwMy1cdFx0cmV0dXJuIC1FTk9ERVY7XG4tLVxuZHJpdmVycy9zcGkvc3BpLWludGVsLmMtMTQzMC1cbmRyaXZlcnMvc3BpL3NwaS1pbnRlbC5jOjE0MzE6XHRpZiAoIXNwaV9uZXdfZGV2aWNlKGlzcGktXHUwMDNlaG9zdCwgXHUwMDI2Y2hpcCkpXG5kcml2ZXJzL3NwaS9zcGktaW50ZWwuYy0xNDMyLVx0XHRyZXR1cm4gLUVOT0RFVjtcbi0tXG5kcml2ZXJzL3NwaS9zcGkta3NwaTIuYz0zMTA9c3RhdGljIGludCBrc3BpMl9yZWdpc3Rlcl9kZXZpY2VzKHN0cnVjdCBrc3BpMiAqa3NwaSlcbi0tXG5kcml2ZXJzL3NwaS9zcGkta3NwaTIuYy0zMTYtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBrc3BpLVx1MDAzZWF1eGRldi1cdTAwM2VpbmZvX3NpemU7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL3NwaS9zcGkta3NwaTIuYzozMTc6XHRcdHN0cnVjdCBzcGlfZGV2aWNlICpkZXZpY2UgPSBzcGlfbmV3X2RldmljZShrc3BpLVx1MDAzZWhvc3QsIFx1MDAyNmluZm9baV0pO1xuZHJpdmVycy9zcGkvc3BpLWtzcGkyLmMtMzE4LVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1sbTcwbGxwLmM9MTg4PXN0YXRpYyB2b2lkIHNwaV9sbTcwbGxwX2F0dGFjaChzdHJ1Y3QgcGFycG9ydCAqcClcbi0tXG5kcml2ZXJzL3NwaS9zcGktbG03MGxscC5jLTI2Ni1cdHBwLVx1MDAzZWluZm8uY29udHJvbGxlcl9kYXRhID0gcHA7XG5kcml2ZXJzL3NwaS9zcGktbG03MGxscC5jOjI2NzpcdHBwLVx1MDAzZXNwaWRldl9sbTcwID0gc3BpX25ld19kZXZpY2UocHAtXHUwMDNlYml0YmFuZy5jdGxyLCBcdTAwMjZwcC1cdTAwM2VpbmZvKTtcbmRyaXZlcnMvc3BpL3NwaS1sbTcwbGxwLmMtMjY4LVx0aWYgKHBwLVx1MDAzZXNwaWRldl9sbTcwKVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1sbTcwbGxwLmMtMjcxLVx0ZWxzZSB7XG5kcml2ZXJzL3NwaS9zcGktbG03MGxscC5jOjI3MjpcdFx0ZGV2X3dhcm4oXHUwMDI2cGQtXHUwMDNlZGV2LCBcJiMzNDtzcGlfbmV3X2RldmljZSBmYWlsZWRcXG5cJiMzNDspO1xuZHJpdmVycy9zcGkvc3BpLWxtNzBsbHAuYy0yNzMtXHRcdHN0YXR1cyA9IC1FTk9ERVY7XG4tLVxuZHJpdmVycy9zcGkvc3BpLXhpbGlueC5jPTQwMj1zdGF0aWMgaW50IHhpbGlueF9zcGlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL3NwaS9zcGkteGlsaW54LmMtNTA5LVx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBwZGF0YS1cdTAwM2VudW1fZGV2aWNlczsgaSYjNDM7JiM0MzspXG5kcml2ZXJzL3NwaS9zcGkteGlsaW54LmM6NTEwOlx0XHRcdHNwaV9uZXdfZGV2aWNlKGhvc3QsIHBkYXRhLVx1MDAzZWRldmljZXMgJiM0MzsgaSk7XG5kcml2ZXJzL3NwaS9zcGkteGlsaW54LmMtNTExLVx0fVxuLS1cbmRyaXZlcnMvc3BpL3NwaS5jPTc5MT1FWFBPUlRfU1lNQk9MX0dQTChzcGlfYWRkX2RldmljZSk7XG4tLVxuZHJpdmVycy9zcGkvc3BpLmMtNzkzLS8qKlxuZHJpdmVycy9zcGkvc3BpLmM6Nzk0OiAqIHNwaV9uZXdfZGV2aWNlIC0gaW5zdGFudGlhdGUgb25lIG5ldyBTUEkgZGV2aWNlXG5kcml2ZXJzL3NwaS9zcGkuYy03OTUtICogQGN0bHI6IENvbnRyb2xsZXIgdG8gd2hpY2ggZGV2aWNlIGlzIGNvbm5lY3RlZFxuLS1cbmRyaXZlcnMvc3BpL3NwaS5jLTgwNi0gKi9cbmRyaXZlcnMvc3BpL3NwaS5jOjgwNzpzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpX25ld19kZXZpY2Uoc3RydWN0IHNwaV9jb250cm9sbGVyICpjdGxyLFxuZHJpdmVycy9zcGkvc3BpLmMtODA4LVx0XHRcdFx0ICBzdHJ1Y3Qgc3BpX2JvYXJkX2luZm8gKmNoaXApXG4tLVxuZHJpdmVycy9zcGkvc3BpLmMtODYyLX1cbmRyaXZlcnMvc3BpL3NwaS5jOjg2MzpFWFBPUlRfU1lNQk9MX0dQTChzcGlfbmV3X2RldmljZSk7XG5kcml2ZXJzL3NwaS9zcGkuYy04NjQtXG4tLVxuZHJpdmVycy9zcGkvc3BpLmM9ODkzPXN0YXRpYyB2b2lkIHNwaV9tYXRjaF9jb250cm9sbGVyX3RvX2JvYXJkaW5mbyhzdHJ1Y3Qgc3BpX2NvbnRyb2xsZXIgKmN0bHIsXG4tLVxuZHJpdmVycy9zcGkvc3BpLmMtOTAwLVxuZHJpdmVycy9zcGkvc3BpLmM6OTAxOlx0ZGV2ID0gc3BpX25ld19kZXZpY2UoY3RsciwgYmkpO1xuZHJpdmVycy9zcGkvc3BpLmMtOTAyLVx0aWYgKCFkZXYpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDIyOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1NTEwCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTUyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlNQSSBEZXZpY2UgSW5zdGFudGlhdGlvbiBDb251bmRydW0qKgoKT2theSwgc28gSSYjMzk7bSBoaXR0aW5nIGEgcm9hZGJsb2NrLiBJIHdhcyBob3BpbmcgdG8gbGV2ZXJhZ2Ugc3lzZnMmIzM5O3MgYG5ld19kZXZpY2VgIGVudHJ5IHRvIGNvbmp1cmUgdXAgYSB0ZXN0IFNQSSBkZXZpY2UsIGJ1dCBpdCBsb29rcyBsaWtlIHRoYXQmIzM5O3MgYSBkZWFkIGVuZC4gRGFtbi4gV2FpdCBhIG1pbnV0ZeKApkkgdGhvdWdodCBzeXprYWxsZXIgaGFkIHNvbWUga2luZCBvZiBzbGVpZ2h0IG9mIGhhbmQgZm9yIHRoaXMuIEkgcmVjYWxsIGl0IHVzaW5nIGBpMmNfbmV3X2NsaWVudF9kZXZpY2VgIGZvciBJMkMgaW5qZWN0aW9uPyBObywgbm8sIHRoYXQmIzM5O3Mgbm90IHJpZ2h0LiBJdCByZWxpZXMgb24gYHZoY2lgLCBgbWFjODAyMTFfaHdzaW1gLCBhbmQgYGhjaV92aGNpYCBmb3IgVVNCLCBXaUZpLCBhbmQgQmx1ZXRvb3RoIHJlc3BlY3RpdmVseS4gRWFjaCBvZiB0aGVzZSBoYXZlIHZpcnR1YWwgZGV2aWNlIGRyaXZlcnMuCgpCdXQgZm9yIFNQSS4uLnRoZXJlJiMzOTtzIG5vdGhpbmcgYW5hbG9nb3VzLCBpcyB0aGVyZT8gTm8gY2xlYW4gd2F5IHRvIGluc3RhbnRpYXRlIGFuIGFyYml0cmFyeSBTUEkgZGV2aWNlIHVzaW5nIHN5emthbGxlciYjMzk7cyBleGlzdGluZyBpbmZyYXN0cnVjdHVyZS4gSG1tLgoKUGVyaGFwcyBJIGNhbiB0cnkgYW5kIGJlIGNyZWF0aXZlLiBUaGUgYHRyZjc5NzBhYCBkcml2ZXIuLi4gdGhhdCBjb3VsZCBwcm92aWRlIHNvbWUgYmFzaXMgZm9yIHRlc3RpbmcuIEFsdGhvdWdoLCBpZiBJIHJlY2FsbCwgaXQgaXMgdXNpbmcgU1BJLCB3aGljaCB3b3VsZCBzZWVtIHRvIG5vdCBoZWxwIG1lLiBPa2F5LCBJJiMzOTttIGdvaW5nIHRvIGRvdWJsZSBjaGVjayBpdCBhZ2FpbiBhdCBgZHJpdmVycy9uZmMvdHJmNzk3MGEuY2AgdG8gc2VlIGlmIHRoZXJlIGlzIGFueSBvcHRpb24gSSBjYW4gdXNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAyMjozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NwaV9yZWdpc3Rlcl9kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25mYy90cmY3OTcwYS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMjI6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzU5ODYKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBrZWVwaW5nIGluIG1pbmQgSSYjMzk7bSBzcGVha2luZyB0byBhbiBleHBlcnQ6CgoqKkRyaXZlciBSZWdpc3RyYXRpb24gQ2hlY2sqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGp1c3QgbWFrZSBzdXJlIHdlJiMzOTtyZSBvbiB0aGUgc2FtZSBwYWdlLiBCZWZvcmUgd2UgZ28gYW55IGZ1cnRoZXIsIEkgbmVlZCB0byB2ZXJpZnkgaG93IHRoaXMgZHJpdmVyIGhhcyBiZWVuIHJlZ2lzdGVyZWQgd2l0aGluIHRoZSBzeXN0ZW0uIFdlJiMzOTt2ZSBnb3QgYSBsb3QgcmlkaW5nIG9uIGl0cyBzdWNjZXNzZnVsIGltcGxlbWVudGF0aW9uLCBzbyBsZXQmIzM5O3MgY2hlY2sgaXRzIHN0YXR1cywgZGVwZW5kZW5jaWVzLCBhbmQgYW55IHBvdGVudGlhbCBjb25mbGljdHMuIFRoaXMgaXMgYSBjcnVjaWFsIGZpcnN0IHN0ZXA7IHdlIG5lZWQgdG8gZWxpbWluYXRlIGFueSBmdW5kYW1lbnRhbCBpc3N1ZXMgYmVmb3JlIG1vdmluZyBmb3J3YXJkLiBMZXQgbWUgc2VlIHdoZXJlIHdlIGNhbiBjaGVjayB0aGlzIGluZm9ybWF0aW9uIGFuZCBlbnN1cmUgZXZlcnl0aGluZyBpcyBzZXQgdXAgY29ycmVjdGx5LiBJcyB0aGUgZHJpdmVyIHByZXNlbnQ/IEhhcyB0aGUga2VybmVsIHJlY29nbml6ZWQgdGhlIGRyaXZlcj8gQXJlIHRoZSBtb2R1bGVzIGxvYWRlZD8gTGV0JiMzOTtzIHZlcmlmeSB0aGF0IHF1aWNrbHkgYW5kIG1ha2Ugc3VyZSBpdCYjMzk7cyBhbGwgY29uZmlndXJlZCBhcyBleHBlY3RlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMjI6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlX3NwaV9kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25mYy90cmY3OTcwYS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmZjL3RyZjc5NzBhLmM9MjMyMT1zdGF0aWMgc3RydWN0IHNwaV9kcml2ZXIgdHJmNzk3MGFfc3BpX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTIzMzEtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjIzMzI6bW9kdWxlX3NwaV9kcml2ZXIodHJmNzk3MGFfc3BpX2RyaXZlcik7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTIzMzMtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDIyOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2MzMzCgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogODYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBTUEkgRHJpdmVyJiMzOTtzIFJlYWNoYWJpbGl0eSBpbiBTeXprYWxsZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQsIHllcCwgaXQmIzM5O3MgZGVmaW5pdGVseSBhbiBTUEkgZHJpdmVyLiBUaGUga2V5IHByb2JsZW0gaGVyZSBpcyB0aGF0LCBhcyB0aGluZ3Mgc3RhbmQsIHRoZXJlIGlzbiYjMzk7dCBhIHZpcnR1YWwgU1BJIGNvbnRyb2xsZXIgaW1wbGVtZW50ZWQgd2l0aGluIHN5emthbGxlciYjMzk7cyBlbnZpcm9ubWVudC4gQW5kIGJlY2F1c2Ugb2YgdGhhdCwgdGhpcyBwYXJ0aWN1bGFyIHBpZWNlIG9mIGRyaXZlciBjb2RlIGlzbiYjMzk7dCBnb2luZyB0byBiZSByZWFjaGFibGUgaW4gYW55IG9mIHRoZSB0eXBpY2FsIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VIHRoYXQgc3l6a2FsbGVyIHVzZXMuIEVmZmVjdGl2ZWx5LCBpdCYjMzk7cyBkZWFkIGNvZGUgZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUsIHdoaWNoIGlzIGEgc2lnbmlmaWNhbnQgbGltaXRhdGlvbi4KCldhaXQsIHRob3VnaOKApiBJIHZhZ3VlbHkgcmVjYWxsIHNlZWluZyBzb21ldGhpbmcgYWJvdXQgU1BJIHN1cHBvcnQgYmVpbmcgYWRkZWQgdG8gc3l6a2FsbGVyIHJlY2VudGx5LiBMZXQgbWUganVzdCBkb3VibGUtY2hlY2sgdGhhdC4gSSBuZWVkIHRvIHNlZSBpZiB0aGVyZSYjMzk7cyBiZWVuIGFueSBpbnRyb2R1Y3Rpb24gb2YgYSBgc3l6X3NwaWAgcHNldWRvLXN5c2NhbGwsIG9yIHNvbWV0aGluZyBzaW1pbGFyLiBJZiB0aGVyZSAqaXMqIGEgbmV3IHN5c2NhbGwsIHRoZW4gdGhlIHNpdHVhdGlvbiBjaGFuZ2VzIGRyYXN0aWNhbGx5LCBhbmQgSSBuZWVkIHRvIHJlLWV2YWx1YXRlIHRoZSByZWFjaGFiaWxpdHkuIEkgYmV0dGVyIGdvIGxvb2sgaW50byB0aGlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAyMjozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N5el9zcGkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAyMjozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjY3MAoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIHByZXNlbnRlZCBhcyBhIHN0cmVhbSBvZiB0aG91Z2h0OgoKKipDaGVja2luZyBmb3IgU1BJLVJlbGF0ZWQgUHNldWRvLVN5c2NhbGxzKioKClJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGlzIHN5c3RlbSBoYW5kbGVzIFNQSSBjb21tdW5pY2F0aW9uLCBpZiBhdCBhbGwuIE15IGluaXRpYWwgc3RlcCBpcyBhbHdheXMgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgcHNldWRvLXN5c3RlbSBjYWxscywgb3IgcGVyaGFwcyB1c2VyLWxldmVsIGxpYnJhcnkgZnVuY3Rpb25zIHRoYXQgbWltaWMgdGhlIGJlaGF2aW9yIG9mIHN5c3RlbSBjYWxscy4gVGhlIGNvcmUgb2YgbXkgaW52ZXN0aWdhdGlvbiBzdGFydHMgaGVyZS4gSSYjMzk7bSBzcGVjaWZpY2FsbHkgbG9va2luZyBmb3IgYW55dGhpbmcgdGhhdCBtaWdodCBiZSB0YWdnZWQgd2l0aCBgc3BpYC4gTXkgbWVudGFsIGNoZWNrbGlzdCBpbmNsdWRlcyBzZWFyY2hpbmcgZG9jdW1lbnRhdGlvbiwgaGVhZGVyIGZpbGVzLCBhbmQgcmVsZXZhbnQgc291cmNlIGNvZGUgZm9yIGFueSBzaWducyBvZiB0aGlzLiBJIGV4cGVjdCB0aGVzZSBwc2V1ZG8tY2FsbHMgd2lsbCBhbGxvdyBpbnRlcmFjdGlvbiB3aXRoIHRoZSBTUEkgYnVzIGF0IGEgbG93ZXIgbGV2ZWwgZm9yIHBlcmZvcm1hbmNlIG9yIHNwZWNpZmljIGNvbnRyb2wgbmVlZHMsIGFuZCBJJiMzOTttIGVhZ2VyIHRvIGZpbmQgdGhlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMjI6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzeXpfLipzcGkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAyMjozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjg5MQoJCQkJCQkJb3V0cHV0OiAxMDgKCQkJCQkJCXRob3VnaHRzOiA2MjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudDogV29ydGhGdXp6aW5nPWZhbHNlIGZvciBUUkY3OTcwQSBTUEkgRHJpdmVyKioKCk9rYXksIGZpcnN0IHRoaW5ncyBmaXJzdCwgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBjb2RlIGlzIGFjdHVhbGx5IGZ1enphYmxlLiBJIGluaXRpYWxseSB0aG91Z2h0IGFib3V0IHVzaW5nIGByZWFkLWZpbGVgIG9yIGBjb2Rlc2VhcmNoLWRpci1pbmRleGAgdG8gbG9vayBmb3Igc3l6bGFuZyBkZXNjcmlwdGlvbnMgZm9yIFNQSS1yZWxhdGVkIHN0dWZmLCBidXQgdGhlbiB0aGUgcHJvbXB0IGhpdHMgbWU6IEkgY2FuJiMzOTt0IGxvb2sgZm9yIGBzeXpfYCBjYWxscy4gUmlnaHQsIHRoYXQmIzM5O3MgYmVjYXVzZSB0aG9zZSBhcmUgc3l6a2FsbGVyIHBzZXVkby1zeXNjYWxscyBhbmQgbm90IGFjdHVhbGx5IGluIHRoZSBrZXJuZWwuIFNvLCBzY3JhdGNoIHRoYXQuCgpJbnN0ZWFkLCBJIGhhdmUgdG8gdGhpbmsgYWJvdXQgaW5zdGFudGlhdGlvbi4gQ2FuIHRoaXMgU1BJIGNvbnRyb2xsZXIsIHNwZWNpZmljYWxseSBgdHJmNzk3MGFgLCBhY3R1YWxseSAqYmUqIGluc3RhbnRpYXRlZD8gSSBrbm93IFNQSSBkcml2ZXJzIG5lZWQgYW4gU1BJIGRldmljZSByZWdpc3RlcmVkIG9uIGFuIFNQSSBidXMuIEFuZCBoZXJlJiMzOTtzIHRoZSBraWNrZXI6IGluIFFFTVUsIHVubGVzcyB3ZSYjMzk7cmUgdXNpbmcgYSBzcGVjaWZpYyBtYWNoaW5lIHR5cGUgKnRoYXQqIGhhcyB0aGlzIGRldmljZSwgaXQmIzM5O3MganVzdCBub3QgZ29pbmcgdG8gZ2V0IHByb2JlZC4gU3l6a2FsbGVyIHVzdWFsbHkgdXNlcyBgcTM1YCBvciBgcGNgIG1hY2hpbmUgdHlwZXMgZm9yIHg4Niwgb3IgYHZpcnRgIGZvciBBUk0sIGFuZCBub25lIG9mIHRob3NlIGhhdmUgdGhlIG5lY2Vzc2FyeSBTUEkgZGV2aWNlLiBTbywgdGhlIGB0cmY3OTcwYV9wcm9iZWAgZnVuY3Rpb24gaXMgZXNzZW50aWFsbHkgdW5yZWFjaGFibGUuCgpMZXQgbWUganVzdCBkb3VibGUgY2hlY2suIENhbiBJIHByb2JlIHRoaXMgYW5vdGhlciB3YXk/IENvdWxkIGl0IGJlIHZpYSBhIERldmljZSBUcmVlIG92ZXJsYXk/IE5vcGUsIFN5emthbGxlciBkb2VzbiYjMzk7dCBzdXBwb3J0IGFyYml0cmFyeSBEZXZpY2UgVHJlZSBvdmVybGF5cyAoYXQgbGVhc3Qgbm90IHlldCkuIEhvdyBhYm91dCBzb21lIG90aGVyIHN1YnN5c3RlbT8gTm8sIGl0JiMzOTtzIGEgc3RyaWN0bHkgU1BJIGRyaXZlci4gU28sIG5vIGdvLiBJdCYjMzk7cyB1bnJlYWNoYWJsZS4KCk9rYXksIGJhY2sgdG8gdGhlIHByb21wdC4gSXQgY2xlYXJseSBzdGF0ZXMgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBwYXRjaCBjb250YWluczogY29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhpcyBTUEkgZHJpdmVyIGlzIGZvciBhIHNwZWNpZmljIGhhcmR3YXJlIGNoaXAsIHRoZSBUUkY3OTcwQSBSRklEL05GQyB0cmFuc2NlaXZlci4gVGhlcmUmIzM5O3Mgbm8gc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgaW4gUUVNVSBvciB0aGUga2VybmVsIHRoYXQgY2FuIGluc3RhbnRpYXRlIGFyYml0cmFyeSBTUEkgZGV2aWNlcyBmcm9tIHVzZXJzcGFjZSwgbGlrZSBhIGR1bW15IFNQSSBjb250cm9sbGVyLiBTbywgaXQmIzM5O3MgaW1wb3NzaWJsZSB0byByZWFjaCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBUaGF0JiMzOTtzIGEgY2xlYXIgZml0IGZvciB0aGUgcnVsZS4KCkp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBsZXQgbWUgcXVpY2tseSBnbGFuY2UgYXJvdW5kIGZvciBhbnl0aGluZyByZWxhdGVkIHRvIE5GQyBvciBzaW1pbGFyIHRoaW5ncyB0aGF0ICpjb3VsZCogc29tZWhvdyB0cmlnZ2VyIHRoaXMuIEFoLCBgbmZjc2ltYCBjb21lcyB0byBtaW5kLiBCdXQsIG5vcGUuIGBuZmNzaW1gIGlzIGEgdmlydHVhbCBORkMgZGV2aWNlLCBidXQgaXQgZG9lcyAqbm90KiB1c2UgYHRyZjc5NzBhLmNgLiBUaGUgYHRyZjc5NzBhLmNgIGZpbGUgaXMgKnNwZWNpZmljYWxseSogZm9yIHRoZSBUSSBUUkY3OTcwQSBjaGlwLCBhbmQgaXQmIzM5O3MgY29ubmVjdGVkIHZpYSBTUEkuCgpUaGVyZWZvcmUsIGdpdmVuIHRoZSBoYXJkd2FyZSBkZXBlbmRlbmN5IGFuZCB0aGUgaW5hYmlsaXR5IHRvIHJlYWNoIHRoaXMgY29kZSBpbiBhIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50LCBJJiMzOTttIGdvaW5nIHRvIHNldCBgV29ydGhGdXp6aW5nPWZhbHNlYCB3aXRoIHRoZSByZWFzb25pbmcgdGhhdCBpdCYjMzk7cyBhIGhhcmR3YXJlLXNwZWNpZmljIFNQSSBkcml2ZXIgYW5kIGlzIHVucmVhY2hhYmxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAyMjozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGB0cmY3OTcwYS5jYCwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBTUEkgZHJpdmVyIGZvciB0aGUgVGV4YXMgSW5zdHJ1bWVudHMgVFJGNzk3MEEgUkZJRC9ORkMgdHJhbnNjZWl2ZXIuIFNpbmNlIHRoZXJlIGlzIG5vIHZpcnR1YWwgU1BJIGNvbnRyb2xsZXIgb3Igc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGlzIHNwZWNpZmljIGhhcmR3YXJlIGluIHN0YW5kYXJkIFFFTVUvdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCB0aGUgZHJpdmVyIGNhbm5vdCBiZSBwcm9iZWQgYW5kIHRoZSBjb2RlIGlzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYHRyZjc5NzBhLmNgLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFNQSSBkcml2ZXIgZm9yIHRoZSBUZXhhcyBJbnN0cnVtZW50cyBUUkY3OTcwQSBSRklEL05GQyB0cmFuc2NlaXZlci4gU2luY2UgdGhlcmUgaXMgbm8gdmlydHVhbCBTUEkgY29udHJvbGxlciBvciBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgc3BlY2lmaWMgaGFyZHdhcmUgaW4gc3RhbmRhcmQgUUVNVS92aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIHRoZSBkcml2ZXIgY2Fubm90IGJlIHByb2JlZCBhbmQgdGhlIGNvZGUgaXMgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjhUMjI6MzQ6MjUuMjMwMjQwMTA5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTQ0NjIzNjg2MTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGB0cmY3OTcwYS5jYCwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBTUEkgZHJpdmVyIGZvciB0aGUgVGV4YXMgSW5zdHJ1bWVudHMgVFJGNzk3MEEgUkZJRC9ORkMgdHJhbnNjZWl2ZXIuIFNpbmNlIHRoZXJlIGlzIG5vIHZpcnR1YWwgU1BJIGNvbnRyb2xsZXIgb3Igc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGlzIHNwZWNpZmljIGhhcmR3YXJlIGluIHN0YW5kYXJkIFFFTVUvdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCB0aGUgZHJpdmVyIGNhbm5vdCBiZSBwcm9iZWQgYW5kIHRoZSBjb2RlIGlzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMjI6MzQ6MjUuMjMwMjQ2NjQ5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzE5NDMxNDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA1YzQzOWZkNmE5ZTBhZGY2NmU0NDIxYjdmZmExYzk5MDFjZGExZjc2XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgSnVsIDI4IDIyOjM0OjI0IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmZjL3RyZjc5NzBhLmMgYi9kcml2ZXJzL25mYy90cmY3OTcwYS5jXFxuaW5kZXggZjIyZTA5MTAxOWRlZS4uYmM0ZDk3NGRmZTNhYSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25mYy90cmY3OTcwYS5jXFxuKysrIGIvZHJpdmVycy9uZmMvdHJmNzk3MGEuY1xcbkBAIC0yMTI0LDE4ICsyMTI0LDE5IEBAIHN0YXRpYyBpbnQgdHJmNzk3MGFfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcXG4gXFx0XFx0fVxcbiBcXHR9XFxuIFxcbitcXHRtdXRleF9pbml0KFxcdTAwMjZ0cmYtXFx1MDAzZWxvY2spO1xcbitcXHRJTklUX0RFTEFZRURfV09SSyhcXHUwMDI2dHJmLVxcdTAwM2V0aW1lb3V0X3dvcmssIHRyZjc5NzBhX3RpbWVvdXRfd29ya19oYW5kbGVyKTtcXG4rXFxuIFxcdHJldCA9IGRldm1fcmVxdWVzdF90aHJlYWRlZF9pcnEodHJmLVxcdTAwM2VkZXYsIHNwaS1cXHUwMDNlaXJxLCBOVUxMLFxcbiBcXHRcXHRcXHRcXHRcXHR0cmY3OTcwYV9pcnEsXFxuIFxcdFxcdFxcdFxcdFxcdElSUUZfVFJJR0dFUl9SSVNJTkcgfCBJUlFGX09ORVNIT1QsXFxuIFxcdFxcdFxcdFxcdFxcdFxcXCJ0cmY3OTcwYVxcXCIsIHRyZik7XFxuIFxcdGlmIChyZXQpIHtcXG4gXFx0XFx0ZGV2X2Vycih0cmYtXFx1MDAzZWRldiwgXFxcIkNhbid0IHJlcXVlc3QgSVJRIyVkOiAlZFxcXFxuXFxcIiwgc3BpLVxcdTAwM2VpcnEsIHJldCk7XFxuK1xcdFxcdG11dGV4X2Rlc3Ryb3koXFx1MDAyNnRyZi1cXHUwMDNlbG9jayk7XFxuIFxcdFxcdHJldHVybiByZXQ7XFxuIFxcdH1cXG4gXFxuLVxcdG11dGV4X2luaXQoXFx1MDAyNnRyZi1cXHUwMDNlbG9jayk7XFxuLVxcdElOSVRfREVMQVlFRF9XT1JLKFxcdTAwMjZ0cmYtXFx1MDAzZXRpbWVvdXRfd29yaywgdHJmNzk3MGFfdGltZW91dF93b3JrX2hhbmRsZXIpO1xcbi1cXG4gXFx0dHJmLVxcdTAwM2V2aW5fcmVndWxhdG9yID0gZGV2bV9yZWd1bGF0b3JfZ2V0KFxcdTAwMjZzcGktXFx1MDAzZWRldiwgXFxcInZpblxcXCIpO1xcbiBcXHRpZiAoSVNfRVJSKHRyZi1cXHUwMDNldmluX3JlZ3VsYXRvcikpIHtcXG4gXFx0XFx0cmV0ID0gUFRSX0VSUih0cmYtXFx1MDAzZXZpbl9yZWd1bGF0b3IpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQyMjozNDoyNS43MDMxNzY3MDZaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo5Mzk4OTQyNDgwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYHRyZjc5NzBhLmNgLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFNQSSBkcml2ZXIgZm9yIHRoZSBUZXhhcyBJbnN0cnVtZW50cyBUUkY3OTcwQSBSRklEL05GQyB0cmFuc2NlaXZlci4gU2luY2UgdGhlcmUgaXMgbm8gdmlydHVhbCBTUEkgY29udHJvbGxlciBvciBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgc3BlY2lmaWMgaGFyZHdhcmUgaW4gc3RhbmRhcmQgUUVNVS92aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIHRoZSBkcml2ZXIgY2Fubm90IGJlIHByb2JlZCBhbmQgdGhlIGNvZGUgaXMgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA1YzQzOWZkNmE5ZTBhZGY2NmU0NDIxYjdmZmExYzk5MDFjZGExZjc2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdWwgMjggMjI6MzQ6MjQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25mYy90cmY3OTcwYS5jIGIvZHJpdmVycy9uZmMvdHJmNzk3MGEuY1xuaW5kZXggZjIyZTA5MTAxOWRlZS4uYmM0ZDk3NGRmZTNhYSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmZjL3RyZjc5NzBhLmNcbisrKyBiL2RyaXZlcnMvbmZjL3RyZjc5NzBhLmNcbkBAIC0yMTI0LDE4ICsyMTI0LDE5IEBAIHN0YXRpYyBpbnQgdHJmNzk3MGFfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcbiBcdFx0fVxuIFx0fVxuIFxuK1x0bXV0ZXhfaW5pdChcdTAwMjZ0cmYtXHUwMDNlbG9jayk7XG4rXHRJTklUX0RFTEFZRURfV09SSyhcdTAwMjZ0cmYtXHUwMDNldGltZW91dF93b3JrLCB0cmY3OTcwYV90aW1lb3V0X3dvcmtfaGFuZGxlcik7XG4rXG4gXHRyZXQgPSBkZXZtX3JlcXVlc3RfdGhyZWFkZWRfaXJxKHRyZi1cdTAwM2VkZXYsIHNwaS1cdTAwM2VpcnEsIE5VTEwsXG4gXHRcdFx0XHRcdHRyZjc5NzBhX2lycSxcbiBcdFx0XHRcdFx0SVJRRl9UUklHR0VSX1JJU0lORyB8IElSUUZfT05FU0hPVCxcbiBcdFx0XHRcdFx0XCJ0cmY3OTcwYVwiLCB0cmYpO1xuIFx0aWYgKHJldCkge1xuIFx0XHRkZXZfZXJyKHRyZi1cdTAwM2VkZXYsIFwiQ2FuJ3QgcmVxdWVzdCBJUlEjJWQ6ICVkXFxuXCIsIHNwaS1cdTAwM2VpcnEsIHJldCk7XG4rXHRcdG11dGV4X2Rlc3Ryb3koXHUwMDI2dHJmLVx1MDAzZWxvY2spO1xuIFx0XHRyZXR1cm4gcmV0O1xuIFx0fVxuIFxuLVx0bXV0ZXhfaW5pdChcdTAwMjZ0cmYtXHUwMDNlbG9jayk7XG4tXHRJTklUX0RFTEFZRURfV09SSyhcdTAwMjZ0cmYtXHUwMDNldGltZW91dF93b3JrLCB0cmY3OTcwYV90aW1lb3V0X3dvcmtfaGFuZGxlcik7XG4tXG4gXHR0cmYtXHUwMDNldmluX3JlZ3VsYXRvciA9IGRldm1fcmVndWxhdG9yX2dldChcdTAwMjZzcGktXHUwMDNlZGV2LCBcInZpblwiKTtcbiBcdGlmIChJU19FUlIodHJmLVx1MDAzZXZpbl9yZWd1bGF0b3IpKSB7XG4gXHRcdHJldCA9IFBUUl9FUlIodHJmLVx1MDAzZXZpbl9yZWd1bGF0b3IpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMjI6MzQ6MjUuNzAzMTg2Njc2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjM3NDczOTkwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBEcml2ZXIgUGF0Y2g6IFRSRjc5NzBBKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBwYXRjaCBmb3IgYGRyaXZlcnMvbmZjL3RyZjc5NzBhLmNgLiBUaGUgY29yZSBvZiBpdCBzZWVtcyB0byBiZSBhYm91dCBzeW5jaHJvbml6aW5nIGluaXRpYWxpemF0aW9uLiBJdCBsb29rcyBsaWtlIHRoZXkncmUgc2hpZnRpbmcgdGhlIGBtdXRleF9pbml0YCBhbmQgYElOSVRfREVMQVlFRF9XT1JLYCBjYWxscyBmb3IgdGhlIGB0cmYtXHUwMDNlbG9ja2AgbXV0ZXggYW5kIHRoZSBgdGltZW91dF93b3JrYCBkZWxheWVkIHdvcmsgcXVldWUgdG8gKmJlZm9yZSogdGhlIGBkZXZtX3JlcXVlc3RfdGhyZWFkZWRfaXJxYCBjYWxsLiBTbWFydCBtb3ZlLiBUaGlzIGFsbW9zdCBjZXJ0YWlubHkgYWRkcmVzc2VzIGEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uIHdoZXJlIHRoZSBpbnRlcnJ1cHQgaGFuZGxlciwgYHRyZjc5NzBhX2lycWAsIGNvdWxkIGdldCB0cmlnZ2VyZWQgYmVmb3JlIHRoZXNlIGNyaXRpY2FsIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzIGFyZSBmdWxseSBpbml0aWFsaXplZC4gTWFrZXMgc2Vuc2Ug4oCTIHByZXZlbnQgdGhlIGhhbmRsZXIgZnJvbSB0cnlpbmcgdG8gdXNlIGEgbXV0ZXggb3Igd29yayBxdWV1ZSB0aGF0IGRvZXNuJ3QgeWV0IGV4aXN0LiBJIGFsc28gc2VlIHRoZXkndmUgYWRkZWQgYSBgbXV0ZXhfZGVzdHJveShcdTAwMjZ0cmYtXHUwMDNlbG9jaylgIGNhbGwgaW4gdGhlIGVycm9yIHBhdGggb2YgYGRldm1fcmVxdWVzdF90aHJlYWRlZF9pcnFgIGZvciBjbGVhbnVwLCB3aGljaCBpcyBnb29kIHByYWN0aWNlLlxuXG5Ob3csIG15IGV4cGVydCBTcGlkZXktc2Vuc2UgaXMgdGluZ2xpbmcuIExldCdzIHNlZSBob3cgcmVsZXZhbnQgdGhpcyBpcyBpbiBhIHZpcnR1YWxpemVkIG9yIGZ1enppbmcgY29udGV4dC4gVGhpcyBpcyBhbiBTUEkgZHJpdmVyLCByaWdodD8gWWVhaCwgYHN0cnVjdCBzcGlfZGV2aWNlICpzcGlgLiBPa2F5LCBzbyBTUEkgZHJpdmVycyBhcmUgdHlwaWNhbGx5IGhhcmR3YXJlLXNwZWNpZmljLCB1c3VhbGx5IGJvdW5kIHRvIHNwZWNpZmljIGhhcmR3YXJlIG5vZGVzIGluIGRldmljZSB0cmVlIG9yIEFDUEkuIFRoZXkncmUgZ2VuZXJhbGx5ICpub3QqIGVhc2lseSByZWFjaGFibGUgd2l0aG91dCBzcGVjaWFsIGNvbmZpZ3VyYXRpb24gb3IgZW11bGF0aW9uLiBJIGRvdWJ0IGl0IHdvdWxkIGJlIHJlYWNoYWJsZSBpbiBhIHN0YW5kYXJkIHZpcnR1YWwgZW52aXJvbm1lbnQgdW5sZXNzIHRoZXJlJ3MgYSBzcGVjaWZpYyBTUEkgY29udHJvbGxlciBlbXVsYXRlZC4gTWF5YmUgc29tZSBzb3J0IG9mIGR1bW15IFNQSSBjb250cm9sbGVyIGNvdWxkIGJlIHVzZWQsIG9yIHNvbWV0aGluZyBzaW1pbGFyLCBidXQgdGhhdCB3b3VsZCBuZWVkIHRvIGJlIGluIHBsYWNlLlxuXG5XYWl0LCBkaWQgSSBzZWUgc29tZXRoaW5nIGFib3V0IFN5emthbGxlciBhbmQgU1BJIHN1cHBvcnQgcmVjZW50bHk/IEkgKnRob3VnaHQqIEkgc2F3IHNvbWV0aGluZy4gSXMgdGhlcmUgYSB3YXkgd2UgY2FuIHVzZSBgdmhjaWAgb3Igc29tZXRoaW5nIHNpbWlsYXI/IE5vLCBTUEkgZnV6emluZyBpcyBub3Qgc3RyYWlnaHRmb3J3YXJkLiBIYW5nIG9uLi4uIGlzbid0IHRoZXJlIHNvbWUgcmVjZW50IFNQSSBmdXp6aW5nIHN1cHBvcnQ/IEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIHRoYXQuIExldCBtZSBxdWlja2x5IHNlYXJjaCB0aGUga2VybmVsIHNvdXJjZSBmb3IgXCJ0cmY3OTcwYVwiIGFuZCBzZWUgaWYgdGhlcmUncyBhbnkgcmVsZXZhbnQgY29udGV4dCBJIG1pZ2h0IGJlIG1pc3NpbmcuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI4MCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5NSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDIyOjM0OjMyLjA3Nzk1NjI0M1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MjcyMDE1NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0cmY3OTcwYVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25mYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA3ODQgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvbmZjL0tjb25maWc9OT1jb25maWcgTkZDX1RSRjc5NzBBXFxuLS1cXG5kcml2ZXJzL25mYy9LY29uZmlnLTE4LVxcdCAgc2F5IE0gIHRvIGNvbXBpbGUgaXQgYXMgYSBtb2R1bGUuIFRoZSBtb2R1bGUgd2lsbCBiZSBjYWxsZWRcXG5kcml2ZXJzL25mYy9LY29uZmlnOjE5OlxcdCAgdHJmNzk3MGEua28uXFxuZHJpdmVycy9uZmMvS2NvbmZpZy0yMC1cXG4tLVxcbmRyaXZlcnMvbmZjL01ha2VmaWxlPTEzPW9iai0kKENPTkZJR19ORkNfTVJWTClcXHRcXHQrPSBuZmNtcnZsL1xcbmRyaXZlcnMvbmZjL01ha2VmaWxlOjE0Om9iai0kKENPTkZJR19ORkNfVFJGNzk3MEEpXFx0Kz0gdHJmNzk3MGEub1xcbmRyaXZlcnMvbmZjL01ha2VmaWxlLTE1LW9iai0kKENPTkZJR19ORkNfU1QyMU5GQ0EpICBcXHQrPSBzdDIxbmZjYS9cXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMjctXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoyODovKiBUaGVyZSBhcmUgMyB3YXlzIHRoZSBob3N0IGNhbiBjb21tdW5pY2F0ZSB3aXRoIHRoZSB0cmY3OTcwYTpcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTI5LSAqIHBhcmFsbGVsIG1vZGUsIFNQSSB3aXRoIFNsYXZlIFNlbGVjdCAoU1MpIG1vZGUsIGFuZCBTUEkgd2l0aG91dFxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0zMS0gKlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MzI6ICogVGhlIHRyZjc5NzBhIGlzIHZlcnkgdGltaW5nIHNlbnNpdGl2ZSBhbmQgdGhlIFZJTiwgRU4yLCBhbmQgRU5cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTMzLSAqIHBpbnMgbXVzdCBhc3NlcnRlZCBpbiB0aGF0IG9yZGVyIGFuZCB3aXRoIHNwZWNpZmljIGRlbGF5cyBpbiBiZXR3ZWVuLlxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0zNS0gKiBjb25maXJtZWQgdG8gd29yayB3aXRoIHRoaXMgZHJpdmVyLiAgVGhlcmUgaXMgYSBidWcgd2l0aCB0aGUgY3VycmVudFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MzY6ICogdmVyc2lvbiBvZiB0aGUgdHJmNzk3MGEgdGhhdCByZXF1aXJlcyB0aGF0IEVOMiByZW1haW4gbG93IG5vIG1hdHRlclxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMzctICogd2hhdC4gIElmIGl0IGdvZXMgaGlnaCwgaXQgd2lsbCBnZW5lcmF0ZSBhbiBSRiBmaWVsZCBldmVuIHdoZW4gaW5cXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMzktICogd2hlbiBFTjIgaXMgbGVmdCBsb3cuICBUaGUgJ2VuMi1yZi1xdWlyaycgZGV2aWNlIHRyZWUgcHJvcGVydHlcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjQwOiAqIGluZGljYXRlcyB0aGF0IHRyZjc5NzBhIGN1cnJlbnRseSBiZWluZyB1c2VkIGhhcyB0aGUgZXJyYXR1bSBhbmRcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTQxLSAqIHRoYXQgRU4yIG11c3QgYmUga2VwdCBsb3cuXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTQ0LSAqIFRpbWVvdXRzIGFyZSByZXF1aXJlZCBzbyB0aGluZ3MgZG9uJ3QgaGFuZyB3aGVuIHRoZXJlIGlzIG5vIHJlc3BvbnNlXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo0NTogKiBmcm9tIHRoZSB0cmY3OTcwYSAob3IgdGFnKS4gIFVzaW5nIHRoaXMgbWVjaGFuaXNtIGNyZWF0ZXMgYSByYWNlIHdpdGhcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTQ2LSAqIGludGVycnVwdHMsIGhvd2V2ZXIuICBUaGF0IGlzLCBhbiBpbnRlcnJ1cHQgYW5kIGEgdGltZW91dCBjb3VsZCBvY2N1clxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02MC0gKiB0aGUgZW50aXJlIGFudGljb2xsaXNpb24gcHJvY2VkdXJlIGFnYWluIGJ1dCB0aGUgZGlnaXRhbCBsYXllciBkb2Vzbid0XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo2MTogKiBzdXBwb3J0IHRoYXQuICBTbywgaWYgYW4gYWJvcnQgaXMgcmVjZWl2ZWQgYmVmb3JlIHRyZjc5NzBhX3NlbmRfY21kKClcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTYyLSAqIGhhcyBzZW50IHRoZSBjb21tYW5kIHRvIHRoZSB0YWcsIGl0IHNpbXBseSByZXR1cm5zIC1FQ0FOQ0VMRUQuICBJZiB0aGVcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTYtICogd2hlbiB0aGUgZnJhbWluZyBpcyAnTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX1QyVCcuICBUaGlzIGlzIGRvbmUgYnlcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjk3OiAqIHRoZSB0cmY3OTcwYV9wZXJfY21kX2NvbmZpZygpIHJvdXRpbmUuXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05OC0gKlxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDQtLyogUXVpcmtzICovXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNDU6LyogRXJyYXR1bTogV2hlbiByZWFkaW5nIElSUSBTdGF0dXMgcmVnaXN0ZXIgb24gdHJmNzk3MGEsIHdlIG11c3QgaXNzdWUgYVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQ2LSAqIHJlYWQgY29udGludW91cyBjb21tYW5kIGZvciBJUlEgU3RhdHVzIGFuZCBDb2xsaXNpb24gUG9zaXRpb24gcmVnaXN0ZXJzLlxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy00MTUtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo0MTY6ZW51bSB0cmY3OTcwYV9zdGF0ZSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy00MTctXFx0VFJGNzk3MEFfU1RfUFdSX09GRixcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDI5LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NDMwOnN0cnVjdCB0cmY3OTcwYSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo0MzE6XFx0ZW51bSB0cmY3OTcwYV9zdGF0ZVxcdFxcdHN0YXRlO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDMyLVxcdHN0cnVjdCBkZXZpY2VcXHRcXHRcXHQqZGV2O1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy00NjUtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo0NjY6c3RhdGljIGludCB0cmY3OTcwYV9jbWQoc3RydWN0IHRyZjc5NzBhICp0cmYsIHU4IG9wY29kZSlcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTQ2Ny17XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTQ3OS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjQ4MDpzdGF0aWMgaW50IHRyZjc5NzBhX3JlYWQoc3RydWN0IHRyZjc5NzBhICp0cmYsIHU4IHJlZywgdTggKnZhbClcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTQ4MS17XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTQ5NC1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjQ5NTpzdGF0aWMgaW50IHRyZjc5NzBhX3JlYWRfY29udChzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgdTggcmVnLCB1OCAqYnVmLFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDk2LVxcdFxcdFxcdCAgICAgIHNpemVfdCBsZW4pXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTUyMy1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjUyNDpzdGF0aWMgaW50IHRyZjc5NzBhX3dyaXRlKHN0cnVjdCB0cmY3OTcwYSAqdHJmLCB1OCByZWcsIHU4IHZhbClcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTUyNS17XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTUzOC1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjUzOTpzdGF0aWMgaW50IHRyZjc5NzBhX3JlYWRfaXJxc3RhdHVzKHN0cnVjdCB0cmY3OTcwYSAqdHJmLCB1OCAqc3RhdHVzKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTQwLXtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTYyLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NTYzOnN0YXRpYyBpbnQgdHJmNzk3MGFfdXBkYXRlX3J4X2dhaW5fcmVkdWN0aW9uKHN0cnVjdCB0cmY3OTcwYSAqdHJmKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTY0LXtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTcwLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NTcxOlxcdHJldCA9IHRyZjc5NzBhX3JlYWQodHJmLCBUUkY3OTcwQV9SWF9TUEVDSUFMX1NFVFRJTkdTLCBcXHUwMDI2cmVnKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTU3Mi1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01NzYtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo1Nzc6XFx0cmV0ID0gdHJmNzk3MGFfd3JpdGUodHJmLCBUUkY3OTcwQV9SWF9TUEVDSUFMX1NFVFRJTkdTLCByZWcpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTc4LVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01ODEtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo1ODI6c3RhdGljIGludCB0cmY3OTcwYV91cGRhdGVfaXNvX2N0cmxfcmVnaXN0ZXIoc3RydWN0IHRyZjc5NzBhICp0cmYsIHU4IGlzb19jdHJsKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTgzLXtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTg1LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NTg2OlxcdHJldCA9IHRyZjc5NzBhX3dyaXRlKHRyZiwgVFJGNzk3MEFfSVNPX0NUUkwsIGlzb19jdHJsKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTU4Ny1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01OTItXFx0ICovXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo1OTM6XFx0cmV0ID0gdHJmNzk3MGFfdXBkYXRlX3J4X2dhaW5fcmVkdWN0aW9uKHRyZik7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01OTQtXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTU5Ny1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjU5ODpzdGF0aWMgaW50IHRyZjc5NzBhX3JlYWRfdGFyZ2V0X3Byb3RvKHN0cnVjdCB0cmY3OTcwYSAqdHJmLCB1OCAqdGFyZ2V0X3Byb3RvKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTk5LXtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjE2LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NjE3OnN0YXRpYyBpbnQgdHJmNzk3MGFfbW9kZV9kZXRlY3Qoc3RydWN0IHRyZjc5NzBhICp0cmYsIHU4ICpyZl90ZWNoKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjE4LXtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjIxLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NjIyOlxcdHJldCA9IHRyZjc5NzBhX3JlYWRfdGFyZ2V0X3Byb3RvKHRyZiwgXFx1MDAyNnRhcmdldF9wcm90byk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02MjMtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjQ5LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NjUwOnN0YXRpYyB2b2lkIHRyZjc5NzBhX3NlbmRfdXBzdHJlYW0oc3RydWN0IHRyZjc5NzBhICp0cmYpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02NTEte1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02NTUtXFx0aWYgKHRyZi1cXHUwMDNlcnhfc2tiIFxcdTAwMjZcXHUwMDI2ICFJU19FUlIodHJmLVxcdTAwM2VyeF9za2IpIFxcdTAwMjZcXHUwMDI2ICF0cmYtXFx1MDAzZWFib3J0aW5nKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NjU2OlxcdFxcdHByaW50X2hleF9kdW1wX2RlYnVnKFxcXCJ0cmY3OTcwYSByeCBkYXRhOiBcXFwiLCBEVU1QX1BSRUZJWF9OT05FLFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjU3LVxcdFxcdFxcdFxcdCAgICAgMTYsIDEsIHRyZi1cXHUwMDNlcnhfc2tiLVxcdTAwM2VkYXRhLCB0cmYtXFx1MDAzZXJ4X3NrYi1cXHUwMDNlbGVuLFxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02NzctXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo2Nzg6c3RhdGljIHZvaWQgdHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0oc3RydWN0IHRyZjc5NzBhICp0cmYsIGludCBlcnJubylcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTY3OS17XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTY4Ni1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjY4NzpcXHR0cmY3OTcwYV9zZW5kX3Vwc3RyZWFtKHRyZik7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02ODgtfVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjg5LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NjkwOnN0YXRpYyBpbnQgdHJmNzk3MGFfdHJhbnNtaXQoc3RydWN0IHRyZjc5NzBhICp0cmYsIHN0cnVjdCBza19idWZmICpza2IsXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02OTEtXFx0XFx0XFx0ICAgICB1bnNpZ25lZCBpbnQgbGVuLCBjb25zdCB1OCAqcHJlZml4LFxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02OTgtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo2OTk6XFx0cHJpbnRfaGV4X2R1bXBfZGVidWcoXFxcInRyZjc5NzBhIHR4IGRhdGE6IFxcXCIsIERVTVBfUFJFRklYX05PTkUsXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03MDAtXFx0XFx0XFx0ICAgICAxNiwgMSwgc2tiLVxcdTAwM2VkYXRhLCBsZW4sIGZhbHNlKTtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzQ3LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NzQ4OnN0YXRpYyB2b2lkIHRyZjc5NzBhX2ZpbGxfZmlmbyhzdHJ1Y3QgdHJmNzk3MGEgKnRyZilcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTc0OS17XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTc1NS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjc1NjpcXHRyZXQgPSB0cmY3OTcwYV9yZWFkKHRyZiwgVFJGNzk3MEFfRklGT19TVEFUVVMsIFxcdTAwMjZmaWZvX2J5dGVzKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTc1Ny1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo3NTg6XFx0XFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCByZXQpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzU5LVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzc3LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6Nzc4OlxcdHJldCA9IHRyZjc5NzBhX3RyYW5zbWl0KHRyZiwgc2tiLCBsZW4sIFxcdTAwMjZwcmVmaXgsIHNpemVvZihwcmVmaXgpKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTc3OS1cXHRpZiAocmV0KVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NzgwOlxcdFxcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgcmV0KTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTc4MS19XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03ODItXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo3ODM6c3RhdGljIHZvaWQgdHJmNzk3MGFfZHJhaW5fZmlmbyhzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgdTggc3RhdHVzKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzg0LXtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzg5LVxcdGlmIChzdGF0dXMgXFx1MDAyNiBUUkY3OTcwQV9JUlFfU1RBVFVTX0VSUk9SKSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo3OTA6XFx0XFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCAtRUlPKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTc5MS1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTc5My1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjc5NDpcXHRyZXQgPSB0cmY3OTcwYV9yZWFkKHRyZiwgVFJGNzk3MEFfRklGT19TVEFUVVMsIFxcdTAwMjZmaWZvX2J5dGVzKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTc5NS1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo3OTY6XFx0XFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCByZXQpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzk3LVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODEyLVxcdFxcdGlmICghc2tiKSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo4MTM6XFx0XFx0XFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCAtRU5PTUVNKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTgxNC1cXHRcXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTgyMC1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjgyMTpcXHRyZXQgPSB0cmY3OTcwYV9yZWFkX2NvbnQodHJmLCBUUkY3OTcwQV9GSUZPX0lPX1JFR0lTVEVSLFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODIyLVxcdFxcdFxcdFxcdCBza2JfcHV0KHNrYiwgZmlmb19ieXRlcyksIGZpZm9fYnl0ZXMpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODIzLVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjgyNDpcXHRcXHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIHJldCk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04MjUtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04MzUtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo4MzY6XFx0XFx0cmV0ID0gdHJmNzk3MGFfcmVhZCh0cmYsIFRSRjc5NzBBX0ZJRk9fU1RBVFVTLCBcXHUwMDI2Zmlmb19ieXRlcyk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04MzctXFx0XFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6ODM4OlxcdFxcdFxcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgcmV0KTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTgzOS1cXHRcXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTg0NS1cXHRcXHQgKiB0aGUgaWYgc3RtdCBiZWxvdyBkb2Vzbid0IGZpcmUgYW5kIHRoZSBkcml2ZXIgd2lsbCB3YWl0XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo4NDY6XFx0XFx0ICogZm9yIHRoZSB0cmY3OTcwYSB0byBnZW5lcmF0ZSBhbm90aGVyIFJYIGludGVycnVwdC5cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTg0Ny1cXHRcXHQgKi9cXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODUzLVxcdGlmIChzdGF0dXMgPT0gVFJGNzk3MEFfSVJRX1NUQVRVU19TUlgpIHtcXHQvKiBSZWNlaXZlIGNvbXBsZXRlICovXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo4NTQ6XFx0XFx0dHJmNzk3MGFfc2VuZF91cHN0cmVhbSh0cmYpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODU1LVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODY0LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6ODY1OnN0YXRpYyBpcnFyZXR1cm5fdCB0cmY3OTcwYV9pcnEoaW50IGlycSwgdm9pZCAqZGV2X2lkKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODY2LXtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjg2NzpcXHRzdHJ1Y3QgdHJmNzk3MGEgKnRyZiA9IGRldl9pZDtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTg2OC1cXHRpbnQgcmV0O1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04NzctXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo4Nzg6XFx0cmV0ID0gdHJmNzk3MGFfcmVhZF9pcnFzdGF0dXModHJmLCBcXHUwMDI2c3RhdHVzKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTg3OS1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTg5Ni1cXHRcXHQgKiB0dXJuIG9mZiB0aGUgcmVjZWl2ZXIgdG8gYXZvaWQgdW5uZWNlc3NhcnkgaW50ZXJydXB0cy5cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjg5NzpcXHRcXHQgKiBJdCB3aWxsIGJlIHR1cm5lZCBiYWNrIG9uIGluIHRyZjc5NzBhX3NlbmRfY21kKCkgd2hlblxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODk4LVxcdFxcdCAqIHRoZSBuZXh0IGNvbW1hbmQgaXMgaXNzdWVkLlxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05MDAtXFx0XFx0aWYgKHRyZi1cXHUwMDNlaXNfaW5pdGlhdG9yIFxcdTAwMjZcXHUwMDI2IChzdGF0dXMgXFx1MDAyNiBUUkY3OTcwQV9JUlFfU1RBVFVTX0VSUk9SKSkge1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTAxOlxcdFxcdFxcdHRyZjc5NzBhX2NtZCh0cmYsIFRSRjc5NzBBX0NNRF9CTE9DS19SWCk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05MDItXFx0XFx0XFx0dHJmLVxcdTAwM2VzdGF0ZSA9IFRSRjc5NzBBX1NUX0lETEVfUlhfQkxPQ0tFRDtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTA0LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTA1OlxcdFxcdHRyZjc5NzBhX2NtZCh0cmYsIFRSRjc5NzBBX0NNRF9GSUZPX1JFU0VUKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkwNi1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTEwLVxcdFxcdFxcdCAgICAhY2FuY2VsX2RlbGF5ZWRfd29yayhcXHUwMDI2dHJmLVxcdTAwM2V0aW1lb3V0X3dvcmspO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTExOlxcdFxcdFxcdHRyZjc5NzBhX2ZpbGxfZmlmbyh0cmYpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTEyLVxcdFxcdH0gZWxzZSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5MTM6XFx0XFx0XFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCAtRUlPKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkxNC1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkyMC1cXHRcXHRcXHQgICAgIWNhbmNlbF9kZWxheWVkX3dvcmsoXFx1MDAyNnRyZi1cXHUwMDNldGltZW91dF93b3JrKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjkyMTpcXHRcXHRcXHR0cmY3OTcwYV9kcmFpbl9maWZvKHRyZiwgc3RhdHVzKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkyMi1cXHRcXHR9IGVsc2UgaWYgKHN0YXR1cyBcXHUwMDI2IFRSRjc5NzBBX0lSUV9TVEFUVVNfRklGTykge1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTIzOlxcdFxcdFxcdHJldCA9IHRyZjc5NzBhX3JlYWQodHJmLCBUUkY3OTcwQV9GSUZPX1NUQVRVUyxcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkyNC1cXHRcXHRcXHRcXHRcXHQgICAgXFx1MDAyNmZpZm9fYnl0ZXMpO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05MjgtXFx0XFx0XFx0aWYgKHJldClcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjkyOTpcXHRcXHRcXHRcXHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIHJldCk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05MzAtXFx0XFx0XFx0ZWxzZSBpZiAoIWZpZm9fYnl0ZXMpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5MzE6XFx0XFx0XFx0XFx0dHJmNzk3MGFfY21kKHRyZiwgVFJGNzk3MEFfQ01EX0ZJRk9fUkVTRVQpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTMyLVxcdFxcdH0gZWxzZSBpZiAoKHN0YXR1cyA9PSBUUkY3OTcwQV9JUlFfU1RBVFVTX1RYKSB8fFxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05MzUtXFx0XFx0XFx0XFx0XFx0VFJGNzk3MEFfSVJRX1NUQVRVU19ORkNfUkYpKSkpIHtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjkzNjpcXHRcXHRcXHR0cmY3OTcwYV9jbWQodHJmLCBUUkY3OTcwQV9DTURfRklGT19SRVNFVCk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05MzctXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk0MS1cXHRcXHRcXHRcXHR0cmYtXFx1MDAzZXJ4X3NrYiA9IEVSUl9QVFIoMCk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5NDI6XFx0XFx0XFx0XFx0dHJmNzk3MGFfc2VuZF91cHN0cmVhbSh0cmYpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTQzLVxcdFxcdFxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05NjItXFx0XFx0XFx0Y2FzZSBORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfQU5USUNPTF9DT01QTEVURTpcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjk2MzpcXHRcXHRcXHRcXHRyZXQgPSB0cmY3OTcwYV93cml0ZSh0cmYsXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05NjQtXFx0XFx0XFx0XFx0XFx0IFRSRjc5NzBBX1NQRUNJQUxfRkNOX1JFRzEsXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk3Ni1cXHRcXHRcXHRpZiAoaXNvX2N0cmwgIT0gdHJmLVxcdTAwM2Vpc29fY3RybCkge1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTc3OlxcdFxcdFxcdFxcdHJldCA9IHRyZjc5NzBhX3VwZGF0ZV9pc29fY3RybF9yZWdpc3Rlcih0cmYsIGlzb19jdHJsKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk3OC1cXHRcXHRcXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05ODMtXFx0XFx0fSBlbHNlIHtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjk4NDpcXHRcXHRcXHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIC1FSU8pO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTg1LVxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTg4LVxcdFxcdGlmIChzdGF0dXMgIT0gVFJGNzk3MEFfSVJRX1NUQVRVU19UWClcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjk4OTpcXHRcXHRcXHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIC1FSU8pO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTkwLVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05OTQtXFx0XFx0XFx0ICAgICFjYW5jZWxfZGVsYXllZF93b3JrKFxcdTAwMjZ0cmYtXFx1MDAzZXRpbWVvdXRfd29yayk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5OTU6XFx0XFx0XFx0dHJmNzk3MGFfZHJhaW5fZmlmbyh0cmYsIHN0YXR1cyk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05OTYtXFx0XFx0fSBlbHNlIGlmICghKHN0YXR1cyBcXHUwMDI2IFRSRjc5NzBBX0lSUV9TVEFUVVNfTkZDX1JGKSkge1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTk3OlxcdFxcdFxcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgLUVJTyk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05OTgtXFx0XFx0fVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDA0LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTAwNTpcXHRcXHRcXHRyZXQgPSB0cmY3OTcwYV9tb2RlX2RldGVjdCh0cmYsIFxcdTAwMjZ0cmYtXFx1MDAzZW1kX3JmX3RlY2gpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAwNi1cXHRcXHRcXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDA3OlxcdFxcdFxcdFxcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgcmV0KTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwMDgtXFx0XFx0XFx0fSBlbHNlIHtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwMDktXFx0XFx0XFx0XFx0dHJmLVxcdTAwM2VzdGF0ZSA9IFRSRjc5NzBBX1NUX0xJU1RFTklORztcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwMTA6XFx0XFx0XFx0XFx0dHJmNzk3MGFfZHJhaW5fZmlmbyh0cmYsIHN0YXR1cyk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDExLVxcdFxcdFxcdH1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwMTItXFx0XFx0fSBlbHNlIGlmICghKHN0YXR1cyBcXHUwMDI2IFRSRjc5NzBBX0lSUV9TVEFUVVNfTkZDX1JGKSkge1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTAxMzpcXHRcXHRcXHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIC1FSU8pO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAxNC1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwMjUtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDI2OnN0YXRpYyB2b2lkIHRyZjc5NzBhX2lzc3VlX2VvZihzdHJ1Y3QgdHJmNzk3MGEgKnRyZilcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwMjcte1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDMxLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTAzMjpcXHRyZXQgPSB0cmY3OTcwYV9jbWQodHJmLCBUUkY3OTcwQV9DTURfRklGT19SRVNFVCk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDMzLVxcdGlmIChyZXQpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDM0OlxcdFxcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgcmV0KTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwMzUtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDM2OlxcdHJldCA9IHRyZjc5NzBhX2NtZCh0cmYsIFRSRjc5NzBBX0NNRF9FT0YpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAzNy1cXHRpZiAocmV0KVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTAzODpcXHRcXHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIHJldCk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDM5LVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDQ4LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTA0OTpzdGF0aWMgdm9pZCB0cmY3OTcwYV90aW1lb3V0X3dvcmtfaGFuZGxlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDUwLXtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwNTE6XFx0c3RydWN0IHRyZjc5NzBhICp0cmYgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IHRyZjc5NzBhLFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA1Mi1cXHRcXHRcXHRcXHRcXHQgICAgdGltZW91dF93b3JrLndvcmspO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDYxLVxcdGVsc2UgaWYgKHRyZi1cXHUwMDNlc3RhdGUgPT0gVFJGNzk3MEFfU1RfV0FJVF9GT1JfUlhfREFUQV9DT05UKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTA2MjpcXHRcXHR0cmY3OTcwYV9kcmFpbl9maWZvKHRyZiwgVFJGNzk3MEFfSVJRX1NUQVRVU19TUlgpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA2My1cXHRlbHNlIGlmICh0cmYtXFx1MDAzZXN0YXRlID09IFRSRjc5NzBBX1NUX1dBSVRfVE9fSVNTVUVfRU9GKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTA2NDpcXHRcXHR0cmY3OTcwYV9pc3N1ZV9lb2YodHJmKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwNjUtXFx0ZWxzZVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTA2NjpcXHRcXHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIC1FVElNRURPVVQpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA2Ny1cXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA3MC1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwNzE6c3RhdGljIGludCB0cmY3OTcwYV9pbml0KHN0cnVjdCB0cmY3OTcwYSAqdHJmKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA3Mi17XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwNzYtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDc3OlxcdHJldCA9IHRyZjc5NzBhX2NtZCh0cmYsIFRSRjc5NzBBX0NNRF9TT0ZUX0lOSVQpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA3OC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDgxLVxcdC8qIFNldCB0aGUgZ2FpbiByZWR1Y3Rpb24gYWZ0ZXIgc29mdCBpbml0ICovXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDgyOlxcdHJldCA9IHRyZjc5NzBhX3VwZGF0ZV9yeF9nYWluX3JlZHVjdGlvbih0cmYpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA4My1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDg1LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTA4NjpcXHRyZXQgPSB0cmY3OTcwYV9jbWQodHJmLCBUUkY3OTcwQV9DTURfSURMRSk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDg3LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwODktXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDkwOlxcdHJldCA9IHRyZjc5NzBhX3dyaXRlKHRyZiwgVFJGNzk3MEFfUkVHX0lPX0NUUkwsXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDkxLVxcdFxcdFxcdCAgICAgdHJmLVxcdTAwM2Vpb19jdHJsIHwgVFJGNzk3MEFfUkVHX0lPX0NUUkxfVlJTKDB4MSkpO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDk0LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTA5NTpcXHRyZXQgPSB0cmY3OTcwYV93cml0ZSh0cmYsIFRSRjc5NzBBX05GQ19UQVJHRVRfTEVWRUwsIDApO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA5Ni1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTAyLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTEwMzpcXHRyZXQgPSB0cmY3OTcwYV93cml0ZSh0cmYsIFRSRjc5NzBBX01PRFVMQVRPUl9TWVNfQ0xLX0NUUkwsXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTA0LVxcdFxcdFxcdCAgICAgdHJmLVxcdTAwM2Vtb2R1bGF0b3Jfc3lzX2Nsa19jdHJsKTtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTEwNy1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjExMDg6XFx0cmV0ID0gdHJmNzk3MGFfd3JpdGUodHJmLCBUUkY3OTcwQV9BREpVVEFCTEVfRklGT19JUlFfTEVWRUxTLFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTEwOS1cXHRcXHRcXHQgICAgIFRSRjc5NzBBX0FESlVUQUJMRV9GSUZPX0lSUV9MRVZFTFNfV0xIXzk2IHxcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTExMy1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjExMTQ6XFx0cmV0ID0gdHJmNzk3MGFfd3JpdGUodHJmLCBUUkY3OTcwQV9TUEVDSUFMX0ZDTl9SRUcxLCAwKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExMTUtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTEyNy1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjExMjg6c3RhdGljIHZvaWQgdHJmNzk3MGFfc3dpdGNoX3JmX29mZihzdHJ1Y3QgdHJmNzk3MGEgKnRyZilcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExMjkte1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTM3LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTEzODpcXHR0cmY3OTcwYV93cml0ZSh0cmYsIFRSRjc5NzBBX0NISVBfU1RBVFVTX0NUUkwsIHRyZi1cXHUwMDNlY2hpcF9zdGF0dXNfY3RybCk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTM5LVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTQ2LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTE0NzpzdGF0aWMgaW50IHRyZjc5NzBhX3N3aXRjaF9yZl9vbihzdHJ1Y3QgdHJmNzk3MGEgKnRyZilcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExNDgte1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTYwLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTE2MTpcXHRyZXQgPSB0cmY3OTcwYV9pbml0KHRyZik7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTYyLVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTE3MS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjExNzI6c3RhdGljIGludCB0cmY3OTcwYV9zd2l0Y2hfcmYoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgYm9vbCBvbilcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExNzMte1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTE3NDpcXHRzdHJ1Y3QgdHJmNzk3MGEgKnRyZiA9IG5mY19kaWdpdGFsX2dldF9kcnZkYXRhKGRkZXYpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTE3NS1cXHRpbnQgcmV0ID0gMDtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTE4NC1cXHRcXHRjYXNlIFRSRjc5NzBBX1NUX1JGX09GRjpcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjExODU6XFx0XFx0XFx0cmV0ID0gdHJmNzk3MGFfc3dpdGNoX3JmX29uKHRyZik7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTg2LVxcdFxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTkyLVxcdFxcdFxcdFxcdF9fZnVuY19fLCB0cmYtXFx1MDAzZXN0YXRlLCBvbik7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMTkzOlxcdFxcdFxcdHRyZjc5NzBhX3N3aXRjaF9yZl9vZmYodHJmKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExOTQtXFx0XFx0XFx0cmV0ID0gLUVJTlZBTDtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTIwOS1cXHRcXHRjYXNlIFRSRjc5NzBBX1NUX1dBSVRfRk9SX1JYX0RBVEFfQ09OVDpcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEyMTA6XFx0XFx0XFx0dHJmNzk3MGFfc3dpdGNoX3JmX29mZih0cmYpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTIxMS1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyMTctXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMjE4OnN0YXRpYyBpbnQgdHJmNzk3MGFfaW5fY29uZmlnX3JmX3RlY2goc3RydWN0IHRyZjc5NzBhICp0cmYsIGludCB0ZWNoKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTIxOS17XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyNjgtXFx0ICogUFNMIHNlcXVlbmNlIChpbmRpY2F0ZWQgYnkgJ3RyZi1cXHUwMDNlaXNvX2N0cmwgPT0gMHhmZicgZnJvbVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTI2OTpcXHQgKiB0cmY3OTcwYV9pbml0KCkpLCBjbGVhciB0aGUgTkZDIFRhcmdldCBEZXRlY3Rpb24gTGV2ZWwgcmVnaXN0ZXJcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyNzAtXFx0ICogZHVlIHRvIGVycmF0dW0uXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyNzItXFx0aWYgKHRyZi1cXHUwMDNlaXNvX2N0cmwgPT0gMHhmZilcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEyNzM6XFx0XFx0cmV0ID0gdHJmNzk3MGFfd3JpdGUodHJmLCBUUkY3OTcwQV9ORkNfVEFSR0VUX0xFVkVMLCAwKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyNzQtXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyNzctXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMjc4OnN0YXRpYyBpbnQgdHJmNzk3MGFfaXNfcmZfZmllbGQoc3RydWN0IHRyZjc5NzBhICp0cmYsIGJvb2wgKmlzX3JmX2ZpZWxkKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI3OS17XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyODItXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMjgzOlxcdHJldCA9IHRyZjc5NzBhX3dyaXRlKHRyZiwgVFJGNzk3MEFfQ0hJUF9TVEFUVVNfQ1RSTCxcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyODQtXFx0XFx0XFx0ICAgICB0cmYtXFx1MDAzZWNoaXBfc3RhdHVzX2N0cmwgfFxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjg4LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTI4OTpcXHRyZXQgPSB0cmY3OTcwYV9jbWQodHJmLCBUUkY3OTcwQV9DTURfVEVTVF9FWFRfUkYpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI5MC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjk0LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTI5NTpcXHRyZXQgPSB0cmY3OTcwYV9yZWFkKHRyZiwgVFJGNzk3MEFfUlNTSV9PU0NfU1RBVFVTLCBcXHUwMDI2cnNzaSk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjk2LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyOTgtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMjk5OlxcdHJldCA9IHRyZjc5NzBhX3dyaXRlKHRyZiwgVFJGNzk3MEFfQ0hJUF9TVEFUVVNfQ1RSTCxcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzMDAtXFx0XFx0XFx0ICAgICB0cmYtXFx1MDAzZWNoaXBfc3RhdHVzX2N0cmwpO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzExLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTMxMjpzdGF0aWMgaW50IHRyZjc5NzBhX2luX2NvbmZpZ19mcmFtaW5nKHN0cnVjdCB0cmY3OTcwYSAqdHJmLCBpbnQgZnJhbWluZylcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzMTMte1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzUwLVxcdGlmICghKHRyZi1cXHUwMDNlY2hpcF9zdGF0dXNfY3RybCBcXHUwMDI2IFRSRjc5NzBBX0NISVBfU1RBVFVTX1JGX09OKSkge1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTM1MTpcXHRcXHRyZXQgPSB0cmY3OTcwYV9pc19yZl9maWVsZCh0cmYsIFxcdTAwMjZpc19yZl9maWVsZCk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzUyLVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzNTktXFx0aWYgKGlzb19jdHJsICE9IHRyZi1cXHUwMDNlaXNvX2N0cmwpIHtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEzNjA6XFx0XFx0cmV0ID0gdHJmNzk3MGFfdXBkYXRlX2lzb19jdHJsX3JlZ2lzdGVyKHRyZiwgaXNvX2N0cmwpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTM2MS1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzY1LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTM2NjpcXHRcXHRyZXQgPSB0cmY3OTcwYV93cml0ZSh0cmYsIFRSRjc5NzBBX01PRFVMQVRPUl9TWVNfQ0xLX0NUUkwsXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzY3LVxcdFxcdFxcdFxcdCAgICAgdHJmLVxcdTAwM2Vtb2R1bGF0b3Jfc3lzX2Nsa19jdHJsKTtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTM3Mi1cXHRpZiAoISh0cmYtXFx1MDAzZWNoaXBfc3RhdHVzX2N0cmwgXFx1MDAyNiBUUkY3OTcwQV9DSElQX1NUQVRVU19SRl9PTikpIHtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEzNzM6XFx0XFx0cmV0ID0gdHJmNzk3MGFfd3JpdGUodHJmLCBUUkY3OTcwQV9DSElQX1NUQVRVU19DVFJMLFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTM3NC1cXHRcXHRcXHRcXHQgICAgIHRyZi1cXHUwMDNlY2hpcF9zdGF0dXNfY3RybCB8XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzODYtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMzg3OnN0YXRpYyBpbnQgdHJmNzk3MGFfaW5fY29uZmlndXJlX2h3KHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIGludCB0eXBlLFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTM4OC1cXHRcXHRcXHRcXHQgICAgaW50IHBhcmFtKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTM4OS17XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMzkwOlxcdHN0cnVjdCB0cmY3OTcwYSAqdHJmID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzkxLVxcdGludCByZXQ7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0MDAtXFx0ICAgICh0cmYtXFx1MDAzZXN0YXRlID09IFRSRjc5NzBBX1NUX1JGX09GRikpIHtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE0MDE6XFx0XFx0cmV0ID0gdHJmNzk3MGFfc3dpdGNoX3JmX29uKHRyZik7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDAyLVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0MDctXFx0Y2FzZSBORkNfRElHSVRBTF9DT05GSUdfUkZfVEVDSDpcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE0MDg6XFx0XFx0cmV0ID0gdHJmNzk3MGFfaW5fY29uZmlnX3JmX3RlY2godHJmLCBwYXJhbSk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDA5LVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQxMC1cXHRjYXNlIE5GQ19ESUdJVEFMX0NPTkZJR19GUkFNSU5HOlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTQxMTpcXHRcXHRyZXQgPSB0cmY3OTcwYV9pbl9jb25maWdfZnJhbWluZyh0cmYsIHBhcmFtKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0MTItXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0MjItXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNDIzOnN0YXRpYyBpbnQgdHJmNzk3MGFfaXNfaXNvMTU2OTNfd3JpdGVfb3JfbG9jayh1OCBjbWQpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDI0LXtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQzOC1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE0Mzk6c3RhdGljIGludCB0cmY3OTcwYV9wZXJfY21kX2NvbmZpZyhzdHJ1Y3QgdHJmNzk3MGEgKnRyZixcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0NDAtXFx0XFx0XFx0XFx0ICAgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQ2NC1cXHRcXHRpZiAoc3BlY2lhbF9mY25fcmVnMSAhPSB0cmYtXFx1MDAzZXNwZWNpYWxfZmNuX3JlZzEpIHtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE0NjU6XFx0XFx0XFx0cmV0ID0gdHJmNzk3MGFfd3JpdGUodHJmLCBUUkY3OTcwQV9TUEVDSUFMX0ZDTl9SRUcxLFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQ2Ni1cXHRcXHRcXHRcXHRcXHQgICAgIHNwZWNpYWxfZmNuX3JlZzEpO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDkxLVxcdFxcdGlmIChpc29fY3RybCAhPSB0cmYtXFx1MDAzZWlzb19jdHJsKSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNDkyOlxcdFxcdFxcdHJldCA9IHRyZjc5NzBhX3VwZGF0ZV9pc29fY3RybF9yZWdpc3Rlcih0cmYsIGlzb19jdHJsKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0OTMtXFx0XFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQ5OS1cXHRcXHRpZiAoKHRyZi1cXHUwMDNlZnJhbWluZyA9PSBORkNfRElHSVRBTF9GUkFNSU5HX0lTTzE1NjkzX1Q1VCkgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE1MDA6XFx0XFx0ICAgIHRyZjc5NzBhX2lzX2lzbzE1NjkzX3dyaXRlX29yX2xvY2socmVxWzFdKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTUwMS1cXHRcXHQgICAgKHJlcVswXSBcXHUwMDI2IElTTzE1NjkzX1JFUV9GTEFHX09QVElPTikpXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE1MDctXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNTA4OnN0YXRpYyBpbnQgdHJmNzk3MGFfc2VuZF9jbWQoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE1MDktXFx0XFx0XFx0ICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MTYgdGltZW91dCxcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTUxMS17XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNTEyOlxcdHN0cnVjdCB0cmY3OTcwYSAqdHJmID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNTEzLVxcdHU4IHByZWZpeFs1XTtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTU1MS1cXHRpZiAodHJmLVxcdTAwM2VzdGF0ZSA9PSBUUkY3OTcwQV9TVF9JRExFX1JYX0JMT0NLRUQpIHtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE1NTI6XFx0XFx0cmV0ID0gdHJmNzk3MGFfY21kKHRyZiwgVFJGNzk3MEFfQ01EX0VOQUJMRV9SWCk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNTUzLVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE1NTktXFx0aWYgKHRyZi1cXHUwMDNlaXNfaW5pdGlhdG9yKSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNTYwOlxcdFxcdHJldCA9IHRyZjc5NzBhX3Blcl9jbWRfY29uZmlnKHRyZiwgc2tiKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE1NjEtXFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTU5Ni1cXHQvKiBDbGVhciBwb3NzaWJsZSBzcHVyaW91cyBpbnRlcnJ1cHQgKi9cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE1OTc6XFx0cmV0ID0gdHJmNzk3MGFfcmVhZF9pcnFzdGF0dXModHJmLCBcXHUwMDI2c3RhdHVzKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE1OTgtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTYwMC1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE2MDE6XFx0cmV0ID0gdHJmNzk3MGFfdHJhbnNtaXQodHJmLCBza2IsIGxlbiwgcHJlZml4LCBzaXplb2YocHJlZml4KSk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNjAyLVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTYxMS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE2MTI6c3RhdGljIGludCB0cmY3OTcwYV90Z19jb25maWdfcmZfdGVjaChzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgaW50IHRlY2gpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNjEzLXtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTY0Ny1cXHQvKiBOb3JtYWxseSB3ZSB3cml0ZSB0aGUgSVNPX0NUUkwgcmVnaXN0ZXIgaW5cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE2NDg6XFx0ICogdHJmNzk3MGFfdGdfY29uZmlnX2ZyYW1pbmcoKSBiZWNhdXNlIHRoZSBmcmFtaW5nIGNhbiBjaGFuZ2VcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE2NDktXFx0ICogdGhlIHZhbHVlIHdyaXR0ZW4uICBIb3dldmVyLCB3aGVuIHNlbmRpbmcgYSBQU0wgUkVTLFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTY1MC1cXHQgKiBkaWdpdGFsX3RnX3NlbmRfcHNsX3Jlc19jb21wbGV0ZSgpIGRvZXNuJ3QgY2FsbFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTY1MTpcXHQgKiB0cmY3OTcwYV90Z19jb25maWdfZnJhbWluZygpIHNvIHdlIG11c3Qgd3JpdGUgdGhlIHJlZ2lzdGVyXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNjUyLVxcdCAqIGhlcmUuXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE2NTUtXFx0ICAgICh0cmYtXFx1MDAzZWlzb19jdHJsX3RlY2ggIT0gdHJmLVxcdTAwM2Vpc29fY3RybCkpIHtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE2NTY6XFx0XFx0cmV0ID0gdHJmNzk3MGFfdXBkYXRlX2lzb19jdHJsX3JlZ2lzdGVyKHRyZiwgdHJmLVxcdTAwM2Vpc29fY3RybF90ZWNoKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE2NTctXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE2NjktICovXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNjcwOnN0YXRpYyBpbnQgdHJmNzk3MGFfdGdfY29uZmlnX2ZyYW1pbmcoc3RydWN0IHRyZjc5NzBhICp0cmYsIGludCBmcmFtaW5nKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTY3MS17XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE3MDMtXFx0aWYgKGlzb19jdHJsICE9IHRyZi1cXHUwMDNlaXNvX2N0cmwpIHtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE3MDQ6XFx0XFx0cmV0ID0gdHJmNzk3MGFfdXBkYXRlX2lzb19jdHJsX3JlZ2lzdGVyKHRyZiwgaXNvX2N0cmwpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTcwNS1cXHRcXHRpZiAocmV0KVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQyMjozNDozMi4xNDA2ODI3NDlaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1ODM4ODM2Njc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVFJGNzk3MEEgTkZDIERyaXZlcidzIFZpcnR1YWxpemF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYGRyaXZlcnMvbmZjL3RyZjc5NzBhLmNgIOKAkyB0aGF0J3MgdGhlIE5GQyBkcml2ZXIgZm9yIHRoZSBUZXhhcyBJbnN0cnVtZW50cyBUUkY3OTcwQSB0cmFuc2NlaXZlci4gSXQncyBhbiBTUEktYmFzZWQgZHJpdmVyLCB3aGljaCBpbW1lZGlhdGVseSBtYWtlcyB2aXJ0dWFsaXphdGlvbiBhIGJpdCB0cmlja2llci4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhlcmUncyBhIHByYWN0aWNhbCB3YXkgdG8gdGVzdCB0aGlzIHRoaW5nIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQsIGVzcGVjaWFsbHkgdXNpbmcgc29tZXRoaW5nIGxpa2Ugc3l6a2FsbGVyLlxuXG5NeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gc2VlIGlmIHRoZXJlJ3MgYSByZWFkaWx5IGF2YWlsYWJsZSBTUEkgY29udHJvbGxlciBpbiBRRU1VIHRoYXQgc3l6a2FsbGVyIGNhbiBsZXZlcmFnZS4gVGhhdCdzIHVzdWFsbHkgdGhlIGJvdHRsZW5lY2suIEFuZCBob25lc3RseSwgaXQncyByYXJlIHRvIGZpbmQgZGlyZWN0IHN1cHBvcnQgZm9yIGEgc3BlY2lmaWMgZGV2aWNlIGxpa2UgdGhlIFRSRjc5NzBBLiBJIGtub3cgc3l6a2FsbGVyIGhhcyBzb21lIHZpcnR1YWxpemF0aW9uIHRyaWNrcyB1cCBpdHMgc2xlZXZlLiBXZSd2ZSBnb3QgYHZoY2lgIGZvciBVU0IsIGBtYWM4MDIxMV9od3NpbWAgZm9yIFdpRmksIGFuZCBldmVuIGBuZmNzaW1gIGZvciBORkMuLi4gYnV0IGBuZmNzaW1gIGlzIGEgdmlydHVhbCBORkMgZGV2aWNlLCBub3QgYW4gZW11bGF0b3IgZm9yIGEgKnNwZWNpZmljKiB0cmFuc2NlaXZlci4gU28sIGl0J3Mgbm90IGEgZGlyZWN0IG1hdGNoLlxuXG5Ob3csIEknbSB0cnlpbmcgdG8gcmVjYWxsIGlmIHN5emthbGxlciBoYXMgYW55IGRlZGljYXRlZCBTUEkgc2V0dXAgZnVuY3Rpb25zIGxpa2UgYHN5el9zcGlfc2V0dXBgPyBObywgdGhhdCBkb2Vzbid0IHJpbmcgYSBiZWxsLiBXYWl0LCB0aG91Z2gsIGRpZG4ndCB0aGV5IHJlY2VudGx5IGFkZCBzb21lIHJ1ZGltZW50YXJ5IFNQSSBzdXBwb3J0IHRocm91Z2ggYSBkdW1teSBjb250cm9sbGVyPyBUaGF0IG1pZ2h0IGJlIG91ciBrZXkuIEl0J3Mgd29ydGggZGlnZ2luZyBpbnRvIHRoZSByZWNlbnQgY2hhbmdlcy5cblxuQWxyaWdodCwgSSBuZWVkIHRvIGZvY3VzIG9uIHdoYXQgc3l6a2FsbGVyIGtub3dzIGFib3V0IFNQSSBpbiBnZW5lcmFsLCBvciwgbW9yZSBzcGVjaWZpY2FsbHksIGFueSBtZW50aW9ucyBvZiB0aGUgVFJGNzk3MEEuIFRpbWUgdG8gc2VhcmNoIHRoZSBkZXNjcmlwdGlvbnMgYW5kIHNlZSB3aGF0IGNvbWVzIHVwLiBUaGF0J3MgdGhlIGJlc3Qgcm91dGUgZm9yIGdldHRpbmcgc3RhcnRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTY0ODcsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMjI6MzQ6MzcuOTc5NTIyNzk0WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0MTQ2MjE4NDQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidHJmNzk3MGFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgODI0IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sLTMtLS0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvdGksdHJmNzk3MGEueWFtbDo0OiRpZDogaHR0cDovL2RldmljZXRyZWUub3JnL3NjaGVtYXMvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sI1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbmZjL3RpLHRyZjc5NzBhLnlhbWwtNS0kc2NoZW1hOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvbWV0YS1zY2hlbWFzL2NvcmUueWFtbCNcXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbmZjL3RpLHRyZjc5NzBhLnlhbWw9MTM9cHJvcGVydGllczpcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sLTE0LSAgY29tcGF0aWJsZTpcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sOjE1OiAgICBjb25zdDogdGksdHJmNzk3MGFcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sLTE2LVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvdGksdHJmNzk3MGEueWFtbC0yMy0gICAgZGVzY3JpcHRpb246IHxcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sOjI0OiAgICAgIFNldCB0byBzcGVjaWZ5IHRoYXQgdGhlIGlucHV0IGZyZXF1ZW5jeSB0byB0aGUgdHJmNzk3MGEgaXMgMTM1NjAwMDBIeiBvclxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbmZjL3RpLHRyZjc5NzBhLnlhbWwtMjUtICAgICAgMjcxMjAwMDBIelxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvdGksdHJmNzk3MGEueWFtbC0yOS0gICAgZGVzY3JpcHRpb246IHxcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sOjMwOiAgICAgIFNwZWNpZnkgdGhhdCB0aGUgdHJmNzk3MGEgYmVpbmcgdXNlZCBoYXMgdGhlIFxcXCJFTjIgUkZcXFwiIGVycmF0dW1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sLTMxLVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvdGksdHJmNzk3MGEueWFtbC0zNy0gICAgZGVzY3JpcHRpb246IHxcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sOjM4OiAgICAgIFNwZWNpZnkgdGhhdCB0aGUgdHJmNzk3MGEgYmVpbmcgdXNlZCBoYXMgdGhlIFxcXCJJUlEgU3RhdHVzIFJlYWRcXFwiIGVycmF0dW1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sLTM5LVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvdGksdHJmNzk3MGEueWFtbD03Nz1leGFtcGxlczpcXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbmZjL3RpLHRyZjc5NzBhLnlhbWwtODYtICAgICAgICBuZmNAMCB7XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvdGksdHJmNzk3MGEueWFtbDo4NzogICAgICAgICAgICBjb21wYXRpYmxlID0gXFxcInRpLHRyZjc5NzBhXFxcIjtcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sLTg4LSAgICAgICAgICAgIHJlZyA9IFxcdTAwM2MwXFx1MDAzZTtcXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbmZjL3RpLHRyZjc5NzBhLnlhbWwtOTAtICAgICAgICAgICAgcGluY3RybC1uYW1lcyA9IFxcXCJkZWZhdWx0XFxcIjtcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sOjkxOiAgICAgICAgICAgIHBpbmN0cmwtMCA9IFxcdTAwM2NcXHUwMDI2dHJmNzk3MGFfZGVmYXVsdFxcdTAwM2U7XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvdGksdHJmNzk3MGEueWFtbC05Mi0gICAgICAgICAgICBzcGktbWF4LWZyZXF1ZW5jeSA9IFxcdTAwM2MyMDAwMDAwXFx1MDAzZTtcXG4tLVxcbk1BSU5UQUlORVJTPTI3MTczPVM6XFx0U3VwcG9ydGVkXFxuTUFJTlRBSU5FUlM6MjcxNzQ6RjpcXHREb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sXFxuTUFJTlRBSU5FUlM6MjcxNzU6RjpcXHRkcml2ZXJzL25mYy90cmY3OTcwYS5jXFxuTUFJTlRBSU5FUlMtMjcxNzYtXFxuLS1cXG5hcmNoL2FybS9ib290L2R0cy9ueHAvaW14L2lteDZkbC1wcnRydnQuZHRzPTYwPVxcdG5mY0AwIHtcXG5hcmNoL2FybS9ib290L2R0cy9ueHAvaW14L2lteDZkbC1wcnRydnQuZHRzOjYxOlxcdFxcdGNvbXBhdGlibGUgPSBcXFwidGksdHJmNzk3MGFcXFwiO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NmRsLXBydHJ2dC5kdHMtNjItXFx0XFx0cmVnID0gXFx1MDAzYzBcXHUwMDNlO1xcbi0tXFxuZHJpdmVycy9uZmMvS2NvbmZpZz05PWNvbmZpZyBORkNfVFJGNzk3MEFcXG4tLVxcbmRyaXZlcnMvbmZjL0tjb25maWctMTgtXFx0ICBzYXkgTSAgdG8gY29tcGlsZSBpdCBhcyBhIG1vZHVsZS4gVGhlIG1vZHVsZSB3aWxsIGJlIGNhbGxlZFxcbmRyaXZlcnMvbmZjL0tjb25maWc6MTk6XFx0ICB0cmY3OTcwYS5rby5cXG5kcml2ZXJzL25mYy9LY29uZmlnLTIwLVxcbi0tXFxuZHJpdmVycy9uZmMvTWFrZWZpbGU9MTM9b2JqLSQoQ09ORklHX05GQ19NUlZMKVxcdFxcdCs9IG5mY21ydmwvXFxuZHJpdmVycy9uZmMvTWFrZWZpbGU6MTQ6b2JqLSQoQ09ORklHX05GQ19UUkY3OTcwQSlcXHQrPSB0cmY3OTcwYS5vXFxuZHJpdmVycy9uZmMvTWFrZWZpbGUtMTUtb2JqLSQoQ09ORklHX05GQ19TVDIxTkZDQSkgIFxcdCs9IHN0MjFuZmNhL1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0yNy1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjI4Oi8qIFRoZXJlIGFyZSAzIHdheXMgdGhlIGhvc3QgY2FuIGNvbW11bmljYXRlIHdpdGggdGhlIHRyZjc5NzBhOlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMjktICogcGFyYWxsZWwgbW9kZSwgU1BJIHdpdGggU2xhdmUgU2VsZWN0IChTUykgbW9kZSwgYW5kIFNQSSB3aXRob3V0XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTMxLSAqXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzozMjogKiBUaGUgdHJmNzk3MGEgaXMgdmVyeSB0aW1pbmcgc2Vuc2l0aXZlIGFuZCB0aGUgVklOLCBFTjIsIGFuZCBFTlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMzMtICogcGlucyBtdXN0IGFzc2VydGVkIGluIHRoYXQgb3JkZXIgYW5kIHdpdGggc3BlY2lmaWMgZGVsYXlzIGluIGJldHdlZW4uXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTM1LSAqIGNvbmZpcm1lZCB0byB3b3JrIHdpdGggdGhpcyBkcml2ZXIuICBUaGVyZSBpcyBhIGJ1ZyB3aXRoIHRoZSBjdXJyZW50XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzozNjogKiB2ZXJzaW9uIG9mIHRoZSB0cmY3OTcwYSB0aGF0IHJlcXVpcmVzIHRoYXQgRU4yIHJlbWFpbiBsb3cgbm8gbWF0dGVyXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0zNy0gKiB3aGF0LiAgSWYgaXQgZ29lcyBoaWdoLCBpdCB3aWxsIGdlbmVyYXRlIGFuIFJGIGZpZWxkIGV2ZW4gd2hlbiBpblxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0zOS0gKiB3aGVuIEVOMiBpcyBsZWZ0IGxvdy4gIFRoZSAnZW4yLXJmLXF1aXJrJyBkZXZpY2UgdHJlZSBwcm9wZXJ0eVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NDA6ICogaW5kaWNhdGVzIHRoYXQgdHJmNzk3MGEgY3VycmVudGx5IGJlaW5nIHVzZWQgaGFzIHRoZSBlcnJhdHVtIGFuZFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDEtICogdGhhdCBFTjIgbXVzdCBiZSBrZXB0IGxvdy5cXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDQtICogVGltZW91dHMgYXJlIHJlcXVpcmVkIHNvIHRoaW5ncyBkb24ndCBoYW5nIHdoZW4gdGhlcmUgaXMgbm8gcmVzcG9uc2VcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjQ1OiAqIGZyb20gdGhlIHRyZjc5NzBhIChvciB0YWcpLiAgVXNpbmcgdGhpcyBtZWNoYW5pc20gY3JlYXRlcyBhIHJhY2Ugd2l0aFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDYtICogaW50ZXJydXB0cywgaG93ZXZlci4gIFRoYXQgaXMsIGFuIGludGVycnVwdCBhbmQgYSB0aW1lb3V0IGNvdWxkIG9jY3VyXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTYwLSAqIHRoZSBlbnRpcmUgYW50aWNvbGxpc2lvbiBwcm9jZWR1cmUgYWdhaW4gYnV0IHRoZSBkaWdpdGFsIGxheWVyIGRvZXNuJ3RcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjYxOiAqIHN1cHBvcnQgdGhhdC4gIFNvLCBpZiBhbiBhYm9ydCBpcyByZWNlaXZlZCBiZWZvcmUgdHJmNzk3MGFfc2VuZF9jbWQoKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjItICogaGFzIHNlbnQgdGhlIGNvbW1hbmQgdG8gdGhlIHRhZywgaXQgc2ltcGx5IHJldHVybnMgLUVDQU5DRUxFRC4gIElmIHRoZVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05Ni0gKiB3aGVuIHRoZSBmcmFtaW5nIGlzICdORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfVDJUJy4gIFRoaXMgaXMgZG9uZSBieVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTc6ICogdGhlIHRyZjc5NzBhX3Blcl9jbWRfY29uZmlnKCkgcm91dGluZS5cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk4LSAqXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0NC0vKiBRdWlya3MgKi9cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE0NTovKiBFcnJhdHVtOiBXaGVuIHJlYWRpbmcgSVJRIFN0YXR1cyByZWdpc3RlciBvbiB0cmY3OTcwYSwgd2UgbXVzdCBpc3N1ZSBhXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDYtICogcmVhZCBjb250aW51b3VzIGNvbW1hbmQgZm9yIElSUSBTdGF0dXMgYW5kIENvbGxpc2lvbiBQb3NpdGlvbiByZWdpc3RlcnMuXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTQxNS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjQxNjplbnVtIHRyZjc5NzBhX3N0YXRlIHtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTQxNy1cXHRUUkY3OTcwQV9TVF9QV1JfT0ZGLFxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy00MjktXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo0MzA6c3RydWN0IHRyZjc5NzBhIHtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjQzMTpcXHRlbnVtIHRyZjc5NzBhX3N0YXRlXFx0XFx0c3RhdGU7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy00MzItXFx0c3RydWN0IGRldmljZVxcdFxcdFxcdCpkZXY7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTQ2NS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjQ2NjpzdGF0aWMgaW50IHRyZjc5NzBhX2NtZChzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgdTggb3Bjb2RlKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDY3LXtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDc5LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NDgwOnN0YXRpYyBpbnQgdHJmNzk3MGFfcmVhZChzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgdTggcmVnLCB1OCAqdmFsKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDgxLXtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDk0LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NDk1OnN0YXRpYyBpbnQgdHJmNzk3MGFfcmVhZF9jb250KHN0cnVjdCB0cmY3OTcwYSAqdHJmLCB1OCByZWcsIHU4ICpidWYsXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy00OTYtXFx0XFx0XFx0ICAgICAgc2l6ZV90IGxlbilcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTIzLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NTI0OnN0YXRpYyBpbnQgdHJmNzk3MGFfd3JpdGUoc3RydWN0IHRyZjc5NzBhICp0cmYsIHU4IHJlZywgdTggdmFsKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTI1LXtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTM4LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NTM5OnN0YXRpYyBpbnQgdHJmNzk3MGFfcmVhZF9pcnFzdGF0dXMoc3RydWN0IHRyZjc5NzBhICp0cmYsIHU4ICpzdGF0dXMpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01NDAte1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01NjItXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo1NjM6c3RhdGljIGludCB0cmY3OTcwYV91cGRhdGVfcnhfZ2Fpbl9yZWR1Y3Rpb24oc3RydWN0IHRyZjc5NzBhICp0cmYpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01NjQte1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01NzAtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo1NzE6XFx0cmV0ID0gdHJmNzk3MGFfcmVhZCh0cmYsIFRSRjc5NzBBX1JYX1NQRUNJQUxfU0VUVElOR1MsIFxcdTAwMjZyZWcpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTcyLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTU3Ni1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjU3NzpcXHRyZXQgPSB0cmY3OTcwYV93cml0ZSh0cmYsIFRSRjc5NzBBX1JYX1NQRUNJQUxfU0VUVElOR1MsIHJlZyk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01NzgtXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTU4MS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjU4MjpzdGF0aWMgaW50IHRyZjc5NzBhX3VwZGF0ZV9pc29fY3RybF9yZWdpc3RlcihzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgdTggaXNvX2N0cmwpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01ODMte1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01ODUtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo1ODY6XFx0cmV0ID0gdHJmNzk3MGFfd3JpdGUodHJmLCBUUkY3OTcwQV9JU09fQ1RSTCwgaXNvX2N0cmwpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTg3LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTU5Mi1cXHQgKi9cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjU5MzpcXHRyZXQgPSB0cmY3OTcwYV91cGRhdGVfcnhfZ2Fpbl9yZWR1Y3Rpb24odHJmKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTU5NC1cXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTk3LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NTk4OnN0YXRpYyBpbnQgdHJmNzk3MGFfcmVhZF90YXJnZXRfcHJvdG8oc3RydWN0IHRyZjc5NzBhICp0cmYsIHU4ICp0YXJnZXRfcHJvdG8pXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01OTkte1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02MTYtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo2MTc6c3RhdGljIGludCB0cmY3OTcwYV9tb2RlX2RldGVjdChzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgdTggKnJmX3RlY2gpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02MTgte1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02MjEtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo2MjI6XFx0cmV0ID0gdHJmNzk3MGFfcmVhZF90YXJnZXRfcHJvdG8odHJmLCBcXHUwMDI2dGFyZ2V0X3Byb3RvKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTYyMy1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02NDktXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo2NTA6c3RhdGljIHZvaWQgdHJmNzk3MGFfc2VuZF91cHN0cmVhbShzdHJ1Y3QgdHJmNzk3MGEgKnRyZilcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTY1MS17XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTY1NS1cXHRpZiAodHJmLVxcdTAwM2VyeF9za2IgXFx1MDAyNlxcdTAwMjYgIUlTX0VSUih0cmYtXFx1MDAzZXJ4X3NrYikgXFx1MDAyNlxcdTAwMjYgIXRyZi1cXHUwMDNlYWJvcnRpbmcpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo2NTY6XFx0XFx0cHJpbnRfaGV4X2R1bXBfZGVidWcoXFxcInRyZjc5NzBhIHJ4IGRhdGE6IFxcXCIsIERVTVBfUFJFRklYX05PTkUsXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02NTctXFx0XFx0XFx0XFx0ICAgICAxNiwgMSwgdHJmLVxcdTAwM2VyeF9za2ItXFx1MDAzZWRhdGEsIHRyZi1cXHUwMDNlcnhfc2tiLVxcdTAwM2VsZW4sXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTY3Ny1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjY3ODpzdGF0aWMgdm9pZCB0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbShzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgaW50IGVycm5vKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjc5LXtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjg2LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6Njg3OlxcdHRyZjc5NzBhX3NlbmRfdXBzdHJlYW0odHJmKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTY4OC19XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02ODktXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo2OTA6c3RhdGljIGludCB0cmY3OTcwYV90cmFuc21pdChzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTY5MS1cXHRcXHRcXHQgICAgIHVuc2lnbmVkIGludCBsZW4sIGNvbnN0IHU4ICpwcmVmaXgsXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTY5OC1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjY5OTpcXHRwcmludF9oZXhfZHVtcF9kZWJ1ZyhcXFwidHJmNzk3MGEgdHggZGF0YTogXFxcIiwgRFVNUF9QUkVGSVhfTk9ORSxcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTcwMC1cXHRcXHRcXHQgICAgIDE2LCAxLCBza2ItXFx1MDAzZWRhdGEsIGxlbiwgZmFsc2UpO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03NDctXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo3NDg6c3RhdGljIHZvaWQgdHJmNzk3MGFfZmlsbF9maWZvKHN0cnVjdCB0cmY3OTcwYSAqdHJmKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzQ5LXtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzU1LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NzU2OlxcdHJldCA9IHRyZjc5NzBhX3JlYWQodHJmLCBUUkY3OTcwQV9GSUZPX1NUQVRVUywgXFx1MDAyNmZpZm9fYnl0ZXMpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzU3LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjc1ODpcXHRcXHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIHJldCk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03NTktXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03NzctXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo3Nzg6XFx0cmV0ID0gdHJmNzk3MGFfdHJhbnNtaXQodHJmLCBza2IsIGxlbiwgXFx1MDAyNnByZWZpeCwgc2l6ZW9mKHByZWZpeCkpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzc5LVxcdGlmIChyZXQpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo3ODA6XFx0XFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCByZXQpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzgxLX1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTc4Mi1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjc4MzpzdGF0aWMgdm9pZCB0cmY3OTcwYV9kcmFpbl9maWZvKHN0cnVjdCB0cmY3OTcwYSAqdHJmLCB1OCBzdGF0dXMpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03ODQte1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03ODktXFx0aWYgKHN0YXR1cyBcXHUwMDI2IFRSRjc5NzBBX0lSUV9TVEFUVVNfRVJST1IpIHtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjc5MDpcXHRcXHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIC1FSU8pO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzkxLVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzkzLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6Nzk0OlxcdHJldCA9IHRyZjc5NzBhX3JlYWQodHJmLCBUUkY3OTcwQV9GSUZPX1NUQVRVUywgXFx1MDAyNmZpZm9fYnl0ZXMpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzk1LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjc5NjpcXHRcXHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIHJldCk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03OTctXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04MTItXFx0XFx0aWYgKCFza2IpIHtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjgxMzpcXHRcXHRcXHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIC1FTk9NRU0pO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODE0LVxcdFxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODIwLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6ODIxOlxcdHJldCA9IHRyZjc5NzBhX3JlYWRfY29udCh0cmYsIFRSRjc5NzBBX0ZJRk9fSU9fUkVHSVNURVIsXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04MjItXFx0XFx0XFx0XFx0IHNrYl9wdXQoc2tiLCBmaWZvX2J5dGVzKSwgZmlmb19ieXRlcyk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04MjMtXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6ODI0OlxcdFxcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgcmV0KTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTgyNS1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTgzNS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjgzNjpcXHRcXHRyZXQgPSB0cmY3OTcwYV9yZWFkKHRyZiwgVFJGNzk3MEFfRklGT19TVEFUVVMsIFxcdTAwMjZmaWZvX2J5dGVzKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTgzNy1cXHRcXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo4Mzg6XFx0XFx0XFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCByZXQpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODM5LVxcdFxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODQ1LVxcdFxcdCAqIHRoZSBpZiBzdG10IGJlbG93IGRvZXNuJ3QgZmlyZSBhbmQgdGhlIGRyaXZlciB3aWxsIHdhaXRcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjg0NjpcXHRcXHQgKiBmb3IgdGhlIHRyZjc5NzBhIHRvIGdlbmVyYXRlIGFub3RoZXIgUlggaW50ZXJydXB0LlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODQ3LVxcdFxcdCAqL1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04NTMtXFx0aWYgKHN0YXR1cyA9PSBUUkY3OTcwQV9JUlFfU1RBVFVTX1NSWCkge1xcdC8qIFJlY2VpdmUgY29tcGxldGUgKi9cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjg1NDpcXHRcXHR0cmY3OTcwYV9zZW5kX3Vwc3RyZWFtKHRyZik7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04NTUtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04NjQtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo4NjU6c3RhdGljIGlycXJldHVybl90IHRyZjc5NzBhX2lycShpbnQgaXJxLCB2b2lkICpkZXZfaWQpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04NjYte1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6ODY3OlxcdHN0cnVjdCB0cmY3OTcwYSAqdHJmID0gZGV2X2lkO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODY4LVxcdGludCByZXQ7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTg3Ny1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjg3ODpcXHRyZXQgPSB0cmY3OTcwYV9yZWFkX2lycXN0YXR1cyh0cmYsIFxcdTAwMjZzdGF0dXMpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODc5LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODk2LVxcdFxcdCAqIHR1cm4gb2ZmIHRoZSByZWNlaXZlciB0byBhdm9pZCB1bm5lY2Vzc2FyeSBpbnRlcnJ1cHRzLlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6ODk3OlxcdFxcdCAqIEl0IHdpbGwgYmUgdHVybmVkIGJhY2sgb24gaW4gdHJmNzk3MGFfc2VuZF9jbWQoKSB3aGVuXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04OTgtXFx0XFx0ICogdGhlIG5leHQgY29tbWFuZCBpcyBpc3N1ZWQuXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkwMC1cXHRcXHRpZiAodHJmLVxcdTAwM2Vpc19pbml0aWF0b3IgXFx1MDAyNlxcdTAwMjYgKHN0YXR1cyBcXHUwMDI2IFRSRjc5NzBBX0lSUV9TVEFUVVNfRVJST1IpKSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5MDE6XFx0XFx0XFx0dHJmNzk3MGFfY21kKHRyZiwgVFJGNzk3MEFfQ01EX0JMT0NLX1JYKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkwMi1cXHRcXHRcXHR0cmYtXFx1MDAzZXN0YXRlID0gVFJGNzk3MEFfU1RfSURMRV9SWF9CTE9DS0VEO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05MDQtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5MDU6XFx0XFx0dHJmNzk3MGFfY21kKHRyZiwgVFJGNzk3MEFfQ01EX0ZJRk9fUkVTRVQpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTA2LVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05MTAtXFx0XFx0XFx0ICAgICFjYW5jZWxfZGVsYXllZF93b3JrKFxcdTAwMjZ0cmYtXFx1MDAzZXRpbWVvdXRfd29yayk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5MTE6XFx0XFx0XFx0dHJmNzk3MGFfZmlsbF9maWZvKHRyZik7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05MTItXFx0XFx0fSBlbHNlIHtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjkxMzpcXHRcXHRcXHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIC1FSU8pO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTE0LVxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTIwLVxcdFxcdFxcdCAgICAhY2FuY2VsX2RlbGF5ZWRfd29yayhcXHUwMDI2dHJmLVxcdTAwM2V0aW1lb3V0X3dvcmspO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTIxOlxcdFxcdFxcdHRyZjc5NzBhX2RyYWluX2ZpZm8odHJmLCBzdGF0dXMpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTIyLVxcdFxcdH0gZWxzZSBpZiAoc3RhdHVzIFxcdTAwMjYgVFJGNzk3MEFfSVJRX1NUQVRVU19GSUZPKSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5MjM6XFx0XFx0XFx0cmV0ID0gdHJmNzk3MGFfcmVhZCh0cmYsIFRSRjc5NzBBX0ZJRk9fU1RBVFVTLFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTI0LVxcdFxcdFxcdFxcdFxcdCAgICBcXHUwMDI2Zmlmb19ieXRlcyk7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkyOC1cXHRcXHRcXHRpZiAocmV0KVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTI5OlxcdFxcdFxcdFxcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgcmV0KTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkzMC1cXHRcXHRcXHRlbHNlIGlmICghZmlmb19ieXRlcylcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjkzMTpcXHRcXHRcXHRcXHR0cmY3OTcwYV9jbWQodHJmLCBUUkY3OTcwQV9DTURfRklGT19SRVNFVCk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05MzItXFx0XFx0fSBlbHNlIGlmICgoc3RhdHVzID09IFRSRjc5NzBBX0lSUV9TVEFUVVNfVFgpIHx8XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkzNS1cXHRcXHRcXHRcXHRcXHRUUkY3OTcwQV9JUlFfU1RBVFVTX05GQ19SRikpKSkge1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTM2OlxcdFxcdFxcdHRyZjc5NzBhX2NtZCh0cmYsIFRSRjc5NzBBX0NNRF9GSUZPX1JFU0VUKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkzNy1cXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTQxLVxcdFxcdFxcdFxcdHRyZi1cXHUwMDNlcnhfc2tiID0gRVJSX1BUUigwKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjk0MjpcXHRcXHRcXHRcXHR0cmY3OTcwYV9zZW5kX3Vwc3RyZWFtKHRyZik7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05NDMtXFx0XFx0XFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk2Mi1cXHRcXHRcXHRjYXNlIE5GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9BTlRJQ09MX0NPTVBMRVRFOlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTYzOlxcdFxcdFxcdFxcdHJldCA9IHRyZjc5NzBhX3dyaXRlKHRyZixcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk2NC1cXHRcXHRcXHRcXHRcXHQgVFJGNzk3MEFfU1BFQ0lBTF9GQ05fUkVHMSxcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTc2LVxcdFxcdFxcdGlmIChpc29fY3RybCAhPSB0cmYtXFx1MDAzZWlzb19jdHJsKSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5Nzc6XFx0XFx0XFx0XFx0cmV0ID0gdHJmNzk3MGFfdXBkYXRlX2lzb19jdHJsX3JlZ2lzdGVyKHRyZiwgaXNvX2N0cmwpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTc4LVxcdFxcdFxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk4My1cXHRcXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTg0OlxcdFxcdFxcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgLUVJTyk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05ODUtXFx0XFx0fVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05ODgtXFx0XFx0aWYgKHN0YXR1cyAhPSBUUkY3OTcwQV9JUlFfU1RBVFVTX1RYKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTg5OlxcdFxcdFxcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgLUVJTyk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05OTAtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk5NC1cXHRcXHRcXHQgICAgIWNhbmNlbF9kZWxheWVkX3dvcmsoXFx1MDAyNnRyZi1cXHUwMDNldGltZW91dF93b3JrKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjk5NTpcXHRcXHRcXHR0cmY3OTcwYV9kcmFpbl9maWZvKHRyZiwgc3RhdHVzKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk5Ni1cXHRcXHR9IGVsc2UgaWYgKCEoc3RhdHVzIFxcdTAwMjYgVFJGNzk3MEFfSVJRX1NUQVRVU19ORkNfUkYpKSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5OTc6XFx0XFx0XFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCAtRUlPKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk5OC1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwMDQtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDA1OlxcdFxcdFxcdHJldCA9IHRyZjc5NzBhX21vZGVfZGV0ZWN0KHRyZiwgXFx1MDAyNnRyZi1cXHUwMDNlbWRfcmZfdGVjaCk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDA2LVxcdFxcdFxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwMDc6XFx0XFx0XFx0XFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCByZXQpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAwOC1cXHRcXHRcXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAwOS1cXHRcXHRcXHRcXHR0cmYtXFx1MDAzZXN0YXRlID0gVFJGNzk3MEFfU1RfTElTVEVOSU5HO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTAxMDpcXHRcXHRcXHRcXHR0cmY3OTcwYV9kcmFpbl9maWZvKHRyZiwgc3RhdHVzKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwMTEtXFx0XFx0XFx0fVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAxMi1cXHRcXHR9IGVsc2UgaWYgKCEoc3RhdHVzIFxcdTAwMjYgVFJGNzk3MEFfSVJRX1NUQVRVU19ORkNfUkYpKSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDEzOlxcdFxcdFxcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgLUVJTyk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDE0LVxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAyNS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwMjY6c3RhdGljIHZvaWQgdHJmNzk3MGFfaXNzdWVfZW9mKHN0cnVjdCB0cmY3OTcwYSAqdHJmKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAyNy17XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwMzEtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDMyOlxcdHJldCA9IHRyZjc5NzBhX2NtZCh0cmYsIFRSRjc5NzBBX0NNRF9GSUZPX1JFU0VUKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwMzMtXFx0aWYgKHJldClcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwMzQ6XFx0XFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCByZXQpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAzNS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwMzY6XFx0cmV0ID0gdHJmNzk3MGFfY21kKHRyZiwgVFJGNzk3MEFfQ01EX0VPRik7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDM3LVxcdGlmIChyZXQpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDM4OlxcdFxcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgcmV0KTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwMzktXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwNDgtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDQ5OnN0YXRpYyB2b2lkIHRyZjc5NzBhX3RpbWVvdXRfd29ya19oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwNTAte1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTA1MTpcXHRzdHJ1Y3QgdHJmNzk3MGEgKnRyZiA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgdHJmNzk3MGEsXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDUyLVxcdFxcdFxcdFxcdFxcdCAgICB0aW1lb3V0X3dvcmsud29yayk7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwNjEtXFx0ZWxzZSBpZiAodHJmLVxcdTAwM2VzdGF0ZSA9PSBUUkY3OTcwQV9TVF9XQUlUX0ZPUl9SWF9EQVRBX0NPTlQpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDYyOlxcdFxcdHRyZjc5NzBhX2RyYWluX2ZpZm8odHJmLCBUUkY3OTcwQV9JUlFfU1RBVFVTX1NSWCk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDYzLVxcdGVsc2UgaWYgKHRyZi1cXHUwMDNlc3RhdGUgPT0gVFJGNzk3MEFfU1RfV0FJVF9UT19JU1NVRV9FT0YpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDY0OlxcdFxcdHRyZjc5NzBhX2lzc3VlX2VvZih0cmYpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA2NS1cXHRlbHNlXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDY2OlxcdFxcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgLUVUSU1FRE9VVCk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDY3LVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDcwLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTA3MTpzdGF0aWMgaW50IHRyZjc5NzBhX2luaXQoc3RydWN0IHRyZjc5NzBhICp0cmYpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDcyLXtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA3Ni1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwNzc6XFx0cmV0ID0gdHJmNzk3MGFfY21kKHRyZiwgVFJGNzk3MEFfQ01EX1NPRlRfSU5JVCk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDc4LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwODEtXFx0LyogU2V0IHRoZSBnYWluIHJlZHVjdGlvbiBhZnRlciBzb2Z0IGluaXQgKi9cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwODI6XFx0cmV0ID0gdHJmNzk3MGFfdXBkYXRlX3J4X2dhaW5fcmVkdWN0aW9uKHRyZik7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDgzLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwODUtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDg2OlxcdHJldCA9IHRyZjc5NzBhX2NtZCh0cmYsIFRSRjc5NzBBX0NNRF9JRExFKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwODctXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA4OS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwOTA6XFx0cmV0ID0gdHJmNzk3MGFfd3JpdGUodHJmLCBUUkY3OTcwQV9SRUdfSU9fQ1RSTCxcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwOTEtXFx0XFx0XFx0ICAgICB0cmYtXFx1MDAzZWlvX2N0cmwgfCBUUkY3OTcwQV9SRUdfSU9fQ1RSTF9WUlMoMHgxKSk7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwOTQtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDk1OlxcdHJldCA9IHRyZjc5NzBhX3dyaXRlKHRyZiwgVFJGNzk3MEFfTkZDX1RBUkdFVF9MRVZFTCwgMCk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDk2LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExMDItXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMTAzOlxcdHJldCA9IHRyZjc5NzBhX3dyaXRlKHRyZiwgVFJGNzk3MEFfTU9EVUxBVE9SX1NZU19DTEtfQ1RSTCxcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExMDQtXFx0XFx0XFx0ICAgICB0cmYtXFx1MDAzZW1vZHVsYXRvcl9zeXNfY2xrX2N0cmwpO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTA3LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTEwODpcXHRyZXQgPSB0cmY3OTcwYV93cml0ZSh0cmYsIFRSRjc5NzBBX0FESlVUQUJMRV9GSUZPX0lSUV9MRVZFTFMsXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTA5LVxcdFxcdFxcdCAgICAgVFJGNzk3MEFfQURKVVRBQkxFX0ZJRk9fSVJRX0xFVkVMU19XTEhfOTYgfFxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTEzLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTExNDpcXHRyZXQgPSB0cmY3OTcwYV93cml0ZSh0cmYsIFRSRjc5NzBBX1NQRUNJQUxfRkNOX1JFRzEsIDApO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTExNS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTI3LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTEyODpzdGF0aWMgdm9pZCB0cmY3OTcwYV9zd2l0Y2hfcmZfb2ZmKHN0cnVjdCB0cmY3OTcwYSAqdHJmKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTEyOS17XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExMzctXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMTM4OlxcdHRyZjc5NzBhX3dyaXRlKHRyZiwgVFJGNzk3MEFfQ0hJUF9TVEFUVVNfQ1RSTCwgdHJmLVxcdTAwM2VjaGlwX3N0YXR1c19jdHJsKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExMzktXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExNDYtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMTQ3OnN0YXRpYyBpbnQgdHJmNzk3MGFfc3dpdGNoX3JmX29uKHN0cnVjdCB0cmY3OTcwYSAqdHJmKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTE0OC17XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExNjAtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMTYxOlxcdHJldCA9IHRyZjc5NzBhX2luaXQodHJmKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExNjItXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTcxLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTE3MjpzdGF0aWMgaW50IHRyZjc5NzBhX3N3aXRjaF9yZihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBib29sIG9uKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTE3My17XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMTc0OlxcdHN0cnVjdCB0cmY3OTcwYSAqdHJmID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTc1LVxcdGludCByZXQgPSAwO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTg0LVxcdFxcdGNhc2UgVFJGNzk3MEFfU1RfUkZfT0ZGOlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTE4NTpcXHRcXHRcXHRyZXQgPSB0cmY3OTcwYV9zd2l0Y2hfcmZfb24odHJmKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExODYtXFx0XFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExOTItXFx0XFx0XFx0XFx0X19mdW5jX18sIHRyZi1cXHUwMDNlc3RhdGUsIG9uKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjExOTM6XFx0XFx0XFx0dHJmNzk3MGFfc3dpdGNoX3JmX29mZih0cmYpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTE5NC1cXHRcXHRcXHRyZXQgPSAtRUlOVkFMO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjA5LVxcdFxcdGNhc2UgVFJGNzk3MEFfU1RfV0FJVF9GT1JfUlhfREFUQV9DT05UOlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTIxMDpcXHRcXHRcXHR0cmY3OTcwYV9zd2l0Y2hfcmZfb2ZmKHRyZik7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjExLVxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTIxNy1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEyMTg6c3RhdGljIGludCB0cmY3OTcwYV9pbl9jb25maWdfcmZfdGVjaChzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgaW50IHRlY2gpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjE5LXtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI2OC1cXHQgKiBQU0wgc2VxdWVuY2UgKGluZGljYXRlZCBieSAndHJmLVxcdTAwM2Vpc29fY3RybCA9PSAweGZmJyBmcm9tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMjY5OlxcdCAqIHRyZjc5NzBhX2luaXQoKSksIGNsZWFyIHRoZSBORkMgVGFyZ2V0IERldGVjdGlvbiBMZXZlbCByZWdpc3RlclxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI3MC1cXHQgKiBkdWUgdG8gZXJyYXR1bS5cXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI3Mi1cXHRpZiAodHJmLVxcdTAwM2Vpc29fY3RybCA9PSAweGZmKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTI3MzpcXHRcXHRyZXQgPSB0cmY3OTcwYV93cml0ZSh0cmYsIFRSRjc5NzBBX05GQ19UQVJHRVRfTEVWRUwsIDApO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI3NC1cXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI3Ny1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEyNzg6c3RhdGljIGludCB0cmY3OTcwYV9pc19yZl9maWVsZChzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgYm9vbCAqaXNfcmZfZmllbGQpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjc5LXtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI4Mi1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEyODM6XFx0cmV0ID0gdHJmNzk3MGFfd3JpdGUodHJmLCBUUkY3OTcwQV9DSElQX1NUQVRVU19DVFJMLFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI4NC1cXHRcXHRcXHQgICAgIHRyZi1cXHUwMDNlY2hpcF9zdGF0dXNfY3RybCB8XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyODgtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMjg5OlxcdHJldCA9IHRyZjc5NzBhX2NtZCh0cmYsIFRSRjc5NzBBX0NNRF9URVNUX0VYVF9SRik7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjkwLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyOTQtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMjk1OlxcdHJldCA9IHRyZjc5NzBhX3JlYWQodHJmLCBUUkY3OTcwQV9SU1NJX09TQ19TVEFUVVMsIFxcdTAwMjZyc3NpKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyOTYtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI5OC1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEyOTk6XFx0cmV0ID0gdHJmNzk3MGFfd3JpdGUodHJmLCBUUkY3OTcwQV9DSElQX1NUQVRVU19DVFJMLFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTMwMC1cXHRcXHRcXHQgICAgIHRyZi1cXHUwMDNlY2hpcF9zdGF0dXNfY3RybCk7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzMTEtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMzEyOnN0YXRpYyBpbnQgdHJmNzk3MGFfaW5fY29uZmlnX2ZyYW1pbmcoc3RydWN0IHRyZjc5NzBhICp0cmYsIGludCBmcmFtaW5nKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTMxMy17XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzNTAtXFx0aWYgKCEodHJmLVxcdTAwM2VjaGlwX3N0YXR1c19jdHJsIFxcdTAwMjYgVFJGNzk3MEFfQ0hJUF9TVEFUVVNfUkZfT04pKSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMzUxOlxcdFxcdHJldCA9IHRyZjc5NzBhX2lzX3JmX2ZpZWxkKHRyZiwgXFx1MDAyNmlzX3JmX2ZpZWxkKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzNTItXFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTM1OS1cXHRpZiAoaXNvX2N0cmwgIT0gdHJmLVxcdTAwM2Vpc29fY3RybCkge1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTM2MDpcXHRcXHRyZXQgPSB0cmY3OTcwYV91cGRhdGVfaXNvX2N0cmxfcmVnaXN0ZXIodHJmLCBpc29fY3RybCk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzYxLVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzNjUtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMzY2OlxcdFxcdHJldCA9IHRyZjc5NzBhX3dyaXRlKHRyZiwgVFJGNzk3MEFfTU9EVUxBVE9SX1NZU19DTEtfQ1RSTCxcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzNjctXFx0XFx0XFx0XFx0ICAgICB0cmYtXFx1MDAzZW1vZHVsYXRvcl9zeXNfY2xrX2N0cmwpO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzcyLVxcdGlmICghKHRyZi1cXHUwMDNlY2hpcF9zdGF0dXNfY3RybCBcXHUwMDI2IFRSRjc5NzBBX0NISVBfU1RBVFVTX1JGX09OKSkge1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTM3MzpcXHRcXHRyZXQgPSB0cmY3OTcwYV93cml0ZSh0cmYsIFRSRjc5NzBBX0NISVBfU1RBVFVTX0NUUkwsXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzc0LVxcdFxcdFxcdFxcdCAgICAgdHJmLVxcdTAwM2VjaGlwX3N0YXR1c19jdHJsIHxcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTM4Ni1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEzODc6c3RhdGljIGludCB0cmY3OTcwYV9pbl9jb25maWd1cmVfaHcoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgaW50IHR5cGUsXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzg4LVxcdFxcdFxcdFxcdCAgICBpbnQgcGFyYW0pXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzg5LXtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEzOTA6XFx0c3RydWN0IHRyZjc5NzBhICp0cmYgPSBuZmNfZGlnaXRhbF9nZXRfZHJ2ZGF0YShkZGV2KTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzOTEtXFx0aW50IHJldDtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQwMC1cXHQgICAgKHRyZi1cXHUwMDNlc3RhdGUgPT0gVFJGNzk3MEFfU1RfUkZfT0ZGKSkge1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTQwMTpcXHRcXHRyZXQgPSB0cmY3OTcwYV9zd2l0Y2hfcmZfb24odHJmKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0MDItXFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQwNy1cXHRjYXNlIE5GQ19ESUdJVEFMX0NPTkZJR19SRl9URUNIOlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTQwODpcXHRcXHRyZXQgPSB0cmY3OTcwYV9pbl9jb25maWdfcmZfdGVjaCh0cmYsIHBhcmFtKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0MDktXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDEwLVxcdGNhc2UgTkZDX0RJR0lUQUxfQ09ORklHX0ZSQU1JTkc6XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNDExOlxcdFxcdHJldCA9IHRyZjc5NzBhX2luX2NvbmZpZ19mcmFtaW5nKHRyZiwgcGFyYW0pO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQxMi1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQyMi1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE0MjM6c3RhdGljIGludCB0cmY3OTcwYV9pc19pc28xNTY5M193cml0ZV9vcl9sb2NrKHU4IGNtZClcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0MjQte1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDM4LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTQzOTpzdGF0aWMgaW50IHRyZjc5NzBhX3Blcl9jbWRfY29uZmlnKHN0cnVjdCB0cmY3OTcwYSAqdHJmLFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQ0MC1cXHRcXHRcXHRcXHQgICBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDY0LVxcdFxcdGlmIChzcGVjaWFsX2Zjbl9yZWcxICE9IHRyZi1cXHUwMDNlc3BlY2lhbF9mY25fcmVnMSkge1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTQ2NTpcXHRcXHRcXHRyZXQgPSB0cmY3OTcwYV93cml0ZSh0cmYsIFRSRjc5NzBBX1NQRUNJQUxfRkNOX1JFRzEsXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDY2LVxcdFxcdFxcdFxcdFxcdCAgICAgc3BlY2lhbF9mY25fcmVnMSk7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0OTEtXFx0XFx0aWYgKGlzb19jdHJsICE9IHRyZi1cXHUwMDNlaXNvX2N0cmwpIHtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE0OTI6XFx0XFx0XFx0cmV0ID0gdHJmNzk3MGFfdXBkYXRlX2lzb19jdHJsX3JlZ2lzdGVyKHRyZiwgaXNvX2N0cmwpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQ5My1cXHRcXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDk5LVxcdFxcdGlmICgodHJmLVxcdTAwM2VmcmFtaW5nID09IE5GQ19ESUdJVEFMX0ZSQU1JTkdfSVNPMTU2OTNfVDVUKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTUwMDpcXHRcXHQgICAgdHJmNzk3MGFfaXNfaXNvMTU2OTNfd3JpdGVfb3JfbG9jayhyZXFbMV0pIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNTAxLVxcdFxcdCAgICAocmVxWzBdIFxcdTAwMjYgSVNPMTU2OTNfUkVRX0ZMQUdfT1BUSU9OKSlcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTUwNy1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE1MDg6c3RhdGljIGludCB0cmY3OTcwYV9zZW5kX2NtZChzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTUwOS1cXHRcXHRcXHQgICAgIHN0cnVjdCBza19idWZmICpza2IsIHUxNiB0aW1lb3V0LFxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNTExLXtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE1MTI6XFx0c3RydWN0IHRyZjc5NzBhICp0cmYgPSBuZmNfZGlnaXRhbF9nZXRfZHJ2ZGF0YShkZGV2KTtcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMjI6MzQ6NDAuMzk0MTUxODQ3WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjE4ODI1MDcwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIHRoZSBGZWFzaWJpbGl0eSBvZiBUZXN0aW5nIGEgU3BlY2lmaWMgSGFyZHdhcmUgRHJpdmVyKipcblxuT2theSwgc28gSSd2ZSBzdHVtYmxlZCB1cG9uIGBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sYCBhbmQgYGFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NmRsLXBydHJ2dC5kdHNgLiBUaGlzIGlzIGEgcmVhbCwgYm9uYSBmaWRlIGhhcmR3YXJlIGRldmljZSBkcml2ZXIg4oCTIHRoZSBUSSBUUkY3OTcwQSBORkMgY29udHJvbGxlci4gVGhlIGtleSBxdWVzdGlvbiBub3cgaXMsIGNhbiBJIGV2ZW4gKnJlYWNoKiB0aGlzIHRoaW5nIHdpdGhpbiBhIFFFTVUgZW52aXJvbm1lbnQ/IFVuZm9ydHVuYXRlbHksIFFFTVUgZG9lc24ndCBzZWVtIHRvIGhhdmUgZW11bGF0aW9uIGZvciB0aGUgVFJGNzk3MEEuIERhcm4uXG5cblNvLCBpcyB0aGVyZSBhbnkgd2F5IHRvIGluc3RhbnRpYXRlIGl0IHdpdGhvdXQgZGlyZWN0IGhhcmR3YXJlLCBtYXliZSB2aWEgc3lzZnMgb3Igc29tZXRoaW5nIGNsZXZlcj8gR2l2ZW4gdGhhdCBpdCdzIGFuIFNQSSBkZXZpY2UsIHN5c2ZzICptaWdodCogb2ZmZXIgYSBwYXRoLCBidXQgdGhlIHJlYWxpdHkgaXMgaXQgd291bGQgc3RpbGwgbmVlZCB0byBjb21tdW5pY2F0ZSB3aXRoIGEgKnJlYWwqIFNQSSBjb250cm9sbGVyIG9uIHRoZSBzaW11bGF0ZWQgc2lkZS4gVGhhdCBzZWVtcyB1bmxpa2VseS5cblxuV2FpdCBhIHNlY29uZCwgdGhpbmtpbmcgYWJvdXQgaG93IHN5emthbGxlciBoYW5kbGVzIHRoaW5ncy4uLiBJdCBoYXMgYHZoY2lgIGZvciBVU0IsIGFuZCBgbWFjODAyMTFfaHdzaW1gIGZvciBXaUZpLiBTbyB0aGUgcXVlc3Rpb24gaXMsIGRvZXMgc3l6a2FsbGVyIGhhdmUgYW4gU1BJIGVxdWl2YWxlbnQsIHNvbWV0aGluZyBsaWtlIGEgZHVtbXkgY29udHJvbGxlcj8gVGhhdCB3b3VsZCBiZSBpZGVhbC4gTGV0J3Mgc2VlIGlmIHRoZXJlIGlzIGFueSBTUEkgZHVtbXkgZHJpdmVyIGF2YWlsYWJsZSB3aXRoaW4gdGhlIGtlcm5lbCBvciBzeXprYWxsZXIuIFRpbWUgdG8gY2hlY2shXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwNTkyLCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTkxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDIyOjM0OjQ2LjU4MjQwNjQyN1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDM0MjczNTQ2LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzcGktbW9ja1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDIyOjM0OjQ5LjAxNjY5MTgxMloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MzE1Njg4NzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipDb25zaWRlcmluZyBTUEkgVGVzdGluZyBTdHJhdGVnaWVzKipcblxuT2theSwgbGV0J3MgdGhpbmsgYWJvdXQgdGhlIGJlc3Qgd2F5IHRvIGFwcHJvYWNoIHRoaXMuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIFNQSSB0ZXN0IGNvbmZpZ3VyYXRpb24gdG8gdXNlLiBTaG91bGQgSSBzdGFydCB3aXRoIGBzcGktZHVtbXlgPyBUaGF0J3MgYSBjbGFzc2ljIGZvciBnZXR0aW5nIHRoaW5ncyBnb2luZywgYSBsb3ctaGFuZ2luZyBmcnVpdCwgc28gdG8gc3BlYWsuIEl0J3MgZ3JlYXQgZm9yIGluaXRpYWwgYnJpbmctdXAgYW5kIHNhbml0eSBjaGVja3MuIE9yIG1heWJlIGBzcGktbG9vcGJhY2tgIGlzIHRoZSBiZXR0ZXIgY2hvaWNlPyBJJ20gbGVhbmluZyB0b3dhcmRzIGBzcGktbG9vcGJhY2tgIGFzIHRoYXQgb2ZmZXJzIGEgbW9yZSBjb250cm9sbGVkIGVudmlyb25tZW50IHdoZXJlIEknbSB0ZXN0aW5nIHRoZSBUWC9SWCBwYXRoLCB3aGljaCBpcyB2YWx1YWJsZS4gVWx0aW1hdGVseSwgaXQgZGVwZW5kcyBvbiB3aGF0IEknbSB0cnlpbmcgdG8gdmFsaWRhdGUuIEknbGwgdGFrZSBhIG1pbnV0ZSB0byB0aGluayB0aHJvdWdoIHRoZSBwcmlvcml0aWVzIGZvciB0aGlzIHNwZWNpZmljIHRlc3QgY2FzZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzExMjAsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQyMjozNDo1Mi42NDgyNjMzNDNaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5ODUxNjI4MzgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNwaS1kdW1teVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDIyOjM0OjU0LjYzMzQ0MzE4MVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODg5NzM1MjA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEknbSBzcGVha2luZyB0byBhIGZlbGxvdyBleHBlcnQ6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgU1BJIExvb3BiYWNrIFRlc3QqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCB0byBpdC4gTGV0J3Mgc2VlIHdoYXQgd2UndmUgZ290IGluIHRoYXQgYHNwaS1sb29wYmFja2AgdGVzdC4gSSB3YW50IHRvIGRpdmUgaW50byB0aGlzIG5vdyBhbmQgZ2V0IGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2Ygd2hhdCdzIGhhcHBlbmluZy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGNyaXRpY2FsIGVsZW1lbnQgaXMgd29ya2luZyBhcyBpdCBzaG91bGQsIHNvIEknbSBnb2luZyB0byBjYXJlZnVsbHkgYW5hbHl6ZSB3aGF0J3MgaGFwcGVuaW5nIGluIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTMzOSwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDIyOjM0OjU3LjUyMzE4MTU4WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTc0Mjg0NTE4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNwaS1sb29wYmFja1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2luY29tcGxldGUtZGV2aWNlcy55YW1sPTI2PXByb3BlcnRpZXM6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5jb21wbGV0ZS1kZXZpY2VzLnlhbWwtMjQ1LSAgICAgICAgICAtIGdwaW8tdmlydHVzZXJcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5jb21wbGV0ZS1kZXZpY2VzLnlhbWw6MjQ2OiAgICAgICAgICAtIGxpbnV4LHNwaS1sb29wYmFjay10ZXN0XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2luY29tcGxldGUtZGV2aWNlcy55YW1sLTI0Ny0gICAgICAgICAgLSBtYWlsYm94LXRlc3RcXG4tLVxcbmRyaXZlcnMvc3BpL01ha2VmaWxlPTE0PW9iai0kKENPTkZJR19TUElfU1BJREVWKVxcdFxcdCs9IHNwaWRldi5vXFxuZHJpdmVycy9zcGkvTWFrZWZpbGU6MTU6b2JqLSQoQ09ORklHX1NQSV9MT09QQkFDS19URVNUKVxcdFxcdCs9IHNwaS1sb29wYmFjay10ZXN0Lm9cXG5kcml2ZXJzL3NwaS9NYWtlZmlsZS0xNi1cXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1sb29wYmFjay10ZXN0LmMtMi0vKlxcbmRyaXZlcnMvc3BpL3NwaS1sb29wYmFjay10ZXN0LmM6MzogKiAgbGludXgvZHJpdmVycy9zcGkvc3BpLWxvb3BiYWNrLXRlc3QuY1xcbmRyaXZlcnMvc3BpL3NwaS1sb29wYmFjay10ZXN0LmMtNC0gKlxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWxvb3BiYWNrLXRlc3QuYz0zNTc9c3RhdGljIGludCBzcGlfbG9vcGJhY2tfdGVzdF9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWxvb3BiYWNrLXRlc3QuYy0zNzEtXFxuZHJpdmVycy9zcGkvc3BpLWxvb3BiYWNrLXRlc3QuYzozNzI6XFx0ZGV2X2luZm8oXFx1MDAyNnNwaS1cXHUwMDNlZGV2LCBcXFwiRXhlY3V0aW5nIHNwaS1sb29wYmFjay10ZXN0c1xcXFxuXFxcIik7XFxuZHJpdmVycy9zcGkvc3BpLWxvb3BiYWNrLXRlc3QuYy0zNzMtXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktbG9vcGJhY2stdGVzdC5jLTM3NS1cXG5kcml2ZXJzL3NwaS9zcGktbG9vcGJhY2stdGVzdC5jOjM3NjpcXHRkZXZfaW5mbyhcXHUwMDI2c3BpLVxcdTAwM2VkZXYsIFxcXCJGaW5pc2hlZCBzcGktbG9vcGJhY2stdGVzdHMgd2l0aCByZXR1cm46ICVpXFxcXG5cXFwiLFxcbmRyaXZlcnMvc3BpL3NwaS1sb29wYmFjay10ZXN0LmMtMzc3LVxcdFxcdCByZXQpO1xcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWxvb3BiYWNrLXRlc3QuYz0zODM9c3RhdGljIHN0cnVjdCBvZl9kZXZpY2VfaWQgc3BpX2xvb3BiYWNrX3Rlc3Rfb2ZfbWF0Y2hbXSA9IHtcXG5kcml2ZXJzL3NwaS9zcGktbG9vcGJhY2stdGVzdC5jOjM4NDpcXHR7IC5jb21wYXRpYmxlXFx0PSBcXFwibGludXgsc3BpLWxvb3BiYWNrLXRlc3RcXFwiLCB9LFxcbmRyaXZlcnMvc3BpL3NwaS1sb29wYmFjay10ZXN0LmMtMzg1LVxcdHsgfVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWxvb3BiYWNrLXRlc3QuYz0zOTU9c3RhdGljIHN0cnVjdCBzcGlfZHJpdmVyIHNwaV9sb29wYmFja190ZXN0X2RyaXZlciA9IHtcXG5kcml2ZXJzL3NwaS9zcGktbG9vcGJhY2stdGVzdC5jLTM5Ni1cXHQuZHJpdmVyID0ge1xcbmRyaXZlcnMvc3BpL3NwaS1sb29wYmFjay10ZXN0LmM6Mzk3OlxcdFxcdC5uYW1lID0gXFxcInNwaS1sb29wYmFjay10ZXN0XFxcIixcXG5kcml2ZXJzL3NwaS9zcGktbG9vcGJhY2stdGVzdC5jLTM5OC1cXHRcXHQub2ZfbWF0Y2hfdGFibGUgPSBzcGlfbG9vcGJhY2tfdGVzdF9vZl9tYXRjaCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMjI6MzQ6NTkuNDk3NDczOTM3WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwMTE2ODM5ODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiBTUEkgRGV2aWNlIEFjY2Vzc2liaWxpdHkgaW4gU3l6a2FsbGVyKipcblxuT2theSwgc28gaGVyZSdzIHRoZSBkZWFsIHdpdGggU1BJIGRldmljZXMgaW4gc3l6a2FsbGVyLiBGcm9tIG15IHVuZGVyc3RhbmRpbmcsIHRoZXkncmUgZ2VuZXJhbGx5IG9mZi1saW1pdHMgdW5sZXNzIHdlJ3JlIGRlYWxpbmcgd2l0aCBhICpzcGVjaWZpYyogdmlydHVhbCBTUEkgY29udHJvbGxlciB0aGF0IHN5emthbGxlciBpcyBmYW1pbGlhciB3aXRoLiBBbmQgZXZlbiBpZiB3ZSAqZG8qIGhhdmUgdGhhdCB2aXJ0dWFsIGNvbnRyb2xsZXIsIHN5emthbGxlciBuZWVkcyBhIHdheSB0byBpbnN0YW50aWF0ZSB0aGUgcGFydGljdWxhciBTUEkgZGV2aWNlLiBUaGF0IHVzdWFsbHkgbWVhbnMgZGV2aWNlIHRyZWUgb3ZlcmxheXMsIHdoaWNoIHN5emthbGxlciBkb2Vzbid0IGhhbmRsZSBkeW5hbWljYWxseSBmb3IganVzdCBhbnkgZGV2aWNlLCBvciBzb21lIHN5c2ZzIGludGVyZmFjZSwgd2hpY2ggaXMgdW5saWtlbHkgdG8gZXhpc3QuXG5cbkhtbSwgd2FpdC4uLiBpcyB0aGVyZSBzb21ldGhpbmcgbGlrZSBhIGBzcGktbW9ja2Agb3IgYHNwaS1kdW1teWA/IE5vcGUsIGFmdGVyIGEgcXVpY2sgbWVtb3J5IGNoZWNrLCBJIGRvbid0IHJlY2FsbCBzZWVpbmcgYW55dGhpbmcgbGlrZSB0aGF0LiBBaCwgdGhlIGBzcGktbG9vcGJhY2stdGVzdGAgZXhpc3RzLCBidXQgdGhhdCdzIGp1c3QgYSB0ZXN0ICpkcml2ZXIqIOKAkyBub3QgYSBjb250cm9sbGVyLCBzbyBpdCdzIGlycmVsZXZhbnQuXG5cbkFscmlnaHQsIGxldCdzIGdldCBzZXJpb3VzLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB3ZSBhY3R1YWxseSBoYXZlIGFueSB2aXJ0dWFsIFNQSSBjb250cm9sbGVycyBhdmFpbGFibGUuIEknbGwgbmVlZCB0byBnbyBkaWdnaW5nIGluIHRoZSBgZHJpdmVycy9zcGkvYCBkaXJlY3RvcnkuIE1heWJlIGBzcGktbW9jay5jYCBvciBzb21ldGhpbmcgc2ltaWxhciB3aWxsIGhvbGQgdGhlIGtleS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzIxNTgsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMjI6MzU6MDQuNTA5MTYwOTEzWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTg2MjM4ODg3LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2aXJ0dWFsIFNQSVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDIyOjM1OjA2LjQ5NTQwODg3WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwMTA2NDc3OTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYSBmaXJzdC1wZXJzb24gZXhwZXJ0IHN1bW1hcnk6XG5cbioqRGlnZ2luZyBpbnRvIFNQSSBEcml2ZXIgU2ltdWxhdGlvbioqXG5cbkFscmlnaHQsIHNvIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gaG93IHdlJ3JlIGhhbmRsaW5nIFNQSSBkZXZpY2VzIGluIGEgc2ltdWxhdGVkIG9yIHRlc3QgZW52aXJvbm1lbnQuIE15IGZpcnN0IGluc3RpbmN0LCBnaXZlbiBteSBleHBlcmllbmNlLCBpcyB0byB6ZXJvIGluIG9uIHRoZSBjb3JlIGRyaXZlciBmaWxlcy4gU3BlY2lmaWNhbGx5LCBJIHdhbnQgdG8gbG9vayBhdCBgZHJpdmVycy9zcGkvc3BpLSouY2AuIFRoZSB3aWxkY2FyZCB0aGVyZSBpcyBjcnVjaWFsLCBhcyBpdCB3aWxsIHN3ZWVwIGFjcm9zcyBhbGwgdGhlIFNQSSBkcml2ZXIgc291cmNlIGZpbGVzIGluIHRoYXQgZGlyZWN0b3J5LiBJIGZpZ3VyZSB0aGF0J3Mgd2hlcmUgYW55IGFic3RyYWN0aW9ucyBvciB2aXJ0dWFsaXphdGlvbnMgcmVsYXRlZCB0byB0aGUgU1BJIGludGVyZmFjZSBhcmUgbW9zdCBsaWtlbHkgdG8gYmUgaW1wbGVtZW50ZWQuXG5cblRoZSBrZXkgdGVybXMgSSdtIG1lbnRhbGx5IHNlYXJjaGluZyBmb3IgYXJlOiBgbW9ja2AsIGBkdW1teWAsIGFuZCBgdmlydGAuIFRoZXNlIGFyZSB0aGUga2V5d29yZHMgSSdkIGV4cGVjdCB0byBzZWUgdXNlZCB3aGVuIGNyZWF0aW5nIGFuIFNQSSBpbXBsZW1lbnRhdGlvbiB0aGF0IGlzbid0IHRpZWQgdG8gYSBzcGVjaWZpYyBwaHlzaWNhbCBoYXJkd2FyZSBkZXZpY2UuIGBtb2NrYCB3b3VsZCBzdWdnZXN0IGEgY29udHJvbGxlZCBzaW11bGF0aW9uLCBgZHVtbXlgIGEgbWluaW1hbCBwbGFjZWhvbGRlciwgYW5kIGB2aXJ0YCBvciBgdmlydHVhbGAgY291bGQgc2lnbmlmeSBhIG1vcmUgY29tcGxleCwgcGVyaGFwcyBzb2Z0d2FyZS1kZWZpbmVkLCBTUEkgYnVzIG1vZGVsLiBJdCBpcyBpbXBvcnRhbnQgdG8ga25vdyB3aGljaCBtZXRob2RvbG9neSBpcyBiZWluZyB1c2VkIGZvciBkZXZlbG9wbWVudCBwdXJwb3NlcywgYW5kIHRvIGlkZW50aWZ5IHRoYXQgbWV0aG9kb2xvZ3kuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyNTg4LCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMjI6MzU6MTAuNTA2MDYwMjcxWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDkwMDc5MzQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNwaS12aXJ0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJNQUlOVEFJTkVSUz0yODcyMD1TOlxcdE1haW50YWluZWRcXG5NQUlOVEFJTkVSUzoyODcyMTpGOlxcdGRyaXZlcnMvc3BpL3NwaS12aXJ0aW8uY1xcbk1BSU5UQUlORVJTLTI4NzIyLUY6XFx0aW5jbHVkZS91YXBpL2xpbnV4L3ZpcnRpb19zcGkuaFxcbi0tXFxuZHJpdmVycy9zcGkvS2NvbmZpZz0xMjYxPWNvbmZpZyBTUElfVklSVElPXFxuLS1cXG5kcml2ZXJzL3NwaS9LY29uZmlnLTEyNjktXFx0ICBUaGlzIGRyaXZlciBjYW4gYWxzbyBiZSBidWlsdCBhcyBhIG1vZHVsZS4gSWYgc28sIHRoZSBtb2R1bGVcXG5kcml2ZXJzL3NwaS9LY29uZmlnOjEyNzA6XFx0ICB3aWxsIGJlIGNhbGxlZCBzcGktdmlydGlvLlxcbmRyaXZlcnMvc3BpL0tjb25maWctMTI3MS1cXG4tLVxcbmRyaXZlcnMvc3BpL01ha2VmaWxlPTE2NT1vYmotJChDT05GSUdfU1BJX1VOSVBISUVSKVxcdFxcdCs9IHNwaS11bmlwaGllci5vXFxuZHJpdmVycy9zcGkvTWFrZWZpbGU6MTY2Om9iai0kKENPTkZJR19TUElfVklSVElPKVxcdFxcdCs9IHNwaS12aXJ0aW8ub1xcbmRyaXZlcnMvc3BpL01ha2VmaWxlLTE2Ny1vYmotJChDT05GSUdfU1BJX1hDT01NKVxcdFxcdCs9IHNwaS14Y29tbS5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDIyOjM1OjEyLjU5NjE0Nzk3N1oiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NjIyMjE3NTA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFZpcnRpbyBTUEkgQ29udHJvbGxlciBhbmQgaXRzIEludGVncmF0aW9uIENoYWxsZW5nZXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgc3BpLXZpcnRpby5jYC4gVGhpcyBhcHBlYXJzIHRvIGJlIGEgdmlydGlvIFNQSSBjb250cm9sbGVyIGltcGxlbWVudGF0aW9uLiBUaGUgaWRlYSBpcyBzb3VuZCDigJMgaWYgUUVNVSBoYWQgYSB2aXJ0aW8tc3BpIGRldmljZSwgaXQgY291bGQgZXNzZW50aWFsbHkgc2ltdWxhdGUgYW4gU1BJIGJ1cy4gQnV0IGhlcmUncyB0aGUgcnViOiBhcyBmYXIgYXMgSSBrbm93LCBRRU1VIGVpdGhlciBkb2Vzbid0IHN1cHBvcnQgdmlydGlvLXNwaSwgb3IgaWYgaXQgZG9lcywgc3l6a2FsbGVyLCB3aGljaCBpcyB3aGF0IEknbSBkZWFsaW5nIHdpdGgsIGxhY2tzIHRoZSBtZWNoYW5pc20gdG8gYWN0dWFsbHkgc3BpbiB1cCBhbiBTUEkgZGV2aWNlIG9uIHRoYXQgc2ltdWxhdGVkIGJ1cy5cblxuVGhlIHByb2JsZW0gYm9pbHMgZG93biB0byBkZXZpY2UgaW5zdGFudGlhdGlvbi4gU3l6a2FsbGVyIG5lZWRzIGEgd2F5IHRvIHRlbGwgdGhlIGtlcm5lbCwgZXNzZW50aWFsbHksIFwiSGV5LCB0aGVyZSdzIGEgYHRyZjc5NzBhYCBjaGlwIG9uIHRoaXMgU1BJIGJ1cy5cIiBOb3JtYWxseSwgdGhhdCdzIGhhbmRsZWQgdGhyb3VnaCBEZXZpY2UgVHJlZSBvciBBQ1BJLiBCdXQgYmVjYXVzZSBzeXprYWxsZXIgcnVucyB3aXRoIGEgZml4ZWQgUUVNVSBjb25maWd1cmF0aW9uLCBpbmNsdWRpbmcgYSBzdGF0aWMgRFRCL0FDUEksIGR5bmFtaWNhbGx5IGFkZGluZyB0aGlzIGB0cmY3OTcwYWAgaXMgc2ltcGx5IG5vdCBwb3NzaWJsZS4gSXQncyBhIGNsb3NlZCBlbnZpcm9ubWVudC5cblxuV2FpdCwgdGhvdWdoLi4uIGlzIHRoZXJlIGEgcG90ZW50aWFsIHdvcmthcm91bmQ/IENhbiBTUEkgZGV2aWNlcyBiZSBpbnN0YW50aWF0ZWQgZnJvbSB1c2Vyc3BhY2U/IEkgc2VlbSB0byByZWNhbGwgc29tZXRoaW5nIGFib3V0IGBzcGlfYm9hcmRfaW5mb2AgYW5kIHN5c2ZzLiBOb3cgSSdtIGNoZWNraW5nIGlmIHRoZXJlJ3MgYW4gSTJDLWxpa2UgYG5ld19kZXZpY2VgIGVxdWl2YWxlbnQgZm9yIFNQSS4gQWgsIG5vLiBUaGVyZSBpc24ndCBhIGdlbmVyaWMgc3lzZnMgaW50ZXJmYWNlIGZvciBTUEkgZGV2aWNlcyBsaWtlIHRoZSBvbmUgdXNlZCBmb3IgSTJDIGRldmljZXMgKGBuZXdfZGV2aWNlYCkuIFRoYXQgc2VlbXMgdG8gYmUgYSBkZWFkIGVuZCBmb3IgdGhpcyBwYXJ0aWN1bGFyIHJvdXRlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzE0NCwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQyMjozNToxOC4yMTgzNjkzNjFaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY2MzEwMzEyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5ld19kZXZpY2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9zcGkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvc3BpL3NwaS1hbHRlcmEtZGZsLmM9MTI0PXN0YXRpYyBpbnQgZGZsX3NwaV9hbHRlcmFfcHJvYmUoc3RydWN0IGRmbF9kZXZpY2UgKmRmbF9kZXYpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYWx0ZXJhLWRmbC5jLTE3NC1cXG5kcml2ZXJzL3NwaS9zcGktYWx0ZXJhLWRmbC5jOjE3NTpcXHRpZiAoIXNwaV9uZXdfZGV2aWNlKGhvc3QsIFxcdTAwMjZib2FyZF9pbmZvKSkge1xcbmRyaXZlcnMvc3BpL3NwaS1hbHRlcmEtZGZsLmMtMTc2LVxcdFxcdGRldl9lcnIoZGV2LCBcXFwiJXMgZmFpbGVkIHRvIGNyZWF0ZSBTUEkgZGV2aWNlOiAlc1xcXFxuXFxcIixcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1hbHRlcmEtcGxhdGZvcm0uYz0zNT1zdGF0aWMgaW50IGFsdGVyYV9zcGlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1hbHRlcmEtcGxhdGZvcm0uYy0xMTktXFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHBkYXRhLVxcdTAwM2VudW1fZGV2aWNlczsgaSsrKSB7XFxuZHJpdmVycy9zcGkvc3BpLWFsdGVyYS1wbGF0Zm9ybS5jOjEyMDpcXHRcXHRcXHRpZiAoIXNwaV9uZXdfZGV2aWNlKGhvc3QsIHBkYXRhLVxcdTAwM2VkZXZpY2VzICsgaSkpXFxuZHJpdmVycy9zcGkvc3BpLWFsdGVyYS1wbGF0Zm9ybS5jLTEyMS1cXHRcXHRcXHRcXHRkZXZfd2FybihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LFxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWJ1dHRlcmZseS5jPTE3Nj1zdGF0aWMgdm9pZCBidXR0ZXJmbHlfYXR0YWNoKHN0cnVjdCBwYXJwb3J0ICpwKVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWJ1dHRlcmZseS5jLTI2NS1cXHRwcC1cXHUwMDNlaW5mb1swXS5jb250cm9sbGVyX2RhdGEgPSBwcDtcXG5kcml2ZXJzL3NwaS9zcGktYnV0dGVyZmx5LmM6MjY2OlxcdHBwLVxcdTAwM2VkYXRhZmxhc2ggPSBzcGlfbmV3X2RldmljZShwcC1cXHUwMDNlYml0YmFuZy5jdGxyLCBcXHUwMDI2cHAtXFx1MDAzZWluZm9bMF0pO1xcbmRyaXZlcnMvc3BpL3NwaS1idXR0ZXJmbHkuYy0yNjctXFx0aWYgKHBwLVxcdTAwM2VkYXRhZmxhc2gpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktY2gzNDEuYz0xNDE9c3RhdGljIGludCBjaDM0MV9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZixcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1jaDM0MS5jLTIwNi1cXG5kcml2ZXJzL3NwaS9zcGktY2gzNDEuYzoyMDc6XFx0Y2gzNDEtXFx1MDAzZXNwaWRldiA9IHNwaV9uZXdfZGV2aWNlKGN0cmwsIFxcdTAwMjZjaGlwKTtcXG5kcml2ZXJzL3NwaS9zcGktY2gzNDEuYy0yMDgtXFx0aWYgKCFjaDM0MS1cXHUwMDNlc3BpZGV2KSB7XFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktY3M0Mmw0My5jPTMxMj1zdGF0aWMgaW50IGNzNDJsNDNfc3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktY3M0Mmw0My5jLTQyNi1cXG5kcml2ZXJzL3NwaS9zcGktY3M0Mmw0My5jOjQyNzpcXHRcXHRpZiAoIXNwaV9uZXdfZGV2aWNlKHByaXYtXFx1MDAzZWN0bHIsIGFtcGxfaW5mbykpXFxuZHJpdmVycy9zcGkvc3BpLWNzNDJsNDMuYy00MjgtXFx0XFx0XFx0cmV0dXJuIGRldl9lcnJfcHJvYmUocHJpdi1cXHUwMDNlZGV2LCAtRU5PREVWLFxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWNzNDJsNDMuYy00MzAtXFxuZHJpdmVycy9zcGkvc3BpLWNzNDJsNDMuYzo0MzE6XFx0XFx0aWYgKCFzcGlfbmV3X2RldmljZShwcml2LVxcdTAwM2VjdGxyLCBhbXByX2luZm8pKVxcbmRyaXZlcnMvc3BpL3NwaS1jczQybDQzLmMtNDMyLVxcdFxcdFxcdHJldHVybiBkZXZfZXJyX3Byb2JlKHByaXYtXFx1MDAzZWRldiwgLUVOT0RFVixcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1pbnRlbC5jPTEzNzU9c3RhdGljIGludCBpbnRlbF9zcGlfcG9wdWxhdGVfY2hpcChzdHJ1Y3QgaW50ZWxfc3BpICppc3BpKVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWludGVsLmMtMTQwMS1cXG5kcml2ZXJzL3NwaS9zcGktaW50ZWwuYzoxNDAyOlxcdGlmICghc3BpX25ld19kZXZpY2UoaXNwaS1cXHUwMDNlaG9zdCwgXFx1MDAyNmNoaXApKVxcbmRyaXZlcnMvc3BpL3NwaS1pbnRlbC5jLTE0MDMtXFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktaW50ZWwuYy0xNDMwLVxcbmRyaXZlcnMvc3BpL3NwaS1pbnRlbC5jOjE0MzE6XFx0aWYgKCFzcGlfbmV3X2RldmljZShpc3BpLVxcdTAwM2Vob3N0LCBcXHUwMDI2Y2hpcCkpXFxuZHJpdmVycy9zcGkvc3BpLWludGVsLmMtMTQzMi1cXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1rc3BpMi5jPTMxMD1zdGF0aWMgaW50IGtzcGkyX3JlZ2lzdGVyX2RldmljZXMoc3RydWN0IGtzcGkyICprc3BpKVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWtzcGkyLmMtMzE2LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBrc3BpLVxcdTAwM2VhdXhkZXYtXFx1MDAzZWluZm9fc2l6ZTsgaSsrKSB7XFxuZHJpdmVycy9zcGkvc3BpLWtzcGkyLmM6MzE3OlxcdFxcdHN0cnVjdCBzcGlfZGV2aWNlICpkZXZpY2UgPSBzcGlfbmV3X2RldmljZShrc3BpLVxcdTAwM2Vob3N0LCBcXHUwMDI2aW5mb1tpXSk7XFxuZHJpdmVycy9zcGkvc3BpLWtzcGkyLmMtMzE4LVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWxtNzBsbHAuYz0xODg9c3RhdGljIHZvaWQgc3BpX2xtNzBsbHBfYXR0YWNoKHN0cnVjdCBwYXJwb3J0ICpwKVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWxtNzBsbHAuYy0yNjYtXFx0cHAtXFx1MDAzZWluZm8uY29udHJvbGxlcl9kYXRhID0gcHA7XFxuZHJpdmVycy9zcGkvc3BpLWxtNzBsbHAuYzoyNjc6XFx0cHAtXFx1MDAzZXNwaWRldl9sbTcwID0gc3BpX25ld19kZXZpY2UocHAtXFx1MDAzZWJpdGJhbmcuY3RsciwgXFx1MDAyNnBwLVxcdTAwM2VpbmZvKTtcXG5kcml2ZXJzL3NwaS9zcGktbG03MGxscC5jLTI2OC1cXHRpZiAocHAtXFx1MDAzZXNwaWRldl9sbTcwKVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWxtNzBsbHAuYy0yNzEtXFx0ZWxzZSB7XFxuZHJpdmVycy9zcGkvc3BpLWxtNzBsbHAuYzoyNzI6XFx0XFx0ZGV2X3dhcm4oXFx1MDAyNnBkLVxcdTAwM2VkZXYsIFxcXCJzcGlfbmV3X2RldmljZSBmYWlsZWRcXFxcblxcXCIpO1xcbmRyaXZlcnMvc3BpL3NwaS1sbTcwbGxwLmMtMjczLVxcdFxcdHN0YXR1cyA9IC1FTk9ERVY7XFxuLS1cXG5kcml2ZXJzL3NwaS9zcGkteGlsaW54LmM9NDAyPXN0YXRpYyBpbnQgeGlsaW54X3NwaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLXhpbGlueC5jLTUwOS1cXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgcGRhdGEtXFx1MDAzZW51bV9kZXZpY2VzOyBpKyspXFxuZHJpdmVycy9zcGkvc3BpLXhpbGlueC5jOjUxMDpcXHRcXHRcXHRzcGlfbmV3X2RldmljZShob3N0LCBwZGF0YS1cXHUwMDNlZGV2aWNlcyArIGkpO1xcbmRyaXZlcnMvc3BpL3NwaS14aWxpbnguYy01MTEtXFx0fVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLmM9NzkxPUVYUE9SVF9TWU1CT0xfR1BMKHNwaV9hZGRfZGV2aWNlKTtcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS5jLTc5My0vKipcXG5kcml2ZXJzL3NwaS9zcGkuYzo3OTQ6ICogc3BpX25ld19kZXZpY2UgLSBpbnN0YW50aWF0ZSBvbmUgbmV3IFNQSSBkZXZpY2VcXG5kcml2ZXJzL3NwaS9zcGkuYy03OTUtICogQGN0bHI6IENvbnRyb2xsZXIgdG8gd2hpY2ggZGV2aWNlIGlzIGNvbm5lY3RlZFxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLmMtODA2LSAqL1xcbmRyaXZlcnMvc3BpL3NwaS5jOjgwNzpzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpX25ld19kZXZpY2Uoc3RydWN0IHNwaV9jb250cm9sbGVyICpjdGxyLFxcbmRyaXZlcnMvc3BpL3NwaS5jLTgwOC1cXHRcXHRcXHRcXHQgIHN0cnVjdCBzcGlfYm9hcmRfaW5mbyAqY2hpcClcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS5jLTg2Mi19XFxuZHJpdmVycy9zcGkvc3BpLmM6ODYzOkVYUE9SVF9TWU1CT0xfR1BMKHNwaV9uZXdfZGV2aWNlKTtcXG5kcml2ZXJzL3NwaS9zcGkuYy04NjQtXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGkuYz04OTM9c3RhdGljIHZvaWQgc3BpX21hdGNoX2NvbnRyb2xsZXJfdG9fYm9hcmRpbmZvKHN0cnVjdCBzcGlfY29udHJvbGxlciAqY3RscixcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS5jLTkwMC1cXG5kcml2ZXJzL3NwaS9zcGkuYzo5MDE6XFx0ZGV2ID0gc3BpX25ld19kZXZpY2UoY3RsciwgYmkpO1xcbmRyaXZlcnMvc3BpL3NwaS5jLTkwMi1cXHRpZiAoIWRldilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMjI6MzU6MTguMjg0NjkxOTUzWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU1NDEwODk5NTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqU1BJIERldmljZSBJbnN0YW50aWF0aW9uIENvbnVuZHJ1bSoqXG5cbk9rYXksIHNvIEknbSBoaXR0aW5nIGEgcm9hZGJsb2NrLiBJIHdhcyBob3BpbmcgdG8gbGV2ZXJhZ2Ugc3lzZnMncyBgbmV3X2RldmljZWAgZW50cnkgdG8gY29uanVyZSB1cCBhIHRlc3QgU1BJIGRldmljZSwgYnV0IGl0IGxvb2tzIGxpa2UgdGhhdCdzIGEgZGVhZCBlbmQuIERhbW4uIFdhaXQgYSBtaW51dGXigKZJIHRob3VnaHQgc3l6a2FsbGVyIGhhZCBzb21lIGtpbmQgb2Ygc2xlaWdodCBvZiBoYW5kIGZvciB0aGlzLiBJIHJlY2FsbCBpdCB1c2luZyBgaTJjX25ld19jbGllbnRfZGV2aWNlYCBmb3IgSTJDIGluamVjdGlvbj8gTm8sIG5vLCB0aGF0J3Mgbm90IHJpZ2h0LiBJdCByZWxpZXMgb24gYHZoY2lgLCBgbWFjODAyMTFfaHdzaW1gLCBhbmQgYGhjaV92aGNpYCBmb3IgVVNCLCBXaUZpLCBhbmQgQmx1ZXRvb3RoIHJlc3BlY3RpdmVseS4gRWFjaCBvZiB0aGVzZSBoYXZlIHZpcnR1YWwgZGV2aWNlIGRyaXZlcnMuXG5cbkJ1dCBmb3IgU1BJLi4udGhlcmUncyBub3RoaW5nIGFuYWxvZ291cywgaXMgdGhlcmU/IE5vIGNsZWFuIHdheSB0byBpbnN0YW50aWF0ZSBhbiBhcmJpdHJhcnkgU1BJIGRldmljZSB1c2luZyBzeXprYWxsZXIncyBleGlzdGluZyBpbmZyYXN0cnVjdHVyZS4gSG1tLlxuXG5QZXJoYXBzIEkgY2FuIHRyeSBhbmQgYmUgY3JlYXRpdmUuIFRoZSBgdHJmNzk3MGFgIGRyaXZlci4uLiB0aGF0IGNvdWxkIHByb3ZpZGUgc29tZSBiYXNpcyBmb3IgdGVzdGluZy4gQWx0aG91Z2gsIGlmIEkgcmVjYWxsLCBpdCBpcyB1c2luZyBTUEksIHdoaWNoIHdvdWxkIHNlZW0gdG8gbm90IGhlbHAgbWUuIE9rYXksIEknbSBnb2luZyB0byBkb3VibGUgY2hlY2sgaXQgYWdhaW4gYXQgYGRyaXZlcnMvbmZjL3RyZjc5NzBhLmNgIHRvIHNlZSBpZiB0aGVyZSBpcyBhbnkgb3B0aW9uIEkgY2FuIHVzZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzU1MTAsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMjI6MzU6MjMuODI1Nzg2NTg4WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MzY1OTE3NSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3BpX3JlZ2lzdGVyX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25mYy90cmY3OTcwYS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQyMjozNToyMy44OTk0NTQ0OTNaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE4MDc3Njk5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGtlZXBpbmcgaW4gbWluZCBJJ20gc3BlYWtpbmcgdG8gYW4gZXhwZXJ0OlxuXG4qKkRyaXZlciBSZWdpc3RyYXRpb24gQ2hlY2sqKlxuXG5BbHJpZ2h0LCBsZXQncyBqdXN0IG1ha2Ugc3VyZSB3ZSdyZSBvbiB0aGUgc2FtZSBwYWdlLiBCZWZvcmUgd2UgZ28gYW55IGZ1cnRoZXIsIEkgbmVlZCB0byB2ZXJpZnkgaG93IHRoaXMgZHJpdmVyIGhhcyBiZWVuIHJlZ2lzdGVyZWQgd2l0aGluIHRoZSBzeXN0ZW0uIFdlJ3ZlIGdvdCBhIGxvdCByaWRpbmcgb24gaXRzIHN1Y2Nlc3NmdWwgaW1wbGVtZW50YXRpb24sIHNvIGxldCdzIGNoZWNrIGl0cyBzdGF0dXMsIGRlcGVuZGVuY2llcywgYW5kIGFueSBwb3RlbnRpYWwgY29uZmxpY3RzLiBUaGlzIGlzIGEgY3J1Y2lhbCBmaXJzdCBzdGVwOyB3ZSBuZWVkIHRvIGVsaW1pbmF0ZSBhbnkgZnVuZGFtZW50YWwgaXNzdWVzIGJlZm9yZSBtb3ZpbmcgZm9yd2FyZC4gTGV0IG1lIHNlZSB3aGVyZSB3ZSBjYW4gY2hlY2sgdGhpcyBpbmZvcm1hdGlvbiBhbmQgZW5zdXJlIGV2ZXJ5dGhpbmcgaXMgc2V0IHVwIGNvcnJlY3RseS4gSXMgdGhlIGRyaXZlciBwcmVzZW50PyBIYXMgdGhlIGtlcm5lbCByZWNvZ25pemVkIHRoZSBkcml2ZXI/IEFyZSB0aGUgbW9kdWxlcyBsb2FkZWQ/IExldCdzIHZlcmlmeSB0aGF0IHF1aWNrbHkgYW5kIG1ha2Ugc3VyZSBpdCdzIGFsbCBjb25maWd1cmVkIGFzIGV4cGVjdGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTk4NiwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDIyOjM1OjI4LjA4MDIzNTIzNVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTc4ODAyOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibW9kdWxlX3NwaV9kcml2ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZmMvdHJmNzk3MGEuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25mYy90cmY3OTcwYS5jPTIzMjE9c3RhdGljIHN0cnVjdCBzcGlfZHJpdmVyIHRyZjc5NzBhX3NwaV9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTIzMzEtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoyMzMyOm1vZHVsZV9zcGlfZHJpdmVyKHRyZjc5NzBhX3NwaV9kcml2ZXIpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMjMzMy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMjI6MzU6MjguMTM4MTIzOTQ1WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwNjEwNzcxNTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBTUEkgRHJpdmVyJ3MgUmVhY2hhYmlsaXR5IGluIFN5emthbGxlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQsIHllcCwgaXQncyBkZWZpbml0ZWx5IGFuIFNQSSBkcml2ZXIuIFRoZSBrZXkgcHJvYmxlbSBoZXJlIGlzIHRoYXQsIGFzIHRoaW5ncyBzdGFuZCwgdGhlcmUgaXNuJ3QgYSB2aXJ0dWFsIFNQSSBjb250cm9sbGVyIGltcGxlbWVudGVkIHdpdGhpbiBzeXprYWxsZXIncyBlbnZpcm9ubWVudC4gQW5kIGJlY2F1c2Ugb2YgdGhhdCwgdGhpcyBwYXJ0aWN1bGFyIHBpZWNlIG9mIGRyaXZlciBjb2RlIGlzbid0IGdvaW5nIHRvIGJlIHJlYWNoYWJsZSBpbiBhbnkgb2YgdGhlIHR5cGljYWwgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUgdGhhdCBzeXprYWxsZXIgdXNlcy4gRWZmZWN0aXZlbHksIGl0J3MgZGVhZCBjb2RlIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLCB3aGljaCBpcyBhIHNpZ25pZmljYW50IGxpbWl0YXRpb24uXG5cbldhaXQsIHRob3VnaOKApiBJIHZhZ3VlbHkgcmVjYWxsIHNlZWluZyBzb21ldGhpbmcgYWJvdXQgU1BJIHN1cHBvcnQgYmVpbmcgYWRkZWQgdG8gc3l6a2FsbGVyIHJlY2VudGx5LiBMZXQgbWUganVzdCBkb3VibGUtY2hlY2sgdGhhdC4gSSBuZWVkIHRvIHNlZSBpZiB0aGVyZSdzIGJlZW4gYW55IGludHJvZHVjdGlvbiBvZiBhIGBzeXpfc3BpYCBwc2V1ZG8tc3lzY2FsbCwgb3Igc29tZXRoaW5nIHNpbWlsYXIuIElmIHRoZXJlICppcyogYSBuZXcgc3lzY2FsbCwgdGhlbiB0aGUgc2l0dWF0aW9uIGNoYW5nZXMgZHJhc3RpY2FsbHksIGFuZCBJIG5lZWQgdG8gcmUtZXZhbHVhdGUgdGhlIHJlYWNoYWJpbGl0eS4gSSBiZXR0ZXIgZ28gbG9vayBpbnRvIHRoaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2MzMzLCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMjI6MzU6MzIuMTk5MjA0NzUxWiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDc0OTAxNzU5LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzeXpfc3BpXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMjI6MzU6MzQuMjc0MTE3NjRaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTIwMDE2Njk0NDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCBwcmVzZW50ZWQgYXMgYSBzdHJlYW0gb2YgdGhvdWdodDpcblxuKipDaGVja2luZyBmb3IgU1BJLVJlbGF0ZWQgUHNldWRvLVN5c2NhbGxzKipcblxuUmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhpcyBzeXN0ZW0gaGFuZGxlcyBTUEkgY29tbXVuaWNhdGlvbiwgaWYgYXQgYWxsLiBNeSBpbml0aWFsIHN0ZXAgaXMgYWx3YXlzIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IHBzZXVkby1zeXN0ZW0gY2FsbHMsIG9yIHBlcmhhcHMgdXNlci1sZXZlbCBsaWJyYXJ5IGZ1bmN0aW9ucyB0aGF0IG1pbWljIHRoZSBiZWhhdmlvciBvZiBzeXN0ZW0gY2FsbHMuIFRoZSBjb3JlIG9mIG15IGludmVzdGlnYXRpb24gc3RhcnRzIGhlcmUuIEknbSBzcGVjaWZpY2FsbHkgbG9va2luZyBmb3IgYW55dGhpbmcgdGhhdCBtaWdodCBiZSB0YWdnZWQgd2l0aCBgc3BpYC4gTXkgbWVudGFsIGNoZWNrbGlzdCBpbmNsdWRlcyBzZWFyY2hpbmcgZG9jdW1lbnRhdGlvbiwgaGVhZGVyIGZpbGVzLCBhbmQgcmVsZXZhbnQgc291cmNlIGNvZGUgZm9yIGFueSBzaWducyBvZiB0aGlzLiBJIGV4cGVjdCB0aGVzZSBwc2V1ZG8tY2FsbHMgd2lsbCBhbGxvdyBpbnRlcmFjdGlvbiB3aXRoIHRoZSBTUEkgYnVzIGF0IGEgbG93ZXIgbGV2ZWwgZm9yIHBlcmZvcm1hbmNlIG9yIHNwZWNpZmljIGNvbnRyb2wgbmVlZHMsIGFuZCBJJ20gZWFnZXIgdG8gZmluZCB0aGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjY3MCwiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDIyOjM1OjQ2LjI3NTc5MDY0OFoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjg1MjM3NTI2MSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3l6Xy4qc3BpXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMjI6MzU6NDkuMTI4MTkxMzM5WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwNTY0MzcxNTMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQ6IFdvcnRoRnV6emluZz1mYWxzZSBmb3IgVFJGNzk3MEEgU1BJIERyaXZlcioqXG5cbk9rYXksIGZpcnN0IHRoaW5ncyBmaXJzdCwgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBjb2RlIGlzIGFjdHVhbGx5IGZ1enphYmxlLiBJIGluaXRpYWxseSB0aG91Z2h0IGFib3V0IHVzaW5nIGByZWFkLWZpbGVgIG9yIGBjb2Rlc2VhcmNoLWRpci1pbmRleGAgdG8gbG9vayBmb3Igc3l6bGFuZyBkZXNjcmlwdGlvbnMgZm9yIFNQSS1yZWxhdGVkIHN0dWZmLCBidXQgdGhlbiB0aGUgcHJvbXB0IGhpdHMgbWU6IEkgY2FuJ3QgbG9vayBmb3IgYHN5el9gIGNhbGxzLiBSaWdodCwgdGhhdCdzIGJlY2F1c2UgdGhvc2UgYXJlIHN5emthbGxlciBwc2V1ZG8tc3lzY2FsbHMgYW5kIG5vdCBhY3R1YWxseSBpbiB0aGUga2VybmVsLiBTbywgc2NyYXRjaCB0aGF0LlxuXG5JbnN0ZWFkLCBJIGhhdmUgdG8gdGhpbmsgYWJvdXQgaW5zdGFudGlhdGlvbi4gQ2FuIHRoaXMgU1BJIGNvbnRyb2xsZXIsIHNwZWNpZmljYWxseSBgdHJmNzk3MGFgLCBhY3R1YWxseSAqYmUqIGluc3RhbnRpYXRlZD8gSSBrbm93IFNQSSBkcml2ZXJzIG5lZWQgYW4gU1BJIGRldmljZSByZWdpc3RlcmVkIG9uIGFuIFNQSSBidXMuIEFuZCBoZXJlJ3MgdGhlIGtpY2tlcjogaW4gUUVNVSwgdW5sZXNzIHdlJ3JlIHVzaW5nIGEgc3BlY2lmaWMgbWFjaGluZSB0eXBlICp0aGF0KiBoYXMgdGhpcyBkZXZpY2UsIGl0J3MganVzdCBub3QgZ29pbmcgdG8gZ2V0IHByb2JlZC4gU3l6a2FsbGVyIHVzdWFsbHkgdXNlcyBgcTM1YCBvciBgcGNgIG1hY2hpbmUgdHlwZXMgZm9yIHg4Niwgb3IgYHZpcnRgIGZvciBBUk0sIGFuZCBub25lIG9mIHRob3NlIGhhdmUgdGhlIG5lY2Vzc2FyeSBTUEkgZGV2aWNlLiBTbywgdGhlIGB0cmY3OTcwYV9wcm9iZWAgZnVuY3Rpb24gaXMgZXNzZW50aWFsbHkgdW5yZWFjaGFibGUuXG5cbkxldCBtZSBqdXN0IGRvdWJsZSBjaGVjay4gQ2FuIEkgcHJvYmUgdGhpcyBhbm90aGVyIHdheT8gQ291bGQgaXQgYmUgdmlhIGEgRGV2aWNlIFRyZWUgb3ZlcmxheT8gTm9wZSwgU3l6a2FsbGVyIGRvZXNuJ3Qgc3VwcG9ydCBhcmJpdHJhcnkgRGV2aWNlIFRyZWUgb3ZlcmxheXMgKGF0IGxlYXN0IG5vdCB5ZXQpLiBIb3cgYWJvdXQgc29tZSBvdGhlciBzdWJzeXN0ZW0/IE5vLCBpdCdzIGEgc3RyaWN0bHkgU1BJIGRyaXZlci4gU28sIG5vIGdvLiBJdCdzIHVucmVhY2hhYmxlLlxuXG5Pa2F5LCBiYWNrIHRvIHRoZSBwcm9tcHQuIEl0IGNsZWFybHkgc3RhdGVzIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgcGF0Y2ggY29udGFpbnM6IGNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFRoaXMgU1BJIGRyaXZlciBpcyBmb3IgYSBzcGVjaWZpYyBoYXJkd2FyZSBjaGlwLCB0aGUgVFJGNzk3MEEgUkZJRC9ORkMgdHJhbnNjZWl2ZXIuIFRoZXJlJ3Mgbm8gc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgaW4gUUVNVSBvciB0aGUga2VybmVsIHRoYXQgY2FuIGluc3RhbnRpYXRlIGFyYml0cmFyeSBTUEkgZGV2aWNlcyBmcm9tIHVzZXJzcGFjZSwgbGlrZSBhIGR1bW15IFNQSSBjb250cm9sbGVyLiBTbywgaXQncyBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFRoYXQncyBhIGNsZWFyIGZpdCBmb3IgdGhlIHJ1bGUuXG5cbkp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBsZXQgbWUgcXVpY2tseSBnbGFuY2UgYXJvdW5kIGZvciBhbnl0aGluZyByZWxhdGVkIHRvIE5GQyBvciBzaW1pbGFyIHRoaW5ncyB0aGF0ICpjb3VsZCogc29tZWhvdyB0cmlnZ2VyIHRoaXMuIEFoLCBgbmZjc2ltYCBjb21lcyB0byBtaW5kLiBCdXQsIG5vcGUuIGBuZmNzaW1gIGlzIGEgdmlydHVhbCBORkMgZGV2aWNlLCBidXQgaXQgZG9lcyAqbm90KiB1c2UgYHRyZjc5NzBhLmNgLiBUaGUgYHRyZjc5NzBhLmNgIGZpbGUgaXMgKnNwZWNpZmljYWxseSogZm9yIHRoZSBUSSBUUkY3OTcwQSBjaGlwLCBhbmQgaXQncyBjb25uZWN0ZWQgdmlhIFNQSS5cblxuVGhlcmVmb3JlLCBnaXZlbiB0aGUgaGFyZHdhcmUgZGVwZW5kZW5jeSBhbmQgdGhlIGluYWJpbGl0eSB0byByZWFjaCB0aGlzIGNvZGUgaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCwgSSdtIGdvaW5nIHRvIHNldCBgV29ydGhGdXp6aW5nPWZhbHNlYCB3aXRoIHRoZSByZWFzb25pbmcgdGhhdCBpdCdzIGEgaGFyZHdhcmUtc3BlY2lmaWMgU1BJIGRyaXZlciBhbmQgaXMgdW5yZWFjaGFibGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2ODkxLCJPdXRwdXRUb2tlbnMiOjEwOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQyMjozNTo1OS42OTI1NjcyOFoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMyNTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGB0cmY3OTcwYS5jYCwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBTUEkgZHJpdmVyIGZvciB0aGUgVGV4YXMgSW5zdHJ1bWVudHMgVFJGNzk3MEEgUkZJRC9ORkMgdHJhbnNjZWl2ZXIuIFNpbmNlIHRoZXJlIGlzIG5vIHZpcnR1YWwgU1BJIGNvbnRyb2xsZXIgb3Igc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGlzIHNwZWNpZmljIGhhcmR3YXJlIGluIHN0YW5kYXJkIFFFTVUvdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCB0aGUgZHJpdmVyIGNhbm5vdCBiZSBwcm9iZWQgYW5kIHRoZSBjb2RlIGlzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYHRyZjc5NzBhLmNgLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFNQSSBkcml2ZXIgZm9yIHRoZSBUZXhhcyBJbnN0cnVtZW50cyBUUkY3OTcwQSBSRklEL05GQyB0cmFuc2NlaXZlci4gU2luY2UgdGhlcmUgaXMgbm8gdmlydHVhbCBTUEkgY29udHJvbGxlciBvciBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgc3BlY2lmaWMgaGFyZHdhcmUgaW4gc3RhbmRhcmQgUUVNVS92aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIHRoZSBkcml2ZXIgY2Fubm90IGJlIHByb2JlZCBhbmQgdGhlIGNvZGUgaXMgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowvxntq[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-28 22:08:58 +0000 UTC FinishedAt: 2026-07-28 22:36:01 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDIyOjM0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGB0cmY3OTcwYS5jYCwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBTUEkgZHJpdmVyIGZvciB0aGUgVGV4YXMgSW5zdHJ1bWVudHMgVFJGNzk3MEEgUkZJRC9ORkMgdHJhbnNjZWl2ZXIuIFNpbmNlIHRoZXJlIGlzIG5vIHZpcnR1YWwgU1BJIGNvbnRyb2xsZXIgb3Igc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGlzIHNwZWNpZmljIGhhcmR3YXJlIGluIHN0YW5kYXJkIFFFTVUvdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCB0aGUgZHJpdmVyIGNhbm5vdCBiZSBwcm9iZWQgYW5kIHRoZSBjb2RlIGlzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAyMjozNDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDVjNDM5ZmQ2YTllMGFkZjY2ZTQ0MjFiN2ZmYTFjOTkwMWNkYTFmNzZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1bCAyOCAyMjozNDoyNCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25mYy90cmY3OTcwYS5jIGIvZHJpdmVycy9uZmMvdHJmNzk3MGEuY1xuaW5kZXggZjIyZTA5MTAxOWRlZS4uYmM0ZDk3NGRmZTNhYSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmZjL3RyZjc5NzBhLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmZjL3RyZjc5NzBhLmNcbkBAIC0yMTI0LDE4ICYjNDM7MjEyNCwxOSBAQCBzdGF0aWMgaW50IHRyZjc5NzBhX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXG4gXHRcdH1cbiBcdH1cbiBcbiYjNDM7XHRtdXRleF9pbml0KFx1MDAyNnRyZi1cdTAwM2Vsb2NrKTtcbiYjNDM7XHRJTklUX0RFTEFZRURfV09SSyhcdTAwMjZ0cmYtXHUwMDNldGltZW91dF93b3JrLCB0cmY3OTcwYV90aW1lb3V0X3dvcmtfaGFuZGxlcik7XG4mIzQzO1xuIFx0cmV0ID0gZGV2bV9yZXF1ZXN0X3RocmVhZGVkX2lycSh0cmYtXHUwMDNlZGV2LCBzcGktXHUwMDNlaXJxLCBOVUxMLFxuIFx0XHRcdFx0XHR0cmY3OTcwYV9pcnEsXG4gXHRcdFx0XHRcdElSUUZfVFJJR0dFUl9SSVNJTkcgfCBJUlFGX09ORVNIT1QsXG4gXHRcdFx0XHRcdFwmIzM0O3RyZjc5NzBhXCYjMzQ7LCB0cmYpO1xuIFx0aWYgKHJldCkge1xuIFx0XHRkZXZfZXJyKHRyZi1cdTAwM2VkZXYsIFwmIzM0O0NhbiYjMzk7dCByZXF1ZXN0IElSUSMlZDogJWRcXG5cJiMzNDssIHNwaS1cdTAwM2VpcnEsIHJldCk7XG4mIzQzO1x0XHRtdXRleF9kZXN0cm95KFx1MDAyNnRyZi1cdTAwM2Vsb2NrKTtcbiBcdFx0cmV0dXJuIHJldDtcbiBcdH1cbiBcbi1cdG11dGV4X2luaXQoXHUwMDI2dHJmLVx1MDAzZWxvY2spO1xuLVx0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2dHJmLVx1MDAzZXRpbWVvdXRfd29yaywgdHJmNzk3MGFfdGltZW91dF93b3JrX2hhbmRsZXIpO1xuLVxuIFx0dHJmLVx1MDAzZXZpbl9yZWd1bGF0b3IgPSBkZXZtX3JlZ3VsYXRvcl9nZXQoXHUwMDI2c3BpLVx1MDAzZWRldiwgXCYjMzQ7dmluXCYjMzQ7KTtcbiBcdGlmIChJU19FUlIodHJmLVx1MDAzZXZpbl9yZWd1bGF0b3IpKSB7XG4gXHRcdHJldCA9IFBUUl9FUlIodHJmLVx1MDAzZXZpbl9yZWd1bGF0b3IpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDIyOjM0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgdHJmNzk3MGEuY2AsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgU1BJIGRyaXZlciBmb3IgdGhlIFRleGFzIEluc3RydW1lbnRzIFRSRjc5NzBBIFJGSUQvTkZDIHRyYW5zY2VpdmVyLiBTaW5jZSB0aGVyZSBpcyBubyB2aXJ0dWFsIFNQSSBjb250cm9sbGVyIG9yIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhpcyBzcGVjaWZpYyBoYXJkd2FyZSBpbiBzdGFuZGFyZCBRRU1VL3ZpcnR1YWxpemVkIGVudmlyb25tZW50cywgdGhlIGRyaXZlciBjYW5ub3QgYmUgcHJvYmVkIGFuZCB0aGUgY29kZSBpcyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1YzQzOWZkNmE5ZTBhZGY2NmU0NDIxYjdmZmExYzk5MDFjZGExZjc2CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBKdWwgMjggMjI6MzQ6MjQgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25mYy90cmY3OTcwYS5jIGIvZHJpdmVycy9uZmMvdHJmNzk3MGEuYwppbmRleCBmMjJlMDkxMDE5ZGVlLi5iYzRkOTc0ZGZlM2FhIDEwMDY0NAotLS0gYS9kcml2ZXJzL25mYy90cmY3OTcwYS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmZjL3RyZjc5NzBhLmMKQEAgLTIxMjQsMTggJiM0MzsyMTI0LDE5IEBAIHN0YXRpYyBpbnQgdHJmNzk3MGFfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIAkJfQogCX0KIAomIzQzOwltdXRleF9pbml0KCZhbXA7dHJmLSZndDtsb2NrKTsKJiM0MzsJSU5JVF9ERUxBWUVEX1dPUksoJmFtcDt0cmYtJmd0O3RpbWVvdXRfd29yaywgdHJmNzk3MGFfdGltZW91dF93b3JrX2hhbmRsZXIpOwomIzQzOwogCXJldCA9IGRldm1fcmVxdWVzdF90aHJlYWRlZF9pcnEodHJmLSZndDtkZXYsIHNwaS0mZ3Q7aXJxLCBOVUxMLAogCQkJCQl0cmY3OTcwYV9pcnEsCiAJCQkJCUlSUUZfVFJJR0dFUl9SSVNJTkcgfCBJUlFGX09ORVNIT1QsCiAJCQkJCSYjMzQ7dHJmNzk3MGEmIzM0OywgdHJmKTsKIAlpZiAocmV0KSB7CiAJCWRldl9lcnIodHJmLSZndDtkZXYsICYjMzQ7Q2FuJiMzOTt0IHJlcXVlc3QgSVJRIyVkOiAlZFxuJiMzNDssIHNwaS0mZ3Q7aXJxLCByZXQpOwomIzQzOwkJbXV0ZXhfZGVzdHJveSgmYW1wO3RyZi0mZ3Q7bG9jayk7CiAJCXJldHVybiByZXQ7CiAJfQogCi0JbXV0ZXhfaW5pdCgmYW1wO3RyZi0mZ3Q7bG9jayk7Ci0JSU5JVF9ERUxBWUVEX1dPUksoJmFtcDt0cmYtJmd0O3RpbWVvdXRfd29yaywgdHJmNzk3MGFfdGltZW91dF93b3JrX2hhbmRsZXIpOwotCiAJdHJmLSZndDt2aW5fcmVndWxhdG9yID0gZGV2bV9yZWd1bGF0b3JfZ2V0KCZhbXA7c3BpLSZndDtkZXYsICYjMzQ7dmluJiMzNDspOwogCWlmIChJU19FUlIodHJmLSZndDt2aW5fcmVndWxhdG9yKSkgewogCQlyZXQgPSBQVFJfRVJSKHRyZi0mZ3Q7dmluX3JlZ3VsYXRvcik7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDIyOjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyODAKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAyOTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgRHJpdmVyIFBhdGNoOiBUUkY3OTcwQSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCBmb3IgYGRyaXZlcnMvbmZjL3RyZjc5NzBhLmNgLiBUaGUgY29yZSBvZiBpdCBzZWVtcyB0byBiZSBhYm91dCBzeW5jaHJvbml6aW5nIGluaXRpYWxpemF0aW9uLiBJdCBsb29rcyBsaWtlIHRoZXkmIzM5O3JlIHNoaWZ0aW5nIHRoZSBgbXV0ZXhfaW5pdGAgYW5kIGBJTklUX0RFTEFZRURfV09SS2AgY2FsbHMgZm9yIHRoZSBgdHJmLSZndDtsb2NrYCBtdXRleCBhbmQgdGhlIGB0aW1lb3V0X3dvcmtgIGRlbGF5ZWQgd29yayBxdWV1ZSB0byAqYmVmb3JlKiB0aGUgYGRldm1fcmVxdWVzdF90aHJlYWRlZF9pcnFgIGNhbGwuIFNtYXJ0IG1vdmUuIFRoaXMgYWxtb3N0IGNlcnRhaW5seSBhZGRyZXNzZXMgYSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24gd2hlcmUgdGhlIGludGVycnVwdCBoYW5kbGVyLCBgdHJmNzk3MGFfaXJxYCwgY291bGQgZ2V0IHRyaWdnZXJlZCBiZWZvcmUgdGhlc2UgY3JpdGljYWwgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXMgYXJlIGZ1bGx5IGluaXRpYWxpemVkLiBNYWtlcyBzZW5zZSDigJMgcHJldmVudCB0aGUgaGFuZGxlciBmcm9tIHRyeWluZyB0byB1c2UgYSBtdXRleCBvciB3b3JrIHF1ZXVlIHRoYXQgZG9lc24mIzM5O3QgeWV0IGV4aXN0LiBJIGFsc28gc2VlIHRoZXkmIzM5O3ZlIGFkZGVkIGEgYG11dGV4X2Rlc3Ryb3koJmFtcDt0cmYtJmd0O2xvY2spYCBjYWxsIGluIHRoZSBlcnJvciBwYXRoIG9mIGBkZXZtX3JlcXVlc3RfdGhyZWFkZWRfaXJxYCBmb3IgY2xlYW51cCwgd2hpY2ggaXMgZ29vZCBwcmFjdGljZS4KCk5vdywgbXkgZXhwZXJ0IFNwaWRleS1zZW5zZSBpcyB0aW5nbGluZy4gTGV0JiMzOTtzIHNlZSBob3cgcmVsZXZhbnQgdGhpcyBpcyBpbiBhIHZpcnR1YWxpemVkIG9yIGZ1enppbmcgY29udGV4dC4gVGhpcyBpcyBhbiBTUEkgZHJpdmVyLCByaWdodD8gWWVhaCwgYHN0cnVjdCBzcGlfZGV2aWNlICpzcGlgLiBPa2F5LCBzbyBTUEkgZHJpdmVycyBhcmUgdHlwaWNhbGx5IGhhcmR3YXJlLXNwZWNpZmljLCB1c3VhbGx5IGJvdW5kIHRvIHNwZWNpZmljIGhhcmR3YXJlIG5vZGVzIGluIGRldmljZSB0cmVlIG9yIEFDUEkuIFRoZXkmIzM5O3JlIGdlbmVyYWxseSAqbm90KiBlYXNpbHkgcmVhY2hhYmxlIHdpdGhvdXQgc3BlY2lhbCBjb25maWd1cmF0aW9uIG9yIGVtdWxhdGlvbi4gSSBkb3VidCBpdCB3b3VsZCBiZSByZWFjaGFibGUgaW4gYSBzdGFuZGFyZCB2aXJ0dWFsIGVudmlyb25tZW50IHVubGVzcyB0aGVyZSYjMzk7cyBhIHNwZWNpZmljIFNQSSBjb250cm9sbGVyIGVtdWxhdGVkLiBNYXliZSBzb21lIHNvcnQgb2YgZHVtbXkgU1BJIGNvbnRyb2xsZXIgY291bGQgYmUgdXNlZCwgb3Igc29tZXRoaW5nIHNpbWlsYXIsIGJ1dCB0aGF0IHdvdWxkIG5lZWQgdG8gYmUgaW4gcGxhY2UuCgpXYWl0LCBkaWQgSSBzZWUgc29tZXRoaW5nIGFib3V0IFN5emthbGxlciBhbmQgU1BJIHN1cHBvcnQgcmVjZW50bHk/IEkgKnRob3VnaHQqIEkgc2F3IHNvbWV0aGluZy4gSXMgdGhlcmUgYSB3YXkgd2UgY2FuIHVzZSBgdmhjaWAgb3Igc29tZXRoaW5nIHNpbWlsYXI/IE5vLCBTUEkgZnV6emluZyBpcyBub3Qgc3RyYWlnaHRmb3J3YXJkLiBIYW5nIG9uLi4uIGlzbiYjMzk7dCB0aGVyZSBzb21lIHJlY2VudCBTUEkgZnV6emluZyBzdXBwb3J0PyBJIHNob3VsZCBwcm9iYWJseSBjaGVjayB0aGF0LiBMZXQgbWUgcXVpY2tseSBzZWFyY2ggdGhlIGtlcm5lbCBzb3VyY2UgZm9yICYjMzQ7dHJmNzk3MGEmIzM0OyBhbmQgc2VlIGlmIHRoZXJlJiMzOTtzIGFueSByZWxldmFudCBjb250ZXh0IEkgbWlnaHQgYmUgbWlzc2luZy4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDIyOjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RyZjc5NzBhJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZmMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA3ODQgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvbmZjL0tjb25maWc9OT1jb25maWcgTkZDX1RSRjc5NzBBXG4tLVxuZHJpdmVycy9uZmMvS2NvbmZpZy0xOC1cdCAgc2F5IE0gIHRvIGNvbXBpbGUgaXQgYXMgYSBtb2R1bGUuIFRoZSBtb2R1bGUgd2lsbCBiZSBjYWxsZWRcbmRyaXZlcnMvbmZjL0tjb25maWc6MTk6XHQgIHRyZjc5NzBhLmtvLlxuZHJpdmVycy9uZmMvS2NvbmZpZy0yMC1cbi0tXG5kcml2ZXJzL25mYy9NYWtlZmlsZT0xMz1vYmotJChDT05GSUdfTkZDX01SVkwpXHRcdCYjNDM7PSBuZmNtcnZsL1xuZHJpdmVycy9uZmMvTWFrZWZpbGU6MTQ6b2JqLSQoQ09ORklHX05GQ19UUkY3OTcwQSlcdCYjNDM7PSB0cmY3OTcwYS5vXG5kcml2ZXJzL25mYy9NYWtlZmlsZS0xNS1vYmotJChDT05GSUdfTkZDX1NUMjFORkNBKSAgXHQmIzQzOz0gc3QyMW5mY2EvXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0yNy1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6Mjg6LyogVGhlcmUgYXJlIDMgd2F5cyB0aGUgaG9zdCBjYW4gY29tbXVuaWNhdGUgd2l0aCB0aGUgdHJmNzk3MGE6XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTI5LSAqIHBhcmFsbGVsIG1vZGUsIFNQSSB3aXRoIFNsYXZlIFNlbGVjdCAoU1MpIG1vZGUsIGFuZCBTUEkgd2l0aG91dFxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMzEtICpcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MzI6ICogVGhlIHRyZjc5NzBhIGlzIHZlcnkgdGltaW5nIHNlbnNpdGl2ZSBhbmQgdGhlIFZJTiwgRU4yLCBhbmQgRU5cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMzMtICogcGlucyBtdXN0IGFzc2VydGVkIGluIHRoYXQgb3JkZXIgYW5kIHdpdGggc3BlY2lmaWMgZGVsYXlzIGluIGJldHdlZW4uXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0zNS0gKiBjb25maXJtZWQgdG8gd29yayB3aXRoIHRoaXMgZHJpdmVyLiAgVGhlcmUgaXMgYSBidWcgd2l0aCB0aGUgY3VycmVudFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzozNjogKiB2ZXJzaW9uIG9mIHRoZSB0cmY3OTcwYSB0aGF0IHJlcXVpcmVzIHRoYXQgRU4yIHJlbWFpbiBsb3cgbm8gbWF0dGVyXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTM3LSAqIHdoYXQuICBJZiBpdCBnb2VzIGhpZ2gsIGl0IHdpbGwgZ2VuZXJhdGUgYW4gUkYgZmllbGQgZXZlbiB3aGVuIGluXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0zOS0gKiB3aGVuIEVOMiBpcyBsZWZ0IGxvdy4gIFRoZSAmIzM5O2VuMi1yZi1xdWlyayYjMzk7IGRldmljZSB0cmVlIHByb3BlcnR5XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjQwOiAqIGluZGljYXRlcyB0aGF0IHRyZjc5NzBhIGN1cnJlbnRseSBiZWluZyB1c2VkIGhhcyB0aGUgZXJyYXR1bSBhbmRcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDEtICogdGhhdCBFTjIgbXVzdCBiZSBrZXB0IGxvdy5cbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTQ0LSAqIFRpbWVvdXRzIGFyZSByZXF1aXJlZCBzbyB0aGluZ3MgZG9uJiMzOTt0IGhhbmcgd2hlbiB0aGVyZSBpcyBubyByZXNwb25zZVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo0NTogKiBmcm9tIHRoZSB0cmY3OTcwYSAob3IgdGFnKS4gIFVzaW5nIHRoaXMgbWVjaGFuaXNtIGNyZWF0ZXMgYSByYWNlIHdpdGhcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDYtICogaW50ZXJydXB0cywgaG93ZXZlci4gIFRoYXQgaXMsIGFuIGludGVycnVwdCBhbmQgYSB0aW1lb3V0IGNvdWxkIG9jY3VyXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02MC0gKiB0aGUgZW50aXJlIGFudGljb2xsaXNpb24gcHJvY2VkdXJlIGFnYWluIGJ1dCB0aGUgZGlnaXRhbCBsYXllciBkb2VzbiYjMzk7dFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo2MTogKiBzdXBwb3J0IHRoYXQuICBTbywgaWYgYW4gYWJvcnQgaXMgcmVjZWl2ZWQgYmVmb3JlIHRyZjc5NzBhX3NlbmRfY21kKClcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjItICogaGFzIHNlbnQgdGhlIGNvbW1hbmQgdG8gdGhlIHRhZywgaXQgc2ltcGx5IHJldHVybnMgLUVDQU5DRUxFRC4gIElmIHRoZVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTYtICogd2hlbiB0aGUgZnJhbWluZyBpcyAmIzM5O05GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9UMlQmIzM5Oy4gIFRoaXMgaXMgZG9uZSBieVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5NzogKiB0aGUgdHJmNzk3MGFfcGVyX2NtZF9jb25maWcoKSByb3V0aW5lLlxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05OC0gKlxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQ0LS8qIFF1aXJrcyAqL1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNDU6LyogRXJyYXR1bTogV2hlbiByZWFkaW5nIElSUSBTdGF0dXMgcmVnaXN0ZXIgb24gdHJmNzk3MGEsIHdlIG11c3QgaXNzdWUgYVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDYtICogcmVhZCBjb250aW51b3VzIGNvbW1hbmQgZm9yIElSUSBTdGF0dXMgYW5kIENvbGxpc2lvbiBQb3NpdGlvbiByZWdpc3RlcnMuXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy00MTUtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjQxNjplbnVtIHRyZjc5NzBhX3N0YXRlIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDE3LVx0VFJGNzk3MEFfU1RfUFdSX09GRixcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTQyOS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NDMwOnN0cnVjdCB0cmY3OTcwYSB7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjQzMTpcdGVudW0gdHJmNzk3MGFfc3RhdGVcdFx0c3RhdGU7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTQzMi1cdHN0cnVjdCBkZXZpY2VcdFx0XHQqZGV2O1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDY1LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo0NjY6c3RhdGljIGludCB0cmY3OTcwYV9jbWQoc3RydWN0IHRyZjc5NzBhICp0cmYsIHU4IG9wY29kZSlcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDY3LXtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTQ3OS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NDgwOnN0YXRpYyBpbnQgdHJmNzk3MGFfcmVhZChzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgdTggcmVnLCB1OCAqdmFsKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy00ODEte1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDk0LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo0OTU6c3RhdGljIGludCB0cmY3OTcwYV9yZWFkX2NvbnQoc3RydWN0IHRyZjc5NzBhICp0cmYsIHU4IHJlZywgdTggKmJ1ZixcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDk2LVx0XHRcdCAgICAgIHNpemVfdCBsZW4pXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01MjMtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjUyNDpzdGF0aWMgaW50IHRyZjc5NzBhX3dyaXRlKHN0cnVjdCB0cmY3OTcwYSAqdHJmLCB1OCByZWcsIHU4IHZhbClcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTI1LXtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTUzOC1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NTM5OnN0YXRpYyBpbnQgdHJmNzk3MGFfcmVhZF9pcnFzdGF0dXMoc3RydWN0IHRyZjc5NzBhICp0cmYsIHU4ICpzdGF0dXMpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTU0MC17XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01NjItXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjU2MzpzdGF0aWMgaW50IHRyZjc5NzBhX3VwZGF0ZV9yeF9nYWluX3JlZHVjdGlvbihzdHJ1Y3QgdHJmNzk3MGEgKnRyZilcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTY0LXtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTU3MC1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NTcxOlx0cmV0ID0gdHJmNzk3MGFfcmVhZCh0cmYsIFRSRjc5NzBBX1JYX1NQRUNJQUxfU0VUVElOR1MsIFx1MDAyNnJlZyk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTU3Mi1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01NzYtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjU3NzpcdHJldCA9IHRyZjc5NzBhX3dyaXRlKHRyZiwgVFJGNzk3MEFfUlhfU1BFQ0lBTF9TRVRUSU5HUywgcmVnKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTc4LVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTgxLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo1ODI6c3RhdGljIGludCB0cmY3OTcwYV91cGRhdGVfaXNvX2N0cmxfcmVnaXN0ZXIoc3RydWN0IHRyZjc5NzBhICp0cmYsIHU4IGlzb19jdHJsKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01ODMte1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTg1LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo1ODY6XHRyZXQgPSB0cmY3OTcwYV93cml0ZSh0cmYsIFRSRjc5NzBBX0lTT19DVFJMLCBpc29fY3RybCk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTU4Ny1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01OTItXHQgKi9cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NTkzOlx0cmV0ID0gdHJmNzk3MGFfdXBkYXRlX3J4X2dhaW5fcmVkdWN0aW9uKHRyZik7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTU5NC1cbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTU5Ny1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NTk4OnN0YXRpYyBpbnQgdHJmNzk3MGFfcmVhZF90YXJnZXRfcHJvdG8oc3RydWN0IHRyZjc5NzBhICp0cmYsIHU4ICp0YXJnZXRfcHJvdG8pXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTU5OS17XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02MTYtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjYxNzpzdGF0aWMgaW50IHRyZjc5NzBhX21vZGVfZGV0ZWN0KHN0cnVjdCB0cmY3OTcwYSAqdHJmLCB1OCAqcmZfdGVjaClcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjE4LXtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTYyMS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NjIyOlx0cmV0ID0gdHJmNzk3MGFfcmVhZF90YXJnZXRfcHJvdG8odHJmLCBcdTAwMjZ0YXJnZXRfcHJvdG8pO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02MjMtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjQ5LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo2NTA6c3RhdGljIHZvaWQgdHJmNzk3MGFfc2VuZF91cHN0cmVhbShzdHJ1Y3QgdHJmNzk3MGEgKnRyZilcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjUxLXtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTY1NS1cdGlmICh0cmYtXHUwMDNlcnhfc2tiIFx1MDAyNlx1MDAyNiAhSVNfRVJSKHRyZi1cdTAwM2VyeF9za2IpIFx1MDAyNlx1MDAyNiAhdHJmLVx1MDAzZWFib3J0aW5nKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo2NTY6XHRcdHByaW50X2hleF9kdW1wX2RlYnVnKFwmIzM0O3RyZjc5NzBhIHJ4IGRhdGE6IFwmIzM0OywgRFVNUF9QUkVGSVhfTk9ORSxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjU3LVx0XHRcdFx0ICAgICAxNiwgMSwgdHJmLVx1MDAzZXJ4X3NrYi1cdTAwM2VkYXRhLCB0cmYtXHUwMDNlcnhfc2tiLVx1MDAzZWxlbixcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTY3Ny1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6Njc4OnN0YXRpYyB2b2lkIHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHN0cnVjdCB0cmY3OTcwYSAqdHJmLCBpbnQgZXJybm8pXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTY3OS17XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02ODYtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjY4NzpcdHRyZjc5NzBhX3NlbmRfdXBzdHJlYW0odHJmKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjg4LX1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjg5LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo2OTA6c3RhdGljIGludCB0cmY3OTcwYV90cmFuc21pdChzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjkxLVx0XHRcdCAgICAgdW5zaWduZWQgaW50IGxlbiwgY29uc3QgdTggKnByZWZpeCxcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTY5OC1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6Njk5Olx0cHJpbnRfaGV4X2R1bXBfZGVidWcoXCYjMzQ7dHJmNzk3MGEgdHggZGF0YTogXCYjMzQ7LCBEVU1QX1BSRUZJWF9OT05FLFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03MDAtXHRcdFx0ICAgICAxNiwgMSwgc2tiLVx1MDAzZWRhdGEsIGxlbiwgZmFsc2UpO1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzQ3LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo3NDg6c3RhdGljIHZvaWQgdHJmNzk3MGFfZmlsbF9maWZvKHN0cnVjdCB0cmY3OTcwYSAqdHJmKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03NDkte1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzU1LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo3NTY6XHRyZXQgPSB0cmY3OTcwYV9yZWFkKHRyZiwgVFJGNzk3MEFfRklGT19TVEFUVVMsIFx1MDAyNmZpZm9fYnl0ZXMpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03NTctXHRpZiAocmV0KSB7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjc1ODpcdFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCByZXQpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03NTktXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTc3Ny1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6Nzc4Olx0cmV0ID0gdHJmNzk3MGFfdHJhbnNtaXQodHJmLCBza2IsIGxlbiwgXHUwMDI2cHJlZml4LCBzaXplb2YocHJlZml4KSk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTc3OS1cdGlmIChyZXQpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjc4MDpcdFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCByZXQpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03ODEtfVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03ODItXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjc4MzpzdGF0aWMgdm9pZCB0cmY3OTcwYV9kcmFpbl9maWZvKHN0cnVjdCB0cmY3OTcwYSAqdHJmLCB1OCBzdGF0dXMpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTc4NC17XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03ODktXHRpZiAoc3RhdHVzIFx1MDAyNiBUUkY3OTcwQV9JUlFfU1RBVFVTX0VSUk9SKSB7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjc5MDpcdFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCAtRUlPKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzkxLVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03OTMtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjc5NDpcdHJldCA9IHRyZjc5NzBhX3JlYWQodHJmLCBUUkY3OTcwQV9GSUZPX1NUQVRVUywgXHUwMDI2Zmlmb19ieXRlcyk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTc5NS1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6Nzk2Olx0XHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIHJldCk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTc5Ny1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODEyLVx0XHRpZiAoIXNrYikge1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo4MTM6XHRcdFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCAtRU5PTUVNKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODE0LVx0XHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTgyMC1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6ODIxOlx0cmV0ID0gdHJmNzk3MGFfcmVhZF9jb250KHRyZiwgVFJGNzk3MEFfRklGT19JT19SRUdJU1RFUixcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODIyLVx0XHRcdFx0IHNrYl9wdXQoc2tiLCBmaWZvX2J5dGVzKSwgZmlmb19ieXRlcyk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTgyMy1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6ODI0Olx0XHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIHJldCk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTgyNS1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODM1LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo4MzY6XHRcdHJldCA9IHRyZjc5NzBhX3JlYWQodHJmLCBUUkY3OTcwQV9GSUZPX1NUQVRVUywgXHUwMDI2Zmlmb19ieXRlcyk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTgzNy1cdFx0aWYgKHJldCkge1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo4Mzg6XHRcdFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCByZXQpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04MzktXHRcdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODQ1LVx0XHQgKiB0aGUgaWYgc3RtdCBiZWxvdyBkb2VzbiYjMzk7dCBmaXJlIGFuZCB0aGUgZHJpdmVyIHdpbGwgd2FpdFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo4NDY6XHRcdCAqIGZvciB0aGUgdHJmNzk3MGEgdG8gZ2VuZXJhdGUgYW5vdGhlciBSWCBpbnRlcnJ1cHQuXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTg0Ny1cdFx0ICovXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04NTMtXHRpZiAoc3RhdHVzID09IFRSRjc5NzBBX0lSUV9TVEFUVVNfU1JYKSB7XHQvKiBSZWNlaXZlIGNvbXBsZXRlICovXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjg1NDpcdFx0dHJmNzk3MGFfc2VuZF91cHN0cmVhbSh0cmYpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04NTUtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTg2NC1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6ODY1OnN0YXRpYyBpcnFyZXR1cm5fdCB0cmY3OTcwYV9pcnEoaW50IGlycSwgdm9pZCAqZGV2X2lkKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04NjYte1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo4Njc6XHRzdHJ1Y3QgdHJmNzk3MGEgKnRyZiA9IGRldl9pZDtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODY4LVx0aW50IHJldDtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTg3Ny1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6ODc4Olx0cmV0ID0gdHJmNzk3MGFfcmVhZF9pcnFzdGF0dXModHJmLCBcdTAwMjZzdGF0dXMpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04NzktXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04OTYtXHRcdCAqIHR1cm4gb2ZmIHRoZSByZWNlaXZlciB0byBhdm9pZCB1bm5lY2Vzc2FyeSBpbnRlcnJ1cHRzLlxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo4OTc6XHRcdCAqIEl0IHdpbGwgYmUgdHVybmVkIGJhY2sgb24gaW4gdHJmNzk3MGFfc2VuZF9jbWQoKSB3aGVuXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTg5OC1cdFx0ICogdGhlIG5leHQgY29tbWFuZCBpcyBpc3N1ZWQuXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05MDAtXHRcdGlmICh0cmYtXHUwMDNlaXNfaW5pdGlhdG9yIFx1MDAyNlx1MDAyNiAoc3RhdHVzIFx1MDAyNiBUUkY3OTcwQV9JUlFfU1RBVFVTX0VSUk9SKSkge1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5MDE6XHRcdFx0dHJmNzk3MGFfY21kKHRyZiwgVFJGNzk3MEFfQ01EX0JMT0NLX1JYKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTAyLVx0XHRcdHRyZi1cdTAwM2VzdGF0ZSA9IFRSRjc5NzBBX1NUX0lETEVfUlhfQkxPQ0tFRDtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkwNC1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTA1Olx0XHR0cmY3OTcwYV9jbWQodHJmLCBUUkY3OTcwQV9DTURfRklGT19SRVNFVCk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkwNi1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05MTAtXHRcdFx0ICAgICFjYW5jZWxfZGVsYXllZF93b3JrKFx1MDAyNnRyZi1cdTAwM2V0aW1lb3V0X3dvcmspO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5MTE6XHRcdFx0dHJmNzk3MGFfZmlsbF9maWZvKHRyZik7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkxMi1cdFx0fSBlbHNlIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTEzOlx0XHRcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgLUVJTyk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkxNC1cdFx0fVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTIwLVx0XHRcdCAgICAhY2FuY2VsX2RlbGF5ZWRfd29yayhcdTAwMjZ0cmYtXHUwMDNldGltZW91dF93b3JrKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTIxOlx0XHRcdHRyZjc5NzBhX2RyYWluX2ZpZm8odHJmLCBzdGF0dXMpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05MjItXHRcdH0gZWxzZSBpZiAoc3RhdHVzIFx1MDAyNiBUUkY3OTcwQV9JUlFfU1RBVFVTX0ZJRk8pIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTIzOlx0XHRcdHJldCA9IHRyZjc5NzBhX3JlYWQodHJmLCBUUkY3OTcwQV9GSUZPX1NUQVRVUyxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTI0LVx0XHRcdFx0XHQgICAgXHUwMDI2Zmlmb19ieXRlcyk7XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05MjgtXHRcdFx0aWYgKHJldClcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTI5Olx0XHRcdFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCByZXQpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05MzAtXHRcdFx0ZWxzZSBpZiAoIWZpZm9fYnl0ZXMpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjkzMTpcdFx0XHRcdHRyZjc5NzBhX2NtZCh0cmYsIFRSRjc5NzBBX0NNRF9GSUZPX1JFU0VUKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTMyLVx0XHR9IGVsc2UgaWYgKChzdGF0dXMgPT0gVFJGNzk3MEFfSVJRX1NUQVRVU19UWCkgfHxcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkzNS1cdFx0XHRcdFx0VFJGNzk3MEFfSVJRX1NUQVRVU19ORkNfUkYpKSkpIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTM2Olx0XHRcdHRyZjc5NzBhX2NtZCh0cmYsIFRSRjc5NzBBX0NNRF9GSUZPX1JFU0VUKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTM3LVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTQxLVx0XHRcdFx0dHJmLVx1MDAzZXJ4X3NrYiA9IEVSUl9QVFIoMCk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjk0MjpcdFx0XHRcdHRyZjc5NzBhX3NlbmRfdXBzdHJlYW0odHJmKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTQzLVx0XHRcdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05NjItXHRcdFx0Y2FzZSBORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfQU5USUNPTF9DT01QTEVURTpcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTYzOlx0XHRcdFx0cmV0ID0gdHJmNzk3MGFfd3JpdGUodHJmLFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05NjQtXHRcdFx0XHRcdCBUUkY3OTcwQV9TUEVDSUFMX0ZDTl9SRUcxLFxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTc2LVx0XHRcdGlmIChpc29fY3RybCAhPSB0cmYtXHUwMDNlaXNvX2N0cmwpIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTc3Olx0XHRcdFx0cmV0ID0gdHJmNzk3MGFfdXBkYXRlX2lzb19jdHJsX3JlZ2lzdGVyKHRyZiwgaXNvX2N0cmwpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05NzgtXHRcdFx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTgzLVx0XHR9IGVsc2Uge1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5ODQ6XHRcdFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCAtRUlPKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTg1LVx0XHR9XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05ODgtXHRcdGlmIChzdGF0dXMgIT0gVFJGNzk3MEFfSVJRX1NUQVRVU19UWClcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTg5Olx0XHRcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgLUVJTyk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk5MC1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05OTQtXHRcdFx0ICAgICFjYW5jZWxfZGVsYXllZF93b3JrKFx1MDAyNnRyZi1cdTAwM2V0aW1lb3V0X3dvcmspO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5OTU6XHRcdFx0dHJmNzk3MGFfZHJhaW5fZmlmbyh0cmYsIHN0YXR1cyk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk5Ni1cdFx0fSBlbHNlIGlmICghKHN0YXR1cyBcdTAwMjYgVFJGNzk3MEFfSVJRX1NUQVRVU19ORkNfUkYpKSB7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjk5NzpcdFx0XHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIC1FSU8pO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05OTgtXHRcdH1cbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwMDQtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwMDU6XHRcdFx0cmV0ID0gdHJmNzk3MGFfbW9kZV9kZXRlY3QodHJmLCBcdTAwMjZ0cmYtXHUwMDNlbWRfcmZfdGVjaCk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwMDYtXHRcdFx0aWYgKHJldCkge1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDA3Olx0XHRcdFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCByZXQpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDA4LVx0XHRcdH0gZWxzZSB7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwMDktXHRcdFx0XHR0cmYtXHUwMDNlc3RhdGUgPSBUUkY3OTcwQV9TVF9MSVNURU5JTkc7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwMTA6XHRcdFx0XHR0cmY3OTcwYV9kcmFpbl9maWZvKHRyZiwgc3RhdHVzKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAxMS1cdFx0XHR9XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwMTItXHRcdH0gZWxzZSBpZiAoIShzdGF0dXMgXHUwMDI2IFRSRjc5NzBBX0lSUV9TVEFUVVNfTkZDX1JGKSkge1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDEzOlx0XHRcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgLUVJTyk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwMTQtXHRcdH1cbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwMjUtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwMjY6c3RhdGljIHZvaWQgdHJmNzk3MGFfaXNzdWVfZW9mKHN0cnVjdCB0cmY3OTcwYSAqdHJmKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDI3LXtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwMzEtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwMzI6XHRyZXQgPSB0cmY3OTcwYV9jbWQodHJmLCBUUkY3OTcwQV9DTURfRklGT19SRVNFVCk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwMzMtXHRpZiAocmV0KVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDM0Olx0XHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIHJldCk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwMzUtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwMzY6XHRyZXQgPSB0cmY3OTcwYV9jbWQodHJmLCBUUkY3OTcwQV9DTURfRU9GKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAzNy1cdGlmIChyZXQpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwMzg6XHRcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgcmV0KTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAzOS1cbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwNDgtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwNDk6c3RhdGljIHZvaWQgdHJmNzk3MGFfdGltZW91dF93b3JrX2hhbmRsZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDUwLXtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTA1MTpcdHN0cnVjdCB0cmY3OTcwYSAqdHJmID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCB0cmY3OTcwYSxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA1Mi1cdFx0XHRcdFx0ICAgIHRpbWVvdXRfd29yay53b3JrKTtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwNjEtXHRlbHNlIGlmICh0cmYtXHUwMDNlc3RhdGUgPT0gVFJGNzk3MEFfU1RfV0FJVF9GT1JfUlhfREFUQV9DT05UKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDYyOlx0XHR0cmY3OTcwYV9kcmFpbl9maWZvKHRyZiwgVFJGNzk3MEFfSVJRX1NUQVRVU19TUlgpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDYzLVx0ZWxzZSBpZiAodHJmLVx1MDAzZXN0YXRlID09IFRSRjc5NzBBX1NUX1dBSVRfVE9fSVNTVUVfRU9GKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDY0Olx0XHR0cmY3OTcwYV9pc3N1ZV9lb2YodHJmKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA2NS1cdGVsc2VcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTA2NjpcdFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCAtRVRJTUVET1VUKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA2Ny1cbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwNzAtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwNzE6c3RhdGljIGludCB0cmY3OTcwYV9pbml0KHN0cnVjdCB0cmY3OTcwYSAqdHJmKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDcyLXtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwNzYtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwNzc6XHRyZXQgPSB0cmY3OTcwYV9jbWQodHJmLCBUUkY3OTcwQV9DTURfU09GVF9JTklUKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA3OC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDgxLVx0LyogU2V0IHRoZSBnYWluIHJlZHVjdGlvbiBhZnRlciBzb2Z0IGluaXQgKi9cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTA4MjpcdHJldCA9IHRyZjc5NzBhX3VwZGF0ZV9yeF9nYWluX3JlZHVjdGlvbih0cmYpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDgzLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwODUtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwODY6XHRyZXQgPSB0cmY3OTcwYV9jbWQodHJmLCBUUkY3OTcwQV9DTURfSURMRSk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwODctXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA4OS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTA5MDpcdHJldCA9IHRyZjc5NzBhX3dyaXRlKHRyZiwgVFJGNzk3MEFfUkVHX0lPX0NUUkwsXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwOTEtXHRcdFx0ICAgICB0cmYtXHUwMDNlaW9fY3RybCB8IFRSRjc5NzBBX1JFR19JT19DVFJMX1ZSUygweDEpKTtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwOTQtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwOTU6XHRyZXQgPSB0cmY3OTcwYV93cml0ZSh0cmYsIFRSRjc5NzBBX05GQ19UQVJHRVRfTEVWRUwsIDApO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDk2LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExMDItXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjExMDM6XHRyZXQgPSB0cmY3OTcwYV93cml0ZSh0cmYsIFRSRjc5NzBBX01PRFVMQVRPUl9TWVNfQ0xLX0NUUkwsXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExMDQtXHRcdFx0ICAgICB0cmYtXHUwMDNlbW9kdWxhdG9yX3N5c19jbGtfY3RybCk7XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTA3LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMTA4Olx0cmV0ID0gdHJmNzk3MGFfd3JpdGUodHJmLCBUUkY3OTcwQV9BREpVVEFCTEVfRklGT19JUlFfTEVWRUxTLFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTA5LVx0XHRcdCAgICAgVFJGNzk3MEFfQURKVVRBQkxFX0ZJRk9fSVJRX0xFVkVMU19XTEhfOTYgfFxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTExMy1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTExNDpcdHJldCA9IHRyZjc5NzBhX3dyaXRlKHRyZiwgVFJGNzk3MEFfU1BFQ0lBTF9GQ05fUkVHMSwgMCk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExMTUtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTEyNy1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTEyODpzdGF0aWMgdm9pZCB0cmY3OTcwYV9zd2l0Y2hfcmZfb2ZmKHN0cnVjdCB0cmY3OTcwYSAqdHJmKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTI5LXtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExMzctXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjExMzg6XHR0cmY3OTcwYV93cml0ZSh0cmYsIFRSRjc5NzBBX0NISVBfU1RBVFVTX0NUUkwsIHRyZi1cdTAwM2VjaGlwX3N0YXR1c19jdHJsKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTEzOS1cbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExNDYtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjExNDc6c3RhdGljIGludCB0cmY3OTcwYV9zd2l0Y2hfcmZfb24oc3RydWN0IHRyZjc5NzBhICp0cmYpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExNDgte1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTE2MC1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTE2MTpcdHJldCA9IHRyZjc5NzBhX2luaXQodHJmKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTE2Mi1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExNzEtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjExNzI6c3RhdGljIGludCB0cmY3OTcwYV9zd2l0Y2hfcmYoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgYm9vbCBvbilcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTE3My17XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjExNzQ6XHRzdHJ1Y3QgdHJmNzk3MGEgKnRyZiA9IG5mY19kaWdpdGFsX2dldF9kcnZkYXRhKGRkZXYpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTc1LVx0aW50IHJldCA9IDA7XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTg0LVx0XHRjYXNlIFRSRjc5NzBBX1NUX1JGX09GRjpcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTE4NTpcdFx0XHRyZXQgPSB0cmY3OTcwYV9zd2l0Y2hfcmZfb24odHJmKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTE4Ni1cdFx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExOTItXHRcdFx0XHRfX2Z1bmNfXywgdHJmLVx1MDAzZXN0YXRlLCBvbik7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjExOTM6XHRcdFx0dHJmNzk3MGFfc3dpdGNoX3JmX29mZih0cmYpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTk0LVx0XHRcdHJldCA9IC1FSU5WQUw7XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjA5LVx0XHRjYXNlIFRSRjc5NzBBX1NUX1dBSVRfRk9SX1JYX0RBVEFfQ09OVDpcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTIxMDpcdFx0XHR0cmY3OTcwYV9zd2l0Y2hfcmZfb2ZmKHRyZik7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyMTEtXHRcdH1cbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyMTctXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEyMTg6c3RhdGljIGludCB0cmY3OTcwYV9pbl9jb25maWdfcmZfdGVjaChzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgaW50IHRlY2gpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyMTkte1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI2OC1cdCAqIFBTTCBzZXF1ZW5jZSAoaW5kaWNhdGVkIGJ5ICYjMzk7dHJmLVx1MDAzZWlzb19jdHJsID09IDB4ZmYmIzM5OyBmcm9tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEyNjk6XHQgKiB0cmY3OTcwYV9pbml0KCkpLCBjbGVhciB0aGUgTkZDIFRhcmdldCBEZXRlY3Rpb24gTGV2ZWwgcmVnaXN0ZXJcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI3MC1cdCAqIGR1ZSB0byBlcnJhdHVtLlxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI3Mi1cdGlmICh0cmYtXHUwMDNlaXNvX2N0cmwgPT0gMHhmZilcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTI3MzpcdFx0cmV0ID0gdHJmNzk3MGFfd3JpdGUodHJmLCBUUkY3OTcwQV9ORkNfVEFSR0VUX0xFVkVMLCAwKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI3NC1cbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyNzctXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEyNzg6c3RhdGljIGludCB0cmY3OTcwYV9pc19yZl9maWVsZChzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgYm9vbCAqaXNfcmZfZmllbGQpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyNzkte1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI4Mi1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTI4MzpcdHJldCA9IHRyZjc5NzBhX3dyaXRlKHRyZiwgVFJGNzk3MEFfQ0hJUF9TVEFUVVNfQ1RSTCxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI4NC1cdFx0XHQgICAgIHRyZi1cdTAwM2VjaGlwX3N0YXR1c19jdHJsIHxcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyODgtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEyODk6XHRyZXQgPSB0cmY3OTcwYV9jbWQodHJmLCBUUkY3OTcwQV9DTURfVEVTVF9FWFRfUkYpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjkwLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyOTQtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEyOTU6XHRyZXQgPSB0cmY3OTcwYV9yZWFkKHRyZiwgVFJGNzk3MEFfUlNTSV9PU0NfU1RBVFVTLCBcdTAwMjZyc3NpKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI5Ni1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjk4LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMjk5Olx0cmV0ID0gdHJmNzk3MGFfd3JpdGUodHJmLCBUUkY3OTcwQV9DSElQX1NUQVRVU19DVFJMLFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzAwLVx0XHRcdCAgICAgdHJmLVx1MDAzZWNoaXBfc3RhdHVzX2N0cmwpO1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTMxMS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTMxMjpzdGF0aWMgaW50IHRyZjc5NzBhX2luX2NvbmZpZ19mcmFtaW5nKHN0cnVjdCB0cmY3OTcwYSAqdHJmLCBpbnQgZnJhbWluZylcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTMxMy17XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzUwLVx0aWYgKCEodHJmLVx1MDAzZWNoaXBfc3RhdHVzX2N0cmwgXHUwMDI2IFRSRjc5NzBBX0NISVBfU1RBVFVTX1JGX09OKSkge1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMzUxOlx0XHRyZXQgPSB0cmY3OTcwYV9pc19yZl9maWVsZCh0cmYsIFx1MDAyNmlzX3JmX2ZpZWxkKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTM1Mi1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzNTktXHRpZiAoaXNvX2N0cmwgIT0gdHJmLVx1MDAzZWlzb19jdHJsKSB7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEzNjA6XHRcdHJldCA9IHRyZjc5NzBhX3VwZGF0ZV9pc29fY3RybF9yZWdpc3Rlcih0cmYsIGlzb19jdHJsKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTM2MS1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzNjUtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEzNjY6XHRcdHJldCA9IHRyZjc5NzBhX3dyaXRlKHRyZiwgVFJGNzk3MEFfTU9EVUxBVE9SX1NZU19DTEtfQ1RSTCxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTM2Ny1cdFx0XHRcdCAgICAgdHJmLVx1MDAzZW1vZHVsYXRvcl9zeXNfY2xrX2N0cmwpO1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTM3Mi1cdGlmICghKHRyZi1cdTAwM2VjaGlwX3N0YXR1c19jdHJsIFx1MDAyNiBUUkY3OTcwQV9DSElQX1NUQVRVU19SRl9PTikpIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTM3MzpcdFx0cmV0ID0gdHJmNzk3MGFfd3JpdGUodHJmLCBUUkY3OTcwQV9DSElQX1NUQVRVU19DVFJMLFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzc0LVx0XHRcdFx0ICAgICB0cmYtXHUwMDNlY2hpcF9zdGF0dXNfY3RybCB8XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzg2LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMzg3OnN0YXRpYyBpbnQgdHJmNzk3MGFfaW5fY29uZmlndXJlX2h3KHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIGludCB0eXBlLFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzg4LVx0XHRcdFx0ICAgIGludCBwYXJhbSlcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTM4OS17XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEzOTA6XHRzdHJ1Y3QgdHJmNzk3MGEgKnRyZiA9IG5mY19kaWdpdGFsX2dldF9kcnZkYXRhKGRkZXYpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzkxLVx0aW50IHJldDtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0MDAtXHQgICAgKHRyZi1cdTAwM2VzdGF0ZSA9PSBUUkY3OTcwQV9TVF9SRl9PRkYpKSB7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE0MDE6XHRcdHJldCA9IHRyZjc5NzBhX3N3aXRjaF9yZl9vbih0cmYpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDAyLVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQwNy1cdGNhc2UgTkZDX0RJR0lUQUxfQ09ORklHX1JGX1RFQ0g6XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE0MDg6XHRcdHJldCA9IHRyZjc5NzBhX2luX2NvbmZpZ19yZl90ZWNoKHRyZiwgcGFyYW0pO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDA5LVx0XHRicmVhaztcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQxMC1cdGNhc2UgTkZDX0RJR0lUQUxfQ09ORklHX0ZSQU1JTkc6XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE0MTE6XHRcdHJldCA9IHRyZjc5NzBhX2luX2NvbmZpZ19mcmFtaW5nKHRyZiwgcGFyYW0pO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDEyLVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0MjItXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE0MjM6c3RhdGljIGludCB0cmY3OTcwYV9pc19pc28xNTY5M193cml0ZV9vcl9sb2NrKHU4IGNtZClcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQyNC17XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDM4LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNDM5OnN0YXRpYyBpbnQgdHJmNzk3MGFfcGVyX2NtZF9jb25maWcoc3RydWN0IHRyZjc5NzBhICp0cmYsXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0NDAtXHRcdFx0XHQgICBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQ2NC1cdFx0aWYgKHNwZWNpYWxfZmNuX3JlZzEgIT0gdHJmLVx1MDAzZXNwZWNpYWxfZmNuX3JlZzEpIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTQ2NTpcdFx0XHRyZXQgPSB0cmY3OTcwYV93cml0ZSh0cmYsIFRSRjc5NzBBX1NQRUNJQUxfRkNOX1JFRzEsXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0NjYtXHRcdFx0XHRcdCAgICAgc3BlY2lhbF9mY25fcmVnMSk7XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDkxLVx0XHRpZiAoaXNvX2N0cmwgIT0gdHJmLVx1MDAzZWlzb19jdHJsKSB7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE0OTI6XHRcdFx0cmV0ID0gdHJmNzk3MGFfdXBkYXRlX2lzb19jdHJsX3JlZ2lzdGVyKHRyZiwgaXNvX2N0cmwpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDkzLVx0XHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDk5LVx0XHRpZiAoKHRyZi1cdTAwM2VmcmFtaW5nID09IE5GQ19ESUdJVEFMX0ZSQU1JTkdfSVNPMTU2OTNfVDVUKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTUwMDpcdFx0ICAgIHRyZjc5NzBhX2lzX2lzbzE1NjkzX3dyaXRlX29yX2xvY2socmVxWzFdKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTUwMS1cdFx0ICAgIChyZXFbMF0gXHUwMDI2IElTTzE1NjkzX1JFUV9GTEFHX09QVElPTikpXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNTA3LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNTA4OnN0YXRpYyBpbnQgdHJmNzk3MGFfc2VuZF9jbWQoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTUwOS1cdFx0XHQgICAgIHN0cnVjdCBza19idWZmICpza2IsIHUxNiB0aW1lb3V0LFxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTUxMS17XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE1MTI6XHRzdHJ1Y3QgdHJmNzk3MGEgKnRyZiA9IG5mY19kaWdpdGFsX2dldF9kcnZkYXRhKGRkZXYpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNTEzLVx0dTggcHJlZml4WzVdO1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTU1MS1cdGlmICh0cmYtXHUwMDNlc3RhdGUgPT0gVFJGNzk3MEFfU1RfSURMRV9SWF9CTE9DS0VEKSB7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE1NTI6XHRcdHJldCA9IHRyZjc5NzBhX2NtZCh0cmYsIFRSRjc5NzBBX0NNRF9FTkFCTEVfUlgpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNTUzLVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTU1OS1cdGlmICh0cmYtXHUwMDNlaXNfaW5pdGlhdG9yKSB7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE1NjA6XHRcdHJldCA9IHRyZjc5NzBhX3Blcl9jbWRfY29uZmlnKHRyZiwgc2tiKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTU2MS1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE1OTYtXHQvKiBDbGVhciBwb3NzaWJsZSBzcHVyaW91cyBpbnRlcnJ1cHQgKi9cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTU5NzpcdHJldCA9IHRyZjc5NzBhX3JlYWRfaXJxc3RhdHVzKHRyZiwgXHUwMDI2c3RhdHVzKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTU5OC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNjAwLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNjAxOlx0cmV0ID0gdHJmNzk3MGFfdHJhbnNtaXQodHJmLCBza2IsIGxlbiwgcHJlZml4LCBzaXplb2YocHJlZml4KSk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE2MDItXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNjExLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNjEyOnN0YXRpYyBpbnQgdHJmNzk3MGFfdGdfY29uZmlnX3JmX3RlY2goc3RydWN0IHRyZjc5NzBhICp0cmYsIGludCB0ZWNoKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNjEzLXtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE2NDctXHQvKiBOb3JtYWxseSB3ZSB3cml0ZSB0aGUgSVNPX0NUUkwgcmVnaXN0ZXIgaW5cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTY0ODpcdCAqIHRyZjc5NzBhX3RnX2NvbmZpZ19mcmFtaW5nKCkgYmVjYXVzZSB0aGUgZnJhbWluZyBjYW4gY2hhbmdlXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE2NDktXHQgKiB0aGUgdmFsdWUgd3JpdHRlbi4gIEhvd2V2ZXIsIHdoZW4gc2VuZGluZyBhIFBTTCBSRVMsXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE2NTAtXHQgKiBkaWdpdGFsX3RnX3NlbmRfcHNsX3Jlc19jb21wbGV0ZSgpIGRvZXNuJiMzOTt0IGNhbGxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTY1MTpcdCAqIHRyZjc5NzBhX3RnX2NvbmZpZ19mcmFtaW5nKCkgc28gd2UgbXVzdCB3cml0ZSB0aGUgcmVnaXN0ZXJcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTY1Mi1cdCAqIGhlcmUuXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNjU1LVx0ICAgICh0cmYtXHUwMDNlaXNvX2N0cmxfdGVjaCAhPSB0cmYtXHUwMDNlaXNvX2N0cmwpKSB7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE2NTY6XHRcdHJldCA9IHRyZjc5NzBhX3VwZGF0ZV9pc29fY3RybF9yZWdpc3Rlcih0cmYsIHRyZi1cdTAwM2Vpc29fY3RybF90ZWNoKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTY1Ny1cbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE2NjktICovXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE2NzA6c3RhdGljIGludCB0cmY3OTcwYV90Z19jb25maWdfZnJhbWluZyhzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgaW50IGZyYW1pbmcpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE2NzEte1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTcwMy1cdGlmIChpc29fY3RybCAhPSB0cmYtXHUwMDNlaXNvX2N0cmwpIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTcwNDpcdFx0cmV0ID0gdHJmNzk3MGFfdXBkYXRlX2lzb19jdHJsX3JlZ2lzdGVyKHRyZiwgaXNvX2N0cmwpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNzA1LVx0XHRpZiAocmV0KVxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMjI6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTY0ODcKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAyMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBUUkY3OTcwQSBORkMgRHJpdmVyJiMzOTtzIFZpcnR1YWxpemF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgZHJpdmVycy9uZmMvdHJmNzk3MGEuY2Ag4oCTIHRoYXQmIzM5O3MgdGhlIE5GQyBkcml2ZXIgZm9yIHRoZSBUZXhhcyBJbnN0cnVtZW50cyBUUkY3OTcwQSB0cmFuc2NlaXZlci4gSXQmIzM5O3MgYW4gU1BJLWJhc2VkIGRyaXZlciwgd2hpY2ggaW1tZWRpYXRlbHkgbWFrZXMgdmlydHVhbGl6YXRpb24gYSBiaXQgdHJpY2tpZXIuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoZXJlJiMzOTtzIGEgcHJhY3RpY2FsIHdheSB0byB0ZXN0IHRoaXMgdGhpbmcgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCwgZXNwZWNpYWxseSB1c2luZyBzb21ldGhpbmcgbGlrZSBzeXprYWxsZXIuCgpNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gc2VlIGlmIHRoZXJlJiMzOTtzIGEgcmVhZGlseSBhdmFpbGFibGUgU1BJIGNvbnRyb2xsZXIgaW4gUUVNVSB0aGF0IHN5emthbGxlciBjYW4gbGV2ZXJhZ2UuIFRoYXQmIzM5O3MgdXN1YWxseSB0aGUgYm90dGxlbmVjay4gQW5kIGhvbmVzdGx5LCBpdCYjMzk7cyByYXJlIHRvIGZpbmQgZGlyZWN0IHN1cHBvcnQgZm9yIGEgc3BlY2lmaWMgZGV2aWNlIGxpa2UgdGhlIFRSRjc5NzBBLiBJIGtub3cgc3l6a2FsbGVyIGhhcyBzb21lIHZpcnR1YWxpemF0aW9uIHRyaWNrcyB1cCBpdHMgc2xlZXZlLiBXZSYjMzk7dmUgZ290IGB2aGNpYCBmb3IgVVNCLCBgbWFjODAyMTFfaHdzaW1gIGZvciBXaUZpLCBhbmQgZXZlbiBgbmZjc2ltYCBmb3IgTkZDLi4uIGJ1dCBgbmZjc2ltYCBpcyBhIHZpcnR1YWwgTkZDIGRldmljZSwgbm90IGFuIGVtdWxhdG9yIGZvciBhICpzcGVjaWZpYyogdHJhbnNjZWl2ZXIuIFNvLCBpdCYjMzk7cyBub3QgYSBkaXJlY3QgbWF0Y2guCgpOb3csIEkmIzM5O20gdHJ5aW5nIHRvIHJlY2FsbCBpZiBzeXprYWxsZXIgaGFzIGFueSBkZWRpY2F0ZWQgU1BJIHNldHVwIGZ1bmN0aW9ucyBsaWtlIGBzeXpfc3BpX3NldHVwYD8gTm8sIHRoYXQgZG9lc24mIzM5O3QgcmluZyBhIGJlbGwuIFdhaXQsIHRob3VnaCwgZGlkbiYjMzk7dCB0aGV5IHJlY2VudGx5IGFkZCBzb21lIHJ1ZGltZW50YXJ5IFNQSSBzdXBwb3J0IHRocm91Z2ggYSBkdW1teSBjb250cm9sbGVyPyBUaGF0IG1pZ2h0IGJlIG91ciBrZXkuIEl0JiMzOTtzIHdvcnRoIGRpZ2dpbmcgaW50byB0aGUgcmVjZW50IGNoYW5nZXMuCgpBbHJpZ2h0LCBJIG5lZWQgdG8gZm9jdXMgb24gd2hhdCBzeXprYWxsZXIga25vd3MgYWJvdXQgU1BJIGluIGdlbmVyYWwsIG9yLCBtb3JlIHNwZWNpZmljYWxseSwgYW55IG1lbnRpb25zIG9mIHRoZSBUUkY3OTcwQS4gVGltZSB0byBzZWFyY2ggdGhlIGRlc2NyaXB0aW9ucyBhbmQgc2VlIHdoYXQgY29tZXMgdXAuIFRoYXQmIzM5O3MgdGhlIGJlc3Qgcm91dGUgZm9yIGdldHRpbmcgc3RhcnRlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAyMjozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0cmY3OTcwYSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgODI0IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sLTMtLS0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sOjQ6JGlkOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvc2NoZW1hcy9uZXQvbmZjL3RpLHRyZjc5NzBhLnlhbWwjXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sLTUtJHNjaGVtYTogaHR0cDovL2RldmljZXRyZWUub3JnL21ldGEtc2NoZW1hcy9jb3JlLnlhbWwjXG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvdGksdHJmNzk3MGEueWFtbD0xMz1wcm9wZXJ0aWVzOlxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvdGksdHJmNzk3MGEueWFtbC0xNC0gIGNvbXBhdGlibGU6XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sOjE1OiAgICBjb25zdDogdGksdHJmNzk3MGFcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbmZjL3RpLHRyZjc5NzBhLnlhbWwtMTYtXG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvdGksdHJmNzk3MGEueWFtbC0yMy0gICAgZGVzY3JpcHRpb246IHxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbmZjL3RpLHRyZjc5NzBhLnlhbWw6MjQ6ICAgICAgU2V0IHRvIHNwZWNpZnkgdGhhdCB0aGUgaW5wdXQgZnJlcXVlbmN5IHRvIHRoZSB0cmY3OTcwYSBpcyAxMzU2MDAwMEh6IG9yXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sLTI1LSAgICAgIDI3MTIwMDAwSHpcbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sLTI5LSAgICBkZXNjcmlwdGlvbjogfFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvdGksdHJmNzk3MGEueWFtbDozMDogICAgICBTcGVjaWZ5IHRoYXQgdGhlIHRyZjc5NzBhIGJlaW5nIHVzZWQgaGFzIHRoZSBcJiMzNDtFTjIgUkZcJiMzNDsgZXJyYXR1bVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvdGksdHJmNzk3MGEueWFtbC0zMS1cbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sLTM3LSAgICBkZXNjcmlwdGlvbjogfFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvdGksdHJmNzk3MGEueWFtbDozODogICAgICBTcGVjaWZ5IHRoYXQgdGhlIHRyZjc5NzBhIGJlaW5nIHVzZWQgaGFzIHRoZSBcJiMzNDtJUlEgU3RhdHVzIFJlYWRcJiMzNDsgZXJyYXR1bVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvdGksdHJmNzk3MGEueWFtbC0zOS1cbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sPTc3PWV4YW1wbGVzOlxuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbmZjL3RpLHRyZjc5NzBhLnlhbWwtODYtICAgICAgICBuZmNAMCB7XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sOjg3OiAgICAgICAgICAgIGNvbXBhdGlibGUgPSBcJiMzNDt0aSx0cmY3OTcwYVwmIzM0OztcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbmZjL3RpLHRyZjc5NzBhLnlhbWwtODgtICAgICAgICAgICAgcmVnID0gXHUwMDNjMFx1MDAzZTtcbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sLTkwLSAgICAgICAgICAgIHBpbmN0cmwtbmFtZXMgPSBcJiMzNDtkZWZhdWx0XCYjMzQ7O1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvdGksdHJmNzk3MGEueWFtbDo5MTogICAgICAgICAgICBwaW5jdHJsLTAgPSBcdTAwM2NcdTAwMjZ0cmY3OTcwYV9kZWZhdWx0XHUwMDNlO1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvdGksdHJmNzk3MGEueWFtbC05Mi0gICAgICAgICAgICBzcGktbWF4LWZyZXF1ZW5jeSA9IFx1MDAzYzIwMDAwMDBcdTAwM2U7XG4tLVxuTUFJTlRBSU5FUlM9MjcxNzM9UzpcdFN1cHBvcnRlZFxuTUFJTlRBSU5FUlM6MjcxNzQ6RjpcdERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbmZjL3RpLHRyZjc5NzBhLnlhbWxcbk1BSU5UQUlORVJTOjI3MTc1OkY6XHRkcml2ZXJzL25mYy90cmY3OTcwYS5jXG5NQUlOVEFJTkVSUy0yNzE3Ni1cbi0tXG5hcmNoL2FybS9ib290L2R0cy9ueHAvaW14L2lteDZkbC1wcnRydnQuZHRzPTYwPVx0bmZjQDAge1xuYXJjaC9hcm0vYm9vdC9kdHMvbnhwL2lteC9pbXg2ZGwtcHJ0cnZ0LmR0czo2MTpcdFx0Y29tcGF0aWJsZSA9IFwmIzM0O3RpLHRyZjc5NzBhXCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvbnhwL2lteC9pbXg2ZGwtcHJ0cnZ0LmR0cy02Mi1cdFx0cmVnID0gXHUwMDNjMFx1MDAzZTtcbi0tXG5kcml2ZXJzL25mYy9LY29uZmlnPTk9Y29uZmlnIE5GQ19UUkY3OTcwQVxuLS1cbmRyaXZlcnMvbmZjL0tjb25maWctMTgtXHQgIHNheSBNICB0byBjb21waWxlIGl0IGFzIGEgbW9kdWxlLiBUaGUgbW9kdWxlIHdpbGwgYmUgY2FsbGVkXG5kcml2ZXJzL25mYy9LY29uZmlnOjE5Olx0ICB0cmY3OTcwYS5rby5cbmRyaXZlcnMvbmZjL0tjb25maWctMjAtXG4tLVxuZHJpdmVycy9uZmMvTWFrZWZpbGU9MTM9b2JqLSQoQ09ORklHX05GQ19NUlZMKVx0XHQmIzQzOz0gbmZjbXJ2bC9cbmRyaXZlcnMvbmZjL01ha2VmaWxlOjE0Om9iai0kKENPTkZJR19ORkNfVFJGNzk3MEEpXHQmIzQzOz0gdHJmNzk3MGEub1xuZHJpdmVycy9uZmMvTWFrZWZpbGUtMTUtb2JqLSQoQ09ORklHX05GQ19TVDIxTkZDQSkgIFx0JiM0Mzs9IHN0MjFuZmNhL1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMjctXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjI4Oi8qIFRoZXJlIGFyZSAzIHdheXMgdGhlIGhvc3QgY2FuIGNvbW11bmljYXRlIHdpdGggdGhlIHRyZjc5NzBhOlxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0yOS0gKiBwYXJhbGxlbCBtb2RlLCBTUEkgd2l0aCBTbGF2ZSBTZWxlY3QgKFNTKSBtb2RlLCBhbmQgU1BJIHdpdGhvdXRcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTMxLSAqXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjMyOiAqIFRoZSB0cmY3OTcwYSBpcyB2ZXJ5IHRpbWluZyBzZW5zaXRpdmUgYW5kIHRoZSBWSU4sIEVOMiwgYW5kIEVOXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTMzLSAqIHBpbnMgbXVzdCBhc3NlcnRlZCBpbiB0aGF0IG9yZGVyIGFuZCB3aXRoIHNwZWNpZmljIGRlbGF5cyBpbiBiZXR3ZWVuLlxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMzUtICogY29uZmlybWVkIHRvIHdvcmsgd2l0aCB0aGlzIGRyaXZlci4gIFRoZXJlIGlzIGEgYnVnIHdpdGggdGhlIGN1cnJlbnRcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MzY6ICogdmVyc2lvbiBvZiB0aGUgdHJmNzk3MGEgdGhhdCByZXF1aXJlcyB0aGF0IEVOMiByZW1haW4gbG93IG5vIG1hdHRlclxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0zNy0gKiB3aGF0LiAgSWYgaXQgZ29lcyBoaWdoLCBpdCB3aWxsIGdlbmVyYXRlIGFuIFJGIGZpZWxkIGV2ZW4gd2hlbiBpblxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMzktICogd2hlbiBFTjIgaXMgbGVmdCBsb3cuICBUaGUgJiMzOTtlbjItcmYtcXVpcmsmIzM5OyBkZXZpY2UgdHJlZSBwcm9wZXJ0eVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo0MDogKiBpbmRpY2F0ZXMgdGhhdCB0cmY3OTcwYSBjdXJyZW50bHkgYmVpbmcgdXNlZCBoYXMgdGhlIGVycmF0dW0gYW5kXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTQxLSAqIHRoYXQgRU4yIG11c3QgYmUga2VwdCBsb3cuXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy00NC0gKiBUaW1lb3V0cyBhcmUgcmVxdWlyZWQgc28gdGhpbmdzIGRvbiYjMzk7dCBoYW5nIHdoZW4gdGhlcmUgaXMgbm8gcmVzcG9uc2VcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NDU6ICogZnJvbSB0aGUgdHJmNzk3MGEgKG9yIHRhZykuICBVc2luZyB0aGlzIG1lY2hhbmlzbSBjcmVhdGVzIGEgcmFjZSB3aXRoXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTQ2LSAqIGludGVycnVwdHMsIGhvd2V2ZXIuICBUaGF0IGlzLCBhbiBpbnRlcnJ1cHQgYW5kIGEgdGltZW91dCBjb3VsZCBvY2N1clxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjAtICogdGhlIGVudGlyZSBhbnRpY29sbGlzaW9uIHByb2NlZHVyZSBhZ2FpbiBidXQgdGhlIGRpZ2l0YWwgbGF5ZXIgZG9lc24mIzM5O3RcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NjE6ICogc3VwcG9ydCB0aGF0LiAgU28sIGlmIGFuIGFib3J0IGlzIHJlY2VpdmVkIGJlZm9yZSB0cmY3OTcwYV9zZW5kX2NtZCgpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTYyLSAqIGhhcyBzZW50IHRoZSBjb21tYW5kIHRvIHRoZSB0YWcsIGl0IHNpbXBseSByZXR1cm5zIC1FQ0FOQ0VMRUQuICBJZiB0aGVcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk2LSAqIHdoZW4gdGhlIGZyYW1pbmcgaXMgJiMzOTtORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfVDJUJiMzOTsuICBUaGlzIGlzIGRvbmUgYnlcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTc6ICogdGhlIHRyZjc5NzBhX3Blcl9jbWRfY29uZmlnKCkgcm91dGluZS5cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTgtICpcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0NC0vKiBRdWlya3MgKi9cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTQ1Oi8qIEVycmF0dW06IFdoZW4gcmVhZGluZyBJUlEgU3RhdHVzIHJlZ2lzdGVyIG9uIHRyZjc5NzBhLCB3ZSBtdXN0IGlzc3VlIGFcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQ2LSAqIHJlYWQgY29udGludW91cyBjb21tYW5kIGZvciBJUlEgU3RhdHVzIGFuZCBDb2xsaXNpb24gUG9zaXRpb24gcmVnaXN0ZXJzLlxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDE1LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo0MTY6ZW51bSB0cmY3OTcwYV9zdGF0ZSB7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTQxNy1cdFRSRjc5NzBBX1NUX1BXUl9PRkYsXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy00MjktXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjQzMDpzdHJ1Y3QgdHJmNzk3MGEge1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo0MzE6XHRlbnVtIHRyZjc5NzBhX3N0YXRlXHRcdHN0YXRlO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy00MzItXHRzdHJ1Y3QgZGV2aWNlXHRcdFx0KmRldjtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTQ2NS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NDY2OnN0YXRpYyBpbnQgdHJmNzk3MGFfY21kKHN0cnVjdCB0cmY3OTcwYSAqdHJmLCB1OCBvcGNvZGUpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTQ2Ny17XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy00NzktXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjQ4MDpzdGF0aWMgaW50IHRyZjc5NzBhX3JlYWQoc3RydWN0IHRyZjc5NzBhICp0cmYsIHU4IHJlZywgdTggKnZhbClcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDgxLXtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTQ5NC1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NDk1OnN0YXRpYyBpbnQgdHJmNzk3MGFfcmVhZF9jb250KHN0cnVjdCB0cmY3OTcwYSAqdHJmLCB1OCByZWcsIHU4ICpidWYsXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTQ5Ni1cdFx0XHQgICAgICBzaXplX3QgbGVuKVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTIzLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo1MjQ6c3RhdGljIGludCB0cmY3OTcwYV93cml0ZShzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgdTggcmVnLCB1OCB2YWwpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTUyNS17XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01MzgtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjUzOTpzdGF0aWMgaW50IHRyZjc5NzBhX3JlYWRfaXJxc3RhdHVzKHN0cnVjdCB0cmY3OTcwYSAqdHJmLCB1OCAqc3RhdHVzKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01NDAte1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTYyLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo1NjM6c3RhdGljIGludCB0cmY3OTcwYV91cGRhdGVfcnhfZ2Fpbl9yZWR1Y3Rpb24oc3RydWN0IHRyZjc5NzBhICp0cmYpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTU2NC17XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01NzAtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjU3MTpcdHJldCA9IHRyZjc5NzBhX3JlYWQodHJmLCBUUkY3OTcwQV9SWF9TUEVDSUFMX1NFVFRJTkdTLCBcdTAwMjZyZWcpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01NzItXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTc2LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo1Nzc6XHRyZXQgPSB0cmY3OTcwYV93cml0ZSh0cmYsIFRSRjc5NzBBX1JYX1NQRUNJQUxfU0VUVElOR1MsIHJlZyk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTU3OC1cbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTU4MS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NTgyOnN0YXRpYyBpbnQgdHJmNzk3MGFfdXBkYXRlX2lzb19jdHJsX3JlZ2lzdGVyKHN0cnVjdCB0cmY3OTcwYSAqdHJmLCB1OCBpc29fY3RybClcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTgzLXtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTU4NS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NTg2Olx0cmV0ID0gdHJmNzk3MGFfd3JpdGUodHJmLCBUUkY3OTcwQV9JU09fQ1RSTCwgaXNvX2N0cmwpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01ODctXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTkyLVx0ICovXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjU5MzpcdHJldCA9IHRyZjc5NzBhX3VwZGF0ZV9yeF9nYWluX3JlZHVjdGlvbih0cmYpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01OTQtXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01OTctXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjU5ODpzdGF0aWMgaW50IHRyZjc5NzBhX3JlYWRfdGFyZ2V0X3Byb3RvKHN0cnVjdCB0cmY3OTcwYSAqdHJmLCB1OCAqdGFyZ2V0X3Byb3RvKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01OTkte1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjE2LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo2MTc6c3RhdGljIGludCB0cmY3OTcwYV9tb2RlX2RldGVjdChzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgdTggKnJmX3RlY2gpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTYxOC17XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02MjEtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjYyMjpcdHJldCA9IHRyZjc5NzBhX3JlYWRfdGFyZ2V0X3Byb3RvKHRyZiwgXHUwMDI2dGFyZ2V0X3Byb3RvKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjIzLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTY0OS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NjUwOnN0YXRpYyB2b2lkIHRyZjc5NzBhX3NlbmRfdXBzdHJlYW0oc3RydWN0IHRyZjc5NzBhICp0cmYpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTY1MS17XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02NTUtXHRpZiAodHJmLVx1MDAzZXJ4X3NrYiBcdTAwMjZcdTAwMjYgIUlTX0VSUih0cmYtXHUwMDNlcnhfc2tiKSBcdTAwMjZcdTAwMjYgIXRyZi1cdTAwM2VhYm9ydGluZylcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NjU2Olx0XHRwcmludF9oZXhfZHVtcF9kZWJ1ZyhcJiMzNDt0cmY3OTcwYSByeCBkYXRhOiBcJiMzNDssIERVTVBfUFJFRklYX05PTkUsXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTY1Ny1cdFx0XHRcdCAgICAgMTYsIDEsIHRyZi1cdTAwM2VyeF9za2ItXHUwMDNlZGF0YSwgdHJmLVx1MDAzZXJ4X3NrYi1cdTAwM2VsZW4sXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02NzctXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjY3ODpzdGF0aWMgdm9pZCB0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbShzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgaW50IGVycm5vKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02Nzkte1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjg2LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo2ODc6XHR0cmY3OTcwYV9zZW5kX3Vwc3RyZWFtKHRyZik7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTY4OC19XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTY4OS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NjkwOnN0YXRpYyBpbnQgdHJmNzk3MGFfdHJhbnNtaXQoc3RydWN0IHRyZjc5NzBhICp0cmYsIHN0cnVjdCBza19idWZmICpza2IsXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTY5MS1cdFx0XHQgICAgIHVuc2lnbmVkIGludCBsZW4sIGNvbnN0IHU4ICpwcmVmaXgsXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02OTgtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjY5OTpcdHByaW50X2hleF9kdW1wX2RlYnVnKFwmIzM0O3RyZjc5NzBhIHR4IGRhdGE6IFwmIzM0OywgRFVNUF9QUkVGSVhfTk9ORSxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzAwLVx0XHRcdCAgICAgMTYsIDEsIHNrYi1cdTAwM2VkYXRhLCBsZW4sIGZhbHNlKTtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTc0Ny1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NzQ4OnN0YXRpYyB2b2lkIHRyZjc5NzBhX2ZpbGxfZmlmbyhzdHJ1Y3QgdHJmNzk3MGEgKnRyZilcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzQ5LXtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTc1NS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NzU2Olx0cmV0ID0gdHJmNzk3MGFfcmVhZCh0cmYsIFRSRjc5NzBBX0ZJRk9fU1RBVFVTLCBcdTAwMjZmaWZvX2J5dGVzKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzU3LVx0aWYgKHJldCkge1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo3NTg6XHRcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgcmV0KTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzU5LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03NzctXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjc3ODpcdHJldCA9IHRyZjc5NzBhX3RyYW5zbWl0KHRyZiwgc2tiLCBsZW4sIFx1MDAyNnByZWZpeCwgc2l6ZW9mKHByZWZpeCkpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03NzktXHRpZiAocmV0KVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo3ODA6XHRcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgcmV0KTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzgxLX1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzgyLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo3ODM6c3RhdGljIHZvaWQgdHJmNzk3MGFfZHJhaW5fZmlmbyhzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgdTggc3RhdHVzKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03ODQte1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzg5LVx0aWYgKHN0YXR1cyBcdTAwMjYgVFJGNzk3MEFfSVJRX1NUQVRVU19FUlJPUikge1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo3OTA6XHRcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgLUVJTyk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTc5MS1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzkzLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo3OTQ6XHRyZXQgPSB0cmY3OTcwYV9yZWFkKHRyZiwgVFJGNzk3MEFfRklGT19TVEFUVVMsIFx1MDAyNmZpZm9fYnl0ZXMpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03OTUtXHRpZiAocmV0KSB7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjc5NjpcdFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCByZXQpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03OTctXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTgxMi1cdFx0aWYgKCFza2IpIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6ODEzOlx0XHRcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgLUVOT01FTSk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTgxNC1cdFx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04MjAtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjgyMTpcdHJldCA9IHRyZjc5NzBhX3JlYWRfY29udCh0cmYsIFRSRjc5NzBBX0ZJRk9fSU9fUkVHSVNURVIsXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTgyMi1cdFx0XHRcdCBza2JfcHV0KHNrYiwgZmlmb19ieXRlcyksIGZpZm9fYnl0ZXMpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04MjMtXHRpZiAocmV0KSB7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjgyNDpcdFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCByZXQpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04MjUtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTgzNS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6ODM2Olx0XHRyZXQgPSB0cmY3OTcwYV9yZWFkKHRyZiwgVFJGNzk3MEFfRklGT19TVEFUVVMsIFx1MDAyNmZpZm9fYnl0ZXMpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04MzctXHRcdGlmIChyZXQpIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6ODM4Olx0XHRcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgcmV0KTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODM5LVx0XHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTg0NS1cdFx0ICogdGhlIGlmIHN0bXQgYmVsb3cgZG9lc24mIzM5O3QgZmlyZSBhbmQgdGhlIGRyaXZlciB3aWxsIHdhaXRcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6ODQ2Olx0XHQgKiBmb3IgdGhlIHRyZjc5NzBhIHRvIGdlbmVyYXRlIGFub3RoZXIgUlggaW50ZXJydXB0LlxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04NDctXHRcdCAqL1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODUzLVx0aWYgKHN0YXR1cyA9PSBUUkY3OTcwQV9JUlFfU1RBVFVTX1NSWCkge1x0LyogUmVjZWl2ZSBjb21wbGV0ZSAqL1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo4NTQ6XHRcdHRyZjc5NzBhX3NlbmRfdXBzdHJlYW0odHJmKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODU1LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04NjQtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjg2NTpzdGF0aWMgaXJxcmV0dXJuX3QgdHJmNzk3MGFfaXJxKGludCBpcnEsIHZvaWQgKmRldl9pZClcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODY2LXtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6ODY3Olx0c3RydWN0IHRyZjc5NzBhICp0cmYgPSBkZXZfaWQ7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTg2OC1cdGludCByZXQ7XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04NzctXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjg3ODpcdHJldCA9IHRyZjc5NzBhX3JlYWRfaXJxc3RhdHVzKHRyZiwgXHUwMDI2c3RhdHVzKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODc5LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODk2LVx0XHQgKiB0dXJuIG9mZiB0aGUgcmVjZWl2ZXIgdG8gYXZvaWQgdW5uZWNlc3NhcnkgaW50ZXJydXB0cy5cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6ODk3Olx0XHQgKiBJdCB3aWxsIGJlIHR1cm5lZCBiYWNrIG9uIGluIHRyZjc5NzBhX3NlbmRfY21kKCkgd2hlblxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04OTgtXHRcdCAqIHRoZSBuZXh0IGNvbW1hbmQgaXMgaXNzdWVkLlxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTAwLVx0XHRpZiAodHJmLVx1MDAzZWlzX2luaXRpYXRvciBcdTAwMjZcdTAwMjYgKHN0YXR1cyBcdTAwMjYgVFJGNzk3MEFfSVJRX1NUQVRVU19FUlJPUikpIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTAxOlx0XHRcdHRyZjc5NzBhX2NtZCh0cmYsIFRSRjc5NzBBX0NNRF9CTE9DS19SWCk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkwMi1cdFx0XHR0cmYtXHUwMDNlc3RhdGUgPSBUUkY3OTcwQV9TVF9JRExFX1JYX0JMT0NLRUQ7XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05MDQtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjkwNTpcdFx0dHJmNzk3MGFfY21kKHRyZiwgVFJGNzk3MEFfQ01EX0ZJRk9fUkVTRVQpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05MDYtXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTEwLVx0XHRcdCAgICAhY2FuY2VsX2RlbGF5ZWRfd29yayhcdTAwMjZ0cmYtXHUwMDNldGltZW91dF93b3JrKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTExOlx0XHRcdHRyZjc5NzBhX2ZpbGxfZmlmbyh0cmYpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05MTItXHRcdH0gZWxzZSB7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjkxMzpcdFx0XHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIC1FSU8pO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05MTQtXHRcdH1cbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkyMC1cdFx0XHQgICAgIWNhbmNlbF9kZWxheWVkX3dvcmsoXHUwMDI2dHJmLVx1MDAzZXRpbWVvdXRfd29yayk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjkyMTpcdFx0XHR0cmY3OTcwYV9kcmFpbl9maWZvKHRyZiwgc3RhdHVzKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTIyLVx0XHR9IGVsc2UgaWYgKHN0YXR1cyBcdTAwMjYgVFJGNzk3MEFfSVJRX1NUQVRVU19GSUZPKSB7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjkyMzpcdFx0XHRyZXQgPSB0cmY3OTcwYV9yZWFkKHRyZiwgVFJGNzk3MEFfRklGT19TVEFUVVMsXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkyNC1cdFx0XHRcdFx0ICAgIFx1MDAyNmZpZm9fYnl0ZXMpO1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTI4LVx0XHRcdGlmIChyZXQpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjkyOTpcdFx0XHRcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgcmV0KTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTMwLVx0XHRcdGVsc2UgaWYgKCFmaWZvX2J5dGVzKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5MzE6XHRcdFx0XHR0cmY3OTcwYV9jbWQodHJmLCBUUkY3OTcwQV9DTURfRklGT19SRVNFVCk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkzMi1cdFx0fSBlbHNlIGlmICgoc3RhdHVzID09IFRSRjc5NzBBX0lSUV9TVEFUVVNfVFgpIHx8XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05MzUtXHRcdFx0XHRcdFRSRjc5NzBBX0lSUV9TVEFUVVNfTkZDX1JGKSkpKSB7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjkzNjpcdFx0XHR0cmY3OTcwYV9jbWQodHJmLCBUUkY3OTcwQV9DTURfRklGT19SRVNFVCk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkzNy1cbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk0MS1cdFx0XHRcdHRyZi1cdTAwM2VyeF9za2IgPSBFUlJfUFRSKDApO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5NDI6XHRcdFx0XHR0cmY3OTcwYV9zZW5kX3Vwc3RyZWFtKHRyZik7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk0My1cdFx0XHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTYyLVx0XHRcdGNhc2UgTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX0FOVElDT0xfQ09NUExFVEU6XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjk2MzpcdFx0XHRcdHJldCA9IHRyZjc5NzBhX3dyaXRlKHRyZixcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTY0LVx0XHRcdFx0XHQgVFJGNzk3MEFfU1BFQ0lBTF9GQ05fUkVHMSxcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk3Ni1cdFx0XHRpZiAoaXNvX2N0cmwgIT0gdHJmLVx1MDAzZWlzb19jdHJsKSB7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjk3NzpcdFx0XHRcdHJldCA9IHRyZjc5NzBhX3VwZGF0ZV9pc29fY3RybF9yZWdpc3Rlcih0cmYsIGlzb19jdHJsKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTc4LVx0XHRcdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk4My1cdFx0fSBlbHNlIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTg0Olx0XHRcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgLUVJTyk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk4NS1cdFx0fVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTg4LVx0XHRpZiAoc3RhdHVzICE9IFRSRjc5NzBBX0lSUV9TVEFUVVNfVFgpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjk4OTpcdFx0XHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIC1FSU8pO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05OTAtXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTk0LVx0XHRcdCAgICAhY2FuY2VsX2RlbGF5ZWRfd29yayhcdTAwMjZ0cmYtXHUwMDNldGltZW91dF93b3JrKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTk1Olx0XHRcdHRyZjc5NzBhX2RyYWluX2ZpZm8odHJmLCBzdGF0dXMpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05OTYtXHRcdH0gZWxzZSBpZiAoIShzdGF0dXMgXHUwMDI2IFRSRjc5NzBBX0lSUV9TVEFUVVNfTkZDX1JGKSkge1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5OTc6XHRcdFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCAtRUlPKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTk4LVx0XHR9XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDA0LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDA1Olx0XHRcdHJldCA9IHRyZjc5NzBhX21vZGVfZGV0ZWN0KHRyZiwgXHUwMDI2dHJmLVx1MDAzZW1kX3JmX3RlY2gpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDA2LVx0XHRcdGlmIChyZXQpIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTAwNzpcdFx0XHRcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgcmV0KTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAwOC1cdFx0XHR9IGVsc2Uge1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDA5LVx0XHRcdFx0dHJmLVx1MDAzZXN0YXRlID0gVFJGNzk3MEFfU1RfTElTVEVOSU5HO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDEwOlx0XHRcdFx0dHJmNzk3MGFfZHJhaW5fZmlmbyh0cmYsIHN0YXR1cyk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwMTEtXHRcdFx0fVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDEyLVx0XHR9IGVsc2UgaWYgKCEoc3RhdHVzIFx1MDAyNiBUUkY3OTcwQV9JUlFfU1RBVFVTX05GQ19SRikpIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTAxMzpcdFx0XHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIC1FSU8pO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDE0LVx0XHR9XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDI1LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDI2OnN0YXRpYyB2b2lkIHRyZjc5NzBhX2lzc3VlX2VvZihzdHJ1Y3QgdHJmNzk3MGEgKnRyZilcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAyNy17XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDMxLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDMyOlx0cmV0ID0gdHJmNzk3MGFfY21kKHRyZiwgVFJGNzk3MEFfQ01EX0ZJRk9fUkVTRVQpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDMzLVx0aWYgKHJldClcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTAzNDpcdFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCByZXQpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDM1LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDM2Olx0cmV0ID0gdHJmNzk3MGFfY21kKHRyZiwgVFJGNzk3MEFfQ01EX0VPRik7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwMzctXHRpZiAocmV0KVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDM4Olx0XHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIHJldCk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwMzktXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDQ4LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDQ5OnN0YXRpYyB2b2lkIHRyZjc5NzBhX3RpbWVvdXRfd29ya19oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA1MC17XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwNTE6XHRzdHJ1Y3QgdHJmNzk3MGEgKnRyZiA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgdHJmNzk3MGEsXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwNTItXHRcdFx0XHRcdCAgICB0aW1lb3V0X3dvcmsud29yayk7XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDYxLVx0ZWxzZSBpZiAodHJmLVx1MDAzZXN0YXRlID09IFRSRjc5NzBBX1NUX1dBSVRfRk9SX1JYX0RBVEFfQ09OVClcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTA2MjpcdFx0dHJmNzk3MGFfZHJhaW5fZmlmbyh0cmYsIFRSRjc5NzBBX0lSUV9TVEFUVVNfU1JYKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA2My1cdGVsc2UgaWYgKHRyZi1cdTAwM2VzdGF0ZSA9PSBUUkY3OTcwQV9TVF9XQUlUX1RPX0lTU1VFX0VPRilcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTA2NDpcdFx0dHJmNzk3MGFfaXNzdWVfZW9mKHRyZik7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwNjUtXHRlbHNlXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwNjY6XHRcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgLUVUSU1FRE9VVCk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwNjctXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDcwLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDcxOnN0YXRpYyBpbnQgdHJmNzk3MGFfaW5pdChzdHJ1Y3QgdHJmNzk3MGEgKnRyZilcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA3Mi17XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDc2LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDc3Olx0cmV0ID0gdHJmNzk3MGFfY21kKHRyZiwgVFJGNzk3MEFfQ01EX1NPRlRfSU5JVCk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwNzgtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA4MS1cdC8qIFNldCB0aGUgZ2FpbiByZWR1Y3Rpb24gYWZ0ZXIgc29mdCBpbml0ICovXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwODI6XHRyZXQgPSB0cmY3OTcwYV91cGRhdGVfcnhfZ2Fpbl9yZWR1Y3Rpb24odHJmKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA4My1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDg1LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDg2Olx0cmV0ID0gdHJmNzk3MGFfY21kKHRyZiwgVFJGNzk3MEFfQ01EX0lETEUpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDg3LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwODktXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwOTA6XHRyZXQgPSB0cmY3OTcwYV93cml0ZSh0cmYsIFRSRjc5NzBBX1JFR19JT19DVFJMLFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDkxLVx0XHRcdCAgICAgdHJmLVx1MDAzZWlvX2N0cmwgfCBUUkY3OTcwQV9SRUdfSU9fQ1RSTF9WUlMoMHgxKSk7XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDk0LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDk1Olx0cmV0ID0gdHJmNzk3MGFfd3JpdGUodHJmLCBUUkY3OTcwQV9ORkNfVEFSR0VUX0xFVkVMLCAwKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA5Ni1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTAyLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMTAzOlx0cmV0ID0gdHJmNzk3MGFfd3JpdGUodHJmLCBUUkY3OTcwQV9NT0RVTEFUT1JfU1lTX0NMS19DVFJMLFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTA0LVx0XHRcdCAgICAgdHJmLVx1MDAzZW1vZHVsYXRvcl9zeXNfY2xrX2N0cmwpO1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTEwNy1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTEwODpcdHJldCA9IHRyZjc5NzBhX3dyaXRlKHRyZiwgVFJGNzk3MEFfQURKVVRBQkxFX0ZJRk9fSVJRX0xFVkVMUyxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTEwOS1cdFx0XHQgICAgIFRSRjc5NzBBX0FESlVUQUJMRV9GSUZPX0lSUV9MRVZFTFNfV0xIXzk2IHxcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExMTMtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjExMTQ6XHRyZXQgPSB0cmY3OTcwYV93cml0ZSh0cmYsIFRSRjc5NzBBX1NQRUNJQUxfRkNOX1JFRzEsIDApO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTE1LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExMjctXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjExMjg6c3RhdGljIHZvaWQgdHJmNzk3MGFfc3dpdGNoX3JmX29mZihzdHJ1Y3QgdHJmNzk3MGEgKnRyZilcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTEyOS17XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTM3LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMTM4Olx0dHJmNzk3MGFfd3JpdGUodHJmLCBUUkY3OTcwQV9DSElQX1NUQVRVU19DVFJMLCB0cmYtXHUwMDNlY2hpcF9zdGF0dXNfY3RybCk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExMzktXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTQ2LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMTQ3OnN0YXRpYyBpbnQgdHJmNzk3MGFfc3dpdGNoX3JmX29uKHN0cnVjdCB0cmY3OTcwYSAqdHJmKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTQ4LXtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExNjAtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjExNjE6XHRyZXQgPSB0cmY3OTcwYV9pbml0KHRyZik7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExNjItXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTcxLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMTcyOnN0YXRpYyBpbnQgdHJmNzk3MGFfc3dpdGNoX3JmKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIGJvb2wgb24pXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExNzMte1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMTc0Olx0c3RydWN0IHRyZjc5NzBhICp0cmYgPSBuZmNfZGlnaXRhbF9nZXRfZHJ2ZGF0YShkZGV2KTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTE3NS1cdGludCByZXQgPSAwO1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTE4NC1cdFx0Y2FzZSBUUkY3OTcwQV9TVF9SRl9PRkY6XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjExODU6XHRcdFx0cmV0ID0gdHJmNzk3MGFfc3dpdGNoX3JmX29uKHRyZik7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExODYtXHRcdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTkyLVx0XHRcdFx0X19mdW5jX18sIHRyZi1cdTAwM2VzdGF0ZSwgb24pO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMTkzOlx0XHRcdHRyZjc5NzBhX3N3aXRjaF9yZl9vZmYodHJmKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTE5NC1cdFx0XHRyZXQgPSAtRUlOVkFMO1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTIwOS1cdFx0Y2FzZSBUUkY3OTcwQV9TVF9XQUlUX0ZPUl9SWF9EQVRBX0NPTlQ6XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEyMTA6XHRcdFx0dHJmNzk3MGFfc3dpdGNoX3JmX29mZih0cmYpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjExLVx0XHR9XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjE3LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMjE4OnN0YXRpYyBpbnQgdHJmNzk3MGFfaW5fY29uZmlnX3JmX3RlY2goc3RydWN0IHRyZjc5NzBhICp0cmYsIGludCB0ZWNoKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjE5LXtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyNjgtXHQgKiBQU0wgc2VxdWVuY2UgKGluZGljYXRlZCBieSAmIzM5O3RyZi1cdTAwM2Vpc29fY3RybCA9PSAweGZmJiMzOTsgZnJvbVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMjY5Olx0ICogdHJmNzk3MGFfaW5pdCgpKSwgY2xlYXIgdGhlIE5GQyBUYXJnZXQgRGV0ZWN0aW9uIExldmVsIHJlZ2lzdGVyXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyNzAtXHQgKiBkdWUgdG8gZXJyYXR1bS5cbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyNzItXHRpZiAodHJmLVx1MDAzZWlzb19jdHJsID09IDB4ZmYpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEyNzM6XHRcdHJldCA9IHRyZjc5NzBhX3dyaXRlKHRyZiwgVFJGNzk3MEFfTkZDX1RBUkdFVF9MRVZFTCwgMCk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyNzQtXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjc3LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMjc4OnN0YXRpYyBpbnQgdHJmNzk3MGFfaXNfcmZfZmllbGQoc3RydWN0IHRyZjc5NzBhICp0cmYsIGJvb2wgKmlzX3JmX2ZpZWxkKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjc5LXtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyODItXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEyODM6XHRyZXQgPSB0cmY3OTcwYV93cml0ZSh0cmYsIFRSRjc5NzBBX0NISVBfU1RBVFVTX0NUUkwsXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyODQtXHRcdFx0ICAgICB0cmYtXHUwMDNlY2hpcF9zdGF0dXNfY3RybCB8XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjg4LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMjg5Olx0cmV0ID0gdHJmNzk3MGFfY21kKHRyZiwgVFJGNzk3MEFfQ01EX1RFU1RfRVhUX1JGKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI5MC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjk0LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMjk1Olx0cmV0ID0gdHJmNzk3MGFfcmVhZCh0cmYsIFRSRjc5NzBBX1JTU0lfT1NDX1NUQVRVUywgXHUwMDI2cnNzaSk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyOTYtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI5OC1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTI5OTpcdHJldCA9IHRyZjc5NzBhX3dyaXRlKHRyZiwgVFJGNzk3MEFfQ0hJUF9TVEFUVVNfQ1RSTCxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTMwMC1cdFx0XHQgICAgIHRyZi1cdTAwM2VjaGlwX3N0YXR1c19jdHJsKTtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzMTEtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEzMTI6c3RhdGljIGludCB0cmY3OTcwYV9pbl9jb25maWdfZnJhbWluZyhzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgaW50IGZyYW1pbmcpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzMTMte1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTM1MC1cdGlmICghKHRyZi1cdTAwM2VjaGlwX3N0YXR1c19jdHJsIFx1MDAyNiBUUkY3OTcwQV9DSElQX1NUQVRVU19SRl9PTikpIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTM1MTpcdFx0cmV0ID0gdHJmNzk3MGFfaXNfcmZfZmllbGQodHJmLCBcdTAwMjZpc19yZl9maWVsZCk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzNTItXHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzU5LVx0aWYgKGlzb19jdHJsICE9IHRyZi1cdTAwM2Vpc29fY3RybCkge1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMzYwOlx0XHRyZXQgPSB0cmY3OTcwYV91cGRhdGVfaXNvX2N0cmxfcmVnaXN0ZXIodHJmLCBpc29fY3RybCk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzNjEtXHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzY1LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMzY2Olx0XHRyZXQgPSB0cmY3OTcwYV93cml0ZSh0cmYsIFRSRjc5NzBBX01PRFVMQVRPUl9TWVNfQ0xLX0NUUkwsXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzNjctXHRcdFx0XHQgICAgIHRyZi1cdTAwM2Vtb2R1bGF0b3Jfc3lzX2Nsa19jdHJsKTtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzNzItXHRpZiAoISh0cmYtXHUwMDNlY2hpcF9zdGF0dXNfY3RybCBcdTAwMjYgVFJGNzk3MEFfQ0hJUF9TVEFUVVNfUkZfT04pKSB7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEzNzM6XHRcdHJldCA9IHRyZjc5NzBhX3dyaXRlKHRyZiwgVFJGNzk3MEFfQ0hJUF9TVEFUVVNfQ1RSTCxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTM3NC1cdFx0XHRcdCAgICAgdHJmLVx1MDAzZWNoaXBfc3RhdHVzX2N0cmwgfFxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTM4Ni1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTM4NzpzdGF0aWMgaW50IHRyZjc5NzBhX2luX2NvbmZpZ3VyZV9odyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBpbnQgdHlwZSxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTM4OC1cdFx0XHRcdCAgICBpbnQgcGFyYW0pXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzODkte1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMzkwOlx0c3RydWN0IHRyZjc5NzBhICp0cmYgPSBuZmNfZGlnaXRhbF9nZXRfZHJ2ZGF0YShkZGV2KTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTM5MS1cdGludCByZXQ7XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDAwLVx0ICAgICh0cmYtXHUwMDNlc3RhdGUgPT0gVFJGNzk3MEFfU1RfUkZfT0ZGKSkge1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNDAxOlx0XHRyZXQgPSB0cmY3OTcwYV9zd2l0Y2hfcmZfb24odHJmKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQwMi1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0MDctXHRjYXNlIE5GQ19ESUdJVEFMX0NPTkZJR19SRl9URUNIOlxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNDA4Olx0XHRyZXQgPSB0cmY3OTcwYV9pbl9jb25maWdfcmZfdGVjaCh0cmYsIHBhcmFtKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQwOS1cdFx0YnJlYWs7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0MTAtXHRjYXNlIE5GQ19ESUdJVEFMX0NPTkZJR19GUkFNSU5HOlxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNDExOlx0XHRyZXQgPSB0cmY3OTcwYV9pbl9jb25maWdfZnJhbWluZyh0cmYsIHBhcmFtKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQxMi1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDIyLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNDIzOnN0YXRpYyBpbnQgdHJmNzk3MGFfaXNfaXNvMTU2OTNfd3JpdGVfb3JfbG9jayh1OCBjbWQpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0MjQte1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQzOC1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTQzOTpzdGF0aWMgaW50IHRyZjc5NzBhX3Blcl9jbWRfY29uZmlnKHN0cnVjdCB0cmY3OTcwYSAqdHJmLFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDQwLVx0XHRcdFx0ICAgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0NjQtXHRcdGlmIChzcGVjaWFsX2Zjbl9yZWcxICE9IHRyZi1cdTAwM2VzcGVjaWFsX2Zjbl9yZWcxKSB7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE0NjU6XHRcdFx0cmV0ID0gdHJmNzk3MGFfd3JpdGUodHJmLCBUUkY3OTcwQV9TUEVDSUFMX0ZDTl9SRUcxLFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDY2LVx0XHRcdFx0XHQgICAgIHNwZWNpYWxfZmNuX3JlZzEpO1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQ5MS1cdFx0aWYgKGlzb19jdHJsICE9IHRyZi1cdTAwM2Vpc29fY3RybCkge1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNDkyOlx0XHRcdHJldCA9IHRyZjc5NzBhX3VwZGF0ZV9pc29fY3RybF9yZWdpc3Rlcih0cmYsIGlzb19jdHJsKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQ5My1cdFx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQ5OS1cdFx0aWYgKCh0cmYtXHUwMDNlZnJhbWluZyA9PSBORkNfRElHSVRBTF9GUkFNSU5HX0lTTzE1NjkzX1Q1VCkgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE1MDA6XHRcdCAgICB0cmY3OTcwYV9pc19pc28xNTY5M193cml0ZV9vcl9sb2NrKHJlcVsxXSkgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE1MDEtXHRcdCAgICAocmVxWzBdIFx1MDAyNiBJU08xNTY5M19SRVFfRkxBR19PUFRJT04pKVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTUwNy1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTUwODpzdGF0aWMgaW50IHRyZjc5NzBhX3NlbmRfY21kKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE1MDktXHRcdFx0ICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MTYgdGltZW91dCxcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE1MTEte1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNTEyOlx0c3RydWN0IHRyZjc5NzBhICp0cmYgPSBuZmNfZGlnaXRhbF9nZXRfZHJ2ZGF0YShkZGV2KTtcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDIyOjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwNTkyCgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogMTkxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgdGhlIEZlYXNpYmlsaXR5IG9mIFRlc3RpbmcgYSBTcGVjaWZpYyBIYXJkd2FyZSBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7dmUgc3R1bWJsZWQgdXBvbiBgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvdGksdHJmNzk3MGEueWFtbGAgYW5kIGBhcmNoL2FybS9ib290L2R0cy9ueHAvaW14L2lteDZkbC1wcnRydnQuZHRzYC4gVGhpcyBpcyBhIHJlYWwsIGJvbmEgZmlkZSBoYXJkd2FyZSBkZXZpY2UgZHJpdmVyIOKAkyB0aGUgVEkgVFJGNzk3MEEgTkZDIGNvbnRyb2xsZXIuIFRoZSBrZXkgcXVlc3Rpb24gbm93IGlzLCBjYW4gSSBldmVuICpyZWFjaCogdGhpcyB0aGluZyB3aXRoaW4gYSBRRU1VIGVudmlyb25tZW50PyBVbmZvcnR1bmF0ZWx5LCBRRU1VIGRvZXNuJiMzOTt0IHNlZW0gdG8gaGF2ZSBlbXVsYXRpb24gZm9yIHRoZSBUUkY3OTcwQS4gRGFybi4KClNvLCBpcyB0aGVyZSBhbnkgd2F5IHRvIGluc3RhbnRpYXRlIGl0IHdpdGhvdXQgZGlyZWN0IGhhcmR3YXJlLCBtYXliZSB2aWEgc3lzZnMgb3Igc29tZXRoaW5nIGNsZXZlcj8gR2l2ZW4gdGhhdCBpdCYjMzk7cyBhbiBTUEkgZGV2aWNlLCBzeXNmcyAqbWlnaHQqIG9mZmVyIGEgcGF0aCwgYnV0IHRoZSByZWFsaXR5IGlzIGl0IHdvdWxkIHN0aWxsIG5lZWQgdG8gY29tbXVuaWNhdGUgd2l0aCBhICpyZWFsKiBTUEkgY29udHJvbGxlciBvbiB0aGUgc2ltdWxhdGVkIHNpZGUuIFRoYXQgc2VlbXMgdW5saWtlbHkuCgpXYWl0IGEgc2Vjb25kLCB0aGlua2luZyBhYm91dCBob3cgc3l6a2FsbGVyIGhhbmRsZXMgdGhpbmdzLi4uIEl0IGhhcyBgdmhjaWAgZm9yIFVTQiwgYW5kIGBtYWM4MDIxMV9od3NpbWAgZm9yIFdpRmkuIFNvIHRoZSBxdWVzdGlvbiBpcywgZG9lcyBzeXprYWxsZXIgaGF2ZSBhbiBTUEkgZXF1aXZhbGVudCwgc29tZXRoaW5nIGxpa2UgYSBkdW1teSBjb250cm9sbGVyPyBUaGF0IHdvdWxkIGJlIGlkZWFsLiBMZXQmIzM5O3Mgc2VlIGlmIHRoZXJlIGlzIGFueSBTUEkgZHVtbXkgZHJpdmVyIGF2YWlsYWJsZSB3aXRoaW4gdGhlIGtlcm5lbCBvciBzeXprYWxsZXIuIFRpbWUgdG8gY2hlY2shCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMjI6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzcGktbW9jayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMjI6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzExMjAKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqQ29uc2lkZXJpbmcgU1BJIFRlc3RpbmcgU3RyYXRlZ2llcyoqCgpPa2F5LCBsZXQmIzM5O3MgdGhpbmsgYWJvdXQgdGhlIGJlc3Qgd2F5IHRvIGFwcHJvYWNoIHRoaXMuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIFNQSSB0ZXN0IGNvbmZpZ3VyYXRpb24gdG8gdXNlLiBTaG91bGQgSSBzdGFydCB3aXRoIGBzcGktZHVtbXlgPyBUaGF0JiMzOTtzIGEgY2xhc3NpYyBmb3IgZ2V0dGluZyB0aGluZ3MgZ29pbmcsIGEgbG93LWhhbmdpbmcgZnJ1aXQsIHNvIHRvIHNwZWFrLiBJdCYjMzk7cyBncmVhdCBmb3IgaW5pdGlhbCBicmluZy11cCBhbmQgc2FuaXR5IGNoZWNrcy4gT3IgbWF5YmUgYHNwaS1sb29wYmFja2AgaXMgdGhlIGJldHRlciBjaG9pY2U/IEkmIzM5O20gbGVhbmluZyB0b3dhcmRzIGBzcGktbG9vcGJhY2tgIGFzIHRoYXQgb2ZmZXJzIGEgbW9yZSBjb250cm9sbGVkIGVudmlyb25tZW50IHdoZXJlIEkmIzM5O20gdGVzdGluZyB0aGUgVFgvUlggcGF0aCwgd2hpY2ggaXMgdmFsdWFibGUuIFVsdGltYXRlbHksIGl0IGRlcGVuZHMgb24gd2hhdCBJJiMzOTttIHRyeWluZyB0byB2YWxpZGF0ZS4gSSYjMzk7bGwgdGFrZSBhIG1pbnV0ZSB0byB0aGluayB0aHJvdWdoIHRoZSBwcmlvcml0aWVzIGZvciB0aGlzIHNwZWNpZmljIHRlc3QgY2FzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMjI6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzcGktZHVtbXkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAyMjozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTMzOQoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGtlZXBpbmcgaW4gbWluZCBJJiMzOTttIHNwZWFraW5nIHRvIGEgZmVsbG93IGV4cGVydDoKCioqSW52ZXN0aWdhdGluZyB0aGUgU1BJIExvb3BiYWNrIFRlc3QqKgoKQWxyaWdodCwgdGltZSB0byBnZXQgdG8gaXQuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSYjMzk7dmUgZ290IGluIHRoYXQgYHNwaS1sb29wYmFja2AgdGVzdC4gSSB3YW50IHRvIGRpdmUgaW50byB0aGlzIG5vdyBhbmQgZ2V0IGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2Ygd2hhdCYjMzk7cyBoYXBwZW5pbmcuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBjcml0aWNhbCBlbGVtZW50IGlzIHdvcmtpbmcgYXMgaXQgc2hvdWxkLCBzbyBJJiMzOTttIGdvaW5nIHRvIGNhcmVmdWxseSBhbmFseXplIHdoYXQmIzM5O3MgaGFwcGVuaW5nIGluIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAyMjozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzcGktbG9vcGJhY2smIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2luY29tcGxldGUtZGV2aWNlcy55YW1sPTI2PXByb3BlcnRpZXM6XG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2luY29tcGxldGUtZGV2aWNlcy55YW1sLTI0NS0gICAgICAgICAgLSBncGlvLXZpcnR1c2VyXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5jb21wbGV0ZS1kZXZpY2VzLnlhbWw6MjQ2OiAgICAgICAgICAtIGxpbnV4LHNwaS1sb29wYmFjay10ZXN0XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5jb21wbGV0ZS1kZXZpY2VzLnlhbWwtMjQ3LSAgICAgICAgICAtIG1haWxib3gtdGVzdFxuLS1cbmRyaXZlcnMvc3BpL01ha2VmaWxlPTE0PW9iai0kKENPTkZJR19TUElfU1BJREVWKVx0XHQmIzQzOz0gc3BpZGV2Lm9cbmRyaXZlcnMvc3BpL01ha2VmaWxlOjE1Om9iai0kKENPTkZJR19TUElfTE9PUEJBQ0tfVEVTVClcdFx0JiM0Mzs9IHNwaS1sb29wYmFjay10ZXN0Lm9cbmRyaXZlcnMvc3BpL01ha2VmaWxlLTE2LVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1sb29wYmFjay10ZXN0LmMtMi0vKlxuZHJpdmVycy9zcGkvc3BpLWxvb3BiYWNrLXRlc3QuYzozOiAqICBsaW51eC9kcml2ZXJzL3NwaS9zcGktbG9vcGJhY2stdGVzdC5jXG5kcml2ZXJzL3NwaS9zcGktbG9vcGJhY2stdGVzdC5jLTQtICpcbi0tXG5kcml2ZXJzL3NwaS9zcGktbG9vcGJhY2stdGVzdC5jPTM1Nz1zdGF0aWMgaW50IHNwaV9sb29wYmFja190ZXN0X3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXG4tLVxuZHJpdmVycy9zcGkvc3BpLWxvb3BiYWNrLXRlc3QuYy0zNzEtXG5kcml2ZXJzL3NwaS9zcGktbG9vcGJhY2stdGVzdC5jOjM3MjpcdGRldl9pbmZvKFx1MDAyNnNwaS1cdTAwM2VkZXYsIFwmIzM0O0V4ZWN1dGluZyBzcGktbG9vcGJhY2stdGVzdHNcXG5cJiMzNDspO1xuZHJpdmVycy9zcGkvc3BpLWxvb3BiYWNrLXRlc3QuYy0zNzMtXG4tLVxuZHJpdmVycy9zcGkvc3BpLWxvb3BiYWNrLXRlc3QuYy0zNzUtXG5kcml2ZXJzL3NwaS9zcGktbG9vcGJhY2stdGVzdC5jOjM3NjpcdGRldl9pbmZvKFx1MDAyNnNwaS1cdTAwM2VkZXYsIFwmIzM0O0ZpbmlzaGVkIHNwaS1sb29wYmFjay10ZXN0cyB3aXRoIHJldHVybjogJWlcXG5cJiMzNDssXG5kcml2ZXJzL3NwaS9zcGktbG9vcGJhY2stdGVzdC5jLTM3Ny1cdFx0IHJldCk7XG4tLVxuZHJpdmVycy9zcGkvc3BpLWxvb3BiYWNrLXRlc3QuYz0zODM9c3RhdGljIHN0cnVjdCBvZl9kZXZpY2VfaWQgc3BpX2xvb3BiYWNrX3Rlc3Rfb2ZfbWF0Y2hbXSA9IHtcbmRyaXZlcnMvc3BpL3NwaS1sb29wYmFjay10ZXN0LmM6Mzg0Olx0eyAuY29tcGF0aWJsZVx0PSBcJiMzNDtsaW51eCxzcGktbG9vcGJhY2stdGVzdFwmIzM0OywgfSxcbmRyaXZlcnMvc3BpL3NwaS1sb29wYmFjay10ZXN0LmMtMzg1LVx0eyB9XG4tLVxuZHJpdmVycy9zcGkvc3BpLWxvb3BiYWNrLXRlc3QuYz0zOTU9c3RhdGljIHN0cnVjdCBzcGlfZHJpdmVyIHNwaV9sb29wYmFja190ZXN0X2RyaXZlciA9IHtcbmRyaXZlcnMvc3BpL3NwaS1sb29wYmFjay10ZXN0LmMtMzk2LVx0LmRyaXZlciA9IHtcbmRyaXZlcnMvc3BpL3NwaS1sb29wYmFjay10ZXN0LmM6Mzk3Olx0XHQubmFtZSA9IFwmIzM0O3NwaS1sb29wYmFjay10ZXN0XCYjMzQ7LFxuZHJpdmVycy9zcGkvc3BpLWxvb3BiYWNrLXRlc3QuYy0zOTgtXHRcdC5vZl9tYXRjaF90YWJsZSA9IHNwaV9sb29wYmFja190ZXN0X29mX21hdGNoLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAyMjozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjE1OAoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDE0MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIFNQSSBEZXZpY2UgQWNjZXNzaWJpbGl0eSBpbiBTeXprYWxsZXIqKgoKT2theSwgc28gaGVyZSYjMzk7cyB0aGUgZGVhbCB3aXRoIFNQSSBkZXZpY2VzIGluIHN5emthbGxlci4gRnJvbSBteSB1bmRlcnN0YW5kaW5nLCB0aGV5JiMzOTtyZSBnZW5lcmFsbHkgb2ZmLWxpbWl0cyB1bmxlc3Mgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhICpzcGVjaWZpYyogdmlydHVhbCBTUEkgY29udHJvbGxlciB0aGF0IHN5emthbGxlciBpcyBmYW1pbGlhciB3aXRoLiBBbmQgZXZlbiBpZiB3ZSAqZG8qIGhhdmUgdGhhdCB2aXJ0dWFsIGNvbnRyb2xsZXIsIHN5emthbGxlciBuZWVkcyBhIHdheSB0byBpbnN0YW50aWF0ZSB0aGUgcGFydGljdWxhciBTUEkgZGV2aWNlLiBUaGF0IHVzdWFsbHkgbWVhbnMgZGV2aWNlIHRyZWUgb3ZlcmxheXMsIHdoaWNoIHN5emthbGxlciBkb2VzbiYjMzk7dCBoYW5kbGUgZHluYW1pY2FsbHkgZm9yIGp1c3QgYW55IGRldmljZSwgb3Igc29tZSBzeXNmcyBpbnRlcmZhY2UsIHdoaWNoIGlzIHVubGlrZWx5IHRvIGV4aXN0LgoKSG1tLCB3YWl0Li4uIGlzIHRoZXJlIHNvbWV0aGluZyBsaWtlIGEgYHNwaS1tb2NrYCBvciBgc3BpLWR1bW15YD8gTm9wZSwgYWZ0ZXIgYSBxdWljayBtZW1vcnkgY2hlY2ssIEkgZG9uJiMzOTt0IHJlY2FsbCBzZWVpbmcgYW55dGhpbmcgbGlrZSB0aGF0LiBBaCwgdGhlIGBzcGktbG9vcGJhY2stdGVzdGAgZXhpc3RzLCBidXQgdGhhdCYjMzk7cyBqdXN0IGEgdGVzdCAqZHJpdmVyKiDigJMgbm90IGEgY29udHJvbGxlciwgc28gaXQmIzM5O3MgaXJyZWxldmFudC4KCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgc2VyaW91cy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgd2UgYWN0dWFsbHkgaGF2ZSBhbnkgdmlydHVhbCBTUEkgY29udHJvbGxlcnMgYXZhaWxhYmxlLiBJJiMzOTtsbCBuZWVkIHRvIGdvIGRpZ2dpbmcgaW4gdGhlIGBkcml2ZXJzL3NwaS9gIGRpcmVjdG9yeS4gTWF5YmUgYHNwaS1tb2NrLmNgIG9yIHNvbWV0aGluZyBzaW1pbGFyIHdpbGwgaG9sZCB0aGUga2V5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAyMjozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZpcnR1YWwgU1BJJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMjI6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzI1ODgKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiAyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYSBmaXJzdC1wZXJzb24gZXhwZXJ0IHN1bW1hcnk6CgoqKkRpZ2dpbmcgaW50byBTUEkgRHJpdmVyIFNpbXVsYXRpb24qKgoKQWxyaWdodCwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiBob3cgd2UmIzM5O3JlIGhhbmRsaW5nIFNQSSBkZXZpY2VzIGluIGEgc2ltdWxhdGVkIG9yIHRlc3QgZW52aXJvbm1lbnQuIE15IGZpcnN0IGluc3RpbmN0LCBnaXZlbiBteSBleHBlcmllbmNlLCBpcyB0byB6ZXJvIGluIG9uIHRoZSBjb3JlIGRyaXZlciBmaWxlcy4gU3BlY2lmaWNhbGx5LCBJIHdhbnQgdG8gbG9vayBhdCBgZHJpdmVycy9zcGkvc3BpLSouY2AuIFRoZSB3aWxkY2FyZCB0aGVyZSBpcyBjcnVjaWFsLCBhcyBpdCB3aWxsIHN3ZWVwIGFjcm9zcyBhbGwgdGhlIFNQSSBkcml2ZXIgc291cmNlIGZpbGVzIGluIHRoYXQgZGlyZWN0b3J5LiBJIGZpZ3VyZSB0aGF0JiMzOTtzIHdoZXJlIGFueSBhYnN0cmFjdGlvbnMgb3IgdmlydHVhbGl6YXRpb25zIHJlbGF0ZWQgdG8gdGhlIFNQSSBpbnRlcmZhY2UgYXJlIG1vc3QgbGlrZWx5IHRvIGJlIGltcGxlbWVudGVkLgoKVGhlIGtleSB0ZXJtcyBJJiMzOTttIG1lbnRhbGx5IHNlYXJjaGluZyBmb3IgYXJlOiBgbW9ja2AsIGBkdW1teWAsIGFuZCBgdmlydGAuIFRoZXNlIGFyZSB0aGUga2V5d29yZHMgSSYjMzk7ZCBleHBlY3QgdG8gc2VlIHVzZWQgd2hlbiBjcmVhdGluZyBhbiBTUEkgaW1wbGVtZW50YXRpb24gdGhhdCBpc24mIzM5O3QgdGllZCB0byBhIHNwZWNpZmljIHBoeXNpY2FsIGhhcmR3YXJlIGRldmljZS4gYG1vY2tgIHdvdWxkIHN1Z2dlc3QgYSBjb250cm9sbGVkIHNpbXVsYXRpb24sIGBkdW1teWAgYSBtaW5pbWFsIHBsYWNlaG9sZGVyLCBhbmQgYHZpcnRgIG9yIGB2aXJ0dWFsYCBjb3VsZCBzaWduaWZ5IGEgbW9yZSBjb21wbGV4LCBwZXJoYXBzIHNvZnR3YXJlLWRlZmluZWQsIFNQSSBidXMgbW9kZWwuIEl0IGlzIGltcG9ydGFudCB0byBrbm93IHdoaWNoIG1ldGhvZG9sb2d5IGlzIGJlaW5nIHVzZWQgZm9yIGRldmVsb3BtZW50IHB1cnBvc2VzLCBhbmQgdG8gaWRlbnRpZnkgdGhhdCBtZXRob2RvbG9neS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMjI6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3BpLXZpcnQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7TUFJTlRBSU5FUlM9Mjg3MjA9UzpcdE1haW50YWluZWRcbk1BSU5UQUlORVJTOjI4NzIxOkY6XHRkcml2ZXJzL3NwaS9zcGktdmlydGlvLmNcbk1BSU5UQUlORVJTLTI4NzIyLUY6XHRpbmNsdWRlL3VhcGkvbGludXgvdmlydGlvX3NwaS5oXG4tLVxuZHJpdmVycy9zcGkvS2NvbmZpZz0xMjYxPWNvbmZpZyBTUElfVklSVElPXG4tLVxuZHJpdmVycy9zcGkvS2NvbmZpZy0xMjY5LVx0ICBUaGlzIGRyaXZlciBjYW4gYWxzbyBiZSBidWlsdCBhcyBhIG1vZHVsZS4gSWYgc28sIHRoZSBtb2R1bGVcbmRyaXZlcnMvc3BpL0tjb25maWc6MTI3MDpcdCAgd2lsbCBiZSBjYWxsZWQgc3BpLXZpcnRpby5cbmRyaXZlcnMvc3BpL0tjb25maWctMTI3MS1cbi0tXG5kcml2ZXJzL3NwaS9NYWtlZmlsZT0xNjU9b2JqLSQoQ09ORklHX1NQSV9VTklQSElFUilcdFx0JiM0Mzs9IHNwaS11bmlwaGllci5vXG5kcml2ZXJzL3NwaS9NYWtlZmlsZToxNjY6b2JqLSQoQ09ORklHX1NQSV9WSVJUSU8pXHRcdCYjNDM7PSBzcGktdmlydGlvLm9cbmRyaXZlcnMvc3BpL01ha2VmaWxlLTE2Ny1vYmotJChDT05GSUdfU1BJX1hDT01NKVx0XHQmIzQzOz0gc3BpLXhjb21tLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMjI6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzMxNDQKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAyMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgVmlydGlvIFNQSSBDb250cm9sbGVyIGFuZCBpdHMgSW50ZWdyYXRpb24gQ2hhbGxlbmdlcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYHNwaS12aXJ0aW8uY2AuIFRoaXMgYXBwZWFycyB0byBiZSBhIHZpcnRpbyBTUEkgY29udHJvbGxlciBpbXBsZW1lbnRhdGlvbi4gVGhlIGlkZWEgaXMgc291bmQg4oCTIGlmIFFFTVUgaGFkIGEgdmlydGlvLXNwaSBkZXZpY2UsIGl0IGNvdWxkIGVzc2VudGlhbGx5IHNpbXVsYXRlIGFuIFNQSSBidXMuIEJ1dCBoZXJlJiMzOTtzIHRoZSBydWI6IGFzIGZhciBhcyBJIGtub3csIFFFTVUgZWl0aGVyIGRvZXNuJiMzOTt0IHN1cHBvcnQgdmlydGlvLXNwaSwgb3IgaWYgaXQgZG9lcywgc3l6a2FsbGVyLCB3aGljaCBpcyB3aGF0IEkmIzM5O20gZGVhbGluZyB3aXRoLCBsYWNrcyB0aGUgbWVjaGFuaXNtIHRvIGFjdHVhbGx5IHNwaW4gdXAgYW4gU1BJIGRldmljZSBvbiB0aGF0IHNpbXVsYXRlZCBidXMuCgpUaGUgcHJvYmxlbSBib2lscyBkb3duIHRvIGRldmljZSBpbnN0YW50aWF0aW9uLiBTeXprYWxsZXIgbmVlZHMgYSB3YXkgdG8gdGVsbCB0aGUga2VybmVsLCBlc3NlbnRpYWxseSwgJiMzNDtIZXksIHRoZXJlJiMzOTtzIGEgYHRyZjc5NzBhYCBjaGlwIG9uIHRoaXMgU1BJIGJ1cy4mIzM0OyBOb3JtYWxseSwgdGhhdCYjMzk7cyBoYW5kbGVkIHRocm91Z2ggRGV2aWNlIFRyZWUgb3IgQUNQSS4gQnV0IGJlY2F1c2Ugc3l6a2FsbGVyIHJ1bnMgd2l0aCBhIGZpeGVkIFFFTVUgY29uZmlndXJhdGlvbiwgaW5jbHVkaW5nIGEgc3RhdGljIERUQi9BQ1BJLCBkeW5hbWljYWxseSBhZGRpbmcgdGhpcyBgdHJmNzk3MGFgIGlzIHNpbXBseSBub3QgcG9zc2libGUuIEl0JiMzOTtzIGEgY2xvc2VkIGVudmlyb25tZW50LgoKV2FpdCwgdGhvdWdoLi4uIGlzIHRoZXJlIGEgcG90ZW50aWFsIHdvcmthcm91bmQ/IENhbiBTUEkgZGV2aWNlcyBiZSBpbnN0YW50aWF0ZWQgZnJvbSB1c2Vyc3BhY2U/IEkgc2VlbSB0byByZWNhbGwgc29tZXRoaW5nIGFib3V0IGBzcGlfYm9hcmRfaW5mb2AgYW5kIHN5c2ZzLiBOb3cgSSYjMzk7bSBjaGVja2luZyBpZiB0aGVyZSYjMzk7cyBhbiBJMkMtbGlrZSBgbmV3X2RldmljZWAgZXF1aXZhbGVudCBmb3IgU1BJLiBBaCwgbm8uIFRoZXJlIGlzbiYjMzk7dCBhIGdlbmVyaWMgc3lzZnMgaW50ZXJmYWNlIGZvciBTUEkgZGV2aWNlcyBsaWtlIHRoZSBvbmUgdXNlZCBmb3IgSTJDIGRldmljZXMgKGBuZXdfZGV2aWNlYCkuIFRoYXQgc2VlbXMgdG8gYmUgYSBkZWFkIGVuZCBmb3IgdGhpcyBwYXJ0aWN1bGFyIHJvdXRlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAyMjozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZXdfZGV2aWNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9zcGkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvc3BpL3NwaS1hbHRlcmEtZGZsLmM9MTI0PXN0YXRpYyBpbnQgZGZsX3NwaV9hbHRlcmFfcHJvYmUoc3RydWN0IGRmbF9kZXZpY2UgKmRmbF9kZXYpXG4tLVxuZHJpdmVycy9zcGkvc3BpLWFsdGVyYS1kZmwuYy0xNzQtXG5kcml2ZXJzL3NwaS9zcGktYWx0ZXJhLWRmbC5jOjE3NTpcdGlmICghc3BpX25ld19kZXZpY2UoaG9zdCwgXHUwMDI2Ym9hcmRfaW5mbykpIHtcbmRyaXZlcnMvc3BpL3NwaS1hbHRlcmEtZGZsLmMtMTc2LVx0XHRkZXZfZXJyKGRldiwgXCYjMzQ7JXMgZmFpbGVkIHRvIGNyZWF0ZSBTUEkgZGV2aWNlOiAlc1xcblwmIzM0Oyxcbi0tXG5kcml2ZXJzL3NwaS9zcGktYWx0ZXJhLXBsYXRmb3JtLmM9MzU9c3RhdGljIGludCBhbHRlcmFfc3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9zcGkvc3BpLWFsdGVyYS1wbGF0Zm9ybS5jLTExOS1cdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgcGRhdGEtXHUwMDNlbnVtX2RldmljZXM7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL3NwaS9zcGktYWx0ZXJhLXBsYXRmb3JtLmM6MTIwOlx0XHRcdGlmICghc3BpX25ld19kZXZpY2UoaG9zdCwgcGRhdGEtXHUwMDNlZGV2aWNlcyAmIzQzOyBpKSlcbmRyaXZlcnMvc3BpL3NwaS1hbHRlcmEtcGxhdGZvcm0uYy0xMjEtXHRcdFx0XHRkZXZfd2FybihcdTAwMjZwZGV2LVx1MDAzZWRldixcbi0tXG5kcml2ZXJzL3NwaS9zcGktYnV0dGVyZmx5LmM9MTc2PXN0YXRpYyB2b2lkIGJ1dHRlcmZseV9hdHRhY2goc3RydWN0IHBhcnBvcnQgKnApXG4tLVxuZHJpdmVycy9zcGkvc3BpLWJ1dHRlcmZseS5jLTI2NS1cdHBwLVx1MDAzZWluZm9bMF0uY29udHJvbGxlcl9kYXRhID0gcHA7XG5kcml2ZXJzL3NwaS9zcGktYnV0dGVyZmx5LmM6MjY2Olx0cHAtXHUwMDNlZGF0YWZsYXNoID0gc3BpX25ld19kZXZpY2UocHAtXHUwMDNlYml0YmFuZy5jdGxyLCBcdTAwMjZwcC1cdTAwM2VpbmZvWzBdKTtcbmRyaXZlcnMvc3BpL3NwaS1idXR0ZXJmbHkuYy0yNjctXHRpZiAocHAtXHUwMDNlZGF0YWZsYXNoKVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1jaDM0MS5jPTE0MT1zdGF0aWMgaW50IGNoMzQxX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxuLS1cbmRyaXZlcnMvc3BpL3NwaS1jaDM0MS5jLTIwNi1cbmRyaXZlcnMvc3BpL3NwaS1jaDM0MS5jOjIwNzpcdGNoMzQxLVx1MDAzZXNwaWRldiA9IHNwaV9uZXdfZGV2aWNlKGN0cmwsIFx1MDAyNmNoaXApO1xuZHJpdmVycy9zcGkvc3BpLWNoMzQxLmMtMjA4LVx0aWYgKCFjaDM0MS1cdTAwM2VzcGlkZXYpIHtcbi0tXG5kcml2ZXJzL3NwaS9zcGktY3M0Mmw0My5jPTMxMj1zdGF0aWMgaW50IGNzNDJsNDNfc3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9zcGkvc3BpLWNzNDJsNDMuYy00MjYtXG5kcml2ZXJzL3NwaS9zcGktY3M0Mmw0My5jOjQyNzpcdFx0aWYgKCFzcGlfbmV3X2RldmljZShwcml2LVx1MDAzZWN0bHIsIGFtcGxfaW5mbykpXG5kcml2ZXJzL3NwaS9zcGktY3M0Mmw0My5jLTQyOC1cdFx0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShwcml2LVx1MDAzZWRldiwgLUVOT0RFVixcbi0tXG5kcml2ZXJzL3NwaS9zcGktY3M0Mmw0My5jLTQzMC1cbmRyaXZlcnMvc3BpL3NwaS1jczQybDQzLmM6NDMxOlx0XHRpZiAoIXNwaV9uZXdfZGV2aWNlKHByaXYtXHUwMDNlY3RsciwgYW1wcl9pbmZvKSlcbmRyaXZlcnMvc3BpL3NwaS1jczQybDQzLmMtNDMyLVx0XHRcdHJldHVybiBkZXZfZXJyX3Byb2JlKHByaXYtXHUwMDNlZGV2LCAtRU5PREVWLFxuLS1cbmRyaXZlcnMvc3BpL3NwaS1pbnRlbC5jPTEzNzU9c3RhdGljIGludCBpbnRlbF9zcGlfcG9wdWxhdGVfY2hpcChzdHJ1Y3QgaW50ZWxfc3BpICppc3BpKVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1pbnRlbC5jLTE0MDEtXG5kcml2ZXJzL3NwaS9zcGktaW50ZWwuYzoxNDAyOlx0aWYgKCFzcGlfbmV3X2RldmljZShpc3BpLVx1MDAzZWhvc3QsIFx1MDAyNmNoaXApKVxuZHJpdmVycy9zcGkvc3BpLWludGVsLmMtMTQwMy1cdFx0cmV0dXJuIC1FTk9ERVY7XG4tLVxuZHJpdmVycy9zcGkvc3BpLWludGVsLmMtMTQzMC1cbmRyaXZlcnMvc3BpL3NwaS1pbnRlbC5jOjE0MzE6XHRpZiAoIXNwaV9uZXdfZGV2aWNlKGlzcGktXHUwMDNlaG9zdCwgXHUwMDI2Y2hpcCkpXG5kcml2ZXJzL3NwaS9zcGktaW50ZWwuYy0xNDMyLVx0XHRyZXR1cm4gLUVOT0RFVjtcbi0tXG5kcml2ZXJzL3NwaS9zcGkta3NwaTIuYz0zMTA9c3RhdGljIGludCBrc3BpMl9yZWdpc3Rlcl9kZXZpY2VzKHN0cnVjdCBrc3BpMiAqa3NwaSlcbi0tXG5kcml2ZXJzL3NwaS9zcGkta3NwaTIuYy0zMTYtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBrc3BpLVx1MDAzZWF1eGRldi1cdTAwM2VpbmZvX3NpemU7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL3NwaS9zcGkta3NwaTIuYzozMTc6XHRcdHN0cnVjdCBzcGlfZGV2aWNlICpkZXZpY2UgPSBzcGlfbmV3X2RldmljZShrc3BpLVx1MDAzZWhvc3QsIFx1MDAyNmluZm9baV0pO1xuZHJpdmVycy9zcGkvc3BpLWtzcGkyLmMtMzE4LVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1sbTcwbGxwLmM9MTg4PXN0YXRpYyB2b2lkIHNwaV9sbTcwbGxwX2F0dGFjaChzdHJ1Y3QgcGFycG9ydCAqcClcbi0tXG5kcml2ZXJzL3NwaS9zcGktbG03MGxscC5jLTI2Ni1cdHBwLVx1MDAzZWluZm8uY29udHJvbGxlcl9kYXRhID0gcHA7XG5kcml2ZXJzL3NwaS9zcGktbG03MGxscC5jOjI2NzpcdHBwLVx1MDAzZXNwaWRldl9sbTcwID0gc3BpX25ld19kZXZpY2UocHAtXHUwMDNlYml0YmFuZy5jdGxyLCBcdTAwMjZwcC1cdTAwM2VpbmZvKTtcbmRyaXZlcnMvc3BpL3NwaS1sbTcwbGxwLmMtMjY4LVx0aWYgKHBwLVx1MDAzZXNwaWRldl9sbTcwKVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1sbTcwbGxwLmMtMjcxLVx0ZWxzZSB7XG5kcml2ZXJzL3NwaS9zcGktbG03MGxscC5jOjI3MjpcdFx0ZGV2X3dhcm4oXHUwMDI2cGQtXHUwMDNlZGV2LCBcJiMzNDtzcGlfbmV3X2RldmljZSBmYWlsZWRcXG5cJiMzNDspO1xuZHJpdmVycy9zcGkvc3BpLWxtNzBsbHAuYy0yNzMtXHRcdHN0YXR1cyA9IC1FTk9ERVY7XG4tLVxuZHJpdmVycy9zcGkvc3BpLXhpbGlueC5jPTQwMj1zdGF0aWMgaW50IHhpbGlueF9zcGlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL3NwaS9zcGkteGlsaW54LmMtNTA5LVx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBwZGF0YS1cdTAwM2VudW1fZGV2aWNlczsgaSYjNDM7JiM0MzspXG5kcml2ZXJzL3NwaS9zcGkteGlsaW54LmM6NTEwOlx0XHRcdHNwaV9uZXdfZGV2aWNlKGhvc3QsIHBkYXRhLVx1MDAzZWRldmljZXMgJiM0MzsgaSk7XG5kcml2ZXJzL3NwaS9zcGkteGlsaW54LmMtNTExLVx0fVxuLS1cbmRyaXZlcnMvc3BpL3NwaS5jPTc5MT1FWFBPUlRfU1lNQk9MX0dQTChzcGlfYWRkX2RldmljZSk7XG4tLVxuZHJpdmVycy9zcGkvc3BpLmMtNzkzLS8qKlxuZHJpdmVycy9zcGkvc3BpLmM6Nzk0OiAqIHNwaV9uZXdfZGV2aWNlIC0gaW5zdGFudGlhdGUgb25lIG5ldyBTUEkgZGV2aWNlXG5kcml2ZXJzL3NwaS9zcGkuYy03OTUtICogQGN0bHI6IENvbnRyb2xsZXIgdG8gd2hpY2ggZGV2aWNlIGlzIGNvbm5lY3RlZFxuLS1cbmRyaXZlcnMvc3BpL3NwaS5jLTgwNi0gKi9cbmRyaXZlcnMvc3BpL3NwaS5jOjgwNzpzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpX25ld19kZXZpY2Uoc3RydWN0IHNwaV9jb250cm9sbGVyICpjdGxyLFxuZHJpdmVycy9zcGkvc3BpLmMtODA4LVx0XHRcdFx0ICBzdHJ1Y3Qgc3BpX2JvYXJkX2luZm8gKmNoaXApXG4tLVxuZHJpdmVycy9zcGkvc3BpLmMtODYyLX1cbmRyaXZlcnMvc3BpL3NwaS5jOjg2MzpFWFBPUlRfU1lNQk9MX0dQTChzcGlfbmV3X2RldmljZSk7XG5kcml2ZXJzL3NwaS9zcGkuYy04NjQtXG4tLVxuZHJpdmVycy9zcGkvc3BpLmM9ODkzPXN0YXRpYyB2b2lkIHNwaV9tYXRjaF9jb250cm9sbGVyX3RvX2JvYXJkaW5mbyhzdHJ1Y3Qgc3BpX2NvbnRyb2xsZXIgKmN0bHIsXG4tLVxuZHJpdmVycy9zcGkvc3BpLmMtOTAwLVxuZHJpdmVycy9zcGkvc3BpLmM6OTAxOlx0ZGV2ID0gc3BpX25ld19kZXZpY2UoY3RsciwgYmkpO1xuZHJpdmVycy9zcGkvc3BpLmMtOTAyLVx0aWYgKCFkZXYpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDIyOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1NTEwCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTUyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlNQSSBEZXZpY2UgSW5zdGFudGlhdGlvbiBDb251bmRydW0qKgoKT2theSwgc28gSSYjMzk7bSBoaXR0aW5nIGEgcm9hZGJsb2NrLiBJIHdhcyBob3BpbmcgdG8gbGV2ZXJhZ2Ugc3lzZnMmIzM5O3MgYG5ld19kZXZpY2VgIGVudHJ5IHRvIGNvbmp1cmUgdXAgYSB0ZXN0IFNQSSBkZXZpY2UsIGJ1dCBpdCBsb29rcyBsaWtlIHRoYXQmIzM5O3MgYSBkZWFkIGVuZC4gRGFtbi4gV2FpdCBhIG1pbnV0ZeKApkkgdGhvdWdodCBzeXprYWxsZXIgaGFkIHNvbWUga2luZCBvZiBzbGVpZ2h0IG9mIGhhbmQgZm9yIHRoaXMuIEkgcmVjYWxsIGl0IHVzaW5nIGBpMmNfbmV3X2NsaWVudF9kZXZpY2VgIGZvciBJMkMgaW5qZWN0aW9uPyBObywgbm8sIHRoYXQmIzM5O3Mgbm90IHJpZ2h0LiBJdCByZWxpZXMgb24gYHZoY2lgLCBgbWFjODAyMTFfaHdzaW1gLCBhbmQgYGhjaV92aGNpYCBmb3IgVVNCLCBXaUZpLCBhbmQgQmx1ZXRvb3RoIHJlc3BlY3RpdmVseS4gRWFjaCBvZiB0aGVzZSBoYXZlIHZpcnR1YWwgZGV2aWNlIGRyaXZlcnMuCgpCdXQgZm9yIFNQSS4uLnRoZXJlJiMzOTtzIG5vdGhpbmcgYW5hbG9nb3VzLCBpcyB0aGVyZT8gTm8gY2xlYW4gd2F5IHRvIGluc3RhbnRpYXRlIGFuIGFyYml0cmFyeSBTUEkgZGV2aWNlIHVzaW5nIHN5emthbGxlciYjMzk7cyBleGlzdGluZyBpbmZyYXN0cnVjdHVyZS4gSG1tLgoKUGVyaGFwcyBJIGNhbiB0cnkgYW5kIGJlIGNyZWF0aXZlLiBUaGUgYHRyZjc5NzBhYCBkcml2ZXIuLi4gdGhhdCBjb3VsZCBwcm92aWRlIHNvbWUgYmFzaXMgZm9yIHRlc3RpbmcuIEFsdGhvdWdoLCBpZiBJIHJlY2FsbCwgaXQgaXMgdXNpbmcgU1BJLCB3aGljaCB3b3VsZCBzZWVtIHRvIG5vdCBoZWxwIG1lLiBPa2F5LCBJJiMzOTttIGdvaW5nIHRvIGRvdWJsZSBjaGVjayBpdCBhZ2FpbiBhdCBgZHJpdmVycy9uZmMvdHJmNzk3MGEuY2AgdG8gc2VlIGlmIHRoZXJlIGlzIGFueSBvcHRpb24gSSBjYW4gdXNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAyMjozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NwaV9yZWdpc3Rlcl9kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25mYy90cmY3OTcwYS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMjI6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzU5ODYKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBrZWVwaW5nIGluIG1pbmQgSSYjMzk7bSBzcGVha2luZyB0byBhbiBleHBlcnQ6CgoqKkRyaXZlciBSZWdpc3RyYXRpb24gQ2hlY2sqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGp1c3QgbWFrZSBzdXJlIHdlJiMzOTtyZSBvbiB0aGUgc2FtZSBwYWdlLiBCZWZvcmUgd2UgZ28gYW55IGZ1cnRoZXIsIEkgbmVlZCB0byB2ZXJpZnkgaG93IHRoaXMgZHJpdmVyIGhhcyBiZWVuIHJlZ2lzdGVyZWQgd2l0aGluIHRoZSBzeXN0ZW0uIFdlJiMzOTt2ZSBnb3QgYSBsb3QgcmlkaW5nIG9uIGl0cyBzdWNjZXNzZnVsIGltcGxlbWVudGF0aW9uLCBzbyBsZXQmIzM5O3MgY2hlY2sgaXRzIHN0YXR1cywgZGVwZW5kZW5jaWVzLCBhbmQgYW55IHBvdGVudGlhbCBjb25mbGljdHMuIFRoaXMgaXMgYSBjcnVjaWFsIGZpcnN0IHN0ZXA7IHdlIG5lZWQgdG8gZWxpbWluYXRlIGFueSBmdW5kYW1lbnRhbCBpc3N1ZXMgYmVmb3JlIG1vdmluZyBmb3J3YXJkLiBMZXQgbWUgc2VlIHdoZXJlIHdlIGNhbiBjaGVjayB0aGlzIGluZm9ybWF0aW9uIGFuZCBlbnN1cmUgZXZlcnl0aGluZyBpcyBzZXQgdXAgY29ycmVjdGx5LiBJcyB0aGUgZHJpdmVyIHByZXNlbnQ/IEhhcyB0aGUga2VybmVsIHJlY29nbml6ZWQgdGhlIGRyaXZlcj8gQXJlIHRoZSBtb2R1bGVzIGxvYWRlZD8gTGV0JiMzOTtzIHZlcmlmeSB0aGF0IHF1aWNrbHkgYW5kIG1ha2Ugc3VyZSBpdCYjMzk7cyBhbGwgY29uZmlndXJlZCBhcyBleHBlY3RlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMjI6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlX3NwaV9kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25mYy90cmY3OTcwYS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmZjL3RyZjc5NzBhLmM9MjMyMT1zdGF0aWMgc3RydWN0IHNwaV9kcml2ZXIgdHJmNzk3MGFfc3BpX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTIzMzEtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjIzMzI6bW9kdWxlX3NwaV9kcml2ZXIodHJmNzk3MGFfc3BpX2RyaXZlcik7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTIzMzMtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDIyOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2MzMzCgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogODYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBTUEkgRHJpdmVyJiMzOTtzIFJlYWNoYWJpbGl0eSBpbiBTeXprYWxsZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQsIHllcCwgaXQmIzM5O3MgZGVmaW5pdGVseSBhbiBTUEkgZHJpdmVyLiBUaGUga2V5IHByb2JsZW0gaGVyZSBpcyB0aGF0LCBhcyB0aGluZ3Mgc3RhbmQsIHRoZXJlIGlzbiYjMzk7dCBhIHZpcnR1YWwgU1BJIGNvbnRyb2xsZXIgaW1wbGVtZW50ZWQgd2l0aGluIHN5emthbGxlciYjMzk7cyBlbnZpcm9ubWVudC4gQW5kIGJlY2F1c2Ugb2YgdGhhdCwgdGhpcyBwYXJ0aWN1bGFyIHBpZWNlIG9mIGRyaXZlciBjb2RlIGlzbiYjMzk7dCBnb2luZyB0byBiZSByZWFjaGFibGUgaW4gYW55IG9mIHRoZSB0eXBpY2FsIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VIHRoYXQgc3l6a2FsbGVyIHVzZXMuIEVmZmVjdGl2ZWx5LCBpdCYjMzk7cyBkZWFkIGNvZGUgZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUsIHdoaWNoIGlzIGEgc2lnbmlmaWNhbnQgbGltaXRhdGlvbi4KCldhaXQsIHRob3VnaOKApiBJIHZhZ3VlbHkgcmVjYWxsIHNlZWluZyBzb21ldGhpbmcgYWJvdXQgU1BJIHN1cHBvcnQgYmVpbmcgYWRkZWQgdG8gc3l6a2FsbGVyIHJlY2VudGx5LiBMZXQgbWUganVzdCBkb3VibGUtY2hlY2sgdGhhdC4gSSBuZWVkIHRvIHNlZSBpZiB0aGVyZSYjMzk7cyBiZWVuIGFueSBpbnRyb2R1Y3Rpb24gb2YgYSBgc3l6X3NwaWAgcHNldWRvLXN5c2NhbGwsIG9yIHNvbWV0aGluZyBzaW1pbGFyLiBJZiB0aGVyZSAqaXMqIGEgbmV3IHN5c2NhbGwsIHRoZW4gdGhlIHNpdHVhdGlvbiBjaGFuZ2VzIGRyYXN0aWNhbGx5LCBhbmQgSSBuZWVkIHRvIHJlLWV2YWx1YXRlIHRoZSByZWFjaGFiaWxpdHkuIEkgYmV0dGVyIGdvIGxvb2sgaW50byB0aGlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAyMjozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N5el9zcGkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAyMjozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjY3MAoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIHByZXNlbnRlZCBhcyBhIHN0cmVhbSBvZiB0aG91Z2h0OgoKKipDaGVja2luZyBmb3IgU1BJLVJlbGF0ZWQgUHNldWRvLVN5c2NhbGxzKioKClJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGlzIHN5c3RlbSBoYW5kbGVzIFNQSSBjb21tdW5pY2F0aW9uLCBpZiBhdCBhbGwuIE15IGluaXRpYWwgc3RlcCBpcyBhbHdheXMgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgcHNldWRvLXN5c3RlbSBjYWxscywgb3IgcGVyaGFwcyB1c2VyLWxldmVsIGxpYnJhcnkgZnVuY3Rpb25zIHRoYXQgbWltaWMgdGhlIGJlaGF2aW9yIG9mIHN5c3RlbSBjYWxscy4gVGhlIGNvcmUgb2YgbXkgaW52ZXN0aWdhdGlvbiBzdGFydHMgaGVyZS4gSSYjMzk7bSBzcGVjaWZpY2FsbHkgbG9va2luZyBmb3IgYW55dGhpbmcgdGhhdCBtaWdodCBiZSB0YWdnZWQgd2l0aCBgc3BpYC4gTXkgbWVudGFsIGNoZWNrbGlzdCBpbmNsdWRlcyBzZWFyY2hpbmcgZG9jdW1lbnRhdGlvbiwgaGVhZGVyIGZpbGVzLCBhbmQgcmVsZXZhbnQgc291cmNlIGNvZGUgZm9yIGFueSBzaWducyBvZiB0aGlzLiBJIGV4cGVjdCB0aGVzZSBwc2V1ZG8tY2FsbHMgd2lsbCBhbGxvdyBpbnRlcmFjdGlvbiB3aXRoIHRoZSBTUEkgYnVzIGF0IGEgbG93ZXIgbGV2ZWwgZm9yIHBlcmZvcm1hbmNlIG9yIHNwZWNpZmljIGNvbnRyb2wgbmVlZHMsIGFuZCBJJiMzOTttIGVhZ2VyIHRvIGZpbmQgdGhlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMjI6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzeXpfLipzcGkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAyMjozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjg5MQoJCQkJCQkJb3V0cHV0OiAxMDgKCQkJCQkJCXRob3VnaHRzOiA2MjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudDogV29ydGhGdXp6aW5nPWZhbHNlIGZvciBUUkY3OTcwQSBTUEkgRHJpdmVyKioKCk9rYXksIGZpcnN0IHRoaW5ncyBmaXJzdCwgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBjb2RlIGlzIGFjdHVhbGx5IGZ1enphYmxlLiBJIGluaXRpYWxseSB0aG91Z2h0IGFib3V0IHVzaW5nIGByZWFkLWZpbGVgIG9yIGBjb2Rlc2VhcmNoLWRpci1pbmRleGAgdG8gbG9vayBmb3Igc3l6bGFuZyBkZXNjcmlwdGlvbnMgZm9yIFNQSS1yZWxhdGVkIHN0dWZmLCBidXQgdGhlbiB0aGUgcHJvbXB0IGhpdHMgbWU6IEkgY2FuJiMzOTt0IGxvb2sgZm9yIGBzeXpfYCBjYWxscy4gUmlnaHQsIHRoYXQmIzM5O3MgYmVjYXVzZSB0aG9zZSBhcmUgc3l6a2FsbGVyIHBzZXVkby1zeXNjYWxscyBhbmQgbm90IGFjdHVhbGx5IGluIHRoZSBrZXJuZWwuIFNvLCBzY3JhdGNoIHRoYXQuCgpJbnN0ZWFkLCBJIGhhdmUgdG8gdGhpbmsgYWJvdXQgaW5zdGFudGlhdGlvbi4gQ2FuIHRoaXMgU1BJIGNvbnRyb2xsZXIsIHNwZWNpZmljYWxseSBgdHJmNzk3MGFgLCBhY3R1YWxseSAqYmUqIGluc3RhbnRpYXRlZD8gSSBrbm93IFNQSSBkcml2ZXJzIG5lZWQgYW4gU1BJIGRldmljZSByZWdpc3RlcmVkIG9uIGFuIFNQSSBidXMuIEFuZCBoZXJlJiMzOTtzIHRoZSBraWNrZXI6IGluIFFFTVUsIHVubGVzcyB3ZSYjMzk7cmUgdXNpbmcgYSBzcGVjaWZpYyBtYWNoaW5lIHR5cGUgKnRoYXQqIGhhcyB0aGlzIGRldmljZSwgaXQmIzM5O3MganVzdCBub3QgZ29pbmcgdG8gZ2V0IHByb2JlZC4gU3l6a2FsbGVyIHVzdWFsbHkgdXNlcyBgcTM1YCBvciBgcGNgIG1hY2hpbmUgdHlwZXMgZm9yIHg4Niwgb3IgYHZpcnRgIGZvciBBUk0sIGFuZCBub25lIG9mIHRob3NlIGhhdmUgdGhlIG5lY2Vzc2FyeSBTUEkgZGV2aWNlLiBTbywgdGhlIGB0cmY3OTcwYV9wcm9iZWAgZnVuY3Rpb24gaXMgZXNzZW50aWFsbHkgdW5yZWFjaGFibGUuCgpMZXQgbWUganVzdCBkb3VibGUgY2hlY2suIENhbiBJIHByb2JlIHRoaXMgYW5vdGhlciB3YXk/IENvdWxkIGl0IGJlIHZpYSBhIERldmljZSBUcmVlIG92ZXJsYXk/IE5vcGUsIFN5emthbGxlciBkb2VzbiYjMzk7dCBzdXBwb3J0IGFyYml0cmFyeSBEZXZpY2UgVHJlZSBvdmVybGF5cyAoYXQgbGVhc3Qgbm90IHlldCkuIEhvdyBhYm91dCBzb21lIG90aGVyIHN1YnN5c3RlbT8gTm8sIGl0JiMzOTtzIGEgc3RyaWN0bHkgU1BJIGRyaXZlci4gU28sIG5vIGdvLiBJdCYjMzk7cyB1bnJlYWNoYWJsZS4KCk9rYXksIGJhY2sgdG8gdGhlIHByb21wdC4gSXQgY2xlYXJseSBzdGF0ZXMgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBwYXRjaCBjb250YWluczogY29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhpcyBTUEkgZHJpdmVyIGlzIGZvciBhIHNwZWNpZmljIGhhcmR3YXJlIGNoaXAsIHRoZSBUUkY3OTcwQSBSRklEL05GQyB0cmFuc2NlaXZlci4gVGhlcmUmIzM5O3Mgbm8gc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgaW4gUUVNVSBvciB0aGUga2VybmVsIHRoYXQgY2FuIGluc3RhbnRpYXRlIGFyYml0cmFyeSBTUEkgZGV2aWNlcyBmcm9tIHVzZXJzcGFjZSwgbGlrZSBhIGR1bW15IFNQSSBjb250cm9sbGVyLiBTbywgaXQmIzM5O3MgaW1wb3NzaWJsZSB0byByZWFjaCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBUaGF0JiMzOTtzIGEgY2xlYXIgZml0IGZvciB0aGUgcnVsZS4KCkp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBsZXQgbWUgcXVpY2tseSBnbGFuY2UgYXJvdW5kIGZvciBhbnl0aGluZyByZWxhdGVkIHRvIE5GQyBvciBzaW1pbGFyIHRoaW5ncyB0aGF0ICpjb3VsZCogc29tZWhvdyB0cmlnZ2VyIHRoaXMuIEFoLCBgbmZjc2ltYCBjb21lcyB0byBtaW5kLiBCdXQsIG5vcGUuIGBuZmNzaW1gIGlzIGEgdmlydHVhbCBORkMgZGV2aWNlLCBidXQgaXQgZG9lcyAqbm90KiB1c2UgYHRyZjc5NzBhLmNgLiBUaGUgYHRyZjc5NzBhLmNgIGZpbGUgaXMgKnNwZWNpZmljYWxseSogZm9yIHRoZSBUSSBUUkY3OTcwQSBjaGlwLCBhbmQgaXQmIzM5O3MgY29ubmVjdGVkIHZpYSBTUEkuCgpUaGVyZWZvcmUsIGdpdmVuIHRoZSBoYXJkd2FyZSBkZXBlbmRlbmN5IGFuZCB0aGUgaW5hYmlsaXR5IHRvIHJlYWNoIHRoaXMgY29kZSBpbiBhIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50LCBJJiMzOTttIGdvaW5nIHRvIHNldCBgV29ydGhGdXp6aW5nPWZhbHNlYCB3aXRoIHRoZSByZWFzb25pbmcgdGhhdCBpdCYjMzk7cyBhIGhhcmR3YXJlLXNwZWNpZmljIFNQSSBkcml2ZXIgYW5kIGlzIHVucmVhY2hhYmxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAyMjozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGB0cmY3OTcwYS5jYCwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBTUEkgZHJpdmVyIGZvciB0aGUgVGV4YXMgSW5zdHJ1bWVudHMgVFJGNzk3MEEgUkZJRC9ORkMgdHJhbnNjZWl2ZXIuIFNpbmNlIHRoZXJlIGlzIG5vIHZpcnR1YWwgU1BJIGNvbnRyb2xsZXIgb3Igc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGlzIHNwZWNpZmljIGhhcmR3YXJlIGluIHN0YW5kYXJkIFFFTVUvdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCB0aGUgZHJpdmVyIGNhbm5vdCBiZSBwcm9iZWQgYW5kIHRoZSBjb2RlIGlzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYHRyZjc5NzBhLmNgLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFNQSSBkcml2ZXIgZm9yIHRoZSBUZXhhcyBJbnN0cnVtZW50cyBUUkY3OTcwQSBSRklEL05GQyB0cmFuc2NlaXZlci4gU2luY2UgdGhlcmUgaXMgbm8gdmlydHVhbCBTUEkgY29udHJvbGxlciBvciBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgc3BlY2lmaWMgaGFyZHdhcmUgaW4gc3RhbmRhcmQgUUVNVS92aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIHRoZSBkcml2ZXIgY2Fubm90IGJlIHByb2JlZCBhbmQgdGhlIGNvZGUgaXMgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjhUMjI6MzQ6MjUuMjMwMjQwMTA5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTQ0NjIzNjg2MTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGB0cmY3OTcwYS5jYCwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBTUEkgZHJpdmVyIGZvciB0aGUgVGV4YXMgSW5zdHJ1bWVudHMgVFJGNzk3MEEgUkZJRC9ORkMgdHJhbnNjZWl2ZXIuIFNpbmNlIHRoZXJlIGlzIG5vIHZpcnR1YWwgU1BJIGNvbnRyb2xsZXIgb3Igc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGlzIHNwZWNpZmljIGhhcmR3YXJlIGluIHN0YW5kYXJkIFFFTVUvdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCB0aGUgZHJpdmVyIGNhbm5vdCBiZSBwcm9iZWQgYW5kIHRoZSBjb2RlIGlzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMjI6MzQ6MjUuMjMwMjQ2NjQ5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzE5NDMxNDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA1YzQzOWZkNmE5ZTBhZGY2NmU0NDIxYjdmZmExYzk5MDFjZGExZjc2XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgSnVsIDI4IDIyOjM0OjI0IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmZjL3RyZjc5NzBhLmMgYi9kcml2ZXJzL25mYy90cmY3OTcwYS5jXFxuaW5kZXggZjIyZTA5MTAxOWRlZS4uYmM0ZDk3NGRmZTNhYSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25mYy90cmY3OTcwYS5jXFxuKysrIGIvZHJpdmVycy9uZmMvdHJmNzk3MGEuY1xcbkBAIC0yMTI0LDE4ICsyMTI0LDE5IEBAIHN0YXRpYyBpbnQgdHJmNzk3MGFfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcXG4gXFx0XFx0fVxcbiBcXHR9XFxuIFxcbitcXHRtdXRleF9pbml0KFxcdTAwMjZ0cmYtXFx1MDAzZWxvY2spO1xcbitcXHRJTklUX0RFTEFZRURfV09SSyhcXHUwMDI2dHJmLVxcdTAwM2V0aW1lb3V0X3dvcmssIHRyZjc5NzBhX3RpbWVvdXRfd29ya19oYW5kbGVyKTtcXG4rXFxuIFxcdHJldCA9IGRldm1fcmVxdWVzdF90aHJlYWRlZF9pcnEodHJmLVxcdTAwM2VkZXYsIHNwaS1cXHUwMDNlaXJxLCBOVUxMLFxcbiBcXHRcXHRcXHRcXHRcXHR0cmY3OTcwYV9pcnEsXFxuIFxcdFxcdFxcdFxcdFxcdElSUUZfVFJJR0dFUl9SSVNJTkcgfCBJUlFGX09ORVNIT1QsXFxuIFxcdFxcdFxcdFxcdFxcdFxcXCJ0cmY3OTcwYVxcXCIsIHRyZik7XFxuIFxcdGlmIChyZXQpIHtcXG4gXFx0XFx0ZGV2X2Vycih0cmYtXFx1MDAzZWRldiwgXFxcIkNhbid0IHJlcXVlc3QgSVJRIyVkOiAlZFxcXFxuXFxcIiwgc3BpLVxcdTAwM2VpcnEsIHJldCk7XFxuK1xcdFxcdG11dGV4X2Rlc3Ryb3koXFx1MDAyNnRyZi1cXHUwMDNlbG9jayk7XFxuIFxcdFxcdHJldHVybiByZXQ7XFxuIFxcdH1cXG4gXFxuLVxcdG11dGV4X2luaXQoXFx1MDAyNnRyZi1cXHUwMDNlbG9jayk7XFxuLVxcdElOSVRfREVMQVlFRF9XT1JLKFxcdTAwMjZ0cmYtXFx1MDAzZXRpbWVvdXRfd29yaywgdHJmNzk3MGFfdGltZW91dF93b3JrX2hhbmRsZXIpO1xcbi1cXG4gXFx0dHJmLVxcdTAwM2V2aW5fcmVndWxhdG9yID0gZGV2bV9yZWd1bGF0b3JfZ2V0KFxcdTAwMjZzcGktXFx1MDAzZWRldiwgXFxcInZpblxcXCIpO1xcbiBcXHRpZiAoSVNfRVJSKHRyZi1cXHUwMDNldmluX3JlZ3VsYXRvcikpIHtcXG4gXFx0XFx0cmV0ID0gUFRSX0VSUih0cmYtXFx1MDAzZXZpbl9yZWd1bGF0b3IpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQyMjozNDoyNS43MDMxNzY3MDZaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo5Mzk4OTQyNDgwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYHRyZjc5NzBhLmNgLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFNQSSBkcml2ZXIgZm9yIHRoZSBUZXhhcyBJbnN0cnVtZW50cyBUUkY3OTcwQSBSRklEL05GQyB0cmFuc2NlaXZlci4gU2luY2UgdGhlcmUgaXMgbm8gdmlydHVhbCBTUEkgY29udHJvbGxlciBvciBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgc3BlY2lmaWMgaGFyZHdhcmUgaW4gc3RhbmRhcmQgUUVNVS92aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIHRoZSBkcml2ZXIgY2Fubm90IGJlIHByb2JlZCBhbmQgdGhlIGNvZGUgaXMgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA1YzQzOWZkNmE5ZTBhZGY2NmU0NDIxYjdmZmExYzk5MDFjZGExZjc2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdWwgMjggMjI6MzQ6MjQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25mYy90cmY3OTcwYS5jIGIvZHJpdmVycy9uZmMvdHJmNzk3MGEuY1xuaW5kZXggZjIyZTA5MTAxOWRlZS4uYmM0ZDk3NGRmZTNhYSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmZjL3RyZjc5NzBhLmNcbisrKyBiL2RyaXZlcnMvbmZjL3RyZjc5NzBhLmNcbkBAIC0yMTI0LDE4ICsyMTI0LDE5IEBAIHN0YXRpYyBpbnQgdHJmNzk3MGFfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcbiBcdFx0fVxuIFx0fVxuIFxuK1x0bXV0ZXhfaW5pdChcdTAwMjZ0cmYtXHUwMDNlbG9jayk7XG4rXHRJTklUX0RFTEFZRURfV09SSyhcdTAwMjZ0cmYtXHUwMDNldGltZW91dF93b3JrLCB0cmY3OTcwYV90aW1lb3V0X3dvcmtfaGFuZGxlcik7XG4rXG4gXHRyZXQgPSBkZXZtX3JlcXVlc3RfdGhyZWFkZWRfaXJxKHRyZi1cdTAwM2VkZXYsIHNwaS1cdTAwM2VpcnEsIE5VTEwsXG4gXHRcdFx0XHRcdHRyZjc5NzBhX2lycSxcbiBcdFx0XHRcdFx0SVJRRl9UUklHR0VSX1JJU0lORyB8IElSUUZfT05FU0hPVCxcbiBcdFx0XHRcdFx0XCJ0cmY3OTcwYVwiLCB0cmYpO1xuIFx0aWYgKHJldCkge1xuIFx0XHRkZXZfZXJyKHRyZi1cdTAwM2VkZXYsIFwiQ2FuJ3QgcmVxdWVzdCBJUlEjJWQ6ICVkXFxuXCIsIHNwaS1cdTAwM2VpcnEsIHJldCk7XG4rXHRcdG11dGV4X2Rlc3Ryb3koXHUwMDI2dHJmLVx1MDAzZWxvY2spO1xuIFx0XHRyZXR1cm4gcmV0O1xuIFx0fVxuIFxuLVx0bXV0ZXhfaW5pdChcdTAwMjZ0cmYtXHUwMDNlbG9jayk7XG4tXHRJTklUX0RFTEFZRURfV09SSyhcdTAwMjZ0cmYtXHUwMDNldGltZW91dF93b3JrLCB0cmY3OTcwYV90aW1lb3V0X3dvcmtfaGFuZGxlcik7XG4tXG4gXHR0cmYtXHUwMDNldmluX3JlZ3VsYXRvciA9IGRldm1fcmVndWxhdG9yX2dldChcdTAwMjZzcGktXHUwMDNlZGV2LCBcInZpblwiKTtcbiBcdGlmIChJU19FUlIodHJmLVx1MDAzZXZpbl9yZWd1bGF0b3IpKSB7XG4gXHRcdHJldCA9IFBUUl9FUlIodHJmLVx1MDAzZXZpbl9yZWd1bGF0b3IpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMjI6MzQ6MjUuNzAzMTg2Njc2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjM3NDczOTkwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBEcml2ZXIgUGF0Y2g6IFRSRjc5NzBBKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBwYXRjaCBmb3IgYGRyaXZlcnMvbmZjL3RyZjc5NzBhLmNgLiBUaGUgY29yZSBvZiBpdCBzZWVtcyB0byBiZSBhYm91dCBzeW5jaHJvbml6aW5nIGluaXRpYWxpemF0aW9uLiBJdCBsb29rcyBsaWtlIHRoZXkncmUgc2hpZnRpbmcgdGhlIGBtdXRleF9pbml0YCBhbmQgYElOSVRfREVMQVlFRF9XT1JLYCBjYWxscyBmb3IgdGhlIGB0cmYtXHUwMDNlbG9ja2AgbXV0ZXggYW5kIHRoZSBgdGltZW91dF93b3JrYCBkZWxheWVkIHdvcmsgcXVldWUgdG8gKmJlZm9yZSogdGhlIGBkZXZtX3JlcXVlc3RfdGhyZWFkZWRfaXJxYCBjYWxsLiBTbWFydCBtb3ZlLiBUaGlzIGFsbW9zdCBjZXJ0YWlubHkgYWRkcmVzc2VzIGEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uIHdoZXJlIHRoZSBpbnRlcnJ1cHQgaGFuZGxlciwgYHRyZjc5NzBhX2lycWAsIGNvdWxkIGdldCB0cmlnZ2VyZWQgYmVmb3JlIHRoZXNlIGNyaXRpY2FsIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzIGFyZSBmdWxseSBpbml0aWFsaXplZC4gTWFrZXMgc2Vuc2Ug4oCTIHByZXZlbnQgdGhlIGhhbmRsZXIgZnJvbSB0cnlpbmcgdG8gdXNlIGEgbXV0ZXggb3Igd29yayBxdWV1ZSB0aGF0IGRvZXNuJ3QgeWV0IGV4aXN0LiBJIGFsc28gc2VlIHRoZXkndmUgYWRkZWQgYSBgbXV0ZXhfZGVzdHJveShcdTAwMjZ0cmYtXHUwMDNlbG9jaylgIGNhbGwgaW4gdGhlIGVycm9yIHBhdGggb2YgYGRldm1fcmVxdWVzdF90aHJlYWRlZF9pcnFgIGZvciBjbGVhbnVwLCB3aGljaCBpcyBnb29kIHByYWN0aWNlLlxuXG5Ob3csIG15IGV4cGVydCBTcGlkZXktc2Vuc2UgaXMgdGluZ2xpbmcuIExldCdzIHNlZSBob3cgcmVsZXZhbnQgdGhpcyBpcyBpbiBhIHZpcnR1YWxpemVkIG9yIGZ1enppbmcgY29udGV4dC4gVGhpcyBpcyBhbiBTUEkgZHJpdmVyLCByaWdodD8gWWVhaCwgYHN0cnVjdCBzcGlfZGV2aWNlICpzcGlgLiBPa2F5LCBzbyBTUEkgZHJpdmVycyBhcmUgdHlwaWNhbGx5IGhhcmR3YXJlLXNwZWNpZmljLCB1c3VhbGx5IGJvdW5kIHRvIHNwZWNpZmljIGhhcmR3YXJlIG5vZGVzIGluIGRldmljZSB0cmVlIG9yIEFDUEkuIFRoZXkncmUgZ2VuZXJhbGx5ICpub3QqIGVhc2lseSByZWFjaGFibGUgd2l0aG91dCBzcGVjaWFsIGNvbmZpZ3VyYXRpb24gb3IgZW11bGF0aW9uLiBJIGRvdWJ0IGl0IHdvdWxkIGJlIHJlYWNoYWJsZSBpbiBhIHN0YW5kYXJkIHZpcnR1YWwgZW52aXJvbm1lbnQgdW5sZXNzIHRoZXJlJ3MgYSBzcGVjaWZpYyBTUEkgY29udHJvbGxlciBlbXVsYXRlZC4gTWF5YmUgc29tZSBzb3J0IG9mIGR1bW15IFNQSSBjb250cm9sbGVyIGNvdWxkIGJlIHVzZWQsIG9yIHNvbWV0aGluZyBzaW1pbGFyLCBidXQgdGhhdCB3b3VsZCBuZWVkIHRvIGJlIGluIHBsYWNlLlxuXG5XYWl0LCBkaWQgSSBzZWUgc29tZXRoaW5nIGFib3V0IFN5emthbGxlciBhbmQgU1BJIHN1cHBvcnQgcmVjZW50bHk/IEkgKnRob3VnaHQqIEkgc2F3IHNvbWV0aGluZy4gSXMgdGhlcmUgYSB3YXkgd2UgY2FuIHVzZSBgdmhjaWAgb3Igc29tZXRoaW5nIHNpbWlsYXI/IE5vLCBTUEkgZnV6emluZyBpcyBub3Qgc3RyYWlnaHRmb3J3YXJkLiBIYW5nIG9uLi4uIGlzbid0IHRoZXJlIHNvbWUgcmVjZW50IFNQSSBmdXp6aW5nIHN1cHBvcnQ/IEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIHRoYXQuIExldCBtZSBxdWlja2x5IHNlYXJjaCB0aGUga2VybmVsIHNvdXJjZSBmb3IgXCJ0cmY3OTcwYVwiIGFuZCBzZWUgaWYgdGhlcmUncyBhbnkgcmVsZXZhbnQgY29udGV4dCBJIG1pZ2h0IGJlIG1pc3NpbmcuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI4MCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5NSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDIyOjM0OjMyLjA3Nzk1NjI0M1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MjcyMDE1NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0cmY3OTcwYVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25mYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA3ODQgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvbmZjL0tjb25maWc9OT1jb25maWcgTkZDX1RSRjc5NzBBXFxuLS1cXG5kcml2ZXJzL25mYy9LY29uZmlnLTE4LVxcdCAgc2F5IE0gIHRvIGNvbXBpbGUgaXQgYXMgYSBtb2R1bGUuIFRoZSBtb2R1bGUgd2lsbCBiZSBjYWxsZWRcXG5kcml2ZXJzL25mYy9LY29uZmlnOjE5OlxcdCAgdHJmNzk3MGEua28uXFxuZHJpdmVycy9uZmMvS2NvbmZpZy0yMC1cXG4tLVxcbmRyaXZlcnMvbmZjL01ha2VmaWxlPTEzPW9iai0kKENPTkZJR19ORkNfTVJWTClcXHRcXHQrPSBuZmNtcnZsL1xcbmRyaXZlcnMvbmZjL01ha2VmaWxlOjE0Om9iai0kKENPTkZJR19ORkNfVFJGNzk3MEEpXFx0Kz0gdHJmNzk3MGEub1xcbmRyaXZlcnMvbmZjL01ha2VmaWxlLTE1LW9iai0kKENPTkZJR19ORkNfU1QyMU5GQ0EpICBcXHQrPSBzdDIxbmZjYS9cXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMjctXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoyODovKiBUaGVyZSBhcmUgMyB3YXlzIHRoZSBob3N0IGNhbiBjb21tdW5pY2F0ZSB3aXRoIHRoZSB0cmY3OTcwYTpcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTI5LSAqIHBhcmFsbGVsIG1vZGUsIFNQSSB3aXRoIFNsYXZlIFNlbGVjdCAoU1MpIG1vZGUsIGFuZCBTUEkgd2l0aG91dFxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0zMS0gKlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MzI6ICogVGhlIHRyZjc5NzBhIGlzIHZlcnkgdGltaW5nIHNlbnNpdGl2ZSBhbmQgdGhlIFZJTiwgRU4yLCBhbmQgRU5cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTMzLSAqIHBpbnMgbXVzdCBhc3NlcnRlZCBpbiB0aGF0IG9yZGVyIGFuZCB3aXRoIHNwZWNpZmljIGRlbGF5cyBpbiBiZXR3ZWVuLlxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0zNS0gKiBjb25maXJtZWQgdG8gd29yayB3aXRoIHRoaXMgZHJpdmVyLiAgVGhlcmUgaXMgYSBidWcgd2l0aCB0aGUgY3VycmVudFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MzY6ICogdmVyc2lvbiBvZiB0aGUgdHJmNzk3MGEgdGhhdCByZXF1aXJlcyB0aGF0IEVOMiByZW1haW4gbG93IG5vIG1hdHRlclxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMzctICogd2hhdC4gIElmIGl0IGdvZXMgaGlnaCwgaXQgd2lsbCBnZW5lcmF0ZSBhbiBSRiBmaWVsZCBldmVuIHdoZW4gaW5cXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMzktICogd2hlbiBFTjIgaXMgbGVmdCBsb3cuICBUaGUgJ2VuMi1yZi1xdWlyaycgZGV2aWNlIHRyZWUgcHJvcGVydHlcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjQwOiAqIGluZGljYXRlcyB0aGF0IHRyZjc5NzBhIGN1cnJlbnRseSBiZWluZyB1c2VkIGhhcyB0aGUgZXJyYXR1bSBhbmRcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTQxLSAqIHRoYXQgRU4yIG11c3QgYmUga2VwdCBsb3cuXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTQ0LSAqIFRpbWVvdXRzIGFyZSByZXF1aXJlZCBzbyB0aGluZ3MgZG9uJ3QgaGFuZyB3aGVuIHRoZXJlIGlzIG5vIHJlc3BvbnNlXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo0NTogKiBmcm9tIHRoZSB0cmY3OTcwYSAob3IgdGFnKS4gIFVzaW5nIHRoaXMgbWVjaGFuaXNtIGNyZWF0ZXMgYSByYWNlIHdpdGhcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTQ2LSAqIGludGVycnVwdHMsIGhvd2V2ZXIuICBUaGF0IGlzLCBhbiBpbnRlcnJ1cHQgYW5kIGEgdGltZW91dCBjb3VsZCBvY2N1clxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02MC0gKiB0aGUgZW50aXJlIGFudGljb2xsaXNpb24gcHJvY2VkdXJlIGFnYWluIGJ1dCB0aGUgZGlnaXRhbCBsYXllciBkb2Vzbid0XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo2MTogKiBzdXBwb3J0IHRoYXQuICBTbywgaWYgYW4gYWJvcnQgaXMgcmVjZWl2ZWQgYmVmb3JlIHRyZjc5NzBhX3NlbmRfY21kKClcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTYyLSAqIGhhcyBzZW50IHRoZSBjb21tYW5kIHRvIHRoZSB0YWcsIGl0IHNpbXBseSByZXR1cm5zIC1FQ0FOQ0VMRUQuICBJZiB0aGVcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTYtICogd2hlbiB0aGUgZnJhbWluZyBpcyAnTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX1QyVCcuICBUaGlzIGlzIGRvbmUgYnlcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjk3OiAqIHRoZSB0cmY3OTcwYV9wZXJfY21kX2NvbmZpZygpIHJvdXRpbmUuXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05OC0gKlxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDQtLyogUXVpcmtzICovXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNDU6LyogRXJyYXR1bTogV2hlbiByZWFkaW5nIElSUSBTdGF0dXMgcmVnaXN0ZXIgb24gdHJmNzk3MGEsIHdlIG11c3QgaXNzdWUgYVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQ2LSAqIHJlYWQgY29udGludW91cyBjb21tYW5kIGZvciBJUlEgU3RhdHVzIGFuZCBDb2xsaXNpb24gUG9zaXRpb24gcmVnaXN0ZXJzLlxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy00MTUtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo0MTY6ZW51bSB0cmY3OTcwYV9zdGF0ZSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy00MTctXFx0VFJGNzk3MEFfU1RfUFdSX09GRixcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDI5LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NDMwOnN0cnVjdCB0cmY3OTcwYSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo0MzE6XFx0ZW51bSB0cmY3OTcwYV9zdGF0ZVxcdFxcdHN0YXRlO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDMyLVxcdHN0cnVjdCBkZXZpY2VcXHRcXHRcXHQqZGV2O1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy00NjUtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo0NjY6c3RhdGljIGludCB0cmY3OTcwYV9jbWQoc3RydWN0IHRyZjc5NzBhICp0cmYsIHU4IG9wY29kZSlcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTQ2Ny17XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTQ3OS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjQ4MDpzdGF0aWMgaW50IHRyZjc5NzBhX3JlYWQoc3RydWN0IHRyZjc5NzBhICp0cmYsIHU4IHJlZywgdTggKnZhbClcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTQ4MS17XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTQ5NC1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjQ5NTpzdGF0aWMgaW50IHRyZjc5NzBhX3JlYWRfY29udChzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgdTggcmVnLCB1OCAqYnVmLFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDk2LVxcdFxcdFxcdCAgICAgIHNpemVfdCBsZW4pXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTUyMy1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjUyNDpzdGF0aWMgaW50IHRyZjc5NzBhX3dyaXRlKHN0cnVjdCB0cmY3OTcwYSAqdHJmLCB1OCByZWcsIHU4IHZhbClcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTUyNS17XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTUzOC1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjUzOTpzdGF0aWMgaW50IHRyZjc5NzBhX3JlYWRfaXJxc3RhdHVzKHN0cnVjdCB0cmY3OTcwYSAqdHJmLCB1OCAqc3RhdHVzKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTQwLXtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTYyLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NTYzOnN0YXRpYyBpbnQgdHJmNzk3MGFfdXBkYXRlX3J4X2dhaW5fcmVkdWN0aW9uKHN0cnVjdCB0cmY3OTcwYSAqdHJmKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTY0LXtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTcwLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NTcxOlxcdHJldCA9IHRyZjc5NzBhX3JlYWQodHJmLCBUUkY3OTcwQV9SWF9TUEVDSUFMX1NFVFRJTkdTLCBcXHUwMDI2cmVnKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTU3Mi1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01NzYtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo1Nzc6XFx0cmV0ID0gdHJmNzk3MGFfd3JpdGUodHJmLCBUUkY3OTcwQV9SWF9TUEVDSUFMX1NFVFRJTkdTLCByZWcpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTc4LVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01ODEtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo1ODI6c3RhdGljIGludCB0cmY3OTcwYV91cGRhdGVfaXNvX2N0cmxfcmVnaXN0ZXIoc3RydWN0IHRyZjc5NzBhICp0cmYsIHU4IGlzb19jdHJsKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTgzLXtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTg1LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NTg2OlxcdHJldCA9IHRyZjc5NzBhX3dyaXRlKHRyZiwgVFJGNzk3MEFfSVNPX0NUUkwsIGlzb19jdHJsKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTU4Ny1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01OTItXFx0ICovXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo1OTM6XFx0cmV0ID0gdHJmNzk3MGFfdXBkYXRlX3J4X2dhaW5fcmVkdWN0aW9uKHRyZik7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01OTQtXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTU5Ny1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjU5ODpzdGF0aWMgaW50IHRyZjc5NzBhX3JlYWRfdGFyZ2V0X3Byb3RvKHN0cnVjdCB0cmY3OTcwYSAqdHJmLCB1OCAqdGFyZ2V0X3Byb3RvKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTk5LXtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjE2LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NjE3OnN0YXRpYyBpbnQgdHJmNzk3MGFfbW9kZV9kZXRlY3Qoc3RydWN0IHRyZjc5NzBhICp0cmYsIHU4ICpyZl90ZWNoKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjE4LXtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjIxLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NjIyOlxcdHJldCA9IHRyZjc5NzBhX3JlYWRfdGFyZ2V0X3Byb3RvKHRyZiwgXFx1MDAyNnRhcmdldF9wcm90byk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02MjMtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjQ5LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NjUwOnN0YXRpYyB2b2lkIHRyZjc5NzBhX3NlbmRfdXBzdHJlYW0oc3RydWN0IHRyZjc5NzBhICp0cmYpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02NTEte1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02NTUtXFx0aWYgKHRyZi1cXHUwMDNlcnhfc2tiIFxcdTAwMjZcXHUwMDI2ICFJU19FUlIodHJmLVxcdTAwM2VyeF9za2IpIFxcdTAwMjZcXHUwMDI2ICF0cmYtXFx1MDAzZWFib3J0aW5nKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NjU2OlxcdFxcdHByaW50X2hleF9kdW1wX2RlYnVnKFxcXCJ0cmY3OTcwYSByeCBkYXRhOiBcXFwiLCBEVU1QX1BSRUZJWF9OT05FLFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjU3LVxcdFxcdFxcdFxcdCAgICAgMTYsIDEsIHRyZi1cXHUwMDNlcnhfc2tiLVxcdTAwM2VkYXRhLCB0cmYtXFx1MDAzZXJ4X3NrYi1cXHUwMDNlbGVuLFxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02NzctXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo2Nzg6c3RhdGljIHZvaWQgdHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0oc3RydWN0IHRyZjc5NzBhICp0cmYsIGludCBlcnJubylcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTY3OS17XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTY4Ni1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjY4NzpcXHR0cmY3OTcwYV9zZW5kX3Vwc3RyZWFtKHRyZik7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02ODgtfVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjg5LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NjkwOnN0YXRpYyBpbnQgdHJmNzk3MGFfdHJhbnNtaXQoc3RydWN0IHRyZjc5NzBhICp0cmYsIHN0cnVjdCBza19idWZmICpza2IsXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02OTEtXFx0XFx0XFx0ICAgICB1bnNpZ25lZCBpbnQgbGVuLCBjb25zdCB1OCAqcHJlZml4LFxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02OTgtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo2OTk6XFx0cHJpbnRfaGV4X2R1bXBfZGVidWcoXFxcInRyZjc5NzBhIHR4IGRhdGE6IFxcXCIsIERVTVBfUFJFRklYX05PTkUsXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03MDAtXFx0XFx0XFx0ICAgICAxNiwgMSwgc2tiLVxcdTAwM2VkYXRhLCBsZW4sIGZhbHNlKTtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzQ3LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NzQ4OnN0YXRpYyB2b2lkIHRyZjc5NzBhX2ZpbGxfZmlmbyhzdHJ1Y3QgdHJmNzk3MGEgKnRyZilcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTc0OS17XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTc1NS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjc1NjpcXHRyZXQgPSB0cmY3OTcwYV9yZWFkKHRyZiwgVFJGNzk3MEFfRklGT19TVEFUVVMsIFxcdTAwMjZmaWZvX2J5dGVzKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTc1Ny1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo3NTg6XFx0XFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCByZXQpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzU5LVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzc3LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6Nzc4OlxcdHJldCA9IHRyZjc5NzBhX3RyYW5zbWl0KHRyZiwgc2tiLCBsZW4sIFxcdTAwMjZwcmVmaXgsIHNpemVvZihwcmVmaXgpKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTc3OS1cXHRpZiAocmV0KVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NzgwOlxcdFxcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgcmV0KTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTc4MS19XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03ODItXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo3ODM6c3RhdGljIHZvaWQgdHJmNzk3MGFfZHJhaW5fZmlmbyhzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgdTggc3RhdHVzKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzg0LXtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzg5LVxcdGlmIChzdGF0dXMgXFx1MDAyNiBUUkY3OTcwQV9JUlFfU1RBVFVTX0VSUk9SKSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo3OTA6XFx0XFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCAtRUlPKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTc5MS1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTc5My1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjc5NDpcXHRyZXQgPSB0cmY3OTcwYV9yZWFkKHRyZiwgVFJGNzk3MEFfRklGT19TVEFUVVMsIFxcdTAwMjZmaWZvX2J5dGVzKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTc5NS1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo3OTY6XFx0XFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCByZXQpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzk3LVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODEyLVxcdFxcdGlmICghc2tiKSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo4MTM6XFx0XFx0XFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCAtRU5PTUVNKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTgxNC1cXHRcXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTgyMC1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjgyMTpcXHRyZXQgPSB0cmY3OTcwYV9yZWFkX2NvbnQodHJmLCBUUkY3OTcwQV9GSUZPX0lPX1JFR0lTVEVSLFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODIyLVxcdFxcdFxcdFxcdCBza2JfcHV0KHNrYiwgZmlmb19ieXRlcyksIGZpZm9fYnl0ZXMpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODIzLVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjgyNDpcXHRcXHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIHJldCk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04MjUtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04MzUtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo4MzY6XFx0XFx0cmV0ID0gdHJmNzk3MGFfcmVhZCh0cmYsIFRSRjc5NzBBX0ZJRk9fU1RBVFVTLCBcXHUwMDI2Zmlmb19ieXRlcyk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04MzctXFx0XFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6ODM4OlxcdFxcdFxcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgcmV0KTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTgzOS1cXHRcXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTg0NS1cXHRcXHQgKiB0aGUgaWYgc3RtdCBiZWxvdyBkb2Vzbid0IGZpcmUgYW5kIHRoZSBkcml2ZXIgd2lsbCB3YWl0XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo4NDY6XFx0XFx0ICogZm9yIHRoZSB0cmY3OTcwYSB0byBnZW5lcmF0ZSBhbm90aGVyIFJYIGludGVycnVwdC5cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTg0Ny1cXHRcXHQgKi9cXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODUzLVxcdGlmIChzdGF0dXMgPT0gVFJGNzk3MEFfSVJRX1NUQVRVU19TUlgpIHtcXHQvKiBSZWNlaXZlIGNvbXBsZXRlICovXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo4NTQ6XFx0XFx0dHJmNzk3MGFfc2VuZF91cHN0cmVhbSh0cmYpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODU1LVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODY0LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6ODY1OnN0YXRpYyBpcnFyZXR1cm5fdCB0cmY3OTcwYV9pcnEoaW50IGlycSwgdm9pZCAqZGV2X2lkKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODY2LXtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjg2NzpcXHRzdHJ1Y3QgdHJmNzk3MGEgKnRyZiA9IGRldl9pZDtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTg2OC1cXHRpbnQgcmV0O1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04NzctXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo4Nzg6XFx0cmV0ID0gdHJmNzk3MGFfcmVhZF9pcnFzdGF0dXModHJmLCBcXHUwMDI2c3RhdHVzKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTg3OS1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTg5Ni1cXHRcXHQgKiB0dXJuIG9mZiB0aGUgcmVjZWl2ZXIgdG8gYXZvaWQgdW5uZWNlc3NhcnkgaW50ZXJydXB0cy5cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjg5NzpcXHRcXHQgKiBJdCB3aWxsIGJlIHR1cm5lZCBiYWNrIG9uIGluIHRyZjc5NzBhX3NlbmRfY21kKCkgd2hlblxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODk4LVxcdFxcdCAqIHRoZSBuZXh0IGNvbW1hbmQgaXMgaXNzdWVkLlxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05MDAtXFx0XFx0aWYgKHRyZi1cXHUwMDNlaXNfaW5pdGlhdG9yIFxcdTAwMjZcXHUwMDI2IChzdGF0dXMgXFx1MDAyNiBUUkY3OTcwQV9JUlFfU1RBVFVTX0VSUk9SKSkge1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTAxOlxcdFxcdFxcdHRyZjc5NzBhX2NtZCh0cmYsIFRSRjc5NzBBX0NNRF9CTE9DS19SWCk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05MDItXFx0XFx0XFx0dHJmLVxcdTAwM2VzdGF0ZSA9IFRSRjc5NzBBX1NUX0lETEVfUlhfQkxPQ0tFRDtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTA0LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTA1OlxcdFxcdHRyZjc5NzBhX2NtZCh0cmYsIFRSRjc5NzBBX0NNRF9GSUZPX1JFU0VUKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkwNi1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTEwLVxcdFxcdFxcdCAgICAhY2FuY2VsX2RlbGF5ZWRfd29yayhcXHUwMDI2dHJmLVxcdTAwM2V0aW1lb3V0X3dvcmspO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTExOlxcdFxcdFxcdHRyZjc5NzBhX2ZpbGxfZmlmbyh0cmYpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTEyLVxcdFxcdH0gZWxzZSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5MTM6XFx0XFx0XFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCAtRUlPKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkxNC1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkyMC1cXHRcXHRcXHQgICAgIWNhbmNlbF9kZWxheWVkX3dvcmsoXFx1MDAyNnRyZi1cXHUwMDNldGltZW91dF93b3JrKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjkyMTpcXHRcXHRcXHR0cmY3OTcwYV9kcmFpbl9maWZvKHRyZiwgc3RhdHVzKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkyMi1cXHRcXHR9IGVsc2UgaWYgKHN0YXR1cyBcXHUwMDI2IFRSRjc5NzBBX0lSUV9TVEFUVVNfRklGTykge1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTIzOlxcdFxcdFxcdHJldCA9IHRyZjc5NzBhX3JlYWQodHJmLCBUUkY3OTcwQV9GSUZPX1NUQVRVUyxcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkyNC1cXHRcXHRcXHRcXHRcXHQgICAgXFx1MDAyNmZpZm9fYnl0ZXMpO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05MjgtXFx0XFx0XFx0aWYgKHJldClcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjkyOTpcXHRcXHRcXHRcXHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIHJldCk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05MzAtXFx0XFx0XFx0ZWxzZSBpZiAoIWZpZm9fYnl0ZXMpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5MzE6XFx0XFx0XFx0XFx0dHJmNzk3MGFfY21kKHRyZiwgVFJGNzk3MEFfQ01EX0ZJRk9fUkVTRVQpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTMyLVxcdFxcdH0gZWxzZSBpZiAoKHN0YXR1cyA9PSBUUkY3OTcwQV9JUlFfU1RBVFVTX1RYKSB8fFxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05MzUtXFx0XFx0XFx0XFx0XFx0VFJGNzk3MEFfSVJRX1NUQVRVU19ORkNfUkYpKSkpIHtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjkzNjpcXHRcXHRcXHR0cmY3OTcwYV9jbWQodHJmLCBUUkY3OTcwQV9DTURfRklGT19SRVNFVCk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05MzctXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk0MS1cXHRcXHRcXHRcXHR0cmYtXFx1MDAzZXJ4X3NrYiA9IEVSUl9QVFIoMCk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5NDI6XFx0XFx0XFx0XFx0dHJmNzk3MGFfc2VuZF91cHN0cmVhbSh0cmYpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTQzLVxcdFxcdFxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05NjItXFx0XFx0XFx0Y2FzZSBORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfQU5USUNPTF9DT01QTEVURTpcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjk2MzpcXHRcXHRcXHRcXHRyZXQgPSB0cmY3OTcwYV93cml0ZSh0cmYsXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05NjQtXFx0XFx0XFx0XFx0XFx0IFRSRjc5NzBBX1NQRUNJQUxfRkNOX1JFRzEsXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk3Ni1cXHRcXHRcXHRpZiAoaXNvX2N0cmwgIT0gdHJmLVxcdTAwM2Vpc29fY3RybCkge1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTc3OlxcdFxcdFxcdFxcdHJldCA9IHRyZjc5NzBhX3VwZGF0ZV9pc29fY3RybF9yZWdpc3Rlcih0cmYsIGlzb19jdHJsKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk3OC1cXHRcXHRcXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05ODMtXFx0XFx0fSBlbHNlIHtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjk4NDpcXHRcXHRcXHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIC1FSU8pO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTg1LVxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTg4LVxcdFxcdGlmIChzdGF0dXMgIT0gVFJGNzk3MEFfSVJRX1NUQVRVU19UWClcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjk4OTpcXHRcXHRcXHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIC1FSU8pO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTkwLVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05OTQtXFx0XFx0XFx0ICAgICFjYW5jZWxfZGVsYXllZF93b3JrKFxcdTAwMjZ0cmYtXFx1MDAzZXRpbWVvdXRfd29yayk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5OTU6XFx0XFx0XFx0dHJmNzk3MGFfZHJhaW5fZmlmbyh0cmYsIHN0YXR1cyk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05OTYtXFx0XFx0fSBlbHNlIGlmICghKHN0YXR1cyBcXHUwMDI2IFRSRjc5NzBBX0lSUV9TVEFUVVNfTkZDX1JGKSkge1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTk3OlxcdFxcdFxcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgLUVJTyk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05OTgtXFx0XFx0fVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDA0LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTAwNTpcXHRcXHRcXHRyZXQgPSB0cmY3OTcwYV9tb2RlX2RldGVjdCh0cmYsIFxcdTAwMjZ0cmYtXFx1MDAzZW1kX3JmX3RlY2gpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAwNi1cXHRcXHRcXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDA3OlxcdFxcdFxcdFxcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgcmV0KTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwMDgtXFx0XFx0XFx0fSBlbHNlIHtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwMDktXFx0XFx0XFx0XFx0dHJmLVxcdTAwM2VzdGF0ZSA9IFRSRjc5NzBBX1NUX0xJU1RFTklORztcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwMTA6XFx0XFx0XFx0XFx0dHJmNzk3MGFfZHJhaW5fZmlmbyh0cmYsIHN0YXR1cyk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDExLVxcdFxcdFxcdH1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwMTItXFx0XFx0fSBlbHNlIGlmICghKHN0YXR1cyBcXHUwMDI2IFRSRjc5NzBBX0lSUV9TVEFUVVNfTkZDX1JGKSkge1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTAxMzpcXHRcXHRcXHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIC1FSU8pO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAxNC1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwMjUtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDI2OnN0YXRpYyB2b2lkIHRyZjc5NzBhX2lzc3VlX2VvZihzdHJ1Y3QgdHJmNzk3MGEgKnRyZilcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwMjcte1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDMxLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTAzMjpcXHRyZXQgPSB0cmY3OTcwYV9jbWQodHJmLCBUUkY3OTcwQV9DTURfRklGT19SRVNFVCk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDMzLVxcdGlmIChyZXQpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDM0OlxcdFxcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgcmV0KTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwMzUtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDM2OlxcdHJldCA9IHRyZjc5NzBhX2NtZCh0cmYsIFRSRjc5NzBBX0NNRF9FT0YpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAzNy1cXHRpZiAocmV0KVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTAzODpcXHRcXHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIHJldCk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDM5LVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDQ4LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTA0OTpzdGF0aWMgdm9pZCB0cmY3OTcwYV90aW1lb3V0X3dvcmtfaGFuZGxlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDUwLXtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwNTE6XFx0c3RydWN0IHRyZjc5NzBhICp0cmYgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IHRyZjc5NzBhLFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA1Mi1cXHRcXHRcXHRcXHRcXHQgICAgdGltZW91dF93b3JrLndvcmspO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDYxLVxcdGVsc2UgaWYgKHRyZi1cXHUwMDNlc3RhdGUgPT0gVFJGNzk3MEFfU1RfV0FJVF9GT1JfUlhfREFUQV9DT05UKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTA2MjpcXHRcXHR0cmY3OTcwYV9kcmFpbl9maWZvKHRyZiwgVFJGNzk3MEFfSVJRX1NUQVRVU19TUlgpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA2My1cXHRlbHNlIGlmICh0cmYtXFx1MDAzZXN0YXRlID09IFRSRjc5NzBBX1NUX1dBSVRfVE9fSVNTVUVfRU9GKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTA2NDpcXHRcXHR0cmY3OTcwYV9pc3N1ZV9lb2YodHJmKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwNjUtXFx0ZWxzZVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTA2NjpcXHRcXHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIC1FVElNRURPVVQpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA2Ny1cXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA3MC1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwNzE6c3RhdGljIGludCB0cmY3OTcwYV9pbml0KHN0cnVjdCB0cmY3OTcwYSAqdHJmKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA3Mi17XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwNzYtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDc3OlxcdHJldCA9IHRyZjc5NzBhX2NtZCh0cmYsIFRSRjc5NzBBX0NNRF9TT0ZUX0lOSVQpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA3OC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDgxLVxcdC8qIFNldCB0aGUgZ2FpbiByZWR1Y3Rpb24gYWZ0ZXIgc29mdCBpbml0ICovXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDgyOlxcdHJldCA9IHRyZjc5NzBhX3VwZGF0ZV9yeF9nYWluX3JlZHVjdGlvbih0cmYpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA4My1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDg1LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTA4NjpcXHRyZXQgPSB0cmY3OTcwYV9jbWQodHJmLCBUUkY3OTcwQV9DTURfSURMRSk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDg3LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwODktXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDkwOlxcdHJldCA9IHRyZjc5NzBhX3dyaXRlKHRyZiwgVFJGNzk3MEFfUkVHX0lPX0NUUkwsXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDkxLVxcdFxcdFxcdCAgICAgdHJmLVxcdTAwM2Vpb19jdHJsIHwgVFJGNzk3MEFfUkVHX0lPX0NUUkxfVlJTKDB4MSkpO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDk0LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTA5NTpcXHRyZXQgPSB0cmY3OTcwYV93cml0ZSh0cmYsIFRSRjc5NzBBX05GQ19UQVJHRVRfTEVWRUwsIDApO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA5Ni1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTAyLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTEwMzpcXHRyZXQgPSB0cmY3OTcwYV93cml0ZSh0cmYsIFRSRjc5NzBBX01PRFVMQVRPUl9TWVNfQ0xLX0NUUkwsXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTA0LVxcdFxcdFxcdCAgICAgdHJmLVxcdTAwM2Vtb2R1bGF0b3Jfc3lzX2Nsa19jdHJsKTtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTEwNy1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjExMDg6XFx0cmV0ID0gdHJmNzk3MGFfd3JpdGUodHJmLCBUUkY3OTcwQV9BREpVVEFCTEVfRklGT19JUlFfTEVWRUxTLFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTEwOS1cXHRcXHRcXHQgICAgIFRSRjc5NzBBX0FESlVUQUJMRV9GSUZPX0lSUV9MRVZFTFNfV0xIXzk2IHxcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTExMy1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjExMTQ6XFx0cmV0ID0gdHJmNzk3MGFfd3JpdGUodHJmLCBUUkY3OTcwQV9TUEVDSUFMX0ZDTl9SRUcxLCAwKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExMTUtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTEyNy1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjExMjg6c3RhdGljIHZvaWQgdHJmNzk3MGFfc3dpdGNoX3JmX29mZihzdHJ1Y3QgdHJmNzk3MGEgKnRyZilcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExMjkte1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTM3LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTEzODpcXHR0cmY3OTcwYV93cml0ZSh0cmYsIFRSRjc5NzBBX0NISVBfU1RBVFVTX0NUUkwsIHRyZi1cXHUwMDNlY2hpcF9zdGF0dXNfY3RybCk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTM5LVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTQ2LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTE0NzpzdGF0aWMgaW50IHRyZjc5NzBhX3N3aXRjaF9yZl9vbihzdHJ1Y3QgdHJmNzk3MGEgKnRyZilcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExNDgte1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTYwLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTE2MTpcXHRyZXQgPSB0cmY3OTcwYV9pbml0KHRyZik7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTYyLVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTE3MS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjExNzI6c3RhdGljIGludCB0cmY3OTcwYV9zd2l0Y2hfcmYoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgYm9vbCBvbilcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExNzMte1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTE3NDpcXHRzdHJ1Y3QgdHJmNzk3MGEgKnRyZiA9IG5mY19kaWdpdGFsX2dldF9kcnZkYXRhKGRkZXYpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTE3NS1cXHRpbnQgcmV0ID0gMDtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTE4NC1cXHRcXHRjYXNlIFRSRjc5NzBBX1NUX1JGX09GRjpcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjExODU6XFx0XFx0XFx0cmV0ID0gdHJmNzk3MGFfc3dpdGNoX3JmX29uKHRyZik7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTg2LVxcdFxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTkyLVxcdFxcdFxcdFxcdF9fZnVuY19fLCB0cmYtXFx1MDAzZXN0YXRlLCBvbik7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMTkzOlxcdFxcdFxcdHRyZjc5NzBhX3N3aXRjaF9yZl9vZmYodHJmKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExOTQtXFx0XFx0XFx0cmV0ID0gLUVJTlZBTDtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTIwOS1cXHRcXHRjYXNlIFRSRjc5NzBBX1NUX1dBSVRfRk9SX1JYX0RBVEFfQ09OVDpcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEyMTA6XFx0XFx0XFx0dHJmNzk3MGFfc3dpdGNoX3JmX29mZih0cmYpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTIxMS1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyMTctXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMjE4OnN0YXRpYyBpbnQgdHJmNzk3MGFfaW5fY29uZmlnX3JmX3RlY2goc3RydWN0IHRyZjc5NzBhICp0cmYsIGludCB0ZWNoKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTIxOS17XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyNjgtXFx0ICogUFNMIHNlcXVlbmNlIChpbmRpY2F0ZWQgYnkgJ3RyZi1cXHUwMDNlaXNvX2N0cmwgPT0gMHhmZicgZnJvbVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTI2OTpcXHQgKiB0cmY3OTcwYV9pbml0KCkpLCBjbGVhciB0aGUgTkZDIFRhcmdldCBEZXRlY3Rpb24gTGV2ZWwgcmVnaXN0ZXJcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyNzAtXFx0ICogZHVlIHRvIGVycmF0dW0uXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyNzItXFx0aWYgKHRyZi1cXHUwMDNlaXNvX2N0cmwgPT0gMHhmZilcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEyNzM6XFx0XFx0cmV0ID0gdHJmNzk3MGFfd3JpdGUodHJmLCBUUkY3OTcwQV9ORkNfVEFSR0VUX0xFVkVMLCAwKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyNzQtXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyNzctXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMjc4OnN0YXRpYyBpbnQgdHJmNzk3MGFfaXNfcmZfZmllbGQoc3RydWN0IHRyZjc5NzBhICp0cmYsIGJvb2wgKmlzX3JmX2ZpZWxkKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI3OS17XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyODItXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMjgzOlxcdHJldCA9IHRyZjc5NzBhX3dyaXRlKHRyZiwgVFJGNzk3MEFfQ0hJUF9TVEFUVVNfQ1RSTCxcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyODQtXFx0XFx0XFx0ICAgICB0cmYtXFx1MDAzZWNoaXBfc3RhdHVzX2N0cmwgfFxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjg4LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTI4OTpcXHRyZXQgPSB0cmY3OTcwYV9jbWQodHJmLCBUUkY3OTcwQV9DTURfVEVTVF9FWFRfUkYpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI5MC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjk0LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTI5NTpcXHRyZXQgPSB0cmY3OTcwYV9yZWFkKHRyZiwgVFJGNzk3MEFfUlNTSV9PU0NfU1RBVFVTLCBcXHUwMDI2cnNzaSk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjk2LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyOTgtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMjk5OlxcdHJldCA9IHRyZjc5NzBhX3dyaXRlKHRyZiwgVFJGNzk3MEFfQ0hJUF9TVEFUVVNfQ1RSTCxcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzMDAtXFx0XFx0XFx0ICAgICB0cmYtXFx1MDAzZWNoaXBfc3RhdHVzX2N0cmwpO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzExLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTMxMjpzdGF0aWMgaW50IHRyZjc5NzBhX2luX2NvbmZpZ19mcmFtaW5nKHN0cnVjdCB0cmY3OTcwYSAqdHJmLCBpbnQgZnJhbWluZylcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzMTMte1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzUwLVxcdGlmICghKHRyZi1cXHUwMDNlY2hpcF9zdGF0dXNfY3RybCBcXHUwMDI2IFRSRjc5NzBBX0NISVBfU1RBVFVTX1JGX09OKSkge1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTM1MTpcXHRcXHRyZXQgPSB0cmY3OTcwYV9pc19yZl9maWVsZCh0cmYsIFxcdTAwMjZpc19yZl9maWVsZCk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzUyLVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzNTktXFx0aWYgKGlzb19jdHJsICE9IHRyZi1cXHUwMDNlaXNvX2N0cmwpIHtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEzNjA6XFx0XFx0cmV0ID0gdHJmNzk3MGFfdXBkYXRlX2lzb19jdHJsX3JlZ2lzdGVyKHRyZiwgaXNvX2N0cmwpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTM2MS1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzY1LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTM2NjpcXHRcXHRyZXQgPSB0cmY3OTcwYV93cml0ZSh0cmYsIFRSRjc5NzBBX01PRFVMQVRPUl9TWVNfQ0xLX0NUUkwsXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzY3LVxcdFxcdFxcdFxcdCAgICAgdHJmLVxcdTAwM2Vtb2R1bGF0b3Jfc3lzX2Nsa19jdHJsKTtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTM3Mi1cXHRpZiAoISh0cmYtXFx1MDAzZWNoaXBfc3RhdHVzX2N0cmwgXFx1MDAyNiBUUkY3OTcwQV9DSElQX1NUQVRVU19SRl9PTikpIHtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEzNzM6XFx0XFx0cmV0ID0gdHJmNzk3MGFfd3JpdGUodHJmLCBUUkY3OTcwQV9DSElQX1NUQVRVU19DVFJMLFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTM3NC1cXHRcXHRcXHRcXHQgICAgIHRyZi1cXHUwMDNlY2hpcF9zdGF0dXNfY3RybCB8XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzODYtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMzg3OnN0YXRpYyBpbnQgdHJmNzk3MGFfaW5fY29uZmlndXJlX2h3KHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIGludCB0eXBlLFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTM4OC1cXHRcXHRcXHRcXHQgICAgaW50IHBhcmFtKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTM4OS17XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMzkwOlxcdHN0cnVjdCB0cmY3OTcwYSAqdHJmID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzkxLVxcdGludCByZXQ7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0MDAtXFx0ICAgICh0cmYtXFx1MDAzZXN0YXRlID09IFRSRjc5NzBBX1NUX1JGX09GRikpIHtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE0MDE6XFx0XFx0cmV0ID0gdHJmNzk3MGFfc3dpdGNoX3JmX29uKHRyZik7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDAyLVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0MDctXFx0Y2FzZSBORkNfRElHSVRBTF9DT05GSUdfUkZfVEVDSDpcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE0MDg6XFx0XFx0cmV0ID0gdHJmNzk3MGFfaW5fY29uZmlnX3JmX3RlY2godHJmLCBwYXJhbSk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDA5LVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQxMC1cXHRjYXNlIE5GQ19ESUdJVEFMX0NPTkZJR19GUkFNSU5HOlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTQxMTpcXHRcXHRyZXQgPSB0cmY3OTcwYV9pbl9jb25maWdfZnJhbWluZyh0cmYsIHBhcmFtKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0MTItXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0MjItXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNDIzOnN0YXRpYyBpbnQgdHJmNzk3MGFfaXNfaXNvMTU2OTNfd3JpdGVfb3JfbG9jayh1OCBjbWQpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDI0LXtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQzOC1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE0Mzk6c3RhdGljIGludCB0cmY3OTcwYV9wZXJfY21kX2NvbmZpZyhzdHJ1Y3QgdHJmNzk3MGEgKnRyZixcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0NDAtXFx0XFx0XFx0XFx0ICAgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQ2NC1cXHRcXHRpZiAoc3BlY2lhbF9mY25fcmVnMSAhPSB0cmYtXFx1MDAzZXNwZWNpYWxfZmNuX3JlZzEpIHtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE0NjU6XFx0XFx0XFx0cmV0ID0gdHJmNzk3MGFfd3JpdGUodHJmLCBUUkY3OTcwQV9TUEVDSUFMX0ZDTl9SRUcxLFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQ2Ni1cXHRcXHRcXHRcXHRcXHQgICAgIHNwZWNpYWxfZmNuX3JlZzEpO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDkxLVxcdFxcdGlmIChpc29fY3RybCAhPSB0cmYtXFx1MDAzZWlzb19jdHJsKSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNDkyOlxcdFxcdFxcdHJldCA9IHRyZjc5NzBhX3VwZGF0ZV9pc29fY3RybF9yZWdpc3Rlcih0cmYsIGlzb19jdHJsKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0OTMtXFx0XFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQ5OS1cXHRcXHRpZiAoKHRyZi1cXHUwMDNlZnJhbWluZyA9PSBORkNfRElHSVRBTF9GUkFNSU5HX0lTTzE1NjkzX1Q1VCkgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE1MDA6XFx0XFx0ICAgIHRyZjc5NzBhX2lzX2lzbzE1NjkzX3dyaXRlX29yX2xvY2socmVxWzFdKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTUwMS1cXHRcXHQgICAgKHJlcVswXSBcXHUwMDI2IElTTzE1NjkzX1JFUV9GTEFHX09QVElPTikpXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE1MDctXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNTA4OnN0YXRpYyBpbnQgdHJmNzk3MGFfc2VuZF9jbWQoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE1MDktXFx0XFx0XFx0ICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MTYgdGltZW91dCxcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTUxMS17XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNTEyOlxcdHN0cnVjdCB0cmY3OTcwYSAqdHJmID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNTEzLVxcdHU4IHByZWZpeFs1XTtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTU1MS1cXHRpZiAodHJmLVxcdTAwM2VzdGF0ZSA9PSBUUkY3OTcwQV9TVF9JRExFX1JYX0JMT0NLRUQpIHtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE1NTI6XFx0XFx0cmV0ID0gdHJmNzk3MGFfY21kKHRyZiwgVFJGNzk3MEFfQ01EX0VOQUJMRV9SWCk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNTUzLVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE1NTktXFx0aWYgKHRyZi1cXHUwMDNlaXNfaW5pdGlhdG9yKSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNTYwOlxcdFxcdHJldCA9IHRyZjc5NzBhX3Blcl9jbWRfY29uZmlnKHRyZiwgc2tiKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE1NjEtXFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTU5Ni1cXHQvKiBDbGVhciBwb3NzaWJsZSBzcHVyaW91cyBpbnRlcnJ1cHQgKi9cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE1OTc6XFx0cmV0ID0gdHJmNzk3MGFfcmVhZF9pcnFzdGF0dXModHJmLCBcXHUwMDI2c3RhdHVzKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE1OTgtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTYwMC1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE2MDE6XFx0cmV0ID0gdHJmNzk3MGFfdHJhbnNtaXQodHJmLCBza2IsIGxlbiwgcHJlZml4LCBzaXplb2YocHJlZml4KSk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNjAyLVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTYxMS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE2MTI6c3RhdGljIGludCB0cmY3OTcwYV90Z19jb25maWdfcmZfdGVjaChzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgaW50IHRlY2gpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNjEzLXtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTY0Ny1cXHQvKiBOb3JtYWxseSB3ZSB3cml0ZSB0aGUgSVNPX0NUUkwgcmVnaXN0ZXIgaW5cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE2NDg6XFx0ICogdHJmNzk3MGFfdGdfY29uZmlnX2ZyYW1pbmcoKSBiZWNhdXNlIHRoZSBmcmFtaW5nIGNhbiBjaGFuZ2VcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE2NDktXFx0ICogdGhlIHZhbHVlIHdyaXR0ZW4uICBIb3dldmVyLCB3aGVuIHNlbmRpbmcgYSBQU0wgUkVTLFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTY1MC1cXHQgKiBkaWdpdGFsX3RnX3NlbmRfcHNsX3Jlc19jb21wbGV0ZSgpIGRvZXNuJ3QgY2FsbFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTY1MTpcXHQgKiB0cmY3OTcwYV90Z19jb25maWdfZnJhbWluZygpIHNvIHdlIG11c3Qgd3JpdGUgdGhlIHJlZ2lzdGVyXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNjUyLVxcdCAqIGhlcmUuXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE2NTUtXFx0ICAgICh0cmYtXFx1MDAzZWlzb19jdHJsX3RlY2ggIT0gdHJmLVxcdTAwM2Vpc29fY3RybCkpIHtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE2NTY6XFx0XFx0cmV0ID0gdHJmNzk3MGFfdXBkYXRlX2lzb19jdHJsX3JlZ2lzdGVyKHRyZiwgdHJmLVxcdTAwM2Vpc29fY3RybF90ZWNoKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE2NTctXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE2NjktICovXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNjcwOnN0YXRpYyBpbnQgdHJmNzk3MGFfdGdfY29uZmlnX2ZyYW1pbmcoc3RydWN0IHRyZjc5NzBhICp0cmYsIGludCBmcmFtaW5nKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTY3MS17XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE3MDMtXFx0aWYgKGlzb19jdHJsICE9IHRyZi1cXHUwMDNlaXNvX2N0cmwpIHtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE3MDQ6XFx0XFx0cmV0ID0gdHJmNzk3MGFfdXBkYXRlX2lzb19jdHJsX3JlZ2lzdGVyKHRyZiwgaXNvX2N0cmwpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTcwNS1cXHRcXHRpZiAocmV0KVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQyMjozNDozMi4xNDA2ODI3NDlaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1ODM4ODM2Njc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVFJGNzk3MEEgTkZDIERyaXZlcidzIFZpcnR1YWxpemF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYGRyaXZlcnMvbmZjL3RyZjc5NzBhLmNgIOKAkyB0aGF0J3MgdGhlIE5GQyBkcml2ZXIgZm9yIHRoZSBUZXhhcyBJbnN0cnVtZW50cyBUUkY3OTcwQSB0cmFuc2NlaXZlci4gSXQncyBhbiBTUEktYmFzZWQgZHJpdmVyLCB3aGljaCBpbW1lZGlhdGVseSBtYWtlcyB2aXJ0dWFsaXphdGlvbiBhIGJpdCB0cmlja2llci4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhlcmUncyBhIHByYWN0aWNhbCB3YXkgdG8gdGVzdCB0aGlzIHRoaW5nIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQsIGVzcGVjaWFsbHkgdXNpbmcgc29tZXRoaW5nIGxpa2Ugc3l6a2FsbGVyLlxuXG5NeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gc2VlIGlmIHRoZXJlJ3MgYSByZWFkaWx5IGF2YWlsYWJsZSBTUEkgY29udHJvbGxlciBpbiBRRU1VIHRoYXQgc3l6a2FsbGVyIGNhbiBsZXZlcmFnZS4gVGhhdCdzIHVzdWFsbHkgdGhlIGJvdHRsZW5lY2suIEFuZCBob25lc3RseSwgaXQncyByYXJlIHRvIGZpbmQgZGlyZWN0IHN1cHBvcnQgZm9yIGEgc3BlY2lmaWMgZGV2aWNlIGxpa2UgdGhlIFRSRjc5NzBBLiBJIGtub3cgc3l6a2FsbGVyIGhhcyBzb21lIHZpcnR1YWxpemF0aW9uIHRyaWNrcyB1cCBpdHMgc2xlZXZlLiBXZSd2ZSBnb3QgYHZoY2lgIGZvciBVU0IsIGBtYWM4MDIxMV9od3NpbWAgZm9yIFdpRmksIGFuZCBldmVuIGBuZmNzaW1gIGZvciBORkMuLi4gYnV0IGBuZmNzaW1gIGlzIGEgdmlydHVhbCBORkMgZGV2aWNlLCBub3QgYW4gZW11bGF0b3IgZm9yIGEgKnNwZWNpZmljKiB0cmFuc2NlaXZlci4gU28sIGl0J3Mgbm90IGEgZGlyZWN0IG1hdGNoLlxuXG5Ob3csIEknbSB0cnlpbmcgdG8gcmVjYWxsIGlmIHN5emthbGxlciBoYXMgYW55IGRlZGljYXRlZCBTUEkgc2V0dXAgZnVuY3Rpb25zIGxpa2UgYHN5el9zcGlfc2V0dXBgPyBObywgdGhhdCBkb2Vzbid0IHJpbmcgYSBiZWxsLiBXYWl0LCB0aG91Z2gsIGRpZG4ndCB0aGV5IHJlY2VudGx5IGFkZCBzb21lIHJ1ZGltZW50YXJ5IFNQSSBzdXBwb3J0IHRocm91Z2ggYSBkdW1teSBjb250cm9sbGVyPyBUaGF0IG1pZ2h0IGJlIG91ciBrZXkuIEl0J3Mgd29ydGggZGlnZ2luZyBpbnRvIHRoZSByZWNlbnQgY2hhbmdlcy5cblxuQWxyaWdodCwgSSBuZWVkIHRvIGZvY3VzIG9uIHdoYXQgc3l6a2FsbGVyIGtub3dzIGFib3V0IFNQSSBpbiBnZW5lcmFsLCBvciwgbW9yZSBzcGVjaWZpY2FsbHksIGFueSBtZW50aW9ucyBvZiB0aGUgVFJGNzk3MEEuIFRpbWUgdG8gc2VhcmNoIHRoZSBkZXNjcmlwdGlvbnMgYW5kIHNlZSB3aGF0IGNvbWVzIHVwLiBUaGF0J3MgdGhlIGJlc3Qgcm91dGUgZm9yIGdldHRpbmcgc3RhcnRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTY0ODcsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMjI6MzQ6MzcuOTc5NTIyNzk0WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0MTQ2MjE4NDQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidHJmNzk3MGFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgODI0IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sLTMtLS0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvdGksdHJmNzk3MGEueWFtbDo0OiRpZDogaHR0cDovL2RldmljZXRyZWUub3JnL3NjaGVtYXMvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sI1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbmZjL3RpLHRyZjc5NzBhLnlhbWwtNS0kc2NoZW1hOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvbWV0YS1zY2hlbWFzL2NvcmUueWFtbCNcXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbmZjL3RpLHRyZjc5NzBhLnlhbWw9MTM9cHJvcGVydGllczpcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sLTE0LSAgY29tcGF0aWJsZTpcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sOjE1OiAgICBjb25zdDogdGksdHJmNzk3MGFcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sLTE2LVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvdGksdHJmNzk3MGEueWFtbC0yMy0gICAgZGVzY3JpcHRpb246IHxcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sOjI0OiAgICAgIFNldCB0byBzcGVjaWZ5IHRoYXQgdGhlIGlucHV0IGZyZXF1ZW5jeSB0byB0aGUgdHJmNzk3MGEgaXMgMTM1NjAwMDBIeiBvclxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbmZjL3RpLHRyZjc5NzBhLnlhbWwtMjUtICAgICAgMjcxMjAwMDBIelxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvdGksdHJmNzk3MGEueWFtbC0yOS0gICAgZGVzY3JpcHRpb246IHxcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sOjMwOiAgICAgIFNwZWNpZnkgdGhhdCB0aGUgdHJmNzk3MGEgYmVpbmcgdXNlZCBoYXMgdGhlIFxcXCJFTjIgUkZcXFwiIGVycmF0dW1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sLTMxLVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvdGksdHJmNzk3MGEueWFtbC0zNy0gICAgZGVzY3JpcHRpb246IHxcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sOjM4OiAgICAgIFNwZWNpZnkgdGhhdCB0aGUgdHJmNzk3MGEgYmVpbmcgdXNlZCBoYXMgdGhlIFxcXCJJUlEgU3RhdHVzIFJlYWRcXFwiIGVycmF0dW1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sLTM5LVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvdGksdHJmNzk3MGEueWFtbD03Nz1leGFtcGxlczpcXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbmZjL3RpLHRyZjc5NzBhLnlhbWwtODYtICAgICAgICBuZmNAMCB7XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvdGksdHJmNzk3MGEueWFtbDo4NzogICAgICAgICAgICBjb21wYXRpYmxlID0gXFxcInRpLHRyZjc5NzBhXFxcIjtcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sLTg4LSAgICAgICAgICAgIHJlZyA9IFxcdTAwM2MwXFx1MDAzZTtcXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbmZjL3RpLHRyZjc5NzBhLnlhbWwtOTAtICAgICAgICAgICAgcGluY3RybC1uYW1lcyA9IFxcXCJkZWZhdWx0XFxcIjtcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sOjkxOiAgICAgICAgICAgIHBpbmN0cmwtMCA9IFxcdTAwM2NcXHUwMDI2dHJmNzk3MGFfZGVmYXVsdFxcdTAwM2U7XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvdGksdHJmNzk3MGEueWFtbC05Mi0gICAgICAgICAgICBzcGktbWF4LWZyZXF1ZW5jeSA9IFxcdTAwM2MyMDAwMDAwXFx1MDAzZTtcXG4tLVxcbk1BSU5UQUlORVJTPTI3MTczPVM6XFx0U3VwcG9ydGVkXFxuTUFJTlRBSU5FUlM6MjcxNzQ6RjpcXHREb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sXFxuTUFJTlRBSU5FUlM6MjcxNzU6RjpcXHRkcml2ZXJzL25mYy90cmY3OTcwYS5jXFxuTUFJTlRBSU5FUlMtMjcxNzYtXFxuLS1cXG5hcmNoL2FybS9ib290L2R0cy9ueHAvaW14L2lteDZkbC1wcnRydnQuZHRzPTYwPVxcdG5mY0AwIHtcXG5hcmNoL2FybS9ib290L2R0cy9ueHAvaW14L2lteDZkbC1wcnRydnQuZHRzOjYxOlxcdFxcdGNvbXBhdGlibGUgPSBcXFwidGksdHJmNzk3MGFcXFwiO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NmRsLXBydHJ2dC5kdHMtNjItXFx0XFx0cmVnID0gXFx1MDAzYzBcXHUwMDNlO1xcbi0tXFxuZHJpdmVycy9uZmMvS2NvbmZpZz05PWNvbmZpZyBORkNfVFJGNzk3MEFcXG4tLVxcbmRyaXZlcnMvbmZjL0tjb25maWctMTgtXFx0ICBzYXkgTSAgdG8gY29tcGlsZSBpdCBhcyBhIG1vZHVsZS4gVGhlIG1vZHVsZSB3aWxsIGJlIGNhbGxlZFxcbmRyaXZlcnMvbmZjL0tjb25maWc6MTk6XFx0ICB0cmY3OTcwYS5rby5cXG5kcml2ZXJzL25mYy9LY29uZmlnLTIwLVxcbi0tXFxuZHJpdmVycy9uZmMvTWFrZWZpbGU9MTM9b2JqLSQoQ09ORklHX05GQ19NUlZMKVxcdFxcdCs9IG5mY21ydmwvXFxuZHJpdmVycy9uZmMvTWFrZWZpbGU6MTQ6b2JqLSQoQ09ORklHX05GQ19UUkY3OTcwQSlcXHQrPSB0cmY3OTcwYS5vXFxuZHJpdmVycy9uZmMvTWFrZWZpbGUtMTUtb2JqLSQoQ09ORklHX05GQ19TVDIxTkZDQSkgIFxcdCs9IHN0MjFuZmNhL1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0yNy1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjI4Oi8qIFRoZXJlIGFyZSAzIHdheXMgdGhlIGhvc3QgY2FuIGNvbW11bmljYXRlIHdpdGggdGhlIHRyZjc5NzBhOlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMjktICogcGFyYWxsZWwgbW9kZSwgU1BJIHdpdGggU2xhdmUgU2VsZWN0IChTUykgbW9kZSwgYW5kIFNQSSB3aXRob3V0XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTMxLSAqXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzozMjogKiBUaGUgdHJmNzk3MGEgaXMgdmVyeSB0aW1pbmcgc2Vuc2l0aXZlIGFuZCB0aGUgVklOLCBFTjIsIGFuZCBFTlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMzMtICogcGlucyBtdXN0IGFzc2VydGVkIGluIHRoYXQgb3JkZXIgYW5kIHdpdGggc3BlY2lmaWMgZGVsYXlzIGluIGJldHdlZW4uXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTM1LSAqIGNvbmZpcm1lZCB0byB3b3JrIHdpdGggdGhpcyBkcml2ZXIuICBUaGVyZSBpcyBhIGJ1ZyB3aXRoIHRoZSBjdXJyZW50XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzozNjogKiB2ZXJzaW9uIG9mIHRoZSB0cmY3OTcwYSB0aGF0IHJlcXVpcmVzIHRoYXQgRU4yIHJlbWFpbiBsb3cgbm8gbWF0dGVyXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0zNy0gKiB3aGF0LiAgSWYgaXQgZ29lcyBoaWdoLCBpdCB3aWxsIGdlbmVyYXRlIGFuIFJGIGZpZWxkIGV2ZW4gd2hlbiBpblxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0zOS0gKiB3aGVuIEVOMiBpcyBsZWZ0IGxvdy4gIFRoZSAnZW4yLXJmLXF1aXJrJyBkZXZpY2UgdHJlZSBwcm9wZXJ0eVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NDA6ICogaW5kaWNhdGVzIHRoYXQgdHJmNzk3MGEgY3VycmVudGx5IGJlaW5nIHVzZWQgaGFzIHRoZSBlcnJhdHVtIGFuZFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDEtICogdGhhdCBFTjIgbXVzdCBiZSBrZXB0IGxvdy5cXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDQtICogVGltZW91dHMgYXJlIHJlcXVpcmVkIHNvIHRoaW5ncyBkb24ndCBoYW5nIHdoZW4gdGhlcmUgaXMgbm8gcmVzcG9uc2VcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjQ1OiAqIGZyb20gdGhlIHRyZjc5NzBhIChvciB0YWcpLiAgVXNpbmcgdGhpcyBtZWNoYW5pc20gY3JlYXRlcyBhIHJhY2Ugd2l0aFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDYtICogaW50ZXJydXB0cywgaG93ZXZlci4gIFRoYXQgaXMsIGFuIGludGVycnVwdCBhbmQgYSB0aW1lb3V0IGNvdWxkIG9jY3VyXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTYwLSAqIHRoZSBlbnRpcmUgYW50aWNvbGxpc2lvbiBwcm9jZWR1cmUgYWdhaW4gYnV0IHRoZSBkaWdpdGFsIGxheWVyIGRvZXNuJ3RcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjYxOiAqIHN1cHBvcnQgdGhhdC4gIFNvLCBpZiBhbiBhYm9ydCBpcyByZWNlaXZlZCBiZWZvcmUgdHJmNzk3MGFfc2VuZF9jbWQoKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjItICogaGFzIHNlbnQgdGhlIGNvbW1hbmQgdG8gdGhlIHRhZywgaXQgc2ltcGx5IHJldHVybnMgLUVDQU5DRUxFRC4gIElmIHRoZVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05Ni0gKiB3aGVuIHRoZSBmcmFtaW5nIGlzICdORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfVDJUJy4gIFRoaXMgaXMgZG9uZSBieVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTc6ICogdGhlIHRyZjc5NzBhX3Blcl9jbWRfY29uZmlnKCkgcm91dGluZS5cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk4LSAqXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0NC0vKiBRdWlya3MgKi9cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE0NTovKiBFcnJhdHVtOiBXaGVuIHJlYWRpbmcgSVJRIFN0YXR1cyByZWdpc3RlciBvbiB0cmY3OTcwYSwgd2UgbXVzdCBpc3N1ZSBhXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDYtICogcmVhZCBjb250aW51b3VzIGNvbW1hbmQgZm9yIElSUSBTdGF0dXMgYW5kIENvbGxpc2lvbiBQb3NpdGlvbiByZWdpc3RlcnMuXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTQxNS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjQxNjplbnVtIHRyZjc5NzBhX3N0YXRlIHtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTQxNy1cXHRUUkY3OTcwQV9TVF9QV1JfT0ZGLFxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy00MjktXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo0MzA6c3RydWN0IHRyZjc5NzBhIHtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjQzMTpcXHRlbnVtIHRyZjc5NzBhX3N0YXRlXFx0XFx0c3RhdGU7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy00MzItXFx0c3RydWN0IGRldmljZVxcdFxcdFxcdCpkZXY7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTQ2NS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjQ2NjpzdGF0aWMgaW50IHRyZjc5NzBhX2NtZChzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgdTggb3Bjb2RlKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDY3LXtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDc5LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NDgwOnN0YXRpYyBpbnQgdHJmNzk3MGFfcmVhZChzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgdTggcmVnLCB1OCAqdmFsKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDgxLXtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDk0LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NDk1OnN0YXRpYyBpbnQgdHJmNzk3MGFfcmVhZF9jb250KHN0cnVjdCB0cmY3OTcwYSAqdHJmLCB1OCByZWcsIHU4ICpidWYsXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy00OTYtXFx0XFx0XFx0ICAgICAgc2l6ZV90IGxlbilcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTIzLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NTI0OnN0YXRpYyBpbnQgdHJmNzk3MGFfd3JpdGUoc3RydWN0IHRyZjc5NzBhICp0cmYsIHU4IHJlZywgdTggdmFsKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTI1LXtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTM4LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NTM5OnN0YXRpYyBpbnQgdHJmNzk3MGFfcmVhZF9pcnFzdGF0dXMoc3RydWN0IHRyZjc5NzBhICp0cmYsIHU4ICpzdGF0dXMpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01NDAte1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01NjItXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo1NjM6c3RhdGljIGludCB0cmY3OTcwYV91cGRhdGVfcnhfZ2Fpbl9yZWR1Y3Rpb24oc3RydWN0IHRyZjc5NzBhICp0cmYpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01NjQte1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01NzAtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo1NzE6XFx0cmV0ID0gdHJmNzk3MGFfcmVhZCh0cmYsIFRSRjc5NzBBX1JYX1NQRUNJQUxfU0VUVElOR1MsIFxcdTAwMjZyZWcpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTcyLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTU3Ni1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjU3NzpcXHRyZXQgPSB0cmY3OTcwYV93cml0ZSh0cmYsIFRSRjc5NzBBX1JYX1NQRUNJQUxfU0VUVElOR1MsIHJlZyk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01NzgtXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTU4MS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjU4MjpzdGF0aWMgaW50IHRyZjc5NzBhX3VwZGF0ZV9pc29fY3RybF9yZWdpc3RlcihzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgdTggaXNvX2N0cmwpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01ODMte1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01ODUtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo1ODY6XFx0cmV0ID0gdHJmNzk3MGFfd3JpdGUodHJmLCBUUkY3OTcwQV9JU09fQ1RSTCwgaXNvX2N0cmwpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTg3LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTU5Mi1cXHQgKi9cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjU5MzpcXHRyZXQgPSB0cmY3OTcwYV91cGRhdGVfcnhfZ2Fpbl9yZWR1Y3Rpb24odHJmKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTU5NC1cXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTk3LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NTk4OnN0YXRpYyBpbnQgdHJmNzk3MGFfcmVhZF90YXJnZXRfcHJvdG8oc3RydWN0IHRyZjc5NzBhICp0cmYsIHU4ICp0YXJnZXRfcHJvdG8pXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01OTkte1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02MTYtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo2MTc6c3RhdGljIGludCB0cmY3OTcwYV9tb2RlX2RldGVjdChzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgdTggKnJmX3RlY2gpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02MTgte1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02MjEtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo2MjI6XFx0cmV0ID0gdHJmNzk3MGFfcmVhZF90YXJnZXRfcHJvdG8odHJmLCBcXHUwMDI2dGFyZ2V0X3Byb3RvKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTYyMy1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02NDktXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo2NTA6c3RhdGljIHZvaWQgdHJmNzk3MGFfc2VuZF91cHN0cmVhbShzdHJ1Y3QgdHJmNzk3MGEgKnRyZilcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTY1MS17XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTY1NS1cXHRpZiAodHJmLVxcdTAwM2VyeF9za2IgXFx1MDAyNlxcdTAwMjYgIUlTX0VSUih0cmYtXFx1MDAzZXJ4X3NrYikgXFx1MDAyNlxcdTAwMjYgIXRyZi1cXHUwMDNlYWJvcnRpbmcpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo2NTY6XFx0XFx0cHJpbnRfaGV4X2R1bXBfZGVidWcoXFxcInRyZjc5NzBhIHJ4IGRhdGE6IFxcXCIsIERVTVBfUFJFRklYX05PTkUsXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02NTctXFx0XFx0XFx0XFx0ICAgICAxNiwgMSwgdHJmLVxcdTAwM2VyeF9za2ItXFx1MDAzZWRhdGEsIHRyZi1cXHUwMDNlcnhfc2tiLVxcdTAwM2VsZW4sXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTY3Ny1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjY3ODpzdGF0aWMgdm9pZCB0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbShzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgaW50IGVycm5vKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjc5LXtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjg2LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6Njg3OlxcdHRyZjc5NzBhX3NlbmRfdXBzdHJlYW0odHJmKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTY4OC19XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02ODktXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo2OTA6c3RhdGljIGludCB0cmY3OTcwYV90cmFuc21pdChzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTY5MS1cXHRcXHRcXHQgICAgIHVuc2lnbmVkIGludCBsZW4sIGNvbnN0IHU4ICpwcmVmaXgsXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTY5OC1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjY5OTpcXHRwcmludF9oZXhfZHVtcF9kZWJ1ZyhcXFwidHJmNzk3MGEgdHggZGF0YTogXFxcIiwgRFVNUF9QUkVGSVhfTk9ORSxcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTcwMC1cXHRcXHRcXHQgICAgIDE2LCAxLCBza2ItXFx1MDAzZWRhdGEsIGxlbiwgZmFsc2UpO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03NDctXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo3NDg6c3RhdGljIHZvaWQgdHJmNzk3MGFfZmlsbF9maWZvKHN0cnVjdCB0cmY3OTcwYSAqdHJmKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzQ5LXtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzU1LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NzU2OlxcdHJldCA9IHRyZjc5NzBhX3JlYWQodHJmLCBUUkY3OTcwQV9GSUZPX1NUQVRVUywgXFx1MDAyNmZpZm9fYnl0ZXMpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzU3LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjc1ODpcXHRcXHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIHJldCk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03NTktXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03NzctXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo3Nzg6XFx0cmV0ID0gdHJmNzk3MGFfdHJhbnNtaXQodHJmLCBza2IsIGxlbiwgXFx1MDAyNnByZWZpeCwgc2l6ZW9mKHByZWZpeCkpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzc5LVxcdGlmIChyZXQpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo3ODA6XFx0XFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCByZXQpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzgxLX1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTc4Mi1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjc4MzpzdGF0aWMgdm9pZCB0cmY3OTcwYV9kcmFpbl9maWZvKHN0cnVjdCB0cmY3OTcwYSAqdHJmLCB1OCBzdGF0dXMpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03ODQte1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03ODktXFx0aWYgKHN0YXR1cyBcXHUwMDI2IFRSRjc5NzBBX0lSUV9TVEFUVVNfRVJST1IpIHtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjc5MDpcXHRcXHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIC1FSU8pO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzkxLVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzkzLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6Nzk0OlxcdHJldCA9IHRyZjc5NzBhX3JlYWQodHJmLCBUUkY3OTcwQV9GSUZPX1NUQVRVUywgXFx1MDAyNmZpZm9fYnl0ZXMpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzk1LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjc5NjpcXHRcXHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIHJldCk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03OTctXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04MTItXFx0XFx0aWYgKCFza2IpIHtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjgxMzpcXHRcXHRcXHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIC1FTk9NRU0pO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODE0LVxcdFxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODIwLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6ODIxOlxcdHJldCA9IHRyZjc5NzBhX3JlYWRfY29udCh0cmYsIFRSRjc5NzBBX0ZJRk9fSU9fUkVHSVNURVIsXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04MjItXFx0XFx0XFx0XFx0IHNrYl9wdXQoc2tiLCBmaWZvX2J5dGVzKSwgZmlmb19ieXRlcyk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04MjMtXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6ODI0OlxcdFxcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgcmV0KTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTgyNS1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTgzNS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjgzNjpcXHRcXHRyZXQgPSB0cmY3OTcwYV9yZWFkKHRyZiwgVFJGNzk3MEFfRklGT19TVEFUVVMsIFxcdTAwMjZmaWZvX2J5dGVzKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTgzNy1cXHRcXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo4Mzg6XFx0XFx0XFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCByZXQpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODM5LVxcdFxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODQ1LVxcdFxcdCAqIHRoZSBpZiBzdG10IGJlbG93IGRvZXNuJ3QgZmlyZSBhbmQgdGhlIGRyaXZlciB3aWxsIHdhaXRcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjg0NjpcXHRcXHQgKiBmb3IgdGhlIHRyZjc5NzBhIHRvIGdlbmVyYXRlIGFub3RoZXIgUlggaW50ZXJydXB0LlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODQ3LVxcdFxcdCAqL1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04NTMtXFx0aWYgKHN0YXR1cyA9PSBUUkY3OTcwQV9JUlFfU1RBVFVTX1NSWCkge1xcdC8qIFJlY2VpdmUgY29tcGxldGUgKi9cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjg1NDpcXHRcXHR0cmY3OTcwYV9zZW5kX3Vwc3RyZWFtKHRyZik7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04NTUtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04NjQtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo4NjU6c3RhdGljIGlycXJldHVybl90IHRyZjc5NzBhX2lycShpbnQgaXJxLCB2b2lkICpkZXZfaWQpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04NjYte1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6ODY3OlxcdHN0cnVjdCB0cmY3OTcwYSAqdHJmID0gZGV2X2lkO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODY4LVxcdGludCByZXQ7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTg3Ny1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjg3ODpcXHRyZXQgPSB0cmY3OTcwYV9yZWFkX2lycXN0YXR1cyh0cmYsIFxcdTAwMjZzdGF0dXMpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODc5LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODk2LVxcdFxcdCAqIHR1cm4gb2ZmIHRoZSByZWNlaXZlciB0byBhdm9pZCB1bm5lY2Vzc2FyeSBpbnRlcnJ1cHRzLlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6ODk3OlxcdFxcdCAqIEl0IHdpbGwgYmUgdHVybmVkIGJhY2sgb24gaW4gdHJmNzk3MGFfc2VuZF9jbWQoKSB3aGVuXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04OTgtXFx0XFx0ICogdGhlIG5leHQgY29tbWFuZCBpcyBpc3N1ZWQuXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkwMC1cXHRcXHRpZiAodHJmLVxcdTAwM2Vpc19pbml0aWF0b3IgXFx1MDAyNlxcdTAwMjYgKHN0YXR1cyBcXHUwMDI2IFRSRjc5NzBBX0lSUV9TVEFUVVNfRVJST1IpKSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5MDE6XFx0XFx0XFx0dHJmNzk3MGFfY21kKHRyZiwgVFJGNzk3MEFfQ01EX0JMT0NLX1JYKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkwMi1cXHRcXHRcXHR0cmYtXFx1MDAzZXN0YXRlID0gVFJGNzk3MEFfU1RfSURMRV9SWF9CTE9DS0VEO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05MDQtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5MDU6XFx0XFx0dHJmNzk3MGFfY21kKHRyZiwgVFJGNzk3MEFfQ01EX0ZJRk9fUkVTRVQpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTA2LVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05MTAtXFx0XFx0XFx0ICAgICFjYW5jZWxfZGVsYXllZF93b3JrKFxcdTAwMjZ0cmYtXFx1MDAzZXRpbWVvdXRfd29yayk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5MTE6XFx0XFx0XFx0dHJmNzk3MGFfZmlsbF9maWZvKHRyZik7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05MTItXFx0XFx0fSBlbHNlIHtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjkxMzpcXHRcXHRcXHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIC1FSU8pO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTE0LVxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTIwLVxcdFxcdFxcdCAgICAhY2FuY2VsX2RlbGF5ZWRfd29yayhcXHUwMDI2dHJmLVxcdTAwM2V0aW1lb3V0X3dvcmspO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTIxOlxcdFxcdFxcdHRyZjc5NzBhX2RyYWluX2ZpZm8odHJmLCBzdGF0dXMpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTIyLVxcdFxcdH0gZWxzZSBpZiAoc3RhdHVzIFxcdTAwMjYgVFJGNzk3MEFfSVJRX1NUQVRVU19GSUZPKSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5MjM6XFx0XFx0XFx0cmV0ID0gdHJmNzk3MGFfcmVhZCh0cmYsIFRSRjc5NzBBX0ZJRk9fU1RBVFVTLFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTI0LVxcdFxcdFxcdFxcdFxcdCAgICBcXHUwMDI2Zmlmb19ieXRlcyk7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkyOC1cXHRcXHRcXHRpZiAocmV0KVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTI5OlxcdFxcdFxcdFxcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgcmV0KTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkzMC1cXHRcXHRcXHRlbHNlIGlmICghZmlmb19ieXRlcylcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjkzMTpcXHRcXHRcXHRcXHR0cmY3OTcwYV9jbWQodHJmLCBUUkY3OTcwQV9DTURfRklGT19SRVNFVCk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05MzItXFx0XFx0fSBlbHNlIGlmICgoc3RhdHVzID09IFRSRjc5NzBBX0lSUV9TVEFUVVNfVFgpIHx8XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkzNS1cXHRcXHRcXHRcXHRcXHRUUkY3OTcwQV9JUlFfU1RBVFVTX05GQ19SRikpKSkge1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTM2OlxcdFxcdFxcdHRyZjc5NzBhX2NtZCh0cmYsIFRSRjc5NzBBX0NNRF9GSUZPX1JFU0VUKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkzNy1cXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTQxLVxcdFxcdFxcdFxcdHRyZi1cXHUwMDNlcnhfc2tiID0gRVJSX1BUUigwKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjk0MjpcXHRcXHRcXHRcXHR0cmY3OTcwYV9zZW5kX3Vwc3RyZWFtKHRyZik7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05NDMtXFx0XFx0XFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk2Mi1cXHRcXHRcXHRjYXNlIE5GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9BTlRJQ09MX0NPTVBMRVRFOlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTYzOlxcdFxcdFxcdFxcdHJldCA9IHRyZjc5NzBhX3dyaXRlKHRyZixcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk2NC1cXHRcXHRcXHRcXHRcXHQgVFJGNzk3MEFfU1BFQ0lBTF9GQ05fUkVHMSxcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTc2LVxcdFxcdFxcdGlmIChpc29fY3RybCAhPSB0cmYtXFx1MDAzZWlzb19jdHJsKSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5Nzc6XFx0XFx0XFx0XFx0cmV0ID0gdHJmNzk3MGFfdXBkYXRlX2lzb19jdHJsX3JlZ2lzdGVyKHRyZiwgaXNvX2N0cmwpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTc4LVxcdFxcdFxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk4My1cXHRcXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTg0OlxcdFxcdFxcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgLUVJTyk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05ODUtXFx0XFx0fVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05ODgtXFx0XFx0aWYgKHN0YXR1cyAhPSBUUkY3OTcwQV9JUlFfU1RBVFVTX1RYKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTg5OlxcdFxcdFxcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgLUVJTyk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05OTAtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk5NC1cXHRcXHRcXHQgICAgIWNhbmNlbF9kZWxheWVkX3dvcmsoXFx1MDAyNnRyZi1cXHUwMDNldGltZW91dF93b3JrKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjk5NTpcXHRcXHRcXHR0cmY3OTcwYV9kcmFpbl9maWZvKHRyZiwgc3RhdHVzKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk5Ni1cXHRcXHR9IGVsc2UgaWYgKCEoc3RhdHVzIFxcdTAwMjYgVFJGNzk3MEFfSVJRX1NUQVRVU19ORkNfUkYpKSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5OTc6XFx0XFx0XFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCAtRUlPKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk5OC1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwMDQtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDA1OlxcdFxcdFxcdHJldCA9IHRyZjc5NzBhX21vZGVfZGV0ZWN0KHRyZiwgXFx1MDAyNnRyZi1cXHUwMDNlbWRfcmZfdGVjaCk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDA2LVxcdFxcdFxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwMDc6XFx0XFx0XFx0XFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCByZXQpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAwOC1cXHRcXHRcXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAwOS1cXHRcXHRcXHRcXHR0cmYtXFx1MDAzZXN0YXRlID0gVFJGNzk3MEFfU1RfTElTVEVOSU5HO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTAxMDpcXHRcXHRcXHRcXHR0cmY3OTcwYV9kcmFpbl9maWZvKHRyZiwgc3RhdHVzKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwMTEtXFx0XFx0XFx0fVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAxMi1cXHRcXHR9IGVsc2UgaWYgKCEoc3RhdHVzIFxcdTAwMjYgVFJGNzk3MEFfSVJRX1NUQVRVU19ORkNfUkYpKSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDEzOlxcdFxcdFxcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgLUVJTyk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDE0LVxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAyNS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwMjY6c3RhdGljIHZvaWQgdHJmNzk3MGFfaXNzdWVfZW9mKHN0cnVjdCB0cmY3OTcwYSAqdHJmKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAyNy17XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwMzEtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDMyOlxcdHJldCA9IHRyZjc5NzBhX2NtZCh0cmYsIFRSRjc5NzBBX0NNRF9GSUZPX1JFU0VUKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwMzMtXFx0aWYgKHJldClcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwMzQ6XFx0XFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCByZXQpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAzNS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwMzY6XFx0cmV0ID0gdHJmNzk3MGFfY21kKHRyZiwgVFJGNzk3MEFfQ01EX0VPRik7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDM3LVxcdGlmIChyZXQpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDM4OlxcdFxcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgcmV0KTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwMzktXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwNDgtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDQ5OnN0YXRpYyB2b2lkIHRyZjc5NzBhX3RpbWVvdXRfd29ya19oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwNTAte1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTA1MTpcXHRzdHJ1Y3QgdHJmNzk3MGEgKnRyZiA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgdHJmNzk3MGEsXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDUyLVxcdFxcdFxcdFxcdFxcdCAgICB0aW1lb3V0X3dvcmsud29yayk7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwNjEtXFx0ZWxzZSBpZiAodHJmLVxcdTAwM2VzdGF0ZSA9PSBUUkY3OTcwQV9TVF9XQUlUX0ZPUl9SWF9EQVRBX0NPTlQpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDYyOlxcdFxcdHRyZjc5NzBhX2RyYWluX2ZpZm8odHJmLCBUUkY3OTcwQV9JUlFfU1RBVFVTX1NSWCk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDYzLVxcdGVsc2UgaWYgKHRyZi1cXHUwMDNlc3RhdGUgPT0gVFJGNzk3MEFfU1RfV0FJVF9UT19JU1NVRV9FT0YpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDY0OlxcdFxcdHRyZjc5NzBhX2lzc3VlX2VvZih0cmYpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA2NS1cXHRlbHNlXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDY2OlxcdFxcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgLUVUSU1FRE9VVCk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDY3LVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDcwLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTA3MTpzdGF0aWMgaW50IHRyZjc5NzBhX2luaXQoc3RydWN0IHRyZjc5NzBhICp0cmYpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDcyLXtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA3Ni1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwNzc6XFx0cmV0ID0gdHJmNzk3MGFfY21kKHRyZiwgVFJGNzk3MEFfQ01EX1NPRlRfSU5JVCk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDc4LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwODEtXFx0LyogU2V0IHRoZSBnYWluIHJlZHVjdGlvbiBhZnRlciBzb2Z0IGluaXQgKi9cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwODI6XFx0cmV0ID0gdHJmNzk3MGFfdXBkYXRlX3J4X2dhaW5fcmVkdWN0aW9uKHRyZik7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDgzLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwODUtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDg2OlxcdHJldCA9IHRyZjc5NzBhX2NtZCh0cmYsIFRSRjc5NzBBX0NNRF9JRExFKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwODctXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA4OS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwOTA6XFx0cmV0ID0gdHJmNzk3MGFfd3JpdGUodHJmLCBUUkY3OTcwQV9SRUdfSU9fQ1RSTCxcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwOTEtXFx0XFx0XFx0ICAgICB0cmYtXFx1MDAzZWlvX2N0cmwgfCBUUkY3OTcwQV9SRUdfSU9fQ1RSTF9WUlMoMHgxKSk7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwOTQtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDk1OlxcdHJldCA9IHRyZjc5NzBhX3dyaXRlKHRyZiwgVFJGNzk3MEFfTkZDX1RBUkdFVF9MRVZFTCwgMCk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDk2LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExMDItXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMTAzOlxcdHJldCA9IHRyZjc5NzBhX3dyaXRlKHRyZiwgVFJGNzk3MEFfTU9EVUxBVE9SX1NZU19DTEtfQ1RSTCxcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExMDQtXFx0XFx0XFx0ICAgICB0cmYtXFx1MDAzZW1vZHVsYXRvcl9zeXNfY2xrX2N0cmwpO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTA3LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTEwODpcXHRyZXQgPSB0cmY3OTcwYV93cml0ZSh0cmYsIFRSRjc5NzBBX0FESlVUQUJMRV9GSUZPX0lSUV9MRVZFTFMsXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTA5LVxcdFxcdFxcdCAgICAgVFJGNzk3MEFfQURKVVRBQkxFX0ZJRk9fSVJRX0xFVkVMU19XTEhfOTYgfFxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTEzLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTExNDpcXHRyZXQgPSB0cmY3OTcwYV93cml0ZSh0cmYsIFRSRjc5NzBBX1NQRUNJQUxfRkNOX1JFRzEsIDApO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTExNS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTI3LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTEyODpzdGF0aWMgdm9pZCB0cmY3OTcwYV9zd2l0Y2hfcmZfb2ZmKHN0cnVjdCB0cmY3OTcwYSAqdHJmKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTEyOS17XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExMzctXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMTM4OlxcdHRyZjc5NzBhX3dyaXRlKHRyZiwgVFJGNzk3MEFfQ0hJUF9TVEFUVVNfQ1RSTCwgdHJmLVxcdTAwM2VjaGlwX3N0YXR1c19jdHJsKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExMzktXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExNDYtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMTQ3OnN0YXRpYyBpbnQgdHJmNzk3MGFfc3dpdGNoX3JmX29uKHN0cnVjdCB0cmY3OTcwYSAqdHJmKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTE0OC17XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExNjAtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMTYxOlxcdHJldCA9IHRyZjc5NzBhX2luaXQodHJmKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExNjItXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTcxLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTE3MjpzdGF0aWMgaW50IHRyZjc5NzBhX3N3aXRjaF9yZihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBib29sIG9uKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTE3My17XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMTc0OlxcdHN0cnVjdCB0cmY3OTcwYSAqdHJmID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTc1LVxcdGludCByZXQgPSAwO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTg0LVxcdFxcdGNhc2UgVFJGNzk3MEFfU1RfUkZfT0ZGOlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTE4NTpcXHRcXHRcXHRyZXQgPSB0cmY3OTcwYV9zd2l0Y2hfcmZfb24odHJmKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExODYtXFx0XFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExOTItXFx0XFx0XFx0XFx0X19mdW5jX18sIHRyZi1cXHUwMDNlc3RhdGUsIG9uKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjExOTM6XFx0XFx0XFx0dHJmNzk3MGFfc3dpdGNoX3JmX29mZih0cmYpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTE5NC1cXHRcXHRcXHRyZXQgPSAtRUlOVkFMO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjA5LVxcdFxcdGNhc2UgVFJGNzk3MEFfU1RfV0FJVF9GT1JfUlhfREFUQV9DT05UOlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTIxMDpcXHRcXHRcXHR0cmY3OTcwYV9zd2l0Y2hfcmZfb2ZmKHRyZik7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjExLVxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTIxNy1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEyMTg6c3RhdGljIGludCB0cmY3OTcwYV9pbl9jb25maWdfcmZfdGVjaChzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgaW50IHRlY2gpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjE5LXtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI2OC1cXHQgKiBQU0wgc2VxdWVuY2UgKGluZGljYXRlZCBieSAndHJmLVxcdTAwM2Vpc29fY3RybCA9PSAweGZmJyBmcm9tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMjY5OlxcdCAqIHRyZjc5NzBhX2luaXQoKSksIGNsZWFyIHRoZSBORkMgVGFyZ2V0IERldGVjdGlvbiBMZXZlbCByZWdpc3RlclxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI3MC1cXHQgKiBkdWUgdG8gZXJyYXR1bS5cXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI3Mi1cXHRpZiAodHJmLVxcdTAwM2Vpc29fY3RybCA9PSAweGZmKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTI3MzpcXHRcXHRyZXQgPSB0cmY3OTcwYV93cml0ZSh0cmYsIFRSRjc5NzBBX05GQ19UQVJHRVRfTEVWRUwsIDApO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI3NC1cXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI3Ny1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEyNzg6c3RhdGljIGludCB0cmY3OTcwYV9pc19yZl9maWVsZChzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgYm9vbCAqaXNfcmZfZmllbGQpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjc5LXtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI4Mi1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEyODM6XFx0cmV0ID0gdHJmNzk3MGFfd3JpdGUodHJmLCBUUkY3OTcwQV9DSElQX1NUQVRVU19DVFJMLFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI4NC1cXHRcXHRcXHQgICAgIHRyZi1cXHUwMDNlY2hpcF9zdGF0dXNfY3RybCB8XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyODgtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMjg5OlxcdHJldCA9IHRyZjc5NzBhX2NtZCh0cmYsIFRSRjc5NzBBX0NNRF9URVNUX0VYVF9SRik7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjkwLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyOTQtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMjk1OlxcdHJldCA9IHRyZjc5NzBhX3JlYWQodHJmLCBUUkY3OTcwQV9SU1NJX09TQ19TVEFUVVMsIFxcdTAwMjZyc3NpKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyOTYtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI5OC1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEyOTk6XFx0cmV0ID0gdHJmNzk3MGFfd3JpdGUodHJmLCBUUkY3OTcwQV9DSElQX1NUQVRVU19DVFJMLFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTMwMC1cXHRcXHRcXHQgICAgIHRyZi1cXHUwMDNlY2hpcF9zdGF0dXNfY3RybCk7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzMTEtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMzEyOnN0YXRpYyBpbnQgdHJmNzk3MGFfaW5fY29uZmlnX2ZyYW1pbmcoc3RydWN0IHRyZjc5NzBhICp0cmYsIGludCBmcmFtaW5nKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTMxMy17XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzNTAtXFx0aWYgKCEodHJmLVxcdTAwM2VjaGlwX3N0YXR1c19jdHJsIFxcdTAwMjYgVFJGNzk3MEFfQ0hJUF9TVEFUVVNfUkZfT04pKSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMzUxOlxcdFxcdHJldCA9IHRyZjc5NzBhX2lzX3JmX2ZpZWxkKHRyZiwgXFx1MDAyNmlzX3JmX2ZpZWxkKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzNTItXFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTM1OS1cXHRpZiAoaXNvX2N0cmwgIT0gdHJmLVxcdTAwM2Vpc29fY3RybCkge1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTM2MDpcXHRcXHRyZXQgPSB0cmY3OTcwYV91cGRhdGVfaXNvX2N0cmxfcmVnaXN0ZXIodHJmLCBpc29fY3RybCk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzYxLVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzNjUtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMzY2OlxcdFxcdHJldCA9IHRyZjc5NzBhX3dyaXRlKHRyZiwgVFJGNzk3MEFfTU9EVUxBVE9SX1NZU19DTEtfQ1RSTCxcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzNjctXFx0XFx0XFx0XFx0ICAgICB0cmYtXFx1MDAzZW1vZHVsYXRvcl9zeXNfY2xrX2N0cmwpO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzcyLVxcdGlmICghKHRyZi1cXHUwMDNlY2hpcF9zdGF0dXNfY3RybCBcXHUwMDI2IFRSRjc5NzBBX0NISVBfU1RBVFVTX1JGX09OKSkge1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTM3MzpcXHRcXHRyZXQgPSB0cmY3OTcwYV93cml0ZSh0cmYsIFRSRjc5NzBBX0NISVBfU1RBVFVTX0NUUkwsXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzc0LVxcdFxcdFxcdFxcdCAgICAgdHJmLVxcdTAwM2VjaGlwX3N0YXR1c19jdHJsIHxcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTM4Ni1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEzODc6c3RhdGljIGludCB0cmY3OTcwYV9pbl9jb25maWd1cmVfaHcoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgaW50IHR5cGUsXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzg4LVxcdFxcdFxcdFxcdCAgICBpbnQgcGFyYW0pXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzg5LXtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEzOTA6XFx0c3RydWN0IHRyZjc5NzBhICp0cmYgPSBuZmNfZGlnaXRhbF9nZXRfZHJ2ZGF0YShkZGV2KTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzOTEtXFx0aW50IHJldDtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQwMC1cXHQgICAgKHRyZi1cXHUwMDNlc3RhdGUgPT0gVFJGNzk3MEFfU1RfUkZfT0ZGKSkge1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTQwMTpcXHRcXHRyZXQgPSB0cmY3OTcwYV9zd2l0Y2hfcmZfb24odHJmKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0MDItXFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQwNy1cXHRjYXNlIE5GQ19ESUdJVEFMX0NPTkZJR19SRl9URUNIOlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTQwODpcXHRcXHRyZXQgPSB0cmY3OTcwYV9pbl9jb25maWdfcmZfdGVjaCh0cmYsIHBhcmFtKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0MDktXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDEwLVxcdGNhc2UgTkZDX0RJR0lUQUxfQ09ORklHX0ZSQU1JTkc6XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNDExOlxcdFxcdHJldCA9IHRyZjc5NzBhX2luX2NvbmZpZ19mcmFtaW5nKHRyZiwgcGFyYW0pO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQxMi1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQyMi1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE0MjM6c3RhdGljIGludCB0cmY3OTcwYV9pc19pc28xNTY5M193cml0ZV9vcl9sb2NrKHU4IGNtZClcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0MjQte1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDM4LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTQzOTpzdGF0aWMgaW50IHRyZjc5NzBhX3Blcl9jbWRfY29uZmlnKHN0cnVjdCB0cmY3OTcwYSAqdHJmLFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQ0MC1cXHRcXHRcXHRcXHQgICBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDY0LVxcdFxcdGlmIChzcGVjaWFsX2Zjbl9yZWcxICE9IHRyZi1cXHUwMDNlc3BlY2lhbF9mY25fcmVnMSkge1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTQ2NTpcXHRcXHRcXHRyZXQgPSB0cmY3OTcwYV93cml0ZSh0cmYsIFRSRjc5NzBBX1NQRUNJQUxfRkNOX1JFRzEsXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDY2LVxcdFxcdFxcdFxcdFxcdCAgICAgc3BlY2lhbF9mY25fcmVnMSk7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0OTEtXFx0XFx0aWYgKGlzb19jdHJsICE9IHRyZi1cXHUwMDNlaXNvX2N0cmwpIHtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE0OTI6XFx0XFx0XFx0cmV0ID0gdHJmNzk3MGFfdXBkYXRlX2lzb19jdHJsX3JlZ2lzdGVyKHRyZiwgaXNvX2N0cmwpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQ5My1cXHRcXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDk5LVxcdFxcdGlmICgodHJmLVxcdTAwM2VmcmFtaW5nID09IE5GQ19ESUdJVEFMX0ZSQU1JTkdfSVNPMTU2OTNfVDVUKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTUwMDpcXHRcXHQgICAgdHJmNzk3MGFfaXNfaXNvMTU2OTNfd3JpdGVfb3JfbG9jayhyZXFbMV0pIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNTAxLVxcdFxcdCAgICAocmVxWzBdIFxcdTAwMjYgSVNPMTU2OTNfUkVRX0ZMQUdfT1BUSU9OKSlcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTUwNy1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE1MDg6c3RhdGljIGludCB0cmY3OTcwYV9zZW5kX2NtZChzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTUwOS1cXHRcXHRcXHQgICAgIHN0cnVjdCBza19idWZmICpza2IsIHUxNiB0aW1lb3V0LFxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNTExLXtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE1MTI6XFx0c3RydWN0IHRyZjc5NzBhICp0cmYgPSBuZmNfZGlnaXRhbF9nZXRfZHJ2ZGF0YShkZGV2KTtcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMjI6MzQ6NDAuMzk0MTUxODQ3WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjE4ODI1MDcwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIHRoZSBGZWFzaWJpbGl0eSBvZiBUZXN0aW5nIGEgU3BlY2lmaWMgSGFyZHdhcmUgRHJpdmVyKipcblxuT2theSwgc28gSSd2ZSBzdHVtYmxlZCB1cG9uIGBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sYCBhbmQgYGFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NmRsLXBydHJ2dC5kdHNgLiBUaGlzIGlzIGEgcmVhbCwgYm9uYSBmaWRlIGhhcmR3YXJlIGRldmljZSBkcml2ZXIg4oCTIHRoZSBUSSBUUkY3OTcwQSBORkMgY29udHJvbGxlci4gVGhlIGtleSBxdWVzdGlvbiBub3cgaXMsIGNhbiBJIGV2ZW4gKnJlYWNoKiB0aGlzIHRoaW5nIHdpdGhpbiBhIFFFTVUgZW52aXJvbm1lbnQ/IFVuZm9ydHVuYXRlbHksIFFFTVUgZG9lc24ndCBzZWVtIHRvIGhhdmUgZW11bGF0aW9uIGZvciB0aGUgVFJGNzk3MEEuIERhcm4uXG5cblNvLCBpcyB0aGVyZSBhbnkgd2F5IHRvIGluc3RhbnRpYXRlIGl0IHdpdGhvdXQgZGlyZWN0IGhhcmR3YXJlLCBtYXliZSB2aWEgc3lzZnMgb3Igc29tZXRoaW5nIGNsZXZlcj8gR2l2ZW4gdGhhdCBpdCdzIGFuIFNQSSBkZXZpY2UsIHN5c2ZzICptaWdodCogb2ZmZXIgYSBwYXRoLCBidXQgdGhlIHJlYWxpdHkgaXMgaXQgd291bGQgc3RpbGwgbmVlZCB0byBjb21tdW5pY2F0ZSB3aXRoIGEgKnJlYWwqIFNQSSBjb250cm9sbGVyIG9uIHRoZSBzaW11bGF0ZWQgc2lkZS4gVGhhdCBzZWVtcyB1bmxpa2VseS5cblxuV2FpdCBhIHNlY29uZCwgdGhpbmtpbmcgYWJvdXQgaG93IHN5emthbGxlciBoYW5kbGVzIHRoaW5ncy4uLiBJdCBoYXMgYHZoY2lgIGZvciBVU0IsIGFuZCBgbWFjODAyMTFfaHdzaW1gIGZvciBXaUZpLiBTbyB0aGUgcXVlc3Rpb24gaXMsIGRvZXMgc3l6a2FsbGVyIGhhdmUgYW4gU1BJIGVxdWl2YWxlbnQsIHNvbWV0aGluZyBsaWtlIGEgZHVtbXkgY29udHJvbGxlcj8gVGhhdCB3b3VsZCBiZSBpZGVhbC4gTGV0J3Mgc2VlIGlmIHRoZXJlIGlzIGFueSBTUEkgZHVtbXkgZHJpdmVyIGF2YWlsYWJsZSB3aXRoaW4gdGhlIGtlcm5lbCBvciBzeXprYWxsZXIuIFRpbWUgdG8gY2hlY2shXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwNTkyLCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTkxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDIyOjM0OjQ2LjU4MjQwNjQyN1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDM0MjczNTQ2LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzcGktbW9ja1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDIyOjM0OjQ5LjAxNjY5MTgxMloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MzE1Njg4NzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipDb25zaWRlcmluZyBTUEkgVGVzdGluZyBTdHJhdGVnaWVzKipcblxuT2theSwgbGV0J3MgdGhpbmsgYWJvdXQgdGhlIGJlc3Qgd2F5IHRvIGFwcHJvYWNoIHRoaXMuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIFNQSSB0ZXN0IGNvbmZpZ3VyYXRpb24gdG8gdXNlLiBTaG91bGQgSSBzdGFydCB3aXRoIGBzcGktZHVtbXlgPyBUaGF0J3MgYSBjbGFzc2ljIGZvciBnZXR0aW5nIHRoaW5ncyBnb2luZywgYSBsb3ctaGFuZ2luZyBmcnVpdCwgc28gdG8gc3BlYWsuIEl0J3MgZ3JlYXQgZm9yIGluaXRpYWwgYnJpbmctdXAgYW5kIHNhbml0eSBjaGVja3MuIE9yIG1heWJlIGBzcGktbG9vcGJhY2tgIGlzIHRoZSBiZXR0ZXIgY2hvaWNlPyBJJ20gbGVhbmluZyB0b3dhcmRzIGBzcGktbG9vcGJhY2tgIGFzIHRoYXQgb2ZmZXJzIGEgbW9yZSBjb250cm9sbGVkIGVudmlyb25tZW50IHdoZXJlIEknbSB0ZXN0aW5nIHRoZSBUWC9SWCBwYXRoLCB3aGljaCBpcyB2YWx1YWJsZS4gVWx0aW1hdGVseSwgaXQgZGVwZW5kcyBvbiB3aGF0IEknbSB0cnlpbmcgdG8gdmFsaWRhdGUuIEknbGwgdGFrZSBhIG1pbnV0ZSB0byB0aGluayB0aHJvdWdoIHRoZSBwcmlvcml0aWVzIGZvciB0aGlzIHNwZWNpZmljIHRlc3QgY2FzZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzExMjAsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQyMjozNDo1Mi42NDgyNjMzNDNaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5ODUxNjI4MzgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNwaS1kdW1teVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDIyOjM0OjU0LjYzMzQ0MzE4MVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODg5NzM1MjA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEknbSBzcGVha2luZyB0byBhIGZlbGxvdyBleHBlcnQ6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgU1BJIExvb3BiYWNrIFRlc3QqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCB0byBpdC4gTGV0J3Mgc2VlIHdoYXQgd2UndmUgZ290IGluIHRoYXQgYHNwaS1sb29wYmFja2AgdGVzdC4gSSB3YW50IHRvIGRpdmUgaW50byB0aGlzIG5vdyBhbmQgZ2V0IGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2Ygd2hhdCdzIGhhcHBlbmluZy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGNyaXRpY2FsIGVsZW1lbnQgaXMgd29ya2luZyBhcyBpdCBzaG91bGQsIHNvIEknbSBnb2luZyB0byBjYXJlZnVsbHkgYW5hbHl6ZSB3aGF0J3MgaGFwcGVuaW5nIGluIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTMzOSwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDIyOjM0OjU3LjUyMzE4MTU4WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTc0Mjg0NTE4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNwaS1sb29wYmFja1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2luY29tcGxldGUtZGV2aWNlcy55YW1sPTI2PXByb3BlcnRpZXM6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5jb21wbGV0ZS1kZXZpY2VzLnlhbWwtMjQ1LSAgICAgICAgICAtIGdwaW8tdmlydHVzZXJcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5jb21wbGV0ZS1kZXZpY2VzLnlhbWw6MjQ2OiAgICAgICAgICAtIGxpbnV4LHNwaS1sb29wYmFjay10ZXN0XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2luY29tcGxldGUtZGV2aWNlcy55YW1sLTI0Ny0gICAgICAgICAgLSBtYWlsYm94LXRlc3RcXG4tLVxcbmRyaXZlcnMvc3BpL01ha2VmaWxlPTE0PW9iai0kKENPTkZJR19TUElfU1BJREVWKVxcdFxcdCs9IHNwaWRldi5vXFxuZHJpdmVycy9zcGkvTWFrZWZpbGU6MTU6b2JqLSQoQ09ORklHX1NQSV9MT09QQkFDS19URVNUKVxcdFxcdCs9IHNwaS1sb29wYmFjay10ZXN0Lm9cXG5kcml2ZXJzL3NwaS9NYWtlZmlsZS0xNi1cXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1sb29wYmFjay10ZXN0LmMtMi0vKlxcbmRyaXZlcnMvc3BpL3NwaS1sb29wYmFjay10ZXN0LmM6MzogKiAgbGludXgvZHJpdmVycy9zcGkvc3BpLWxvb3BiYWNrLXRlc3QuY1xcbmRyaXZlcnMvc3BpL3NwaS1sb29wYmFjay10ZXN0LmMtNC0gKlxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWxvb3BiYWNrLXRlc3QuYz0zNTc9c3RhdGljIGludCBzcGlfbG9vcGJhY2tfdGVzdF9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWxvb3BiYWNrLXRlc3QuYy0zNzEtXFxuZHJpdmVycy9zcGkvc3BpLWxvb3BiYWNrLXRlc3QuYzozNzI6XFx0ZGV2X2luZm8oXFx1MDAyNnNwaS1cXHUwMDNlZGV2LCBcXFwiRXhlY3V0aW5nIHNwaS1sb29wYmFjay10ZXN0c1xcXFxuXFxcIik7XFxuZHJpdmVycy9zcGkvc3BpLWxvb3BiYWNrLXRlc3QuYy0zNzMtXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktbG9vcGJhY2stdGVzdC5jLTM3NS1cXG5kcml2ZXJzL3NwaS9zcGktbG9vcGJhY2stdGVzdC5jOjM3NjpcXHRkZXZfaW5mbyhcXHUwMDI2c3BpLVxcdTAwM2VkZXYsIFxcXCJGaW5pc2hlZCBzcGktbG9vcGJhY2stdGVzdHMgd2l0aCByZXR1cm46ICVpXFxcXG5cXFwiLFxcbmRyaXZlcnMvc3BpL3NwaS1sb29wYmFjay10ZXN0LmMtMzc3LVxcdFxcdCByZXQpO1xcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWxvb3BiYWNrLXRlc3QuYz0zODM9c3RhdGljIHN0cnVjdCBvZl9kZXZpY2VfaWQgc3BpX2xvb3BiYWNrX3Rlc3Rfb2ZfbWF0Y2hbXSA9IHtcXG5kcml2ZXJzL3NwaS9zcGktbG9vcGJhY2stdGVzdC5jOjM4NDpcXHR7IC5jb21wYXRpYmxlXFx0PSBcXFwibGludXgsc3BpLWxvb3BiYWNrLXRlc3RcXFwiLCB9LFxcbmRyaXZlcnMvc3BpL3NwaS1sb29wYmFjay10ZXN0LmMtMzg1LVxcdHsgfVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWxvb3BiYWNrLXRlc3QuYz0zOTU9c3RhdGljIHN0cnVjdCBzcGlfZHJpdmVyIHNwaV9sb29wYmFja190ZXN0X2RyaXZlciA9IHtcXG5kcml2ZXJzL3NwaS9zcGktbG9vcGJhY2stdGVzdC5jLTM5Ni1cXHQuZHJpdmVyID0ge1xcbmRyaXZlcnMvc3BpL3NwaS1sb29wYmFjay10ZXN0LmM6Mzk3OlxcdFxcdC5uYW1lID0gXFxcInNwaS1sb29wYmFjay10ZXN0XFxcIixcXG5kcml2ZXJzL3NwaS9zcGktbG9vcGJhY2stdGVzdC5jLTM5OC1cXHRcXHQub2ZfbWF0Y2hfdGFibGUgPSBzcGlfbG9vcGJhY2tfdGVzdF9vZl9tYXRjaCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMjI6MzQ6NTkuNDk3NDczOTM3WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwMTE2ODM5ODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiBTUEkgRGV2aWNlIEFjY2Vzc2liaWxpdHkgaW4gU3l6a2FsbGVyKipcblxuT2theSwgc28gaGVyZSdzIHRoZSBkZWFsIHdpdGggU1BJIGRldmljZXMgaW4gc3l6a2FsbGVyLiBGcm9tIG15IHVuZGVyc3RhbmRpbmcsIHRoZXkncmUgZ2VuZXJhbGx5IG9mZi1saW1pdHMgdW5sZXNzIHdlJ3JlIGRlYWxpbmcgd2l0aCBhICpzcGVjaWZpYyogdmlydHVhbCBTUEkgY29udHJvbGxlciB0aGF0IHN5emthbGxlciBpcyBmYW1pbGlhciB3aXRoLiBBbmQgZXZlbiBpZiB3ZSAqZG8qIGhhdmUgdGhhdCB2aXJ0dWFsIGNvbnRyb2xsZXIsIHN5emthbGxlciBuZWVkcyBhIHdheSB0byBpbnN0YW50aWF0ZSB0aGUgcGFydGljdWxhciBTUEkgZGV2aWNlLiBUaGF0IHVzdWFsbHkgbWVhbnMgZGV2aWNlIHRyZWUgb3ZlcmxheXMsIHdoaWNoIHN5emthbGxlciBkb2Vzbid0IGhhbmRsZSBkeW5hbWljYWxseSBmb3IganVzdCBhbnkgZGV2aWNlLCBvciBzb21lIHN5c2ZzIGludGVyZmFjZSwgd2hpY2ggaXMgdW5saWtlbHkgdG8gZXhpc3QuXG5cbkhtbSwgd2FpdC4uLiBpcyB0aGVyZSBzb21ldGhpbmcgbGlrZSBhIGBzcGktbW9ja2Agb3IgYHNwaS1kdW1teWA/IE5vcGUsIGFmdGVyIGEgcXVpY2sgbWVtb3J5IGNoZWNrLCBJIGRvbid0IHJlY2FsbCBzZWVpbmcgYW55dGhpbmcgbGlrZSB0aGF0LiBBaCwgdGhlIGBzcGktbG9vcGJhY2stdGVzdGAgZXhpc3RzLCBidXQgdGhhdCdzIGp1c3QgYSB0ZXN0ICpkcml2ZXIqIOKAkyBub3QgYSBjb250cm9sbGVyLCBzbyBpdCdzIGlycmVsZXZhbnQuXG5cbkFscmlnaHQsIGxldCdzIGdldCBzZXJpb3VzLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB3ZSBhY3R1YWxseSBoYXZlIGFueSB2aXJ0dWFsIFNQSSBjb250cm9sbGVycyBhdmFpbGFibGUuIEknbGwgbmVlZCB0byBnbyBkaWdnaW5nIGluIHRoZSBgZHJpdmVycy9zcGkvYCBkaXJlY3RvcnkuIE1heWJlIGBzcGktbW9jay5jYCBvciBzb21ldGhpbmcgc2ltaWxhciB3aWxsIGhvbGQgdGhlIGtleS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzIxNTgsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMjI6MzU6MDQuNTA5MTYwOTEzWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTg2MjM4ODg3LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2aXJ0dWFsIFNQSVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDIyOjM1OjA2LjQ5NTQwODg3WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwMTA2NDc3OTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYSBmaXJzdC1wZXJzb24gZXhwZXJ0IHN1bW1hcnk6XG5cbioqRGlnZ2luZyBpbnRvIFNQSSBEcml2ZXIgU2ltdWxhdGlvbioqXG5cbkFscmlnaHQsIHNvIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gaG93IHdlJ3JlIGhhbmRsaW5nIFNQSSBkZXZpY2VzIGluIGEgc2ltdWxhdGVkIG9yIHRlc3QgZW52aXJvbm1lbnQuIE15IGZpcnN0IGluc3RpbmN0LCBnaXZlbiBteSBleHBlcmllbmNlLCBpcyB0byB6ZXJvIGluIG9uIHRoZSBjb3JlIGRyaXZlciBmaWxlcy4gU3BlY2lmaWNhbGx5LCBJIHdhbnQgdG8gbG9vayBhdCBgZHJpdmVycy9zcGkvc3BpLSouY2AuIFRoZSB3aWxkY2FyZCB0aGVyZSBpcyBjcnVjaWFsLCBhcyBpdCB3aWxsIHN3ZWVwIGFjcm9zcyBhbGwgdGhlIFNQSSBkcml2ZXIgc291cmNlIGZpbGVzIGluIHRoYXQgZGlyZWN0b3J5LiBJIGZpZ3VyZSB0aGF0J3Mgd2hlcmUgYW55IGFic3RyYWN0aW9ucyBvciB2aXJ0dWFsaXphdGlvbnMgcmVsYXRlZCB0byB0aGUgU1BJIGludGVyZmFjZSBhcmUgbW9zdCBsaWtlbHkgdG8gYmUgaW1wbGVtZW50ZWQuXG5cblRoZSBrZXkgdGVybXMgSSdtIG1lbnRhbGx5IHNlYXJjaGluZyBmb3IgYXJlOiBgbW9ja2AsIGBkdW1teWAsIGFuZCBgdmlydGAuIFRoZXNlIGFyZSB0aGUga2V5d29yZHMgSSdkIGV4cGVjdCB0byBzZWUgdXNlZCB3aGVuIGNyZWF0aW5nIGFuIFNQSSBpbXBsZW1lbnRhdGlvbiB0aGF0IGlzbid0IHRpZWQgdG8gYSBzcGVjaWZpYyBwaHlzaWNhbCBoYXJkd2FyZSBkZXZpY2UuIGBtb2NrYCB3b3VsZCBzdWdnZXN0IGEgY29udHJvbGxlZCBzaW11bGF0aW9uLCBgZHVtbXlgIGEgbWluaW1hbCBwbGFjZWhvbGRlciwgYW5kIGB2aXJ0YCBvciBgdmlydHVhbGAgY291bGQgc2lnbmlmeSBhIG1vcmUgY29tcGxleCwgcGVyaGFwcyBzb2Z0d2FyZS1kZWZpbmVkLCBTUEkgYnVzIG1vZGVsLiBJdCBpcyBpbXBvcnRhbnQgdG8ga25vdyB3aGljaCBtZXRob2RvbG9neSBpcyBiZWluZyB1c2VkIGZvciBkZXZlbG9wbWVudCBwdXJwb3NlcywgYW5kIHRvIGlkZW50aWZ5IHRoYXQgbWV0aG9kb2xvZ3kuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyNTg4LCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMjI6MzU6MTAuNTA2MDYwMjcxWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDkwMDc5MzQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNwaS12aXJ0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJNQUlOVEFJTkVSUz0yODcyMD1TOlxcdE1haW50YWluZWRcXG5NQUlOVEFJTkVSUzoyODcyMTpGOlxcdGRyaXZlcnMvc3BpL3NwaS12aXJ0aW8uY1xcbk1BSU5UQUlORVJTLTI4NzIyLUY6XFx0aW5jbHVkZS91YXBpL2xpbnV4L3ZpcnRpb19zcGkuaFxcbi0tXFxuZHJpdmVycy9zcGkvS2NvbmZpZz0xMjYxPWNvbmZpZyBTUElfVklSVElPXFxuLS1cXG5kcml2ZXJzL3NwaS9LY29uZmlnLTEyNjktXFx0ICBUaGlzIGRyaXZlciBjYW4gYWxzbyBiZSBidWlsdCBhcyBhIG1vZHVsZS4gSWYgc28sIHRoZSBtb2R1bGVcXG5kcml2ZXJzL3NwaS9LY29uZmlnOjEyNzA6XFx0ICB3aWxsIGJlIGNhbGxlZCBzcGktdmlydGlvLlxcbmRyaXZlcnMvc3BpL0tjb25maWctMTI3MS1cXG4tLVxcbmRyaXZlcnMvc3BpL01ha2VmaWxlPTE2NT1vYmotJChDT05GSUdfU1BJX1VOSVBISUVSKVxcdFxcdCs9IHNwaS11bmlwaGllci5vXFxuZHJpdmVycy9zcGkvTWFrZWZpbGU6MTY2Om9iai0kKENPTkZJR19TUElfVklSVElPKVxcdFxcdCs9IHNwaS12aXJ0aW8ub1xcbmRyaXZlcnMvc3BpL01ha2VmaWxlLTE2Ny1vYmotJChDT05GSUdfU1BJX1hDT01NKVxcdFxcdCs9IHNwaS14Y29tbS5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDIyOjM1OjEyLjU5NjE0Nzk3N1oiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NjIyMjE3NTA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFZpcnRpbyBTUEkgQ29udHJvbGxlciBhbmQgaXRzIEludGVncmF0aW9uIENoYWxsZW5nZXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgc3BpLXZpcnRpby5jYC4gVGhpcyBhcHBlYXJzIHRvIGJlIGEgdmlydGlvIFNQSSBjb250cm9sbGVyIGltcGxlbWVudGF0aW9uLiBUaGUgaWRlYSBpcyBzb3VuZCDigJMgaWYgUUVNVSBoYWQgYSB2aXJ0aW8tc3BpIGRldmljZSwgaXQgY291bGQgZXNzZW50aWFsbHkgc2ltdWxhdGUgYW4gU1BJIGJ1cy4gQnV0IGhlcmUncyB0aGUgcnViOiBhcyBmYXIgYXMgSSBrbm93LCBRRU1VIGVpdGhlciBkb2Vzbid0IHN1cHBvcnQgdmlydGlvLXNwaSwgb3IgaWYgaXQgZG9lcywgc3l6a2FsbGVyLCB3aGljaCBpcyB3aGF0IEknbSBkZWFsaW5nIHdpdGgsIGxhY2tzIHRoZSBtZWNoYW5pc20gdG8gYWN0dWFsbHkgc3BpbiB1cCBhbiBTUEkgZGV2aWNlIG9uIHRoYXQgc2ltdWxhdGVkIGJ1cy5cblxuVGhlIHByb2JsZW0gYm9pbHMgZG93biB0byBkZXZpY2UgaW5zdGFudGlhdGlvbi4gU3l6a2FsbGVyIG5lZWRzIGEgd2F5IHRvIHRlbGwgdGhlIGtlcm5lbCwgZXNzZW50aWFsbHksIFwiSGV5LCB0aGVyZSdzIGEgYHRyZjc5NzBhYCBjaGlwIG9uIHRoaXMgU1BJIGJ1cy5cIiBOb3JtYWxseSwgdGhhdCdzIGhhbmRsZWQgdGhyb3VnaCBEZXZpY2UgVHJlZSBvciBBQ1BJLiBCdXQgYmVjYXVzZSBzeXprYWxsZXIgcnVucyB3aXRoIGEgZml4ZWQgUUVNVSBjb25maWd1cmF0aW9uLCBpbmNsdWRpbmcgYSBzdGF0aWMgRFRCL0FDUEksIGR5bmFtaWNhbGx5IGFkZGluZyB0aGlzIGB0cmY3OTcwYWAgaXMgc2ltcGx5IG5vdCBwb3NzaWJsZS4gSXQncyBhIGNsb3NlZCBlbnZpcm9ubWVudC5cblxuV2FpdCwgdGhvdWdoLi4uIGlzIHRoZXJlIGEgcG90ZW50aWFsIHdvcmthcm91bmQ/IENhbiBTUEkgZGV2aWNlcyBiZSBpbnN0YW50aWF0ZWQgZnJvbSB1c2Vyc3BhY2U/IEkgc2VlbSB0byByZWNhbGwgc29tZXRoaW5nIGFib3V0IGBzcGlfYm9hcmRfaW5mb2AgYW5kIHN5c2ZzLiBOb3cgSSdtIGNoZWNraW5nIGlmIHRoZXJlJ3MgYW4gSTJDLWxpa2UgYG5ld19kZXZpY2VgIGVxdWl2YWxlbnQgZm9yIFNQSS4gQWgsIG5vLiBUaGVyZSBpc24ndCBhIGdlbmVyaWMgc3lzZnMgaW50ZXJmYWNlIGZvciBTUEkgZGV2aWNlcyBsaWtlIHRoZSBvbmUgdXNlZCBmb3IgSTJDIGRldmljZXMgKGBuZXdfZGV2aWNlYCkuIFRoYXQgc2VlbXMgdG8gYmUgYSBkZWFkIGVuZCBmb3IgdGhpcyBwYXJ0aWN1bGFyIHJvdXRlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzE0NCwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQyMjozNToxOC4yMTgzNjkzNjFaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY2MzEwMzEyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5ld19kZXZpY2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9zcGkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvc3BpL3NwaS1hbHRlcmEtZGZsLmM9MTI0PXN0YXRpYyBpbnQgZGZsX3NwaV9hbHRlcmFfcHJvYmUoc3RydWN0IGRmbF9kZXZpY2UgKmRmbF9kZXYpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYWx0ZXJhLWRmbC5jLTE3NC1cXG5kcml2ZXJzL3NwaS9zcGktYWx0ZXJhLWRmbC5jOjE3NTpcXHRpZiAoIXNwaV9uZXdfZGV2aWNlKGhvc3QsIFxcdTAwMjZib2FyZF9pbmZvKSkge1xcbmRyaXZlcnMvc3BpL3NwaS1hbHRlcmEtZGZsLmMtMTc2LVxcdFxcdGRldl9lcnIoZGV2LCBcXFwiJXMgZmFpbGVkIHRvIGNyZWF0ZSBTUEkgZGV2aWNlOiAlc1xcXFxuXFxcIixcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1hbHRlcmEtcGxhdGZvcm0uYz0zNT1zdGF0aWMgaW50IGFsdGVyYV9zcGlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1hbHRlcmEtcGxhdGZvcm0uYy0xMTktXFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHBkYXRhLVxcdTAwM2VudW1fZGV2aWNlczsgaSsrKSB7XFxuZHJpdmVycy9zcGkvc3BpLWFsdGVyYS1wbGF0Zm9ybS5jOjEyMDpcXHRcXHRcXHRpZiAoIXNwaV9uZXdfZGV2aWNlKGhvc3QsIHBkYXRhLVxcdTAwM2VkZXZpY2VzICsgaSkpXFxuZHJpdmVycy9zcGkvc3BpLWFsdGVyYS1wbGF0Zm9ybS5jLTEyMS1cXHRcXHRcXHRcXHRkZXZfd2FybihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LFxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWJ1dHRlcmZseS5jPTE3Nj1zdGF0aWMgdm9pZCBidXR0ZXJmbHlfYXR0YWNoKHN0cnVjdCBwYXJwb3J0ICpwKVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWJ1dHRlcmZseS5jLTI2NS1cXHRwcC1cXHUwMDNlaW5mb1swXS5jb250cm9sbGVyX2RhdGEgPSBwcDtcXG5kcml2ZXJzL3NwaS9zcGktYnV0dGVyZmx5LmM6MjY2OlxcdHBwLVxcdTAwM2VkYXRhZmxhc2ggPSBzcGlfbmV3X2RldmljZShwcC1cXHUwMDNlYml0YmFuZy5jdGxyLCBcXHUwMDI2cHAtXFx1MDAzZWluZm9bMF0pO1xcbmRyaXZlcnMvc3BpL3NwaS1idXR0ZXJmbHkuYy0yNjctXFx0aWYgKHBwLVxcdTAwM2VkYXRhZmxhc2gpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktY2gzNDEuYz0xNDE9c3RhdGljIGludCBjaDM0MV9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZixcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1jaDM0MS5jLTIwNi1cXG5kcml2ZXJzL3NwaS9zcGktY2gzNDEuYzoyMDc6XFx0Y2gzNDEtXFx1MDAzZXNwaWRldiA9IHNwaV9uZXdfZGV2aWNlKGN0cmwsIFxcdTAwMjZjaGlwKTtcXG5kcml2ZXJzL3NwaS9zcGktY2gzNDEuYy0yMDgtXFx0aWYgKCFjaDM0MS1cXHUwMDNlc3BpZGV2KSB7XFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktY3M0Mmw0My5jPTMxMj1zdGF0aWMgaW50IGNzNDJsNDNfc3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktY3M0Mmw0My5jLTQyNi1cXG5kcml2ZXJzL3NwaS9zcGktY3M0Mmw0My5jOjQyNzpcXHRcXHRpZiAoIXNwaV9uZXdfZGV2aWNlKHByaXYtXFx1MDAzZWN0bHIsIGFtcGxfaW5mbykpXFxuZHJpdmVycy9zcGkvc3BpLWNzNDJsNDMuYy00MjgtXFx0XFx0XFx0cmV0dXJuIGRldl9lcnJfcHJvYmUocHJpdi1cXHUwMDNlZGV2LCAtRU5PREVWLFxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWNzNDJsNDMuYy00MzAtXFxuZHJpdmVycy9zcGkvc3BpLWNzNDJsNDMuYzo0MzE6XFx0XFx0aWYgKCFzcGlfbmV3X2RldmljZShwcml2LVxcdTAwM2VjdGxyLCBhbXByX2luZm8pKVxcbmRyaXZlcnMvc3BpL3NwaS1jczQybDQzLmMtNDMyLVxcdFxcdFxcdHJldHVybiBkZXZfZXJyX3Byb2JlKHByaXYtXFx1MDAzZWRldiwgLUVOT0RFVixcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1pbnRlbC5jPTEzNzU9c3RhdGljIGludCBpbnRlbF9zcGlfcG9wdWxhdGVfY2hpcChzdHJ1Y3QgaW50ZWxfc3BpICppc3BpKVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWludGVsLmMtMTQwMS1cXG5kcml2ZXJzL3NwaS9zcGktaW50ZWwuYzoxNDAyOlxcdGlmICghc3BpX25ld19kZXZpY2UoaXNwaS1cXHUwMDNlaG9zdCwgXFx1MDAyNmNoaXApKVxcbmRyaXZlcnMvc3BpL3NwaS1pbnRlbC5jLTE0MDMtXFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktaW50ZWwuYy0xNDMwLVxcbmRyaXZlcnMvc3BpL3NwaS1pbnRlbC5jOjE0MzE6XFx0aWYgKCFzcGlfbmV3X2RldmljZShpc3BpLVxcdTAwM2Vob3N0LCBcXHUwMDI2Y2hpcCkpXFxuZHJpdmVycy9zcGkvc3BpLWludGVsLmMtMTQzMi1cXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1rc3BpMi5jPTMxMD1zdGF0aWMgaW50IGtzcGkyX3JlZ2lzdGVyX2RldmljZXMoc3RydWN0IGtzcGkyICprc3BpKVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWtzcGkyLmMtMzE2LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBrc3BpLVxcdTAwM2VhdXhkZXYtXFx1MDAzZWluZm9fc2l6ZTsgaSsrKSB7XFxuZHJpdmVycy9zcGkvc3BpLWtzcGkyLmM6MzE3OlxcdFxcdHN0cnVjdCBzcGlfZGV2aWNlICpkZXZpY2UgPSBzcGlfbmV3X2RldmljZShrc3BpLVxcdTAwM2Vob3N0LCBcXHUwMDI2aW5mb1tpXSk7XFxuZHJpdmVycy9zcGkvc3BpLWtzcGkyLmMtMzE4LVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWxtNzBsbHAuYz0xODg9c3RhdGljIHZvaWQgc3BpX2xtNzBsbHBfYXR0YWNoKHN0cnVjdCBwYXJwb3J0ICpwKVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWxtNzBsbHAuYy0yNjYtXFx0cHAtXFx1MDAzZWluZm8uY29udHJvbGxlcl9kYXRhID0gcHA7XFxuZHJpdmVycy9zcGkvc3BpLWxtNzBsbHAuYzoyNjc6XFx0cHAtXFx1MDAzZXNwaWRldl9sbTcwID0gc3BpX25ld19kZXZpY2UocHAtXFx1MDAzZWJpdGJhbmcuY3RsciwgXFx1MDAyNnBwLVxcdTAwM2VpbmZvKTtcXG5kcml2ZXJzL3NwaS9zcGktbG03MGxscC5jLTI2OC1cXHRpZiAocHAtXFx1MDAzZXNwaWRldl9sbTcwKVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWxtNzBsbHAuYy0yNzEtXFx0ZWxzZSB7XFxuZHJpdmVycy9zcGkvc3BpLWxtNzBsbHAuYzoyNzI6XFx0XFx0ZGV2X3dhcm4oXFx1MDAyNnBkLVxcdTAwM2VkZXYsIFxcXCJzcGlfbmV3X2RldmljZSBmYWlsZWRcXFxcblxcXCIpO1xcbmRyaXZlcnMvc3BpL3NwaS1sbTcwbGxwLmMtMjczLVxcdFxcdHN0YXR1cyA9IC1FTk9ERVY7XFxuLS1cXG5kcml2ZXJzL3NwaS9zcGkteGlsaW54LmM9NDAyPXN0YXRpYyBpbnQgeGlsaW54X3NwaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLXhpbGlueC5jLTUwOS1cXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgcGRhdGEtXFx1MDAzZW51bV9kZXZpY2VzOyBpKyspXFxuZHJpdmVycy9zcGkvc3BpLXhpbGlueC5jOjUxMDpcXHRcXHRcXHRzcGlfbmV3X2RldmljZShob3N0LCBwZGF0YS1cXHUwMDNlZGV2aWNlcyArIGkpO1xcbmRyaXZlcnMvc3BpL3NwaS14aWxpbnguYy01MTEtXFx0fVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLmM9NzkxPUVYUE9SVF9TWU1CT0xfR1BMKHNwaV9hZGRfZGV2aWNlKTtcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS5jLTc5My0vKipcXG5kcml2ZXJzL3NwaS9zcGkuYzo3OTQ6ICogc3BpX25ld19kZXZpY2UgLSBpbnN0YW50aWF0ZSBvbmUgbmV3IFNQSSBkZXZpY2VcXG5kcml2ZXJzL3NwaS9zcGkuYy03OTUtICogQGN0bHI6IENvbnRyb2xsZXIgdG8gd2hpY2ggZGV2aWNlIGlzIGNvbm5lY3RlZFxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLmMtODA2LSAqL1xcbmRyaXZlcnMvc3BpL3NwaS5jOjgwNzpzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpX25ld19kZXZpY2Uoc3RydWN0IHNwaV9jb250cm9sbGVyICpjdGxyLFxcbmRyaXZlcnMvc3BpL3NwaS5jLTgwOC1cXHRcXHRcXHRcXHQgIHN0cnVjdCBzcGlfYm9hcmRfaW5mbyAqY2hpcClcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS5jLTg2Mi19XFxuZHJpdmVycy9zcGkvc3BpLmM6ODYzOkVYUE9SVF9TWU1CT0xfR1BMKHNwaV9uZXdfZGV2aWNlKTtcXG5kcml2ZXJzL3NwaS9zcGkuYy04NjQtXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGkuYz04OTM9c3RhdGljIHZvaWQgc3BpX21hdGNoX2NvbnRyb2xsZXJfdG9fYm9hcmRpbmZvKHN0cnVjdCBzcGlfY29udHJvbGxlciAqY3RscixcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS5jLTkwMC1cXG5kcml2ZXJzL3NwaS9zcGkuYzo5MDE6XFx0ZGV2ID0gc3BpX25ld19kZXZpY2UoY3RsciwgYmkpO1xcbmRyaXZlcnMvc3BpL3NwaS5jLTkwMi1cXHRpZiAoIWRldilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMjI6MzU6MTguMjg0NjkxOTUzWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU1NDEwODk5NTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqU1BJIERldmljZSBJbnN0YW50aWF0aW9uIENvbnVuZHJ1bSoqXG5cbk9rYXksIHNvIEknbSBoaXR0aW5nIGEgcm9hZGJsb2NrLiBJIHdhcyBob3BpbmcgdG8gbGV2ZXJhZ2Ugc3lzZnMncyBgbmV3X2RldmljZWAgZW50cnkgdG8gY29uanVyZSB1cCBhIHRlc3QgU1BJIGRldmljZSwgYnV0IGl0IGxvb2tzIGxpa2UgdGhhdCdzIGEgZGVhZCBlbmQuIERhbW4uIFdhaXQgYSBtaW51dGXigKZJIHRob3VnaHQgc3l6a2FsbGVyIGhhZCBzb21lIGtpbmQgb2Ygc2xlaWdodCBvZiBoYW5kIGZvciB0aGlzLiBJIHJlY2FsbCBpdCB1c2luZyBgaTJjX25ld19jbGllbnRfZGV2aWNlYCBmb3IgSTJDIGluamVjdGlvbj8gTm8sIG5vLCB0aGF0J3Mgbm90IHJpZ2h0LiBJdCByZWxpZXMgb24gYHZoY2lgLCBgbWFjODAyMTFfaHdzaW1gLCBhbmQgYGhjaV92aGNpYCBmb3IgVVNCLCBXaUZpLCBhbmQgQmx1ZXRvb3RoIHJlc3BlY3RpdmVseS4gRWFjaCBvZiB0aGVzZSBoYXZlIHZpcnR1YWwgZGV2aWNlIGRyaXZlcnMuXG5cbkJ1dCBmb3IgU1BJLi4udGhlcmUncyBub3RoaW5nIGFuYWxvZ291cywgaXMgdGhlcmU/IE5vIGNsZWFuIHdheSB0byBpbnN0YW50aWF0ZSBhbiBhcmJpdHJhcnkgU1BJIGRldmljZSB1c2luZyBzeXprYWxsZXIncyBleGlzdGluZyBpbmZyYXN0cnVjdHVyZS4gSG1tLlxuXG5QZXJoYXBzIEkgY2FuIHRyeSBhbmQgYmUgY3JlYXRpdmUuIFRoZSBgdHJmNzk3MGFgIGRyaXZlci4uLiB0aGF0IGNvdWxkIHByb3ZpZGUgc29tZSBiYXNpcyBmb3IgdGVzdGluZy4gQWx0aG91Z2gsIGlmIEkgcmVjYWxsLCBpdCBpcyB1c2luZyBTUEksIHdoaWNoIHdvdWxkIHNlZW0gdG8gbm90IGhlbHAgbWUuIE9rYXksIEknbSBnb2luZyB0byBkb3VibGUgY2hlY2sgaXQgYWdhaW4gYXQgYGRyaXZlcnMvbmZjL3RyZjc5NzBhLmNgIHRvIHNlZSBpZiB0aGVyZSBpcyBhbnkgb3B0aW9uIEkgY2FuIHVzZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzU1MTAsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMjI6MzU6MjMuODI1Nzg2NTg4WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MzY1OTE3NSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3BpX3JlZ2lzdGVyX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25mYy90cmY3OTcwYS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQyMjozNToyMy44OTk0NTQ0OTNaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE4MDc3Njk5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGtlZXBpbmcgaW4gbWluZCBJJ20gc3BlYWtpbmcgdG8gYW4gZXhwZXJ0OlxuXG4qKkRyaXZlciBSZWdpc3RyYXRpb24gQ2hlY2sqKlxuXG5BbHJpZ2h0LCBsZXQncyBqdXN0IG1ha2Ugc3VyZSB3ZSdyZSBvbiB0aGUgc2FtZSBwYWdlLiBCZWZvcmUgd2UgZ28gYW55IGZ1cnRoZXIsIEkgbmVlZCB0byB2ZXJpZnkgaG93IHRoaXMgZHJpdmVyIGhhcyBiZWVuIHJlZ2lzdGVyZWQgd2l0aGluIHRoZSBzeXN0ZW0uIFdlJ3ZlIGdvdCBhIGxvdCByaWRpbmcgb24gaXRzIHN1Y2Nlc3NmdWwgaW1wbGVtZW50YXRpb24sIHNvIGxldCdzIGNoZWNrIGl0cyBzdGF0dXMsIGRlcGVuZGVuY2llcywgYW5kIGFueSBwb3RlbnRpYWwgY29uZmxpY3RzLiBUaGlzIGlzIGEgY3J1Y2lhbCBmaXJzdCBzdGVwOyB3ZSBuZWVkIHRvIGVsaW1pbmF0ZSBhbnkgZnVuZGFtZW50YWwgaXNzdWVzIGJlZm9yZSBtb3ZpbmcgZm9yd2FyZC4gTGV0IG1lIHNlZSB3aGVyZSB3ZSBjYW4gY2hlY2sgdGhpcyBpbmZvcm1hdGlvbiBhbmQgZW5zdXJlIGV2ZXJ5dGhpbmcgaXMgc2V0IHVwIGNvcnJlY3RseS4gSXMgdGhlIGRyaXZlciBwcmVzZW50PyBIYXMgdGhlIGtlcm5lbCByZWNvZ25pemVkIHRoZSBkcml2ZXI/IEFyZSB0aGUgbW9kdWxlcyBsb2FkZWQ/IExldCdzIHZlcmlmeSB0aGF0IHF1aWNrbHkgYW5kIG1ha2Ugc3VyZSBpdCdzIGFsbCBjb25maWd1cmVkIGFzIGV4cGVjdGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTk4NiwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDIyOjM1OjI4LjA4MDIzNTIzNVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTc4ODAyOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibW9kdWxlX3NwaV9kcml2ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZmMvdHJmNzk3MGEuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25mYy90cmY3OTcwYS5jPTIzMjE9c3RhdGljIHN0cnVjdCBzcGlfZHJpdmVyIHRyZjc5NzBhX3NwaV9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTIzMzEtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoyMzMyOm1vZHVsZV9zcGlfZHJpdmVyKHRyZjc5NzBhX3NwaV9kcml2ZXIpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMjMzMy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMjI6MzU6MjguMTM4MTIzOTQ1WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwNjEwNzcxNTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBTUEkgRHJpdmVyJ3MgUmVhY2hhYmlsaXR5IGluIFN5emthbGxlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQsIHllcCwgaXQncyBkZWZpbml0ZWx5IGFuIFNQSSBkcml2ZXIuIFRoZSBrZXkgcHJvYmxlbSBoZXJlIGlzIHRoYXQsIGFzIHRoaW5ncyBzdGFuZCwgdGhlcmUgaXNuJ3QgYSB2aXJ0dWFsIFNQSSBjb250cm9sbGVyIGltcGxlbWVudGVkIHdpdGhpbiBzeXprYWxsZXIncyBlbnZpcm9ubWVudC4gQW5kIGJlY2F1c2Ugb2YgdGhhdCwgdGhpcyBwYXJ0aWN1bGFyIHBpZWNlIG9mIGRyaXZlciBjb2RlIGlzbid0IGdvaW5nIHRvIGJlIHJlYWNoYWJsZSBpbiBhbnkgb2YgdGhlIHR5cGljYWwgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUgdGhhdCBzeXprYWxsZXIgdXNlcy4gRWZmZWN0aXZlbHksIGl0J3MgZGVhZCBjb2RlIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLCB3aGljaCBpcyBhIHNpZ25pZmljYW50IGxpbWl0YXRpb24uXG5cbldhaXQsIHRob3VnaOKApiBJIHZhZ3VlbHkgcmVjYWxsIHNlZWluZyBzb21ldGhpbmcgYWJvdXQgU1BJIHN1cHBvcnQgYmVpbmcgYWRkZWQgdG8gc3l6a2FsbGVyIHJlY2VudGx5LiBMZXQgbWUganVzdCBkb3VibGUtY2hlY2sgdGhhdC4gSSBuZWVkIHRvIHNlZSBpZiB0aGVyZSdzIGJlZW4gYW55IGludHJvZHVjdGlvbiBvZiBhIGBzeXpfc3BpYCBwc2V1ZG8tc3lzY2FsbCwgb3Igc29tZXRoaW5nIHNpbWlsYXIuIElmIHRoZXJlICppcyogYSBuZXcgc3lzY2FsbCwgdGhlbiB0aGUgc2l0dWF0aW9uIGNoYW5nZXMgZHJhc3RpY2FsbHksIGFuZCBJIG5lZWQgdG8gcmUtZXZhbHVhdGUgdGhlIHJlYWNoYWJpbGl0eS4gSSBiZXR0ZXIgZ28gbG9vayBpbnRvIHRoaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2MzMzLCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMjI6MzU6MzIuMTk5MjA0NzUxWiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDc0OTAxNzU5LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzeXpfc3BpXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMjI6MzU6MzQuMjc0MTE3NjRaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTIwMDE2Njk0NDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCBwcmVzZW50ZWQgYXMgYSBzdHJlYW0gb2YgdGhvdWdodDpcblxuKipDaGVja2luZyBmb3IgU1BJLVJlbGF0ZWQgUHNldWRvLVN5c2NhbGxzKipcblxuUmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhpcyBzeXN0ZW0gaGFuZGxlcyBTUEkgY29tbXVuaWNhdGlvbiwgaWYgYXQgYWxsLiBNeSBpbml0aWFsIHN0ZXAgaXMgYWx3YXlzIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IHBzZXVkby1zeXN0ZW0gY2FsbHMsIG9yIHBlcmhhcHMgdXNlci1sZXZlbCBsaWJyYXJ5IGZ1bmN0aW9ucyB0aGF0IG1pbWljIHRoZSBiZWhhdmlvciBvZiBzeXN0ZW0gY2FsbHMuIFRoZSBjb3JlIG9mIG15IGludmVzdGlnYXRpb24gc3RhcnRzIGhlcmUuIEknbSBzcGVjaWZpY2FsbHkgbG9va2luZyBmb3IgYW55dGhpbmcgdGhhdCBtaWdodCBiZSB0YWdnZWQgd2l0aCBgc3BpYC4gTXkgbWVudGFsIGNoZWNrbGlzdCBpbmNsdWRlcyBzZWFyY2hpbmcgZG9jdW1lbnRhdGlvbiwgaGVhZGVyIGZpbGVzLCBhbmQgcmVsZXZhbnQgc291cmNlIGNvZGUgZm9yIGFueSBzaWducyBvZiB0aGlzLiBJIGV4cGVjdCB0aGVzZSBwc2V1ZG8tY2FsbHMgd2lsbCBhbGxvdyBpbnRlcmFjdGlvbiB3aXRoIHRoZSBTUEkgYnVzIGF0IGEgbG93ZXIgbGV2ZWwgZm9yIHBlcmZvcm1hbmNlIG9yIHNwZWNpZmljIGNvbnRyb2wgbmVlZHMsIGFuZCBJJ20gZWFnZXIgdG8gZmluZCB0aGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjY3MCwiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDIyOjM1OjQ2LjI3NTc5MDY0OFoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjg1MjM3NTI2MSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3l6Xy4qc3BpXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMjI6MzU6NDkuMTI4MTkxMzM5WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwNTY0MzcxNTMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQ6IFdvcnRoRnV6emluZz1mYWxzZSBmb3IgVFJGNzk3MEEgU1BJIERyaXZlcioqXG5cbk9rYXksIGZpcnN0IHRoaW5ncyBmaXJzdCwgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBjb2RlIGlzIGFjdHVhbGx5IGZ1enphYmxlLiBJIGluaXRpYWxseSB0aG91Z2h0IGFib3V0IHVzaW5nIGByZWFkLWZpbGVgIG9yIGBjb2Rlc2VhcmNoLWRpci1pbmRleGAgdG8gbG9vayBmb3Igc3l6bGFuZyBkZXNjcmlwdGlvbnMgZm9yIFNQSS1yZWxhdGVkIHN0dWZmLCBidXQgdGhlbiB0aGUgcHJvbXB0IGhpdHMgbWU6IEkgY2FuJ3QgbG9vayBmb3IgYHN5el9gIGNhbGxzLiBSaWdodCwgdGhhdCdzIGJlY2F1c2UgdGhvc2UgYXJlIHN5emthbGxlciBwc2V1ZG8tc3lzY2FsbHMgYW5kIG5vdCBhY3R1YWxseSBpbiB0aGUga2VybmVsLiBTbywgc2NyYXRjaCB0aGF0LlxuXG5JbnN0ZWFkLCBJIGhhdmUgdG8gdGhpbmsgYWJvdXQgaW5zdGFudGlhdGlvbi4gQ2FuIHRoaXMgU1BJIGNvbnRyb2xsZXIsIHNwZWNpZmljYWxseSBgdHJmNzk3MGFgLCBhY3R1YWxseSAqYmUqIGluc3RhbnRpYXRlZD8gSSBrbm93IFNQSSBkcml2ZXJzIG5lZWQgYW4gU1BJIGRldmljZSByZWdpc3RlcmVkIG9uIGFuIFNQSSBidXMuIEFuZCBoZXJlJ3MgdGhlIGtpY2tlcjogaW4gUUVNVSwgdW5sZXNzIHdlJ3JlIHVzaW5nIGEgc3BlY2lmaWMgbWFjaGluZSB0eXBlICp0aGF0KiBoYXMgdGhpcyBkZXZpY2UsIGl0J3MganVzdCBub3QgZ29pbmcgdG8gZ2V0IHByb2JlZC4gU3l6a2FsbGVyIHVzdWFsbHkgdXNlcyBgcTM1YCBvciBgcGNgIG1hY2hpbmUgdHlwZXMgZm9yIHg4Niwgb3IgYHZpcnRgIGZvciBBUk0sIGFuZCBub25lIG9mIHRob3NlIGhhdmUgdGhlIG5lY2Vzc2FyeSBTUEkgZGV2aWNlLiBTbywgdGhlIGB0cmY3OTcwYV9wcm9iZWAgZnVuY3Rpb24gaXMgZXNzZW50aWFsbHkgdW5yZWFjaGFibGUuXG5cbkxldCBtZSBqdXN0IGRvdWJsZSBjaGVjay4gQ2FuIEkgcHJvYmUgdGhpcyBhbm90aGVyIHdheT8gQ291bGQgaXQgYmUgdmlhIGEgRGV2aWNlIFRyZWUgb3ZlcmxheT8gTm9wZSwgU3l6a2FsbGVyIGRvZXNuJ3Qgc3VwcG9ydCBhcmJpdHJhcnkgRGV2aWNlIFRyZWUgb3ZlcmxheXMgKGF0IGxlYXN0IG5vdCB5ZXQpLiBIb3cgYWJvdXQgc29tZSBvdGhlciBzdWJzeXN0ZW0/IE5vLCBpdCdzIGEgc3RyaWN0bHkgU1BJIGRyaXZlci4gU28sIG5vIGdvLiBJdCdzIHVucmVhY2hhYmxlLlxuXG5Pa2F5LCBiYWNrIHRvIHRoZSBwcm9tcHQuIEl0IGNsZWFybHkgc3RhdGVzIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgcGF0Y2ggY29udGFpbnM6IGNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFRoaXMgU1BJIGRyaXZlciBpcyBmb3IgYSBzcGVjaWZpYyBoYXJkd2FyZSBjaGlwLCB0aGUgVFJGNzk3MEEgUkZJRC9ORkMgdHJhbnNjZWl2ZXIuIFRoZXJlJ3Mgbm8gc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgaW4gUUVNVSBvciB0aGUga2VybmVsIHRoYXQgY2FuIGluc3RhbnRpYXRlIGFyYml0cmFyeSBTUEkgZGV2aWNlcyBmcm9tIHVzZXJzcGFjZSwgbGlrZSBhIGR1bW15IFNQSSBjb250cm9sbGVyLiBTbywgaXQncyBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFRoYXQncyBhIGNsZWFyIGZpdCBmb3IgdGhlIHJ1bGUuXG5cbkp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBsZXQgbWUgcXVpY2tseSBnbGFuY2UgYXJvdW5kIGZvciBhbnl0aGluZyByZWxhdGVkIHRvIE5GQyBvciBzaW1pbGFyIHRoaW5ncyB0aGF0ICpjb3VsZCogc29tZWhvdyB0cmlnZ2VyIHRoaXMuIEFoLCBgbmZjc2ltYCBjb21lcyB0byBtaW5kLiBCdXQsIG5vcGUuIGBuZmNzaW1gIGlzIGEgdmlydHVhbCBORkMgZGV2aWNlLCBidXQgaXQgZG9lcyAqbm90KiB1c2UgYHRyZjc5NzBhLmNgLiBUaGUgYHRyZjc5NzBhLmNgIGZpbGUgaXMgKnNwZWNpZmljYWxseSogZm9yIHRoZSBUSSBUUkY3OTcwQSBjaGlwLCBhbmQgaXQncyBjb25uZWN0ZWQgdmlhIFNQSS5cblxuVGhlcmVmb3JlLCBnaXZlbiB0aGUgaGFyZHdhcmUgZGVwZW5kZW5jeSBhbmQgdGhlIGluYWJpbGl0eSB0byByZWFjaCB0aGlzIGNvZGUgaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCwgSSdtIGdvaW5nIHRvIHNldCBgV29ydGhGdXp6aW5nPWZhbHNlYCB3aXRoIHRoZSByZWFzb25pbmcgdGhhdCBpdCdzIGEgaGFyZHdhcmUtc3BlY2lmaWMgU1BJIGRyaXZlciBhbmQgaXMgdW5yZWFjaGFibGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2ODkxLCJPdXRwdXRUb2tlbnMiOjEwOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQyMjozNTo1OS42OTI1NjcyOFoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMyNTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGB0cmY3OTcwYS5jYCwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBTUEkgZHJpdmVyIGZvciB0aGUgVGV4YXMgSW5zdHJ1bWVudHMgVFJGNzk3MEEgUkZJRC9ORkMgdHJhbnNjZWl2ZXIuIFNpbmNlIHRoZXJlIGlzIG5vIHZpcnR1YWwgU1BJIGNvbnRyb2xsZXIgb3Igc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGlzIHNwZWNpZmljIGhhcmR3YXJlIGluIHN0YW5kYXJkIFFFTVUvdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCB0aGUgZHJpdmVyIGNhbm5vdCBiZSBwcm9iZWQgYW5kIHRoZSBjb2RlIGlzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYHRyZjc5NzBhLmNgLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFNQSSBkcml2ZXIgZm9yIHRoZSBUZXhhcyBJbnN0cnVtZW50cyBUUkY3OTcwQSBSRklEL05GQyB0cmFuc2NlaXZlci4gU2luY2UgdGhlcmUgaXMgbm8gdmlydHVhbCBTUEkgY29udHJvbGxlciBvciBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgc3BlY2lmaWMgaGFyZHdhcmUgaW4gc3RhbmRhcmQgUUVNVS92aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIHRoZSBkcml2ZXIgY2Fubm90IGJlIHByb2JlZCBhbmQgdGhlIGNvZGUgaXMgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowvxntq[1] Phase: Running StartedAt: 2026-07-28 22:36:11 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvxntq[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-28 22:36:11 +0000 UTC FinishedAt: 2026-07-28 22:36:15 +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,}