Name: series-workflowg78wj Phase: Failed StartedAt: 2026-08-31 19:24:43 +0000 UTC FinishedAt: 2026-08-31 20:23:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg78wj[0] Phase: Succeeded StartedAt: 2026-08-31 19:24:43 +0000 UTC FinishedAt: 2026-08-31 20:23:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg78wj[0].run-triage Phase: Succeeded StartedAt: 2026-08-31 19:24:43 +0000 UTC FinishedAt: 2026-08-31 20:23:09 +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+CgkJCTx0ZD4yMDI2LzA4LzMxIDIwOjIyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgb25seSB0aGUgZHJpdmVyIHRlYXJkb3duL3JlbW92ZSBjYWxsYmFjayAobWFsX3JlbW92ZSkgaW4gdGhlIElCTSBFTUFDIGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmMpLCB3aGljaCBpcyBvbmx5IGV4ZWN1dGVkIGR1cmluZyBkcml2ZXIgdW5iaW5kIG9yIGRldmljZSByZW1vdmFsIG9wZXJhdGlvbnMuIEFkZGl0aW9uYWxseSwgdGhlIGRyaXZlciBpcyBzcGVjaWZpYyB0byBQb3dlclBDIDR4eCAvIENlbGwgU29DIGhhcmR3YXJlIChkZXBlbmRzIG9uIFBQQ19EQ1IpLiBUaGVyZWZvcmUsIHRoZXNlIGNoYW5nZXMgYXJlIG5vdCB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAyMDoyMjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDAzYmQ1MjcyMTE2ZjRlZjE1N2IwNzAyMTBkMjdkYzJkYWM2ZWFhYjNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAzMSAyMDoyMjoyMCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9tYWwuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL21hbC5jXG5pbmRleCA3ZDcwMDU2ZTkwMDgxLi4zNWI5M2U2YmNkZjlmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL21hbC5jXG5AQCAtNzAzLDEzICYjNDM7NzAzLDEzIEBAIHN0YXRpYyB2b2lkIG1hbF9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZkZXYpXG4gXHRNQUxfREJHKG1hbCwgXCYjMzQ7cmVtb3ZlXCYjMzQ7IE5MKTtcbiBcbiBcdC8qIFN5bmNocm9uaXplIHdpdGggc2NoZWR1bGVkIHBvbGxpbmcgKi9cbi1cdG5hcGlfZGlzYWJsZShcdTAwMjZtYWwtXHUwMDNlbmFwaSk7XG4tXG4tXHRpZiAoIWxpc3RfZW1wdHkoXHUwMDI2bWFsLVx1MDAzZWxpc3QpKVxuJiM0MztcdGlmICghbGlzdF9lbXB0eShcdTAwMjZtYWwtXHUwMDNlbGlzdCkpIHtcbiYjNDM7XHRcdG5hcGlfZGlzYWJsZShcdTAwMjZtYWwtXHUwMDNlbmFwaSk7XG4gXHRcdC8qIFRoaXMgaXMgKnZlcnkqIGJhZCAqL1xuIFx0XHRXQVJOKDEsIEtFUk5fRU1FUkdcbiBcdFx0ICAgICAgIFwmIzM0O21hbCVkOiBjb21tYWMgbGlzdCBpcyBub3QgZW1wdHkgb24gcmVtb3ZlIVxcblwmIzM0OyxcbiBcdFx0ICAgICAgIG1hbC1cdTAwM2VpbmRleCk7XG4mIzQzO1x0fVxuIFxuIFx0bWFsX3Jlc2V0KG1hbCk7XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMjA6MjI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgb25seSB0aGUgZHJpdmVyIHRlYXJkb3duL3JlbW92ZSBjYWxsYmFjayAobWFsX3JlbW92ZSkgaW4gdGhlIElCTSBFTUFDIGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmMpLCB3aGljaCBpcyBvbmx5IGV4ZWN1dGVkIGR1cmluZyBkcml2ZXIgdW5iaW5kIG9yIGRldmljZSByZW1vdmFsIG9wZXJhdGlvbnMuIEFkZGl0aW9uYWxseSwgdGhlIGRyaXZlciBpcyBzcGVjaWZpYyB0byBQb3dlclBDIDR4eCAvIENlbGwgU29DIGhhcmR3YXJlIChkZXBlbmRzIG9uIFBQQ19EQ1IpLiBUaGVyZWZvcmUsIHRoZXNlIGNoYW5nZXMgYXJlIG5vdCB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDAzYmQ1MjcyMTE2ZjRlZjE1N2IwNzAyMTBkMjdkYzJkYWM2ZWFhYjMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEF1ZyAzMSAyMDoyMjoyMCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL21hbC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmMKaW5kZXggN2Q3MDA1NmU5MDA4MS4uMzViOTNlNmJjZGY5ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmMKQEAgLTcwMywxMyAmIzQzOzcwMywxMyBAQCBzdGF0aWMgdm9pZCBtYWxfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2KQogCU1BTF9EQkcobWFsLCAmIzM0O3JlbW92ZSYjMzQ7IE5MKTsKIAogCS8qIFN5bmNocm9uaXplIHdpdGggc2NoZWR1bGVkIHBvbGxpbmcgKi8KLQluYXBpX2Rpc2FibGUoJmFtcDttYWwtJmd0O25hcGkpOwotCi0JaWYgKCFsaXN0X2VtcHR5KCZhbXA7bWFsLSZndDtsaXN0KSkKJiM0MzsJaWYgKCFsaXN0X2VtcHR5KCZhbXA7bWFsLSZndDtsaXN0KSkgewomIzQzOwkJbmFwaV9kaXNhYmxlKCZhbXA7bWFsLSZndDtuYXBpKTsKIAkJLyogVGhpcyBpcyAqdmVyeSogYmFkICovCiAJCVdBUk4oMSwgS0VSTl9FTUVSRwogCQkgICAgICAgJiMzNDttYWwlZDogY29tbWFjIGxpc3QgaXMgbm90IGVtcHR5IG9uIHJlbW92ZSFcbiYjMzQ7LAogCQkgICAgICAgbWFsLSZndDtpbmRleCk7CiYjNDM7CX0KIAogCW1hbF9yZXNldChtYWwpOwogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDIwOjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNTgKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiA2MTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTmV0d29yayBEcml2ZXIgUGF0Y2gqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIHBhdGNoLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gYW5hbHl6ZSB0aGUgYGRpZmZgIGFuZCB0aGUgYWNjb21wYW55aW5nIGluc3RydWN0aW9ucywgZXNwZWNpYWxseSB0aG9zZSBmaWx0ZXJpbmcgcnVsZXMuIFRoZSBjb2RlIG1vZGlmaWNhdGlvbiBpcyBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmNgLiBNeSBpbW1lZGlhdGUgcmVhY3Rpb24gaXMgdG8gY2hlY2sgaWYgdGhpcyBwYXRjaCBpcyB3b3J0aCBmdXp6aW5nLiBUaGUga2V5IGZ1bmN0aW9uIGJlaW5nIG1vZGlmaWVkIGhlcmUgaXMgYG1hbF9yZW1vdmVgLgoKVGhlIHBhdGNoIGxvb2tzIHRvIGJlIHRvdWNoaW5nIHRoZSBgbWFsX3JlbW92ZWAgZnVuY3Rpb24sIHNwZWNpZmljYWxseSByZWdhcmRpbmcgdGhlIGhhbmRsaW5nIG9mIGBuYXBpX2Rpc2FibGVgIGFuZCBhIHdhcm5pbmcgbWVzc2FnZS4gSXQgc2VlbXMgdG8gYmUgcmVsYXRlZCB0byBhIGxpc3Qgb2Ygc29tZXRoaW5nIGNhbGxlZCBgY29tbWFjYCwgYW5kIGl0cyBzdGF0ZSBkdXJpbmcgYSBkZXZpY2UgcmVtb3ZhbC4KCk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBgbWFsYCBhbmQgYGlibS9lbWFjYCByZXByZXNlbnQuIEkmIzM5O2xsIG5lZWQgYSBiZXR0ZXIgY29udGV4dC4gSXMgdGhpcyBhIG5ldHdvcmsgaW50ZXJmYWNlIGNhcmQ/IFNvbWUgc3BlY2lmaWMgSUJNIGhhcmR3YXJlPyBMZXQmIzM5O3MgZ2V0IGEgZmlsZSBsaXN0aW5nIGFuZCByZWFkIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmNgIGZpbGUgdXNpbmcgYSBgcmVhZC1maWxlYCBjb21tYW5kIHRvIHNlZSB0aGUgYnJvYWRlciBwaWN0dXJlIGFuZCB0aGUgc3Vycm91bmRpbmcgY29kZS4gVGhpcyB3aWxsIGNsYXJpZnkgd2hhdCBleGFjdGx5IGBtYWxfcmVtb3ZlYCBpcyBkb2luZyBhbmQgaWYgdGhpcyBjaGFuZ2UgYWZmZWN0cyBhbnkgb2YgdGhlIGxpc3RlZCAmIzM0O25vdCB3b3J0aCBmdXp6aW5nJiMzNDsgY2F0ZWdvcmllcy4gRm9yIGV4YW1wbGUsIGlzIHRoaXMgc2ltcGx5IGxvZ2dpbmc/IE9yIGlzIHRoZXJlIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIGRyaXZlciYjMzk7cyBiZWhhdmlvdXI/CgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMjA6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9tYWwuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDY5NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNjk1Olx0XHRkY3JfdW5tYXAobWFsLVx1MDAzZWRjcl9ob3N0LCAweDEwMCk7XG4gNjk2Olx0XHRyZXR1cm4gZXJyO1xuIDY5NzpcdH1cbiA2OTg6XHRcbiA2OTk6XHRzdGF0aWMgdm9pZCBtYWxfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2KVxuIDcwMDpcdHtcbiA3MDE6XHRcdHN0cnVjdCBtYWxfaW5zdGFuY2UgKm1hbCA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKG9mZGV2KTtcbiA3MDI6XHRcbiA3MDM6XHRcdE1BTF9EQkcobWFsLCBcJiMzNDtyZW1vdmVcJiMzNDsgTkwpO1xuIDcwNDpcdFxuIDcwNTpcdFx0LyogU3luY2hyb25pemUgd2l0aCBzY2hlZHVsZWQgcG9sbGluZyAqL1xuIDcwNjpcdFx0aWYgKCFsaXN0X2VtcHR5KFx1MDAyNm1hbC1cdTAwM2VsaXN0KSkge1xuIDcwNzpcdFx0XHRuYXBpX2Rpc2FibGUoXHUwMDI2bWFsLVx1MDAzZW5hcGkpO1xuIDcwODpcdFx0XHQvKiBUaGlzIGlzICp2ZXJ5KiBiYWQgKi9cbiA3MDk6XHRcdFx0V0FSTigxLCBLRVJOX0VNRVJHXG4gNzEwOlx0XHRcdCAgICAgICBcJiMzNDttYWwlZDogY29tbWFjIGxpc3QgaXMgbm90IGVtcHR5IG9uIHJlbW92ZSFcXG5cJiMzNDssXG4gNzExOlx0XHRcdCAgICAgICBtYWwtXHUwMDNlaW5kZXgpO1xuIDcxMjpcdFx0fVxuIDcxMzpcdFxuIDcxNDpcdFx0bWFsX3Jlc2V0KG1hbCk7XG4gNzE1Olx0XG4gNzE2Olx0XHRmcmVlX25ldGRldihtYWwtXHUwMDNlZHVtbXlfZGV2KTtcbiA3MTc6XHRcbiA3MTg6XHRcdGRjcl91bm1hcChtYWwtXHUwMDNlZGNyX2hvc3QsIDB4MTAwKTtcbiA3MTk6XHRcbiA3MjA6XHRcdGRtYV9mcmVlX2NvaGVyZW50KFx1MDAyNm9mZGV2LVx1MDAzZWRldixcbiA3MjE6XHRcdFx0XHQgIHNpemVvZihzdHJ1Y3QgbWFsX2Rlc2NyaXB0b3IpICpcbiA3MjI6XHRcdFx0XHRcdCAgKE5VTV9UWF9CVUZGICogbWFsLVx1MDAzZW51bV90eF9jaGFucyAmIzQzO1xuIDcyMzpcdFx0XHRcdFx0ICAgTlVNX1JYX0JVRkYgKiBtYWwtXHUwMDNlbnVtX3J4X2NoYW5zKSxcbiA3MjQ6XHRcdFx0XHQgIG1hbC1cdTAwM2ViZF92aXJ0LCBtYWwtXHUwMDNlYmRfZG1hKTtcbiA3MjU6XHR9XG4gNzI2Olx0XG4gNzI3Olx0c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbWFsX3BsYXRmb3JtX21hdGNoW10gPVxuIDcyODpcdHtcbiA3Mjk6XHRcdHtcbiA3MzA6XHRcdFx0LmNvbXBhdGlibGVcdD0gXCYjMzQ7aWJtLG1jbWFsXCYjMzQ7LFxuIDczMTpcdFx0fSxcbiA3MzI6XHRcdHtcbiA3MzM6XHRcdFx0LmNvbXBhdGlibGVcdD0gXCYjMzQ7aWJtLG1jbWFsMlwmIzM0OyxcbiA3MzQ6XHRcdH0sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMjA6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzY3NAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UgYW5kIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipLY29uZmlnIFJldmlldyBmb3IgSUJNIEVNQUMvTUFMIEludGVncmF0aW9uKioKCkFscmlnaHQsIHRpbWUgdG8gZGlnIGluLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtMZXQmIzM5O3Mgc3RhcnQgYnkgaGl0dGluZyB0aGUgS2NvbmZpZyBmaWxlcy4mIzM0OyBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiBob3cgdGhlIElCTSBFTUFDIGFuZCBNQUwgY29tcG9uZW50cyBhcmUgY29uZmlndXJlZCB3aXRoaW4gdGhlIGtlcm5lbCBidWlsZCBzeXN0ZW0uIFVuZGVyc3RhbmRpbmcgdGhlIGRlcGVuZGVuY2llcywgZGVmYXVsdCBzZXR0aW5ncywgYW5kIGF2YWlsYWJsZSBvcHRpb25zIGlzIGNydWNpYWwgYmVmb3JlIEkgZXZlbiBjb25zaWRlciBtYWtpbmcgYW55IGNoYW5nZXMgb3IgZW5oYW5jZW1lbnRzLiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSByZWxldmFudCBgQ09ORklHX2Agc3ltYm9scywgdGhlIHJlbGF0aW9uc2hpcHMgYmV0d2VlbiB0aGVtLCBhbmQgYW55IGNvbmRpdGlvbmFsIGJ1aWxkIGxvZ2ljIHRoYXQgaW1wYWN0cyB0aGUgRU1BQy9NQUwgaW50ZWdyYXRpb24gc3BlY2lmaWNhbGx5LiBJIG5lZWQgdG8gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBleGlzdGluZyBzdHJ1Y3R1cmUgYW5kIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gb2J2aW91cyBjb25mbGljdHMgb3IgdW5kb2N1bWVudGVkIGNvbmZpZ3VyYXRpb25zLiBUaGlzIGluaXRpYWwgS2NvbmZpZyByZXZpZXcgaXMgdGhlIGZvdW5kYXRpb24uIEl0IHdpbGwgc2hhcGUgbXkgYXBwcm9hY2ggdG8gYW55IHN1YnNlcXVlbnQgdHJvdWJsZXNob290aW5nLCBvcHRpbWl6YXRpb24sIG9yIGludGVncmF0aW9uIHRhc2tzIHJlbGF0ZWQgdG8gdGhpcyBtb2R1bGUuIEdvdHRhIHN0YXJ0IHdpdGggYSBzb2xpZCB1bmRlcnN0YW5kaW5nIG9mIHRoZSBidWlsZC10aW1lIGNvbmZpZ3VyYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMjA6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7SUJNX0VNQUMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL01ha2VmaWxlPTc9b2JqLSQoQ09ORklHX0lCTVZOSUMpICYjNDM7PSBpYm12bmljLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9NYWtlZmlsZTo4Om9iai0kKENPTkZJR19JQk1fRU1BQykgJiM0Mzs9IGVtYWMvXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vTWFrZWZpbGUtOS1vYmotJChDT05GSUdfRUhFQSkgJiM0Mzs9IGVoZWEvXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZzoyOmNvbmZpZyBJQk1fRU1BQ1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7SUJNIEVNQUMgRXRoZXJuZXQgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctMTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnOjEyOmNvbmZpZyBJQk1fRU1BQ19SWEJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctMTMtXHRpbnQgXCYjMzQ7TnVtYmVyIG9mIHJlY2VpdmUgYnVmZmVyc1wmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZzoxNDpcdGRlcGVuZHMgb24gSUJNX0VNQUNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctMTUtXHRkZWZhdWx0IFwmIzM0OzEyOFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy0xNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWc6MTc6Y29uZmlnIElCTV9FTUFDX1RYQlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy0xOC1cdGludCBcJiMzNDtOdW1iZXIgb2YgdHJhbnNtaXQgYnVmZmVyc1wmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZzoxOTpcdGRlcGVuZHMgb24gSUJNX0VNQUNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctMjAtXHRkZWZhdWx0IFwmIzM0OzY0XCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnLTIxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZzoyMjpjb25maWcgSUJNX0VNQUNfUE9MTF9XRUlHSFRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctMjMtXHRpbnQgXCYjMzQ7TUFMIE5BUEkgcG9sbGluZyB3ZWlnaHRcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWc6MjQ6XHRkZXBlbmRzIG9uIElCTV9FTUFDXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnLTI1LVx0ZGVmYXVsdCBcJiMzNDszMlwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy0yNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWc6Mjc6Y29uZmlnIElCTV9FTUFDX1JYX0NPUFlfVEhSRVNIT0xEXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnLTI4LVx0aW50IFwmIzM0O1JYIHNrYiBjb3B5IHRocmVzaG9sZCAoYnl0ZXMpXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnOjI5Olx0ZGVwZW5kcyBvbiBJQk1fRU1BQ1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy0zMC1cdGRlZmF1bHQgXCYjMzQ7MjU2XCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnLTMxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZzozMjpjb25maWcgSUJNX0VNQUNfREVCVUdcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctMzMtXHRib29sIFwmIzM0O0RlYnVnZ2luZ1wmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZzozNDpcdGRlcGVuZHMgb24gSUJNX0VNQUNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctMzUtXHRkZWZhdWx0IG5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnLTM5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZzo0MDpjb25maWcgSUJNX0VNQUNfWk1JSVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy00MS1cdGJvb2xcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnLTQzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZzo0NDpjb25maWcgSUJNX0VNQUNfUkdNSUlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctNDUtXHRib29sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy00Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWc6NDg6Y29uZmlnIElCTV9FTUFDX1RBSFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy00OS1cdGJvb2xcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnLTUxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZzo1Mjpjb25maWcgSUJNX0VNQUNfRU1BQzRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctNTMtXHRib29sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy01NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWc6NTY6Y29uZmlnIElCTV9FTUFDX05PX0ZMT1dfQ1RSTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy01Ny1cdGJvb2xcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnLTU5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZzo2MDpjb25maWcgSUJNX0VNQUNfTUFMX0NMUl9JQ0lOVFNUQVRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctNjEtXHRib29sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy02My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWc6NjQ6Y29uZmlnIElCTV9FTUFDX01BTF9DT01NT05fRVJSXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnLTY1LVx0Ym9vbFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL01ha2VmaWxlLTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19JQk1fRU1BQykgJiM0Mzs9IGlibV9lbWFjLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL01ha2VmaWxlLTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9NYWtlZmlsZT04PWlibV9lbWFjLXkgOj0gbWFsLm8gY29yZS5vIHBoeS5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9NYWtlZmlsZTo5OmlibV9lbWFjLSQoQ09ORklHX0lCTV9FTUFDX1pNSUkpICYjNDM7PSB6bWlpLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL01ha2VmaWxlOjEwOmlibV9lbWFjLSQoQ09ORklHX0lCTV9FTUFDX1JHTUlJKSAmIzQzOz0gcmdtaWkub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvTWFrZWZpbGU6MTE6aWJtX2VtYWMtJChDT05GSUdfSUJNX0VNQUNfVEFIKSAmIzQzOz0gdGFoLm9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmM9Nzc9TU9EVUxFX0xJQ0VOU0UoXCYjMzQ7R1BMXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmMtODQtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmM6ODU6I2RlZmluZSBFTUFDX1JYX0NPUFlfVEhSRVNIXHRcdENPTkZJR19JQk1fRU1BQ19SWF9DT1BZX1RIUkVTSE9MRFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jLTg2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYz0xNjk0PXN0YXRpYyBpbmxpbmUgdm9pZCBlbWFjX3J4X2NzdW0oc3RydWN0IGVtYWNfaW5zdGFuY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmMtMTY5Ni17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmM6MTY5NzojaWZkZWYgQ09ORklHX0lCTV9FTUFDX1RBSFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jLTE2OTgtXHRpZiAoIWN0cmwgXHUwMDI2XHUwMDI2IGRldi1cdTAwM2V0YWhfZGV2KSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jPTI4MDQ9c3RhdGljIGludCBlbWFjX2luaXRfY29uZmlnKHN0cnVjdCBlbWFjX2luc3RhbmNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jLTI4ODItXHRcdGlmIChvZl9kZXZpY2VfaXNfY29tcGF0aWJsZShucCwgXCYjMzQ7aWJtLGVtYWMtNDA1ZXpcJiMzNDspKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmM6Mjg4MzojaWZkZWYgQ09ORklHX0lCTV9FTUFDX05PX0ZMT1dfQ1RSTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jLTI4ODQtXHRcdFx0ZGV2LVx1MDAzZWZlYXR1cmVzIHw9IEVNQUNfRlRSX05PX0ZMT1dfQ09OVFJPTF80MHg7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jLTI5MDYtXHRpZiAoZGV2LVx1MDAzZXRhaF9waCAhPSAwKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmM6MjkwNzojaWZkZWYgQ09ORklHX0lCTV9FTUFDX1RBSFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jLTI5MDgtXHRcdGRldi1cdTAwM2VmZWF0dXJlcyB8PSBFTUFDX0ZUUl9IQVNfVEFIO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYy0yOTE1LVx0aWYgKGRldi1cdTAwM2V6bWlpX3BoICE9IDApIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYzoyOTE2OiNpZmRlZiBDT05GSUdfSUJNX0VNQUNfWk1JSVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jLTI5MTctXHRcdGRldi1cdTAwM2VmZWF0dXJlcyB8PSBFTUFDX0ZUUl9IQVNfWk1JSTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmMtMjkyNC1cdGlmIChkZXYtXHUwMDNlcmdtaWlfcGggIT0gMCkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jOjI5MjU6I2lmZGVmIENPTkZJR19JQk1fRU1BQ19SR01JSVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jLTI5MjYtXHRcdGRldi1cdTAwM2VmZWF0dXJlcyB8PSBFTUFDX0ZUUl9IQVNfUkdNSUk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5oLTQyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5oOjQzOiNkZWZpbmUgTlVNX1RYX0JVRkZcdFx0XHRDT05GSUdfSUJNX0VNQUNfVFhCXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmg6NDQ6I2RlZmluZSBOVU1fUlhfQlVGRlx0XHRcdENPTkZJR19JQk1fRU1BQ19SWEJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuaC00NS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmg9MzI4PWVudW0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuaC0zMzEtXHRFTUFDX0ZUUlNfUE9TU0lCTEVcdD1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuaDozMzI6I2lmZGVmIENPTkZJR19JQk1fRU1BQ19FTUFDNFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5oLTMzMy1cdCAgICBFTUFDX0ZUUl9FTUFDNFx0fCBFTUFDX0ZUUl9FTUFDNFNZTkNcdHxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmgtMzM2LSNlbmRpZlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5oOjMzNzojaWZkZWYgQ09ORklHX0lCTV9FTUFDX1RBSFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5oLTMzOC1cdCAgICBFTUFDX0ZUUl9IQVNfVEFIXHR8XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmgtMzM5LSNlbmRpZlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5oOjM0MDojaWZkZWYgQ09ORklHX0lCTV9FTUFDX1pNSUlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuaC0zNDEtXHQgICAgRU1BQ19GVFJfSEFTX1pNSUlcdHxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuaC0zNDItI2VuZGlmXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmg6MzQzOiNpZmRlZiBDT05GSUdfSUJNX0VNQUNfUkdNSUlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuaC0zNDQtXHQgICAgRU1BQ19GVFJfSEFTX1JHTUlJXHR8XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmgtMzQ1LSNlbmRpZlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5oOjM0NjojaWZkZWYgQ09ORklHX0lCTV9FTUFDX05PX0ZMT1dfQ1RSTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5oLTM0Ny1cdCAgICBFTUFDX0ZUUl9OT19GTE9XX0NPTlRST0xfNDB4IHxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9kZWJ1Zy5oLTIxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvZGVidWcuaDoyMjojaWYgZGVmaW5lZChDT05GSUdfSUJNX0VNQUNfREVCVUcpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9kZWJ1Zy5oLTIzLSMgZGVmaW5lIERCR19MRVZFTFx0XHQxXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmM9NTE2PXN0YXRpYyBpbnQgbWFsX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL21hbC5jLTU2OS1cdGlmIChvZl9kZXZpY2VfaXNfY29tcGF0aWJsZShvZmRldi1cdTAwM2VkZXYub2Zfbm9kZSwgXCYjMzQ7aWJtLG1jbWFsLTQwNWV6XCYjMzQ7KSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmM6NTcwOiNpZiBkZWZpbmVkKENPTkZJR19JQk1fRU1BQ19NQUxfQ0xSX0lDSU5UU1RBVCkgXHUwMDI2XHUwMDI2IFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9tYWwuYzo1NzE6XHRcdGRlZmluZWQoQ09ORklHX0lCTV9FTUFDX01BTF9DT01NT05fRVJSKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmMtNTcyLVx0XHRtYWwtXHUwMDNlZmVhdHVyZXMgfD0gKE1BTF9GVFJfQ0xFQVJfSUNJTlRTVEFUIHxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9tYWwuYy01OTItXHRuZXRpZl9uYXBpX2FkZF93ZWlnaHQobWFsLVx1MDAzZWR1bW15X2RldiwgXHUwMDI2bWFsLVx1MDAzZW5hcGksIG1hbF9wb2xsLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmM6NTkzOlx0XHRcdCAgICAgIENPTkZJR19JQk1fRU1BQ19QT0xMX1dFSUdIVCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9tYWwuYy01OTQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmg9MjM1PWVudW0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL21hbC5oLTIzOC1cdE1BTF9GVFJTX1BPU1NJQkxFID1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL21hbC5oOjIzOTojaWZkZWYgQ09ORklHX0lCTV9FTUFDX01BTF9DTFJfSUNJTlRTVEFUXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9tYWwuaC0yNDAtXHRcdE1BTF9GVFJfQ0xFQVJfSUNJTlRTVEFUIHxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL21hbC5oLTI0MS0jZW5kaWZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL21hbC5oOjI0MjojaWZkZWYgQ09ORklHX0lCTV9FTUFDX01BTF9DT01NT05fRVJSXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9tYWwuaC0yNDMtXHRcdE1BTF9GVFJfQ09NTU9OX0VSUl9JTlQgfFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL3JnbWlpLmg9MzY9c3RydWN0IHJnbWlpX2luc3RhbmNlIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9yZ21paS5oLTUyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvcmdtaWkuaDo1MzojaWZkZWYgQ09ORklHX0lCTV9FTUFDX1JHTUlJXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9yZ21paS5oLTU0LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL3JnbWlpLmg9NjM9dm9pZCAqcmdtaWlfZHVtcF9yZWdzKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2LCB2b2lkICpidWYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL3JnbWlpLmgtNzUtIyBkZWZpbmUgcmdtaWlfZHVtcF9yZWdzKHgsYnVmKVx0KGJ1ZilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL3JnbWlpLmg6NzY6I2VuZGlmXHRcdFx0XHQvKiAhQ09ORklHX0lCTV9FTUFDX1JHTUlJICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9yZ21paS5oLTc3LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL3RhaC5oPTM3PXN0cnVjdCB0YWhfaW5zdGFuY2Uge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL3RhaC5oLTY4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvdGFoLmg6Njk6I2lmZGVmIENPTkZJR19JQk1fRU1BQ19UQUhcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL3RhaC5oLTcwLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL3RhaC5oPTc3PXZvaWQgKnRhaF9kdW1wX3JlZ3Moc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZkZXYsIHZvaWQgKmJ1Zik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvdGFoLmgtODgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy90YWguaDo4OTojZW5kaWZcdFx0XHRcdC8qICFDT05GSUdfSUJNX0VNQUNfVEFIICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy90YWguaC05MC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy96bWlpLmg9MzA9c3RydWN0IHptaWlfaW5zdGFuY2Uge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL3ptaWkuaC00OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL3ptaWkuaDo0OTojaWZkZWYgQ09ORklHX0lCTV9FTUFDX1pNSUlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL3ptaWkuaC01MC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy96bWlpLmg9NjA9dm9pZCAqem1paV9kdW1wX3JlZ3Moc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZkZXYsIHZvaWQgKmJ1Zik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvem1paS5oLTcxLSMgZGVmaW5lIHptaWlfZHVtcF9yZWdzKHgsYnVmKVx0KGJ1ZilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL3ptaWkuaDo3MjojZW5kaWZcdFx0XHRcdC8qICFDT05GSUdfSUJNX0VNQUNfWk1JSSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvem1paS5oLTczLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDIwOjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgxMTQKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqS2NvbmZpZyBJbnNwZWN0aW9uIGZvciBJQk1fRU1BQyoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBLY29uZmlnIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIElCTV9FTUFDIEV0aGVybmV0IGRyaXZlci4gSSYjMzk7bSBnb2luZyB0byBuYXZpZ2F0ZSB0byB0aGUgc291cmNlIGRpcmVjdG9yeSBhbmQgY2hlY2sgaXRzIEtjb25maWcgZmlsZS4gVGhhdCB3b3VsZCBiZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZ2AuIFRpbWUgdG8gZ2V0IHJlYWRpbmcgYW5kIHNlZSB3aGF0JiMzOTtzIHdoYXQhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMjA6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIElCTV9FTUFDXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtJQk0gRU1BQyBFdGhlcm5ldCBzdXBwb3J0XCYjMzQ7XG4gICA0Olx0XHRkZXBlbmRzIG9uIFBQQ19EQ1JcbiAgIDU6XHRcdHNlbGVjdCBDUkMzMlxuICAgNjpcdFx0c2VsZWN0IFBIWUxJQlxuICAgNzpcdFx0aGVscFxuICAgODpcdFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyB0aGUgSUJNIEVNQUMgZmFtaWx5IG9mIEV0aGVybmV0IGNvbnRyb2xsZXJzXG4gICA5Olx0XHQgIHR5cGljYWxseSBmb3VuZCBvbiA0eHggZW1iZWRkZWQgUG93ZXJQQyBjaGlwcywgYnV0IGFsc28gb24gdGhlXG4gIDEwOlx0XHQgIEF4b24gc291dGhicmlkZ2UgZm9yIENlbGwuXG4gIDExOlx0XG4gIDEyOlx0Y29uZmlnIElCTV9FTUFDX1JYQlxuICAxMzpcdFx0aW50IFwmIzM0O051bWJlciBvZiByZWNlaXZlIGJ1ZmZlcnNcJiMzNDtcbiAgMTQ6XHRcdGRlcGVuZHMgb24gSUJNX0VNQUNcbiAgMTU6XHRcdGRlZmF1bHQgXCYjMzQ7MTI4XCYjMzQ7XG4gIDE2Olx0XG4gIDE3Olx0Y29uZmlnIElCTV9FTUFDX1RYQlxuICAxODpcdFx0aW50IFwmIzM0O051bWJlciBvZiB0cmFuc21pdCBidWZmZXJzXCYjMzQ7XG4gIDE5Olx0XHRkZXBlbmRzIG9uIElCTV9FTUFDXG4gIDIwOlx0XHRkZWZhdWx0IFwmIzM0OzY0XCYjMzQ7XG4gIDIxOlx0XG4gIDIyOlx0Y29uZmlnIElCTV9FTUFDX1BPTExfV0VJR0hUXG4gIDIzOlx0XHRpbnQgXCYjMzQ7TUFMIE5BUEkgcG9sbGluZyB3ZWlnaHRcJiMzNDtcbiAgMjQ6XHRcdGRlcGVuZHMgb24gSUJNX0VNQUNcbiAgMjU6XHRcdGRlZmF1bHQgXCYjMzQ7MzJcJiMzNDtcbiAgMjY6XHRcbiAgMjc6XHRjb25maWcgSUJNX0VNQUNfUlhfQ09QWV9USFJFU0hPTERcbiAgMjg6XHRcdGludCBcJiMzNDtSWCBza2IgY29weSB0aHJlc2hvbGQgKGJ5dGVzKVwmIzM0O1xuICAyOTpcdFx0ZGVwZW5kcyBvbiBJQk1fRU1BQ1xuICAzMDpcdFx0ZGVmYXVsdCBcJiMzNDsyNTZcJiMzNDtcbiAgMzE6XHRcbiAgMzI6XHRjb25maWcgSUJNX0VNQUNfREVCVUdcbiAgMzM6XHRcdGJvb2wgXCYjMzQ7RGVidWdnaW5nXCYjMzQ7XG4gIDM0Olx0XHRkZXBlbmRzIG9uIElCTV9FTUFDXG4gIDM1Olx0XHRkZWZhdWx0IG5cbiAgMzY6XHRcbiAgMzc6XHQjIFRoZSBvcHRpb25zIGJlbG93IGhhcyB0byBiZSBzZWxlY3QmIzM5O2VkIGJ5IHRoZSByZXNwZWN0aXZlXG4gIDM4Olx0IyBwcm9jZXNzb3IgdHlwZXMgb3IgcGxhdGZvcm1zXG4gIDM5Olx0XG4gIDQwOlx0Y29uZmlnIElCTV9FTUFDX1pNSUlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAyMDoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NzY1CgkJCQkJCQlvdXRwdXQ6IDExNwoJCQkJCQkJdGhvdWdodHM6IDg1MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiB0aGUgV29ydGhGdXp6aW5nIEZsYWcqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93biBzeXN0ZW1hdGljYWxseS4gVGhlIG9iamVjdGl2ZSBpcyB0byBkZXRlcm1pbmUgaWYgdGhpcyBwYXRjaCB3YXJyYW50cyBmdXp6aW5nLiBUaGUga2V5IGxpZXMgaW4gdW5kZXJzdGFuZGluZyB3aGVyZSB0aGUgY29kZSBjaGFuZ2VzIGFyZSBsb2NhdGVkIGFuZCB0aGUgY29uZGl0aW9ucyB1bmRlciB3aGljaCB0aGF0IGNvZGUgZXhlY3V0ZXMuCgpGaXJzdCwgSSByZWNhbGwgdGhlIHNpdHVhdGlvbnMgdGhhdCB3YXJyYW50IHNldHRpbmcgYFdvcnRoRnV6emluZ2AgdG8gYGZhbHNlYC4gVGhlc2UgaW5jbHVkZSBjaGFuZ2VzIGluIGRvY3VtZW50YXRpb24sIEtjb25maWcsIGNvbW1lbnRzLCBkZWNvcmF0aXZlIGNoYW5nZXMsIG5vbi1mdW5jdGlvbmFsIGNvbnN0YW50IG1vZGlmaWNhdGlvbnMsIHVucmVhY2hhYmxlIGNvZGUgcGF0aHMgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBhbmQgZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcy4gSSBuZWVkIHRvIHNlZSBpZiB0aGUgcGF0Y2ggZmFsbHMgaW50byBhbnkgb2YgdGhlc2UgY2F0ZWdvcmllcy4KCk15IGluaXRpYWwgc2NhbiByZXZlYWxzIHRoZSBwYXRjaCBpcyB3aXRoaW4gdGhlIGBtYWxfcmVtb3ZlYCBmdW5jdGlvbi4gQSBxdWljayBsb29rIGF0IHRoZSBjb2RlIGNvbmZpcm1zIHRoaXMgaXMgYSBgLnJlbW92ZWAgY2FsbGJhY2sgZm9yIGEgcGxhdGZvcm0gZHJpdmVyLCBzcGVjaWZpY2FsbHkgdGhlIGBtYWxfZHJpdmVyYCByZWdpc3RlcmVkIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9tYWwuY2AuIE15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCB0aGUgYC5yZW1vdmVgIGNhbGxiYWNrIGlzIG9ubHkgZXhlY3V0ZWQgZHVyaW5nIGRyaXZlciB1bmJpbmRpbmcgb3IgdGVhcmRvd24uIFRoYXQgaW1tZWRpYXRlbHkgZmxhZ3MgdGhpcyBhcyBhIHBvdGVudGlhbCBjYW5kaWRhdGUgZm9yIGBXb3J0aEZ1enppbmc9ZmFsc2VgLgoKRGlnZ2luZyBkZWVwZXIsIEkgbm90aWNlIHRoZSBkZXBlbmRlbmN5IG9uIGBQUENfRENSYCwgaW5kaWNhdGluZyB0aGlzIGlzIHNwZWNpZmljIHRvIElCTSYjMzk7cyBQb3dlclBDLWJhc2VkIGVtYmVkZGVkIHN5c3RlbXMuIFRoaXMgc3RyZW5ndGhlbnMgdGhlIGFyZ3VtZW50OyBwbGF0Zm9ybSBkcml2ZXJzLCBlc3BlY2lhbGx5IHRob3NlIHRpZWQgdG8gc3BlY2lmaWMsIGFuZCBvZnRlbiBsZXNzIGNvbW1vbiwgaGFyZHdhcmUsIGFyZSBmcmVxdWVudGx5IG5vdCB2aWFibGUgZm9yIGdlbmVyYWwgZnV6emluZyBkdWUgdG8gdGhlIGVudmlyb25tZW50IHRoZXkgcnVuIGluLgoKVGhlIHBhdGNoIGl0c2VsZiBhbHRlcnMgdGhlIHBsYWNlbWVudCBvZiBgbmFwaV9kaXNhYmxlKCZhbXA7bWFsLSZndDtuYXBpKTtgLCBtb3ZpbmcgaXQgaW5zaWRlIGEgY2hlY2sgZm9yIGFuIGVtcHR5IGxpc3QuIFRoaXMgc2VlbXMgbGlrZSBhIGNhcmVmdWwgbW9kaWZpY2F0aW9uIGJ1dCBkb2VzbiYjMzk7dCBhcHBlYXIgdG8gaW50cm9kdWNlIGFueSBuZXcgZXhlY3V0aW9uIHBhdGhzIHRoYXQgd291bGQgYmUgZnV6emFibGUgaW4gYSBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50LgoKQ29uZmlybWluZyBteSBpbml0aWFsIHN1c3BpY2lvbiwgdGhpcyBwYXRjaCBtb2RpZmllcyAqb25seSogYSBkcml2ZXIgYC5yZW1vdmVgIHRlYXJkb3duIGNhbGxiYWNrLiBCYXNlZCBvbiB0aGUgaW5zdHJ1Y3Rpb25zLCB0aGlzIGZhbGxzIHNxdWFyZWx5IHVuZGVyIHRoZSAmIzM0O0RyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MmIzM0OyBjcml0ZXJpYSBmb3Igc2V0dGluZyBgV29ydGhGdXp6aW5nYCB0byBmYWxzZS4KClRoZXJlZm9yZSwgYFdvcnRoRnV6emluZ2Agc2hvdWxkIGRlZmluaXRlbHkgYmUgYGZhbHNlYC4KCkZvciB0aGUgYHNldC1yZXN1bHRzYCBjb21tYW5kLCBJJiMzOTtsbCBwcm92aWRlIHRoZSBmb2xsb3dpbmcgYXJndW1lbnRzOgoKKiAgIGBXb3J0aEZ1enppbmdgOiBgZmFsc2VgCiogICBgUmVhc29uaW5nYDogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgb25seSB0aGUgcGxhdGZvcm0gZHJpdmVyIC5yZW1vdmUgY2FsbGJhY2sgKGBtYWxfcmVtb3ZlYCkgaW4gdGhlIElCTSBFTUFDIGRyaXZlciAoYGRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL21hbC5jYCksIHdoaWNoIGlzIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIGRyaXZlciB0ZWFyZG93biAvIGRldmljZSByZW1vdmFsLiBJbiBhZGRpdGlvbiwgSUJNIEVNQUMgaXMgc3BlY2lmaWMgdG8gUG93ZXJQQyA0eHggLyBDZWxsIFNvQyBoYXJkd2FyZSAoZGVwZW5kcyBvbiBQUENfRENSKS4mIzM0OwoqICAgYEZvY3VzU3ltYm9sc2A6IGBbXWAgKGVtcHR5IGxpc3QpCiogICBgRW5hYmxlQ29uZmlnc2A6IGBbXWAgKGVtcHR5IGxpc3QpCgpXaXRoIHRoaXMgZGV0YWlsZWQgYW5hbHlzaXMgYW5kIHJlYXNvbmluZywgSSYjMzk7bSBjb25maWRlbnQgaW4gc2V0dGluZyBgV29ydGhGdXp6aW5nYCB0byBgZmFsc2VgIGFuZCBwcm92aWRpbmcgdGhlIGFwcHJvcHJpYXRlIGp1c3RpZmljYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDIwOjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgb25seSB0aGUgZHJpdmVyIHRlYXJkb3duL3JlbW92ZSBjYWxsYmFjayAobWFsX3JlbW92ZSkgaW4gdGhlIElCTSBFTUFDIGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmMpLCB3aGljaCBpcyBvbmx5IGV4ZWN1dGVkIGR1cmluZyBkcml2ZXIgdW5iaW5kIG9yIGRldmljZSByZW1vdmFsIG9wZXJhdGlvbnMuIEFkZGl0aW9uYWxseSwgdGhlIGRyaXZlciBpcyBzcGVjaWZpYyB0byBQb3dlclBDIDR4eCAvIENlbGwgU29DIGhhcmR3YXJlIChkZXBlbmRzIG9uIFBQQ19EQ1IpLiBUaGVyZWZvcmUsIHRoZXNlIGNoYW5nZXMgYXJlIG5vdCB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgb25seSB0aGUgZHJpdmVyIHRlYXJkb3duL3JlbW92ZSBjYWxsYmFjayAobWFsX3JlbW92ZSkgaW4gdGhlIElCTSBFTUFDIGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmMpLCB3aGljaCBpcyBvbmx5IGV4ZWN1dGVkIGR1cmluZyBkcml2ZXIgdW5iaW5kIG9yIGRldmljZSByZW1vdmFsIG9wZXJhdGlvbnMuIEFkZGl0aW9uYWxseSwgdGhlIGRyaXZlciBpcyBzcGVjaWZpYyB0byBQb3dlclBDIDR4eCAvIENlbGwgU29DIGhhcmR3YXJlIChkZXBlbmRzIG9uIFBQQ19EQ1IpLiBUaGVyZWZvcmUsIHRoZXNlIGNoYW5nZXMgYXJlIG5vdCB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMjA6MjI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDIwOjIyOjIyLjMwOTg0MjA4M1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM1NTkwNTQ4MDUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgb25seSB0aGUgZHJpdmVyIHRlYXJkb3duL3JlbW92ZSBjYWxsYmFjayAobWFsX3JlbW92ZSkgaW4gdGhlIElCTSBFTUFDIGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmMpLCB3aGljaCBpcyBvbmx5IGV4ZWN1dGVkIGR1cmluZyBkcml2ZXIgdW5iaW5kIG9yIGRldmljZSByZW1vdmFsIG9wZXJhdGlvbnMuIEFkZGl0aW9uYWxseSwgdGhlIGRyaXZlciBpcyBzcGVjaWZpYyB0byBQb3dlclBDIDR4eCAvIENlbGwgU29DIGhhcmR3YXJlIChkZXBlbmRzIG9uIFBQQ19EQ1IpLiBUaGVyZWZvcmUsIHRoZXNlIGNoYW5nZXMgYXJlIG5vdCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMjA6MjI6MjIuMzA5ODQ2NzczWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTUxOTcyNTI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMDNiZDUyNzIxMTZmNGVmMTU3YjA3MDIxMGQyN2RjMmRhYzZlYWFiM1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEF1ZyAzMSAyMDoyMjoyMCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9tYWwuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL21hbC5jXFxuaW5kZXggN2Q3MDA1NmU5MDA4MS4uMzViOTNlNmJjZGY5ZiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9tYWwuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL21hbC5jXFxuQEAgLTcwMywxMyArNzAzLDEzIEBAIHN0YXRpYyB2b2lkIG1hbF9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZkZXYpXFxuIFxcdE1BTF9EQkcobWFsLCBcXFwicmVtb3ZlXFxcIiBOTCk7XFxuIFxcbiBcXHQvKiBTeW5jaHJvbml6ZSB3aXRoIHNjaGVkdWxlZCBwb2xsaW5nICovXFxuLVxcdG5hcGlfZGlzYWJsZShcXHUwMDI2bWFsLVxcdTAwM2VuYXBpKTtcXG4tXFxuLVxcdGlmICghbGlzdF9lbXB0eShcXHUwMDI2bWFsLVxcdTAwM2VsaXN0KSlcXG4rXFx0aWYgKCFsaXN0X2VtcHR5KFxcdTAwMjZtYWwtXFx1MDAzZWxpc3QpKSB7XFxuK1xcdFxcdG5hcGlfZGlzYWJsZShcXHUwMDI2bWFsLVxcdTAwM2VuYXBpKTtcXG4gXFx0XFx0LyogVGhpcyBpcyAqdmVyeSogYmFkICovXFxuIFxcdFxcdFdBUk4oMSwgS0VSTl9FTUVSR1xcbiBcXHRcXHQgICAgICAgXFxcIm1hbCVkOiBjb21tYWMgbGlzdCBpcyBub3QgZW1wdHkgb24gcmVtb3ZlIVxcXFxuXFxcIixcXG4gXFx0XFx0ICAgICAgIG1hbC1cXHUwMDNlaW5kZXgpO1xcbitcXHR9XFxuIFxcbiBcXHRtYWxfcmVzZXQobWFsKTtcXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDIwOjIyOjIzLjg2MjQzMDcwOFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MzQwMzc5NDY2OTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIG9ubHkgdGhlIGRyaXZlciB0ZWFyZG93bi9yZW1vdmUgY2FsbGJhY2sgKG1hbF9yZW1vdmUpIGluIHRoZSBJQk0gRU1BQyBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL21hbC5jKSwgd2hpY2ggaXMgb25seSBleGVjdXRlZCBkdXJpbmcgZHJpdmVyIHVuYmluZCBvciBkZXZpY2UgcmVtb3ZhbCBvcGVyYXRpb25zLiBBZGRpdGlvbmFsbHksIHRoZSBkcml2ZXIgaXMgc3BlY2lmaWMgdG8gUG93ZXJQQyA0eHggLyBDZWxsIFNvQyBoYXJkd2FyZSAoZGVwZW5kcyBvbiBQUENfRENSKS4gVGhlcmVmb3JlLCB0aGVzZSBjaGFuZ2VzIGFyZSBub3Qgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDAzYmQ1MjcyMTE2ZjRlZjE1N2IwNzAyMTBkMjdkYzJkYWM2ZWFhYjNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAzMSAyMDoyMjoyMCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL21hbC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmNcbmluZGV4IDdkNzAwNTZlOTAwODEuLjM1YjkzZTZiY2RmOWYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9tYWwuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmNcbkBAIC03MDMsMTMgKzcwMywxMyBAQCBzdGF0aWMgdm9pZCBtYWxfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2KVxuIFx0TUFMX0RCRyhtYWwsIFwicmVtb3ZlXCIgTkwpO1xuIFxuIFx0LyogU3luY2hyb25pemUgd2l0aCBzY2hlZHVsZWQgcG9sbGluZyAqL1xuLVx0bmFwaV9kaXNhYmxlKFx1MDAyNm1hbC1cdTAwM2VuYXBpKTtcbi1cbi1cdGlmICghbGlzdF9lbXB0eShcdTAwMjZtYWwtXHUwMDNlbGlzdCkpXG4rXHRpZiAoIWxpc3RfZW1wdHkoXHUwMDI2bWFsLVx1MDAzZWxpc3QpKSB7XG4rXHRcdG5hcGlfZGlzYWJsZShcdTAwMjZtYWwtXHUwMDNlbmFwaSk7XG4gXHRcdC8qIFRoaXMgaXMgKnZlcnkqIGJhZCAqL1xuIFx0XHRXQVJOKDEsIEtFUk5fRU1FUkdcbiBcdFx0ICAgICAgIFwibWFsJWQ6IGNvbW1hYyBsaXN0IGlzIG5vdCBlbXB0eSBvbiByZW1vdmUhXFxuXCIsXG4gXHRcdCAgICAgICBtYWwtXHUwMDNlaW5kZXgpO1xuK1x0fVxuIFxuIFx0bWFsX3Jlc2V0KG1hbCk7XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQyMDoyMjoyMy44NjI0MzE5MThaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxODA5NjYyMTIzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBOZXR3b3JrIERyaXZlciBQYXRjaCoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzIHBhdGNoLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gYW5hbHl6ZSB0aGUgYGRpZmZgIGFuZCB0aGUgYWNjb21wYW55aW5nIGluc3RydWN0aW9ucywgZXNwZWNpYWxseSB0aG9zZSBmaWx0ZXJpbmcgcnVsZXMuIFRoZSBjb2RlIG1vZGlmaWNhdGlvbiBpcyBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmNgLiBNeSBpbW1lZGlhdGUgcmVhY3Rpb24gaXMgdG8gY2hlY2sgaWYgdGhpcyBwYXRjaCBpcyB3b3J0aCBmdXp6aW5nLiBUaGUga2V5IGZ1bmN0aW9uIGJlaW5nIG1vZGlmaWVkIGhlcmUgaXMgYG1hbF9yZW1vdmVgLlxuXG5UaGUgcGF0Y2ggbG9va3MgdG8gYmUgdG91Y2hpbmcgdGhlIGBtYWxfcmVtb3ZlYCBmdW5jdGlvbiwgc3BlY2lmaWNhbGx5IHJlZ2FyZGluZyB0aGUgaGFuZGxpbmcgb2YgYG5hcGlfZGlzYWJsZWAgYW5kIGEgd2FybmluZyBtZXNzYWdlLiBJdCBzZWVtcyB0byBiZSByZWxhdGVkIHRvIGEgbGlzdCBvZiBzb21ldGhpbmcgY2FsbGVkIGBjb21tYWNgLCBhbmQgaXRzIHN0YXRlIGR1cmluZyBhIGRldmljZSByZW1vdmFsLlxuXG5Ob3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgYG1hbGAgYW5kIGBpYm0vZW1hY2AgcmVwcmVzZW50LiBJJ2xsIG5lZWQgYSBiZXR0ZXIgY29udGV4dC4gSXMgdGhpcyBhIG5ldHdvcmsgaW50ZXJmYWNlIGNhcmQ/IFNvbWUgc3BlY2lmaWMgSUJNIGhhcmR3YXJlPyBMZXQncyBnZXQgYSBmaWxlIGxpc3RpbmcgYW5kIHJlYWQgdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9tYWwuY2AgZmlsZSB1c2luZyBhIGByZWFkLWZpbGVgIGNvbW1hbmQgdG8gc2VlIHRoZSBicm9hZGVyIHBpY3R1cmUgYW5kIHRoZSBzdXJyb3VuZGluZyBjb2RlLiBUaGlzIHdpbGwgY2xhcmlmeSB3aGF0IGV4YWN0bHkgYG1hbF9yZW1vdmVgIGlzIGRvaW5nIGFuZCBpZiB0aGlzIGNoYW5nZSBhZmZlY3RzIGFueSBvZiB0aGUgbGlzdGVkIFwibm90IHdvcnRoIGZ1enppbmdcIiBjYXRlZ29yaWVzLiBGb3IgZXhhbXBsZSwgaXMgdGhpcyBzaW1wbHkgbG9nZ2luZz8gT3IgaXMgdGhlcmUgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgZHJpdmVyJ3MgYmVoYXZpb3VyP1xuXG5cbiIsIklucHV0VG9rZW5zIjoyMTU4LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjE5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMjA6MjI6NDEuOTU5MDU5OTM5WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMwNTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL21hbC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDY5NSxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDY5NTpcXHRcXHRkY3JfdW5tYXAobWFsLVxcdTAwM2VkY3JfaG9zdCwgMHgxMDApO1xcbiA2OTY6XFx0XFx0cmV0dXJuIGVycjtcXG4gNjk3OlxcdH1cXG4gNjk4OlxcdFxcbiA2OTk6XFx0c3RhdGljIHZvaWQgbWFsX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZmRldilcXG4gNzAwOlxcdHtcXG4gNzAxOlxcdFxcdHN0cnVjdCBtYWxfaW5zdGFuY2UgKm1hbCA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKG9mZGV2KTtcXG4gNzAyOlxcdFxcbiA3MDM6XFx0XFx0TUFMX0RCRyhtYWwsIFxcXCJyZW1vdmVcXFwiIE5MKTtcXG4gNzA0OlxcdFxcbiA3MDU6XFx0XFx0LyogU3luY2hyb25pemUgd2l0aCBzY2hlZHVsZWQgcG9sbGluZyAqL1xcbiA3MDY6XFx0XFx0aWYgKCFsaXN0X2VtcHR5KFxcdTAwMjZtYWwtXFx1MDAzZWxpc3QpKSB7XFxuIDcwNzpcXHRcXHRcXHRuYXBpX2Rpc2FibGUoXFx1MDAyNm1hbC1cXHUwMDNlbmFwaSk7XFxuIDcwODpcXHRcXHRcXHQvKiBUaGlzIGlzICp2ZXJ5KiBiYWQgKi9cXG4gNzA5OlxcdFxcdFxcdFdBUk4oMSwgS0VSTl9FTUVSR1xcbiA3MTA6XFx0XFx0XFx0ICAgICAgIFxcXCJtYWwlZDogY29tbWFjIGxpc3QgaXMgbm90IGVtcHR5IG9uIHJlbW92ZSFcXFxcblxcXCIsXFxuIDcxMTpcXHRcXHRcXHQgICAgICAgbWFsLVxcdTAwM2VpbmRleCk7XFxuIDcxMjpcXHRcXHR9XFxuIDcxMzpcXHRcXG4gNzE0OlxcdFxcdG1hbF9yZXNldChtYWwpO1xcbiA3MTU6XFx0XFxuIDcxNjpcXHRcXHRmcmVlX25ldGRldihtYWwtXFx1MDAzZWR1bW15X2Rldik7XFxuIDcxNzpcXHRcXG4gNzE4OlxcdFxcdGRjcl91bm1hcChtYWwtXFx1MDAzZWRjcl9ob3N0LCAweDEwMCk7XFxuIDcxOTpcXHRcXG4gNzIwOlxcdFxcdGRtYV9mcmVlX2NvaGVyZW50KFxcdTAwMjZvZmRldi1cXHUwMDNlZGV2LFxcbiA3MjE6XFx0XFx0XFx0XFx0ICBzaXplb2Yoc3RydWN0IG1hbF9kZXNjcmlwdG9yKSAqXFxuIDcyMjpcXHRcXHRcXHRcXHRcXHQgIChOVU1fVFhfQlVGRiAqIG1hbC1cXHUwMDNlbnVtX3R4X2NoYW5zICtcXG4gNzIzOlxcdFxcdFxcdFxcdFxcdCAgIE5VTV9SWF9CVUZGICogbWFsLVxcdTAwM2VudW1fcnhfY2hhbnMpLFxcbiA3MjQ6XFx0XFx0XFx0XFx0ICBtYWwtXFx1MDAzZWJkX3ZpcnQsIG1hbC1cXHUwMDNlYmRfZG1hKTtcXG4gNzI1OlxcdH1cXG4gNzI2OlxcdFxcbiA3Mjc6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbWFsX3BsYXRmb3JtX21hdGNoW10gPVxcbiA3Mjg6XFx0e1xcbiA3Mjk6XFx0XFx0e1xcbiA3MzA6XFx0XFx0XFx0LmNvbXBhdGlibGVcXHQ9IFxcXCJpYm0sbWNtYWxcXFwiLFxcbiA3MzE6XFx0XFx0fSxcXG4gNzMyOlxcdFxcdHtcXG4gNzMzOlxcdFxcdFxcdC5jb21wYXRpYmxlXFx0PSBcXFwiaWJtLG1jbWFsMlxcXCIsXFxuIDczNDpcXHRcXHR9LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQyMDoyMjo0MS45NTkxOTIxMzlaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyOTA5NzM5OTYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSBhbmQgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqS2NvbmZpZyBSZXZpZXcgZm9yIElCTSBFTUFDL01BTCBJbnRlZ3JhdGlvbioqXG5cbkFscmlnaHQsIHRpbWUgdG8gZGlnIGluLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJMZXQncyBzdGFydCBieSBoaXR0aW5nIHRoZSBLY29uZmlnIGZpbGVzLlwiIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIGhvdyB0aGUgSUJNIEVNQUMgYW5kIE1BTCBjb21wb25lbnRzIGFyZSBjb25maWd1cmVkIHdpdGhpbiB0aGUga2VybmVsIGJ1aWxkIHN5c3RlbS4gVW5kZXJzdGFuZGluZyB0aGUgZGVwZW5kZW5jaWVzLCBkZWZhdWx0IHNldHRpbmdzLCBhbmQgYXZhaWxhYmxlIG9wdGlvbnMgaXMgY3J1Y2lhbCBiZWZvcmUgSSBldmVuIGNvbnNpZGVyIG1ha2luZyBhbnkgY2hhbmdlcyBvciBlbmhhbmNlbWVudHMuIEknbSBsb29raW5nIGZvciB0aGUgcmVsZXZhbnQgYENPTkZJR19gIHN5bWJvbHMsIHRoZSByZWxhdGlvbnNoaXBzIGJldHdlZW4gdGhlbSwgYW5kIGFueSBjb25kaXRpb25hbCBidWlsZCBsb2dpYyB0aGF0IGltcGFjdHMgdGhlIEVNQUMvTUFMIGludGVncmF0aW9uIHNwZWNpZmljYWxseS4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgZXhpc3Rpbmcgc3RydWN0dXJlIGFuZCBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIG9idmlvdXMgY29uZmxpY3RzIG9yIHVuZG9jdW1lbnRlZCBjb25maWd1cmF0aW9ucy4gVGhpcyBpbml0aWFsIEtjb25maWcgcmV2aWV3IGlzIHRoZSBmb3VuZGF0aW9uLiBJdCB3aWxsIHNoYXBlIG15IGFwcHJvYWNoIHRvIGFueSBzdWJzZXF1ZW50IHRyb3VibGVzaG9vdGluZywgb3B0aW1pemF0aW9uLCBvciBpbnRlZ3JhdGlvbiB0YXNrcyByZWxhdGVkIHRvIHRoaXMgbW9kdWxlLiBHb3R0YSBzdGFydCB3aXRoIGEgc29saWQgdW5kZXJzdGFuZGluZyBvZiB0aGUgYnVpbGQtdGltZSBjb25maWd1cmF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjc0LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQyMDoyMjo0NC44Njg5MzM4NzJaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQyNDMzMTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiSUJNX0VNQUNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9NYWtlZmlsZT03PW9iai0kKENPTkZJR19JQk1WTklDKSArPSBpYm12bmljLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vTWFrZWZpbGU6ODpvYmotJChDT05GSUdfSUJNX0VNQUMpICs9IGVtYWMvXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL01ha2VmaWxlLTktb2JqLSQoQ09ORklHX0VIRUEpICs9IGVoZWEvXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZzoyOmNvbmZpZyBJQk1fRU1BQ1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiSUJNIEVNQUMgRXRoZXJuZXQgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctMTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZzoxMjpjb25maWcgSUJNX0VNQUNfUlhCXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy0xMy1cXHRpbnQgXFxcIk51bWJlciBvZiByZWNlaXZlIGJ1ZmZlcnNcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZzoxNDpcXHRkZXBlbmRzIG9uIElCTV9FTUFDXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy0xNS1cXHRkZWZhdWx0IFxcXCIxMjhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy0xNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnOjE3OmNvbmZpZyBJQk1fRU1BQ19UWEJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnLTE4LVxcdGludCBcXFwiTnVtYmVyIG9mIHRyYW5zbWl0IGJ1ZmZlcnNcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZzoxOTpcXHRkZXBlbmRzIG9uIElCTV9FTUFDXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy0yMC1cXHRkZWZhdWx0IFxcXCI2NFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnLTIxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWc6MjI6Y29uZmlnIElCTV9FTUFDX1BPTExfV0VJR0hUXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy0yMy1cXHRpbnQgXFxcIk1BTCBOQVBJIHBvbGxpbmcgd2VpZ2h0XFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWc6MjQ6XFx0ZGVwZW5kcyBvbiBJQk1fRU1BQ1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctMjUtXFx0ZGVmYXVsdCBcXFwiMzJcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy0yNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnOjI3OmNvbmZpZyBJQk1fRU1BQ19SWF9DT1BZX1RIUkVTSE9MRFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctMjgtXFx0aW50IFxcXCJSWCBza2IgY29weSB0aHJlc2hvbGQgKGJ5dGVzKVxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnOjI5OlxcdGRlcGVuZHMgb24gSUJNX0VNQUNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnLTMwLVxcdGRlZmF1bHQgXFxcIjI1NlxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnLTMxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWc6MzI6Y29uZmlnIElCTV9FTUFDX0RFQlVHXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy0zMy1cXHRib29sIFxcXCJEZWJ1Z2dpbmdcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZzozNDpcXHRkZXBlbmRzIG9uIElCTV9FTUFDXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy0zNS1cXHRkZWZhdWx0IG5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctMzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZzo0MDpjb25maWcgSUJNX0VNQUNfWk1JSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctNDEtXFx0Ym9vbFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy00My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnOjQ0OmNvbmZpZyBJQk1fRU1BQ19SR01JSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctNDUtXFx0Ym9vbFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy00Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnOjQ4OmNvbmZpZyBJQk1fRU1BQ19UQUhcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnLTQ5LVxcdGJvb2xcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctNTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZzo1Mjpjb25maWcgSUJNX0VNQUNfRU1BQzRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnLTUzLVxcdGJvb2xcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctNTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZzo1Njpjb25maWcgSUJNX0VNQUNfTk9fRkxPV19DVFJMXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy01Ny1cXHRib29sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnLTU5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWc6NjA6Y29uZmlnIElCTV9FTUFDX01BTF9DTFJfSUNJTlRTVEFUXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy02MS1cXHRib29sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnLTYzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWc6NjQ6Y29uZmlnIElCTV9FTUFDX01BTF9DT01NT05fRVJSXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy02NS1cXHRib29sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9NYWtlZmlsZS01LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX0lCTV9FTUFDKSArPSBpYm1fZW1hYy5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvTWFrZWZpbGUtNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9NYWtlZmlsZT04PWlibV9lbWFjLXkgOj0gbWFsLm8gY29yZS5vIHBoeS5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvTWFrZWZpbGU6OTppYm1fZW1hYy0kKENPTkZJR19JQk1fRU1BQ19aTUlJKSArPSB6bWlpLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9NYWtlZmlsZToxMDppYm1fZW1hYy0kKENPTkZJR19JQk1fRU1BQ19SR01JSSkgKz0gcmdtaWkub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL01ha2VmaWxlOjExOmlibV9lbWFjLSQoQ09ORklHX0lCTV9FTUFDX1RBSCkgKz0gdGFoLm9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYz03Nz1NT0RVTEVfTElDRU5TRShcXFwiR1BMXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmMtODQtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jOjg1OiNkZWZpbmUgRU1BQ19SWF9DT1BZX1RIUkVTSFxcdFxcdENPTkZJR19JQk1fRU1BQ19SWF9DT1BZX1RIUkVTSE9MRFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYy04Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYz0xNjk0PXN0YXRpYyBpbmxpbmUgdm9pZCBlbWFjX3J4X2NzdW0oc3RydWN0IGVtYWNfaW5zdGFuY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYy0xNjk2LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmM6MTY5NzojaWZkZWYgQ09ORklHX0lCTV9FTUFDX1RBSFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYy0xNjk4LVxcdGlmICghY3RybCBcXHUwMDI2XFx1MDAyNiBkZXYtXFx1MDAzZXRhaF9kZXYpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYz0yODA0PXN0YXRpYyBpbnQgZW1hY19pbml0X2NvbmZpZyhzdHJ1Y3QgZW1hY19pbnN0YW5jZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jLTI4ODItXFx0XFx0aWYgKG9mX2RldmljZV9pc19jb21wYXRpYmxlKG5wLCBcXFwiaWJtLGVtYWMtNDA1ZXpcXFwiKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYzoyODgzOiNpZmRlZiBDT05GSUdfSUJNX0VNQUNfTk9fRkxPV19DVFJMXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jLTI4ODQtXFx0XFx0XFx0ZGV2LVxcdTAwM2VmZWF0dXJlcyB8PSBFTUFDX0ZUUl9OT19GTE9XX0NPTlRST0xfNDB4O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jLTI5MDYtXFx0aWYgKGRldi1cXHUwMDNldGFoX3BoICE9IDApIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmM6MjkwNzojaWZkZWYgQ09ORklHX0lCTV9FTUFDX1RBSFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYy0yOTA4LVxcdFxcdGRldi1cXHUwMDNlZmVhdHVyZXMgfD0gRU1BQ19GVFJfSEFTX1RBSDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYy0yOTE1LVxcdGlmIChkZXYtXFx1MDAzZXptaWlfcGggIT0gMCkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYzoyOTE2OiNpZmRlZiBDT05GSUdfSUJNX0VNQUNfWk1JSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYy0yOTE3LVxcdFxcdGRldi1cXHUwMDNlZmVhdHVyZXMgfD0gRU1BQ19GVFJfSEFTX1pNSUk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmMtMjkyNC1cXHRpZiAoZGV2LVxcdTAwM2VyZ21paV9waCAhPSAwKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jOjI5MjU6I2lmZGVmIENPTkZJR19JQk1fRU1BQ19SR01JSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYy0yOTI2LVxcdFxcdGRldi1cXHUwMDNlZmVhdHVyZXMgfD0gRU1BQ19GVFJfSEFTX1JHTUlJO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5oLTQyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuaDo0MzojZGVmaW5lIE5VTV9UWF9CVUZGXFx0XFx0XFx0Q09ORklHX0lCTV9FTUFDX1RYQlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuaDo0NDojZGVmaW5lIE5VTV9SWF9CVUZGXFx0XFx0XFx0Q09ORklHX0lCTV9FTUFDX1JYQlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuaC00NS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuaD0zMjg9ZW51bSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmgtMzMxLVxcdEVNQUNfRlRSU19QT1NTSUJMRVxcdD1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmg6MzMyOiNpZmRlZiBDT05GSUdfSUJNX0VNQUNfRU1BQzRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmgtMzMzLVxcdCAgICBFTUFDX0ZUUl9FTUFDNFxcdHwgRU1BQ19GVFJfRU1BQzRTWU5DXFx0fFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5oLTMzNi0jZW5kaWZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmg6MzM3OiNpZmRlZiBDT05GSUdfSUJNX0VNQUNfVEFIXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5oLTMzOC1cXHQgICAgRU1BQ19GVFJfSEFTX1RBSFxcdHxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmgtMzM5LSNlbmRpZlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuaDozNDA6I2lmZGVmIENPTkZJR19JQk1fRU1BQ19aTUlJXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5oLTM0MS1cXHQgICAgRU1BQ19GVFJfSEFTX1pNSUlcXHR8XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5oLTM0Mi0jZW5kaWZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmg6MzQzOiNpZmRlZiBDT05GSUdfSUJNX0VNQUNfUkdNSUlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmgtMzQ0LVxcdCAgICBFTUFDX0ZUUl9IQVNfUkdNSUlcXHR8XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5oLTM0NS0jZW5kaWZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmg6MzQ2OiNpZmRlZiBDT05GSUdfSUJNX0VNQUNfTk9fRkxPV19DVFJMXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5oLTM0Ny1cXHQgICAgRU1BQ19GVFJfTk9fRkxPV19DT05UUk9MXzQweCB8XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9kZWJ1Zy5oLTIxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2RlYnVnLmg6MjI6I2lmIGRlZmluZWQoQ09ORklHX0lCTV9FTUFDX0RFQlVHKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2RlYnVnLmgtMjMtIyBkZWZpbmUgREJHX0xFVkVMXFx0XFx0MVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmM9NTE2PXN0YXRpYyBpbnQgbWFsX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmMtNTY5LVxcdGlmIChvZl9kZXZpY2VfaXNfY29tcGF0aWJsZShvZmRldi1cXHUwMDNlZGV2Lm9mX25vZGUsIFxcXCJpYm0sbWNtYWwtNDA1ZXpcXFwiKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL21hbC5jOjU3MDojaWYgZGVmaW5lZChDT05GSUdfSUJNX0VNQUNfTUFMX0NMUl9JQ0lOVFNUQVQpIFxcdTAwMjZcXHUwMDI2IFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9tYWwuYzo1NzE6XFx0XFx0ZGVmaW5lZChDT05GSUdfSUJNX0VNQUNfTUFMX0NPTU1PTl9FUlIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmMtNTcyLVxcdFxcdG1hbC1cXHUwMDNlZmVhdHVyZXMgfD0gKE1BTF9GVFJfQ0xFQVJfSUNJTlRTVEFUIHxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL21hbC5jLTU5Mi1cXHRuZXRpZl9uYXBpX2FkZF93ZWlnaHQobWFsLVxcdTAwM2VkdW1teV9kZXYsIFxcdTAwMjZtYWwtXFx1MDAzZW5hcGksIG1hbF9wb2xsLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL21hbC5jOjU5MzpcXHRcXHRcXHQgICAgICBDT05GSUdfSUJNX0VNQUNfUE9MTF9XRUlHSFQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL21hbC5jLTU5NC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL21hbC5oPTIzNT1lbnVtIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL21hbC5oLTIzOC1cXHRNQUxfRlRSU19QT1NTSUJMRSA9XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmg6MjM5OiNpZmRlZiBDT05GSUdfSUJNX0VNQUNfTUFMX0NMUl9JQ0lOVFNUQVRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9tYWwuaC0yNDAtXFx0XFx0TUFMX0ZUUl9DTEVBUl9JQ0lOVFNUQVQgfFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL21hbC5oLTI0MS0jZW5kaWZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9tYWwuaDoyNDI6I2lmZGVmIENPTkZJR19JQk1fRU1BQ19NQUxfQ09NTU9OX0VSUlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL21hbC5oLTI0My1cXHRcXHRNQUxfRlRSX0NPTU1PTl9FUlJfSU5UIHxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL3JnbWlpLmg9MzY9c3RydWN0IHJnbWlpX2luc3RhbmNlIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL3JnbWlpLmgtNTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvcmdtaWkuaDo1MzojaWZkZWYgQ09ORklHX0lCTV9FTUFDX1JHTUlJXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvcmdtaWkuaC01NC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL3JnbWlpLmg9NjM9dm9pZCAqcmdtaWlfZHVtcF9yZWdzKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2LCB2b2lkICpidWYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvcmdtaWkuaC03NS0jIGRlZmluZSByZ21paV9kdW1wX3JlZ3MoeCxidWYpXFx0KGJ1ZilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9yZ21paS5oOjc2OiNlbmRpZlxcdFxcdFxcdFxcdC8qICFDT05GSUdfSUJNX0VNQUNfUkdNSUkgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9yZ21paS5oLTc3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvdGFoLmg9Mzc9c3RydWN0IHRhaF9pbnN0YW5jZSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy90YWguaC02OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy90YWguaDo2OTojaWZkZWYgQ09ORklHX0lCTV9FTUFDX1RBSFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL3RhaC5oLTcwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvdGFoLmg9Nzc9dm9pZCAqdGFoX2R1bXBfcmVncyhzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZmRldiwgdm9pZCAqYnVmKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL3RhaC5oLTg4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL3RhaC5oOjg5OiNlbmRpZlxcdFxcdFxcdFxcdC8qICFDT05GSUdfSUJNX0VNQUNfVEFIICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvdGFoLmgtOTAtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy96bWlpLmg9MzA9c3RydWN0IHptaWlfaW5zdGFuY2Uge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvem1paS5oLTQ4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL3ptaWkuaDo0OTojaWZkZWYgQ09ORklHX0lCTV9FTUFDX1pNSUlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy96bWlpLmgtNTAtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy96bWlpLmg9NjA9dm9pZCAqem1paV9kdW1wX3JlZ3Moc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZkZXYsIHZvaWQgKmJ1Zik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy96bWlpLmgtNzEtIyBkZWZpbmUgem1paV9kdW1wX3JlZ3MoeCxidWYpXFx0KGJ1ZilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy96bWlpLmg6NzI6I2VuZGlmXFx0XFx0XFx0XFx0LyogIUNPTkZJR19JQk1fRU1BQ19aTUlJICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvem1paS5oLTczLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQyMDoyMjo0NC45MTMxODA5MDJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo3MzU1MzMwMzkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqS2NvbmZpZyBJbnNwZWN0aW9uIGZvciBJQk1fRU1BQyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIEtjb25maWcgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgSUJNX0VNQUMgRXRoZXJuZXQgZHJpdmVyLiBJJ20gZ29pbmcgdG8gbmF2aWdhdGUgdG8gdGhlIHNvdXJjZSBkaXJlY3RvcnkgYW5kIGNoZWNrIGl0cyBLY29uZmlnIGZpbGUuIFRoYXQgd291bGQgYmUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWdgLiBUaW1lIHRvIGdldCByZWFkaW5nIGFuZCBzZWUgd2hhdCdzIHdoYXQhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgxMTQsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQyMDoyMjo1Mi4yNjg1MTc0NjRaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NDc4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRjb25maWcgSUJNX0VNQUNcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJJQk0gRU1BQyBFdGhlcm5ldCBzdXBwb3J0XFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBQUENfRENSXFxuICAgNTpcXHRcXHRzZWxlY3QgQ1JDMzJcXG4gICA2OlxcdFxcdHNlbGVjdCBQSFlMSUJcXG4gICA3OlxcdFxcdGhlbHBcXG4gICA4OlxcdFxcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlIElCTSBFTUFDIGZhbWlseSBvZiBFdGhlcm5ldCBjb250cm9sbGVyc1xcbiAgIDk6XFx0XFx0ICB0eXBpY2FsbHkgZm91bmQgb24gNHh4IGVtYmVkZGVkIFBvd2VyUEMgY2hpcHMsIGJ1dCBhbHNvIG9uIHRoZVxcbiAgMTA6XFx0XFx0ICBBeG9uIHNvdXRoYnJpZGdlIGZvciBDZWxsLlxcbiAgMTE6XFx0XFxuICAxMjpcXHRjb25maWcgSUJNX0VNQUNfUlhCXFxuICAxMzpcXHRcXHRpbnQgXFxcIk51bWJlciBvZiByZWNlaXZlIGJ1ZmZlcnNcXFwiXFxuICAxNDpcXHRcXHRkZXBlbmRzIG9uIElCTV9FTUFDXFxuICAxNTpcXHRcXHRkZWZhdWx0IFxcXCIxMjhcXFwiXFxuICAxNjpcXHRcXG4gIDE3OlxcdGNvbmZpZyBJQk1fRU1BQ19UWEJcXG4gIDE4OlxcdFxcdGludCBcXFwiTnVtYmVyIG9mIHRyYW5zbWl0IGJ1ZmZlcnNcXFwiXFxuICAxOTpcXHRcXHRkZXBlbmRzIG9uIElCTV9FTUFDXFxuICAyMDpcXHRcXHRkZWZhdWx0IFxcXCI2NFxcXCJcXG4gIDIxOlxcdFxcbiAgMjI6XFx0Y29uZmlnIElCTV9FTUFDX1BPTExfV0VJR0hUXFxuICAyMzpcXHRcXHRpbnQgXFxcIk1BTCBOQVBJIHBvbGxpbmcgd2VpZ2h0XFxcIlxcbiAgMjQ6XFx0XFx0ZGVwZW5kcyBvbiBJQk1fRU1BQ1xcbiAgMjU6XFx0XFx0ZGVmYXVsdCBcXFwiMzJcXFwiXFxuICAyNjpcXHRcXG4gIDI3OlxcdGNvbmZpZyBJQk1fRU1BQ19SWF9DT1BZX1RIUkVTSE9MRFxcbiAgMjg6XFx0XFx0aW50IFxcXCJSWCBza2IgY29weSB0aHJlc2hvbGQgKGJ5dGVzKVxcXCJcXG4gIDI5OlxcdFxcdGRlcGVuZHMgb24gSUJNX0VNQUNcXG4gIDMwOlxcdFxcdGRlZmF1bHQgXFxcIjI1NlxcXCJcXG4gIDMxOlxcdFxcbiAgMzI6XFx0Y29uZmlnIElCTV9FTUFDX0RFQlVHXFxuICAzMzpcXHRcXHRib29sIFxcXCJEZWJ1Z2dpbmdcXFwiXFxuICAzNDpcXHRcXHRkZXBlbmRzIG9uIElCTV9FTUFDXFxuICAzNTpcXHRcXHRkZWZhdWx0IG5cXG4gIDM2OlxcdFxcbiAgMzc6XFx0IyBUaGUgb3B0aW9ucyBiZWxvdyBoYXMgdG8gYmUgc2VsZWN0J2VkIGJ5IHRoZSByZXNwZWN0aXZlXFxuICAzODpcXHQjIHByb2Nlc3NvciB0eXBlcyBvciBwbGF0Zm9ybXNcXG4gIDM5OlxcdFxcbiAgNDA6XFx0Y29uZmlnIElCTV9FTUFDX1pNSUlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMjA6MjI6NTIuMjY4NTgzNjM0WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTYzMTc2MjMxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXNpcyBvZiB0aGUgV29ydGhGdXp6aW5nIEZsYWcqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24gc3lzdGVtYXRpY2FsbHkuIFRoZSBvYmplY3RpdmUgaXMgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgcGF0Y2ggd2FycmFudHMgZnV6emluZy4gVGhlIGtleSBsaWVzIGluIHVuZGVyc3RhbmRpbmcgd2hlcmUgdGhlIGNvZGUgY2hhbmdlcyBhcmUgbG9jYXRlZCBhbmQgdGhlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggdGhhdCBjb2RlIGV4ZWN1dGVzLlxuXG5GaXJzdCwgSSByZWNhbGwgdGhlIHNpdHVhdGlvbnMgdGhhdCB3YXJyYW50IHNldHRpbmcgYFdvcnRoRnV6emluZ2AgdG8gYGZhbHNlYC4gVGhlc2UgaW5jbHVkZSBjaGFuZ2VzIGluIGRvY3VtZW50YXRpb24sIEtjb25maWcsIGNvbW1lbnRzLCBkZWNvcmF0aXZlIGNoYW5nZXMsIG5vbi1mdW5jdGlvbmFsIGNvbnN0YW50IG1vZGlmaWNhdGlvbnMsIHVucmVhY2hhYmxlIGNvZGUgcGF0aHMgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBhbmQgZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcy4gSSBuZWVkIHRvIHNlZSBpZiB0aGUgcGF0Y2ggZmFsbHMgaW50byBhbnkgb2YgdGhlc2UgY2F0ZWdvcmllcy5cblxuTXkgaW5pdGlhbCBzY2FuIHJldmVhbHMgdGhlIHBhdGNoIGlzIHdpdGhpbiB0aGUgYG1hbF9yZW1vdmVgIGZ1bmN0aW9uLiBBIHF1aWNrIGxvb2sgYXQgdGhlIGNvZGUgY29uZmlybXMgdGhpcyBpcyBhIGAucmVtb3ZlYCBjYWxsYmFjayBmb3IgYSBwbGF0Zm9ybSBkcml2ZXIsIHNwZWNpZmljYWxseSB0aGUgYG1hbF9kcml2ZXJgIHJlZ2lzdGVyZWQgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL21hbC5jYC4gTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IHRoZSBgLnJlbW92ZWAgY2FsbGJhY2sgaXMgb25seSBleGVjdXRlZCBkdXJpbmcgZHJpdmVyIHVuYmluZGluZyBvciB0ZWFyZG93bi4gVGhhdCBpbW1lZGlhdGVseSBmbGFncyB0aGlzIGFzIGEgcG90ZW50aWFsIGNhbmRpZGF0ZSBmb3IgYFdvcnRoRnV6emluZz1mYWxzZWAuXG5cbkRpZ2dpbmcgZGVlcGVyLCBJIG5vdGljZSB0aGUgZGVwZW5kZW5jeSBvbiBgUFBDX0RDUmAsIGluZGljYXRpbmcgdGhpcyBpcyBzcGVjaWZpYyB0byBJQk0ncyBQb3dlclBDLWJhc2VkIGVtYmVkZGVkIHN5c3RlbXMuIFRoaXMgc3RyZW5ndGhlbnMgdGhlIGFyZ3VtZW50OyBwbGF0Zm9ybSBkcml2ZXJzLCBlc3BlY2lhbGx5IHRob3NlIHRpZWQgdG8gc3BlY2lmaWMsIGFuZCBvZnRlbiBsZXNzIGNvbW1vbiwgaGFyZHdhcmUsIGFyZSBmcmVxdWVudGx5IG5vdCB2aWFibGUgZm9yIGdlbmVyYWwgZnV6emluZyBkdWUgdG8gdGhlIGVudmlyb25tZW50IHRoZXkgcnVuIGluLlxuXG5UaGUgcGF0Y2ggaXRzZWxmIGFsdGVycyB0aGUgcGxhY2VtZW50IG9mIGBuYXBpX2Rpc2FibGUoXHUwMDI2bWFsLVx1MDAzZW5hcGkpO2AsIG1vdmluZyBpdCBpbnNpZGUgYSBjaGVjayBmb3IgYW4gZW1wdHkgbGlzdC4gVGhpcyBzZWVtcyBsaWtlIGEgY2FyZWZ1bCBtb2RpZmljYXRpb24gYnV0IGRvZXNuJ3QgYXBwZWFyIHRvIGludHJvZHVjZSBhbnkgbmV3IGV4ZWN1dGlvbiBwYXRocyB0aGF0IHdvdWxkIGJlIGZ1enphYmxlIGluIGEgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudC5cblxuQ29uZmlybWluZyBteSBpbml0aWFsIHN1c3BpY2lvbiwgdGhpcyBwYXRjaCBtb2RpZmllcyAqb25seSogYSBkcml2ZXIgYC5yZW1vdmVgIHRlYXJkb3duIGNhbGxiYWNrLiBCYXNlZCBvbiB0aGUgaW5zdHJ1Y3Rpb25zLCB0aGlzIGZhbGxzIHNxdWFyZWx5IHVuZGVyIHRoZSBcIkRyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3NcIiBjcml0ZXJpYSBmb3Igc2V0dGluZyBgV29ydGhGdXp6aW5nYCB0byBmYWxzZS5cblxuVGhlcmVmb3JlLCBgV29ydGhGdXp6aW5nYCBzaG91bGQgZGVmaW5pdGVseSBiZSBgZmFsc2VgLlxuXG5Gb3IgdGhlIGBzZXQtcmVzdWx0c2AgY29tbWFuZCwgSSdsbCBwcm92aWRlIHRoZSBmb2xsb3dpbmcgYXJndW1lbnRzOlxuXG4qICAgYFdvcnRoRnV6emluZ2A6IGBmYWxzZWBcbiogICBgUmVhc29uaW5nYDogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgb25seSB0aGUgcGxhdGZvcm0gZHJpdmVyIC5yZW1vdmUgY2FsbGJhY2sgKGBtYWxfcmVtb3ZlYCkgaW4gdGhlIElCTSBFTUFDIGRyaXZlciAoYGRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL21hbC5jYCksIHdoaWNoIGlzIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIGRyaXZlciB0ZWFyZG93biAvIGRldmljZSByZW1vdmFsLiBJbiBhZGRpdGlvbiwgSUJNIEVNQUMgaXMgc3BlY2lmaWMgdG8gUG93ZXJQQyA0eHggLyBDZWxsIFNvQyBoYXJkd2FyZSAoZGVwZW5kcyBvbiBQUENfRENSKS5cIlxuKiAgIGBGb2N1c1N5bWJvbHNgOiBgW11gIChlbXB0eSBsaXN0KVxuKiAgIGBFbmFibGVDb25maWdzYDogYFtdYCAoZW1wdHkgbGlzdClcblxuV2l0aCB0aGlzIGRldGFpbGVkIGFuYWx5c2lzIGFuZCByZWFzb25pbmcsIEknbSBjb25maWRlbnQgaW4gc2V0dGluZyBgV29ydGhGdXp6aW5nYCB0byBgZmFsc2VgIGFuZCBwcm92aWRpbmcgdGhlIGFwcHJvcHJpYXRlIGp1c3RpZmljYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg3NjUsIk91dHB1dFRva2VucyI6MTE3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODUxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMjA6MjI6NTcuOTAwMzQ4Njc0WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjY4MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgb25seSB0aGUgZHJpdmVyIHRlYXJkb3duL3JlbW92ZSBjYWxsYmFjayAobWFsX3JlbW92ZSkgaW4gdGhlIElCTSBFTUFDIGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmMpLCB3aGljaCBpcyBvbmx5IGV4ZWN1dGVkIGR1cmluZyBkcml2ZXIgdW5iaW5kIG9yIGRldmljZSByZW1vdmFsIG9wZXJhdGlvbnMuIEFkZGl0aW9uYWxseSwgdGhlIGRyaXZlciBpcyBzcGVjaWZpYyB0byBQb3dlclBDIDR4eCAvIENlbGwgU29DIGhhcmR3YXJlIChkZXBlbmRzIG9uIFBQQ19EQ1IpLiBUaGVyZWZvcmUsIHRoZXNlIGNoYW5nZXMgYXJlIG5vdCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgb25seSB0aGUgZHJpdmVyIHRlYXJkb3duL3JlbW92ZSBjYWxsYmFjayAobWFsX3JlbW92ZSkgaW4gdGhlIElCTSBFTUFDIGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmMpLCB3aGljaCBpcyBvbmx5IGV4ZWN1dGVkIGR1cmluZyBkcml2ZXIgdW5iaW5kIG9yIGRldmljZSByZW1vdmFsIG9wZXJhdGlvbnMuIEFkZGl0aW9uYWxseSwgdGhlIGRyaXZlciBpcyBzcGVjaWZpYyB0byBQb3dlclBDIDR4eCAvIENlbGwgU29DIGhhcmR3YXJlIChkZXBlbmRzIG9uIFBQQ19EQ1IpLiBUaGVyZWZvcmUsIHRoZXNlIGNoYW5nZXMgYXJlIG5vdCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMjA6MjI6NTcuOTAwMzc5MzQ0WiIsIlNlcSI6MTEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowg78wj[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-31 19:24:43 +0000 UTC FinishedAt: 2026-08-31 20:22:59 +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+CgkJCTx0ZD4yMDI2LzA4LzMxIDIwOjIyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgb25seSB0aGUgZHJpdmVyIHRlYXJkb3duL3JlbW92ZSBjYWxsYmFjayAobWFsX3JlbW92ZSkgaW4gdGhlIElCTSBFTUFDIGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmMpLCB3aGljaCBpcyBvbmx5IGV4ZWN1dGVkIGR1cmluZyBkcml2ZXIgdW5iaW5kIG9yIGRldmljZSByZW1vdmFsIG9wZXJhdGlvbnMuIEFkZGl0aW9uYWxseSwgdGhlIGRyaXZlciBpcyBzcGVjaWZpYyB0byBQb3dlclBDIDR4eCAvIENlbGwgU29DIGhhcmR3YXJlIChkZXBlbmRzIG9uIFBQQ19EQ1IpLiBUaGVyZWZvcmUsIHRoZXNlIGNoYW5nZXMgYXJlIG5vdCB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAyMDoyMjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDAzYmQ1MjcyMTE2ZjRlZjE1N2IwNzAyMTBkMjdkYzJkYWM2ZWFhYjNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAzMSAyMDoyMjoyMCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9tYWwuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL21hbC5jXG5pbmRleCA3ZDcwMDU2ZTkwMDgxLi4zNWI5M2U2YmNkZjlmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL21hbC5jXG5AQCAtNzAzLDEzICYjNDM7NzAzLDEzIEBAIHN0YXRpYyB2b2lkIG1hbF9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZkZXYpXG4gXHRNQUxfREJHKG1hbCwgXCYjMzQ7cmVtb3ZlXCYjMzQ7IE5MKTtcbiBcbiBcdC8qIFN5bmNocm9uaXplIHdpdGggc2NoZWR1bGVkIHBvbGxpbmcgKi9cbi1cdG5hcGlfZGlzYWJsZShcdTAwMjZtYWwtXHUwMDNlbmFwaSk7XG4tXG4tXHRpZiAoIWxpc3RfZW1wdHkoXHUwMDI2bWFsLVx1MDAzZWxpc3QpKVxuJiM0MztcdGlmICghbGlzdF9lbXB0eShcdTAwMjZtYWwtXHUwMDNlbGlzdCkpIHtcbiYjNDM7XHRcdG5hcGlfZGlzYWJsZShcdTAwMjZtYWwtXHUwMDNlbmFwaSk7XG4gXHRcdC8qIFRoaXMgaXMgKnZlcnkqIGJhZCAqL1xuIFx0XHRXQVJOKDEsIEtFUk5fRU1FUkdcbiBcdFx0ICAgICAgIFwmIzM0O21hbCVkOiBjb21tYWMgbGlzdCBpcyBub3QgZW1wdHkgb24gcmVtb3ZlIVxcblwmIzM0OyxcbiBcdFx0ICAgICAgIG1hbC1cdTAwM2VpbmRleCk7XG4mIzQzO1x0fVxuIFxuIFx0bWFsX3Jlc2V0KG1hbCk7XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMjA6MjI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgb25seSB0aGUgZHJpdmVyIHRlYXJkb3duL3JlbW92ZSBjYWxsYmFjayAobWFsX3JlbW92ZSkgaW4gdGhlIElCTSBFTUFDIGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmMpLCB3aGljaCBpcyBvbmx5IGV4ZWN1dGVkIGR1cmluZyBkcml2ZXIgdW5iaW5kIG9yIGRldmljZSByZW1vdmFsIG9wZXJhdGlvbnMuIEFkZGl0aW9uYWxseSwgdGhlIGRyaXZlciBpcyBzcGVjaWZpYyB0byBQb3dlclBDIDR4eCAvIENlbGwgU29DIGhhcmR3YXJlIChkZXBlbmRzIG9uIFBQQ19EQ1IpLiBUaGVyZWZvcmUsIHRoZXNlIGNoYW5nZXMgYXJlIG5vdCB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDAzYmQ1MjcyMTE2ZjRlZjE1N2IwNzAyMTBkMjdkYzJkYWM2ZWFhYjMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEF1ZyAzMSAyMDoyMjoyMCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL21hbC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmMKaW5kZXggN2Q3MDA1NmU5MDA4MS4uMzViOTNlNmJjZGY5ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmMKQEAgLTcwMywxMyAmIzQzOzcwMywxMyBAQCBzdGF0aWMgdm9pZCBtYWxfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2KQogCU1BTF9EQkcobWFsLCAmIzM0O3JlbW92ZSYjMzQ7IE5MKTsKIAogCS8qIFN5bmNocm9uaXplIHdpdGggc2NoZWR1bGVkIHBvbGxpbmcgKi8KLQluYXBpX2Rpc2FibGUoJmFtcDttYWwtJmd0O25hcGkpOwotCi0JaWYgKCFsaXN0X2VtcHR5KCZhbXA7bWFsLSZndDtsaXN0KSkKJiM0MzsJaWYgKCFsaXN0X2VtcHR5KCZhbXA7bWFsLSZndDtsaXN0KSkgewomIzQzOwkJbmFwaV9kaXNhYmxlKCZhbXA7bWFsLSZndDtuYXBpKTsKIAkJLyogVGhpcyBpcyAqdmVyeSogYmFkICovCiAJCVdBUk4oMSwgS0VSTl9FTUVSRwogCQkgICAgICAgJiMzNDttYWwlZDogY29tbWFjIGxpc3QgaXMgbm90IGVtcHR5IG9uIHJlbW92ZSFcbiYjMzQ7LAogCQkgICAgICAgbWFsLSZndDtpbmRleCk7CiYjNDM7CX0KIAogCW1hbF9yZXNldChtYWwpOwogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDIwOjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNTgKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiA2MTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTmV0d29yayBEcml2ZXIgUGF0Y2gqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIHBhdGNoLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gYW5hbHl6ZSB0aGUgYGRpZmZgIGFuZCB0aGUgYWNjb21wYW55aW5nIGluc3RydWN0aW9ucywgZXNwZWNpYWxseSB0aG9zZSBmaWx0ZXJpbmcgcnVsZXMuIFRoZSBjb2RlIG1vZGlmaWNhdGlvbiBpcyBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmNgLiBNeSBpbW1lZGlhdGUgcmVhY3Rpb24gaXMgdG8gY2hlY2sgaWYgdGhpcyBwYXRjaCBpcyB3b3J0aCBmdXp6aW5nLiBUaGUga2V5IGZ1bmN0aW9uIGJlaW5nIG1vZGlmaWVkIGhlcmUgaXMgYG1hbF9yZW1vdmVgLgoKVGhlIHBhdGNoIGxvb2tzIHRvIGJlIHRvdWNoaW5nIHRoZSBgbWFsX3JlbW92ZWAgZnVuY3Rpb24sIHNwZWNpZmljYWxseSByZWdhcmRpbmcgdGhlIGhhbmRsaW5nIG9mIGBuYXBpX2Rpc2FibGVgIGFuZCBhIHdhcm5pbmcgbWVzc2FnZS4gSXQgc2VlbXMgdG8gYmUgcmVsYXRlZCB0byBhIGxpc3Qgb2Ygc29tZXRoaW5nIGNhbGxlZCBgY29tbWFjYCwgYW5kIGl0cyBzdGF0ZSBkdXJpbmcgYSBkZXZpY2UgcmVtb3ZhbC4KCk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBgbWFsYCBhbmQgYGlibS9lbWFjYCByZXByZXNlbnQuIEkmIzM5O2xsIG5lZWQgYSBiZXR0ZXIgY29udGV4dC4gSXMgdGhpcyBhIG5ldHdvcmsgaW50ZXJmYWNlIGNhcmQ/IFNvbWUgc3BlY2lmaWMgSUJNIGhhcmR3YXJlPyBMZXQmIzM5O3MgZ2V0IGEgZmlsZSBsaXN0aW5nIGFuZCByZWFkIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmNgIGZpbGUgdXNpbmcgYSBgcmVhZC1maWxlYCBjb21tYW5kIHRvIHNlZSB0aGUgYnJvYWRlciBwaWN0dXJlIGFuZCB0aGUgc3Vycm91bmRpbmcgY29kZS4gVGhpcyB3aWxsIGNsYXJpZnkgd2hhdCBleGFjdGx5IGBtYWxfcmVtb3ZlYCBpcyBkb2luZyBhbmQgaWYgdGhpcyBjaGFuZ2UgYWZmZWN0cyBhbnkgb2YgdGhlIGxpc3RlZCAmIzM0O25vdCB3b3J0aCBmdXp6aW5nJiMzNDsgY2F0ZWdvcmllcy4gRm9yIGV4YW1wbGUsIGlzIHRoaXMgc2ltcGx5IGxvZ2dpbmc/IE9yIGlzIHRoZXJlIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIGRyaXZlciYjMzk7cyBiZWhhdmlvdXI/CgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMjA6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9tYWwuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDY5NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNjk1Olx0XHRkY3JfdW5tYXAobWFsLVx1MDAzZWRjcl9ob3N0LCAweDEwMCk7XG4gNjk2Olx0XHRyZXR1cm4gZXJyO1xuIDY5NzpcdH1cbiA2OTg6XHRcbiA2OTk6XHRzdGF0aWMgdm9pZCBtYWxfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2KVxuIDcwMDpcdHtcbiA3MDE6XHRcdHN0cnVjdCBtYWxfaW5zdGFuY2UgKm1hbCA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKG9mZGV2KTtcbiA3MDI6XHRcbiA3MDM6XHRcdE1BTF9EQkcobWFsLCBcJiMzNDtyZW1vdmVcJiMzNDsgTkwpO1xuIDcwNDpcdFxuIDcwNTpcdFx0LyogU3luY2hyb25pemUgd2l0aCBzY2hlZHVsZWQgcG9sbGluZyAqL1xuIDcwNjpcdFx0aWYgKCFsaXN0X2VtcHR5KFx1MDAyNm1hbC1cdTAwM2VsaXN0KSkge1xuIDcwNzpcdFx0XHRuYXBpX2Rpc2FibGUoXHUwMDI2bWFsLVx1MDAzZW5hcGkpO1xuIDcwODpcdFx0XHQvKiBUaGlzIGlzICp2ZXJ5KiBiYWQgKi9cbiA3MDk6XHRcdFx0V0FSTigxLCBLRVJOX0VNRVJHXG4gNzEwOlx0XHRcdCAgICAgICBcJiMzNDttYWwlZDogY29tbWFjIGxpc3QgaXMgbm90IGVtcHR5IG9uIHJlbW92ZSFcXG5cJiMzNDssXG4gNzExOlx0XHRcdCAgICAgICBtYWwtXHUwMDNlaW5kZXgpO1xuIDcxMjpcdFx0fVxuIDcxMzpcdFxuIDcxNDpcdFx0bWFsX3Jlc2V0KG1hbCk7XG4gNzE1Olx0XG4gNzE2Olx0XHRmcmVlX25ldGRldihtYWwtXHUwMDNlZHVtbXlfZGV2KTtcbiA3MTc6XHRcbiA3MTg6XHRcdGRjcl91bm1hcChtYWwtXHUwMDNlZGNyX2hvc3QsIDB4MTAwKTtcbiA3MTk6XHRcbiA3MjA6XHRcdGRtYV9mcmVlX2NvaGVyZW50KFx1MDAyNm9mZGV2LVx1MDAzZWRldixcbiA3MjE6XHRcdFx0XHQgIHNpemVvZihzdHJ1Y3QgbWFsX2Rlc2NyaXB0b3IpICpcbiA3MjI6XHRcdFx0XHRcdCAgKE5VTV9UWF9CVUZGICogbWFsLVx1MDAzZW51bV90eF9jaGFucyAmIzQzO1xuIDcyMzpcdFx0XHRcdFx0ICAgTlVNX1JYX0JVRkYgKiBtYWwtXHUwMDNlbnVtX3J4X2NoYW5zKSxcbiA3MjQ6XHRcdFx0XHQgIG1hbC1cdTAwM2ViZF92aXJ0LCBtYWwtXHUwMDNlYmRfZG1hKTtcbiA3MjU6XHR9XG4gNzI2Olx0XG4gNzI3Olx0c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbWFsX3BsYXRmb3JtX21hdGNoW10gPVxuIDcyODpcdHtcbiA3Mjk6XHRcdHtcbiA3MzA6XHRcdFx0LmNvbXBhdGlibGVcdD0gXCYjMzQ7aWJtLG1jbWFsXCYjMzQ7LFxuIDczMTpcdFx0fSxcbiA3MzI6XHRcdHtcbiA3MzM6XHRcdFx0LmNvbXBhdGlibGVcdD0gXCYjMzQ7aWJtLG1jbWFsMlwmIzM0OyxcbiA3MzQ6XHRcdH0sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMjA6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzY3NAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UgYW5kIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipLY29uZmlnIFJldmlldyBmb3IgSUJNIEVNQUMvTUFMIEludGVncmF0aW9uKioKCkFscmlnaHQsIHRpbWUgdG8gZGlnIGluLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtMZXQmIzM5O3Mgc3RhcnQgYnkgaGl0dGluZyB0aGUgS2NvbmZpZyBmaWxlcy4mIzM0OyBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiBob3cgdGhlIElCTSBFTUFDIGFuZCBNQUwgY29tcG9uZW50cyBhcmUgY29uZmlndXJlZCB3aXRoaW4gdGhlIGtlcm5lbCBidWlsZCBzeXN0ZW0uIFVuZGVyc3RhbmRpbmcgdGhlIGRlcGVuZGVuY2llcywgZGVmYXVsdCBzZXR0aW5ncywgYW5kIGF2YWlsYWJsZSBvcHRpb25zIGlzIGNydWNpYWwgYmVmb3JlIEkgZXZlbiBjb25zaWRlciBtYWtpbmcgYW55IGNoYW5nZXMgb3IgZW5oYW5jZW1lbnRzLiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSByZWxldmFudCBgQ09ORklHX2Agc3ltYm9scywgdGhlIHJlbGF0aW9uc2hpcHMgYmV0d2VlbiB0aGVtLCBhbmQgYW55IGNvbmRpdGlvbmFsIGJ1aWxkIGxvZ2ljIHRoYXQgaW1wYWN0cyB0aGUgRU1BQy9NQUwgaW50ZWdyYXRpb24gc3BlY2lmaWNhbGx5LiBJIG5lZWQgdG8gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBleGlzdGluZyBzdHJ1Y3R1cmUgYW5kIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gb2J2aW91cyBjb25mbGljdHMgb3IgdW5kb2N1bWVudGVkIGNvbmZpZ3VyYXRpb25zLiBUaGlzIGluaXRpYWwgS2NvbmZpZyByZXZpZXcgaXMgdGhlIGZvdW5kYXRpb24uIEl0IHdpbGwgc2hhcGUgbXkgYXBwcm9hY2ggdG8gYW55IHN1YnNlcXVlbnQgdHJvdWJsZXNob290aW5nLCBvcHRpbWl6YXRpb24sIG9yIGludGVncmF0aW9uIHRhc2tzIHJlbGF0ZWQgdG8gdGhpcyBtb2R1bGUuIEdvdHRhIHN0YXJ0IHdpdGggYSBzb2xpZCB1bmRlcnN0YW5kaW5nIG9mIHRoZSBidWlsZC10aW1lIGNvbmZpZ3VyYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMjA6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7SUJNX0VNQUMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL01ha2VmaWxlPTc9b2JqLSQoQ09ORklHX0lCTVZOSUMpICYjNDM7PSBpYm12bmljLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9NYWtlZmlsZTo4Om9iai0kKENPTkZJR19JQk1fRU1BQykgJiM0Mzs9IGVtYWMvXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vTWFrZWZpbGUtOS1vYmotJChDT05GSUdfRUhFQSkgJiM0Mzs9IGVoZWEvXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZzoyOmNvbmZpZyBJQk1fRU1BQ1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7SUJNIEVNQUMgRXRoZXJuZXQgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctMTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnOjEyOmNvbmZpZyBJQk1fRU1BQ19SWEJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctMTMtXHRpbnQgXCYjMzQ7TnVtYmVyIG9mIHJlY2VpdmUgYnVmZmVyc1wmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZzoxNDpcdGRlcGVuZHMgb24gSUJNX0VNQUNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctMTUtXHRkZWZhdWx0IFwmIzM0OzEyOFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy0xNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWc6MTc6Y29uZmlnIElCTV9FTUFDX1RYQlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy0xOC1cdGludCBcJiMzNDtOdW1iZXIgb2YgdHJhbnNtaXQgYnVmZmVyc1wmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZzoxOTpcdGRlcGVuZHMgb24gSUJNX0VNQUNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctMjAtXHRkZWZhdWx0IFwmIzM0OzY0XCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnLTIxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZzoyMjpjb25maWcgSUJNX0VNQUNfUE9MTF9XRUlHSFRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctMjMtXHRpbnQgXCYjMzQ7TUFMIE5BUEkgcG9sbGluZyB3ZWlnaHRcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWc6MjQ6XHRkZXBlbmRzIG9uIElCTV9FTUFDXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnLTI1LVx0ZGVmYXVsdCBcJiMzNDszMlwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy0yNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWc6Mjc6Y29uZmlnIElCTV9FTUFDX1JYX0NPUFlfVEhSRVNIT0xEXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnLTI4LVx0aW50IFwmIzM0O1JYIHNrYiBjb3B5IHRocmVzaG9sZCAoYnl0ZXMpXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnOjI5Olx0ZGVwZW5kcyBvbiBJQk1fRU1BQ1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy0zMC1cdGRlZmF1bHQgXCYjMzQ7MjU2XCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnLTMxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZzozMjpjb25maWcgSUJNX0VNQUNfREVCVUdcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctMzMtXHRib29sIFwmIzM0O0RlYnVnZ2luZ1wmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZzozNDpcdGRlcGVuZHMgb24gSUJNX0VNQUNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctMzUtXHRkZWZhdWx0IG5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnLTM5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZzo0MDpjb25maWcgSUJNX0VNQUNfWk1JSVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy00MS1cdGJvb2xcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnLTQzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZzo0NDpjb25maWcgSUJNX0VNQUNfUkdNSUlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctNDUtXHRib29sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy00Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWc6NDg6Y29uZmlnIElCTV9FTUFDX1RBSFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy00OS1cdGJvb2xcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnLTUxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZzo1Mjpjb25maWcgSUJNX0VNQUNfRU1BQzRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctNTMtXHRib29sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy01NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWc6NTY6Y29uZmlnIElCTV9FTUFDX05PX0ZMT1dfQ1RSTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy01Ny1cdGJvb2xcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnLTU5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZzo2MDpjb25maWcgSUJNX0VNQUNfTUFMX0NMUl9JQ0lOVFNUQVRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctNjEtXHRib29sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy02My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWc6NjQ6Y29uZmlnIElCTV9FTUFDX01BTF9DT01NT05fRVJSXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnLTY1LVx0Ym9vbFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL01ha2VmaWxlLTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19JQk1fRU1BQykgJiM0Mzs9IGlibV9lbWFjLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL01ha2VmaWxlLTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9NYWtlZmlsZT04PWlibV9lbWFjLXkgOj0gbWFsLm8gY29yZS5vIHBoeS5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9NYWtlZmlsZTo5OmlibV9lbWFjLSQoQ09ORklHX0lCTV9FTUFDX1pNSUkpICYjNDM7PSB6bWlpLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL01ha2VmaWxlOjEwOmlibV9lbWFjLSQoQ09ORklHX0lCTV9FTUFDX1JHTUlJKSAmIzQzOz0gcmdtaWkub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvTWFrZWZpbGU6MTE6aWJtX2VtYWMtJChDT05GSUdfSUJNX0VNQUNfVEFIKSAmIzQzOz0gdGFoLm9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmM9Nzc9TU9EVUxFX0xJQ0VOU0UoXCYjMzQ7R1BMXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmMtODQtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmM6ODU6I2RlZmluZSBFTUFDX1JYX0NPUFlfVEhSRVNIXHRcdENPTkZJR19JQk1fRU1BQ19SWF9DT1BZX1RIUkVTSE9MRFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jLTg2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYz0xNjk0PXN0YXRpYyBpbmxpbmUgdm9pZCBlbWFjX3J4X2NzdW0oc3RydWN0IGVtYWNfaW5zdGFuY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmMtMTY5Ni17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmM6MTY5NzojaWZkZWYgQ09ORklHX0lCTV9FTUFDX1RBSFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jLTE2OTgtXHRpZiAoIWN0cmwgXHUwMDI2XHUwMDI2IGRldi1cdTAwM2V0YWhfZGV2KSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jPTI4MDQ9c3RhdGljIGludCBlbWFjX2luaXRfY29uZmlnKHN0cnVjdCBlbWFjX2luc3RhbmNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jLTI4ODItXHRcdGlmIChvZl9kZXZpY2VfaXNfY29tcGF0aWJsZShucCwgXCYjMzQ7aWJtLGVtYWMtNDA1ZXpcJiMzNDspKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmM6Mjg4MzojaWZkZWYgQ09ORklHX0lCTV9FTUFDX05PX0ZMT1dfQ1RSTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jLTI4ODQtXHRcdFx0ZGV2LVx1MDAzZWZlYXR1cmVzIHw9IEVNQUNfRlRSX05PX0ZMT1dfQ09OVFJPTF80MHg7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jLTI5MDYtXHRpZiAoZGV2LVx1MDAzZXRhaF9waCAhPSAwKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmM6MjkwNzojaWZkZWYgQ09ORklHX0lCTV9FTUFDX1RBSFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jLTI5MDgtXHRcdGRldi1cdTAwM2VmZWF0dXJlcyB8PSBFTUFDX0ZUUl9IQVNfVEFIO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYy0yOTE1LVx0aWYgKGRldi1cdTAwM2V6bWlpX3BoICE9IDApIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYzoyOTE2OiNpZmRlZiBDT05GSUdfSUJNX0VNQUNfWk1JSVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jLTI5MTctXHRcdGRldi1cdTAwM2VmZWF0dXJlcyB8PSBFTUFDX0ZUUl9IQVNfWk1JSTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmMtMjkyNC1cdGlmIChkZXYtXHUwMDNlcmdtaWlfcGggIT0gMCkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jOjI5MjU6I2lmZGVmIENPTkZJR19JQk1fRU1BQ19SR01JSVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jLTI5MjYtXHRcdGRldi1cdTAwM2VmZWF0dXJlcyB8PSBFTUFDX0ZUUl9IQVNfUkdNSUk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5oLTQyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5oOjQzOiNkZWZpbmUgTlVNX1RYX0JVRkZcdFx0XHRDT05GSUdfSUJNX0VNQUNfVFhCXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmg6NDQ6I2RlZmluZSBOVU1fUlhfQlVGRlx0XHRcdENPTkZJR19JQk1fRU1BQ19SWEJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuaC00NS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmg9MzI4PWVudW0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuaC0zMzEtXHRFTUFDX0ZUUlNfUE9TU0lCTEVcdD1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuaDozMzI6I2lmZGVmIENPTkZJR19JQk1fRU1BQ19FTUFDNFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5oLTMzMy1cdCAgICBFTUFDX0ZUUl9FTUFDNFx0fCBFTUFDX0ZUUl9FTUFDNFNZTkNcdHxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmgtMzM2LSNlbmRpZlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5oOjMzNzojaWZkZWYgQ09ORklHX0lCTV9FTUFDX1RBSFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5oLTMzOC1cdCAgICBFTUFDX0ZUUl9IQVNfVEFIXHR8XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmgtMzM5LSNlbmRpZlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5oOjM0MDojaWZkZWYgQ09ORklHX0lCTV9FTUFDX1pNSUlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuaC0zNDEtXHQgICAgRU1BQ19GVFJfSEFTX1pNSUlcdHxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuaC0zNDItI2VuZGlmXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmg6MzQzOiNpZmRlZiBDT05GSUdfSUJNX0VNQUNfUkdNSUlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuaC0zNDQtXHQgICAgRU1BQ19GVFJfSEFTX1JHTUlJXHR8XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmgtMzQ1LSNlbmRpZlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5oOjM0NjojaWZkZWYgQ09ORklHX0lCTV9FTUFDX05PX0ZMT1dfQ1RSTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5oLTM0Ny1cdCAgICBFTUFDX0ZUUl9OT19GTE9XX0NPTlRST0xfNDB4IHxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9kZWJ1Zy5oLTIxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvZGVidWcuaDoyMjojaWYgZGVmaW5lZChDT05GSUdfSUJNX0VNQUNfREVCVUcpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9kZWJ1Zy5oLTIzLSMgZGVmaW5lIERCR19MRVZFTFx0XHQxXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmM9NTE2PXN0YXRpYyBpbnQgbWFsX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL21hbC5jLTU2OS1cdGlmIChvZl9kZXZpY2VfaXNfY29tcGF0aWJsZShvZmRldi1cdTAwM2VkZXYub2Zfbm9kZSwgXCYjMzQ7aWJtLG1jbWFsLTQwNWV6XCYjMzQ7KSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmM6NTcwOiNpZiBkZWZpbmVkKENPTkZJR19JQk1fRU1BQ19NQUxfQ0xSX0lDSU5UU1RBVCkgXHUwMDI2XHUwMDI2IFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9tYWwuYzo1NzE6XHRcdGRlZmluZWQoQ09ORklHX0lCTV9FTUFDX01BTF9DT01NT05fRVJSKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmMtNTcyLVx0XHRtYWwtXHUwMDNlZmVhdHVyZXMgfD0gKE1BTF9GVFJfQ0xFQVJfSUNJTlRTVEFUIHxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9tYWwuYy01OTItXHRuZXRpZl9uYXBpX2FkZF93ZWlnaHQobWFsLVx1MDAzZWR1bW15X2RldiwgXHUwMDI2bWFsLVx1MDAzZW5hcGksIG1hbF9wb2xsLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmM6NTkzOlx0XHRcdCAgICAgIENPTkZJR19JQk1fRU1BQ19QT0xMX1dFSUdIVCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9tYWwuYy01OTQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmg9MjM1PWVudW0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL21hbC5oLTIzOC1cdE1BTF9GVFJTX1BPU1NJQkxFID1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL21hbC5oOjIzOTojaWZkZWYgQ09ORklHX0lCTV9FTUFDX01BTF9DTFJfSUNJTlRTVEFUXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9tYWwuaC0yNDAtXHRcdE1BTF9GVFJfQ0xFQVJfSUNJTlRTVEFUIHxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL21hbC5oLTI0MS0jZW5kaWZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL21hbC5oOjI0MjojaWZkZWYgQ09ORklHX0lCTV9FTUFDX01BTF9DT01NT05fRVJSXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9tYWwuaC0yNDMtXHRcdE1BTF9GVFJfQ09NTU9OX0VSUl9JTlQgfFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL3JnbWlpLmg9MzY9c3RydWN0IHJnbWlpX2luc3RhbmNlIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9yZ21paS5oLTUyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvcmdtaWkuaDo1MzojaWZkZWYgQ09ORklHX0lCTV9FTUFDX1JHTUlJXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9yZ21paS5oLTU0LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL3JnbWlpLmg9NjM9dm9pZCAqcmdtaWlfZHVtcF9yZWdzKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2LCB2b2lkICpidWYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL3JnbWlpLmgtNzUtIyBkZWZpbmUgcmdtaWlfZHVtcF9yZWdzKHgsYnVmKVx0KGJ1ZilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL3JnbWlpLmg6NzY6I2VuZGlmXHRcdFx0XHQvKiAhQ09ORklHX0lCTV9FTUFDX1JHTUlJICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9yZ21paS5oLTc3LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL3RhaC5oPTM3PXN0cnVjdCB0YWhfaW5zdGFuY2Uge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL3RhaC5oLTY4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvdGFoLmg6Njk6I2lmZGVmIENPTkZJR19JQk1fRU1BQ19UQUhcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL3RhaC5oLTcwLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL3RhaC5oPTc3PXZvaWQgKnRhaF9kdW1wX3JlZ3Moc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZkZXYsIHZvaWQgKmJ1Zik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvdGFoLmgtODgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy90YWguaDo4OTojZW5kaWZcdFx0XHRcdC8qICFDT05GSUdfSUJNX0VNQUNfVEFIICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy90YWguaC05MC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy96bWlpLmg9MzA9c3RydWN0IHptaWlfaW5zdGFuY2Uge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL3ptaWkuaC00OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL3ptaWkuaDo0OTojaWZkZWYgQ09ORklHX0lCTV9FTUFDX1pNSUlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL3ptaWkuaC01MC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy96bWlpLmg9NjA9dm9pZCAqem1paV9kdW1wX3JlZ3Moc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZkZXYsIHZvaWQgKmJ1Zik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvem1paS5oLTcxLSMgZGVmaW5lIHptaWlfZHVtcF9yZWdzKHgsYnVmKVx0KGJ1ZilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL3ptaWkuaDo3MjojZW5kaWZcdFx0XHRcdC8qICFDT05GSUdfSUJNX0VNQUNfWk1JSSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvem1paS5oLTczLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDIwOjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgxMTQKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqS2NvbmZpZyBJbnNwZWN0aW9uIGZvciBJQk1fRU1BQyoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBLY29uZmlnIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIElCTV9FTUFDIEV0aGVybmV0IGRyaXZlci4gSSYjMzk7bSBnb2luZyB0byBuYXZpZ2F0ZSB0byB0aGUgc291cmNlIGRpcmVjdG9yeSBhbmQgY2hlY2sgaXRzIEtjb25maWcgZmlsZS4gVGhhdCB3b3VsZCBiZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZ2AuIFRpbWUgdG8gZ2V0IHJlYWRpbmcgYW5kIHNlZSB3aGF0JiMzOTtzIHdoYXQhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMjA6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIElCTV9FTUFDXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtJQk0gRU1BQyBFdGhlcm5ldCBzdXBwb3J0XCYjMzQ7XG4gICA0Olx0XHRkZXBlbmRzIG9uIFBQQ19EQ1JcbiAgIDU6XHRcdHNlbGVjdCBDUkMzMlxuICAgNjpcdFx0c2VsZWN0IFBIWUxJQlxuICAgNzpcdFx0aGVscFxuICAgODpcdFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyB0aGUgSUJNIEVNQUMgZmFtaWx5IG9mIEV0aGVybmV0IGNvbnRyb2xsZXJzXG4gICA5Olx0XHQgIHR5cGljYWxseSBmb3VuZCBvbiA0eHggZW1iZWRkZWQgUG93ZXJQQyBjaGlwcywgYnV0IGFsc28gb24gdGhlXG4gIDEwOlx0XHQgIEF4b24gc291dGhicmlkZ2UgZm9yIENlbGwuXG4gIDExOlx0XG4gIDEyOlx0Y29uZmlnIElCTV9FTUFDX1JYQlxuICAxMzpcdFx0aW50IFwmIzM0O051bWJlciBvZiByZWNlaXZlIGJ1ZmZlcnNcJiMzNDtcbiAgMTQ6XHRcdGRlcGVuZHMgb24gSUJNX0VNQUNcbiAgMTU6XHRcdGRlZmF1bHQgXCYjMzQ7MTI4XCYjMzQ7XG4gIDE2Olx0XG4gIDE3Olx0Y29uZmlnIElCTV9FTUFDX1RYQlxuICAxODpcdFx0aW50IFwmIzM0O051bWJlciBvZiB0cmFuc21pdCBidWZmZXJzXCYjMzQ7XG4gIDE5Olx0XHRkZXBlbmRzIG9uIElCTV9FTUFDXG4gIDIwOlx0XHRkZWZhdWx0IFwmIzM0OzY0XCYjMzQ7XG4gIDIxOlx0XG4gIDIyOlx0Y29uZmlnIElCTV9FTUFDX1BPTExfV0VJR0hUXG4gIDIzOlx0XHRpbnQgXCYjMzQ7TUFMIE5BUEkgcG9sbGluZyB3ZWlnaHRcJiMzNDtcbiAgMjQ6XHRcdGRlcGVuZHMgb24gSUJNX0VNQUNcbiAgMjU6XHRcdGRlZmF1bHQgXCYjMzQ7MzJcJiMzNDtcbiAgMjY6XHRcbiAgMjc6XHRjb25maWcgSUJNX0VNQUNfUlhfQ09QWV9USFJFU0hPTERcbiAgMjg6XHRcdGludCBcJiMzNDtSWCBza2IgY29weSB0aHJlc2hvbGQgKGJ5dGVzKVwmIzM0O1xuICAyOTpcdFx0ZGVwZW5kcyBvbiBJQk1fRU1BQ1xuICAzMDpcdFx0ZGVmYXVsdCBcJiMzNDsyNTZcJiMzNDtcbiAgMzE6XHRcbiAgMzI6XHRjb25maWcgSUJNX0VNQUNfREVCVUdcbiAgMzM6XHRcdGJvb2wgXCYjMzQ7RGVidWdnaW5nXCYjMzQ7XG4gIDM0Olx0XHRkZXBlbmRzIG9uIElCTV9FTUFDXG4gIDM1Olx0XHRkZWZhdWx0IG5cbiAgMzY6XHRcbiAgMzc6XHQjIFRoZSBvcHRpb25zIGJlbG93IGhhcyB0byBiZSBzZWxlY3QmIzM5O2VkIGJ5IHRoZSByZXNwZWN0aXZlXG4gIDM4Olx0IyBwcm9jZXNzb3IgdHlwZXMgb3IgcGxhdGZvcm1zXG4gIDM5Olx0XG4gIDQwOlx0Y29uZmlnIElCTV9FTUFDX1pNSUlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAyMDoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NzY1CgkJCQkJCQlvdXRwdXQ6IDExNwoJCQkJCQkJdGhvdWdodHM6IDg1MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiB0aGUgV29ydGhGdXp6aW5nIEZsYWcqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93biBzeXN0ZW1hdGljYWxseS4gVGhlIG9iamVjdGl2ZSBpcyB0byBkZXRlcm1pbmUgaWYgdGhpcyBwYXRjaCB3YXJyYW50cyBmdXp6aW5nLiBUaGUga2V5IGxpZXMgaW4gdW5kZXJzdGFuZGluZyB3aGVyZSB0aGUgY29kZSBjaGFuZ2VzIGFyZSBsb2NhdGVkIGFuZCB0aGUgY29uZGl0aW9ucyB1bmRlciB3aGljaCB0aGF0IGNvZGUgZXhlY3V0ZXMuCgpGaXJzdCwgSSByZWNhbGwgdGhlIHNpdHVhdGlvbnMgdGhhdCB3YXJyYW50IHNldHRpbmcgYFdvcnRoRnV6emluZ2AgdG8gYGZhbHNlYC4gVGhlc2UgaW5jbHVkZSBjaGFuZ2VzIGluIGRvY3VtZW50YXRpb24sIEtjb25maWcsIGNvbW1lbnRzLCBkZWNvcmF0aXZlIGNoYW5nZXMsIG5vbi1mdW5jdGlvbmFsIGNvbnN0YW50IG1vZGlmaWNhdGlvbnMsIHVucmVhY2hhYmxlIGNvZGUgcGF0aHMgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBhbmQgZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcy4gSSBuZWVkIHRvIHNlZSBpZiB0aGUgcGF0Y2ggZmFsbHMgaW50byBhbnkgb2YgdGhlc2UgY2F0ZWdvcmllcy4KCk15IGluaXRpYWwgc2NhbiByZXZlYWxzIHRoZSBwYXRjaCBpcyB3aXRoaW4gdGhlIGBtYWxfcmVtb3ZlYCBmdW5jdGlvbi4gQSBxdWljayBsb29rIGF0IHRoZSBjb2RlIGNvbmZpcm1zIHRoaXMgaXMgYSBgLnJlbW92ZWAgY2FsbGJhY2sgZm9yIGEgcGxhdGZvcm0gZHJpdmVyLCBzcGVjaWZpY2FsbHkgdGhlIGBtYWxfZHJpdmVyYCByZWdpc3RlcmVkIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9tYWwuY2AuIE15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCB0aGUgYC5yZW1vdmVgIGNhbGxiYWNrIGlzIG9ubHkgZXhlY3V0ZWQgZHVyaW5nIGRyaXZlciB1bmJpbmRpbmcgb3IgdGVhcmRvd24uIFRoYXQgaW1tZWRpYXRlbHkgZmxhZ3MgdGhpcyBhcyBhIHBvdGVudGlhbCBjYW5kaWRhdGUgZm9yIGBXb3J0aEZ1enppbmc9ZmFsc2VgLgoKRGlnZ2luZyBkZWVwZXIsIEkgbm90aWNlIHRoZSBkZXBlbmRlbmN5IG9uIGBQUENfRENSYCwgaW5kaWNhdGluZyB0aGlzIGlzIHNwZWNpZmljIHRvIElCTSYjMzk7cyBQb3dlclBDLWJhc2VkIGVtYmVkZGVkIHN5c3RlbXMuIFRoaXMgc3RyZW5ndGhlbnMgdGhlIGFyZ3VtZW50OyBwbGF0Zm9ybSBkcml2ZXJzLCBlc3BlY2lhbGx5IHRob3NlIHRpZWQgdG8gc3BlY2lmaWMsIGFuZCBvZnRlbiBsZXNzIGNvbW1vbiwgaGFyZHdhcmUsIGFyZSBmcmVxdWVudGx5IG5vdCB2aWFibGUgZm9yIGdlbmVyYWwgZnV6emluZyBkdWUgdG8gdGhlIGVudmlyb25tZW50IHRoZXkgcnVuIGluLgoKVGhlIHBhdGNoIGl0c2VsZiBhbHRlcnMgdGhlIHBsYWNlbWVudCBvZiBgbmFwaV9kaXNhYmxlKCZhbXA7bWFsLSZndDtuYXBpKTtgLCBtb3ZpbmcgaXQgaW5zaWRlIGEgY2hlY2sgZm9yIGFuIGVtcHR5IGxpc3QuIFRoaXMgc2VlbXMgbGlrZSBhIGNhcmVmdWwgbW9kaWZpY2F0aW9uIGJ1dCBkb2VzbiYjMzk7dCBhcHBlYXIgdG8gaW50cm9kdWNlIGFueSBuZXcgZXhlY3V0aW9uIHBhdGhzIHRoYXQgd291bGQgYmUgZnV6emFibGUgaW4gYSBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50LgoKQ29uZmlybWluZyBteSBpbml0aWFsIHN1c3BpY2lvbiwgdGhpcyBwYXRjaCBtb2RpZmllcyAqb25seSogYSBkcml2ZXIgYC5yZW1vdmVgIHRlYXJkb3duIGNhbGxiYWNrLiBCYXNlZCBvbiB0aGUgaW5zdHJ1Y3Rpb25zLCB0aGlzIGZhbGxzIHNxdWFyZWx5IHVuZGVyIHRoZSAmIzM0O0RyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MmIzM0OyBjcml0ZXJpYSBmb3Igc2V0dGluZyBgV29ydGhGdXp6aW5nYCB0byBmYWxzZS4KClRoZXJlZm9yZSwgYFdvcnRoRnV6emluZ2Agc2hvdWxkIGRlZmluaXRlbHkgYmUgYGZhbHNlYC4KCkZvciB0aGUgYHNldC1yZXN1bHRzYCBjb21tYW5kLCBJJiMzOTtsbCBwcm92aWRlIHRoZSBmb2xsb3dpbmcgYXJndW1lbnRzOgoKKiAgIGBXb3J0aEZ1enppbmdgOiBgZmFsc2VgCiogICBgUmVhc29uaW5nYDogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgb25seSB0aGUgcGxhdGZvcm0gZHJpdmVyIC5yZW1vdmUgY2FsbGJhY2sgKGBtYWxfcmVtb3ZlYCkgaW4gdGhlIElCTSBFTUFDIGRyaXZlciAoYGRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL21hbC5jYCksIHdoaWNoIGlzIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIGRyaXZlciB0ZWFyZG93biAvIGRldmljZSByZW1vdmFsLiBJbiBhZGRpdGlvbiwgSUJNIEVNQUMgaXMgc3BlY2lmaWMgdG8gUG93ZXJQQyA0eHggLyBDZWxsIFNvQyBoYXJkd2FyZSAoZGVwZW5kcyBvbiBQUENfRENSKS4mIzM0OwoqICAgYEZvY3VzU3ltYm9sc2A6IGBbXWAgKGVtcHR5IGxpc3QpCiogICBgRW5hYmxlQ29uZmlnc2A6IGBbXWAgKGVtcHR5IGxpc3QpCgpXaXRoIHRoaXMgZGV0YWlsZWQgYW5hbHlzaXMgYW5kIHJlYXNvbmluZywgSSYjMzk7bSBjb25maWRlbnQgaW4gc2V0dGluZyBgV29ydGhGdXp6aW5nYCB0byBgZmFsc2VgIGFuZCBwcm92aWRpbmcgdGhlIGFwcHJvcHJpYXRlIGp1c3RpZmljYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDIwOjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgb25seSB0aGUgZHJpdmVyIHRlYXJkb3duL3JlbW92ZSBjYWxsYmFjayAobWFsX3JlbW92ZSkgaW4gdGhlIElCTSBFTUFDIGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmMpLCB3aGljaCBpcyBvbmx5IGV4ZWN1dGVkIGR1cmluZyBkcml2ZXIgdW5iaW5kIG9yIGRldmljZSByZW1vdmFsIG9wZXJhdGlvbnMuIEFkZGl0aW9uYWxseSwgdGhlIGRyaXZlciBpcyBzcGVjaWZpYyB0byBQb3dlclBDIDR4eCAvIENlbGwgU29DIGhhcmR3YXJlIChkZXBlbmRzIG9uIFBQQ19EQ1IpLiBUaGVyZWZvcmUsIHRoZXNlIGNoYW5nZXMgYXJlIG5vdCB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgb25seSB0aGUgZHJpdmVyIHRlYXJkb3duL3JlbW92ZSBjYWxsYmFjayAobWFsX3JlbW92ZSkgaW4gdGhlIElCTSBFTUFDIGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmMpLCB3aGljaCBpcyBvbmx5IGV4ZWN1dGVkIGR1cmluZyBkcml2ZXIgdW5iaW5kIG9yIGRldmljZSByZW1vdmFsIG9wZXJhdGlvbnMuIEFkZGl0aW9uYWxseSwgdGhlIGRyaXZlciBpcyBzcGVjaWZpYyB0byBQb3dlclBDIDR4eCAvIENlbGwgU29DIGhhcmR3YXJlIChkZXBlbmRzIG9uIFBQQ19EQ1IpLiBUaGVyZWZvcmUsIHRoZXNlIGNoYW5nZXMgYXJlIG5vdCB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMjA6MjI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDIwOjIyOjIyLjMwOTg0MjA4M1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM1NTkwNTQ4MDUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgb25seSB0aGUgZHJpdmVyIHRlYXJkb3duL3JlbW92ZSBjYWxsYmFjayAobWFsX3JlbW92ZSkgaW4gdGhlIElCTSBFTUFDIGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmMpLCB3aGljaCBpcyBvbmx5IGV4ZWN1dGVkIGR1cmluZyBkcml2ZXIgdW5iaW5kIG9yIGRldmljZSByZW1vdmFsIG9wZXJhdGlvbnMuIEFkZGl0aW9uYWxseSwgdGhlIGRyaXZlciBpcyBzcGVjaWZpYyB0byBQb3dlclBDIDR4eCAvIENlbGwgU29DIGhhcmR3YXJlIChkZXBlbmRzIG9uIFBQQ19EQ1IpLiBUaGVyZWZvcmUsIHRoZXNlIGNoYW5nZXMgYXJlIG5vdCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMjA6MjI6MjIuMzA5ODQ2NzczWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTUxOTcyNTI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMDNiZDUyNzIxMTZmNGVmMTU3YjA3MDIxMGQyN2RjMmRhYzZlYWFiM1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEF1ZyAzMSAyMDoyMjoyMCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9tYWwuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL21hbC5jXFxuaW5kZXggN2Q3MDA1NmU5MDA4MS4uMzViOTNlNmJjZGY5ZiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9tYWwuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL21hbC5jXFxuQEAgLTcwMywxMyArNzAzLDEzIEBAIHN0YXRpYyB2b2lkIG1hbF9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZkZXYpXFxuIFxcdE1BTF9EQkcobWFsLCBcXFwicmVtb3ZlXFxcIiBOTCk7XFxuIFxcbiBcXHQvKiBTeW5jaHJvbml6ZSB3aXRoIHNjaGVkdWxlZCBwb2xsaW5nICovXFxuLVxcdG5hcGlfZGlzYWJsZShcXHUwMDI2bWFsLVxcdTAwM2VuYXBpKTtcXG4tXFxuLVxcdGlmICghbGlzdF9lbXB0eShcXHUwMDI2bWFsLVxcdTAwM2VsaXN0KSlcXG4rXFx0aWYgKCFsaXN0X2VtcHR5KFxcdTAwMjZtYWwtXFx1MDAzZWxpc3QpKSB7XFxuK1xcdFxcdG5hcGlfZGlzYWJsZShcXHUwMDI2bWFsLVxcdTAwM2VuYXBpKTtcXG4gXFx0XFx0LyogVGhpcyBpcyAqdmVyeSogYmFkICovXFxuIFxcdFxcdFdBUk4oMSwgS0VSTl9FTUVSR1xcbiBcXHRcXHQgICAgICAgXFxcIm1hbCVkOiBjb21tYWMgbGlzdCBpcyBub3QgZW1wdHkgb24gcmVtb3ZlIVxcXFxuXFxcIixcXG4gXFx0XFx0ICAgICAgIG1hbC1cXHUwMDNlaW5kZXgpO1xcbitcXHR9XFxuIFxcbiBcXHRtYWxfcmVzZXQobWFsKTtcXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDIwOjIyOjIzLjg2MjQzMDcwOFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MzQwMzc5NDY2OTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIG9ubHkgdGhlIGRyaXZlciB0ZWFyZG93bi9yZW1vdmUgY2FsbGJhY2sgKG1hbF9yZW1vdmUpIGluIHRoZSBJQk0gRU1BQyBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL21hbC5jKSwgd2hpY2ggaXMgb25seSBleGVjdXRlZCBkdXJpbmcgZHJpdmVyIHVuYmluZCBvciBkZXZpY2UgcmVtb3ZhbCBvcGVyYXRpb25zLiBBZGRpdGlvbmFsbHksIHRoZSBkcml2ZXIgaXMgc3BlY2lmaWMgdG8gUG93ZXJQQyA0eHggLyBDZWxsIFNvQyBoYXJkd2FyZSAoZGVwZW5kcyBvbiBQUENfRENSKS4gVGhlcmVmb3JlLCB0aGVzZSBjaGFuZ2VzIGFyZSBub3Qgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDAzYmQ1MjcyMTE2ZjRlZjE1N2IwNzAyMTBkMjdkYzJkYWM2ZWFhYjNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAzMSAyMDoyMjoyMCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL21hbC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmNcbmluZGV4IDdkNzAwNTZlOTAwODEuLjM1YjkzZTZiY2RmOWYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9tYWwuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmNcbkBAIC03MDMsMTMgKzcwMywxMyBAQCBzdGF0aWMgdm9pZCBtYWxfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2KVxuIFx0TUFMX0RCRyhtYWwsIFwicmVtb3ZlXCIgTkwpO1xuIFxuIFx0LyogU3luY2hyb25pemUgd2l0aCBzY2hlZHVsZWQgcG9sbGluZyAqL1xuLVx0bmFwaV9kaXNhYmxlKFx1MDAyNm1hbC1cdTAwM2VuYXBpKTtcbi1cbi1cdGlmICghbGlzdF9lbXB0eShcdTAwMjZtYWwtXHUwMDNlbGlzdCkpXG4rXHRpZiAoIWxpc3RfZW1wdHkoXHUwMDI2bWFsLVx1MDAzZWxpc3QpKSB7XG4rXHRcdG5hcGlfZGlzYWJsZShcdTAwMjZtYWwtXHUwMDNlbmFwaSk7XG4gXHRcdC8qIFRoaXMgaXMgKnZlcnkqIGJhZCAqL1xuIFx0XHRXQVJOKDEsIEtFUk5fRU1FUkdcbiBcdFx0ICAgICAgIFwibWFsJWQ6IGNvbW1hYyBsaXN0IGlzIG5vdCBlbXB0eSBvbiByZW1vdmUhXFxuXCIsXG4gXHRcdCAgICAgICBtYWwtXHUwMDNlaW5kZXgpO1xuK1x0fVxuIFxuIFx0bWFsX3Jlc2V0KG1hbCk7XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQyMDoyMjoyMy44NjI0MzE5MThaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxODA5NjYyMTIzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBOZXR3b3JrIERyaXZlciBQYXRjaCoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzIHBhdGNoLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gYW5hbHl6ZSB0aGUgYGRpZmZgIGFuZCB0aGUgYWNjb21wYW55aW5nIGluc3RydWN0aW9ucywgZXNwZWNpYWxseSB0aG9zZSBmaWx0ZXJpbmcgcnVsZXMuIFRoZSBjb2RlIG1vZGlmaWNhdGlvbiBpcyBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmNgLiBNeSBpbW1lZGlhdGUgcmVhY3Rpb24gaXMgdG8gY2hlY2sgaWYgdGhpcyBwYXRjaCBpcyB3b3J0aCBmdXp6aW5nLiBUaGUga2V5IGZ1bmN0aW9uIGJlaW5nIG1vZGlmaWVkIGhlcmUgaXMgYG1hbF9yZW1vdmVgLlxuXG5UaGUgcGF0Y2ggbG9va3MgdG8gYmUgdG91Y2hpbmcgdGhlIGBtYWxfcmVtb3ZlYCBmdW5jdGlvbiwgc3BlY2lmaWNhbGx5IHJlZ2FyZGluZyB0aGUgaGFuZGxpbmcgb2YgYG5hcGlfZGlzYWJsZWAgYW5kIGEgd2FybmluZyBtZXNzYWdlLiBJdCBzZWVtcyB0byBiZSByZWxhdGVkIHRvIGEgbGlzdCBvZiBzb21ldGhpbmcgY2FsbGVkIGBjb21tYWNgLCBhbmQgaXRzIHN0YXRlIGR1cmluZyBhIGRldmljZSByZW1vdmFsLlxuXG5Ob3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgYG1hbGAgYW5kIGBpYm0vZW1hY2AgcmVwcmVzZW50LiBJJ2xsIG5lZWQgYSBiZXR0ZXIgY29udGV4dC4gSXMgdGhpcyBhIG5ldHdvcmsgaW50ZXJmYWNlIGNhcmQ/IFNvbWUgc3BlY2lmaWMgSUJNIGhhcmR3YXJlPyBMZXQncyBnZXQgYSBmaWxlIGxpc3RpbmcgYW5kIHJlYWQgdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9tYWwuY2AgZmlsZSB1c2luZyBhIGByZWFkLWZpbGVgIGNvbW1hbmQgdG8gc2VlIHRoZSBicm9hZGVyIHBpY3R1cmUgYW5kIHRoZSBzdXJyb3VuZGluZyBjb2RlLiBUaGlzIHdpbGwgY2xhcmlmeSB3aGF0IGV4YWN0bHkgYG1hbF9yZW1vdmVgIGlzIGRvaW5nIGFuZCBpZiB0aGlzIGNoYW5nZSBhZmZlY3RzIGFueSBvZiB0aGUgbGlzdGVkIFwibm90IHdvcnRoIGZ1enppbmdcIiBjYXRlZ29yaWVzLiBGb3IgZXhhbXBsZSwgaXMgdGhpcyBzaW1wbHkgbG9nZ2luZz8gT3IgaXMgdGhlcmUgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgZHJpdmVyJ3MgYmVoYXZpb3VyP1xuXG5cbiIsIklucHV0VG9rZW5zIjoyMTU4LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjE5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMjA6MjI6NDEuOTU5MDU5OTM5WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMwNTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL21hbC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDY5NSxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDY5NTpcXHRcXHRkY3JfdW5tYXAobWFsLVxcdTAwM2VkY3JfaG9zdCwgMHgxMDApO1xcbiA2OTY6XFx0XFx0cmV0dXJuIGVycjtcXG4gNjk3OlxcdH1cXG4gNjk4OlxcdFxcbiA2OTk6XFx0c3RhdGljIHZvaWQgbWFsX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZmRldilcXG4gNzAwOlxcdHtcXG4gNzAxOlxcdFxcdHN0cnVjdCBtYWxfaW5zdGFuY2UgKm1hbCA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKG9mZGV2KTtcXG4gNzAyOlxcdFxcbiA3MDM6XFx0XFx0TUFMX0RCRyhtYWwsIFxcXCJyZW1vdmVcXFwiIE5MKTtcXG4gNzA0OlxcdFxcbiA3MDU6XFx0XFx0LyogU3luY2hyb25pemUgd2l0aCBzY2hlZHVsZWQgcG9sbGluZyAqL1xcbiA3MDY6XFx0XFx0aWYgKCFsaXN0X2VtcHR5KFxcdTAwMjZtYWwtXFx1MDAzZWxpc3QpKSB7XFxuIDcwNzpcXHRcXHRcXHRuYXBpX2Rpc2FibGUoXFx1MDAyNm1hbC1cXHUwMDNlbmFwaSk7XFxuIDcwODpcXHRcXHRcXHQvKiBUaGlzIGlzICp2ZXJ5KiBiYWQgKi9cXG4gNzA5OlxcdFxcdFxcdFdBUk4oMSwgS0VSTl9FTUVSR1xcbiA3MTA6XFx0XFx0XFx0ICAgICAgIFxcXCJtYWwlZDogY29tbWFjIGxpc3QgaXMgbm90IGVtcHR5IG9uIHJlbW92ZSFcXFxcblxcXCIsXFxuIDcxMTpcXHRcXHRcXHQgICAgICAgbWFsLVxcdTAwM2VpbmRleCk7XFxuIDcxMjpcXHRcXHR9XFxuIDcxMzpcXHRcXG4gNzE0OlxcdFxcdG1hbF9yZXNldChtYWwpO1xcbiA3MTU6XFx0XFxuIDcxNjpcXHRcXHRmcmVlX25ldGRldihtYWwtXFx1MDAzZWR1bW15X2Rldik7XFxuIDcxNzpcXHRcXG4gNzE4OlxcdFxcdGRjcl91bm1hcChtYWwtXFx1MDAzZWRjcl9ob3N0LCAweDEwMCk7XFxuIDcxOTpcXHRcXG4gNzIwOlxcdFxcdGRtYV9mcmVlX2NvaGVyZW50KFxcdTAwMjZvZmRldi1cXHUwMDNlZGV2LFxcbiA3MjE6XFx0XFx0XFx0XFx0ICBzaXplb2Yoc3RydWN0IG1hbF9kZXNjcmlwdG9yKSAqXFxuIDcyMjpcXHRcXHRcXHRcXHRcXHQgIChOVU1fVFhfQlVGRiAqIG1hbC1cXHUwMDNlbnVtX3R4X2NoYW5zICtcXG4gNzIzOlxcdFxcdFxcdFxcdFxcdCAgIE5VTV9SWF9CVUZGICogbWFsLVxcdTAwM2VudW1fcnhfY2hhbnMpLFxcbiA3MjQ6XFx0XFx0XFx0XFx0ICBtYWwtXFx1MDAzZWJkX3ZpcnQsIG1hbC1cXHUwMDNlYmRfZG1hKTtcXG4gNzI1OlxcdH1cXG4gNzI2OlxcdFxcbiA3Mjc6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbWFsX3BsYXRmb3JtX21hdGNoW10gPVxcbiA3Mjg6XFx0e1xcbiA3Mjk6XFx0XFx0e1xcbiA3MzA6XFx0XFx0XFx0LmNvbXBhdGlibGVcXHQ9IFxcXCJpYm0sbWNtYWxcXFwiLFxcbiA3MzE6XFx0XFx0fSxcXG4gNzMyOlxcdFxcdHtcXG4gNzMzOlxcdFxcdFxcdC5jb21wYXRpYmxlXFx0PSBcXFwiaWJtLG1jbWFsMlxcXCIsXFxuIDczNDpcXHRcXHR9LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQyMDoyMjo0MS45NTkxOTIxMzlaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyOTA5NzM5OTYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSBhbmQgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqS2NvbmZpZyBSZXZpZXcgZm9yIElCTSBFTUFDL01BTCBJbnRlZ3JhdGlvbioqXG5cbkFscmlnaHQsIHRpbWUgdG8gZGlnIGluLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJMZXQncyBzdGFydCBieSBoaXR0aW5nIHRoZSBLY29uZmlnIGZpbGVzLlwiIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIGhvdyB0aGUgSUJNIEVNQUMgYW5kIE1BTCBjb21wb25lbnRzIGFyZSBjb25maWd1cmVkIHdpdGhpbiB0aGUga2VybmVsIGJ1aWxkIHN5c3RlbS4gVW5kZXJzdGFuZGluZyB0aGUgZGVwZW5kZW5jaWVzLCBkZWZhdWx0IHNldHRpbmdzLCBhbmQgYXZhaWxhYmxlIG9wdGlvbnMgaXMgY3J1Y2lhbCBiZWZvcmUgSSBldmVuIGNvbnNpZGVyIG1ha2luZyBhbnkgY2hhbmdlcyBvciBlbmhhbmNlbWVudHMuIEknbSBsb29raW5nIGZvciB0aGUgcmVsZXZhbnQgYENPTkZJR19gIHN5bWJvbHMsIHRoZSByZWxhdGlvbnNoaXBzIGJldHdlZW4gdGhlbSwgYW5kIGFueSBjb25kaXRpb25hbCBidWlsZCBsb2dpYyB0aGF0IGltcGFjdHMgdGhlIEVNQUMvTUFMIGludGVncmF0aW9uIHNwZWNpZmljYWxseS4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgZXhpc3Rpbmcgc3RydWN0dXJlIGFuZCBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIG9idmlvdXMgY29uZmxpY3RzIG9yIHVuZG9jdW1lbnRlZCBjb25maWd1cmF0aW9ucy4gVGhpcyBpbml0aWFsIEtjb25maWcgcmV2aWV3IGlzIHRoZSBmb3VuZGF0aW9uLiBJdCB3aWxsIHNoYXBlIG15IGFwcHJvYWNoIHRvIGFueSBzdWJzZXF1ZW50IHRyb3VibGVzaG9vdGluZywgb3B0aW1pemF0aW9uLCBvciBpbnRlZ3JhdGlvbiB0YXNrcyByZWxhdGVkIHRvIHRoaXMgbW9kdWxlLiBHb3R0YSBzdGFydCB3aXRoIGEgc29saWQgdW5kZXJzdGFuZGluZyBvZiB0aGUgYnVpbGQtdGltZSBjb25maWd1cmF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjc0LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQyMDoyMjo0NC44Njg5MzM4NzJaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQyNDMzMTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiSUJNX0VNQUNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9NYWtlZmlsZT03PW9iai0kKENPTkZJR19JQk1WTklDKSArPSBpYm12bmljLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vTWFrZWZpbGU6ODpvYmotJChDT05GSUdfSUJNX0VNQUMpICs9IGVtYWMvXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL01ha2VmaWxlLTktb2JqLSQoQ09ORklHX0VIRUEpICs9IGVoZWEvXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZzoyOmNvbmZpZyBJQk1fRU1BQ1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiSUJNIEVNQUMgRXRoZXJuZXQgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctMTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZzoxMjpjb25maWcgSUJNX0VNQUNfUlhCXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy0xMy1cXHRpbnQgXFxcIk51bWJlciBvZiByZWNlaXZlIGJ1ZmZlcnNcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZzoxNDpcXHRkZXBlbmRzIG9uIElCTV9FTUFDXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy0xNS1cXHRkZWZhdWx0IFxcXCIxMjhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy0xNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnOjE3OmNvbmZpZyBJQk1fRU1BQ19UWEJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnLTE4LVxcdGludCBcXFwiTnVtYmVyIG9mIHRyYW5zbWl0IGJ1ZmZlcnNcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZzoxOTpcXHRkZXBlbmRzIG9uIElCTV9FTUFDXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy0yMC1cXHRkZWZhdWx0IFxcXCI2NFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnLTIxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWc6MjI6Y29uZmlnIElCTV9FTUFDX1BPTExfV0VJR0hUXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy0yMy1cXHRpbnQgXFxcIk1BTCBOQVBJIHBvbGxpbmcgd2VpZ2h0XFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWc6MjQ6XFx0ZGVwZW5kcyBvbiBJQk1fRU1BQ1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctMjUtXFx0ZGVmYXVsdCBcXFwiMzJcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy0yNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnOjI3OmNvbmZpZyBJQk1fRU1BQ19SWF9DT1BZX1RIUkVTSE9MRFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctMjgtXFx0aW50IFxcXCJSWCBza2IgY29weSB0aHJlc2hvbGQgKGJ5dGVzKVxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnOjI5OlxcdGRlcGVuZHMgb24gSUJNX0VNQUNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnLTMwLVxcdGRlZmF1bHQgXFxcIjI1NlxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnLTMxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWc6MzI6Y29uZmlnIElCTV9FTUFDX0RFQlVHXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy0zMy1cXHRib29sIFxcXCJEZWJ1Z2dpbmdcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZzozNDpcXHRkZXBlbmRzIG9uIElCTV9FTUFDXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy0zNS1cXHRkZWZhdWx0IG5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctMzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZzo0MDpjb25maWcgSUJNX0VNQUNfWk1JSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctNDEtXFx0Ym9vbFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy00My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnOjQ0OmNvbmZpZyBJQk1fRU1BQ19SR01JSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctNDUtXFx0Ym9vbFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy00Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnOjQ4OmNvbmZpZyBJQk1fRU1BQ19UQUhcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnLTQ5LVxcdGJvb2xcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctNTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZzo1Mjpjb25maWcgSUJNX0VNQUNfRU1BQzRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnLTUzLVxcdGJvb2xcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctNTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZzo1Njpjb25maWcgSUJNX0VNQUNfTk9fRkxPV19DVFJMXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy01Ny1cXHRib29sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnLTU5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWc6NjA6Y29uZmlnIElCTV9FTUFDX01BTF9DTFJfSUNJTlRTVEFUXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy02MS1cXHRib29sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnLTYzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWc6NjQ6Y29uZmlnIElCTV9FTUFDX01BTF9DT01NT05fRVJSXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy02NS1cXHRib29sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9NYWtlZmlsZS01LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX0lCTV9FTUFDKSArPSBpYm1fZW1hYy5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvTWFrZWZpbGUtNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9NYWtlZmlsZT04PWlibV9lbWFjLXkgOj0gbWFsLm8gY29yZS5vIHBoeS5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvTWFrZWZpbGU6OTppYm1fZW1hYy0kKENPTkZJR19JQk1fRU1BQ19aTUlJKSArPSB6bWlpLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9NYWtlZmlsZToxMDppYm1fZW1hYy0kKENPTkZJR19JQk1fRU1BQ19SR01JSSkgKz0gcmdtaWkub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL01ha2VmaWxlOjExOmlibV9lbWFjLSQoQ09ORklHX0lCTV9FTUFDX1RBSCkgKz0gdGFoLm9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYz03Nz1NT0RVTEVfTElDRU5TRShcXFwiR1BMXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmMtODQtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jOjg1OiNkZWZpbmUgRU1BQ19SWF9DT1BZX1RIUkVTSFxcdFxcdENPTkZJR19JQk1fRU1BQ19SWF9DT1BZX1RIUkVTSE9MRFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYy04Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYz0xNjk0PXN0YXRpYyBpbmxpbmUgdm9pZCBlbWFjX3J4X2NzdW0oc3RydWN0IGVtYWNfaW5zdGFuY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYy0xNjk2LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmM6MTY5NzojaWZkZWYgQ09ORklHX0lCTV9FTUFDX1RBSFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYy0xNjk4LVxcdGlmICghY3RybCBcXHUwMDI2XFx1MDAyNiBkZXYtXFx1MDAzZXRhaF9kZXYpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYz0yODA0PXN0YXRpYyBpbnQgZW1hY19pbml0X2NvbmZpZyhzdHJ1Y3QgZW1hY19pbnN0YW5jZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jLTI4ODItXFx0XFx0aWYgKG9mX2RldmljZV9pc19jb21wYXRpYmxlKG5wLCBcXFwiaWJtLGVtYWMtNDA1ZXpcXFwiKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYzoyODgzOiNpZmRlZiBDT05GSUdfSUJNX0VNQUNfTk9fRkxPV19DVFJMXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jLTI4ODQtXFx0XFx0XFx0ZGV2LVxcdTAwM2VmZWF0dXJlcyB8PSBFTUFDX0ZUUl9OT19GTE9XX0NPTlRST0xfNDB4O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jLTI5MDYtXFx0aWYgKGRldi1cXHUwMDNldGFoX3BoICE9IDApIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmM6MjkwNzojaWZkZWYgQ09ORklHX0lCTV9FTUFDX1RBSFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYy0yOTA4LVxcdFxcdGRldi1cXHUwMDNlZmVhdHVyZXMgfD0gRU1BQ19GVFJfSEFTX1RBSDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYy0yOTE1LVxcdGlmIChkZXYtXFx1MDAzZXptaWlfcGggIT0gMCkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYzoyOTE2OiNpZmRlZiBDT05GSUdfSUJNX0VNQUNfWk1JSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYy0yOTE3LVxcdFxcdGRldi1cXHUwMDNlZmVhdHVyZXMgfD0gRU1BQ19GVFJfSEFTX1pNSUk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmMtMjkyNC1cXHRpZiAoZGV2LVxcdTAwM2VyZ21paV9waCAhPSAwKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jOjI5MjU6I2lmZGVmIENPTkZJR19JQk1fRU1BQ19SR01JSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYy0yOTI2LVxcdFxcdGRldi1cXHUwMDNlZmVhdHVyZXMgfD0gRU1BQ19GVFJfSEFTX1JHTUlJO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5oLTQyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuaDo0MzojZGVmaW5lIE5VTV9UWF9CVUZGXFx0XFx0XFx0Q09ORklHX0lCTV9FTUFDX1RYQlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuaDo0NDojZGVmaW5lIE5VTV9SWF9CVUZGXFx0XFx0XFx0Q09ORklHX0lCTV9FTUFDX1JYQlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuaC00NS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuaD0zMjg9ZW51bSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmgtMzMxLVxcdEVNQUNfRlRSU19QT1NTSUJMRVxcdD1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmg6MzMyOiNpZmRlZiBDT05GSUdfSUJNX0VNQUNfRU1BQzRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmgtMzMzLVxcdCAgICBFTUFDX0ZUUl9FTUFDNFxcdHwgRU1BQ19GVFJfRU1BQzRTWU5DXFx0fFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5oLTMzNi0jZW5kaWZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmg6MzM3OiNpZmRlZiBDT05GSUdfSUJNX0VNQUNfVEFIXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5oLTMzOC1cXHQgICAgRU1BQ19GVFJfSEFTX1RBSFxcdHxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmgtMzM5LSNlbmRpZlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuaDozNDA6I2lmZGVmIENPTkZJR19JQk1fRU1BQ19aTUlJXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5oLTM0MS1cXHQgICAgRU1BQ19GVFJfSEFTX1pNSUlcXHR8XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5oLTM0Mi0jZW5kaWZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmg6MzQzOiNpZmRlZiBDT05GSUdfSUJNX0VNQUNfUkdNSUlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmgtMzQ0LVxcdCAgICBFTUFDX0ZUUl9IQVNfUkdNSUlcXHR8XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5oLTM0NS0jZW5kaWZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmg6MzQ2OiNpZmRlZiBDT05GSUdfSUJNX0VNQUNfTk9fRkxPV19DVFJMXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5oLTM0Ny1cXHQgICAgRU1BQ19GVFJfTk9fRkxPV19DT05UUk9MXzQweCB8XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9kZWJ1Zy5oLTIxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2RlYnVnLmg6MjI6I2lmIGRlZmluZWQoQ09ORklHX0lCTV9FTUFDX0RFQlVHKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2RlYnVnLmgtMjMtIyBkZWZpbmUgREJHX0xFVkVMXFx0XFx0MVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmM9NTE2PXN0YXRpYyBpbnQgbWFsX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmMtNTY5LVxcdGlmIChvZl9kZXZpY2VfaXNfY29tcGF0aWJsZShvZmRldi1cXHUwMDNlZGV2Lm9mX25vZGUsIFxcXCJpYm0sbWNtYWwtNDA1ZXpcXFwiKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL21hbC5jOjU3MDojaWYgZGVmaW5lZChDT05GSUdfSUJNX0VNQUNfTUFMX0NMUl9JQ0lOVFNUQVQpIFxcdTAwMjZcXHUwMDI2IFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9tYWwuYzo1NzE6XFx0XFx0ZGVmaW5lZChDT05GSUdfSUJNX0VNQUNfTUFMX0NPTU1PTl9FUlIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmMtNTcyLVxcdFxcdG1hbC1cXHUwMDNlZmVhdHVyZXMgfD0gKE1BTF9GVFJfQ0xFQVJfSUNJTlRTVEFUIHxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL21hbC5jLTU5Mi1cXHRuZXRpZl9uYXBpX2FkZF93ZWlnaHQobWFsLVxcdTAwM2VkdW1teV9kZXYsIFxcdTAwMjZtYWwtXFx1MDAzZW5hcGksIG1hbF9wb2xsLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL21hbC5jOjU5MzpcXHRcXHRcXHQgICAgICBDT05GSUdfSUJNX0VNQUNfUE9MTF9XRUlHSFQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL21hbC5jLTU5NC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL21hbC5oPTIzNT1lbnVtIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL21hbC5oLTIzOC1cXHRNQUxfRlRSU19QT1NTSUJMRSA9XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmg6MjM5OiNpZmRlZiBDT05GSUdfSUJNX0VNQUNfTUFMX0NMUl9JQ0lOVFNUQVRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9tYWwuaC0yNDAtXFx0XFx0TUFMX0ZUUl9DTEVBUl9JQ0lOVFNUQVQgfFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL21hbC5oLTI0MS0jZW5kaWZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9tYWwuaDoyNDI6I2lmZGVmIENPTkZJR19JQk1fRU1BQ19NQUxfQ09NTU9OX0VSUlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL21hbC5oLTI0My1cXHRcXHRNQUxfRlRSX0NPTU1PTl9FUlJfSU5UIHxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL3JnbWlpLmg9MzY9c3RydWN0IHJnbWlpX2luc3RhbmNlIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL3JnbWlpLmgtNTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvcmdtaWkuaDo1MzojaWZkZWYgQ09ORklHX0lCTV9FTUFDX1JHTUlJXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvcmdtaWkuaC01NC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL3JnbWlpLmg9NjM9dm9pZCAqcmdtaWlfZHVtcF9yZWdzKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2LCB2b2lkICpidWYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvcmdtaWkuaC03NS0jIGRlZmluZSByZ21paV9kdW1wX3JlZ3MoeCxidWYpXFx0KGJ1ZilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9yZ21paS5oOjc2OiNlbmRpZlxcdFxcdFxcdFxcdC8qICFDT05GSUdfSUJNX0VNQUNfUkdNSUkgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9yZ21paS5oLTc3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvdGFoLmg9Mzc9c3RydWN0IHRhaF9pbnN0YW5jZSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy90YWguaC02OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy90YWguaDo2OTojaWZkZWYgQ09ORklHX0lCTV9FTUFDX1RBSFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL3RhaC5oLTcwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvdGFoLmg9Nzc9dm9pZCAqdGFoX2R1bXBfcmVncyhzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZmRldiwgdm9pZCAqYnVmKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL3RhaC5oLTg4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL3RhaC5oOjg5OiNlbmRpZlxcdFxcdFxcdFxcdC8qICFDT05GSUdfSUJNX0VNQUNfVEFIICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvdGFoLmgtOTAtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy96bWlpLmg9MzA9c3RydWN0IHptaWlfaW5zdGFuY2Uge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvem1paS5oLTQ4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL3ptaWkuaDo0OTojaWZkZWYgQ09ORklHX0lCTV9FTUFDX1pNSUlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy96bWlpLmgtNTAtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy96bWlpLmg9NjA9dm9pZCAqem1paV9kdW1wX3JlZ3Moc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZkZXYsIHZvaWQgKmJ1Zik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy96bWlpLmgtNzEtIyBkZWZpbmUgem1paV9kdW1wX3JlZ3MoeCxidWYpXFx0KGJ1ZilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy96bWlpLmg6NzI6I2VuZGlmXFx0XFx0XFx0XFx0LyogIUNPTkZJR19JQk1fRU1BQ19aTUlJICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvem1paS5oLTczLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQyMDoyMjo0NC45MTMxODA5MDJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo3MzU1MzMwMzkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqS2NvbmZpZyBJbnNwZWN0aW9uIGZvciBJQk1fRU1BQyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIEtjb25maWcgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgSUJNX0VNQUMgRXRoZXJuZXQgZHJpdmVyLiBJJ20gZ29pbmcgdG8gbmF2aWdhdGUgdG8gdGhlIHNvdXJjZSBkaXJlY3RvcnkgYW5kIGNoZWNrIGl0cyBLY29uZmlnIGZpbGUuIFRoYXQgd291bGQgYmUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWdgLiBUaW1lIHRvIGdldCByZWFkaW5nIGFuZCBzZWUgd2hhdCdzIHdoYXQhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgxMTQsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQyMDoyMjo1Mi4yNjg1MTc0NjRaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NDc4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRjb25maWcgSUJNX0VNQUNcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJJQk0gRU1BQyBFdGhlcm5ldCBzdXBwb3J0XFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBQUENfRENSXFxuICAgNTpcXHRcXHRzZWxlY3QgQ1JDMzJcXG4gICA2OlxcdFxcdHNlbGVjdCBQSFlMSUJcXG4gICA3OlxcdFxcdGhlbHBcXG4gICA4OlxcdFxcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlIElCTSBFTUFDIGZhbWlseSBvZiBFdGhlcm5ldCBjb250cm9sbGVyc1xcbiAgIDk6XFx0XFx0ICB0eXBpY2FsbHkgZm91bmQgb24gNHh4IGVtYmVkZGVkIFBvd2VyUEMgY2hpcHMsIGJ1dCBhbHNvIG9uIHRoZVxcbiAgMTA6XFx0XFx0ICBBeG9uIHNvdXRoYnJpZGdlIGZvciBDZWxsLlxcbiAgMTE6XFx0XFxuICAxMjpcXHRjb25maWcgSUJNX0VNQUNfUlhCXFxuICAxMzpcXHRcXHRpbnQgXFxcIk51bWJlciBvZiByZWNlaXZlIGJ1ZmZlcnNcXFwiXFxuICAxNDpcXHRcXHRkZXBlbmRzIG9uIElCTV9FTUFDXFxuICAxNTpcXHRcXHRkZWZhdWx0IFxcXCIxMjhcXFwiXFxuICAxNjpcXHRcXG4gIDE3OlxcdGNvbmZpZyBJQk1fRU1BQ19UWEJcXG4gIDE4OlxcdFxcdGludCBcXFwiTnVtYmVyIG9mIHRyYW5zbWl0IGJ1ZmZlcnNcXFwiXFxuICAxOTpcXHRcXHRkZXBlbmRzIG9uIElCTV9FTUFDXFxuICAyMDpcXHRcXHRkZWZhdWx0IFxcXCI2NFxcXCJcXG4gIDIxOlxcdFxcbiAgMjI6XFx0Y29uZmlnIElCTV9FTUFDX1BPTExfV0VJR0hUXFxuICAyMzpcXHRcXHRpbnQgXFxcIk1BTCBOQVBJIHBvbGxpbmcgd2VpZ2h0XFxcIlxcbiAgMjQ6XFx0XFx0ZGVwZW5kcyBvbiBJQk1fRU1BQ1xcbiAgMjU6XFx0XFx0ZGVmYXVsdCBcXFwiMzJcXFwiXFxuICAyNjpcXHRcXG4gIDI3OlxcdGNvbmZpZyBJQk1fRU1BQ19SWF9DT1BZX1RIUkVTSE9MRFxcbiAgMjg6XFx0XFx0aW50IFxcXCJSWCBza2IgY29weSB0aHJlc2hvbGQgKGJ5dGVzKVxcXCJcXG4gIDI5OlxcdFxcdGRlcGVuZHMgb24gSUJNX0VNQUNcXG4gIDMwOlxcdFxcdGRlZmF1bHQgXFxcIjI1NlxcXCJcXG4gIDMxOlxcdFxcbiAgMzI6XFx0Y29uZmlnIElCTV9FTUFDX0RFQlVHXFxuICAzMzpcXHRcXHRib29sIFxcXCJEZWJ1Z2dpbmdcXFwiXFxuICAzNDpcXHRcXHRkZXBlbmRzIG9uIElCTV9FTUFDXFxuICAzNTpcXHRcXHRkZWZhdWx0IG5cXG4gIDM2OlxcdFxcbiAgMzc6XFx0IyBUaGUgb3B0aW9ucyBiZWxvdyBoYXMgdG8gYmUgc2VsZWN0J2VkIGJ5IHRoZSByZXNwZWN0aXZlXFxuICAzODpcXHQjIHByb2Nlc3NvciB0eXBlcyBvciBwbGF0Zm9ybXNcXG4gIDM5OlxcdFxcbiAgNDA6XFx0Y29uZmlnIElCTV9FTUFDX1pNSUlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMjA6MjI6NTIuMjY4NTgzNjM0WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTYzMTc2MjMxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXNpcyBvZiB0aGUgV29ydGhGdXp6aW5nIEZsYWcqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24gc3lzdGVtYXRpY2FsbHkuIFRoZSBvYmplY3RpdmUgaXMgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgcGF0Y2ggd2FycmFudHMgZnV6emluZy4gVGhlIGtleSBsaWVzIGluIHVuZGVyc3RhbmRpbmcgd2hlcmUgdGhlIGNvZGUgY2hhbmdlcyBhcmUgbG9jYXRlZCBhbmQgdGhlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggdGhhdCBjb2RlIGV4ZWN1dGVzLlxuXG5GaXJzdCwgSSByZWNhbGwgdGhlIHNpdHVhdGlvbnMgdGhhdCB3YXJyYW50IHNldHRpbmcgYFdvcnRoRnV6emluZ2AgdG8gYGZhbHNlYC4gVGhlc2UgaW5jbHVkZSBjaGFuZ2VzIGluIGRvY3VtZW50YXRpb24sIEtjb25maWcsIGNvbW1lbnRzLCBkZWNvcmF0aXZlIGNoYW5nZXMsIG5vbi1mdW5jdGlvbmFsIGNvbnN0YW50IG1vZGlmaWNhdGlvbnMsIHVucmVhY2hhYmxlIGNvZGUgcGF0aHMgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBhbmQgZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcy4gSSBuZWVkIHRvIHNlZSBpZiB0aGUgcGF0Y2ggZmFsbHMgaW50byBhbnkgb2YgdGhlc2UgY2F0ZWdvcmllcy5cblxuTXkgaW5pdGlhbCBzY2FuIHJldmVhbHMgdGhlIHBhdGNoIGlzIHdpdGhpbiB0aGUgYG1hbF9yZW1vdmVgIGZ1bmN0aW9uLiBBIHF1aWNrIGxvb2sgYXQgdGhlIGNvZGUgY29uZmlybXMgdGhpcyBpcyBhIGAucmVtb3ZlYCBjYWxsYmFjayBmb3IgYSBwbGF0Zm9ybSBkcml2ZXIsIHNwZWNpZmljYWxseSB0aGUgYG1hbF9kcml2ZXJgIHJlZ2lzdGVyZWQgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL21hbC5jYC4gTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IHRoZSBgLnJlbW92ZWAgY2FsbGJhY2sgaXMgb25seSBleGVjdXRlZCBkdXJpbmcgZHJpdmVyIHVuYmluZGluZyBvciB0ZWFyZG93bi4gVGhhdCBpbW1lZGlhdGVseSBmbGFncyB0aGlzIGFzIGEgcG90ZW50aWFsIGNhbmRpZGF0ZSBmb3IgYFdvcnRoRnV6emluZz1mYWxzZWAuXG5cbkRpZ2dpbmcgZGVlcGVyLCBJIG5vdGljZSB0aGUgZGVwZW5kZW5jeSBvbiBgUFBDX0RDUmAsIGluZGljYXRpbmcgdGhpcyBpcyBzcGVjaWZpYyB0byBJQk0ncyBQb3dlclBDLWJhc2VkIGVtYmVkZGVkIHN5c3RlbXMuIFRoaXMgc3RyZW5ndGhlbnMgdGhlIGFyZ3VtZW50OyBwbGF0Zm9ybSBkcml2ZXJzLCBlc3BlY2lhbGx5IHRob3NlIHRpZWQgdG8gc3BlY2lmaWMsIGFuZCBvZnRlbiBsZXNzIGNvbW1vbiwgaGFyZHdhcmUsIGFyZSBmcmVxdWVudGx5IG5vdCB2aWFibGUgZm9yIGdlbmVyYWwgZnV6emluZyBkdWUgdG8gdGhlIGVudmlyb25tZW50IHRoZXkgcnVuIGluLlxuXG5UaGUgcGF0Y2ggaXRzZWxmIGFsdGVycyB0aGUgcGxhY2VtZW50IG9mIGBuYXBpX2Rpc2FibGUoXHUwMDI2bWFsLVx1MDAzZW5hcGkpO2AsIG1vdmluZyBpdCBpbnNpZGUgYSBjaGVjayBmb3IgYW4gZW1wdHkgbGlzdC4gVGhpcyBzZWVtcyBsaWtlIGEgY2FyZWZ1bCBtb2RpZmljYXRpb24gYnV0IGRvZXNuJ3QgYXBwZWFyIHRvIGludHJvZHVjZSBhbnkgbmV3IGV4ZWN1dGlvbiBwYXRocyB0aGF0IHdvdWxkIGJlIGZ1enphYmxlIGluIGEgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudC5cblxuQ29uZmlybWluZyBteSBpbml0aWFsIHN1c3BpY2lvbiwgdGhpcyBwYXRjaCBtb2RpZmllcyAqb25seSogYSBkcml2ZXIgYC5yZW1vdmVgIHRlYXJkb3duIGNhbGxiYWNrLiBCYXNlZCBvbiB0aGUgaW5zdHJ1Y3Rpb25zLCB0aGlzIGZhbGxzIHNxdWFyZWx5IHVuZGVyIHRoZSBcIkRyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3NcIiBjcml0ZXJpYSBmb3Igc2V0dGluZyBgV29ydGhGdXp6aW5nYCB0byBmYWxzZS5cblxuVGhlcmVmb3JlLCBgV29ydGhGdXp6aW5nYCBzaG91bGQgZGVmaW5pdGVseSBiZSBgZmFsc2VgLlxuXG5Gb3IgdGhlIGBzZXQtcmVzdWx0c2AgY29tbWFuZCwgSSdsbCBwcm92aWRlIHRoZSBmb2xsb3dpbmcgYXJndW1lbnRzOlxuXG4qICAgYFdvcnRoRnV6emluZ2A6IGBmYWxzZWBcbiogICBgUmVhc29uaW5nYDogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgb25seSB0aGUgcGxhdGZvcm0gZHJpdmVyIC5yZW1vdmUgY2FsbGJhY2sgKGBtYWxfcmVtb3ZlYCkgaW4gdGhlIElCTSBFTUFDIGRyaXZlciAoYGRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL21hbC5jYCksIHdoaWNoIGlzIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIGRyaXZlciB0ZWFyZG93biAvIGRldmljZSByZW1vdmFsLiBJbiBhZGRpdGlvbiwgSUJNIEVNQUMgaXMgc3BlY2lmaWMgdG8gUG93ZXJQQyA0eHggLyBDZWxsIFNvQyBoYXJkd2FyZSAoZGVwZW5kcyBvbiBQUENfRENSKS5cIlxuKiAgIGBGb2N1c1N5bWJvbHNgOiBgW11gIChlbXB0eSBsaXN0KVxuKiAgIGBFbmFibGVDb25maWdzYDogYFtdYCAoZW1wdHkgbGlzdClcblxuV2l0aCB0aGlzIGRldGFpbGVkIGFuYWx5c2lzIGFuZCByZWFzb25pbmcsIEknbSBjb25maWRlbnQgaW4gc2V0dGluZyBgV29ydGhGdXp6aW5nYCB0byBgZmFsc2VgIGFuZCBwcm92aWRpbmcgdGhlIGFwcHJvcHJpYXRlIGp1c3RpZmljYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg3NjUsIk91dHB1dFRva2VucyI6MTE3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODUxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMjA6MjI6NTcuOTAwMzQ4Njc0WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjY4MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgb25seSB0aGUgZHJpdmVyIHRlYXJkb3duL3JlbW92ZSBjYWxsYmFjayAobWFsX3JlbW92ZSkgaW4gdGhlIElCTSBFTUFDIGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmMpLCB3aGljaCBpcyBvbmx5IGV4ZWN1dGVkIGR1cmluZyBkcml2ZXIgdW5iaW5kIG9yIGRldmljZSByZW1vdmFsIG9wZXJhdGlvbnMuIEFkZGl0aW9uYWxseSwgdGhlIGRyaXZlciBpcyBzcGVjaWZpYyB0byBQb3dlclBDIDR4eCAvIENlbGwgU29DIGhhcmR3YXJlIChkZXBlbmRzIG9uIFBQQ19EQ1IpLiBUaGVyZWZvcmUsIHRoZXNlIGNoYW5nZXMgYXJlIG5vdCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgb25seSB0aGUgZHJpdmVyIHRlYXJkb3duL3JlbW92ZSBjYWxsYmFjayAobWFsX3JlbW92ZSkgaW4gdGhlIElCTSBFTUFDIGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmMpLCB3aGljaCBpcyBvbmx5IGV4ZWN1dGVkIGR1cmluZyBkcml2ZXIgdW5iaW5kIG9yIGRldmljZSByZW1vdmFsIG9wZXJhdGlvbnMuIEFkZGl0aW9uYWxseSwgdGhlIGRyaXZlciBpcyBzcGVjaWZpYyB0byBQb3dlclBDIDR4eCAvIENlbGwgU29DIGhhcmR3YXJlIChkZXBlbmRzIG9uIFBQQ19EQ1IpLiBUaGVyZWZvcmUsIHRoZXNlIGNoYW5nZXMgYXJlIG5vdCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMjA6MjI6NTcuOTAwMzc5MzQ0WiIsIlNlcSI6MTEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowg78wj[1] Phase: Running StartedAt: 2026-08-31 20:23:09 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg78wj[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-31 20:23:09 +0000 UTC FinishedAt: 2026-08-31 20:23:13 +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,}