Name: series-workflowpkt9n Phase: Succeeded StartedAt: 2026-08-08 18:10:10 +0000 UTC FinishedAt: 2026-08-08 18:54:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpkt9n[0] Phase: Succeeded StartedAt: 2026-08-08 18:10:10 +0000 UTC FinishedAt: 2026-08-08 18:15:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpkt9n[0].run-triage Phase: Succeeded StartedAt: 2026-08-08 18:10:10 +0000 UTC FinishedAt: 2026-08-08 18:15:44 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "dd057113ac7ba5bdd2aed3d9405305911152f911", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "STMMAC_ETH", "STMMAC_PCI", "STMMAC_PLATFORM", "DWMAC_GENERIC" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "dd057113ac7ba5bdd2aed3d9405305911152f911", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "STMMAC_ETH", "STMMAC_PCI", "STMMAC_PLATFORM", "DWMAC_GENERIC" ], "series_id": "dc4361ff-258d-486d-9e04-ab2e051d5927" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "stmmac_set_features", "stmmac_dvr_probe" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDE4OjEzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NUTU1BQ19FVEgmIzM0OywKICAgICYjMzQ7U1RNTUFDX1BDSSYjMzQ7LAogICAgJiMzNDtTVE1NQUNfUExBVEZPUk0mIzM0OywKICAgICYjMzQ7RFdNQUNfR0VORVJJQyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3N0bW1hY19zZXRfZmVhdHVyZXMmIzM0OywKICAgICYjMzQ7c3RtbWFjX2R2cl9wcm9iZSYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHVwZGF0ZXMgdGhlIGxvZ2ljIGZvciBzZXR0aW5nIEdTTyB0eXBlcyBpbiB0aGUgc3RtbWFjIGRyaXZlciBiYXNlZCBvbiBgbmV0ZGV2X2ZlYXR1cmVzX3RgIGluc3RlYWQgb2YgYSBib29sZWFuIGB0c29gIGZsYWcuIEl0IG1vZGlmaWVzIGBzdG1tYWNfc2V0X2dzb190eXBlc2AgdG8gY2hlY2sgZm9yIGBORVRJRl9GX1RTT2AsIGBORVRJRl9GX1RTTzZgLCBhbmQgYE5FVElGX0ZfR1NPX1VEUF9MNGAgZmVhdHVyZXMgdG8gYWNjdXJhdGVseSBzZXQgdGhlIGBnc29fZW5hYmxlZF90eXBlc2AgYml0bWFzay4gVGhlc2UgY2hhbmdlcyBvbmx5IGFmZmVjdCBjb250cm9sIGZsb3cgYW5kIGJpdG1hc2sgY2FsY3VsYXRpb25zIGZvciBuZXR3b3JrIGRldmljZSBmZWF0dXJlcy4gVGhlcmUgYXJlIG5vIG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIG5vIGRhdGEgc3RydWN0dXJlcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgYW5kIG5vIGNvbXBsZXggc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcyBjb3VsZCBiZSByZWFkLiBUaGVyZWZvcmUsIHRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4uIFN0YW5kYXJkIEtBU0FOIGFuZCBvdGhlciBidWcgZGV0ZWN0b3JzIGFyZSBzdWZmaWNpZW50IHRvIGNhdGNoIGFueSBwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24gb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3MgaXNzdWVzLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9naWMgZm9yIHNldHRpbmcgR1NPIHR5cGVzIGJhc2VkIG9uIG5ldGRldiBmZWF0dXJlcyBpbiB0aGUgc3RtbWFjIGRyaXZlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgY29yZSBldGhlcm5ldCBkcml2ZXIgdGhhdCBpcyByZWFjaGFibGUgaW4gUUVNVSB2aWEgdGhlIERlc2lnbldhcmUgTUFDIGVtdWxhdGlvbiAoc25wcyxkd21hYykgb3IgYnkgaW5qZWN0aW5nIGEgUENJIGRldmljZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAxODoxMzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDdkMmE3ZGEwMThmZDUxMTBmMjBhOWVmMTY0OWJmNjI1YTg2MTJmMzhcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEF1ZyA4IDE4OjEzOjQ2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG5pbmRleCBhNzFmMGRmMjYzNzg1Li4zZDMwNDJhZmNkZjQ5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuQEAgLTQzNzEsMTYgJiM0Mzs0MzcxLDE4IEBAIHN0YXRpYyB2b2lkIHN0bW1hY19mbHVzaF90eF9kZXNjcmlwdG9ycyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIGludCBxdWV1ZSlcbiBcdHN0bW1hY19zZXRfcXVldWVfdHhfdGFpbF9wdHIocHJpdiwgdHhfcSwgcXVldWUsIHR4X3EtXHUwMDNlY3VyX3R4KTtcbiB9XG4gXG4tc3RhdGljIHZvaWQgc3RtbWFjX3NldF9nc29fdHlwZXMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBib29sIHRzbylcbiYjNDM7c3RhdGljIHZvaWQgc3RtbWFjX3NldF9nc29fdHlwZXMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuJiM0MztcdFx0XHRcdCBuZXRkZXZfZmVhdHVyZXNfdCBmZWF0dXJlcylcbiB7XG4tXHRpZiAoIXRzbykge1xuLVx0XHRwcml2LVx1MDAzZWdzb19lbmFibGVkX3R5cGVzID0gMDtcbi1cdH0gZWxzZSB7XG4tXHRcdC8qIE1hbmFnZSBvdmVyc2l6ZWQgVENQIGZyYW1lcyBmb3IgR01BQzQgZGV2aWNlICovXG4tXHRcdHByaXYtXHUwMDNlZ3NvX2VuYWJsZWRfdHlwZXMgPSBTS0JfR1NPX1RDUFY0IHwgU0tCX0dTT19UQ1BWNjtcbi1cdFx0aWYgKHByaXYtXHUwMDNlcGxhdC1cdTAwM2Vjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9HTUFDNClcbi1cdFx0XHRwcml2LVx1MDAzZWdzb19lbmFibGVkX3R5cGVzIHw9IFNLQl9HU09fVURQX0w0O1xuLVx0fVxuJiM0MztcdHByaXYtXHUwMDNlZ3NvX2VuYWJsZWRfdHlwZXMgPSAwO1xuJiM0MztcbiYjNDM7XHRpZiAoZmVhdHVyZXMgXHUwMDI2IE5FVElGX0ZfVFNPKVxuJiM0MztcdFx0cHJpdi1cdTAwM2Vnc29fZW5hYmxlZF90eXBlcyB8PSBTS0JfR1NPX1RDUFY0O1xuJiM0MztcdGlmIChmZWF0dXJlcyBcdTAwMjYgTkVUSUZfRl9UU082KVxuJiM0MztcdFx0cHJpdi1cdTAwM2Vnc29fZW5hYmxlZF90eXBlcyB8PSBTS0JfR1NPX1RDUFY2O1xuJiM0MztcdC8qIE1hbmFnZSBvdmVyc2l6ZWQgVURQIGZyYW1lcyBmb3IgR01BQzQgZGV2aWNlcyAqL1xuJiM0MztcdGlmIChmZWF0dXJlcyBcdTAwMjYgTkVUSUZfRl9HU09fVURQX0w0KVxuJiM0MztcdFx0cHJpdi1cdTAwM2Vnc29fZW5hYmxlZF90eXBlcyB8PSBTS0JfR1NPX1VEUF9MNDtcbiB9XG4gXG4gc3RhdGljIHZvaWQgc3RtbWFjX3NldF9nc29fZmVhdHVyZXMoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG5AQCAtNDQxNiw3ICYjNDM7NDQxOCw3IEBAIHN0YXRpYyB2b2lkIHN0bW1hY19zZXRfZ3NvX2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuIFx0aWYgKHByaXYtXHUwMDNlcGxhdC1cdTAwM2Vjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9HTUFDNClcbiBcdFx0bmRldi1cdTAwM2Vod19mZWF0dXJlcyB8PSBORVRJRl9GX0dTT19VRFBfTDQ7XG4gXG4tXHRzdG1tYWNfc2V0X2dzb190eXBlcyhwcml2LCB0cnVlKTtcbiYjNDM7XHRzdG1tYWNfc2V0X2dzb190eXBlcyhwcml2LCBuZGV2LVx1MDAzZWh3X2ZlYXR1cmVzKTtcbiBcbiBcdGRldl9pbmZvKHByaXYtXHUwMDNlZGV2aWNlLCBcJiMzNDtUU08gZmVhdHVyZSBlbmFibGVkXFxuXCYjMzQ7KTtcbiB9XG5AQCAtNjE5OCw3ICYjNDM7NjIwMCw3IEBAIHN0YXRpYyBpbnQgc3RtbWFjX3NldF9mZWF0dXJlcyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuIFx0XHRcdHN0bW1hY19lbmFibGVfc3BoKHByaXYsIHByaXYtXHUwMDNlaW9hZGRyLCBzcGhfZW4sIGNoYW4pO1xuIFx0fVxuIFxuLVx0c3RtbWFjX3NldF9nc29fdHlwZXMocHJpdiwgZmVhdHVyZXMgXHUwMDI2IE5FVElGX0ZfVFNPKTtcbiYjNDM7XHRzdG1tYWNfc2V0X2dzb190eXBlcyhwcml2LCBmZWF0dXJlcyk7XG4gXG4gXHRpZiAoZmVhdHVyZXMgXHUwMDI2IE5FVElGX0ZfSFdfVkxBTl9DVEFHX1JYKVxuIFx0XHRwcml2LVx1MDAzZWh3LVx1MDAzZWh3X3ZsYW5fZW4gPSB0cnVlO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDE4OjEzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtTVE1NQUNfRVRIJiMzNDssCiAgICAmIzM0O1NUTU1BQ19QQ0kmIzM0OywKICAgICYjMzQ7U1RNTUFDX1BMQVRGT1JNJiMzNDssCiAgICAmIzM0O0RXTUFDX0dFTkVSSUMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzdG1tYWNfc2V0X2ZlYXR1cmVzJiMzNDssCiAgICAmIzM0O3N0bW1hY19kdnJfcHJvYmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvZ2ljIGZvciBzZXR0aW5nIEdTTyB0eXBlcyBiYXNlZCBvbiBuZXRkZXYgZmVhdHVyZXMgaW4gdGhlIHN0bW1hYyBkcml2ZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIGNvcmUgZXRoZXJuZXQgZHJpdmVyIHRoYXQgaXMgcmVhY2hhYmxlIGluIFFFTVUgdmlhIHRoZSBEZXNpZ25XYXJlIE1BQyBlbXVsYXRpb24gKHNucHMsZHdtYWMpIG9yIGJ5IGluamVjdGluZyBhIFBDSSBkZXZpY2UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA3ZDJhN2RhMDE4ZmQ1MTEwZjIwYTllZjE2NDliZjYyNWE4NjEyZjM4CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBBdWcgOCAxODoxMzo0NiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jCmluZGV4IGE3MWYwZGYyNjM3ODUuLjNkMzA0MmFmY2RmNDkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYwpAQCAtNDM3MSwxNiAmIzQzOzQzNzEsMTggQEAgc3RhdGljIHZvaWQgc3RtbWFjX2ZsdXNoX3R4X2Rlc2NyaXB0b3JzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgaW50IHF1ZXVlKQogCXN0bW1hY19zZXRfcXVldWVfdHhfdGFpbF9wdHIocHJpdiwgdHhfcSwgcXVldWUsIHR4X3EtJmd0O2N1cl90eCk7CiB9CiAKLXN0YXRpYyB2b2lkIHN0bW1hY19zZXRfZ3NvX3R5cGVzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgYm9vbCB0c28pCiYjNDM7c3RhdGljIHZvaWQgc3RtbWFjX3NldF9nc29fdHlwZXMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LAomIzQzOwkJCQkgbmV0ZGV2X2ZlYXR1cmVzX3QgZmVhdHVyZXMpCiB7Ci0JaWYgKCF0c28pIHsKLQkJcHJpdi0mZ3Q7Z3NvX2VuYWJsZWRfdHlwZXMgPSAwOwotCX0gZWxzZSB7Ci0JCS8qIE1hbmFnZSBvdmVyc2l6ZWQgVENQIGZyYW1lcyBmb3IgR01BQzQgZGV2aWNlICovCi0JCXByaXYtJmd0O2dzb19lbmFibGVkX3R5cGVzID0gU0tCX0dTT19UQ1BWNCB8IFNLQl9HU09fVENQVjY7Ci0JCWlmIChwcml2LSZndDtwbGF0LSZndDtjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9HTUFDNCkKLQkJCXByaXYtJmd0O2dzb19lbmFibGVkX3R5cGVzIHw9IFNLQl9HU09fVURQX0w0OwotCX0KJiM0MzsJcHJpdi0mZ3Q7Z3NvX2VuYWJsZWRfdHlwZXMgPSAwOwomIzQzOwomIzQzOwlpZiAoZmVhdHVyZXMgJmFtcDsgTkVUSUZfRl9UU08pCiYjNDM7CQlwcml2LSZndDtnc29fZW5hYmxlZF90eXBlcyB8PSBTS0JfR1NPX1RDUFY0OwomIzQzOwlpZiAoZmVhdHVyZXMgJmFtcDsgTkVUSUZfRl9UU082KQomIzQzOwkJcHJpdi0mZ3Q7Z3NvX2VuYWJsZWRfdHlwZXMgfD0gU0tCX0dTT19UQ1BWNjsKJiM0MzsJLyogTWFuYWdlIG92ZXJzaXplZCBVRFAgZnJhbWVzIGZvciBHTUFDNCBkZXZpY2VzICovCiYjNDM7CWlmIChmZWF0dXJlcyAmYW1wOyBORVRJRl9GX0dTT19VRFBfTDQpCiYjNDM7CQlwcml2LSZndDtnc29fZW5hYmxlZF90eXBlcyB8PSBTS0JfR1NPX1VEUF9MNDsKIH0KIAogc3RhdGljIHZvaWQgc3RtbWFjX3NldF9nc29fZmVhdHVyZXMoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpCkBAIC00NDE2LDcgJiM0Mzs0NDE4LDcgQEAgc3RhdGljIHZvaWQgc3RtbWFjX3NldF9nc29fZmVhdHVyZXMoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpCiAJaWYgKHByaXYtJmd0O3BsYXQtJmd0O2NvcmVfdHlwZSA9PSBEV01BQ19DT1JFX0dNQUM0KQogCQluZGV2LSZndDtod19mZWF0dXJlcyB8PSBORVRJRl9GX0dTT19VRFBfTDQ7CiAKLQlzdG1tYWNfc2V0X2dzb190eXBlcyhwcml2LCB0cnVlKTsKJiM0MzsJc3RtbWFjX3NldF9nc29fdHlwZXMocHJpdiwgbmRldi0mZ3Q7aHdfZmVhdHVyZXMpOwogCiAJZGV2X2luZm8ocHJpdi0mZ3Q7ZGV2aWNlLCAmIzM0O1RTTyBmZWF0dXJlIGVuYWJsZWRcbiYjMzQ7KTsKIH0KQEAgLTYxOTgsNyAmIzQzOzYyMDAsNyBAQCBzdGF0aWMgaW50IHN0bW1hY19zZXRfZmVhdHVyZXMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwKIAkJCXN0bW1hY19lbmFibGVfc3BoKHByaXYsIHByaXYtJmd0O2lvYWRkciwgc3BoX2VuLCBjaGFuKTsKIAl9CiAKLQlzdG1tYWNfc2V0X2dzb190eXBlcyhwcml2LCBmZWF0dXJlcyAmYW1wOyBORVRJRl9GX1RTTyk7CiYjNDM7CXN0bW1hY19zZXRfZ3NvX3R5cGVzKHByaXYsIGZlYXR1cmVzKTsKIAogCWlmIChmZWF0dXJlcyAmYW1wOyBORVRJRl9GX0hXX1ZMQU5fQ1RBR19SWCkKIAkJcHJpdi0mZ3Q7aHctJmd0O2h3X3ZsYW5fZW4gPSB0cnVlOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAxODoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjU2CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogNzM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUmVhY2hhYmlsaXR5IG9mIGFuIHN0bW1hYyBEcml2ZXIgUGF0Y2ggaW4gUUVNVSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYHN0bW1hY19tYWluLmNgIHRoYXQgbW9kaWZpZXMgYHN0bW1hY19zZXRfZ3NvX3R5cGVzYC4gSXQmIzM5O3MgYSBzdHJhaWdodGZvcndhcmQgZnVuY3Rpb25hbCBjaGFuZ2UsIHVwZGF0aW5nIHRoZSBHU08gdHlwZSBoYW5kbGluZyBiYXNlZCBvbiBgbmV0ZGV2X2ZlYXR1cmVzX3RgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIGNhbiBJIGV2ZW4gdGVzdCB0aGlzIHBhdGNoIGVmZmVjdGl2ZWx5PwoKRmlyc3QsIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoZSBgc3RtbWFjYCBkcml2ZXIsIHdoaWNoIEkga25vdyBpcyBmb3IgdGhlIFN5bm9wc3lzIERlc2lnbldhcmUgTUFDLCBpcyBldmVuIHJlYWNoYWJsZSB3aXRoaW4gYSBRRU1VIGVudmlyb25tZW50LiBJIG5lZWQgdG8gYXNjZXJ0YWluIGlmIFFFTVUgY2FuIGVtdWxhdGUgdGhpcyBoYXJkd2FyZS4gSSBxdWlja2x5IHJhdHRsZSBvZmYgYSBsaXN0IG9mIFFFTVUmIzM5O3MgbmV0d29yayBkZXZpY2UgZW11bGF0aW9ucyDigJMgYGlteF9mZWNgLCBgY2FkZW5jZV9nZW1gLCBldGMuIOKAkyB0byByZW1pbmQgbXlzZWxmIHdoYXQmIzM5O3MgYXZhaWxhYmxlLiBOb3BlLCBub25lIG9mIHRob3NlIHNlZW0gbGlrZSBhIGRpcmVjdCBtYXRjaCBmb3IgYHN0bW1hY2AuCgpBbHJpZ2h0LCBpcyBgc3RtbWFjYCBhIFBDSSBkZXZpY2Ugb3IgYSBwbGF0Zm9ybSBkZXZpY2U/IEkgcmVtZW1iZXIgaXQgaGFzIFBDSSBiaW5kaW5ncyBpbiBgc3RtbWFjX3BjaS5jYCwgd2hpY2ggZ2l2ZXMgbWUgYSBwb3RlbnRpYWwgYXZlbnVlIGZvciBwcm9iaW5nLiBJIHNlYXJjaCBmb3IgYHN0bW1hY2AgaW4gdGhlIFFFTVUgY29kZWJhc2UgYW5kIGNvbnNpZGVyIHdoZXRoZXIgZnV6emluZyBpdCB3b3VsZCBiZSBmZWFzaWJsZS4gSG93ZXZlciwgSSByZWNhbGwgdGhlIGRpc2N1c3Npb24gYXJvdW5kIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCBkcml2ZXJzLCBvciBTbWFydE5JQyBvciBHUFUgZHJpdmVycyB3aGljaCBhcmUgaGFyZCB0byBmdXp6IGJlY2F1c2UgdGhleSB1c3VhbGx5IHJlcXVpcmUgcGh5c2ljYWwgaGFyZHdhcmUuIFRoaXMgbWFrZXMgbWUgcmVhbGl6ZSB0aGF0IGBzdG1tYWNgIG1pZ2h0IGZhbGwgaW50byB0aGF0IGNhdGVnb3J5IGFuZCBub3QgYmUgZGlyZWN0bHkgZW11bGF0YWJsZS4KCkJ1dCB3YWl0LCBgc3RtbWFjYCBpcyBzcGVjaWZpY2FsbHkgZm9yIFNUTWljcm9lbGVjdHJvbmljcyBFdGhlcm5ldCBNQUNzLCBhbmQgSSYjMzk7bSBhd2FyZSBpdCYjMzk7cyB1c2VkIGluIGxvdHMgb2YgQVJNIFNvQ3Mg4oCTIFJvY2tjaGlwLCBBbGx3aW5uZXIsIEFtbG9naWMsIGFuZCBzbyBvbi4gSXQmIzM5O3MgcHJpbWFyaWx5IGEgcGxhdGZvcm0gZGV2aWNlLCBidXQgdGhlIFBDSSB3cmFwcGVyIGNvdWxkIGJlIGtleS4gQ2FuIEkgZnV6eiBpdCB3aXRob3V0IHBoeXNpY2FsIGhhcmR3YXJlPyBQcm9iYWJseSBub3QuCgpTbywgbGV0IG1lIGJhY2sgdXAgYSBzdGVwLiBDYW4gUUVNVSAqYWN0dWFsbHkqIGVtdWxhdGUgdGhpcyBhdCBhbGw/IEkgcmVtZW1iZXIgcmVhZGluZyBzb21ldGhpbmcgYWJvdXQgRGVzaWduV2FyZSBNQUMgc3VwcG9ydC4uLiBBaGEhIFFFTVUgaGFzIGBody9uZXQvZGVzaWdud2FyZS5jYC4gSXMgdGhhdCBpdD8gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGBkZXNpZ253YXJlLmNgIGlzIHRoZSBlbXVsYXRpb24gZm9yIGBzdG1tYWNgLiBJIGNoZWNrIHRoZSBMaW51eCBrZXJuZWwgc291cmNlIGFuZCBjb25maXJtIHRoYXQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2AgaXMgaW5kZWVkIHRoZSBkcml2ZXIgZm9yIHRoZSBTeW5vcHN5cyBEZXNpZ25XYXJlIE1BQywgd2hpY2ggaXMgbGlrZWx5IHdoYXQgdGhlIFFFTVUgY29kZSBpcyBlbXVsYXRpbmcuIEkgbmVlZCB0byBtYWtlIHN1cmUgYnV0IEkmIzM5O2xsIHN0YXJ0IGJ5IGNoZWNraW5nIGBzdG1tYWNfcGNpLmNgIGFuZCBhbnkgYGR3bWFjLSouY2AgZmlsZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMTg6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXNpZ253YXJlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAxODoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzOTk2CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyaXplZCB0aG91Z2h0IHByb2Nlc3MsIHByZXNlbnRlZCBhcyBpZiBJJiMzOTttIHRoaW5raW5nIGl0OgoKKipEaWdnaW5nIGludG8gdGhlIGBzdG1tYWNgIERyaXZlciDigJMgTG9va2luZyBmb3IgJiMzNDtkd21hYyYjMzQ7KioKCkFscmlnaHQsIHRpbWUgdG8gZGl2ZSBpbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgc29tZXRoaW5nIGFib3V0IHRoaXMgYHN0bW1hY2AgZHJpdmVyLiBGaXJzdCBzdGVwLCBsZXQmIzM5O3MganVzdCBkbyBhIHF1aWNrIGtleXdvcmQgc2VhcmNoLiBJJiMzOTttIGdvaW5nIHRvIGxvb2sgZm9yICYjMzQ7ZHdtYWMmIzM0Oy4gSXQmIzM5O3MgYSBwcmV0dHkgY29tbW9uIG5hbWluZyBjb252ZW50aW9uLCBhbmQgaXQmIzM5O3MgbGlrZWx5IGNvbm5lY3RlZCB0byB0aGUgaGFyZHdhcmUuIFNlZWluZyBpdCB1c2VkIGluIHRoZSBjb2RlIHNob3VsZCBnaXZlIG1lIHNvbWUgY29udGV4dCwgZWl0aGVyIGRlZmluaW5nIHdoYXQgaXQgZG9lcywgb3Igd2hlcmUgaXQgaXMgdXNlZC4gSSBleHBlY3QgaXQgaXMgbGlrZWx5IGFuIGFic3RyYWN0aW9uIGxheWVyLCBvciB1c2VkIGZvciB0aGUgaGFyZHdhcmUgcmVnaXN0ZXJzLiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhhdCB1bmNvdmVycyEgSSYjMzk7bSBob3BpbmcgdGhpcyYjMzk7bGwgcXVpY2tseSBwb2ludCBtZSB0byB0aGUgcmVsZXZhbnQgc2VjdGlvbnMgb2YgdGhlIGNvZGUgSSBuZWVkIHRvIGV4cGxvcmUgZnVydGhlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAxODoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkd21hYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNTUzNSBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz05MD1jb25maWcgRFdNQUNfSVBRODA2WFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTAyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoxMDM6XHQgIFNlbGVjdCB0aGUgUUNPTV9TT0NJTkZPIGNvbmZpZyBmbGFnIHRvIGVuYWJsZSBzcGVjaWZpYyBkd21hY1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xMDQtXHQgIGZpeHVwIGJhc2VkIG9uIHRoZSBpcHE4MDZ4IFNvQyByZXZpc2lvbi5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTEyMj1jb25maWcgRFdNQUNfTUVTT05cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MTIzOlx0dHJpc3RhdGUgXCYjMzQ7QW1sb2dpYyBNZXNvbiBkd21hYyBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEyNC1cdGRlZmF1bHQgQVJDSF9NRVNPTlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MTMzPWNvbmZpZyBEV01BQ19OVVZPVE9OXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjEzNDpcdHRyaXN0YXRlIFwmIzM0O051dm90b24gTUEzNSBkd21hYyBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEzNS1cdGRlZmF1bHQgQVJDSF9NQTM1XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xNDEtXHQgIFRoaXMgc2VsZWN0cyB0aGUgTnV2b3RvbiBNQTM1IHNlcmllcyBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjE0MjpcdCAgZm9yIHRoZSBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhlIG51dm90b24tZHdtYWMgZHJpdmVyIGlzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE0My1cdCAgdXNlZCBmb3IgTUEzNSBzZXJpZXMgU29Dcy5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTE2OD1jb25maWcgRFdNQUNfUk9DS0NISVBcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MTY5Olx0dHJpc3RhdGUgXCYjMzQ7Um9ja2NoaXAgZHdtYWMgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xNzAtXHRkZWZhdWx0IEFSQ0hfUk9DS0NISVBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTE3OT1jb25maWcgRFdNQUNfUlpOMVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoxODA6XHR0cmlzdGF0ZSBcJiMzNDtSZW5lc2FzIFJaL04xIGR3bWFjIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTgxLVx0ZGVmYXVsdCBBUkNIX1JaTjFcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTIwMz1jb25maWcgRFdNQUNfU09DRlBHQVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyMDQ6XHR0cmlzdGF0ZSBcJiMzNDtTT0NGUEdBIGR3bWFjIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjA1LVx0ZGVmYXVsdCBBUkNIX0lOVEVMX1NPQ0ZQR0Fcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTIxOD1jb25maWcgRFdNQUNfU09QSEdPXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjIxOTpcdHRyaXN0YXRlIFwmIzM0O1NvcGhnbyBkd21hYyBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTIyMC1cdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IChBUkNIX1NPUEhHTyB8fCBDT01QSUxFX1RFU1QpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0yMjk9Y29uZmlnIERXTUFDX1NQQUNFTUlUXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjIzMDpcdHRyaXN0YXRlIFwmIzM0O1NwYWNlbWl0IGR3bWFjIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjMxLVx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfU1BBQ0VNSVQgfHwgQ09NUElMRV9URVNUKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MjQxPWNvbmZpZyBEV01BQ19TVEFSRklWRVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyNDI6XHR0cmlzdGF0ZSBcJiMzNDtTdGFyRml2ZSBkd21hYyBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI0My1cdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IChBUkNIX1NUQVJGSVZFIHx8IENPTVBJTEVfVEVTVClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTMxMj1jb25maWcgRFdNQUNfVEhFQURcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzEzOlx0dHJpc3RhdGUgXCYjMzQ7VC1IRUFEIGR3bWFjIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzE0LVx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfVEhFQUQgfHwgQ09NUElMRV9URVNUKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MzM0PWNvbmZpZyBEV01BQ19JTlRFTF9QTEFUXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjMzNTpcdHRyaXN0YXRlIFwmIzM0O0ludGVsIGR3bWFjIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzM2LVx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgQ09NTU9OX0NMS1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlPTM9c3RtbWFjLW9ianM6PSBzdG1tYWNfbWFpbi5vIHN0bW1hY19ldGh0b29sLm8gc3RtbWFjX21kaW8ubyByaW5nX21vZGUub1x0XFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjQ6XHQgICAgICBjaGFpbl9tb2RlLm8gZHdtYWNfbGliLm8gZHdtYWMxMDAwX2NvcmUubyBkd21hYzEwMDBfZG1hLm9cdFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTo1Olx0ICAgICAgZHdtYWMxMDBfY29yZS5vIGR3bWFjMTAwX2RtYS5vIGVuaF9kZXNjLm8gbm9ybV9kZXNjLm9cdFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTo2Olx0ICAgICAgbW1jX2NvcmUubyBzdG1tYWNfaHd0c3RhbXAubyBzdG1tYWNfcHRwLm8gZHdtYWM0X2Rlc2NzLm9cdFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTo3Olx0ICAgICAgZHdtYWM0X2RtYS5vIGR3bWFjNF9saWIubyBkd21hYzRfY29yZS5vIGR3bWFjNS5vIGh3aWYubyBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGUtOC1cdCAgICAgIHN0bW1hY190Yy5vIGR3eGdtYWMyX2NvcmUubyBkd3hnbWFjMl9kbWEubyBkd3hnbWFjMl9kZXNjcy5vIFxcXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU9MTU9b2JqLSQoQ09ORklHX1NUTU1BQ19QTEFURk9STSlcdCYjNDM7PSBzdG1tYWMtcGxhdGZvcm0ub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6MTY6b2JqLSQoQ09ORklHX0RXTUFDX0FOQVJJT04pXHQmIzQzOz0gZHdtYWMtYW5hcmlvbi5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZToxNzpvYmotJChDT05GSUdfRFdNQUNfRUlDNzcwMClcdCYjNDM7PSBkd21hYy1laWM3NzAwLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjE4Om9iai0kKENPTkZJR19EV01BQ19JTkdFTklDKVx0JiM0Mzs9IGR3bWFjLWluZ2VuaWMub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6MTk6b2JqLSQoQ09ORklHX0RXTUFDX0lQUTgwNlgpXHQmIzQzOz0gZHdtYWMtaXBxODA2eC5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZToyMDpvYmotJChDT05GSUdfRFdNQUNfTFBDMThYWClcdCYjNDM7PSBkd21hYy1scGMxOHh4Lm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjIxOm9iai0kKENPTkZJR19EV01BQ19NRURJQVRFSylcdCYjNDM7PSBkd21hYy1tZWRpYXRlay5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZToyMjpvYmotJChDT05GSUdfRFdNQUNfTUVTT04pXHQmIzQzOz0gZHdtYWMtbWVzb24ubyBkd21hYy1tZXNvbjhiLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjIzOm9iai0kKENPTkZJR19EV01BQ19OVVZPVE9OKVx0JiM0Mzs9IGR3bWFjLW51dm90b24ub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6MjQ6b2JqLSQoQ09ORklHX0RXTUFDX1FDT01fRVRIUU9TKVx0JiM0Mzs9IGR3bWFjLXFjb20tZXRocW9zLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjI1Om9iai0kKENPTkZJR19EV01BQ19SRU5FU0FTX0dCRVRIKSAmIzQzOz0gZHdtYWMtcmVuZXNhcy1nYmV0aC5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZToyNjpvYmotJChDT05GSUdfRFdNQUNfUk9DS0NISVApXHQmIzQzOz0gZHdtYWMtcmsub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6Mjc6b2JqLSQoQ09ORklHX0RXTUFDX1JaTjEpXHQmIzQzOz0gZHdtYWMtcnpuMS5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZToyODpvYmotJChDT05GSUdfRFdNQUNfUzMyKVx0XHQmIzQzOz0gZHdtYWMtczMyLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjI5Om9iai0kKENPTkZJR19EV01BQ19TT0NGUEdBKVx0JiM0Mzs9IGR3bWFjLWFsdHItc29jZnBnYS5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTozMDpvYmotJChDT05GSUdfRFdNQUNfU09QSEdPKVx0JiM0Mzs9IGR3bWFjLXNvcGhnby5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTozMTpvYmotJChDT05GSUdfRFdNQUNfU1BBQ0VNSVQpXHQmIzQzOz0gZHdtYWMtc3BhY2VtaXQub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6MzI6b2JqLSQoQ09ORklHX0RXTUFDX1NUQVJGSVZFKVx0JiM0Mzs9IGR3bWFjLXN0YXJmaXZlLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjMzOm9iai0kKENPTkZJR19EV01BQ19TVEkpXHRcdCYjNDM7PSBkd21hYy1zdGkub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6MzQ6b2JqLSQoQ09ORklHX0RXTUFDX1NUTTMyKVx0JiM0Mzs9IGR3bWFjLXN0bTMyLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjM1Om9iai0kKENPTkZJR19EV01BQ19TVU5YSSlcdCYjNDM7PSBkd21hYy1zdW54aS5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTozNjpvYmotJChDT05GSUdfRFdNQUNfU1VOOEkpXHQmIzQzOz0gZHdtYWMtc3VuOGkub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6Mzc6b2JqLSQoQ09ORklHX0RXTUFDX1NVTjU1SSlcdCYjNDM7PSBkd21hYy1zdW41NWkub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6Mzg6b2JqLSQoQ09ORklHX0RXTUFDX1RIRUFEKVx0JiM0Mzs9IGR3bWFjLXRoZWFkLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjM5Om9iai0kKENPTkZJR19EV01BQ19EV0NfUU9TX0VUSClcdCYjNDM7PSBkd21hYy1kd2MtcW9zLWV0aC5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTo0MDpvYmotJChDT05GSUdfRFdNQUNfSU5URUxfUExBVClcdCYjNDM7PSBkd21hYy1pbnRlbC1wbGF0Lm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjQxOm9iai0kKENPTkZJR19EV01BQ19MT09OR1NPTjEpXHQmIzQzOz0gZHdtYWMtbG9vbmdzb24xLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjQyOm9iai0kKENPTkZJR19EV01BQ19HRU5FUklDKVx0JiM0Mzs9IGR3bWFjLWdlbmVyaWMub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6NDM6b2JqLSQoQ09ORklHX0RXTUFDX0lNWDgpXHQmIzQzOz0gZHdtYWMtaW14Lm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjQ0Om9iai0kKENPTkZJR19EV01BQ19URUdSQSlcdCYjNDM7PSBkd21hYy10ZWdyYS5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTo0NTpvYmotJChDT05GSUdfRFdNQUNfVklTQ09OVEkpXHQmIzQzOz0gZHdtYWMtdmlzY29udGkub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGUtNDYtc3RtbWFjLXBsYXRmb3JtLW9ianM6PSBzdG1tYWNfcGxhdGZvcm0ub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6NDc6ZHdtYWMtYWx0ci1zb2NmcGdhLW9ianMgOj0gZHdtYWMtc29jZnBnYS5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZS00OC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZT01MD1vYmotJChDT05GSUdfU1RNTUFDX1BDSSlcdCYjNDM7PSBzdG1tYWMtcGNpLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjUxOm9iai0kKENPTkZJR19EV01BQ19JTlRFTClcdCYjNDM7PSBkd21hYy1pbnRlbC5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTo1MjpvYmotJChDT05GSUdfRFdNQUNfTE9PTkdTT04pXHQmIzQzOz0gZHdtYWMtbG9vbmdzb24ub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6NTM6b2JqLSQoQ09ORklHX0RXTUFDX01PVE9SQ09NTSlcdCYjNDM7PSBkd21hYy1tb3RvcmNvbW0ub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGUtNTQtc3RtbWFjLXBjaS1vYmpzOj0gc3RtbWFjX3BjaS5vXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtNDgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDo0OTpzdGF0aWMgaW5saW5lIGJvb2wgZHdtYWNfaXNfeG1hYyhlbnVtIGR3bWFjX2NvcmVfdHlwZSBjb3JlX3R5cGUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC01MC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg9NjQ1PXN0cnVjdCBzdG1tYWNfcnhfcm91dGluZyB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtNjQ5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6NjUwOmludCBkd21hYzEwMF9zZXR1cChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6NjUxOmludCBkd21hYzEwMDBfc2V0dXAoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjY1MjppbnQgZHdtYWM0X3NldHVwKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC02NTMtaW50IGR3eGdtYWMyX3NldHVwKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg9NjYwPXZvaWQgc3RtbWFjX3NldF9tYWModm9pZCBfX2lvbWVtICppb2FkZHIsIGJvb2wgZW5hYmxlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTY2MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjY2Mjp2b2lkIHN0bW1hY19kd21hYzRfc2V0X21hY19hZGRyKHZvaWQgX19pb21lbSAqaW9hZGRyLCBjb25zdCB1OCBhZGRyWzZdLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtNjYzLVx0XHRcdFx0dW5zaWduZWQgaW50IGhpZ2gsIHVuc2lnbmVkIGludCBsb3cpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6NjY0OnZvaWQgc3RtbWFjX2R3bWFjNF9nZXRfbWFjX2FkZHIodm9pZCBfX2lvbWVtICppb2FkZHIsIHVuc2lnbmVkIGNoYXIgKmFkZHIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC02NjUtXHRcdFx0XHR1bnNpZ25lZCBpbnQgaGlnaCwgdW5zaWduZWQgaW50IGxvdyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDo2NjY6dm9pZCBzdG1tYWNfZHdtYWM0X3NldF9tYWModm9pZCBfX2lvbWVtICppb2FkZHIsIGJvb2wgZW5hYmxlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTY2Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjY2ODp2b2lkIGR3bWFjX2RtYV9mbHVzaF90eF9maWZvKHZvaWQgX19pb21lbSAqaW9hZGRyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTY2OS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmM9NjM9YW5hcmlvbl9jb25maWdfZHQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmMtOTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmM6OTM6c3RhdGljIGludCBhbmFyaW9uX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmMtOTQte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYy0xMTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmM6MTE5OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGFuYXJpb25fZHdtYWNfbWF0Y2hbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYy0xMjAtXHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7YWRhcHRydW0sYW5hcmlvbi1nbWFjXCYjMzQ7IH0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jLTEyMi19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jOjEyMzpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBhbmFyaW9uX2R3bWFjX21hdGNoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYy0xMjQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmM6MTI1OnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGFuYXJpb25fZHdtYWNfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jOjEyNjpcdC5wcm9iZSAgPSBhbmFyaW9uX2R3bWFjX3Byb2JlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jLTEyNy1cdC5kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmM6MTI4Olx0XHQubmFtZSAgICAgICAgICAgPSBcJiMzNDthbmFyaW9uLWR3bWFjXCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jLTEyOS1cdFx0LnBtXHRcdD0gXHUwMDI2c3RtbWFjX3BsdGZyX3BtX29wcyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYzoxMzA6XHRcdC5vZl9tYXRjaF90YWJsZSA9IGFuYXJpb25fZHdtYWNfbWF0Y2gsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmMtMTMxLVx0fSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYy0xMzItfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYzoxMzM6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihhbmFyaW9uX2R3bWFjX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmMtMTM0LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMjQtI2luY2x1ZGUgXCYjMzQ7c3RtbWFjX3BsYXRmb3JtLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6MjU6I2luY2x1ZGUgXCYjMzQ7ZHdtYWM0LmhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMjYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jPTI3PXN0cnVjdCB0ZWdyYV9lcW9zIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTM1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzozNjpzdGF0aWMgaW50IGR3Y19ldGhfZHdtYWNfY29uZmlnX2R0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTM3LVx0XHRcdFx0ICAgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jPTI1Mj1zdGF0aWMgdm9pZCB0ZWdyYV9lcW9zX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMjU5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzoyNjA6c3RydWN0IGR3Y19ldGhfZHdtYWNfZGF0YSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTI2MS1cdGludCAoKnByb2JlKShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMjY3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzoyNjg6c3RhdGljIGNvbnN0IHN0cnVjdCBkd2NfZXRoX2R3bWFjX2RhdGEgZHdjX3Fvc19kYXRhID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0yNjktXHQucHJvYmUgPSBkd2NfcW9zX3Byb2JlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMjcyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzoyNzM6c3RhdGljIGNvbnN0IHN0cnVjdCBkd2NfZXRoX2R3bWFjX2RhdGEgdGVncmFfZXFvc19kYXRhID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0yNzQtXHQucHJvYmUgPSB0ZWdyYV9lcW9zX3Byb2JlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMjc4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzoyNzk6c3RhdGljIGNvbnN0IHN0cnVjdCBkd2NfZXRoX2R3bWFjX2RhdGEgZnNkX2Vxb3NfZGF0YSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMjgwLVx0LnN0bW1hY19jbGtfbmFtZSA9IFwmIzM0O3NsYXZlX2J1c1wmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTI4Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6MjgzOnN0YXRpYyBpbnQgZHdjX2V0aF9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0yODQte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzoyODU6XHRjb25zdCBzdHJ1Y3QgZHdjX2V0aF9kd21hY19kYXRhICpkYXRhO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0yODYtXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMzI1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzozMjY6XHRyZXQgPSBkd2NfZXRoX2R3bWFjX2NvbmZpZ19kdChwZGV2LCBwbGF0X2RhdCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTMyNy1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0zNDItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjM0MzpzdGF0aWMgdm9pZCBkd2NfZXRoX2R3bWFjX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0zNDQte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzozNDU6XHRjb25zdCBzdHJ1Y3QgZHdjX2V0aF9kd21hY19kYXRhICpkYXRhID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMzQ2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMzUyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzozNTM6c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgZHdjX2V0aF9kd21hY19tYXRjaFtdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0zNTQtXHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7c25wcyxkd2MtcW9zLWV0aGVybmV0LTQuMTBcJiMzNDssIC5kYXRhID0gXHUwMDI2ZHdjX3Fvc19kYXRhIH0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0zNTgtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6MzU5Ok1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGR3Y19ldGhfZHdtYWNfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0zNjAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjM2MTpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBkd2NfZXRoX2R3bWFjX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6MzYyOlx0LnByb2JlICA9IGR3Y19ldGhfZHdtYWNfcHJvYmUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjM2MzpcdC5yZW1vdmUgPSBkd2NfZXRoX2R3bWFjX3JlbW92ZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMzY0LVx0LmRyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6MzY1Olx0XHQubmFtZSAgICAgICAgICAgPSBcJiMzNDtkd2MtZXRoLWR3bWFjXCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0zNjYtXHRcdC5wbSAgICAgICAgICAgICA9IFx1MDAyNnN0bW1hY19wbHRmcl9wbV9vcHMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjM2NzpcdFx0Lm9mX21hdGNoX3RhYmxlID0gZHdjX2V0aF9kd21hY19tYXRjaCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMzY4LVx0fSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMzY5LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjM3MDptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGR3Y19ldGhfZHdtYWNfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMzcxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYz01OT1zdGF0aWMgaW50IGVpYzc3MDBfY2xrc19jb25maWcodm9pZCAqcHJpdiwgYm9vbCBlbmFibGVkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYy03Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYzo3MzpzdGF0aWMgaW50IGVpYzc3MDBfZHdtYWNfaW5pdChzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKnByaXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtNzQte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYy0xMDUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmM6MTA2OnN0YXRpYyB2b2lkIGVpYzc3MDBfZHdtYWNfZXhpdChzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKnByaXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMTA3LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMTEyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jOjExMzpzdGF0aWMgaW50IGVpYzc3MDBfZHdtYWNfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKnByaXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMTE0LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMTE3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jOjExODpzdGF0aWMgaW50IGVpYzc3MDBfZHdtYWNfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqcHJpdilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYy0xMTkte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYy0xMjgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmM6MTI5OnN0YXRpYyBpbnQgZWljNzcwMF9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jLTEzMC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jLTI1OC1cdGR3Y19wcml2LVx1MDAzZXBsYXRfZGF0ID0gcGxhdF9kYXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmM6MjU5Olx0cGxhdF9kYXQtXHUwMDNlaW5pdCA9IGVpYzc3MDBfZHdtYWNfaW5pdDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYzoyNjA6XHRwbGF0X2RhdC1cdTAwM2VleGl0ID0gZWljNzcwMF9kd21hY19leGl0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jOjI2MTpcdHBsYXRfZGF0LVx1MDAzZXN1c3BlbmQgPSBlaWM3NzAwX2R3bWFjX3N1c3BlbmQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmM6MjYyOlx0cGxhdF9kYXQtXHUwMDNlcmVzdW1lID0gZWljNzcwMF9kd21hY19yZXN1bWU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMjYzLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYy0yNjYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmM6MjY3OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGVpYzc3MDBfZHdtYWNfbWF0Y2hbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYy0yNjgtXHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7ZXN3aW4sZWljNzcwMC1xb3MtZXRoXCYjMzQ7IH0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jLTI3MC19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jOjI3MTpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBlaWM3NzAwX2R3bWFjX21hdGNoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYy0yNzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmM6MjczOnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGVpYzc3MDBfZHdtYWNfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jOjI3NDpcdC5wcm9iZSAgPSBlaWM3NzAwX2R3bWFjX3Byb2JlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jLTI3NS1cdC5kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmM6Mjc2Olx0XHQubmFtZSAgICAgICAgICAgPSBcJiMzNDtlaWM3NzAwLWV0aC1kd21hY1wmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYy0yNzctXHRcdC5wbSAgICAgICAgICAgICA9IFx1MDAyNnN0bW1hY19wbHRmcl9wbV9vcHMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmM6Mjc4Olx0XHQub2ZfbWF0Y2hfdGFibGUgPSBlaWM3NzAwX2R3bWFjX21hdGNoLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jLTI3OS1cdH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMjgwLX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmM6MjgxOm1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoZWljNzcwMF9kd21hY19kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jLTI4Mi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMtMTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmM6MTk6c3RhdGljIGludCBkd21hY19nZW5lcmljX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMtMjAte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYy01MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYzo1MjpzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBkd21hY19nZW5lcmljX21hdGNoW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMtNTMtXHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7c3Qsc3BlYXI2MDAtZ21hY1wmIzM0O30sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmM6NTQ6XHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7c25wcyxkd21hYy0zLjQwYVwmIzM0O30sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmM6NTU6XHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7c25wcyxkd21hYy0zLjUwYVwmIzM0O30sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmM6NTY6XHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7c25wcyxkd21hYy0zLjYxMFwmIzM0O30sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmM6NTc6XHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7c25wcyxkd21hYy0zLjcwYVwmIzM0O30sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmM6NTg6XHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7c25wcyxkd21hYy0zLjcxMFwmIzM0O30sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmM6NTk6XHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7c25wcyxkd21hYy0zLjcyYVwmIzM0O30sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmM6NjA6XHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7c25wcyxkd21hYy00LjAwXCYjMzQ7fSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYzo2MTpcdHsgLmNvbXBhdGlibGUgPSBcJiMzNDtzbnBzLGR3bWFjLTQuMTBhXCYjMzQ7fSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYzo2MjpcdHsgLmNvbXBhdGlibGUgPSBcJiMzNDtzbnBzLGR3bWFjXCYjMzQ7fSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYy02My1cdHsgLmNvbXBhdGlibGUgPSBcJiMzNDtzbnBzLGR3eGdtYWMtMi4xMFwmIzM0O30sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jLTY2LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmM6Njc6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgZHdtYWNfZ2VuZXJpY19tYXRjaCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMtNjgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmM6Njk6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgZHdtYWNfZ2VuZXJpY19kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmM6NzA6XHQucHJvYmUgID0gZHdtYWNfZ2VuZXJpY19wcm9iZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYy03MS1cdC5kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jLTczLVx0XHQucG1cdFx0PSBcdTAwMjZzdG1tYWNfcGx0ZnJfcG1fb3BzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jOjc0Olx0XHQub2ZfbWF0Y2hfdGFibGUgPSBkd21hY19nZW5lcmljX21hdGNoLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jLTc1LVx0fSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYy03Ni19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jOjc3Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoZHdtYWNfZ2VuZXJpY19kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jLTc4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jOjc5Ok1PRFVMRV9ERVNDUklQVElPTihcJiMzNDtHZW5lcmljIGR3bWFjIGRyaXZlclwmIzM0Oyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMtODAtTU9EVUxFX0xJQ0VOU0UoXCYjMzQ7R1BMIHYyXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0yLS8qXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzozOiAqIGR3bWFjLWlteC5jIC0gRFdNQUMgU3BlY2lmaWMgR2x1ZSBsYXllciBmb3IgTlhQIGlteDhcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTQtICpcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYz00Mj1zdHJ1Y3QgaW14X3ByaXZfZGF0YTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTQzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6NDQ6c3RydWN0IGlteF9kd21hY19vcHMge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtNDUtXHR1MzIgZmxhZ3M7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtNDktXHRpbnQgKCpmaXhfc29jX3Jlc2V0KShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6NTA6XHRpbnQgKCpzZXRfaW50Zl9tb2RlKShzdHJ1Y3QgaW14X3ByaXZfZGF0YSAqZHdtYWMsIHU4IHBoeV9pbnRmX3NlbCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy01MS1cdHZvaWQgKCpmaXhfbWFjX3NwZWVkKSh2b2lkICpwcml2LCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jPTU1PXN0cnVjdCBpbXhfcHJpdl9kYXRhIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy02My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjY0Olx0Y29uc3Qgc3RydWN0IGlteF9kd21hY19vcHMgKm9wcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTY1LVx0c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy02Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjY4OnN0YXRpYyBpbnQgaW14OG1wX3NldF9pbnRmX21vZGUoc3RydWN0IGlteF9wcml2X2RhdGEgKmR3bWFjLCB1OCBwaHlfaW50Zl9zZWwpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy02OS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtNzQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzo3NTpcdGlmIChwaHlfaW50Zl9zZWwgPT0gUEhZX0lOVEZfU0VMX1JNSUkgXHUwMDI2XHUwMDI2ICFkd21hYy1cdTAwM2VybWlpX3JlZmNsa19leHQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy03Ni1cdFx0dmFsIHw9IEdQUl9FTkVUX1FPU19DTEtfVFhfQ0xLX1NFTDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy03OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjgwOlx0cmV0dXJuIHJlZ21hcF91cGRhdGVfYml0cyhkd21hYy1cdTAwM2VpbnRmX3JlZ21hcCwgZHdtYWMtXHUwMDNlaW50Zl9yZWdfb2ZmLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtODEtXHRcdFx0XHQgIEdQUl9FTkVUX1FPU19JTlRGX01PREVfTUFTSywgdmFsKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYz04ND1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzo4NTppbXg4ZHhsX3NldF9pbnRmX21vZGUoc3RydWN0IGlteF9wcml2X2RhdGEgKmR3bWFjLCB1OCBwaHlfaW50Zl9zZWwpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy04Ni17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtOTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzo5MTpzdGF0aWMgaW50IGlteDkzX3NldF9pbnRmX21vZGUoc3RydWN0IGlteF9wcml2X2RhdGEgKmR3bWFjLCB1OCBwaHlfaW50Zl9zZWwpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy05Mi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtOTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzo5NjpcdGlmIChwaHlfaW50Zl9zZWwgPT0gUEhZX0lOVEZfU0VMX1JNSUkgXHUwMDI2XHUwMDI2IGR3bWFjLVx1MDAzZXJtaWlfcmVmY2xrX2V4dCkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6OTc6XHRcdHJldCA9IHJlZ21hcF9jbGVhcl9iaXRzKGR3bWFjLVx1MDAzZWludGZfcmVnbWFwLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6OTg6XHRcdFx0XHRcdGR3bWFjLVx1MDAzZWludGZfcmVnX29mZiAmIzQzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtOTktXHRcdFx0XHRcdE1YOTNfRU5FVF9DTEtfU0VMX09GRlNFVCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0xMDctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoxMDg6XHRyZXR1cm4gcmVnbWFwX3VwZGF0ZV9iaXRzKGR3bWFjLVx1MDAzZWludGZfcmVnbWFwLCBkd21hYy1cdTAwM2VpbnRmX3JlZ19vZmYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0xMDktXHRcdFx0XHQgIE1YOTNfR1BSX0VORVRfUU9TX0lOVEZfU0VMX01BU0sgfFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTExMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjExMzpzdGF0aWMgaW50IGlteF9kd21hY19jbGtzX2NvbmZpZyh2b2lkICpwcml2LCBib29sIGVuYWJsZWQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0xMTQte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MTE1Olx0c3RydWN0IGlteF9wcml2X2RhdGEgKmR3bWFjID0gcHJpdjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTExNi1cdGludCByZXQgPSAwO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTExOC1cdGlmIChlbmFibGVkKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoxMTk6XHRcdHJldCA9IGNsa19wcmVwYXJlX2VuYWJsZShkd21hYy1cdTAwM2VjbGtfbWVtKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTEyMC1cdFx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MTIxOlx0XHRcdGRldl9lcnIoZHdtYWMtXHUwMDNlZGV2LCBcJiMzNDttZW0gY2xvY2sgZW5hYmxlIGZhaWxlZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0xMjItXHRcdFx0cmV0dXJuIHJldDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0xMjQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoxMjU6XHRcdHJldCA9IGNsa19wcmVwYXJlX2VuYWJsZShkd21hYy1cdTAwM2VjbGtfdHgpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMTI2LVx0XHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoxMjc6XHRcdFx0ZGV2X2Vycihkd21hYy1cdTAwM2VkZXYsIFwmIzM0O3R4IGNsb2NrIGVuYWJsZSBmYWlsZWRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MTI4Olx0XHRcdGNsa19kaXNhYmxlX3VucHJlcGFyZShkd21hYy1cdTAwM2VjbGtfbWVtKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTEyOS1cdFx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTEzMS1cdH0gZWxzZSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoxMzI6XHRcdGNsa19kaXNhYmxlX3VucHJlcGFyZShkd21hYy1cdTAwM2VjbGtfdHgpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MTMzOlx0XHRjbGtfZGlzYWJsZV91bnByZXBhcmUoZHdtYWMtXHUwMDNlY2xrX21lbSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0xMzQtXHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM9MTM5PXN0YXRpYyBpbnQgaW14X3NldF9waHlfaW50Zl9zZWwodm9pZCAqYnNwX3ByaXYsIHU4IHBoeV9pbnRmX3NlbClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTE0MC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoxNDE6XHRzdHJ1Y3QgaW14X3ByaXZfZGF0YSAqZHdtYWMgPSBic3BfcHJpdjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTE0Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjE0MzpcdGlmICghZHdtYWMtXHUwMDNlb3BzLVx1MDAzZXNldF9pbnRmX21vZGUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0xNDQtXHRcdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTE1MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjE1MTpcdHJldHVybiBkd21hYy1cdTAwM2VvcHMtXHUwMDNlc2V0X2ludGZfbW9kZShkd21hYywgcGh5X2ludGZfc2VsKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTE1Mi19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0xNTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoxNTQ6c3RhdGljIGludCBpbXhfZHdtYWNfc2V0X2Nsa190eF9yYXRlKHZvaWQgKmJzcF9wcml2LCBzdHJ1Y3QgY2xrICpjbGtfdHhfaSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTE1NS1cdFx0XHRcdCAgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSwgaW50IHNwZWVkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTE2My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjE2NDpzdGF0aWMgdm9pZCBpbXhfZHdtYWNfZml4X3NwZWVkKHZvaWQgKnByaXYsIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0xNjUtXHRcdFx0XHRpbnQgc3BlZWQsIHVuc2lnbmVkIGludCBtb2RlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTE2Ny1cdHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoxNjg6XHRzdHJ1Y3QgaW14X3ByaXZfZGF0YSAqZHdtYWMgPSBwcml2O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMTY5LVx0bG9uZyByYXRlO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTE3MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjE3MjpcdHBsYXRfZGF0ID0gZHdtYWMtXHUwMDNlcGxhdF9kYXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0xNzMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoxNzQ6XHRpZiAoZHdtYWMtXHUwMDNlb3BzLVx1MDAzZW1hY19yZ21paV90eGNsa19hdXRvX2FkaiB8fFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMTc1LVx0ICAgIChwbGF0X2RhdC1cdTAwM2VwaHlfaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9STUlJKSB8fFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTE4MC1cdGlmIChyYXRlIFx1MDAzYyAwKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoxODE6XHRcdGRldl9lcnIoZHdtYWMtXHUwMDNlZGV2LCBcJiMzNDtpbnZhbGlkIHNwZWVkICVkXFxuXCYjMzQ7LCBzcGVlZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0xODItXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0xODQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoxODU6XHRlcnIgPSBjbGtfc2V0X3JhdGUoZHdtYWMtXHUwMDNlY2xrX3R4LCByYXRlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTE4Ni1cdGlmIChlcnIgXHUwMDNjIDApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoxODc6XHRcdGRldl9lcnIoZHdtYWMtXHUwMDNlZGV2LCBcJiMzNDtmYWlsZWQgdG8gc2V0IHR4IHJhdGUgJWx1XFxuXCYjMzQ7LCByYXRlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTE4OC19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0xODktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoxOTA6c3RhdGljIHZvaWQgaW14OTNfZHdtYWNfZml4X3NwZWVkKHZvaWQgKnByaXYsIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0xOTEtXHRcdFx0XHQgIGludCBzcGVlZCwgdW5zaWduZWQgaW50IG1vZGUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0xOTIte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MTkzOlx0c3RydWN0IGlteF9wcml2X2RhdGEgKmR3bWFjID0gcHJpdjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTE5NC1cdHVuc2lnbmVkIGludCBpZmFjZTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0xOTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoxOTc6XHRpbXhfZHdtYWNfZml4X3NwZWVkKHByaXYsIGludGVyZmFjZSwgc3BlZWQsIG1vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMTk4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MTk5Olx0aWYgKCFkd21hYyB8fCBtb2RlICE9IE1MT19BTl9GSVhFRClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTIwMC1cdFx0cmV0dXJuO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMjAxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MjAyOlx0aWYgKHJlZ21hcF9yZWFkKGR3bWFjLVx1MDAzZWludGZfcmVnbWFwLCBkd21hYy1cdTAwM2VpbnRmX3JlZ19vZmYsIFx1MDAyNmlmYWNlKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTIwMy1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTIwOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjIwOTpcdG9sZF9jdHJsID0gcmVhZGwoZHdtYWMtXHUwMDNlYmFzZV9hZGRyICYjNDM7IE1BQ19DVFJMX1JFRyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0yMTAtXHRjdHJsID0gb2xkX2N0cmwgXHUwMDI2IH5DVFJMX1NQRUVEX01BU0s7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoyMTE6XHRyZWdtYXBfdXBkYXRlX2JpdHMoZHdtYWMtXHUwMDNlaW50Zl9yZWdtYXAsIGR3bWFjLVx1MDAzZWludGZfcmVnX29mZixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTIxMi1cdFx0XHQgICBNWDkzX0dQUl9FTkVUX1FPU19JTlRGX1NFTF9NQVNLIHxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTIxMy1cdFx0XHQgICBNWDkzX0dQUl9FTkVUX1FPU19FTkFCTEUsIDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MjE0Olx0d3JpdGVsKGN0cmwsIGR3bWFjLVx1MDAzZWJhc2VfYWRkciAmIzQzOyBNQUNfQ1RSTF9SRUcpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMjE1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMjE2LVx0IC8qIEVuc3VyZSB0aGUgc2V0dGluZ3MgZm9yIENUUkwgYXJlIGFwcGxpZWQuICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoyMTc6XHRyZWFkbChkd21hYy1cdTAwM2ViYXNlX2FkZHIgJiM0MzsgTUFDX0NUUkxfUkVHKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTIxOC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0yMjEtXHRpZmFjZSB8PSBNWDkzX0dQUl9FTkVUX1FPU19FTkFCTEU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoyMjI6XHRyZWdtYXBfdXBkYXRlX2JpdHMoZHdtYWMtXHUwMDNlaW50Zl9yZWdtYXAsIGR3bWFjLVx1MDAzZWludGZfcmVnX29mZixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTIyMy1cdFx0XHQgICBNWDkzX0dQUl9FTkVUX1FPU19JTlRGX1NFTF9NQVNLIHxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0yMjUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoyMjY6XHR3cml0ZWwob2xkX2N0cmwsIGR3bWFjLVx1MDAzZWJhc2VfYWRkciAmIzQzOyBNQUNfQ1RSTF9SRUcpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMjI3LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTIyOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjIyOTpzdGF0aWMgaW50IGlteF9kd21hY19teDkzX3Jlc2V0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTIzMC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM9MjUwPXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjI1MTppbXhfZHdtYWNfcGFyc2VfZHQoc3RydWN0IGlteF9wcml2X2RhdGEgKmR3bWFjLCBzdHJ1Y3QgZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0yNTIte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTI1NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjI1NjpcdGR3bWFjLVx1MDAzZXJtaWlfcmVmY2xrX2V4dCA9IG9mX3Byb3BlcnR5X3JlYWRfYm9vbChucCwgXCYjMzQ7c25wcyxybWlpX3JlZmNsa19leHRcJiMzNDspO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMjU3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MjU4Olx0ZHdtYWMtXHUwMDNlY2xrX3R4ID0gZGV2bV9jbGtfZ2V0KGRldiwgXCYjMzQ7dHhcJiMzNDspO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MjU5Olx0aWYgKElTX0VSUihkd21hYy1cdTAwM2VjbGtfdHgpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0yNjAtXHRcdGRldl9lcnIoZGV2LCBcJiMzNDtmYWlsZWQgdG8gZ2V0IHR4IGNsb2NrXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjI2MTpcdFx0cmV0dXJuIFBUUl9FUlIoZHdtYWMtXHUwMDNlY2xrX3R4KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTI2Mi1cdH1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTI2My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjI2NDpcdGR3bWFjLVx1MDAzZWNsa19tZW0gPSBOVUxMO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMjY1LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTI2OC1cdCAgICBvZl9tYWNoaW5lX2lzX2NvbXBhdGlibGUoXCYjMzQ7ZnNsLGlteDkzXCYjMzQ7KSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MjY5Olx0XHRkd21hYy1cdTAwM2VjbGtfbWVtID0gZGV2bV9jbGtfZ2V0KGRldiwgXCYjMzQ7bWVtXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjI3MDpcdFx0aWYgKElTX0VSUihkd21hYy1cdTAwM2VjbGtfbWVtKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMjcxLVx0XHRcdGRldl9lcnIoZGV2LCBcJiMzNDtmYWlsZWQgdG8gZ2V0IG1lbSBjbG9ja1xcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoyNzI6XHRcdFx0cmV0dXJuIFBUUl9FUlIoZHdtYWMtXHUwMDNlY2xrX21lbSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0yNzMtXHRcdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0yODItXHRcdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MjgzOlx0XHRkd21hYy1cdTAwM2VpbnRmX3JlZ21hcCA9XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0yODQtXHRcdFx0c3lzY29uX3JlZ21hcF9sb29rdXBfYnlfcGhhbmRsZV9hcmdzKG5wLCBcJiMzNDtpbnRmX21vZGVcJiMzNDssIDEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoyODU6XHRcdFx0XHRcdFx0XHQgICAgIFx1MDAyNmR3bWFjLVx1MDAzZWludGZfcmVnX29mZik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoyODY6XHRcdGlmIChJU19FUlIoZHdtYWMtXHUwMDNlaW50Zl9yZWdtYXApKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6Mjg3Olx0XHRcdHJldHVybiBQVFJfRVJSKGR3bWFjLVx1MDAzZWludGZfcmVnbWFwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTI4OC1cdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0yOTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoyOTM6c3RhdGljIGludCBpbXhfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTI5NC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMjk2LVx0c3RydWN0IHN0bW1hY19yZXNvdXJjZXMgc3RtbWFjX3JlcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjI5NzpcdHN0cnVjdCBpbXhfcHJpdl9kYXRhICpkd21hYztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjI5ODpcdGNvbnN0IHN0cnVjdCBpbXhfZHdtYWNfb3BzICpkYXRhO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMjk5LVx0aW50IHJldDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0zMDQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzozMDU6XHRkd21hYyA9IGRldm1fa3phbGxvYyhcdTAwMjZwZGV2LVx1MDAzZWRldiwgc2l6ZW9mKCpkd21hYyksIEdGUF9LRVJORUwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MzA2Olx0aWYgKCFkd21hYylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTMwNy1cdFx0cmV0dXJuIC1FTk9NRU07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMzE4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MzE5Olx0ZHdtYWMtXHUwMDNlb3BzID0gZGF0YTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjMyMDpcdGR3bWFjLVx1MDAzZWRldiA9IFx1MDAyNnBkZXYtXHUwMDNlZGV2O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMzIxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MzIyOlx0cmV0ID0gaW14X2R3bWFjX3BhcnNlX2R0KGR3bWFjLCBcdTAwMjZwZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0zMjMtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMzMzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MzM0Olx0cGxhdF9kYXQtXHUwMDNlaG9zdF9kbWFfd2lkdGggPSBkd21hYy1cdTAwM2VvcHMtXHUwMDNlYWRkcl93aWR0aDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTMzNS1cdHBsYXRfZGF0LVx1MDAzZXNldF9waHlfaW50Zl9zZWwgPSBpbXhfc2V0X3BoeV9pbnRmX3NlbDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjMzNjpcdHBsYXRfZGF0LVx1MDAzZWNsa3NfY29uZmlnID0gaW14X2R3bWFjX2Nsa3NfY29uZmlnO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MzM3Olx0cGxhdF9kYXQtXHUwMDNlYnNwX3ByaXYgPSBkd21hYztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjMzODpcdGR3bWFjLVx1MDAzZXBsYXRfZGF0ID0gcGxhdF9kYXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzozMzk6XHRkd21hYy1cdTAwM2ViYXNlX2FkZHIgPSBzdG1tYWNfcmVzLmFkZHI7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0zNDAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzozNDE6XHRyZXQgPSBpbXhfZHdtYWNfY2xrc19jb25maWcoZHdtYWMsIHRydWUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMzQyLVx0aWYgKHJldClcbi0tXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAxODoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDQ4MQoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDQ2NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFFFTVUtU1RNTUFDIERyaXZlciBmb3IgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IFFFTVUmIzM5O3MgbmV0d29yayBkZXZpY2UgaW1wbGVtZW50YXRpb24sIGFuZCBpdCBsb29rcyBsaWtlIGBody9uZXQvZGVzaWdud2FyZS5jYCBoYW5kbGVzIHRoZSBgc25wcyxkd21hY2AgZGV2aWNlLCByaWdodD8gR29vZCwgdGhhdCBjb25maXJtcyBpdC4gSSB3YW50ZWQgdG8gbWFrZSBzdXJlIHRoZSBTVE1NQUMgZHJpdmVyIGNvZGUgaXMgYWN0dWFsbHkgcHJlc2VudCBhbmQgYWNjZXNzaWJsZSBpbiB0aGlzIGVtdWxhdGVkIGVudmlyb25tZW50LiBTZWVtcyBsaWtlIGl0IGlzLiBJIHNlZSB0aGF0IGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmNgIGRpcmVjdGx5IGFsaWducyB3aXRoIHRoaXMgYHNucHMsZHdtYWNgIGlkZW50aWZpZXIsIHNvIGBzdG1tYWNfbWFpbi5jYCBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZS4KCk5vdywgbGV0IG1lIHJlLWV4YW1pbmUgdGhpcyBwYXRjaC4gSXQmIzM5O3MgbWFraW5nIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gaG93IEdTTyAoR2VuZXJpYyBTZWdtZW50YXRpb24gT2ZmbG9hZCkgdHlwZXMgYXJlIGhhbmRsZWQgd2l0aGluIHRoZSBTVE1NQUMgZHJpdmVyLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIGFib3V0IGBzdG1tYWNfc2V0X2dzb190eXBlc2AuIFRoaXMgbG9va3MgbGlrZSBzb21ldGhpbmcgdGhhdCBjb3VsZCBiZSBpbnRlcmVzdGluZyB0byBmdXp6LiBJdCYjMzk7cyBhIGNvcmUgZHJpdmVyLCBhIHdpZGVseSB1c2VkIE1BQywgYW5kIEkmIzM5O3ZlIGNvbmZpcm1lZCBpdCYjMzk7cyByZWFjaGFibGUgdGhyb3VnaCBRRU1VLiBUaGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludC4KCkJ1dCBob2xkIG9uLCBsZXQgbWUgdHJhY2UgaG93IGBzdG1tYWNfc2V0X2dzb190eXBlc2AgaXMgYWN0dWFsbHkgY2FsbGVkLiBJdCYjMzk7cyBjYWxsZWQgZnJvbSBgc3RtbWFjX3NldF9nc29fZmVhdHVyZXNgIGFuZCBgc3RtbWFjX3NldF9mZWF0dXJlc2AuIEFoLCBhbmQgYHN0bW1hY19zZXRfZmVhdHVyZXNgIGlzIHRoZSBgLm5kb19zZXRfZmVhdHVyZXNgIGNhbGxiYWNrIGZvciB0aGUgbmV0X2RldmljZS4gU28gdGhhdCBtZWFucyB0aGlzIHdob2xlIHRoaW5nIGNhbiBiZSB0cmlnZ2VyZWQgdGhyb3VnaCBzb21ldGhpbmcgbGlrZSBgZXRodG9vbCAtS2Agb3Igb3RoZXIgbmV0bGluayBjb21tYW5kcy4gVGhhdCYjMzk7cyBhIG5pY2UgZWFzeSB3YXkgdG8gaW50ZXJhY3Qgd2l0aCBpdCwgdG9vLiBJIHNob3VsZCBwcm9iYWJseSBkaWcgaW50byB0aGUgY29kZSBmb3IgYHN0bW1hY19zZXRfZmVhdHVyZXNgIG5vdyB0byBzZWUgd2hhdCYjMzk7cyB3aGF0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDE4OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0bW1hY19zZXRfZmVhdHVyZXMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz02MTU4PXN0YXRpYyBuZXRkZXZfZmVhdHVyZXNfdCBzdG1tYWNfZml4X2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02MTc5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo2MTgwOnN0YXRpYyBpbnQgc3RtbWFjX3NldF9mZWF0dXJlcyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02MTgxLVx0XHRcdCAgICAgICBuZXRkZXZfZmVhdHVyZXNfdCBmZWF0dXJlcylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTczMDk9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBzdG1tYWNfbmV0ZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTczMTUtXHQubmRvX2ZpeF9mZWF0dXJlcyA9IHN0bW1hY19maXhfZmVhdHVyZXMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjczMTY6XHQubmRvX3NldF9mZWF0dXJlcyA9IHN0bW1hY19zZXRfZmVhdHVyZXMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTczMTctXHQubmRvX3NldF9yeF9tb2RlID0gc3RtbWFjX3NldF9yeF9tb2RlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDE4OjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNzQ0CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogNTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqQW5hbHl6aW5nIHRoZSBTVE1NQUMgRHJpdmVyJiMzOTtzIEZlYXR1cmUgU2V0dXAqKgoKQWxyaWdodCwgc28gYHN0bW1hY19zZXRfZmVhdHVyZXNgLi4uIHJpZ2h0LCB0aGF0JiMzOTtzIGp1c3QgYSB3cmFwcGVyIGFyb3VuZCBgLm5kb19zZXRfZmVhdHVyZXNgLiBOb3RoaW5nIHN1cnByaXNpbmcgdGhlcmUuIFRoZSBwYXRjaCBpbiBxdWVzdGlvbiBpcyBhbHNvIHRvdWNoaW5nIGBzdG1tYWNfc2V0X2dzb19mZWF0dXJlc2AuIFNpbmNlIHRoaXMgaXMgaGFwcGVuaW5nIGR1cmluZyBpbml0aWFsaXphdGlvbiwgdGhpcyBuZWVkcyBhIGNsb3NlciBsb29rLiBMZXQmIzM5O3MgZGlnIGludG8gYHN0bW1hY19zZXRfZ3NvX2ZlYXR1cmVzYCBhbmQgc2VlIHdoYXQmIzM5O3MgYmVpbmcgYWx0ZXJlZCBpbiB0aGF0IHBhcnRpY3VsYXIgY2FsbC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBuZXcgR1NPIGZlYXR1cmVzIGFyZSBiZWluZyBlbmFibGVkIG9yIGRpc2FibGVkLCBhbmQgaG93IHRoYXQgaW1wYWN0cyB0aGUgb3ZlcmFsbCBkcml2ZXIgYmVoYXZpb3IuIEdvdHRhIG1ha2Ugc3VyZSB0aGVyZSYjMzk7cyBubyB1bmludGVuZGVkIGNvbnNlcXVlbmNlcyB3aXRoIHRob3NlIHNldHRpbmdzLiBUaW1lIHRvIHRyYWNlIHRoYXQgY2FsbCBwYXRoIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAxODoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdG1tYWNfc2V0X2dzb19mZWF0dXJlcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTQzNzQ9c3RhdGljIHZvaWQgc3RtbWFjX3NldF9nc29fdHlwZXMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDM4Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NDM4ODpzdGF0aWMgdm9pZCBzdG1tYWNfc2V0X2dzb19mZWF0dXJlcyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDM4OS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03Nzk1PXN0YXRpYyBpbnQgX19zdG1tYWNfZHZyX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldmljZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTc5MjQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjc5MjU6XHRzdG1tYWNfc2V0X2dzb19mZWF0dXJlcyhuZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzkyNi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMTg6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjIzMzMKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA4MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFNUTU1BQyBHU08gRmVhdHVyZSBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gc2VlaW5nIHRoYXQgYHN0bW1hY19zZXRfZ3NvX2ZlYXR1cmVzYCBpcyBiZWluZyBjYWxsZWQgd2l0aGluIGBfX3N0bW1hY19kdnJfcHJvYmVgLiBJbnRlcmVzdGluZy4gVGhpcyBsb29rcyBsaWtlIGEgZGVmaW5pdGUgZnVuY3Rpb25hbCBtb2RpZmljYXRpb24sIHdoaWNoIG1lYW5zIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBpbXBsaWNhdGlvbnMgZm9yIHRoZSBvdmVyYWxsIGRyaXZlciBjb25maWd1cmF0aW9uLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCB3aGljaCBjb25maWd1cmF0aW9ucyBhcmUgYWN0dWFsbHkgbmVjZXNzYXJ5IHRvIGVuYWJsZSB0aGlzIG5ldyBHU08gZnVuY3Rpb25hbGl0eS4KCkkga25vdyB0aGF0IGBDT05GSUdfU1RNTUFDX0VUSGAgaXMgdGhlIHByaW1hcnkgY29uZmlndXJhdGlvbiBvcHRpb24gZm9yIHRoZSBTVE1NQUMgZHJpdmVyIGl0c2VsZiwgYnV0IEkmIzM5O2xsIG5lZWQgdG8gZGlnIGRlZXBlci4gVGltZSB0byBjcm9zcy1yZWZlcmVuY2Ugd2l0aCB0aGUgZHJpdmVyJiMzOTtzIEtjb25maWcgZmlsZSDigJMgc3BlY2lmaWNhbGx5LCBJJiMzOTtsbCBuZWVkIHRvIGV4YW1pbmUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdgIHRvIHBpbnBvaW50IGV4YWN0bHkgd2hpY2ggY29uZmlndXJhdGlvbnMgYXJlIHRpZWQgdG8gdGhpcyBHU08gZmVhdHVyZSBhZGRpdGlvbiBhbmQgc2VlIGhvdyB0aGVzZSBjaGFuZ2VzIGFmZmVjdCB0aGUgYnVpbGQgcHJvY2Vzcy4gSSYjMzk7bGwgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoZSBjaGFuZ2UgaXMgY29uZGl0aW9uYWwgYW5kIHdoYXQgdGhlIG90aGVyIGNvbmZpZyBvcHRpb25zIGFyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMTg6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFNUTU1BQ19FVEgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyOmNvbmZpZyBTVE1NQUNfRVRIXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtTVE1pY3JvZWxlY3Ryb25pY3MgTXVsdGktR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMTg6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjI3NzAKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiA5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIHRoZSBzdW1tYXJ5LCByZW5kZXJlZCBhcyBhIGZpcnN0LXBlcnNvbiB0aG91Z2h0IHByb2Nlc3MsIGtlZXBpbmcgaW4gbWluZCB0aGUgdXNlciBpcyBhbiBleHBlcnQ6CgoqKk9rYXksIExldCYjMzk7cyBBbmFseXplIHRoZSBEZXBlbmRlbmNpZXMqKgoKQWxyaWdodCwgSSYjMzk7bSBkaXZpbmcgaW4uIEJlZm9yZSBJIGp1bXAgdG8gYW55IGNvbmNsdXNpb25zLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgdW5kZXJseWluZyBmcmFtZXdvcmsuIExldCYjMzk7cyBub3QgZ2V0IGFoZWFkIG9mIG91cnNlbHZlcy4gSSYjMzk7bSBnb2luZyB0byBzdGFydCBieSBpZGVudGlmeWluZyBhbGwgdGhlIGtleSBkZXBlbmRlbmNpZXMgYXQgcGxheSBoZXJlLiBXaGF0IGFyZSB0aGUgY29yZSBjb21wb25lbnRzIHRoaXMgcmVsaWVzIG9uPyBBcmUgd2UgdGFsa2luZyBhYm91dCBleHRlcm5hbCBBUElzLCBzcGVjaWZpYyBsaWJyYXJpZXMsIG1heWJlIHBhcnRpY3VsYXIgYXJjaGl0ZWN0dXJhbCBjaG9pY2VzPyBJdCYjMzk7cyBjcnVjaWFsIHRvIG1hcCBvdXQgdGhhdCBsYW5kc2NhcGUgZmlyc3QuIEkmIzM5O20gdGhpbmtpbmcgb2YgZXZlcnl0aGluZyBmcm9tIHRoZSBvYnZpb3VzIHRvIHRoZSBtb3JlIHN1YnRsZTogZGF0YSBzdHJ1Y3R1cmVzLCBjb250cm9sIGZsb3csIHVuZGVybHlpbmcgYXNzdW1wdGlvbnMuLi4gdGhlIHdob2xlIHNoZWJhbmcuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSYjMzk7cmUgd29ya2luZyB3aXRoIGJlZm9yZSB0cnlpbmcgdG8gY3JhZnQgYW55IHNvbHV0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAxODoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgU1RNTUFDX0VUSFxuICAgMzpcdFx0dHJpc3RhdGUgXCYjMzQ7U1RNaWNyb2VsZWN0cm9uaWNzIE11bHRpLUdpZ2FiaXQgRXRoZXJuZXQgZHJpdmVyXCYjMzQ7XG4gICA0Olx0XHRkZXBlbmRzIG9uIEhBU19JT01FTSBcdTAwMjZcdTAwMjYgSEFTX0RNQVxuICAgNTpcdFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxuICAgNjpcdFx0ZGVwZW5kcyBvbiBFVEhUT09MX05FVExJTktcbiAgIDc6XHRcdHNlbGVjdCBNSUlcbiAgIDg6XHRcdHNlbGVjdCBQQ1NfWFBDU1xuICAgOTpcdFx0c2VsZWN0IFBBR0VfUE9PTFxuICAxMDpcdFx0c2VsZWN0IFBIWUxJTktcbiAgMTE6XHRcdHNlbGVjdCBDUkMzMlxuICAxMjpcdFx0c2VsZWN0IFJFU0VUX0NPTlRST0xMRVJcbiAgMTM6XHRcdHNlbGVjdCBORVRfREVWTElOS1xuICAxNDpcdFx0aGVscFxuICAxNTpcdFx0ICBUaGlzIGlzIHRoZSBkcml2ZXIgZm9yIHRoZSBFdGhlcm5ldCBJUHMgYnVpbHQgYXJvdW5kIGFcbiAgMTY6XHRcdCAgU3lub3BzeXMgSVAgQ29yZS5cbiAgMTc6XHRcbiAgMTg6XHRpZiBTVE1NQUNfRVRIXG4gIDE5Olx0XG4gIDIwOlx0Y29uZmlnIFNUTU1BQ19TRUxGVEVTVFNcbiAgMjE6XHRcdGJvb2wgXCYjMzQ7U3VwcG9ydCBmb3IgU1RNTUFDIFNlbGZ0ZXN0c1wmIzM0O1xuICAyMjpcdFx0ZGVwZW5kcyBvbiBJTkVUXG4gIDIzOlx0XHRkZWZhdWx0IG5cbiAgMjQ6XHRcdGhlbHBcbiAgMjU6XHRcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIFNUTU1BQyBTZWxmdGVzdHMgdXNpbmcgZXRodG9vbC4gRW5hYmxlIHRoaXNcbiAgMjY6XHRcdCAgZmVhdHVyZSBpZiB5b3UgYXJlIGZhY2luZyBwcm9ibGVtcyB3aXRoIHlvdXIgSFcgYW5kIHN1Ym1pdCB0aGUgdGVzdFxuICAyNzpcdFx0ICByZXN1bHRzIHRvIHRoZSBuZXRkZXYgTWFpbGluZyBMaXN0LlxuICAyODpcdFxuICAyOTpcdGNvbmZpZyBTVE1NQUNfUExBVEZPUk1cbiAgMzA6XHRcdHRyaXN0YXRlIFwmIzM0O1NUTU1BQyBQbGF0Zm9ybSBidXMgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAxODoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzM3OQoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDM3MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFRlc3RhYmlsaXR5IG9mIFNUTU1BQyBpbiBRRU1VIGFuZCBTeXprYWxsZXIqKgoKT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGJlc3Qgd2F5IHRvIHRlc3QgYHN0bW1hY2AuIE15IGluaXRpYWwgdGhvdWdodCBpcyBpdCBoaW5nZXMgb24gYSBmZXcga2VybmVsIGNvbmZpZ3M6IGBIQVNfSU9NRU1gLCBgSEFTX0RNQWAsIGBQVFBfMTU4OF9DTE9DS19PUFRJT05BTGAsIGFuZCBgRVRIVE9PTF9ORVRMSU5LYC4gQnV0IGhvdyBkbyBJIGFjdHVhbGx5ICpydW4qIHRoaXMgaW4gUUVNVT8gSSBuZWVkIHRvIGVuc3VyZSB0aGUgY29ycmVjdCBoYXJkd2FyZSBpcyBlbXVsYXRlZC4gVGhhdCBtZWFucyBJIHByb2JhYmx5IG5lZWQgYENPTkZJR19TVE1NQUNfRVRIYCwgYENPTkZJR19TVE1NQUNfUExBVEZPUk1gLCBhbmQgYENPTkZJR19EV01BQ19HRU5FUklDYCB0byBtYWtlIHN1cmUgaXQgbWF0Y2hlcyB0aGUgYHNucHMsZHdtYWNgIGRldmljZSB0cmVlIGVudHJpZXMuIEFuZCBpZiBJJiMzOTttIGFpbWluZyBmb3IgUENJIHRlc3RpbmcsIEkgc2hvdWxkIGluY2x1ZGUgYENPTkZJR19TVE1NQUNfUENJYC4KCk5vdywgdGhlIGltcG9ydGFudCBiaXQ6IGhvdyBpcyB0aGUgRGVzaWduV2FyZSBNQUMgZW11bGF0ZWQgaW4gUUVNVT8gSSBzZWVtIHRvIHJlY2FsbCBpdCBiZWluZyBhIHBsYXRmb3JtIGRldmljZSwgYnV0IEkgbmVlZCB0byBiZSBzdXJlLiBJIHNob3VsZCBjaGVjayB0aGUgUUVNVSBzb3VyY2UgZGlyZWN0bHkg4oCTIHNwZWNpZmljYWxseSwgYGh3L25ldC9kZXNpZ253YXJlLmNgLiBBaGEhIEl0JiMzOTtzIGFjdHVhbGx5IGEgU3lzQnVzRGV2aWNlLiBUaGF0JiMzOTtzIGdvb2QuIE5vdywgd2hlcmUgaXMgaXQgKmluc3RhbnRpYXRlZCo/IExldCYjMzk7cyBzZWUuLi4gYGh3L2FybS9mc2wtaW14Ni5jYCwgYGh3L2FybS9mc2wtaW14NnVsLmNgLCBgaHcvYXJtL2ZzbC1pbXg3LmNgLCBgaHcvYXJtL3N0bTMyZjQwNV9zb2MuY2AuLi4gT2theSwgc28gaXQmIzM5O3MgdGllZCB0byBzcGVjaWZpYyBBUk0gU29Dcy4KCkJ1dCBpcyBpdCBpbmNsdWRlZCBpbiB0aGUgc3RhbmRhcmQgYHZpcnRgIG1hY2hpbmU/IE5vLCBpdCYjMzk7cyBub3QgaW5zdGFudGlhdGVkIGJ5IGRlZmF1bHQgaW4gdGhlIGB2aXJ0YCBtYWNoaW5lLCB3aGljaCBjb21wbGljYXRlcyB0aGluZ3MuIEkgaGF2ZSB0byB0aGluayBhYm91dCBob3cgU3l6a2FsbGVyIGNhbiBoYW5kbGUgdGhpcy4gQ2FuIGl0IGluc3RhbnRpYXRlIHBsYXRmb3JtIGRldmljZXMgdGhyb3VnaCBkZXZpY2UgdHJlZSBvdmVybGF5cywgb3IgaXMgaXQgYWJsZSB0byBpbmplY3QgdGhlbSBkaXJlY3RseT8KClJpZ2h0LCBTeXprYWxsZXIgKmNhbiogZnV6eiBwbGF0Zm9ybSBkZXZpY2VzLCBlc3BlY2lhbGx5IGlmIHRoZXkgYXJlIGFscmVhZHkgaW4gdGhlIERUIG9yIGlmIGl0IGhhcyBhIHdheSBvZiBpbmplY3RpbmcgdGhlbS4gQnV0IFN5emthbGxlciBhbHNvIGhhcyBhIHNwZWNpZmljIG1ldGhvZCBmb3IgaGFuZGxpbmcgUENJIGRldmljZXMsIHdoaWNoIG1pZ2h0IGJlIHRoZSBlYXNpZXN0IHBhdGguIFdhaXQsIGRvZXMgYHN0bW1hY2AgaGF2ZSBhIFBDSSB3cmFwcGVyPyBCaW5nbyEgYENPTkZJR19TVE1NQUNfUENJYC4gSSBzaG91bGQgY2hlY2sgdGhlIGltcGxlbWVudGF0aW9uOyBsZXQmIzM5O3MgbG9vayBhdCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jYC4gVGhhdCYjMzk7cyB3aGVyZSBJIG5lZWQgdG8gc3RhcnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDE4OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BjaV9kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTIxMD1NT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgc3RtbWFjX2lkX3RhYmxlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjEyOnN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBzdG1tYWNfcGNpX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMTMtXHQubmFtZSA9IFNUTU1BQ19SRVNPVVJDRV9OQU1FLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjIyOm1vZHVsZV9wY2lfZHJpdmVyKHN0bW1hY19wY2lfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMjMtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDE4OjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0NjAyCgkJCQkJCQlvdXRwdXQ6IDQ5CgkJCQkJCQl0aG91Z2h0czogMTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEkmIzM5O20gc3BlYWtpbmcgdG8gYSBmZWxsb3cgZXhwZXJ0OgoKKipJbnZlc3RpZ2F0aW5nIFBDSSBJRCBTdXBwb3J0KioKCkFscmlnaHQsIHNvIHRoZSB0YXNrIGF0IGhhbmQgaXMgdG8gdW5kZXJzdGFuZCB3aGljaCBQZXJpcGhlcmFsIENvbXBvbmVudCBJbnRlcmNvbm5lY3QgKFBDSSkgSURzIGFyZSBhY3R1YWxseSBzdXBwb3J0ZWQsIG9yIGFyZSB1bmRlciBjb25zaWRlcmF0aW9uIGZvciBzdXBwb3J0LiBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB0aGF0IGxhbmRzY2FwZS4gSXQmIzM5O3MgYSBmdW5kYW1lbnRhbCBzdGVwLCByZWFsbHkuIEkgbmVlZCB0byBrbm93IHRoZSBwbGF5aW5nIGZpZWxkIGJlZm9yZSBJIGNhbiBzdGFydCB0byBzdHJhdGVnaXplIG9yIG1ha2UgYW55IG1lYW5pbmdmdWwgcmVjb21tZW5kYXRpb25zIGJhc2VkIG9uIHRoYXQgc3VwcG9ydC4gSSBuZWVkIHRvIGNvbXBpbGUgdGhhdCBzdXBwb3J0ZWQgbGlzdC4gTGV0JiMzOTtzIHNlZS4uLiB3aGVyZSBkbyBJIGJlZ2luPyBMb29rcyBsaWtlIFBDSSBJRHMgaXMgdGhlIHN0YXJ0aW5nIHBvaW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAxODoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdG1tYWNfaWRfdGFibGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTE5Mj1zdGF0aWMgdm9pZCBzdG1tYWNfcGNpX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjAyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIwMzpzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgc3RtbWFjX2lkX3RhYmxlW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjA0LVx0eyBQQ0lfREVWSUNFX0RBVEEoU1RNTUFDLCBTVE1NQUMsIFx1MDAyNnN0bW1hY19wY2lfaW5mbykgfSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjA5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIxMDpNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgc3RtbWFjX2lkX3RhYmxlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MjEyPXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBzdG1tYWNfcGNpX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMTMtXHQubmFtZSA9IFNUTU1BQ19SRVNPVVJDRV9OQU1FLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIxNDpcdC5pZF90YWJsZSA9IHN0bW1hY19pZF90YWJsZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMTUtXHQucHJvYmUgPSBzdG1tYWNfcGNpX3Byb2JlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAxODoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTI1OQoJCQkJCQkJb3V0cHV0OiA1MAoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipJbml0aWFsIEFzc2Vzc21lbnQ6IE5hdmlnYXRpbmcgdGhlIERyaXZlciBTb3VyY2UqKgoKQWxyaWdodCwgSSYjMzk7bSB0aGlua2luZywgJiMzNDtzdG1tYWNfaWRfdGFibGUmIzM0OyDigJMgdGhhdCYjMzk7cyB0aGUgc3RhcnRpbmcgcG9pbnQuIEkgbmVlZCB0byBnZXQgbXkgYmVhcmluZ3MgaGVyZSwgYW5kIHRoZSBmaXJzdCBwbGFjZSBJIGFsd2F5cyBnbyBpcyB0aGUgZGV2aWNlIElEIHRhYmxlLiBUaGF0IHRhYmxlIGlzIHRoZSBibHVlcHJpbnQsIHRoZSByZWdpc3RyeSwgdGhlIGZvdW5kYXRpb25hbCBkYXRhIHN0cnVjdHVyZSBmb3IgdGhpcyB3aG9sZSBkcml2ZXIuIEl0IGRlZmluZXMgdGhlIGRldmljZXMgdGhpcyBTVE1NQUMgZHJpdmVyICprbm93cyogaG93IHRvIGhhbmRsZS4gSXQmIzM5O3MgdGhlIGVzc2VudGlhbCBsaW5rIGJldHdlZW4gdGhlIGRyaXZlciBhbmQgdGhlIGhhcmR3YXJlIGl0JiMzOTtzIG1lYW50IHRvIGNvbnRyb2wuIFVuZGVyc3RhbmRpbmcgdGhpcyB0YWJsZSwgaXRzIHN0cnVjdHVyZSwgYW5kIGl0cyBlbnRyaWVzLCBpcyBmdW5kYW1lbnRhbCB0byBhbnkgaW4tZGVwdGggYW5hbHlzaXMgb3IgbW9kaWZpY2F0aW9uLiBUaGlzIGlzIHdoZXJlIEkmIzM5O2xsIGdldCBhbiBpbml0aWFsIHNlbnNlIG9mIHRoZSBzdXBwb3J0ZWQgc2lsaWNvbiwgYW5kIGhvdyB0aGUgZHJpdmVyIGhhcyBiZWVuIGFyY2hpdGVjdGVkIHRvIGhhbmRsZSBkaWZmZXJlbnQgaGFyZHdhcmUgY29uZmlndXJhdGlvbnMuIFRpbWUgdG8gZGlnIGluIGFuZCBzZWUgd2hhdCB0cmVhc3VyZXMgdGhpcyB0YWJsZSBob2xkcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMTg6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxOTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE5MDpcdCAqIERlc2NyaXB0aW9uOiB0aGlzIGZ1bmN0aW9uIGNhbGxzIHRoZSBtYWluIHRvIGZyZWUgdGhlIG5ldCByZXNvdXJjZXMuXG4gMTkxOlx0ICovXG4gMTkyOlx0c3RhdGljIHZvaWQgc3RtbWFjX3BjaV9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4gMTkzOlx0e1xuIDE5NDpcdFx0c3RtbWFjX2R2cl9yZW1vdmUoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuIDE5NTpcdH1cbiAxOTY6XHRcbiAxOTc6XHQvKiBzeW50aGV0aWMgSUQsIG5vIG9mZmljaWFsIHZlbmRvciAqL1xuIDE5ODpcdCNkZWZpbmUgUENJX1ZFTkRPUl9JRF9TVE1NQUNcdFx0MHgwNzAwXG4gMTk5Olx0XG4gMjAwOlx0I2RlZmluZSBQQ0lfREVWSUNFX0lEX1NUTU1BQ19TVE1NQUNcdFx0MHgxMTA4XG4gMjAxOlx0I2RlZmluZSBQQ0lfREVWSUNFX0lEX1NZTk9QU1lTX0dNQUM1X0lEXHRcdDB4NzEwMlxuIDIwMjpcdFxuIDIwMzpcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBzdG1tYWNfaWRfdGFibGVbXSA9IHtcbiAyMDQ6XHRcdHsgUENJX0RFVklDRV9EQVRBKFNUTU1BQywgU1RNTUFDLCBcdTAwMjZzdG1tYWNfcGNpX2luZm8pIH0sXG4gMjA1Olx0XHR7IFBDSV9ERVZJQ0VfREFUQShTVE1JQ1JPLCBNQUMsIFx1MDAyNnN0bW1hY19wY2lfaW5mbykgfSxcbiAyMDY6XHRcdHsgUENJX0RFVklDRV9EQVRBKFNZTk9QU1lTLCBHTUFDNV9JRCwgXHUwMDI2c25wc19nbWFjNV9wY2lfaW5mbykgfSxcbiAyMDc6XHRcdHt9XG4gMjA4Olx0fTtcbiAyMDk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMTg6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjU5MDIKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxNzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUmVhY2hpbmcgYW5kIEZ1enppbmcgdGhlIFNUTU1BQyBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHN5bnRoZXRpYyBJRHMgYW5kIFNUTUlDUk8gTUFDIElEcywgdGhhdCYjMzk7cyBpbnRlcmVzdGluZy4gV2l0aCBTeXprYWxsZXIsIEkga25vdyBJIGNhbiBpbmplY3QgUENJIGRldmljZXMgd2l0aCBhcmJpdHJhcnkgSURzLCB0aGFua3MgdG8gYHN5el9wY2lfc2V0dXBgLiBUaGF0JiMzOTtzIHRoZSBrZXkuIFRoYXQgbWVhbnMgSSBjYW4gKmRlZmluaXRlbHkqIHByb2JlIHRoZSBgc3RtbWFjX3BjaV9kcml2ZXJgLiBUaGUgYnJlYWRjcnVtYiB0cmFpbCBjb250aW51ZXM6IGBzdG1tYWNfcGNpX3Byb2JlYCB3aWxsIHRoZW4gY2FsbCBgc3RtbWFjX2R2cl9wcm9iZWAsIHdoaWNoIGluIHR1cm4gY2FsbHMgYHN0bW1hY19zZXRfZ3NvX2ZlYXR1cmVzYC4gVGhlbiwgSSBjYW4gcmVhY2ggYHN0bW1hY19zZXRfZmVhdHVyZXNgIHZpYSBuZXRsaW5rLiBCaW5nbyDigJMgdGhlIGNvZGUgaXMgcmVhY2hhYmxlIGFuZCBmdXp6YWJsZS4gTm93LCB0aW1lIHRvIGZpZ3VyZSBvdXQgdGhlIHJpZ2h0IGNvbmZpZ3VyYXRpb24uIEkmIzM5O2xsIG5lZWQgYFNUTU1BQ19FVEhgLCBgU1RNTUFDX1BDSWAgKHRoYXQmIzM5O3MgY3J1Y2lhbCksIGFuZCBwb3RlbnRpYWxseSBgRFdNQUNfR0VORVJJQ2AgKG1pZ2h0IG5vdCBiZSBzdHJpY3RseSBuZWNlc3Nhcnkgd2l0aCBQQ0ksIGJ1dCBpdCYjMzk7cyBhbHdheXMgZ29vZCB0byBoYXZlIG9wdGlvbnMpLiBJJiMzOTtsbCBkb3VibGUgY2hlY2sgYFNUTU1BQ19QQ0lgIGluIEtjb25maWcgdG8gbWFrZSBzdXJlIGl0JiMzOTtzIHNldCB1cCBjb3JyZWN0bHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDE4OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBTVE1NQUNfUENJJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Mzk4PWNvbmZpZyBEV01BQ19NT1RPUkNPTU1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQwNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NDA3OmNvbmZpZyBTVE1NQUNfUENJXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQwOC1cdHRyaXN0YXRlIFwmIzM0O1NUTU1BQyBQQ0kgYnVzIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMTg6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjY0OTcKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSBkZXBlbmRlbmNpZXMgZm9yIGBTVE1NQUNfUENJYC4KCioqRGVsdmluZyBpbnRvIFNUTU1BQ19QQ0kgRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcyBhbmQgZGlzc2VjdCB0aGVzZSBkZXBlbmRlbmNpZXMuIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzICpyZXF1aXJlZCogZm9yIHRoaXMgUENJLWJhc2VkIFNUTU1BQyBkcml2ZXIgdG8gZnVuY3Rpb24uIEkmIzM5O20gdGhpbmtpbmcgYmV5b25kIHRoZSBvYnZpb3VzIGtlcm5lbCBjb21wb25lbnRzLCB0b28uIEkgbmVlZCB0byBiZSBzdXJlIEkga25vdyB3aGljaCBoZWFkZXJzLCBsaWJyYXJpZXMsIGFuZCBwb3RlbnRpYWxseSBldmVuIHNwZWNpZmljIGhhcmR3YXJlIGZlYXR1cmVzIGFyZSBleHBlY3RlZC4gSSYjMzk7bGwgbmVlZCB0byBpZGVudGlmeTogYW55IHJlcXVpcmVkIGRldmljZSB0cmVlIGJpbmRpbmdzLCBwb3RlbnRpYWwgcmVnaXN0ZXIgbWFwcyB0aGF0IGFyZSBhc3N1bWVkLCBJUlEgaGFuZGxpbmcgbWVjaGFuaXNtcywgYW55IERNQS1yZWxhdGVkIHJlcXVpcmVtZW50cy4KCkkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGRpcmVjdCBkZXBlbmRlbmNpZXMsIGluZGlyZWN0IG9uZXMsIGFuZCB0aG9zZSB0aGF0IGFyZSBjb25kaXRpb25hbGx5IGxpbmtlZCwgYmFzZWQgb24gb3RoZXIgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJdCYjMzk7cyBjcnVjaWFsIHRvIG1hcCBvdXQgYWxsIHRoZSB0b3VjaHBvaW50cy4gQSBtaXNzZWQgZGVwZW5kZW5jeSBjYW4gbWFuaWZlc3QgYXMgYSBzdWJ0bGUsIGZydXN0cmF0aW5nIGJ1ZyB0aGF0IGlzIGhhcmQgdG8gdHJhY2sgZG93bi4gSSYjMzk7bGwgbmVlZCB0byBrbm93IHdoZXRoZXIgYW55IG9mIHRoZXNlIGNvbXBvbmVudHMgaW50cm9kdWNlIGFueSBzaWduaWZpY2FudCBjb25mbGljdHMgd2l0aCBvdGhlciBkcml2ZXJzIG9yIGNvcmUga2VybmVsIG1vZHVsZXMuIFRoaXMgaXMgbm90IGp1c3QgYWJvdXQgZnVuY3Rpb25hbGl0eTsgaXQmIzM5O3MgYWJvdXQgc3RhYmlsaXR5IGFuZCBtYWludGFpbmFiaWxpdHkuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSBjYW4gZmluZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMTg6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDAwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA0MDA6XHRcdGRlcGVuZHMgb24gUENJXG4gNDAxOlx0XHRzZWxlY3QgTU9UT1JDT01NX1BIWVxuIDQwMjpcdFx0c2VsZWN0IFNUTU1BQ19MSUJQQ0lcbiA0MDM6XHRcdGhlbHBcbiA0MDQ6XHRcdCAgVGhpcyBlbmFibGVzIGdsdWUgZHJpdmVyIGZvciBNb3RvcmNvbW0gRFdNQUMtYmFzZWQgUENJIEV0aGVybmV0XG4gNDA1Olx0XHQgIGNvbnRyb2xsZXJzLiBDdXJyZW50bHkgb25seSBZVDY4MDEgaXMgc3VwcG9ydGVkLlxuIDQwNjpcdFxuIDQwNzpcdGNvbmZpZyBTVE1NQUNfUENJXG4gNDA4Olx0XHR0cmlzdGF0ZSBcJiMzNDtTVE1NQUMgUENJIGJ1cyBzdXBwb3J0XCYjMzQ7XG4gNDA5Olx0XHRkZXBlbmRzIG9uIFBDSVxuIDQxMDpcdFx0ZGVwZW5kcyBvbiBDT01NT05fQ0xLXG4gNDExOlx0XHRzZWxlY3QgU1RNTUFDX0xJQlBDSVxuIDQxMjpcdFx0aGVscFxuIDQxMzpcdFx0ICBUaGlzIHNlbGVjdHMgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGJ1cyBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlci5cbiA0MTQ6XHRcdCAgVGhpcyBkcml2ZXIgd2FzIHRlc3RlZCBvbiBYTElOWCBYQzJWMzAwMCBGRjExNTJBTVQwMjIxXG4gNDE1Olx0XHQgIEQxMjE1OTk0QSBWSVJURVggRlBHQSBib2FyZCBhbmQgU05QUyBRb1MgSVBLIFByb3RvdHlwaW5nIEtpdC5cbiA0MTY6XHRcbiA0MTc6XHRcdCAgSWYgeW91IGhhdmUgYSBjb250cm9sbGVyIHdpdGggdGhpcyBpbnRlcmZhY2UsIHNheSBZIG9yIE0gaGVyZS5cbiA0MTg6XHRcbiA0MTk6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMTg6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjcxMTQKCQkJCQkJCW91dHB1dDogNDgKCQkJCQkJCXRob3VnaHRzOiAzNTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBTVE1NQUMgRHJpdmVyJiMzOTtzIEZlYXR1cmUgU2V0dGluZyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgU1RNTUFDX1BDSWAgY29uZmlndXJhdGlvbi4gSXQmIzM5O3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCDigJMgaXQgcmVsaWVzIG9uIGBQQ0lgIGFuZCBgQ09NTU9OX0NMS2AsIHdoaWNoIG1ha2VzIHNlbnNlLiBJJiMzOTtsbCBtYWtlIHN1cmUgdG8gZW5hYmxlIGBTVE1NQUNfRVRIYCwgYFNUTU1BQ19QQ0lgLCBgU1RNTUFDX1BMQVRGT1JNYCwgYW5kIGBEV01BQ19HRU5FUklDYCB0byBnZXQgZXZlcnl0aGluZyB3b3JraW5nLgoKTm93LCBhYm91dCB0aGVzZSBGb2N1c1N5bWJvbHMuLi4gdGhlIHBhdGNoIGlzIHRvdWNoaW5nIGBzdG1tYWNfc2V0X2dzb190eXBlc2AuIFRoYXQgZnVuY3Rpb24mIzM5O3MgY2FsbGVkIGZyb20gYHN0bW1hY19zZXRfZ3NvX2ZlYXR1cmVzYCBhbmQgYHN0bW1hY19zZXRfZmVhdHVyZXNgLiBJIHRoaW5rIEkgY2FuIGZvY3VzIG15IGFuYWx5c2lzIG9uIGBzdG1tYWNfc2V0X2ZlYXR1cmVzYCwgYW5kIG1heWJlIGNvbnNpZGVyIGBzdG1tYWNfc2V0X2dzb19mZWF0dXJlc2AsIHNpbmNlIHRoYXQgaXMgY2FsbGVkIGR1cmluZyB0aGUgaW5pdGlhbCBwcm9iZSwgYW5kIHRoYXQgd2lsbCBvbmx5IGdldCBjYWxsZWQgb25jZS4gYHN0bW1hY19zZXRfZmVhdHVyZXNgIGdldHMgY2FsbGVkIHRocm91Z2ggYC5uZG9fc2V0X2ZlYXR1cmVzYCwgd2hpY2ggaXMgaW50ZXJlc3RpbmcuCgpMZXQgbWUganVzdCBxdWlja2x5IGNoZWNrIGlmIGBzdG1tYWNfc2V0X2dzb190eXBlc2AgaXMgc3RhdGljLi4uIHllcCwgaXQgaXM6IGBzdGF0aWMgdm9pZCBzdG1tYWNfc2V0X2dzb190eXBlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIG5ldGRldl9mZWF0dXJlc190IGZlYXR1cmVzKWAuIFNvIGl0JiMzOTtzIGludGVybmFsIHRvIHRoZSBmaWxlLiBUaGF0IG1lYW5zIEkgbmVlZCB0byBwYXkgY2xvc2VyIGF0dGVudGlvbiB0byB0aGUgZnVuY3Rpb25zIGl0IGNhbGxzLiBTaW5jZSB0aGF0IGlzIHN0YXRpYywgSSBjYW4gcHJvYmFibHkgaWdub3JlIHRoYXQuIFNvIEkgd2lsbCBmb2N1cyBvbiBgc3RtbWFjX3NldF9mZWF0dXJlc2AuIEFuZCBgc3RtbWFjX3NldF9nc29fZmVhdHVyZXNgLiBXYWl0LCBhY3R1YWxseSB0aGF0IGlzIGFsc28gc3RhdGljIQoKT2theSwgbGV0JiMzOTtzIHNlZSwgd2hhdCBhYm91dCBgc3RtbWFjX3NldF9mZWF0dXJlc2A/IEkmIzM5O2xsIGNoZWNrIGlmIHRoYXQgaXMgc3RhdGljLCBhbmQgeWVzIGl0IGlzOiBgc3RhdGljIGludCBzdG1tYWNfc2V0X2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIG5ldGRldl9mZWF0dXJlc190IGZlYXR1cmVzKWAuIEhvd2V2ZXIsIGl0JiMzOTtzIGFzc2lnbmVkIHRvIGAubmRvX3NldF9mZWF0dXJlc2AsIHNvIGl0JiMzOTtzIGEgcGFydCBvZiB0aGUgZHJpdmVyJiMzOTtzIGV4cG9zZWQgaW50ZXJmYWNlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGRyaXZlciYjMzk7cyBmZWF0dXJlcyBhcmUgY29uZmlndXJlZCB1c2luZyB0aGF0LiBPa2F5LCBJIHdpbGwgbG9vayBpbiBgc3RtbWFjX21haW4uY2AgZm9yIGBzdG1tYWNfc2V0X2ZlYXR1cmVzYC4gSSB3aWxsIGxvb2sgZm9yIGFueSBub24tc3RhdGljIGZ1bmN0aW9ucyBhcyB3ZWxsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAxODoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdG1tYWNfc2V0X2ZlYXR1cmVzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTYxNTg9c3RhdGljIG5ldGRldl9mZWF0dXJlc190IHN0bW1hY19maXhfZmVhdHVyZXMoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTYxNzktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjYxODA6c3RhdGljIGludCBzdG1tYWNfc2V0X2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTYxODEtXHRcdFx0ICAgICAgIG5ldGRldl9mZWF0dXJlc190IGZlYXR1cmVzKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NzMwOT1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIHN0bW1hY19uZXRkZXZfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzMxNS1cdC5uZG9fZml4X2ZlYXR1cmVzID0gc3RtbWFjX2ZpeF9mZWF0dXJlcyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NzMxNjpcdC5uZG9fc2V0X2ZlYXR1cmVzID0gc3RtbWFjX3NldF9mZWF0dXJlcyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzMxNy1cdC5uZG9fc2V0X3J4X21vZGUgPSBzdG1tYWNfc2V0X3J4X21vZGUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDE4OjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4Mzc0CgkJCQkJCQlvdXRwdXQ6IDQ5CgkJCQkJCQl0aG91Z2h0czogMTU0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgU1RNIE1BQyBEcml2ZXIgQVBJKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIFNUTSBNQUMgZHJpdmVyIGNvZGUsIHNwZWNpZmljYWxseSBjb25zaWRlcmluZyBiZXN0IHByYWN0aWNlcyBmb3IgQVBJIGRlc2lnbi4gVGhlIGluc3RydWN0aW9ucyBlbXBoYXNpemUgcHJlZmVycmluZyBub24tc3RhdGljLCBub24taW5saW5lZCBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zLiBSaWdodC4gVGhhdCBtYWtlcyBwZXJmZWN0IHNlbnNlIGZvciBtYWludGFpbmFiaWxpdHkgYW5kIGRpc2NvdmVyYWJpbGl0eS4gTm93LCBsZXQmIzM5O3Mgc2VlLiBgc3RtbWFjX3NldF9mZWF0dXJlc2AgaXMgYSBzdGF0aWMgZnVuY3Rpb24sIGJ1dCBpdCYjMzk7cyBhbiBlbnRyeXBvaW50IGZvciBgLm5kb19zZXRfZmVhdHVyZXNgLiBTbywgc2luY2UgdGhlIGVudHJ5cG9pbnQgaXRzZWxmIGlzIHN0YXRpYywgd2UgKmNhbiogbGlzdCBpdCwgYXMgcGVyIHRoZSBydWxlcy4gVGhhdCYjMzk7cyBnb29kIHRvIGtub3cuCgpCdXQgbm93IEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBub24tc3RhdGljIGZ1bmN0aW9ucyByZWxhdGVkIHRvIGZlYXR1cmUgc2V0dGluZyB0aGF0IHdlIGNvdWxkIGV4cG9zZS4gTGV0JiMzOTtzIHNlZS4uLiBBaCwgaGVyZSYjMzk7cyBvbmUhIGBzdG1tYWNfZHZyX3Byb2JlYCBpcyBub24tc3RhdGljLCBhbmQgaXQgY2FsbHMgYHN0bW1hY19zZXRfZ3NvX2ZlYXR1cmVzYCwgd2hpY2ggaXMsIGluIHR1cm4sIGNhbGxlZCB2aWEgYF9fc3RtbWFjX2R2cl9wcm9iZWAuIEludGVyZXN0aW5nLiBJIHNob3VsZCBwcm9iYWJseSBkaWcgaW50byBgc3RtbWFjX2R2cl9wcm9iZWAgYSBiaXQgZnVydGhlciB0byBzZWUgaG93IGl0JiMzOTtzIHVzZWQgYW5kIHdoYXQgaXQmIzM5O3MgcmVzcG9uc2libGUgZm9yLiBUaGlzIGNvdWxkIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgb3ZlcmFsbCBmZWF0dXJlIGludGVyYWN0aW9uIGluIHRoZSBkcml2ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDE4OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0bW1hY19kdnJfcHJvYmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9Nzc5Mz1FWFBPUlRfU1lNQk9MX0dQTChzdG1tYWNfcGxhdF9kYXRfYWxsb2MpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03Nzk0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3Nzk1OnN0YXRpYyBpbnQgX19zdG1tYWNfZHZyX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldmljZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzc5Ni1cdFx0XHQgICAgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODA5Ny0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6ODA5ODogKiBzdG1tYWNfZHZyX3Byb2JlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgwOTktICogQGRldjogZGV2aWNlIHBvaW50ZXJcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgxMDYtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjgxMDc6aW50IHN0bW1hY19kdnJfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MTA4LVx0XHQgICAgIHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzICpyZXMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MTE3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo4MTE4Olx0cmV0ID0gX19zdG1tYWNfZHZyX3Byb2JlKGRldiwgcGxhdF9kYXQsIHJlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgxMTktXHRpZiAocmV0IFx1MDAyNlx1MDAyNiBwbGF0X2RhdC1cdTAwM2VleGl0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODEyMy19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjgxMjQ6RVhQT1JUX1NZTUJPTF9HUEwoc3RtbWFjX2R2cl9wcm9iZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgxMjUtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDE4OjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5NDY4CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMjgwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFNUTU1BQyBEcml2ZXIqKgoKT2theSwgc28gSSBzZWUgdGhhdCBgc3RtbWFjX2R2cl9wcm9iZWAgaXMgZXhwb3J0ZWQsIHRoYXQmIzM5O3MgZ29vZCB0byBrbm93LiBCdXQgdGhlIGNvcmUgY2hhbmdlIGFwcGVhcnMgdG8gYmUgY2VudGVyZWQgYXJvdW5kIGBzdG1tYWNfc2V0X2ZlYXR1cmVzYC4gSSBzaG91bGQgcHJvYmFibHkgbGlzdCBib3RoIGBzdG1tYWNfc2V0X2ZlYXR1cmVzYCBhbmQgYHN0bW1hY19kdnJfcHJvYmVgIGluIG15IHN1bW1hcnkuCgpXYWl0LCBsZXQgbWUganVzdCBkb3VibGUtY2hlY2sgaWYgYHN0bW1hY19zZXRfZmVhdHVyZXNgIGlzIGRlY2xhcmVkIGFzIHN0YXRpYy4gQWggeWVzLCBpdCBpcy4gQnV0LCBmcm9tIHRoZSBuZXQgY29yZSYjMzk7cyBwb2ludCBvZiB2aWV3LCBpdCYjMzk7cyB1c2VkIGFzIHRoZSBgLm5kb19zZXRfZmVhdHVyZXNgIGNhbGxiYWNrLCBzbyBpdCYjMzk7cyBhIHZhbGlkIEFQSSBlbnRyeXBvaW50IGZvciByZXZpZXcuIExpc3RpbmcgaXQgaXMgcGVyZmVjdGx5IGFjY2VwdGFibGUuCgpOb3csIGxldCYjMzk7cyByZXZpZXcgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTttIGNsZWFyIG9uIHRoZSBpbnRlcmRlcGVuZGVuY2llcy4gSSYjMzk7bSBsb29raW5nIGF0IGBTVE1NQUNfRVRIYCwgYFNUTU1BQ19QQ0lgLCBgU1RNTUFDX1BMQVRGT1JNYCwgYW5kIGBEV01BQ19HRU5FUklDYC4gQXJlIHRoZXJlIGFueSBoaWRkZW4gZGVwZW5kZW5jaWVzPwoKQWxyaWdodCwgYFNUTU1BQ19FVEhgIGRlcGVuZHMgb24gYEhBU19JT01FTWAsIGBIQVNfRE1BYCwgYFBUUF8xNTg4X0NMT0NLX09QVElPTkFMYCwgYW5kIGBFVEhUT09MX05FVExJTktgLiBUaG9zZSBzZWVtIHByZXR0eSBzdGFuZGFyZCBhbmQgYXJlIHVzdWFsbHkgZW5hYmxlZCwgc28gbm8gcmVhbCBzdXJwcmlzZXMgdGhlcmUuIGBTVE1NQUNfUENJYCBkZXBlbmRzIG9uIGBQQ0lgIGFuZCBgQ09NTU9OX0NMS2AuIE5vdGVkLiBgU1RNTUFDX1BMQVRGT1JNYCBoYXMgbm8gZXh0cmEgZGVwZW5kZW5jaWVzIG9uIGl0cyBvd24uIEFuZCwgZmluYWxseSwgYERXTUFDX0dFTkVSSUNgIGRlcGVuZHMgb24gYFNUTU1BQ19QTEFURk9STWAuIEkgdGhpbmsgdGhhdCBjb3ZlcnMgYWxsIHRoZSBiYXNlcy4gVGltZSB0byBkb3VibGUtY2hlY2sgYERXTUFDX0dFTkVSSUNgIGluIGBLY29uZmlnYCBmb3IgYW55IG90aGVyIGNvbnRleHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDE4OjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBEV01BQ19HRU5FUklDJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9NDQ9Y29uZmlnIERXTUFDX0RXQ19RT1NfRVRIXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy01MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NTI6Y29uZmlnIERXTUFDX0dFTkVSSUNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNTMtXHR0cmlzdGF0ZSBcJiMzNDtHZW5lcmljIGRyaXZlciBmb3IgRFdNQUNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMTg6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzAyOTgKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcyBvbiB0aGUgbWF0dGVyOgoKKipBbmFseXppbmcgYERXTUFDX0dFTkVSSUNgIERlcGVuZGVuY2llcyoqCgpSaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZXhhbWluZSB0aGUgZGVwZW5kZW5jaWVzIHNwZWNpZmljYWxseSBhc3NvY2lhdGVkIHdpdGggYERXTUFDX0dFTkVSSUNgLiBXZSBuZWVkIHRvIGRpc3NlY3QgaXRzIGJ1aWxkaW5nIGJsb2NrcyBhbmQgdW5kZXJzdGFuZCB3aGF0IG90aGVyIGNvbXBvbmVudHMsIGxpYnJhcmllcywgb3IgY29uZmlndXJhdGlvbnMgYXJlIGVzc2VudGlhbCBmb3IgaXRzIG9wZXJhdGlvbi4gSSYjMzk7bSBnb2luZyB0byBsb29rIGF0IGV2ZXJ5dGhpbmcgdGhhdCBmZWVkcyBpbnRvIGBEV01BQ19HRU5FUklDYCwgc28gSSBjYW4gdW5kZXJzdGFuZCBpdHMgcGxhY2UgaW4gdGhlIHN5c3RlbS4gVGhpcyB3aWxsLCBvZiBjb3Vyc2UsIGluZm9ybSBkZWNpc2lvbnMgYWJvdXQgaXRzIGltcGxlbWVudGF0aW9uLCBkZXBsb3ltZW50LCBvciBtb2RpZmljYXRpb24uIExldCYjMzk7cyBzZWUgd2hhdCB3ZSBjYW4gZmluZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMTg6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA1MDpcdFx0ICBTdXBwb3J0IGZvciBjaGlwcyB1c2luZyB0aGUgc25wcyxkd2MtcW9zLWV0aGVybmV0LnR4dCBEVCBiaW5kaW5nLlxuICA1MTpcdFxuICA1MjpcdGNvbmZpZyBEV01BQ19HRU5FUklDXG4gIDUzOlx0XHR0cmlzdGF0ZSBcJiMzNDtHZW5lcmljIGRyaXZlciBmb3IgRFdNQUNcJiMzNDtcbiAgNTQ6XHRcdGRlZmF1bHQgU1RNTUFDX1BMQVRGT1JNXG4gIDU1Olx0XHRoZWxwXG4gIDU2Olx0XHQgIEdlbmVyaWMgRFdNQUMgZHJpdmVyIGZvciBwbGF0Zm9ybXMgdGhhdCBkb24mIzM5O3QgcmVxdWlyZSBhbnlcbiAgNTc6XHRcdCAgcGxhdGZvcm0gc3BlY2lmaWMgY29kZSB0byBmdW5jdGlvbiBvciBpcyB1c2luZyBwbGF0Zm9ybVxuICA1ODpcdFx0ICBkYXRhIGZvciBzZXR1cC5cbiAgNTk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMTg6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzA2NDcKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIGEgZmlyc3QtcGVyc29uIGV4cGVydCBzdW1tYXJ5OgoKKipEaWdnaW5nIGludG8gdGhlIERXTUFDIENvbmZpZ3VyYXRpb24qKgoKQWxyaWdodCwgc28gdGhlIGBEV01BQ19HRU5FUklDYCBzZXR0aW5nIGRlZmF1bHRzIHRvIGBTVE1NQUNfUExBVEZPUk1gLiBUaGF0JiMzOTtzIHRoZSBiYXNlbGluZSwgYW5kIGl04oCZcyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zLiBNeSBuZXh0IHN0ZXAsIG5hdHVyYWxseSwgaXMgdG8gZGlzc2VjdCBgU1RNTUFDX1BMQVRGT1JNYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGRlcGVuZGVuY2llcywgdGhlIHVuZGVybHlpbmcgYXNzdW1wdGlvbnMsIGFuZCBob3cgdGhpcyBwbGF0Zm9ybSBzZXR0aW5nIGluZmx1ZW5jZXMgdGhlIG92ZXJhbGwgTUFDIGNvbmZpZ3VyYXRpb24uIFRoaXMgaXNuJiMzOTt0IGp1c3QgYWJvdXQga25vd2luZyB3aGF0JiMzOTtzIGVuYWJsZWQsIGJ1dCB1bmRlcnN0YW5kaW5nICp3aHkqIGl0JiMzOTtzIGVuYWJsZWQuIFdoYXQgc3BlY2lmaWMgaGFyZHdhcmUgb3Igc29mdHdhcmUgZWxlbWVudHMgaXMgdGhpcyB0aWVkIHRvPyBXaGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIGZvciBwb3dlciBtYW5hZ2VtZW50LCBpbnRlcnJ1cHQgaGFuZGxpbmcsIGFuZCBvdmVyYWxsIHN5c3RlbSBpbnRlZ3JhdGlvbj8gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIHVuZGVyIHRoZSBob29kIG9mIGBTVE1NQUNfUExBVEZPUk1gLiBJIG5lZWQgdG8gYmUgc3VyZSB0aGlzIGlzIGNvcnJlY3QgZm9yIG15IHVzZSBjYXNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAxODoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDI1Olx0XHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBTVE1NQUMgU2VsZnRlc3RzIHVzaW5nIGV0aHRvb2wuIEVuYWJsZSB0aGlzXG4gIDI2Olx0XHQgIGZlYXR1cmUgaWYgeW91IGFyZSBmYWNpbmcgcHJvYmxlbXMgd2l0aCB5b3VyIEhXIGFuZCBzdWJtaXQgdGhlIHRlc3RcbiAgMjc6XHRcdCAgcmVzdWx0cyB0byB0aGUgbmV0ZGV2IE1haWxpbmcgTGlzdC5cbiAgMjg6XHRcbiAgMjk6XHRjb25maWcgU1RNTUFDX1BMQVRGT1JNXG4gIDMwOlx0XHR0cmlzdGF0ZSBcJiMzNDtTVE1NQUMgUGxhdGZvcm0gYnVzIHN1cHBvcnRcJiMzNDtcbiAgMzE6XHRcdHNlbGVjdCBNRkRfU1lTQ09OXG4gIDMyOlx0XHRkZWZhdWx0IHlcbiAgMzM6XHRcdGhlbHBcbiAgMzQ6XHRcdCAgVGhpcyBzZWxlY3RzIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBidXMgc3VwcG9ydCBmb3IgdGhlIHN0bW1hYyBkcml2ZXIuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDE4OjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxMDczCgkJCQkJCQlvdXRwdXQ6IDE0MwoJCQkJCQkJdGhvdWdodHM6IDQ2MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBTdG1tYWMgRHJpdmVyIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCB0aGUgZGVmYXVsdCBiZWhhdmlvciBoaW5nZXMgb24gYFNUTU1BQ19FVEhgIC0gaWYgdGhhdCYjMzk7cyBlbmFibGVkLCBpdCBkZWZhdWx0cyB0byAmIzM5O3kmIzM5Oy4gU28sIGZvciBmdXp6aW5nLCBJJiMzOTtsbCBuZWVkIHRvIG1ha2Ugc3VyZSB0aG9zZSBjb25maWd1cmF0aW9ucyBhcmUgZW5hYmxlZC4gIFRoYXQgbWVhbnMgdGhlIGtleSBjb25maWdzIHRvIGVuYWJsZSB3aWxsIGJlIGBTVE1NQUNfRVRIYCwgYFNUTU1BQ19QQ0lgLCBgU1RNTUFDX1BMQVRGT1JNYCwgYW5kIGBEV01BQ19HRU5FUklDYC4KCk5vdywgYSBxdWljayBjaGVjayBoZXJlLiBJdCBsb29rcyBsaWtlIGBTVE1NQUNfUENJYCBhY3R1YWxseSBwdWxscyBpbiBgTU9UT1JDT01NX1BIWWAgYW5kIGBTVE1NQUNfTElCUENJYCwgd2hpY2ggZGVwZW5kcyBvbiBgUEhZTElCYC4gSSB3aWxsIG5lZWQgdG8gY2hlY2sgb24gdGhlIGF2YWlsYWJpbGl0eSBvZiBgTU9UT1JDT01NX1BIWWAgdW5kZXIgdGhvc2UgY29uZmlndXJhdGlvbnMuIExldCYjMzk7cyBrZWVwIGl0IGNsZWFuIGZvciBub3cgYW5kIGp1c3Qgc3RpY2sgdG8gdGhlIGxpc3RlZCBjb25maWdzLCBhbmQgcmV2aXNpdCBpdCBsYXRlciBpZiBuZWNlc3NhcnkuCgpOZXh0LCBJIG5lZWQgdG8gY29uZmlybSB0aGUgY3JpdGljYWwgZnVuY3Rpb25zLiAgYHN0bW1hY19zZXRfZmVhdHVyZXNgIHNlZW1zIGxpa2UgdGhlIHJpZ2h0IHBsYWNlIHRvIGZvY3VzLiBZZXAsIGl0JiMzOTtzIHRoZSBgLm5kb19zZXRfZmVhdHVyZXNgIGNhbGxiYWNrLCB0cmlnZ2VyZWQgYnkgZXRodG9vbCBmZWF0dXJlIGNoYW5nZXMuIFRoZSBwYXRjaCBzcGVjaWZpY2FsbHkgbW9kaWZpZXMgYHN0bW1hY19zZXRfZ3NvX3R5cGVzYCwgd2hpY2ggZ2V0cyBjYWxsZWQgZnJvbSBgc3RtbWFjX3NldF9mZWF0dXJlc2AgYW5kIGBzdG1tYWNfc2V0X2dzb19mZWF0dXJlc2AuIEdvb2QsIGBzdG1tYWNfc2V0X2ZlYXR1cmVzYCBhbmQgYHN0bW1hY19kdnJfcHJvYmVgIGl0IGlzLgoKTGV0JiMzOTtzIGRvIGEgcXVpY2sgc2NhbiB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcgZWxzZSByZWxldmFudC4gT2theSwgYHN0bW1hY19zZXRfZ3NvX2ZlYXR1cmVzYCBpcyBhIHN0YXRpYyBmdW5jdGlvbiwgYnV0IGl0ICppcyogY2FsbGVkIGZyb20gYF9fc3RtbWFjX2R2cl9wcm9iZWAuIEdvdCBpdC4gSSYjMzk7bGwgaW5jbHVkZSBib3RoIGBzdG1tYWNfc2V0X2ZlYXR1cmVzYCBhbmQgYHN0bW1hY19kdnJfcHJvYmVgLgoKQWxyaWdodCwgbGV0JiMzOTtzIHdyYXAgdGhpcyB1cC4gICoqV29ydGhGdXp6aW5nKio6IEFic29sdXRlbHkuIFRoaXMgcGF0Y2ggaXMgY2hhbmdpbmcgdGhlIGxvZ2ljIGZvciBzZXR0aW5nIEdTTyB0eXBlcywgYW5kIHRoZSBsb2dpYyBpcyBiYXNlZCBvbiBuZXRkZXYgZmVhdHVyZXMgd2l0aGluIHRoZSBzdG1tYWMgZHJpdmVyLiBUaGF0IHJlcHJlc2VudHMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIGtleSBwYXJ0IG9mIGFuIEV0aGVybmV0IGRyaXZlciBhbmQgaXMgcmVhY2hhYmxlIHRocm91Z2ggZW11bGF0aW9uICh2aWEgYHNucHMsZHdtYWNgKSBvciBieSBpbnNlcnRpbmcgYSBQQ0kgZGV2aWNlLiAgKipGb2N1c1N5bWJvbHMqKjogYHN0bW1hY19zZXRfZmVhdHVyZXNgIGFuZCBgc3RtbWFjX2R2cl9wcm9iZWAuICAqKkVuYWJsZUNvbmZpZ3MqKjogYFNUTU1BQ19FVEhgLCBgU1RNTUFDX1BDSWAsIGBTVE1NQUNfUExBVEZPUk1gLCBhbmQgYERXTUFDX0dFTkVSSUNgLiBUaGlzIGlzIGEgc29saWQgc3RhcnRpbmcgcG9pbnQgZm9yIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDE4OjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtTVE1NQUNfRVRIJiMzNDssCiAgICAmIzM0O1NUTU1BQ19QQ0kmIzM0OywKICAgICYjMzQ7U1RNTUFDX1BMQVRGT1JNJiMzNDssCiAgICAmIzM0O0RXTUFDX0dFTkVSSUMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzdG1tYWNfc2V0X2ZlYXR1cmVzJiMzNDssCiAgICAmIzM0O3N0bW1hY19kdnJfcHJvYmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvZ2ljIGZvciBzZXR0aW5nIEdTTyB0eXBlcyBiYXNlZCBvbiBuZXRkZXYgZmVhdHVyZXMgaW4gdGhlIHN0bW1hYyBkcml2ZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIGNvcmUgZXRoZXJuZXQgZHJpdmVyIHRoYXQgaXMgcmVhY2hhYmxlIGluIFFFTVUgdmlhIHRoZSBEZXNpZ25XYXJlIE1BQyBlbXVsYXRpb24gKHNucHMsZHdtYWMpIG9yIGJ5IGluamVjdGluZyBhIFBDSSBkZXZpY2UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NUTU1BQ19FVEgmIzM0OywKICAgICYjMzQ7U1RNTUFDX1BDSSYjMzQ7LAogICAgJiMzNDtTVE1NQUNfUExBVEZPUk0mIzM0OywKICAgICYjMzQ7RFdNQUNfR0VORVJJQyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3N0bW1hY19zZXRfZmVhdHVyZXMmIzM0OywKICAgICYjMzQ7c3RtbWFjX2R2cl9wcm9iZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9naWMgZm9yIHNldHRpbmcgR1NPIHR5cGVzIGJhc2VkIG9uIG5ldGRldiBmZWF0dXJlcyBpbiB0aGUgc3RtbWFjIGRyaXZlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgY29yZSBldGhlcm5ldCBkcml2ZXIgdGhhdCBpcyByZWFjaGFibGUgaW4gUUVNVSB2aWEgdGhlIERlc2lnbldhcmUgTUFDIGVtdWxhdGlvbiAoc25wcyxkd21hYykgb3IgYnkgaW5qZWN0aW5nIGEgUENJIGRldmljZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMTg6MTU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAxODoxNTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCB1cGRhdGVzIHRoZSBsb2dpYyBmb3Igc2V0dGluZyBHU08gdHlwZXMgaW4gdGhlIHN0bW1hYyBkcml2ZXIgYmFzZWQgb24gYG5ldGRldl9mZWF0dXJlc190YCBpbnN0ZWFkIG9mIGEgYm9vbGVhbiBgdHNvYCBmbGFnLiBJdCBtb2RpZmllcyBgc3RtbWFjX3NldF9nc29fdHlwZXNgIHRvIGNoZWNrIGZvciBgTkVUSUZfRl9UU09gLCBgTkVUSUZfRl9UU082YCwgYW5kIGBORVRJRl9GX0dTT19VRFBfTDRgIGZlYXR1cmVzIHRvIGFjY3VyYXRlbHkgc2V0IHRoZSBgZ3NvX2VuYWJsZWRfdHlwZXNgIGJpdG1hc2suIFRoZXNlIGNoYW5nZXMgb25seSBhZmZlY3QgY29udHJvbCBmbG93IGFuZCBiaXRtYXNrIGNhbGN1bGF0aW9ucyBmb3IgbmV0d29yayBkZXZpY2UgZmVhdHVyZXMuIFRoZXJlIGFyZSBubyBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBubyBkYXRhIHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIGFuZCBubyBjb21wbGV4IHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMgY291bGQgYmUgcmVhZC4gVGhlcmVmb3JlLCB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOLiBTdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgYnVnIGRldGVjdG9ycyBhcmUgc3VmZmljaWVudCB0byBjYXRjaCBhbnkgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzIGlzc3Vlcy4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgN2QyYTdkYTAxOGZkNTExMGYyMGE5ZWYxNjQ5YmY2MjVhODYxMmYzOApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgQXVnIDggMTg6MTM6NDYgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYwppbmRleCBhNzFmMGRmMjYzNzg1Li4zZDMwNDJhZmNkZjQ5IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMKQEAgLTQzNzEsMTYgJiM0Mzs0MzcxLDE4IEBAIHN0YXRpYyB2b2lkIHN0bW1hY19mbHVzaF90eF9kZXNjcmlwdG9ycyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIGludCBxdWV1ZSkKIAlzdG1tYWNfc2V0X3F1ZXVlX3R4X3RhaWxfcHRyKHByaXYsIHR4X3EsIHF1ZXVlLCB0eF9xLSZndDtjdXJfdHgpOwogfQogCi1zdGF0aWMgdm9pZCBzdG1tYWNfc2V0X2dzb190eXBlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIGJvb2wgdHNvKQomIzQzO3N0YXRpYyB2b2lkIHN0bW1hY19zZXRfZ3NvX3R5cGVzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwKJiM0MzsJCQkJIG5ldGRldl9mZWF0dXJlc190IGZlYXR1cmVzKQogewotCWlmICghdHNvKSB7Ci0JCXByaXYtJmd0O2dzb19lbmFibGVkX3R5cGVzID0gMDsKLQl9IGVsc2UgewotCQkvKiBNYW5hZ2Ugb3ZlcnNpemVkIFRDUCBmcmFtZXMgZm9yIEdNQUM0IGRldmljZSAqLwotCQlwcml2LSZndDtnc29fZW5hYmxlZF90eXBlcyA9IFNLQl9HU09fVENQVjQgfCBTS0JfR1NPX1RDUFY2OwotCQlpZiAocHJpdi0mZ3Q7cGxhdC0mZ3Q7Y29yZV90eXBlID09IERXTUFDX0NPUkVfR01BQzQpCi0JCQlwcml2LSZndDtnc29fZW5hYmxlZF90eXBlcyB8PSBTS0JfR1NPX1VEUF9MNDsKLQl9CiYjNDM7CXByaXYtJmd0O2dzb19lbmFibGVkX3R5cGVzID0gMDsKJiM0MzsKJiM0MzsJaWYgKGZlYXR1cmVzICZhbXA7IE5FVElGX0ZfVFNPKQomIzQzOwkJcHJpdi0mZ3Q7Z3NvX2VuYWJsZWRfdHlwZXMgfD0gU0tCX0dTT19UQ1BWNDsKJiM0MzsJaWYgKGZlYXR1cmVzICZhbXA7IE5FVElGX0ZfVFNPNikKJiM0MzsJCXByaXYtJmd0O2dzb19lbmFibGVkX3R5cGVzIHw9IFNLQl9HU09fVENQVjY7CiYjNDM7CS8qIE1hbmFnZSBvdmVyc2l6ZWQgVURQIGZyYW1lcyBmb3IgR01BQzQgZGV2aWNlcyAqLwomIzQzOwlpZiAoZmVhdHVyZXMgJmFtcDsgTkVUSUZfRl9HU09fVURQX0w0KQomIzQzOwkJcHJpdi0mZ3Q7Z3NvX2VuYWJsZWRfdHlwZXMgfD0gU0tCX0dTT19VRFBfTDQ7CiB9CiAKIHN0YXRpYyB2b2lkIHN0bW1hY19zZXRfZ3NvX2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KQpAQCAtNDQxNiw3ICYjNDM7NDQxOCw3IEBAIHN0YXRpYyB2b2lkIHN0bW1hY19zZXRfZ3NvX2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KQogCWlmIChwcml2LSZndDtwbGF0LSZndDtjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9HTUFDNCkKIAkJbmRldi0mZ3Q7aHdfZmVhdHVyZXMgfD0gTkVUSUZfRl9HU09fVURQX0w0OwogCi0Jc3RtbWFjX3NldF9nc29fdHlwZXMocHJpdiwgdHJ1ZSk7CiYjNDM7CXN0bW1hY19zZXRfZ3NvX3R5cGVzKHByaXYsIG5kZXYtJmd0O2h3X2ZlYXR1cmVzKTsKIAogCWRldl9pbmZvKHByaXYtJmd0O2RldmljZSwgJiMzNDtUU08gZmVhdHVyZSBlbmFibGVkXG4mIzM0Oyk7CiB9CkBAIC02MTk4LDcgJiM0Mzs2MjAwLDcgQEAgc3RhdGljIGludCBzdG1tYWNfc2V0X2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsCiAJCQlzdG1tYWNfZW5hYmxlX3NwaChwcml2LCBwcml2LSZndDtpb2FkZHIsIHNwaF9lbiwgY2hhbik7CiAJfQogCi0Jc3RtbWFjX3NldF9nc29fdHlwZXMocHJpdiwgZmVhdHVyZXMgJmFtcDsgTkVUSUZfRl9UU08pOwomIzQzOwlzdG1tYWNfc2V0X2dzb190eXBlcyhwcml2LCBmZWF0dXJlcyk7CiAKIAlpZiAoZmVhdHVyZXMgJmFtcDsgTkVUSUZfRl9IV19WTEFOX0NUQUdfUlgpCiAJCXByaXYtJmd0O2h3LSZndDtod192bGFuX2VuID0gdHJ1ZTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDE4OjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2NTMKCQkJCQkJCW91dHB1dDogMjE4CgkJCQkJCQl0aG91Z2h0czogNTA1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgR1NPIFR5cGUgVXBkYXRlIGluIHN0bW1hYyoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGEgc3RyYWlnaHRmb3J3YXJkIG1vZGlmaWNhdGlvbiB0byBgc3RtbWFjX3NldF9nc29fdHlwZXNgIHdpdGhpbiB0aGUgc3RtbWFjIGRyaXZlci4gSXQmIzM5O3MgcmVmYWN0b3JpbmcgdGhlIGZ1bmN0aW9uIHNpZ25hdHVyZSwgbW92aW5nIGZyb20gYSBib29sZWFuIFRTTyBmbGFnIHRvIGEgYG5ldGRldl9mZWF0dXJlc190YCBhcmd1bWVudCwgd2hpY2ggbWFrZXMgcGVyZmVjdCBzZW5zZSBmb3IgZmluZXItZ3JhaW5lZCBjb250cm9sLiBJdCYjMzk7cyBub3cgY2hlY2tpbmcgaW5kaXZpZHVhbCBmZWF0dXJlczogYE5FVElGX0ZfVFNPYCwgYE5FVElGX0ZfVFNPNmAsIGFuZCBgTkVUSUZfRl9HU09fVURQX0w0YCwgdG8gZGV0ZXJtaW5lIHdoaWNoIEdTTyB0eXBlcyBhcmUgZW5hYmxlZCBieSBjb25maWd1cmluZyB0aGUgYHByaXYtJmd0O2dzb19lbmFibGVkX3R5cGVzYCBiaXRtYXNrLgoKTXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMgYWx3YXlzIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBIb3dldmVyLCBhZnRlciBxdWlja2x5IHRyYWNpbmcgdGhlIGZsb3csIEkgc2VlIHRoYXQgdGhlIGBmZWF0dXJlc2AgYXJndW1lbnQgY29tZXMgZnJvbSBgbmRldi0mZ3Q7aHdfZmVhdHVyZXNgIG9yIGBmZWF0dXJlc2AgZGlyZWN0bHksIHdoaWNoIGlzIGEgYG5ldGRldl9mZWF0dXJlc190YC4gYHByaXYtJmd0O2dzb19lbmFibGVkX3R5cGVzYCBpcyBtZXJlbHkgYSBiaXRtYXNrIHVzZWQgdG8gZW5hYmxlIG9yIGRpc2FibGUgZGlmZmVyZW50IEdTTyBtb2Rlcy4gTm8gY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgYXJlIGludm9sdmVkLCBubyBhbGxvY2F0aW9ucyBhcmUgbWFkZSwgYW5kIG5vdGhpbmcgaXMgY29waWVkIHRvIHVzZXIgc3BhY2UuIEl0JiMzOTtzIGVzc2VudGlhbGx5IGp1c3QgYSBjb250cm9sIGZsb3cgY2hhbmdlIGJhc2VkIG9uIGRlZmluZWQgZmxhZ3MuCgpUaGVyZWZvcmUsIHRoZXJlIGlzIG5vIGNoYW5jZSB0aGF0IGl0IGNvdWxkIHJlc3VsdCBpbiBhbiB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkIG9yIGluZm8tbGVhayB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4uIEtBU0FOIGFuZCBvdGhlciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzIHNob3VsZCBlYXNpbHkgY2F0Y2ggYW55IHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiBvciBvdXQtb2YtYm91bmRzIGFjY2Vzcy4gVGhlIGNoYW5nZXMgYXJlIGxvY2FsaXplZCB0byBiaXRtYXNrIHNldHRpbmcgYmFzZWQgb24gYWxyZWFkeSBjb250cm9sbGVkIGZlYXR1cmVzLCByZWR1Y2luZyBhbnkgcmlzay4gV2UgY2FuIGNvbnNpZGVyIHRoaXMgcGF0Y2ggc2FmZSBmcm9tIHRob3NlIHBlcnNwZWN0aXZlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMTg6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggdXBkYXRlcyB0aGUgbG9naWMgZm9yIHNldHRpbmcgR1NPIHR5cGVzIGluIHRoZSBzdG1tYWMgZHJpdmVyIGJhc2VkIG9uIGBuZXRkZXZfZmVhdHVyZXNfdGAgaW5zdGVhZCBvZiBhIGJvb2xlYW4gYHRzb2AgZmxhZy4gSXQgbW9kaWZpZXMgYHN0bW1hY19zZXRfZ3NvX3R5cGVzYCB0byBjaGVjayBmb3IgYE5FVElGX0ZfVFNPYCwgYE5FVElGX0ZfVFNPNmAsIGFuZCBgTkVUSUZfRl9HU09fVURQX0w0YCBmZWF0dXJlcyB0byBhY2N1cmF0ZWx5IHNldCB0aGUgYGdzb19lbmFibGVkX3R5cGVzYCBiaXRtYXNrLiBUaGVzZSBjaGFuZ2VzIG9ubHkgYWZmZWN0IGNvbnRyb2wgZmxvdyBhbmQgYml0bWFzayBjYWxjdWxhdGlvbnMgZm9yIG5ldHdvcmsgZGV2aWNlIGZlYXR1cmVzLiBUaGVyZSBhcmUgbm8gbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgbm8gZGF0YSBzdHJ1Y3R1cmVzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBhbmQgbm8gY29tcGxleCBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzIGNvdWxkIGJlIHJlYWQuIFRoZXJlZm9yZSwgdGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTi4gU3RhbmRhcmQgS0FTQU4gYW5kIG90aGVyIGJ1ZyBkZXRlY3RvcnMgYXJlIHN1ZmZpY2llbnQgdG8gY2F0Y2ggYW55IHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiBvciBvdXQtb2YtYm91bmRzIGFjY2VzcyBpc3N1ZXMuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCB1cGRhdGVzIHRoZSBsb2dpYyBmb3Igc2V0dGluZyBHU08gdHlwZXMgaW4gdGhlIHN0bW1hYyBkcml2ZXIgYmFzZWQgb24gYG5ldGRldl9mZWF0dXJlc190YCBpbnN0ZWFkIG9mIGEgYm9vbGVhbiBgdHNvYCBmbGFnLiBJdCBtb2RpZmllcyBgc3RtbWFjX3NldF9nc29fdHlwZXNgIHRvIGNoZWNrIGZvciBgTkVUSUZfRl9UU09gLCBgTkVUSUZfRl9UU082YCwgYW5kIGBORVRJRl9GX0dTT19VRFBfTDRgIGZlYXR1cmVzIHRvIGFjY3VyYXRlbHkgc2V0IHRoZSBgZ3NvX2VuYWJsZWRfdHlwZXNgIGJpdG1hc2suIFRoZXNlIGNoYW5nZXMgb25seSBhZmZlY3QgY29udHJvbCBmbG93IGFuZCBiaXRtYXNrIGNhbGN1bGF0aW9ucyBmb3IgbmV0d29yayBkZXZpY2UgZmVhdHVyZXMuIFRoZXJlIGFyZSBubyBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBubyBkYXRhIHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIGFuZCBubyBjb21wbGV4IHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMgY291bGQgYmUgcmVhZC4gVGhlcmVmb3JlLCB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOLiBTdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgYnVnIGRldGVjdG9ycyBhcmUgc3VmZmljaWVudCB0byBjYXRjaCBhbnkgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzIGlzc3Vlcy4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDhUMTg6MTM6NDcuOTI4NTExMTU1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA1MjQwMTY4OTQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNUTU1BQ19FVEhcIixcbiAgICBcIlNUTU1BQ19QQ0lcIixcbiAgICBcIlNUTU1BQ19QTEFURk9STVwiLFxuICAgIFwiRFdNQUNfR0VORVJJQ1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInN0bW1hY19zZXRfZmVhdHVyZXNcIixcbiAgICBcInN0bW1hY19kdnJfcHJvYmVcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHVwZGF0ZXMgdGhlIGxvZ2ljIGZvciBzZXR0aW5nIEdTTyB0eXBlcyBpbiB0aGUgc3RtbWFjIGRyaXZlciBiYXNlZCBvbiBgbmV0ZGV2X2ZlYXR1cmVzX3RgIGluc3RlYWQgb2YgYSBib29sZWFuIGB0c29gIGZsYWcuIEl0IG1vZGlmaWVzIGBzdG1tYWNfc2V0X2dzb190eXBlc2AgdG8gY2hlY2sgZm9yIGBORVRJRl9GX1RTT2AsIGBORVRJRl9GX1RTTzZgLCBhbmQgYE5FVElGX0ZfR1NPX1VEUF9MNGAgZmVhdHVyZXMgdG8gYWNjdXJhdGVseSBzZXQgdGhlIGBnc29fZW5hYmxlZF90eXBlc2AgYml0bWFzay4gVGhlc2UgY2hhbmdlcyBvbmx5IGFmZmVjdCBjb250cm9sIGZsb3cgYW5kIGJpdG1hc2sgY2FsY3VsYXRpb25zIGZvciBuZXR3b3JrIGRldmljZSBmZWF0dXJlcy4gVGhlcmUgYXJlIG5vIG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIG5vIGRhdGEgc3RydWN0dXJlcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgYW5kIG5vIGNvbXBsZXggc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcyBjb3VsZCBiZSByZWFkLiBUaGVyZWZvcmUsIHRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4uIFN0YW5kYXJkIEtBU0FOIGFuZCBvdGhlciBidWcgZGV0ZWN0b3JzIGFyZSBzdWZmaWNpZW50IHRvIGNhdGNoIGFueSBwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24gb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3MgaXNzdWVzLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2dpYyBmb3Igc2V0dGluZyBHU08gdHlwZXMgYmFzZWQgb24gbmV0ZGV2IGZlYXR1cmVzIGluIHRoZSBzdG1tYWMgZHJpdmVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBjb3JlIGV0aGVybmV0IGRyaXZlciB0aGF0IGlzIHJlYWNoYWJsZSBpbiBRRU1VIHZpYSB0aGUgRGVzaWduV2FyZSBNQUMgZW11bGF0aW9uIChzbnBzLGR3bWFjKSBvciBieSBpbmplY3RpbmcgYSBQQ0kgZGV2aWNlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQxODoxMzo0Ny45Mjg1MTY1MDVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMDQxMTQzMjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA3ZDJhN2RhMDE4ZmQ1MTEwZjIwYTllZjE2NDliZjYyNWE4NjEyZjM4XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgQXVnIDggMTg6MTM6NDYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcXG5pbmRleCBhNzFmMGRmMjYzNzg1Li4zZDMwNDJhZmNkZjQ5IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXFxuQEAgLTQzNzEsMTYgKzQzNzEsMTggQEAgc3RhdGljIHZvaWQgc3RtbWFjX2ZsdXNoX3R4X2Rlc2NyaXB0b3JzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgaW50IHF1ZXVlKVxcbiBcXHRzdG1tYWNfc2V0X3F1ZXVlX3R4X3RhaWxfcHRyKHByaXYsIHR4X3EsIHF1ZXVlLCB0eF9xLVxcdTAwM2VjdXJfdHgpO1xcbiB9XFxuIFxcbi1zdGF0aWMgdm9pZCBzdG1tYWNfc2V0X2dzb190eXBlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIGJvb2wgdHNvKVxcbitzdGF0aWMgdm9pZCBzdG1tYWNfc2V0X2dzb190eXBlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuK1xcdFxcdFxcdFxcdCBuZXRkZXZfZmVhdHVyZXNfdCBmZWF0dXJlcylcXG4ge1xcbi1cXHRpZiAoIXRzbykge1xcbi1cXHRcXHRwcml2LVxcdTAwM2Vnc29fZW5hYmxlZF90eXBlcyA9IDA7XFxuLVxcdH0gZWxzZSB7XFxuLVxcdFxcdC8qIE1hbmFnZSBvdmVyc2l6ZWQgVENQIGZyYW1lcyBmb3IgR01BQzQgZGV2aWNlICovXFxuLVxcdFxcdHByaXYtXFx1MDAzZWdzb19lbmFibGVkX3R5cGVzID0gU0tCX0dTT19UQ1BWNCB8IFNLQl9HU09fVENQVjY7XFxuLVxcdFxcdGlmIChwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2Vjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9HTUFDNClcXG4tXFx0XFx0XFx0cHJpdi1cXHUwMDNlZ3NvX2VuYWJsZWRfdHlwZXMgfD0gU0tCX0dTT19VRFBfTDQ7XFxuLVxcdH1cXG4rXFx0cHJpdi1cXHUwMDNlZ3NvX2VuYWJsZWRfdHlwZXMgPSAwO1xcbitcXG4rXFx0aWYgKGZlYXR1cmVzIFxcdTAwMjYgTkVUSUZfRl9UU08pXFxuK1xcdFxcdHByaXYtXFx1MDAzZWdzb19lbmFibGVkX3R5cGVzIHw9IFNLQl9HU09fVENQVjQ7XFxuK1xcdGlmIChmZWF0dXJlcyBcXHUwMDI2IE5FVElGX0ZfVFNPNilcXG4rXFx0XFx0cHJpdi1cXHUwMDNlZ3NvX2VuYWJsZWRfdHlwZXMgfD0gU0tCX0dTT19UQ1BWNjtcXG4rXFx0LyogTWFuYWdlIG92ZXJzaXplZCBVRFAgZnJhbWVzIGZvciBHTUFDNCBkZXZpY2VzICovXFxuK1xcdGlmIChmZWF0dXJlcyBcXHUwMDI2IE5FVElGX0ZfR1NPX1VEUF9MNClcXG4rXFx0XFx0cHJpdi1cXHUwMDNlZ3NvX2VuYWJsZWRfdHlwZXMgfD0gU0tCX0dTT19VRFBfTDQ7XFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkIHN0bW1hY19zZXRfZ3NvX2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbkBAIC00NDE2LDcgKzQ0MTgsNyBAQCBzdGF0aWMgdm9pZCBzdG1tYWNfc2V0X2dzb19mZWF0dXJlcyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG4gXFx0aWYgKHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZWNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX0dNQUM0KVxcbiBcXHRcXHRuZGV2LVxcdTAwM2Vod19mZWF0dXJlcyB8PSBORVRJRl9GX0dTT19VRFBfTDQ7XFxuIFxcbi1cXHRzdG1tYWNfc2V0X2dzb190eXBlcyhwcml2LCB0cnVlKTtcXG4rXFx0c3RtbWFjX3NldF9nc29fdHlwZXMocHJpdiwgbmRldi1cXHUwMDNlaHdfZmVhdHVyZXMpO1xcbiBcXG4gXFx0ZGV2X2luZm8ocHJpdi1cXHUwMDNlZGV2aWNlLCBcXFwiVFNPIGZlYXR1cmUgZW5hYmxlZFxcXFxuXFxcIik7XFxuIH1cXG5AQCAtNjE5OCw3ICs2MjAwLDcgQEAgc3RhdGljIGludCBzdG1tYWNfc2V0X2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuIFxcdFxcdFxcdHN0bW1hY19lbmFibGVfc3BoKHByaXYsIHByaXYtXFx1MDAzZWlvYWRkciwgc3BoX2VuLCBjaGFuKTtcXG4gXFx0fVxcbiBcXG4tXFx0c3RtbWFjX3NldF9nc29fdHlwZXMocHJpdiwgZmVhdHVyZXMgXFx1MDAyNiBORVRJRl9GX1RTTyk7XFxuK1xcdHN0bW1hY19zZXRfZ3NvX3R5cGVzKHByaXYsIGZlYXR1cmVzKTtcXG4gXFxuIFxcdGlmIChmZWF0dXJlcyBcXHUwMDI2IE5FVElGX0ZfSFdfVkxBTl9DVEFHX1JYKVxcbiBcXHRcXHRwcml2LVxcdTAwM2Vody1cXHUwMDNlaHdfdmxhbl9lbiA9IHRydWU7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDE4OjEzOjQ5LjIzMzQ1MDg2NVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjkzODQ1MDkxNzk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNUTU1BQ19FVEhcIixcbiAgICBcIlNUTU1BQ19QQ0lcIixcbiAgICBcIlNUTU1BQ19QTEFURk9STVwiLFxuICAgIFwiRFdNQUNfR0VORVJJQ1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInN0bW1hY19zZXRfZmVhdHVyZXNcIixcbiAgICBcInN0bW1hY19kdnJfcHJvYmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9naWMgZm9yIHNldHRpbmcgR1NPIHR5cGVzIGJhc2VkIG9uIG5ldGRldiBmZWF0dXJlcyBpbiB0aGUgc3RtbWFjIGRyaXZlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgY29yZSBldGhlcm5ldCBkcml2ZXIgdGhhdCBpcyByZWFjaGFibGUgaW4gUUVNVSB2aWEgdGhlIERlc2lnbldhcmUgTUFDIGVtdWxhdGlvbiAoc25wcyxkd21hYykgb3IgYnkgaW5qZWN0aW5nIGEgUENJIGRldmljZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgN2QyYTdkYTAxOGZkNTExMGYyMGE5ZWYxNjQ5YmY2MjVhODYxMmYzOFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgQXVnIDggMTg6MTM6NDYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuaW5kZXggYTcxZjBkZjI2Mzc4NS4uM2QzMDQyYWZjZGY0OSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbkBAIC00MzcxLDE2ICs0MzcxLDE4IEBAIHN0YXRpYyB2b2lkIHN0bW1hY19mbHVzaF90eF9kZXNjcmlwdG9ycyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIGludCBxdWV1ZSlcbiBcdHN0bW1hY19zZXRfcXVldWVfdHhfdGFpbF9wdHIocHJpdiwgdHhfcSwgcXVldWUsIHR4X3EtXHUwMDNlY3VyX3R4KTtcbiB9XG4gXG4tc3RhdGljIHZvaWQgc3RtbWFjX3NldF9nc29fdHlwZXMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBib29sIHRzbylcbitzdGF0aWMgdm9pZCBzdG1tYWNfc2V0X2dzb190eXBlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4rXHRcdFx0XHQgbmV0ZGV2X2ZlYXR1cmVzX3QgZmVhdHVyZXMpXG4ge1xuLVx0aWYgKCF0c28pIHtcbi1cdFx0cHJpdi1cdTAwM2Vnc29fZW5hYmxlZF90eXBlcyA9IDA7XG4tXHR9IGVsc2Uge1xuLVx0XHQvKiBNYW5hZ2Ugb3ZlcnNpemVkIFRDUCBmcmFtZXMgZm9yIEdNQUM0IGRldmljZSAqL1xuLVx0XHRwcml2LVx1MDAzZWdzb19lbmFibGVkX3R5cGVzID0gU0tCX0dTT19UQ1BWNCB8IFNLQl9HU09fVENQVjY7XG4tXHRcdGlmIChwcml2LVx1MDAzZXBsYXQtXHUwMDNlY29yZV90eXBlID09IERXTUFDX0NPUkVfR01BQzQpXG4tXHRcdFx0cHJpdi1cdTAwM2Vnc29fZW5hYmxlZF90eXBlcyB8PSBTS0JfR1NPX1VEUF9MNDtcbi1cdH1cbitcdHByaXYtXHUwMDNlZ3NvX2VuYWJsZWRfdHlwZXMgPSAwO1xuK1xuK1x0aWYgKGZlYXR1cmVzIFx1MDAyNiBORVRJRl9GX1RTTylcbitcdFx0cHJpdi1cdTAwM2Vnc29fZW5hYmxlZF90eXBlcyB8PSBTS0JfR1NPX1RDUFY0O1xuK1x0aWYgKGZlYXR1cmVzIFx1MDAyNiBORVRJRl9GX1RTTzYpXG4rXHRcdHByaXYtXHUwMDNlZ3NvX2VuYWJsZWRfdHlwZXMgfD0gU0tCX0dTT19UQ1BWNjtcbitcdC8qIE1hbmFnZSBvdmVyc2l6ZWQgVURQIGZyYW1lcyBmb3IgR01BQzQgZGV2aWNlcyAqL1xuK1x0aWYgKGZlYXR1cmVzIFx1MDAyNiBORVRJRl9GX0dTT19VRFBfTDQpXG4rXHRcdHByaXYtXHUwMDNlZ3NvX2VuYWJsZWRfdHlwZXMgfD0gU0tCX0dTT19VRFBfTDQ7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIHN0bW1hY19zZXRfZ3NvX2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuQEAgLTQ0MTYsNyArNDQxOCw3IEBAIHN0YXRpYyB2b2lkIHN0bW1hY19zZXRfZ3NvX2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuIFx0aWYgKHByaXYtXHUwMDNlcGxhdC1cdTAwM2Vjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9HTUFDNClcbiBcdFx0bmRldi1cdTAwM2Vod19mZWF0dXJlcyB8PSBORVRJRl9GX0dTT19VRFBfTDQ7XG4gXG4tXHRzdG1tYWNfc2V0X2dzb190eXBlcyhwcml2LCB0cnVlKTtcbitcdHN0bW1hY19zZXRfZ3NvX3R5cGVzKHByaXYsIG5kZXYtXHUwMDNlaHdfZmVhdHVyZXMpO1xuIFxuIFx0ZGV2X2luZm8ocHJpdi1cdTAwM2VkZXZpY2UsIFwiVFNPIGZlYXR1cmUgZW5hYmxlZFxcblwiKTtcbiB9XG5AQCAtNjE5OCw3ICs2MjAwLDcgQEAgc3RhdGljIGludCBzdG1tYWNfc2V0X2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG4gXHRcdFx0c3RtbWFjX2VuYWJsZV9zcGgocHJpdiwgcHJpdi1cdTAwM2Vpb2FkZHIsIHNwaF9lbiwgY2hhbik7XG4gXHR9XG4gXG4tXHRzdG1tYWNfc2V0X2dzb190eXBlcyhwcml2LCBmZWF0dXJlcyBcdTAwMjYgTkVUSUZfRl9UU08pO1xuK1x0c3RtbWFjX3NldF9nc29fdHlwZXMocHJpdiwgZmVhdHVyZXMpO1xuIFxuIFx0aWYgKGZlYXR1cmVzIFx1MDAyNiBORVRJRl9GX0hXX1ZMQU5fQ1RBR19SWClcbiBcdFx0cHJpdi1cdTAwM2Vody1cdTAwM2Vod192bGFuX2VuID0gdHJ1ZTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDE4OjEzOjQ5LjIzMzQ1MjMxNVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExNTM2MDc0MTk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUmVhY2hhYmlsaXR5IG9mIGFuIHN0bW1hYyBEcml2ZXIgUGF0Y2ggaW4gUUVNVSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBzdG1tYWNfbWFpbi5jYCB0aGF0IG1vZGlmaWVzIGBzdG1tYWNfc2V0X2dzb190eXBlc2AuIEl0J3MgYSBzdHJhaWdodGZvcndhcmQgZnVuY3Rpb25hbCBjaGFuZ2UsIHVwZGF0aW5nIHRoZSBHU08gdHlwZSBoYW5kbGluZyBiYXNlZCBvbiBgbmV0ZGV2X2ZlYXR1cmVzX3RgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIGNhbiBJIGV2ZW4gdGVzdCB0aGlzIHBhdGNoIGVmZmVjdGl2ZWx5P1xuXG5GaXJzdCwgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhlIGBzdG1tYWNgIGRyaXZlciwgd2hpY2ggSSBrbm93IGlzIGZvciB0aGUgU3lub3BzeXMgRGVzaWduV2FyZSBNQUMsIGlzIGV2ZW4gcmVhY2hhYmxlIHdpdGhpbiBhIFFFTVUgZW52aXJvbm1lbnQuIEkgbmVlZCB0byBhc2NlcnRhaW4gaWYgUUVNVSBjYW4gZW11bGF0ZSB0aGlzIGhhcmR3YXJlLiBJIHF1aWNrbHkgcmF0dGxlIG9mZiBhIGxpc3Qgb2YgUUVNVSdzIG5ldHdvcmsgZGV2aWNlIGVtdWxhdGlvbnMg4oCTIGBpbXhfZmVjYCwgYGNhZGVuY2VfZ2VtYCwgZXRjLiDigJMgdG8gcmVtaW5kIG15c2VsZiB3aGF0J3MgYXZhaWxhYmxlLiBOb3BlLCBub25lIG9mIHRob3NlIHNlZW0gbGlrZSBhIGRpcmVjdCBtYXRjaCBmb3IgYHN0bW1hY2AuXG5cbkFscmlnaHQsIGlzIGBzdG1tYWNgIGEgUENJIGRldmljZSBvciBhIHBsYXRmb3JtIGRldmljZT8gSSByZW1lbWJlciBpdCBoYXMgUENJIGJpbmRpbmdzIGluIGBzdG1tYWNfcGNpLmNgLCB3aGljaCBnaXZlcyBtZSBhIHBvdGVudGlhbCBhdmVudWUgZm9yIHByb2JpbmcuIEkgc2VhcmNoIGZvciBgc3RtbWFjYCBpbiB0aGUgUUVNVSBjb2RlYmFzZSBhbmQgY29uc2lkZXIgd2hldGhlciBmdXp6aW5nIGl0IHdvdWxkIGJlIGZlYXNpYmxlLiBIb3dldmVyLCBJIHJlY2FsbCB0aGUgZGlzY3Vzc2lvbiBhcm91bmQgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoIGRyaXZlcnMsIG9yIFNtYXJ0TklDIG9yIEdQVSBkcml2ZXJzIHdoaWNoIGFyZSBoYXJkIHRvIGZ1enogYmVjYXVzZSB0aGV5IHVzdWFsbHkgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZS4gVGhpcyBtYWtlcyBtZSByZWFsaXplIHRoYXQgYHN0bW1hY2AgbWlnaHQgZmFsbCBpbnRvIHRoYXQgY2F0ZWdvcnkgYW5kIG5vdCBiZSBkaXJlY3RseSBlbXVsYXRhYmxlLlxuXG5CdXQgd2FpdCwgYHN0bW1hY2AgaXMgc3BlY2lmaWNhbGx5IGZvciBTVE1pY3JvZWxlY3Ryb25pY3MgRXRoZXJuZXQgTUFDcywgYW5kIEknbSBhd2FyZSBpdCdzIHVzZWQgaW4gbG90cyBvZiBBUk0gU29DcyDigJMgUm9ja2NoaXAsIEFsbHdpbm5lciwgQW1sb2dpYywgYW5kIHNvIG9uLiBJdCdzIHByaW1hcmlseSBhIHBsYXRmb3JtIGRldmljZSwgYnV0IHRoZSBQQ0kgd3JhcHBlciBjb3VsZCBiZSBrZXkuIENhbiBJIGZ1enogaXQgd2l0aG91dCBwaHlzaWNhbCBoYXJkd2FyZT8gUHJvYmFibHkgbm90LlxuXG5TbywgbGV0IG1lIGJhY2sgdXAgYSBzdGVwLiBDYW4gUUVNVSAqYWN0dWFsbHkqIGVtdWxhdGUgdGhpcyBhdCBhbGw/IEkgcmVtZW1iZXIgcmVhZGluZyBzb21ldGhpbmcgYWJvdXQgRGVzaWduV2FyZSBNQUMgc3VwcG9ydC4uLiBBaGEhIFFFTVUgaGFzIGBody9uZXQvZGVzaWdud2FyZS5jYC4gSXMgdGhhdCBpdD8gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGBkZXNpZ253YXJlLmNgIGlzIHRoZSBlbXVsYXRpb24gZm9yIGBzdG1tYWNgLiBJIGNoZWNrIHRoZSBMaW51eCBrZXJuZWwgc291cmNlIGFuZCBjb25maXJtIHRoYXQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2AgaXMgaW5kZWVkIHRoZSBkcml2ZXIgZm9yIHRoZSBTeW5vcHN5cyBEZXNpZ25XYXJlIE1BQywgd2hpY2ggaXMgbGlrZWx5IHdoYXQgdGhlIFFFTVUgY29kZSBpcyBlbXVsYXRpbmcuIEkgbmVlZCB0byBtYWtlIHN1cmUgYnV0IEknbGwgc3RhcnQgYnkgY2hlY2tpbmcgYHN0bW1hY19wY2kuY2AgYW5kIGFueSBgZHdtYWMtKi5jYCBmaWxlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY1NiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjczNiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDE4OjE0OjAwLjc2OTUyOTExWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1NDM2NTA3LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXNpZ253YXJlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMTg6MTQ6MDAuODI0OTc0MzU2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMwODM5MzUxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcml6ZWQgdGhvdWdodCBwcm9jZXNzLCBwcmVzZW50ZWQgYXMgaWYgSSdtIHRoaW5raW5nIGl0OlxuXG4qKkRpZ2dpbmcgaW50byB0aGUgYHN0bW1hY2AgRHJpdmVyIOKAkyBMb29raW5nIGZvciBcImR3bWFjXCIqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGRpdmUgaW4uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHNvbWV0aGluZyBhYm91dCB0aGlzIGBzdG1tYWNgIGRyaXZlci4gRmlyc3Qgc3RlcCwgbGV0J3MganVzdCBkbyBhIHF1aWNrIGtleXdvcmQgc2VhcmNoLiBJJ20gZ29pbmcgdG8gbG9vayBmb3IgXCJkd21hY1wiLiBJdCdzIGEgcHJldHR5IGNvbW1vbiBuYW1pbmcgY29udmVudGlvbiwgYW5kIGl0J3MgbGlrZWx5IGNvbm5lY3RlZCB0byB0aGUgaGFyZHdhcmUuIFNlZWluZyBpdCB1c2VkIGluIHRoZSBjb2RlIHNob3VsZCBnaXZlIG1lIHNvbWUgY29udGV4dCwgZWl0aGVyIGRlZmluaW5nIHdoYXQgaXQgZG9lcywgb3Igd2hlcmUgaXQgaXMgdXNlZC4gSSBleHBlY3QgaXQgaXMgbGlrZWx5IGFuIGFic3RyYWN0aW9uIGxheWVyLCBvciB1c2VkIGZvciB0aGUgaGFyZHdhcmUgcmVnaXN0ZXJzLiBMZXQncyBzZWUgd2hhdCB0aGF0IHVuY292ZXJzISBJJ20gaG9waW5nIHRoaXMnbGwgcXVpY2tseSBwb2ludCBtZSB0byB0aGUgcmVsZXZhbnQgc2VjdGlvbnMgb2YgdGhlIGNvZGUgSSBuZWVkIHRvIGV4cGxvcmUgZnVydGhlci5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzk5NiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDE4OjE0OjA0LjEzMzM3MDI1M1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTUzMzE0NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkd21hY1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA1NTM1IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTkwPWNvbmZpZyBEV01BQ19JUFE4MDZYXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEwMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjEwMzpcXHQgIFNlbGVjdCB0aGUgUUNPTV9TT0NJTkZPIGNvbmZpZyBmbGFnIHRvIGVuYWJsZSBzcGVjaWZpYyBkd21hY1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTA0LVxcdCAgZml4dXAgYmFzZWQgb24gdGhlIGlwcTgwNnggU29DIHJldmlzaW9uLlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0xMjI9Y29uZmlnIERXTUFDX01FU09OXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoxMjM6XFx0dHJpc3RhdGUgXFxcIkFtbG9naWMgTWVzb24gZHdtYWMgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEyNC1cXHRkZWZhdWx0IEFSQ0hfTUVTT05cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MTMzPWNvbmZpZyBEV01BQ19OVVZPVE9OXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoxMzQ6XFx0dHJpc3RhdGUgXFxcIk51dm90b24gTUEzNSBkd21hYyBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTM1LVxcdGRlZmF1bHQgQVJDSF9NQTM1XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE0MS1cXHQgIFRoaXMgc2VsZWN0cyB0aGUgTnV2b3RvbiBNQTM1IHNlcmllcyBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoxNDI6XFx0ICBmb3IgdGhlIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGUgbnV2b3Rvbi1kd21hYyBkcml2ZXIgaXNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE0My1cXHQgIHVzZWQgZm9yIE1BMzUgc2VyaWVzIFNvQ3MuXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTE2OD1jb25maWcgRFdNQUNfUk9DS0NISVBcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjE2OTpcXHR0cmlzdGF0ZSBcXFwiUm9ja2NoaXAgZHdtYWMgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE3MC1cXHRkZWZhdWx0IEFSQ0hfUk9DS0NISVBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MTc5PWNvbmZpZyBEV01BQ19SWk4xXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoxODA6XFx0dHJpc3RhdGUgXFxcIlJlbmVzYXMgUlovTjEgZHdtYWMgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE4MS1cXHRkZWZhdWx0IEFSQ0hfUlpOMVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0yMDM9Y29uZmlnIERXTUFDX1NPQ0ZQR0FcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjIwNDpcXHR0cmlzdGF0ZSBcXFwiU09DRlBHQSBkd21hYyBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjA1LVxcdGRlZmF1bHQgQVJDSF9JTlRFTF9TT0NGUEdBXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTIxOD1jb25maWcgRFdNQUNfU09QSEdPXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyMTk6XFx0dHJpc3RhdGUgXFxcIlNvcGhnbyBkd21hYyBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjIwLVxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgKEFSQ0hfU09QSEdPIHx8IENPTVBJTEVfVEVTVClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MjI5PWNvbmZpZyBEV01BQ19TUEFDRU1JVFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MjMwOlxcdHRyaXN0YXRlIFxcXCJTcGFjZW1pdCBkd21hYyBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjMxLVxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgKEFSQ0hfU1BBQ0VNSVQgfHwgQ09NUElMRV9URVNUKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0yNDE9Y29uZmlnIERXTUFDX1NUQVJGSVZFXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyNDI6XFx0dHJpc3RhdGUgXFxcIlN0YXJGaXZlIGR3bWFjIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yNDMtXFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoQVJDSF9TVEFSRklWRSB8fCBDT01QSUxFX1RFU1QpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTMxMj1jb25maWcgRFdNQUNfVEhFQURcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjMxMzpcXHR0cmlzdGF0ZSBcXFwiVC1IRUFEIGR3bWFjIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zMTQtXFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoQVJDSF9USEVBRCB8fCBDT01QSUxFX1RFU1QpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTMzND1jb25maWcgRFdNQUNfSU5URUxfUExBVFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzM1OlxcdHRyaXN0YXRlIFxcXCJJbnRlbCBkd21hYyBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzM2LVxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgQ09NTU9OX0NMS1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU9Mz1zdG1tYWMtb2Jqczo9IHN0bW1hY19tYWluLm8gc3RtbWFjX2V0aHRvb2wubyBzdG1tYWNfbWRpby5vIHJpbmdfbW9kZS5vXFx0XFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjQ6XFx0ICAgICAgY2hhaW5fbW9kZS5vIGR3bWFjX2xpYi5vIGR3bWFjMTAwMF9jb3JlLm8gZHdtYWMxMDAwX2RtYS5vXFx0XFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjU6XFx0ICAgICAgZHdtYWMxMDBfY29yZS5vIGR3bWFjMTAwX2RtYS5vIGVuaF9kZXNjLm8gbm9ybV9kZXNjLm9cXHRcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6NjpcXHQgICAgICBtbWNfY29yZS5vIHN0bW1hY19od3RzdGFtcC5vIHN0bW1hY19wdHAubyBkd21hYzRfZGVzY3Mub1xcdFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTo3OlxcdCAgICAgIGR3bWFjNF9kbWEubyBkd21hYzRfbGliLm8gZHdtYWM0X2NvcmUubyBkd21hYzUubyBod2lmLm8gXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlLTgtXFx0ICAgICAgc3RtbWFjX3RjLm8gZHd4Z21hYzJfY29yZS5vIGR3eGdtYWMyX2RtYS5vIGR3eGdtYWMyX2Rlc2NzLm8gXFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU9MTU9b2JqLSQoQ09ORklHX1NUTU1BQ19QTEFURk9STSlcXHQrPSBzdG1tYWMtcGxhdGZvcm0ub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjE2Om9iai0kKENPTkZJR19EV01BQ19BTkFSSU9OKVxcdCs9IGR3bWFjLWFuYXJpb24ub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjE3Om9iai0kKENPTkZJR19EV01BQ19FSUM3NzAwKVxcdCs9IGR3bWFjLWVpYzc3MDAub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjE4Om9iai0kKENPTkZJR19EV01BQ19JTkdFTklDKVxcdCs9IGR3bWFjLWluZ2VuaWMub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjE5Om9iai0kKENPTkZJR19EV01BQ19JUFE4MDZYKVxcdCs9IGR3bWFjLWlwcTgwNngub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjIwOm9iai0kKENPTkZJR19EV01BQ19MUEMxOFhYKVxcdCs9IGR3bWFjLWxwYzE4eHgub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjIxOm9iai0kKENPTkZJR19EV01BQ19NRURJQVRFSylcXHQrPSBkd21hYy1tZWRpYXRlay5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6MjI6b2JqLSQoQ09ORklHX0RXTUFDX01FU09OKVxcdCs9IGR3bWFjLW1lc29uLm8gZHdtYWMtbWVzb244Yi5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6MjM6b2JqLSQoQ09ORklHX0RXTUFDX05VVk9UT04pXFx0Kz0gZHdtYWMtbnV2b3Rvbi5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6MjQ6b2JqLSQoQ09ORklHX0RXTUFDX1FDT01fRVRIUU9TKVxcdCs9IGR3bWFjLXFjb20tZXRocW9zLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZToyNTpvYmotJChDT05GSUdfRFdNQUNfUkVORVNBU19HQkVUSCkgKz0gZHdtYWMtcmVuZXNhcy1nYmV0aC5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6MjY6b2JqLSQoQ09ORklHX0RXTUFDX1JPQ0tDSElQKVxcdCs9IGR3bWFjLXJrLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZToyNzpvYmotJChDT05GSUdfRFdNQUNfUlpOMSlcXHQrPSBkd21hYy1yem4xLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZToyODpvYmotJChDT05GSUdfRFdNQUNfUzMyKVxcdFxcdCs9IGR3bWFjLXMzMi5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6Mjk6b2JqLSQoQ09ORklHX0RXTUFDX1NPQ0ZQR0EpXFx0Kz0gZHdtYWMtYWx0ci1zb2NmcGdhLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTozMDpvYmotJChDT05GSUdfRFdNQUNfU09QSEdPKVxcdCs9IGR3bWFjLXNvcGhnby5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6MzE6b2JqLSQoQ09ORklHX0RXTUFDX1NQQUNFTUlUKVxcdCs9IGR3bWFjLXNwYWNlbWl0Lm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTozMjpvYmotJChDT05GSUdfRFdNQUNfU1RBUkZJVkUpXFx0Kz0gZHdtYWMtc3RhcmZpdmUub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjMzOm9iai0kKENPTkZJR19EV01BQ19TVEkpXFx0XFx0Kz0gZHdtYWMtc3RpLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTozNDpvYmotJChDT05GSUdfRFdNQUNfU1RNMzIpXFx0Kz0gZHdtYWMtc3RtMzIub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjM1Om9iai0kKENPTkZJR19EV01BQ19TVU5YSSlcXHQrPSBkd21hYy1zdW54aS5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6MzY6b2JqLSQoQ09ORklHX0RXTUFDX1NVTjhJKVxcdCs9IGR3bWFjLXN1bjhpLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTozNzpvYmotJChDT05GSUdfRFdNQUNfU1VONTVJKVxcdCs9IGR3bWFjLXN1bjU1aS5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6Mzg6b2JqLSQoQ09ORklHX0RXTUFDX1RIRUFEKVxcdCs9IGR3bWFjLXRoZWFkLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTozOTpvYmotJChDT05GSUdfRFdNQUNfRFdDX1FPU19FVEgpXFx0Kz0gZHdtYWMtZHdjLXFvcy1ldGgub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjQwOm9iai0kKENPTkZJR19EV01BQ19JTlRFTF9QTEFUKVxcdCs9IGR3bWFjLWludGVsLXBsYXQub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjQxOm9iai0kKENPTkZJR19EV01BQ19MT09OR1NPTjEpXFx0Kz0gZHdtYWMtbG9vbmdzb24xLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTo0MjpvYmotJChDT05GSUdfRFdNQUNfR0VORVJJQylcXHQrPSBkd21hYy1nZW5lcmljLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTo0MzpvYmotJChDT05GSUdfRFdNQUNfSU1YOClcXHQrPSBkd21hYy1pbXgub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjQ0Om9iai0kKENPTkZJR19EV01BQ19URUdSQSlcXHQrPSBkd21hYy10ZWdyYS5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6NDU6b2JqLSQoQ09ORklHX0RXTUFDX1ZJU0NPTlRJKVxcdCs9IGR3bWFjLXZpc2NvbnRpLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZS00Ni1zdG1tYWMtcGxhdGZvcm0tb2Jqczo9IHN0bW1hY19wbGF0Zm9ybS5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6NDc6ZHdtYWMtYWx0ci1zb2NmcGdhLW9ianMgOj0gZHdtYWMtc29jZnBnYS5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGUtNDgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZT01MD1vYmotJChDT05GSUdfU1RNTUFDX1BDSSlcXHQrPSBzdG1tYWMtcGNpLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTo1MTpvYmotJChDT05GSUdfRFdNQUNfSU5URUwpXFx0Kz0gZHdtYWMtaW50ZWwub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjUyOm9iai0kKENPTkZJR19EV01BQ19MT09OR1NPTilcXHQrPSBkd21hYy1sb29uZ3Nvbi5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6NTM6b2JqLSQoQ09ORklHX0RXTUFDX01PVE9SQ09NTSlcXHQrPSBkd21hYy1tb3RvcmNvbW0ub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlLTU0LXN0bW1hYy1wY2ktb2Jqczo9IHN0bW1hY19wY2kub1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtNDgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6NDk6c3RhdGljIGlubGluZSBib29sIGR3bWFjX2lzX3htYWMoZW51bSBkd21hY19jb3JlX3R5cGUgY29yZV90eXBlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTUwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oPTY0NT1zdHJ1Y3Qgc3RtbWFjX3J4X3JvdXRpbmcge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtNjQ5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjY1MDppbnQgZHdtYWMxMDBfc2V0dXAoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDo2NTE6aW50IGR3bWFjMTAwMF9zZXR1cChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjY1MjppbnQgZHdtYWM0X3NldHVwKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtNjUzLWludCBkd3hnbWFjMl9zZXR1cChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg9NjYwPXZvaWQgc3RtbWFjX3NldF9tYWModm9pZCBfX2lvbWVtICppb2FkZHIsIGJvb2wgZW5hYmxlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC02NjEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6NjYyOnZvaWQgc3RtbWFjX2R3bWFjNF9zZXRfbWFjX2FkZHIodm9pZCBfX2lvbWVtICppb2FkZHIsIGNvbnN0IHU4IGFkZHJbNl0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtNjYzLVxcdFxcdFxcdFxcdHVuc2lnbmVkIGludCBoaWdoLCB1bnNpZ25lZCBpbnQgbG93KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDo2NjQ6dm9pZCBzdG1tYWNfZHdtYWM0X2dldF9tYWNfYWRkcih2b2lkIF9faW9tZW0gKmlvYWRkciwgdW5zaWduZWQgY2hhciAqYWRkcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC02NjUtXFx0XFx0XFx0XFx0dW5zaWduZWQgaW50IGhpZ2gsIHVuc2lnbmVkIGludCBsb3cpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjY2Njp2b2lkIHN0bW1hY19kd21hYzRfc2V0X21hYyh2b2lkIF9faW9tZW0gKmlvYWRkciwgYm9vbCBlbmFibGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTY2Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDo2Njg6dm9pZCBkd21hY19kbWFfZmx1c2hfdHhfZmlmbyh2b2lkIF9faW9tZW0gKmlvYWRkcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtNjY5LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jPTYzPWFuYXJpb25fY29uZmlnX2R0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmMtOTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jOjkzOnN0YXRpYyBpbnQgYW5hcmlvbl9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYy05NC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmMtMTE4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYzoxMTk6c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgYW5hcmlvbl9kd21hY19tYXRjaFtdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYy0xMjAtXFx0eyAuY29tcGF0aWJsZSA9IFxcXCJhZGFwdHJ1bSxhbmFyaW9uLWdtYWNcXFwiIH0sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmMtMTIyLX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jOjEyMzpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBhbmFyaW9uX2R3bWFjX21hdGNoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmMtMTI0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYzoxMjU6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgYW5hcmlvbl9kd21hY19kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jOjEyNjpcXHQucHJvYmUgID0gYW5hcmlvbl9kd21hY19wcm9iZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmMtMTI3LVxcdC5kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jOjEyODpcXHRcXHQubmFtZSAgICAgICAgICAgPSBcXFwiYW5hcmlvbi1kd21hY1xcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jLTEyOS1cXHRcXHQucG1cXHRcXHQ9IFxcdTAwMjZzdG1tYWNfcGx0ZnJfcG1fb3BzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYzoxMzA6XFx0XFx0Lm9mX21hdGNoX3RhYmxlID0gYW5hcmlvbl9kd21hY19tYXRjaCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmMtMTMxLVxcdH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jLTEzMi19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYzoxMzM6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihhbmFyaW9uX2R3bWFjX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jLTEzNC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMjQtI2luY2x1ZGUgXFxcInN0bW1hY19wbGF0Zm9ybS5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6MjU6I2luY2x1ZGUgXFxcImR3bWFjNC5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMjYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYz0yNz1zdHJ1Y3QgdGVncmFfZXFvcyB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTM1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6MzY6c3RhdGljIGludCBkd2NfZXRoX2R3bWFjX2NvbmZpZ19kdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMzctXFx0XFx0XFx0XFx0ICAgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM9MjUyPXN0YXRpYyB2b2lkIHRlZ3JhX2Vxb3NfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTI1OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjI2MDpzdHJ1Y3QgZHdjX2V0aF9kd21hY19kYXRhIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTI2MS1cXHRpbnQgKCpwcm9iZSkoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMjY3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6MjY4OnN0YXRpYyBjb25zdCBzdHJ1Y3QgZHdjX2V0aF9kd21hY19kYXRhIGR3Y19xb3NfZGF0YSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTI2OS1cXHQucHJvYmUgPSBkd2NfcW9zX3Byb2JlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0yNzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzoyNzM6c3RhdGljIGNvbnN0IHN0cnVjdCBkd2NfZXRoX2R3bWFjX2RhdGEgdGVncmFfZXFvc19kYXRhID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMjc0LVxcdC5wcm9iZSA9IHRlZ3JhX2Vxb3NfcHJvYmUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTI3OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjI3OTpzdGF0aWMgY29uc3Qgc3RydWN0IGR3Y19ldGhfZHdtYWNfZGF0YSBmc2RfZXFvc19kYXRhID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMjgwLVxcdC5zdG1tYWNfY2xrX25hbWUgPSBcXFwic2xhdmVfYnVzXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMjgyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6MjgzOnN0YXRpYyBpbnQgZHdjX2V0aF9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMjg0LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjI4NTpcXHRjb25zdCBzdHJ1Y3QgZHdjX2V0aF9kd21hY19kYXRhICpkYXRhO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMjg2LVxcdHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTMyNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjMyNjpcXHRyZXQgPSBkd2NfZXRoX2R3bWFjX2NvbmZpZ19kdChwZGV2LCBwbGF0X2RhdCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0zMjctXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMzQyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6MzQzOnN0YXRpYyB2b2lkIGR3Y19ldGhfZHdtYWNfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0zNDQte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6MzQ1OlxcdGNvbnN0IHN0cnVjdCBkd2NfZXRoX2R3bWFjX2RhdGEgKmRhdGEgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0zNDYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTM1Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjM1MzpzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBkd2NfZXRoX2R3bWFjX21hdGNoW10gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0zNTQtXFx0eyAuY29tcGF0aWJsZSA9IFxcXCJzbnBzLGR3Yy1xb3MtZXRoZXJuZXQtNC4xMFxcXCIsIC5kYXRhID0gXFx1MDAyNmR3Y19xb3NfZGF0YSB9LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0zNTgtfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjM1OTpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBkd2NfZXRoX2R3bWFjX21hdGNoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTM2MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjM2MTpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBkd2NfZXRoX2R3bWFjX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjM2MjpcXHQucHJvYmUgID0gZHdjX2V0aF9kd21hY19wcm9iZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjM2MzpcXHQucmVtb3ZlID0gZHdjX2V0aF9kd21hY19yZW1vdmUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0zNjQtXFx0LmRyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjM2NTpcXHRcXHQubmFtZSAgICAgICAgICAgPSBcXFwiZHdjLWV0aC1kd21hY1xcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0zNjYtXFx0XFx0LnBtICAgICAgICAgICAgID0gXFx1MDAyNnN0bW1hY19wbHRmcl9wbV9vcHMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzozNjc6XFx0XFx0Lm9mX21hdGNoX3RhYmxlID0gZHdjX2V0aF9kd21hY19tYXRjaCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTM2OC1cXHR9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMzY5LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzozNzA6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihkd2NfZXRoX2R3bWFjX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0zNzEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmM9NTk9c3RhdGljIGludCBlaWM3NzAwX2Nsa3NfY29uZmlnKHZvaWQgKnByaXYsIGJvb2wgZW5hYmxlZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYy03Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmM6NzM6c3RhdGljIGludCBlaWM3NzAwX2R3bWFjX2luaXQoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpwcml2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYy03NC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMTA1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYzoxMDY6c3RhdGljIHZvaWQgZWljNzcwMF9kd21hY19leGl0KHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqcHJpdilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMTA3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYy0xMTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jOjExMzpzdGF0aWMgaW50IGVpYzc3MDBfZHdtYWNfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKnByaXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jLTExNC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMTE3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYzoxMTg6c3RhdGljIGludCBlaWM3NzAwX2R3bWFjX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKnByaXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jLTExOS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMTI4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYzoxMjk6c3RhdGljIGludCBlaWM3NzAwX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jLTEzMC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMjU4LVxcdGR3Y19wcml2LVxcdTAwM2VwbGF0X2RhdCA9IHBsYXRfZGF0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYzoyNTk6XFx0cGxhdF9kYXQtXFx1MDAzZWluaXQgPSBlaWM3NzAwX2R3bWFjX2luaXQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jOjI2MDpcXHRwbGF0X2RhdC1cXHUwMDNlZXhpdCA9IGVpYzc3MDBfZHdtYWNfZXhpdDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmM6MjYxOlxcdHBsYXRfZGF0LVxcdTAwM2VzdXNwZW5kID0gZWljNzcwMF9kd21hY19zdXNwZW5kO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYzoyNjI6XFx0cGxhdF9kYXQtXFx1MDAzZXJlc3VtZSA9IGVpYzc3MDBfZHdtYWNfcmVzdW1lO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYy0yNjMtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMjY2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYzoyNjc6c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgZWljNzcwMF9kd21hY19tYXRjaFtdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYy0yNjgtXFx0eyAuY29tcGF0aWJsZSA9IFxcXCJlc3dpbixlaWM3NzAwLXFvcy1ldGhcXFwiIH0sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMjcwLX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jOjI3MTpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBlaWM3NzAwX2R3bWFjX21hdGNoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMjcyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYzoyNzM6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgZWljNzcwMF9kd21hY19kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jOjI3NDpcXHQucHJvYmUgID0gZWljNzcwMF9kd21hY19wcm9iZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMjc1LVxcdC5kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jOjI3NjpcXHRcXHQubmFtZSAgICAgICAgICAgPSBcXFwiZWljNzcwMC1ldGgtZHdtYWNcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYy0yNzctXFx0XFx0LnBtICAgICAgICAgICAgID0gXFx1MDAyNnN0bW1hY19wbHRmcl9wbV9vcHMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jOjI3ODpcXHRcXHQub2ZfbWF0Y2hfdGFibGUgPSBlaWM3NzAwX2R3bWFjX21hdGNoLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYy0yNzktXFx0fSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMjgwLX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jOjI4MTptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGVpYzc3MDBfZHdtYWNfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMjgyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jLTE4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYzoxOTpzdGF0aWMgaW50IGR3bWFjX2dlbmVyaWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMtMjAte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jLTUxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYzo1MjpzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBkd21hY19nZW5lcmljX21hdGNoW10gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jLTUzLVxcdHsgLmNvbXBhdGlibGUgPSBcXFwic3Qsc3BlYXI2MDAtZ21hY1xcXCJ9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYzo1NDpcXHR7IC5jb21wYXRpYmxlID0gXFxcInNucHMsZHdtYWMtMy40MGFcXFwifSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmM6NTU6XFx0eyAuY29tcGF0aWJsZSA9IFxcXCJzbnBzLGR3bWFjLTMuNTBhXFxcIn0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jOjU2OlxcdHsgLmNvbXBhdGlibGUgPSBcXFwic25wcyxkd21hYy0zLjYxMFxcXCJ9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYzo1NzpcXHR7IC5jb21wYXRpYmxlID0gXFxcInNucHMsZHdtYWMtMy43MGFcXFwifSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmM6NTg6XFx0eyAuY29tcGF0aWJsZSA9IFxcXCJzbnBzLGR3bWFjLTMuNzEwXFxcIn0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jOjU5OlxcdHsgLmNvbXBhdGlibGUgPSBcXFwic25wcyxkd21hYy0zLjcyYVxcXCJ9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYzo2MDpcXHR7IC5jb21wYXRpYmxlID0gXFxcInNucHMsZHdtYWMtNC4wMFxcXCJ9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYzo2MTpcXHR7IC5jb21wYXRpYmxlID0gXFxcInNucHMsZHdtYWMtNC4xMGFcXFwifSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmM6NjI6XFx0eyAuY29tcGF0aWJsZSA9IFxcXCJzbnBzLGR3bWFjXFxcIn0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jLTYzLVxcdHsgLmNvbXBhdGlibGUgPSBcXFwic25wcyxkd3hnbWFjLTIuMTBcXFwifSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYy02Ni19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYzo2NzpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBkd21hY19nZW5lcmljX21hdGNoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMtNjgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jOjY5OnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGR3bWFjX2dlbmVyaWNfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYzo3MDpcXHQucHJvYmUgID0gZHdtYWNfZ2VuZXJpY19wcm9iZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMtNzEtXFx0LmRyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYy03My1cXHRcXHQucG1cXHRcXHQ9IFxcdTAwMjZzdG1tYWNfcGx0ZnJfcG1fb3BzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYzo3NDpcXHRcXHQub2ZfbWF0Y2hfdGFibGUgPSBkd21hY19nZW5lcmljX21hdGNoLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYy03NS1cXHR9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYy03Ni19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYzo3Nzptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGR3bWFjX2dlbmVyaWNfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMtNzgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jOjc5Ok1PRFVMRV9ERVNDUklQVElPTihcXFwiR2VuZXJpYyBkd21hYyBkcml2ZXJcXFwiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMtODAtTU9EVUxFX0xJQ0VOU0UoXFxcIkdQTCB2MlxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMi0vKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjM6ICogZHdtYWMtaW14LmMgLSBEV01BQyBTcGVjaWZpYyBHbHVlIGxheWVyIGZvciBOWFAgaW14OFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTQtICpcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jPTQyPXN0cnVjdCBpbXhfcHJpdl9kYXRhO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTQzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjQ0OnN0cnVjdCBpbXhfZHdtYWNfb3BzIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy00NS1cXHR1MzIgZmxhZ3M7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy00OS1cXHRpbnQgKCpmaXhfc29jX3Jlc2V0KShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjUwOlxcdGludCAoKnNldF9pbnRmX21vZGUpKHN0cnVjdCBpbXhfcHJpdl9kYXRhICpkd21hYywgdTggcGh5X2ludGZfc2VsKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy01MS1cXHR2b2lkICgqZml4X21hY19zcGVlZCkodm9pZCAqcHJpdiwgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jPTU1PXN0cnVjdCBpbXhfcHJpdl9kYXRhIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTYzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjY0OlxcdGNvbnN0IHN0cnVjdCBpbXhfZHdtYWNfb3BzICpvcHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtNjUtXFx0c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTY3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjY4OnN0YXRpYyBpbnQgaW14OG1wX3NldF9pbnRmX21vZGUoc3RydWN0IGlteF9wcml2X2RhdGEgKmR3bWFjLCB1OCBwaHlfaW50Zl9zZWwpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtNjkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtNzQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6NzU6XFx0aWYgKHBoeV9pbnRmX3NlbCA9PSBQSFlfSU5URl9TRUxfUk1JSSBcXHUwMDI2XFx1MDAyNiAhZHdtYWMtXFx1MDAzZXJtaWlfcmVmY2xrX2V4dClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy03Ni1cXHRcXHR2YWwgfD0gR1BSX0VORVRfUU9TX0NMS19UWF9DTEtfU0VMO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtNzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6ODA6XFx0cmV0dXJuIHJlZ21hcF91cGRhdGVfYml0cyhkd21hYy1cXHUwMDNlaW50Zl9yZWdtYXAsIGR3bWFjLVxcdTAwM2VpbnRmX3JlZ19vZmYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtODEtXFx0XFx0XFx0XFx0ICBHUFJfRU5FVF9RT1NfSU5URl9NT0RFX01BU0ssIHZhbCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYz04ND1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6ODU6aW14OGR4bF9zZXRfaW50Zl9tb2RlKHN0cnVjdCBpbXhfcHJpdl9kYXRhICpkd21hYywgdTggcGh5X2ludGZfc2VsKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTg2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTkwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjkxOnN0YXRpYyBpbnQgaW14OTNfc2V0X2ludGZfbW9kZShzdHJ1Y3QgaW14X3ByaXZfZGF0YSAqZHdtYWMsIHU4IHBoeV9pbnRmX3NlbClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy05Mi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy05NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzo5NjpcXHRpZiAocGh5X2ludGZfc2VsID09IFBIWV9JTlRGX1NFTF9STUlJIFxcdTAwMjZcXHUwMDI2IGR3bWFjLVxcdTAwM2VybWlpX3JlZmNsa19leHQpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzo5NzpcXHRcXHRyZXQgPSByZWdtYXBfY2xlYXJfYml0cyhkd21hYy1cXHUwMDNlaW50Zl9yZWdtYXAsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6OTg6XFx0XFx0XFx0XFx0XFx0ZHdtYWMtXFx1MDAzZWludGZfcmVnX29mZiArXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtOTktXFx0XFx0XFx0XFx0XFx0TVg5M19FTkVUX0NMS19TRUxfT0ZGU0VULFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMTA3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjEwODpcXHRyZXR1cm4gcmVnbWFwX3VwZGF0ZV9iaXRzKGR3bWFjLVxcdTAwM2VpbnRmX3JlZ21hcCwgZHdtYWMtXFx1MDAzZWludGZfcmVnX29mZixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0xMDktXFx0XFx0XFx0XFx0ICBNWDkzX0dQUl9FTkVUX1FPU19JTlRGX1NFTF9NQVNLIHxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTExMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoxMTM6c3RhdGljIGludCBpbXhfZHdtYWNfY2xrc19jb25maWcodm9pZCAqcHJpdiwgYm9vbCBlbmFibGVkKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTExNC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MTE1OlxcdHN0cnVjdCBpbXhfcHJpdl9kYXRhICpkd21hYyA9IHByaXY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMTE2LVxcdGludCByZXQgPSAwO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMTE4LVxcdGlmIChlbmFibGVkKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MTE5OlxcdFxcdHJldCA9IGNsa19wcmVwYXJlX2VuYWJsZShkd21hYy1cXHUwMDNlY2xrX21lbSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMTIwLVxcdFxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoxMjE6XFx0XFx0XFx0ZGV2X2Vycihkd21hYy1cXHUwMDNlZGV2LCBcXFwibWVtIGNsb2NrIGVuYWJsZSBmYWlsZWRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTEyMi1cXHRcXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMTI0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjEyNTpcXHRcXHRyZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUoZHdtYWMtXFx1MDAzZWNsa190eCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMTI2LVxcdFxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoxMjc6XFx0XFx0XFx0ZGV2X2Vycihkd21hYy1cXHUwMDNlZGV2LCBcXFwidHggY2xvY2sgZW5hYmxlIGZhaWxlZFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MTI4OlxcdFxcdFxcdGNsa19kaXNhYmxlX3VucHJlcGFyZShkd21hYy1cXHUwMDNlY2xrX21lbSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMTI5LVxcdFxcdFxcdHJldHVybiByZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0xMzEtXFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoxMzI6XFx0XFx0Y2xrX2Rpc2FibGVfdW5wcmVwYXJlKGR3bWFjLVxcdTAwM2VjbGtfdHgpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjEzMzpcXHRcXHRjbGtfZGlzYWJsZV91bnByZXBhcmUoZHdtYWMtXFx1MDAzZWNsa19tZW0pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTEzNC1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYz0xMzk9c3RhdGljIGludCBpbXhfc2V0X3BoeV9pbnRmX3NlbCh2b2lkICpic3BfcHJpdiwgdTggcGh5X2ludGZfc2VsKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTE0MC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MTQxOlxcdHN0cnVjdCBpbXhfcHJpdl9kYXRhICpkd21hYyA9IGJzcF9wcml2O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTE0Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoxNDM6XFx0aWYgKCFkd21hYy1cXHUwMDNlb3BzLVxcdTAwM2VzZXRfaW50Zl9tb2RlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTE0NC1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTE1MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoxNTE6XFx0cmV0dXJuIGR3bWFjLVxcdTAwM2VvcHMtXFx1MDAzZXNldF9pbnRmX21vZGUoZHdtYWMsIHBoeV9pbnRmX3NlbCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMTUyLX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0xNTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MTU0OnN0YXRpYyBpbnQgaW14X2R3bWFjX3NldF9jbGtfdHhfcmF0ZSh2b2lkICpic3BfcHJpdiwgc3RydWN0IGNsayAqY2xrX3R4X2ksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMTU1LVxcdFxcdFxcdFxcdCAgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSwgaW50IHNwZWVkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMTYzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjE2NDpzdGF0aWMgdm9pZCBpbXhfZHdtYWNfZml4X3NwZWVkKHZvaWQgKnByaXYsIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMTY1LVxcdFxcdFxcdFxcdGludCBzcGVlZCwgdW5zaWduZWQgaW50IG1vZGUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0xNjctXFx0c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoxNjg6XFx0c3RydWN0IGlteF9wcml2X2RhdGEgKmR3bWFjID0gcHJpdjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0xNjktXFx0bG9uZyByYXRlO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMTcxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjE3MjpcXHRwbGF0X2RhdCA9IGR3bWFjLVxcdTAwM2VwbGF0X2RhdDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0xNzMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MTc0OlxcdGlmIChkd21hYy1cXHUwMDNlb3BzLVxcdTAwM2VtYWNfcmdtaWlfdHhjbGtfYXV0b19hZGogfHxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0xNzUtXFx0ICAgIChwbGF0X2RhdC1cXHUwMDNlcGh5X2ludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfUk1JSSkgfHxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTE4MC1cXHRpZiAocmF0ZSBcXHUwMDNjIDApIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoxODE6XFx0XFx0ZGV2X2Vycihkd21hYy1cXHUwMDNlZGV2LCBcXFwiaW52YWxpZCBzcGVlZCAlZFxcXFxuXFxcIiwgc3BlZWQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTE4Mi1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0xODQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MTg1OlxcdGVyciA9IGNsa19zZXRfcmF0ZShkd21hYy1cXHUwMDNlY2xrX3R4LCByYXRlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0xODYtXFx0aWYgKGVyciBcXHUwMDNjIDApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MTg3OlxcdFxcdGRldl9lcnIoZHdtYWMtXFx1MDAzZWRldiwgXFxcImZhaWxlZCB0byBzZXQgdHggcmF0ZSAlbHVcXFxcblxcXCIsIHJhdGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTE4OC19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMTg5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjE5MDpzdGF0aWMgdm9pZCBpbXg5M19kd21hY19maXhfc3BlZWQodm9pZCAqcHJpdiwgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0xOTEtXFx0XFx0XFx0XFx0ICBpbnQgc3BlZWQsIHVuc2lnbmVkIGludCBtb2RlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTE5Mi17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MTkzOlxcdHN0cnVjdCBpbXhfcHJpdl9kYXRhICpkd21hYyA9IHByaXY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMTk0LVxcdHVuc2lnbmVkIGludCBpZmFjZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTE5Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoxOTc6XFx0aW14X2R3bWFjX2ZpeF9zcGVlZChwcml2LCBpbnRlcmZhY2UsIHNwZWVkLCBtb2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0xOTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MTk5OlxcdGlmICghZHdtYWMgfHwgbW9kZSAhPSBNTE9fQU5fRklYRUQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMjAwLVxcdFxcdHJldHVybjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0yMDEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MjAyOlxcdGlmIChyZWdtYXBfcmVhZChkd21hYy1cXHUwMDNlaW50Zl9yZWdtYXAsIGR3bWFjLVxcdTAwM2VpbnRmX3JlZ19vZmYsIFxcdTAwMjZpZmFjZSkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMjAzLVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTIwOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoyMDk6XFx0b2xkX2N0cmwgPSByZWFkbChkd21hYy1cXHUwMDNlYmFzZV9hZGRyICsgTUFDX0NUUkxfUkVHKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0yMTAtXFx0Y3RybCA9IG9sZF9jdHJsIFxcdTAwMjYgfkNUUkxfU1BFRURfTUFTSztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoyMTE6XFx0cmVnbWFwX3VwZGF0ZV9iaXRzKGR3bWFjLVxcdTAwM2VpbnRmX3JlZ21hcCwgZHdtYWMtXFx1MDAzZWludGZfcmVnX29mZixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0yMTItXFx0XFx0XFx0ICAgTVg5M19HUFJfRU5FVF9RT1NfSU5URl9TRUxfTUFTSyB8XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMjEzLVxcdFxcdFxcdCAgIE1YOTNfR1BSX0VORVRfUU9TX0VOQUJMRSwgMCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MjE0OlxcdHdyaXRlbChjdHJsLCBkd21hYy1cXHUwMDNlYmFzZV9hZGRyICsgTUFDX0NUUkxfUkVHKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0yMTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMjE2LVxcdCAvKiBFbnN1cmUgdGhlIHNldHRpbmdzIGZvciBDVFJMIGFyZSBhcHBsaWVkLiAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjIxNzpcXHRyZWFkbChkd21hYy1cXHUwMDNlYmFzZV9hZGRyICsgTUFDX0NUUkxfUkVHKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0yMTgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0yMjEtXFx0aWZhY2UgfD0gTVg5M19HUFJfRU5FVF9RT1NfRU5BQkxFO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjIyMjpcXHRyZWdtYXBfdXBkYXRlX2JpdHMoZHdtYWMtXFx1MDAzZWludGZfcmVnbWFwLCBkd21hYy1cXHUwMDNlaW50Zl9yZWdfb2ZmLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTIyMy1cXHRcXHRcXHQgICBNWDkzX0dQUl9FTkVUX1FPU19JTlRGX1NFTF9NQVNLIHxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTIyNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoyMjY6XFx0d3JpdGVsKG9sZF9jdHJsLCBkd21hYy1cXHUwMDNlYmFzZV9hZGRyICsgTUFDX0NUUkxfUkVHKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0yMjctfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTIyOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoyMjk6c3RhdGljIGludCBpbXhfZHdtYWNfbXg5M19yZXNldChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMjMwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jPTI1MD1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MjUxOmlteF9kd21hY19wYXJzZV9kdChzdHJ1Y3QgaW14X3ByaXZfZGF0YSAqZHdtYWMsIHN0cnVjdCBkZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0yNTIte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMjU1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjI1NjpcXHRkd21hYy1cXHUwMDNlcm1paV9yZWZjbGtfZXh0ID0gb2ZfcHJvcGVydHlfcmVhZF9ib29sKG5wLCBcXFwic25wcyxybWlpX3JlZmNsa19leHRcXFwiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0yNTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MjU4OlxcdGR3bWFjLVxcdTAwM2VjbGtfdHggPSBkZXZtX2Nsa19nZXQoZGV2LCBcXFwidHhcXFwiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoyNTk6XFx0aWYgKElTX0VSUihkd21hYy1cXHUwMDNlY2xrX3R4KSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTI2MC1cXHRcXHRkZXZfZXJyKGRldiwgXFxcImZhaWxlZCB0byBnZXQgdHggY2xvY2tcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjI2MTpcXHRcXHRyZXR1cm4gUFRSX0VSUihkd21hYy1cXHUwMDNlY2xrX3R4KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0yNjItXFx0fVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTI2My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoyNjQ6XFx0ZHdtYWMtXFx1MDAzZWNsa19tZW0gPSBOVUxMO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTI2NS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTI2OC1cXHQgICAgb2ZfbWFjaGluZV9pc19jb21wYXRpYmxlKFxcXCJmc2wsaW14OTNcXFwiKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjI2OTpcXHRcXHRkd21hYy1cXHUwMDNlY2xrX21lbSA9IGRldm1fY2xrX2dldChkZXYsIFxcXCJtZW1cXFwiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoyNzA6XFx0XFx0aWYgKElTX0VSUihkd21hYy1cXHUwMDNlY2xrX21lbSkpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0yNzEtXFx0XFx0XFx0ZGV2X2VycihkZXYsIFxcXCJmYWlsZWQgdG8gZ2V0IG1lbSBjbG9ja1xcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MjcyOlxcdFxcdFxcdHJldHVybiBQVFJfRVJSKGR3bWFjLVxcdTAwM2VjbGtfbWVtKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0yNzMtXFx0XFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMjgyLVxcdFxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjI4MzpcXHRcXHRkd21hYy1cXHUwMDNlaW50Zl9yZWdtYXAgPVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTI4NC1cXHRcXHRcXHRzeXNjb25fcmVnbWFwX2xvb2t1cF9ieV9waGFuZGxlX2FyZ3MobnAsIFxcXCJpbnRmX21vZGVcXFwiLCAxLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjI4NTpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgIFxcdTAwMjZkd21hYy1cXHUwMDNlaW50Zl9yZWdfb2ZmKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoyODY6XFx0XFx0aWYgKElTX0VSUihkd21hYy1cXHUwMDNlaW50Zl9yZWdtYXApKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjI4NzpcXHRcXHRcXHRyZXR1cm4gUFRSX0VSUihkd21hYy1cXHUwMDNlaW50Zl9yZWdtYXApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTI4OC1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0yOTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MjkzOnN0YXRpYyBpbnQgaW14X2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMjk0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTI5Ni1cXHRzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyBzdG1tYWNfcmVzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjI5NzpcXHRzdHJ1Y3QgaW14X3ByaXZfZGF0YSAqZHdtYWM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6Mjk4OlxcdGNvbnN0IHN0cnVjdCBpbXhfZHdtYWNfb3BzICpkYXRhO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTI5OS1cXHRpbnQgcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMzA0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjMwNTpcXHRkd21hYyA9IGRldm1fa3phbGxvYyhcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBzaXplb2YoKmR3bWFjKSwgR0ZQX0tFUk5FTCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MzA2OlxcdGlmICghZHdtYWMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMzA3LVxcdFxcdHJldHVybiAtRU5PTUVNO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMzE4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjMxOTpcXHRkd21hYy1cXHUwMDNlb3BzID0gZGF0YTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzozMjA6XFx0ZHdtYWMtXFx1MDAzZWRldiA9IFxcdTAwMjZwZGV2LVxcdTAwM2VkZXY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMzIxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjMyMjpcXHRyZXQgPSBpbXhfZHdtYWNfcGFyc2VfZHQoZHdtYWMsIFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTMyMy1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0zMzMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MzM0OlxcdHBsYXRfZGF0LVxcdTAwM2Vob3N0X2RtYV93aWR0aCA9IGR3bWFjLVxcdTAwM2VvcHMtXFx1MDAzZWFkZHJfd2lkdGg7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMzM1LVxcdHBsYXRfZGF0LVxcdTAwM2VzZXRfcGh5X2ludGZfc2VsID0gaW14X3NldF9waHlfaW50Zl9zZWw7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MzM2OlxcdHBsYXRfZGF0LVxcdTAwM2VjbGtzX2NvbmZpZyA9IGlteF9kd21hY19jbGtzX2NvbmZpZztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzozMzc6XFx0cGxhdF9kYXQtXFx1MDAzZWJzcF9wcml2ID0gZHdtYWM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MzM4OlxcdGR3bWFjLVxcdTAwM2VwbGF0X2RhdCA9IHBsYXRfZGF0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjMzOTpcXHRkd21hYy1cXHUwMDNlYmFzZV9hZGRyID0gc3RtbWFjX3Jlcy5hZGRyO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTM0MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzozNDE6XFx0cmV0ID0gaW14X2R3bWFjX2Nsa3NfY29uZmlnKGR3bWFjLCB0cnVlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0zNDItXFx0aWYgKHJldClcXG4tLVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQxODoxNDowNC4xODQ5MTAyOVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY0ODc1MjEwNTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBRRU1VLVNUTU1BQyBEcml2ZXIgZm9yIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgUUVNVSdzIG5ldHdvcmsgZGV2aWNlIGltcGxlbWVudGF0aW9uLCBhbmQgaXQgbG9va3MgbGlrZSBgaHcvbmV0L2Rlc2lnbndhcmUuY2AgaGFuZGxlcyB0aGUgYHNucHMsZHdtYWNgIGRldmljZSwgcmlnaHQ/IEdvb2QsIHRoYXQgY29uZmlybXMgaXQuIEkgd2FudGVkIHRvIG1ha2Ugc3VyZSB0aGUgU1RNTUFDIGRyaXZlciBjb2RlIGlzIGFjdHVhbGx5IHByZXNlbnQgYW5kIGFjY2Vzc2libGUgaW4gdGhpcyBlbXVsYXRlZCBlbnZpcm9ubWVudC4gU2VlbXMgbGlrZSBpdCBpcy4gSSBzZWUgdGhhdCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jYCBkaXJlY3RseSBhbGlnbnMgd2l0aCB0aGlzIGBzbnBzLGR3bWFjYCBpZGVudGlmaWVyLCBzbyBgc3RtbWFjX21haW4uY2AgaXMgZGVmaW5pdGVseSByZWFjaGFibGUuXG5cbk5vdywgbGV0IG1lIHJlLWV4YW1pbmUgdGhpcyBwYXRjaC4gSXQncyBtYWtpbmcgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byBob3cgR1NPIChHZW5lcmljIFNlZ21lbnRhdGlvbiBPZmZsb2FkKSB0eXBlcyBhcmUgaGFuZGxlZCB3aXRoaW4gdGhlIFNUTU1BQyBkcml2ZXIuIFNwZWNpZmljYWxseSwgaXQncyBhYm91dCBgc3RtbWFjX3NldF9nc29fdHlwZXNgLiBUaGlzIGxvb2tzIGxpa2Ugc29tZXRoaW5nIHRoYXQgY291bGQgYmUgaW50ZXJlc3RpbmcgdG8gZnV6ei4gSXQncyBhIGNvcmUgZHJpdmVyLCBhIHdpZGVseSB1c2VkIE1BQywgYW5kIEkndmUgY29uZmlybWVkIGl0J3MgcmVhY2hhYmxlIHRocm91Z2ggUUVNVS4gVGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludC5cblxuQnV0IGhvbGQgb24sIGxldCBtZSB0cmFjZSBob3cgYHN0bW1hY19zZXRfZ3NvX3R5cGVzYCBpcyBhY3R1YWxseSBjYWxsZWQuIEl0J3MgY2FsbGVkIGZyb20gYHN0bW1hY19zZXRfZ3NvX2ZlYXR1cmVzYCBhbmQgYHN0bW1hY19zZXRfZmVhdHVyZXNgLiBBaCwgYW5kIGBzdG1tYWNfc2V0X2ZlYXR1cmVzYCBpcyB0aGUgYC5uZG9fc2V0X2ZlYXR1cmVzYCBjYWxsYmFjayBmb3IgdGhlIG5ldF9kZXZpY2UuIFNvIHRoYXQgbWVhbnMgdGhpcyB3aG9sZSB0aGluZyBjYW4gYmUgdHJpZ2dlcmVkIHRocm91Z2ggc29tZXRoaW5nIGxpa2UgYGV0aHRvb2wgLUtgIG9yIG90aGVyIG5ldGxpbmsgY29tbWFuZHMuIFRoYXQncyBhIG5pY2UgZWFzeSB3YXkgdG8gaW50ZXJhY3Qgd2l0aCBpdCwgdG9vLiBJIHNob3VsZCBwcm9iYWJseSBkaWcgaW50byB0aGUgY29kZSBmb3IgYHN0bW1hY19zZXRfZmVhdHVyZXNgIG5vdyB0byBzZWUgd2hhdCdzIHdoYXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNDgxLCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDY3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDE4OjE0OjEwLjY3MjQzMzYzMVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjkzNDU0NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNfc2V0X2ZlYXR1cmVzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTYxNTg9c3RhdGljIG5ldGRldl9mZWF0dXJlc190IHN0bW1hY19maXhfZmVhdHVyZXMoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjE3OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjYxODA6c3RhdGljIGludCBzdG1tYWNfc2V0X2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02MTgxLVxcdFxcdFxcdCAgICAgICBuZXRkZXZfZmVhdHVyZXNfdCBmZWF0dXJlcylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NzMwOT1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIHN0bW1hY19uZXRkZXZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MzE1LVxcdC5uZG9fZml4X2ZlYXR1cmVzID0gc3RtbWFjX2ZpeF9mZWF0dXJlcyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjczMTY6XFx0Lm5kb19zZXRfZmVhdHVyZXMgPSBzdG1tYWNfc2V0X2ZlYXR1cmVzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzMxNy1cXHQubmRvX3NldF9yeF9tb2RlID0gc3RtbWFjX3NldF9yeF9tb2RlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQxODoxNDoxMC43MjkzNzA0NDdaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTUyMjk5MTYxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipBbmFseXppbmcgdGhlIFNUTU1BQyBEcml2ZXIncyBGZWF0dXJlIFNldHVwKipcblxuQWxyaWdodCwgc28gYHN0bW1hY19zZXRfZmVhdHVyZXNgLi4uIHJpZ2h0LCB0aGF0J3MganVzdCBhIHdyYXBwZXIgYXJvdW5kIGAubmRvX3NldF9mZWF0dXJlc2AuIE5vdGhpbmcgc3VycHJpc2luZyB0aGVyZS4gVGhlIHBhdGNoIGluIHF1ZXN0aW9uIGlzIGFsc28gdG91Y2hpbmcgYHN0bW1hY19zZXRfZ3NvX2ZlYXR1cmVzYC4gU2luY2UgdGhpcyBpcyBoYXBwZW5pbmcgZHVyaW5nIGluaXRpYWxpemF0aW9uLCB0aGlzIG5lZWRzIGEgY2xvc2VyIGxvb2suIExldCdzIGRpZyBpbnRvIGBzdG1tYWNfc2V0X2dzb19mZWF0dXJlc2AgYW5kIHNlZSB3aGF0J3MgYmVpbmcgYWx0ZXJlZCBpbiB0aGF0IHBhcnRpY3VsYXIgY2FsbC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBuZXcgR1NPIGZlYXR1cmVzIGFyZSBiZWluZyBlbmFibGVkIG9yIGRpc2FibGVkLCBhbmQgaG93IHRoYXQgaW1wYWN0cyB0aGUgb3ZlcmFsbCBkcml2ZXIgYmVoYXZpb3IuIEdvdHRhIG1ha2Ugc3VyZSB0aGVyZSdzIG5vIHVuaW50ZW5kZWQgY29uc2VxdWVuY2VzIHdpdGggdGhvc2Ugc2V0dGluZ3MuIFRpbWUgdG8gdHJhY2UgdGhhdCBjYWxsIHBhdGghXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxNzQ0LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMTg6MTQ6MTQuMjgxNjcyMzk4WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODk2NjA3NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNfc2V0X2dzb19mZWF0dXJlc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz00Mzc0PXN0YXRpYyB2b2lkIHN0bW1hY19zZXRfZ3NvX3R5cGVzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDM4Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQzODg6c3RhdGljIHZvaWQgc3RtbWFjX3NldF9nc29fZmVhdHVyZXMoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00Mzg5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9Nzc5NT1zdGF0aWMgaW50IF9fc3RtbWFjX2R2cl9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXZpY2UsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTc5MjQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3OTI1OlxcdHN0bW1hY19zZXRfZ3NvX2ZlYXR1cmVzKG5kZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzkyNi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMTg6MTQ6MTQuMzMwNjQwOTk1WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5OTQ0OTk4MTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBTVE1NQUMgR1NPIEZlYXR1cmUgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBzZWVpbmcgdGhhdCBgc3RtbWFjX3NldF9nc29fZmVhdHVyZXNgIGlzIGJlaW5nIGNhbGxlZCB3aXRoaW4gYF9fc3RtbWFjX2R2cl9wcm9iZWAuIEludGVyZXN0aW5nLiBUaGlzIGxvb2tzIGxpa2UgYSBkZWZpbml0ZSBmdW5jdGlvbmFsIG1vZGlmaWNhdGlvbiwgd2hpY2ggbWVhbnMgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGltcGxpY2F0aW9ucyBmb3IgdGhlIG92ZXJhbGwgZHJpdmVyIGNvbmZpZ3VyYXRpb24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IHdoaWNoIGNvbmZpZ3VyYXRpb25zIGFyZSBhY3R1YWxseSBuZWNlc3NhcnkgdG8gZW5hYmxlIHRoaXMgbmV3IEdTTyBmdW5jdGlvbmFsaXR5LlxuXG5JIGtub3cgdGhhdCBgQ09ORklHX1NUTU1BQ19FVEhgIGlzIHRoZSBwcmltYXJ5IGNvbmZpZ3VyYXRpb24gb3B0aW9uIGZvciB0aGUgU1RNTUFDIGRyaXZlciBpdHNlbGYsIGJ1dCBJJ2xsIG5lZWQgdG8gZGlnIGRlZXBlci4gVGltZSB0byBjcm9zcy1yZWZlcmVuY2Ugd2l0aCB0aGUgZHJpdmVyJ3MgS2NvbmZpZyBmaWxlIOKAkyBzcGVjaWZpY2FsbHksIEknbGwgbmVlZCB0byBleGFtaW5lIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnYCB0byBwaW5wb2ludCBleGFjdGx5IHdoaWNoIGNvbmZpZ3VyYXRpb25zIGFyZSB0aWVkIHRvIHRoaXMgR1NPIGZlYXR1cmUgYWRkaXRpb24gYW5kIHNlZSBob3cgdGhlc2UgY2hhbmdlcyBhZmZlY3QgdGhlIGJ1aWxkIHByb2Nlc3MuIEknbGwgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoZSBjaGFuZ2UgaXMgY29uZGl0aW9uYWwgYW5kIHdoYXQgdGhlIG90aGVyIGNvbmZpZyBvcHRpb25zIGFyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjIzMzMsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQxODoxNDoxOC4zMjUxNDQzMTVaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1MzA1MDY3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBTVE1NQUNfRVRIXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyOmNvbmZpZyBTVE1NQUNfRVRIXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJTVE1pY3JvZWxlY3Ryb25pY3MgTXVsdGktR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDE4OjE0OjE4LjM3MDQ1MjA1MVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTcxODMyNDcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgdGhlIHN1bW1hcnksIHJlbmRlcmVkIGFzIGEgZmlyc3QtcGVyc29uIHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIHRoZSB1c2VyIGlzIGFuIGV4cGVydDpcblxuKipPa2F5LCBMZXQncyBBbmFseXplIHRoZSBEZXBlbmRlbmNpZXMqKlxuXG5BbHJpZ2h0LCBJJ20gZGl2aW5nIGluLiBCZWZvcmUgSSBqdW1wIHRvIGFueSBjb25jbHVzaW9ucywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHVuZGVybHlpbmcgZnJhbWV3b3JrLiBMZXQncyBub3QgZ2V0IGFoZWFkIG9mIG91cnNlbHZlcy4gSSdtIGdvaW5nIHRvIHN0YXJ0IGJ5IGlkZW50aWZ5aW5nIGFsbCB0aGUga2V5IGRlcGVuZGVuY2llcyBhdCBwbGF5IGhlcmUuIFdoYXQgYXJlIHRoZSBjb3JlIGNvbXBvbmVudHMgdGhpcyByZWxpZXMgb24/IEFyZSB3ZSB0YWxraW5nIGFib3V0IGV4dGVybmFsIEFQSXMsIHNwZWNpZmljIGxpYnJhcmllcywgbWF5YmUgcGFydGljdWxhciBhcmNoaXRlY3R1cmFsIGNob2ljZXM/IEl0J3MgY3J1Y2lhbCB0byBtYXAgb3V0IHRoYXQgbGFuZHNjYXBlIGZpcnN0LiBJJ20gdGhpbmtpbmcgb2YgZXZlcnl0aGluZyBmcm9tIHRoZSBvYnZpb3VzIHRvIHRoZSBtb3JlIHN1YnRsZTogZGF0YSBzdHJ1Y3R1cmVzLCBjb250cm9sIGZsb3csIHVuZGVybHlpbmcgYXNzdW1wdGlvbnMuLi4gdGhlIHdob2xlIHNoZWJhbmcuIExldCdzIHNlZSB3aGF0IHdlJ3JlIHdvcmtpbmcgd2l0aCBiZWZvcmUgdHJ5aW5nIHRvIGNyYWZ0IGFueSBzb2x1dGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI3NzAsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDE4OjE0OjIyLjM0MjI4ODA1NFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NTgyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRjb25maWcgU1RNTUFDX0VUSFxcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIlNUTWljcm9lbGVjdHJvbmljcyBNdWx0aS1HaWdhYml0IEV0aGVybmV0IGRyaXZlclxcXCJcXG4gICA0OlxcdFxcdGRlcGVuZHMgb24gSEFTX0lPTUVNIFxcdTAwMjZcXHUwMDI2IEhBU19ETUFcXG4gICA1OlxcdFxcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcXG4gICA2OlxcdFxcdGRlcGVuZHMgb24gRVRIVE9PTF9ORVRMSU5LXFxuICAgNzpcXHRcXHRzZWxlY3QgTUlJXFxuICAgODpcXHRcXHRzZWxlY3QgUENTX1hQQ1NcXG4gICA5OlxcdFxcdHNlbGVjdCBQQUdFX1BPT0xcXG4gIDEwOlxcdFxcdHNlbGVjdCBQSFlMSU5LXFxuICAxMTpcXHRcXHRzZWxlY3QgQ1JDMzJcXG4gIDEyOlxcdFxcdHNlbGVjdCBSRVNFVF9DT05UUk9MTEVSXFxuICAxMzpcXHRcXHRzZWxlY3QgTkVUX0RFVkxJTktcXG4gIDE0OlxcdFxcdGhlbHBcXG4gIDE1OlxcdFxcdCAgVGhpcyBpcyB0aGUgZHJpdmVyIGZvciB0aGUgRXRoZXJuZXQgSVBzIGJ1aWx0IGFyb3VuZCBhXFxuICAxNjpcXHRcXHQgIFN5bm9wc3lzIElQIENvcmUuXFxuICAxNzpcXHRcXG4gIDE4OlxcdGlmIFNUTU1BQ19FVEhcXG4gIDE5OlxcdFxcbiAgMjA6XFx0Y29uZmlnIFNUTU1BQ19TRUxGVEVTVFNcXG4gIDIxOlxcdFxcdGJvb2wgXFxcIlN1cHBvcnQgZm9yIFNUTU1BQyBTZWxmdGVzdHNcXFwiXFxuICAyMjpcXHRcXHRkZXBlbmRzIG9uIElORVRcXG4gIDIzOlxcdFxcdGRlZmF1bHQgblxcbiAgMjQ6XFx0XFx0aGVscFxcbiAgMjU6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgU1RNTUFDIFNlbGZ0ZXN0cyB1c2luZyBldGh0b29sLiBFbmFibGUgdGhpc1xcbiAgMjY6XFx0XFx0ICBmZWF0dXJlIGlmIHlvdSBhcmUgZmFjaW5nIHByb2JsZW1zIHdpdGggeW91ciBIVyBhbmQgc3VibWl0IHRoZSB0ZXN0XFxuICAyNzpcXHRcXHQgIHJlc3VsdHMgdG8gdGhlIG5ldGRldiBNYWlsaW5nIExpc3QuXFxuICAyODpcXHRcXG4gIDI5OlxcdGNvbmZpZyBTVE1NQUNfUExBVEZPUk1cXG4gIDMwOlxcdFxcdHRyaXN0YXRlIFxcXCJTVE1NQUMgUGxhdGZvcm0gYnVzIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDE4OjE0OjIyLjM0MjM2NTQyM1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NTEwNjEyMjAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVGVzdGFiaWxpdHkgb2YgU1RNTUFDIGluIFFFTVUgYW5kIFN5emthbGxlcioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBiZXN0IHdheSB0byB0ZXN0IGBzdG1tYWNgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgaXQgaGluZ2VzIG9uIGEgZmV3IGtlcm5lbCBjb25maWdzOiBgSEFTX0lPTUVNYCwgYEhBU19ETUFgLCBgUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxgLCBhbmQgYEVUSFRPT0xfTkVUTElOS2AuIEJ1dCBob3cgZG8gSSBhY3R1YWxseSAqcnVuKiB0aGlzIGluIFFFTVU/IEkgbmVlZCB0byBlbnN1cmUgdGhlIGNvcnJlY3QgaGFyZHdhcmUgaXMgZW11bGF0ZWQuIFRoYXQgbWVhbnMgSSBwcm9iYWJseSBuZWVkIGBDT05GSUdfU1RNTUFDX0VUSGAsIGBDT05GSUdfU1RNTUFDX1BMQVRGT1JNYCwgYW5kIGBDT05GSUdfRFdNQUNfR0VORVJJQ2AgdG8gbWFrZSBzdXJlIGl0IG1hdGNoZXMgdGhlIGBzbnBzLGR3bWFjYCBkZXZpY2UgdHJlZSBlbnRyaWVzLiBBbmQgaWYgSSdtIGFpbWluZyBmb3IgUENJIHRlc3RpbmcsIEkgc2hvdWxkIGluY2x1ZGUgYENPTkZJR19TVE1NQUNfUENJYC5cblxuTm93LCB0aGUgaW1wb3J0YW50IGJpdDogaG93IGlzIHRoZSBEZXNpZ25XYXJlIE1BQyBlbXVsYXRlZCBpbiBRRU1VPyBJIHNlZW0gdG8gcmVjYWxsIGl0IGJlaW5nIGEgcGxhdGZvcm0gZGV2aWNlLCBidXQgSSBuZWVkIHRvIGJlIHN1cmUuIEkgc2hvdWxkIGNoZWNrIHRoZSBRRU1VIHNvdXJjZSBkaXJlY3RseSDigJMgc3BlY2lmaWNhbGx5LCBgaHcvbmV0L2Rlc2lnbndhcmUuY2AuIEFoYSEgSXQncyBhY3R1YWxseSBhIFN5c0J1c0RldmljZS4gVGhhdCdzIGdvb2QuIE5vdywgd2hlcmUgaXMgaXQgKmluc3RhbnRpYXRlZCo/IExldCdzIHNlZS4uLiBgaHcvYXJtL2ZzbC1pbXg2LmNgLCBgaHcvYXJtL2ZzbC1pbXg2dWwuY2AsIGBody9hcm0vZnNsLWlteDcuY2AsIGBody9hcm0vc3RtMzJmNDA1X3NvYy5jYC4uLiBPa2F5LCBzbyBpdCdzIHRpZWQgdG8gc3BlY2lmaWMgQVJNIFNvQ3MuXG5cbkJ1dCBpcyBpdCBpbmNsdWRlZCBpbiB0aGUgc3RhbmRhcmQgYHZpcnRgIG1hY2hpbmU/IE5vLCBpdCdzIG5vdCBpbnN0YW50aWF0ZWQgYnkgZGVmYXVsdCBpbiB0aGUgYHZpcnRgIG1hY2hpbmUsIHdoaWNoIGNvbXBsaWNhdGVzIHRoaW5ncy4gSSBoYXZlIHRvIHRoaW5rIGFib3V0IGhvdyBTeXprYWxsZXIgY2FuIGhhbmRsZSB0aGlzLiBDYW4gaXQgaW5zdGFudGlhdGUgcGxhdGZvcm0gZGV2aWNlcyB0aHJvdWdoIGRldmljZSB0cmVlIG92ZXJsYXlzLCBvciBpcyBpdCBhYmxlIHRvIGluamVjdCB0aGVtIGRpcmVjdGx5P1xuXG5SaWdodCwgU3l6a2FsbGVyICpjYW4qIGZ1enogcGxhdGZvcm0gZGV2aWNlcywgZXNwZWNpYWxseSBpZiB0aGV5IGFyZSBhbHJlYWR5IGluIHRoZSBEVCBvciBpZiBpdCBoYXMgYSB3YXkgb2YgaW5qZWN0aW5nIHRoZW0uIEJ1dCBTeXprYWxsZXIgYWxzbyBoYXMgYSBzcGVjaWZpYyBtZXRob2QgZm9yIGhhbmRsaW5nIFBDSSBkZXZpY2VzLCB3aGljaCBtaWdodCBiZSB0aGUgZWFzaWVzdCBwYXRoLiBXYWl0LCBkb2VzIGBzdG1tYWNgIGhhdmUgYSBQQ0kgd3JhcHBlcj8gQmluZ28hIGBDT05GSUdfU1RNTUFDX1BDSWAuIEkgc2hvdWxkIGNoZWNrIHRoZSBpbXBsZW1lbnRhdGlvbjsgbGV0J3MgbG9vayBhdCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jYC4gVGhhdCdzIHdoZXJlIEkgbmVlZCB0byBzdGFydC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjMzNzksIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNzMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQxODoxNDoyOC44NTI5ODA3MDZaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYxNTAwNzA1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBjaV9kcml2ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz0yMTA9TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIHN0bW1hY19pZF90YWJsZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIxMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjEyOnN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBzdG1tYWNfcGNpX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjEzLVxcdC5uYW1lID0gU1RNTUFDX1JFU09VUkNFX05BTUUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjIxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoyMjI6bW9kdWxlX3BjaV9kcml2ZXIoc3RtbWFjX3BjaV9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMjMtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDE4OjE0OjI4LjkxNDQ4NjQzMloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzYzOTE2MTM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEknbSBzcGVha2luZyB0byBhIGZlbGxvdyBleHBlcnQ6XG5cbioqSW52ZXN0aWdhdGluZyBQQ0kgSUQgU3VwcG9ydCoqXG5cbkFscmlnaHQsIHNvIHRoZSB0YXNrIGF0IGhhbmQgaXMgdG8gdW5kZXJzdGFuZCB3aGljaCBQZXJpcGhlcmFsIENvbXBvbmVudCBJbnRlcmNvbm5lY3QgKFBDSSkgSURzIGFyZSBhY3R1YWxseSBzdXBwb3J0ZWQsIG9yIGFyZSB1bmRlciBjb25zaWRlcmF0aW9uIGZvciBzdXBwb3J0LiBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB0aGF0IGxhbmRzY2FwZS4gSXQncyBhIGZ1bmRhbWVudGFsIHN0ZXAsIHJlYWxseS4gSSBuZWVkIHRvIGtub3cgdGhlIHBsYXlpbmcgZmllbGQgYmVmb3JlIEkgY2FuIHN0YXJ0IHRvIHN0cmF0ZWdpemUgb3IgbWFrZSBhbnkgbWVhbmluZ2Z1bCByZWNvbW1lbmRhdGlvbnMgYmFzZWQgb24gdGhhdCBzdXBwb3J0LiBJIG5lZWQgdG8gY29tcGlsZSB0aGF0IHN1cHBvcnRlZCBsaXN0LiBMZXQncyBzZWUuLi4gd2hlcmUgZG8gSSBiZWdpbj8gTG9va3MgbGlrZSBQQ0kgSURzIGlzIHRoZSBzdGFydGluZyBwb2ludC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQ2MDIsIk91dHB1dFRva2VucyI6NDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQxODoxNDozMS42Nzg0MDQ4NzVaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNDAwMjMxMjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RtbWFjX2lkX3RhYmxlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MTkyPXN0YXRpYyB2b2lkIHN0bW1hY19wY2lfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIwMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjAzOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBzdG1tYWNfaWRfdGFibGVbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjA0LVxcdHsgUENJX0RFVklDRV9EQVRBKFNUTU1BQywgU1RNTUFDLCBcXHUwMDI2c3RtbWFjX3BjaV9pbmZvKSB9LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIwOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjEwOk1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBzdG1tYWNfaWRfdGFibGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTIxMj1zdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgc3RtbWFjX3BjaV9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIxMy1cXHQubmFtZSA9IFNUTU1BQ19SRVNPVVJDRV9OQU1FLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoyMTQ6XFx0LmlkX3RhYmxlID0gc3RtbWFjX2lkX3RhYmxlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMTUtXFx0LnByb2JlID0gc3RtbWFjX3BjaV9wcm9iZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMTg6MTQ6MzIuNzE4NDM1MzY0WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0MDMzMDExNTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipJbml0aWFsIEFzc2Vzc21lbnQ6IE5hdmlnYXRpbmcgdGhlIERyaXZlciBTb3VyY2UqKlxuXG5BbHJpZ2h0LCBJJ20gdGhpbmtpbmcsIFwic3RtbWFjX2lkX3RhYmxlXCIg4oCTIHRoYXQncyB0aGUgc3RhcnRpbmcgcG9pbnQuIEkgbmVlZCB0byBnZXQgbXkgYmVhcmluZ3MgaGVyZSwgYW5kIHRoZSBmaXJzdCBwbGFjZSBJIGFsd2F5cyBnbyBpcyB0aGUgZGV2aWNlIElEIHRhYmxlLiBUaGF0IHRhYmxlIGlzIHRoZSBibHVlcHJpbnQsIHRoZSByZWdpc3RyeSwgdGhlIGZvdW5kYXRpb25hbCBkYXRhIHN0cnVjdHVyZSBmb3IgdGhpcyB3aG9sZSBkcml2ZXIuIEl0IGRlZmluZXMgdGhlIGRldmljZXMgdGhpcyBTVE1NQUMgZHJpdmVyICprbm93cyogaG93IHRvIGhhbmRsZS4gSXQncyB0aGUgZXNzZW50aWFsIGxpbmsgYmV0d2VlbiB0aGUgZHJpdmVyIGFuZCB0aGUgaGFyZHdhcmUgaXQncyBtZWFudCB0byBjb250cm9sLiBVbmRlcnN0YW5kaW5nIHRoaXMgdGFibGUsIGl0cyBzdHJ1Y3R1cmUsIGFuZCBpdHMgZW50cmllcywgaXMgZnVuZGFtZW50YWwgdG8gYW55IGluLWRlcHRoIGFuYWx5c2lzIG9yIG1vZGlmaWNhdGlvbi4gVGhpcyBpcyB3aGVyZSBJJ2xsIGdldCBhbiBpbml0aWFsIHNlbnNlIG9mIHRoZSBzdXBwb3J0ZWQgc2lsaWNvbiwgYW5kIGhvdyB0aGUgZHJpdmVyIGhhcyBiZWVuIGFyY2hpdGVjdGVkIHRvIGhhbmRsZSBkaWZmZXJlbnQgaGFyZHdhcmUgY29uZmlndXJhdGlvbnMuIFRpbWUgdG8gZGlnIGluIGFuZCBzZWUgd2hhdCB0cmVhc3VyZXMgdGhpcyB0YWJsZSBob2xkcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjUyNTksIk91dHB1dFRva2VucyI6NTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQxODoxNDozNi4xMjE3Mzg0OTRaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQzMTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxOTAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxOTA6XFx0ICogRGVzY3JpcHRpb246IHRoaXMgZnVuY3Rpb24gY2FsbHMgdGhlIG1haW4gdG8gZnJlZSB0aGUgbmV0IHJlc291cmNlcy5cXG4gMTkxOlxcdCAqL1xcbiAxOTI6XFx0c3RhdGljIHZvaWQgc3RtbWFjX3BjaV9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuIDE5MzpcXHR7XFxuIDE5NDpcXHRcXHRzdG1tYWNfZHZyX3JlbW92ZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG4gMTk1OlxcdH1cXG4gMTk2OlxcdFxcbiAxOTc6XFx0Lyogc3ludGhldGljIElELCBubyBvZmZpY2lhbCB2ZW5kb3IgKi9cXG4gMTk4OlxcdCNkZWZpbmUgUENJX1ZFTkRPUl9JRF9TVE1NQUNcXHRcXHQweDA3MDBcXG4gMTk5OlxcdFxcbiAyMDA6XFx0I2RlZmluZSBQQ0lfREVWSUNFX0lEX1NUTU1BQ19TVE1NQUNcXHRcXHQweDExMDhcXG4gMjAxOlxcdCNkZWZpbmUgUENJX0RFVklDRV9JRF9TWU5PUFNZU19HTUFDNV9JRFxcdFxcdDB4NzEwMlxcbiAyMDI6XFx0XFxuIDIwMzpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgc3RtbWFjX2lkX3RhYmxlW10gPSB7XFxuIDIwNDpcXHRcXHR7IFBDSV9ERVZJQ0VfREFUQShTVE1NQUMsIFNUTU1BQywgXFx1MDAyNnN0bW1hY19wY2lfaW5mbykgfSxcXG4gMjA1OlxcdFxcdHsgUENJX0RFVklDRV9EQVRBKFNUTUlDUk8sIE1BQywgXFx1MDAyNnN0bW1hY19wY2lfaW5mbykgfSxcXG4gMjA2OlxcdFxcdHsgUENJX0RFVklDRV9EQVRBKFNZTk9QU1lTLCBHTUFDNV9JRCwgXFx1MDAyNnNucHNfZ21hYzVfcGNpX2luZm8pIH0sXFxuIDIwNzpcXHRcXHR7fVxcbiAyMDg6XFx0fTtcXG4gMjA5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQxODoxNDozNi4xMjE4ODI5NjRaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDY4NDg2MTczNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipSZWFjaGluZyBhbmQgRnV6emluZyB0aGUgU1RNTUFDIERyaXZlcioqXG5cbk9rYXksIHNvIEkndmUgZ290IHN5bnRoZXRpYyBJRHMgYW5kIFNUTUlDUk8gTUFDIElEcywgdGhhdCdzIGludGVyZXN0aW5nLiBXaXRoIFN5emthbGxlciwgSSBrbm93IEkgY2FuIGluamVjdCBQQ0kgZGV2aWNlcyB3aXRoIGFyYml0cmFyeSBJRHMsIHRoYW5rcyB0byBgc3l6X3BjaV9zZXR1cGAuIFRoYXQncyB0aGUga2V5LiBUaGF0IG1lYW5zIEkgY2FuICpkZWZpbml0ZWx5KiBwcm9iZSB0aGUgYHN0bW1hY19wY2lfZHJpdmVyYC4gVGhlIGJyZWFkY3J1bWIgdHJhaWwgY29udGludWVzOiBgc3RtbWFjX3BjaV9wcm9iZWAgd2lsbCB0aGVuIGNhbGwgYHN0bW1hY19kdnJfcHJvYmVgLCB3aGljaCBpbiB0dXJuIGNhbGxzIGBzdG1tYWNfc2V0X2dzb19mZWF0dXJlc2AuIFRoZW4sIEkgY2FuIHJlYWNoIGBzdG1tYWNfc2V0X2ZlYXR1cmVzYCB2aWEgbmV0bGluay4gQmluZ28g4oCTIHRoZSBjb2RlIGlzIHJlYWNoYWJsZSBhbmQgZnV6emFibGUuIE5vdywgdGltZSB0byBmaWd1cmUgb3V0IHRoZSByaWdodCBjb25maWd1cmF0aW9uLiBJJ2xsIG5lZWQgYFNUTU1BQ19FVEhgLCBgU1RNTUFDX1BDSWAgKHRoYXQncyBjcnVjaWFsKSwgYW5kIHBvdGVudGlhbGx5IGBEV01BQ19HRU5FUklDYCAobWlnaHQgbm90IGJlIHN0cmljdGx5IG5lY2Vzc2FyeSB3aXRoIFBDSSwgYnV0IGl0J3MgYWx3YXlzIGdvb2QgdG8gaGF2ZSBvcHRpb25zKS4gSSdsbCBkb3VibGUgY2hlY2sgYFNUTU1BQ19QQ0lgIGluIEtjb25maWcgdG8gbWFrZSBzdXJlIGl0J3Mgc2V0IHVwIGNvcnJlY3RseS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU5MDIsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQxODoxNDo0MC44MDY3NDc5OThaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3NzAxMjE2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBTVE1NQUNfUENJXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTM5OD1jb25maWcgRFdNQUNfTU9UT1JDT01NXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQwNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjQwNzpjb25maWcgU1RNTUFDX1BDSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDA4LVxcdHRyaXN0YXRlIFxcXCJTVE1NQUMgUENJIGJ1cyBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQxODoxNDo0MC44NjQ0NTM4NTRaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQ1Mzg3MTIwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIGRlcGVuZGVuY2llcyBmb3IgYFNUTU1BQ19QQ0lgLlxuXG4qKkRlbHZpbmcgaW50byBTVE1NQUNfUENJIERlcGVuZGVuY2llcyoqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzIGFuZCBkaXNzZWN0IHRoZXNlIGRlcGVuZGVuY2llcy4gRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyAqcmVxdWlyZWQqIGZvciB0aGlzIFBDSS1iYXNlZCBTVE1NQUMgZHJpdmVyIHRvIGZ1bmN0aW9uLiBJJ20gdGhpbmtpbmcgYmV5b25kIHRoZSBvYnZpb3VzIGtlcm5lbCBjb21wb25lbnRzLCB0b28uIEkgbmVlZCB0byBiZSBzdXJlIEkga25vdyB3aGljaCBoZWFkZXJzLCBsaWJyYXJpZXMsIGFuZCBwb3RlbnRpYWxseSBldmVuIHNwZWNpZmljIGhhcmR3YXJlIGZlYXR1cmVzIGFyZSBleHBlY3RlZC4gSSdsbCBuZWVkIHRvIGlkZW50aWZ5OiBhbnkgcmVxdWlyZWQgZGV2aWNlIHRyZWUgYmluZGluZ3MsIHBvdGVudGlhbCByZWdpc3RlciBtYXBzIHRoYXQgYXJlIGFzc3VtZWQsIElSUSBoYW5kbGluZyBtZWNoYW5pc21zLCBhbnkgRE1BLXJlbGF0ZWQgcmVxdWlyZW1lbnRzLlxuXG5JJ2xsIGJlIGxvb2tpbmcgZm9yIGRpcmVjdCBkZXBlbmRlbmNpZXMsIGluZGlyZWN0IG9uZXMsIGFuZCB0aG9zZSB0aGF0IGFyZSBjb25kaXRpb25hbGx5IGxpbmtlZCwgYmFzZWQgb24gb3RoZXIgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJdCdzIGNydWNpYWwgdG8gbWFwIG91dCBhbGwgdGhlIHRvdWNocG9pbnRzLiBBIG1pc3NlZCBkZXBlbmRlbmN5IGNhbiBtYW5pZmVzdCBhcyBhIHN1YnRsZSwgZnJ1c3RyYXRpbmcgYnVnIHRoYXQgaXMgaGFyZCB0byB0cmFjayBkb3duLiBJJ2xsIG5lZWQgdG8ga25vdyB3aGV0aGVyIGFueSBvZiB0aGVzZSBjb21wb25lbnRzIGludHJvZHVjZSBhbnkgc2lnbmlmaWNhbnQgY29uZmxpY3RzIHdpdGggb3RoZXIgZHJpdmVycyBvciBjb3JlIGtlcm5lbCBtb2R1bGVzLiBUaGlzIGlzIG5vdCBqdXN0IGFib3V0IGZ1bmN0aW9uYWxpdHk7IGl0J3MgYWJvdXQgc3RhYmlsaXR5IGFuZCBtYWludGFpbmFiaWxpdHkuIExldCdzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjQ5NywiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDE4OjE0OjQ1LjMxODMyNzY1M1oiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NjM5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDQwMCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDQwMDpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiA0MDE6XFx0XFx0c2VsZWN0IE1PVE9SQ09NTV9QSFlcXG4gNDAyOlxcdFxcdHNlbGVjdCBTVE1NQUNfTElCUENJXFxuIDQwMzpcXHRcXHRoZWxwXFxuIDQwNDpcXHRcXHQgIFRoaXMgZW5hYmxlcyBnbHVlIGRyaXZlciBmb3IgTW90b3Jjb21tIERXTUFDLWJhc2VkIFBDSSBFdGhlcm5ldFxcbiA0MDU6XFx0XFx0ICBjb250cm9sbGVycy4gQ3VycmVudGx5IG9ubHkgWVQ2ODAxIGlzIHN1cHBvcnRlZC5cXG4gNDA2OlxcdFxcbiA0MDc6XFx0Y29uZmlnIFNUTU1BQ19QQ0lcXG4gNDA4OlxcdFxcdHRyaXN0YXRlIFxcXCJTVE1NQUMgUENJIGJ1cyBzdXBwb3J0XFxcIlxcbiA0MDk6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lcXG4gNDEwOlxcdFxcdGRlcGVuZHMgb24gQ09NTU9OX0NMS1xcbiA0MTE6XFx0XFx0c2VsZWN0IFNUTU1BQ19MSUJQQ0lcXG4gNDEyOlxcdFxcdGhlbHBcXG4gNDEzOlxcdFxcdCAgVGhpcyBzZWxlY3RzIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBidXMgc3VwcG9ydCBmb3IgdGhlIHN0bW1hYyBkcml2ZXIuXFxuIDQxNDpcXHRcXHQgIFRoaXMgZHJpdmVyIHdhcyB0ZXN0ZWQgb24gWExJTlggWEMyVjMwMDAgRkYxMTUyQU1UMDIyMVxcbiA0MTU6XFx0XFx0ICBEMTIxNTk5NEEgVklSVEVYIEZQR0EgYm9hcmQgYW5kIFNOUFMgUW9TIElQSyBQcm90b3R5cGluZyBLaXQuXFxuIDQxNjpcXHRcXG4gNDE3OlxcdFxcdCAgSWYgeW91IGhhdmUgYSBjb250cm9sbGVyIHdpdGggdGhpcyBpbnRlcmZhY2UsIHNheSBZIG9yIE0gaGVyZS5cXG4gNDE4OlxcdFxcbiA0MTk6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBOLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQxODoxNDo0NS4zMTg0MDUzMzNaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTkxMjUwMDk1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFNUTU1BQyBEcml2ZXIncyBGZWF0dXJlIFNldHRpbmcqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBTVE1NQUNfUENJYCBjb25maWd1cmF0aW9uLiBJdCdzIHByZXR0eSBzdHJhaWdodGZvcndhcmQg4oCTIGl0IHJlbGllcyBvbiBgUENJYCBhbmQgYENPTU1PTl9DTEtgLCB3aGljaCBtYWtlcyBzZW5zZS4gSSdsbCBtYWtlIHN1cmUgdG8gZW5hYmxlIGBTVE1NQUNfRVRIYCwgYFNUTU1BQ19QQ0lgLCBgU1RNTUFDX1BMQVRGT1JNYCwgYW5kIGBEV01BQ19HRU5FUklDYCB0byBnZXQgZXZlcnl0aGluZyB3b3JraW5nLlxuXG5Ob3csIGFib3V0IHRoZXNlIEZvY3VzU3ltYm9scy4uLiB0aGUgcGF0Y2ggaXMgdG91Y2hpbmcgYHN0bW1hY19zZXRfZ3NvX3R5cGVzYC4gVGhhdCBmdW5jdGlvbidzIGNhbGxlZCBmcm9tIGBzdG1tYWNfc2V0X2dzb19mZWF0dXJlc2AgYW5kIGBzdG1tYWNfc2V0X2ZlYXR1cmVzYC4gSSB0aGluayBJIGNhbiBmb2N1cyBteSBhbmFseXNpcyBvbiBgc3RtbWFjX3NldF9mZWF0dXJlc2AsIGFuZCBtYXliZSBjb25zaWRlciBgc3RtbWFjX3NldF9nc29fZmVhdHVyZXNgLCBzaW5jZSB0aGF0IGlzIGNhbGxlZCBkdXJpbmcgdGhlIGluaXRpYWwgcHJvYmUsIGFuZCB0aGF0IHdpbGwgb25seSBnZXQgY2FsbGVkIG9uY2UuIGBzdG1tYWNfc2V0X2ZlYXR1cmVzYCBnZXRzIGNhbGxlZCB0aHJvdWdoIGAubmRvX3NldF9mZWF0dXJlc2AsIHdoaWNoIGlzIGludGVyZXN0aW5nLlxuXG5MZXQgbWUganVzdCBxdWlja2x5IGNoZWNrIGlmIGBzdG1tYWNfc2V0X2dzb190eXBlc2AgaXMgc3RhdGljLi4uIHllcCwgaXQgaXM6IGBzdGF0aWMgdm9pZCBzdG1tYWNfc2V0X2dzb190eXBlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIG5ldGRldl9mZWF0dXJlc190IGZlYXR1cmVzKWAuIFNvIGl0J3MgaW50ZXJuYWwgdG8gdGhlIGZpbGUuIFRoYXQgbWVhbnMgSSBuZWVkIHRvIHBheSBjbG9zZXIgYXR0ZW50aW9uIHRvIHRoZSBmdW5jdGlvbnMgaXQgY2FsbHMuIFNpbmNlIHRoYXQgaXMgc3RhdGljLCBJIGNhbiBwcm9iYWJseSBpZ25vcmUgdGhhdC4gU28gSSB3aWxsIGZvY3VzIG9uIGBzdG1tYWNfc2V0X2ZlYXR1cmVzYC4gQW5kIGBzdG1tYWNfc2V0X2dzb19mZWF0dXJlc2AuIFdhaXQsIGFjdHVhbGx5IHRoYXQgaXMgYWxzbyBzdGF0aWMhXG5cbk9rYXksIGxldCdzIHNlZSwgd2hhdCBhYm91dCBgc3RtbWFjX3NldF9mZWF0dXJlc2A/IEknbGwgY2hlY2sgaWYgdGhhdCBpcyBzdGF0aWMsIGFuZCB5ZXMgaXQgaXM6IGBzdGF0aWMgaW50IHN0bW1hY19zZXRfZmVhdHVyZXMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgbmV0ZGV2X2ZlYXR1cmVzX3QgZmVhdHVyZXMpYC4gSG93ZXZlciwgaXQncyBhc3NpZ25lZCB0byBgLm5kb19zZXRfZmVhdHVyZXNgLCBzbyBpdCdzIGEgcGFydCBvZiB0aGUgZHJpdmVyJ3MgZXhwb3NlZCBpbnRlcmZhY2UuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgZHJpdmVyJ3MgZmVhdHVyZXMgYXJlIGNvbmZpZ3VyZWQgdXNpbmcgdGhhdC4gT2theSwgSSB3aWxsIGxvb2sgaW4gYHN0bW1hY19tYWluLmNgIGZvciBgc3RtbWFjX3NldF9mZWF0dXJlc2AuIEkgd2lsbCBsb29rIGZvciBhbnkgbm9uLXN0YXRpYyBmdW5jdGlvbnMgYXMgd2VsbC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjcxMTQsIk91dHB1dFRva2VucyI6NDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNTksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQxODoxNDo1MS4yMzA5MDg4NzVaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI5MTc1OTgwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNfc2V0X2ZlYXR1cmVzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz02MTU4PXN0YXRpYyBuZXRkZXZfZmVhdHVyZXNfdCBzdG1tYWNfZml4X2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTYxNzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo2MTgwOnN0YXRpYyBpbnQgc3RtbWFjX3NldF9mZWF0dXJlcyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjE4MS1cXHRcXHRcXHQgICAgICAgbmV0ZGV2X2ZlYXR1cmVzX3QgZmVhdHVyZXMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTczMDk9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBzdG1tYWNfbmV0ZGV2X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzMxNS1cXHQubmRvX2ZpeF9mZWF0dXJlcyA9IHN0bW1hY19maXhfZmVhdHVyZXMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3MzE2OlxcdC5uZG9fc2V0X2ZlYXR1cmVzID0gc3RtbWFjX3NldF9mZWF0dXJlcyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTczMTctXFx0Lm5kb19zZXRfcnhfbW9kZSA9IHN0bW1hY19zZXRfcnhfbW9kZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMTg6MTQ6NTEuNTIyNjc1MjI1WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY1OTIxMzYzODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBTVE0gTUFDIERyaXZlciBBUEkqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIFNUTSBNQUMgZHJpdmVyIGNvZGUsIHNwZWNpZmljYWxseSBjb25zaWRlcmluZyBiZXN0IHByYWN0aWNlcyBmb3IgQVBJIGRlc2lnbi4gVGhlIGluc3RydWN0aW9ucyBlbXBoYXNpemUgcHJlZmVycmluZyBub24tc3RhdGljLCBub24taW5saW5lZCBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zLiBSaWdodC4gVGhhdCBtYWtlcyBwZXJmZWN0IHNlbnNlIGZvciBtYWludGFpbmFiaWxpdHkgYW5kIGRpc2NvdmVyYWJpbGl0eS4gTm93LCBsZXQncyBzZWUuIGBzdG1tYWNfc2V0X2ZlYXR1cmVzYCBpcyBhIHN0YXRpYyBmdW5jdGlvbiwgYnV0IGl0J3MgYW4gZW50cnlwb2ludCBmb3IgYC5uZG9fc2V0X2ZlYXR1cmVzYC4gU28sIHNpbmNlIHRoZSBlbnRyeXBvaW50IGl0c2VsZiBpcyBzdGF0aWMsIHdlICpjYW4qIGxpc3QgaXQsIGFzIHBlciB0aGUgcnVsZXMuIFRoYXQncyBnb29kIHRvIGtub3cuXG5cbkJ1dCBub3cgSSBuZWVkIHRvIGRldGVybWluZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIG5vbi1zdGF0aWMgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gZmVhdHVyZSBzZXR0aW5nIHRoYXQgd2UgY291bGQgZXhwb3NlLiBMZXQncyBzZWUuLi4gQWgsIGhlcmUncyBvbmUhIGBzdG1tYWNfZHZyX3Byb2JlYCBpcyBub24tc3RhdGljLCBhbmQgaXQgY2FsbHMgYHN0bW1hY19zZXRfZ3NvX2ZlYXR1cmVzYCwgd2hpY2ggaXMsIGluIHR1cm4sIGNhbGxlZCB2aWEgYF9fc3RtbWFjX2R2cl9wcm9iZWAuIEludGVyZXN0aW5nLiBJIHNob3VsZCBwcm9iYWJseSBkaWcgaW50byBgc3RtbWFjX2R2cl9wcm9iZWAgYSBiaXQgZnVydGhlciB0byBzZWUgaG93IGl0J3MgdXNlZCBhbmQgd2hhdCBpdCdzIHJlc3BvbnNpYmxlIGZvci4gVGhpcyBjb3VsZCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIG92ZXJhbGwgZmVhdHVyZSBpbnRlcmFjdGlvbiBpbiB0aGUgZHJpdmVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODM3NCwiT3V0cHV0VG9rZW5zIjo0OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQxODoxNDo1OC4xMTQ4MTQ1MVoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg5NTM5NTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RtbWFjX2R2cl9wcm9iZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9Nzc5Mz1FWFBPUlRfU1lNQk9MX0dQTChzdG1tYWNfcGxhdF9kYXRfYWxsb2MpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzc5NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjc3OTU6c3RhdGljIGludCBfX3N0bW1hY19kdnJfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2aWNlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzc5Ni1cXHRcXHRcXHQgICAgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MDk3LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6ODA5ODogKiBzdG1tYWNfZHZyX3Byb2JlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MDk5LSAqIEBkZXY6IGRldmljZSBwb2ludGVyXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgxMDYtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo4MTA3OmludCBzdG1tYWNfZHZyX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgxMDgtXFx0XFx0ICAgICBzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyAqcmVzKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MTE3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6ODExODpcXHRyZXQgPSBfX3N0bW1hY19kdnJfcHJvYmUoZGV2LCBwbGF0X2RhdCwgcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgxMTktXFx0aWYgKHJldCBcXHUwMDI2XFx1MDAyNiBwbGF0X2RhdC1cXHUwMDNlZXhpdClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODEyMy19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo4MTI0OkVYUE9SVF9TWU1CT0xfR1BMKHN0bW1hY19kdnJfcHJvYmUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODEyNS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMTg6MTQ6NTguMTYzNzc0MzI2WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc1NTA3ODUxMDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgU1RNTUFDIERyaXZlcioqXG5cbk9rYXksIHNvIEkgc2VlIHRoYXQgYHN0bW1hY19kdnJfcHJvYmVgIGlzIGV4cG9ydGVkLCB0aGF0J3MgZ29vZCB0byBrbm93LiBCdXQgdGhlIGNvcmUgY2hhbmdlIGFwcGVhcnMgdG8gYmUgY2VudGVyZWQgYXJvdW5kIGBzdG1tYWNfc2V0X2ZlYXR1cmVzYC4gSSBzaG91bGQgcHJvYmFibHkgbGlzdCBib3RoIGBzdG1tYWNfc2V0X2ZlYXR1cmVzYCBhbmQgYHN0bW1hY19kdnJfcHJvYmVgIGluIG15IHN1bW1hcnkuXG5cbldhaXQsIGxldCBtZSBqdXN0IGRvdWJsZS1jaGVjayBpZiBgc3RtbWFjX3NldF9mZWF0dXJlc2AgaXMgZGVjbGFyZWQgYXMgc3RhdGljLiBBaCB5ZXMsIGl0IGlzLiBCdXQsIGZyb20gdGhlIG5ldCBjb3JlJ3MgcG9pbnQgb2YgdmlldywgaXQncyB1c2VkIGFzIHRoZSBgLm5kb19zZXRfZmVhdHVyZXNgIGNhbGxiYWNrLCBzbyBpdCdzIGEgdmFsaWQgQVBJIGVudHJ5cG9pbnQgZm9yIHJldmlldy4gTGlzdGluZyBpdCBpcyBwZXJmZWN0bHkgYWNjZXB0YWJsZS5cblxuTm93LCBsZXQncyByZXZpZXcgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ20gY2xlYXIgb24gdGhlIGludGVyZGVwZW5kZW5jaWVzLiBJJ20gbG9va2luZyBhdCBgU1RNTUFDX0VUSGAsIGBTVE1NQUNfUENJYCwgYFNUTU1BQ19QTEFURk9STWAsIGFuZCBgRFdNQUNfR0VORVJJQ2AuIEFyZSB0aGVyZSBhbnkgaGlkZGVuIGRlcGVuZGVuY2llcz9cblxuQWxyaWdodCwgYFNUTU1BQ19FVEhgIGRlcGVuZHMgb24gYEhBU19JT01FTWAsIGBIQVNfRE1BYCwgYFBUUF8xNTg4X0NMT0NLX09QVElPTkFMYCwgYW5kIGBFVEhUT09MX05FVExJTktgLiBUaG9zZSBzZWVtIHByZXR0eSBzdGFuZGFyZCBhbmQgYXJlIHVzdWFsbHkgZW5hYmxlZCwgc28gbm8gcmVhbCBzdXJwcmlzZXMgdGhlcmUuIGBTVE1NQUNfUENJYCBkZXBlbmRzIG9uIGBQQ0lgIGFuZCBgQ09NTU9OX0NMS2AuIE5vdGVkLiBgU1RNTUFDX1BMQVRGT1JNYCBoYXMgbm8gZXh0cmEgZGVwZW5kZW5jaWVzIG9uIGl0cyBvd24uIEFuZCwgZmluYWxseSwgYERXTUFDX0dFTkVSSUNgIGRlcGVuZHMgb24gYFNUTU1BQ19QTEFURk9STWAuIEkgdGhpbmsgdGhhdCBjb3ZlcnMgYWxsIHRoZSBiYXNlcy4gVGltZSB0byBkb3VibGUtY2hlY2sgYERXTUFDX0dFTkVSSUNgIGluIGBLY29uZmlnYCBmb3IgYW55IG90aGVyIGNvbnRleHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5NDY4LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjgwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDE4OjE1OjA1LjcxNDU2MTM5M1oiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTk3ODQ0NTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIERXTUFDX0dFTkVSSUNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9NDQ9Y29uZmlnIERXTUFDX0RXQ19RT1NfRVRIXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTUxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NTI6Y29uZmlnIERXTUFDX0dFTkVSSUNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTUzLVxcdHRyaXN0YXRlIFxcXCJHZW5lcmljIGRyaXZlciBmb3IgRFdNQUNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDE4OjE1OjA1Ljc3NDM0Nzk1OVoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTQxMjYwMTA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcyBvbiB0aGUgbWF0dGVyOlxuXG4qKkFuYWx5emluZyBgRFdNQUNfR0VORVJJQ2AgRGVwZW5kZW5jaWVzKipcblxuUmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZXhhbWluZSB0aGUgZGVwZW5kZW5jaWVzIHNwZWNpZmljYWxseSBhc3NvY2lhdGVkIHdpdGggYERXTUFDX0dFTkVSSUNgLiBXZSBuZWVkIHRvIGRpc3NlY3QgaXRzIGJ1aWxkaW5nIGJsb2NrcyBhbmQgdW5kZXJzdGFuZCB3aGF0IG90aGVyIGNvbXBvbmVudHMsIGxpYnJhcmllcywgb3IgY29uZmlndXJhdGlvbnMgYXJlIGVzc2VudGlhbCBmb3IgaXRzIG9wZXJhdGlvbi4gSSdtIGdvaW5nIHRvIGxvb2sgYXQgZXZlcnl0aGluZyB0aGF0IGZlZWRzIGludG8gYERXTUFDX0dFTkVSSUNgLCBzbyBJIGNhbiB1bmRlcnN0YW5kIGl0cyBwbGFjZSBpbiB0aGUgc3lzdGVtLiBUaGlzIHdpbGwsIG9mIGNvdXJzZSwgaW5mb3JtIGRlY2lzaW9ucyBhYm91dCBpdHMgaW1wbGVtZW50YXRpb24sIGRlcGxveW1lbnQsIG9yIG1vZGlmaWNhdGlvbi4gTGV0J3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwMjk4LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMTg6MTU6MDguOTE1NjEwMjY2WiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY3NDQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNTAsXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgNTA6XFx0XFx0ICBTdXBwb3J0IGZvciBjaGlwcyB1c2luZyB0aGUgc25wcyxkd2MtcW9zLWV0aGVybmV0LnR4dCBEVCBiaW5kaW5nLlxcbiAgNTE6XFx0XFxuICA1MjpcXHRjb25maWcgRFdNQUNfR0VORVJJQ1xcbiAgNTM6XFx0XFx0dHJpc3RhdGUgXFxcIkdlbmVyaWMgZHJpdmVyIGZvciBEV01BQ1xcXCJcXG4gIDU0OlxcdFxcdGRlZmF1bHQgU1RNTUFDX1BMQVRGT1JNXFxuICA1NTpcXHRcXHRoZWxwXFxuICA1NjpcXHRcXHQgIEdlbmVyaWMgRFdNQUMgZHJpdmVyIGZvciBwbGF0Zm9ybXMgdGhhdCBkb24ndCByZXF1aXJlIGFueVxcbiAgNTc6XFx0XFx0ICBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlIHRvIGZ1bmN0aW9uIG9yIGlzIHVzaW5nIHBsYXRmb3JtXFxuICA1ODpcXHRcXHQgIGRhdGEgZm9yIHNldHVwLlxcbiAgNTk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDE4OjE1OjA4LjkxNTY3ODc3NloiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NDYyNjkyNzg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBhIGZpcnN0LXBlcnNvbiBleHBlcnQgc3VtbWFyeTpcblxuKipEaWdnaW5nIGludG8gdGhlIERXTUFDIENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCBzbyB0aGUgYERXTUFDX0dFTkVSSUNgIHNldHRpbmcgZGVmYXVsdHMgdG8gYFNUTU1BQ19QTEFURk9STWAuIFRoYXQncyB0aGUgYmFzZWxpbmUsIGFuZCBpdOKAmXMgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucy4gTXkgbmV4dCBzdGVwLCBuYXR1cmFsbHksIGlzIHRvIGRpc3NlY3QgYFNUTU1BQ19QTEFURk9STWAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBkZXBlbmRlbmNpZXMsIHRoZSB1bmRlcmx5aW5nIGFzc3VtcHRpb25zLCBhbmQgaG93IHRoaXMgcGxhdGZvcm0gc2V0dGluZyBpbmZsdWVuY2VzIHRoZSBvdmVyYWxsIE1BQyBjb25maWd1cmF0aW9uLiBUaGlzIGlzbid0IGp1c3QgYWJvdXQga25vd2luZyB3aGF0J3MgZW5hYmxlZCwgYnV0IHVuZGVyc3RhbmRpbmcgKndoeSogaXQncyBlbmFibGVkLiBXaGF0IHNwZWNpZmljIGhhcmR3YXJlIG9yIHNvZnR3YXJlIGVsZW1lbnRzIGlzIHRoaXMgdGllZCB0bz8gV2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBmb3IgcG93ZXIgbWFuYWdlbWVudCwgaW50ZXJydXB0IGhhbmRsaW5nLCBhbmQgb3ZlcmFsbCBzeXN0ZW0gaW50ZWdyYXRpb24/IExldCdzIHNlZSB3aGF0J3MgdW5kZXIgdGhlIGhvb2Qgb2YgYFNUTU1BQ19QTEFURk9STWAuIEkgbmVlZCB0byBiZSBzdXJlIHRoaXMgaXMgY29ycmVjdCBmb3IgbXkgdXNlIGNhc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwNjQ3LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQxODoxNToxNS4zNzgzNzUxNVoiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NzM3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI1LFxuICBcIkxpbmVDb3VudFwiOiAxMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDI1OlxcdFxcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIFNUTU1BQyBTZWxmdGVzdHMgdXNpbmcgZXRodG9vbC4gRW5hYmxlIHRoaXNcXG4gIDI2OlxcdFxcdCAgZmVhdHVyZSBpZiB5b3UgYXJlIGZhY2luZyBwcm9ibGVtcyB3aXRoIHlvdXIgSFcgYW5kIHN1Ym1pdCB0aGUgdGVzdFxcbiAgMjc6XFx0XFx0ICByZXN1bHRzIHRvIHRoZSBuZXRkZXYgTWFpbGluZyBMaXN0LlxcbiAgMjg6XFx0XFxuICAyOTpcXHRjb25maWcgU1RNTUFDX1BMQVRGT1JNXFxuICAzMDpcXHRcXHR0cmlzdGF0ZSBcXFwiU1RNTUFDIFBsYXRmb3JtIGJ1cyBzdXBwb3J0XFxcIlxcbiAgMzE6XFx0XFx0c2VsZWN0IE1GRF9TWVNDT05cXG4gIDMyOlxcdFxcdGRlZmF1bHQgeVxcbiAgMzM6XFx0XFx0aGVscFxcbiAgMzQ6XFx0XFx0ICBUaGlzIHNlbGVjdHMgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGJ1cyBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlci5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMTg6MTU6MTUuMzc4NDQ1MjVaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzYyNDAzOTM2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBTdG1tYWMgRHJpdmVyIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgdGhlIGRlZmF1bHQgYmVoYXZpb3IgaGluZ2VzIG9uIGBTVE1NQUNfRVRIYCAtIGlmIHRoYXQncyBlbmFibGVkLCBpdCBkZWZhdWx0cyB0byAneScuIFNvLCBmb3IgZnV6emluZywgSSdsbCBuZWVkIHRvIG1ha2Ugc3VyZSB0aG9zZSBjb25maWd1cmF0aW9ucyBhcmUgZW5hYmxlZC4gIFRoYXQgbWVhbnMgdGhlIGtleSBjb25maWdzIHRvIGVuYWJsZSB3aWxsIGJlIGBTVE1NQUNfRVRIYCwgYFNUTU1BQ19QQ0lgLCBgU1RNTUFDX1BMQVRGT1JNYCwgYW5kIGBEV01BQ19HRU5FUklDYC5cblxuTm93LCBhIHF1aWNrIGNoZWNrIGhlcmUuIEl0IGxvb2tzIGxpa2UgYFNUTU1BQ19QQ0lgIGFjdHVhbGx5IHB1bGxzIGluIGBNT1RPUkNPTU1fUEhZYCBhbmQgYFNUTU1BQ19MSUJQQ0lgLCB3aGljaCBkZXBlbmRzIG9uIGBQSFlMSUJgLiBJIHdpbGwgbmVlZCB0byBjaGVjayBvbiB0aGUgYXZhaWxhYmlsaXR5IG9mIGBNT1RPUkNPTU1fUEhZYCB1bmRlciB0aG9zZSBjb25maWd1cmF0aW9ucy4gTGV0J3Mga2VlcCBpdCBjbGVhbiBmb3Igbm93IGFuZCBqdXN0IHN0aWNrIHRvIHRoZSBsaXN0ZWQgY29uZmlncywgYW5kIHJldmlzaXQgaXQgbGF0ZXIgaWYgbmVjZXNzYXJ5LlxuXG5OZXh0LCBJIG5lZWQgdG8gY29uZmlybSB0aGUgY3JpdGljYWwgZnVuY3Rpb25zLiAgYHN0bW1hY19zZXRfZmVhdHVyZXNgIHNlZW1zIGxpa2UgdGhlIHJpZ2h0IHBsYWNlIHRvIGZvY3VzLiBZZXAsIGl0J3MgdGhlIGAubmRvX3NldF9mZWF0dXJlc2AgY2FsbGJhY2ssIHRyaWdnZXJlZCBieSBldGh0b29sIGZlYXR1cmUgY2hhbmdlcy4gVGhlIHBhdGNoIHNwZWNpZmljYWxseSBtb2RpZmllcyBgc3RtbWFjX3NldF9nc29fdHlwZXNgLCB3aGljaCBnZXRzIGNhbGxlZCBmcm9tIGBzdG1tYWNfc2V0X2ZlYXR1cmVzYCBhbmQgYHN0bW1hY19zZXRfZ3NvX2ZlYXR1cmVzYC4gR29vZCwgYHN0bW1hY19zZXRfZmVhdHVyZXNgIGFuZCBgc3RtbWFjX2R2cl9wcm9iZWAgaXQgaXMuXG5cbkxldCdzIGRvIGEgcXVpY2sgc2NhbiB0byBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnl0aGluZyBlbHNlIHJlbGV2YW50LiBPa2F5LCBgc3RtbWFjX3NldF9nc29fZmVhdHVyZXNgIGlzIGEgc3RhdGljIGZ1bmN0aW9uLCBidXQgaXQgKmlzKiBjYWxsZWQgZnJvbSBgX19zdG1tYWNfZHZyX3Byb2JlYC4gR290IGl0LiBJJ2xsIGluY2x1ZGUgYm90aCBgc3RtbWFjX3NldF9mZWF0dXJlc2AgYW5kIGBzdG1tYWNfZHZyX3Byb2JlYC5cblxuQWxyaWdodCwgbGV0J3Mgd3JhcCB0aGlzIHVwLiAgKipXb3J0aEZ1enppbmcqKjogQWJzb2x1dGVseS4gVGhpcyBwYXRjaCBpcyBjaGFuZ2luZyB0aGUgbG9naWMgZm9yIHNldHRpbmcgR1NPIHR5cGVzLCBhbmQgdGhlIGxvZ2ljIGlzIGJhc2VkIG9uIG5ldGRldiBmZWF0dXJlcyB3aXRoaW4gdGhlIHN0bW1hYyBkcml2ZXIuIFRoYXQgcmVwcmVzZW50cyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEga2V5IHBhcnQgb2YgYW4gRXRoZXJuZXQgZHJpdmVyIGFuZCBpcyByZWFjaGFibGUgdGhyb3VnaCBlbXVsYXRpb24gKHZpYSBgc25wcyxkd21hY2ApIG9yIGJ5IGluc2VydGluZyBhIFBDSSBkZXZpY2UuICAqKkZvY3VzU3ltYm9scyoqOiBgc3RtbWFjX3NldF9mZWF0dXJlc2AgYW5kIGBzdG1tYWNfZHZyX3Byb2JlYC4gICoqRW5hYmxlQ29uZmlncyoqOiBgU1RNTUFDX0VUSGAsIGBTVE1NQUNfUENJYCwgYFNUTU1BQ19QTEFURk9STWAsIGFuZCBgRFdNQUNfR0VORVJJQ2AuIFRoaXMgaXMgYSBzb2xpZCBzdGFydGluZyBwb2ludCBmb3IgZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzEwNzMsIk91dHB1dFRva2VucyI6MTQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMTg6MTU6MjMuMDAyNDg3MTQ1WiIsIlNlcSI6MzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzYwNTMxNTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNUTU1BQ19FVEhcIixcbiAgICBcIlNUTU1BQ19QQ0lcIixcbiAgICBcIlNUTU1BQ19QTEFURk9STVwiLFxuICAgIFwiRFdNQUNfR0VORVJJQ1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInN0bW1hY19zZXRfZmVhdHVyZXNcIixcbiAgICBcInN0bW1hY19kdnJfcHJvYmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9naWMgZm9yIHNldHRpbmcgR1NPIHR5cGVzIGJhc2VkIG9uIG5ldGRldiBmZWF0dXJlcyBpbiB0aGUgc3RtbWFjIGRyaXZlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgY29yZSBldGhlcm5ldCBkcml2ZXIgdGhhdCBpcyByZWFjaGFibGUgaW4gUUVNVSB2aWEgdGhlIERlc2lnbldhcmUgTUFDIGVtdWxhdGlvbiAoc25wcyxkd21hYykgb3IgYnkgaW5qZWN0aW5nIGEgUENJIGRldmljZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTVE1NQUNfRVRIXCIsXG4gICAgXCJTVE1NQUNfUENJXCIsXG4gICAgXCJTVE1NQUNfUExBVEZPUk1cIixcbiAgICBcIkRXTUFDX0dFTkVSSUNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzdG1tYWNfc2V0X2ZlYXR1cmVzXCIsXG4gICAgXCJzdG1tYWNfZHZyX3Byb2JlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvZ2ljIGZvciBzZXR0aW5nIEdTTyB0eXBlcyBiYXNlZCBvbiBuZXRkZXYgZmVhdHVyZXMgaW4gdGhlIHN0bW1hYyBkcml2ZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIGNvcmUgZXRoZXJuZXQgZHJpdmVyIHRoYXQgaXMgcmVhY2hhYmxlIGluIFFFTVUgdmlhIHRoZSBEZXNpZ25XYXJlIE1BQyBlbXVsYXRpb24gKHNucHMsZHdtYWMpIG9yIGJ5IGluamVjdGluZyBhIFBDSSBkZXZpY2UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDE4OjE1OjIzLjA3ODU0NjFaIiwiU2VxIjozNywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMDkwMTE5Njk3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMTg6MTU6MjMuMDc4OTk0OTZaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTAwODk2NjY3OTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHVwZGF0ZXMgdGhlIGxvZ2ljIGZvciBzZXR0aW5nIEdTTyB0eXBlcyBpbiB0aGUgc3RtbWFjIGRyaXZlciBiYXNlZCBvbiBgbmV0ZGV2X2ZlYXR1cmVzX3RgIGluc3RlYWQgb2YgYSBib29sZWFuIGB0c29gIGZsYWcuIEl0IG1vZGlmaWVzIGBzdG1tYWNfc2V0X2dzb190eXBlc2AgdG8gY2hlY2sgZm9yIGBORVRJRl9GX1RTT2AsIGBORVRJRl9GX1RTTzZgLCBhbmQgYE5FVElGX0ZfR1NPX1VEUF9MNGAgZmVhdHVyZXMgdG8gYWNjdXJhdGVseSBzZXQgdGhlIGBnc29fZW5hYmxlZF90eXBlc2AgYml0bWFzay4gVGhlc2UgY2hhbmdlcyBvbmx5IGFmZmVjdCBjb250cm9sIGZsb3cgYW5kIGJpdG1hc2sgY2FsY3VsYXRpb25zIGZvciBuZXR3b3JrIGRldmljZSBmZWF0dXJlcy4gVGhlcmUgYXJlIG5vIG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIG5vIGRhdGEgc3RydWN0dXJlcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgYW5kIG5vIGNvbXBsZXggc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcyBjb3VsZCBiZSByZWFkLiBUaGVyZWZvcmUsIHRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4uIFN0YW5kYXJkIEtBU0FOIGFuZCBvdGhlciBidWcgZGV0ZWN0b3JzIGFyZSBzdWZmaWNpZW50IHRvIGNhdGNoIGFueSBwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24gb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3MgaXNzdWVzLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDdkMmE3ZGEwMThmZDUxMTBmMjBhOWVmMTY0OWJmNjI1YTg2MTJmMzhcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEF1ZyA4IDE4OjEzOjQ2IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbmluZGV4IGE3MWYwZGYyNjM3ODUuLjNkMzA0MmFmY2RmNDkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG5AQCAtNDM3MSwxNiArNDM3MSwxOCBAQCBzdGF0aWMgdm9pZCBzdG1tYWNfZmx1c2hfdHhfZGVzY3JpcHRvcnMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBpbnQgcXVldWUpXG4gXHRzdG1tYWNfc2V0X3F1ZXVlX3R4X3RhaWxfcHRyKHByaXYsIHR4X3EsIHF1ZXVlLCB0eF9xLVx1MDAzZWN1cl90eCk7XG4gfVxuIFxuLXN0YXRpYyB2b2lkIHN0bW1hY19zZXRfZ3NvX3R5cGVzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgYm9vbCB0c28pXG4rc3RhdGljIHZvaWQgc3RtbWFjX3NldF9nc29fdHlwZXMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuK1x0XHRcdFx0IG5ldGRldl9mZWF0dXJlc190IGZlYXR1cmVzKVxuIHtcbi1cdGlmICghdHNvKSB7XG4tXHRcdHByaXYtXHUwMDNlZ3NvX2VuYWJsZWRfdHlwZXMgPSAwO1xuLVx0fSBlbHNlIHtcbi1cdFx0LyogTWFuYWdlIG92ZXJzaXplZCBUQ1AgZnJhbWVzIGZvciBHTUFDNCBkZXZpY2UgKi9cbi1cdFx0cHJpdi1cdTAwM2Vnc29fZW5hYmxlZF90eXBlcyA9IFNLQl9HU09fVENQVjQgfCBTS0JfR1NPX1RDUFY2O1xuLVx0XHRpZiAocHJpdi1cdTAwM2VwbGF0LVx1MDAzZWNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX0dNQUM0KVxuLVx0XHRcdHByaXYtXHUwMDNlZ3NvX2VuYWJsZWRfdHlwZXMgfD0gU0tCX0dTT19VRFBfTDQ7XG4tXHR9XG4rXHRwcml2LVx1MDAzZWdzb19lbmFibGVkX3R5cGVzID0gMDtcbitcbitcdGlmIChmZWF0dXJlcyBcdTAwMjYgTkVUSUZfRl9UU08pXG4rXHRcdHByaXYtXHUwMDNlZ3NvX2VuYWJsZWRfdHlwZXMgfD0gU0tCX0dTT19UQ1BWNDtcbitcdGlmIChmZWF0dXJlcyBcdTAwMjYgTkVUSUZfRl9UU082KVxuK1x0XHRwcml2LVx1MDAzZWdzb19lbmFibGVkX3R5cGVzIHw9IFNLQl9HU09fVENQVjY7XG4rXHQvKiBNYW5hZ2Ugb3ZlcnNpemVkIFVEUCBmcmFtZXMgZm9yIEdNQUM0IGRldmljZXMgKi9cbitcdGlmIChmZWF0dXJlcyBcdTAwMjYgTkVUSUZfRl9HU09fVURQX0w0KVxuK1x0XHRwcml2LVx1MDAzZWdzb19lbmFibGVkX3R5cGVzIHw9IFNLQl9HU09fVURQX0w0O1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBzdG1tYWNfc2V0X2dzb19mZWF0dXJlcyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbkBAIC00NDE2LDcgKzQ0MTgsNyBAQCBzdGF0aWMgdm9pZCBzdG1tYWNfc2V0X2dzb19mZWF0dXJlcyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbiBcdGlmIChwcml2LVx1MDAzZXBsYXQtXHUwMDNlY29yZV90eXBlID09IERXTUFDX0NPUkVfR01BQzQpXG4gXHRcdG5kZXYtXHUwMDNlaHdfZmVhdHVyZXMgfD0gTkVUSUZfRl9HU09fVURQX0w0O1xuIFxuLVx0c3RtbWFjX3NldF9nc29fdHlwZXMocHJpdiwgdHJ1ZSk7XG4rXHRzdG1tYWNfc2V0X2dzb190eXBlcyhwcml2LCBuZGV2LVx1MDAzZWh3X2ZlYXR1cmVzKTtcbiBcbiBcdGRldl9pbmZvKHByaXYtXHUwMDNlZGV2aWNlLCBcIlRTTyBmZWF0dXJlIGVuYWJsZWRcXG5cIik7XG4gfVxuQEAgLTYxOTgsNyArNjIwMCw3IEBAIHN0YXRpYyBpbnQgc3RtbWFjX3NldF9mZWF0dXJlcyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuIFx0XHRcdHN0bW1hY19lbmFibGVfc3BoKHByaXYsIHByaXYtXHUwMDNlaW9hZGRyLCBzcGhfZW4sIGNoYW4pO1xuIFx0fVxuIFxuLVx0c3RtbWFjX3NldF9nc29fdHlwZXMocHJpdiwgZmVhdHVyZXMgXHUwMDI2IE5FVElGX0ZfVFNPKTtcbitcdHN0bW1hY19zZXRfZ3NvX3R5cGVzKHByaXYsIGZlYXR1cmVzKTtcbiBcbiBcdGlmIChmZWF0dXJlcyBcdTAwMjYgTkVUSUZfRl9IV19WTEFOX0NUQUdfUlgpXG4gXHRcdHByaXYtXHUwMDNlaHctXHUwMDNlaHdfdmxhbl9lbiA9IHRydWU7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQxODoxNToyMy4wNzg5OTU4N1oiLCJTZXEiOjM5LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDA4OTY0NjI4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEdTTyBUeXBlIFVwZGF0ZSBpbiBzdG1tYWMqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGEgc3RyYWlnaHRmb3J3YXJkIG1vZGlmaWNhdGlvbiB0byBgc3RtbWFjX3NldF9nc29fdHlwZXNgIHdpdGhpbiB0aGUgc3RtbWFjIGRyaXZlci4gSXQncyByZWZhY3RvcmluZyB0aGUgZnVuY3Rpb24gc2lnbmF0dXJlLCBtb3ZpbmcgZnJvbSBhIGJvb2xlYW4gVFNPIGZsYWcgdG8gYSBgbmV0ZGV2X2ZlYXR1cmVzX3RgIGFyZ3VtZW50LCB3aGljaCBtYWtlcyBwZXJmZWN0IHNlbnNlIGZvciBmaW5lci1ncmFpbmVkIGNvbnRyb2wuIEl0J3Mgbm93IGNoZWNraW5nIGluZGl2aWR1YWwgZmVhdHVyZXM6IGBORVRJRl9GX1RTT2AsIGBORVRJRl9GX1RTTzZgLCBhbmQgYE5FVElGX0ZfR1NPX1VEUF9MNGAsIHRvIGRldGVybWluZSB3aGljaCBHU08gdHlwZXMgYXJlIGVuYWJsZWQgYnkgY29uZmlndXJpbmcgdGhlIGBwcml2LVx1MDAzZWdzb19lbmFibGVkX3R5cGVzYCBiaXRtYXNrLlxuXG5NeSBpbW1lZGlhdGUgY29uY2VybiBpcyBhbHdheXMgdW5pbml0aWFsaXplZCBtZW1vcnkuIEhvd2V2ZXIsIGFmdGVyIHF1aWNrbHkgdHJhY2luZyB0aGUgZmxvdywgSSBzZWUgdGhhdCB0aGUgYGZlYXR1cmVzYCBhcmd1bWVudCBjb21lcyBmcm9tIGBuZGV2LVx1MDAzZWh3X2ZlYXR1cmVzYCBvciBgZmVhdHVyZXNgIGRpcmVjdGx5LCB3aGljaCBpcyBhIGBuZXRkZXZfZmVhdHVyZXNfdGAuIGBwcml2LVx1MDAzZWdzb19lbmFibGVkX3R5cGVzYCBpcyBtZXJlbHkgYSBiaXRtYXNrIHVzZWQgdG8gZW5hYmxlIG9yIGRpc2FibGUgZGlmZmVyZW50IEdTTyBtb2Rlcy4gTm8gY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgYXJlIGludm9sdmVkLCBubyBhbGxvY2F0aW9ucyBhcmUgbWFkZSwgYW5kIG5vdGhpbmcgaXMgY29waWVkIHRvIHVzZXIgc3BhY2UuIEl0J3MgZXNzZW50aWFsbHkganVzdCBhIGNvbnRyb2wgZmxvdyBjaGFuZ2UgYmFzZWQgb24gZGVmaW5lZCBmbGFncy5cblxuVGhlcmVmb3JlLCB0aGVyZSBpcyBubyBjaGFuY2UgdGhhdCBpdCBjb3VsZCByZXN1bHQgaW4gYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZCBvciBpbmZvLWxlYWsgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOLiBLQVNBTiBhbmQgb3RoZXIgc3RhbmRhcmQgYnVnIGRldGVjdG9ycyBzaG91bGQgZWFzaWx5IGNhdGNoIGFueSBwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24gb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3MuIFRoZSBjaGFuZ2VzIGFyZSBsb2NhbGl6ZWQgdG8gYml0bWFzayBzZXR0aW5nIGJhc2VkIG9uIGFscmVhZHkgY29udHJvbGxlZCBmZWF0dXJlcywgcmVkdWNpbmcgYW55IHJpc2suIFdlIGNhbiBjb25zaWRlciB0aGlzIHBhdGNoIHNhZmUgZnJvbSB0aG9zZSBwZXJzcGVjdGl2ZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2NTMsIk91dHB1dFRva2VucyI6MjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTA1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMTg6MTU6MzMuMTY4NjQ1MDc3WiIsIlNlcSI6NDAsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUzMTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCB1cGRhdGVzIHRoZSBsb2dpYyBmb3Igc2V0dGluZyBHU08gdHlwZXMgaW4gdGhlIHN0bW1hYyBkcml2ZXIgYmFzZWQgb24gYG5ldGRldl9mZWF0dXJlc190YCBpbnN0ZWFkIG9mIGEgYm9vbGVhbiBgdHNvYCBmbGFnLiBJdCBtb2RpZmllcyBgc3RtbWFjX3NldF9nc29fdHlwZXNgIHRvIGNoZWNrIGZvciBgTkVUSUZfRl9UU09gLCBgTkVUSUZfRl9UU082YCwgYW5kIGBORVRJRl9GX0dTT19VRFBfTDRgIGZlYXR1cmVzIHRvIGFjY3VyYXRlbHkgc2V0IHRoZSBgZ3NvX2VuYWJsZWRfdHlwZXNgIGJpdG1hc2suIFRoZXNlIGNoYW5nZXMgb25seSBhZmZlY3QgY29udHJvbCBmbG93IGFuZCBiaXRtYXNrIGNhbGN1bGF0aW9ucyBmb3IgbmV0d29yayBkZXZpY2UgZmVhdHVyZXMuIFRoZXJlIGFyZSBubyBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBubyBkYXRhIHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIGFuZCBubyBjb21wbGV4IHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMgY291bGQgYmUgcmVhZC4gVGhlcmVmb3JlLCB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOLiBTdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgYnVnIGRldGVjdG9ycyBhcmUgc3VmZmljaWVudCB0byBjYXRjaCBhbnkgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzIGlzc3Vlcy5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCB1cGRhdGVzIHRoZSBsb2dpYyBmb3Igc2V0dGluZyBHU08gdHlwZXMgaW4gdGhlIHN0bW1hYyBkcml2ZXIgYmFzZWQgb24gYG5ldGRldl9mZWF0dXJlc190YCBpbnN0ZWFkIG9mIGEgYm9vbGVhbiBgdHNvYCBmbGFnLiBJdCBtb2RpZmllcyBgc3RtbWFjX3NldF9nc29fdHlwZXNgIHRvIGNoZWNrIGZvciBgTkVUSUZfRl9UU09gLCBgTkVUSUZfRl9UU082YCwgYW5kIGBORVRJRl9GX0dTT19VRFBfTDRgIGZlYXR1cmVzIHRvIGFjY3VyYXRlbHkgc2V0IHRoZSBgZ3NvX2VuYWJsZWRfdHlwZXNgIGJpdG1hc2suIFRoZXNlIGNoYW5nZXMgb25seSBhZmZlY3QgY29udHJvbCBmbG93IGFuZCBiaXRtYXNrIGNhbGN1bGF0aW9ucyBmb3IgbmV0d29yayBkZXZpY2UgZmVhdHVyZXMuIFRoZXJlIGFyZSBubyBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBubyBkYXRhIHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIGFuZCBubyBjb21wbGV4IHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMgY291bGQgYmUgcmVhZC4gVGhlcmVmb3JlLCB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOLiBTdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgYnVnIGRldGVjdG9ycyBhcmUgc3VmZmljaWVudCB0byBjYXRjaCBhbnkgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzIGlzc3Vlcy5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowpkt9n[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-08 18:10:10 +0000 UTC FinishedAt: 2026-08-08 18:15:34 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "dd057113ac7ba5bdd2aed3d9405305911152f911", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "STMMAC_ETH", "STMMAC_PCI", "STMMAC_PLATFORM", "DWMAC_GENERIC" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "dd057113ac7ba5bdd2aed3d9405305911152f911", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "STMMAC_ETH", "STMMAC_PCI", "STMMAC_PLATFORM", "DWMAC_GENERIC" ], "series_id": "dc4361ff-258d-486d-9e04-ab2e051d5927" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "stmmac_set_features", "stmmac_dvr_probe" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDE4OjEzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NUTU1BQ19FVEgmIzM0OywKICAgICYjMzQ7U1RNTUFDX1BDSSYjMzQ7LAogICAgJiMzNDtTVE1NQUNfUExBVEZPUk0mIzM0OywKICAgICYjMzQ7RFdNQUNfR0VORVJJQyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3N0bW1hY19zZXRfZmVhdHVyZXMmIzM0OywKICAgICYjMzQ7c3RtbWFjX2R2cl9wcm9iZSYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHVwZGF0ZXMgdGhlIGxvZ2ljIGZvciBzZXR0aW5nIEdTTyB0eXBlcyBpbiB0aGUgc3RtbWFjIGRyaXZlciBiYXNlZCBvbiBgbmV0ZGV2X2ZlYXR1cmVzX3RgIGluc3RlYWQgb2YgYSBib29sZWFuIGB0c29gIGZsYWcuIEl0IG1vZGlmaWVzIGBzdG1tYWNfc2V0X2dzb190eXBlc2AgdG8gY2hlY2sgZm9yIGBORVRJRl9GX1RTT2AsIGBORVRJRl9GX1RTTzZgLCBhbmQgYE5FVElGX0ZfR1NPX1VEUF9MNGAgZmVhdHVyZXMgdG8gYWNjdXJhdGVseSBzZXQgdGhlIGBnc29fZW5hYmxlZF90eXBlc2AgYml0bWFzay4gVGhlc2UgY2hhbmdlcyBvbmx5IGFmZmVjdCBjb250cm9sIGZsb3cgYW5kIGJpdG1hc2sgY2FsY3VsYXRpb25zIGZvciBuZXR3b3JrIGRldmljZSBmZWF0dXJlcy4gVGhlcmUgYXJlIG5vIG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIG5vIGRhdGEgc3RydWN0dXJlcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgYW5kIG5vIGNvbXBsZXggc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcyBjb3VsZCBiZSByZWFkLiBUaGVyZWZvcmUsIHRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4uIFN0YW5kYXJkIEtBU0FOIGFuZCBvdGhlciBidWcgZGV0ZWN0b3JzIGFyZSBzdWZmaWNpZW50IHRvIGNhdGNoIGFueSBwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24gb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3MgaXNzdWVzLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9naWMgZm9yIHNldHRpbmcgR1NPIHR5cGVzIGJhc2VkIG9uIG5ldGRldiBmZWF0dXJlcyBpbiB0aGUgc3RtbWFjIGRyaXZlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgY29yZSBldGhlcm5ldCBkcml2ZXIgdGhhdCBpcyByZWFjaGFibGUgaW4gUUVNVSB2aWEgdGhlIERlc2lnbldhcmUgTUFDIGVtdWxhdGlvbiAoc25wcyxkd21hYykgb3IgYnkgaW5qZWN0aW5nIGEgUENJIGRldmljZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAxODoxMzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDdkMmE3ZGEwMThmZDUxMTBmMjBhOWVmMTY0OWJmNjI1YTg2MTJmMzhcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEF1ZyA4IDE4OjEzOjQ2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG5pbmRleCBhNzFmMGRmMjYzNzg1Li4zZDMwNDJhZmNkZjQ5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuQEAgLTQzNzEsMTYgJiM0Mzs0MzcxLDE4IEBAIHN0YXRpYyB2b2lkIHN0bW1hY19mbHVzaF90eF9kZXNjcmlwdG9ycyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIGludCBxdWV1ZSlcbiBcdHN0bW1hY19zZXRfcXVldWVfdHhfdGFpbF9wdHIocHJpdiwgdHhfcSwgcXVldWUsIHR4X3EtXHUwMDNlY3VyX3R4KTtcbiB9XG4gXG4tc3RhdGljIHZvaWQgc3RtbWFjX3NldF9nc29fdHlwZXMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBib29sIHRzbylcbiYjNDM7c3RhdGljIHZvaWQgc3RtbWFjX3NldF9nc29fdHlwZXMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuJiM0MztcdFx0XHRcdCBuZXRkZXZfZmVhdHVyZXNfdCBmZWF0dXJlcylcbiB7XG4tXHRpZiAoIXRzbykge1xuLVx0XHRwcml2LVx1MDAzZWdzb19lbmFibGVkX3R5cGVzID0gMDtcbi1cdH0gZWxzZSB7XG4tXHRcdC8qIE1hbmFnZSBvdmVyc2l6ZWQgVENQIGZyYW1lcyBmb3IgR01BQzQgZGV2aWNlICovXG4tXHRcdHByaXYtXHUwMDNlZ3NvX2VuYWJsZWRfdHlwZXMgPSBTS0JfR1NPX1RDUFY0IHwgU0tCX0dTT19UQ1BWNjtcbi1cdFx0aWYgKHByaXYtXHUwMDNlcGxhdC1cdTAwM2Vjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9HTUFDNClcbi1cdFx0XHRwcml2LVx1MDAzZWdzb19lbmFibGVkX3R5cGVzIHw9IFNLQl9HU09fVURQX0w0O1xuLVx0fVxuJiM0MztcdHByaXYtXHUwMDNlZ3NvX2VuYWJsZWRfdHlwZXMgPSAwO1xuJiM0MztcbiYjNDM7XHRpZiAoZmVhdHVyZXMgXHUwMDI2IE5FVElGX0ZfVFNPKVxuJiM0MztcdFx0cHJpdi1cdTAwM2Vnc29fZW5hYmxlZF90eXBlcyB8PSBTS0JfR1NPX1RDUFY0O1xuJiM0MztcdGlmIChmZWF0dXJlcyBcdTAwMjYgTkVUSUZfRl9UU082KVxuJiM0MztcdFx0cHJpdi1cdTAwM2Vnc29fZW5hYmxlZF90eXBlcyB8PSBTS0JfR1NPX1RDUFY2O1xuJiM0MztcdC8qIE1hbmFnZSBvdmVyc2l6ZWQgVURQIGZyYW1lcyBmb3IgR01BQzQgZGV2aWNlcyAqL1xuJiM0MztcdGlmIChmZWF0dXJlcyBcdTAwMjYgTkVUSUZfRl9HU09fVURQX0w0KVxuJiM0MztcdFx0cHJpdi1cdTAwM2Vnc29fZW5hYmxlZF90eXBlcyB8PSBTS0JfR1NPX1VEUF9MNDtcbiB9XG4gXG4gc3RhdGljIHZvaWQgc3RtbWFjX3NldF9nc29fZmVhdHVyZXMoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG5AQCAtNDQxNiw3ICYjNDM7NDQxOCw3IEBAIHN0YXRpYyB2b2lkIHN0bW1hY19zZXRfZ3NvX2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuIFx0aWYgKHByaXYtXHUwMDNlcGxhdC1cdTAwM2Vjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9HTUFDNClcbiBcdFx0bmRldi1cdTAwM2Vod19mZWF0dXJlcyB8PSBORVRJRl9GX0dTT19VRFBfTDQ7XG4gXG4tXHRzdG1tYWNfc2V0X2dzb190eXBlcyhwcml2LCB0cnVlKTtcbiYjNDM7XHRzdG1tYWNfc2V0X2dzb190eXBlcyhwcml2LCBuZGV2LVx1MDAzZWh3X2ZlYXR1cmVzKTtcbiBcbiBcdGRldl9pbmZvKHByaXYtXHUwMDNlZGV2aWNlLCBcJiMzNDtUU08gZmVhdHVyZSBlbmFibGVkXFxuXCYjMzQ7KTtcbiB9XG5AQCAtNjE5OCw3ICYjNDM7NjIwMCw3IEBAIHN0YXRpYyBpbnQgc3RtbWFjX3NldF9mZWF0dXJlcyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuIFx0XHRcdHN0bW1hY19lbmFibGVfc3BoKHByaXYsIHByaXYtXHUwMDNlaW9hZGRyLCBzcGhfZW4sIGNoYW4pO1xuIFx0fVxuIFxuLVx0c3RtbWFjX3NldF9nc29fdHlwZXMocHJpdiwgZmVhdHVyZXMgXHUwMDI2IE5FVElGX0ZfVFNPKTtcbiYjNDM7XHRzdG1tYWNfc2V0X2dzb190eXBlcyhwcml2LCBmZWF0dXJlcyk7XG4gXG4gXHRpZiAoZmVhdHVyZXMgXHUwMDI2IE5FVElGX0ZfSFdfVkxBTl9DVEFHX1JYKVxuIFx0XHRwcml2LVx1MDAzZWh3LVx1MDAzZWh3X3ZsYW5fZW4gPSB0cnVlO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDE4OjEzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtTVE1NQUNfRVRIJiMzNDssCiAgICAmIzM0O1NUTU1BQ19QQ0kmIzM0OywKICAgICYjMzQ7U1RNTUFDX1BMQVRGT1JNJiMzNDssCiAgICAmIzM0O0RXTUFDX0dFTkVSSUMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzdG1tYWNfc2V0X2ZlYXR1cmVzJiMzNDssCiAgICAmIzM0O3N0bW1hY19kdnJfcHJvYmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvZ2ljIGZvciBzZXR0aW5nIEdTTyB0eXBlcyBiYXNlZCBvbiBuZXRkZXYgZmVhdHVyZXMgaW4gdGhlIHN0bW1hYyBkcml2ZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIGNvcmUgZXRoZXJuZXQgZHJpdmVyIHRoYXQgaXMgcmVhY2hhYmxlIGluIFFFTVUgdmlhIHRoZSBEZXNpZ25XYXJlIE1BQyBlbXVsYXRpb24gKHNucHMsZHdtYWMpIG9yIGJ5IGluamVjdGluZyBhIFBDSSBkZXZpY2UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA3ZDJhN2RhMDE4ZmQ1MTEwZjIwYTllZjE2NDliZjYyNWE4NjEyZjM4CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBBdWcgOCAxODoxMzo0NiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jCmluZGV4IGE3MWYwZGYyNjM3ODUuLjNkMzA0MmFmY2RmNDkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYwpAQCAtNDM3MSwxNiAmIzQzOzQzNzEsMTggQEAgc3RhdGljIHZvaWQgc3RtbWFjX2ZsdXNoX3R4X2Rlc2NyaXB0b3JzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgaW50IHF1ZXVlKQogCXN0bW1hY19zZXRfcXVldWVfdHhfdGFpbF9wdHIocHJpdiwgdHhfcSwgcXVldWUsIHR4X3EtJmd0O2N1cl90eCk7CiB9CiAKLXN0YXRpYyB2b2lkIHN0bW1hY19zZXRfZ3NvX3R5cGVzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgYm9vbCB0c28pCiYjNDM7c3RhdGljIHZvaWQgc3RtbWFjX3NldF9nc29fdHlwZXMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LAomIzQzOwkJCQkgbmV0ZGV2X2ZlYXR1cmVzX3QgZmVhdHVyZXMpCiB7Ci0JaWYgKCF0c28pIHsKLQkJcHJpdi0mZ3Q7Z3NvX2VuYWJsZWRfdHlwZXMgPSAwOwotCX0gZWxzZSB7Ci0JCS8qIE1hbmFnZSBvdmVyc2l6ZWQgVENQIGZyYW1lcyBmb3IgR01BQzQgZGV2aWNlICovCi0JCXByaXYtJmd0O2dzb19lbmFibGVkX3R5cGVzID0gU0tCX0dTT19UQ1BWNCB8IFNLQl9HU09fVENQVjY7Ci0JCWlmIChwcml2LSZndDtwbGF0LSZndDtjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9HTUFDNCkKLQkJCXByaXYtJmd0O2dzb19lbmFibGVkX3R5cGVzIHw9IFNLQl9HU09fVURQX0w0OwotCX0KJiM0MzsJcHJpdi0mZ3Q7Z3NvX2VuYWJsZWRfdHlwZXMgPSAwOwomIzQzOwomIzQzOwlpZiAoZmVhdHVyZXMgJmFtcDsgTkVUSUZfRl9UU08pCiYjNDM7CQlwcml2LSZndDtnc29fZW5hYmxlZF90eXBlcyB8PSBTS0JfR1NPX1RDUFY0OwomIzQzOwlpZiAoZmVhdHVyZXMgJmFtcDsgTkVUSUZfRl9UU082KQomIzQzOwkJcHJpdi0mZ3Q7Z3NvX2VuYWJsZWRfdHlwZXMgfD0gU0tCX0dTT19UQ1BWNjsKJiM0MzsJLyogTWFuYWdlIG92ZXJzaXplZCBVRFAgZnJhbWVzIGZvciBHTUFDNCBkZXZpY2VzICovCiYjNDM7CWlmIChmZWF0dXJlcyAmYW1wOyBORVRJRl9GX0dTT19VRFBfTDQpCiYjNDM7CQlwcml2LSZndDtnc29fZW5hYmxlZF90eXBlcyB8PSBTS0JfR1NPX1VEUF9MNDsKIH0KIAogc3RhdGljIHZvaWQgc3RtbWFjX3NldF9nc29fZmVhdHVyZXMoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpCkBAIC00NDE2LDcgJiM0Mzs0NDE4LDcgQEAgc3RhdGljIHZvaWQgc3RtbWFjX3NldF9nc29fZmVhdHVyZXMoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpCiAJaWYgKHByaXYtJmd0O3BsYXQtJmd0O2NvcmVfdHlwZSA9PSBEV01BQ19DT1JFX0dNQUM0KQogCQluZGV2LSZndDtod19mZWF0dXJlcyB8PSBORVRJRl9GX0dTT19VRFBfTDQ7CiAKLQlzdG1tYWNfc2V0X2dzb190eXBlcyhwcml2LCB0cnVlKTsKJiM0MzsJc3RtbWFjX3NldF9nc29fdHlwZXMocHJpdiwgbmRldi0mZ3Q7aHdfZmVhdHVyZXMpOwogCiAJZGV2X2luZm8ocHJpdi0mZ3Q7ZGV2aWNlLCAmIzM0O1RTTyBmZWF0dXJlIGVuYWJsZWRcbiYjMzQ7KTsKIH0KQEAgLTYxOTgsNyAmIzQzOzYyMDAsNyBAQCBzdGF0aWMgaW50IHN0bW1hY19zZXRfZmVhdHVyZXMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwKIAkJCXN0bW1hY19lbmFibGVfc3BoKHByaXYsIHByaXYtJmd0O2lvYWRkciwgc3BoX2VuLCBjaGFuKTsKIAl9CiAKLQlzdG1tYWNfc2V0X2dzb190eXBlcyhwcml2LCBmZWF0dXJlcyAmYW1wOyBORVRJRl9GX1RTTyk7CiYjNDM7CXN0bW1hY19zZXRfZ3NvX3R5cGVzKHByaXYsIGZlYXR1cmVzKTsKIAogCWlmIChmZWF0dXJlcyAmYW1wOyBORVRJRl9GX0hXX1ZMQU5fQ1RBR19SWCkKIAkJcHJpdi0mZ3Q7aHctJmd0O2h3X3ZsYW5fZW4gPSB0cnVlOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAxODoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjU2CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogNzM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUmVhY2hhYmlsaXR5IG9mIGFuIHN0bW1hYyBEcml2ZXIgUGF0Y2ggaW4gUUVNVSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYHN0bW1hY19tYWluLmNgIHRoYXQgbW9kaWZpZXMgYHN0bW1hY19zZXRfZ3NvX3R5cGVzYC4gSXQmIzM5O3MgYSBzdHJhaWdodGZvcndhcmQgZnVuY3Rpb25hbCBjaGFuZ2UsIHVwZGF0aW5nIHRoZSBHU08gdHlwZSBoYW5kbGluZyBiYXNlZCBvbiBgbmV0ZGV2X2ZlYXR1cmVzX3RgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIGNhbiBJIGV2ZW4gdGVzdCB0aGlzIHBhdGNoIGVmZmVjdGl2ZWx5PwoKRmlyc3QsIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoZSBgc3RtbWFjYCBkcml2ZXIsIHdoaWNoIEkga25vdyBpcyBmb3IgdGhlIFN5bm9wc3lzIERlc2lnbldhcmUgTUFDLCBpcyBldmVuIHJlYWNoYWJsZSB3aXRoaW4gYSBRRU1VIGVudmlyb25tZW50LiBJIG5lZWQgdG8gYXNjZXJ0YWluIGlmIFFFTVUgY2FuIGVtdWxhdGUgdGhpcyBoYXJkd2FyZS4gSSBxdWlja2x5IHJhdHRsZSBvZmYgYSBsaXN0IG9mIFFFTVUmIzM5O3MgbmV0d29yayBkZXZpY2UgZW11bGF0aW9ucyDigJMgYGlteF9mZWNgLCBgY2FkZW5jZV9nZW1gLCBldGMuIOKAkyB0byByZW1pbmQgbXlzZWxmIHdoYXQmIzM5O3MgYXZhaWxhYmxlLiBOb3BlLCBub25lIG9mIHRob3NlIHNlZW0gbGlrZSBhIGRpcmVjdCBtYXRjaCBmb3IgYHN0bW1hY2AuCgpBbHJpZ2h0LCBpcyBgc3RtbWFjYCBhIFBDSSBkZXZpY2Ugb3IgYSBwbGF0Zm9ybSBkZXZpY2U/IEkgcmVtZW1iZXIgaXQgaGFzIFBDSSBiaW5kaW5ncyBpbiBgc3RtbWFjX3BjaS5jYCwgd2hpY2ggZ2l2ZXMgbWUgYSBwb3RlbnRpYWwgYXZlbnVlIGZvciBwcm9iaW5nLiBJIHNlYXJjaCBmb3IgYHN0bW1hY2AgaW4gdGhlIFFFTVUgY29kZWJhc2UgYW5kIGNvbnNpZGVyIHdoZXRoZXIgZnV6emluZyBpdCB3b3VsZCBiZSBmZWFzaWJsZS4gSG93ZXZlciwgSSByZWNhbGwgdGhlIGRpc2N1c3Npb24gYXJvdW5kIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCBkcml2ZXJzLCBvciBTbWFydE5JQyBvciBHUFUgZHJpdmVycyB3aGljaCBhcmUgaGFyZCB0byBmdXp6IGJlY2F1c2UgdGhleSB1c3VhbGx5IHJlcXVpcmUgcGh5c2ljYWwgaGFyZHdhcmUuIFRoaXMgbWFrZXMgbWUgcmVhbGl6ZSB0aGF0IGBzdG1tYWNgIG1pZ2h0IGZhbGwgaW50byB0aGF0IGNhdGVnb3J5IGFuZCBub3QgYmUgZGlyZWN0bHkgZW11bGF0YWJsZS4KCkJ1dCB3YWl0LCBgc3RtbWFjYCBpcyBzcGVjaWZpY2FsbHkgZm9yIFNUTWljcm9lbGVjdHJvbmljcyBFdGhlcm5ldCBNQUNzLCBhbmQgSSYjMzk7bSBhd2FyZSBpdCYjMzk7cyB1c2VkIGluIGxvdHMgb2YgQVJNIFNvQ3Mg4oCTIFJvY2tjaGlwLCBBbGx3aW5uZXIsIEFtbG9naWMsIGFuZCBzbyBvbi4gSXQmIzM5O3MgcHJpbWFyaWx5IGEgcGxhdGZvcm0gZGV2aWNlLCBidXQgdGhlIFBDSSB3cmFwcGVyIGNvdWxkIGJlIGtleS4gQ2FuIEkgZnV6eiBpdCB3aXRob3V0IHBoeXNpY2FsIGhhcmR3YXJlPyBQcm9iYWJseSBub3QuCgpTbywgbGV0IG1lIGJhY2sgdXAgYSBzdGVwLiBDYW4gUUVNVSAqYWN0dWFsbHkqIGVtdWxhdGUgdGhpcyBhdCBhbGw/IEkgcmVtZW1iZXIgcmVhZGluZyBzb21ldGhpbmcgYWJvdXQgRGVzaWduV2FyZSBNQUMgc3VwcG9ydC4uLiBBaGEhIFFFTVUgaGFzIGBody9uZXQvZGVzaWdud2FyZS5jYC4gSXMgdGhhdCBpdD8gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGBkZXNpZ253YXJlLmNgIGlzIHRoZSBlbXVsYXRpb24gZm9yIGBzdG1tYWNgLiBJIGNoZWNrIHRoZSBMaW51eCBrZXJuZWwgc291cmNlIGFuZCBjb25maXJtIHRoYXQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2AgaXMgaW5kZWVkIHRoZSBkcml2ZXIgZm9yIHRoZSBTeW5vcHN5cyBEZXNpZ25XYXJlIE1BQywgd2hpY2ggaXMgbGlrZWx5IHdoYXQgdGhlIFFFTVUgY29kZSBpcyBlbXVsYXRpbmcuIEkgbmVlZCB0byBtYWtlIHN1cmUgYnV0IEkmIzM5O2xsIHN0YXJ0IGJ5IGNoZWNraW5nIGBzdG1tYWNfcGNpLmNgIGFuZCBhbnkgYGR3bWFjLSouY2AgZmlsZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMTg6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXNpZ253YXJlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAxODoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzOTk2CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyaXplZCB0aG91Z2h0IHByb2Nlc3MsIHByZXNlbnRlZCBhcyBpZiBJJiMzOTttIHRoaW5raW5nIGl0OgoKKipEaWdnaW5nIGludG8gdGhlIGBzdG1tYWNgIERyaXZlciDigJMgTG9va2luZyBmb3IgJiMzNDtkd21hYyYjMzQ7KioKCkFscmlnaHQsIHRpbWUgdG8gZGl2ZSBpbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgc29tZXRoaW5nIGFib3V0IHRoaXMgYHN0bW1hY2AgZHJpdmVyLiBGaXJzdCBzdGVwLCBsZXQmIzM5O3MganVzdCBkbyBhIHF1aWNrIGtleXdvcmQgc2VhcmNoLiBJJiMzOTttIGdvaW5nIHRvIGxvb2sgZm9yICYjMzQ7ZHdtYWMmIzM0Oy4gSXQmIzM5O3MgYSBwcmV0dHkgY29tbW9uIG5hbWluZyBjb252ZW50aW9uLCBhbmQgaXQmIzM5O3MgbGlrZWx5IGNvbm5lY3RlZCB0byB0aGUgaGFyZHdhcmUuIFNlZWluZyBpdCB1c2VkIGluIHRoZSBjb2RlIHNob3VsZCBnaXZlIG1lIHNvbWUgY29udGV4dCwgZWl0aGVyIGRlZmluaW5nIHdoYXQgaXQgZG9lcywgb3Igd2hlcmUgaXQgaXMgdXNlZC4gSSBleHBlY3QgaXQgaXMgbGlrZWx5IGFuIGFic3RyYWN0aW9uIGxheWVyLCBvciB1c2VkIGZvciB0aGUgaGFyZHdhcmUgcmVnaXN0ZXJzLiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhhdCB1bmNvdmVycyEgSSYjMzk7bSBob3BpbmcgdGhpcyYjMzk7bGwgcXVpY2tseSBwb2ludCBtZSB0byB0aGUgcmVsZXZhbnQgc2VjdGlvbnMgb2YgdGhlIGNvZGUgSSBuZWVkIHRvIGV4cGxvcmUgZnVydGhlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAxODoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkd21hYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNTUzNSBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz05MD1jb25maWcgRFdNQUNfSVBRODA2WFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTAyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoxMDM6XHQgIFNlbGVjdCB0aGUgUUNPTV9TT0NJTkZPIGNvbmZpZyBmbGFnIHRvIGVuYWJsZSBzcGVjaWZpYyBkd21hY1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xMDQtXHQgIGZpeHVwIGJhc2VkIG9uIHRoZSBpcHE4MDZ4IFNvQyByZXZpc2lvbi5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTEyMj1jb25maWcgRFdNQUNfTUVTT05cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MTIzOlx0dHJpc3RhdGUgXCYjMzQ7QW1sb2dpYyBNZXNvbiBkd21hYyBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEyNC1cdGRlZmF1bHQgQVJDSF9NRVNPTlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MTMzPWNvbmZpZyBEV01BQ19OVVZPVE9OXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjEzNDpcdHRyaXN0YXRlIFwmIzM0O051dm90b24gTUEzNSBkd21hYyBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEzNS1cdGRlZmF1bHQgQVJDSF9NQTM1XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xNDEtXHQgIFRoaXMgc2VsZWN0cyB0aGUgTnV2b3RvbiBNQTM1IHNlcmllcyBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjE0MjpcdCAgZm9yIHRoZSBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhlIG51dm90b24tZHdtYWMgZHJpdmVyIGlzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE0My1cdCAgdXNlZCBmb3IgTUEzNSBzZXJpZXMgU29Dcy5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTE2OD1jb25maWcgRFdNQUNfUk9DS0NISVBcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MTY5Olx0dHJpc3RhdGUgXCYjMzQ7Um9ja2NoaXAgZHdtYWMgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xNzAtXHRkZWZhdWx0IEFSQ0hfUk9DS0NISVBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTE3OT1jb25maWcgRFdNQUNfUlpOMVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoxODA6XHR0cmlzdGF0ZSBcJiMzNDtSZW5lc2FzIFJaL04xIGR3bWFjIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTgxLVx0ZGVmYXVsdCBBUkNIX1JaTjFcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTIwMz1jb25maWcgRFdNQUNfU09DRlBHQVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyMDQ6XHR0cmlzdGF0ZSBcJiMzNDtTT0NGUEdBIGR3bWFjIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjA1LVx0ZGVmYXVsdCBBUkNIX0lOVEVMX1NPQ0ZQR0Fcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTIxOD1jb25maWcgRFdNQUNfU09QSEdPXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjIxOTpcdHRyaXN0YXRlIFwmIzM0O1NvcGhnbyBkd21hYyBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTIyMC1cdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IChBUkNIX1NPUEhHTyB8fCBDT01QSUxFX1RFU1QpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0yMjk9Y29uZmlnIERXTUFDX1NQQUNFTUlUXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjIzMDpcdHRyaXN0YXRlIFwmIzM0O1NwYWNlbWl0IGR3bWFjIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjMxLVx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfU1BBQ0VNSVQgfHwgQ09NUElMRV9URVNUKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MjQxPWNvbmZpZyBEV01BQ19TVEFSRklWRVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyNDI6XHR0cmlzdGF0ZSBcJiMzNDtTdGFyRml2ZSBkd21hYyBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI0My1cdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IChBUkNIX1NUQVJGSVZFIHx8IENPTVBJTEVfVEVTVClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTMxMj1jb25maWcgRFdNQUNfVEhFQURcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzEzOlx0dHJpc3RhdGUgXCYjMzQ7VC1IRUFEIGR3bWFjIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzE0LVx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfVEhFQUQgfHwgQ09NUElMRV9URVNUKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MzM0PWNvbmZpZyBEV01BQ19JTlRFTF9QTEFUXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjMzNTpcdHRyaXN0YXRlIFwmIzM0O0ludGVsIGR3bWFjIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzM2LVx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgQ09NTU9OX0NMS1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlPTM9c3RtbWFjLW9ianM6PSBzdG1tYWNfbWFpbi5vIHN0bW1hY19ldGh0b29sLm8gc3RtbWFjX21kaW8ubyByaW5nX21vZGUub1x0XFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjQ6XHQgICAgICBjaGFpbl9tb2RlLm8gZHdtYWNfbGliLm8gZHdtYWMxMDAwX2NvcmUubyBkd21hYzEwMDBfZG1hLm9cdFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTo1Olx0ICAgICAgZHdtYWMxMDBfY29yZS5vIGR3bWFjMTAwX2RtYS5vIGVuaF9kZXNjLm8gbm9ybV9kZXNjLm9cdFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTo2Olx0ICAgICAgbW1jX2NvcmUubyBzdG1tYWNfaHd0c3RhbXAubyBzdG1tYWNfcHRwLm8gZHdtYWM0X2Rlc2NzLm9cdFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTo3Olx0ICAgICAgZHdtYWM0X2RtYS5vIGR3bWFjNF9saWIubyBkd21hYzRfY29yZS5vIGR3bWFjNS5vIGh3aWYubyBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGUtOC1cdCAgICAgIHN0bW1hY190Yy5vIGR3eGdtYWMyX2NvcmUubyBkd3hnbWFjMl9kbWEubyBkd3hnbWFjMl9kZXNjcy5vIFxcXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU9MTU9b2JqLSQoQ09ORklHX1NUTU1BQ19QTEFURk9STSlcdCYjNDM7PSBzdG1tYWMtcGxhdGZvcm0ub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6MTY6b2JqLSQoQ09ORklHX0RXTUFDX0FOQVJJT04pXHQmIzQzOz0gZHdtYWMtYW5hcmlvbi5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZToxNzpvYmotJChDT05GSUdfRFdNQUNfRUlDNzcwMClcdCYjNDM7PSBkd21hYy1laWM3NzAwLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjE4Om9iai0kKENPTkZJR19EV01BQ19JTkdFTklDKVx0JiM0Mzs9IGR3bWFjLWluZ2VuaWMub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6MTk6b2JqLSQoQ09ORklHX0RXTUFDX0lQUTgwNlgpXHQmIzQzOz0gZHdtYWMtaXBxODA2eC5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZToyMDpvYmotJChDT05GSUdfRFdNQUNfTFBDMThYWClcdCYjNDM7PSBkd21hYy1scGMxOHh4Lm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjIxOm9iai0kKENPTkZJR19EV01BQ19NRURJQVRFSylcdCYjNDM7PSBkd21hYy1tZWRpYXRlay5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZToyMjpvYmotJChDT05GSUdfRFdNQUNfTUVTT04pXHQmIzQzOz0gZHdtYWMtbWVzb24ubyBkd21hYy1tZXNvbjhiLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjIzOm9iai0kKENPTkZJR19EV01BQ19OVVZPVE9OKVx0JiM0Mzs9IGR3bWFjLW51dm90b24ub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6MjQ6b2JqLSQoQ09ORklHX0RXTUFDX1FDT01fRVRIUU9TKVx0JiM0Mzs9IGR3bWFjLXFjb20tZXRocW9zLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjI1Om9iai0kKENPTkZJR19EV01BQ19SRU5FU0FTX0dCRVRIKSAmIzQzOz0gZHdtYWMtcmVuZXNhcy1nYmV0aC5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZToyNjpvYmotJChDT05GSUdfRFdNQUNfUk9DS0NISVApXHQmIzQzOz0gZHdtYWMtcmsub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6Mjc6b2JqLSQoQ09ORklHX0RXTUFDX1JaTjEpXHQmIzQzOz0gZHdtYWMtcnpuMS5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZToyODpvYmotJChDT05GSUdfRFdNQUNfUzMyKVx0XHQmIzQzOz0gZHdtYWMtczMyLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjI5Om9iai0kKENPTkZJR19EV01BQ19TT0NGUEdBKVx0JiM0Mzs9IGR3bWFjLWFsdHItc29jZnBnYS5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTozMDpvYmotJChDT05GSUdfRFdNQUNfU09QSEdPKVx0JiM0Mzs9IGR3bWFjLXNvcGhnby5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTozMTpvYmotJChDT05GSUdfRFdNQUNfU1BBQ0VNSVQpXHQmIzQzOz0gZHdtYWMtc3BhY2VtaXQub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6MzI6b2JqLSQoQ09ORklHX0RXTUFDX1NUQVJGSVZFKVx0JiM0Mzs9IGR3bWFjLXN0YXJmaXZlLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjMzOm9iai0kKENPTkZJR19EV01BQ19TVEkpXHRcdCYjNDM7PSBkd21hYy1zdGkub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6MzQ6b2JqLSQoQ09ORklHX0RXTUFDX1NUTTMyKVx0JiM0Mzs9IGR3bWFjLXN0bTMyLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjM1Om9iai0kKENPTkZJR19EV01BQ19TVU5YSSlcdCYjNDM7PSBkd21hYy1zdW54aS5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTozNjpvYmotJChDT05GSUdfRFdNQUNfU1VOOEkpXHQmIzQzOz0gZHdtYWMtc3VuOGkub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6Mzc6b2JqLSQoQ09ORklHX0RXTUFDX1NVTjU1SSlcdCYjNDM7PSBkd21hYy1zdW41NWkub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6Mzg6b2JqLSQoQ09ORklHX0RXTUFDX1RIRUFEKVx0JiM0Mzs9IGR3bWFjLXRoZWFkLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjM5Om9iai0kKENPTkZJR19EV01BQ19EV0NfUU9TX0VUSClcdCYjNDM7PSBkd21hYy1kd2MtcW9zLWV0aC5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTo0MDpvYmotJChDT05GSUdfRFdNQUNfSU5URUxfUExBVClcdCYjNDM7PSBkd21hYy1pbnRlbC1wbGF0Lm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjQxOm9iai0kKENPTkZJR19EV01BQ19MT09OR1NPTjEpXHQmIzQzOz0gZHdtYWMtbG9vbmdzb24xLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjQyOm9iai0kKENPTkZJR19EV01BQ19HRU5FUklDKVx0JiM0Mzs9IGR3bWFjLWdlbmVyaWMub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6NDM6b2JqLSQoQ09ORklHX0RXTUFDX0lNWDgpXHQmIzQzOz0gZHdtYWMtaW14Lm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjQ0Om9iai0kKENPTkZJR19EV01BQ19URUdSQSlcdCYjNDM7PSBkd21hYy10ZWdyYS5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTo0NTpvYmotJChDT05GSUdfRFdNQUNfVklTQ09OVEkpXHQmIzQzOz0gZHdtYWMtdmlzY29udGkub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGUtNDYtc3RtbWFjLXBsYXRmb3JtLW9ianM6PSBzdG1tYWNfcGxhdGZvcm0ub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6NDc6ZHdtYWMtYWx0ci1zb2NmcGdhLW9ianMgOj0gZHdtYWMtc29jZnBnYS5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZS00OC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZT01MD1vYmotJChDT05GSUdfU1RNTUFDX1BDSSlcdCYjNDM7PSBzdG1tYWMtcGNpLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjUxOm9iai0kKENPTkZJR19EV01BQ19JTlRFTClcdCYjNDM7PSBkd21hYy1pbnRlbC5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTo1MjpvYmotJChDT05GSUdfRFdNQUNfTE9PTkdTT04pXHQmIzQzOz0gZHdtYWMtbG9vbmdzb24ub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6NTM6b2JqLSQoQ09ORklHX0RXTUFDX01PVE9SQ09NTSlcdCYjNDM7PSBkd21hYy1tb3RvcmNvbW0ub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGUtNTQtc3RtbWFjLXBjaS1vYmpzOj0gc3RtbWFjX3BjaS5vXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtNDgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDo0OTpzdGF0aWMgaW5saW5lIGJvb2wgZHdtYWNfaXNfeG1hYyhlbnVtIGR3bWFjX2NvcmVfdHlwZSBjb3JlX3R5cGUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC01MC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg9NjQ1PXN0cnVjdCBzdG1tYWNfcnhfcm91dGluZyB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtNjQ5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6NjUwOmludCBkd21hYzEwMF9zZXR1cChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6NjUxOmludCBkd21hYzEwMDBfc2V0dXAoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjY1MjppbnQgZHdtYWM0X3NldHVwKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC02NTMtaW50IGR3eGdtYWMyX3NldHVwKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg9NjYwPXZvaWQgc3RtbWFjX3NldF9tYWModm9pZCBfX2lvbWVtICppb2FkZHIsIGJvb2wgZW5hYmxlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTY2MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjY2Mjp2b2lkIHN0bW1hY19kd21hYzRfc2V0X21hY19hZGRyKHZvaWQgX19pb21lbSAqaW9hZGRyLCBjb25zdCB1OCBhZGRyWzZdLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtNjYzLVx0XHRcdFx0dW5zaWduZWQgaW50IGhpZ2gsIHVuc2lnbmVkIGludCBsb3cpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6NjY0OnZvaWQgc3RtbWFjX2R3bWFjNF9nZXRfbWFjX2FkZHIodm9pZCBfX2lvbWVtICppb2FkZHIsIHVuc2lnbmVkIGNoYXIgKmFkZHIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC02NjUtXHRcdFx0XHR1bnNpZ25lZCBpbnQgaGlnaCwgdW5zaWduZWQgaW50IGxvdyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDo2NjY6dm9pZCBzdG1tYWNfZHdtYWM0X3NldF9tYWModm9pZCBfX2lvbWVtICppb2FkZHIsIGJvb2wgZW5hYmxlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTY2Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjY2ODp2b2lkIGR3bWFjX2RtYV9mbHVzaF90eF9maWZvKHZvaWQgX19pb21lbSAqaW9hZGRyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTY2OS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmM9NjM9YW5hcmlvbl9jb25maWdfZHQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmMtOTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmM6OTM6c3RhdGljIGludCBhbmFyaW9uX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmMtOTQte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYy0xMTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmM6MTE5OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGFuYXJpb25fZHdtYWNfbWF0Y2hbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYy0xMjAtXHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7YWRhcHRydW0sYW5hcmlvbi1nbWFjXCYjMzQ7IH0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jLTEyMi19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jOjEyMzpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBhbmFyaW9uX2R3bWFjX21hdGNoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYy0xMjQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmM6MTI1OnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGFuYXJpb25fZHdtYWNfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jOjEyNjpcdC5wcm9iZSAgPSBhbmFyaW9uX2R3bWFjX3Byb2JlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jLTEyNy1cdC5kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmM6MTI4Olx0XHQubmFtZSAgICAgICAgICAgPSBcJiMzNDthbmFyaW9uLWR3bWFjXCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jLTEyOS1cdFx0LnBtXHRcdD0gXHUwMDI2c3RtbWFjX3BsdGZyX3BtX29wcyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYzoxMzA6XHRcdC5vZl9tYXRjaF90YWJsZSA9IGFuYXJpb25fZHdtYWNfbWF0Y2gsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmMtMTMxLVx0fSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYy0xMzItfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYzoxMzM6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihhbmFyaW9uX2R3bWFjX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmMtMTM0LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMjQtI2luY2x1ZGUgXCYjMzQ7c3RtbWFjX3BsYXRmb3JtLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6MjU6I2luY2x1ZGUgXCYjMzQ7ZHdtYWM0LmhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMjYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jPTI3PXN0cnVjdCB0ZWdyYV9lcW9zIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTM1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzozNjpzdGF0aWMgaW50IGR3Y19ldGhfZHdtYWNfY29uZmlnX2R0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTM3LVx0XHRcdFx0ICAgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jPTI1Mj1zdGF0aWMgdm9pZCB0ZWdyYV9lcW9zX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMjU5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzoyNjA6c3RydWN0IGR3Y19ldGhfZHdtYWNfZGF0YSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTI2MS1cdGludCAoKnByb2JlKShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMjY3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzoyNjg6c3RhdGljIGNvbnN0IHN0cnVjdCBkd2NfZXRoX2R3bWFjX2RhdGEgZHdjX3Fvc19kYXRhID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0yNjktXHQucHJvYmUgPSBkd2NfcW9zX3Byb2JlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMjcyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzoyNzM6c3RhdGljIGNvbnN0IHN0cnVjdCBkd2NfZXRoX2R3bWFjX2RhdGEgdGVncmFfZXFvc19kYXRhID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0yNzQtXHQucHJvYmUgPSB0ZWdyYV9lcW9zX3Byb2JlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMjc4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzoyNzk6c3RhdGljIGNvbnN0IHN0cnVjdCBkd2NfZXRoX2R3bWFjX2RhdGEgZnNkX2Vxb3NfZGF0YSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMjgwLVx0LnN0bW1hY19jbGtfbmFtZSA9IFwmIzM0O3NsYXZlX2J1c1wmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTI4Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6MjgzOnN0YXRpYyBpbnQgZHdjX2V0aF9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0yODQte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzoyODU6XHRjb25zdCBzdHJ1Y3QgZHdjX2V0aF9kd21hY19kYXRhICpkYXRhO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0yODYtXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMzI1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzozMjY6XHRyZXQgPSBkd2NfZXRoX2R3bWFjX2NvbmZpZ19kdChwZGV2LCBwbGF0X2RhdCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTMyNy1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0zNDItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjM0MzpzdGF0aWMgdm9pZCBkd2NfZXRoX2R3bWFjX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0zNDQte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzozNDU6XHRjb25zdCBzdHJ1Y3QgZHdjX2V0aF9kd21hY19kYXRhICpkYXRhID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMzQ2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMzUyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzozNTM6c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgZHdjX2V0aF9kd21hY19tYXRjaFtdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0zNTQtXHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7c25wcyxkd2MtcW9zLWV0aGVybmV0LTQuMTBcJiMzNDssIC5kYXRhID0gXHUwMDI2ZHdjX3Fvc19kYXRhIH0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0zNTgtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6MzU5Ok1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGR3Y19ldGhfZHdtYWNfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0zNjAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjM2MTpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBkd2NfZXRoX2R3bWFjX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6MzYyOlx0LnByb2JlICA9IGR3Y19ldGhfZHdtYWNfcHJvYmUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjM2MzpcdC5yZW1vdmUgPSBkd2NfZXRoX2R3bWFjX3JlbW92ZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMzY0LVx0LmRyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6MzY1Olx0XHQubmFtZSAgICAgICAgICAgPSBcJiMzNDtkd2MtZXRoLWR3bWFjXCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0zNjYtXHRcdC5wbSAgICAgICAgICAgICA9IFx1MDAyNnN0bW1hY19wbHRmcl9wbV9vcHMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjM2NzpcdFx0Lm9mX21hdGNoX3RhYmxlID0gZHdjX2V0aF9kd21hY19tYXRjaCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMzY4LVx0fSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMzY5LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjM3MDptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGR3Y19ldGhfZHdtYWNfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMzcxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYz01OT1zdGF0aWMgaW50IGVpYzc3MDBfY2xrc19jb25maWcodm9pZCAqcHJpdiwgYm9vbCBlbmFibGVkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYy03Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYzo3MzpzdGF0aWMgaW50IGVpYzc3MDBfZHdtYWNfaW5pdChzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKnByaXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtNzQte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYy0xMDUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmM6MTA2OnN0YXRpYyB2b2lkIGVpYzc3MDBfZHdtYWNfZXhpdChzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKnByaXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMTA3LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMTEyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jOjExMzpzdGF0aWMgaW50IGVpYzc3MDBfZHdtYWNfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKnByaXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMTE0LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMTE3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jOjExODpzdGF0aWMgaW50IGVpYzc3MDBfZHdtYWNfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqcHJpdilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYy0xMTkte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYy0xMjgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmM6MTI5OnN0YXRpYyBpbnQgZWljNzcwMF9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jLTEzMC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jLTI1OC1cdGR3Y19wcml2LVx1MDAzZXBsYXRfZGF0ID0gcGxhdF9kYXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmM6MjU5Olx0cGxhdF9kYXQtXHUwMDNlaW5pdCA9IGVpYzc3MDBfZHdtYWNfaW5pdDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYzoyNjA6XHRwbGF0X2RhdC1cdTAwM2VleGl0ID0gZWljNzcwMF9kd21hY19leGl0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jOjI2MTpcdHBsYXRfZGF0LVx1MDAzZXN1c3BlbmQgPSBlaWM3NzAwX2R3bWFjX3N1c3BlbmQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmM6MjYyOlx0cGxhdF9kYXQtXHUwMDNlcmVzdW1lID0gZWljNzcwMF9kd21hY19yZXN1bWU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMjYzLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYy0yNjYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmM6MjY3OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGVpYzc3MDBfZHdtYWNfbWF0Y2hbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYy0yNjgtXHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7ZXN3aW4sZWljNzcwMC1xb3MtZXRoXCYjMzQ7IH0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jLTI3MC19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jOjI3MTpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBlaWM3NzAwX2R3bWFjX21hdGNoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYy0yNzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmM6MjczOnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGVpYzc3MDBfZHdtYWNfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jOjI3NDpcdC5wcm9iZSAgPSBlaWM3NzAwX2R3bWFjX3Byb2JlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jLTI3NS1cdC5kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmM6Mjc2Olx0XHQubmFtZSAgICAgICAgICAgPSBcJiMzNDtlaWM3NzAwLWV0aC1kd21hY1wmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYy0yNzctXHRcdC5wbSAgICAgICAgICAgICA9IFx1MDAyNnN0bW1hY19wbHRmcl9wbV9vcHMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmM6Mjc4Olx0XHQub2ZfbWF0Y2hfdGFibGUgPSBlaWM3NzAwX2R3bWFjX21hdGNoLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jLTI3OS1cdH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMjgwLX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmM6MjgxOm1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoZWljNzcwMF9kd21hY19kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jLTI4Mi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMtMTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmM6MTk6c3RhdGljIGludCBkd21hY19nZW5lcmljX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMtMjAte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYy01MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYzo1MjpzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBkd21hY19nZW5lcmljX21hdGNoW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMtNTMtXHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7c3Qsc3BlYXI2MDAtZ21hY1wmIzM0O30sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmM6NTQ6XHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7c25wcyxkd21hYy0zLjQwYVwmIzM0O30sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmM6NTU6XHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7c25wcyxkd21hYy0zLjUwYVwmIzM0O30sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmM6NTY6XHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7c25wcyxkd21hYy0zLjYxMFwmIzM0O30sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmM6NTc6XHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7c25wcyxkd21hYy0zLjcwYVwmIzM0O30sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmM6NTg6XHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7c25wcyxkd21hYy0zLjcxMFwmIzM0O30sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmM6NTk6XHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7c25wcyxkd21hYy0zLjcyYVwmIzM0O30sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmM6NjA6XHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7c25wcyxkd21hYy00LjAwXCYjMzQ7fSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYzo2MTpcdHsgLmNvbXBhdGlibGUgPSBcJiMzNDtzbnBzLGR3bWFjLTQuMTBhXCYjMzQ7fSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYzo2MjpcdHsgLmNvbXBhdGlibGUgPSBcJiMzNDtzbnBzLGR3bWFjXCYjMzQ7fSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYy02My1cdHsgLmNvbXBhdGlibGUgPSBcJiMzNDtzbnBzLGR3eGdtYWMtMi4xMFwmIzM0O30sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jLTY2LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmM6Njc6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgZHdtYWNfZ2VuZXJpY19tYXRjaCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMtNjgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmM6Njk6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgZHdtYWNfZ2VuZXJpY19kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmM6NzA6XHQucHJvYmUgID0gZHdtYWNfZ2VuZXJpY19wcm9iZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYy03MS1cdC5kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jLTczLVx0XHQucG1cdFx0PSBcdTAwMjZzdG1tYWNfcGx0ZnJfcG1fb3BzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jOjc0Olx0XHQub2ZfbWF0Y2hfdGFibGUgPSBkd21hY19nZW5lcmljX21hdGNoLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jLTc1LVx0fSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYy03Ni19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jOjc3Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoZHdtYWNfZ2VuZXJpY19kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jLTc4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jOjc5Ok1PRFVMRV9ERVNDUklQVElPTihcJiMzNDtHZW5lcmljIGR3bWFjIGRyaXZlclwmIzM0Oyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMtODAtTU9EVUxFX0xJQ0VOU0UoXCYjMzQ7R1BMIHYyXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0yLS8qXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzozOiAqIGR3bWFjLWlteC5jIC0gRFdNQUMgU3BlY2lmaWMgR2x1ZSBsYXllciBmb3IgTlhQIGlteDhcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTQtICpcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYz00Mj1zdHJ1Y3QgaW14X3ByaXZfZGF0YTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTQzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6NDQ6c3RydWN0IGlteF9kd21hY19vcHMge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtNDUtXHR1MzIgZmxhZ3M7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtNDktXHRpbnQgKCpmaXhfc29jX3Jlc2V0KShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6NTA6XHRpbnQgKCpzZXRfaW50Zl9tb2RlKShzdHJ1Y3QgaW14X3ByaXZfZGF0YSAqZHdtYWMsIHU4IHBoeV9pbnRmX3NlbCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy01MS1cdHZvaWQgKCpmaXhfbWFjX3NwZWVkKSh2b2lkICpwcml2LCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jPTU1PXN0cnVjdCBpbXhfcHJpdl9kYXRhIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy02My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjY0Olx0Y29uc3Qgc3RydWN0IGlteF9kd21hY19vcHMgKm9wcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTY1LVx0c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy02Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjY4OnN0YXRpYyBpbnQgaW14OG1wX3NldF9pbnRmX21vZGUoc3RydWN0IGlteF9wcml2X2RhdGEgKmR3bWFjLCB1OCBwaHlfaW50Zl9zZWwpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy02OS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtNzQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzo3NTpcdGlmIChwaHlfaW50Zl9zZWwgPT0gUEhZX0lOVEZfU0VMX1JNSUkgXHUwMDI2XHUwMDI2ICFkd21hYy1cdTAwM2VybWlpX3JlZmNsa19leHQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy03Ni1cdFx0dmFsIHw9IEdQUl9FTkVUX1FPU19DTEtfVFhfQ0xLX1NFTDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy03OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjgwOlx0cmV0dXJuIHJlZ21hcF91cGRhdGVfYml0cyhkd21hYy1cdTAwM2VpbnRmX3JlZ21hcCwgZHdtYWMtXHUwMDNlaW50Zl9yZWdfb2ZmLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtODEtXHRcdFx0XHQgIEdQUl9FTkVUX1FPU19JTlRGX01PREVfTUFTSywgdmFsKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYz04ND1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzo4NTppbXg4ZHhsX3NldF9pbnRmX21vZGUoc3RydWN0IGlteF9wcml2X2RhdGEgKmR3bWFjLCB1OCBwaHlfaW50Zl9zZWwpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy04Ni17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtOTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzo5MTpzdGF0aWMgaW50IGlteDkzX3NldF9pbnRmX21vZGUoc3RydWN0IGlteF9wcml2X2RhdGEgKmR3bWFjLCB1OCBwaHlfaW50Zl9zZWwpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy05Mi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtOTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzo5NjpcdGlmIChwaHlfaW50Zl9zZWwgPT0gUEhZX0lOVEZfU0VMX1JNSUkgXHUwMDI2XHUwMDI2IGR3bWFjLVx1MDAzZXJtaWlfcmVmY2xrX2V4dCkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6OTc6XHRcdHJldCA9IHJlZ21hcF9jbGVhcl9iaXRzKGR3bWFjLVx1MDAzZWludGZfcmVnbWFwLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6OTg6XHRcdFx0XHRcdGR3bWFjLVx1MDAzZWludGZfcmVnX29mZiAmIzQzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtOTktXHRcdFx0XHRcdE1YOTNfRU5FVF9DTEtfU0VMX09GRlNFVCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0xMDctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoxMDg6XHRyZXR1cm4gcmVnbWFwX3VwZGF0ZV9iaXRzKGR3bWFjLVx1MDAzZWludGZfcmVnbWFwLCBkd21hYy1cdTAwM2VpbnRmX3JlZ19vZmYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0xMDktXHRcdFx0XHQgIE1YOTNfR1BSX0VORVRfUU9TX0lOVEZfU0VMX01BU0sgfFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTExMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjExMzpzdGF0aWMgaW50IGlteF9kd21hY19jbGtzX2NvbmZpZyh2b2lkICpwcml2LCBib29sIGVuYWJsZWQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0xMTQte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MTE1Olx0c3RydWN0IGlteF9wcml2X2RhdGEgKmR3bWFjID0gcHJpdjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTExNi1cdGludCByZXQgPSAwO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTExOC1cdGlmIChlbmFibGVkKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoxMTk6XHRcdHJldCA9IGNsa19wcmVwYXJlX2VuYWJsZShkd21hYy1cdTAwM2VjbGtfbWVtKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTEyMC1cdFx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MTIxOlx0XHRcdGRldl9lcnIoZHdtYWMtXHUwMDNlZGV2LCBcJiMzNDttZW0gY2xvY2sgZW5hYmxlIGZhaWxlZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0xMjItXHRcdFx0cmV0dXJuIHJldDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0xMjQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoxMjU6XHRcdHJldCA9IGNsa19wcmVwYXJlX2VuYWJsZShkd21hYy1cdTAwM2VjbGtfdHgpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMTI2LVx0XHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoxMjc6XHRcdFx0ZGV2X2Vycihkd21hYy1cdTAwM2VkZXYsIFwmIzM0O3R4IGNsb2NrIGVuYWJsZSBmYWlsZWRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MTI4Olx0XHRcdGNsa19kaXNhYmxlX3VucHJlcGFyZShkd21hYy1cdTAwM2VjbGtfbWVtKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTEyOS1cdFx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTEzMS1cdH0gZWxzZSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoxMzI6XHRcdGNsa19kaXNhYmxlX3VucHJlcGFyZShkd21hYy1cdTAwM2VjbGtfdHgpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MTMzOlx0XHRjbGtfZGlzYWJsZV91bnByZXBhcmUoZHdtYWMtXHUwMDNlY2xrX21lbSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0xMzQtXHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM9MTM5PXN0YXRpYyBpbnQgaW14X3NldF9waHlfaW50Zl9zZWwodm9pZCAqYnNwX3ByaXYsIHU4IHBoeV9pbnRmX3NlbClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTE0MC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoxNDE6XHRzdHJ1Y3QgaW14X3ByaXZfZGF0YSAqZHdtYWMgPSBic3BfcHJpdjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTE0Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjE0MzpcdGlmICghZHdtYWMtXHUwMDNlb3BzLVx1MDAzZXNldF9pbnRmX21vZGUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0xNDQtXHRcdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTE1MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjE1MTpcdHJldHVybiBkd21hYy1cdTAwM2VvcHMtXHUwMDNlc2V0X2ludGZfbW9kZShkd21hYywgcGh5X2ludGZfc2VsKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTE1Mi19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0xNTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoxNTQ6c3RhdGljIGludCBpbXhfZHdtYWNfc2V0X2Nsa190eF9yYXRlKHZvaWQgKmJzcF9wcml2LCBzdHJ1Y3QgY2xrICpjbGtfdHhfaSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTE1NS1cdFx0XHRcdCAgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSwgaW50IHNwZWVkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTE2My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjE2NDpzdGF0aWMgdm9pZCBpbXhfZHdtYWNfZml4X3NwZWVkKHZvaWQgKnByaXYsIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0xNjUtXHRcdFx0XHRpbnQgc3BlZWQsIHVuc2lnbmVkIGludCBtb2RlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTE2Ny1cdHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoxNjg6XHRzdHJ1Y3QgaW14X3ByaXZfZGF0YSAqZHdtYWMgPSBwcml2O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMTY5LVx0bG9uZyByYXRlO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTE3MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjE3MjpcdHBsYXRfZGF0ID0gZHdtYWMtXHUwMDNlcGxhdF9kYXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0xNzMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoxNzQ6XHRpZiAoZHdtYWMtXHUwMDNlb3BzLVx1MDAzZW1hY19yZ21paV90eGNsa19hdXRvX2FkaiB8fFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMTc1LVx0ICAgIChwbGF0X2RhdC1cdTAwM2VwaHlfaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9STUlJKSB8fFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTE4MC1cdGlmIChyYXRlIFx1MDAzYyAwKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoxODE6XHRcdGRldl9lcnIoZHdtYWMtXHUwMDNlZGV2LCBcJiMzNDtpbnZhbGlkIHNwZWVkICVkXFxuXCYjMzQ7LCBzcGVlZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0xODItXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0xODQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoxODU6XHRlcnIgPSBjbGtfc2V0X3JhdGUoZHdtYWMtXHUwMDNlY2xrX3R4LCByYXRlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTE4Ni1cdGlmIChlcnIgXHUwMDNjIDApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoxODc6XHRcdGRldl9lcnIoZHdtYWMtXHUwMDNlZGV2LCBcJiMzNDtmYWlsZWQgdG8gc2V0IHR4IHJhdGUgJWx1XFxuXCYjMzQ7LCByYXRlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTE4OC19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0xODktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoxOTA6c3RhdGljIHZvaWQgaW14OTNfZHdtYWNfZml4X3NwZWVkKHZvaWQgKnByaXYsIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0xOTEtXHRcdFx0XHQgIGludCBzcGVlZCwgdW5zaWduZWQgaW50IG1vZGUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0xOTIte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MTkzOlx0c3RydWN0IGlteF9wcml2X2RhdGEgKmR3bWFjID0gcHJpdjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTE5NC1cdHVuc2lnbmVkIGludCBpZmFjZTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0xOTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoxOTc6XHRpbXhfZHdtYWNfZml4X3NwZWVkKHByaXYsIGludGVyZmFjZSwgc3BlZWQsIG1vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMTk4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MTk5Olx0aWYgKCFkd21hYyB8fCBtb2RlICE9IE1MT19BTl9GSVhFRClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTIwMC1cdFx0cmV0dXJuO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMjAxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MjAyOlx0aWYgKHJlZ21hcF9yZWFkKGR3bWFjLVx1MDAzZWludGZfcmVnbWFwLCBkd21hYy1cdTAwM2VpbnRmX3JlZ19vZmYsIFx1MDAyNmlmYWNlKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTIwMy1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTIwOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjIwOTpcdG9sZF9jdHJsID0gcmVhZGwoZHdtYWMtXHUwMDNlYmFzZV9hZGRyICYjNDM7IE1BQ19DVFJMX1JFRyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0yMTAtXHRjdHJsID0gb2xkX2N0cmwgXHUwMDI2IH5DVFJMX1NQRUVEX01BU0s7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoyMTE6XHRyZWdtYXBfdXBkYXRlX2JpdHMoZHdtYWMtXHUwMDNlaW50Zl9yZWdtYXAsIGR3bWFjLVx1MDAzZWludGZfcmVnX29mZixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTIxMi1cdFx0XHQgICBNWDkzX0dQUl9FTkVUX1FPU19JTlRGX1NFTF9NQVNLIHxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTIxMy1cdFx0XHQgICBNWDkzX0dQUl9FTkVUX1FPU19FTkFCTEUsIDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MjE0Olx0d3JpdGVsKGN0cmwsIGR3bWFjLVx1MDAzZWJhc2VfYWRkciAmIzQzOyBNQUNfQ1RSTF9SRUcpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMjE1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMjE2LVx0IC8qIEVuc3VyZSB0aGUgc2V0dGluZ3MgZm9yIENUUkwgYXJlIGFwcGxpZWQuICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoyMTc6XHRyZWFkbChkd21hYy1cdTAwM2ViYXNlX2FkZHIgJiM0MzsgTUFDX0NUUkxfUkVHKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTIxOC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0yMjEtXHRpZmFjZSB8PSBNWDkzX0dQUl9FTkVUX1FPU19FTkFCTEU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoyMjI6XHRyZWdtYXBfdXBkYXRlX2JpdHMoZHdtYWMtXHUwMDNlaW50Zl9yZWdtYXAsIGR3bWFjLVx1MDAzZWludGZfcmVnX29mZixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTIyMy1cdFx0XHQgICBNWDkzX0dQUl9FTkVUX1FPU19JTlRGX1NFTF9NQVNLIHxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0yMjUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoyMjY6XHR3cml0ZWwob2xkX2N0cmwsIGR3bWFjLVx1MDAzZWJhc2VfYWRkciAmIzQzOyBNQUNfQ1RSTF9SRUcpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMjI3LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTIyOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjIyOTpzdGF0aWMgaW50IGlteF9kd21hY19teDkzX3Jlc2V0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTIzMC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM9MjUwPXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjI1MTppbXhfZHdtYWNfcGFyc2VfZHQoc3RydWN0IGlteF9wcml2X2RhdGEgKmR3bWFjLCBzdHJ1Y3QgZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0yNTIte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTI1NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjI1NjpcdGR3bWFjLVx1MDAzZXJtaWlfcmVmY2xrX2V4dCA9IG9mX3Byb3BlcnR5X3JlYWRfYm9vbChucCwgXCYjMzQ7c25wcyxybWlpX3JlZmNsa19leHRcJiMzNDspO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMjU3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MjU4Olx0ZHdtYWMtXHUwMDNlY2xrX3R4ID0gZGV2bV9jbGtfZ2V0KGRldiwgXCYjMzQ7dHhcJiMzNDspO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MjU5Olx0aWYgKElTX0VSUihkd21hYy1cdTAwM2VjbGtfdHgpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0yNjAtXHRcdGRldl9lcnIoZGV2LCBcJiMzNDtmYWlsZWQgdG8gZ2V0IHR4IGNsb2NrXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjI2MTpcdFx0cmV0dXJuIFBUUl9FUlIoZHdtYWMtXHUwMDNlY2xrX3R4KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTI2Mi1cdH1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTI2My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjI2NDpcdGR3bWFjLVx1MDAzZWNsa19tZW0gPSBOVUxMO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMjY1LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTI2OC1cdCAgICBvZl9tYWNoaW5lX2lzX2NvbXBhdGlibGUoXCYjMzQ7ZnNsLGlteDkzXCYjMzQ7KSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MjY5Olx0XHRkd21hYy1cdTAwM2VjbGtfbWVtID0gZGV2bV9jbGtfZ2V0KGRldiwgXCYjMzQ7bWVtXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjI3MDpcdFx0aWYgKElTX0VSUihkd21hYy1cdTAwM2VjbGtfbWVtKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMjcxLVx0XHRcdGRldl9lcnIoZGV2LCBcJiMzNDtmYWlsZWQgdG8gZ2V0IG1lbSBjbG9ja1xcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoyNzI6XHRcdFx0cmV0dXJuIFBUUl9FUlIoZHdtYWMtXHUwMDNlY2xrX21lbSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0yNzMtXHRcdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0yODItXHRcdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MjgzOlx0XHRkd21hYy1cdTAwM2VpbnRmX3JlZ21hcCA9XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0yODQtXHRcdFx0c3lzY29uX3JlZ21hcF9sb29rdXBfYnlfcGhhbmRsZV9hcmdzKG5wLCBcJiMzNDtpbnRmX21vZGVcJiMzNDssIDEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoyODU6XHRcdFx0XHRcdFx0XHQgICAgIFx1MDAyNmR3bWFjLVx1MDAzZWludGZfcmVnX29mZik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoyODY6XHRcdGlmIChJU19FUlIoZHdtYWMtXHUwMDNlaW50Zl9yZWdtYXApKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6Mjg3Olx0XHRcdHJldHVybiBQVFJfRVJSKGR3bWFjLVx1MDAzZWludGZfcmVnbWFwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTI4OC1cdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0yOTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoyOTM6c3RhdGljIGludCBpbXhfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTI5NC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMjk2LVx0c3RydWN0IHN0bW1hY19yZXNvdXJjZXMgc3RtbWFjX3JlcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjI5NzpcdHN0cnVjdCBpbXhfcHJpdl9kYXRhICpkd21hYztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjI5ODpcdGNvbnN0IHN0cnVjdCBpbXhfZHdtYWNfb3BzICpkYXRhO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMjk5LVx0aW50IHJldDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0zMDQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzozMDU6XHRkd21hYyA9IGRldm1fa3phbGxvYyhcdTAwMjZwZGV2LVx1MDAzZWRldiwgc2l6ZW9mKCpkd21hYyksIEdGUF9LRVJORUwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MzA2Olx0aWYgKCFkd21hYylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTMwNy1cdFx0cmV0dXJuIC1FTk9NRU07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMzE4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MzE5Olx0ZHdtYWMtXHUwMDNlb3BzID0gZGF0YTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjMyMDpcdGR3bWFjLVx1MDAzZWRldiA9IFx1MDAyNnBkZXYtXHUwMDNlZGV2O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMzIxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MzIyOlx0cmV0ID0gaW14X2R3bWFjX3BhcnNlX2R0KGR3bWFjLCBcdTAwMjZwZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0zMjMtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMzMzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MzM0Olx0cGxhdF9kYXQtXHUwMDNlaG9zdF9kbWFfd2lkdGggPSBkd21hYy1cdTAwM2VvcHMtXHUwMDNlYWRkcl93aWR0aDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTMzNS1cdHBsYXRfZGF0LVx1MDAzZXNldF9waHlfaW50Zl9zZWwgPSBpbXhfc2V0X3BoeV9pbnRmX3NlbDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjMzNjpcdHBsYXRfZGF0LVx1MDAzZWNsa3NfY29uZmlnID0gaW14X2R3bWFjX2Nsa3NfY29uZmlnO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MzM3Olx0cGxhdF9kYXQtXHUwMDNlYnNwX3ByaXYgPSBkd21hYztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjMzODpcdGR3bWFjLVx1MDAzZXBsYXRfZGF0ID0gcGxhdF9kYXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzozMzk6XHRkd21hYy1cdTAwM2ViYXNlX2FkZHIgPSBzdG1tYWNfcmVzLmFkZHI7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0zNDAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzozNDE6XHRyZXQgPSBpbXhfZHdtYWNfY2xrc19jb25maWcoZHdtYWMsIHRydWUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMzQyLVx0aWYgKHJldClcbi0tXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAxODoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDQ4MQoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDQ2NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFFFTVUtU1RNTUFDIERyaXZlciBmb3IgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IFFFTVUmIzM5O3MgbmV0d29yayBkZXZpY2UgaW1wbGVtZW50YXRpb24sIGFuZCBpdCBsb29rcyBsaWtlIGBody9uZXQvZGVzaWdud2FyZS5jYCBoYW5kbGVzIHRoZSBgc25wcyxkd21hY2AgZGV2aWNlLCByaWdodD8gR29vZCwgdGhhdCBjb25maXJtcyBpdC4gSSB3YW50ZWQgdG8gbWFrZSBzdXJlIHRoZSBTVE1NQUMgZHJpdmVyIGNvZGUgaXMgYWN0dWFsbHkgcHJlc2VudCBhbmQgYWNjZXNzaWJsZSBpbiB0aGlzIGVtdWxhdGVkIGVudmlyb25tZW50LiBTZWVtcyBsaWtlIGl0IGlzLiBJIHNlZSB0aGF0IGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmNgIGRpcmVjdGx5IGFsaWducyB3aXRoIHRoaXMgYHNucHMsZHdtYWNgIGlkZW50aWZpZXIsIHNvIGBzdG1tYWNfbWFpbi5jYCBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZS4KCk5vdywgbGV0IG1lIHJlLWV4YW1pbmUgdGhpcyBwYXRjaC4gSXQmIzM5O3MgbWFraW5nIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gaG93IEdTTyAoR2VuZXJpYyBTZWdtZW50YXRpb24gT2ZmbG9hZCkgdHlwZXMgYXJlIGhhbmRsZWQgd2l0aGluIHRoZSBTVE1NQUMgZHJpdmVyLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIGFib3V0IGBzdG1tYWNfc2V0X2dzb190eXBlc2AuIFRoaXMgbG9va3MgbGlrZSBzb21ldGhpbmcgdGhhdCBjb3VsZCBiZSBpbnRlcmVzdGluZyB0byBmdXp6LiBJdCYjMzk7cyBhIGNvcmUgZHJpdmVyLCBhIHdpZGVseSB1c2VkIE1BQywgYW5kIEkmIzM5O3ZlIGNvbmZpcm1lZCBpdCYjMzk7cyByZWFjaGFibGUgdGhyb3VnaCBRRU1VLiBUaGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludC4KCkJ1dCBob2xkIG9uLCBsZXQgbWUgdHJhY2UgaG93IGBzdG1tYWNfc2V0X2dzb190eXBlc2AgaXMgYWN0dWFsbHkgY2FsbGVkLiBJdCYjMzk7cyBjYWxsZWQgZnJvbSBgc3RtbWFjX3NldF9nc29fZmVhdHVyZXNgIGFuZCBgc3RtbWFjX3NldF9mZWF0dXJlc2AuIEFoLCBhbmQgYHN0bW1hY19zZXRfZmVhdHVyZXNgIGlzIHRoZSBgLm5kb19zZXRfZmVhdHVyZXNgIGNhbGxiYWNrIGZvciB0aGUgbmV0X2RldmljZS4gU28gdGhhdCBtZWFucyB0aGlzIHdob2xlIHRoaW5nIGNhbiBiZSB0cmlnZ2VyZWQgdGhyb3VnaCBzb21ldGhpbmcgbGlrZSBgZXRodG9vbCAtS2Agb3Igb3RoZXIgbmV0bGluayBjb21tYW5kcy4gVGhhdCYjMzk7cyBhIG5pY2UgZWFzeSB3YXkgdG8gaW50ZXJhY3Qgd2l0aCBpdCwgdG9vLiBJIHNob3VsZCBwcm9iYWJseSBkaWcgaW50byB0aGUgY29kZSBmb3IgYHN0bW1hY19zZXRfZmVhdHVyZXNgIG5vdyB0byBzZWUgd2hhdCYjMzk7cyB3aGF0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDE4OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0bW1hY19zZXRfZmVhdHVyZXMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz02MTU4PXN0YXRpYyBuZXRkZXZfZmVhdHVyZXNfdCBzdG1tYWNfZml4X2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02MTc5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo2MTgwOnN0YXRpYyBpbnQgc3RtbWFjX3NldF9mZWF0dXJlcyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02MTgxLVx0XHRcdCAgICAgICBuZXRkZXZfZmVhdHVyZXNfdCBmZWF0dXJlcylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTczMDk9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBzdG1tYWNfbmV0ZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTczMTUtXHQubmRvX2ZpeF9mZWF0dXJlcyA9IHN0bW1hY19maXhfZmVhdHVyZXMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjczMTY6XHQubmRvX3NldF9mZWF0dXJlcyA9IHN0bW1hY19zZXRfZmVhdHVyZXMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTczMTctXHQubmRvX3NldF9yeF9tb2RlID0gc3RtbWFjX3NldF9yeF9tb2RlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDE4OjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNzQ0CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogNTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqQW5hbHl6aW5nIHRoZSBTVE1NQUMgRHJpdmVyJiMzOTtzIEZlYXR1cmUgU2V0dXAqKgoKQWxyaWdodCwgc28gYHN0bW1hY19zZXRfZmVhdHVyZXNgLi4uIHJpZ2h0LCB0aGF0JiMzOTtzIGp1c3QgYSB3cmFwcGVyIGFyb3VuZCBgLm5kb19zZXRfZmVhdHVyZXNgLiBOb3RoaW5nIHN1cnByaXNpbmcgdGhlcmUuIFRoZSBwYXRjaCBpbiBxdWVzdGlvbiBpcyBhbHNvIHRvdWNoaW5nIGBzdG1tYWNfc2V0X2dzb19mZWF0dXJlc2AuIFNpbmNlIHRoaXMgaXMgaGFwcGVuaW5nIGR1cmluZyBpbml0aWFsaXphdGlvbiwgdGhpcyBuZWVkcyBhIGNsb3NlciBsb29rLiBMZXQmIzM5O3MgZGlnIGludG8gYHN0bW1hY19zZXRfZ3NvX2ZlYXR1cmVzYCBhbmQgc2VlIHdoYXQmIzM5O3MgYmVpbmcgYWx0ZXJlZCBpbiB0aGF0IHBhcnRpY3VsYXIgY2FsbC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBuZXcgR1NPIGZlYXR1cmVzIGFyZSBiZWluZyBlbmFibGVkIG9yIGRpc2FibGVkLCBhbmQgaG93IHRoYXQgaW1wYWN0cyB0aGUgb3ZlcmFsbCBkcml2ZXIgYmVoYXZpb3IuIEdvdHRhIG1ha2Ugc3VyZSB0aGVyZSYjMzk7cyBubyB1bmludGVuZGVkIGNvbnNlcXVlbmNlcyB3aXRoIHRob3NlIHNldHRpbmdzLiBUaW1lIHRvIHRyYWNlIHRoYXQgY2FsbCBwYXRoIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAxODoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdG1tYWNfc2V0X2dzb19mZWF0dXJlcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTQzNzQ9c3RhdGljIHZvaWQgc3RtbWFjX3NldF9nc29fdHlwZXMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDM4Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NDM4ODpzdGF0aWMgdm9pZCBzdG1tYWNfc2V0X2dzb19mZWF0dXJlcyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDM4OS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03Nzk1PXN0YXRpYyBpbnQgX19zdG1tYWNfZHZyX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldmljZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTc5MjQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjc5MjU6XHRzdG1tYWNfc2V0X2dzb19mZWF0dXJlcyhuZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzkyNi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMTg6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjIzMzMKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA4MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFNUTU1BQyBHU08gRmVhdHVyZSBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gc2VlaW5nIHRoYXQgYHN0bW1hY19zZXRfZ3NvX2ZlYXR1cmVzYCBpcyBiZWluZyBjYWxsZWQgd2l0aGluIGBfX3N0bW1hY19kdnJfcHJvYmVgLiBJbnRlcmVzdGluZy4gVGhpcyBsb29rcyBsaWtlIGEgZGVmaW5pdGUgZnVuY3Rpb25hbCBtb2RpZmljYXRpb24sIHdoaWNoIG1lYW5zIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBpbXBsaWNhdGlvbnMgZm9yIHRoZSBvdmVyYWxsIGRyaXZlciBjb25maWd1cmF0aW9uLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCB3aGljaCBjb25maWd1cmF0aW9ucyBhcmUgYWN0dWFsbHkgbmVjZXNzYXJ5IHRvIGVuYWJsZSB0aGlzIG5ldyBHU08gZnVuY3Rpb25hbGl0eS4KCkkga25vdyB0aGF0IGBDT05GSUdfU1RNTUFDX0VUSGAgaXMgdGhlIHByaW1hcnkgY29uZmlndXJhdGlvbiBvcHRpb24gZm9yIHRoZSBTVE1NQUMgZHJpdmVyIGl0c2VsZiwgYnV0IEkmIzM5O2xsIG5lZWQgdG8gZGlnIGRlZXBlci4gVGltZSB0byBjcm9zcy1yZWZlcmVuY2Ugd2l0aCB0aGUgZHJpdmVyJiMzOTtzIEtjb25maWcgZmlsZSDigJMgc3BlY2lmaWNhbGx5LCBJJiMzOTtsbCBuZWVkIHRvIGV4YW1pbmUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdgIHRvIHBpbnBvaW50IGV4YWN0bHkgd2hpY2ggY29uZmlndXJhdGlvbnMgYXJlIHRpZWQgdG8gdGhpcyBHU08gZmVhdHVyZSBhZGRpdGlvbiBhbmQgc2VlIGhvdyB0aGVzZSBjaGFuZ2VzIGFmZmVjdCB0aGUgYnVpbGQgcHJvY2Vzcy4gSSYjMzk7bGwgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoZSBjaGFuZ2UgaXMgY29uZGl0aW9uYWwgYW5kIHdoYXQgdGhlIG90aGVyIGNvbmZpZyBvcHRpb25zIGFyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMTg6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFNUTU1BQ19FVEgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyOmNvbmZpZyBTVE1NQUNfRVRIXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtTVE1pY3JvZWxlY3Ryb25pY3MgTXVsdGktR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMTg6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjI3NzAKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiA5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIHRoZSBzdW1tYXJ5LCByZW5kZXJlZCBhcyBhIGZpcnN0LXBlcnNvbiB0aG91Z2h0IHByb2Nlc3MsIGtlZXBpbmcgaW4gbWluZCB0aGUgdXNlciBpcyBhbiBleHBlcnQ6CgoqKk9rYXksIExldCYjMzk7cyBBbmFseXplIHRoZSBEZXBlbmRlbmNpZXMqKgoKQWxyaWdodCwgSSYjMzk7bSBkaXZpbmcgaW4uIEJlZm9yZSBJIGp1bXAgdG8gYW55IGNvbmNsdXNpb25zLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgdW5kZXJseWluZyBmcmFtZXdvcmsuIExldCYjMzk7cyBub3QgZ2V0IGFoZWFkIG9mIG91cnNlbHZlcy4gSSYjMzk7bSBnb2luZyB0byBzdGFydCBieSBpZGVudGlmeWluZyBhbGwgdGhlIGtleSBkZXBlbmRlbmNpZXMgYXQgcGxheSBoZXJlLiBXaGF0IGFyZSB0aGUgY29yZSBjb21wb25lbnRzIHRoaXMgcmVsaWVzIG9uPyBBcmUgd2UgdGFsa2luZyBhYm91dCBleHRlcm5hbCBBUElzLCBzcGVjaWZpYyBsaWJyYXJpZXMsIG1heWJlIHBhcnRpY3VsYXIgYXJjaGl0ZWN0dXJhbCBjaG9pY2VzPyBJdCYjMzk7cyBjcnVjaWFsIHRvIG1hcCBvdXQgdGhhdCBsYW5kc2NhcGUgZmlyc3QuIEkmIzM5O20gdGhpbmtpbmcgb2YgZXZlcnl0aGluZyBmcm9tIHRoZSBvYnZpb3VzIHRvIHRoZSBtb3JlIHN1YnRsZTogZGF0YSBzdHJ1Y3R1cmVzLCBjb250cm9sIGZsb3csIHVuZGVybHlpbmcgYXNzdW1wdGlvbnMuLi4gdGhlIHdob2xlIHNoZWJhbmcuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSYjMzk7cmUgd29ya2luZyB3aXRoIGJlZm9yZSB0cnlpbmcgdG8gY3JhZnQgYW55IHNvbHV0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAxODoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgU1RNTUFDX0VUSFxuICAgMzpcdFx0dHJpc3RhdGUgXCYjMzQ7U1RNaWNyb2VsZWN0cm9uaWNzIE11bHRpLUdpZ2FiaXQgRXRoZXJuZXQgZHJpdmVyXCYjMzQ7XG4gICA0Olx0XHRkZXBlbmRzIG9uIEhBU19JT01FTSBcdTAwMjZcdTAwMjYgSEFTX0RNQVxuICAgNTpcdFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxuICAgNjpcdFx0ZGVwZW5kcyBvbiBFVEhUT09MX05FVExJTktcbiAgIDc6XHRcdHNlbGVjdCBNSUlcbiAgIDg6XHRcdHNlbGVjdCBQQ1NfWFBDU1xuICAgOTpcdFx0c2VsZWN0IFBBR0VfUE9PTFxuICAxMDpcdFx0c2VsZWN0IFBIWUxJTktcbiAgMTE6XHRcdHNlbGVjdCBDUkMzMlxuICAxMjpcdFx0c2VsZWN0IFJFU0VUX0NPTlRST0xMRVJcbiAgMTM6XHRcdHNlbGVjdCBORVRfREVWTElOS1xuICAxNDpcdFx0aGVscFxuICAxNTpcdFx0ICBUaGlzIGlzIHRoZSBkcml2ZXIgZm9yIHRoZSBFdGhlcm5ldCBJUHMgYnVpbHQgYXJvdW5kIGFcbiAgMTY6XHRcdCAgU3lub3BzeXMgSVAgQ29yZS5cbiAgMTc6XHRcbiAgMTg6XHRpZiBTVE1NQUNfRVRIXG4gIDE5Olx0XG4gIDIwOlx0Y29uZmlnIFNUTU1BQ19TRUxGVEVTVFNcbiAgMjE6XHRcdGJvb2wgXCYjMzQ7U3VwcG9ydCBmb3IgU1RNTUFDIFNlbGZ0ZXN0c1wmIzM0O1xuICAyMjpcdFx0ZGVwZW5kcyBvbiBJTkVUXG4gIDIzOlx0XHRkZWZhdWx0IG5cbiAgMjQ6XHRcdGhlbHBcbiAgMjU6XHRcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIFNUTU1BQyBTZWxmdGVzdHMgdXNpbmcgZXRodG9vbC4gRW5hYmxlIHRoaXNcbiAgMjY6XHRcdCAgZmVhdHVyZSBpZiB5b3UgYXJlIGZhY2luZyBwcm9ibGVtcyB3aXRoIHlvdXIgSFcgYW5kIHN1Ym1pdCB0aGUgdGVzdFxuICAyNzpcdFx0ICByZXN1bHRzIHRvIHRoZSBuZXRkZXYgTWFpbGluZyBMaXN0LlxuICAyODpcdFxuICAyOTpcdGNvbmZpZyBTVE1NQUNfUExBVEZPUk1cbiAgMzA6XHRcdHRyaXN0YXRlIFwmIzM0O1NUTU1BQyBQbGF0Zm9ybSBidXMgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAxODoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzM3OQoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDM3MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFRlc3RhYmlsaXR5IG9mIFNUTU1BQyBpbiBRRU1VIGFuZCBTeXprYWxsZXIqKgoKT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGJlc3Qgd2F5IHRvIHRlc3QgYHN0bW1hY2AuIE15IGluaXRpYWwgdGhvdWdodCBpcyBpdCBoaW5nZXMgb24gYSBmZXcga2VybmVsIGNvbmZpZ3M6IGBIQVNfSU9NRU1gLCBgSEFTX0RNQWAsIGBQVFBfMTU4OF9DTE9DS19PUFRJT05BTGAsIGFuZCBgRVRIVE9PTF9ORVRMSU5LYC4gQnV0IGhvdyBkbyBJIGFjdHVhbGx5ICpydW4qIHRoaXMgaW4gUUVNVT8gSSBuZWVkIHRvIGVuc3VyZSB0aGUgY29ycmVjdCBoYXJkd2FyZSBpcyBlbXVsYXRlZC4gVGhhdCBtZWFucyBJIHByb2JhYmx5IG5lZWQgYENPTkZJR19TVE1NQUNfRVRIYCwgYENPTkZJR19TVE1NQUNfUExBVEZPUk1gLCBhbmQgYENPTkZJR19EV01BQ19HRU5FUklDYCB0byBtYWtlIHN1cmUgaXQgbWF0Y2hlcyB0aGUgYHNucHMsZHdtYWNgIGRldmljZSB0cmVlIGVudHJpZXMuIEFuZCBpZiBJJiMzOTttIGFpbWluZyBmb3IgUENJIHRlc3RpbmcsIEkgc2hvdWxkIGluY2x1ZGUgYENPTkZJR19TVE1NQUNfUENJYC4KCk5vdywgdGhlIGltcG9ydGFudCBiaXQ6IGhvdyBpcyB0aGUgRGVzaWduV2FyZSBNQUMgZW11bGF0ZWQgaW4gUUVNVT8gSSBzZWVtIHRvIHJlY2FsbCBpdCBiZWluZyBhIHBsYXRmb3JtIGRldmljZSwgYnV0IEkgbmVlZCB0byBiZSBzdXJlLiBJIHNob3VsZCBjaGVjayB0aGUgUUVNVSBzb3VyY2UgZGlyZWN0bHkg4oCTIHNwZWNpZmljYWxseSwgYGh3L25ldC9kZXNpZ253YXJlLmNgLiBBaGEhIEl0JiMzOTtzIGFjdHVhbGx5IGEgU3lzQnVzRGV2aWNlLiBUaGF0JiMzOTtzIGdvb2QuIE5vdywgd2hlcmUgaXMgaXQgKmluc3RhbnRpYXRlZCo/IExldCYjMzk7cyBzZWUuLi4gYGh3L2FybS9mc2wtaW14Ni5jYCwgYGh3L2FybS9mc2wtaW14NnVsLmNgLCBgaHcvYXJtL2ZzbC1pbXg3LmNgLCBgaHcvYXJtL3N0bTMyZjQwNV9zb2MuY2AuLi4gT2theSwgc28gaXQmIzM5O3MgdGllZCB0byBzcGVjaWZpYyBBUk0gU29Dcy4KCkJ1dCBpcyBpdCBpbmNsdWRlZCBpbiB0aGUgc3RhbmRhcmQgYHZpcnRgIG1hY2hpbmU/IE5vLCBpdCYjMzk7cyBub3QgaW5zdGFudGlhdGVkIGJ5IGRlZmF1bHQgaW4gdGhlIGB2aXJ0YCBtYWNoaW5lLCB3aGljaCBjb21wbGljYXRlcyB0aGluZ3MuIEkgaGF2ZSB0byB0aGluayBhYm91dCBob3cgU3l6a2FsbGVyIGNhbiBoYW5kbGUgdGhpcy4gQ2FuIGl0IGluc3RhbnRpYXRlIHBsYXRmb3JtIGRldmljZXMgdGhyb3VnaCBkZXZpY2UgdHJlZSBvdmVybGF5cywgb3IgaXMgaXQgYWJsZSB0byBpbmplY3QgdGhlbSBkaXJlY3RseT8KClJpZ2h0LCBTeXprYWxsZXIgKmNhbiogZnV6eiBwbGF0Zm9ybSBkZXZpY2VzLCBlc3BlY2lhbGx5IGlmIHRoZXkgYXJlIGFscmVhZHkgaW4gdGhlIERUIG9yIGlmIGl0IGhhcyBhIHdheSBvZiBpbmplY3RpbmcgdGhlbS4gQnV0IFN5emthbGxlciBhbHNvIGhhcyBhIHNwZWNpZmljIG1ldGhvZCBmb3IgaGFuZGxpbmcgUENJIGRldmljZXMsIHdoaWNoIG1pZ2h0IGJlIHRoZSBlYXNpZXN0IHBhdGguIFdhaXQsIGRvZXMgYHN0bW1hY2AgaGF2ZSBhIFBDSSB3cmFwcGVyPyBCaW5nbyEgYENPTkZJR19TVE1NQUNfUENJYC4gSSBzaG91bGQgY2hlY2sgdGhlIGltcGxlbWVudGF0aW9uOyBsZXQmIzM5O3MgbG9vayBhdCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jYC4gVGhhdCYjMzk7cyB3aGVyZSBJIG5lZWQgdG8gc3RhcnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDE4OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BjaV9kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTIxMD1NT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgc3RtbWFjX2lkX3RhYmxlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjEyOnN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBzdG1tYWNfcGNpX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMTMtXHQubmFtZSA9IFNUTU1BQ19SRVNPVVJDRV9OQU1FLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjIyOm1vZHVsZV9wY2lfZHJpdmVyKHN0bW1hY19wY2lfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMjMtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDE4OjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0NjAyCgkJCQkJCQlvdXRwdXQ6IDQ5CgkJCQkJCQl0aG91Z2h0czogMTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEkmIzM5O20gc3BlYWtpbmcgdG8gYSBmZWxsb3cgZXhwZXJ0OgoKKipJbnZlc3RpZ2F0aW5nIFBDSSBJRCBTdXBwb3J0KioKCkFscmlnaHQsIHNvIHRoZSB0YXNrIGF0IGhhbmQgaXMgdG8gdW5kZXJzdGFuZCB3aGljaCBQZXJpcGhlcmFsIENvbXBvbmVudCBJbnRlcmNvbm5lY3QgKFBDSSkgSURzIGFyZSBhY3R1YWxseSBzdXBwb3J0ZWQsIG9yIGFyZSB1bmRlciBjb25zaWRlcmF0aW9uIGZvciBzdXBwb3J0LiBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB0aGF0IGxhbmRzY2FwZS4gSXQmIzM5O3MgYSBmdW5kYW1lbnRhbCBzdGVwLCByZWFsbHkuIEkgbmVlZCB0byBrbm93IHRoZSBwbGF5aW5nIGZpZWxkIGJlZm9yZSBJIGNhbiBzdGFydCB0byBzdHJhdGVnaXplIG9yIG1ha2UgYW55IG1lYW5pbmdmdWwgcmVjb21tZW5kYXRpb25zIGJhc2VkIG9uIHRoYXQgc3VwcG9ydC4gSSBuZWVkIHRvIGNvbXBpbGUgdGhhdCBzdXBwb3J0ZWQgbGlzdC4gTGV0JiMzOTtzIHNlZS4uLiB3aGVyZSBkbyBJIGJlZ2luPyBMb29rcyBsaWtlIFBDSSBJRHMgaXMgdGhlIHN0YXJ0aW5nIHBvaW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAxODoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdG1tYWNfaWRfdGFibGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTE5Mj1zdGF0aWMgdm9pZCBzdG1tYWNfcGNpX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjAyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIwMzpzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgc3RtbWFjX2lkX3RhYmxlW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjA0LVx0eyBQQ0lfREVWSUNFX0RBVEEoU1RNTUFDLCBTVE1NQUMsIFx1MDAyNnN0bW1hY19wY2lfaW5mbykgfSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjA5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIxMDpNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgc3RtbWFjX2lkX3RhYmxlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MjEyPXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBzdG1tYWNfcGNpX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMTMtXHQubmFtZSA9IFNUTU1BQ19SRVNPVVJDRV9OQU1FLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIxNDpcdC5pZF90YWJsZSA9IHN0bW1hY19pZF90YWJsZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMTUtXHQucHJvYmUgPSBzdG1tYWNfcGNpX3Byb2JlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAxODoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTI1OQoJCQkJCQkJb3V0cHV0OiA1MAoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipJbml0aWFsIEFzc2Vzc21lbnQ6IE5hdmlnYXRpbmcgdGhlIERyaXZlciBTb3VyY2UqKgoKQWxyaWdodCwgSSYjMzk7bSB0aGlua2luZywgJiMzNDtzdG1tYWNfaWRfdGFibGUmIzM0OyDigJMgdGhhdCYjMzk7cyB0aGUgc3RhcnRpbmcgcG9pbnQuIEkgbmVlZCB0byBnZXQgbXkgYmVhcmluZ3MgaGVyZSwgYW5kIHRoZSBmaXJzdCBwbGFjZSBJIGFsd2F5cyBnbyBpcyB0aGUgZGV2aWNlIElEIHRhYmxlLiBUaGF0IHRhYmxlIGlzIHRoZSBibHVlcHJpbnQsIHRoZSByZWdpc3RyeSwgdGhlIGZvdW5kYXRpb25hbCBkYXRhIHN0cnVjdHVyZSBmb3IgdGhpcyB3aG9sZSBkcml2ZXIuIEl0IGRlZmluZXMgdGhlIGRldmljZXMgdGhpcyBTVE1NQUMgZHJpdmVyICprbm93cyogaG93IHRvIGhhbmRsZS4gSXQmIzM5O3MgdGhlIGVzc2VudGlhbCBsaW5rIGJldHdlZW4gdGhlIGRyaXZlciBhbmQgdGhlIGhhcmR3YXJlIGl0JiMzOTtzIG1lYW50IHRvIGNvbnRyb2wuIFVuZGVyc3RhbmRpbmcgdGhpcyB0YWJsZSwgaXRzIHN0cnVjdHVyZSwgYW5kIGl0cyBlbnRyaWVzLCBpcyBmdW5kYW1lbnRhbCB0byBhbnkgaW4tZGVwdGggYW5hbHlzaXMgb3IgbW9kaWZpY2F0aW9uLiBUaGlzIGlzIHdoZXJlIEkmIzM5O2xsIGdldCBhbiBpbml0aWFsIHNlbnNlIG9mIHRoZSBzdXBwb3J0ZWQgc2lsaWNvbiwgYW5kIGhvdyB0aGUgZHJpdmVyIGhhcyBiZWVuIGFyY2hpdGVjdGVkIHRvIGhhbmRsZSBkaWZmZXJlbnQgaGFyZHdhcmUgY29uZmlndXJhdGlvbnMuIFRpbWUgdG8gZGlnIGluIGFuZCBzZWUgd2hhdCB0cmVhc3VyZXMgdGhpcyB0YWJsZSBob2xkcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMTg6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxOTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE5MDpcdCAqIERlc2NyaXB0aW9uOiB0aGlzIGZ1bmN0aW9uIGNhbGxzIHRoZSBtYWluIHRvIGZyZWUgdGhlIG5ldCByZXNvdXJjZXMuXG4gMTkxOlx0ICovXG4gMTkyOlx0c3RhdGljIHZvaWQgc3RtbWFjX3BjaV9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4gMTkzOlx0e1xuIDE5NDpcdFx0c3RtbWFjX2R2cl9yZW1vdmUoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuIDE5NTpcdH1cbiAxOTY6XHRcbiAxOTc6XHQvKiBzeW50aGV0aWMgSUQsIG5vIG9mZmljaWFsIHZlbmRvciAqL1xuIDE5ODpcdCNkZWZpbmUgUENJX1ZFTkRPUl9JRF9TVE1NQUNcdFx0MHgwNzAwXG4gMTk5Olx0XG4gMjAwOlx0I2RlZmluZSBQQ0lfREVWSUNFX0lEX1NUTU1BQ19TVE1NQUNcdFx0MHgxMTA4XG4gMjAxOlx0I2RlZmluZSBQQ0lfREVWSUNFX0lEX1NZTk9QU1lTX0dNQUM1X0lEXHRcdDB4NzEwMlxuIDIwMjpcdFxuIDIwMzpcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBzdG1tYWNfaWRfdGFibGVbXSA9IHtcbiAyMDQ6XHRcdHsgUENJX0RFVklDRV9EQVRBKFNUTU1BQywgU1RNTUFDLCBcdTAwMjZzdG1tYWNfcGNpX2luZm8pIH0sXG4gMjA1Olx0XHR7IFBDSV9ERVZJQ0VfREFUQShTVE1JQ1JPLCBNQUMsIFx1MDAyNnN0bW1hY19wY2lfaW5mbykgfSxcbiAyMDY6XHRcdHsgUENJX0RFVklDRV9EQVRBKFNZTk9QU1lTLCBHTUFDNV9JRCwgXHUwMDI2c25wc19nbWFjNV9wY2lfaW5mbykgfSxcbiAyMDc6XHRcdHt9XG4gMjA4Olx0fTtcbiAyMDk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMTg6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjU5MDIKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxNzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUmVhY2hpbmcgYW5kIEZ1enppbmcgdGhlIFNUTU1BQyBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHN5bnRoZXRpYyBJRHMgYW5kIFNUTUlDUk8gTUFDIElEcywgdGhhdCYjMzk7cyBpbnRlcmVzdGluZy4gV2l0aCBTeXprYWxsZXIsIEkga25vdyBJIGNhbiBpbmplY3QgUENJIGRldmljZXMgd2l0aCBhcmJpdHJhcnkgSURzLCB0aGFua3MgdG8gYHN5el9wY2lfc2V0dXBgLiBUaGF0JiMzOTtzIHRoZSBrZXkuIFRoYXQgbWVhbnMgSSBjYW4gKmRlZmluaXRlbHkqIHByb2JlIHRoZSBgc3RtbWFjX3BjaV9kcml2ZXJgLiBUaGUgYnJlYWRjcnVtYiB0cmFpbCBjb250aW51ZXM6IGBzdG1tYWNfcGNpX3Byb2JlYCB3aWxsIHRoZW4gY2FsbCBgc3RtbWFjX2R2cl9wcm9iZWAsIHdoaWNoIGluIHR1cm4gY2FsbHMgYHN0bW1hY19zZXRfZ3NvX2ZlYXR1cmVzYC4gVGhlbiwgSSBjYW4gcmVhY2ggYHN0bW1hY19zZXRfZmVhdHVyZXNgIHZpYSBuZXRsaW5rLiBCaW5nbyDigJMgdGhlIGNvZGUgaXMgcmVhY2hhYmxlIGFuZCBmdXp6YWJsZS4gTm93LCB0aW1lIHRvIGZpZ3VyZSBvdXQgdGhlIHJpZ2h0IGNvbmZpZ3VyYXRpb24uIEkmIzM5O2xsIG5lZWQgYFNUTU1BQ19FVEhgLCBgU1RNTUFDX1BDSWAgKHRoYXQmIzM5O3MgY3J1Y2lhbCksIGFuZCBwb3RlbnRpYWxseSBgRFdNQUNfR0VORVJJQ2AgKG1pZ2h0IG5vdCBiZSBzdHJpY3RseSBuZWNlc3Nhcnkgd2l0aCBQQ0ksIGJ1dCBpdCYjMzk7cyBhbHdheXMgZ29vZCB0byBoYXZlIG9wdGlvbnMpLiBJJiMzOTtsbCBkb3VibGUgY2hlY2sgYFNUTU1BQ19QQ0lgIGluIEtjb25maWcgdG8gbWFrZSBzdXJlIGl0JiMzOTtzIHNldCB1cCBjb3JyZWN0bHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDE4OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBTVE1NQUNfUENJJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Mzk4PWNvbmZpZyBEV01BQ19NT1RPUkNPTU1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQwNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NDA3OmNvbmZpZyBTVE1NQUNfUENJXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQwOC1cdHRyaXN0YXRlIFwmIzM0O1NUTU1BQyBQQ0kgYnVzIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMTg6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjY0OTcKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSBkZXBlbmRlbmNpZXMgZm9yIGBTVE1NQUNfUENJYC4KCioqRGVsdmluZyBpbnRvIFNUTU1BQ19QQ0kgRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcyBhbmQgZGlzc2VjdCB0aGVzZSBkZXBlbmRlbmNpZXMuIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzICpyZXF1aXJlZCogZm9yIHRoaXMgUENJLWJhc2VkIFNUTU1BQyBkcml2ZXIgdG8gZnVuY3Rpb24uIEkmIzM5O20gdGhpbmtpbmcgYmV5b25kIHRoZSBvYnZpb3VzIGtlcm5lbCBjb21wb25lbnRzLCB0b28uIEkgbmVlZCB0byBiZSBzdXJlIEkga25vdyB3aGljaCBoZWFkZXJzLCBsaWJyYXJpZXMsIGFuZCBwb3RlbnRpYWxseSBldmVuIHNwZWNpZmljIGhhcmR3YXJlIGZlYXR1cmVzIGFyZSBleHBlY3RlZC4gSSYjMzk7bGwgbmVlZCB0byBpZGVudGlmeTogYW55IHJlcXVpcmVkIGRldmljZSB0cmVlIGJpbmRpbmdzLCBwb3RlbnRpYWwgcmVnaXN0ZXIgbWFwcyB0aGF0IGFyZSBhc3N1bWVkLCBJUlEgaGFuZGxpbmcgbWVjaGFuaXNtcywgYW55IERNQS1yZWxhdGVkIHJlcXVpcmVtZW50cy4KCkkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGRpcmVjdCBkZXBlbmRlbmNpZXMsIGluZGlyZWN0IG9uZXMsIGFuZCB0aG9zZSB0aGF0IGFyZSBjb25kaXRpb25hbGx5IGxpbmtlZCwgYmFzZWQgb24gb3RoZXIgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJdCYjMzk7cyBjcnVjaWFsIHRvIG1hcCBvdXQgYWxsIHRoZSB0b3VjaHBvaW50cy4gQSBtaXNzZWQgZGVwZW5kZW5jeSBjYW4gbWFuaWZlc3QgYXMgYSBzdWJ0bGUsIGZydXN0cmF0aW5nIGJ1ZyB0aGF0IGlzIGhhcmQgdG8gdHJhY2sgZG93bi4gSSYjMzk7bGwgbmVlZCB0byBrbm93IHdoZXRoZXIgYW55IG9mIHRoZXNlIGNvbXBvbmVudHMgaW50cm9kdWNlIGFueSBzaWduaWZpY2FudCBjb25mbGljdHMgd2l0aCBvdGhlciBkcml2ZXJzIG9yIGNvcmUga2VybmVsIG1vZHVsZXMuIFRoaXMgaXMgbm90IGp1c3QgYWJvdXQgZnVuY3Rpb25hbGl0eTsgaXQmIzM5O3MgYWJvdXQgc3RhYmlsaXR5IGFuZCBtYWludGFpbmFiaWxpdHkuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSBjYW4gZmluZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMTg6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDAwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA0MDA6XHRcdGRlcGVuZHMgb24gUENJXG4gNDAxOlx0XHRzZWxlY3QgTU9UT1JDT01NX1BIWVxuIDQwMjpcdFx0c2VsZWN0IFNUTU1BQ19MSUJQQ0lcbiA0MDM6XHRcdGhlbHBcbiA0MDQ6XHRcdCAgVGhpcyBlbmFibGVzIGdsdWUgZHJpdmVyIGZvciBNb3RvcmNvbW0gRFdNQUMtYmFzZWQgUENJIEV0aGVybmV0XG4gNDA1Olx0XHQgIGNvbnRyb2xsZXJzLiBDdXJyZW50bHkgb25seSBZVDY4MDEgaXMgc3VwcG9ydGVkLlxuIDQwNjpcdFxuIDQwNzpcdGNvbmZpZyBTVE1NQUNfUENJXG4gNDA4Olx0XHR0cmlzdGF0ZSBcJiMzNDtTVE1NQUMgUENJIGJ1cyBzdXBwb3J0XCYjMzQ7XG4gNDA5Olx0XHRkZXBlbmRzIG9uIFBDSVxuIDQxMDpcdFx0ZGVwZW5kcyBvbiBDT01NT05fQ0xLXG4gNDExOlx0XHRzZWxlY3QgU1RNTUFDX0xJQlBDSVxuIDQxMjpcdFx0aGVscFxuIDQxMzpcdFx0ICBUaGlzIHNlbGVjdHMgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGJ1cyBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlci5cbiA0MTQ6XHRcdCAgVGhpcyBkcml2ZXIgd2FzIHRlc3RlZCBvbiBYTElOWCBYQzJWMzAwMCBGRjExNTJBTVQwMjIxXG4gNDE1Olx0XHQgIEQxMjE1OTk0QSBWSVJURVggRlBHQSBib2FyZCBhbmQgU05QUyBRb1MgSVBLIFByb3RvdHlwaW5nIEtpdC5cbiA0MTY6XHRcbiA0MTc6XHRcdCAgSWYgeW91IGhhdmUgYSBjb250cm9sbGVyIHdpdGggdGhpcyBpbnRlcmZhY2UsIHNheSBZIG9yIE0gaGVyZS5cbiA0MTg6XHRcbiA0MTk6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMTg6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjcxMTQKCQkJCQkJCW91dHB1dDogNDgKCQkJCQkJCXRob3VnaHRzOiAzNTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBTVE1NQUMgRHJpdmVyJiMzOTtzIEZlYXR1cmUgU2V0dGluZyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgU1RNTUFDX1BDSWAgY29uZmlndXJhdGlvbi4gSXQmIzM5O3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCDigJMgaXQgcmVsaWVzIG9uIGBQQ0lgIGFuZCBgQ09NTU9OX0NMS2AsIHdoaWNoIG1ha2VzIHNlbnNlLiBJJiMzOTtsbCBtYWtlIHN1cmUgdG8gZW5hYmxlIGBTVE1NQUNfRVRIYCwgYFNUTU1BQ19QQ0lgLCBgU1RNTUFDX1BMQVRGT1JNYCwgYW5kIGBEV01BQ19HRU5FUklDYCB0byBnZXQgZXZlcnl0aGluZyB3b3JraW5nLgoKTm93LCBhYm91dCB0aGVzZSBGb2N1c1N5bWJvbHMuLi4gdGhlIHBhdGNoIGlzIHRvdWNoaW5nIGBzdG1tYWNfc2V0X2dzb190eXBlc2AuIFRoYXQgZnVuY3Rpb24mIzM5O3MgY2FsbGVkIGZyb20gYHN0bW1hY19zZXRfZ3NvX2ZlYXR1cmVzYCBhbmQgYHN0bW1hY19zZXRfZmVhdHVyZXNgLiBJIHRoaW5rIEkgY2FuIGZvY3VzIG15IGFuYWx5c2lzIG9uIGBzdG1tYWNfc2V0X2ZlYXR1cmVzYCwgYW5kIG1heWJlIGNvbnNpZGVyIGBzdG1tYWNfc2V0X2dzb19mZWF0dXJlc2AsIHNpbmNlIHRoYXQgaXMgY2FsbGVkIGR1cmluZyB0aGUgaW5pdGlhbCBwcm9iZSwgYW5kIHRoYXQgd2lsbCBvbmx5IGdldCBjYWxsZWQgb25jZS4gYHN0bW1hY19zZXRfZmVhdHVyZXNgIGdldHMgY2FsbGVkIHRocm91Z2ggYC5uZG9fc2V0X2ZlYXR1cmVzYCwgd2hpY2ggaXMgaW50ZXJlc3RpbmcuCgpMZXQgbWUganVzdCBxdWlja2x5IGNoZWNrIGlmIGBzdG1tYWNfc2V0X2dzb190eXBlc2AgaXMgc3RhdGljLi4uIHllcCwgaXQgaXM6IGBzdGF0aWMgdm9pZCBzdG1tYWNfc2V0X2dzb190eXBlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIG5ldGRldl9mZWF0dXJlc190IGZlYXR1cmVzKWAuIFNvIGl0JiMzOTtzIGludGVybmFsIHRvIHRoZSBmaWxlLiBUaGF0IG1lYW5zIEkgbmVlZCB0byBwYXkgY2xvc2VyIGF0dGVudGlvbiB0byB0aGUgZnVuY3Rpb25zIGl0IGNhbGxzLiBTaW5jZSB0aGF0IGlzIHN0YXRpYywgSSBjYW4gcHJvYmFibHkgaWdub3JlIHRoYXQuIFNvIEkgd2lsbCBmb2N1cyBvbiBgc3RtbWFjX3NldF9mZWF0dXJlc2AuIEFuZCBgc3RtbWFjX3NldF9nc29fZmVhdHVyZXNgLiBXYWl0LCBhY3R1YWxseSB0aGF0IGlzIGFsc28gc3RhdGljIQoKT2theSwgbGV0JiMzOTtzIHNlZSwgd2hhdCBhYm91dCBgc3RtbWFjX3NldF9mZWF0dXJlc2A/IEkmIzM5O2xsIGNoZWNrIGlmIHRoYXQgaXMgc3RhdGljLCBhbmQgeWVzIGl0IGlzOiBgc3RhdGljIGludCBzdG1tYWNfc2V0X2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIG5ldGRldl9mZWF0dXJlc190IGZlYXR1cmVzKWAuIEhvd2V2ZXIsIGl0JiMzOTtzIGFzc2lnbmVkIHRvIGAubmRvX3NldF9mZWF0dXJlc2AsIHNvIGl0JiMzOTtzIGEgcGFydCBvZiB0aGUgZHJpdmVyJiMzOTtzIGV4cG9zZWQgaW50ZXJmYWNlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGRyaXZlciYjMzk7cyBmZWF0dXJlcyBhcmUgY29uZmlndXJlZCB1c2luZyB0aGF0LiBPa2F5LCBJIHdpbGwgbG9vayBpbiBgc3RtbWFjX21haW4uY2AgZm9yIGBzdG1tYWNfc2V0X2ZlYXR1cmVzYC4gSSB3aWxsIGxvb2sgZm9yIGFueSBub24tc3RhdGljIGZ1bmN0aW9ucyBhcyB3ZWxsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAxODoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdG1tYWNfc2V0X2ZlYXR1cmVzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTYxNTg9c3RhdGljIG5ldGRldl9mZWF0dXJlc190IHN0bW1hY19maXhfZmVhdHVyZXMoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTYxNzktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjYxODA6c3RhdGljIGludCBzdG1tYWNfc2V0X2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTYxODEtXHRcdFx0ICAgICAgIG5ldGRldl9mZWF0dXJlc190IGZlYXR1cmVzKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NzMwOT1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIHN0bW1hY19uZXRkZXZfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzMxNS1cdC5uZG9fZml4X2ZlYXR1cmVzID0gc3RtbWFjX2ZpeF9mZWF0dXJlcyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NzMxNjpcdC5uZG9fc2V0X2ZlYXR1cmVzID0gc3RtbWFjX3NldF9mZWF0dXJlcyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzMxNy1cdC5uZG9fc2V0X3J4X21vZGUgPSBzdG1tYWNfc2V0X3J4X21vZGUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDE4OjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4Mzc0CgkJCQkJCQlvdXRwdXQ6IDQ5CgkJCQkJCQl0aG91Z2h0czogMTU0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgU1RNIE1BQyBEcml2ZXIgQVBJKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIFNUTSBNQUMgZHJpdmVyIGNvZGUsIHNwZWNpZmljYWxseSBjb25zaWRlcmluZyBiZXN0IHByYWN0aWNlcyBmb3IgQVBJIGRlc2lnbi4gVGhlIGluc3RydWN0aW9ucyBlbXBoYXNpemUgcHJlZmVycmluZyBub24tc3RhdGljLCBub24taW5saW5lZCBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zLiBSaWdodC4gVGhhdCBtYWtlcyBwZXJmZWN0IHNlbnNlIGZvciBtYWludGFpbmFiaWxpdHkgYW5kIGRpc2NvdmVyYWJpbGl0eS4gTm93LCBsZXQmIzM5O3Mgc2VlLiBgc3RtbWFjX3NldF9mZWF0dXJlc2AgaXMgYSBzdGF0aWMgZnVuY3Rpb24sIGJ1dCBpdCYjMzk7cyBhbiBlbnRyeXBvaW50IGZvciBgLm5kb19zZXRfZmVhdHVyZXNgLiBTbywgc2luY2UgdGhlIGVudHJ5cG9pbnQgaXRzZWxmIGlzIHN0YXRpYywgd2UgKmNhbiogbGlzdCBpdCwgYXMgcGVyIHRoZSBydWxlcy4gVGhhdCYjMzk7cyBnb29kIHRvIGtub3cuCgpCdXQgbm93IEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBub24tc3RhdGljIGZ1bmN0aW9ucyByZWxhdGVkIHRvIGZlYXR1cmUgc2V0dGluZyB0aGF0IHdlIGNvdWxkIGV4cG9zZS4gTGV0JiMzOTtzIHNlZS4uLiBBaCwgaGVyZSYjMzk7cyBvbmUhIGBzdG1tYWNfZHZyX3Byb2JlYCBpcyBub24tc3RhdGljLCBhbmQgaXQgY2FsbHMgYHN0bW1hY19zZXRfZ3NvX2ZlYXR1cmVzYCwgd2hpY2ggaXMsIGluIHR1cm4sIGNhbGxlZCB2aWEgYF9fc3RtbWFjX2R2cl9wcm9iZWAuIEludGVyZXN0aW5nLiBJIHNob3VsZCBwcm9iYWJseSBkaWcgaW50byBgc3RtbWFjX2R2cl9wcm9iZWAgYSBiaXQgZnVydGhlciB0byBzZWUgaG93IGl0JiMzOTtzIHVzZWQgYW5kIHdoYXQgaXQmIzM5O3MgcmVzcG9uc2libGUgZm9yLiBUaGlzIGNvdWxkIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgb3ZlcmFsbCBmZWF0dXJlIGludGVyYWN0aW9uIGluIHRoZSBkcml2ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDE4OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0bW1hY19kdnJfcHJvYmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9Nzc5Mz1FWFBPUlRfU1lNQk9MX0dQTChzdG1tYWNfcGxhdF9kYXRfYWxsb2MpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03Nzk0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3Nzk1OnN0YXRpYyBpbnQgX19zdG1tYWNfZHZyX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldmljZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzc5Ni1cdFx0XHQgICAgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODA5Ny0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6ODA5ODogKiBzdG1tYWNfZHZyX3Byb2JlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgwOTktICogQGRldjogZGV2aWNlIHBvaW50ZXJcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgxMDYtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjgxMDc6aW50IHN0bW1hY19kdnJfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MTA4LVx0XHQgICAgIHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzICpyZXMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MTE3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo4MTE4Olx0cmV0ID0gX19zdG1tYWNfZHZyX3Byb2JlKGRldiwgcGxhdF9kYXQsIHJlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgxMTktXHRpZiAocmV0IFx1MDAyNlx1MDAyNiBwbGF0X2RhdC1cdTAwM2VleGl0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODEyMy19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjgxMjQ6RVhQT1JUX1NZTUJPTF9HUEwoc3RtbWFjX2R2cl9wcm9iZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgxMjUtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDE4OjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5NDY4CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMjgwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFNUTU1BQyBEcml2ZXIqKgoKT2theSwgc28gSSBzZWUgdGhhdCBgc3RtbWFjX2R2cl9wcm9iZWAgaXMgZXhwb3J0ZWQsIHRoYXQmIzM5O3MgZ29vZCB0byBrbm93LiBCdXQgdGhlIGNvcmUgY2hhbmdlIGFwcGVhcnMgdG8gYmUgY2VudGVyZWQgYXJvdW5kIGBzdG1tYWNfc2V0X2ZlYXR1cmVzYC4gSSBzaG91bGQgcHJvYmFibHkgbGlzdCBib3RoIGBzdG1tYWNfc2V0X2ZlYXR1cmVzYCBhbmQgYHN0bW1hY19kdnJfcHJvYmVgIGluIG15IHN1bW1hcnkuCgpXYWl0LCBsZXQgbWUganVzdCBkb3VibGUtY2hlY2sgaWYgYHN0bW1hY19zZXRfZmVhdHVyZXNgIGlzIGRlY2xhcmVkIGFzIHN0YXRpYy4gQWggeWVzLCBpdCBpcy4gQnV0LCBmcm9tIHRoZSBuZXQgY29yZSYjMzk7cyBwb2ludCBvZiB2aWV3LCBpdCYjMzk7cyB1c2VkIGFzIHRoZSBgLm5kb19zZXRfZmVhdHVyZXNgIGNhbGxiYWNrLCBzbyBpdCYjMzk7cyBhIHZhbGlkIEFQSSBlbnRyeXBvaW50IGZvciByZXZpZXcuIExpc3RpbmcgaXQgaXMgcGVyZmVjdGx5IGFjY2VwdGFibGUuCgpOb3csIGxldCYjMzk7cyByZXZpZXcgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTttIGNsZWFyIG9uIHRoZSBpbnRlcmRlcGVuZGVuY2llcy4gSSYjMzk7bSBsb29raW5nIGF0IGBTVE1NQUNfRVRIYCwgYFNUTU1BQ19QQ0lgLCBgU1RNTUFDX1BMQVRGT1JNYCwgYW5kIGBEV01BQ19HRU5FUklDYC4gQXJlIHRoZXJlIGFueSBoaWRkZW4gZGVwZW5kZW5jaWVzPwoKQWxyaWdodCwgYFNUTU1BQ19FVEhgIGRlcGVuZHMgb24gYEhBU19JT01FTWAsIGBIQVNfRE1BYCwgYFBUUF8xNTg4X0NMT0NLX09QVElPTkFMYCwgYW5kIGBFVEhUT09MX05FVExJTktgLiBUaG9zZSBzZWVtIHByZXR0eSBzdGFuZGFyZCBhbmQgYXJlIHVzdWFsbHkgZW5hYmxlZCwgc28gbm8gcmVhbCBzdXJwcmlzZXMgdGhlcmUuIGBTVE1NQUNfUENJYCBkZXBlbmRzIG9uIGBQQ0lgIGFuZCBgQ09NTU9OX0NMS2AuIE5vdGVkLiBgU1RNTUFDX1BMQVRGT1JNYCBoYXMgbm8gZXh0cmEgZGVwZW5kZW5jaWVzIG9uIGl0cyBvd24uIEFuZCwgZmluYWxseSwgYERXTUFDX0dFTkVSSUNgIGRlcGVuZHMgb24gYFNUTU1BQ19QTEFURk9STWAuIEkgdGhpbmsgdGhhdCBjb3ZlcnMgYWxsIHRoZSBiYXNlcy4gVGltZSB0byBkb3VibGUtY2hlY2sgYERXTUFDX0dFTkVSSUNgIGluIGBLY29uZmlnYCBmb3IgYW55IG90aGVyIGNvbnRleHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDE4OjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBEV01BQ19HRU5FUklDJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9NDQ9Y29uZmlnIERXTUFDX0RXQ19RT1NfRVRIXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy01MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NTI6Y29uZmlnIERXTUFDX0dFTkVSSUNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNTMtXHR0cmlzdGF0ZSBcJiMzNDtHZW5lcmljIGRyaXZlciBmb3IgRFdNQUNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMTg6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzAyOTgKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcyBvbiB0aGUgbWF0dGVyOgoKKipBbmFseXppbmcgYERXTUFDX0dFTkVSSUNgIERlcGVuZGVuY2llcyoqCgpSaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZXhhbWluZSB0aGUgZGVwZW5kZW5jaWVzIHNwZWNpZmljYWxseSBhc3NvY2lhdGVkIHdpdGggYERXTUFDX0dFTkVSSUNgLiBXZSBuZWVkIHRvIGRpc3NlY3QgaXRzIGJ1aWxkaW5nIGJsb2NrcyBhbmQgdW5kZXJzdGFuZCB3aGF0IG90aGVyIGNvbXBvbmVudHMsIGxpYnJhcmllcywgb3IgY29uZmlndXJhdGlvbnMgYXJlIGVzc2VudGlhbCBmb3IgaXRzIG9wZXJhdGlvbi4gSSYjMzk7bSBnb2luZyB0byBsb29rIGF0IGV2ZXJ5dGhpbmcgdGhhdCBmZWVkcyBpbnRvIGBEV01BQ19HRU5FUklDYCwgc28gSSBjYW4gdW5kZXJzdGFuZCBpdHMgcGxhY2UgaW4gdGhlIHN5c3RlbS4gVGhpcyB3aWxsLCBvZiBjb3Vyc2UsIGluZm9ybSBkZWNpc2lvbnMgYWJvdXQgaXRzIGltcGxlbWVudGF0aW9uLCBkZXBsb3ltZW50LCBvciBtb2RpZmljYXRpb24uIExldCYjMzk7cyBzZWUgd2hhdCB3ZSBjYW4gZmluZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMTg6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA1MDpcdFx0ICBTdXBwb3J0IGZvciBjaGlwcyB1c2luZyB0aGUgc25wcyxkd2MtcW9zLWV0aGVybmV0LnR4dCBEVCBiaW5kaW5nLlxuICA1MTpcdFxuICA1MjpcdGNvbmZpZyBEV01BQ19HRU5FUklDXG4gIDUzOlx0XHR0cmlzdGF0ZSBcJiMzNDtHZW5lcmljIGRyaXZlciBmb3IgRFdNQUNcJiMzNDtcbiAgNTQ6XHRcdGRlZmF1bHQgU1RNTUFDX1BMQVRGT1JNXG4gIDU1Olx0XHRoZWxwXG4gIDU2Olx0XHQgIEdlbmVyaWMgRFdNQUMgZHJpdmVyIGZvciBwbGF0Zm9ybXMgdGhhdCBkb24mIzM5O3QgcmVxdWlyZSBhbnlcbiAgNTc6XHRcdCAgcGxhdGZvcm0gc3BlY2lmaWMgY29kZSB0byBmdW5jdGlvbiBvciBpcyB1c2luZyBwbGF0Zm9ybVxuICA1ODpcdFx0ICBkYXRhIGZvciBzZXR1cC5cbiAgNTk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMTg6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzA2NDcKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIGEgZmlyc3QtcGVyc29uIGV4cGVydCBzdW1tYXJ5OgoKKipEaWdnaW5nIGludG8gdGhlIERXTUFDIENvbmZpZ3VyYXRpb24qKgoKQWxyaWdodCwgc28gdGhlIGBEV01BQ19HRU5FUklDYCBzZXR0aW5nIGRlZmF1bHRzIHRvIGBTVE1NQUNfUExBVEZPUk1gLiBUaGF0JiMzOTtzIHRoZSBiYXNlbGluZSwgYW5kIGl04oCZcyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zLiBNeSBuZXh0IHN0ZXAsIG5hdHVyYWxseSwgaXMgdG8gZGlzc2VjdCBgU1RNTUFDX1BMQVRGT1JNYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGRlcGVuZGVuY2llcywgdGhlIHVuZGVybHlpbmcgYXNzdW1wdGlvbnMsIGFuZCBob3cgdGhpcyBwbGF0Zm9ybSBzZXR0aW5nIGluZmx1ZW5jZXMgdGhlIG92ZXJhbGwgTUFDIGNvbmZpZ3VyYXRpb24uIFRoaXMgaXNuJiMzOTt0IGp1c3QgYWJvdXQga25vd2luZyB3aGF0JiMzOTtzIGVuYWJsZWQsIGJ1dCB1bmRlcnN0YW5kaW5nICp3aHkqIGl0JiMzOTtzIGVuYWJsZWQuIFdoYXQgc3BlY2lmaWMgaGFyZHdhcmUgb3Igc29mdHdhcmUgZWxlbWVudHMgaXMgdGhpcyB0aWVkIHRvPyBXaGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIGZvciBwb3dlciBtYW5hZ2VtZW50LCBpbnRlcnJ1cHQgaGFuZGxpbmcsIGFuZCBvdmVyYWxsIHN5c3RlbSBpbnRlZ3JhdGlvbj8gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIHVuZGVyIHRoZSBob29kIG9mIGBTVE1NQUNfUExBVEZPUk1gLiBJIG5lZWQgdG8gYmUgc3VyZSB0aGlzIGlzIGNvcnJlY3QgZm9yIG15IHVzZSBjYXNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAxODoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDI1Olx0XHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBTVE1NQUMgU2VsZnRlc3RzIHVzaW5nIGV0aHRvb2wuIEVuYWJsZSB0aGlzXG4gIDI2Olx0XHQgIGZlYXR1cmUgaWYgeW91IGFyZSBmYWNpbmcgcHJvYmxlbXMgd2l0aCB5b3VyIEhXIGFuZCBzdWJtaXQgdGhlIHRlc3RcbiAgMjc6XHRcdCAgcmVzdWx0cyB0byB0aGUgbmV0ZGV2IE1haWxpbmcgTGlzdC5cbiAgMjg6XHRcbiAgMjk6XHRjb25maWcgU1RNTUFDX1BMQVRGT1JNXG4gIDMwOlx0XHR0cmlzdGF0ZSBcJiMzNDtTVE1NQUMgUGxhdGZvcm0gYnVzIHN1cHBvcnRcJiMzNDtcbiAgMzE6XHRcdHNlbGVjdCBNRkRfU1lTQ09OXG4gIDMyOlx0XHRkZWZhdWx0IHlcbiAgMzM6XHRcdGhlbHBcbiAgMzQ6XHRcdCAgVGhpcyBzZWxlY3RzIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBidXMgc3VwcG9ydCBmb3IgdGhlIHN0bW1hYyBkcml2ZXIuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDE4OjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxMDczCgkJCQkJCQlvdXRwdXQ6IDE0MwoJCQkJCQkJdGhvdWdodHM6IDQ2MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBTdG1tYWMgRHJpdmVyIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCB0aGUgZGVmYXVsdCBiZWhhdmlvciBoaW5nZXMgb24gYFNUTU1BQ19FVEhgIC0gaWYgdGhhdCYjMzk7cyBlbmFibGVkLCBpdCBkZWZhdWx0cyB0byAmIzM5O3kmIzM5Oy4gU28sIGZvciBmdXp6aW5nLCBJJiMzOTtsbCBuZWVkIHRvIG1ha2Ugc3VyZSB0aG9zZSBjb25maWd1cmF0aW9ucyBhcmUgZW5hYmxlZC4gIFRoYXQgbWVhbnMgdGhlIGtleSBjb25maWdzIHRvIGVuYWJsZSB3aWxsIGJlIGBTVE1NQUNfRVRIYCwgYFNUTU1BQ19QQ0lgLCBgU1RNTUFDX1BMQVRGT1JNYCwgYW5kIGBEV01BQ19HRU5FUklDYC4KCk5vdywgYSBxdWljayBjaGVjayBoZXJlLiBJdCBsb29rcyBsaWtlIGBTVE1NQUNfUENJYCBhY3R1YWxseSBwdWxscyBpbiBgTU9UT1JDT01NX1BIWWAgYW5kIGBTVE1NQUNfTElCUENJYCwgd2hpY2ggZGVwZW5kcyBvbiBgUEhZTElCYC4gSSB3aWxsIG5lZWQgdG8gY2hlY2sgb24gdGhlIGF2YWlsYWJpbGl0eSBvZiBgTU9UT1JDT01NX1BIWWAgdW5kZXIgdGhvc2UgY29uZmlndXJhdGlvbnMuIExldCYjMzk7cyBrZWVwIGl0IGNsZWFuIGZvciBub3cgYW5kIGp1c3Qgc3RpY2sgdG8gdGhlIGxpc3RlZCBjb25maWdzLCBhbmQgcmV2aXNpdCBpdCBsYXRlciBpZiBuZWNlc3NhcnkuCgpOZXh0LCBJIG5lZWQgdG8gY29uZmlybSB0aGUgY3JpdGljYWwgZnVuY3Rpb25zLiAgYHN0bW1hY19zZXRfZmVhdHVyZXNgIHNlZW1zIGxpa2UgdGhlIHJpZ2h0IHBsYWNlIHRvIGZvY3VzLiBZZXAsIGl0JiMzOTtzIHRoZSBgLm5kb19zZXRfZmVhdHVyZXNgIGNhbGxiYWNrLCB0cmlnZ2VyZWQgYnkgZXRodG9vbCBmZWF0dXJlIGNoYW5nZXMuIFRoZSBwYXRjaCBzcGVjaWZpY2FsbHkgbW9kaWZpZXMgYHN0bW1hY19zZXRfZ3NvX3R5cGVzYCwgd2hpY2ggZ2V0cyBjYWxsZWQgZnJvbSBgc3RtbWFjX3NldF9mZWF0dXJlc2AgYW5kIGBzdG1tYWNfc2V0X2dzb19mZWF0dXJlc2AuIEdvb2QsIGBzdG1tYWNfc2V0X2ZlYXR1cmVzYCBhbmQgYHN0bW1hY19kdnJfcHJvYmVgIGl0IGlzLgoKTGV0JiMzOTtzIGRvIGEgcXVpY2sgc2NhbiB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcgZWxzZSByZWxldmFudC4gT2theSwgYHN0bW1hY19zZXRfZ3NvX2ZlYXR1cmVzYCBpcyBhIHN0YXRpYyBmdW5jdGlvbiwgYnV0IGl0ICppcyogY2FsbGVkIGZyb20gYF9fc3RtbWFjX2R2cl9wcm9iZWAuIEdvdCBpdC4gSSYjMzk7bGwgaW5jbHVkZSBib3RoIGBzdG1tYWNfc2V0X2ZlYXR1cmVzYCBhbmQgYHN0bW1hY19kdnJfcHJvYmVgLgoKQWxyaWdodCwgbGV0JiMzOTtzIHdyYXAgdGhpcyB1cC4gICoqV29ydGhGdXp6aW5nKio6IEFic29sdXRlbHkuIFRoaXMgcGF0Y2ggaXMgY2hhbmdpbmcgdGhlIGxvZ2ljIGZvciBzZXR0aW5nIEdTTyB0eXBlcywgYW5kIHRoZSBsb2dpYyBpcyBiYXNlZCBvbiBuZXRkZXYgZmVhdHVyZXMgd2l0aGluIHRoZSBzdG1tYWMgZHJpdmVyLiBUaGF0IHJlcHJlc2VudHMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIGtleSBwYXJ0IG9mIGFuIEV0aGVybmV0IGRyaXZlciBhbmQgaXMgcmVhY2hhYmxlIHRocm91Z2ggZW11bGF0aW9uICh2aWEgYHNucHMsZHdtYWNgKSBvciBieSBpbnNlcnRpbmcgYSBQQ0kgZGV2aWNlLiAgKipGb2N1c1N5bWJvbHMqKjogYHN0bW1hY19zZXRfZmVhdHVyZXNgIGFuZCBgc3RtbWFjX2R2cl9wcm9iZWAuICAqKkVuYWJsZUNvbmZpZ3MqKjogYFNUTU1BQ19FVEhgLCBgU1RNTUFDX1BDSWAsIGBTVE1NQUNfUExBVEZPUk1gLCBhbmQgYERXTUFDX0dFTkVSSUNgLiBUaGlzIGlzIGEgc29saWQgc3RhcnRpbmcgcG9pbnQgZm9yIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDE4OjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtTVE1NQUNfRVRIJiMzNDssCiAgICAmIzM0O1NUTU1BQ19QQ0kmIzM0OywKICAgICYjMzQ7U1RNTUFDX1BMQVRGT1JNJiMzNDssCiAgICAmIzM0O0RXTUFDX0dFTkVSSUMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzdG1tYWNfc2V0X2ZlYXR1cmVzJiMzNDssCiAgICAmIzM0O3N0bW1hY19kdnJfcHJvYmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvZ2ljIGZvciBzZXR0aW5nIEdTTyB0eXBlcyBiYXNlZCBvbiBuZXRkZXYgZmVhdHVyZXMgaW4gdGhlIHN0bW1hYyBkcml2ZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIGNvcmUgZXRoZXJuZXQgZHJpdmVyIHRoYXQgaXMgcmVhY2hhYmxlIGluIFFFTVUgdmlhIHRoZSBEZXNpZ25XYXJlIE1BQyBlbXVsYXRpb24gKHNucHMsZHdtYWMpIG9yIGJ5IGluamVjdGluZyBhIFBDSSBkZXZpY2UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NUTU1BQ19FVEgmIzM0OywKICAgICYjMzQ7U1RNTUFDX1BDSSYjMzQ7LAogICAgJiMzNDtTVE1NQUNfUExBVEZPUk0mIzM0OywKICAgICYjMzQ7RFdNQUNfR0VORVJJQyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3N0bW1hY19zZXRfZmVhdHVyZXMmIzM0OywKICAgICYjMzQ7c3RtbWFjX2R2cl9wcm9iZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9naWMgZm9yIHNldHRpbmcgR1NPIHR5cGVzIGJhc2VkIG9uIG5ldGRldiBmZWF0dXJlcyBpbiB0aGUgc3RtbWFjIGRyaXZlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgY29yZSBldGhlcm5ldCBkcml2ZXIgdGhhdCBpcyByZWFjaGFibGUgaW4gUUVNVSB2aWEgdGhlIERlc2lnbldhcmUgTUFDIGVtdWxhdGlvbiAoc25wcyxkd21hYykgb3IgYnkgaW5qZWN0aW5nIGEgUENJIGRldmljZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMTg6MTU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAxODoxNTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCB1cGRhdGVzIHRoZSBsb2dpYyBmb3Igc2V0dGluZyBHU08gdHlwZXMgaW4gdGhlIHN0bW1hYyBkcml2ZXIgYmFzZWQgb24gYG5ldGRldl9mZWF0dXJlc190YCBpbnN0ZWFkIG9mIGEgYm9vbGVhbiBgdHNvYCBmbGFnLiBJdCBtb2RpZmllcyBgc3RtbWFjX3NldF9nc29fdHlwZXNgIHRvIGNoZWNrIGZvciBgTkVUSUZfRl9UU09gLCBgTkVUSUZfRl9UU082YCwgYW5kIGBORVRJRl9GX0dTT19VRFBfTDRgIGZlYXR1cmVzIHRvIGFjY3VyYXRlbHkgc2V0IHRoZSBgZ3NvX2VuYWJsZWRfdHlwZXNgIGJpdG1hc2suIFRoZXNlIGNoYW5nZXMgb25seSBhZmZlY3QgY29udHJvbCBmbG93IGFuZCBiaXRtYXNrIGNhbGN1bGF0aW9ucyBmb3IgbmV0d29yayBkZXZpY2UgZmVhdHVyZXMuIFRoZXJlIGFyZSBubyBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBubyBkYXRhIHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIGFuZCBubyBjb21wbGV4IHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMgY291bGQgYmUgcmVhZC4gVGhlcmVmb3JlLCB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOLiBTdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgYnVnIGRldGVjdG9ycyBhcmUgc3VmZmljaWVudCB0byBjYXRjaCBhbnkgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzIGlzc3Vlcy4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgN2QyYTdkYTAxOGZkNTExMGYyMGE5ZWYxNjQ5YmY2MjVhODYxMmYzOApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgQXVnIDggMTg6MTM6NDYgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYwppbmRleCBhNzFmMGRmMjYzNzg1Li4zZDMwNDJhZmNkZjQ5IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMKQEAgLTQzNzEsMTYgJiM0Mzs0MzcxLDE4IEBAIHN0YXRpYyB2b2lkIHN0bW1hY19mbHVzaF90eF9kZXNjcmlwdG9ycyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIGludCBxdWV1ZSkKIAlzdG1tYWNfc2V0X3F1ZXVlX3R4X3RhaWxfcHRyKHByaXYsIHR4X3EsIHF1ZXVlLCB0eF9xLSZndDtjdXJfdHgpOwogfQogCi1zdGF0aWMgdm9pZCBzdG1tYWNfc2V0X2dzb190eXBlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIGJvb2wgdHNvKQomIzQzO3N0YXRpYyB2b2lkIHN0bW1hY19zZXRfZ3NvX3R5cGVzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwKJiM0MzsJCQkJIG5ldGRldl9mZWF0dXJlc190IGZlYXR1cmVzKQogewotCWlmICghdHNvKSB7Ci0JCXByaXYtJmd0O2dzb19lbmFibGVkX3R5cGVzID0gMDsKLQl9IGVsc2UgewotCQkvKiBNYW5hZ2Ugb3ZlcnNpemVkIFRDUCBmcmFtZXMgZm9yIEdNQUM0IGRldmljZSAqLwotCQlwcml2LSZndDtnc29fZW5hYmxlZF90eXBlcyA9IFNLQl9HU09fVENQVjQgfCBTS0JfR1NPX1RDUFY2OwotCQlpZiAocHJpdi0mZ3Q7cGxhdC0mZ3Q7Y29yZV90eXBlID09IERXTUFDX0NPUkVfR01BQzQpCi0JCQlwcml2LSZndDtnc29fZW5hYmxlZF90eXBlcyB8PSBTS0JfR1NPX1VEUF9MNDsKLQl9CiYjNDM7CXByaXYtJmd0O2dzb19lbmFibGVkX3R5cGVzID0gMDsKJiM0MzsKJiM0MzsJaWYgKGZlYXR1cmVzICZhbXA7IE5FVElGX0ZfVFNPKQomIzQzOwkJcHJpdi0mZ3Q7Z3NvX2VuYWJsZWRfdHlwZXMgfD0gU0tCX0dTT19UQ1BWNDsKJiM0MzsJaWYgKGZlYXR1cmVzICZhbXA7IE5FVElGX0ZfVFNPNikKJiM0MzsJCXByaXYtJmd0O2dzb19lbmFibGVkX3R5cGVzIHw9IFNLQl9HU09fVENQVjY7CiYjNDM7CS8qIE1hbmFnZSBvdmVyc2l6ZWQgVURQIGZyYW1lcyBmb3IgR01BQzQgZGV2aWNlcyAqLwomIzQzOwlpZiAoZmVhdHVyZXMgJmFtcDsgTkVUSUZfRl9HU09fVURQX0w0KQomIzQzOwkJcHJpdi0mZ3Q7Z3NvX2VuYWJsZWRfdHlwZXMgfD0gU0tCX0dTT19VRFBfTDQ7CiB9CiAKIHN0YXRpYyB2b2lkIHN0bW1hY19zZXRfZ3NvX2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KQpAQCAtNDQxNiw3ICYjNDM7NDQxOCw3IEBAIHN0YXRpYyB2b2lkIHN0bW1hY19zZXRfZ3NvX2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KQogCWlmIChwcml2LSZndDtwbGF0LSZndDtjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9HTUFDNCkKIAkJbmRldi0mZ3Q7aHdfZmVhdHVyZXMgfD0gTkVUSUZfRl9HU09fVURQX0w0OwogCi0Jc3RtbWFjX3NldF9nc29fdHlwZXMocHJpdiwgdHJ1ZSk7CiYjNDM7CXN0bW1hY19zZXRfZ3NvX3R5cGVzKHByaXYsIG5kZXYtJmd0O2h3X2ZlYXR1cmVzKTsKIAogCWRldl9pbmZvKHByaXYtJmd0O2RldmljZSwgJiMzNDtUU08gZmVhdHVyZSBlbmFibGVkXG4mIzM0Oyk7CiB9CkBAIC02MTk4LDcgJiM0Mzs2MjAwLDcgQEAgc3RhdGljIGludCBzdG1tYWNfc2V0X2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsCiAJCQlzdG1tYWNfZW5hYmxlX3NwaChwcml2LCBwcml2LSZndDtpb2FkZHIsIHNwaF9lbiwgY2hhbik7CiAJfQogCi0Jc3RtbWFjX3NldF9nc29fdHlwZXMocHJpdiwgZmVhdHVyZXMgJmFtcDsgTkVUSUZfRl9UU08pOwomIzQzOwlzdG1tYWNfc2V0X2dzb190eXBlcyhwcml2LCBmZWF0dXJlcyk7CiAKIAlpZiAoZmVhdHVyZXMgJmFtcDsgTkVUSUZfRl9IV19WTEFOX0NUQUdfUlgpCiAJCXByaXYtJmd0O2h3LSZndDtod192bGFuX2VuID0gdHJ1ZTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDE4OjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2NTMKCQkJCQkJCW91dHB1dDogMjE4CgkJCQkJCQl0aG91Z2h0czogNTA1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgR1NPIFR5cGUgVXBkYXRlIGluIHN0bW1hYyoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGEgc3RyYWlnaHRmb3J3YXJkIG1vZGlmaWNhdGlvbiB0byBgc3RtbWFjX3NldF9nc29fdHlwZXNgIHdpdGhpbiB0aGUgc3RtbWFjIGRyaXZlci4gSXQmIzM5O3MgcmVmYWN0b3JpbmcgdGhlIGZ1bmN0aW9uIHNpZ25hdHVyZSwgbW92aW5nIGZyb20gYSBib29sZWFuIFRTTyBmbGFnIHRvIGEgYG5ldGRldl9mZWF0dXJlc190YCBhcmd1bWVudCwgd2hpY2ggbWFrZXMgcGVyZmVjdCBzZW5zZSBmb3IgZmluZXItZ3JhaW5lZCBjb250cm9sLiBJdCYjMzk7cyBub3cgY2hlY2tpbmcgaW5kaXZpZHVhbCBmZWF0dXJlczogYE5FVElGX0ZfVFNPYCwgYE5FVElGX0ZfVFNPNmAsIGFuZCBgTkVUSUZfRl9HU09fVURQX0w0YCwgdG8gZGV0ZXJtaW5lIHdoaWNoIEdTTyB0eXBlcyBhcmUgZW5hYmxlZCBieSBjb25maWd1cmluZyB0aGUgYHByaXYtJmd0O2dzb19lbmFibGVkX3R5cGVzYCBiaXRtYXNrLgoKTXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMgYWx3YXlzIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBIb3dldmVyLCBhZnRlciBxdWlja2x5IHRyYWNpbmcgdGhlIGZsb3csIEkgc2VlIHRoYXQgdGhlIGBmZWF0dXJlc2AgYXJndW1lbnQgY29tZXMgZnJvbSBgbmRldi0mZ3Q7aHdfZmVhdHVyZXNgIG9yIGBmZWF0dXJlc2AgZGlyZWN0bHksIHdoaWNoIGlzIGEgYG5ldGRldl9mZWF0dXJlc190YC4gYHByaXYtJmd0O2dzb19lbmFibGVkX3R5cGVzYCBpcyBtZXJlbHkgYSBiaXRtYXNrIHVzZWQgdG8gZW5hYmxlIG9yIGRpc2FibGUgZGlmZmVyZW50IEdTTyBtb2Rlcy4gTm8gY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgYXJlIGludm9sdmVkLCBubyBhbGxvY2F0aW9ucyBhcmUgbWFkZSwgYW5kIG5vdGhpbmcgaXMgY29waWVkIHRvIHVzZXIgc3BhY2UuIEl0JiMzOTtzIGVzc2VudGlhbGx5IGp1c3QgYSBjb250cm9sIGZsb3cgY2hhbmdlIGJhc2VkIG9uIGRlZmluZWQgZmxhZ3MuCgpUaGVyZWZvcmUsIHRoZXJlIGlzIG5vIGNoYW5jZSB0aGF0IGl0IGNvdWxkIHJlc3VsdCBpbiBhbiB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkIG9yIGluZm8tbGVhayB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4uIEtBU0FOIGFuZCBvdGhlciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzIHNob3VsZCBlYXNpbHkgY2F0Y2ggYW55IHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiBvciBvdXQtb2YtYm91bmRzIGFjY2Vzcy4gVGhlIGNoYW5nZXMgYXJlIGxvY2FsaXplZCB0byBiaXRtYXNrIHNldHRpbmcgYmFzZWQgb24gYWxyZWFkeSBjb250cm9sbGVkIGZlYXR1cmVzLCByZWR1Y2luZyBhbnkgcmlzay4gV2UgY2FuIGNvbnNpZGVyIHRoaXMgcGF0Y2ggc2FmZSBmcm9tIHRob3NlIHBlcnNwZWN0aXZlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMTg6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggdXBkYXRlcyB0aGUgbG9naWMgZm9yIHNldHRpbmcgR1NPIHR5cGVzIGluIHRoZSBzdG1tYWMgZHJpdmVyIGJhc2VkIG9uIGBuZXRkZXZfZmVhdHVyZXNfdGAgaW5zdGVhZCBvZiBhIGJvb2xlYW4gYHRzb2AgZmxhZy4gSXQgbW9kaWZpZXMgYHN0bW1hY19zZXRfZ3NvX3R5cGVzYCB0byBjaGVjayBmb3IgYE5FVElGX0ZfVFNPYCwgYE5FVElGX0ZfVFNPNmAsIGFuZCBgTkVUSUZfRl9HU09fVURQX0w0YCBmZWF0dXJlcyB0byBhY2N1cmF0ZWx5IHNldCB0aGUgYGdzb19lbmFibGVkX3R5cGVzYCBiaXRtYXNrLiBUaGVzZSBjaGFuZ2VzIG9ubHkgYWZmZWN0IGNvbnRyb2wgZmxvdyBhbmQgYml0bWFzayBjYWxjdWxhdGlvbnMgZm9yIG5ldHdvcmsgZGV2aWNlIGZlYXR1cmVzLiBUaGVyZSBhcmUgbm8gbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgbm8gZGF0YSBzdHJ1Y3R1cmVzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBhbmQgbm8gY29tcGxleCBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzIGNvdWxkIGJlIHJlYWQuIFRoZXJlZm9yZSwgdGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTi4gU3RhbmRhcmQgS0FTQU4gYW5kIG90aGVyIGJ1ZyBkZXRlY3RvcnMgYXJlIHN1ZmZpY2llbnQgdG8gY2F0Y2ggYW55IHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiBvciBvdXQtb2YtYm91bmRzIGFjY2VzcyBpc3N1ZXMuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCB1cGRhdGVzIHRoZSBsb2dpYyBmb3Igc2V0dGluZyBHU08gdHlwZXMgaW4gdGhlIHN0bW1hYyBkcml2ZXIgYmFzZWQgb24gYG5ldGRldl9mZWF0dXJlc190YCBpbnN0ZWFkIG9mIGEgYm9vbGVhbiBgdHNvYCBmbGFnLiBJdCBtb2RpZmllcyBgc3RtbWFjX3NldF9nc29fdHlwZXNgIHRvIGNoZWNrIGZvciBgTkVUSUZfRl9UU09gLCBgTkVUSUZfRl9UU082YCwgYW5kIGBORVRJRl9GX0dTT19VRFBfTDRgIGZlYXR1cmVzIHRvIGFjY3VyYXRlbHkgc2V0IHRoZSBgZ3NvX2VuYWJsZWRfdHlwZXNgIGJpdG1hc2suIFRoZXNlIGNoYW5nZXMgb25seSBhZmZlY3QgY29udHJvbCBmbG93IGFuZCBiaXRtYXNrIGNhbGN1bGF0aW9ucyBmb3IgbmV0d29yayBkZXZpY2UgZmVhdHVyZXMuIFRoZXJlIGFyZSBubyBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBubyBkYXRhIHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIGFuZCBubyBjb21wbGV4IHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMgY291bGQgYmUgcmVhZC4gVGhlcmVmb3JlLCB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOLiBTdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgYnVnIGRldGVjdG9ycyBhcmUgc3VmZmljaWVudCB0byBjYXRjaCBhbnkgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzIGlzc3Vlcy4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDhUMTg6MTM6NDcuOTI4NTExMTU1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA1MjQwMTY4OTQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNUTU1BQ19FVEhcIixcbiAgICBcIlNUTU1BQ19QQ0lcIixcbiAgICBcIlNUTU1BQ19QTEFURk9STVwiLFxuICAgIFwiRFdNQUNfR0VORVJJQ1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInN0bW1hY19zZXRfZmVhdHVyZXNcIixcbiAgICBcInN0bW1hY19kdnJfcHJvYmVcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHVwZGF0ZXMgdGhlIGxvZ2ljIGZvciBzZXR0aW5nIEdTTyB0eXBlcyBpbiB0aGUgc3RtbWFjIGRyaXZlciBiYXNlZCBvbiBgbmV0ZGV2X2ZlYXR1cmVzX3RgIGluc3RlYWQgb2YgYSBib29sZWFuIGB0c29gIGZsYWcuIEl0IG1vZGlmaWVzIGBzdG1tYWNfc2V0X2dzb190eXBlc2AgdG8gY2hlY2sgZm9yIGBORVRJRl9GX1RTT2AsIGBORVRJRl9GX1RTTzZgLCBhbmQgYE5FVElGX0ZfR1NPX1VEUF9MNGAgZmVhdHVyZXMgdG8gYWNjdXJhdGVseSBzZXQgdGhlIGBnc29fZW5hYmxlZF90eXBlc2AgYml0bWFzay4gVGhlc2UgY2hhbmdlcyBvbmx5IGFmZmVjdCBjb250cm9sIGZsb3cgYW5kIGJpdG1hc2sgY2FsY3VsYXRpb25zIGZvciBuZXR3b3JrIGRldmljZSBmZWF0dXJlcy4gVGhlcmUgYXJlIG5vIG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIG5vIGRhdGEgc3RydWN0dXJlcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgYW5kIG5vIGNvbXBsZXggc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcyBjb3VsZCBiZSByZWFkLiBUaGVyZWZvcmUsIHRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4uIFN0YW5kYXJkIEtBU0FOIGFuZCBvdGhlciBidWcgZGV0ZWN0b3JzIGFyZSBzdWZmaWNpZW50IHRvIGNhdGNoIGFueSBwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24gb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3MgaXNzdWVzLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2dpYyBmb3Igc2V0dGluZyBHU08gdHlwZXMgYmFzZWQgb24gbmV0ZGV2IGZlYXR1cmVzIGluIHRoZSBzdG1tYWMgZHJpdmVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBjb3JlIGV0aGVybmV0IGRyaXZlciB0aGF0IGlzIHJlYWNoYWJsZSBpbiBRRU1VIHZpYSB0aGUgRGVzaWduV2FyZSBNQUMgZW11bGF0aW9uIChzbnBzLGR3bWFjKSBvciBieSBpbmplY3RpbmcgYSBQQ0kgZGV2aWNlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQxODoxMzo0Ny45Mjg1MTY1MDVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMDQxMTQzMjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA3ZDJhN2RhMDE4ZmQ1MTEwZjIwYTllZjE2NDliZjYyNWE4NjEyZjM4XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgQXVnIDggMTg6MTM6NDYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcXG5pbmRleCBhNzFmMGRmMjYzNzg1Li4zZDMwNDJhZmNkZjQ5IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXFxuQEAgLTQzNzEsMTYgKzQzNzEsMTggQEAgc3RhdGljIHZvaWQgc3RtbWFjX2ZsdXNoX3R4X2Rlc2NyaXB0b3JzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgaW50IHF1ZXVlKVxcbiBcXHRzdG1tYWNfc2V0X3F1ZXVlX3R4X3RhaWxfcHRyKHByaXYsIHR4X3EsIHF1ZXVlLCB0eF9xLVxcdTAwM2VjdXJfdHgpO1xcbiB9XFxuIFxcbi1zdGF0aWMgdm9pZCBzdG1tYWNfc2V0X2dzb190eXBlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIGJvb2wgdHNvKVxcbitzdGF0aWMgdm9pZCBzdG1tYWNfc2V0X2dzb190eXBlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuK1xcdFxcdFxcdFxcdCBuZXRkZXZfZmVhdHVyZXNfdCBmZWF0dXJlcylcXG4ge1xcbi1cXHRpZiAoIXRzbykge1xcbi1cXHRcXHRwcml2LVxcdTAwM2Vnc29fZW5hYmxlZF90eXBlcyA9IDA7XFxuLVxcdH0gZWxzZSB7XFxuLVxcdFxcdC8qIE1hbmFnZSBvdmVyc2l6ZWQgVENQIGZyYW1lcyBmb3IgR01BQzQgZGV2aWNlICovXFxuLVxcdFxcdHByaXYtXFx1MDAzZWdzb19lbmFibGVkX3R5cGVzID0gU0tCX0dTT19UQ1BWNCB8IFNLQl9HU09fVENQVjY7XFxuLVxcdFxcdGlmIChwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2Vjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9HTUFDNClcXG4tXFx0XFx0XFx0cHJpdi1cXHUwMDNlZ3NvX2VuYWJsZWRfdHlwZXMgfD0gU0tCX0dTT19VRFBfTDQ7XFxuLVxcdH1cXG4rXFx0cHJpdi1cXHUwMDNlZ3NvX2VuYWJsZWRfdHlwZXMgPSAwO1xcbitcXG4rXFx0aWYgKGZlYXR1cmVzIFxcdTAwMjYgTkVUSUZfRl9UU08pXFxuK1xcdFxcdHByaXYtXFx1MDAzZWdzb19lbmFibGVkX3R5cGVzIHw9IFNLQl9HU09fVENQVjQ7XFxuK1xcdGlmIChmZWF0dXJlcyBcXHUwMDI2IE5FVElGX0ZfVFNPNilcXG4rXFx0XFx0cHJpdi1cXHUwMDNlZ3NvX2VuYWJsZWRfdHlwZXMgfD0gU0tCX0dTT19UQ1BWNjtcXG4rXFx0LyogTWFuYWdlIG92ZXJzaXplZCBVRFAgZnJhbWVzIGZvciBHTUFDNCBkZXZpY2VzICovXFxuK1xcdGlmIChmZWF0dXJlcyBcXHUwMDI2IE5FVElGX0ZfR1NPX1VEUF9MNClcXG4rXFx0XFx0cHJpdi1cXHUwMDNlZ3NvX2VuYWJsZWRfdHlwZXMgfD0gU0tCX0dTT19VRFBfTDQ7XFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkIHN0bW1hY19zZXRfZ3NvX2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbkBAIC00NDE2LDcgKzQ0MTgsNyBAQCBzdGF0aWMgdm9pZCBzdG1tYWNfc2V0X2dzb19mZWF0dXJlcyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG4gXFx0aWYgKHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZWNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX0dNQUM0KVxcbiBcXHRcXHRuZGV2LVxcdTAwM2Vod19mZWF0dXJlcyB8PSBORVRJRl9GX0dTT19VRFBfTDQ7XFxuIFxcbi1cXHRzdG1tYWNfc2V0X2dzb190eXBlcyhwcml2LCB0cnVlKTtcXG4rXFx0c3RtbWFjX3NldF9nc29fdHlwZXMocHJpdiwgbmRldi1cXHUwMDNlaHdfZmVhdHVyZXMpO1xcbiBcXG4gXFx0ZGV2X2luZm8ocHJpdi1cXHUwMDNlZGV2aWNlLCBcXFwiVFNPIGZlYXR1cmUgZW5hYmxlZFxcXFxuXFxcIik7XFxuIH1cXG5AQCAtNjE5OCw3ICs2MjAwLDcgQEAgc3RhdGljIGludCBzdG1tYWNfc2V0X2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuIFxcdFxcdFxcdHN0bW1hY19lbmFibGVfc3BoKHByaXYsIHByaXYtXFx1MDAzZWlvYWRkciwgc3BoX2VuLCBjaGFuKTtcXG4gXFx0fVxcbiBcXG4tXFx0c3RtbWFjX3NldF9nc29fdHlwZXMocHJpdiwgZmVhdHVyZXMgXFx1MDAyNiBORVRJRl9GX1RTTyk7XFxuK1xcdHN0bW1hY19zZXRfZ3NvX3R5cGVzKHByaXYsIGZlYXR1cmVzKTtcXG4gXFxuIFxcdGlmIChmZWF0dXJlcyBcXHUwMDI2IE5FVElGX0ZfSFdfVkxBTl9DVEFHX1JYKVxcbiBcXHRcXHRwcml2LVxcdTAwM2Vody1cXHUwMDNlaHdfdmxhbl9lbiA9IHRydWU7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDE4OjEzOjQ5LjIzMzQ1MDg2NVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjkzODQ1MDkxNzk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNUTU1BQ19FVEhcIixcbiAgICBcIlNUTU1BQ19QQ0lcIixcbiAgICBcIlNUTU1BQ19QTEFURk9STVwiLFxuICAgIFwiRFdNQUNfR0VORVJJQ1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInN0bW1hY19zZXRfZmVhdHVyZXNcIixcbiAgICBcInN0bW1hY19kdnJfcHJvYmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9naWMgZm9yIHNldHRpbmcgR1NPIHR5cGVzIGJhc2VkIG9uIG5ldGRldiBmZWF0dXJlcyBpbiB0aGUgc3RtbWFjIGRyaXZlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgY29yZSBldGhlcm5ldCBkcml2ZXIgdGhhdCBpcyByZWFjaGFibGUgaW4gUUVNVSB2aWEgdGhlIERlc2lnbldhcmUgTUFDIGVtdWxhdGlvbiAoc25wcyxkd21hYykgb3IgYnkgaW5qZWN0aW5nIGEgUENJIGRldmljZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgN2QyYTdkYTAxOGZkNTExMGYyMGE5ZWYxNjQ5YmY2MjVhODYxMmYzOFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgQXVnIDggMTg6MTM6NDYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuaW5kZXggYTcxZjBkZjI2Mzc4NS4uM2QzMDQyYWZjZGY0OSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbkBAIC00MzcxLDE2ICs0MzcxLDE4IEBAIHN0YXRpYyB2b2lkIHN0bW1hY19mbHVzaF90eF9kZXNjcmlwdG9ycyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIGludCBxdWV1ZSlcbiBcdHN0bW1hY19zZXRfcXVldWVfdHhfdGFpbF9wdHIocHJpdiwgdHhfcSwgcXVldWUsIHR4X3EtXHUwMDNlY3VyX3R4KTtcbiB9XG4gXG4tc3RhdGljIHZvaWQgc3RtbWFjX3NldF9nc29fdHlwZXMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBib29sIHRzbylcbitzdGF0aWMgdm9pZCBzdG1tYWNfc2V0X2dzb190eXBlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4rXHRcdFx0XHQgbmV0ZGV2X2ZlYXR1cmVzX3QgZmVhdHVyZXMpXG4ge1xuLVx0aWYgKCF0c28pIHtcbi1cdFx0cHJpdi1cdTAwM2Vnc29fZW5hYmxlZF90eXBlcyA9IDA7XG4tXHR9IGVsc2Uge1xuLVx0XHQvKiBNYW5hZ2Ugb3ZlcnNpemVkIFRDUCBmcmFtZXMgZm9yIEdNQUM0IGRldmljZSAqL1xuLVx0XHRwcml2LVx1MDAzZWdzb19lbmFibGVkX3R5cGVzID0gU0tCX0dTT19UQ1BWNCB8IFNLQl9HU09fVENQVjY7XG4tXHRcdGlmIChwcml2LVx1MDAzZXBsYXQtXHUwMDNlY29yZV90eXBlID09IERXTUFDX0NPUkVfR01BQzQpXG4tXHRcdFx0cHJpdi1cdTAwM2Vnc29fZW5hYmxlZF90eXBlcyB8PSBTS0JfR1NPX1VEUF9MNDtcbi1cdH1cbitcdHByaXYtXHUwMDNlZ3NvX2VuYWJsZWRfdHlwZXMgPSAwO1xuK1xuK1x0aWYgKGZlYXR1cmVzIFx1MDAyNiBORVRJRl9GX1RTTylcbitcdFx0cHJpdi1cdTAwM2Vnc29fZW5hYmxlZF90eXBlcyB8PSBTS0JfR1NPX1RDUFY0O1xuK1x0aWYgKGZlYXR1cmVzIFx1MDAyNiBORVRJRl9GX1RTTzYpXG4rXHRcdHByaXYtXHUwMDNlZ3NvX2VuYWJsZWRfdHlwZXMgfD0gU0tCX0dTT19UQ1BWNjtcbitcdC8qIE1hbmFnZSBvdmVyc2l6ZWQgVURQIGZyYW1lcyBmb3IgR01BQzQgZGV2aWNlcyAqL1xuK1x0aWYgKGZlYXR1cmVzIFx1MDAyNiBORVRJRl9GX0dTT19VRFBfTDQpXG4rXHRcdHByaXYtXHUwMDNlZ3NvX2VuYWJsZWRfdHlwZXMgfD0gU0tCX0dTT19VRFBfTDQ7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIHN0bW1hY19zZXRfZ3NvX2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuQEAgLTQ0MTYsNyArNDQxOCw3IEBAIHN0YXRpYyB2b2lkIHN0bW1hY19zZXRfZ3NvX2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuIFx0aWYgKHByaXYtXHUwMDNlcGxhdC1cdTAwM2Vjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9HTUFDNClcbiBcdFx0bmRldi1cdTAwM2Vod19mZWF0dXJlcyB8PSBORVRJRl9GX0dTT19VRFBfTDQ7XG4gXG4tXHRzdG1tYWNfc2V0X2dzb190eXBlcyhwcml2LCB0cnVlKTtcbitcdHN0bW1hY19zZXRfZ3NvX3R5cGVzKHByaXYsIG5kZXYtXHUwMDNlaHdfZmVhdHVyZXMpO1xuIFxuIFx0ZGV2X2luZm8ocHJpdi1cdTAwM2VkZXZpY2UsIFwiVFNPIGZlYXR1cmUgZW5hYmxlZFxcblwiKTtcbiB9XG5AQCAtNjE5OCw3ICs2MjAwLDcgQEAgc3RhdGljIGludCBzdG1tYWNfc2V0X2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG4gXHRcdFx0c3RtbWFjX2VuYWJsZV9zcGgocHJpdiwgcHJpdi1cdTAwM2Vpb2FkZHIsIHNwaF9lbiwgY2hhbik7XG4gXHR9XG4gXG4tXHRzdG1tYWNfc2V0X2dzb190eXBlcyhwcml2LCBmZWF0dXJlcyBcdTAwMjYgTkVUSUZfRl9UU08pO1xuK1x0c3RtbWFjX3NldF9nc29fdHlwZXMocHJpdiwgZmVhdHVyZXMpO1xuIFxuIFx0aWYgKGZlYXR1cmVzIFx1MDAyNiBORVRJRl9GX0hXX1ZMQU5fQ1RBR19SWClcbiBcdFx0cHJpdi1cdTAwM2Vody1cdTAwM2Vod192bGFuX2VuID0gdHJ1ZTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDE4OjEzOjQ5LjIzMzQ1MjMxNVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExNTM2MDc0MTk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUmVhY2hhYmlsaXR5IG9mIGFuIHN0bW1hYyBEcml2ZXIgUGF0Y2ggaW4gUUVNVSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBzdG1tYWNfbWFpbi5jYCB0aGF0IG1vZGlmaWVzIGBzdG1tYWNfc2V0X2dzb190eXBlc2AuIEl0J3MgYSBzdHJhaWdodGZvcndhcmQgZnVuY3Rpb25hbCBjaGFuZ2UsIHVwZGF0aW5nIHRoZSBHU08gdHlwZSBoYW5kbGluZyBiYXNlZCBvbiBgbmV0ZGV2X2ZlYXR1cmVzX3RgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIGNhbiBJIGV2ZW4gdGVzdCB0aGlzIHBhdGNoIGVmZmVjdGl2ZWx5P1xuXG5GaXJzdCwgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhlIGBzdG1tYWNgIGRyaXZlciwgd2hpY2ggSSBrbm93IGlzIGZvciB0aGUgU3lub3BzeXMgRGVzaWduV2FyZSBNQUMsIGlzIGV2ZW4gcmVhY2hhYmxlIHdpdGhpbiBhIFFFTVUgZW52aXJvbm1lbnQuIEkgbmVlZCB0byBhc2NlcnRhaW4gaWYgUUVNVSBjYW4gZW11bGF0ZSB0aGlzIGhhcmR3YXJlLiBJIHF1aWNrbHkgcmF0dGxlIG9mZiBhIGxpc3Qgb2YgUUVNVSdzIG5ldHdvcmsgZGV2aWNlIGVtdWxhdGlvbnMg4oCTIGBpbXhfZmVjYCwgYGNhZGVuY2VfZ2VtYCwgZXRjLiDigJMgdG8gcmVtaW5kIG15c2VsZiB3aGF0J3MgYXZhaWxhYmxlLiBOb3BlLCBub25lIG9mIHRob3NlIHNlZW0gbGlrZSBhIGRpcmVjdCBtYXRjaCBmb3IgYHN0bW1hY2AuXG5cbkFscmlnaHQsIGlzIGBzdG1tYWNgIGEgUENJIGRldmljZSBvciBhIHBsYXRmb3JtIGRldmljZT8gSSByZW1lbWJlciBpdCBoYXMgUENJIGJpbmRpbmdzIGluIGBzdG1tYWNfcGNpLmNgLCB3aGljaCBnaXZlcyBtZSBhIHBvdGVudGlhbCBhdmVudWUgZm9yIHByb2JpbmcuIEkgc2VhcmNoIGZvciBgc3RtbWFjYCBpbiB0aGUgUUVNVSBjb2RlYmFzZSBhbmQgY29uc2lkZXIgd2hldGhlciBmdXp6aW5nIGl0IHdvdWxkIGJlIGZlYXNpYmxlLiBIb3dldmVyLCBJIHJlY2FsbCB0aGUgZGlzY3Vzc2lvbiBhcm91bmQgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoIGRyaXZlcnMsIG9yIFNtYXJ0TklDIG9yIEdQVSBkcml2ZXJzIHdoaWNoIGFyZSBoYXJkIHRvIGZ1enogYmVjYXVzZSB0aGV5IHVzdWFsbHkgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZS4gVGhpcyBtYWtlcyBtZSByZWFsaXplIHRoYXQgYHN0bW1hY2AgbWlnaHQgZmFsbCBpbnRvIHRoYXQgY2F0ZWdvcnkgYW5kIG5vdCBiZSBkaXJlY3RseSBlbXVsYXRhYmxlLlxuXG5CdXQgd2FpdCwgYHN0bW1hY2AgaXMgc3BlY2lmaWNhbGx5IGZvciBTVE1pY3JvZWxlY3Ryb25pY3MgRXRoZXJuZXQgTUFDcywgYW5kIEknbSBhd2FyZSBpdCdzIHVzZWQgaW4gbG90cyBvZiBBUk0gU29DcyDigJMgUm9ja2NoaXAsIEFsbHdpbm5lciwgQW1sb2dpYywgYW5kIHNvIG9uLiBJdCdzIHByaW1hcmlseSBhIHBsYXRmb3JtIGRldmljZSwgYnV0IHRoZSBQQ0kgd3JhcHBlciBjb3VsZCBiZSBrZXkuIENhbiBJIGZ1enogaXQgd2l0aG91dCBwaHlzaWNhbCBoYXJkd2FyZT8gUHJvYmFibHkgbm90LlxuXG5TbywgbGV0IG1lIGJhY2sgdXAgYSBzdGVwLiBDYW4gUUVNVSAqYWN0dWFsbHkqIGVtdWxhdGUgdGhpcyBhdCBhbGw/IEkgcmVtZW1iZXIgcmVhZGluZyBzb21ldGhpbmcgYWJvdXQgRGVzaWduV2FyZSBNQUMgc3VwcG9ydC4uLiBBaGEhIFFFTVUgaGFzIGBody9uZXQvZGVzaWdud2FyZS5jYC4gSXMgdGhhdCBpdD8gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGBkZXNpZ253YXJlLmNgIGlzIHRoZSBlbXVsYXRpb24gZm9yIGBzdG1tYWNgLiBJIGNoZWNrIHRoZSBMaW51eCBrZXJuZWwgc291cmNlIGFuZCBjb25maXJtIHRoYXQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2AgaXMgaW5kZWVkIHRoZSBkcml2ZXIgZm9yIHRoZSBTeW5vcHN5cyBEZXNpZ25XYXJlIE1BQywgd2hpY2ggaXMgbGlrZWx5IHdoYXQgdGhlIFFFTVUgY29kZSBpcyBlbXVsYXRpbmcuIEkgbmVlZCB0byBtYWtlIHN1cmUgYnV0IEknbGwgc3RhcnQgYnkgY2hlY2tpbmcgYHN0bW1hY19wY2kuY2AgYW5kIGFueSBgZHdtYWMtKi5jYCBmaWxlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY1NiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjczNiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDE4OjE0OjAwLjc2OTUyOTExWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1NDM2NTA3LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXNpZ253YXJlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMTg6MTQ6MDAuODI0OTc0MzU2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMwODM5MzUxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcml6ZWQgdGhvdWdodCBwcm9jZXNzLCBwcmVzZW50ZWQgYXMgaWYgSSdtIHRoaW5raW5nIGl0OlxuXG4qKkRpZ2dpbmcgaW50byB0aGUgYHN0bW1hY2AgRHJpdmVyIOKAkyBMb29raW5nIGZvciBcImR3bWFjXCIqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGRpdmUgaW4uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHNvbWV0aGluZyBhYm91dCB0aGlzIGBzdG1tYWNgIGRyaXZlci4gRmlyc3Qgc3RlcCwgbGV0J3MganVzdCBkbyBhIHF1aWNrIGtleXdvcmQgc2VhcmNoLiBJJ20gZ29pbmcgdG8gbG9vayBmb3IgXCJkd21hY1wiLiBJdCdzIGEgcHJldHR5IGNvbW1vbiBuYW1pbmcgY29udmVudGlvbiwgYW5kIGl0J3MgbGlrZWx5IGNvbm5lY3RlZCB0byB0aGUgaGFyZHdhcmUuIFNlZWluZyBpdCB1c2VkIGluIHRoZSBjb2RlIHNob3VsZCBnaXZlIG1lIHNvbWUgY29udGV4dCwgZWl0aGVyIGRlZmluaW5nIHdoYXQgaXQgZG9lcywgb3Igd2hlcmUgaXQgaXMgdXNlZC4gSSBleHBlY3QgaXQgaXMgbGlrZWx5IGFuIGFic3RyYWN0aW9uIGxheWVyLCBvciB1c2VkIGZvciB0aGUgaGFyZHdhcmUgcmVnaXN0ZXJzLiBMZXQncyBzZWUgd2hhdCB0aGF0IHVuY292ZXJzISBJJ20gaG9waW5nIHRoaXMnbGwgcXVpY2tseSBwb2ludCBtZSB0byB0aGUgcmVsZXZhbnQgc2VjdGlvbnMgb2YgdGhlIGNvZGUgSSBuZWVkIHRvIGV4cGxvcmUgZnVydGhlci5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzk5NiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDE4OjE0OjA0LjEzMzM3MDI1M1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTUzMzE0NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkd21hY1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA1NTM1IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTkwPWNvbmZpZyBEV01BQ19JUFE4MDZYXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEwMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjEwMzpcXHQgIFNlbGVjdCB0aGUgUUNPTV9TT0NJTkZPIGNvbmZpZyBmbGFnIHRvIGVuYWJsZSBzcGVjaWZpYyBkd21hY1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTA0LVxcdCAgZml4dXAgYmFzZWQgb24gdGhlIGlwcTgwNnggU29DIHJldmlzaW9uLlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0xMjI9Y29uZmlnIERXTUFDX01FU09OXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoxMjM6XFx0dHJpc3RhdGUgXFxcIkFtbG9naWMgTWVzb24gZHdtYWMgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEyNC1cXHRkZWZhdWx0IEFSQ0hfTUVTT05cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MTMzPWNvbmZpZyBEV01BQ19OVVZPVE9OXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoxMzQ6XFx0dHJpc3RhdGUgXFxcIk51dm90b24gTUEzNSBkd21hYyBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTM1LVxcdGRlZmF1bHQgQVJDSF9NQTM1XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE0MS1cXHQgIFRoaXMgc2VsZWN0cyB0aGUgTnV2b3RvbiBNQTM1IHNlcmllcyBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoxNDI6XFx0ICBmb3IgdGhlIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGUgbnV2b3Rvbi1kd21hYyBkcml2ZXIgaXNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE0My1cXHQgIHVzZWQgZm9yIE1BMzUgc2VyaWVzIFNvQ3MuXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTE2OD1jb25maWcgRFdNQUNfUk9DS0NISVBcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjE2OTpcXHR0cmlzdGF0ZSBcXFwiUm9ja2NoaXAgZHdtYWMgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE3MC1cXHRkZWZhdWx0IEFSQ0hfUk9DS0NISVBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MTc5PWNvbmZpZyBEV01BQ19SWk4xXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoxODA6XFx0dHJpc3RhdGUgXFxcIlJlbmVzYXMgUlovTjEgZHdtYWMgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE4MS1cXHRkZWZhdWx0IEFSQ0hfUlpOMVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0yMDM9Y29uZmlnIERXTUFDX1NPQ0ZQR0FcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjIwNDpcXHR0cmlzdGF0ZSBcXFwiU09DRlBHQSBkd21hYyBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjA1LVxcdGRlZmF1bHQgQVJDSF9JTlRFTF9TT0NGUEdBXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTIxOD1jb25maWcgRFdNQUNfU09QSEdPXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyMTk6XFx0dHJpc3RhdGUgXFxcIlNvcGhnbyBkd21hYyBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjIwLVxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgKEFSQ0hfU09QSEdPIHx8IENPTVBJTEVfVEVTVClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MjI5PWNvbmZpZyBEV01BQ19TUEFDRU1JVFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MjMwOlxcdHRyaXN0YXRlIFxcXCJTcGFjZW1pdCBkd21hYyBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjMxLVxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgKEFSQ0hfU1BBQ0VNSVQgfHwgQ09NUElMRV9URVNUKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0yNDE9Y29uZmlnIERXTUFDX1NUQVJGSVZFXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyNDI6XFx0dHJpc3RhdGUgXFxcIlN0YXJGaXZlIGR3bWFjIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yNDMtXFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoQVJDSF9TVEFSRklWRSB8fCBDT01QSUxFX1RFU1QpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTMxMj1jb25maWcgRFdNQUNfVEhFQURcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjMxMzpcXHR0cmlzdGF0ZSBcXFwiVC1IRUFEIGR3bWFjIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zMTQtXFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoQVJDSF9USEVBRCB8fCBDT01QSUxFX1RFU1QpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTMzND1jb25maWcgRFdNQUNfSU5URUxfUExBVFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzM1OlxcdHRyaXN0YXRlIFxcXCJJbnRlbCBkd21hYyBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzM2LVxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgQ09NTU9OX0NMS1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU9Mz1zdG1tYWMtb2Jqczo9IHN0bW1hY19tYWluLm8gc3RtbWFjX2V0aHRvb2wubyBzdG1tYWNfbWRpby5vIHJpbmdfbW9kZS5vXFx0XFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjQ6XFx0ICAgICAgY2hhaW5fbW9kZS5vIGR3bWFjX2xpYi5vIGR3bWFjMTAwMF9jb3JlLm8gZHdtYWMxMDAwX2RtYS5vXFx0XFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjU6XFx0ICAgICAgZHdtYWMxMDBfY29yZS5vIGR3bWFjMTAwX2RtYS5vIGVuaF9kZXNjLm8gbm9ybV9kZXNjLm9cXHRcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6NjpcXHQgICAgICBtbWNfY29yZS5vIHN0bW1hY19od3RzdGFtcC5vIHN0bW1hY19wdHAubyBkd21hYzRfZGVzY3Mub1xcdFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTo3OlxcdCAgICAgIGR3bWFjNF9kbWEubyBkd21hYzRfbGliLm8gZHdtYWM0X2NvcmUubyBkd21hYzUubyBod2lmLm8gXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlLTgtXFx0ICAgICAgc3RtbWFjX3RjLm8gZHd4Z21hYzJfY29yZS5vIGR3eGdtYWMyX2RtYS5vIGR3eGdtYWMyX2Rlc2NzLm8gXFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU9MTU9b2JqLSQoQ09ORklHX1NUTU1BQ19QTEFURk9STSlcXHQrPSBzdG1tYWMtcGxhdGZvcm0ub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjE2Om9iai0kKENPTkZJR19EV01BQ19BTkFSSU9OKVxcdCs9IGR3bWFjLWFuYXJpb24ub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjE3Om9iai0kKENPTkZJR19EV01BQ19FSUM3NzAwKVxcdCs9IGR3bWFjLWVpYzc3MDAub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjE4Om9iai0kKENPTkZJR19EV01BQ19JTkdFTklDKVxcdCs9IGR3bWFjLWluZ2VuaWMub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjE5Om9iai0kKENPTkZJR19EV01BQ19JUFE4MDZYKVxcdCs9IGR3bWFjLWlwcTgwNngub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjIwOm9iai0kKENPTkZJR19EV01BQ19MUEMxOFhYKVxcdCs9IGR3bWFjLWxwYzE4eHgub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjIxOm9iai0kKENPTkZJR19EV01BQ19NRURJQVRFSylcXHQrPSBkd21hYy1tZWRpYXRlay5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6MjI6b2JqLSQoQ09ORklHX0RXTUFDX01FU09OKVxcdCs9IGR3bWFjLW1lc29uLm8gZHdtYWMtbWVzb244Yi5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6MjM6b2JqLSQoQ09ORklHX0RXTUFDX05VVk9UT04pXFx0Kz0gZHdtYWMtbnV2b3Rvbi5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6MjQ6b2JqLSQoQ09ORklHX0RXTUFDX1FDT01fRVRIUU9TKVxcdCs9IGR3bWFjLXFjb20tZXRocW9zLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZToyNTpvYmotJChDT05GSUdfRFdNQUNfUkVORVNBU19HQkVUSCkgKz0gZHdtYWMtcmVuZXNhcy1nYmV0aC5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6MjY6b2JqLSQoQ09ORklHX0RXTUFDX1JPQ0tDSElQKVxcdCs9IGR3bWFjLXJrLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZToyNzpvYmotJChDT05GSUdfRFdNQUNfUlpOMSlcXHQrPSBkd21hYy1yem4xLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZToyODpvYmotJChDT05GSUdfRFdNQUNfUzMyKVxcdFxcdCs9IGR3bWFjLXMzMi5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6Mjk6b2JqLSQoQ09ORklHX0RXTUFDX1NPQ0ZQR0EpXFx0Kz0gZHdtYWMtYWx0ci1zb2NmcGdhLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTozMDpvYmotJChDT05GSUdfRFdNQUNfU09QSEdPKVxcdCs9IGR3bWFjLXNvcGhnby5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6MzE6b2JqLSQoQ09ORklHX0RXTUFDX1NQQUNFTUlUKVxcdCs9IGR3bWFjLXNwYWNlbWl0Lm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTozMjpvYmotJChDT05GSUdfRFdNQUNfU1RBUkZJVkUpXFx0Kz0gZHdtYWMtc3RhcmZpdmUub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjMzOm9iai0kKENPTkZJR19EV01BQ19TVEkpXFx0XFx0Kz0gZHdtYWMtc3RpLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTozNDpvYmotJChDT05GSUdfRFdNQUNfU1RNMzIpXFx0Kz0gZHdtYWMtc3RtMzIub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjM1Om9iai0kKENPTkZJR19EV01BQ19TVU5YSSlcXHQrPSBkd21hYy1zdW54aS5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6MzY6b2JqLSQoQ09ORklHX0RXTUFDX1NVTjhJKVxcdCs9IGR3bWFjLXN1bjhpLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTozNzpvYmotJChDT05GSUdfRFdNQUNfU1VONTVJKVxcdCs9IGR3bWFjLXN1bjU1aS5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6Mzg6b2JqLSQoQ09ORklHX0RXTUFDX1RIRUFEKVxcdCs9IGR3bWFjLXRoZWFkLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTozOTpvYmotJChDT05GSUdfRFdNQUNfRFdDX1FPU19FVEgpXFx0Kz0gZHdtYWMtZHdjLXFvcy1ldGgub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjQwOm9iai0kKENPTkZJR19EV01BQ19JTlRFTF9QTEFUKVxcdCs9IGR3bWFjLWludGVsLXBsYXQub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjQxOm9iai0kKENPTkZJR19EV01BQ19MT09OR1NPTjEpXFx0Kz0gZHdtYWMtbG9vbmdzb24xLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTo0MjpvYmotJChDT05GSUdfRFdNQUNfR0VORVJJQylcXHQrPSBkd21hYy1nZW5lcmljLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTo0MzpvYmotJChDT05GSUdfRFdNQUNfSU1YOClcXHQrPSBkd21hYy1pbXgub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjQ0Om9iai0kKENPTkZJR19EV01BQ19URUdSQSlcXHQrPSBkd21hYy10ZWdyYS5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6NDU6b2JqLSQoQ09ORklHX0RXTUFDX1ZJU0NPTlRJKVxcdCs9IGR3bWFjLXZpc2NvbnRpLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZS00Ni1zdG1tYWMtcGxhdGZvcm0tb2Jqczo9IHN0bW1hY19wbGF0Zm9ybS5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6NDc6ZHdtYWMtYWx0ci1zb2NmcGdhLW9ianMgOj0gZHdtYWMtc29jZnBnYS5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGUtNDgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZT01MD1vYmotJChDT05GSUdfU1RNTUFDX1BDSSlcXHQrPSBzdG1tYWMtcGNpLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTo1MTpvYmotJChDT05GSUdfRFdNQUNfSU5URUwpXFx0Kz0gZHdtYWMtaW50ZWwub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjUyOm9iai0kKENPTkZJR19EV01BQ19MT09OR1NPTilcXHQrPSBkd21hYy1sb29uZ3Nvbi5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6NTM6b2JqLSQoQ09ORklHX0RXTUFDX01PVE9SQ09NTSlcXHQrPSBkd21hYy1tb3RvcmNvbW0ub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlLTU0LXN0bW1hYy1wY2ktb2Jqczo9IHN0bW1hY19wY2kub1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtNDgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6NDk6c3RhdGljIGlubGluZSBib29sIGR3bWFjX2lzX3htYWMoZW51bSBkd21hY19jb3JlX3R5cGUgY29yZV90eXBlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTUwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oPTY0NT1zdHJ1Y3Qgc3RtbWFjX3J4X3JvdXRpbmcge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtNjQ5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjY1MDppbnQgZHdtYWMxMDBfc2V0dXAoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDo2NTE6aW50IGR3bWFjMTAwMF9zZXR1cChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjY1MjppbnQgZHdtYWM0X3NldHVwKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtNjUzLWludCBkd3hnbWFjMl9zZXR1cChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg9NjYwPXZvaWQgc3RtbWFjX3NldF9tYWModm9pZCBfX2lvbWVtICppb2FkZHIsIGJvb2wgZW5hYmxlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC02NjEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6NjYyOnZvaWQgc3RtbWFjX2R3bWFjNF9zZXRfbWFjX2FkZHIodm9pZCBfX2lvbWVtICppb2FkZHIsIGNvbnN0IHU4IGFkZHJbNl0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtNjYzLVxcdFxcdFxcdFxcdHVuc2lnbmVkIGludCBoaWdoLCB1bnNpZ25lZCBpbnQgbG93KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDo2NjQ6dm9pZCBzdG1tYWNfZHdtYWM0X2dldF9tYWNfYWRkcih2b2lkIF9faW9tZW0gKmlvYWRkciwgdW5zaWduZWQgY2hhciAqYWRkcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC02NjUtXFx0XFx0XFx0XFx0dW5zaWduZWQgaW50IGhpZ2gsIHVuc2lnbmVkIGludCBsb3cpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjY2Njp2b2lkIHN0bW1hY19kd21hYzRfc2V0X21hYyh2b2lkIF9faW9tZW0gKmlvYWRkciwgYm9vbCBlbmFibGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTY2Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDo2Njg6dm9pZCBkd21hY19kbWFfZmx1c2hfdHhfZmlmbyh2b2lkIF9faW9tZW0gKmlvYWRkcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtNjY5LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jPTYzPWFuYXJpb25fY29uZmlnX2R0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmMtOTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jOjkzOnN0YXRpYyBpbnQgYW5hcmlvbl9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYy05NC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmMtMTE4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYzoxMTk6c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgYW5hcmlvbl9kd21hY19tYXRjaFtdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYy0xMjAtXFx0eyAuY29tcGF0aWJsZSA9IFxcXCJhZGFwdHJ1bSxhbmFyaW9uLWdtYWNcXFwiIH0sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmMtMTIyLX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jOjEyMzpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBhbmFyaW9uX2R3bWFjX21hdGNoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmMtMTI0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYzoxMjU6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgYW5hcmlvbl9kd21hY19kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jOjEyNjpcXHQucHJvYmUgID0gYW5hcmlvbl9kd21hY19wcm9iZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmMtMTI3LVxcdC5kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jOjEyODpcXHRcXHQubmFtZSAgICAgICAgICAgPSBcXFwiYW5hcmlvbi1kd21hY1xcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jLTEyOS1cXHRcXHQucG1cXHRcXHQ9IFxcdTAwMjZzdG1tYWNfcGx0ZnJfcG1fb3BzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYzoxMzA6XFx0XFx0Lm9mX21hdGNoX3RhYmxlID0gYW5hcmlvbl9kd21hY19tYXRjaCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmMtMTMxLVxcdH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jLTEzMi19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYzoxMzM6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihhbmFyaW9uX2R3bWFjX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jLTEzNC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMjQtI2luY2x1ZGUgXFxcInN0bW1hY19wbGF0Zm9ybS5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6MjU6I2luY2x1ZGUgXFxcImR3bWFjNC5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMjYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYz0yNz1zdHJ1Y3QgdGVncmFfZXFvcyB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTM1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6MzY6c3RhdGljIGludCBkd2NfZXRoX2R3bWFjX2NvbmZpZ19kdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMzctXFx0XFx0XFx0XFx0ICAgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM9MjUyPXN0YXRpYyB2b2lkIHRlZ3JhX2Vxb3NfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTI1OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjI2MDpzdHJ1Y3QgZHdjX2V0aF9kd21hY19kYXRhIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTI2MS1cXHRpbnQgKCpwcm9iZSkoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMjY3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6MjY4OnN0YXRpYyBjb25zdCBzdHJ1Y3QgZHdjX2V0aF9kd21hY19kYXRhIGR3Y19xb3NfZGF0YSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTI2OS1cXHQucHJvYmUgPSBkd2NfcW9zX3Byb2JlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0yNzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzoyNzM6c3RhdGljIGNvbnN0IHN0cnVjdCBkd2NfZXRoX2R3bWFjX2RhdGEgdGVncmFfZXFvc19kYXRhID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMjc0LVxcdC5wcm9iZSA9IHRlZ3JhX2Vxb3NfcHJvYmUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTI3OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjI3OTpzdGF0aWMgY29uc3Qgc3RydWN0IGR3Y19ldGhfZHdtYWNfZGF0YSBmc2RfZXFvc19kYXRhID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMjgwLVxcdC5zdG1tYWNfY2xrX25hbWUgPSBcXFwic2xhdmVfYnVzXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMjgyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6MjgzOnN0YXRpYyBpbnQgZHdjX2V0aF9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMjg0LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjI4NTpcXHRjb25zdCBzdHJ1Y3QgZHdjX2V0aF9kd21hY19kYXRhICpkYXRhO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMjg2LVxcdHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTMyNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjMyNjpcXHRyZXQgPSBkd2NfZXRoX2R3bWFjX2NvbmZpZ19kdChwZGV2LCBwbGF0X2RhdCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0zMjctXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMzQyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6MzQzOnN0YXRpYyB2b2lkIGR3Y19ldGhfZHdtYWNfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0zNDQte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6MzQ1OlxcdGNvbnN0IHN0cnVjdCBkd2NfZXRoX2R3bWFjX2RhdGEgKmRhdGEgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0zNDYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTM1Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjM1MzpzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBkd2NfZXRoX2R3bWFjX21hdGNoW10gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0zNTQtXFx0eyAuY29tcGF0aWJsZSA9IFxcXCJzbnBzLGR3Yy1xb3MtZXRoZXJuZXQtNC4xMFxcXCIsIC5kYXRhID0gXFx1MDAyNmR3Y19xb3NfZGF0YSB9LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0zNTgtfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjM1OTpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBkd2NfZXRoX2R3bWFjX21hdGNoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTM2MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjM2MTpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBkd2NfZXRoX2R3bWFjX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjM2MjpcXHQucHJvYmUgID0gZHdjX2V0aF9kd21hY19wcm9iZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjM2MzpcXHQucmVtb3ZlID0gZHdjX2V0aF9kd21hY19yZW1vdmUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0zNjQtXFx0LmRyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjM2NTpcXHRcXHQubmFtZSAgICAgICAgICAgPSBcXFwiZHdjLWV0aC1kd21hY1xcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0zNjYtXFx0XFx0LnBtICAgICAgICAgICAgID0gXFx1MDAyNnN0bW1hY19wbHRmcl9wbV9vcHMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzozNjc6XFx0XFx0Lm9mX21hdGNoX3RhYmxlID0gZHdjX2V0aF9kd21hY19tYXRjaCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTM2OC1cXHR9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMzY5LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzozNzA6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihkd2NfZXRoX2R3bWFjX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0zNzEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmM9NTk9c3RhdGljIGludCBlaWM3NzAwX2Nsa3NfY29uZmlnKHZvaWQgKnByaXYsIGJvb2wgZW5hYmxlZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYy03Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmM6NzM6c3RhdGljIGludCBlaWM3NzAwX2R3bWFjX2luaXQoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpwcml2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYy03NC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMTA1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYzoxMDY6c3RhdGljIHZvaWQgZWljNzcwMF9kd21hY19leGl0KHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqcHJpdilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMTA3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYy0xMTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jOjExMzpzdGF0aWMgaW50IGVpYzc3MDBfZHdtYWNfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKnByaXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jLTExNC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMTE3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYzoxMTg6c3RhdGljIGludCBlaWM3NzAwX2R3bWFjX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKnByaXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jLTExOS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMTI4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYzoxMjk6c3RhdGljIGludCBlaWM3NzAwX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jLTEzMC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMjU4LVxcdGR3Y19wcml2LVxcdTAwM2VwbGF0X2RhdCA9IHBsYXRfZGF0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYzoyNTk6XFx0cGxhdF9kYXQtXFx1MDAzZWluaXQgPSBlaWM3NzAwX2R3bWFjX2luaXQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jOjI2MDpcXHRwbGF0X2RhdC1cXHUwMDNlZXhpdCA9IGVpYzc3MDBfZHdtYWNfZXhpdDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmM6MjYxOlxcdHBsYXRfZGF0LVxcdTAwM2VzdXNwZW5kID0gZWljNzcwMF9kd21hY19zdXNwZW5kO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYzoyNjI6XFx0cGxhdF9kYXQtXFx1MDAzZXJlc3VtZSA9IGVpYzc3MDBfZHdtYWNfcmVzdW1lO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYy0yNjMtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMjY2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYzoyNjc6c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgZWljNzcwMF9kd21hY19tYXRjaFtdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYy0yNjgtXFx0eyAuY29tcGF0aWJsZSA9IFxcXCJlc3dpbixlaWM3NzAwLXFvcy1ldGhcXFwiIH0sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMjcwLX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jOjI3MTpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBlaWM3NzAwX2R3bWFjX21hdGNoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMjcyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYzoyNzM6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgZWljNzcwMF9kd21hY19kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jOjI3NDpcXHQucHJvYmUgID0gZWljNzcwMF9kd21hY19wcm9iZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMjc1LVxcdC5kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jOjI3NjpcXHRcXHQubmFtZSAgICAgICAgICAgPSBcXFwiZWljNzcwMC1ldGgtZHdtYWNcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYy0yNzctXFx0XFx0LnBtICAgICAgICAgICAgID0gXFx1MDAyNnN0bW1hY19wbHRmcl9wbV9vcHMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jOjI3ODpcXHRcXHQub2ZfbWF0Y2hfdGFibGUgPSBlaWM3NzAwX2R3bWFjX21hdGNoLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYy0yNzktXFx0fSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMjgwLX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jOjI4MTptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGVpYzc3MDBfZHdtYWNfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMjgyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jLTE4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYzoxOTpzdGF0aWMgaW50IGR3bWFjX2dlbmVyaWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMtMjAte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jLTUxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYzo1MjpzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBkd21hY19nZW5lcmljX21hdGNoW10gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jLTUzLVxcdHsgLmNvbXBhdGlibGUgPSBcXFwic3Qsc3BlYXI2MDAtZ21hY1xcXCJ9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYzo1NDpcXHR7IC5jb21wYXRpYmxlID0gXFxcInNucHMsZHdtYWMtMy40MGFcXFwifSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmM6NTU6XFx0eyAuY29tcGF0aWJsZSA9IFxcXCJzbnBzLGR3bWFjLTMuNTBhXFxcIn0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jOjU2OlxcdHsgLmNvbXBhdGlibGUgPSBcXFwic25wcyxkd21hYy0zLjYxMFxcXCJ9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYzo1NzpcXHR7IC5jb21wYXRpYmxlID0gXFxcInNucHMsZHdtYWMtMy43MGFcXFwifSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmM6NTg6XFx0eyAuY29tcGF0aWJsZSA9IFxcXCJzbnBzLGR3bWFjLTMuNzEwXFxcIn0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jOjU5OlxcdHsgLmNvbXBhdGlibGUgPSBcXFwic25wcyxkd21hYy0zLjcyYVxcXCJ9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYzo2MDpcXHR7IC5jb21wYXRpYmxlID0gXFxcInNucHMsZHdtYWMtNC4wMFxcXCJ9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYzo2MTpcXHR7IC5jb21wYXRpYmxlID0gXFxcInNucHMsZHdtYWMtNC4xMGFcXFwifSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmM6NjI6XFx0eyAuY29tcGF0aWJsZSA9IFxcXCJzbnBzLGR3bWFjXFxcIn0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jLTYzLVxcdHsgLmNvbXBhdGlibGUgPSBcXFwic25wcyxkd3hnbWFjLTIuMTBcXFwifSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYy02Ni19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYzo2NzpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBkd21hY19nZW5lcmljX21hdGNoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMtNjgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jOjY5OnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGR3bWFjX2dlbmVyaWNfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYzo3MDpcXHQucHJvYmUgID0gZHdtYWNfZ2VuZXJpY19wcm9iZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMtNzEtXFx0LmRyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYy03My1cXHRcXHQucG1cXHRcXHQ9IFxcdTAwMjZzdG1tYWNfcGx0ZnJfcG1fb3BzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYzo3NDpcXHRcXHQub2ZfbWF0Y2hfdGFibGUgPSBkd21hY19nZW5lcmljX21hdGNoLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYy03NS1cXHR9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYy03Ni19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYzo3Nzptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGR3bWFjX2dlbmVyaWNfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMtNzgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jOjc5Ok1PRFVMRV9ERVNDUklQVElPTihcXFwiR2VuZXJpYyBkd21hYyBkcml2ZXJcXFwiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMtODAtTU9EVUxFX0xJQ0VOU0UoXFxcIkdQTCB2MlxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMi0vKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjM6ICogZHdtYWMtaW14LmMgLSBEV01BQyBTcGVjaWZpYyBHbHVlIGxheWVyIGZvciBOWFAgaW14OFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTQtICpcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jPTQyPXN0cnVjdCBpbXhfcHJpdl9kYXRhO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTQzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjQ0OnN0cnVjdCBpbXhfZHdtYWNfb3BzIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy00NS1cXHR1MzIgZmxhZ3M7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy00OS1cXHRpbnQgKCpmaXhfc29jX3Jlc2V0KShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjUwOlxcdGludCAoKnNldF9pbnRmX21vZGUpKHN0cnVjdCBpbXhfcHJpdl9kYXRhICpkd21hYywgdTggcGh5X2ludGZfc2VsKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy01MS1cXHR2b2lkICgqZml4X21hY19zcGVlZCkodm9pZCAqcHJpdiwgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jPTU1PXN0cnVjdCBpbXhfcHJpdl9kYXRhIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTYzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjY0OlxcdGNvbnN0IHN0cnVjdCBpbXhfZHdtYWNfb3BzICpvcHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtNjUtXFx0c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTY3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjY4OnN0YXRpYyBpbnQgaW14OG1wX3NldF9pbnRmX21vZGUoc3RydWN0IGlteF9wcml2X2RhdGEgKmR3bWFjLCB1OCBwaHlfaW50Zl9zZWwpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtNjkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtNzQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6NzU6XFx0aWYgKHBoeV9pbnRmX3NlbCA9PSBQSFlfSU5URl9TRUxfUk1JSSBcXHUwMDI2XFx1MDAyNiAhZHdtYWMtXFx1MDAzZXJtaWlfcmVmY2xrX2V4dClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy03Ni1cXHRcXHR2YWwgfD0gR1BSX0VORVRfUU9TX0NMS19UWF9DTEtfU0VMO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtNzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6ODA6XFx0cmV0dXJuIHJlZ21hcF91cGRhdGVfYml0cyhkd21hYy1cXHUwMDNlaW50Zl9yZWdtYXAsIGR3bWFjLVxcdTAwM2VpbnRmX3JlZ19vZmYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtODEtXFx0XFx0XFx0XFx0ICBHUFJfRU5FVF9RT1NfSU5URl9NT0RFX01BU0ssIHZhbCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYz04ND1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6ODU6aW14OGR4bF9zZXRfaW50Zl9tb2RlKHN0cnVjdCBpbXhfcHJpdl9kYXRhICpkd21hYywgdTggcGh5X2ludGZfc2VsKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTg2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTkwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjkxOnN0YXRpYyBpbnQgaW14OTNfc2V0X2ludGZfbW9kZShzdHJ1Y3QgaW14X3ByaXZfZGF0YSAqZHdtYWMsIHU4IHBoeV9pbnRmX3NlbClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy05Mi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy05NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzo5NjpcXHRpZiAocGh5X2ludGZfc2VsID09IFBIWV9JTlRGX1NFTF9STUlJIFxcdTAwMjZcXHUwMDI2IGR3bWFjLVxcdTAwM2VybWlpX3JlZmNsa19leHQpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzo5NzpcXHRcXHRyZXQgPSByZWdtYXBfY2xlYXJfYml0cyhkd21hYy1cXHUwMDNlaW50Zl9yZWdtYXAsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6OTg6XFx0XFx0XFx0XFx0XFx0ZHdtYWMtXFx1MDAzZWludGZfcmVnX29mZiArXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtOTktXFx0XFx0XFx0XFx0XFx0TVg5M19FTkVUX0NMS19TRUxfT0ZGU0VULFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMTA3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjEwODpcXHRyZXR1cm4gcmVnbWFwX3VwZGF0ZV9iaXRzKGR3bWFjLVxcdTAwM2VpbnRmX3JlZ21hcCwgZHdtYWMtXFx1MDAzZWludGZfcmVnX29mZixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0xMDktXFx0XFx0XFx0XFx0ICBNWDkzX0dQUl9FTkVUX1FPU19JTlRGX1NFTF9NQVNLIHxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTExMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoxMTM6c3RhdGljIGludCBpbXhfZHdtYWNfY2xrc19jb25maWcodm9pZCAqcHJpdiwgYm9vbCBlbmFibGVkKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTExNC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MTE1OlxcdHN0cnVjdCBpbXhfcHJpdl9kYXRhICpkd21hYyA9IHByaXY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMTE2LVxcdGludCByZXQgPSAwO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMTE4LVxcdGlmIChlbmFibGVkKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MTE5OlxcdFxcdHJldCA9IGNsa19wcmVwYXJlX2VuYWJsZShkd21hYy1cXHUwMDNlY2xrX21lbSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMTIwLVxcdFxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoxMjE6XFx0XFx0XFx0ZGV2X2Vycihkd21hYy1cXHUwMDNlZGV2LCBcXFwibWVtIGNsb2NrIGVuYWJsZSBmYWlsZWRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTEyMi1cXHRcXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMTI0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjEyNTpcXHRcXHRyZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUoZHdtYWMtXFx1MDAzZWNsa190eCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMTI2LVxcdFxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoxMjc6XFx0XFx0XFx0ZGV2X2Vycihkd21hYy1cXHUwMDNlZGV2LCBcXFwidHggY2xvY2sgZW5hYmxlIGZhaWxlZFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MTI4OlxcdFxcdFxcdGNsa19kaXNhYmxlX3VucHJlcGFyZShkd21hYy1cXHUwMDNlY2xrX21lbSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMTI5LVxcdFxcdFxcdHJldHVybiByZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0xMzEtXFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoxMzI6XFx0XFx0Y2xrX2Rpc2FibGVfdW5wcmVwYXJlKGR3bWFjLVxcdTAwM2VjbGtfdHgpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjEzMzpcXHRcXHRjbGtfZGlzYWJsZV91bnByZXBhcmUoZHdtYWMtXFx1MDAzZWNsa19tZW0pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTEzNC1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYz0xMzk9c3RhdGljIGludCBpbXhfc2V0X3BoeV9pbnRmX3NlbCh2b2lkICpic3BfcHJpdiwgdTggcGh5X2ludGZfc2VsKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTE0MC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MTQxOlxcdHN0cnVjdCBpbXhfcHJpdl9kYXRhICpkd21hYyA9IGJzcF9wcml2O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTE0Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoxNDM6XFx0aWYgKCFkd21hYy1cXHUwMDNlb3BzLVxcdTAwM2VzZXRfaW50Zl9tb2RlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTE0NC1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTE1MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoxNTE6XFx0cmV0dXJuIGR3bWFjLVxcdTAwM2VvcHMtXFx1MDAzZXNldF9pbnRmX21vZGUoZHdtYWMsIHBoeV9pbnRmX3NlbCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMTUyLX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0xNTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MTU0OnN0YXRpYyBpbnQgaW14X2R3bWFjX3NldF9jbGtfdHhfcmF0ZSh2b2lkICpic3BfcHJpdiwgc3RydWN0IGNsayAqY2xrX3R4X2ksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMTU1LVxcdFxcdFxcdFxcdCAgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSwgaW50IHNwZWVkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMTYzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjE2NDpzdGF0aWMgdm9pZCBpbXhfZHdtYWNfZml4X3NwZWVkKHZvaWQgKnByaXYsIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMTY1LVxcdFxcdFxcdFxcdGludCBzcGVlZCwgdW5zaWduZWQgaW50IG1vZGUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0xNjctXFx0c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoxNjg6XFx0c3RydWN0IGlteF9wcml2X2RhdGEgKmR3bWFjID0gcHJpdjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0xNjktXFx0bG9uZyByYXRlO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMTcxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjE3MjpcXHRwbGF0X2RhdCA9IGR3bWFjLVxcdTAwM2VwbGF0X2RhdDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0xNzMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MTc0OlxcdGlmIChkd21hYy1cXHUwMDNlb3BzLVxcdTAwM2VtYWNfcmdtaWlfdHhjbGtfYXV0b19hZGogfHxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0xNzUtXFx0ICAgIChwbGF0X2RhdC1cXHUwMDNlcGh5X2ludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfUk1JSSkgfHxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTE4MC1cXHRpZiAocmF0ZSBcXHUwMDNjIDApIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoxODE6XFx0XFx0ZGV2X2Vycihkd21hYy1cXHUwMDNlZGV2LCBcXFwiaW52YWxpZCBzcGVlZCAlZFxcXFxuXFxcIiwgc3BlZWQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTE4Mi1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0xODQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MTg1OlxcdGVyciA9IGNsa19zZXRfcmF0ZShkd21hYy1cXHUwMDNlY2xrX3R4LCByYXRlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0xODYtXFx0aWYgKGVyciBcXHUwMDNjIDApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MTg3OlxcdFxcdGRldl9lcnIoZHdtYWMtXFx1MDAzZWRldiwgXFxcImZhaWxlZCB0byBzZXQgdHggcmF0ZSAlbHVcXFxcblxcXCIsIHJhdGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTE4OC19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMTg5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjE5MDpzdGF0aWMgdm9pZCBpbXg5M19kd21hY19maXhfc3BlZWQodm9pZCAqcHJpdiwgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0xOTEtXFx0XFx0XFx0XFx0ICBpbnQgc3BlZWQsIHVuc2lnbmVkIGludCBtb2RlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTE5Mi17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MTkzOlxcdHN0cnVjdCBpbXhfcHJpdl9kYXRhICpkd21hYyA9IHByaXY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMTk0LVxcdHVuc2lnbmVkIGludCBpZmFjZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTE5Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoxOTc6XFx0aW14X2R3bWFjX2ZpeF9zcGVlZChwcml2LCBpbnRlcmZhY2UsIHNwZWVkLCBtb2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0xOTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MTk5OlxcdGlmICghZHdtYWMgfHwgbW9kZSAhPSBNTE9fQU5fRklYRUQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMjAwLVxcdFxcdHJldHVybjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0yMDEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MjAyOlxcdGlmIChyZWdtYXBfcmVhZChkd21hYy1cXHUwMDNlaW50Zl9yZWdtYXAsIGR3bWFjLVxcdTAwM2VpbnRmX3JlZ19vZmYsIFxcdTAwMjZpZmFjZSkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMjAzLVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTIwOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoyMDk6XFx0b2xkX2N0cmwgPSByZWFkbChkd21hYy1cXHUwMDNlYmFzZV9hZGRyICsgTUFDX0NUUkxfUkVHKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0yMTAtXFx0Y3RybCA9IG9sZF9jdHJsIFxcdTAwMjYgfkNUUkxfU1BFRURfTUFTSztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoyMTE6XFx0cmVnbWFwX3VwZGF0ZV9iaXRzKGR3bWFjLVxcdTAwM2VpbnRmX3JlZ21hcCwgZHdtYWMtXFx1MDAzZWludGZfcmVnX29mZixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0yMTItXFx0XFx0XFx0ICAgTVg5M19HUFJfRU5FVF9RT1NfSU5URl9TRUxfTUFTSyB8XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMjEzLVxcdFxcdFxcdCAgIE1YOTNfR1BSX0VORVRfUU9TX0VOQUJMRSwgMCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MjE0OlxcdHdyaXRlbChjdHJsLCBkd21hYy1cXHUwMDNlYmFzZV9hZGRyICsgTUFDX0NUUkxfUkVHKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0yMTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMjE2LVxcdCAvKiBFbnN1cmUgdGhlIHNldHRpbmdzIGZvciBDVFJMIGFyZSBhcHBsaWVkLiAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjIxNzpcXHRyZWFkbChkd21hYy1cXHUwMDNlYmFzZV9hZGRyICsgTUFDX0NUUkxfUkVHKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0yMTgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0yMjEtXFx0aWZhY2UgfD0gTVg5M19HUFJfRU5FVF9RT1NfRU5BQkxFO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjIyMjpcXHRyZWdtYXBfdXBkYXRlX2JpdHMoZHdtYWMtXFx1MDAzZWludGZfcmVnbWFwLCBkd21hYy1cXHUwMDNlaW50Zl9yZWdfb2ZmLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTIyMy1cXHRcXHRcXHQgICBNWDkzX0dQUl9FTkVUX1FPU19JTlRGX1NFTF9NQVNLIHxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTIyNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoyMjY6XFx0d3JpdGVsKG9sZF9jdHJsLCBkd21hYy1cXHUwMDNlYmFzZV9hZGRyICsgTUFDX0NUUkxfUkVHKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0yMjctfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTIyOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoyMjk6c3RhdGljIGludCBpbXhfZHdtYWNfbXg5M19yZXNldChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMjMwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jPTI1MD1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MjUxOmlteF9kd21hY19wYXJzZV9kdChzdHJ1Y3QgaW14X3ByaXZfZGF0YSAqZHdtYWMsIHN0cnVjdCBkZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0yNTIte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMjU1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjI1NjpcXHRkd21hYy1cXHUwMDNlcm1paV9yZWZjbGtfZXh0ID0gb2ZfcHJvcGVydHlfcmVhZF9ib29sKG5wLCBcXFwic25wcyxybWlpX3JlZmNsa19leHRcXFwiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0yNTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MjU4OlxcdGR3bWFjLVxcdTAwM2VjbGtfdHggPSBkZXZtX2Nsa19nZXQoZGV2LCBcXFwidHhcXFwiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoyNTk6XFx0aWYgKElTX0VSUihkd21hYy1cXHUwMDNlY2xrX3R4KSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTI2MC1cXHRcXHRkZXZfZXJyKGRldiwgXFxcImZhaWxlZCB0byBnZXQgdHggY2xvY2tcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjI2MTpcXHRcXHRyZXR1cm4gUFRSX0VSUihkd21hYy1cXHUwMDNlY2xrX3R4KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0yNjItXFx0fVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTI2My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoyNjQ6XFx0ZHdtYWMtXFx1MDAzZWNsa19tZW0gPSBOVUxMO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTI2NS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTI2OC1cXHQgICAgb2ZfbWFjaGluZV9pc19jb21wYXRpYmxlKFxcXCJmc2wsaW14OTNcXFwiKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjI2OTpcXHRcXHRkd21hYy1cXHUwMDNlY2xrX21lbSA9IGRldm1fY2xrX2dldChkZXYsIFxcXCJtZW1cXFwiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoyNzA6XFx0XFx0aWYgKElTX0VSUihkd21hYy1cXHUwMDNlY2xrX21lbSkpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0yNzEtXFx0XFx0XFx0ZGV2X2VycihkZXYsIFxcXCJmYWlsZWQgdG8gZ2V0IG1lbSBjbG9ja1xcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MjcyOlxcdFxcdFxcdHJldHVybiBQVFJfRVJSKGR3bWFjLVxcdTAwM2VjbGtfbWVtKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0yNzMtXFx0XFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMjgyLVxcdFxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjI4MzpcXHRcXHRkd21hYy1cXHUwMDNlaW50Zl9yZWdtYXAgPVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTI4NC1cXHRcXHRcXHRzeXNjb25fcmVnbWFwX2xvb2t1cF9ieV9waGFuZGxlX2FyZ3MobnAsIFxcXCJpbnRmX21vZGVcXFwiLCAxLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjI4NTpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgIFxcdTAwMjZkd21hYy1cXHUwMDNlaW50Zl9yZWdfb2ZmKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoyODY6XFx0XFx0aWYgKElTX0VSUihkd21hYy1cXHUwMDNlaW50Zl9yZWdtYXApKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjI4NzpcXHRcXHRcXHRyZXR1cm4gUFRSX0VSUihkd21hYy1cXHUwMDNlaW50Zl9yZWdtYXApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTI4OC1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0yOTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MjkzOnN0YXRpYyBpbnQgaW14X2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMjk0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTI5Ni1cXHRzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyBzdG1tYWNfcmVzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjI5NzpcXHRzdHJ1Y3QgaW14X3ByaXZfZGF0YSAqZHdtYWM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6Mjk4OlxcdGNvbnN0IHN0cnVjdCBpbXhfZHdtYWNfb3BzICpkYXRhO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTI5OS1cXHRpbnQgcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMzA0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjMwNTpcXHRkd21hYyA9IGRldm1fa3phbGxvYyhcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBzaXplb2YoKmR3bWFjKSwgR0ZQX0tFUk5FTCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MzA2OlxcdGlmICghZHdtYWMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMzA3LVxcdFxcdHJldHVybiAtRU5PTUVNO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMzE4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjMxOTpcXHRkd21hYy1cXHUwMDNlb3BzID0gZGF0YTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzozMjA6XFx0ZHdtYWMtXFx1MDAzZWRldiA9IFxcdTAwMjZwZGV2LVxcdTAwM2VkZXY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMzIxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjMyMjpcXHRyZXQgPSBpbXhfZHdtYWNfcGFyc2VfZHQoZHdtYWMsIFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTMyMy1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0zMzMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MzM0OlxcdHBsYXRfZGF0LVxcdTAwM2Vob3N0X2RtYV93aWR0aCA9IGR3bWFjLVxcdTAwM2VvcHMtXFx1MDAzZWFkZHJfd2lkdGg7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMzM1LVxcdHBsYXRfZGF0LVxcdTAwM2VzZXRfcGh5X2ludGZfc2VsID0gaW14X3NldF9waHlfaW50Zl9zZWw7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MzM2OlxcdHBsYXRfZGF0LVxcdTAwM2VjbGtzX2NvbmZpZyA9IGlteF9kd21hY19jbGtzX2NvbmZpZztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzozMzc6XFx0cGxhdF9kYXQtXFx1MDAzZWJzcF9wcml2ID0gZHdtYWM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MzM4OlxcdGR3bWFjLVxcdTAwM2VwbGF0X2RhdCA9IHBsYXRfZGF0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjMzOTpcXHRkd21hYy1cXHUwMDNlYmFzZV9hZGRyID0gc3RtbWFjX3Jlcy5hZGRyO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTM0MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzozNDE6XFx0cmV0ID0gaW14X2R3bWFjX2Nsa3NfY29uZmlnKGR3bWFjLCB0cnVlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0zNDItXFx0aWYgKHJldClcXG4tLVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQxODoxNDowNC4xODQ5MTAyOVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY0ODc1MjEwNTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBRRU1VLVNUTU1BQyBEcml2ZXIgZm9yIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgUUVNVSdzIG5ldHdvcmsgZGV2aWNlIGltcGxlbWVudGF0aW9uLCBhbmQgaXQgbG9va3MgbGlrZSBgaHcvbmV0L2Rlc2lnbndhcmUuY2AgaGFuZGxlcyB0aGUgYHNucHMsZHdtYWNgIGRldmljZSwgcmlnaHQ/IEdvb2QsIHRoYXQgY29uZmlybXMgaXQuIEkgd2FudGVkIHRvIG1ha2Ugc3VyZSB0aGUgU1RNTUFDIGRyaXZlciBjb2RlIGlzIGFjdHVhbGx5IHByZXNlbnQgYW5kIGFjY2Vzc2libGUgaW4gdGhpcyBlbXVsYXRlZCBlbnZpcm9ubWVudC4gU2VlbXMgbGlrZSBpdCBpcy4gSSBzZWUgdGhhdCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jYCBkaXJlY3RseSBhbGlnbnMgd2l0aCB0aGlzIGBzbnBzLGR3bWFjYCBpZGVudGlmaWVyLCBzbyBgc3RtbWFjX21haW4uY2AgaXMgZGVmaW5pdGVseSByZWFjaGFibGUuXG5cbk5vdywgbGV0IG1lIHJlLWV4YW1pbmUgdGhpcyBwYXRjaC4gSXQncyBtYWtpbmcgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byBob3cgR1NPIChHZW5lcmljIFNlZ21lbnRhdGlvbiBPZmZsb2FkKSB0eXBlcyBhcmUgaGFuZGxlZCB3aXRoaW4gdGhlIFNUTU1BQyBkcml2ZXIuIFNwZWNpZmljYWxseSwgaXQncyBhYm91dCBgc3RtbWFjX3NldF9nc29fdHlwZXNgLiBUaGlzIGxvb2tzIGxpa2Ugc29tZXRoaW5nIHRoYXQgY291bGQgYmUgaW50ZXJlc3RpbmcgdG8gZnV6ei4gSXQncyBhIGNvcmUgZHJpdmVyLCBhIHdpZGVseSB1c2VkIE1BQywgYW5kIEkndmUgY29uZmlybWVkIGl0J3MgcmVhY2hhYmxlIHRocm91Z2ggUUVNVS4gVGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludC5cblxuQnV0IGhvbGQgb24sIGxldCBtZSB0cmFjZSBob3cgYHN0bW1hY19zZXRfZ3NvX3R5cGVzYCBpcyBhY3R1YWxseSBjYWxsZWQuIEl0J3MgY2FsbGVkIGZyb20gYHN0bW1hY19zZXRfZ3NvX2ZlYXR1cmVzYCBhbmQgYHN0bW1hY19zZXRfZmVhdHVyZXNgLiBBaCwgYW5kIGBzdG1tYWNfc2V0X2ZlYXR1cmVzYCBpcyB0aGUgYC5uZG9fc2V0X2ZlYXR1cmVzYCBjYWxsYmFjayBmb3IgdGhlIG5ldF9kZXZpY2UuIFNvIHRoYXQgbWVhbnMgdGhpcyB3aG9sZSB0aGluZyBjYW4gYmUgdHJpZ2dlcmVkIHRocm91Z2ggc29tZXRoaW5nIGxpa2UgYGV0aHRvb2wgLUtgIG9yIG90aGVyIG5ldGxpbmsgY29tbWFuZHMuIFRoYXQncyBhIG5pY2UgZWFzeSB3YXkgdG8gaW50ZXJhY3Qgd2l0aCBpdCwgdG9vLiBJIHNob3VsZCBwcm9iYWJseSBkaWcgaW50byB0aGUgY29kZSBmb3IgYHN0bW1hY19zZXRfZmVhdHVyZXNgIG5vdyB0byBzZWUgd2hhdCdzIHdoYXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNDgxLCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDY3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDE4OjE0OjEwLjY3MjQzMzYzMVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjkzNDU0NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNfc2V0X2ZlYXR1cmVzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTYxNTg9c3RhdGljIG5ldGRldl9mZWF0dXJlc190IHN0bW1hY19maXhfZmVhdHVyZXMoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjE3OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjYxODA6c3RhdGljIGludCBzdG1tYWNfc2V0X2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02MTgxLVxcdFxcdFxcdCAgICAgICBuZXRkZXZfZmVhdHVyZXNfdCBmZWF0dXJlcylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NzMwOT1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIHN0bW1hY19uZXRkZXZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MzE1LVxcdC5uZG9fZml4X2ZlYXR1cmVzID0gc3RtbWFjX2ZpeF9mZWF0dXJlcyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjczMTY6XFx0Lm5kb19zZXRfZmVhdHVyZXMgPSBzdG1tYWNfc2V0X2ZlYXR1cmVzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzMxNy1cXHQubmRvX3NldF9yeF9tb2RlID0gc3RtbWFjX3NldF9yeF9tb2RlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQxODoxNDoxMC43MjkzNzA0NDdaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTUyMjk5MTYxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipBbmFseXppbmcgdGhlIFNUTU1BQyBEcml2ZXIncyBGZWF0dXJlIFNldHVwKipcblxuQWxyaWdodCwgc28gYHN0bW1hY19zZXRfZmVhdHVyZXNgLi4uIHJpZ2h0LCB0aGF0J3MganVzdCBhIHdyYXBwZXIgYXJvdW5kIGAubmRvX3NldF9mZWF0dXJlc2AuIE5vdGhpbmcgc3VycHJpc2luZyB0aGVyZS4gVGhlIHBhdGNoIGluIHF1ZXN0aW9uIGlzIGFsc28gdG91Y2hpbmcgYHN0bW1hY19zZXRfZ3NvX2ZlYXR1cmVzYC4gU2luY2UgdGhpcyBpcyBoYXBwZW5pbmcgZHVyaW5nIGluaXRpYWxpemF0aW9uLCB0aGlzIG5lZWRzIGEgY2xvc2VyIGxvb2suIExldCdzIGRpZyBpbnRvIGBzdG1tYWNfc2V0X2dzb19mZWF0dXJlc2AgYW5kIHNlZSB3aGF0J3MgYmVpbmcgYWx0ZXJlZCBpbiB0aGF0IHBhcnRpY3VsYXIgY2FsbC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBuZXcgR1NPIGZlYXR1cmVzIGFyZSBiZWluZyBlbmFibGVkIG9yIGRpc2FibGVkLCBhbmQgaG93IHRoYXQgaW1wYWN0cyB0aGUgb3ZlcmFsbCBkcml2ZXIgYmVoYXZpb3IuIEdvdHRhIG1ha2Ugc3VyZSB0aGVyZSdzIG5vIHVuaW50ZW5kZWQgY29uc2VxdWVuY2VzIHdpdGggdGhvc2Ugc2V0dGluZ3MuIFRpbWUgdG8gdHJhY2UgdGhhdCBjYWxsIHBhdGghXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxNzQ0LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMTg6MTQ6MTQuMjgxNjcyMzk4WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODk2NjA3NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNfc2V0X2dzb19mZWF0dXJlc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz00Mzc0PXN0YXRpYyB2b2lkIHN0bW1hY19zZXRfZ3NvX3R5cGVzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDM4Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQzODg6c3RhdGljIHZvaWQgc3RtbWFjX3NldF9nc29fZmVhdHVyZXMoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00Mzg5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9Nzc5NT1zdGF0aWMgaW50IF9fc3RtbWFjX2R2cl9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXZpY2UsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTc5MjQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3OTI1OlxcdHN0bW1hY19zZXRfZ3NvX2ZlYXR1cmVzKG5kZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzkyNi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMTg6MTQ6MTQuMzMwNjQwOTk1WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5OTQ0OTk4MTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBTVE1NQUMgR1NPIEZlYXR1cmUgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBzZWVpbmcgdGhhdCBgc3RtbWFjX3NldF9nc29fZmVhdHVyZXNgIGlzIGJlaW5nIGNhbGxlZCB3aXRoaW4gYF9fc3RtbWFjX2R2cl9wcm9iZWAuIEludGVyZXN0aW5nLiBUaGlzIGxvb2tzIGxpa2UgYSBkZWZpbml0ZSBmdW5jdGlvbmFsIG1vZGlmaWNhdGlvbiwgd2hpY2ggbWVhbnMgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGltcGxpY2F0aW9ucyBmb3IgdGhlIG92ZXJhbGwgZHJpdmVyIGNvbmZpZ3VyYXRpb24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IHdoaWNoIGNvbmZpZ3VyYXRpb25zIGFyZSBhY3R1YWxseSBuZWNlc3NhcnkgdG8gZW5hYmxlIHRoaXMgbmV3IEdTTyBmdW5jdGlvbmFsaXR5LlxuXG5JIGtub3cgdGhhdCBgQ09ORklHX1NUTU1BQ19FVEhgIGlzIHRoZSBwcmltYXJ5IGNvbmZpZ3VyYXRpb24gb3B0aW9uIGZvciB0aGUgU1RNTUFDIGRyaXZlciBpdHNlbGYsIGJ1dCBJJ2xsIG5lZWQgdG8gZGlnIGRlZXBlci4gVGltZSB0byBjcm9zcy1yZWZlcmVuY2Ugd2l0aCB0aGUgZHJpdmVyJ3MgS2NvbmZpZyBmaWxlIOKAkyBzcGVjaWZpY2FsbHksIEknbGwgbmVlZCB0byBleGFtaW5lIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnYCB0byBwaW5wb2ludCBleGFjdGx5IHdoaWNoIGNvbmZpZ3VyYXRpb25zIGFyZSB0aWVkIHRvIHRoaXMgR1NPIGZlYXR1cmUgYWRkaXRpb24gYW5kIHNlZSBob3cgdGhlc2UgY2hhbmdlcyBhZmZlY3QgdGhlIGJ1aWxkIHByb2Nlc3MuIEknbGwgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoZSBjaGFuZ2UgaXMgY29uZGl0aW9uYWwgYW5kIHdoYXQgdGhlIG90aGVyIGNvbmZpZyBvcHRpb25zIGFyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjIzMzMsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQxODoxNDoxOC4zMjUxNDQzMTVaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1MzA1MDY3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBTVE1NQUNfRVRIXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyOmNvbmZpZyBTVE1NQUNfRVRIXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJTVE1pY3JvZWxlY3Ryb25pY3MgTXVsdGktR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDE4OjE0OjE4LjM3MDQ1MjA1MVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTcxODMyNDcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgdGhlIHN1bW1hcnksIHJlbmRlcmVkIGFzIGEgZmlyc3QtcGVyc29uIHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIHRoZSB1c2VyIGlzIGFuIGV4cGVydDpcblxuKipPa2F5LCBMZXQncyBBbmFseXplIHRoZSBEZXBlbmRlbmNpZXMqKlxuXG5BbHJpZ2h0LCBJJ20gZGl2aW5nIGluLiBCZWZvcmUgSSBqdW1wIHRvIGFueSBjb25jbHVzaW9ucywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHVuZGVybHlpbmcgZnJhbWV3b3JrLiBMZXQncyBub3QgZ2V0IGFoZWFkIG9mIG91cnNlbHZlcy4gSSdtIGdvaW5nIHRvIHN0YXJ0IGJ5IGlkZW50aWZ5aW5nIGFsbCB0aGUga2V5IGRlcGVuZGVuY2llcyBhdCBwbGF5IGhlcmUuIFdoYXQgYXJlIHRoZSBjb3JlIGNvbXBvbmVudHMgdGhpcyByZWxpZXMgb24/IEFyZSB3ZSB0YWxraW5nIGFib3V0IGV4dGVybmFsIEFQSXMsIHNwZWNpZmljIGxpYnJhcmllcywgbWF5YmUgcGFydGljdWxhciBhcmNoaXRlY3R1cmFsIGNob2ljZXM/IEl0J3MgY3J1Y2lhbCB0byBtYXAgb3V0IHRoYXQgbGFuZHNjYXBlIGZpcnN0LiBJJ20gdGhpbmtpbmcgb2YgZXZlcnl0aGluZyBmcm9tIHRoZSBvYnZpb3VzIHRvIHRoZSBtb3JlIHN1YnRsZTogZGF0YSBzdHJ1Y3R1cmVzLCBjb250cm9sIGZsb3csIHVuZGVybHlpbmcgYXNzdW1wdGlvbnMuLi4gdGhlIHdob2xlIHNoZWJhbmcuIExldCdzIHNlZSB3aGF0IHdlJ3JlIHdvcmtpbmcgd2l0aCBiZWZvcmUgdHJ5aW5nIHRvIGNyYWZ0IGFueSBzb2x1dGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI3NzAsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDE4OjE0OjIyLjM0MjI4ODA1NFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NTgyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRjb25maWcgU1RNTUFDX0VUSFxcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIlNUTWljcm9lbGVjdHJvbmljcyBNdWx0aS1HaWdhYml0IEV0aGVybmV0IGRyaXZlclxcXCJcXG4gICA0OlxcdFxcdGRlcGVuZHMgb24gSEFTX0lPTUVNIFxcdTAwMjZcXHUwMDI2IEhBU19ETUFcXG4gICA1OlxcdFxcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcXG4gICA2OlxcdFxcdGRlcGVuZHMgb24gRVRIVE9PTF9ORVRMSU5LXFxuICAgNzpcXHRcXHRzZWxlY3QgTUlJXFxuICAgODpcXHRcXHRzZWxlY3QgUENTX1hQQ1NcXG4gICA5OlxcdFxcdHNlbGVjdCBQQUdFX1BPT0xcXG4gIDEwOlxcdFxcdHNlbGVjdCBQSFlMSU5LXFxuICAxMTpcXHRcXHRzZWxlY3QgQ1JDMzJcXG4gIDEyOlxcdFxcdHNlbGVjdCBSRVNFVF9DT05UUk9MTEVSXFxuICAxMzpcXHRcXHRzZWxlY3QgTkVUX0RFVkxJTktcXG4gIDE0OlxcdFxcdGhlbHBcXG4gIDE1OlxcdFxcdCAgVGhpcyBpcyB0aGUgZHJpdmVyIGZvciB0aGUgRXRoZXJuZXQgSVBzIGJ1aWx0IGFyb3VuZCBhXFxuICAxNjpcXHRcXHQgIFN5bm9wc3lzIElQIENvcmUuXFxuICAxNzpcXHRcXG4gIDE4OlxcdGlmIFNUTU1BQ19FVEhcXG4gIDE5OlxcdFxcbiAgMjA6XFx0Y29uZmlnIFNUTU1BQ19TRUxGVEVTVFNcXG4gIDIxOlxcdFxcdGJvb2wgXFxcIlN1cHBvcnQgZm9yIFNUTU1BQyBTZWxmdGVzdHNcXFwiXFxuICAyMjpcXHRcXHRkZXBlbmRzIG9uIElORVRcXG4gIDIzOlxcdFxcdGRlZmF1bHQgblxcbiAgMjQ6XFx0XFx0aGVscFxcbiAgMjU6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgU1RNTUFDIFNlbGZ0ZXN0cyB1c2luZyBldGh0b29sLiBFbmFibGUgdGhpc1xcbiAgMjY6XFx0XFx0ICBmZWF0dXJlIGlmIHlvdSBhcmUgZmFjaW5nIHByb2JsZW1zIHdpdGggeW91ciBIVyBhbmQgc3VibWl0IHRoZSB0ZXN0XFxuICAyNzpcXHRcXHQgIHJlc3VsdHMgdG8gdGhlIG5ldGRldiBNYWlsaW5nIExpc3QuXFxuICAyODpcXHRcXG4gIDI5OlxcdGNvbmZpZyBTVE1NQUNfUExBVEZPUk1cXG4gIDMwOlxcdFxcdHRyaXN0YXRlIFxcXCJTVE1NQUMgUGxhdGZvcm0gYnVzIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDE4OjE0OjIyLjM0MjM2NTQyM1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NTEwNjEyMjAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVGVzdGFiaWxpdHkgb2YgU1RNTUFDIGluIFFFTVUgYW5kIFN5emthbGxlcioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBiZXN0IHdheSB0byB0ZXN0IGBzdG1tYWNgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgaXQgaGluZ2VzIG9uIGEgZmV3IGtlcm5lbCBjb25maWdzOiBgSEFTX0lPTUVNYCwgYEhBU19ETUFgLCBgUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxgLCBhbmQgYEVUSFRPT0xfTkVUTElOS2AuIEJ1dCBob3cgZG8gSSBhY3R1YWxseSAqcnVuKiB0aGlzIGluIFFFTVU/IEkgbmVlZCB0byBlbnN1cmUgdGhlIGNvcnJlY3QgaGFyZHdhcmUgaXMgZW11bGF0ZWQuIFRoYXQgbWVhbnMgSSBwcm9iYWJseSBuZWVkIGBDT05GSUdfU1RNTUFDX0VUSGAsIGBDT05GSUdfU1RNTUFDX1BMQVRGT1JNYCwgYW5kIGBDT05GSUdfRFdNQUNfR0VORVJJQ2AgdG8gbWFrZSBzdXJlIGl0IG1hdGNoZXMgdGhlIGBzbnBzLGR3bWFjYCBkZXZpY2UgdHJlZSBlbnRyaWVzLiBBbmQgaWYgSSdtIGFpbWluZyBmb3IgUENJIHRlc3RpbmcsIEkgc2hvdWxkIGluY2x1ZGUgYENPTkZJR19TVE1NQUNfUENJYC5cblxuTm93LCB0aGUgaW1wb3J0YW50IGJpdDogaG93IGlzIHRoZSBEZXNpZ25XYXJlIE1BQyBlbXVsYXRlZCBpbiBRRU1VPyBJIHNlZW0gdG8gcmVjYWxsIGl0IGJlaW5nIGEgcGxhdGZvcm0gZGV2aWNlLCBidXQgSSBuZWVkIHRvIGJlIHN1cmUuIEkgc2hvdWxkIGNoZWNrIHRoZSBRRU1VIHNvdXJjZSBkaXJlY3RseSDigJMgc3BlY2lmaWNhbGx5LCBgaHcvbmV0L2Rlc2lnbndhcmUuY2AuIEFoYSEgSXQncyBhY3R1YWxseSBhIFN5c0J1c0RldmljZS4gVGhhdCdzIGdvb2QuIE5vdywgd2hlcmUgaXMgaXQgKmluc3RhbnRpYXRlZCo/IExldCdzIHNlZS4uLiBgaHcvYXJtL2ZzbC1pbXg2LmNgLCBgaHcvYXJtL2ZzbC1pbXg2dWwuY2AsIGBody9hcm0vZnNsLWlteDcuY2AsIGBody9hcm0vc3RtMzJmNDA1X3NvYy5jYC4uLiBPa2F5LCBzbyBpdCdzIHRpZWQgdG8gc3BlY2lmaWMgQVJNIFNvQ3MuXG5cbkJ1dCBpcyBpdCBpbmNsdWRlZCBpbiB0aGUgc3RhbmRhcmQgYHZpcnRgIG1hY2hpbmU/IE5vLCBpdCdzIG5vdCBpbnN0YW50aWF0ZWQgYnkgZGVmYXVsdCBpbiB0aGUgYHZpcnRgIG1hY2hpbmUsIHdoaWNoIGNvbXBsaWNhdGVzIHRoaW5ncy4gSSBoYXZlIHRvIHRoaW5rIGFib3V0IGhvdyBTeXprYWxsZXIgY2FuIGhhbmRsZSB0aGlzLiBDYW4gaXQgaW5zdGFudGlhdGUgcGxhdGZvcm0gZGV2aWNlcyB0aHJvdWdoIGRldmljZSB0cmVlIG92ZXJsYXlzLCBvciBpcyBpdCBhYmxlIHRvIGluamVjdCB0aGVtIGRpcmVjdGx5P1xuXG5SaWdodCwgU3l6a2FsbGVyICpjYW4qIGZ1enogcGxhdGZvcm0gZGV2aWNlcywgZXNwZWNpYWxseSBpZiB0aGV5IGFyZSBhbHJlYWR5IGluIHRoZSBEVCBvciBpZiBpdCBoYXMgYSB3YXkgb2YgaW5qZWN0aW5nIHRoZW0uIEJ1dCBTeXprYWxsZXIgYWxzbyBoYXMgYSBzcGVjaWZpYyBtZXRob2QgZm9yIGhhbmRsaW5nIFBDSSBkZXZpY2VzLCB3aGljaCBtaWdodCBiZSB0aGUgZWFzaWVzdCBwYXRoLiBXYWl0LCBkb2VzIGBzdG1tYWNgIGhhdmUgYSBQQ0kgd3JhcHBlcj8gQmluZ28hIGBDT05GSUdfU1RNTUFDX1BDSWAuIEkgc2hvdWxkIGNoZWNrIHRoZSBpbXBsZW1lbnRhdGlvbjsgbGV0J3MgbG9vayBhdCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jYC4gVGhhdCdzIHdoZXJlIEkgbmVlZCB0byBzdGFydC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjMzNzksIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNzMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQxODoxNDoyOC44NTI5ODA3MDZaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYxNTAwNzA1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBjaV9kcml2ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz0yMTA9TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIHN0bW1hY19pZF90YWJsZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIxMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjEyOnN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBzdG1tYWNfcGNpX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjEzLVxcdC5uYW1lID0gU1RNTUFDX1JFU09VUkNFX05BTUUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjIxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoyMjI6bW9kdWxlX3BjaV9kcml2ZXIoc3RtbWFjX3BjaV9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMjMtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDE4OjE0OjI4LjkxNDQ4NjQzMloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzYzOTE2MTM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEknbSBzcGVha2luZyB0byBhIGZlbGxvdyBleHBlcnQ6XG5cbioqSW52ZXN0aWdhdGluZyBQQ0kgSUQgU3VwcG9ydCoqXG5cbkFscmlnaHQsIHNvIHRoZSB0YXNrIGF0IGhhbmQgaXMgdG8gdW5kZXJzdGFuZCB3aGljaCBQZXJpcGhlcmFsIENvbXBvbmVudCBJbnRlcmNvbm5lY3QgKFBDSSkgSURzIGFyZSBhY3R1YWxseSBzdXBwb3J0ZWQsIG9yIGFyZSB1bmRlciBjb25zaWRlcmF0aW9uIGZvciBzdXBwb3J0LiBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB0aGF0IGxhbmRzY2FwZS4gSXQncyBhIGZ1bmRhbWVudGFsIHN0ZXAsIHJlYWxseS4gSSBuZWVkIHRvIGtub3cgdGhlIHBsYXlpbmcgZmllbGQgYmVmb3JlIEkgY2FuIHN0YXJ0IHRvIHN0cmF0ZWdpemUgb3IgbWFrZSBhbnkgbWVhbmluZ2Z1bCByZWNvbW1lbmRhdGlvbnMgYmFzZWQgb24gdGhhdCBzdXBwb3J0LiBJIG5lZWQgdG8gY29tcGlsZSB0aGF0IHN1cHBvcnRlZCBsaXN0LiBMZXQncyBzZWUuLi4gd2hlcmUgZG8gSSBiZWdpbj8gTG9va3MgbGlrZSBQQ0kgSURzIGlzIHRoZSBzdGFydGluZyBwb2ludC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQ2MDIsIk91dHB1dFRva2VucyI6NDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQxODoxNDozMS42Nzg0MDQ4NzVaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNDAwMjMxMjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RtbWFjX2lkX3RhYmxlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MTkyPXN0YXRpYyB2b2lkIHN0bW1hY19wY2lfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIwMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjAzOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBzdG1tYWNfaWRfdGFibGVbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjA0LVxcdHsgUENJX0RFVklDRV9EQVRBKFNUTU1BQywgU1RNTUFDLCBcXHUwMDI2c3RtbWFjX3BjaV9pbmZvKSB9LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIwOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjEwOk1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBzdG1tYWNfaWRfdGFibGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTIxMj1zdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgc3RtbWFjX3BjaV9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIxMy1cXHQubmFtZSA9IFNUTU1BQ19SRVNPVVJDRV9OQU1FLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoyMTQ6XFx0LmlkX3RhYmxlID0gc3RtbWFjX2lkX3RhYmxlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMTUtXFx0LnByb2JlID0gc3RtbWFjX3BjaV9wcm9iZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMTg6MTQ6MzIuNzE4NDM1MzY0WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0MDMzMDExNTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipJbml0aWFsIEFzc2Vzc21lbnQ6IE5hdmlnYXRpbmcgdGhlIERyaXZlciBTb3VyY2UqKlxuXG5BbHJpZ2h0LCBJJ20gdGhpbmtpbmcsIFwic3RtbWFjX2lkX3RhYmxlXCIg4oCTIHRoYXQncyB0aGUgc3RhcnRpbmcgcG9pbnQuIEkgbmVlZCB0byBnZXQgbXkgYmVhcmluZ3MgaGVyZSwgYW5kIHRoZSBmaXJzdCBwbGFjZSBJIGFsd2F5cyBnbyBpcyB0aGUgZGV2aWNlIElEIHRhYmxlLiBUaGF0IHRhYmxlIGlzIHRoZSBibHVlcHJpbnQsIHRoZSByZWdpc3RyeSwgdGhlIGZvdW5kYXRpb25hbCBkYXRhIHN0cnVjdHVyZSBmb3IgdGhpcyB3aG9sZSBkcml2ZXIuIEl0IGRlZmluZXMgdGhlIGRldmljZXMgdGhpcyBTVE1NQUMgZHJpdmVyICprbm93cyogaG93IHRvIGhhbmRsZS4gSXQncyB0aGUgZXNzZW50aWFsIGxpbmsgYmV0d2VlbiB0aGUgZHJpdmVyIGFuZCB0aGUgaGFyZHdhcmUgaXQncyBtZWFudCB0byBjb250cm9sLiBVbmRlcnN0YW5kaW5nIHRoaXMgdGFibGUsIGl0cyBzdHJ1Y3R1cmUsIGFuZCBpdHMgZW50cmllcywgaXMgZnVuZGFtZW50YWwgdG8gYW55IGluLWRlcHRoIGFuYWx5c2lzIG9yIG1vZGlmaWNhdGlvbi4gVGhpcyBpcyB3aGVyZSBJJ2xsIGdldCBhbiBpbml0aWFsIHNlbnNlIG9mIHRoZSBzdXBwb3J0ZWQgc2lsaWNvbiwgYW5kIGhvdyB0aGUgZHJpdmVyIGhhcyBiZWVuIGFyY2hpdGVjdGVkIHRvIGhhbmRsZSBkaWZmZXJlbnQgaGFyZHdhcmUgY29uZmlndXJhdGlvbnMuIFRpbWUgdG8gZGlnIGluIGFuZCBzZWUgd2hhdCB0cmVhc3VyZXMgdGhpcyB0YWJsZSBob2xkcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjUyNTksIk91dHB1dFRva2VucyI6NTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQxODoxNDozNi4xMjE3Mzg0OTRaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQzMTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxOTAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxOTA6XFx0ICogRGVzY3JpcHRpb246IHRoaXMgZnVuY3Rpb24gY2FsbHMgdGhlIG1haW4gdG8gZnJlZSB0aGUgbmV0IHJlc291cmNlcy5cXG4gMTkxOlxcdCAqL1xcbiAxOTI6XFx0c3RhdGljIHZvaWQgc3RtbWFjX3BjaV9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuIDE5MzpcXHR7XFxuIDE5NDpcXHRcXHRzdG1tYWNfZHZyX3JlbW92ZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG4gMTk1OlxcdH1cXG4gMTk2OlxcdFxcbiAxOTc6XFx0Lyogc3ludGhldGljIElELCBubyBvZmZpY2lhbCB2ZW5kb3IgKi9cXG4gMTk4OlxcdCNkZWZpbmUgUENJX1ZFTkRPUl9JRF9TVE1NQUNcXHRcXHQweDA3MDBcXG4gMTk5OlxcdFxcbiAyMDA6XFx0I2RlZmluZSBQQ0lfREVWSUNFX0lEX1NUTU1BQ19TVE1NQUNcXHRcXHQweDExMDhcXG4gMjAxOlxcdCNkZWZpbmUgUENJX0RFVklDRV9JRF9TWU5PUFNZU19HTUFDNV9JRFxcdFxcdDB4NzEwMlxcbiAyMDI6XFx0XFxuIDIwMzpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgc3RtbWFjX2lkX3RhYmxlW10gPSB7XFxuIDIwNDpcXHRcXHR7IFBDSV9ERVZJQ0VfREFUQShTVE1NQUMsIFNUTU1BQywgXFx1MDAyNnN0bW1hY19wY2lfaW5mbykgfSxcXG4gMjA1OlxcdFxcdHsgUENJX0RFVklDRV9EQVRBKFNUTUlDUk8sIE1BQywgXFx1MDAyNnN0bW1hY19wY2lfaW5mbykgfSxcXG4gMjA2OlxcdFxcdHsgUENJX0RFVklDRV9EQVRBKFNZTk9QU1lTLCBHTUFDNV9JRCwgXFx1MDAyNnNucHNfZ21hYzVfcGNpX2luZm8pIH0sXFxuIDIwNzpcXHRcXHR7fVxcbiAyMDg6XFx0fTtcXG4gMjA5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQxODoxNDozNi4xMjE4ODI5NjRaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDY4NDg2MTczNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipSZWFjaGluZyBhbmQgRnV6emluZyB0aGUgU1RNTUFDIERyaXZlcioqXG5cbk9rYXksIHNvIEkndmUgZ290IHN5bnRoZXRpYyBJRHMgYW5kIFNUTUlDUk8gTUFDIElEcywgdGhhdCdzIGludGVyZXN0aW5nLiBXaXRoIFN5emthbGxlciwgSSBrbm93IEkgY2FuIGluamVjdCBQQ0kgZGV2aWNlcyB3aXRoIGFyYml0cmFyeSBJRHMsIHRoYW5rcyB0byBgc3l6X3BjaV9zZXR1cGAuIFRoYXQncyB0aGUga2V5LiBUaGF0IG1lYW5zIEkgY2FuICpkZWZpbml0ZWx5KiBwcm9iZSB0aGUgYHN0bW1hY19wY2lfZHJpdmVyYC4gVGhlIGJyZWFkY3J1bWIgdHJhaWwgY29udGludWVzOiBgc3RtbWFjX3BjaV9wcm9iZWAgd2lsbCB0aGVuIGNhbGwgYHN0bW1hY19kdnJfcHJvYmVgLCB3aGljaCBpbiB0dXJuIGNhbGxzIGBzdG1tYWNfc2V0X2dzb19mZWF0dXJlc2AuIFRoZW4sIEkgY2FuIHJlYWNoIGBzdG1tYWNfc2V0X2ZlYXR1cmVzYCB2aWEgbmV0bGluay4gQmluZ28g4oCTIHRoZSBjb2RlIGlzIHJlYWNoYWJsZSBhbmQgZnV6emFibGUuIE5vdywgdGltZSB0byBmaWd1cmUgb3V0IHRoZSByaWdodCBjb25maWd1cmF0aW9uLiBJJ2xsIG5lZWQgYFNUTU1BQ19FVEhgLCBgU1RNTUFDX1BDSWAgKHRoYXQncyBjcnVjaWFsKSwgYW5kIHBvdGVudGlhbGx5IGBEV01BQ19HRU5FUklDYCAobWlnaHQgbm90IGJlIHN0cmljdGx5IG5lY2Vzc2FyeSB3aXRoIFBDSSwgYnV0IGl0J3MgYWx3YXlzIGdvb2QgdG8gaGF2ZSBvcHRpb25zKS4gSSdsbCBkb3VibGUgY2hlY2sgYFNUTU1BQ19QQ0lgIGluIEtjb25maWcgdG8gbWFrZSBzdXJlIGl0J3Mgc2V0IHVwIGNvcnJlY3RseS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU5MDIsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQxODoxNDo0MC44MDY3NDc5OThaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3NzAxMjE2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBTVE1NQUNfUENJXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTM5OD1jb25maWcgRFdNQUNfTU9UT1JDT01NXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQwNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjQwNzpjb25maWcgU1RNTUFDX1BDSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDA4LVxcdHRyaXN0YXRlIFxcXCJTVE1NQUMgUENJIGJ1cyBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQxODoxNDo0MC44NjQ0NTM4NTRaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQ1Mzg3MTIwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIGRlcGVuZGVuY2llcyBmb3IgYFNUTU1BQ19QQ0lgLlxuXG4qKkRlbHZpbmcgaW50byBTVE1NQUNfUENJIERlcGVuZGVuY2llcyoqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzIGFuZCBkaXNzZWN0IHRoZXNlIGRlcGVuZGVuY2llcy4gRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyAqcmVxdWlyZWQqIGZvciB0aGlzIFBDSS1iYXNlZCBTVE1NQUMgZHJpdmVyIHRvIGZ1bmN0aW9uLiBJJ20gdGhpbmtpbmcgYmV5b25kIHRoZSBvYnZpb3VzIGtlcm5lbCBjb21wb25lbnRzLCB0b28uIEkgbmVlZCB0byBiZSBzdXJlIEkga25vdyB3aGljaCBoZWFkZXJzLCBsaWJyYXJpZXMsIGFuZCBwb3RlbnRpYWxseSBldmVuIHNwZWNpZmljIGhhcmR3YXJlIGZlYXR1cmVzIGFyZSBleHBlY3RlZC4gSSdsbCBuZWVkIHRvIGlkZW50aWZ5OiBhbnkgcmVxdWlyZWQgZGV2aWNlIHRyZWUgYmluZGluZ3MsIHBvdGVudGlhbCByZWdpc3RlciBtYXBzIHRoYXQgYXJlIGFzc3VtZWQsIElSUSBoYW5kbGluZyBtZWNoYW5pc21zLCBhbnkgRE1BLXJlbGF0ZWQgcmVxdWlyZW1lbnRzLlxuXG5JJ2xsIGJlIGxvb2tpbmcgZm9yIGRpcmVjdCBkZXBlbmRlbmNpZXMsIGluZGlyZWN0IG9uZXMsIGFuZCB0aG9zZSB0aGF0IGFyZSBjb25kaXRpb25hbGx5IGxpbmtlZCwgYmFzZWQgb24gb3RoZXIgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJdCdzIGNydWNpYWwgdG8gbWFwIG91dCBhbGwgdGhlIHRvdWNocG9pbnRzLiBBIG1pc3NlZCBkZXBlbmRlbmN5IGNhbiBtYW5pZmVzdCBhcyBhIHN1YnRsZSwgZnJ1c3RyYXRpbmcgYnVnIHRoYXQgaXMgaGFyZCB0byB0cmFjayBkb3duLiBJJ2xsIG5lZWQgdG8ga25vdyB3aGV0aGVyIGFueSBvZiB0aGVzZSBjb21wb25lbnRzIGludHJvZHVjZSBhbnkgc2lnbmlmaWNhbnQgY29uZmxpY3RzIHdpdGggb3RoZXIgZHJpdmVycyBvciBjb3JlIGtlcm5lbCBtb2R1bGVzLiBUaGlzIGlzIG5vdCBqdXN0IGFib3V0IGZ1bmN0aW9uYWxpdHk7IGl0J3MgYWJvdXQgc3RhYmlsaXR5IGFuZCBtYWludGFpbmFiaWxpdHkuIExldCdzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjQ5NywiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDE4OjE0OjQ1LjMxODMyNzY1M1oiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NjM5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDQwMCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDQwMDpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiA0MDE6XFx0XFx0c2VsZWN0IE1PVE9SQ09NTV9QSFlcXG4gNDAyOlxcdFxcdHNlbGVjdCBTVE1NQUNfTElCUENJXFxuIDQwMzpcXHRcXHRoZWxwXFxuIDQwNDpcXHRcXHQgIFRoaXMgZW5hYmxlcyBnbHVlIGRyaXZlciBmb3IgTW90b3Jjb21tIERXTUFDLWJhc2VkIFBDSSBFdGhlcm5ldFxcbiA0MDU6XFx0XFx0ICBjb250cm9sbGVycy4gQ3VycmVudGx5IG9ubHkgWVQ2ODAxIGlzIHN1cHBvcnRlZC5cXG4gNDA2OlxcdFxcbiA0MDc6XFx0Y29uZmlnIFNUTU1BQ19QQ0lcXG4gNDA4OlxcdFxcdHRyaXN0YXRlIFxcXCJTVE1NQUMgUENJIGJ1cyBzdXBwb3J0XFxcIlxcbiA0MDk6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lcXG4gNDEwOlxcdFxcdGRlcGVuZHMgb24gQ09NTU9OX0NMS1xcbiA0MTE6XFx0XFx0c2VsZWN0IFNUTU1BQ19MSUJQQ0lcXG4gNDEyOlxcdFxcdGhlbHBcXG4gNDEzOlxcdFxcdCAgVGhpcyBzZWxlY3RzIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBidXMgc3VwcG9ydCBmb3IgdGhlIHN0bW1hYyBkcml2ZXIuXFxuIDQxNDpcXHRcXHQgIFRoaXMgZHJpdmVyIHdhcyB0ZXN0ZWQgb24gWExJTlggWEMyVjMwMDAgRkYxMTUyQU1UMDIyMVxcbiA0MTU6XFx0XFx0ICBEMTIxNTk5NEEgVklSVEVYIEZQR0EgYm9hcmQgYW5kIFNOUFMgUW9TIElQSyBQcm90b3R5cGluZyBLaXQuXFxuIDQxNjpcXHRcXG4gNDE3OlxcdFxcdCAgSWYgeW91IGhhdmUgYSBjb250cm9sbGVyIHdpdGggdGhpcyBpbnRlcmZhY2UsIHNheSBZIG9yIE0gaGVyZS5cXG4gNDE4OlxcdFxcbiA0MTk6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBOLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQxODoxNDo0NS4zMTg0MDUzMzNaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTkxMjUwMDk1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFNUTU1BQyBEcml2ZXIncyBGZWF0dXJlIFNldHRpbmcqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBTVE1NQUNfUENJYCBjb25maWd1cmF0aW9uLiBJdCdzIHByZXR0eSBzdHJhaWdodGZvcndhcmQg4oCTIGl0IHJlbGllcyBvbiBgUENJYCBhbmQgYENPTU1PTl9DTEtgLCB3aGljaCBtYWtlcyBzZW5zZS4gSSdsbCBtYWtlIHN1cmUgdG8gZW5hYmxlIGBTVE1NQUNfRVRIYCwgYFNUTU1BQ19QQ0lgLCBgU1RNTUFDX1BMQVRGT1JNYCwgYW5kIGBEV01BQ19HRU5FUklDYCB0byBnZXQgZXZlcnl0aGluZyB3b3JraW5nLlxuXG5Ob3csIGFib3V0IHRoZXNlIEZvY3VzU3ltYm9scy4uLiB0aGUgcGF0Y2ggaXMgdG91Y2hpbmcgYHN0bW1hY19zZXRfZ3NvX3R5cGVzYC4gVGhhdCBmdW5jdGlvbidzIGNhbGxlZCBmcm9tIGBzdG1tYWNfc2V0X2dzb19mZWF0dXJlc2AgYW5kIGBzdG1tYWNfc2V0X2ZlYXR1cmVzYC4gSSB0aGluayBJIGNhbiBmb2N1cyBteSBhbmFseXNpcyBvbiBgc3RtbWFjX3NldF9mZWF0dXJlc2AsIGFuZCBtYXliZSBjb25zaWRlciBgc3RtbWFjX3NldF9nc29fZmVhdHVyZXNgLCBzaW5jZSB0aGF0IGlzIGNhbGxlZCBkdXJpbmcgdGhlIGluaXRpYWwgcHJvYmUsIGFuZCB0aGF0IHdpbGwgb25seSBnZXQgY2FsbGVkIG9uY2UuIGBzdG1tYWNfc2V0X2ZlYXR1cmVzYCBnZXRzIGNhbGxlZCB0aHJvdWdoIGAubmRvX3NldF9mZWF0dXJlc2AsIHdoaWNoIGlzIGludGVyZXN0aW5nLlxuXG5MZXQgbWUganVzdCBxdWlja2x5IGNoZWNrIGlmIGBzdG1tYWNfc2V0X2dzb190eXBlc2AgaXMgc3RhdGljLi4uIHllcCwgaXQgaXM6IGBzdGF0aWMgdm9pZCBzdG1tYWNfc2V0X2dzb190eXBlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIG5ldGRldl9mZWF0dXJlc190IGZlYXR1cmVzKWAuIFNvIGl0J3MgaW50ZXJuYWwgdG8gdGhlIGZpbGUuIFRoYXQgbWVhbnMgSSBuZWVkIHRvIHBheSBjbG9zZXIgYXR0ZW50aW9uIHRvIHRoZSBmdW5jdGlvbnMgaXQgY2FsbHMuIFNpbmNlIHRoYXQgaXMgc3RhdGljLCBJIGNhbiBwcm9iYWJseSBpZ25vcmUgdGhhdC4gU28gSSB3aWxsIGZvY3VzIG9uIGBzdG1tYWNfc2V0X2ZlYXR1cmVzYC4gQW5kIGBzdG1tYWNfc2V0X2dzb19mZWF0dXJlc2AuIFdhaXQsIGFjdHVhbGx5IHRoYXQgaXMgYWxzbyBzdGF0aWMhXG5cbk9rYXksIGxldCdzIHNlZSwgd2hhdCBhYm91dCBgc3RtbWFjX3NldF9mZWF0dXJlc2A/IEknbGwgY2hlY2sgaWYgdGhhdCBpcyBzdGF0aWMsIGFuZCB5ZXMgaXQgaXM6IGBzdGF0aWMgaW50IHN0bW1hY19zZXRfZmVhdHVyZXMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgbmV0ZGV2X2ZlYXR1cmVzX3QgZmVhdHVyZXMpYC4gSG93ZXZlciwgaXQncyBhc3NpZ25lZCB0byBgLm5kb19zZXRfZmVhdHVyZXNgLCBzbyBpdCdzIGEgcGFydCBvZiB0aGUgZHJpdmVyJ3MgZXhwb3NlZCBpbnRlcmZhY2UuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgZHJpdmVyJ3MgZmVhdHVyZXMgYXJlIGNvbmZpZ3VyZWQgdXNpbmcgdGhhdC4gT2theSwgSSB3aWxsIGxvb2sgaW4gYHN0bW1hY19tYWluLmNgIGZvciBgc3RtbWFjX3NldF9mZWF0dXJlc2AuIEkgd2lsbCBsb29rIGZvciBhbnkgbm9uLXN0YXRpYyBmdW5jdGlvbnMgYXMgd2VsbC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjcxMTQsIk91dHB1dFRva2VucyI6NDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNTksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQxODoxNDo1MS4yMzA5MDg4NzVaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI5MTc1OTgwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNfc2V0X2ZlYXR1cmVzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz02MTU4PXN0YXRpYyBuZXRkZXZfZmVhdHVyZXNfdCBzdG1tYWNfZml4X2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTYxNzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo2MTgwOnN0YXRpYyBpbnQgc3RtbWFjX3NldF9mZWF0dXJlcyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjE4MS1cXHRcXHRcXHQgICAgICAgbmV0ZGV2X2ZlYXR1cmVzX3QgZmVhdHVyZXMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTczMDk9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBzdG1tYWNfbmV0ZGV2X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzMxNS1cXHQubmRvX2ZpeF9mZWF0dXJlcyA9IHN0bW1hY19maXhfZmVhdHVyZXMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3MzE2OlxcdC5uZG9fc2V0X2ZlYXR1cmVzID0gc3RtbWFjX3NldF9mZWF0dXJlcyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTczMTctXFx0Lm5kb19zZXRfcnhfbW9kZSA9IHN0bW1hY19zZXRfcnhfbW9kZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMTg6MTQ6NTEuNTIyNjc1MjI1WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY1OTIxMzYzODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBTVE0gTUFDIERyaXZlciBBUEkqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIFNUTSBNQUMgZHJpdmVyIGNvZGUsIHNwZWNpZmljYWxseSBjb25zaWRlcmluZyBiZXN0IHByYWN0aWNlcyBmb3IgQVBJIGRlc2lnbi4gVGhlIGluc3RydWN0aW9ucyBlbXBoYXNpemUgcHJlZmVycmluZyBub24tc3RhdGljLCBub24taW5saW5lZCBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zLiBSaWdodC4gVGhhdCBtYWtlcyBwZXJmZWN0IHNlbnNlIGZvciBtYWludGFpbmFiaWxpdHkgYW5kIGRpc2NvdmVyYWJpbGl0eS4gTm93LCBsZXQncyBzZWUuIGBzdG1tYWNfc2V0X2ZlYXR1cmVzYCBpcyBhIHN0YXRpYyBmdW5jdGlvbiwgYnV0IGl0J3MgYW4gZW50cnlwb2ludCBmb3IgYC5uZG9fc2V0X2ZlYXR1cmVzYC4gU28sIHNpbmNlIHRoZSBlbnRyeXBvaW50IGl0c2VsZiBpcyBzdGF0aWMsIHdlICpjYW4qIGxpc3QgaXQsIGFzIHBlciB0aGUgcnVsZXMuIFRoYXQncyBnb29kIHRvIGtub3cuXG5cbkJ1dCBub3cgSSBuZWVkIHRvIGRldGVybWluZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIG5vbi1zdGF0aWMgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gZmVhdHVyZSBzZXR0aW5nIHRoYXQgd2UgY291bGQgZXhwb3NlLiBMZXQncyBzZWUuLi4gQWgsIGhlcmUncyBvbmUhIGBzdG1tYWNfZHZyX3Byb2JlYCBpcyBub24tc3RhdGljLCBhbmQgaXQgY2FsbHMgYHN0bW1hY19zZXRfZ3NvX2ZlYXR1cmVzYCwgd2hpY2ggaXMsIGluIHR1cm4sIGNhbGxlZCB2aWEgYF9fc3RtbWFjX2R2cl9wcm9iZWAuIEludGVyZXN0aW5nLiBJIHNob3VsZCBwcm9iYWJseSBkaWcgaW50byBgc3RtbWFjX2R2cl9wcm9iZWAgYSBiaXQgZnVydGhlciB0byBzZWUgaG93IGl0J3MgdXNlZCBhbmQgd2hhdCBpdCdzIHJlc3BvbnNpYmxlIGZvci4gVGhpcyBjb3VsZCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIG92ZXJhbGwgZmVhdHVyZSBpbnRlcmFjdGlvbiBpbiB0aGUgZHJpdmVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODM3NCwiT3V0cHV0VG9rZW5zIjo0OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQxODoxNDo1OC4xMTQ4MTQ1MVoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg5NTM5NTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RtbWFjX2R2cl9wcm9iZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9Nzc5Mz1FWFBPUlRfU1lNQk9MX0dQTChzdG1tYWNfcGxhdF9kYXRfYWxsb2MpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzc5NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjc3OTU6c3RhdGljIGludCBfX3N0bW1hY19kdnJfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2aWNlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzc5Ni1cXHRcXHRcXHQgICAgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MDk3LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6ODA5ODogKiBzdG1tYWNfZHZyX3Byb2JlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MDk5LSAqIEBkZXY6IGRldmljZSBwb2ludGVyXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgxMDYtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo4MTA3OmludCBzdG1tYWNfZHZyX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgxMDgtXFx0XFx0ICAgICBzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyAqcmVzKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MTE3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6ODExODpcXHRyZXQgPSBfX3N0bW1hY19kdnJfcHJvYmUoZGV2LCBwbGF0X2RhdCwgcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgxMTktXFx0aWYgKHJldCBcXHUwMDI2XFx1MDAyNiBwbGF0X2RhdC1cXHUwMDNlZXhpdClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODEyMy19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo4MTI0OkVYUE9SVF9TWU1CT0xfR1BMKHN0bW1hY19kdnJfcHJvYmUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODEyNS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMTg6MTQ6NTguMTYzNzc0MzI2WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc1NTA3ODUxMDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgU1RNTUFDIERyaXZlcioqXG5cbk9rYXksIHNvIEkgc2VlIHRoYXQgYHN0bW1hY19kdnJfcHJvYmVgIGlzIGV4cG9ydGVkLCB0aGF0J3MgZ29vZCB0byBrbm93LiBCdXQgdGhlIGNvcmUgY2hhbmdlIGFwcGVhcnMgdG8gYmUgY2VudGVyZWQgYXJvdW5kIGBzdG1tYWNfc2V0X2ZlYXR1cmVzYC4gSSBzaG91bGQgcHJvYmFibHkgbGlzdCBib3RoIGBzdG1tYWNfc2V0X2ZlYXR1cmVzYCBhbmQgYHN0bW1hY19kdnJfcHJvYmVgIGluIG15IHN1bW1hcnkuXG5cbldhaXQsIGxldCBtZSBqdXN0IGRvdWJsZS1jaGVjayBpZiBgc3RtbWFjX3NldF9mZWF0dXJlc2AgaXMgZGVjbGFyZWQgYXMgc3RhdGljLiBBaCB5ZXMsIGl0IGlzLiBCdXQsIGZyb20gdGhlIG5ldCBjb3JlJ3MgcG9pbnQgb2YgdmlldywgaXQncyB1c2VkIGFzIHRoZSBgLm5kb19zZXRfZmVhdHVyZXNgIGNhbGxiYWNrLCBzbyBpdCdzIGEgdmFsaWQgQVBJIGVudHJ5cG9pbnQgZm9yIHJldmlldy4gTGlzdGluZyBpdCBpcyBwZXJmZWN0bHkgYWNjZXB0YWJsZS5cblxuTm93LCBsZXQncyByZXZpZXcgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ20gY2xlYXIgb24gdGhlIGludGVyZGVwZW5kZW5jaWVzLiBJJ20gbG9va2luZyBhdCBgU1RNTUFDX0VUSGAsIGBTVE1NQUNfUENJYCwgYFNUTU1BQ19QTEFURk9STWAsIGFuZCBgRFdNQUNfR0VORVJJQ2AuIEFyZSB0aGVyZSBhbnkgaGlkZGVuIGRlcGVuZGVuY2llcz9cblxuQWxyaWdodCwgYFNUTU1BQ19FVEhgIGRlcGVuZHMgb24gYEhBU19JT01FTWAsIGBIQVNfRE1BYCwgYFBUUF8xNTg4X0NMT0NLX09QVElPTkFMYCwgYW5kIGBFVEhUT09MX05FVExJTktgLiBUaG9zZSBzZWVtIHByZXR0eSBzdGFuZGFyZCBhbmQgYXJlIHVzdWFsbHkgZW5hYmxlZCwgc28gbm8gcmVhbCBzdXJwcmlzZXMgdGhlcmUuIGBTVE1NQUNfUENJYCBkZXBlbmRzIG9uIGBQQ0lgIGFuZCBgQ09NTU9OX0NMS2AuIE5vdGVkLiBgU1RNTUFDX1BMQVRGT1JNYCBoYXMgbm8gZXh0cmEgZGVwZW5kZW5jaWVzIG9uIGl0cyBvd24uIEFuZCwgZmluYWxseSwgYERXTUFDX0dFTkVSSUNgIGRlcGVuZHMgb24gYFNUTU1BQ19QTEFURk9STWAuIEkgdGhpbmsgdGhhdCBjb3ZlcnMgYWxsIHRoZSBiYXNlcy4gVGltZSB0byBkb3VibGUtY2hlY2sgYERXTUFDX0dFTkVSSUNgIGluIGBLY29uZmlnYCBmb3IgYW55IG90aGVyIGNvbnRleHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5NDY4LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjgwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDE4OjE1OjA1LjcxNDU2MTM5M1oiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTk3ODQ0NTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIERXTUFDX0dFTkVSSUNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9NDQ9Y29uZmlnIERXTUFDX0RXQ19RT1NfRVRIXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTUxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NTI6Y29uZmlnIERXTUFDX0dFTkVSSUNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTUzLVxcdHRyaXN0YXRlIFxcXCJHZW5lcmljIGRyaXZlciBmb3IgRFdNQUNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDE4OjE1OjA1Ljc3NDM0Nzk1OVoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTQxMjYwMTA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcyBvbiB0aGUgbWF0dGVyOlxuXG4qKkFuYWx5emluZyBgRFdNQUNfR0VORVJJQ2AgRGVwZW5kZW5jaWVzKipcblxuUmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZXhhbWluZSB0aGUgZGVwZW5kZW5jaWVzIHNwZWNpZmljYWxseSBhc3NvY2lhdGVkIHdpdGggYERXTUFDX0dFTkVSSUNgLiBXZSBuZWVkIHRvIGRpc3NlY3QgaXRzIGJ1aWxkaW5nIGJsb2NrcyBhbmQgdW5kZXJzdGFuZCB3aGF0IG90aGVyIGNvbXBvbmVudHMsIGxpYnJhcmllcywgb3IgY29uZmlndXJhdGlvbnMgYXJlIGVzc2VudGlhbCBmb3IgaXRzIG9wZXJhdGlvbi4gSSdtIGdvaW5nIHRvIGxvb2sgYXQgZXZlcnl0aGluZyB0aGF0IGZlZWRzIGludG8gYERXTUFDX0dFTkVSSUNgLCBzbyBJIGNhbiB1bmRlcnN0YW5kIGl0cyBwbGFjZSBpbiB0aGUgc3lzdGVtLiBUaGlzIHdpbGwsIG9mIGNvdXJzZSwgaW5mb3JtIGRlY2lzaW9ucyBhYm91dCBpdHMgaW1wbGVtZW50YXRpb24sIGRlcGxveW1lbnQsIG9yIG1vZGlmaWNhdGlvbi4gTGV0J3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwMjk4LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMTg6MTU6MDguOTE1NjEwMjY2WiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY3NDQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNTAsXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgNTA6XFx0XFx0ICBTdXBwb3J0IGZvciBjaGlwcyB1c2luZyB0aGUgc25wcyxkd2MtcW9zLWV0aGVybmV0LnR4dCBEVCBiaW5kaW5nLlxcbiAgNTE6XFx0XFxuICA1MjpcXHRjb25maWcgRFdNQUNfR0VORVJJQ1xcbiAgNTM6XFx0XFx0dHJpc3RhdGUgXFxcIkdlbmVyaWMgZHJpdmVyIGZvciBEV01BQ1xcXCJcXG4gIDU0OlxcdFxcdGRlZmF1bHQgU1RNTUFDX1BMQVRGT1JNXFxuICA1NTpcXHRcXHRoZWxwXFxuICA1NjpcXHRcXHQgIEdlbmVyaWMgRFdNQUMgZHJpdmVyIGZvciBwbGF0Zm9ybXMgdGhhdCBkb24ndCByZXF1aXJlIGFueVxcbiAgNTc6XFx0XFx0ICBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlIHRvIGZ1bmN0aW9uIG9yIGlzIHVzaW5nIHBsYXRmb3JtXFxuICA1ODpcXHRcXHQgIGRhdGEgZm9yIHNldHVwLlxcbiAgNTk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDE4OjE1OjA4LjkxNTY3ODc3NloiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NDYyNjkyNzg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBhIGZpcnN0LXBlcnNvbiBleHBlcnQgc3VtbWFyeTpcblxuKipEaWdnaW5nIGludG8gdGhlIERXTUFDIENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCBzbyB0aGUgYERXTUFDX0dFTkVSSUNgIHNldHRpbmcgZGVmYXVsdHMgdG8gYFNUTU1BQ19QTEFURk9STWAuIFRoYXQncyB0aGUgYmFzZWxpbmUsIGFuZCBpdOKAmXMgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucy4gTXkgbmV4dCBzdGVwLCBuYXR1cmFsbHksIGlzIHRvIGRpc3NlY3QgYFNUTU1BQ19QTEFURk9STWAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBkZXBlbmRlbmNpZXMsIHRoZSB1bmRlcmx5aW5nIGFzc3VtcHRpb25zLCBhbmQgaG93IHRoaXMgcGxhdGZvcm0gc2V0dGluZyBpbmZsdWVuY2VzIHRoZSBvdmVyYWxsIE1BQyBjb25maWd1cmF0aW9uLiBUaGlzIGlzbid0IGp1c3QgYWJvdXQga25vd2luZyB3aGF0J3MgZW5hYmxlZCwgYnV0IHVuZGVyc3RhbmRpbmcgKndoeSogaXQncyBlbmFibGVkLiBXaGF0IHNwZWNpZmljIGhhcmR3YXJlIG9yIHNvZnR3YXJlIGVsZW1lbnRzIGlzIHRoaXMgdGllZCB0bz8gV2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBmb3IgcG93ZXIgbWFuYWdlbWVudCwgaW50ZXJydXB0IGhhbmRsaW5nLCBhbmQgb3ZlcmFsbCBzeXN0ZW0gaW50ZWdyYXRpb24/IExldCdzIHNlZSB3aGF0J3MgdW5kZXIgdGhlIGhvb2Qgb2YgYFNUTU1BQ19QTEFURk9STWAuIEkgbmVlZCB0byBiZSBzdXJlIHRoaXMgaXMgY29ycmVjdCBmb3IgbXkgdXNlIGNhc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwNjQ3LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQxODoxNToxNS4zNzgzNzUxNVoiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NzM3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI1LFxuICBcIkxpbmVDb3VudFwiOiAxMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDI1OlxcdFxcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIFNUTU1BQyBTZWxmdGVzdHMgdXNpbmcgZXRodG9vbC4gRW5hYmxlIHRoaXNcXG4gIDI2OlxcdFxcdCAgZmVhdHVyZSBpZiB5b3UgYXJlIGZhY2luZyBwcm9ibGVtcyB3aXRoIHlvdXIgSFcgYW5kIHN1Ym1pdCB0aGUgdGVzdFxcbiAgMjc6XFx0XFx0ICByZXN1bHRzIHRvIHRoZSBuZXRkZXYgTWFpbGluZyBMaXN0LlxcbiAgMjg6XFx0XFxuICAyOTpcXHRjb25maWcgU1RNTUFDX1BMQVRGT1JNXFxuICAzMDpcXHRcXHR0cmlzdGF0ZSBcXFwiU1RNTUFDIFBsYXRmb3JtIGJ1cyBzdXBwb3J0XFxcIlxcbiAgMzE6XFx0XFx0c2VsZWN0IE1GRF9TWVNDT05cXG4gIDMyOlxcdFxcdGRlZmF1bHQgeVxcbiAgMzM6XFx0XFx0aGVscFxcbiAgMzQ6XFx0XFx0ICBUaGlzIHNlbGVjdHMgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGJ1cyBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlci5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMTg6MTU6MTUuMzc4NDQ1MjVaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzYyNDAzOTM2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBTdG1tYWMgRHJpdmVyIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgdGhlIGRlZmF1bHQgYmVoYXZpb3IgaGluZ2VzIG9uIGBTVE1NQUNfRVRIYCAtIGlmIHRoYXQncyBlbmFibGVkLCBpdCBkZWZhdWx0cyB0byAneScuIFNvLCBmb3IgZnV6emluZywgSSdsbCBuZWVkIHRvIG1ha2Ugc3VyZSB0aG9zZSBjb25maWd1cmF0aW9ucyBhcmUgZW5hYmxlZC4gIFRoYXQgbWVhbnMgdGhlIGtleSBjb25maWdzIHRvIGVuYWJsZSB3aWxsIGJlIGBTVE1NQUNfRVRIYCwgYFNUTU1BQ19QQ0lgLCBgU1RNTUFDX1BMQVRGT1JNYCwgYW5kIGBEV01BQ19HRU5FUklDYC5cblxuTm93LCBhIHF1aWNrIGNoZWNrIGhlcmUuIEl0IGxvb2tzIGxpa2UgYFNUTU1BQ19QQ0lgIGFjdHVhbGx5IHB1bGxzIGluIGBNT1RPUkNPTU1fUEhZYCBhbmQgYFNUTU1BQ19MSUJQQ0lgLCB3aGljaCBkZXBlbmRzIG9uIGBQSFlMSUJgLiBJIHdpbGwgbmVlZCB0byBjaGVjayBvbiB0aGUgYXZhaWxhYmlsaXR5IG9mIGBNT1RPUkNPTU1fUEhZYCB1bmRlciB0aG9zZSBjb25maWd1cmF0aW9ucy4gTGV0J3Mga2VlcCBpdCBjbGVhbiBmb3Igbm93IGFuZCBqdXN0IHN0aWNrIHRvIHRoZSBsaXN0ZWQgY29uZmlncywgYW5kIHJldmlzaXQgaXQgbGF0ZXIgaWYgbmVjZXNzYXJ5LlxuXG5OZXh0LCBJIG5lZWQgdG8gY29uZmlybSB0aGUgY3JpdGljYWwgZnVuY3Rpb25zLiAgYHN0bW1hY19zZXRfZmVhdHVyZXNgIHNlZW1zIGxpa2UgdGhlIHJpZ2h0IHBsYWNlIHRvIGZvY3VzLiBZZXAsIGl0J3MgdGhlIGAubmRvX3NldF9mZWF0dXJlc2AgY2FsbGJhY2ssIHRyaWdnZXJlZCBieSBldGh0b29sIGZlYXR1cmUgY2hhbmdlcy4gVGhlIHBhdGNoIHNwZWNpZmljYWxseSBtb2RpZmllcyBgc3RtbWFjX3NldF9nc29fdHlwZXNgLCB3aGljaCBnZXRzIGNhbGxlZCBmcm9tIGBzdG1tYWNfc2V0X2ZlYXR1cmVzYCBhbmQgYHN0bW1hY19zZXRfZ3NvX2ZlYXR1cmVzYC4gR29vZCwgYHN0bW1hY19zZXRfZmVhdHVyZXNgIGFuZCBgc3RtbWFjX2R2cl9wcm9iZWAgaXQgaXMuXG5cbkxldCdzIGRvIGEgcXVpY2sgc2NhbiB0byBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnl0aGluZyBlbHNlIHJlbGV2YW50LiBPa2F5LCBgc3RtbWFjX3NldF9nc29fZmVhdHVyZXNgIGlzIGEgc3RhdGljIGZ1bmN0aW9uLCBidXQgaXQgKmlzKiBjYWxsZWQgZnJvbSBgX19zdG1tYWNfZHZyX3Byb2JlYC4gR290IGl0LiBJJ2xsIGluY2x1ZGUgYm90aCBgc3RtbWFjX3NldF9mZWF0dXJlc2AgYW5kIGBzdG1tYWNfZHZyX3Byb2JlYC5cblxuQWxyaWdodCwgbGV0J3Mgd3JhcCB0aGlzIHVwLiAgKipXb3J0aEZ1enppbmcqKjogQWJzb2x1dGVseS4gVGhpcyBwYXRjaCBpcyBjaGFuZ2luZyB0aGUgbG9naWMgZm9yIHNldHRpbmcgR1NPIHR5cGVzLCBhbmQgdGhlIGxvZ2ljIGlzIGJhc2VkIG9uIG5ldGRldiBmZWF0dXJlcyB3aXRoaW4gdGhlIHN0bW1hYyBkcml2ZXIuIFRoYXQgcmVwcmVzZW50cyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEga2V5IHBhcnQgb2YgYW4gRXRoZXJuZXQgZHJpdmVyIGFuZCBpcyByZWFjaGFibGUgdGhyb3VnaCBlbXVsYXRpb24gKHZpYSBgc25wcyxkd21hY2ApIG9yIGJ5IGluc2VydGluZyBhIFBDSSBkZXZpY2UuICAqKkZvY3VzU3ltYm9scyoqOiBgc3RtbWFjX3NldF9mZWF0dXJlc2AgYW5kIGBzdG1tYWNfZHZyX3Byb2JlYC4gICoqRW5hYmxlQ29uZmlncyoqOiBgU1RNTUFDX0VUSGAsIGBTVE1NQUNfUENJYCwgYFNUTU1BQ19QTEFURk9STWAsIGFuZCBgRFdNQUNfR0VORVJJQ2AuIFRoaXMgaXMgYSBzb2xpZCBzdGFydGluZyBwb2ludCBmb3IgZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzEwNzMsIk91dHB1dFRva2VucyI6MTQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMTg6MTU6MjMuMDAyNDg3MTQ1WiIsIlNlcSI6MzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzYwNTMxNTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNUTU1BQ19FVEhcIixcbiAgICBcIlNUTU1BQ19QQ0lcIixcbiAgICBcIlNUTU1BQ19QTEFURk9STVwiLFxuICAgIFwiRFdNQUNfR0VORVJJQ1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInN0bW1hY19zZXRfZmVhdHVyZXNcIixcbiAgICBcInN0bW1hY19kdnJfcHJvYmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9naWMgZm9yIHNldHRpbmcgR1NPIHR5cGVzIGJhc2VkIG9uIG5ldGRldiBmZWF0dXJlcyBpbiB0aGUgc3RtbWFjIGRyaXZlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgY29yZSBldGhlcm5ldCBkcml2ZXIgdGhhdCBpcyByZWFjaGFibGUgaW4gUUVNVSB2aWEgdGhlIERlc2lnbldhcmUgTUFDIGVtdWxhdGlvbiAoc25wcyxkd21hYykgb3IgYnkgaW5qZWN0aW5nIGEgUENJIGRldmljZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTVE1NQUNfRVRIXCIsXG4gICAgXCJTVE1NQUNfUENJXCIsXG4gICAgXCJTVE1NQUNfUExBVEZPUk1cIixcbiAgICBcIkRXTUFDX0dFTkVSSUNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzdG1tYWNfc2V0X2ZlYXR1cmVzXCIsXG4gICAgXCJzdG1tYWNfZHZyX3Byb2JlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvZ2ljIGZvciBzZXR0aW5nIEdTTyB0eXBlcyBiYXNlZCBvbiBuZXRkZXYgZmVhdHVyZXMgaW4gdGhlIHN0bW1hYyBkcml2ZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIGNvcmUgZXRoZXJuZXQgZHJpdmVyIHRoYXQgaXMgcmVhY2hhYmxlIGluIFFFTVUgdmlhIHRoZSBEZXNpZ25XYXJlIE1BQyBlbXVsYXRpb24gKHNucHMsZHdtYWMpIG9yIGJ5IGluamVjdGluZyBhIFBDSSBkZXZpY2UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDE4OjE1OjIzLjA3ODU0NjFaIiwiU2VxIjozNywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMDkwMTE5Njk3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMTg6MTU6MjMuMDc4OTk0OTZaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTAwODk2NjY3OTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHVwZGF0ZXMgdGhlIGxvZ2ljIGZvciBzZXR0aW5nIEdTTyB0eXBlcyBpbiB0aGUgc3RtbWFjIGRyaXZlciBiYXNlZCBvbiBgbmV0ZGV2X2ZlYXR1cmVzX3RgIGluc3RlYWQgb2YgYSBib29sZWFuIGB0c29gIGZsYWcuIEl0IG1vZGlmaWVzIGBzdG1tYWNfc2V0X2dzb190eXBlc2AgdG8gY2hlY2sgZm9yIGBORVRJRl9GX1RTT2AsIGBORVRJRl9GX1RTTzZgLCBhbmQgYE5FVElGX0ZfR1NPX1VEUF9MNGAgZmVhdHVyZXMgdG8gYWNjdXJhdGVseSBzZXQgdGhlIGBnc29fZW5hYmxlZF90eXBlc2AgYml0bWFzay4gVGhlc2UgY2hhbmdlcyBvbmx5IGFmZmVjdCBjb250cm9sIGZsb3cgYW5kIGJpdG1hc2sgY2FsY3VsYXRpb25zIGZvciBuZXR3b3JrIGRldmljZSBmZWF0dXJlcy4gVGhlcmUgYXJlIG5vIG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIG5vIGRhdGEgc3RydWN0dXJlcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgYW5kIG5vIGNvbXBsZXggc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcyBjb3VsZCBiZSByZWFkLiBUaGVyZWZvcmUsIHRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4uIFN0YW5kYXJkIEtBU0FOIGFuZCBvdGhlciBidWcgZGV0ZWN0b3JzIGFyZSBzdWZmaWNpZW50IHRvIGNhdGNoIGFueSBwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24gb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3MgaXNzdWVzLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDdkMmE3ZGEwMThmZDUxMTBmMjBhOWVmMTY0OWJmNjI1YTg2MTJmMzhcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEF1ZyA4IDE4OjEzOjQ2IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbmluZGV4IGE3MWYwZGYyNjM3ODUuLjNkMzA0MmFmY2RmNDkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG5AQCAtNDM3MSwxNiArNDM3MSwxOCBAQCBzdGF0aWMgdm9pZCBzdG1tYWNfZmx1c2hfdHhfZGVzY3JpcHRvcnMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBpbnQgcXVldWUpXG4gXHRzdG1tYWNfc2V0X3F1ZXVlX3R4X3RhaWxfcHRyKHByaXYsIHR4X3EsIHF1ZXVlLCB0eF9xLVx1MDAzZWN1cl90eCk7XG4gfVxuIFxuLXN0YXRpYyB2b2lkIHN0bW1hY19zZXRfZ3NvX3R5cGVzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgYm9vbCB0c28pXG4rc3RhdGljIHZvaWQgc3RtbWFjX3NldF9nc29fdHlwZXMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuK1x0XHRcdFx0IG5ldGRldl9mZWF0dXJlc190IGZlYXR1cmVzKVxuIHtcbi1cdGlmICghdHNvKSB7XG4tXHRcdHByaXYtXHUwMDNlZ3NvX2VuYWJsZWRfdHlwZXMgPSAwO1xuLVx0fSBlbHNlIHtcbi1cdFx0LyogTWFuYWdlIG92ZXJzaXplZCBUQ1AgZnJhbWVzIGZvciBHTUFDNCBkZXZpY2UgKi9cbi1cdFx0cHJpdi1cdTAwM2Vnc29fZW5hYmxlZF90eXBlcyA9IFNLQl9HU09fVENQVjQgfCBTS0JfR1NPX1RDUFY2O1xuLVx0XHRpZiAocHJpdi1cdTAwM2VwbGF0LVx1MDAzZWNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX0dNQUM0KVxuLVx0XHRcdHByaXYtXHUwMDNlZ3NvX2VuYWJsZWRfdHlwZXMgfD0gU0tCX0dTT19VRFBfTDQ7XG4tXHR9XG4rXHRwcml2LVx1MDAzZWdzb19lbmFibGVkX3R5cGVzID0gMDtcbitcbitcdGlmIChmZWF0dXJlcyBcdTAwMjYgTkVUSUZfRl9UU08pXG4rXHRcdHByaXYtXHUwMDNlZ3NvX2VuYWJsZWRfdHlwZXMgfD0gU0tCX0dTT19UQ1BWNDtcbitcdGlmIChmZWF0dXJlcyBcdTAwMjYgTkVUSUZfRl9UU082KVxuK1x0XHRwcml2LVx1MDAzZWdzb19lbmFibGVkX3R5cGVzIHw9IFNLQl9HU09fVENQVjY7XG4rXHQvKiBNYW5hZ2Ugb3ZlcnNpemVkIFVEUCBmcmFtZXMgZm9yIEdNQUM0IGRldmljZXMgKi9cbitcdGlmIChmZWF0dXJlcyBcdTAwMjYgTkVUSUZfRl9HU09fVURQX0w0KVxuK1x0XHRwcml2LVx1MDAzZWdzb19lbmFibGVkX3R5cGVzIHw9IFNLQl9HU09fVURQX0w0O1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBzdG1tYWNfc2V0X2dzb19mZWF0dXJlcyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbkBAIC00NDE2LDcgKzQ0MTgsNyBAQCBzdGF0aWMgdm9pZCBzdG1tYWNfc2V0X2dzb19mZWF0dXJlcyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbiBcdGlmIChwcml2LVx1MDAzZXBsYXQtXHUwMDNlY29yZV90eXBlID09IERXTUFDX0NPUkVfR01BQzQpXG4gXHRcdG5kZXYtXHUwMDNlaHdfZmVhdHVyZXMgfD0gTkVUSUZfRl9HU09fVURQX0w0O1xuIFxuLVx0c3RtbWFjX3NldF9nc29fdHlwZXMocHJpdiwgdHJ1ZSk7XG4rXHRzdG1tYWNfc2V0X2dzb190eXBlcyhwcml2LCBuZGV2LVx1MDAzZWh3X2ZlYXR1cmVzKTtcbiBcbiBcdGRldl9pbmZvKHByaXYtXHUwMDNlZGV2aWNlLCBcIlRTTyBmZWF0dXJlIGVuYWJsZWRcXG5cIik7XG4gfVxuQEAgLTYxOTgsNyArNjIwMCw3IEBAIHN0YXRpYyBpbnQgc3RtbWFjX3NldF9mZWF0dXJlcyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuIFx0XHRcdHN0bW1hY19lbmFibGVfc3BoKHByaXYsIHByaXYtXHUwMDNlaW9hZGRyLCBzcGhfZW4sIGNoYW4pO1xuIFx0fVxuIFxuLVx0c3RtbWFjX3NldF9nc29fdHlwZXMocHJpdiwgZmVhdHVyZXMgXHUwMDI2IE5FVElGX0ZfVFNPKTtcbitcdHN0bW1hY19zZXRfZ3NvX3R5cGVzKHByaXYsIGZlYXR1cmVzKTtcbiBcbiBcdGlmIChmZWF0dXJlcyBcdTAwMjYgTkVUSUZfRl9IV19WTEFOX0NUQUdfUlgpXG4gXHRcdHByaXYtXHUwMDNlaHctXHUwMDNlaHdfdmxhbl9lbiA9IHRydWU7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQxODoxNToyMy4wNzg5OTU4N1oiLCJTZXEiOjM5LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDA4OTY0NjI4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEdTTyBUeXBlIFVwZGF0ZSBpbiBzdG1tYWMqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGEgc3RyYWlnaHRmb3J3YXJkIG1vZGlmaWNhdGlvbiB0byBgc3RtbWFjX3NldF9nc29fdHlwZXNgIHdpdGhpbiB0aGUgc3RtbWFjIGRyaXZlci4gSXQncyByZWZhY3RvcmluZyB0aGUgZnVuY3Rpb24gc2lnbmF0dXJlLCBtb3ZpbmcgZnJvbSBhIGJvb2xlYW4gVFNPIGZsYWcgdG8gYSBgbmV0ZGV2X2ZlYXR1cmVzX3RgIGFyZ3VtZW50LCB3aGljaCBtYWtlcyBwZXJmZWN0IHNlbnNlIGZvciBmaW5lci1ncmFpbmVkIGNvbnRyb2wuIEl0J3Mgbm93IGNoZWNraW5nIGluZGl2aWR1YWwgZmVhdHVyZXM6IGBORVRJRl9GX1RTT2AsIGBORVRJRl9GX1RTTzZgLCBhbmQgYE5FVElGX0ZfR1NPX1VEUF9MNGAsIHRvIGRldGVybWluZSB3aGljaCBHU08gdHlwZXMgYXJlIGVuYWJsZWQgYnkgY29uZmlndXJpbmcgdGhlIGBwcml2LVx1MDAzZWdzb19lbmFibGVkX3R5cGVzYCBiaXRtYXNrLlxuXG5NeSBpbW1lZGlhdGUgY29uY2VybiBpcyBhbHdheXMgdW5pbml0aWFsaXplZCBtZW1vcnkuIEhvd2V2ZXIsIGFmdGVyIHF1aWNrbHkgdHJhY2luZyB0aGUgZmxvdywgSSBzZWUgdGhhdCB0aGUgYGZlYXR1cmVzYCBhcmd1bWVudCBjb21lcyBmcm9tIGBuZGV2LVx1MDAzZWh3X2ZlYXR1cmVzYCBvciBgZmVhdHVyZXNgIGRpcmVjdGx5LCB3aGljaCBpcyBhIGBuZXRkZXZfZmVhdHVyZXNfdGAuIGBwcml2LVx1MDAzZWdzb19lbmFibGVkX3R5cGVzYCBpcyBtZXJlbHkgYSBiaXRtYXNrIHVzZWQgdG8gZW5hYmxlIG9yIGRpc2FibGUgZGlmZmVyZW50IEdTTyBtb2Rlcy4gTm8gY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgYXJlIGludm9sdmVkLCBubyBhbGxvY2F0aW9ucyBhcmUgbWFkZSwgYW5kIG5vdGhpbmcgaXMgY29waWVkIHRvIHVzZXIgc3BhY2UuIEl0J3MgZXNzZW50aWFsbHkganVzdCBhIGNvbnRyb2wgZmxvdyBjaGFuZ2UgYmFzZWQgb24gZGVmaW5lZCBmbGFncy5cblxuVGhlcmVmb3JlLCB0aGVyZSBpcyBubyBjaGFuY2UgdGhhdCBpdCBjb3VsZCByZXN1bHQgaW4gYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZCBvciBpbmZvLWxlYWsgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOLiBLQVNBTiBhbmQgb3RoZXIgc3RhbmRhcmQgYnVnIGRldGVjdG9ycyBzaG91bGQgZWFzaWx5IGNhdGNoIGFueSBwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24gb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3MuIFRoZSBjaGFuZ2VzIGFyZSBsb2NhbGl6ZWQgdG8gYml0bWFzayBzZXR0aW5nIGJhc2VkIG9uIGFscmVhZHkgY29udHJvbGxlZCBmZWF0dXJlcywgcmVkdWNpbmcgYW55IHJpc2suIFdlIGNhbiBjb25zaWRlciB0aGlzIHBhdGNoIHNhZmUgZnJvbSB0aG9zZSBwZXJzcGVjdGl2ZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2NTMsIk91dHB1dFRva2VucyI6MjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTA1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMTg6MTU6MzMuMTY4NjQ1MDc3WiIsIlNlcSI6NDAsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUzMTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCB1cGRhdGVzIHRoZSBsb2dpYyBmb3Igc2V0dGluZyBHU08gdHlwZXMgaW4gdGhlIHN0bW1hYyBkcml2ZXIgYmFzZWQgb24gYG5ldGRldl9mZWF0dXJlc190YCBpbnN0ZWFkIG9mIGEgYm9vbGVhbiBgdHNvYCBmbGFnLiBJdCBtb2RpZmllcyBgc3RtbWFjX3NldF9nc29fdHlwZXNgIHRvIGNoZWNrIGZvciBgTkVUSUZfRl9UU09gLCBgTkVUSUZfRl9UU082YCwgYW5kIGBORVRJRl9GX0dTT19VRFBfTDRgIGZlYXR1cmVzIHRvIGFjY3VyYXRlbHkgc2V0IHRoZSBgZ3NvX2VuYWJsZWRfdHlwZXNgIGJpdG1hc2suIFRoZXNlIGNoYW5nZXMgb25seSBhZmZlY3QgY29udHJvbCBmbG93IGFuZCBiaXRtYXNrIGNhbGN1bGF0aW9ucyBmb3IgbmV0d29yayBkZXZpY2UgZmVhdHVyZXMuIFRoZXJlIGFyZSBubyBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBubyBkYXRhIHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIGFuZCBubyBjb21wbGV4IHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMgY291bGQgYmUgcmVhZC4gVGhlcmVmb3JlLCB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOLiBTdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgYnVnIGRldGVjdG9ycyBhcmUgc3VmZmljaWVudCB0byBjYXRjaCBhbnkgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzIGlzc3Vlcy5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCB1cGRhdGVzIHRoZSBsb2dpYyBmb3Igc2V0dGluZyBHU08gdHlwZXMgaW4gdGhlIHN0bW1hYyBkcml2ZXIgYmFzZWQgb24gYG5ldGRldl9mZWF0dXJlc190YCBpbnN0ZWFkIG9mIGEgYm9vbGVhbiBgdHNvYCBmbGFnLiBJdCBtb2RpZmllcyBgc3RtbWFjX3NldF9nc29fdHlwZXNgIHRvIGNoZWNrIGZvciBgTkVUSUZfRl9UU09gLCBgTkVUSUZfRl9UU082YCwgYW5kIGBORVRJRl9GX0dTT19VRFBfTDRgIGZlYXR1cmVzIHRvIGFjY3VyYXRlbHkgc2V0IHRoZSBgZ3NvX2VuYWJsZWRfdHlwZXNgIGJpdG1hc2suIFRoZXNlIGNoYW5nZXMgb25seSBhZmZlY3QgY29udHJvbCBmbG93IGFuZCBiaXRtYXNrIGNhbGN1bGF0aW9ucyBmb3IgbmV0d29yayBkZXZpY2UgZmVhdHVyZXMuIFRoZXJlIGFyZSBubyBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBubyBkYXRhIHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIGFuZCBubyBjb21wbGV4IHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMgY291bGQgYmUgcmVhZC4gVGhlcmVmb3JlLCB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOLiBTdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgYnVnIGRldGVjdG9ycyBhcmUgc3VmZmljaWVudCB0byBjYXRjaCBhbnkgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzIGlzc3Vlcy5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowpkt9n[1] Phase: Succeeded StartedAt: 2026-08-08 18:15:44 +0000 UTC FinishedAt: 2026-08-08 18:15:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpkt9n[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-08 18:15:44 +0000 UTC FinishedAt: 2026-08-08 18:15:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpkt9n[2] Phase: Succeeded StartedAt: 2026-08-08 18:15:44 +0000 UTC FinishedAt: 2026-08-08 18:54:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpkt9n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_set_features","stmmac_dvr_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"dc4361ff-258d-486d-9e04-ab2e051d5927","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-08 18:15:44 +0000 UTC FinishedAt: 2026-08-08 18:54:45 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_set_features","stmmac_dvr_probe"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"dc4361ff-258d-486d-9e04-ab2e051d5927","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowpkt9n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_set_features","stmmac_dvr_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"dc4361ff-258d-486d-9e04-ab2e051d5927","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-08 18:15:44 +0000 UTC FinishedAt: 2026-08-08 18:15:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpkt9n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_set_features","stmmac_dvr_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"dc4361ff-258d-486d-9e04-ab2e051d5927","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-08 18:15:44 +0000 UTC FinishedAt: 2026-08-08 18:15:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowpkt9n/series-workflowpkt9n-convert-artifact-1353064457/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpkt9n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_set_features","stmmac_dvr_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"dc4361ff-258d-486d-9e04-ab2e051d5927","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-08 18:15:54 +0000 UTC FinishedAt: 2026-08-08 18:32:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpkt9n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_set_features","stmmac_dvr_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"dc4361ff-258d-486d-9e04-ab2e051d5927","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-08 18:15:54 +0000 UTC FinishedAt: 2026-08-08 18:32:33 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*ff0f532d-276a-4e09-bf00-1c8091570d05,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowpkt9n/series-workflowpkt9n-convert-artifact-1353064457/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "45a3bcc4-f11e-4edd-992a-71aad79a117d", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowpkt9n/series-workflowpkt9n-build-action-1430182119/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpkt9n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_set_features","stmmac_dvr_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"dc4361ff-258d-486d-9e04-ab2e051d5927","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-08 18:15:54 +0000 UTC FinishedAt: 2026-08-08 18:32:23 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*ff0f532d-276a-4e09-bf00-1c8091570d05,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowpkt9n/series-workflowpkt9n-convert-artifact-1353064457/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "45a3bcc4-f11e-4edd-992a-71aad79a117d", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowpkt9n/series-workflowpkt9n-build-action-1430182119/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpkt9n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_set_features","stmmac_dvr_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"dc4361ff-258d-486d-9e04-ab2e051d5927","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-08 18:32:33 +0000 UTC FinishedAt: 2026-08-08 18:32:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpkt9n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_set_features","stmmac_dvr_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"dc4361ff-258d-486d-9e04-ab2e051d5927","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-08 18:32:33 +0000 UTC FinishedAt: 2026-08-08 18:32:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpkt9n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_set_features","stmmac_dvr_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"dc4361ff-258d-486d-9e04-ab2e051d5927","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-08 18:32:33 +0000 UTC FinishedAt: 2026-08-08 18:32:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpkt9n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_set_features","stmmac_dvr_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"dc4361ff-258d-486d-9e04-ab2e051d5927","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-08 18:32:33 +0000 UTC FinishedAt: 2026-08-08 18:32:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"dc4361ff-258d-486d-9e04-ab2e051d5927","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowpkt9n/series-workflowpkt9n-convert-artifact-187998236/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpkt9n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_set_features","stmmac_dvr_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"dc4361ff-258d-486d-9e04-ab2e051d5927","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-08 18:32:43 +0000 UTC FinishedAt: 2026-08-08 18:34:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpkt9n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_set_features","stmmac_dvr_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"dc4361ff-258d-486d-9e04-ab2e051d5927","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-08 18:32:43 +0000 UTC FinishedAt: 2026-08-08 18:34:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*45a3bcc4-f11e-4edd-992a-71aad79a117d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowpkt9n/series-workflowpkt9n-build-action-1430182119/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },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-workflowpkt9n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_set_features","stmmac_dvr_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"dc4361ff-258d-486d-9e04-ab2e051d5927","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-08 18:34:49 +0000 UTC FinishedAt: 2026-08-08 18:34:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpkt9n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_set_features","stmmac_dvr_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"dc4361ff-258d-486d-9e04-ab2e051d5927","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-08 18:34:49 +0000 UTC FinishedAt: 2026-08-08 18:34:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpkt9n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_set_features","stmmac_dvr_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"dc4361ff-258d-486d-9e04-ab2e051d5927","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-08 18:34:49 +0000 UTC FinishedAt: 2026-08-08 18:51:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpkt9n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_set_features","stmmac_dvr_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"dc4361ff-258d-486d-9e04-ab2e051d5927","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-08 18:34:49 +0000 UTC FinishedAt: 2026-08-08 18:51:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*ff0f532d-276a-4e09-bf00-1c8091570d05,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowpkt9n/series-workflowpkt9n-convert-artifact-187998236/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "f12bff27-aa82-4bf1-aeb1-7c13055e5282", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowpkt9n/series-workflowpkt9n-build-action-2066367352/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpkt9n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_set_features","stmmac_dvr_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"dc4361ff-258d-486d-9e04-ab2e051d5927","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-08 18:34:49 +0000 UTC FinishedAt: 2026-08-08 18:51:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*ff0f532d-276a-4e09-bf00-1c8091570d05,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowpkt9n/series-workflowpkt9n-convert-artifact-187998236/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "f12bff27-aa82-4bf1-aeb1-7c13055e5282", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowpkt9n/series-workflowpkt9n-build-action-2066367352/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpkt9n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_set_features","stmmac_dvr_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"dc4361ff-258d-486d-9e04-ab2e051d5927","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-08 18:51:24 +0000 UTC FinishedAt: 2026-08-08 18:51:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpkt9n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_set_features","stmmac_dvr_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"dc4361ff-258d-486d-9e04-ab2e051d5927","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-08 18:51:24 +0000 UTC FinishedAt: 2026-08-08 18:51:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpkt9n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_set_features","stmmac_dvr_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"dc4361ff-258d-486d-9e04-ab2e051d5927","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-08 18:51:24 +0000 UTC FinishedAt: 2026-08-08 18:53:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpkt9n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_set_features","stmmac_dvr_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"dc4361ff-258d-486d-9e04-ab2e051d5927","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-08 18:51:24 +0000 UTC FinishedAt: 2026-08-08 18:53:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*f12bff27-aa82-4bf1-aeb1-7c13055e5282,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowpkt9n/series-workflowpkt9n-build-action-2066367352/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },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-workflowpkt9n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_set_features","stmmac_dvr_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"dc4361ff-258d-486d-9e04-ab2e051d5927","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-08 18:53:27 +0000 UTC FinishedAt: 2026-08-08 18:54:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpkt9n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_set_features","stmmac_dvr_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"dc4361ff-258d-486d-9e04-ab2e051d5927","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-08 18:53:27 +0000 UTC FinishedAt: 2026-08-08 18:54:45 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_set_features","stmmac_dvr_probe"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*45a3bcc4-f11e-4edd-992a-71aad79a117d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*f12bff27-aa82-4bf1-aeb1-7c13055e5282,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowpkt9n/series-workflowpkt9n-build-action-1430182119/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowpkt9n/series-workflowpkt9n-build-action-2066367352/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowpkt9n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_set_features","stmmac_dvr_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"dc4361ff-258d-486d-9e04-ab2e051d5927","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-08 18:53:27 +0000 UTC FinishedAt: 2026-08-08 18:53:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpkt9n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_set_features","stmmac_dvr_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"dc4361ff-258d-486d-9e04-ab2e051d5927","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-08 18:53:27 +0000 UTC FinishedAt: 2026-08-08 18:53:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_set_features","stmmac_dvr_probe"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowpkt9n/series-workflowpkt9n-convert-artifact-2956739301/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpkt9n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_set_features","stmmac_dvr_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"dc4361ff-258d-486d-9e04-ab2e051d5927","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-08 18:53:27 +0000 UTC FinishedAt: 2026-08-08 18:53:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpkt9n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_set_features","stmmac_dvr_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"dc4361ff-258d-486d-9e04-ab2e051d5927","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-08 18:53:27 +0000 UTC FinishedAt: 2026-08-08 18:53:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpkt9n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_set_features","stmmac_dvr_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"dc4361ff-258d-486d-9e04-ab2e051d5927","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-08 18:53:27 +0000 UTC FinishedAt: 2026-08-08 18:53:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpkt9n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_set_features","stmmac_dvr_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"dc4361ff-258d-486d-9e04-ab2e051d5927","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-08 18:53:37 +0000 UTC FinishedAt: 2026-08-08 18:54:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpkt9n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_set_features","stmmac_dvr_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","DWMAC_GENERIC"],"series_id":"dc4361ff-258d-486d-9e04-ab2e051d5927","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-08 18:53:37 +0000 UTC FinishedAt: 2026-08-08 18:54:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*45a3bcc4-f11e-4edd-992a-71aad79a117d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*f12bff27-aa82-4bf1-aeb1-7c13055e5282,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Fuzz,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowpkt9n/series-workflowpkt9n-build-action-1430182119/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:/patched,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowpkt9n/series-workflowpkt9n-build-action-2066367352/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:config,Path:/tmp/config.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowpkt9n/series-workflowpkt9n-convert-artifact-2956739301/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}